@font-face{font-family:Mona Sans;src:url(/fonts/mona-sans-var.woff2) format("woff2-variations");font-weight:200 900;font-stretch:75% 125%;font-style:normal;font-display:swap}@font-face{font-family:Martian Mono;src:url(/fonts/martian-mono-var.woff2) format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:Mona Sans Fallback;src:local("Arial");size-adjust:104%;ascent-override:105%;descent-override:31%;line-gap-override:0%}@font-face{font-family:Mona Sans Display Fallback;src:local("Arial");size-adjust:110%;ascent-override:99%;descent-override:29%;line-gap-override:0%}:root{--bg: #0a0a0a;--surface: #0a0a0a;--text: #f2f2f2;--text-dim: #9a9a9a;--accent: #ff6a13;--accent-2: #5c8dff;--font-display: "Mona Sans", "Mona Sans Display Fallback", sans-serif;--font-body: "Mona Sans", "Mona Sans Fallback", sans-serif;--font-mono: "Martian Mono", ui-monospace, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-base: 1rem;--fs-md: 1.125rem;--fs-lg: 1.3rem;--space: clamp(4rem, 10vh, 8rem);--pad-x: clamp(1.25rem, 5vw, 4rem);--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--duration-fast: .16s;--duration-base: .25s;--duration-slow: .4s}*,*:before,*:after{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:5.5rem;scroll-padding-bottom:var(--cookie-banner-h, 0px);overflow-x:clip}body{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.55' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.14 0 0 0 -0.068'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.65;letter-spacing:.005em;-webkit-font-smoothing:antialiased;overflow-x:clip}h1,h2,h3{font-family:var(--font-display);font-stretch:118%;font-weight:700;line-height:1.05;letter-spacing:-.03em}h1{font-size:clamp(2.75rem,9vw,7rem);font-weight:800;letter-spacing:-.035em}h2{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:2rem}a{color:var(--text);text-decoration:none}.skip-link{position:absolute;top:1rem;left:1rem;z-index:30;padding:.6rem 1.2rem;background:var(--accent);color:var(--bg);font-family:var(--font-display);font-weight:600;border-radius:.4rem;transform:translateY(-4rem);opacity:0;transition:none}.skip-link:focus-visible{transform:none;opacity:1;outline-color:var(--bg)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.accent{color:var(--accent)}::selection{background:var(--accent-2);color:var(--bg)}:root{--grain-fine: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0' intercept='0.55'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--pill-hi: color-mix(in srgb, var(--accent) 88%, #fff);--pill-lo: color-mix(in srgb, var(--accent) 82%, #000);--pill-bg: var(--grain-fine), linear-gradient(165deg, var(--pill-hi), var(--accent) 45%, var(--pill-lo));--pill-blend: overlay, normal;--pill-shadow: inset 0 1px 1px rgb(255 255 255 / .3), inset 0 -1px 1px rgb(0 0 0 / .2), inset 0 0 0 5px color-mix(in srgb, var(--accent) 92%, #fff), inset 0 2px 2px 5px rgb(0 0 0 / .14), 0 8px 16px -8px rgb(0 0 0 / .7);--knob-bg: var(--grain-fine), radial-gradient(circle at 40% 30%, #2b2b2b, #0d0d0d 70%);--knob-blend: soft-light, normal;--knob-shadow: inset 0 1px 0 rgb(255 255 255 / .12), 0 0 0 1px rgb(0 0 0 / .25), 0 3px 4px rgb(0 0 0 / .45);--knob-shadow-pressed: inset 0 1px 0 rgb(255 255 255 / .08), 0 0 0 1px rgb(0 0 0 / .25), 0 1px 1px rgb(0 0 0 / .45)}.btn{display:inline-flex;align-items:center;gap:.75em;padding:.85em 1.6em;border:0;border-radius:999px;background:var(--pill-bg);background-blend-mode:var(--pill-blend);color:var(--bg);font-family:var(--font-display);font-size:var(--fs-base);font-weight:600;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;box-shadow:var(--pill-shadow);transition:filter var(--duration-base) var(--ease-out)}.btn:hover{filter:brightness(1.08)}.btn:active{transform:scale(.97)}.btn__knob{flex:none;display:grid;place-items:center;width:2.2em;height:2.2em;margin-block:-.55em;margin-inline-start:-.95em;border-radius:50%;background:var(--knob-bg);background-blend-mode:var(--knob-blend);color:#e6e6e6;font-weight:400;line-height:1;box-shadow:var(--knob-shadow);transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.btn__knob--end{margin-inline:0 -.95em}.btn:active .btn__knob{transform:translateY(1px);box-shadow:var(--knob-shadow-pressed)}section{padding:var(--space) var(--pad-x);max-width:1200px;margin:0 auto}body{padding-bottom:var(--cookie-banner-h, 0px)}@media(pointer:coarse){.cookie-banner p a{position:relative}.cookie-banner p a:after{content:"";position:absolute;top:-9px;right:0;bottom:-9px;left:0}}.cookie-banner{position:fixed;inset:auto 0 0 0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:1rem var(--pad-x);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid #1c1c1c}.cookie-banner p{margin:0;font-size:var(--fs-sm);color:var(--text-dim);max-width:60ch}.cookie-banner p a{display:inline-block;color:var(--text);text-decoration:underline;padding:.3rem 0;margin:-.3rem 0}.cookie-banner__actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.cookie-banner__decline{padding:.55em 1.4em;border:0;border-radius:999px;background:var(--knob-bg);background-blend-mode:var(--knob-blend);box-shadow:var(--knob-shadow);color:var(--text);font-family:var(--font-display);font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:filter var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.cookie-banner__decline:hover{filter:brightness(1.3)}.cookie-banner__decline:active{transform:translateY(1px);box-shadow:var(--knob-shadow-pressed)}.cookie-banner__accept{padding:.55em 1.4em;font-size:var(--fs-sm);cursor:pointer}@media(max-width:700px){.cookie-banner{gap:.25rem;padding:.6rem var(--pad-x) .4rem}.cookie-banner p{font-size:var(--fs-xs);line-height:1.35}.cookie-banner__actions{width:100%;justify-content:flex-end;gap:.5rem}.cookie-banner__decline,.cookie-banner__accept{min-height:44px;padding-inline:1rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.info-card{position:fixed;z-index:50;max-width:300px;width:max-content;padding:1.1rem 1.3rem;background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,#2a2a2a);border-radius:.9rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 14px 44px #0000008c;opacity:0;transform:translateY(8px) scale(.98);transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.info-card.is-open{opacity:1;transform:none}.info-card__title{font-family:var(--font-display);font-size:var(--fs-md);margin-bottom:.4rem;padding-right:1rem}.info-card__text{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.5}.info-card__close{position:absolute;top:.45rem;right:.6rem;background:none;border:none;color:var(--text-dim);font-size:1.3rem;line-height:1;cursor:pointer;transition:color var(--duration-base) var(--ease-out)}.info-card__close:hover{color:var(--accent)}@media(max-width:700px){.info-card{max-width:min(300px,calc(100vw - 3rem))}}.skill-card{grid-column:1 / -1;overflow:hidden;margin-top:.35rem}.skill-card__inner{position:relative;padding:clamp(1.5rem,3vw,2.5rem);padding-right:clamp(3rem,5vw,4rem);border-radius:1rem;background:linear-gradient(180deg,color-mix(in srgb,var(--brand, var(--accent)) 12%,transparent),transparent 55%),var(--surface);border:1px solid color-mix(in srgb,var(--brand, var(--accent)) 22%,#1e1e1e);box-shadow:0 18px 50px #00000073}.skill-card__title{font-family:var(--font-display);font-size:clamp(1.75rem,3.4vw,2.75rem);font-weight:700;letter-spacing:-.035em;line-height:1.05;text-wrap:balance}.skill-card__badge{display:inline-block;margin-top:.85rem;padding:.25rem .7rem;border:1px solid color-mix(in srgb,var(--accent-2) 45%,transparent);border-radius:999px;color:var(--accent-2);font-family:var(--font-display);font-size:var(--fs-xs);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.skill-card__badge[hidden]{display:none}.skill-card__text{max-width:46ch;margin-top:1.1rem;color:var(--text-dim);font-size:var(--fs-md);line-height:1.6}.skill-card__label{margin-top:1.6rem;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.skill-card__label+.skill-card__bullets{margin-top:.6rem}.skill-card__bullets{list-style:none;margin-top:1.6rem;padding:0;columns:2;column-gap:2.5rem;color:var(--text);font-size:var(--fs-base);line-height:1.55}.skill-card__bullets>li{position:relative;break-inside:avoid;padding-left:1.1rem;margin-bottom:.55rem}.skill-card__bullets>li:before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;border-radius:50%;background:var(--brand, var(--accent))}.skill-card__bullets ul{list-style:none;margin:.4rem 0 .7rem;padding:0;color:var(--text-dim);font-size:var(--fs-sm)}.skill-card__bullets ul li{position:relative;padding-left:1rem;margin-bottom:.25rem}.skill-card__bullets ul li:before{content:"";position:absolute;left:0;top:.62em;width:6px;height:1px;background:currentColor;opacity:.6}.skill-card__close{position:absolute;top:1rem;right:1rem;display:grid;place-items:center;width:2.25rem;height:2.25rem;background:none;border:1px solid #262626;border-radius:50%;color:var(--text-dim);cursor:pointer;transition:color var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.skill-card__close:hover,.skill-card__close:focus-visible{color:var(--text);border-color:var(--brand, var(--accent));transform:rotate(90deg)}@media(max-width:560px){.skill-card__bullets{columns:1}}.nav{position:fixed;inset:0 0 auto 0;display:flex;justify-content:space-between;align-items:center;padding:1rem var(--pad-x);background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}.nav-logo{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:1.25rem;color:var(--accent);padding:0 .25rem;margin:0 -.25rem}.nav nav{display:flex;gap:1.5rem}.nav nav a{color:var(--text-dim);font-size:var(--fs-base);transition:color .2s}.nav nav a:hover,.nav nav a.active{color:var(--accent)}@media(pointer:coarse){.nav nav a{position:relative}.nav nav a:after{content:"";position:absolute;inset:-.7rem min(-.4rem,calc(50% - 22px))}}.nav-burger,.mobile-menu{display:none}@media(max-width:700px){.nav{justify-content:flex-start;gap:.25rem}.nav-burger{position:relative;display:grid;place-items:center;width:40px;height:40px;margin-right:.5rem;padding:0;color:var(--text);background:var(--knob-bg);background-blend-mode:var(--knob-blend);box-shadow:var(--knob-shadow);border:0;border-radius:50%;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.nav-burger:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px}.nav-burger:active{transform:translateY(1px);box-shadow:var(--knob-shadow-pressed)}.nav>nav{display:none}.mobile-menu[open]{display:flex;flex-direction:column;gap:2rem;inset:0 auto 0 0;width:min(20rem,85vw);max-width:none;height:100dvh;max-height:none;margin:0;padding:4.5rem var(--pad-x) 2rem;overflow-y:auto;color:var(--text);background:var(--bg);border:0;border-right:1px solid #222;transition:transform var(--duration-base) var(--ease-out),overlay var(--duration-base) allow-discrete,display var(--duration-base) allow-discrete}@starting-style{.mobile-menu[open]{transform:translate(-100%)}}.mobile-menu::backdrop{background:#0009}.mobile-menu__close{position:absolute;top:.6rem;right:.6rem;display:grid;place-items:center;width:44px;height:44px;color:var(--text);background:none;border:0;cursor:pointer}.mobile-menu__label{margin-bottom:.25rem;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.mobile-menu ul{list-style:none;padding:0}.mobile-menu li{padding:.75rem 0}.mobile-menu li a{padding:.75rem 0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:500;line-height:1.2;color:var(--text);text-decoration:none;background:linear-gradient(var(--accent),var(--accent)) no-repeat left bottom / 0 2px;background-origin:content-box;background-clip:content-box;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.mobile-menu li a:active,.mobile-menu li a:focus-visible,.mobile-menu a[aria-current]{color:var(--accent);background-size:100% 2px}@media(hover:hover){.mobile-menu li a:hover{color:var(--accent);background-size:100% 2px}}.mobile-menu a:focus-visible,.nav-burger:focus-visible,.mobile-menu__close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}html:has(.mobile-menu[open]){overflow:hidden}}@media(max-width:700px)and (prefers-reduced-motion:reduce){.mobile-menu[open],.mobile-menu li a{transition:none}}.scroll-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transform:scaleX(0);transform-origin:left}.hero{min-height:100svh;max-width:none;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:1.5rem;position:relative;overflow:hidden}.hero h1 .hero-line{display:block;overflow:hidden;padding-bottom:.16em;margin-bottom:-.16em;padding-right:.08em;margin-right:-.08em}.hero h1 .hero-line-inner{display:block}#hero-canvas{position:absolute;top:0;right:0;width:50%;height:100%;z-index:-1;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 14%,#000 38%);mask-image:linear-gradient(90deg,transparent 0%,transparent 14%,#000 38%)}#hero-canvas canvas{width:100%;height:100%;display:block}.hero-objects button,.hero-objects a{position:absolute;top:0;left:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}.hero-objects button:focus,.hero-objects a:focus{top:5.5rem;left:var(--pad-x);width:auto;height:auto;max-width:calc(100vw - 2 * var(--pad-x));overflow:visible;clip:auto;white-space:normal;z-index:15;padding:.5em .9em;background:var(--bg);color:var(--text);border:1px solid var(--accent);border-radius:8px;font-family:var(--font-body);font-size:var(--fs-sm);cursor:pointer}.hero-objects button:disabled{cursor:default}@media(max-width:700px),(max-width:1024px)and (orientation:portrait){#hero-canvas{order:1;position:relative;top:auto;right:auto;width:100%;height:46svh;margin-top:2.5rem;-webkit-mask-image:none;mask-image:none}.hero{padding-bottom:2.5rem}}.hero-hint{position:absolute;bottom:calc(2.2rem + var(--cookie-banner-h, 0px));right:25%;transform:translate(50%);color:var(--text-dim);font-family:var(--font-display);font-size:var(--fs-sm);letter-spacing:.04em;opacity:1;transition:opacity .4s}.hero-hint.is-hidden{opacity:0;pointer-events:none}@media(max-width:700px),(max-width:1024px)and (orientation:portrait){.hero-hint{order:2;position:static;display:block;width:100%;margin-top:.9rem;text-align:center;transform:none}}@media(min-width:701px)and (max-width:1024px)and (orientation:portrait){.hero h1{font-size:clamp(2.75rem,6.4vw,4.5rem)}.hero-subtitle,.hero-tagline{max-width:40rem}.hero{padding-block:5.5rem 2rem}#hero-canvas{flex:1 1 0;height:auto;min-height:14rem;margin-top:1rem;overflow:hidden}}@media(min-width:701px)and (max-width:1366px)and (orientation:landscape){.hero h1{font-size:clamp(2.5rem,6.2vw,4.5rem)}.hero-subtitle,.hero-tagline{max-width:26rem}}.hero-kicker{color:var(--accent);font-family:var(--font-display);font-size:var(--fs-md)}.hero-subtitle{color:var(--text);font-family:var(--font-display);font-weight:500;font-size:var(--fs-lg);max-width:34rem;margin-top:.5rem}.hero-tagline{color:var(--text-dim);max-width:34rem;font-size:var(--fs-md);margin-top:.35rem}.marquee{position:relative;overflow:hidden;background:#121212;border-top:1px solid #1f1f1f;border-bottom:1px solid #1f1f1f;box-shadow:0 1rem 2rem -1rem #0009;padding:1.1rem 0}.marquee-track{display:flex;width:max-content;animation:marquee 28s linear infinite}.marquee-track span{display:flex;align-items:center;white-space:nowrap;font-family:var(--font-display);font-size:clamp(1.4rem,3.5vw,2.4rem);font-weight:700;text-transform:uppercase;letter-spacing:.04em;--neon: var(--accent);color:color-mix(in srgb,var(--neon) 3%,#121212);paint-order:stroke fill;-webkit-text-stroke:2.4px var(--neon);text-shadow:0 0 10px color-mix(in srgb,var(--neon) 28%,transparent),0 0 26px color-mix(in srgb,var(--neon) 18%,transparent)}.marquee-track span:nth-child(2n){--neon: var(--accent-2)}.marquee-track span:after{content:"•";margin:0 1.4rem;-webkit-text-stroke-color:color-mix(in srgb,var(--text-dim) 60%,transparent);text-shadow:none}@keyframes marquee{to{transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){.marquee-track{animation:none}.skills-hint{animation:none;background:none;color:var(--text-dim)}.skills.is-focused .skills-grid>li:not(.is-active){filter:none}.hw-line--power-pulse,.hw-line--lan-pulse,.hw-line--ftth-pulse{animation:none;opacity:0}.skills-grid>li:hover,.skills-grid li:focus-visible,.skills-grid>li.is-active,.card:hover{transform:none}}#about,#projects{position:relative;isolation:isolate}#about:before,#projects:before{content:"";position:absolute;top:0;right:-3rem;bottom:0;left:-3rem;z-index:-1;pointer-events:none;background:url(/images/cutting-mat.svg) no-repeat}#about:before{background-position:left bottom 1.5rem;-webkit-mask-image:radial-gradient(ellipse 85% 120% at 0% 100%,#000,#000000f9,#000000e7,#000000ca,#000000a7,#00000080,#00000058,#00000035,#00000018,#00000006,#0000 85%);mask-image:radial-gradient(ellipse 85% 120% at 0% 100%,#000,#000000f9,#000000e7,#000000ca,#000000a7,#00000080,#00000058,#00000035,#00000018,#00000006,#0000 85%)}#projects:before{background-position:right top 2.5rem;-webkit-mask-image:radial-gradient(ellipse 75% 110% at 100% 0%,#000,#000000f9,#000000e7,#000000ca,#000000a7,#00000080,#00000058,#00000035,#00000018,#00000006,#0000 85%);mask-image:radial-gradient(ellipse 75% 110% at 100% 0%,#000,#000000f9,#000000e7,#000000ca,#000000a7,#00000080,#00000058,#00000035,#00000018,#00000006,#0000 85%)}.about-grid{display:grid;grid-template-columns:2fr 1fr;gap:3rem;align-items:center}.about-text{grid-column:1;grid-row:1}.about-grid p{font-size:var(--fs-md);color:var(--text-dim)}.about-grid p+p{margin-top:1em}.about-grid p strong{color:color-mix(in srgb,var(--text) 50%,var(--text-dim));font-weight:600}.about-photo{grid-column:2;grid-row:1;width:100%;height:auto;aspect-ratio:1;border-radius:1rem;object-fit:cover;display:block;background:linear-gradient(to bottom,var(--accent) 0%,#c8520d 12.5%,#8a3706 25%,#5e2101 37.5%,#3e1400 50%,#230a00 62.5%,#0e0302 75%,#030001 87.5%,#000 100%)}@media(max-width:700px){.about-grid{display:flow-root}.about-photo{float:right;width:clamp(7rem,30vw,9rem);margin:.3rem 0 .75rem 1.25rem;border-radius:.75rem}}.skill-group+.skill-group{margin-top:clamp(2.5rem,4vw,3.5rem)}.skill-group>h3{display:flex;align-items:baseline;gap:1.25rem;margin-bottom:1.25rem;font-family:var(--font-display);font-size:clamp(1.25rem,2.2vw,1.75rem);font-weight:500;letter-spacing:-.03em;color:var(--text);transition:opacity .4s ease}.skill-group>h3:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,#2a2a2a,transparent)}.skills-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:.75rem}.skills-grid>li{--tile-wash: 6%;position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;padding:1.15rem 1.15rem 1rem;background:linear-gradient(0deg,color-mix(in srgb,var(--brand, var(--accent)) var(--tile-wash),transparent),transparent 70%),var(--surface);border:1px solid #1e1e1e;border-radius:.9rem;cursor:pointer;transition:border-color var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out),background var(--duration-slow) var(--ease-out),opacity var(--duration-slow) var(--ease-out),filter var(--duration-slow) var(--ease-out)}.skills-grid>li:hover,.skills-grid>li:focus-visible{--tile-wash: 14%;border-color:color-mix(in srgb,var(--brand, var(--accent)) 45%,#1e1e1e)}.skills-grid li:focus-visible{transform:translateY(-3px)}@media(hover:hover)and (pointer:fine){.skills-grid>li:hover{transform:translateY(-3px)}}.skills-grid>li:active{transform:scale(.98)}.skills-grid li:focus-visible{outline:2px solid var(--brand, var(--accent));outline-offset:3px}.skills-grid>li.is-active{--tile-wash: 22%;border-color:color-mix(in srgb,var(--brand, var(--accent)) 70%,transparent);transform:translateY(-3px)}.skill-icon{width:34px;height:34px;object-fit:contain;transition:transform var(--duration-base) var(--ease-out)}.skills-grid>li.is-active .skill-icon{transform:scale(1.08)}@media(hover:hover)and (pointer:fine){.skills-grid>li:hover .skill-icon{transform:scale(1.08)}}.skill-label{font-family:var(--font-display);font-size:var(--fs-sm);font-weight:500;letter-spacing:-.01em;line-height:1.25;text-wrap:balance}.skills.is-focused .skills-grid>li:not(.is-active){opacity:.32;filter:blur(2px)}.skills.is-focused .skill-group:not(.has-open-card)>h3{opacity:.32}.skills-hint{margin-bottom:2.5rem;font-size:clamp(1.1rem,2vw,1.35rem);font-weight:600;letter-spacing:-.01em;transition:opacity .4s ease;color:var(--text-dim)}.skills.is-focused .skills-hint{opacity:0}#skill-card-slot{display:grid}#skill-drawer.is-live{position:relative;aspect-ratio:3 / 2;max-height:76vh;margin-bottom:-5rem;touch-action:pan-y}.skills-glance{list-style:none;padding:0;margin-top:8rem;max-width:52rem;padding-top:.8rem;border-top:1px solid #1f1f1f}#skill-drawer.is-live:has(.drawer__scene.is-overlay)~.skills-glance{margin-top:6rem}.skills-glance li{display:grid;grid-template-columns:minmax(0,11rem) minmax(0,1fr);gap:.25rem 2rem;padding:.4rem .1rem}.skills-glance__name{font-family:var(--font-display);font-size:var(--fs-sm);font-weight:600;color:var(--text-dim)}.skills-glance__tools{color:var(--text-dim);font-size:var(--fs-sm)}#skill-drawer.is-live:has(.drawer__scene.is-overlay){margin-bottom:-3rem}#skill-drawer.is-live{--focus-fade: .65s cubic-bezier(.37, 0, .63, 1);transition:margin-bottom 1.5s cubic-bezier(.215,.61,.355,1)}#skill-drawer.is-live:has(.drawer__scene:not(.is-out)){margin-bottom:calc(-5rem - var(--shut-gap, 0px))}#skill-drawer.is-live:has(.drawer__scene.is-overlay:not(.is-out)){margin-bottom:calc(-3rem - var(--shut-gap, 0px))}#skill-drawer.is-live .drawer__scene.can-grab{cursor:grab}#skill-drawer.is-live .drawer__scene.is-grabbing{cursor:grabbing}#skill-drawer.is-live .drawer__scene.has-open.can-grab,#skill-drawer.is-live .drawer__scene.has-open .folder{cursor:default}#skill-drawer.is-live .drawer__scene{position:absolute;top:0;right:0;bottom:0;left:0}#skill-drawer.is-live .drawer__scene canvas{display:block;width:100%;height:100%;mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.5) 5%,#000 13%,#000 70%,rgba(0,0,0,.45) 88%,transparent 100%),linear-gradient(to right,#000 62%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.5) 5%,#000 13%,#000 70%,rgba(0,0,0,.45) 88%,transparent 100%),linear-gradient(to right,#000 62%,transparent 100%);mask-composite:intersect;-webkit-mask-composite:source-in}#skill-drawer.is-live .drawer__hint{position:absolute;top:20%;left:4%;width:48%;max-width:32rem;margin:0;transform:translateY(-50%);pointer-events:none;opacity:0;transition:opacity .5s ease;font-family:var(--font-display);font-size:clamp(1.75rem,3.6vw,3rem);font-weight:500;line-height:1.05;letter-spacing:-.03em}#skill-drawer.is-live .drawer__hint span{display:block}#skill-drawer.is-live .drawer__hint span:first-child{color:var(--text-dim);animation:hint-nudge 3.6s ease-in-out infinite}#skill-drawer.is-live .drawer__hint span+span{color:var(--text)}@keyframes hint-nudge{0%,60%,to{transform:translate(0)}76%{transform:translate(.55rem)}90%{transform:translate(-.1rem)}}#skill-drawer.is-live .drawer__hint-arrow{position:absolute;top:0;right:0;bottom:0;left:0;color:var(--text-dim);pointer-events:none;opacity:0;transition:opacity .5s ease}#skill-drawer.is-live .drawer__scene.is-shut .drawer__hint,#skill-drawer.is-live .drawer__scene.is-shut .drawer__hint-arrow{opacity:1}#skill-drawer.is-live .drawer__scrub{position:absolute;top:-22px;left:0;z-index:3;height:44px;transform-origin:0 50%;touch-action:none;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .35s var(--ease-out),visibility 0s linear .35s,filter var(--focus-fade)}#skill-drawer.is-live .drawer__scrub:before{content:"";position:absolute;left:0;right:0;top:50%;height:4px;margin-top:-2px;border-radius:999px;background:#0009;box-shadow:inset 0 1px 1px #000c,0 1px #ffffff2e}#skill-drawer.is-live .drawer__scrub-thumb{position:absolute;top:50%;left:-6px;width:12px;height:12px;margin-top:-6px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0,#e3e6ea 22%,#9ba1a9 58%,#5b6068);box-shadow:0 0 0 1px #000000bf,0 2px 4px #0009;transition:transform .12s var(--ease-out)}#skill-drawer.is-live .drawer__scrub-open{position:absolute;top:0;left:0;z-index:3;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;visibility:hidden}#skill-drawer.is-live .drawer__scrub-open:disabled{cursor:default}#skill-drawer.is-live .drawer__scene:not(.is-shut):not(.has-open) .drawer__scrub-open{visibility:visible}#skill-drawer.is-live .drawer__scene:not(.is-shut) .drawer__scrub{opacity:1;visibility:visible;transition:opacity .35s var(--ease-out),visibility 0s linear,filter var(--focus-fade)}#skill-drawer.is-live .drawer__scene.has-open .drawer__scrub{filter:blur(3px) brightness(.7);pointer-events:none}#skill-drawer.is-live .drawer__scene.has-open .drawer__css{z-index:4}#skill-drawer.is-live .drawer__css{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.set-player{--set-played: var(--accent-2);--set-rest: rgba(242, 242, 242, .16);--played: 0%}.set-player__invite{margin:0 0 1.2rem;padding-left:.2rem;font-family:var(--font-display);font-size:clamp(.72rem,1.05vw,.88rem);font-weight:400;line-height:1.2;letter-spacing:-.01em;color:var(--text-dim);white-space:nowrap}.set-player__panel{display:flex;align-items:center;gap:.85rem;padding:.7rem .9rem;border:1px solid #1e1e1e;border-radius:.9rem;background:color-mix(in srgb,var(--bg) 92%,transparent)}.skills .set-player{max-width:34rem;margin:2.5rem auto 0}.set-player__disc{position:relative;flex:0 0 auto;width:3.3rem;height:3.3rem;padding:0;border:0;border-radius:50%;background:none;color:var(--text);cursor:pointer}.set-player__vinyl{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:conic-gradient(from 0deg,#ffffff1c,#fff0 25%,#ffffff12,#fff0 75%,#ffffff1c),repeating-radial-gradient(circle at 50% 50%,#0e0e0e 0,#0e0e0e 2px,#171717 2px,#171717 3px);animation:vinyl-spin 1.8s linear infinite;animation-play-state:paused}.set-player.is-playing .set-player__vinyl{animation-play-state:running}@keyframes vinyl-spin{to{transform:rotate(360deg)}}.set-player__label{position:absolute;top:26%;right:26%;bottom:26%;left:26%;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:var(--set-played)}.set-player__label:after{content:"";position:absolute;width:.28rem;height:.28rem;border-radius:50%;background:var(--bg)}.set-player__mark{width:100%;height:100%;object-fit:contain;padding:12%}.set-player__glyph{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:1.4rem;height:1.4rem;filter:drop-shadow(0 0 .4rem rgba(0,0,0,.9));transition:opacity var(--duration-base) var(--ease-out)}.set-player.is-playing .set-player__glyph{opacity:0}.set-player__disc:hover .set-player__glyph,.set-player__disc:focus-visible .set-player__glyph{opacity:1}.set-player__body{flex:1 1 auto;min-width:0}.set-player__title{margin:0;font-family:var(--font-display);font-size:.95rem;font-weight:500;letter-spacing:-.01em}.set-player__note{margin:.15rem 0 0;font-size:.72rem;color:#e57373}.set-player__wave{position:relative;margin-top:.35rem;height:2.1rem;cursor:pointer;touch-action:none}.set-player__canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.set-player__canvas--played{clip-path:inset(0 calc(100% - var(--played)) 0 0)}.set-player__head{position:absolute;top:0;bottom:0;left:var(--played);width:1px;background:var(--text);opacity:.55}.set-player__foot{display:flex;align-items:center;gap:.4rem;margin:.45rem 0 0;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--text-dim)}.set-player__total:before{content:"/ "}.set-player__next{margin-left:auto}.set-player__next-glyph{display:block;width:.85rem;height:.85rem}.set-player__controls{display:flex;align-items:center;gap:.35rem;margin:.5rem 0 0}.set-player__skip,.set-player__mini,.set-player__next{flex:none;display:grid;place-items:center;width:1.9rem;height:1.9rem;padding:0;border:0;border-radius:50%;background:var(--knob-bg);background-blend-mode:var(--knob-blend);box-shadow:var(--knob-shadow);color:#cfcfcf;cursor:pointer;transition:color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.set-player__mini{width:2.3rem;height:2.3rem;color:#e6e6e6}.set-player__skip:hover,.set-player__mini:hover,.set-player__next:hover{color:var(--set-played)}.set-player__skip:active,.set-player__mini:active,.set-player__next:active{transform:translateY(1px);box-shadow:var(--knob-shadow-pressed)}.set-player__skip-glyph,.set-player__mini-glyph{display:block;width:.9rem;height:.9rem}.set-player__mini-glyph{width:1.15rem;height:1.15rem}.set-player__volume{margin-left:auto;width:4.5rem;min-width:2.5rem;flex:0 1 auto;accent-color:var(--set-played);cursor:pointer}.set-player__disc:focus-visible,.set-player__wave:focus-visible,.set-player__next:focus-visible,.set-player__skip:focus-visible,.set-player__mini:focus-visible,.set-player__volume:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){.set-player__vinyl{animation:none}}#skill-drawer.is-live .set-player{position:absolute;right:.8%;bottom:3.5rem;z-index:2;width:min(19rem,30%);margin:0;cursor:auto;opacity:0;visibility:hidden;transition:opacity .45s var(--ease-out),visibility 0s linear .45s}#skill-drawer.is-live .set-player__invite{padding:0 .2rem;text-align:center}#skill-drawer.is-live .drawer__scene:not(.is-shut)~.set-player,#skill-drawer.is-live .set-player.is-playing{opacity:1;visibility:visible;transition:opacity .7s var(--ease-out) var(--set-delay, 5s),visibility 0s linear var(--set-delay, 5s)}#skill-drawer.is-live .set-player.is-playing{--set-delay: 0s}#skill-drawer.is-live .drawer__scene.is-overlay~.set-player{bottom:.4rem;width:min(17rem,40%)}#skill-drawer.is-live .drawer__scene.has-open~.set-player:not(.is-playing){opacity:.45;filter:blur(3px);pointer-events:none;transition:opacity var(--focus-fade),filter var(--focus-fade)}#skill-drawer.is-live .drawer__scene.has-opened:not(.has-open)~.set-player:not(.is-playing){transition:opacity var(--focus-fade),filter var(--focus-fade),visibility 0s linear}.nav .set-player.is-docked{order:1;flex:0 1 auto;min-width:0;margin:0 1.5rem}.nav>nav{order:2}#main-content,.footer{transition:opacity .22s var(--ease-out)}html.is-animating #main-content,html.is-animating .footer{opacity:0}@media(prefers-reduced-motion:reduce){#main-content,.footer{transition:none}}.set-player__close{display:none}.set-player.is-docked{display:flex;align-items:center;gap:.35rem}.set-player.is-docked.is-closed{display:none}.set-player.is-docked .set-player__close{display:grid;place-items:center;flex:0 0 auto;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:50%;background:none;color:var(--text-dim);cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.set-player.is-docked .set-player__close:hover{color:var(--text)}.set-player__close-glyph{width:.9rem;height:.9rem}@media(pointer:coarse){.set-player.is-docked .set-player__close{width:2.75rem;height:2.75rem}}.set-player.is-docked .set-player__invite,.set-player.is-docked .set-player__skip,.set-player.is-docked .set-player__mini,.set-player.is-docked .set-player__time,.set-player.is-docked .set-player__total{display:none}.set-player.is-docked .set-player__panel{gap:.6rem;padding:.25rem .7rem .25rem .3rem;border-radius:999px}.set-player.is-docked .set-player__disc{width:2rem;height:2rem}.set-player.is-docked .set-player__body{display:flex;align-items:center;gap:.75rem}.set-player.is-docked .set-player__title{flex:0 1 auto;min-width:0;max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem}.set-player.is-docked .set-player__note{margin:0;white-space:nowrap}.set-player.is-docked .set-player__wave{flex:0 0 8rem;margin:0;height:1.5rem}.set-player.is-docked .set-player__foot,.set-player.is-docked .set-player__controls{margin:0}.set-player.is-docked .set-player__next{width:1.6rem;height:1.6rem}.set-player.is-docked .set-player__volume{width:3.5rem}.nav nav a{white-space:nowrap}@media(max-width:900px){.nav .set-player.is-docked{margin:0 .75rem}.set-player.is-docked .set-player__title{max-width:7rem}.set-player.is-docked .set-player__wave{flex-basis:5rem}}@media(pointer:coarse){.set-player.is-docked .set-player__volume{display:none}}#skill-drawer.is-live .drawer__scene canvas{transition:opacity var(--focus-fade),filter var(--focus-fade)}#skill-drawer.is-live .drawer__label span,#skill-drawer.is-live .drawer__rule:before{transition:filter var(--focus-fade)}#skill-drawer.is-live .drawer__scene.has-open .drawer__label span,#skill-drawer.is-live .drawer__scene.has-open .drawer__rule:before{filter:blur(4px) brightness(.7)}#skill-drawer.is-live .drawer__scene.has-open canvas{opacity:.82;filter:blur(3px)}#skill-drawer.is-live .drawer__css .folder:not(.is-open) .folder__sheet{transition:transform .2s var(--ease-out),border-color var(--duration-base) var(--ease-out),filter var(--focus-fade)}#skill-drawer.is-live .drawer__scene.has-open .drawer__css .folder:not(.is-open) .folder__sheet{filter:blur(4px) brightness(.7) saturate(.8)}#skill-drawer.is-live .drawer__scene.has-open .drawer__css .folder:not(.is-open){overflow-x:visible;overflow-y:clip;mask-clip:no-clip;-webkit-mask-clip:no-clip;mask-repeat:repeat-x;-webkit-mask-repeat:repeat-x}#skill-drawer.is-live .drawer__css .folder:before{content:"";position:absolute;inset:auto 0 0;height:3.4rem;pointer-events:auto}#skill-drawer.is-live .drawer__css .folder.is-culled:before{pointer-events:none}#skill-drawer.is-live .drawer__css .folder.is-open .folder__sheet{pointer-events:auto}#skill-drawer.is-live .drawer__strip{display:none}.drawer-pending #skill-drawer:not(.is-live) .drawer__strip{visibility:hidden}.folder{position:relative;width:250px;height:320px;overflow:hidden;cursor:grab;list-style:none;box-sizing:border-box}.folder{mask-image:linear-gradient(to top,transparent 0,#000 .45rem);-webkit-mask-image:linear-gradient(to top,transparent 0,#000 .45rem)}.folder__sheet{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#0b0b0b;border:1px solid color-mix(in srgb,var(--brand, var(--accent)) 32%,#232323);border-top:2px solid var(--brand, var(--accent));border-radius:.35rem .35rem .2rem .2rem;box-shadow:0 12px 26px -14px #000000e6;transform:translateY(calc(100% - 3.4rem));transition:transform .2s var(--ease-out),border-color var(--duration-base) var(--ease-out)}.folder__close{position:absolute;top:.6rem;right:.6rem;z-index:2;display:grid;place-items:center;width:1.6rem;height:1.6rem;background:#0b0b0b;border:1px solid #262626;border-radius:50%;color:var(--text-dim);cursor:pointer;opacity:0;transform:scale(.94);pointer-events:none;transition:opacity .2s var(--ease-out),transform .2s var(--ease-out),color var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.folder.is-landed .folder__close{opacity:1;transform:scale(1);pointer-events:auto;transition-delay:0s}.folder__close svg{transition:transform var(--duration-base) var(--ease-out)}.folder__close:focus-visible{color:var(--text);border-color:var(--brand, var(--accent))}.folder__close:focus-visible svg{transform:rotate(90deg)}@media(hover:hover)and (pointer:fine){.folder__close:hover{color:var(--text);border-color:var(--brand, var(--accent))}.folder__close:hover svg{transform:rotate(90deg)}}@media(hover:hover)and (pointer:fine){.folder:hover .folder__sheet{transform:translateY(calc(100% - 5.4rem))}}.folder.is-peek .folder__sheet{transform:translateY(calc(100% - 5.4rem))}.folder:focus-visible{outline:none}.folder:focus-visible .folder__sheet{border-color:var(--brand, var(--accent));box-shadow:0 0 0 2px var(--brand, var(--accent))}.folder.is-open .folder__sheet,.folder.is-open:hover .folder__sheet{transform:none}.folder.is-open{mask-image:none;-webkit-mask-image:none}.folder.is-open{width:500px;height:640px}.folder.is-open .folder__sheet,.folder.is-open .folder__close{zoom:2}.folder.is-landed{border:2px solid color-mix(in srgb,var(--brand, var(--accent)) 32%,#232323);border-top:4px solid var(--brand, var(--accent));border-radius:.7rem .7rem .4rem .4rem}.folder.is-landed .folder__sheet,.folder.is-landed:focus-visible .folder__sheet{border:0}.folder__tab{display:flex;align-items:center;gap:.6rem;padding:.75rem .85rem;background:linear-gradient(180deg,color-mix(in srgb,var(--brand, var(--accent)) 26%,transparent),transparent)}.folder__tab .skill-icon{width:24px;height:24px;flex-shrink:0}.folder__tab .skill-label{font-family:var(--font-display);font-size:.8125rem;font-weight:500;line-height:1.15;letter-spacing:-.01em}.folder__body{padding:0 .85rem .9rem}.folder__badge{display:inline-block;margin-bottom:.5rem;padding:.15rem .5rem;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-2);border:1px solid color-mix(in srgb,var(--accent-2) 45%,transparent);border-radius:999px}.folder__text{font-size:.75rem;line-height:1.45;color:var(--text-dim)}.folder__label{margin:.6rem 0 0;font-family:var(--font-display);font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.folder__label+.folder__bullets{margin-top:.25rem}.folder__bullets{list-style:none;padding:0;margin:.6rem 0 0;font-size:.75rem;line-height:1.4}.folder__bullets>li{position:relative;padding-left:.85rem;margin-bottom:.28rem}.folder__bullets>li:before{content:"";position:absolute;left:0;top:.55em;width:4px;height:4px;border-radius:50%;background:var(--brand, var(--accent))}.folder__bullets ul{list-style:none;padding:.25rem 0 .15rem .15rem;margin:0;color:var(--text-dim)}.folder__bullets ul li:before{background:color-mix(in srgb,var(--brand, var(--accent)) 55%,transparent)}@media(prefers-reduced-motion:reduce){.folder__sheet,.folder__close{transition-duration:.01ms;transition-delay:0s}}.drawer__label{width:0;height:0}.drawer__label span{position:absolute;right:.3rem;bottom:.3rem;white-space:nowrap;font-family:var(--font-display);font-size:1.35rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);opacity:.7}.drawer__rule{width:100px;height:2px}.drawer__rule:before{content:"";display:block;height:100%;background:color-mix(in srgb,var(--text) 70%,transparent)}.projects-scroller{position:relative;--cols: 3;--card-gap: 1.5rem}.projects-grid{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - (var(--cols) - 1) * var(--card-gap)) / var(--cols));gap:var(--card-gap);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad-x);padding:1rem var(--pad-x);margin:-1rem calc(-1 * var(--pad-x));scrollbar-width:none;--fade-l: 0px;--fade-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--fade-l),#000 calc(100% - var(--fade-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--fade-l),#000 calc(100% - var(--fade-r)),transparent 100%)}.projects-grid::-webkit-scrollbar{display:none}.projects-scroller.can-prev .projects-grid{--fade-l: var(--pad-x)}.projects-scroller.can-next .projects-grid{--fade-r: var(--pad-x)}.projects-grid>.card{scroll-snap-align:start}.projects-arrow{position:absolute;top:50%;z-index:2;width:2.75rem;height:2.75rem;margin-top:-1.375rem;display:none;place-items:center;border:1px solid #333;border-radius:50%;background:color-mix(in srgb,var(--bg) 85%,transparent);color:var(--text);cursor:pointer;transition:border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.projects-arrow:hover{border-color:var(--accent);color:var(--accent)}.projects-arrow--prev{left:max(calc(-1 * var(--pad-x) / 2 - 1.375rem),calc(.25rem - var(--pad-x)))}.projects-arrow--next{right:max(calc(-1 * var(--pad-x) / 2 - 1.375rem),calc(.25rem - var(--pad-x)))}@media(hover:hover)and (pointer:fine){.projects-scroller.can-prev .projects-arrow--prev,.projects-scroller.can-next .projects-arrow--next{display:grid}}@media(max-width:1024px){.projects-scroller{--cols: 2}}@media(max-width:640px){.projects-scroller{--cols: 1.15}}.projects-count{margin-top:1rem;color:var(--text-dim);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.card{background:var(--surface);border:1px solid #222;border-radius:1rem;padding:1.25rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color var(--duration-base) var(--ease-out);position:relative}.card:hover{border-color:var(--accent)}.card:active{transform:scale(.99)}.card-thumb{width:100%;height:auto;aspect-ratio:16 / 10;border-radius:.5rem;background:linear-gradient(135deg,#1d1d1d,#101010);object-fit:cover;display:block}.card p{color:var(--text-dim);font-size:var(--fs-base)}.card .card-kicker{margin:0;color:var(--accent);font-family:var(--font-display);font-size:var(--fs-sm)}.card-links{display:flex;gap:1rem;margin-top:auto}.card-links a{color:var(--accent);font-size:var(--fs-sm)}.card-links a:hover{text-decoration:underline}.card-links a:only-child:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit}.contact{display:grid;gap:2.5rem;align-items:start}@media(min-width:860px){.contact{grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-rows:auto 1fr;grid-template-areas:"intro form" "links form";gap:2.5rem clamp(3rem,6vw,6rem)}.contact-intro{grid-area:intro}.contact-form{grid-area:form}.contact-links{grid-area:links}}.contact-intro p{color:var(--text-dim);font-size:var(--fs-md);max-width:32ch;text-wrap:balance}.contact-intro .contact-details{margin-top:.75rem;font-size:var(--fs-base);max-width:44ch}.contact-details a{color:var(--text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 60%,transparent);text-underline-offset:.25em;transition:color var(--duration-fast) var(--ease-out)}.contact-details a:hover{color:var(--accent)}.contact-links{list-style:none;padding:0;border-top:1px solid #1f1f1f}.contact-links li{border-bottom:1px solid #1f1f1f}.contact-links a{display:flex;justify-content:space-between;align-items:center;padding:.9rem .1rem;font-family:var(--font-display);font-size:var(--fs-base);color:var(--text);transition:color var(--duration-base) var(--ease-out)}.contact-links a span{font-variant-emoji:text;color:var(--text-dim);transition:color var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}@media(hover:hover)and (pointer:fine){.contact-links a:hover,.contact-links a:hover span{color:var(--accent)}.contact-links a:hover span{transform:translate(.25rem)}}.contact-form{display:flex;flex-direction:column;gap:1.25rem;padding:clamp(1.25rem,3vw,2.25rem);background:#121212;border:1px solid #1f1f1f;border-radius:1.25rem;box-shadow:0 1.5rem 3rem -1rem #0009}.contact-row{display:grid;gap:1.25rem}@media(min-width:560px){.contact-row{grid-template-columns:1fr 1fr}}.contact-field{display:flex;flex-direction:column;gap:.45rem}.contact-field label{color:var(--text-dim);font-size:var(--fs-sm)}.contact-field input,.contact-field textarea{background:var(--bg);border:1px solid #606060;border-radius:.6rem;padding:.8em .95em;color:var(--text);font-family:var(--font-body);font-size:var(--fs-base);resize:vertical;transition:border-color var(--duration-fast) var(--ease-out)}.contact-field input:hover,.contact-field textarea:hover{border-color:#7a7a7a}.contact-field input:focus,.contact-field textarea:focus{outline:none;border-color:var(--accent)}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;margin-top:.25rem}.contact-form .btn:disabled{opacity:.55;cursor:progress}.contact-status{min-height:1.2em;color:var(--text-dim);font-size:var(--fs-sm);margin:0}.contact-status.is-ok{color:var(--text)}.contact-status.is-error,.contact-error{color:#e57373}.contact-error{margin:.4rem 0 0;font-size:var(--fs-sm)}.contact-error:empty{display:none}.contact-field [aria-invalid=true]{border-color:#e57373}.page-hero{padding-top:calc(var(--space) + 4rem)}.homelab-page #project,.homelab-page #description,.homelab-page #hardware,.homelab-page #services,.cb-page #project,.cb-page #description{padding-bottom:calc(var(--space) * .4)}.vt-page main>section:not(#back){padding-bottom:calc(var(--space) * .55)}.cb-page #demo,.cb-page #results,.cb-page #choices{padding-bottom:calc(var(--space) * .5)}.cb-page #retro{padding-bottom:calc(var(--space) * .7)}.pp-page .pp-tool{padding-block:calc(var(--space) * .6)}.homelab-page #description,.cb-page #description{padding-top:0}.page-hero h1{font-size:clamp(2.5rem,7vw,5rem)}.project-meta{color:var(--text-dim);font-family:var(--font-display);margin-top:1rem}.project-cover{width:100%;height:auto;aspect-ratio:21 / 9;object-fit:cover;border-radius:1rem;margin-top:3rem;display:block}.project-description p{font-size:var(--fs-md);color:var(--text-dim);max-width:44rem}.project-description-text p strong{color:color-mix(in srgb,var(--text) 50%,var(--text-dim));font-weight:600}.project-description p+p{margin-top:1.5rem}@media(max-width:700px){.project-description p{font-size:var(--fs-md)}.project-description p+p{margin-top:1.1rem}}.project-description-grid{display:grid;grid-template-columns:2fr 3fr;gap:3rem;align-items:start}.project-description-text,.project-description-photos{min-width:0}.project-description-photos{display:flex;flex-direction:column;gap:2rem}.project-photo-row{display:flex;align-items:flex-start;gap:1rem}.project-photo{flex:1;min-width:0;height:auto;aspect-ratio:3 / 4;object-fit:cover;border-radius:1rem;display:block}p.project-specs__kicker{color:var(--accent);font-family:var(--font-display);font-size:var(--fs-base);margin-bottom:1rem}.project-specs__list{display:grid;gap:.85rem}.project-specs__list>div{display:grid;grid-template-columns:7rem 1fr;gap:1rem}.project-specs__list dt{color:var(--text-dim);font-size:var(--fs-sm)}.project-specs__list dd{margin:0;color:var(--text);font-size:var(--fs-base)}.project-specs__credit{margin-top:1.5rem;font-size:var(--fs-sm);color:var(--text-dim)}.project-specs__credit a{color:var(--text-dim);transition:color .2s}.project-specs__credit a:hover{color:var(--accent)}.project-specs__credit a:before{content:"↗ ";color:var(--accent-2)}.project-outcome{max-width:34rem;margin-top:1.5rem;padding-left:.9rem;border-left:2px solid var(--accent);font-family:var(--font-display);font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.4;color:var(--text)}.project-cover--video{aspect-ratio:16 / 9;display:block;background:#000}.project-booth .project-cover{margin-top:0}.project-video video{width:100%;height:auto;border-radius:1rem;display:block}.vt-how__intro{font-size:var(--fs-md);color:var(--text-dim);max-width:44rem;margin-bottom:2.5rem}.vt-how .vt-how__label{margin:3.5rem 0 1.25rem}.vt-flow{--flow-gap: 2.5rem;list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--flow-gap)}.vt-flow__node{position:relative;display:flex;flex-direction:column;gap:.4rem;padding:1.25rem;border:1px solid rgba(255,255,255,.1);border-radius:1rem;background:var(--bg)}.vt-flow__head{display:flex;align-items:center;gap:.6rem}.vt-flow__icon{width:28px;height:28px;flex-shrink:0}.vt-flow__name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-base);line-height:1.15}.vt-flow__text,.vt-step__text,.vt-detail p{font-size:var(--fs-sm);color:var(--text-dim);line-height:1.5}.vt-flow__node:not(:last-child):after,.vt-flow__node:not(:last-child):before{content:"";position:absolute}.vt-flow__node:not(:last-child):after{left:100%;top:50%;width:var(--flow-gap);height:2px;margin-top:-1px;background:linear-gradient(90deg,transparent,var(--accent),transparent) no-repeat -60% 0 / 60% 100%,color-mix(in srgb,var(--accent) 55%,transparent)}@media(prefers-reduced-motion:no-preference){.vt-flow__node:not(:last-child):after{animation:vt-wire 2.4s var(--ease-out) infinite}.vt-flow__node:nth-child(2):after{animation-delay:.6s}.vt-flow__node:nth-child(3):after{animation-delay:1.2s}}@keyframes vt-wire{0%{background-position:-60% 0,0 0}45%,to{background-position:160% 0,0 0}}.vt-flow__node:not(:last-child):before{left:calc(100% + var(--flow-gap) - 7px);top:calc(50% - 3.5px);width:7px;height:7px;border-top:1px solid var(--accent);border-right:1px solid var(--accent);transform:rotate(45deg)}.vt-steps{list-style:none;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;counter-reset:step}.vt-step{counter-increment:step;position:relative;display:flex;flex-direction:column;gap:.4rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.12)}.vt-step:before{content:counter(step,decimal-leading-zero);position:absolute;top:-.7rem;left:0;padding-right:.6rem;background:var(--bg);font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.08em;color:var(--accent)}.vt-step__gesture{font-family:var(--font-display);font-weight:600;font-size:var(--fs-base);line-height:1.2}.vt-hand{--slot: 1.6s;display:block;align-self:center;margin-top:auto;padding-top:.75rem}.vt-hand__svg{display:block;width:5.5rem;height:5.5rem;overflow:visible}.vt-hand__pose path{fill:none;stroke:var(--text);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.vt-hand__pose,.vt-hand__hand{transform-box:fill-box;transform-origin:50% 60%}.vt-hand__pose{opacity:0}.vt-hand__pose.is-key{opacity:1}.vt-hand__track,.vt-hand__ring{fill:none;stroke-width:1.5}.vt-hand__track{stroke:#ffffff14}.vt-hand__ring{stroke:var(--accent);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transform:rotate(-90deg);transform-origin:40px 40px}.vt-hand--thumbs .vt-hand__ring{stroke-dashoffset:0}.vt-hand__touch{fill:var(--accent)}.vt-steps.is-playing .vt-hand__pose{animation:vt-pose-2 calc(var(--n) * var(--slot)) ease-out infinite;animation-delay:calc((var(--i) - var(--n)) * var(--slot))}.vt-steps.is-playing .vt-hand[style*="--n: 3"] .vt-hand__pose{animation-name:vt-pose-3}@keyframes vt-pose-2{0%{opacity:0;transform:scale(.9)}8%,44%{opacity:1;transform:none}50%,to{opacity:0;transform:none}}@keyframes vt-pose-3{0%{opacity:0;transform:scale(.9)}6%,29%{opacity:1;transform:none}33%,to{opacity:0;transform:none}}.vt-steps.is-playing .vt-hand--thumbs .vt-hand__ring{animation:vt-ring calc(2 * var(--slot)) linear infinite}@keyframes vt-ring{0%,52%{stroke-dashoffset:100;opacity:1}92%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.vt-steps.is-playing .vt-hand--pinch .vt-hand__touch{animation:vt-pinch-dot calc(2 * var(--slot)) ease-out infinite}.vt-steps.is-playing .vt-hand--pinch .vt-hand__hand{animation:vt-pinch-hand calc(2 * var(--slot)) ease-in-out infinite}@keyframes vt-pinch-dot{0%,52%{opacity:0}58%,94%{opacity:1}to{opacity:0}}@keyframes vt-pinch-hand{0%,58%,to{transform:none}66%{transform:translate(-2px)}74%{transform:translate(2px)}80%{transform:none}86%,94%{transform:scaleX(-1)}}@media(prefers-reduced-motion:reduce){.vt-hand *{animation:none!important}}.vt-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.5rem,4vw,3rem)}.vt-detail h3{font-size:var(--fs-md);margin-bottom:.5rem}@keyframes vt-wire-v{0%{background-position:0 -60%,0 0}45%,to{background-position:0 160%,0 0}}@media(max-width:1024px){.vt-steps{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:2.25rem}}@media(max-width:860px){.vt-flow{--flow-gap: 2rem;grid-template-columns:minmax(0,1fr)}.vt-flow__node:not(:last-child):after{left:1.75rem;top:100%;width:2px;height:var(--flow-gap);margin:0 0 0 -1px;background:linear-gradient(180deg,transparent,var(--accent),transparent) no-repeat 0 -60% / 100% 60%,color-mix(in srgb,var(--accent) 55%,transparent);animation-name:vt-wire-v}.vt-flow__node:not(:last-child):before{left:calc(1.75rem - 3px);top:calc(100% + var(--flow-gap) - 7px);transform:rotate(135deg)}.vt-details{grid-template-columns:minmax(0,1fr)}}@media(max-width:560px){.vt-steps{grid-template-columns:minmax(0,1fr)}}.gallery{columns:280px 3;gap:1rem}.gallery img{width:100%;height:auto;border-radius:.75rem;margin-bottom:1rem;display:block}.gallery.is-observed img{opacity:0;transform:translateY(28px);transition:opacity .6s ease-out,transform .6s ease-out}.gallery.is-observed img.is-visible{opacity:1;transform:none}@media(max-width:560px){.gallery{display:flex;gap:.75rem;columns:auto;margin-inline:calc(-1 * var(--pad-x));padding-inline:var(--pad-x);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad-x);overscroll-behavior-x:contain;scrollbar-width:none}.gallery img{flex:0 0 auto;width:auto;height:20rem;max-width:82vw;object-fit:cover;margin-bottom:0;scroll-snap-align:start}}.featured-links{list-style:none;padding:0;display:flex;flex-direction:column;gap:.75rem}.featured-links a{color:var(--text);font-size:var(--fs-base);transition:color .2s}.featured-links a:hover{color:var(--accent)}.featured-links a:before{content:"↗ ";color:var(--accent-2)}.project-back{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:center;gap:2rem 3rem}.project-next{display:grid;grid-template-columns:minmax(0,14rem) minmax(0,1fr);align-items:center;gap:1.25rem 1.5rem;padding:1rem;background:var(--surface);border:1px solid #222;border-radius:1rem;color:var(--text);transition:border-color var(--duration-base) var(--ease-out)}.project-next:hover{border-color:var(--accent)}.project-next:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-next__thumb{width:100%;height:auto;aspect-ratio:16 / 10;object-fit:cover;border-radius:.5rem;background:linear-gradient(135deg,#1d1d1d,#101010);display:block}.project-next__text{display:grid;gap:.4rem}.project-next__title{font-family:var(--font-display);font-size:clamp(1.35rem,2.4vw,2rem);font-weight:500;line-height:1.1;letter-spacing:-.01em;text-wrap:balance}.project-next__hint{color:var(--accent);font-size:var(--fs-base)}.project-back__aside{display:grid;justify-items:start;gap:1.25rem;color:var(--text-dim)}.project-all{margin-bottom:1.25rem}.project-all__label{margin:0 0 .4rem;font-family:var(--font-display);font-size:var(--fs-sm);color:var(--text-dim)}.project-all ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,max-content);gap:0 1.5rem}.project-all a{display:inline-block;padding-block:.6rem;color:var(--text);font-family:var(--font-display);font-size:var(--fs-base);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--text) 30%,transparent);text-underline-offset:.25em}.project-all a:hover{color:var(--accent)}.project-all a[aria-current=page]{color:var(--accent);text-decoration:none}.project-back__aside p a{color:var(--text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 60%,transparent);text-underline-offset:.3em;transition:color var(--duration-fast) var(--ease-out)}.project-back__aside p a:hover{color:var(--accent)}@media(max-width:700px){.project-back{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.project-next{grid-template-columns:minmax(0,1fr)}}.homelab-diagram{width:100%}.homelab-services-section .section-hint,.pp-hint{margin-bottom:2.5rem;font-size:clamp(1.1rem,2vw,1.35rem);font-weight:500;letter-spacing:-.01em;color:var(--text-dim)}.hd-tree{display:grid;gap:1rem;--hd-line: rgba(255, 255, 255, .1);--hd-leaf-icon: 22px;--hd-card-pad: 1rem}.hd-hub__button,.hd-leaf__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;text-align:left;cursor:pointer;transition:color .2s ease,background-color .2s ease}.hd-hub__button:disabled,.hd-leaf__button:disabled{cursor:default}.hd-hub{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;padding:.4rem 1rem .4rem .4rem;border:1px solid var(--hd-line);border-radius:1rem;background:var(--bg)}.hd-hub__button{display:flex;align-items:center;gap:.75rem;min-height:2.75rem;padding:.35rem .75rem .35rem .6rem;border-radius:.7rem;font-family:var(--font-display);font-size:var(--fs-md);font-weight:600;color:var(--text)}.hd-hub .hd-icon{width:28px;height:28px}.hd-hub__button:hover,.hd-hub__button[aria-expanded=true]{background:color-mix(in srgb,var(--accent) 10%,transparent)}.hd-node{flex:none;padding:.05rem .35rem;border:1px solid color-mix(in srgb,var(--text-dim) 45%,transparent);border-radius:.3rem;font-family:var(--font-display);font-size:.75rem;line-height:1.3;color:var(--text-dim);white-space:nowrap}.hd-node--1{border-color:color-mix(in srgb,var(--accent) 60%,transparent);color:var(--accent)}.hd-node--2{border-color:color-mix(in srgb,var(--accent-2) 60%,transparent);color:var(--accent-2)}.hd-nodes{display:inline-flex;gap:.25rem;margin-left:auto}.hd-node__said{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.hd-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.25rem;margin:0 0 0 auto;font-size:var(--fs-sm);color:var(--text-dim)}.hd-legend span{display:inline-flex;align-items:center;gap:.45rem}.hd-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.hd-branches,.hd-leaves{list-style:none;margin:0;padding:0}.hd-branches{display:flex;flex-direction:column;gap:1rem}.hd-cols:not(:has(.hd-card)) .hd-branch:last-child{flex-grow:1}.hd-branch{padding:.9rem .5rem .5rem;border:1px solid var(--hd-line);border-radius:1rem;background:var(--bg);transition:border-color .2s ease}.hd-branch:has(.hd-leaf__button[aria-expanded=true]){border-color:color-mix(in srgb,var(--accent) 55%,transparent)}.hd-branch__label{margin:0 0 .35rem;padding:0 .6rem;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.hd-leaf__button{display:flex;align-items:center;gap:.75rem;width:100%;min-height:2.75rem;padding:.35rem .6rem;border-radius:.6rem;font-size:var(--fs-base);color:var(--text-dim)}.hd-leaf__button:hover:not(:disabled){background:#ffffff0a;color:var(--text)}.hd-leaf__button[aria-expanded=true]{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text)}.hd-tree.is-focused .hd-leaf__button:not([aria-expanded=true]) .hd-icon{opacity:.4}.hd-tree.is-focused .hd-leaf__button:not([aria-expanded=true]) .hd-row-label{color:color-mix(in srgb,var(--text-dim) 83%,var(--bg))}.hd-icon{flex:none;width:var(--hd-leaf-icon);height:var(--hd-leaf-icon);object-fit:contain}.hd-card{position:relative;margin:.35rem 0;overflow:hidden}.hd-leaf:has(>.hd-leaf__button[aria-expanded=true])>.hd-leaf__button{border-radius:.6rem .6rem 0 0}.hd-leaves>.hd-card{margin:0 0 .35rem}.hd-leaves .hd-card__inner{padding:.15rem 2.5rem .9rem calc(.6rem + var(--hd-leaf-icon) + .75rem);border:0;border-radius:0 0 .6rem .6rem;background:color-mix(in srgb,var(--accent) 10%,transparent)}.hd-leaves .hd-card__close{top:.1rem}.hd-tree>.hd-card{max-width:40rem;margin:0}.hd-card__inner{position:relative;padding:var(--hd-card-pad) calc(var(--hd-card-pad) + .1rem) calc(var(--hd-card-pad) + .15rem);border:1px solid color-mix(in srgb,var(--text-dim) 30%,transparent);border-radius:.75rem;background:color-mix(in srgb,var(--text) 4%,var(--bg))}.hd-card__head{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.hd-card__text{padding-right:1.75rem}.hd-card__text{font-size:var(--fs-base);line-height:1.6;color:var(--text-dim)}.hd-card__close{position:absolute;top:.6rem;right:.6rem;display:grid;place-items:center;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:.35rem;background:none;color:var(--text-dim);cursor:pointer;transition:color .2s ease}.hd-card__close:hover{color:var(--text)}.hd-card__close svg{width:14px;height:14px}@media(pointer:coarse){.hd-card__close:after{content:"";position:absolute;top:-.5rem;right:-.5rem;bottom:-.5rem;left:-.5rem}}@media(max-width:1024px){.hd-cols,.hd-branches{display:contents}.hd-tree{grid-template-columns:repeat(2,minmax(0,1fr))}.hd-hub,.hd-tree>.hd-card{grid-column:1 / -1}}@media(max-width:640px){.hd-tree{grid-template-columns:minmax(0,1fr)}.hd-legend{margin-left:.6rem;font-size:var(--fs-sm)}}.homelab-hardware-scroll{overflow-x:auto;padding-bottom:.75rem;scrollbar-color:color-mix(in srgb,var(--accent-2) 55%,transparent) transparent;scrollbar-width:thin}#homelab-hardware{min-width:56rem;aspect-ratio:1000 / 600}.homelab-hardware-scroll::-webkit-scrollbar{height:6px}.homelab-hardware-scroll::-webkit-scrollbar-track{background:transparent}.homelab-hardware-scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent-2) 55%,transparent);border-radius:999px}.homelab-hardware{--hw-lan: #22c3d1;position:relative;min-width:56rem;aspect-ratio:1000 / 600;margin:0 auto}.homelab-hardware>svg,.homelab-hardware__labels{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.hw-grid-line{fill:none;stroke:#2a2a2a;stroke-width:1;opacity:.6}.hw-grid-mask{fill:var(--bg)}.hw-room{fill:color-mix(in srgb,#2a2a2a 12%,transparent);stroke:#2a2a2a;stroke-width:1.5}.hw-room--accent{fill:color-mix(in srgb,var(--accent-2) 5%,transparent);stroke:color-mix(in srgb,var(--accent-2) 55%,#2a2a2a)}.hw-room-bracket{fill:none;stroke:var(--text-dim);stroke-width:3;stroke-linecap:square}.hw-room-bracket--accent{stroke:var(--accent-2)}.hw-group{fill:color-mix(in srgb,var(--accent) 6%,transparent);stroke:var(--accent);stroke-width:1.5}.hw-node-strip{fill:color-mix(in srgb,var(--text) 15%,var(--bg));stroke:var(--text-dim);stroke-width:1}.hw-node-socket{fill:var(--accent)}.hw-line{fill:none}@keyframes hd-travel{to{stroke-dashoffset:-208}}.hw-line--power{stroke:var(--accent);stroke-width:2;stroke-dasharray:6 6;opacity:.6}.hw-line--power-pulse{stroke:var(--accent);stroke-width:2;stroke-dasharray:4 30;animation:hd-travel 2.6s linear infinite}.hw-line--lan{stroke:var(--hw-lan);stroke-width:1.5;opacity:.55}.hw-line--lan-pulse{stroke:var(--hw-lan);stroke-width:2;stroke-dasharray:6 40;animation:hd-travel 1.6s linear infinite}.hw-line--ftth{stroke:var(--accent-2);stroke-width:3;opacity:.6}.hw-line--ftth-pulse{stroke:var(--accent-2);stroke-width:3;stroke-dasharray:8 50;animation:hd-travel 1.4s linear infinite}.hw-line--data{stroke:var(--text-dim);stroke-width:1.5}.hw-line--usb{stroke:var(--text-dim);stroke-width:1.5;stroke-dasharray:2 4}.hw-label{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:.3rem;text-align:center;font-size:.75rem;color:var(--text);max-width:6rem;line-height:1.25}.hw-label__text{background:var(--bg);padding:.1rem .35rem;border-radius:.25rem}.hw-label svg{flex:none;width:2.1rem;height:2.1rem;padding:.7rem;box-sizing:content-box;border-radius:50%;background:var(--bg);stroke:var(--text)}.hw-label--icon{transform:translate(-50%,-1.75rem)}.hw-label--room{font-family:var(--font-display);font-size:.85rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--text);background:var(--bg);border:1px solid color-mix(in srgb,#2a2a2a 90%,transparent);padding:.3rem .75rem;border-radius:999px;max-width:none;white-space:nowrap}.hw-label--group{transform:translate(-100%,-50%);text-align:right;font-size:.75rem;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;max-width:none;white-space:nowrap}.hw-legend{list-style:none;display:flex;flex-wrap:wrap;gap:1.5rem;max-width:45rem;margin:1rem auto 0;padding-top:1rem;justify-content:center;font-size:var(--fs-base);color:var(--text-dim)}.hw-legend li{display:flex;align-items:center;gap:.5rem}.hw-legend__swatch{width:1.4rem;height:2px}.hw-legend__swatch--power{background:repeating-linear-gradient(to right,var(--accent) 0 4px,transparent 4px 8px)}.hw-legend__swatch--ftth{background:var(--accent-2);height:3px}.hw-legend__swatch--lan{background:var(--hw-lan, #22c3d1)}.footer{text-align:center;padding:2rem var(--pad-x);color:var(--text-dim);font-size:var(--fs-sm);border-top:1px solid #1c1c1c}.footer a{display:inline-block;color:inherit;text-decoration:underline;margin-left:.75rem;padding:.35rem 0;margin-top:-.35rem;margin-bottom:-.35rem}.footer .credits{margin-top:.5rem;font-size:var(--fs-xs);opacity:.8}@media(max-width:700px){.project-description-grid{grid-template-columns:1fr;gap:1.5rem}.nav nav{gap:1rem}.skill-group{border-bottom:1px solid #222}.skill-group+.skill-group{margin-top:0}.skill-group>h3{margin:0;font-size:var(--fs-md)}.skill-group>h3:after{content:none}.skill-group__toggle{display:flex;align-items:center;gap:.6rem;width:100%;min-height:3.5rem;padding:0;font:inherit;letter-spacing:inherit;color:inherit;text-align:left;background:none;border:0;cursor:pointer}.skill-group__count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim)}.skill-group__toggle:after{content:"";width:.5rem;height:.5rem;margin:0 .25rem .25rem auto;border:solid var(--text-dim);border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform var(--duration-base) var(--ease-out)}.skill-group__toggle[aria-expanded=true]:after{margin-bottom:-.25rem;transform:rotate(-135deg)}.skill-group__toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skills-grid{grid-template-columns:1fr;gap:.5rem;padding-bottom:1rem}.skills-grid[hidden]{display:none}.skills-grid>li{flex-direction:row;align-items:center;gap:.75rem;min-height:3.25rem;padding:.6rem .9rem}.skills-grid>li:active,.skills-grid li:focus-visible,.skills-grid>li.is-active{transform:none}.skill-icon{width:26px;height:26px}.skills.is-focused .skills-grid>li:not(.is-active){opacity:.55;filter:none}.skills.is-focused .skill-group:not(.has-open-card)>h3{opacity:1}.skills-grid>.skill-card{scroll-margin:5rem 0 1rem}.skills.is-focused .skills-hint{opacity:1}.skills-hint{margin-bottom:1rem;font-size:var(--fs-base)}.set-player__panel{align-items:flex-start}.set-player__disc{margin-top:.1rem}}.pp-page #tools,.pp-page .pp-tool{padding-bottom:calc(var(--space) * .4)}.pp-disclaimer{font-size:var(--fs-base)!important;border-left:2px solid var(--accent);padding-left:1rem}.pp-collage{display:none}@media(min-width:1025px){.pp-page #description{display:grid;grid-template-columns:minmax(0,40rem) minmax(0,1fr);gap:clamp(2.5rem,5vw,4.5rem)}.pp-collage{display:block;position:relative;min-height:28rem}.pp-collage>.pp-win{position:absolute;width:24rem;max-width:none;max-height:25rem;margin:0;transform-origin:top left;transform:rotate(var(--r)) scale(.62);-webkit-mask-image:linear-gradient(to bottom,#000 72%,transparent);mask-image:linear-gradient(to bottom,#000 72%,transparent)}.pp-collage>.pp-win:nth-child(1){--r: 2deg;top:0;right:0;transform-origin:top right}.pp-collage>.pp-win:nth-child(2){--r: -3deg;top:30%;left:0}.pp-collage>.pp-win:nth-child(3){--r: 1.5deg;top:58%;right:8%;transform-origin:top right}}.pp-index{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));gap:1rem}.pp-index>li{display:grid;grid-row:span 5;grid-template-rows:subgrid}.pp-index__tile{display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:.6rem;justify-items:start;padding:1.25rem;border:1px solid rgba(255,255,255,.1);border-radius:1rem;background:var(--bg);transition:border-color var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.pp-index__tile:hover,.pp-index__tile:focus-visible{border-color:var(--accent)}.pp-index__tile:active{transform:scale(.98)}.pp-index__name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);line-height:1.15}.pp-index__label{margin-top:.4rem;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.pp-index__problem{margin-top:-.35rem;font-size:var(--fs-sm);color:var(--text-dim)}.pp-index__go{display:grid;place-items:center;width:2rem;height:2rem;margin-top:.4rem;justify-self:center;border:1px solid rgba(255,255,255,.14);border-radius:50%;color:var(--accent);transition:background-color var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.pp-index__go svg{transition:transform var(--duration-base) var(--ease-out)}.pp-index__tile:hover .pp-index__go,.pp-index__tile:focus-visible .pp-index__go{background:var(--accent);border-color:var(--accent);color:var(--bg)}.pp-index__tile:hover .pp-index__go svg,.pp-index__tile:focus-visible .pp-index__go svg{transform:translateY(2px)}@media(prefers-reduced-motion:reduce){.pp-index__go svg{transition:none}}.pp-tool{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}.pp-tool__text h2{font-size:clamp(1.8rem,3.6vw,2.6rem);margin-bottom:1.5rem}.pp-tool__label,.vt-how__label{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:1.5rem 0 .5rem}.pp-tool__problem,.pp-tool__idea,.pp-tool__bullets{color:var(--text-dim);font-size:var(--fs-base);line-height:1.55}.pp-tool__text strong{color:var(--text);font-weight:500}.pp-tool__result{color:var(--text);font-family:var(--font-display);font-size:clamp(1.15rem,1.6vw,1.35rem);line-height:1.4;padding-left:.9rem;border-left:2px solid var(--accent)}.pp-tool__more{display:none}@media(max-width:700px){.pp-fold:not(.is-open){display:none}.pp-tool__more{display:inline-block;min-height:44px;margin-bottom:.5rem;padding:0 1.1rem;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:none;color:var(--text);font-family:var(--font-display);font-size:var(--fs-sm);cursor:pointer}}.pp-tool__bullets{padding-left:1.1rem}.pp-tool__bullets li+li{margin-top:.4rem}.pp-tool__bullets li::marker{color:var(--accent)}@media(min-width:1025px){.pp-tool__ui{position:sticky;top:6rem}}@media(max-width:1024px){.pp-tool{grid-template-columns:minmax(0,1fr)}}@media(max-width:700px){.pp-index{grid-template-columns:minmax(0,1fr);gap:.5rem}.pp-index>li{display:block}.pp-index__tile{display:flex;align-items:center;gap:.75rem;min-height:3.5rem;padding:.6rem 1rem}.pp-index__label,.pp-index__problem{display:none}.pp-index__go{margin-left:auto}.pp-tool{display:flex;flex-direction:column;gap:0}.pp-tool__text{display:contents}.pp-tool__text>*{order:2}.pp-tool__text>:nth-child(-n+4){order:0}.pp-tool__ui{order:1;width:100%;min-width:0;margin-block:1.75rem .5rem}.pp-tool__ui[aria-hidden=true] .pp-win{zoom:.85}}.pp-win{--ui-bg: #111;--ui-panel: #171717;--ui-btn: #222;--ui-line: rgba(255, 255, 255, .08);--ui-text: #cfcfcf;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:14px;overflow:hidden;color:var(--ui-text);font-family:var(--font-body);font-size:.8rem;line-height:1.2;box-shadow:0 30px 80px -40px #000000e6}.pp-win__body{display:flex;flex-direction:column;gap:.6rem;padding:.9rem}.pp-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .7rem;border-radius:8px;background:var(--ui-btn);border:1px solid transparent;color:var(--ui-text);font:inherit;white-space:nowrap}button.pp-btn{cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out)}button.pp-btn:hover,button.pp-btn:focus-visible{border-color:var(--accent)}button.pp-btn:active{transform:scale(.97)}.pp-btn--primary{background:var(--accent);color:#0a0a0a;font-weight:500}.pp-btn--ghost{background:none;border-color:var(--ui-line);color:var(--accent-2)}.pp-btn--big{padding:.8rem;font-size:.9rem}.pp-btn svg{width:1.8rem;height:auto;color:currentColor}.pp-btn--icon svg{width:2.2rem}.pp-row{display:flex;align-items:center;gap:.5rem;min-width:0}.pp-row:has(>.pp-field){align-items:flex-end}.pp-row--wrap{flex-wrap:wrap}.pp-grow{flex:1;min-width:0}.pp-field{display:flex;flex-direction:column;gap:.3rem;min-width:0;flex:1}.pp-field>span:first-child,.pp-label{color:var(--text-dim);font-size:.72rem}.pp-label{width:4.5rem;flex-shrink:0}.pp-input{display:block;padding:.5rem .6rem;border-radius:6px;background:#0b0b0b;border:1px solid var(--ui-line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:2.6rem}.pp-input--select{padding-right:1.4rem;background:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%) calc(100% - .75rem) 50% / .3rem .3rem no-repeat,linear-gradient(-45deg,transparent 50%,var(--text-dim) 50%) calc(100% - .45rem) 50% / .3rem .3rem no-repeat,#0b0b0b}.pp-input--search:before{content:"⌕ ";color:var(--text-dim)}.pp-input--path{color:var(--text-dim);font-family:var(--font-mono);font-size:.72rem}.pp-tabs{display:flex;gap:.2rem;border-bottom:1px solid var(--ui-line)}.pp-tabs>span{padding:.45rem .7rem;color:var(--text-dim);border-bottom:2px solid transparent;margin-bottom:-1px}.pp-tabs>.is-on{color:var(--text);border-bottom-color:var(--accent)}.pp-tabs--fill>span{flex:1;text-align:center}.pp-group{display:flex;flex-direction:column;gap:.35rem;padding:.6rem;background:var(--ui-panel);border-radius:10px;min-width:0}.pp-group__title{font-family:var(--font-display);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.15rem}.pp-grid2,.pp-grid4{display:grid;gap:.4rem;grid-template-columns:repeat(2,minmax(0,1fr))}.pp-grid4{grid-template-columns:repeat(4,minmax(0,1fr))}.pp-table{list-style:none;padding:.3rem .6rem;background:#0b0b0b;border:1px solid var(--ui-line);border-radius:8px}.pp-table li{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0}.pp-table li+li{border-top:1px solid var(--ui-line)}.pp-table--cols li{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;justify-items:center}.pp-table--cols li>:first-child{justify-self:start}.pp-table__head{color:var(--text-dim);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}#omniverse .pp-field>span:first-child,#omniverse .pp-label,#omniverse .pp-table__head{font-size:.75rem}.pp-code{color:var(--sec, var(--accent));font-family:var(--font-mono);font-size:.75rem}.pp-check,.pp-chk:before{display:inline-block;width:.9rem;height:.9rem;border-radius:4px;border:1px solid rgba(255,255,255,.25)}.pp-check.is-on,.pp-chk.is-on:before{background:var(--accent);border-color:var(--accent)}.pp-chk{display:inline-flex;align-items:center;gap:.35rem;margin-right:.6rem}.pp-chk:before{content:""}.pp-ok{width:.9rem;height:.9rem;border-radius:50%;background:color-mix(in srgb,var(--accent) 70%,transparent)}.pp-omni{max-width:30rem;margin-inline:auto}.pp-omni__reload{width:100%}.pp-omni__sec{border:1px solid color-mix(in srgb,var(--sec) 45%,var(--ui-line));border-radius:10px;background:color-mix(in srgb,var(--sec) 6%,var(--ui-panel))}.pp-omni__sec>summary{list-style:none;display:flex;align-items:center;gap:.6rem;padding:.7rem .8rem;cursor:pointer;font-family:var(--font-display);font-size:.9rem;color:var(--text)}.pp-omni__sec>summary::-webkit-details-marker{display:none}.pp-omni__sec>summary:before{content:"";width:.4rem;height:.4rem;border-right:1.5px solid var(--sec);border-bottom:1.5px solid var(--sec);transform:rotate(-45deg);transition:transform var(--duration-base) var(--ease-out)}.pp-omni__sec[open]>summary:before{transform:rotate(45deg)}.pp-omni__sec>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.pp-omni__content{display:flex;flex-direction:column;gap:.5rem;padding:0 .8rem .8rem}.pp-omni__thumbs{display:flex;gap:.5rem}.pp-ball{width:3rem;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d9a066,#7a4a22 55%,#2a170a)}.pp-ball--flat{border-radius:6px;background:radial-gradient(circle at 30% 40%,rgba(40,20,5,.8) 0 12%,transparent 13%),radial-gradient(circle at 70% 60%,rgba(40,20,5,.7) 0 10%,transparent 11%),#b07840}.pp-view{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:.6rem 0 .2rem}.pp-view__glasses{width:9rem;color:var(--text)}.pp-view__glasses path{transition:fill var(--duration-slow) var(--ease-out)}.pp-view__name{font-family:var(--font-mono);font-size:.75rem}.pp-view__nav{display:flex;align-items:center;gap:.8rem}.pp-view__dots{display:flex;gap:.3rem}.pp-view__dots i{width:.35rem;height:.35rem;border-radius:50%;background:#ffffff40}.pp-view__dots i.is-on{background:var(--sec)}.pp-maya__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.5rem}.pp-maya__grid .pp-btn{justify-content:flex-start;padding:.4rem .6rem}.pp-swatch{width:.8rem;height:.8rem;border-radius:50%;background:var(--c, #fff);flex-shrink:0}.pp-swatch--checker{border-radius:2px;background:repeating-conic-gradient(#ddd 0,#ddd 25%,#333 0,#333 50%) 0 0 / .4rem .4rem}.pp-swatch--arrow{border-radius:2px;background:repeating-linear-gradient(45deg,#ddd 0,#ddd 2px,#333 2px,#333 4px)}.pp-tree,.pp-tree ul{list-style:none;padding:0}.pp-tree ul{padding-left:.9rem;margin:.15rem 0 .3rem;border-left:1px solid var(--ui-line)}.pp-tree li{padding:.15rem .3rem}.pp-tree>li{color:var(--text)}.pp-tree ul li{color:var(--text-dim)}.pp-tree .is-picked{color:#0a0a0a;background:var(--accent);border-radius:4px}.pp-seg{display:flex;border:1px solid var(--ui-line);border-radius:8px;overflow:hidden}.pp-seg>span{flex:1;text-align:center;padding:.45rem .2rem;color:var(--text-dim)}.pp-seg>span+span{border-left:1px solid var(--ui-line)}.pp-seg>.is-on{background:var(--accent-2);color:#0a0a0a}.pp-log{font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim);padding:.6rem;border-radius:8px;background:#0b0b0b;border:1px solid var(--ui-line);overflow-x:auto}.pp-log p{white-space:nowrap}.pp-log p+p{margin-top:.3rem}.pp-log b{color:var(--accent);font-weight:500}.pp-log i{color:var(--accent-2);font-style:normal}.pp-log--term{color:color-mix(in srgb,var(--accent) 75%,var(--text-dim))}.pp-cursor{animation:pp-blink 1s steps(1) infinite}@keyframes pp-blink{50%{opacity:0}}.pp-slide{aspect-ratio:16 / 9;display:grid;grid-template-columns:1fr 1.3fr;gap:4%;padding:4%;border-radius:6px;background:#ece8e1;color:#1a1a1a}.pp-slide svg{width:100%;height:auto;color:#1a1a1a}.pp-slide__hero{position:relative;display:flex;flex-direction:column;justify-content:center;gap:4%;min-width:0}.pp-slide__title{font-family:var(--font-display);font-weight:700;font-size:clamp(.7rem,1.6vw,1rem)}.pp-slide__sub{font-size:.6rem;color:#666}.pp-slide__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6%;align-content:center}.pp-slide__grid>div{display:flex;flex-direction:column;gap:.3rem}.pp-bar{display:block;height:.25rem;border-radius:2px;background:#bdb7ad}.pp-bar--short{width:60%}.pp-badge{position:absolute;top:0;right:0;font-size:.55rem;font-weight:700;padding:.15rem .35rem;border-radius:4px;background:#1a1a1a;color:#ece8e1}.pp-caption{font-size:.72rem;color:var(--text-dim);text-align:center}@media(max-width:480px){.pp-grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.pp-row .pp-label{width:3.6rem}}@media(prefers-reduced-motion:reduce){.pp-cursor{animation:none}.pp-omni__sec>summary:before,.pp-view__glasses path,.pp-index__tile{transition:none}}.pp-maya__tree{grid-column:1 / -1}.pp-maya__split{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.8rem;align-items:end}.pp-maya__rename{display:flex;flex-direction:column;gap:.6rem}@media(max-width:560px){.pp-maya__grid>.pp-group:not(.pp-maya__tree)>.pp-btn:nth-of-type(n+5){display:none}}.pp-win .pp-btn,.pp-win .pp-tabs>span,.pp-win .pp-seg>span,.pp-win .pp-check,.pp-win .pp-chk,.pp-win .pp-tree ul li,.pp-win .pp-table li:not(.pp-table__head){cursor:pointer;-webkit-user-select:none;user-select:none}.pp-win .pp-btn{position:relative;overflow:hidden;transition:border-color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.pp-win .pp-tabs>span,.pp-win .pp-seg>span,.pp-win .pp-tree ul li,.pp-win .pp-table li{transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.pp-win .pp-btn:hover{border-color:color-mix(in srgb,var(--accent) 60%,transparent);background-color:#2a2a2a}.pp-win .pp-btn--primary:hover{background-color:color-mix(in srgb,var(--accent) 85%,#fff)}.pp-win .pp-btn--ghost:hover{background-color:color-mix(in srgb,var(--accent-2) 12%,transparent);border-color:var(--accent-2)}.pp-win .pp-tabs>span:not(.is-on):hover,.pp-win .pp-seg>span:not(.is-on):hover{color:var(--text)}.pp-win .pp-seg>span:not(.is-on):hover{background-color:#ffffff0d}.pp-win .pp-tree ul li:not(.is-picked):hover,.pp-win .pp-table li:not(.pp-table__head):not(.is-picked):hover{color:var(--text);background-color:#ffffff0d}.pp-win .pp-check:hover,.pp-win .pp-chk:hover:before{border-color:var(--accent)}.pp-omni__sec>summary:hover{background-color:color-mix(in srgb,var(--sec) 10%,transparent);border-radius:10px}}.pp-win .pp-btn:active{transform:scale(.96)}.pp-win .pp-btn.is-hit{animation:pp-hit var(--duration-slow) var(--ease-out)}@keyframes pp-hit{0%{box-shadow:inset 0 0 0 1px var(--accent)}}.pp-win .pp-btn.is-running{color:var(--text)}.pp-win .pp-btn.is-running:after{content:"";position:absolute;inset:auto 0 0 0;height:2px;background:var(--accent);transform-origin:left;animation:pp-run .9s linear forwards}@keyframes pp-run{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.pp-win .pp-btn.is-done{background:color-mix(in srgb,var(--accent) 18%,var(--ui-btn));border-color:var(--accent);color:var(--accent)}.pp-win .pp-btn--primary.is-running,.pp-win .pp-btn--primary.is-done{background:#2a1508;color:var(--accent)}.pp-win .pp-btn.is-done:before{content:"✓";font-weight:600}.pp-panel{display:flex;flex-direction:column;gap:.6rem}.pp-panel[hidden]{display:none}.pp-win .pp-table li.is-picked,.pp-tree .is-picked{color:#0a0a0a;background:var(--accent);border-radius:4px}.pp-win .pp-table li.is-picked .pp-code{color:#0a0a0a}.pp-table li{padding-inline:.3rem}.pp-table--c3 li{display:grid;grid-template-columns:1.6fr .8fr 1fr;gap:.4rem}.pp-table--kv li>:last-child{color:var(--text-dim)}.pp-chip{margin-left:auto;padding:.15rem .5rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--sec, var(--accent)) 55%,transparent);color:var(--sec, var(--accent));font-family:var(--font-body);font-size:.75rem;letter-spacing:.02em}.pp-omni__mtlx{align-self:center;font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim)}.pp-omni__mtlx i{font-style:normal;color:var(--sec)}.pp-tabs--small>span{padding:.3rem .5rem;font-size:.72rem}.pp-maya__preview{font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim);overflow-wrap:anywhere}.pp-maya__preview b{color:var(--accent);font-weight:500}.pp-maya__info{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:.5rem}.pp-tool__highlights{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.4rem .75rem;margin:-.5rem 0 2.25rem}.pp-tool__highlights li{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-size:var(--fs-base);color:var(--text)}.pp-tool__highlights li+li:before{content:"";width:3px;height:3px;margin-right:.5rem;border-radius:50%;background:var(--accent)}@media(prefers-reduced-motion:reduce){.pp-win .pp-btn,.pp-win .pp-tabs>span,.pp-win .pp-seg>span,.pp-win .pp-tree ul li,.pp-win .pp-table li{transition:none}.pp-win .pp-btn:active{transform:none}.pp-win .pp-btn.is-hit,.pp-win .pp-btn.is-running:after{animation:none}}.cb-demo__grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:clamp(1.5rem,4vw,3rem);align-items:start}.cb-demo__tabs{display:flex;flex-direction:column;gap:.75rem}.cb-demo__tab{text-align:left;display:flex;flex-direction:column;gap:.3rem;padding:1rem 1.1rem;border:1px solid rgba(255,255,255,.1);border-radius:1rem;background:var(--bg);color:var(--text-dim);font:inherit;cursor:pointer;transition:border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.cb-demo__tab.is-on{border-color:var(--accent)}@media(hover:hover){.cb-demo__tab:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent)}}.cb-demo__tab.is-on{color:var(--text)}.cb-demo__tab-name{font-family:var(--font-display);font-weight:600;color:var(--text)}.cb-demo__tab-text{font-size:var(--fs-sm)}.cb-chat{font-size:.9rem}.cb-chat__bar{display:flex;align-items:center;gap:.5rem;padding:.7rem .9rem;border-bottom:1px solid var(--ui-line);font-weight:500}.cb-chat__dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--accent)}.cb-chat__ro{margin-left:auto;padding:.15rem .5rem;border:1px solid var(--ui-line);border-radius:99px;color:var(--text-dim);font-size:.75rem}.cb-chat__body{display:none;flex-direction:column;gap:.7rem;padding:1rem .9rem;min-height:25rem}.cb-chat__body.is-on{display:flex}.cb-msg{margin:0;line-height:1.45;padding:.65rem .85rem;border-radius:12px;max-width:88%}.cb-msg p{margin:0 0 .6rem}.cb-msg--user{align-self:flex-end;background:color-mix(in srgb,var(--accent) 18%,transparent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--text)}.cb-msg--bot{align-self:flex-start;min-width:0;background:var(--ui-panel);border:1px solid var(--ui-line)}.cb-tool{margin:0;align-self:flex-start;padding:.25rem .6rem;border-radius:6px;background:var(--ui-btn);color:color-mix(in srgb,var(--text) 70%,transparent);font-family:var(--font-mono);font-size:.8rem}.cb-bars{display:flex;align-items:flex-end;gap:.6rem;height:7rem;padding:0 .3rem;border-bottom:1px solid var(--ui-line);margin-bottom:1.4rem}.cb-bars span{position:relative;flex:1;height:var(--h);border-radius:4px 4px 0 0;background:var(--accent-2)}.cb-bars i{position:absolute;top:100%;left:0;right:0;margin-top:.2rem;text-align:center;font-style:normal;font-size:.75rem;color:var(--text-dim)}.cb-src{display:flex;flex-wrap:wrap;gap:.4rem}.cb-src span,.cb-src em{padding:.25rem .65rem;border-radius:99px;font-size:.8rem;font-style:normal;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.cb-src .cb-src--b{color:var(--accent-2);border-color:color-mix(in srgb,var(--accent-2) 45%,transparent);background:color-mix(in srgb,var(--accent-2) 12%,transparent)}.cb-src em{margin-left:auto;color:var(--text-dim);border-color:var(--ui-line);background:none}.cb-src em+em{margin-left:0}.cb-choices{display:flex;flex-wrap:wrap;gap:.4rem}.cb-sheet{display:flex;flex-wrap:wrap;gap:.8rem;margin-bottom:.6rem}.cb-sheet__img{flex:0 0 6.5rem;aspect-ratio:4 / 3;border-radius:8px;border:1px solid var(--ui-line)}.cb-sheet dl{flex:1 1 12rem;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem 1rem;margin:0}.cb-sheet dt{color:var(--text-dim);font-size:.78rem}.cb-sheet dd{margin:0;overflow-wrap:anywhere}.cb-list{list-style:none;margin:0 0 .6rem;padding:0;display:flex;flex-direction:column;gap:.35rem}.cb-list li{display:grid;grid-template-columns:6.5rem 4.5rem minmax(0,1fr);align-items:center;gap:.6rem}.cb-list span{color:var(--text-dim)}.cb-list .cb-days{width:var(--w);padding:.15rem .4rem;border-radius:4px;background:color-mix(in srgb,var(--accent) 35%,transparent);color:var(--text);font-size:.75rem;text-align:right;white-space:nowrap}.cb-chat__input{display:flex;align-items:center;margin:0 .9rem .9rem;padding:.65rem .9rem;border:1px solid var(--ui-line);border-radius:99px;background:var(--ui-panel);color:var(--text)}@media(max-width:860px){.cb-demo__grid{grid-template-columns:minmax(0,1fr)}.cb-list li{grid-template-columns:6rem minmax(0,1fr)}.cb-list .cb-days{grid-column:1 / -1}}.cb-brain{min-width:0}.cb-brain{position:relative}.cb-brain__pause{position:absolute;right:0;bottom:0;display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:0 .75rem;border:0;background:none;color:var(--text-dim);font:inherit;font-size:var(--fs-xs);cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.cb-brain__pause:before{content:"";width:8px;height:10px;border-inline:3px solid currentColor;box-sizing:border-box}.cb-brain__pause.is-paused:before{width:0;height:0;border-inline:0;border-left:9px solid currentColor;border-block:5.5px solid transparent}.cb-brain__pause:hover{color:var(--text)}.cb-brain__pause:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cb-brain__pause[hidden]{display:none}.cb-brain canvas{display:block;width:100%;aspect-ratio:1.2}.cb-chat__body>*{opacity:0;transform:translateY(8px);transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.cb-chat__body>.is-shown{opacity:1;transform:none}.cb-bars span{transform-origin:bottom;transform:scaleY(0);transition:transform .7s var(--ease-out)}.is-shown .cb-bars span{transform:scaleY(1)}.is-shown .cb-bars span:nth-child(2){transition-delay:.06s}.is-shown .cb-bars span:nth-child(3){transition-delay:.12s}.is-shown .cb-bars span:nth-child(4){transition-delay:.18s}.is-shown .cb-bars span:nth-child(5){transition-delay:.24s}.cb-bars span:after{content:attr(data-v);position:absolute;bottom:calc(100% + .3rem);left:50%;transform:translate(-50%);padding:.15rem .4rem;border-radius:4px;color:color-mix(in srgb,var(--text) 80%,transparent);font-size:.75rem;white-space:nowrap;opacity:1;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-out)}.cb-bars span:hover{background:color-mix(in srgb,var(--accent-2) 75%,#fff)}.cb-bars span:hover:after{opacity:1}.cb-list .cb-days{transform-origin:left;transform:scaleX(0);transition:transform .7s var(--ease-out)}.is-shown .cb-list .cb-days{transform:scaleX(1)}.cb-list li:hover b{color:var(--accent)}.cb-choices .pp-btn{cursor:pointer}.is-waiting .cb-choices .pp-btn:not(:hover){animation:cb-pulse 1.6s var(--ease-out) infinite}.is-waiting .cb-choices .pp-btn:nth-child(2){animation-delay:.2s}.is-waiting .cb-choices .pp-btn:nth-child(3){animation-delay:.4s}@keyframes cb-pulse{50%{border-color:color-mix(in srgb,var(--accent) 60%,transparent)}}.cb-sheet__img{--hue: #3f4652;--frame: color-mix(in srgb, var(--hue) 55%, #fff);position:relative;background:linear-gradient(var(--frame),var(--frame)) 50% 44% / 12% 3px no-repeat,radial-gradient(circle at 35% 40%,color-mix(in srgb,var(--hue) 80%,#fff 10%),#171717 72%);transition:background var(--duration-base) var(--ease-out)}.cb-sheet__img:before,.cb-sheet__img:after{content:"";position:absolute;top:30%;width:34%;height:40%;border:3px solid var(--frame);border-radius:42% 42% 50% 50%;background:color-mix(in srgb,var(--hue) 35%,transparent);transition:border-color var(--duration-base) var(--ease-out),background var(--duration-base) var(--ease-out)}.cb-sheet__img:before{left:10%}.cb-sheet__img:after{right:10%}.cb-sheet dd{transition:color var(--duration-base) var(--ease-out)}.cb-typing{display:flex;gap:.25rem;padding:.75rem .85rem}.cb-typing i{width:.35rem;height:.35rem;border-radius:50%;background:var(--text-dim);animation:cb-dot 1s ease-in-out infinite}.cb-typing i:nth-child(2){animation-delay:.15s}.cb-typing i:nth-child(3){animation-delay:.3s}@keyframes cb-dot{30%{transform:translateY(-3px);opacity:.4}}.cb-chat__placeholder{color:var(--text-dim)}@media(prefers-reduced-motion:reduce){.cb-chat__body>*,.cb-bars span,.cb-list .cb-days{transition:none}.is-waiting .cb-choices .pp-btn,.cb-typing i{animation:none}}.cb-how{--cb-body: color-mix(in srgb, var(--text) 78%, transparent)}.cb-how__intro{max-width:46rem;margin-bottom:3rem;font-size:clamp(1.15rem,1.6vw,1.4rem);line-height:1.5;color:var(--cb-body)}.cb-how .cb-sub{margin:6rem 0 1.75rem;font-family:var(--font-display);font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:500;letter-spacing:-.01em;line-height:1.15;text-wrap:balance;color:var(--text)}.cb-details{grid-template-columns:repeat(6,minmax(0,1fr));gap:2.75rem clamp(1.5rem,4vw,3rem)}.cb-details .vt-detail{grid-column:span 2;padding-top:1.1rem;border-top:1px solid rgba(255,255,255,.1)}.cb-details .vt-detail h3{margin-bottom:.6rem;font-size:var(--fs-lg);color:var(--text)}.cb-details .vt-detail p{font-size:var(--fs-base);color:var(--cb-body)}.cb-details .cb-lead{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:1rem clamp(1.5rem,4vw,3rem);align-items:start;padding:1.75rem 0 2.25rem;border-top:1px solid var(--accent)}.cb-details .cb-lead h3{margin:0;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.12;letter-spacing:-.02em;text-wrap:balance}.cb-details .cb-lead p{font-size:clamp(1.05rem,1.4vw,1.2rem);line-height:1.55;color:var(--text)}.cb-lessons{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem clamp(2rem,6vw,5rem)}.cb-lessons .vt-detail h4{margin-bottom:.5rem;font-size:clamp(1.25rem,1.9vw,1.5rem);line-height:1.2;text-wrap:balance;color:var(--text)}.cb-lessons .vt-detail p{font-size:var(--fs-base);color:var(--cb-body)}.cb-limits{gap:1.5rem clamp(1.5rem,4vw,3rem)}.cb-limits .vt-detail{padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.cb-limits .vt-detail h4{margin-bottom:.35rem;font-size:var(--fs-base);color:var(--text-dim)}.cb-limits .vt-detail p{font-size:var(--fs-sm)}@media(max-width:1024px){.cb-details .vt-detail{grid-column:span 3}.cb-details .cb-lead,.cb-details .vt-detail:last-child{grid-column:1 / -1}}@media(max-width:860px){.cb-how .cb-sub{margin-top:4.5rem}.cb-details,.cb-lessons{grid-template-columns:minmax(0,1fr)}.cb-details .vt-detail,.cb-details .cb-lead,.cb-details .vt-detail:last-child{grid-column:1 / -1}.cb-details .cb-lead{grid-template-columns:minmax(0,1fr)}}.cb-design .cb-details .cb-lead{padding-top:1.5rem}.cb-retro__grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:3rem clamp(2rem,6vw,5rem);align-items:start}.cb-retro .cb-sub{margin-top:0}.cb-retro .cb-lessons{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem clamp(1.5rem,4vw,3rem)}.cb-retro__side{padding:1.5rem 1.5rem 1.75rem;border:1px solid rgba(255,255,255,.1);border-radius:1rem}.cb-retro .cb-limits{grid-template-columns:minmax(0,1fr);gap:1.25rem}.cb-retro .cb-limits .vt-detail{padding-top:1rem}.cb-retro .cb-limits .vt-detail:first-child{padding-top:0;border-top:0}@media(max-width:1024px){.cb-retro__grid{grid-template-columns:minmax(0,1fr)}}.cb-retro .cb-sub--hidden{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.cb-retro .cb-sub{margin-bottom:1.5rem;font-size:clamp(1.5rem,2.4vw,1.9rem);color:var(--text)}.cb-retro__grid{grid-template-columns:minmax(0,1fr);gap:4rem}.cb-retro .cb-lessons{grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#ffffff1f;border:1px solid rgba(255,255,255,.12);border-radius:1rem;overflow:hidden}.cb-retro .cb-lessons .vt-detail{padding:clamp(1.5rem,3vw,2.25rem);background:var(--bg);transition:background var(--duration-base) var(--ease-out)}.cb-retro .cb-lessons .vt-detail:hover{background:#111}.cb-retro .cb-lessons .vt-detail h4{margin-bottom:.75rem}.cb-retro .cb-lessons .vt-detail h4:before{content:"";display:block;width:1.5rem;height:2px;margin-bottom:1rem;background:color-mix(in srgb,var(--accent) 70%,transparent)}.cb-retro__side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3fr);gap:1.5rem clamp(1.5rem,4vw,3rem);padding:2rem 0 0;border:0;border-top:1px solid rgba(255,255,255,.12);border-radius:0}.cb-retro .cb-limits{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem clamp(1.5rem,3vw,2.5rem)}.cb-retro .cb-limits .vt-detail,.cb-retro .cb-limits .vt-detail:first-child{padding:0;border:0}@media(max-width:860px){.cb-retro__side,.cb-retro .cb-limits{grid-template-columns:minmax(0,1fr)}}@media(max-width:640px){.cb-retro .cb-lessons{grid-template-columns:minmax(0,1fr)}}.cb-demo__tab:focus-visible,.cb-choices .pp-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){.cb-demo__tab,.cb-retro .cb-lessons .vt-detail,.cb-sheet__img,.cb-sheet dd,.cb-bars span:after,.cb-chat__body>*,.cb-bars span,.cb-list .cb-days{transition:none}}@media(max-width:1024px){.cb-retro .cb-lessons{grid-template-columns:minmax(0,1fr)}}@media(pointer:coarse){.cb-choices .pp-btn{min-height:44px;padding-inline:1rem}}.cb-retro__side{border-top:1px solid var(--accent);padding-top:2.5rem}.cb-retro .cb-retro__side .cb-sub{margin-bottom:0;font-size:clamp(1.5rem,2.4vw,1.9rem);color:var(--text)}.cb-retro .cb-limits{grid-template-columns:minmax(0,1fr);gap:2.5rem}.cb-limits .vt-detail:nth-child(1) h4{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.cb-limits .vt-detail:nth-child(1) p{max-width:22ch;font-family:var(--font-display);font-size:clamp(1.9rem,4.2vw,3.4rem);font-weight:600;line-height:1.08;letter-spacing:-.02em;text-wrap:balance;color:var(--text)}.cb-limits .vt-detail:nth-child(2){max-width:44rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.1)}.cb-limits .vt-detail:nth-child(2) p{font-size:var(--fs-base);color:var(--cb-body)}#retro+.project-back{padding-top:2rem;padding-bottom:2rem}.cb-chat__replay{margin-left:auto;padding:.15rem .75rem;border:0;border-radius:99px;background:var(--knob-bg);background-blend-mode:var(--knob-blend);box-shadow:var(--knob-shadow);color:#e6e6e6;font:inherit;font-size:.75rem;cursor:pointer;transition:color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.cb-chat__replay:hover{color:var(--accent)}.cb-chat__replay:active{transform:translateY(1px);box-shadow:var(--knob-shadow-pressed)}.cb-chat__replay+.cb-chat__ro{margin-left:0}.cb-chat__replay[hidden]+.cb-chat__ro{margin-left:auto}.cb-chat__replay:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.cb-path{counter-reset:stage;list-style:none;margin:0 0 2rem;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem clamp(1rem,2.5vw,2rem)}.cb-path li{display:flex;flex-direction:column;gap:.35rem;padding-top:.8rem;border-top:2px solid var(--ui-line);transition:border-color var(--duration-base) var(--ease-out)}.cb-path li.is-lit{border-top-color:var(--accent)}.cb-path__name:before{counter-increment:stage;content:counter(stage,decimal-leading-zero);margin-right:.5em;color:var(--accent);font-variant-numeric:tabular-nums}.cb-path__name{font-family:var(--font-display);font-weight:600;color:var(--text-dim);transition:color var(--duration-base) var(--ease-out)}.cb-path li.is-lit .cb-path__name{color:var(--text)}.cb-path__text{font-size:var(--fs-sm);line-height:1.45;color:color-mix(in srgb,var(--text) 78%,transparent)}@media(max-width:860px){.cb-path{grid-template-columns:minmax(0,1fr);gap:0;margin-bottom:1.5rem}.cb-path li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:.75rem;padding-block:.7rem}}.cb-details{gap:0}.cb-details .vt-detail:not(.cb-lead){grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:.5rem clamp(1.5rem,4vw,3rem);align-items:baseline;padding-block:1.1rem}.cb-details .vt-detail:not(.cb-lead) h3{margin:0}.cb-details .vt-detail:not(.cb-lead) p{margin:0}.cb-retro .cb-lessons{grid-template-columns:minmax(0,1fr);gap:0;background:none;border:0;border-radius:0;overflow:visible}.cb-retro .cb-lessons .vt-detail,.cb-retro .cb-lessons .vt-detail:hover{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:.5rem clamp(1.5rem,4vw,3rem);align-items:baseline;padding:1.1rem 0;border-top:1px solid rgba(255,255,255,.1);background:none}.cb-retro .cb-lessons .vt-detail h4,.cb-retro .cb-lessons .vt-detail p{margin:0}.cb-retro .cb-lessons .vt-detail h4:before{content:none}@media(max-width:860px){.cb-details .vt-detail:not(.cb-lead),.cb-retro .cb-lessons .vt-detail,.cb-retro .cb-lessons .vt-detail:hover{grid-template-columns:minmax(0,1fr)}.cb-demo__tabs{gap:.5rem}.cb-demo__tab:not(.is-on){padding-block:.7rem}.cb-demo__tab:not(.is-on) .cb-demo__tab-text{display:none}}@media(pointer:coarse){.cb-chat__replay{min-height:44px;padding-inline:1rem}}@media(prefers-reduced-motion:reduce){.cb-path li,.cb-path__name,.cb-chat__replay{transition:none}}.cb-chat{line-height:1.4}.cb-details .vt-detail:not(.cb-lead) p,.cb-retro .cb-lessons .vt-detail p{max-width:65ch}.cb-chat__replay{min-height:2rem}.cb-msg .cb-choices__hint{display:none;margin:.6rem 0 0;color:var(--text-dim);font-size:.8rem}.is-waiting .cb-msg .cb-choices__hint{display:block}@media(max-width:560px){.cb-chat__body{min-height:16rem}}.project-facts{display:flex;flex-wrap:wrap;gap:.75rem 2.5rem;margin:1.5rem 0 0}.project-facts div{display:flex;flex-direction:column;gap:.2rem}.project-facts dt{color:var(--text-dim);font-size:var(--fs-xs)}.project-facts dd{margin:0;color:var(--text)}.cb-pitch,.cb-proof{max-width:34rem;margin:1.25rem 0 0;font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.45;color:var(--text)}.cb-proof a{color:var(--text);text-decoration:underline;text-underline-offset:.2em;white-space:nowrap}.cb-proof{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;font-size:var(--fs-base);color:var(--text-dim)}.cb-proof__num{flex:none;font-family:var(--font-display);font-size:clamp(3rem,6vw,4.25rem);font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--accent)}.cb-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2rem clamp(2rem,5vw,4rem);align-items:center}.cb-hero__text{min-width:0}.cb-desc .project-description-grid{grid-template-columns:minmax(0,1fr)}.cb-desc .project-description-text{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem clamp(2rem,5vw,4rem)}.cb-desc .project-description-text p,.cb-desc.project-description p+p{max-width:34rem;margin:0;font-size:var(--fs-md);line-height:1.55}@media(max-width:860px){.cb-hero,.cb-desc .project-description-text{grid-template-columns:minmax(0,1fr)}}.cb-chat__replay{position:relative}.cb-chat__replay:after{content:"";position:absolute;top:-.6rem;right:-.4rem;bottom:-.6rem;left:-.4rem}.cb-bars{margin-top:1.4rem}.cb-retro .vt-detail h4{font-family:var(--font-display);line-height:1.2;letter-spacing:-.01em;color:var(--text)}.cb-limits .vt-detail:nth-child(2) p{max-width:65ch}.cb-chat{scroll-margin-top:5rem}.cb-chat__stage{display:none}@media(max-width:860px){.cb-chat__stage:not(:empty){display:inline-block;padding:.1rem .5rem;border-radius:99px;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);font-size:.75rem}}.cb-chat__bar{flex-wrap:wrap;row-gap:.4rem}.cb-chat__stage,.cb-chat__ro,.cb-chat__replay{white-space:nowrap}.cb-chat__bar{flex-wrap:nowrap}.cb-chat__stage{min-width:0;overflow:hidden;text-overflow:ellipsis}.pp-tool__top{display:inline-block;margin-top:1.5rem;padding-block:.6rem;color:var(--accent);font-size:var(--fs-base)}.pp-tool__top:hover{text-decoration:underline}@media(max-width:700px){.hero-tagline br{display:none}.hero{gap:1rem;padding-top:5.5rem}.hero-subtitle{font-size:var(--fs-md);margin-top:.25rem}.hero-tagline{font-size:var(--fs-base);line-height:1.5;margin-top:0}#hero-canvas{margin-top:.75rem}}.hw-scroll-hint{display:none;margin-top:.5rem;color:var(--text-dim);font-size:var(--fs-sm)}@media(max-width:900px){.hw-scroll-hint{display:block}}.pp-rail{display:none}@media(min-width:1280px){.pp-rail{position:fixed;top:50%;left:1.25rem;z-index:5;display:block;transform:translateY(-50%);opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease-out)}.pp-rail.is-shown{opacity:1;pointer-events:auto}.pp-rail ul{counter-reset:tool;list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.pp-rail a{position:relative;display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid rgba(255,255,255,.1);border-radius:50%;background:var(--bg);opacity:.55;transition:opacity var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.pp-rail a:hover,.pp-rail a:focus-visible,.pp-rail a.is-on{opacity:1}.pp-rail a.is-on{border-color:var(--accent)}.pp-rail a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pp-rail img{display:block}.pp-rail li{counter-increment:tool}.pp-rail a:before{content:counter(tool);position:absolute;right:-.3rem;bottom:-.3rem;display:grid;place-items:center;width:1.15rem;height:1.15rem;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:var(--bg);font-family:var(--font-display);font-size:var(--fs-xs);line-height:1;color:var(--text)}.pp-rail__name{position:absolute;left:calc(100% + .6rem);top:50%;padding:.3rem .6rem;border:1px solid rgba(255,255,255,.1);border-radius:.4rem;background:var(--bg);font-family:var(--font-display);font-size:var(--fs-sm);white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-4px,-50%);transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.pp-rail a:hover .pp-rail__name,.pp-rail a:focus-visible .pp-rail__name,.pp-rail a.is-flash .pp-rail__name{opacity:1;transform:translateY(-50%)}}@media(prefers-reduced-motion:reduce){.pp-rail,.pp-rail a,.pp-rail__name{transition:none}}@media(pointer:coarse){.footer a,.nav-logo,.pp-omni .pp-btn{position:relative}.footer a:after,.nav-logo:after,.pp-omni .pp-btn:after{content:"";position:absolute;inset:-.4rem min(-.3rem,calc(50% - 22px))}.featured-links{gap:1.5rem}.featured-links a{position:relative}.featured-links a:after{content:"";position:absolute;top:-.75rem;right:0;bottom:-.75rem;left:0}.pp-omni__sec>summary{min-height:44px}}.cb-results{margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid color-mix(in srgb,var(--accent) 60%,transparent)}.cb-results--estimate{margin-top:3.5rem;border-top-color:#ffffff24}.cb-results__tag{margin:0 0 1.25rem;font-family:var(--font-display);font-size:var(--fs-base);font-weight:500;color:var(--accent)}.cb-results--estimate .cb-results__tag{color:var(--text-dim)}.cb-facts{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem clamp(1.5rem,3vw,2.5rem)}.cb-facts div{display:flex;flex-direction:column-reverse;gap:.35rem}.cb-facts dd{margin:0;font-family:var(--font-display);font-size:clamp(3rem,6vw,4.75rem);font-weight:700;line-height:.95;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--accent)}.cb-facts dt{font-size:var(--fs-base);color:var(--text-dim)}.cb-results__lead{max-width:44rem;margin:2rem 0 0;font-size:var(--fs-md);line-height:1.55;color:var(--text)}.cb-results__lead strong{color:var(--accent)}.cb-before{list-style:none;margin:0;padding:0;display:grid;gap:0}.cb-before li{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr);gap:.25rem 1.5rem;align-items:baseline;padding:.9rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.cb-before__task{color:var(--text);font-family:var(--font-display)}.cb-before__was{color:var(--text-dim)}.cb-before .cb-before__head{padding-block:0 .5rem;font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.cb-before .cb-before__head span:last-child{color:var(--accent)}.cb-before__now{color:var(--accent);font-family:var(--font-display);font-weight:600}.cb-before__now:before{content:"→ ";color:var(--text-dim);font-weight:400}.cb-results__note{max-width:38rem;margin:1.5rem 0 0;font-size:var(--fs-base);line-height:1.55;color:var(--text-dim)}.cb-results__next{max-width:44rem;margin:3rem 0 0;font-size:var(--fs-base);line-height:1.55;color:var(--text-dim)}@media(max-width:700px){.cb-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.cb-before li{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cb-before__task{grid-column:1 / -1}.cb-before .cb-before__head span:first-child{display:none}}.featured-lead{max-width:44rem;margin:-.5rem 0 1.5rem;font-size:var(--fs-md);line-height:1.55;color:var(--text)}@media(max-width:560px){.nav nav a[href="#skills"]{display:none}}@media(max-width:560px){.project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem}}
