:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--clr-bg:#fef5ec;--clr-surface:#fff;--clr-text-1:#1a0e06;--clr-text-2:#7a5a3a;--clr-text-3:#b89a70;--clr-border:#ecdfc8;--clr-border-2:#d8c4a0;--clr-accent:#0d7a70;--clr-accent-bg:#0d7a7014;--clr-accent-ink:color-mix(in srgb, var(--clr-accent) 62%, var(--clr-text-1));--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-display:"Space Grotesk", "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Source Code Pro", monospace;--max-w:1100px;--pad-x:clamp(20px, 5vw, 48px);--section-py:clamp(80px, 10vw, 140px);--ease-out:cubic-bezier(.16, 1, .3, 1);--r-sm:6px;--r-md:12px;--r-lg:20px;--r-full:100px;font-family:var(--font-sans);color:var(--clr-text-1);background:var(--clr-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:16px;line-height:1.65}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--clr-bg:#0c0814;--clr-surface:#140f20;--clr-text-1:#e8e0f8;--clr-text-2:#9080c0;--clr-text-3:#584880;--clr-border:#1a1228;--clr-border-2:#241a38;--clr-accent:#f43f5e;--clr-accent-bg:#f43f5e1f}}.theme-transitioning *{transition:background-color .35s,color .35s,border-color .35s,box-shadow .35s!important}[data-theme=sifnos]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--clr-bg:#fef5ec;--clr-surface:#fff;--clr-text-1:#1a0e06;--clr-text-2:#7a5a3a;--clr-text-3:#b89a70;--clr-border:#ecdfc8;--clr-border-2:#d8c4a0;--clr-accent:#0d7a70;--clr-accent-bg:#0d7a7014}[data-theme=ursula]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--clr-bg:#0c0814;--clr-surface:#140f20;--clr-text-1:#e8e0f8;--clr-text-2:#9080c0;--clr-text-3:#584880;--clr-border:#1a1228;--clr-border-2:#241a38;--clr-accent:#f43f5e;--clr-accent-bg:#f43f5e1f}[data-theme=wahoowa]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--clr-bg:#071520;--clr-surface:#0c2030;--clr-text-1:#c8e8ee;--clr-text-2:#5098a8;--clr-text-3:#306878;--clr-border:#102840;--clr-border-2:#183850;--clr-accent:#ff7050;--clr-accent-bg:#ff70501f}[data-theme=snowspeeder]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--clr-bg:#e6eff9;--clr-surface:#f4f8fe;--clr-text-1:#091828;--clr-text-2:#385878;--clr-text-3:#7090b0;--clr-border:#c4d4e8;--clr-border-2:#a8bcd8;--clr-accent:#d47010;--clr-accent-bg:#d4701014}[data-theme=curacao]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--clr-bg:#f3eecc;--clr-surface:#fdfdf5;--clr-text-1:#0a1e3c;--clr-text-2:#1a5498;--clr-text-3:#3868a8;--clr-border:#e4d070;--clr-border-2:#ccb840;--clr-accent:#cc1468;--clr-accent-bg:#cc14681a}[data-theme=ewok]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--clr-bg:#0e0a06;--clr-surface:#181208;--clr-text-1:#f5ede0;--clr-text-2:#a08060;--clr-text-3:#706040;--clr-border:#241a0e;--clr-border-2:#302010;--clr-accent:#e8780a;--clr-accent-bg:#e8780a1f}*,:before,:after{box-sizing:border-box}body{margin:0}::selection{background:color-mix(in srgb, var(--clr-accent) 30%, var(--clr-bg));color:var(--clr-text-1)}.page-bg{background:var(--clr-bg);z-index:-1;pointer-events:none;position:fixed;inset:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.03em;color:var(--clr-text-1);margin:0;font-weight:500;line-height:1.1}p{margin:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}section[id]{scroll-margin-top:80px}.container{width:100%;max-width:var(--max-w);padding-inline:var(--pad-x);margin:0 auto}.fade-up{opacity:0;transition:opacity .65s var(--ease-out), transform .65s var(--ease-out);transform:translateY(22px)}.fade-up.visible{opacity:1;transform:none}.section-label{letter-spacing:.18em;text-transform:uppercase;color:var(--clr-accent);margin-bottom:12px;font-size:11px;font-weight:600;display:inline-block}.section-title{letter-spacing:-.04em;color:var(--clr-text-1);font-size:clamp(32px,5vw,52px)}.section-header{margin-bottom:52px}.btn{border-radius:var(--r-sm);font-size:14px;font-weight:500;font-family:var(--font-sans);letter-spacing:-.01em;cursor:pointer;transition:opacity .18s, transform .18s var(--ease-out), background .18s, border-color .18s;white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;align-items:center;gap:6px;padding:12px 22px;text-decoration:none;display:inline-flex}.btn-primary{background:var(--clr-text-1);color:var(--clr-bg)}.btn-primary:hover{opacity:.8;transform:translateY(-1px)}.btn-secondary{color:var(--clr-text-1);border:1px solid var(--clr-border-2);background:0 0}.btn-secondary:hover{background:var(--clr-surface);border-color:var(--clr-text-3);transform:translateY(-1px)}.btn--sm{padding:8px 16px;font-size:13px}.social-links{align-items:center;gap:10px;display:flex}.social-link{border-radius:var(--r-sm);border:1px solid var(--clr-border-2);width:42px;height:42px;color:var(--clr-text-2);transition:border-color .15s, color .15s, transform .2s var(--ease-out);justify-content:center;align-items:center;display:flex}.social-link:hover{border-color:var(--clr-accent);color:var(--clr-accent);transform:translateY(-1px)}.hero-skills{flex-wrap:wrap;gap:8px;max-width:560px;margin-top:28px;display:flex}.hero-social{margin-top:20px}.about-photo-col .social-links{margin-top:16px}.nav{z-index:100;background:color-mix(in srgb, var(--clr-bg) 16%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #0000;border-bottom-color:color-mix(in srgb, var(--clr-border) 70%, transparent);width:100%;transition:width .5s var(--ease-out), top .5s var(--ease-out), border-radius .5s var(--ease-out), box-shadow .4s var(--ease-out), border-color .4s var(--ease-out);border-radius:0;position:fixed;top:0;left:50%;transform:translate(-50%);box-shadow:0 4px 24px #0000000d}.nav--scrolled{border-color:var(--clr-border);background:color-mix(in srgb, var(--clr-bg) 52%, transparent);border-radius:100px;width:min(100% - 48px,960px);top:12px;box-shadow:0 12px 48px #00000029,0 2px 8px #0000000f}.nav-inner{max-width:var(--max-w);padding-inline:var(--pad-x);align-items:center;height:60px;margin:0 auto;display:flex}.nav-logo{color:var(--clr-accent);align-items:center;margin-right:auto;transition:opacity .15s;display:flex}.nav-logo:hover{opacity:.7}.nav-logo-svg{flex-shrink:0;width:36px;height:36px}.nav-links{align-items:center;gap:28px;display:flex}.nav-links-mobile{display:none}.nav-links a{color:var(--clr-text-2);font-size:13.5px;font-weight:450;transition:color .15s}.nav-links a:hover{color:var(--clr-text-1)}.nav-links a.active{color:var(--clr-accent)}.nav-theme-btn{border-radius:var(--r-sm);border:1px solid var(--clr-border-2);height:32px;color:var(--clr-text-2);cursor:pointer;transition:border-color .15s, color .15s, transform .2s var(--ease-out);background:0 0;flex-shrink:0;align-items:center;gap:7px;margin-left:20px;padding:0 10px;display:flex}.nav-theme-btn:hover{border-color:var(--clr-accent);color:var(--clr-accent);transform:translateY(-1px)}.nav-theme-swatches{align-items:center;gap:3px;display:flex}.nav-theme-swatch{border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:inset 0 0 0 1px #00000026}.nav-resume{border:1px solid var(--clr-border-2);border-radius:var(--r-sm);color:var(--clr-text-2);white-space:nowrap;margin-left:8px;padding:7px 14px;font-size:13px;font-weight:500;transition:border-color .15s,color .15s,transform .15s}.nav-resume:hover{border-color:var(--clr-accent);color:var(--clr-accent);transform:translateY(-1px)}.hero{align-items:center;min-height:100svh;display:flex;position:relative;overflow:hidden}.hero-inner{z-index:1;grid-template-columns:minmax(0,420px) minmax(0,1fr);align-items:center;gap:clamp(40px,5vw,72px);padding-block:clamp(90px,12vw,140px);display:grid;position:relative}@media (width<=900px){.hero-inner{grid-template-columns:1fr}}.hero-copy{min-width:0}.hero-eyebrow,.hero-name,.hero-tagline{opacity:0;will-change:opacity, transform;transition:opacity .75s var(--ease-out), transform .75s var(--ease-out);transform:translateY(18px)}.hero-loaded .hero-eyebrow{opacity:1;transition-delay:0s;transform:none}.hero-loaded .hero-name{opacity:1;transition-delay:90ms;transform:none}.hero-loaded .hero-tagline{opacity:1;transition-delay:.18s;transform:none}.hero-eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--clr-accent);margin-bottom:18px;font-size:11px;font-weight:600;display:inline-block}.hero-name{letter-spacing:-.03em;color:var(--clr-text-1);margin-bottom:20px;font-size:clamp(40px,5.2vw,58px);font-weight:500;line-height:1.04}.hero-tagline{max-width:460px;color:var(--clr-text-2);margin-bottom:36px;font-size:clamp(15.5px,1.6vw,17.5px);line-height:1.6}.hero-stage-wrap{opacity:0;will-change:opacity, transform;transition:opacity .8s var(--ease-out), transform .8s var(--ease-out);transform:translateY(18px)scale(.99)}.hero-loaded .hero-stage-wrap{opacity:1;transition-delay:.16s;transform:none}.hero-stage{border:1px solid var(--clr-border);border-radius:var(--r-lg);background:var(--clr-surface);overflow:hidden;box-shadow:0 24px 64px #0000001f,0 2px 8px #0000000d;container-type:inline-size}.hero-stage-header{border-bottom:1px solid var(--clr-border);justify-content:space-between;align-items:baseline;gap:12px;padding:14px 20px;display:flex;position:relative}.hero-stage-replay{border-radius:var(--r-sm);width:24px;height:24px;color:var(--clr-text-3);cursor:pointer;transition:color .18s var(--hero-ease-press), background-color .18s var(--hero-ease-press), transform .18s var(--hero-ease-press);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:20px;transform:translateY(-50%)}.hero-stage-replay:before{content:"";position:absolute;inset:-10px}@media (hover:hover) and (pointer:fine){.hero-stage-replay:hover{color:var(--clr-accent);background:var(--clr-accent-bg)}}.hero-stage-replay:active{transform:translateY(-50%)scale(.92)}.hero-stage-replay:focus-visible{outline:2px solid var(--clr-accent);outline-offset:2px}.hero-stage-replay-icon{display:flex}.hero-stage-replay-icon.spin{animation:hero-replay-spin .52s var(--hero-ease-out)}@keyframes hero-replay-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.hero-stage-filename{font-family:var(--font-mono);color:var(--clr-text-3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.hero-stage-role{letter-spacing:.14em;text-transform:uppercase;color:var(--clr-accent);white-space:nowrap;flex-shrink:0;font-size:10.5px;font-weight:600}.hero-stage-body{grid-template-columns:minmax(212px,1.35fr) minmax(190px,1fr);gap:16px;padding:56px 20px 46px;display:grid}@container (width<=500px){.hero-stage-body{grid-template-columns:1fr;padding:34px 20px 30px}}@media (width<=900px){.hero-stage-body{padding:34px 20px 30px}}.hero-code-pane{font-family:var(--font-mono);color:var(--clr-text-2);white-space:pre-wrap;overflow-wrap:break-word;margin:0;font-size:11.5px;line-height:1.95}.hero-code-line{display:block}.hero-code-token{min-height:1.95em}.hero-code-token.done{animation:hero-code-land var(--hero-land-ms) var(--hero-ease-out)}.hero-code-caret{vertical-align:text-bottom;background:var(--clr-accent);width:1px;height:1.05em;margin-left:1px;display:inline-block}@keyframes hero-code-land{0%{color:var(--clr-accent)}55%{color:var(--clr-accent)}to{color:var(--clr-text-2)}}.hero-code-sel{color:var(--clr-text-1);font-weight:600}.hero-code-key{color:var(--clr-text-1);font-weight:500}.hero-code-val{color:var(--clr-accent)}.hero-stage-visual{flex-direction:column;justify-content:flex-start;align-items:center;gap:48px;min-height:160px;display:flex}.hero-token-tray{align-items:flex-start;gap:clamp(14px,4%,26px);display:flex}.hero-token{opacity:0;will-change:opacity, transform;transition:opacity var(--hero-token-ms) var(--hero-ease-out), transform var(--hero-token-ms) var(--hero-ease-out);flex-direction:column;align-items:center;gap:6px;display:flex;transform:translateY(-6px)scale(.96)}.hero-token.visible{opacity:1;transform:none}.hero-token.active .hero-token-icon{animation:hero-token-pulse var(--hero-pulse-ms) var(--hero-ease-out);border-color:var(--clr-accent)}.hero-token.active .hero-token-label{color:var(--clr-accent)}@keyframes hero-token-pulse{0%{transform:scale(1)}38%{transform:scale(1.16)}to{transform:scale(1)}}.hero-token-icon{border-radius:var(--r-sm);border:2px solid var(--clr-border-2);background:var(--clr-bg);width:22px;height:22px;transition:background-color .6s,border-color .6s}.hero-token-icon--color{background:0 0;justify-content:center;align-items:center;display:flex}.hero-token-icon--color:before{content:"A";font-family:var(--font-sans);color:var(--clr-text-3);transition:color var(--hero-apply-ms) var(--hero-ease-apply);font-size:13px;font-weight:700;line-height:1}.hero-token.active .hero-token-icon--color:before{color:var(--clr-text-1)}.hero-token-icon--accent{background:var(--clr-bg);position:relative;overflow:hidden}.hero-token-icon--accent:after{content:"";background:var(--clr-accent);transform-origin:bottom;transition:transform var(--hero-apply-ms) var(--hero-ease-apply), background-color .6s ease;position:absolute;inset:0;transform:scaleY(0)}.hero-token.active .hero-token-icon--accent:after{transform:scaleY(1)}.hero-token-icon--radius{border-color:var(--clr-text-3);transition:border-radius var(--hero-apply-ms) var(--hero-ease-apply), background-color .6s ease, border-color .6s ease;background:0 0;border-radius:3px}.hero-token.active .hero-token-icon--radius{border-radius:var(--r-md) 3px 3px 3px}.hero-token-icon--space{background:0 0;border:none;position:relative}.hero-token-icon--space:before,.hero-token-icon--space:after{content:"";background:var(--clr-text-3);height:2px;transition:transform var(--hero-apply-ms) var(--hero-ease-apply), background-color .6s ease;position:absolute;left:2px;right:2px}.hero-token-icon--space:before{top:2px;transform:translateY(5px)}.hero-token-icon--space:after{bottom:2px;transform:translateY(-5px)}.hero-token.active .hero-token-icon--space:before,.hero-token.active .hero-token-icon--space:after{background:var(--clr-accent);transform:translateY(0)}.hero-token-label{font-family:var(--font-mono);color:var(--clr-text-3);letter-spacing:.02em;font-size:9.5px;transition:color .6s}.hero-btn-slot{opacity:0;transition:opacity var(--hero-token-ms) var(--hero-ease-out), transform var(--hero-token-ms) var(--hero-ease-out);transform:translateY(6px)}.hero-btn-slot.visible{opacity:1;transform:none}.hero-btn{--btn-text:var(--clr-text-1);--btn-radius:var(--r-md);--btn-space:11px 18px;--btn-accent:var(--clr-accent-bg);--btn-accent-line:var(--clr-accent);font-family:var(--font-sans);letter-spacing:-.01em;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:color-mix(in srgb, var(--clr-text-1) 11%, var(--clr-bg));border:1px solid color-mix(in srgb, var(--clr-text-1) 30%, var(--clr-bg));color:var(--clr-text-2);box-shadow:none;transition:background-color var(--hero-apply-ms) var(--hero-ease-apply), border-color var(--hero-apply-ms) var(--hero-ease-apply), color var(--hero-apply-ms) var(--hero-ease-apply), border-radius var(--hero-apply-ms) var(--hero-ease-apply), padding var(--hero-apply-ms) var(--hero-ease-apply), gap var(--hero-apply-ms) var(--hero-ease-apply), box-shadow var(--hero-settle-ms) var(--hero-ease-out), transform .18s var(--hero-ease-press);border-radius:0;align-items:center;gap:4px;padding:3px 7px;font-size:13px;font-weight:500;display:inline-flex}.hero-btn>svg{transition:color var(--hero-apply-ms) var(--hero-ease-apply);flex-shrink:0}.hero-btn.is-color{color:var(--btn-text)}.hero-btn.is-radius{border-radius:var(--btn-radius)}.hero-btn.is-space{padding:var(--btn-space);gap:7px}.hero-btn.is-accent{background:var(--btn-accent);border-color:var(--btn-accent-line)}.hero-btn.is-accent>svg{color:var(--btn-accent-line)}.hero-btn.is-settled{box-shadow:0 6px 20px color-mix(in srgb, var(--clr-accent) 16%, transparent), 0 1px 3px #0000000f;animation:hero-btn-land var(--hero-btn-land-ms)}@keyframes hero-btn-land{0%{animation-timing-function:cubic-bezier(.19,1,.22,1);transform:scale(1)}50%{animation-timing-function:cubic-bezier(.33,0,.25,1);transform:scale(1.03)}to{transform:scale(1)}}@media (hover:hover) and (pointer:fine){.hero-btn.is-settled:hover{background:color-mix(in srgb, var(--clr-accent) 15%, var(--clr-surface));box-shadow:0 10px 28px color-mix(in srgb, var(--clr-accent) 22%, transparent), 0 1px 3px #00000014;transform:translateY(-1px)}}.hero-btn.is-settled:active{transform:translateY(0)scale(.97)}.hero-btn:focus-visible{outline:2px solid var(--clr-accent);outline-offset:2px}.projects{padding-block:var(--section-py);border-top:1px solid var(--clr-border)}.projects-list{flex-direction:column;display:flex}.project-card{border-top:1px solid var(--clr-border);grid-template-rows:auto auto auto;grid-template-columns:1fr 40px;gap:16px 32px;padding-block:40px;display:grid}.project-card:first-child{border-top:none}.project-header{grid-area:1/1}.project-link-btn{grid-area:1/2;align-self:start}.project-description{grid-area:2/1}.project-footer{grid-area:3/1/auto/-1}.project-company{letter-spacing:.14em;text-transform:uppercase;color:var(--clr-text-3);margin-bottom:8px;font-size:11px;font-weight:600;display:block}.project-title{letter-spacing:-.03em;color:var(--clr-text-1);margin-bottom:6px;font-size:clamp(20px,2.5vw,26px);font-weight:500}.project-role{color:var(--clr-text-3);font-size:13px}.project-description{color:var(--clr-text-2);max-width:680px;font-size:15px;line-height:1.75}.project-footer{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.metric-tag{border-radius:var(--r-full);background:var(--clr-accent-bg);color:var(--clr-accent-ink);white-space:nowrap;padding:4px 11px;font-size:12px;font-weight:500}.tech-tag{border-radius:var(--r-full);background:var(--clr-surface);color:var(--clr-text-2);border:1px solid var(--clr-border);white-space:nowrap;padding:4px 11px;font-size:12px;font-weight:450}.project-divider{background:var(--clr-border);flex-shrink:0;width:1px;height:14px}.project-link-btn{border-radius:var(--r-sm);border:1px solid var(--clr-border);width:36px;height:36px;color:var(--clr-text-2);transition:border-color .15s, color .15s, transform .2s var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;font-size:17px;display:flex}.project-link-btn:hover{border-color:var(--clr-accent);color:var(--clr-accent);transform:translate(2px,-2px)}.writing{padding-block:var(--section-py);border-top:1px solid var(--clr-border)}.writing-list{flex-direction:column;display:flex}.writing-card{border-top:1px solid var(--clr-border);color:var(--clr-text-1);justify-content:space-between;align-items:center;gap:24px;padding-block:32px;text-decoration:none;transition:opacity .2s;display:flex}.writing-card:first-child{border-top:none}.writing-card:hover{opacity:.72}.writing-card:hover .writing-arrow{transform:translate(3px,-3px)}.writing-content{flex:1;min-width:0}.writing-badge{letter-spacing:.14em;text-transform:uppercase;border-radius:var(--r-full);background:var(--clr-accent-bg);color:var(--clr-accent-ink);margin-bottom:10px;padding:3px 9px;font-size:10px;font-weight:600;display:inline-block}.writing-title{letter-spacing:-.03em;color:var(--clr-text-1);margin-bottom:6px;font-size:clamp(16px,2vw,21px);font-weight:500}.writing-description{color:var(--clr-text-2);font-size:14px;line-height:1.65}.writing-arrow{color:var(--clr-text-3);transition:transform .25s var(--ease-out), color .2s;flex-shrink:0;font-size:20px}.about{padding-block:var(--section-py);border-top:1px solid var(--clr-border)}.about-page .about{border-top:none;padding-block-start:100px}.project-page-inner{max-width:760px;padding-block:120px 80px}.project-page-inner--hero{max-width:980px;padding-block-start:84px}.project-page-hero{grid-template-columns:minmax(0,1fr) minmax(0,300px);align-items:center;gap:clamp(28px,5vw,56px);margin-bottom:56px;display:grid}.project-page-hero-copy{min-width:0}.project-page-hero .project-page-header{margin-bottom:20px}.project-page-hero-copy>:last-child,.project-page-hero-visual .figure{margin-bottom:0}.project-page-description--hero,.project-page-hero .project-page-tags{margin-bottom:24px}.project-page-hero .project-callout{margin-bottom:0}@media (width<=820px){.project-page-hero{grid-template-columns:1fr;gap:36px}.project-page-hero-visual{order:2}}.project-page-back{color:var(--clr-text-2);margin-bottom:48px;font-size:.875rem;text-decoration:none;transition:color .2s;display:inline-block}.project-page-back:hover{color:var(--clr-accent)}.project-page-header{flex-direction:column;gap:6px;margin-bottom:28px;display:flex}.project-page-title{color:var(--clr-text-1);margin:0;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.15}.project-page-subtitle{color:var(--clr-text-2);max-width:60ch;margin:2px 0 0;font-size:1rem;line-height:1.55}.project-page-action{color:var(--clr-accent-ink);align-self:flex-start;margin-top:10px;font-size:.875rem;font-weight:500;transition:opacity .2s}.project-page-action:hover{opacity:.7}.project-page-tags{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:32px;display:flex}.project-callout{border-left:3px solid var(--clr-accent);background:var(--clr-accent-bg);border-radius:0 var(--r-md) var(--r-md) 0;color:var(--clr-text-1);margin:0 0 48px;padding:16px 20px;font-size:1rem;font-weight:500;line-height:1.6}.project-page-description{color:var(--clr-text-2);max-width:68ch;margin:0 0 48px;font-size:1.0625rem;line-height:1.75}.project-page-caption{color:var(--clr-text-3);margin:0 0 16px;font-size:.8125rem;font-style:italic}.project-page-placeholder{border:1px dashed var(--clr-border);text-align:center;color:var(--clr-text-2);border-radius:12px;padding:48px 32px;font-size:.9rem}.project-section{margin-bottom:56px}.project-section-title{letter-spacing:-.02em;color:var(--clr-text-1);margin:0 0 24px;font-size:1.1rem;font-weight:600}.figure{flex-direction:column;gap:12px;margin:0 auto 48px;display:flex}.figure--screen{max-width:300px}.figure--panel .figure-frame{background:var(--clr-surface);border:1px solid var(--clr-border-2);border-radius:var(--r-lg);padding:10px;overflow:hidden}.figure--panel .figure-frame img{border-radius:var(--r-sm);width:100%;height:auto}.figure--screen .figure-frame{background:var(--clr-surface);border:1px solid var(--clr-border-2);border-radius:var(--r-lg);padding:10px;overflow:hidden}.figure--screen .figure-frame img{border-radius:32px;width:100%;height:auto}.figure--plain .figure-frame{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--r-lg);justify-content:center;align-items:center;padding:32px;display:flex}.figure--plain .figure-frame img{width:100%;height:auto}.figure-caption{color:var(--clr-text-2);text-align:center;text-wrap:pretty;font-size:.8125rem;line-height:1.6}.grammar-compare{gap:14px;margin-bottom:48px;display:grid}.grammar-row{border:1px solid var(--clr-border);border-radius:var(--r-md);background:var(--clr-surface);padding:16px 18px}.grammar-label{letter-spacing:.14em;text-transform:uppercase;color:var(--clr-accent-ink);margin-bottom:8px;font-size:10.5px;font-weight:600;display:block}.grammar-line{font-family:var(--font-mono);color:var(--clr-text-1);overflow-wrap:break-word;margin:0 0 8px;font-size:.9375rem;line-height:1.6}.grammar-note{color:var(--clr-text-2);margin:0;font-size:.875rem;line-height:1.6}.figure-row--wide{max-width:100%}.figure-row--wide .figure--screen,.figure-row--wide .figure--panel{max-width:420px}.figure-row{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(20px,4vw,40px);max-width:720px;margin:0 auto 48px;display:grid}.figure-row .figure{margin-bottom:0}@media (width<=700px){.figure-row{grid-template-columns:1fr;gap:36px}.figure-row .figure,.figure{max-width:340px}}.hybrd-logo-breakdown{grid-template-columns:1fr 1fr;align-items:start;gap:40px;display:grid}.hybrd-logo-breakdown .figure{margin-bottom:0}.hybrd-logo-img-wrap{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:16px;justify-content:center;align-items:center;padding:32px;display:flex;overflow:hidden}.hybrd-logo-img-wrap img{width:100%;height:auto;display:block}.hybrd-logo-details{flex-direction:column;gap:20px;display:flex}.hybrd-logo-detail{flex-direction:column;gap:4px;display:flex}.hybrd-logo-detail-label{letter-spacing:.1em;text-transform:uppercase;color:var(--clr-accent);font-size:11px;font-weight:600}.hybrd-logo-detail-text{color:var(--clr-text-2);margin:0;font-size:.9rem;line-height:1.65}.hybrd-logo-footnote{color:var(--clr-text-3);margin:4px 0 0;font-size:.85rem;font-style:italic;line-height:1.6}.project-inline-code{background:var(--clr-surface);border:1px solid var(--clr-border);color:var(--clr-accent);border-radius:4px;padding:1px 6px;font-family:monospace;font-size:.85em}.token-outputs{flex-direction:column;gap:12px;display:flex}.token-output{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:10px;grid-template-columns:160px 1fr;align-items:baseline;gap:16px;padding:16px;display:grid}.token-output-file{color:var(--clr-accent);font-family:monospace;font-size:.875rem;font-weight:600}.token-output-desc{color:var(--clr-text-2);margin:0;font-size:.9rem;line-height:1.6}@media (width<=540px){.token-output{grid-template-columns:1fr;gap:6px}}.parcel-screenshot{justify-content:center;display:flex}.parcel-screenshot img{border:1px solid var(--clr-border);border-radius:12px;width:100%;max-width:400px;display:block;box-shadow:0 8px 32px #0000001f}.hybrd-dev-section{grid-template-columns:1fr auto;align-items:center;gap:40px;display:grid}.hybrd-dev-text{flex-direction:column;gap:16px;display:flex}.hybrd-dev-video{border:1px solid var(--clr-border);border-radius:24px;flex-shrink:0;width:200px;overflow:hidden;box-shadow:0 4px 24px #0000001a}.hybrd-dev-video video{width:100%;height:auto;display:block}@media (width<=600px){.hybrd-logo-breakdown,.hybrd-dev-section{grid-template-columns:1fr}.hybrd-dev-video{width:160px;margin:0 auto}}.figma-prototype-embed{aspect-ratio:430/900;border-radius:24px;width:100%;max-width:320px;margin:0 auto 32px;overflow:hidden}@media (width<=540px){.figma-prototype-embed{border-radius:16px;max-width:100%}}.figma-prototype-embed iframe{border:0;width:112%;height:122%;margin:-11% -6%}.figma-prototype-embed--wide{aspect-ratio:1512/982;border-radius:12px;max-width:100%}.figma-prototype-embed--wide iframe{width:108%;height:114%;margin:-7% -4%}.project-card-link{color:var(--clr-accent);white-space:nowrap;grid-area:4/1;align-items:center;gap:4px;font-size:.875rem;font-weight:500;text-decoration:none;transition:opacity .2s;display:inline-flex}.project-card-link:hover{opacity:.7}.project-card-link:hover .project-card-arrow{transform:translate(4px)}.project-card-arrow{transition:transform .25s var(--ease-out);display:inline-block}.about-inner{grid-template-columns:260px 1fr;align-items:start;gap:clamp(40px,6vw,96px);display:grid}.about-photo-col{position:sticky;top:84px}.about-photo{aspect-ratio:3/4;object-fit:cover;object-position:center center;border-radius:var(--r-lg);border:1px solid var(--clr-border);background:var(--clr-border);width:100%}.about-content{flex-direction:column;gap:0;display:flex}.about-bio{flex-direction:column;gap:16px;margin-bottom:32px;display:flex}.about-bio p{color:var(--clr-text-2);font-size:15.5px;line-height:1.78}.hover-pic{border-bottom:1px dashed var(--clr-text-3);cursor:default;display:inline-block;position:relative}.hover-pic__popup{opacity:0;pointer-events:none;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);z-index:50;width:160px;display:block;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(6px)}.hover-pic:hover .hover-pic__popup{opacity:1;transform:translate(-50%)translateY(0)}.hover-pic__popup img{object-fit:cover;border-radius:var(--r-md);border:1px solid var(--clr-border);width:160px;height:160px;display:block;box-shadow:0 8px 32px #0000002e,0 2px 8px #00000014}.about-placeholder{border:1px dashed var(--clr-border-2);border-radius:var(--r-sm);background:var(--clr-surface);opacity:.6;padding:12px 16px;font-style:italic;font-size:14px!important}.about-skills{flex-wrap:wrap;gap:8px;display:flex}.skill-tag{border-radius:var(--r-full);border:1px solid var(--clr-border);color:var(--clr-text-2);background:var(--clr-surface);cursor:default;padding:5px 12px;font-size:12px;font-weight:500;transition:border-color .2s,color .2s}.skill-tag:hover{border-color:var(--clr-accent);color:var(--clr-accent)}.footer{border-top:1px solid var(--clr-border);padding-block:52px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;display:flex}.footer-identity{flex-direction:column;gap:3px;display:flex}.footer-name{letter-spacing:-.01em;color:var(--clr-text-1);font-size:14px;font-weight:600}.footer-role{color:var(--clr-text-3);font-size:12px}.footer-links{align-items:center;gap:20px;display:flex}.footer-links a{color:var(--clr-text-2);font-size:13px;transition:color .15s}.footer-links a:hover{color:var(--clr-text-1)}.footer-copy{color:var(--clr-text-3);font-size:12px}@media (width<=768px){.nav-links{display:none}.nav-links-mobile{align-items:center;gap:20px;display:flex}.nav-links-mobile a{color:var(--clr-text-2);font-size:13.5px;font-weight:450;transition:color .15s}.nav-links-mobile a:hover{color:var(--clr-text-1)}.nav-links-mobile a.active{color:var(--clr-accent)}.nav-theme-swatches{display:none}.nav-theme-btn{justify-content:center;width:32px;margin-left:12px;padding:0}.about-inner{grid-template-columns:1fr}.about-photo-col{max-width:200px;position:static}.project-card{grid-template-columns:1fr}.project-link-btn{display:none}.footer-inner{flex-direction:column;align-items:flex-start;gap:20px}}@media (width<=540px){.writing-card{align-items:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
