@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.0nx0ww8fni_q3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0wkzw~je483f-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.08e28id.o-okb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
@layer theme{:root,:host{--spacing:.25rem;--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.start{inset-inline-start:var(--spacing)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--background:#f7f6f1;--foreground:#151918;--muted:#5f6864;--panel:#fff;--panel-soft:#efeee7;--panel-dark:#101615;--line:#d9d6ca;--green:#17685f;--green-dark:#0f3d38;--blue:#2f5d8d;--copper:#a4513f;--gold:#c8912d;--shadow:0 22px 70px #121c1921}*{box-sizing:border-box}html{background:var(--background);color:var(--foreground);scroll-behavior:smooth}body{min-width:320px;color:var(--foreground);font-family:var(--font-geist-sans), Arial, Helvetica, sans-serif;letter-spacing:0;background:linear-gradient(#f7f6f1f5,#f7f6f1 460px),repeating-linear-gradient(90deg,#15191809 0 1px,#0000 1px 96px);margin:0}a{color:inherit;text-decoration:none}img,iframe{max-width:100%;display:block}.site-shell{width:min(1210px,100% - 40px);margin:0 auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.topbar{z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f6f1e0;border-bottom:1px solid #15191814;justify-content:space-between;align-items:center;gap:24px;min-height:72px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;min-width:0;font-weight:740;display:inline-flex}.brand-mark{background:var(--panel-dark);color:#f8fbf7;width:36px;height:36px;font-family:var(--font-geist-mono), monospace;border-radius:8px;flex:none;place-items:center;font-size:.78rem;display:grid}.nav-links{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.nav-links a{color:#43504c;border-radius:8px;min-height:38px;padding:9px 11px;font-size:.92rem;font-weight:640}.nav-links a:hover,.nav-links a:focus-visible{color:var(--green-dark);background:#17685f17;outline:none}.hero{grid-template-columns:minmax(0,1fr) minmax(340px,440px);align-items:center;gap:48px;min-height:760px;padding:46px 0 66px;display:grid}.hero-copy{max-width:740px}.eyebrow{color:var(--green);font-family:var(--font-geist-mono), monospace;letter-spacing:0;text-transform:uppercase;margin:0 0 14px;font-size:.78rem;font-weight:760}h1,h2,h3,p{margin-top:0}h1{color:#101514;max-width:800px;margin-bottom:20px;font-size:4.4rem;font-weight:780;line-height:1}h2{color:#151918;margin-bottom:16px;font-size:2.55rem;font-weight:760;line-height:1.08}h3{color:#17201d;margin-bottom:12px;font-size:1.16rem;font-weight:720;line-height:1.24}.hero-lede,.section-lede{color:#34413d;font-size:1.28rem;line-height:1.55}.hero-lede{max-width:700px;margin-bottom:24px}.bio-copy{gap:12px;max-width:720px;margin-bottom:22px;display:grid}.bio-copy p,.project-copy p,.contact-section p,.edit-header p,.field-list dd{color:var(--muted);font-size:1.02rem;line-height:1.72}.hero-actions,.link-row{flex-wrap:wrap;gap:12px;display:flex}.profile-highlights{flex-wrap:wrap;gap:9px;margin:0 0 30px;padding:0;list-style:none;display:flex}.profile-highlights li{color:#244943;background:#ffffffb8;border:1px solid #17685f2e;border-radius:8px;align-items:center;min-height:34px;padding:8px 10px;font-size:.84rem;font-weight:720;display:inline-flex}.button{border-radius:8px;justify-content:center;align-items:center;min-height:46px;padding:12px 17px;font-weight:700;line-height:1;transition:transform .16s,background-color .16s,border-color .16s;display:inline-flex}.button:hover,.button:focus-visible{outline:none;transform:translateY(-1px)}.button.primary{background:var(--green-dark);color:#fff}.button.secondary{border:1px solid var(--line);color:#21312d;background:#ffffffd6}.button.secondary:hover,.button.secondary:focus-visible{background:#fff;border-color:#17685f6b}.portrait-panel{background:var(--panel);box-shadow:var(--shadow);border:1px solid #1519181f;border-radius:8px;overflow:hidden}.portrait-image-wrap{aspect-ratio:4/3;background:#dfe2dc;overflow:hidden}.portrait-image{object-fit:cover;object-position:34% center;width:100%;height:100%}.portrait-meta{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:18px;display:flex}.portrait-meta span,.repo-note,figcaption,.field-list dt{color:#68716d;font-family:var(--font-geist-mono), monospace;letter-spacing:0;text-transform:uppercase;font-size:.78rem;font-weight:720}.portrait-meta strong{color:#1b2522;font-size:.95rem}.project-section,.archive-section,.contact-section,.edit-section{border-top:1px solid #1519181f;padding:96px 0}.hero-copy,.project-section,.archive-section,.contact-section{scroll-margin-top:88px}.project-section{grid-template-columns:minmax(300px,.78fr) minmax(0,1.22fr);align-items:center;gap:42px;display:grid}.project-copy{max-width:500px}.section-lede{margin-bottom:18px}.highlight-list{gap:9px;margin:24px 0 28px;padding:0;list-style:none;display:grid}.highlight-list li{color:#293632;padding-left:22px;font-weight:650;line-height:1.45;position:relative}.highlight-list li:before{background:var(--gold);content:"";border-radius:99px;width:8px;height:8px;position:absolute;top:.67em;left:0;transform:translateY(-50%)}.repo-note{color:#294c72;text-transform:none;background:#2f5d8d14;border:1px solid #2f5d8d3d;border-radius:8px;align-items:center;min-height:46px;padding:11px 13px;display:inline-flex}.browser-frame{min-height:680px;box-shadow:var(--shadow);background:#fff;border:1px solid #15191824;border-radius:8px;overflow:hidden}.browser-bar{background:#f4f3ee;border-bottom:1px solid #e4e2d9;align-items:center;gap:8px;height:44px;padding:0 14px;display:flex}.browser-bar span{background:#d56a5a;border-radius:99px;width:10px;height:10px}.browser-bar span:nth-child(2){background:#d7a640}.browser-bar span:nth-child(3){background:#48a36e}.browser-bar strong{color:#46524f;margin-left:8px;font-size:.86rem;font-weight:690}.browser-frame iframe{background:#fff;border:0;width:100%;height:636px}.media-section{align-items:start}.screenshot-gallery{gap:14px;display:grid}.screenshot-feature,.screenshot-pair figure{background:#111414;border:1px solid #15191824;border-radius:8px;margin:0;overflow:hidden;box-shadow:0 18px 50px #10161529}.screenshot-feature img,.screenshot-pair img{width:100%;height:auto}.screenshot-feature figcaption,.screenshot-pair figcaption{color:#e7e9e5;border-top:1px solid #ffffff1a;padding:12px 14px}.screenshot-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.pallie-section{grid-template-columns:minmax(0,.92fr) minmax(320px,.78fr)}.agent-panel{gap:12px;display:grid}.agent-step{border:1px solid var(--line);background:#ffffffd1;border-radius:8px;grid-template-columns:56px minmax(0,1fr);align-items:center;gap:16px;min-height:92px;padding:18px;display:grid}.agent-step span{width:44px;height:44px;color:var(--copper);font-family:var(--font-geist-mono), monospace;background:#a4513f1f;border-radius:8px;place-items:center;font-weight:780;display:grid}.agent-step strong{color:#1f2b28;font-size:1.05rem}.archive-header{max-width:720px;margin-bottom:32px}.archive-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.archive-card{background:#ffffffc7;border:1px solid #1519181f;border-radius:8px;flex-direction:column;min-height:100%;display:flex;overflow:hidden}.archive-card.featured{background:#fff;grid-column:1/-1;grid-template-columns:minmax(0,1.16fr) minmax(300px,.84fr);display:grid;box-shadow:0 18px 54px #1016151f}.archive-media{background:#e8eef3;border-right:1px solid #1519181f;min-height:100%}.archive-media img{object-fit:cover;object-position:left top;width:100%;height:100%;min-height:340px}.archive-card:not(.featured) .archive-media{border-bottom:1px solid #1519181f;border-right:0;min-height:0}.archive-card:not(.featured) .archive-media img{aspect-ratio:16/10;min-height:0}.archive-card-body{flex-direction:column;flex:1;align-items:flex-start;padding:22px;display:flex}.archive-card-body p:not(.eyebrow){color:var(--muted);font-size:.96rem;line-height:1.66}.archive-card-body .button{margin-top:auto}.archive-tags{flex-wrap:wrap;gap:8px;margin:18px 0 22px;padding:0;list-style:none;display:flex}.archive-tags li{color:#294c72;min-height:30px;font-family:var(--font-geist-mono), monospace;background:#2f5d8d12;border:1px solid #2f5d8d29;border-radius:8px;align-items:center;padding:6px 9px;font-size:.74rem;font-weight:720;display:inline-flex}.contact-section{padding-bottom:72px}.contact-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.contact-action{color:#fff;border:1px solid #1519181f;border-radius:8px;justify-content:space-between;align-items:center;gap:18px;min-height:122px;padding:22px;font-size:1.14rem;font-weight:760;transition:transform .16s,box-shadow .16s;display:flex;overflow:hidden;box-shadow:0 18px 50px #1016151f}.contact-action:hover,.contact-action:focus-visible{outline:none;transform:translateY(-2px);box-shadow:0 24px 60px #1016152e}.contact-action.github{background:#171515}.contact-action.linkedin{background:#0a66c2}.contact-action.email{background:#17685f}.contact-action.resume{background:#a4513f}.contact-icon{background:#ffffff29;border-radius:8px;flex:none;place-items:center;width:48px;height:48px;display:grid}.edit-shell{padding-bottom:80px}.edit-header{border-bottom:1px solid #1519181f;justify-content:space-between;align-items:center;gap:20px;min-height:84px;display:flex}.edit-header p{text-align:right;margin:0}.edit-section{padding:54px 0}.field-list{gap:12px;margin:24px 0 0;display:grid}.field-list div{border-top:1px solid #1519181a;grid-template-columns:220px minmax(0,1fr);gap:20px;padding:16px 0;display:grid}.field-list dd,.field-list dt{margin:0}.edit-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.edit-card{border:1px solid var(--line);background:#ffffffd1;border-radius:8px;padding:22px}.field-list.compact div{grid-template-columns:1fr;gap:6px}@media (max-width:1030px){.hero,.project-section,.pallie-section,.contact-section{grid-template-columns:1fr}.hero{min-height:auto;padding-top:40px}.portrait-panel,.project-copy,.contact-section p{max-width:720px}.browser-frame{min-height:640px}.browser-frame iframe{height:596px}.contact-actions,.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.archive-card.featured{grid-template-columns:1fr}.archive-media{border-bottom:1px solid #1519181f;border-right:0}.edit-grid{grid-template-columns:1fr}}@media (max-width:720px){.site-shell{width:min(100% - 24px,1210px)}.topbar{flex-direction:column;align-items:flex-start;gap:12px;padding:14px 0}.nav-links{justify-content:flex-start}.hero{gap:30px;padding-bottom:62px}h1{font-size:2.72rem;line-height:1.04}h2{font-size:2rem}.hero-lede,.section-lede{font-size:1.08rem}.bio-copy p,.project-copy p,.contact-section p,.field-list dd{font-size:.98rem}.hero-actions,.link-row,.profile-highlights{flex-direction:column}.button,.repo-note{width:100%}.contact-actions{grid-template-columns:1fr}.contact-action{min-height:92px}.project-section,.archive-section,.contact-section{padding:68px 0}.hero-copy,.project-section,.archive-section,.contact-section{scroll-margin-top:176px}.browser-frame{min-height:590px}.browser-frame iframe{height:546px}.screenshot-pair,.archive-grid{grid-template-columns:1fr}.archive-media img{min-height:220px}.portrait-meta,.edit-header,.field-list div{grid-template-columns:1fr;align-items:start}.portrait-meta,.edit-header{flex-direction:column}.edit-header p{text-align:left}}
