.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/instrument-sans-latin-wght-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2)format("woff2")}:root{color-scheme:dark;--bg:#0b0b0b;--bg-2:#111;--surface:#141414;--fg:#f4f4f2;--fg-soft:#d6d6d4;--muted:#8d8d8b;--line:#ffffff14;--line-strong:#ffffff38;--ink:#fff;--nav-bg:#0b0b0b;--scroll:#2a2a2a;--accent:#ffb000;--accent-text:#ffb000;--tone-mix:100%;--accent-glow:#ffb0001f;--header-h:72px;--ease:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.23, 1, .32, 1);--ease-out-soft:cubic-bezier(.22, 1, .36, 1);--gradient-heading:linear-gradient(to right, var(--fg), var(--muted));--font-body:"Instrument Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--font-serif:var(--font-body)}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;--bg:#f7f7f5;--bg-2:#efefec;--surface:#fff;--fg:#111;--fg-soft:#3a3a38;--muted:#6b6b68;--line:#00000014;--line-strong:#00000038;--ink:#000;--nav-bg:#f7f7f5;--scroll:#d0d0cc;--accent:#a86f00;--accent-text:#7d5200;--tone-mix:50%;--accent-glow:#ffb00033}}:root[data-theme=light]{color-scheme:light;--bg:#f7f7f5;--bg-2:#efefec;--surface:#fff;--fg:#111;--fg-soft:#3a3a38;--muted:#6b6b68;--line:#00000014;--line-strong:#00000038;--ink:#000;--nav-bg:#f7f7f5;--scroll:#d0d0cc;--accent:#a86f00;--accent-text:#7d5200;--tone-mix:50%;--accent-glow:#ffb00033}*{box-sizing:border-box;margin:0}html{background:var(--bg);color:var(--fg);scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}body{font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6;overflow-x:hidden}a{color:inherit;transition:color .25s var(--ease);text-decoration:none}img{max-width:100%;height:auto;display:block}ul,ol{padding:0;list-style:none}h1,h2,h3{letter-spacing:-.02em;font-weight:600;line-height:1.1}::selection{background:color-mix(in srgb, var(--ink) 18%, transparent);color:inherit}.mono{font-family:var(--font-body);color:var(--muted);font-size:.8rem}.gradient{color:var(--fg)}.background{z-index:-1;background:var(--bg);pointer-events:none;position:fixed;inset:0;overflow:hidden}.glow{background:0 0;width:90vw;height:70vh;position:absolute;top:-30vh;left:50%;transform:translate(-50%)}.grid{opacity:.6;background-position:50%;background-repeat:no-repeat;background-size:min(720px,110vw);position:absolute;inset:0;-webkit-mask-image:radial-gradient(#000 0%,#0000 75%);mask-image:radial-gradient(#000 0%,#0000 75%)}.nav{top:0;z-index:100;height:var(--header-h);background:var(--nav-bg);border-bottom:1px solid var(--line);position:fixed;inset-inline:0}.nav-inner{justify-content:space-between;align-items:center;gap:2rem;max-width:1320px;height:100%;margin:0 auto;padding:0 2rem;display:flex}.brand{flex-shrink:0;width:112px;height:100%;position:relative}.brand-avatar{border:2px solid var(--line);background:var(--bg-2);width:112px;height:112px;transition:border-color .3s var(--ease), transform .3s var(--ease-spring), box-shadow .3s var(--ease);border-radius:9999px;position:absolute;top:calc(100% - 56px);left:0;overflow:hidden;box-shadow:0 14px 34px -14px #000000b3}@media (hover:hover) and (pointer:fine){.brand-avatar:hover{border-color:var(--accent);box-shadow:0 16px 34px -14px #000000b3, 0 0 20px var(--accent-glow);transform:translateY(-2px)}}.brand-avatar img{object-fit:cover;width:100%;height:100%}.nav-list{align-items:center;gap:2.5rem;display:flex}.nav-list .nav-home{display:none}.nav-link{color:var(--fg-soft);align-items:baseline;gap:.5rem;padding:.5rem 0;font-size:1.05rem;font-weight:600;display:inline-flex}.nav-text{display:inline-block;position:relative}.nav-text:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .4s var(--ease);position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}@media (hover:hover) and (pointer:fine){.nav-link:hover .nav-text:after,.nav-link.active .nav-text:after{transform:scaleX(1)}}.nav-link:hover{color:var(--fg)}.nav-actions{align-items:center;gap:1.25rem;display:flex}.menu-btn{display:none}.lang{font:.85rem var(--font-body);color:var(--fg-soft);background:var(--bg-2);border-radius:9999px;padding:.5rem .9rem;transition:color .3s,background-color .3s,transform .16s ease-out}.lang:hover{color:var(--fg);background:var(--surface)}.cta{background:var(--fg);color:var(--bg);transition:background-color .3s var(--ease), transform .3s var(--ease-spring), box-shadow .3s var(--ease);border-radius:9999px;padding:.7rem 1.5rem;font-size:.95rem;font-weight:600}@media (hover:hover) and (pointer:fine){.cta:hover{background:var(--accent);transform:translateY(-1px)}}@media (width<=860px){.nav-list{top:var(--header-h);opacity:0;visibility:hidden;transition:opacity .2s var(--ease), transform .2s var(--ease), visibility 0s .2s;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;padding:.5rem 1.25rem 1.25rem;position:fixed;left:0;right:0;transform:translateY(-6px);box-shadow:0 18px 40px -24px #000a}.nav.is-open .nav-list{opacity:1;visibility:visible;transition-delay:0s;transform:none}.nav-list .nav-link{border-bottom:1px solid var(--line);padding:.9rem 0;font-size:1.1rem}.nav-list .nav-link:last-child{border-bottom:0}.nav-list .nav-home{display:flex}.menu-btn{background:var(--bg-2);width:44px;height:44px;color:var(--fg);cursor:pointer;border:0;border-radius:9999px;justify-content:center;align-items:center;margin-left:-10px;display:inline-flex}.menu-btn span,.menu-btn span:before,.menu-btn span:after{width:18px;height:1.5px;transition:transform .3s var(--ease), opacity .3s var(--ease);background:currentColor;display:block}.menu-btn span{position:relative}.menu-btn span:before,.menu-btn span:after{content:"";position:absolute;left:0}.menu-btn span:before{top:-6px}.menu-btn span:after{top:6px}.nav.is-open .menu-btn span{background:0 0}.nav.is-open .menu-btn span:before{top:0;transform:rotate(45deg)}.nav.is-open .menu-btn span:after{top:0;transform:rotate(-45deg)}.brand{display:none}.nav-link{white-space:nowrap;font-size:.9rem}.nav-inner{padding:0 1.25rem}.brand{width:80px}.brand-avatar{width:80px;height:80px;top:calc(100% - 40px)}}@media (width<=360px){.brand{width:64px}.brand-avatar{width:64px;height:64px;top:calc(100% - 32px)}}.hero{min-height:100svh;padding:calc(var(--header-h) + 88px) 6vw 0;flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}.hero-content{z-index:2;width:100%;max-width:1320px;margin:0 auto;position:relative}.hero-eyebrow{margin-bottom:1.5rem}.hero-title{letter-spacing:-.03em;flex-direction:column;gap:.4rem;margin-bottom:2.5rem;font-size:clamp(1.75rem,7.2vw,6.4rem);font-weight:600;line-height:1.04;display:flex}.line{display:block}.line-dev{color:var(--fg);margin-bottom:-.14em;padding-bottom:.14em}.line-accent{font-family:var(--font-serif);letter-spacing:-.01em;color:var(--muted);font-weight:400}.hero-sub{color:var(--muted);max-width:680px;margin:0 0 3rem;font-size:clamp(1rem,1.6vw,1.2rem);line-height:1.7}.hero-actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.btn{font:.95rem var(--font-body);transition:background-color .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease-spring), box-shadow .3s var(--ease);border-radius:9999px;align-items:center;gap:.55rem;padding:.75rem 1.4rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--fg);color:var(--bg)}@media (hover:hover) and (pointer:fine){.btn-primary:hover{background:var(--accent);color:var(--bg);transform:translateY(-1px)}}.btn-ghost{color:var(--muted);background:var(--bg-2)}@media (hover:hover) and (pointer:fine){.btn-ghost:hover{color:var(--fg);background:var(--surface);transform:translateY(-1px)}}.tacho{pointer-events:none;user-select:none;width:min(460px,34vw);position:absolute;bottom:0;right:0}.tacho-plot{gap:18px;display:grid;position:relative}.lane{grid-template-columns:130px 1fr;align-items:center;gap:14px;display:grid}.lane-label{font:12px var(--font-mono);color:var(--fg);opacity:.85;text-shadow:0 0 6px var(--bg), 0 0 2px var(--bg);letter-spacing:.03em}.track{background:color-mix(in srgb, var(--ink) 4%, transparent);border-radius:4px;height:22px;position:relative;overflow:hidden}.seg{background:var(--accent);opacity:.22;transform-origin:0;animation:grow .9s var(--ease) var(--d,0s) backwards;transition:opacity .6s var(--ease), box-shadow .6s var(--ease);position:absolute;top:0;bottom:0}.seg-0{background:var(--ink)}.seg-2{background:color-mix(in srgb, var(--ink) 70%, transparent)}.seg-3{background:#ffb000}.seg.passed{opacity:.75}.seg.current{opacity:1;box-shadow:0 0 16px var(--accent-glow), inset 0 0 0 1px color-mix(in srgb, var(--ink) 25%, transparent);animation:grow .9s var(--ease) var(--d,0s) backwards, glow 1.6s var(--ease) 2}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.needle-rail{pointer-events:none;position:absolute;inset:-8px 0 -8px 144px}.trail{transform-origin:0;background:#ffb0002e;width:100%;position:absolute;top:0;bottom:0;left:0;transform:scaleX(0)}.needle{background:var(--accent);width:2px;box-shadow:0 0 10px var(--accent);margin-left:-1px;position:absolute;top:0;bottom:0;left:0}.tacho-hours{font:11px var(--font-mono);color:var(--muted);opacity:.75;justify-content:space-between;margin:12px 0 0 144px;display:flex}.tacho-status{font:13px var(--font-mono);color:var(--fg);align-items:center;gap:.6rem;margin:24px 0 0 144px;display:flex}.dot{background:var(--accent);width:8px;height:8px;animation:ping 1.8s var(--ease) 3;border-radius:50%}@keyframes ping{0%{box-shadow:0 0 #ffb00099}to{box-shadow:0 0 0 10px #ffb00000}}.tacho-note{opacity:.6;margin:12px 0 0 144px;font-size:.66rem}@media (width<=1100px){.tacho{display:none}}@media (width<=860px){.hero{padding:calc(var(--header-h) + 56px) 1.5rem 0}}.scroll-indicator{z-index:2;font:.85rem var(--font-body);color:var(--muted);flex-direction:column;align-items:center;gap:1.2rem;display:flex;position:absolute;bottom:2.5rem;right:3rem}.scroll-indicator span{writing-mode:vertical-rl}.line-v{background:repeating-linear-gradient(to bottom, var(--accent) 0 6px, transparent 6px 12px);opacity:.6;width:1px;height:64px;animation:1.2s linear 4 road}@keyframes road{0%{background-position:0 0}to{background-position:0 12px}}@keyframes drip{0%{opacity:0;transform:scaleY(0)}35%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}@media (width<=860px){.scroll-indicator{display:none}}.section{border-top:1px solid var(--line);max-width:1320px;scroll-margin-top:var(--header-h);margin:0 auto;padding:7rem 2rem}.section-head{align-items:flex-start;gap:1.5rem;margin-bottom:4.5rem;display:flex}.section-head h2{letter-spacing:-.03em;padding-bottom:.1em;font-size:clamp(2rem,4.5vw,3.4rem)}.section-sub{color:var(--muted);max-width:480px;margin-top:.4rem;font-size:.95rem;line-height:1.6}@media (width<=960px){.section{padding:5rem 1.5rem}.section-head{margin-bottom:3rem}}.about p{color:var(--fg-soft);max-width:720px;margin-bottom:20px;font-size:17px}.about{grid-template-columns:minmax(0,1fr) minmax(0,300px);align-items:start;gap:4rem;display:grid}.about-photo{margin:0}.about-photo img{aspect-ratio:1;object-fit:cover;border:1px solid var(--line);border-radius:50%;width:100%;display:block}@media (width<=860px){.about{grid-template-columns:1fr}.about-photo{order:-1;max-width:220px}}.skills{margin-top:56px}.grid-cards{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.project-card{background:var(--bg-2);transition:border-color .45s var(--ease), transform .45s var(--ease-spring), box-shadow .45s var(--ease);border-radius:14px;flex-direction:column;padding-bottom:1.75rem;display:flex;overflow:hidden}@media (hover:hover) and (pointer:fine){.project-card:hover{transform:translateY(-4px);box-shadow:0 30px 60px -25px #000000b3}}.thumb{background:var(--surface);place-items:center;height:180px;display:grid}.thumb-mark{font:500 3rem var(--font-serif);color:var(--fg);opacity:.8;transition:transform .6s var(--ease), opacity .6s var(--ease)}@media (hover:hover) and (pointer:fine){.project-card:hover .thumb-mark{opacity:1;transform:translateY(-3px)scale(1.04)}}.card-body{flex-direction:column;flex:1;padding:1.5rem 1.75rem 0;display:flex}.card-body h3{letter-spacing:-.02em;font-size:1.35rem}.summary{color:var(--muted);margin-top:.6rem;font-size:.92rem;line-height:1.6}.tech{flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:1.25rem;display:flex}.tech li{font:.85rem var(--font-body);color:var(--muted);background:var(--bg-2);border-radius:9999px;padding:.28rem .7rem}.view-all-wrap{text-align:center;margin-top:3rem}.view-all{background:var(--bg-2);color:var(--fg);transition:color .35s var(--ease), border-color .35s var(--ease), transform .3s var(--ease-spring);border-radius:9999px;align-items:center;gap:.6rem;padding:.75rem 1.6rem;font-size:.92rem;font-weight:500;display:inline-flex}@media (hover:hover) and (pointer:fine){.view-all:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}}.view-all .arrow{transition:transform .35s var(--ease-spring)}@media (hover:hover) and (pointer:fine){.view-all:hover .arrow{transform:translate(5px)}}@media (width<=960px){.grid-cards{grid-template-columns:1fr}}.tl-list{padding-left:28px;position:relative}.tl-list:before{content:"";background:var(--line);transform-origin:top;width:1px;transition:transform 1.4s var(--ease);position:absolute;top:0;bottom:0;left:6px;transform:scaleY(0)}.tl-list.in:before{transform:scaleY(1)}.job{opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);padding-bottom:48px;position:relative;transform:translate(-12px)}.job.in{opacity:1;transform:none}.job:before{content:"";background:var(--line-strong);width:9px;height:9px;transition:background .5s var(--ease), box-shadow .5s var(--ease);border-radius:50%;position:absolute;top:10px;left:-26px}.job.lit:before{background:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.period{font:13px var(--font-body);color:var(--muted);margin-bottom:8px}.company{color:var(--muted);margin-top:6px}.job h3{margin:4px 0 0}.job ul{color:var(--fg-soft);margin-top:18px;font-size:15px}.job li{margin-bottom:10px;padding-left:16px;position:relative}.job li:before{content:"–";color:var(--accent);position:absolute;left:0}.two{grid-template-columns:1fr 1fr;gap:48px;display:grid}.two h3{margin-bottom:16px}.two li{border-bottom:1px solid var(--line);padding:14px 0}.two li small{color:var(--muted);font-size:14px;display:block}@media (width<=720px){.two{grid-template-columns:1fr;gap:32px}}.contact-inner{flex-direction:column;align-items:flex-start;max-width:1320px;margin:0 auto;padding:9rem 2rem 6rem;display:flex}.eyebrow{font:clamp(.85rem, 1.05vw, 1.05rem) var(--font-body);color:var(--muted);margin-bottom:2.5rem}.cta-block{flex-direction:column;gap:.3rem;margin-bottom:4rem;display:flex}button.email-reveal{appearance:none;text-align:left;cursor:pointer;background:0 0;border:0;font-family:inherit}.cta-line{letter-spacing:-.03em;font-size:clamp(2rem,5.6vw,5rem);line-height:1.12;display:block}.cta-sans{color:var(--fg);margin-bottom:-.12em;padding-bottom:.12em;font-weight:600}.cta-serif{font-family:var(--font-serif);color:var(--muted);font-weight:400}.socials{flex-wrap:wrap;gap:2.2rem;display:flex}.social-link{color:var(--muted);align-items:baseline;gap:.4rem;padding:.3rem 0;font-size:.92rem;font-weight:500;display:inline-flex}.social-text{display:inline-block;position:relative;overflow:hidden}.social-text:after{content:attr(data-text);color:var(--accent);position:absolute;top:100%;left:0}.social-text,.social-text:after{transition:transform .4s var(--ease)}@media (hover:hover) and (pointer:fine){.social-link:hover .social-text{transform:translateY(-100%)}}.social-arrow{transition:transform .35s var(--ease-spring), color .35s var(--ease);font-size:.8em}@media (hover:hover) and (pointer:fine){.social-link:hover .social-arrow{color:var(--accent);transform:translate(3px,-3px)}}.bottom-bar{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;max-width:1320px;margin:0 auto;padding:1.6rem 2rem;display:flex}@media (width<=860px){.contact-inner{padding:6rem 1.5rem 4rem}.bottom-bar{flex-direction:column;align-items:flex-start;padding:1.4rem 1.5rem}}.reveal{opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);transition-delay:var(--d,0s);transform:translateY(28px)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.job,.tl-list:before{opacity:1;transition:none;transform:none}.line-v,.seg,.dot{animation:none}.tacho *{animation:none!important}.intro{display:none}}.tl-wrap{position:relative}.tl-list:before{display:none}.rail{background:var(--line);width:1px;position:absolute;top:0;bottom:0;left:6px}.rail-fill{background:var(--accent);transform-origin:top;box-shadow:0 0 10px var(--accent-glow);position:absolute;inset:0;transform:scaleY(0)}.truck{color:var(--accent);background:var(--bg);padding:2px 0;line-height:0;position:absolute;top:0;left:-10px;transform:translateY(-50%)}.stats{text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem;max-width:1320px;margin:0 auto;padding:2.4rem 2rem;display:grid}.stat{flex-direction:column;gap:.5rem;display:flex}.stat-num{letter-spacing:-.04em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,4vw,3.2rem);font-weight:600;line-height:1}.stat-label{font:.9rem var(--font-body);color:var(--muted)}@media (width<=860px){.stats{grid-template-columns:1fr;gap:2.2rem;padding:3rem 1.5rem}}.needle{animation:none}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none!important}::view-transition-new(root){animation:disc-in .9s var(--ease) both!important}@keyframes disc-in{0%{clip-path:circle(0%)}to{clip-path:circle(150%)}}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation:none!important}}.intro{z-index:300;background:var(--bg);pointer-events:none;animation:intro-out .6s var(--ease) 3.6s forwards;place-items:center;display:grid;position:fixed;inset:0}.intro-box{flex-direction:column;align-items:center;gap:28px;display:flex}.intro-text{text-align:center;opacity:0;animation:fade-in .8s var(--ease) 1.2s forwards}.intro-name{letter-spacing:-.01em;font-size:clamp(20px,3vw,28px);font-weight:600;display:block}.intro-role{font:15px var(--font-body);color:var(--muted);margin-top:8px;display:block}.intro svg{width:min(60vw,260px);height:auto;overflow:visible}.intro .ring{stroke-dasharray:1;stroke-dashoffset:1px;animation:draw 1.1s var(--ease) forwards}.intro .r1{animation-delay:50ms}.intro .r2{animation-delay:.2s}.intro .r3{animation-delay:.35s}.intro .r4{animation-delay:.5s}.intro .ticks{opacity:0;animation:.5s .9s forwards fade-in}.intro .hand{transform-origin:100px 100px;animation:spin 1.4s var(--ease) .2s both}@keyframes draw{to{stroke-dashoffset:0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fade-in{to{opacity:1}}@keyframes intro-out{to{opacity:0;visibility:hidden}}.two .tech{gap:.5rem}.two .tech li{background:var(--bg-2);font:.85rem var(--font-body);color:var(--muted);white-space:nowrap;border-radius:9999px;padding:.3rem .8rem}.exp-layout{grid-template-columns:minmax(0,1fr) 424px;align-items:start;gap:56px;display:grid}.exp-stage{align-items:center;height:100vh;display:flex;position:sticky;top:0}.stage-inner{place-items:center;width:100%;height:280px;display:grid;position:relative}.mark{object-fit:contain;opacity:0;width:auto;max-width:300px;height:auto;max-height:130px;transition:opacity .5s var(--ease), transform .75s var(--ease);user-select:none;grid-area:1/1;transform:translateY(26px)scale(.97)}.mark.on{opacity:.9;transform:none}@media (width<=1000px){.exp-layout{grid-template-columns:1fr}.exp-stage{display:none}}.zoom-band{padding:6rem 6vw}.zoom-frame{aspect-ratio:21/9;border:1px solid var(--line);background:var(--surface);border-radius:14px;max-width:1100px;margin:0 auto;position:relative;overflow:hidden}.zoom-img{object-fit:cover;object-position:50% 60%;filter:brightness(.66)contrast(1.16)saturate(.62)sepia(.14);will-change:transform;width:100%;height:100%;transform:scale(1.25)}.zoom-frame:after{content:"";pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,#0000 40%,#000c),linear-gradient(#0b0b0b99,#0000 30% 70%,#0b0b0bcc);position:absolute;inset:0}.gauge{width:84px;height:84px;overflow:visible}.stats .gauge{width:56px;height:56px}.gauge-needle{transform-box:view-box;transform-origin:50px 50px;transition:transform 1.6s var(--ease);transform:rotate(-135deg)}.project-card{position:relative}.app-icon{width:96px;height:96px;color:var(--fg);transition:transform .6s var(--ease-spring);background:#1c1c1c;border-radius:22px;place-items:center;display:grid}.app-icon[data-tone="0"]{background:var(--accent);color:var(--bg)}.app-icon svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:52px;height:52px}@media (hover:hover) and (pointer:fine){.project-card:hover .app-icon{transform:translateY(-4px)scale(1.04)}}.project-card .thumb{background:var(--surface);height:190px}.project-card .app-icon{border-radius:20px;width:88px;height:88px}.project-card .tech li{font:.8rem var(--font-body);color:#cfcfcd;background:color-mix(in srgb, var(--ink) 3%, transparent);border-radius:6px;padding:.3rem .6rem}.project-card .tech li:first-child{color:#8fb4ff;background:#1d2a44}.project-card .tech li:nth-child(2){color:#ffb36b;background:#3a2415}.project-card .tech li:nth-child(n+3){color:#5fe3b0;background:#12302a}a.project-card{color:inherit;text-decoration:none}.card-year{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted);margin-bottom:.6rem;display:block}.detail{max-width:880px;margin:0 auto;padding:170px 1.5rem 6rem}.detail-eyebrow{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--accent);margin:2.5rem 0 1.5rem}.detail-head{align-items:center;gap:1.75rem;display:flex}.detail-icon{flex:none;width:96px;height:96px}.detail-head h1{letter-spacing:-.03em;font-size:clamp(2.4rem,6vw,4.2rem);font-weight:600;line-height:1}.detail-tagline{font-family:var(--font-serif);color:var(--muted);margin-top:.6rem;font-size:1.35rem}.detail-body{color:var(--fg-soft);max-width:680px;margin:2.5rem 0 2rem;font-size:1.1rem;line-height:1.75}.detail-tags{margin-top:0;padding-top:0}.detail-year{font:.78rem var(--font-body);letter-spacing:.02em;color:#ffb36b;background:#3a2415;border:1px solid #5a3a22;border-radius:6px;padding:.3rem .6rem}.detail{position:relative;overflow-x:clip}.detail>*{position:relative}.detail-art{aspect-ratio:1;pointer-events:none;z-index:0;background:radial-gradient(closest-side, #0000 74%, color-mix(in srgb, var(--tone) 35%, #0000) 75%, #0000 78%, #0000 88%, color-mix(in srgb, var(--tone) 22%, #0000) 89%, #0000 90%), radial-gradient(closest-side, color-mix(in srgb, var(--tone) 14%, #0000), #0000 70%);border-radius:50%;width:min(140vh,130vw);position:fixed;top:50%;right:-28vw;transform:translateY(-50%)}.detail-body{color:var(--fg-soft);font-size:1.2rem;line-height:1.75}.detail-note{max-width:640px;color:var(--muted);margin-top:2.5rem;font-size:.98rem;line-height:1.65}.detail-features{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin-top:3.5rem;padding:0;list-style:none;display:grid}.detail-features li{border:1px solid var(--line);background:var(--bg-2);border-radius:12px;gap:.35rem;padding:1.25rem;display:grid}.feat-no{font:.85rem var(--font-body);color:var(--tone)}.feat-cat{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted)}.feat-title{color:var(--fg-soft);font-size:1rem;line-height:1.5}.detail-shots{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:2.5rem;display:grid}.detail-shots img{border:1px solid var(--line);border-radius:14px;width:100%;height:auto}.detail-cta{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.25rem;margin-top:4rem;padding-top:2rem;display:flex}.detail-cta p{font-family:var(--font-serif);color:var(--fg);font-size:1.5rem}.detail-disclaimer{font:.85rem var(--font-body);color:var(--low);letter-spacing:.02em;margin-top:2rem}.detail-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,4.5rem);display:grid}.detail-text{min-width:0}.detail-chips{flex-wrap:wrap;gap:.6rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.detail-chips .chip{border:1px solid var(--line);color:var(--muted);letter-spacing:.05em;border-radius:9999px;padding:.35rem .9rem;font-size:.85rem;font-weight:600}.detail{--tone-text:color-mix(in srgb, var(--tone) var(--tone-mix), var(--ink))}.detail-chips .chip-year{font-family:var(--font-body);color:var(--tone-text);border-color:color-mix(in srgb, var(--tone) 40%, transparent);background:color-mix(in srgb, var(--tone) 12%, transparent)}.detail-note{background:color-mix(in srgb, var(--tone) 8%, transparent);border-radius:6px;padding:.6rem 1rem}.detail-live{margin:2rem 0 0}.detail-live-link{background:var(--tone);color:var(--bg);box-shadow:0 12px 30px color-mix(in srgb, var(--tone) 22%, transparent);border-radius:9999px;align-items:center;gap:.55rem;padding:.8rem 1.6rem;font-size:.95rem;font-weight:700;transition:transform .2s,box-shadow .2s;display:inline-flex}@media (hover:hover) and (pointer:fine){.detail-live-link:hover{box-shadow:0 16px 36px color-mix(in srgb, var(--tone) 30%, transparent);transform:translateY(-1px)}}.detail-stage{min-width:0}.device{border:1px solid var(--line);background:var(--bg-2);border-radius:14px;overflow:hidden;transform:perspective(1400px)rotateY(-8deg)rotate(.8deg);box-shadow:0 40px 80px -30px #000c}.device-bar{border-bottom:1px solid var(--line);background:#1a1a1a;gap:6px;padding:10px 12px;display:flex}.device-bar span{background:color-mix(in srgb, var(--ink) 15%, transparent);border-radius:50%;width:9px;height:9px}.device-screen{background:#101113;border:0;width:100%;height:min(560px,70vh);display:block}.device-icon{background:radial-gradient(60% 70% at 50% 50%, color-mix(in srgb, var(--tone) 14%, transparent), transparent 70%), var(--bg-2);place-items:center;height:320px;display:grid}.device-icon .app-icon{border-radius:30px;width:128px;height:128px}.device-icon .app-icon svg{width:72px;height:72px}.detail-timeline{border-left:1px solid var(--line);gap:2.5rem;margin:5rem 0 0;padding:0 0 0 2rem;list-style:none;display:grid;position:relative}.detail-timeline li{opacity:.35;transition:opacity .6s var(--ease);position:relative}.detail-timeline li.is-reached{opacity:1}.detail-timeline .stop{background:var(--bg);width:11px;height:11px;box-shadow:0 0 0 2px color-mix(in srgb, var(--ink) 32%, transparent);border-radius:50%;transition:box-shadow .4s,background-color .4s;position:absolute;top:.45rem;left:calc(-2rem - 6px)}.detail-timeline li.is-reached .stop{background:var(--tone);box-shadow:0 0 0 2px var(--tone), 0 0 12px color-mix(in srgb, var(--tone) 50%, transparent)}.detail-timeline .feat-no{font:.85rem var(--font-body);color:var(--tone)}.detail-timeline .feat-cat{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted);margin-top:.3rem;display:block}.detail-timeline .feat-title{color:var(--fg-soft);max-width:42rem;margin:.5rem 0 0;font-size:1.1rem;line-height:1.5}.detail-contact{border-top:1px solid var(--line);margin-top:6rem;padding-top:4rem}.detail-contact .eyebrow{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted);margin:0 0 1.5rem}.detail-contact .cta-block{flex-direction:column;gap:.3rem;margin-bottom:3rem;display:flex}.detail-contact .cta-line{letter-spacing:-.03em;font-size:clamp(2rem,5vw,4rem);line-height:1.12;display:block}.detail-contact .cta-sans{color:var(--fg);font-weight:600}.detail-contact .cta-serif{font-family:var(--font-serif);color:var(--muted)}.detail-contact .socials{flex-wrap:wrap;gap:2.2rem;margin:0;padding:0;list-style:none;display:flex}.detail-contact .social-link{color:var(--muted);align-items:baseline;gap:.4rem;padding:.3rem 0;font-size:.92rem;font-weight:500;display:inline-flex}@media (width<=860px){.detail-split{grid-template-columns:1fr}.device{transform:none}.device-screen{height:460px}}.detail{max-width:1200px;padding:170px 2rem 6rem}.detail-back{margin-bottom:.5rem;display:inline-block}.detail-split{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:start;gap:clamp(2.5rem,5vw,5rem)}.detail-text{max-width:560px}.detail-eyebrow{margin-top:1rem}.detail-head{align-items:center}.detail-head h1{font-size:clamp(2.2rem,4.2vw,3.4rem)}.detail-body{margin-top:2rem;font-size:1.1rem}.detail-stage{position:sticky;top:120px}.device{box-shadow:0 30px 60px -28px #000d, 0 0 0 1px color-mix(in srgb, var(--ink) 6%, transparent);border-radius:16px;transform:none}.device-screen{height:620px}.detail-timeline{margin-top:6rem}.detail-timeline li{max-width:760px}.detail-contact{margin-top:7rem}@media (width<=860px){.detail{padding:150px 1.25rem 4rem}.detail-split{grid-template-columns:1fr}.detail-stage{position:static}.device-screen{height:480px}}.device{opacity:0;transition:opacity .9s var(--ease-out-soft), transform 1s var(--ease-out-soft);transform:translateY(40px)scale(.98)}.device.in{opacity:1;transform:none}.detail-timeline{--p:0}.detail-timeline:before{content:"";background:var(--tone);width:1px;transform:scaleY(var(--p));transform-origin:top;box-shadow:0 0 12px var(--tone);position:absolute;top:0;bottom:0;left:-1px}.detail-art{animation:detail-art-in 1.6s var(--ease-out-soft) both}@keyframes detail-art-in{0%{opacity:0}to{opacity:1}}.detail-contact .cta-line{transition:transform .5s var(--ease-out-soft), color .5s var(--ease-out-soft)}@media (prefers-reduced-motion:reduce){.device,.detail-art{opacity:1;transition:none;animation:none;transform:none}}.detail-timeline .tl-truck{left:-2rem;top:calc(var(--p) * 100%);color:var(--tone);z-index:2;filter:drop-shadow(0 0 8px color-mix(in srgb, var(--tone) 60%, transparent));pointer-events:none;position:absolute;transform:translate(-50%,-50%)}.detail-timeline .tl-truck svg{display:block}.detail-timeline:before{z-index:1}.tl-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(2rem,5vw,5rem);margin-top:6rem;display:grid}.tl-copy{min-width:0;padding-left:3rem;position:relative}.tl-rail{pointer-events:none;width:30px;position:absolute;top:0;bottom:0;left:0}.tl-rail:before{content:"";background:var(--line-strong);width:1px;position:absolute;top:0;bottom:0;left:14px}.tl-rail-fill{background:var(--tone);width:1px;box-shadow:0 0 10px var(--tone);transform-origin:top;position:absolute;top:0;bottom:0;left:14px;transform:scaleY(0)}.tl-truck{color:var(--tone);filter:drop-shadow(0 0 8px color-mix(in srgb, var(--tone) 60%, transparent));position:absolute;top:0;left:14px;transform:translate(-50%,-50%)}.tl-truck svg{display:block}.tl-chapters{margin:0;padding:0;list-style:none}.tl-chapter{opacity:.3;min-height:34vh;transition:opacity .5s var(--ease-out-soft);flex-direction:column;justify-content:center;display:flex;position:relative}.tl-chapter.is-active,.tl-chapter.is-reached{opacity:1}.tl-chapter .tl-stop{background:var(--bg);width:11px;height:11px;box-shadow:0 0 0 2px color-mix(in srgb, var(--ink) 32%, transparent);border-radius:50%;margin-top:-5px;transition:background-color .4s,box-shadow .4s;position:absolute;top:50%;left:-2.25rem}.tl-chapter.is-reached .tl-stop{background:var(--tone);box-shadow:0 0 0 2px var(--tone), 0 0 12px color-mix(in srgb, var(--tone) 50%, transparent)}.tl-num{font:.85rem var(--font-body);color:var(--tone-text);margin-bottom:.75rem}.tl-chapter h2{letter-spacing:-.02em;color:var(--fg);margin:0 0 1rem;padding-bottom:.1em;font-size:clamp(1.6rem,3vw,2.2rem)}.tl-chapter p{color:var(--muted);max-width:30rem;margin:0;font-size:1.05rem;line-height:1.7}.tl-stage{position:relative}.tl-sticky{justify-content:center;align-items:center;height:calc(100svh - 150px);display:flex;position:sticky;top:110px}.phone{aspect-ratio:9/19.5;width:min(290px,60vw);box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 10%, transparent), 0 30px 60px -18px #000a;background:linear-gradient(145deg,#4a4a51,#232327 30%,#141417 62%,#2e2e33);border-radius:16.5%/7.85%;padding:3%;position:relative}.phone-screen{background:#0e0e10;border-radius:14.5%/6.7%;width:100%;height:100%;padding:16% 6% 8%;position:relative;overflow:hidden;box-shadow:0 0 0 2px #000}.phone-island{aspect-ratio:4.8;z-index:5;background:#000;border-radius:999px;width:33%;position:absolute;top:1.9%;left:50%;transform:translate(-50%)}.mock-bar{gap:6px;margin-bottom:14px;display:flex}.mock-bar span{background:color-mix(in srgb, var(--ink) 10%, transparent);height:8px;transition:background-color .6s var(--ease-out-soft), box-shadow .6s;border-radius:4px;flex:1}.mock-bar span.on{background:var(--tone);box-shadow:0 0 10px color-mix(in srgb, var(--tone) 50%, transparent)}.zone{border:1px solid var(--line);opacity:0;visibility:hidden;transition:opacity .55s var(--ease-out-soft), transform .75s var(--ease), visibility .75s;background:#15161a;border-radius:12px;padding:14px;position:absolute;inset:14% 6% 8%;transform:translate(28px)scale(.98)}.z3{padding:14px}.zone-label{background:var(--tone);color:var(--bg);font:10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:0;border-radius:4px;padding:3px 7px;transition:opacity .3s;position:absolute;top:-11px;left:10px}.zone.is-active{opacity:1;visibility:visible;z-index:4;border-color:var(--tone);box-shadow:0 0 0 1px color-mix(in srgb, var(--tone) 60%, transparent), 0 18px 40px -12px color-mix(in srgb, var(--tone) 35%, transparent);transform:none}.zone.is-active .zone-label{opacity:1}@media (width<=860px){.tl-grid{grid-template-columns:minmax(0,1fr)}.tl-sticky{height:auto;padding:1rem 0 2rem;position:relative;top:0}.tl-chapter{min-height:0;padding:2rem 0}}.mock-spark{width:100%;height:100%;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--tone) 50%, transparent));display:block;overflow:visible}.z1{padding:14px 12px 8px}.tl-lanes{border-top:1px solid var(--line);border-bottom:1px solid var(--line);width:100vw;margin:5rem calc(50% - 50vw) 0;padding:1.5rem 0 1rem;overflow:hidden}.tl-lane{grid-template-columns:minmax(7rem,11rem) 1fr;align-items:center;gap:1.5rem;margin-bottom:.4rem;padding:0 max(5vw,1rem);display:grid}.tl-lane-label{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--tone)}.tl-lane-track{--p:0;height:76px;position:relative;overflow:hidden}.tl-lane-road{border-top:1px solid color-mix(in srgb, var(--ink) 24%, transparent);border-bottom:1px solid color-mix(in srgb, var(--ink) 12%, transparent);background:repeating-linear-gradient(90deg, color-mix(in srgb, var(--ink) 7%, transparent) 0 14px, transparent 14px 26px);height:12px;position:absolute;bottom:6px;left:0;right:0}.tl-lane-stop{background:var(--bg);width:9px;height:9px;box-shadow:0 0 0 1.5px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:50%;margin-left:-4.5px;transition:background-color .4s,box-shadow .4s;position:absolute;bottom:9px}.tl-lane-stop.is-passed{background:var(--tone);box-shadow:0 0 0 1.5px var(--tone), 0 0 12px color-mix(in srgb, var(--tone) 50%, transparent)}.tl-lane-veh{--vw:132px;bottom:10px;left:calc(var(--p) * (100% + var(--vw)) - var(--vw));width:var(--vw);height:calc(var(--vw) * 60 / 160);color:var(--tone);filter:drop-shadow(0 8px 14px #0008);position:absolute}.tl-lane-veh svg{width:100%;height:100%;display:block;overflow:visible}.tl-lane[data-dir=rev] .tl-lane-veh svg{transform:scaleX(-1)}@media (width<=860px){.tl-lane{grid-template-columns:1fr;gap:.4rem}.tl-lane-track{height:60px}.tl-lane-veh{--vw:92px;bottom:8px}}.mock-cap{font:13px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;display:block}.mock-kpis{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.mock-kpis div{background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:8px;padding:8px 7px}.mock-kpis div:first-child{background:color-mix(in srgb, var(--tone) 30%, transparent)}.mock-kpis b{font:600 12px var(--font-mono);color:var(--fg);display:block}.mock-kpis small{color:#a3a3a0;margin-top:4px;font-size:8px;line-height:1.2;display:block}.mock-bars{flex:1;align-items:flex-end;gap:4px;min-height:0;margin-bottom:4px;display:flex}.mock-bars i{height:var(--h);background:color-mix(in srgb, var(--ink) 12%, transparent);border-radius:3px 3px 0 0;flex:1}.mock-bars i:nth-last-child(-n+3){background:color-mix(in srgb, var(--tone) 75%, transparent)}.mock-axis{font:8px var(--font-mono);color:var(--muted);justify-content:space-between;margin-top:6px;display:flex}.mock-rows p{color:#d6d7da;grid-template-columns:7px 1fr auto 24px;align-items:center;gap:8px;margin:0 0 9px;font-size:10px;display:grid}.mock-rows i{background:var(--tone);border-radius:50%;width:7px;height:7px}.mock-rows em{font:8.5px var(--font-mono);color:var(--muted);font-style:normal}.mock-rows strong{text-align:right;font:600 10px var(--font-mono);color:var(--fg)}.mock-deleg p{color:#d6d7da;grid-template-columns:58px 1fr 34px;align-items:center;gap:8px;margin:0 0 12px;font-size:9.5px;display:grid}.mock-deleg i{height:8px;width:var(--w);background:linear-gradient(90deg, var(--tone), color-mix(in srgb, var(--tone) 35%, transparent));border-radius:4px}.mock-deleg b{text-align:right;font:600 9.5px var(--font-mono);color:var(--fg)}.zone{flex-direction:column;padding:14px 13px;display:flex}.zone .mock-spark{flex:1;height:auto;min-height:0}.mock-cap{margin-bottom:12px}.mock-kpis{gap:8px}.mock-kpis div{padding:10px 9px}.mock-kpis+.mock-cap{margin-top:16px}.mock-axis{margin-top:8px}.mock-deleg p{gap:10px;margin:0 0 18px}@keyframes mk-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes mk-fade{0%{opacity:0}to{opacity:1}}@keyframes mk-draw{to{stroke-dashoffset:0}}@keyframes mk-grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes mk-growx{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.zone.is-active .mock-cap{animation:mk-fade .6s var(--ease-out-soft) both}.zone.is-active .mock-kpis>div{animation:mk-rise .7s var(--ease) both;animation-delay:var(--d)}.zone.is-active .mock-bars i{transform-origin:bottom;animation:mk-grow .9s var(--ease) both;animation-delay:var(--d)}.zone.is-active .mock-rows p,.zone.is-active .mock-deleg p{animation:mk-rise .6s var(--ease) both;animation-delay:var(--d)}.zone.is-active .mock-deleg i{transform-origin:0;animation:mk-growx 1s var(--ease) both;animation-delay:var(--d)}.zone .spk-line{stroke-dasharray:1 1;stroke-dashoffset:1px}.zone.is-active .spk-line{animation:mk-draw 1.1s var(--ease-out-soft) forwards}.zone .spk-dash{opacity:0}.zone.is-active .spk-dash{animation:1s 1.2s forwards mk-fade}.zone .spk-area{opacity:0}.zone.is-active .spk-area{animation:1.2s .9s forwards mk-fade}.zone.is-active .mock-axis span{animation:.6s 1.4s both mk-fade}.mock-legend p{color:#d6d7da;grid-template-columns:8px 1fr auto;align-items:center;gap:8px;margin:0 0 10px;font-size:10px;display:grid}.mock-legend i{border-radius:50%;width:8px;height:8px}.mock-legend i.h{background:#e85a5e}.mock-legend i.m{background:#f2a93b}.mock-legend i.l{background:#3dd68c}.mock-legend b{font:600 10px var(--font-mono);color:var(--fg)}.mock-gauge{margin:4px 0 14px;position:relative}.gauge-num{text-align:center;position:absolute;bottom:0;left:0;right:0}.gauge-num b{font:600 20px var(--font-mono);color:var(--fg);display:block}.gauge-num small{font:8px var(--font-mono);color:var(--muted);text-transform:uppercase}.mock-search{align-items:center;gap:6px;margin-bottom:12px;display:flex}.mock-search span{color:var(--muted);background:color-mix(in srgb, var(--ink) 5%, transparent);border:1px solid color-mix(in srgb, var(--ink) 8%, transparent);border-radius:6px;flex:1;padding:6px 8px;font-size:9px}.mock-search em{font:8.5px var(--font-mono);color:#d6d7da;background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:6px;padding:6px 7px;font-style:normal}.mock-table .th,.mock-table .tr{grid-template-columns:.9fr 1.1fr 1fr .8fr;align-items:center;gap:6px;padding:7px 2px;font-size:8.5px;display:grid}.mock-table .th{font:7.5px var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid color-mix(in srgb, var(--ink) 8%, transparent)}.mock-table .tr{color:#d6d7da;border-bottom:1px solid color-mix(in srgb, var(--ink) 5%, transparent);padding:5px 2px}.mock-table .tr span:last-child{text-align:right;color:var(--fg);font-family:var(--font-mono)}.mock-compare>div{border-bottom:1px solid color-mix(in srgb, var(--ink) 5%, transparent);color:#d6d7da;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:11px 0;font-size:10px;display:grid}.mock-compare b{font:600 12px var(--font-mono);color:var(--fg)}.mock-compare em{font:9px var(--font-mono);text-align:right;min-width:44px;font-style:normal}.mock-compare em.bad{color:#e85a5e}.mock-compare em.ok{color:#3dd68c}.mock-donut{align-items:center;gap:12px;margin-top:auto;display:flex}.mock-donut svg{flex:none;width:64px;height:64px}.mock-donut b{font:600 14px var(--font-mono);color:var(--fg);display:block}.mock-donut small{color:var(--muted);font-size:9px}.zone .donut-val{stroke-dashoffset:94px}.zone.is-active .donut-val{animation:mk-donut 1s var(--ease-out-soft) .6s forwards}@keyframes mk-donut{to{stroke-dashoffset:0}}.mock-goal{margin-top:4px;display:block;color:#3dd68c!important}.mock-notes p{color:#d6d7da;grid-template-columns:7px 1fr auto;align-items:center;gap:8px;margin:0 0 12px;font-size:10px;display:grid}.mock-notes i{border-radius:50%;width:7px;height:7px}.mock-notes i.sent,.mock-notes em.sent{color:#f2a93b;background:#f2a93b}.mock-notes i.pending,.mock-notes em.pending{background:var(--muted);color:var(--muted)}.mock-notes i.read,.mock-notes em.read{color:#3dd68c;background:#3dd68c}.mock-notes em{font:8.5px var(--font-mono);font-style:normal;background:0 0!important}.zone.is-active .mock-legend p,.zone.is-active .mock-compare>div,.zone.is-active .mock-notes p{animation:mk-rise .6s var(--ease) both;animation-delay:var(--d)}.zone.is-active .mock-search{animation:.6s both mk-fade}.phone{aspect-ratio:16/10;border-radius:14px 14px 6px 6px;width:560px;padding:2.2% 2.2% 2%}.phone:after{content:"";background:linear-gradient(#2e2e33,#17171a);border-radius:0 0 16px 16px;height:14px;position:absolute;bottom:-16px;left:-8%;right:-8%;box-shadow:0 12px 24px -10px #000}.phone-island{display:none}.phone-screen{border-radius:6px;padding:4% 3.5%}.phone .zone{top:19%;bottom:6%}.mock-stats{gap:8px;margin-bottom:10px;display:flex}.mock-stats div{background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:8px;flex:1;padding:8px 9px}.mock-stats b{font:600 14px var(--font-mono);color:var(--fg);display:block}.mock-stats b.ok{color:#3dd68c}.mock-stats small{color:var(--muted);font-size:8px}.mock-legend2{font:8.5px var(--font-mono);color:#a3a3a0;gap:14px;margin-top:8px;display:flex}.mock-legend2 span{align-items:center;gap:6px;display:flex}.mock-legend2 i{background:var(--tone);width:14px;height:2px}.mock-legend2 i.dash{border-top:2px dotted color-mix(in srgb, var(--ink) 50%, transparent);background:0 0;height:0}.mock-gauge{flex-direction:column;align-items:center;margin:2px 0 0;display:flex}.mock-gauge svg{width:46%;height:auto;display:block;overflow:visible}.gauge-num{margin-top:-22px;position:static}.zone.is-active .gauge-val{animation:mk-gauge 1.1s var(--ease-out-soft) .2s forwards}@keyframes mk-gauge{to{stroke-dashoffset:0}}.zone.is-active .gauge-num{animation:.8s 1.4s both mk-fade}.mock-table .th{padding:5px 2px}.mock-legend p{margin:0 0 7px}.mock-deleg p{margin:0 0 12px}.mock-gauge svg{width:36%}.gauge-num{margin-top:-16px}.mock-legend{gap:6px;display:flex}.mock-legend p{background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:6px;flex:1;grid-template-columns:7px 1fr auto;gap:6px;margin:0;padding:6px 7px;display:grid}.mock-rows p,.mock-deleg p{margin:0 0 10px}.mock-table .tr,.mock-table .th{padding:4px 2px}.mock-donut svg{width:52px;height:52px}.mock-compare>div{padding:6px 0}.mock-donut{margin-top:6px}.mock-table .th span:last-child{text-align:right}.gauge-val{stroke-dasharray:.48 2;stroke-dashoffset:.48px}.brand-avatar{transition:opacity .2s linear}.app-icon.is-pro{color:inherit;background:0 0}.app-icon.is-pro svg{fill:none;stroke:none;width:100%;height:100%}.device-icon .app-icon.is-pro svg{width:100%;height:100%}.tl-grid-solo{grid-template-columns:1fr;max-width:46rem}.detail-summary{margin:2.2rem 0 0}.detail-summary p:last-child{color:var(--fg-soft);margin:.6rem 0 0;font-size:1.05rem;line-height:1.6}.shots{margin:4.5rem 0 0;position:relative}.shots-track{scroll-snap-type:x mandatory;scrollbar-width:none;gap:1.2rem;padding-bottom:.4rem;display:flex;overflow-x:auto}.shots-track::-webkit-scrollbar{display:none}.shots-track img{scroll-snap-align:start;border:1px solid var(--line);background:#fff;border-radius:16px;flex:none;width:340px;max-width:78vw;height:auto}.shots-nav{justify-content:flex-end;gap:.6rem;margin-top:1rem;display:flex}.shots-nav button{border:1px solid var(--line);width:40px;height:40px;color:var(--ink,var(--fg));cursor:pointer;background:0 0;border-radius:50%;font-size:1.3rem;line-height:1}.shots-nav button:hover{border-color:var(--tone);color:var(--tone)}.device-carousel{border:1px solid var(--line);background:#101113;border-radius:14px;position:relative;overflow:hidden;box-shadow:0 40px 80px -30px #000c}.device-carousel .shots-track{scroll-snap-type:x mandatory;scrollbar-width:none;height:min(560px,70vh);display:flex;overflow-x:auto}.device-carousel .shots-track::-webkit-scrollbar{display:none}.device-carousel .shots-track img{object-fit:contain;scroll-snap-align:center;background:#101113;border:0;border-radius:0;flex:0 0 100%;width:100%;height:100%}.device-carousel .shots-nav{border-top:1px solid var(--line);justify-content:center;gap:10px;padding:12px;display:flex}.device-carousel .shots-nav button{border:1px solid color-mix(in srgb, var(--ink) 15%, transparent);width:36px;height:36px;color:var(--fg);cursor:pointer;background:0 0;border-radius:50%;font-size:1.1rem}.device-carousel .shots-nav button:hover{border-color:var(--tone,#ffb000);color:var(--tone,#ffb000)}.device-carousel{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 40px 80px -30px #000c}.device-carousel .shots-track{background:radial-gradient(60% 70% at 50% 50%, color-mix(in srgb, var(--tone,#ffb000) 12%, transparent), transparent 70%), var(--bg-2);align-items:stretch;height:min(540px,66vh)}.device-carousel .shots-track img{box-sizing:border-box;object-fit:contain;scroll-snap-align:center;background:0 0;border:0;border-radius:0;flex:0 0 100%;width:100%;height:100%;padding:26px 0}.device-carousel .shots-nav{background:var(--surface);border-top:1px solid var(--line);gap:10px;padding:10px 12px}.device-carousel .shots-nav button{width:34px;height:34px;font-size:1rem}.device-carousel{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.device-carousel .shots-track{background:0 0;align-items:flex-start;max-width:420px;height:auto;margin:0 auto}.device-carousel .shots-track img{object-fit:initial;background:0 0;border-radius:16px;flex:0 0 100%;width:100%;height:auto;padding:0;box-shadow:0 30px 60px -30px #000d}.device-carousel .shots-nav{background:0 0;border:0;justify-content:center;align-items:center;gap:14px;padding:14px 0 0;display:flex}.shots-dots{gap:8px;display:flex}.shots-dots button{background:color-mix(in srgb, var(--ink) 20%, transparent);cursor:pointer;width:8px;height:8px;transition:width .4s var(--ease-out-soft), background-color .4s;border:0;border-radius:999px;padding:0}.shots-dots button.on{background:var(--tone,#ffb000);width:22px}.device-carousel .shots-nav .shots-dots button{background:color-mix(in srgb, var(--ink) 20%, transparent);border:0;border-radius:999px;width:8px;min-width:8px;height:8px;padding:0}.device-carousel .shots-nav .shots-dots button.on{background:var(--tone,#ffb000);width:22px}.detail-live .btn-primary:hover,.detail-live .btn-primary:focus,.detail-live .btn-primary:focus-visible,.detail-live .btn-primary:active{background:var(--tone);color:var(--bg);box-shadow:0 6px 20px color-mix(in srgb, var(--tone) 35%, transparent)}@media (hover:hover) and (pointer:fine){.app-open:hover,.app-open:focus-visible{filter:brightness(1.08);box-shadow:0 10px 26px color-mix(in srgb, var(--tone) 35%, transparent)}}.detail-shots{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.4rem;margin-top:5rem}.detail-shots img{border-radius:16px;box-shadow:0 30px 60px -30px #000d}.detail-split.solo{grid-template-columns:minmax(0,1fr);justify-items:center}.detail-split.solo>*{width:100%;max-width:720px}.hero-badge{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--fg);font:500 .8rem var(--font-body);letter-spacing:.04em;border-radius:999px;align-items:center;gap:.55rem;margin:1.6rem 0 0;padding:.55rem 1rem;display:inline-flex}.hero-badge span{color:var(--accent);font-weight:700}.device-shot{border:1px solid var(--line);background:#101113;border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -28px #000d}.device-shot img{width:100%;height:auto;display:block}@media (width>=961px){.grid-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cards>.project-card:first-child{flex-direction:row;grid-column:1/-1;padding-bottom:0}.grid-cards>.project-card:first-child .thumb{border-bottom:0;border-right:1px solid var(--line);width:42%;height:auto;min-height:260px}.grid-cards>.project-card:first-child .card-body{justify-content:center;padding:2.2rem 2rem}}.skills .tech{gap:.6rem}.skills .tech li{font:.85rem var(--font-body);color:var(--fg-soft);border-color:var(--line-strong);padding:.4rem .9rem}.detail-back{color:var(--fg-soft);font-size:1rem}.detail:has(.detail-split.solo) .detail-back{width:min(720px,100%);margin-left:auto;margin-right:auto;display:block}.stat:not(:has(.gauge)){padding-top:56px}@media (width<=1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.detail-photo{margin:3.5rem 0 0}.detail-photo .zoom-frame{aspect-ratio:21/9;max-width:none;margin:0}@media (width<=860px){.detail-photo .zoom-frame{aspect-ratio:4/3}}.detail-photo figcaption{color:var(--muted);margin-top:.8rem;font-size:.85rem;line-height:1.5}.detail-photo figcaption a{color:inherit}.skip-link{z-index:400;background:var(--fg);color:var(--bg);transition:top .2s var(--ease);border-radius:8px;padding:.6rem 1rem;font-weight:600;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.theme-btn{background:var(--bg-2);width:40px;height:40px;color:var(--fg);cursor:pointer;border:0;border-radius:9999px;flex:none;place-items:center;font-size:1rem;display:inline-grid}.theme-btn:hover{background:var(--surface);color:var(--accent)}.avail{font:.95rem var(--font-body);color:var(--fg-soft);align-items:center;gap:.55rem;margin-bottom:1.25rem;display:inline-flex}.avail-dot{width:8px;height:8px;animation:ping 1.8s var(--ease) 3;background:#3fb950;border-radius:50%;box-shadow:0 0 #3fb95099}.copy-btn{font:.85rem var(--font-body);color:var(--muted);background:var(--bg-2);cursor:pointer;vertical-align:middle;border-radius:9999px;margin-left:.75rem;padding:.3rem .8rem}.copy-btn:hover{color:var(--accent);border-color:var(--accent)}.calc{max-width:760px}.calc-back{font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted);margin-bottom:1.5rem;display:inline-block}.calc-back:hover,.calc-back:focus-visible{color:var(--accent)}.calc-title{letter-spacing:-.02em;margin:.5rem 0 1rem;font-size:clamp(2rem,5vw,3.2rem);line-height:1.1}.calc-lead{color:var(--fg-soft);max-width:60ch;margin-bottom:2rem}.calc-field{max-width:320px;font:.85rem var(--font-body);letter-spacing:.02em;color:var(--muted);gap:.5rem;display:grid}.calc-field input{font:1rem var(--font-body);color:var(--fg);background:var(--bg-2);border:1px solid var(--line-strong);border-radius:10px;padding:.7rem .9rem}.calc-help{color:var(--muted);max-width:46ch;margin-top:.6rem;font-size:.9rem}.calc-error{color:#d9534f;margin-top:.75rem}.calc-results{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:2rem;display:grid}.calc-card{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:1.4rem}.calc-card h2{font:.85rem var(--font-body);letter-spacing:.1em;color:var(--muted);margin-bottom:1rem}.calc-due span{color:var(--muted)}.calc-due b{margin-top:.25rem;font-size:1.3rem;display:block}.calc-left{color:var(--accent-text);font-family:var(--font-body);margin-top:.5rem}.calc-error[hidden],.calc-results[hidden]{display:none}@media print{.intro,.background,.nav,.bottom-bar,.skip-link,.theme-btn,.copy-btn,.cta,.detail-art,.scroll-indicator,.hero-actions,.detail-live,.device-carousel{display:none!important}body{color:#000;background:#fff}*{color:#000!important;text-shadow:none!important;box-shadow:none!important}.reveal,.job,.tl-list:before,.device,.job:before{opacity:1!important;transition:none!important;transform:none!important}a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em}section{break-inside:avoid}}.cta:active,.btn:active,.view-all:active,.lang:active,.copy-btn:active,.menu-btn:active{transform:scale(.97)}.device.device-icon{box-shadow:none;background:0 0;border:0;height:auto;min-height:320px;transform:none}.device.device-icon .app-icon{border-radius:38px;width:160px;height:160px}.device.device-icon .app-icon svg{width:96px;height:96px}.device-rotate{transition:height .9s var(--ease-out-soft);position:relative}.device-rotate img{opacity:0;width:100%;height:auto;transition:opacity 1s var(--ease-out-soft), transform 1.4s var(--ease-out-soft);position:absolute;top:0;left:0;transform:scale(1.02)}.device-rotate img.on{opacity:1;transform:scale(1)}
