@import "https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}html,body{color:#17241f;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f4f6f0;width:100%;height:100%;margin:0;padding:0;overflow:hidden}#root{flex-direction:column;width:100vw;height:100dvh;display:flex;position:relative;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#17241f33;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#17241f59}@property --mo-amp{syntax:"<number>";inherits:true;initial-value:0}@property --mo-esx{syntax:"<number>";inherits:true;initial-value:1}@property --mo-esy{syntax:"<number>";inherits:true;initial-value:1}@property --mo-tilt{syntax:"<number>";inherits:true;initial-value:0}@property --mo-edy{syntax:"<number>";inherits:true;initial-value:0}@property --mo-edx{syntax:"<number>";inherits:true;initial-value:0}@property --mo-esx2{syntax:"<number>";inherits:true;initial-value:0}@property --mo-esy2{syntax:"<number>";inherits:true;initial-value:0}@property --mo-tilt2{syntax:"<number>";inherits:true;initial-value:0}@property --mo-edy2{syntax:"<number>";inherits:true;initial-value:0}@property --mo-lock{syntax:"<number>";inherits:true;initial-value:0}@property --mo-shake{syntax:"<number>";inherits:true;initial-value:0}@property --mo-rock{syntax:"<number>";inherits:true;initial-value:0}@property --mo-rockp{syntax:"<number>";inherits:true;initial-value:1}@property --mo-bdy{syntax:"<number>";inherits:true;initial-value:0}.mo-root,.mo-breathe,.mo-bob{transform-box:view-box;transform-origin:50%}.mo-root{--mo-amp:0;--mo-morph:calc(.4s*var(--mo-rate,1));--mo-morph-ease:ease-in-out;--mo-tp:--mo-esx,--mo-esy,--mo-tilt,--mo-edy,--mo-edx,--mo-esx2,--mo-esy2,--mo-tilt2,--mo-edy2,--mo-lock,--mo-shake,--mo-rock,--mo-bdy;--mo-md:var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph),var(--mo-morph);--mo-me:var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease),var(--mo-morph-ease);transition-property:--mo-amp,transform,var(--mo-tp);transition-duration:calc(.4s*var(--mo-rate,1)),calc(.16s*var(--mo-rate,1)),var(--mo-md);transition-timing-function:ease-out,cubic-bezier(.23,1,.32,1),var(--mo-me);animation:mo-shake calc(.112s*var(--mo-rate,1))linear infinite}.mo-bob>g:not(.mo-eyes){fill:var(--mo-head);transition:fill var(--mo-morph)var(--mo-morph-ease)}.mo-eyes{fill:var(--mo-eye);transition:fill var(--mo-morph)var(--mo-morph-ease)}@keyframes mo-shake{0%,to{translate:calc(.62px*var(--mo-shake))calc(-.34px*var(--mo-shake))}25%{translate:calc(-.7px*var(--mo-shake))calc(.22px*var(--mo-shake))}50%{translate:calc(.38px*var(--mo-shake))calc(.66px*var(--mo-shake))}75%{translate:calc(-.44px*var(--mo-shake))calc(-.6px*var(--mo-shake))}}.mo-root.mo-expr{--mo-morph:calc(.3s*var(--mo-rate,1));--mo-morph-ease:cubic-bezier(.45,.05,.5,1)}.mo-root:hover{--mo-amp:1;transition-duration:calc(.4s*var(--mo-rate,1)),calc(.22s*var(--mo-rate,1)),var(--mo-md);transform:translateY(-1.5px)scale(1.04)}.mo-root.mo-always{--mo-amp:1}.mo-breathe{animation-name:mo-breathe;animation-duration:calc(2.8s*var(--mo-rate,1));animation-delay:calc(var(--mo-phase,0s)*var(--mo-rate,1));animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}@keyframes mo-breathe{to{transform:scaleX(calc(1 + .022*var(--mo-amp)))scaleY(calc(1 - .018*var(--mo-amp)))}}.mo-bob{translate:0 calc(var(--mo-bdy)*1px);animation-name:mo-bob;animation-duration:calc(3.4s*var(--mo-rate,1));animation-delay:calc(var(--mo-bob-phase,0s)*var(--mo-rate,1));animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}@keyframes mo-bob{0%{transform:translateY(0)}to{transform:translateY(calc(-1.1px*var(--mo-amp)))}}.mo-eye{transform-box:view-box;--mo-sel:calc((var(--mo-wrap,1) + 1)/2);--mo-x:calc(var(--mo-esx) + var(--mo-esx2)*var(--mo-sel));--mo-y:calc(var(--mo-esy) + var(--mo-esy2)*var(--mo-sel));--mo-t:calc(var(--mo-tilt) + var(--mo-tilt2)*var(--mo-sel));--mo-ph:calc(var(--mo-sel)*(1 - var(--mo-rock)) + var(--mo-rock)*((1 + var(--mo-wrap,1)*var(--mo-rockp))/2));translate:calc(var(--mo-edx)*var(--mo-wrap,1)*1px)calc((var(--mo-edy) + var(--mo-edy2)*var(--mo-ph))*1px);rotate:calc((var(--mo-t)*var(--mo-wrap,1) - var(--mo-lean,0)*var(--mo-lock))*1deg);transform:rotate(calc(var(--mo-lean,0)*1deg))scaleX(var(--mo-x))scaleY(var(--mo-y))rotate(calc(var(--mo-lean,0)*-1deg));animation-name:mo-rock;animation-duration:calc(.9s*var(--mo-rate,1));animation-timing-function:ease-in-out;animation-iteration-count:infinite}@container style(--mo-rock:0){.mo-eye{animation-name:none}}@keyframes mo-rock{0%,to{--mo-rockp:1}50%{--mo-rockp:-1}}.mo-eye>*{transform-box:fill-box;transform-origin:50%;animation-name:mo-blink,mo-wrap;animation-duration:calc(var(--mo-blink,4.8s)*var(--mo-rate,1)),calc(var(--mo-saccade,5.6s)*var(--mo-rate,1));animation-delay:calc(var(--mo-blink-phase,0s)*var(--mo-rate,1)),calc(var(--mo-saccade-phase,0s)*var(--mo-rate,1));animation-timing-function:linear;animation-iteration-count:infinite}@keyframes mo-blink{0%,97.2%{transform:rotate(calc(var(--mo-lean,0)*1deg))scaleY(1)rotate(calc(var(--mo-lean,0)*-1deg));animation-timing-function:ease-in}98.6%{transform:rotate(calc(var(--mo-lean,0)*1deg))scaleY(calc(1 - .92*var(--mo-amp)))rotate(calc(var(--mo-lean,0)*-1deg));animation-timing-function:ease-out}to{transform:rotate(calc(var(--mo-lean,0)*1deg))scaleY(1)rotate(calc(var(--mo-lean,0)*-1deg))}}.mo-eyes{animation-name:mo-saccade;animation-duration:calc(var(--mo-saccade,5.6s)*var(--mo-rate,1));animation-delay:calc(var(--mo-saccade-phase,0s)*var(--mo-rate,1));animation-timing-function:linear;animation-iteration-count:infinite}@keyframes mo-saccade{0%,15%{translate:0}16.5%,31%{translate:calc(-.8px*var(--mo-look-x,1.4)*var(--mo-amp))calc(-.9px*var(--mo-look-y,1.1)*var(--mo-amp))}32.5%,47%{translate:calc(1px*var(--mo-look-x,1.4)*var(--mo-amp))calc(.1px*var(--mo-look-y,1.1)*var(--mo-amp))}48.5%,63%{translate:calc(-.15px*var(--mo-look-x,1.4)*var(--mo-amp))calc(.85px*var(--mo-look-y,1.1)*var(--mo-amp))}64.5%,79%{translate:calc(.75px*var(--mo-look-x,1.4)*var(--mo-amp))calc(-.8px*var(--mo-look-y,1.1)*var(--mo-amp))}80.5%,98.5%{translate:calc(-1px*var(--mo-look-x,1.4)*var(--mo-amp))calc(-.15px*var(--mo-look-y,1.1)*var(--mo-amp))}to{translate:0}}@keyframes mo-wrap{0%,15%{rotate:none;scale:1}16.5%,31%{scale:calc(1 - .0176*var(--mo-look-mx,1.4)*var(--mo-amp) + .008*var(--mo-look-x,1.4)*var(--mo-wrap,1)*var(--mo-amp))calc(1 - .027*var(--mo-look-my,1.1)*var(--mo-amp));rotate:calc(.648deg*var(--mo-look-x,1.4)*var(--mo-look-y,1.1)*var(--mo-wrap,1)*var(--mo-amp))}32.5%,47%{scale:calc(1 - .022*var(--mo-look-mx,1.4)*var(--mo-amp) - .01*var(--mo-look-x,1.4)*var(--mo-wrap,1)*var(--mo-amp))calc(1 - .003*var(--mo-look-my,1.1)*var(--mo-amp));rotate:calc(.09deg*var(--mo-look-x,1.4)*var(--mo-look-y,1.1)*var(--mo-wrap,1)*var(--mo-amp))}48.5%,63%{scale:calc(1 - .0033*var(--mo-look-mx,1.4)*var(--mo-amp) + .0015*var(--mo-look-x,1.4)*var(--mo-wrap,1)*var(--mo-amp))calc(1 - .0255*var(--mo-look-my,1.1)*var(--mo-amp));rotate:calc(-.115deg*var(--mo-look-x,1.4)*var(--mo-look-y,1.1)*var(--mo-wrap,1)*var(--mo-amp))}64.5%,79%{scale:calc(1 - .0165*var(--mo-look-mx,1.4)*var(--mo-amp) - .0075*var(--mo-look-x,1.4)*var(--mo-wrap,1)*var(--mo-amp))calc(1 - .024*var(--mo-look-my,1.1)*var(--mo-amp));rotate:calc(-.54deg*var(--mo-look-x,1.4)*var(--mo-look-y,1.1)*var(--mo-wrap,1)*var(--mo-amp))}80.5%,98.5%{scale:calc(1 - .022*var(--mo-look-mx,1.4)*var(--mo-amp) + .01*var(--mo-look-x,1.4)*var(--mo-wrap,1)*var(--mo-amp))calc(1 - .0045*var(--mo-look-my,1.1)*var(--mo-amp));rotate:calc(.135deg*var(--mo-look-x,1.4)*var(--mo-look-y,1.1)*var(--mo-wrap,1)*var(--mo-amp))}to{rotate:none;scale:1}}@media not ((hover:hover) and (pointer:fine)){.mo-root:hover{--mo-amp:0;transform:none}.mo-root.mo-always{--mo-amp:1}.mo-root:not(.mo-always),.mo-root:not(.mo-always) *{animation-play-state:paused}.mo-root.mo-expr:not(.mo-always) .mo-eye{animation-play-state:running}}.mo-slow{--mo-rate:5}@media (prefers-reduced-motion:reduce){.mo-root,.mo-breathe,.mo-bob,.mo-eyes,.mo-eye,.mo-eye>*{transition:none;animation:none}.mo-bob>g:not(.mo-eyes){transition:none}}@property --mo-track-x{syntax:"<number>";inherits:true;initial-value:0}@property --mo-track-y{syntax:"<number>";inherits:true;initial-value:0}@property --mo-track-travel{syntax:"<length>";inherits:true;initial-value:0}@property --mo-track-hold{syntax:"<number>";inherits:true;initial-value:0}.mo-root .mo-eye{--mo-gz-dx:calc(var(--mo-gz-dx1,0) + (var(--mo-gz-dx2,0) - var(--mo-gz-dx1,0))*var(--mo-sel));--mo-gz-dy:calc(var(--mo-gz-dy1,0) + (var(--mo-gz-dy2,0) - var(--mo-gz-dy1,0))*var(--mo-sel));--mo-gz-sx:calc(var(--mo-gz-sx1,1) + (var(--mo-gz-sx2,1) - var(--mo-gz-sx1,1))*var(--mo-sel));--mo-gz-sy:calc(var(--mo-gz-sy1,1) + (var(--mo-gz-sy2,1) - var(--mo-gz-sy1,1))*var(--mo-sel));--mo-gz-t:calc(var(--mo-gz-t1,0) + (var(--mo-gz-t2,0) - var(--mo-gz-t1,0))*var(--mo-sel));translate:calc((var(--mo-edx)*var(--mo-wrap,1) + var(--mo-gz-dx))*1px)calc((var(--mo-edy) + var(--mo-edy2)*var(--mo-ph) + var(--mo-gz-dy))*1px);rotate:calc(( var(--mo-t)*var(--mo-wrap,1) - var(--mo-lean,0)*var(--mo-lock) + var(--mo-gz-t))*1deg);transform:rotate(calc(var(--mo-lean,0)*1deg))scaleX(calc(var(--mo-x)*var(--mo-gz-sx)))scaleY(calc(var(--mo-y)*var(--mo-gz-sy)))rotate(calc(var(--mo-lean,0)*-1deg))}svg:has(>.mo-root){--mo-look-seed-x:var(--mo-look-x,1.4);--mo-look-seed-y:var(--mo-look-y,1.1);--mo-look-seed-mx:var(--mo-look-mx,1.4);--mo-look-seed-my:var(--mo-look-my,1.1)}.mo-root{--mo-look-x:calc(var(--mo-look-seed-x,1.4)*(1 - var(--mo-track-hold)));--mo-look-y:calc(var(--mo-look-seed-y,1.1)*(1 - var(--mo-track-hold)));--mo-look-mx:calc(var(--mo-look-seed-mx,1.4)*(1 - var(--mo-track-hold)));--mo-look-my:calc(var(--mo-look-seed-my,1.1)*(1 - var(--mo-track-hold)))}:root{--bg-core:#f4f6f0;--bg-surface:#ffffffc7;--bg-surface-solid:#fff;--bg-wash:#e7eee7;--ink:#17241f;--ink-soft:#53645d;--ink-faint:#8b9a92;--line:#17241f21;--line-strong:#17241f3d;--accent-cyan:#1464ff;--accent-emerald:#21a179;--accent-coral:#f26b5e;--accent-yellow:#f3bf5b;--font-sans:"DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-display:"Syne", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"DM Mono", monospace}.viewport-shell{background:var(--bg-core);width:100vw;height:100dvh;color:var(--ink);position:relative;overflow:hidden}.viewport-content-container{z-index:10;position:absolute;inset:0;overflow:hidden}.portfolio-canvas-scroll{scroll-behavior:smooth;perspective:1200px;width:100%;height:100%;position:relative;overflow:hidden auto}.kinetic-bg-canvas{pointer-events:none;z-index:1;opacity:.28;mix-blend-mode:multiply;width:100vw;height:100dvh;position:fixed;inset:0}.canvas-grid-bg{pointer-events:none;z-index:2;will-change:transform;background-image:linear-gradient(90deg,#17241f0e 1px,#0000 1px),linear-gradient(#17241f0e 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 82%);mask-image:linear-gradient(#000,#0000 82%)}.parallax-ambient-tag{font:700 .6rem var(--font-mono);color:var(--accent-emerald);letter-spacing:.12em;text-transform:uppercase;opacity:.8;will-change:transform;pointer-events:none;-webkit-user-select:none;user-select:none;margin-bottom:.45rem;display:inline-block}.parallax-watermark{font:700 clamp(4rem, 12vw, 10rem)/.85 var(--font-sans);letter-spacing:-.08em;color:#17241f0b;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1;text-transform:uppercase;position:absolute;top:12%;left:4%}.frame-svg-overlay{pointer-events:none;z-index:40;width:100vw;height:100dvh;position:fixed;inset:0}.perimeter-stroke{filter:drop-shadow(0 0 1px #17241f33)}.scroll-progress-stroke{filter:drop-shadow(0 0 5px var(--accent-cyan));transition:x2 50ms linear}.dock-fill-backdrop{-webkit-backdrop-filter:blur(20px)}.frame-theme-switcher{z-index:45;border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffd1;border-radius:999px;align-items:center;gap:7px;padding:5px 8px;display:flex;position:fixed;bottom:12px;right:30px}.theme-label,.audio-label{font:600 9px var(--font-mono);color:var(--ink-faint);letter-spacing:.07em}.theme-dot{cursor:pointer;border:1px solid #0000;border-radius:50%;width:10px;height:10px;padding:0;transition:transform .2s}.theme-dot:hover{transform:scale(1.3)}.theme-dot.active{border-color:var(--ink);transform:scale(1.15)}.theme-cyan{background:#1464ff}.theme-emerald{background:#21a179}.theme-amber{background:#f3bf5b}.theme-violet{background:#e8669a}.header-dock-container{z-index:50;pointer-events:none;justify-content:center;align-items:center;height:64px;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)}.header-dock-nav{pointer-events:auto;align-items:center;gap:.85rem;height:100%;padding:0 1.2rem;display:flex}.dock-brand-link{border-right:1px solid #ffffff29;align-items:center;margin-right:.2rem;padding-right:.65rem;text-decoration:none;transition:opacity .2s,transform .2s;display:flex}.dock-brand-link:hover{opacity:.85;transform:scale(1.05)}.dock-brand-logo{object-fit:contain;filter:drop-shadow(0 2px 8px #00000059);width:auto;height:28px}.dock-status-indicator{place-items:center;display:grid}.affan-logo{object-fit:cover;width:40px}.nav-items-wrapper{align-items:center;gap:.15rem;display:flex}.nav-button{cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.5rem .8rem;transition:background .2s,color .2s;position:relative}.nav-text{font:600 .77rem var(--font-sans);color:#ffffffad}.nav-button:hover .nav-text,.nav-button.active .nav-text{color:#fff}.nav-button.active{background:#ffffff24;box-shadow:0 4px 18px #0000002e}.portfolio-section{z-index:10;justify-content:center;width:100%;padding:7rem 2rem 6rem;display:flex;position:relative}.section-content{z-index:2;width:100%;max-width:1120px;position:relative}.hero-section{align-items:center;min-height:100dvh;padding:5.5rem 1.5rem 3rem;overflow:hidden}.hub{flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.hub-stage{width:min(100%,920px);height:clamp(520px,74dvh,660px);position:relative}.hub-hint{font:600 .62rem var(--font-mono);letter-spacing:.09em;color:var(--ink-faint)}.hub-blob{aspect-ratio:1;width:clamp(200px,36vw,380px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hub-blob:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side, color-mix(in srgb, var(--accent-cyan) 22%, transparent), transparent 70%);filter:blur(10px);position:absolute;inset:-22%}.hub-blob>*,.hub-blob svg,.hub-blob img,.hub-blob canvas{width:100%;height:100%;display:block}.glass{-webkit-backdrop-filter:blur(22px)saturate(1.8)brightness(1.05);backdrop-filter:blur(22px)saturate(1.8)brightness(1.05);background:linear-gradient(135deg,#ffffff9e 0%,#fff3 48%,#ffffff6b 100%);border:1px solid #ffffffb3;box-shadow:inset 0 1.5px #fffffff2,inset 0 -1.5px #ffffff59,inset 1.5px 0 #ffffff73,inset -1.5px 0 #fff3,0 0 0 1px #17241f0d,0 18px 50px #17241f29,0 2px 8px #17241f14}.glass:before{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(120% 70% at 12% 0,#fffc,#0000 48%),linear-gradient(115deg,#0000 55%,#ffffff59 78%,#0000 92%);position:absolute;inset:0}.hub-btn>*,.hub-panel>*{z-index:1;position:relative}.hub-btn{z-index:6;color:var(--ink);font:600 .8rem var(--font-sans);cursor:pointer;border-radius:999px;align-items:center;gap:.5rem;padding:.7rem 1.05rem;transition:scale .25s cubic-bezier(.3,1.4,.5,1),color .2s,background .2s;display:inline-flex;position:absolute}.hub-btn.side-top{top:0;left:50%;translate:-50%}.hub-btn.side-bottom{bottom:0;left:50%;translate:-50%}.hub-btn.side-left{top:50%;left:0;translate:0 -50%}.hub-btn.side-right{top:50%;right:0;translate:0 -50%}.hub-btn:hover,.hub-btn.is-active{scale:1.06}.hub-btn.is-active{color:#fff;background:linear-gradient(135deg, color-mix(in srgb, var(--accent-cyan) 80%, white), var(--accent-cyan));border-color:#ffffff8c}.hub-btn:focus-visible{outline:2px solid var(--accent-cyan);outline-offset:3px}.hub-panel{z-index:7;border-radius:28px;outline:none;width:min(360px,100vw - 2.5rem);animation:.34s cubic-bezier(.2,.9,.3,1.1) both hub-panel-in;position:absolute}.hub-panel.panel-top{transform-origin:50% 0;top:64px;left:50%;translate:-50%}.hub-panel.panel-bottom{transform-origin:50% 100%;bottom:64px;left:50%;translate:-50%}.hub-panel.panel-left{transform-origin:0;top:50%;left:140px;translate:0 -50%}.hub-panel.panel-right{transform-origin:100%;top:50%;right:140px;translate:0 -50%}@keyframes hub-panel-in{0%{opacity:0;filter:blur(10px);border-radius:52px 16px;scale:.9}to{opacity:1;filter:blur();border-radius:28px;scale:1}}.hub-panel-body{padding:1.25rem 1.35rem 1.35rem}.hub-eyebrow{font:600 .62rem var(--font-mono);letter-spacing:.09em;color:var(--accent-cyan);margin-bottom:.75rem;display:block}.hub-name{color:var(--ink);font:400 clamp(2.4rem, 5vw, 3.2rem)/.95 var(--font-display);letter-spacing:-.04em;margin-bottom:.7rem}.hub-text{color:var(--ink-soft);font:.88rem/1.55 var(--font-sans)}.hub-chips{flex-wrap:wrap;gap:.4rem;display:flex}.hub-chip{color:var(--ink);font:600 .7rem var(--font-sans);background:#ffffff8c;border:1px solid #ffffffbf;border-radius:999px;padding:.4rem .7rem;box-shadow:inset 0 1px #fffc}.hub-exp-list{flex-direction:column;gap:.85rem;list-style:none;display:flex}.hub-exp{grid-template-columns:10px 1fr;gap:.75rem;display:grid}.hub-exp-dot{background:var(--accent-cyan);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent-cyan) 18%, transparent);border-radius:50%;margin-top:.4rem}.hub-exp-title{color:var(--ink);font:600 .86rem var(--font-sans);display:block}.hub-exp-meta{color:var(--ink-faint);font:.66rem var(--font-mono);margin-top:.15rem;display:block}.hub-links{flex-direction:column;gap:.5rem;display:flex}.hub-link{color:var(--ink);background:#ffffff73;border:1px solid #ffffffb3;border-radius:16px;align-items:center;gap:.75rem;padding:.7rem .8rem;text-decoration:none;transition:background .2s,translate .2s;display:flex}.hub-link:hover{background:#fffc;translate:0 -2px}.hub-link>svg:first-child{color:var(--accent-cyan);flex:none}.hub-link-text{flex-direction:column;flex:1;min-width:0;display:flex}.hub-link-label{color:var(--ink-faint);font:.6rem var(--font-mono)}.hub-link-value{font:600 .82rem var(--font-sans);overflow-wrap:anywhere}.hub-link-arrow{color:var(--accent-coral);flex:none}@keyframes rise-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.hero-actions{flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:3.5rem;animation:.8s .24s both rise-in;display:flex}.btn-primary,.btn-secondary{font:600 .86rem var(--font-sans);border-radius:7px;align-items:center;gap:.5rem;padding:.85rem 1.2rem;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s;display:inline-flex}.btn-primary{color:#fff;background:var(--ink);box-shadow:0 8px 20px #17241f29}.btn-secondary{color:var(--ink);border:1px solid var(--line);background:#ffffffa8}.btn-primary:hover,.btn-secondary:hover{transform:translateY(-3px);box-shadow:0 12px 24px #17241f26}.btn-secondary:hover{background:#fff}.kinetic-ticker-bar{border-block:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff7a;width:100vw;margin-left:calc(50% - 50vw);padding:.8rem 0;overflow:hidden}.ticker-track{white-space:nowrap;font:600 .68rem var(--font-mono);letter-spacing:.09em;color:var(--ink-faint);align-items:center;gap:2rem;display:flex}.ticker-sep{color:var(--accent-coral)}.projects-section{padding-top:2rem}.proj-section-head{border-bottom:1.5px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:2rem;padding-bottom:2.5rem;display:flex}.proj-section-title-wrap{will-change:transform}.proj-section-title{font:700 clamp(1.8rem, 3.4vw, 2.6rem)/1.1 var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0 0 .5rem}.proj-section-desc{font:400 .92rem/1.6 var(--font-sans);color:var(--ink-soft);max-width:480px}.proj-filter-row{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.proj-filter-tab{color:var(--ink-faint);font:600 .7rem var(--font-mono);letter-spacing:.04em;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:.4rem;padding:.4rem .75rem;transition:color .18s,border-color .18s;display:inline-flex}.proj-filter-tab:hover{color:var(--ink)}.proj-filter-tab--active{border-bottom-color:var(--ink);color:var(--ink)!important}.proj-filter-tab--ee.proj-filter-tab--active{border-bottom-color:#d97706;color:#b45309!important}.proj-filter-tab--sw.proj-filter-tab--active{border-bottom-color:#1464ff;color:#1464ff!important}.proj-list{flex-direction:column;display:flex}.proj-row{border-bottom:1px solid var(--line);cursor:pointer;will-change:transform;grid-template-columns:4.5rem 3px 1fr;align-items:center;gap:0 1.5rem;padding:1.75rem 0;transition:background-color .22s,padding .22s;display:grid;position:relative}.proj-row:hover{background:#ffffff8c;border-bottom-color:#0000;border-radius:6px;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem}.proj-row__num{font:800 2.2rem/1 var(--font-display);color:var(--line-strong);letter-spacing:-.04em;text-align:right;padding-right:.25rem;transition:color .22s}.proj-row:hover .proj-row__num{color:var(--ink-faint)}.proj-row__bar{background:var(--line);border-radius:2px;align-self:stretch;width:3px;height:100%;min-height:3.5rem;transition:background .22s;display:block}.proj-row--ee .proj-row__bar{background:#f59e0b59}.proj-row--sw .proj-row__bar{background:#1464ff59}.proj-row--ee:hover .proj-row__bar{background:#d97706}.proj-row--sw:hover .proj-row__bar{background:#1464ff}.proj-row__body{flex-direction:column;gap:.35rem;min-width:0;display:flex}.proj-row__top{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.proj-row__title{font:700 clamp(1.35rem, 2.5vw, 1.9rem)/1.1 var(--font-display);color:var(--ink);letter-spacing:-.025em;margin:0;transition:letter-spacing .22s}.proj-row:hover .proj-row__title{letter-spacing:-.01em}.proj-row__arrow{color:var(--ink-faint);opacity:0;flex-shrink:0;font-size:1.3rem;transition:opacity .22s,transform .22s cubic-bezier(.16,1,.3,1),color .22s;transform:translate(-4px,4px)}.proj-row--ee:hover .proj-row__arrow{color:#d97706;opacity:1;transform:translate(0)}.proj-row--sw:hover .proj-row__arrow{color:#1464ff;opacity:1;transform:translate(0)}.proj-row__meta{font:500 .75rem/1.4 var(--font-mono);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.proj-row--ee .proj-row__track{color:#b45309}.proj-row--sw .proj-row__track{color:#1464ff}.proj-row__sep{color:var(--line-strong);margin:0 .35rem}.proj-row__sub{color:var(--ink-faint)}.inst-panel{border:1px solid var(--line-strong);font-family:var(--font-mono);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffe0;border-radius:16px;transition:border-color .2s,box-shadow .2s,transform .25s;overflow:hidden;box-shadow:0 20px 48px #17241f0f}.inst-panel:hover{border-color:#17241f59;box-shadow:0 24px 54px #17241f17}.inst-panel__header{border-bottom:1px solid var(--line);background:linear-gradient(#fffffffa 0%,#f4f6f099 100%);grid-template-columns:1fr auto;align-items:start;gap:2rem;padding:2.25rem 2.5rem 1.75rem;display:grid}.inst-panel__label{font:700 .62rem var(--font-mono);color:var(--accent-emerald);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.45rem;margin-bottom:.5rem;display:inline-flex}.inst-panel__label:before{content:"";background:var(--accent-emerald);border-radius:50%;width:6px;height:6px;display:inline-block;box-shadow:0 0 6px #21a17980}.inst-panel__title{font:700 clamp(1.35rem, 2.2vw, 1.75rem)/1.2 var(--font-display);color:var(--ink);letter-spacing:-.025em;margin:0 0 .5rem}.inst-panel__desc{font:400 .85rem/1.65 var(--font-sans);color:var(--ink-soft);max-width:600px;margin:0}.inst-panel__presets{flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.inst-preset-tab{color:var(--ink-soft);font:600 .7rem var(--font-mono);letter-spacing:.03em;cursor:pointer;text-align:right;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:6px;padding:.35rem .75rem;transition:all .18s}.inst-preset-tab:hover{color:var(--ink);background:#17241f0a}.inst-preset-tab--active{color:#fff;background:var(--ink);border-color:var(--ink);box-shadow:0 3px 10px #17241f26}.inst-panel__rule{border-bottom:1px solid var(--line);background:#e7eee759;align-items:center;gap:1rem;padding:.65rem 2.5rem;display:flex}.inst-rule-label{font:700 .6rem var(--font-mono);color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.inst-panel__inputs{border-bottom:1px solid var(--line);background:#f7f9f580;grid-template-columns:repeat(3,1fr);gap:0;display:grid}.inst-input{border-right:1px solid var(--line);flex-direction:column;gap:.75rem;padding:1.5rem 2rem;display:flex}.inst-input:last-child{border-right:0}.inst-input__row{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.inst-input__name{font:700 .62rem var(--font-mono);color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase}.inst-input__val{font:700 .88rem var(--font-mono);color:var(--accent-cyan);white-space:nowrap}.inst-slider{cursor:pointer;width:100%;accent-color:var(--accent-cyan);height:5px}.inst-slider__ticks{font:.58rem var(--font-mono);color:var(--ink-faint);letter-spacing:.03em;justify-content:space-between;display:flex}.inst-panel__outputs{border-bottom:1px solid var(--line);background:#fff;grid-template-columns:repeat(4,1fr);display:grid}.inst-readout{border-right:1px solid var(--line);flex-direction:column;gap:.35rem;padding:1.75rem 2rem;transition:background-color .2s;display:flex}.inst-readout:hover{background:#e7eee740}.inst-readout:last-child{border-right:0}.inst-readout__lbl{font:700 .58rem var(--font-mono);color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase}.inst-readout__val-row{align-items:baseline;gap:.35rem;margin-top:.15rem;display:flex}.inst-readout__num{font:700 2.1rem/1 var(--font-display);color:var(--ink);letter-spacing:-.03em}.inst-readout__unit{font:600 .72rem var(--font-mono);color:var(--accent-cyan);letter-spacing:.06em}.inst-readout__sub{font:.64rem/1.45 var(--font-sans);color:var(--ink-soft)}.inst-panel__sld{background:#f4f6f099;flex-direction:column;gap:.65rem;padding:1.25rem 2.5rem;display:flex}.inst-sld__label{font:700 .58rem var(--font-mono);color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase}.inst-sld__flow{font:600 .72rem var(--font-mono);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.inst-sld__node{color:var(--ink);border:1px solid var(--line-strong);background:#fff;border-radius:6px;padding:.28rem .6rem;transition:transform .18s,border-color .18s;box-shadow:0 2px 4px #17241f08}.inst-sld__node:hover{border-color:var(--accent-cyan);transform:translateY(-1px)}.inst-sld__arrow{color:var(--ink-faint);font-size:.75rem}.chronicle-wrapper{width:100%}.chronicle-heading-row{margin-bottom:3rem}.chronicle-heading{font:700 clamp(1.8rem, 3.4vw, 2.6rem)/1.1 var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0 0 .65rem}.chronicle-lead{font:400 .95rem/1.6 var(--font-sans);color:var(--ink-soft);max-width:560px;margin:0}.chronicle-body{grid-template-columns:200px 1fr;gap:0 2.5rem;display:grid;position:relative}.chronicle-axis{display:none}.chronicle-entries{flex-direction:column;grid-column:1/-1;display:flex}.chronicle-entry{border-bottom:1px solid var(--line);grid-template-columns:200px 2px 1fr;gap:0 2.5rem;padding:2.5rem 0;display:grid;position:relative}.chronicle-entry:first-child{padding-top:0}.chronicle-left{text-align:right;flex-direction:column;gap:.35rem;padding-top:.1rem;display:flex}.chronicle-year{font:700 .72rem var(--font-mono);color:var(--ink);letter-spacing:.04em}.chronicle-type{font:600 .62rem var(--font-mono);letter-spacing:.07em;text-transform:uppercase}.chronicle-type--ee{color:#b45309}.chronicle-type--sw{color:#1464ff}.chronicle-dot{background:var(--line);flex-shrink:0;width:2px;position:relative}.chronicle-dot:before{content:"";background:var(--bg-surface-solid);border:2px solid var(--ink-faint);border-radius:50%;width:8px;height:8px;position:absolute;top:.1rem;left:50%;transform:translate(-50%)}.chronicle-dot--ee:before{border-color:#d97706}.chronicle-dot--sw:before{border-color:#1464ff}.chronicle-right{flex-direction:column;gap:.55rem;padding-bottom:.25rem;display:flex}.chronicle-title{font:700 1.55rem/1.2 var(--font-display);color:var(--ink);letter-spacing:-.02em;margin:0}.chronicle-org{font:500 .78rem var(--font-mono);color:var(--ink-soft);letter-spacing:.02em;margin:0}.chronicle-text{font:400 .92rem/1.7 var(--font-sans);color:var(--ink-soft);max-width:800px;margin:.35rem 0 0}.chronicle-detail{font:600 .68rem var(--font-mono);color:var(--ink-faint);letter-spacing:.04em;margin:.25rem 0 0}.about-split{grid-template-columns:1.5fr 1fr;align-items:start;gap:5rem;padding:1.5rem 0;display:grid}.about-split__left{flex-direction:column;gap:1.25rem;display:flex}.about-pullquote{font:400 clamp(1.35rem, 2.2vw, 1.8rem)/1.45 var(--font-display);color:var(--ink);letter-spacing:-.02em;border-bottom:1.5px solid var(--ink);margin:0;padding-bottom:1.5rem}.about-pullquote em{color:var(--ink-soft);font-style:italic}.about-bio{font:400 .95rem/1.75 var(--font-sans);color:var(--ink-soft);max-width:640px;margin:0}.about-split__right{flex-direction:column;gap:2.25rem;padding-top:.5rem;display:flex}.about-stat{border-bottom:1px solid var(--line);flex-direction:column;gap:.35rem;padding-bottom:2rem;display:flex}.about-stat:last-child{border-bottom:0;padding-bottom:0}.about-stat__num{font:800 clamp(1.75rem, 2.8vw, 2.4rem)/1 var(--font-display);color:var(--ink);letter-spacing:-.03em}.about-stat__lbl{font:500 .72rem var(--font-mono);color:var(--ink-faint);letter-spacing:.04em}.skills-section{width:100%}.skills-rule{border-bottom:1.5px solid var(--ink);align-items:baseline;gap:2rem;margin-bottom:2.5rem;padding-bottom:1.75rem;display:flex}.skills-title{font:700 clamp(1.8rem, 3.4vw, 2.6rem)/1.1 var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0}.skills-taxonomy{grid-template-columns:1fr 2px 1fr 2px 1fr;gap:0 2.5rem;display:grid}.skills-divider{background:var(--line);align-self:stretch;width:2px}.skills-col{flex-direction:column;gap:.25rem;display:flex}.skills-col__head{font:700 .68rem var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid var(--line);margin-bottom:.75rem;padding-bottom:.85rem;display:block}.skills-col__head--ee{color:#b45309}.skills-col__head--sw{color:#1464ff}.skills-col__head--em{color:#059669}.skills-col__list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.skills-col__list li{font:400 .9rem/1.35 var(--font-mono);color:var(--ink-soft);letter-spacing:.01em;transition:color .15s}.skills-col__list li:hover{color:var(--ink)}.contact-block{max-width:760px;padding:2rem 0 4rem}.contact-block__title{font:400 clamp(1.8rem, 3.4vw, 2.6rem)/1.2 var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0 0 1rem}.contact-block__sub{font:400 .95rem/1.65 var(--font-sans);color:var(--ink-soft);margin:0 0 2.5rem}.contact-block__links{flex-direction:column;gap:.35rem;margin-bottom:1.5rem;display:flex}.contact-link{font:500 1rem/1.4 var(--font-sans);color:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:.65rem;padding:.6rem 0;text-decoration:none;transition:color .18s,border-color .18s;display:inline-flex}.contact-link:hover{color:var(--accent-cyan);border-bottom-color:var(--accent-cyan)}.contact-link svg{color:var(--ink-faint);flex-shrink:0;transition:color .18s}.contact-link:hover svg{color:var(--accent-cyan)}.contact-block__location{font:600 .72rem var(--font-mono);color:var(--ink-faint);letter-spacing:.04em;margin:0}.site-footer{border-top:1px solid var(--line);margin-top:1rem;padding:1.25rem 0}.site-footer__inner{grid-template-columns:auto 1fr auto;align-items:center;gap:2rem;display:grid}.site-footer__brand{flex-shrink:0;align-items:center;gap:.6rem;display:flex}.site-footer__logo{object-fit:contain;opacity:.8;width:auto;height:26px}.site-footer__name{font:700 .82rem var(--font-mono);color:var(--ink);letter-spacing:.05em;text-transform:uppercase}.site-footer__nav{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.5rem;display:flex}.site-footer__nav a{font:500 .75rem var(--font-sans);color:var(--ink-faint);text-decoration:none;transition:color .15s}.site-footer__nav a:hover{color:var(--ink)}.site-footer__right{flex-shrink:0;align-items:center;gap:1.25rem;display:flex}.site-footer__copy{font:500 .72rem var(--font-mono);color:var(--ink-faint);letter-spacing:.02em}.site-footer__top{border:1px solid var(--line);color:var(--ink-soft);font:600 .7rem var(--font-mono);cursor:pointer;letter-spacing:.04em;background:0 0;border-radius:4px;padding:.35rem .75rem;transition:all .18s}.site-footer__top:hover{background:var(--ink);color:#fff;border-color:var(--ink)}.text-amber{color:#d97706}.text-cyan{color:var(--accent-cyan)}.text-emerald{color:var(--accent-emerald)}.apple-modal-backdrop{z-index:10000;-webkit-backdrop-filter:blur(32px)saturate(1.8);background:#04060ac7;justify-content:center;align-items:center;padding:18px;animation:.25s both apple-fade-in;display:flex;position:fixed;inset:0}.apple-modal-container{color:#ededf0;background:#080b12;border:1px solid #ffffff1f;border-radius:24px;flex-direction:column;width:min(1360px,100%);height:100%;max-height:calc(100dvh - 36px);animation:.32s cubic-bezier(.16,1,.3,1) both apple-scale-up;display:flex;position:relative;overflow:hidden;box-shadow:0 32px 100px #000000d9,0 0 60px #1464ff1a}.apple-modal-nav-bar{z-index:20;-webkit-backdrop-filter:blur(20px);background:#0a0e16e0;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.75rem;display:flex;position:sticky;top:0}.apple-modal-nav-left{align-items:center;gap:.75rem;display:flex}.apple-track-badge{font:600 .65rem var(--font-mono);letter-spacing:.04em;border-radius:999px;align-items:center;gap:.4rem;padding:.28rem .65rem;display:inline-flex}.apple-modal-id{color:#fff6;font:.7rem var(--font-mono)}.apple-modal-tabs{background:#ffffff0d;border:1px solid #ffffff14;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem;display:flex}.apple-tab-btn{color:#fff9;font:500 .76rem var(--font-sans);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.35rem .95rem;transition:all .2s}.apple-tab-btn:hover{color:#fff}.apple-tab-btn.active{color:#fff;background:#ffffff26;font-weight:600;box-shadow:0 2px 8px #0000004d}.apple-modal-nav-right{align-items:center;display:flex}.apple-close-circle-btn{color:#ffffffb3;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex}.apple-close-circle-btn:hover{color:#fff;background:#ffffff2e;transform:scale(1.08)}.apple-modal-scrollable{scroll-behavior:smooth;flex-grow:1;padding:2.5rem 3rem 4rem;overflow:hidden auto}.apple-modal-hero{flex-direction:column;align-items:flex-start;margin-bottom:3.5rem;display:flex;position:relative}.apple-hero-glow{pointer-events:none;z-index:0;background:radial-gradient(circle,#38bdf81f 0%,#f59e0b0f 40%,#0000 70%);width:500px;height:300px;position:absolute;top:-100px;left:20%}.apple-hero-meta{z-index:1;font:600 .72rem var(--font-mono);color:var(--accent-cyan);letter-spacing:.08em;align-items:center;gap:.5rem;margin-bottom:.85rem;display:flex;position:relative}.apple-dot-sep{color:#ffffff40}.apple-hero-title{z-index:1;letter-spacing:-.03em;color:#fff;max-width:980px;margin-bottom:.85rem;font-size:clamp(2.2rem,4.5vw,3.6rem);font-weight:700;line-height:1.1;position:relative}.apple-hero-subtitle{z-index:1;color:#ffffffb3;max-width:820px;margin-bottom:2.5rem;font-size:1.15rem;line-height:1.6;position:relative}.apple-bento-metrics-row{z-index:1;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;width:100%;display:grid;position:relative}.apple-bento-metric-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff08;border:1px solid #ffffff14;border-radius:16px;flex-direction:column;gap:.3rem;padding:1.4rem 1.6rem;transition:all .25s;display:flex}.apple-bento-metric-card:hover{background:#ffffff0f;border-color:#ffffff2e;transform:translateY(-2px)}.bento-metric-val{font:600 1.85rem/1 var(--font-mono);color:#fff}.bento-metric-lbl{font:500 .74rem var(--font-mono);color:#ffffff80;text-transform:uppercase;letter-spacing:.06em}.apple-bento-grid{grid-template-columns:repeat(12,1fr);gap:1.5rem;display:grid}.apple-bento-cell{background:#ffffff06;border:1px solid #ffffff14;border-radius:20px;flex-direction:column;padding:2.2rem;display:flex;position:relative;overflow:hidden}.cell-large{grid-column:span 8}.cell-medium{grid-column:span 4}.cell-full{grid-column:span 12}.cell-header{font:600 .72rem var(--font-mono);color:#ffffff80;letter-spacing:.08em;align-items:center;gap:.5rem;margin-bottom:1.4rem;display:flex}.cell-title{color:#fff;letter-spacing:-.02em;margin-bottom:.85rem;font-size:1.5rem;font-weight:600}.cell-text{color:#ffffffb8;margin-bottom:1.75rem;font-size:1rem;line-height:1.7}.cell-highlight-box{color:#a7f3d0;background:#21a17914;border:1px solid #21a17940;border-radius:12px;align-items:flex-start;gap:.75rem;padding:1.1rem 1.3rem;font-size:.88rem;line-height:1.5;display:flex}.apple-mini-flow{flex-direction:column;gap:.6rem;margin-top:.5rem;display:flex}.flow-step{background:#ffffff08;border:1px solid #ffffff0f;border-radius:10px;align-items:center;gap:.75rem;padding:.9rem 1.1rem;display:flex}.flow-step.highlight-step{background:#1464ff1a;border-color:#1464ff4d}.step-num{font:600 .72rem var(--font-mono);color:var(--accent-cyan)}.step-name{font:600 .82rem var(--font-mono);color:#fff}.flow-connector{text-align:center;color:#ffffff4d;font-size:1rem;line-height:.6}.apple-topology-board{background:#04060a;border:1px solid #ffffff12;border-radius:16px;margin-bottom:2rem;padding:2rem}.topo-stage{justify-content:space-between;align-items:center;gap:1rem;display:flex}.topo-node{background:#ffffff08;border:1px solid #ffffff17;border-radius:12px;flex-direction:column;flex:1;gap:.4rem;padding:1.4rem;display:flex}.topo-node.node-core{background:#1464ff14;border-color:#1464ff59;box-shadow:0 0 30px #1464ff1a}.topo-node-badge{font:600 .6rem var(--font-mono);color:#ffffff73;letter-spacing:.06em}.topo-node-badge.badge-active{color:var(--accent-cyan)}.topo-node-name{font:600 .98rem var(--font-mono);color:#fff}.topo-node-desc{color:#ffffff8c;font-size:.74rem;line-height:1.5}.topo-cable{background:#ffffff1f;justify-content:center;align-items:center;width:60px;height:2px;display:flex;position:relative}.cable-pulse{background:var(--accent-cyan);width:8px;height:8px;box-shadow:0 0 10px var(--accent-cyan);border-radius:50%;animation:2s ease-in-out infinite cable-travel;position:absolute}@keyframes cable-travel{0%{opacity:0;transform:translate(-25px)}50%{opacity:1}to{opacity:0;transform:translate(25px)}}.cell-deep-dive h4{color:#fff;margin-bottom:.6rem;font-size:1.1rem;font-weight:600}.cell-text-long{color:#ffffffb8;font-size:.95rem;line-height:1.75}.apple-stack-pills-wrap{flex-wrap:wrap;gap:.65rem;margin-bottom:2rem;display:flex}.apple-stack-pill{background:#ffffff0a;border:1px solid #ffffff14;border-radius:10px;align-items:center;gap:.5rem;padding:.55rem 1rem;transition:all .2s;display:inline-flex}.apple-stack-pill:hover{background:#ffffff14;border-color:#fff3;transform:translateY(-1px)}.pill-index{font:600 .62rem var(--font-mono);color:var(--accent-cyan)}.pill-title{font:500 .84rem var(--font-mono);color:#fff}.apple-standards-callout{background:#ffffff05;border:1px solid #ffffff12;border-radius:12px;align-items:flex-start;gap:.85rem;padding:1.25rem;display:flex}.apple-standards-callout strong{color:#fff;margin-bottom:.3rem;font-size:.88rem;display:block}.apple-standards-callout p{color:#fff9;margin:0;font-size:.82rem;line-height:1.6}.apple-spec-table{flex-direction:column;gap:.75rem;display:flex}.spec-table-row{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;padding-bottom:.75rem;display:flex}.spec-table-row:last-child{border-bottom:0;padding-bottom:0}.spec-table-k{font:500 .75rem var(--font-mono);color:#ffffff73}.spec-table-v{font:600 .86rem var(--font-mono);color:#fff;text-align:right}.apple-modal-footer{z-index:20;-webkit-backdrop-filter:blur(20px);background:#0a0e16eb;border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;bottom:0}.apple-footer-left{font:500 .68rem var(--font-mono);color:#fff6;align-items:center;gap:.6rem;display:flex}.apple-footer-close-btn{color:#080b12;font:600 .82rem var(--font-sans);cursor:pointer;background:#fff;border:0;border-radius:999px;padding:.55rem 1.4rem;transition:all .2s}.apple-footer-close-btn:hover{background:#e2e8f0;transform:scale(1.04)}@keyframes apple-fade-in{0%{opacity:0}to{opacity:1}}@keyframes apple-scale-up{0%{opacity:0;transform:scale(.95)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.animate-fade-in{animation:.25s both apple-fade-in}@media (width<=960px){.apple-modal-container{border:0;border-radius:0;width:100vw;height:100dvh;max-height:100dvh}.apple-modal-backdrop{padding:0}.apple-modal-scrollable{padding:1.5rem 1.25rem 3rem}.apple-bento-grid{grid-template-columns:1fr}.cell-large,.cell-medium,.cell-full{grid-column:span 1}.topo-stage{flex-direction:column}.topo-cable{width:2px;height:40px}.cable-pulse{animation:2s ease-in-out infinite cable-travel-vertical}@keyframes cable-travel-vertical{0%{opacity:0;transform:translateY(-18px)}50%{opacity:1}}}@media (width<=760px){.header-dock-container{width:100%;height:58px}.header-dock-nav{gap:.35rem;padding:0 .75rem}.nav-items-wrapper{overflow-x:auto}.nav-button{padding:.45rem .5rem}.nav-text{font-size:.68rem}.portfolio-section{padding:6rem 1.1rem 4rem}.hub-panel.panel-top,.hub-panel.panel-bottom,.hub-panel.panel-left,.hub-panel.panel-right{transform-origin:50%;inset:50% auto auto 50%;translate:-50% -50%}.hub-btn{padding:.6rem .85rem;font-size:.72rem}.proj-section-head{flex-direction:column;align-items:flex-start;gap:1.25rem}.proj-row{grid-template-columns:3rem 2px 1fr;gap:0 1rem;padding:1.25rem 0}.proj-row__num{font-size:1.4rem}.proj-row__title{font-size:1.15rem}.proj-row__meta{white-space:normal}.inst-panel__header{grid-template-columns:1fr;gap:1.25rem;padding:1.5rem 1.25rem}.inst-panel__presets{flex-flow:wrap;align-items:flex-start}.inst-preset-tab{text-align:left;border-bottom:2px solid #0000;border-right:0}.inst-preset-tab--active{border-bottom-color:#4ade80}.inst-panel__inputs{grid-template-columns:1fr}.inst-input{border-bottom:1px solid #4ade8014;border-right:0;padding:1.25rem}.inst-panel__outputs{grid-template-columns:1fr 1fr}.inst-readout{padding:1.25rem}.inst-sld__flow{flex-direction:column;gap:.4rem}.inst-panel__rule,.inst-panel__sld{padding:.65rem 1.25rem}.chronicle-entry{grid-template-columns:1fr;gap:.5rem 0}.chronicle-left{text-align:left;flex-direction:row;align-items:center;gap:.75rem}.chronicle-dot{display:none}.about-split{grid-template-columns:1fr;gap:2.5rem}.about-split__right{flex-flow:wrap;gap:1.25rem}.about-stat{flex:1 0 calc(50% - .65rem);padding-bottom:1.25rem}.skills-taxonomy{grid-template-columns:1fr;gap:2rem 0}.skills-divider{display:none}.site-footer__inner{grid-template-columns:1fr;gap:1rem}.site-footer__nav{justify-content:flex-start;gap:1rem}.frame-theme-switcher{right:12px}}.apple-block-backdrop{z-index:100000;-webkit-backdrop-filter:blur(40px)saturate(1.8);backdrop-filter:blur(40px)saturate(1.8);background:#f4f6f0d1;justify-content:center;align-items:center;padding:24px;animation:.32s cubic-bezier(.16,1,.3,1) both apple-block-in;display:flex;position:fixed;inset:0}@keyframes apple-block-in{0%{opacity:0}to{opacity:1}}.apple-block-card{width:min(380px,100%);color:var(--ink);text-align:center;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#ffffffdb;border:1px solid #17241f1f;border-radius:32px;flex-direction:column;align-items:center;padding:2.75rem 2.25rem 2.25rem;animation:.35s cubic-bezier(.16,1,.3,1) both apple-card-scale;display:flex;position:relative;box-shadow:0 30px 70px #17241f1a,0 2px 8px #17241f0a}@keyframes apple-card-scale{0%{opacity:0;transform:scale(.94)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}.apple-block-blob-wrap{justify-content:center;align-items:center;width:130px;height:130px;margin-bottom:1.5rem;animation:4s ease-in-out infinite apple-blob-breathe;display:flex;position:relative}@keyframes apple-blob-breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.apple-block-blob-halo{filter:blur(14px);pointer-events:none;z-index:0;background:radial-gradient(circle,#1464ff2e 0%,#21a1791f 40%,#0000 70%);border-radius:50%;position:absolute;inset:-15%}.apple-block-blob{z-index:1;aspect-ratio:1;width:100%;height:100%;position:relative}.apple-block-blob>*,.apple-block-blob svg,.apple-block-blob img,.apple-block-blob canvas{width:100%;height:100%;display:block}.apple-block-title{font:700 1.45rem/1.2 var(--font-display);color:var(--ink);letter-spacing:-.025em;margin:0 0 .55rem}.apple-block-desc{font:400 .88rem/1.55 var(--font-sans);color:var(--ink-soft);max-width:280px;margin:0 0 1.75rem}.apple-block-btn{background:var(--ink);color:#fff;font:600 .82rem var(--font-sans);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.75rem 1.6rem;transition:transform .18s cubic-bezier(.16,1,.3,1),background-color .18s;display:inline-flex;box-shadow:0 4px 14px #17241f2e}.apple-block-btn:hover{background:#000;transform:scale(1.03)}.apple-block-btn:active{transform:scale(.97)}.apple-block-icon{flex-shrink:0}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
