:root{--bg:#0f0f11;--sidebar:#151518;--surface:#19191c;--tile:#1c1c20;--ink:#fcfcfd;--ink-2:#e0e0e6;--ink-body:#c8c8d2;--muted:#a0a0aa;--faint:#888892;--subtle:#7a7a85;--line:#26262b;--line-strong:#383840;--hover:#222227;--highlight:rgba(255,255,255,0.05);--green:#2f9e5b;--green-ink:#5fd08a;--radius:10px;--sidebar-w:264px;--col:640px;--font-sans:"Figtree",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-serif:"Newsreader",Georgia,"Times New Roman",serif;--ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1);--ease-drawer:cubic-bezier(0.32,0.72,0,1);--grain:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='3 0 0 0 -1 3 0 0 0 -1 3 0 0 0 -1 0 0 0 0 1'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='.05'/></svg>");--grain-soft:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='3 0 0 0 -1 3 0 0 0 -1 3 0 0 0 -1 0 0 0 0 1'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='.03'/></svg>");color-scheme:dark}:root[data-theme=light]{--bg:#fcfcfb;--sidebar:#f8f8f7;--surface:#ffffff;--tile:#ededec;--ink:#0a0a0c;--ink-2:#242429;--ink-body:#34343a;--muted:#5c5c66;--faint:#747480;--subtle:#82828e;--line:#ebebea;--line-strong:#dcdcda;--hover:#f5f5f3;--highlight:#ffffff;--green:#2f9e5b;--green-ink:#1e6b3a;color-scheme:light}:root[data-theme=dark]{--bg:#0f0f11;--sidebar:#151518;--surface:#19191c;--tile:#1c1c20;--ink:#fcfcfd;--ink-2:#e0e0e6;--ink-body:#c8c8d2;--muted:#a0a0aa;--faint:#888892;--subtle:#7a7a85;--line:#26262b;--line-strong:#383840;--hover:#222227;--highlight:rgba(255,255,255,0.05);--green:#2f9e5b;--green-ink:#5fd08a;color-scheme:dark}:not(.project-dialog-body),body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}:not(.project-dialog-body)::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}*{box-sizing:border-box}body,html{margin:0;padding:0}html{cursor:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M3 3v17l5.2-4.6h7.2z' fill='white' stroke='%23111113' stroke-width='1.5' stroke-linejoin='round'/></svg>") 3 3,auto;scroll-behavior:auto}body{background:var(--grain-soft),var(--bg);background-color:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow-x:hidden;width:100%}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,h4,p{margin:0}button{font:inherit;border:0;background:transparent;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:6px}.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}.shell{min-height:100vh;display:flex;position:relative;transition:padding-left .3s ease-in-out}.sidebar{background:var(--grain),linear-gradient(var(--surface),var(--bg));width:260px;height:calc(100vh - 24px);box-shadow:inset 0 1px 0 var(--highlight),0 1px 2px rgba(17,17,19,.05),0 18px 40px rgba(17,17,19,.09);border:1px solid var(--line);border-radius:26px;flex-shrink:0;margin:12px 0 12px 12px;padding:5px;position:sticky;top:12px;z-index:20;transition:transform .3s ease-in-out,margin-left .3s ease-in-out;will-change:transform,margin-left}.sidebar-panel{background:var(--grain),var(--surface);border-radius:21px;flex-direction:column;gap:18px;height:100%;padding:14px 12px 0;display:flex;overflow:hidden;box-shadow:0 0 0 1px var(--line),0 1px 3px rgba(17,17,19,.06)}.sidebar-panel>*{flex-shrink:0}.sidebar-panel>.nav{flex-shrink:1;min-height:0;overflow-y:auto}.sidebar-top{justify-content:space-between;align-items:center;padding:2px 4px 0 10px;display:flex}.sidebar-name{letter-spacing:-.02em;font-size:18px;font-weight:600;color:var(--ink)}.icon-btn{width:44px;height:44px;color:var(--ink);cursor:pointer;background:transparent;border:0;border-radius:10px;justify-content:center;align-items:center;display:inline-flex;transition:background .14s ease,color .14s ease,transform .12s var(--ease-out)}.icon-btn:hover{background:var(--hover)}.icon-btn:active{transform:scale(.96)}.sidebar-collapse{width:36px;height:36px}.sidebar-expand{z-index:25;background:var(--surface);position:fixed;top:18px;left:18px;box-shadow:0 0 0 1px var(--line),0 1px 3px rgba(17,17,19,.1);opacity:0;pointer-events:none;transform:scale(.85);transition:opacity .3s ease-in-out,transform .3s ease-in-out}.sidebar-expand.is-visible{opacity:1;pointer-events:auto;transform:scale(1)}.sidebar .nav-link,.sidebar .sidebar-brand,.sidebar .sidebar-collapse,.sidebar .sidebar-foot .foot-btn{transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .28s ease-in-out;will-change:transform,opacity}@media (min-width:901px){.sidebar.is-collapsed{transform:translateX(calc(-100% - 24px))!important;margin-left:-260px!important;pointer-events:none}.sidebar:not(.is-collapsed) .sidebar-brand{transform:translateX(0);opacity:1;transition-delay:.04s}.sidebar:not(.is-collapsed) .sidebar-collapse{transform:translateX(0);opacity:1;transition-delay:.06s}.sidebar:not(.is-collapsed) .nav-link:first-child{transform:translateX(0);opacity:1;transition-delay:.08s}.sidebar:not(.is-collapsed) .nav-link:nth-child(2){transform:translateX(0);opacity:1;transition-delay:.12s}.sidebar:not(.is-collapsed) .nav-link:nth-child(3){transform:translateX(0);opacity:1;transition-delay:.16s}.sidebar:not(.is-collapsed) .nav-link:nth-child(4){transform:translateX(0);opacity:1;transition-delay:.2s}.sidebar:not(.is-collapsed) .nav-link:nth-child(5){transform:translateX(0);opacity:1;transition-delay:.24s}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:first-child{transform:translateY(0);opacity:1;transition-delay:.26s}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(2){transform:translateY(0);opacity:1;transition-delay:.29s}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(3){transform:translateY(0);opacity:1;transition-delay:.32s}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(4){transform:translateY(0);opacity:1;transition-delay:.35s}.sidebar.is-collapsed .nav-link,.sidebar.is-collapsed .sidebar-brand,.sidebar.is-collapsed .sidebar-collapse{transform:translateX(-24px);opacity:0;transition-delay:0s}.sidebar.is-collapsed .sidebar-foot .foot-btn{transform:translateY(12px);opacity:0;transition-delay:0s}}.sidebar-brand{display:flex;flex-direction:column;gap:2px}.sidebar-role{font-size:12px;color:var(--muted);font-weight:400;letter-spacing:-.01em}.nav{gap:18px}.nav,.nav-group{flex-direction:column;display:flex}.nav-group{gap:2px}.nav-label{color:var(--subtle);letter-spacing:.01em;padding:0 12px 6px;font-size:12px;font-weight:500}.nav-link{height:40px;color:var(--ink-2);border-radius:12px;align-items:center;gap:12px;padding:0 12px;font-size:15px;font-weight:500;transition:background .14s ease,box-shadow .14s ease,color .14s ease,transform .12s var(--ease-out);display:flex;cursor:pointer}.nav-link svg{color:var(--faint);flex-shrink:0;transition:color .14s ease}.nav-link:hover{background:var(--hover);color:var(--ink)}.nav-link:active{transform:scale(.98)}.nav-link:hover svg{color:var(--ink)}.nav-link.active,.nav-link[aria-current=page]{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong),inset 0 1px 0 var(--highlight),0 1px 2px rgba(17,17,19,.06);background:linear-gradient(var(--surface),var(--hover))}.nav-link.active svg,.nav-link[aria-current=page] svg{color:var(--ink)}.nav-badge{height:22px;color:var(--green-ink);background:rgba(47,158,91,.15);border-radius:999px;align-items:center;gap:6px;margin-left:auto;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.nav-badge .dot{width:6px;height:6px}.nav-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:500}.dot{background:var(--green);border-radius:50%;width:7px;height:7px;display:inline-block;flex-shrink:0}.sidebar-foot{border-top:1px solid var(--line);gap:8px;margin:auto -12px 0;padding:14px 16px}.foot-btn,.sidebar-foot{align-items:center;display:flex}.foot-btn{width:32px;height:32px;color:var(--muted);cursor:pointer;background:transparent;border:0;border-radius:10px;justify-content:center;transition:background .14s ease,color .14s ease,transform .12s var(--ease-out);box-shadow:inset 0 0 0 1px var(--line-strong)}.foot-btn:hover{background:var(--hover);color:var(--ink)}.foot-btn:active{transform:scale(.95)}.main{flex:1;justify-content:center;min-width:0;padding:104px 24px 96px;display:flex;transition:margin-left .3s ease-in-out,transform .3s ease-in-out;will-change:margin-left,transform}.column{width:100%;max-width:var(--col);flex-direction:column;gap:88px;display:flex}.label{color:var(--muted);font-size:14px;font-weight:500}.page-title{letter-spacing:-.025em;font-size:clamp(28px,4.8vw,36px);line-height:1.22}.hero-headline,.page-title{font-weight:600;color:var(--ink)}.lead{color:var(--ink-body);font-size:16px;line-height:1.65;font-weight:400}.lead-teaser{max-height:7.2em;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 75%,rgba(0,0,0,.25));mask-image:linear-gradient(180deg,#000 75%,rgba(0,0,0,.25));transition:max-height .3s ease}.lead-expanded{max-height:40em;-webkit-mask-image:none;mask-image:none}.back{color:var(--muted);align-items:center;gap:6px;font-size:14px;display:inline-flex;cursor:pointer;transition:color .14s ease}.back:hover{color:var(--ink)}.stack-v{flex-direction:column;display:flex}.gap-4{gap:4px}.gap-8{gap:8px}.gap-16{gap:16px}.gap-24{gap:24px}.gap-40{gap:40px}.gap-56{gap:56px}.identity{align-items:center;gap:16px;display:flex}.avatar{-o-object-fit:cover;object-fit:cover;background:var(--tile);border-radius:50%;flex-shrink:0;width:80px;height:80px;border:1px solid var(--line)}.identity-name{letter-spacing:-.01em;font-size:22px;font-weight:600;color:var(--ink)}.identity-role{color:var(--muted);font-size:16px}.niche{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:12px;padding:16px 0;display:flex}.chip,.niche{align-items:center}.chip{border-radius:999px;gap:8px;height:32px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.chip-dark{background:var(--ink);color:var(--bg)}.chip-dark .dot{background:var(--green-ink);width:6px;height:6px}.chip-light{border:1px solid var(--line-strong);color:var(--ink-2)}.metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.metric-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:500;color:var(--ink)}.metric-label{color:var(--muted);font-size:14px}.section-head{justify-content:space-between;align-items:baseline;display:flex}.count{color:var(--subtle);font-size:13px}.experience-item,.experience-list{display:flex;flex-direction:column}.experience-item{gap:14px;padding:22px 0;border-top:1px solid var(--line)}.experience-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.experience-role-group{display:flex;flex-direction:column;gap:4px}.experience-role{font-size:17.5px;font-weight:600;letter-spacing:-.01em;color:var(--ink);line-height:1.35;margin:0}.experience-company-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.experience-company{font-size:15px;color:var(--ink-2);font-weight:500}.experience-type-pill{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--tile);border:1px solid var(--line-strong);color:var(--muted)}.experience-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right;flex-shrink:0}.experience-period{font-size:13.5px;font-weight:500;color:var(--subtle);font-variant-numeric:tabular-nums}.experience-location{font-size:12.5px;color:var(--muted)}.experience-stack-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.bullets{color:var(--ink-body);flex-direction:column;gap:10px;margin:0;padding-left:18px;font-size:14.5px;line-height:1.62;display:flex}.row{border-top:1px solid var(--line);align-items:center;gap:20px;padding:18px 0;display:flex;transition:background .16s ease,transform .14s var(--ease-out)}@media (hover:hover) and (pointer:fine){.row:hover{background:var(--hover);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:12px}.row:hover .row-title{text-underline-offset:3px;text-decoration:underline}}.row:active{transform:scale(.99)}.thumb{-o-object-fit:cover;object-fit:cover;-o-object-position:top left;object-position:top left;background:var(--tile);border:1px solid var(--line);border-radius:8px;flex-shrink:0;width:72px;height:48px}.row-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.row-title{font-size:16px;font-weight:500;color:var(--ink);display:inline-flex;align-items:center;gap:8px}.row-sub{color:var(--muted);font-size:14px;overflow:hidden;text-overflow:ellipsis}.row-sub,.row-tag{white-space:nowrap}.row-tag{color:var(--subtle);font-size:13px}#projects .row>.row-tag,#projects>div.stack-v>div:first-child>span{display:none!important}.soon{color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line-strong);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.more-btn{border:1px solid var(--line-strong);background:var(--surface);height:40px;color:var(--ink);cursor:pointer;border-radius:999px;align-self:center;margin-top:-8px;padding:0 20px;font-size:14px;font-weight:500;transition:background .14s ease,border-color .14s ease,transform .12s var(--ease-out)}.more-btn:hover{background:var(--hover);border-color:var(--ink)}.more-btn:active{transform:scale(.96)}.kv{border-top:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:20px;padding:14px 0;font-size:15px;display:grid;align-items:baseline}.kv>:first-child{color:var(--muted)}.kv>:last-child{color:var(--ink-body)}.contact-section{border-top:1px solid var(--line);padding-top:28px;gap:20px}.contact-card,.contact-section{display:flex;flex-direction:column}.contact-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:32px 28px;gap:24px;box-shadow:0 1px 3px rgba(17,17,19,.04);position:relative;overflow:hidden}.contact-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--green),transparent 80%)}.contact-headline{font-size:26px;font-weight:500;letter-spacing:-.02em;color:var(--ink);line-height:1.3}.contact-desc{color:var(--ink-body);font-size:15px;line-height:1.65;max-width:540px}.contact-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.contact-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;padding-top:16px;border-top:1px solid var(--line)}.contact-info-item{display:flex;flex-direction:column;gap:4px}.contact-info-item .info-label{font-size:12px;color:var(--subtle);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.contact-info-item .info-val{font-size:14px;color:var(--ink-2);font-weight:500;display:flex;align-items:center;gap:6px}.contact-info-item a.info-val:hover{color:var(--ink);text-decoration:underline}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:16px;padding-top:24px;font-size:14px}.footer,.footer nav{flex-wrap:wrap;display:flex}.footer nav{gap:24px}.footer a:hover,.footer button:hover{color:var(--ink)}.btn{border-radius:999px;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 20px;font-size:14px;font-weight:500;display:inline-flex;cursor:pointer;transition:background .14s ease,border-color .14s ease,transform .12s var(--ease-out)}.btn:active{transform:scale(.97)}.btn-dark{background:var(--ink);color:var(--bg)}.btn-dark:hover{opacity:.92}.btn-light{border:1px solid var(--line-strong);color:var(--ink)}.btn-light:hover{background:var(--hover)}.toast{left:calc(50% + var(--sidebar-w) / 2);z-index:100;background:var(--ink);height:44px;color:var(--bg);white-space:nowrap;pointer-events:none;border-radius:999px;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;animation:.24s var(--ease-out) toast-in;display:inline-flex;position:fixed;bottom:32px;transform:translate(-50%);box-shadow:0 2px 4px rgba(17,17,19,.08),0 16px 40px rgba(17,17,19,.22)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,14px) scale(.95)}to{opacity:1;transform:translate(-50%) scale(1)}}.click-burst{z-index:100;pointer-events:none;position:fixed}.click-burst span{background:var(--ink);transform-origin:50% 0;border-radius:1px;width:2px;height:7px;animation:.42s var(--ease-out) forwards click-burst;position:absolute;top:0;left:-1px}@keyframes click-burst{0%{transform:rotate(var(--a)) translateY(4px) scaleY(1);opacity:1}to{transform:rotate(var(--a)) translateY(13px) scaleY(.3);opacity:0}}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;height:100dvh;background:rgba(0,0,0,.74);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;overflow:hidden;box-sizing:border-box;animation:.2s var(--ease-out) overlay-in;overscroll-behavior:contain;touch-action:none}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.project-dialog{width:100%;max-width:580px;margin:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:24px;position:relative;box-shadow:0 24px 60px rgba(0,0,0,.45),inset 0 1px 0 var(--highlight);height:min(80vh,580px);max-height:min(80vh,580px);display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:contain;transform-origin:center center}.project-modal-overlay.is-entering{animation:.24s var(--ease-out) forwards modal-backdrop-in}.project-modal-overlay.is-closing{animation:.2s var(--ease-out) forwards modal-backdrop-out;pointer-events:none}.project-modal-card.is-entering{animation:.24s var(--ease-out) forwards modal-card-blur-in;will-change:opacity,filter,transform}.project-modal-card.is-closing{animation:.2s var(--ease-out) forwards modal-card-blur-out;will-change:opacity,filter,transform}@keyframes modal-backdrop-in{0%{opacity:0;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}@keyframes modal-backdrop-out{0%{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}to{opacity:0;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}}@keyframes modal-card-blur-in{0%{opacity:0;filter:blur(12px);transform:scale(.96) translateY(8px)}to{opacity:1;filter:blur(0);transform:scale(1) translateY(0)}}@keyframes modal-card-blur-out{0%{opacity:1;filter:blur(0);transform:scale(1) translateY(0)}to{opacity:0;filter:blur(8px);transform:scale(.97) translateY(6px)}}.dialog-card{width:100%;max-width:480px;margin:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:24px;padding:32px 28px;position:relative;box-shadow:0 24px 60px rgba(0,0,0,.45),inset 0 1px 0 var(--highlight);max-height:min(88vh,780px);overflow-y:auto;display:flex;flex-direction:column;gap:20px;transform-origin:center center;animation:.22s var(--ease-out) modal-in}@keyframes modal-in{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.dialog-close{position:absolute;top:18px;right:18px;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;transition:background .14s ease,color .14s ease,transform .12s var(--ease-out)}.dialog-close:hover{background:var(--hover);color:var(--ink)}.dialog-close:active{transform:scale(.94)}.project-dialog-header{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding:26px 56px 16px 28px;border-bottom:1px solid var(--line)}.project-dialog-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:20px 24px 20px 28px;display:flex;flex-direction:column;gap:20px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.project-dialog-body::-webkit-scrollbar{display:block;width:6px}.project-dialog-body::-webkit-scrollbar-track{background:transparent;margin:10px 0}.project-dialog-body::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px;border:1px solid var(--surface);-webkit-transition:background .15s ease;transition:background .15s ease}.project-dialog-body::-webkit-scrollbar-thumb:hover{background:var(--subtle)}.project-meta-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.badge-pill{font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-2);background:var(--tile)}.badge-pill.status-live{border-color:rgba(47,158,91,.3);background:rgba(47,158,91,.12);color:var(--green-ink);display:inline-flex;align-items:center;gap:5px}.project-dialog-title{font-size:26px;font-weight:600;letter-spacing:-.02em;color:var(--ink);margin:0}.project-dialog-sub{font-size:15px;color:var(--muted);line-height:1.5}.project-section-title{font-size:12.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.project-overview-text{font-size:15px;line-height:1.65;color:var(--ink-body)}.project-highlights-list{display:flex;flex-direction:column;gap:10px;margin:0;padding-left:20px;color:var(--ink-body);font-size:14.5px;line-height:1.6}.project-highlights-list li strong{color:var(--ink)}.project-tech-tags{display:flex;flex-wrap:wrap;gap:8px}.tech-tag{font-size:12px;padding:4px 10px;border-radius:8px;background:var(--tile);border:1px solid var(--line);color:var(--ink-2)}.project-dialog-foot{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:16px 28px;border-top:1px solid var(--line);background:var(--surface);z-index:10;margin-top:auto}.project-dialog-foot .btn{min-width:160px;justify-content:center}.blur-fade-item{opacity:0;filter:blur(12px);transform:translateY(14px) scale(.975);transition:opacity .62s var(--ease-out),filter .62s var(--ease-out),transform .62s var(--ease-out);will-change:opacity,filter,transform}.hero-section .blur-fade-item{transition:none}.blur-fade-item.is-revealed,.scroll-reveal-section.is-revealed .blur-fade-item,.scroll-reveal-section.is-revealed.blur-fade-item{opacity:1;filter:blur(0);transform:translateY(0) scale(1)}.scroll-reveal-section.is-revealed .section-head{transition-delay:.02s}.scroll-reveal-section.is-revealed .experience-list .experience-item:first-child{transition-delay:.08s}.scroll-reveal-section.is-revealed .experience-list .experience-item:nth-child(2){transition-delay:.18s}.scroll-reveal-section.is-revealed .stack-v>.row:first-child{transition-delay:.08s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(2){transition-delay:.15s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(3){transition-delay:.22s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(4){transition-delay:.29s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(5){transition-delay:.36s}.scroll-reveal-section.is-revealed .more-btn{transition-delay:.28s}#stack.is-revealed .stack-v>.kv:first-child{transition-delay:.06s}#stack.is-revealed .stack-v>.kv:nth-child(2){transition-delay:.12s}#stack.is-revealed .stack-v>.kv:nth-child(3){transition-delay:.18s}#stack.is-revealed .stack-v>.kv:nth-child(4){transition-delay:.24s}#stack.is-revealed .stack-v>.kv:nth-child(5){transition-delay:.3s}#stack.is-revealed .stack-v>.kv:nth-child(6){transition-delay:.36s}#education.is-revealed .stack-v>.kv:first-child{transition-delay:.08s}#education.is-revealed .stack-v>.kv:nth-child(2){transition-delay:.16s}#education.is-revealed .stack-v>.kv:nth-child(3){transition-delay:.24s}#contact.is-revealed .contact-card{transition-delay:.1s}.word-wrapper{display:inline-block;white-space:nowrap}.word-wrapper.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}.blur-char{display:inline-block;will-change:transform,opacity,filter;color:var(--ink)}.blur-char.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}@media (max-width:900px){.shell{flex-direction:column}.toast{left:50%}.mobile-bar{border-bottom:1px solid var(--line);background:var(--bg);z-index:50;align-items:center;gap:8px;padding:8px 12px 8px 6px;display:flex;position:sticky;top:0;height:56px}.mobile-bar-name{letter-spacing:-.01em;font-size:17px;font-weight:600}.mobile-bar-status{color:var(--muted);margin-left:auto;font-size:13px;display:flex;align-items:center;gap:6px}.scrim{z-index:60;background:rgba(0,0,0,.6);position:fixed;inset:0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .3s ease-in-out}.scrim.is-visible{opacity:1;pointer-events:auto}.sidebar{z-index:70;width:296px;height:calc(100dvh - 20px);box-shadow:inset 0 1px 0 var(--highlight),0 2px 4px rgba(17,17,19,.05),0 24px 56px rgba(17,17,19,.22);margin:0;transition:transform .3s ease-in-out;position:fixed;top:10px;left:10px;transform:translateX(calc(-100% - 20px))}.sidebar-panel{padding-top:8px}.sidebar.is-open{transform:translateX(0)}.sidebar .nav-link,.sidebar .sidebar-brand,.sidebar .sidebar-collapse{transform:translateX(-32px);opacity:0;transition-delay:0s}.sidebar .sidebar-foot .foot-btn{transform:translateY(16px);opacity:0;transition-delay:0s}.sidebar.is-open .sidebar-brand{transform:translateX(0);opacity:1;transition-delay:.06s}.sidebar.is-open .sidebar-collapse{transform:translateX(0);opacity:1;transition-delay:.08s}.sidebar.is-open .nav-link:first-child{transform:translateX(0);opacity:1;transition-delay:.1s}.sidebar.is-open .nav-link:nth-child(2){transform:translateX(0);opacity:1;transition-delay:.14s}.sidebar.is-open .nav-link:nth-child(3){transform:translateX(0);opacity:1;transition-delay:.18s}.sidebar.is-open .nav-link:nth-child(4){transform:translateX(0);opacity:1;transition-delay:.22s}.sidebar.is-open .nav-link:nth-child(5){transform:translateX(0);opacity:1;transition-delay:.26s}.sidebar.is-open .sidebar-foot .foot-btn:first-child{transform:translateY(0);opacity:1;transition-delay:.28s}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(2){transform:translateY(0);opacity:1;transition-delay:.31s}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(3){transform:translateY(0);opacity:1;transition-delay:.34s}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(4){transform:translateY(0);opacity:1;transition-delay:.37s}.sidebar-expand,.sidebar-sub{display:none!important}.main{padding:32px 18px 64px}.column{gap:52px}.metrics{gap:12px}.identity .avatar{width:64px;height:64px}.identity{gap:12px}.identity .btn{gap:6px;height:36px;padding:0 12px;font-size:13px}.metric-value{font-size:24px}.metric-label{font-size:13px}.experience-header{flex-direction:column;align-items:flex-start;gap:6px}.experience-role{font-size:18px;line-height:1.3}.experience-company-line{gap:6px}.experience-meta{align-items:flex-start;text-align:left;flex-direction:row;flex-wrap:wrap;gap:6px 12px;margin-top:2px}.experience-period{font-size:12.5px;color:var(--subtle)}.experience-location{font-size:12px;color:var(--muted)}.row{gap:14px;padding:16px 0}#projects .row>.row-tag,#projects>div.stack-v>div:first-child>span{display:none!important}.footer{flex-direction:column-reverse;gap:16px}.footer nav{gap:12px 20px}.kv{grid-template-columns:1fr;gap:4px}.page-title{font-size:28px}.dialog-overlay{padding:12px}.dialog-card{padding:24px 20px;gap:18px}.dialog-card,.project-dialog{max-height:calc(100dvh - 24px);border-radius:20px}.project-dialog{height:calc(100dvh - 24px)}.project-dialog-header{padding:18px 48px 12px 18px}.project-dialog-body{padding:16px 18px;gap:16px}.project-dialog-foot{padding:12px 18px}.project-dialog-title{font-size:22px}.contact-card{padding:24px 20px;border-radius:18px}.contact-headline{font-size:22px}.contact-info-grid{grid-template-columns:1fr;gap:14px}}@media (min-width:901px){.mobile-bar,.scrim{display:none}}@media (prefers-reduced-motion:reduce){.blur-char,.blur-fade-item,.click-burst span,.dialog-card,.project-dialog,.project-modal-card,.project-modal-overlay,.scroll-reveal-section,.toast{animation:none!important;transition:none!important;filter:none!important;transform:none!important;opacity:1!important}}