:root{--m-dur-1:.16s;--m-dur-2:.22s;--m-dur-3:.32s;--m-dur-reveal:.64s;--m-dur-wash:.9s;--m-ease-out:cubic-bezier(.16, 1, .3, 1);--m-ease-in-out:cubic-bezier(.65, 0, .35, 1);--m-ease-in:cubic-bezier(.5, 0, .75, 0);--m-spring:linear(0, .075, .228, .391, .537, .657, .751, .822, .874, .912, .939, .958, .971, .98, .987, .991, .994, .996, .997, .998, 1);--m-spring-snap:linear(0, .122, .337, .537, .692, .801, .874, .922, .952, .971, .983, .99, .994, .996, .998, .999, .999, 1, 1, 1, 1);--m-lift:2px;--m-rise:14px;--m-press:.98;--cursor-color:var(--warm,#e8dfc8)}@supports not (transition-timing-function:linear(0, 1)){:root{--m-spring:cubic-bezier(.22, 1, .36, 1);--m-spring-snap:cubic-bezier(.25, 1, .5, 1)}}[data-press]{transition:scale var(--m-dur-3) var(--m-spring)}[data-press]:active{scale:var(--m-press);transition-duration:90ms;transition-timing-function:var(--m-ease-out)}@media (hover:hover) and (pointer:fine){[data-lift]{transition:translate var(--m-dur-3) var(--m-spring)}[data-lift]:hover{translate:0 calc(var(--m-lift) * -1)}}[data-underline]{text-decoration:none;position:relative}[data-underline]:after{content:"";transform-origin:100%;height:1px;transition:transform var(--m-dur-3) var(--m-ease-out);background:currentColor;position:absolute;bottom:-.12em;left:0;right:0;transform:scaleX(0)}[data-underline]:hover:after,[data-underline]:focus-visible:after,[data-underline][aria-current=page]:after{transform-origin:0;transform:scaleX(1)}@keyframes m-reveal{0%{opacity:0;translate:0 var(--m-rise)}to{opacity:1;translate:0}}@supports (animation-timeline:view()){:root.m-js:not([data-tier="0"]) :is([data-reveal],[data-stagger]>*){animation:linear both m-reveal view();animation-range:entry calc(5% + var(--m-i,0) * 7%) entry calc(65% + var(--m-i,0) * 7%)}:root.m-js:not([data-tier="0"]) [data-reveal],:root.m-js:not([data-tier="0"]) [data-stagger]>*{animation-timing-function:var(--m-ease-out)}}@supports not (animation-timeline:view()){:root.m-io:not([data-tier="0"]) :is([data-reveal],[data-stagger]>*):not(.m-in){opacity:0;translate:0 var(--m-rise)}:root.m-io:not([data-tier="0"]) :is([data-reveal],[data-stagger]>*){transition:opacity var(--m-dur-reveal) var(--m-ease-out), translate var(--m-dur-reveal) var(--m-ease-out);transition-delay:calc(var(--m-i,0) * 60ms)}}:root[data-tier="1"]{--m-rise:0px}[data-count]{font-variant-numeric:tabular-nums}.m-edge{width:100%;height:var(--pe-h,56px);background:var(--pe-from,transparent);pointer-events:none;margin:0;display:block;position:relative;overflow:hidden}.m-edge svg{width:100%;height:100%;position:absolute;inset:0}.m-edge .m-edge-fill{fill:var(--pe-to,var(--bg))}.m-edge .m-edge-wipe{transform-box:fill-box;transform-origin:0;transition:transform 1.1s var(--m-ease-out)}:root.m-js:not([data-tier="0"]) .m-edge.m-armed:not(.m-in) .m-edge-wipe{transform:scaleX(0)}@keyframes m-wash-in{0%{opacity:0;transform:scale(1.06)}to{opacity:1;transform:none}}@keyframes m-wash-bloom{0%{opacity:0;transform:translate3d(var(--wx,0), var(--wy,0), 0) scale(.7)}to{opacity:var(--wo,1);transform:translate(0,0)scale(1)}}.m-wash{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.m-wash>*{position:absolute}.m-wash-fade{background:linear-gradient(180deg, color-mix(in srgb, var(--wash,var(--cursor-color)) 30%, transparent) 0%, transparent 78%);inset:0}.m-wash-blooms{inset:-10%}.m-wash-blooms span{background:radial-gradient(closest-side, color-mix(in srgb, var(--wash,var(--cursor-color)) 46%, transparent), color-mix(in srgb, var(--wash,var(--cursor-color)) 18%, transparent) 72%, color-mix(in srgb, var(--wash,var(--cursor-color)) 34%, transparent) 92%, transparent);filter:url(#m-wash-rough);opacity:var(--wo,1);border-radius:50%;position:absolute}[data-paint-wash]{animation:m-wash-in var(--m-dur-wash) var(--m-ease-out) both}[data-paint-wash] .m-wash-blooms span{animation:m-wash-bloom calc(var(--m-dur-wash) + .3s) var(--m-ease-out) both;animation-delay:var(--wd,0s)}:root[data-tier="1"] .m-wash-blooms span{filter:blur(18px)}.m-copy-icon{vertical-align:-.125em;width:1em;height:1em;overflow:visible}.m-copy-icon path,.m-copy-icon rect{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.m-copy-icon .m-copy-a{transition:opacity var(--m-dur-1) var(--m-ease-out), transform var(--m-dur-2) var(--m-spring);transform-origin:50%;transform-box:fill-box}.m-copy-icon .m-copy-b{stroke-dasharray:14;stroke-dashoffset:14px;transition:stroke-dashoffset var(--m-dur-3) var(--m-ease-out) 60ms}.is-copied .m-copy-icon .m-copy-a{opacity:0;transform:scale(.7)}.is-copied .m-copy-icon .m-copy-b{stroke-dashoffset:0}[data-tabs] [role=tablist]{position:relative}.m-tabs-ind{background:var(--fg,currentColor);transform-origin:0;pointer-events:none;width:100px;height:2px;transition:transform var(--m-dur-3) var(--m-spring);border-radius:2px;position:absolute;bottom:0;left:0}.m-tabs-ind.is-drag{transition:none}[data-tabs] [role=tabpanel]{touch-action:pan-y}.m-focus{z-index:9997;pointer-events:none;border:2px solid var(--fg,CanvasText);opacity:0;contain:strict;transition:transform var(--m-dur-2) var(--m-spring), width var(--m-dur-2) var(--m-spring), height var(--m-dur-2) var(--m-spring), opacity var(--m-dur-1) var(--m-ease-out);border-radius:6px;position:fixed;top:0;left:0}.m-focus.is-on{opacity:1}.m-focus.is-jump{transition:opacity var(--m-dur-1) var(--m-ease-out)}:root.m-focus-glide :focus-visible{outline-color:#0000!important}[data-ripple]{isolation:isolate;position:relative;overflow:hidden}.m-ripple{opacity:.16;pointer-events:none;animation:m-ripple .52s var(--m-ease-out) forwards;z-index:-1;background:currentColor;border-radius:50%;position:absolute;transform:translate(-50%,-50%)scale(0)}@keyframes m-ripple{to{opacity:0;transform:translate(-50%,-50%)scale(1)}}.m-cur-layer,.m-touch-layer{z-index:9998;pointer-events:none;contain:strict;position:fixed;inset:0;overflow:hidden}.m-touch-layer{z-index:-1;position:absolute}.m-cur-layer.is-on-light>*{--m-cur:#161616}.m-cur-layer>*{transition:background-color .2s,border-color .2s,color .2s}.m-cur-field{z-index:-1;pointer-events:none;contain:strict;position:fixed;inset:0;overflow:hidden}:root.m-cur,:root.m-cur *{cursor:none!important}:root.m-cur :is(input:not([type=range],[type=checkbox],[type=radio],[type=color]),textarea,[contenteditable=true]){cursor:text!important}.m-cur-layer i,.m-cur-field i,.m-touch-layer i{will-change:transform;display:block;position:absolute;top:0;left:0}.m-cur-mark{transition:opacity var(--m-dur-3) var(--m-ease-out)}:is(.m-cur-layer,.m-cur-field,.m-touch-layer):not([data-in]) .m-cur-mark{opacity:0!important}.m-cur-canvas{width:100%;height:100%;position:absolute;inset:0}.m-cur-dot,.m-dot{background:var(--m-cur);border-radius:50%;width:6px;height:6px}.m-cur-dot{width:4px;height:4px}.m-dot-sm{width:3px;height:3px}.m-ring{box-sizing:border-box;border:1px solid var(--m-cur);opacity:var(--m-ring-a,.75);contain:strict;border-radius:50%}.m-ring.is-wrap{opacity:calc(var(--m-ring-a,.75) + .15)}.m-elastic{background:var(--m-cur);transition:opacity var(--m-dur-3) var(--m-ease-out);border-radius:50%}.m-spot{border-radius:50%;overflow:hidden;mask-image:radial-gradient(closest-side,#000 0%,#0000008c 55%,#0000 100%)}:is(.m-cur-layer,.m-cur-field) .m-spot-grain{mix-blend-mode:overlay;background-size:160px 160px}:is(.m-cur-layer,.m-cur-field) .m-spot-glow,.m-touch-layer .m-spot-glow{background:radial-gradient(closest-side, color-mix(in srgb, var(--m-cur) 38%, transparent), transparent);will-change:auto;width:100%;height:100%;inset:0}.m-lens{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--m-cur) calc(var(--m-lens-rim,.6) * 70%), transparent), inset 0 10px 18px -12px rgba(255, 255, 255, calc(var(--m-lens-rim,.6) * .7)), 0 6px 22px -10px #00000080;border-radius:50%}.m-lens.is-soft{backdrop-filter:blur(.6px)saturate(1.3)brightness(1.08)contrast(1.05)}.m-toast{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:10001;background:var(--glass,#0404069e);border:1px solid var(--glass-edge,#f7f7f524);backdrop-filter:var(--frost,blur(22px) saturate(150%));color:var(--fg,#f7f7f5);font:500 13px/1.2 var(--sans,system-ui, sans-serif);letter-spacing:.01em;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--m-dur-2) var(--m-ease-out), translate var(--m-dur-3) var(--m-spring);border-radius:999px;padding:9px 14px;position:fixed;translate:-50% 8px}.m-toast.is-on{opacity:1;translate:-50%}:root[data-tier="0"] [data-lift]:hover,:root[data-tier="0"] [data-press]:active{translate:none;scale:none}:root[data-tier="0"] [data-paint-wash],:root[data-tier="0"] [data-paint-wash] .m-wash-blooms span{animation-name:none}:root[data-tier="0"] .m-tabs-ind,:root[data-tier="0"] .m-focus{transition:opacity var(--m-dur-1) linear}:root[data-tier="0"] .m-ripple{display:none}:root[data-tier="0"] .m-toast{translate:-50%}:root{--bg:#0a0a0b;--raise:#111113;--fg:#f7f7f5;--muted:#9a9a97;--dim:#85857f;--warm:#e8dfc8;--rule:#f7f7f51a;--nav:#0a0a0bc7;--tint:#f7f7f50f;--rule-strong:#f7f7f53d;--warm-hi:#fff;--glass:#0404069e;--glass-edge:#f7f7f524;--glass-hi:#040406c2;--ease-soft:cubic-bezier(.4, 0, .2, 1);--hover-slow:.85s;--frost:blur(22px) saturate(150%);--gut:clamp(1.25rem, 12vw, 144px);--max:none;--sans:"Familjen Grotesk", system-ui, sans-serif}:root[data-theme=light]{--bg:#f6f5f2;--raise:#fffffe;--fg:#14140f;--muted:#5c5c57;--dim:#71716a;--warm:#705f2f;--rule:#14140f24;--nav:#f6f5f2c7;--tint:#14140f0d;--rule-strong:#14140f47;--warm-hi:#45391b;--glass:#ffffffbd;--glass-edge:#ffffffbf;--glass-hi:#ffffffe0}body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-variant-numeric:tabular-nums;margin:0}a{color:inherit}:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.vh{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s10:40px;--s12:48px;--s16:64px;--s24:96px;--s32:128px;--t-hero:clamp(40px, 8vw, 96px);--t-display:clamp(40px, 7vw, 76px);--t-h2:clamp(28px, 4.5vw, 48px);--t-title:32px;--t-h3:clamp(24px, 3vw, 32px);--t-h4:clamp(20px, 2.4vw, 28px);--t-deck:clamp(18px, 2.2vw, 24px);--t-lead:clamp(17px, 1.6vw, 20px);--t-sec:18px;--t-sub:16px;--t-body:16px;--t-note:14px;--t-micro:12px;--hair:#f7f7f512}:root[data-theme=light]{--hair:#14140f12}:root{--ease-out:cubic-bezier(.16, 1, .3, 1);--wrap:none;--pad:max(16px, 4vw, env(safe-area-inset-left), env(safe-area-inset-right));--measure:65ch;--r-card:20px;--r-sm:10px;--nav-h:64px;--tab-h:64px;--m-ground:#efe7d3;--m-ink:#14140f;--m-muted:#57534a;--m-rule:#14140f24;--cursor-color:var(--warm);color-scheme:dark;--st-live-dot:#22c55e;--st-live-bg-d:#0f3a22;--st-live-fg-d:#bbf7d0;--st-live-edge-d:#2f7d4f;--st-live-bg-l:#dcfce7;--st-live-fg-l:#14532d;--st-live-edge-l:#86c99c;--st-shipped-dot:#6b8cff;--st-shipped-bg-d:#1a2547;--st-shipped-fg-d:#d3defe;--st-shipped-edge-d:#3d5596;--st-shipped-bg-l:#e3eaff;--st-shipped-fg-l:#1e3a8a;--st-shipped-edge-l:#a6b8ee;--st-internal-dot:#a1a1aa;--st-internal-bg-d:#27272a;--st-internal-fg-d:#e4e4e7;--st-internal-edge-d:#52525b;--st-internal-bg-l:#ececef;--st-internal-fg-l:#3f3f46;--st-internal-edge-l:#c2c2ca;--st-build-dot:#f59e0b;--st-build-bg-d:#3a2a07;--st-build-fg-d:#fde68a;--st-build-edge-d:#8a6514;--st-build-bg-l:#fef3c7;--st-build-fg-l:#713f12;--st-build-edge-l:#e2c271;--surface-fill:#101012b8;--surface-solid:#101012f5;--surface-blur:blur(18px) saturate(1.2);--surface-bg:var(--surface-solid);--surface-filter:none}@supports (backdrop-filter:blur(1px)){:root:not([data-tier="0"]):not([data-tier="1"]){--surface-bg:var(--surface-fill);--surface-filter:var(--surface-blur)}}:is(.pp,.pcard,.g){--surface-bg:color-mix(in srgb, var(--p-surface,#141416) 96%, transparent)}@supports (backdrop-filter:blur(1px)){:root:not([data-tier="0"]):not([data-tier="1"]) :is(.pp,.pcard,.g){--surface-bg:color-mix(in srgb, var(--p-surface,#141416) 80%, transparent)}}@view-transition{navigation:auto}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 16px)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:clip}body{line-height:1.5;overflow-x:clip}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit}h1,h2,h3,h4{text-wrap:balance}p{text-wrap:pretty}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--warm);outline-offset:3px;border-radius:4px}.skip{z-index:100;background:var(--fg);color:var(--bg);border-radius:8px;padding:10px 16px;position:fixed;top:8px;left:8px;transform:translateY(-200%)}.skip:focus{transform:none}.wrap{max-width:var(--wrap);padding-inline:var(--pad)}@media (width<=767px){:root{--pad:max(16px, env(safe-area-inset-left), env(safe-area-inset-right))}}.eyebrow{font-size:var(--t-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--s3)}.sec-h{font-size:var(--t-h2);letter-spacing:-.03em;margin:0 0 var(--s6);font-weight:600;line-height:1.05}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:46px;padding:0 var(--s6);border:1px solid var(--fg);background:var(--fg);color:var(--bg);font-size:var(--t-note);cursor:pointer;white-space:nowrap;transition:background-color .2s var(--ease-soft), color .2s var(--ease-soft), border-color .2s var(--ease-soft);border-radius:999px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--warm);border-color:var(--warm)}.btn--ghost{color:var(--fg);border-color:var(--rule-strong);background:0 0}.btn--ghost:hover{background:var(--tint);border-color:var(--fg);color:var(--fg)}.btn--sm{min-height:36px;padding:0 var(--s4)}.btn svg,.textlink svg{flex:none;width:16px;height:16px}.btn small{opacity:.7;font-weight:400;font-size:var(--t-micro)}.btn-row{gap:var(--s3);flex-wrap:wrap;align-items:center;display:flex}.textlink{color:var(--muted);font-size:var(--t-note);text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--rule-strong)}.textlink:hover{color:var(--fg)}.cv{align-items:center;gap:var(--s3);flex-wrap:wrap;display:inline-flex}.cv-other{font-size:var(--t-micro)}.topnav{z-index:40;height:var(--nav-h);background:var(--nav);backdrop-filter:var(--frost);border-bottom:1px solid var(--rule);view-transition-name:topnav;position:sticky;top:0}.topnav-in{align-items:center;gap:var(--s6);height:100%;display:flex}.wordmark{letter-spacing:-.02em;margin-right:auto;font-size:18px;font-weight:700;text-decoration:none}.topnav-links{gap:var(--s1);margin:0;padding:0;list-style:none;display:flex}.topnav-links a{min-height:40px;padding:0 var(--s4);font-size:var(--t-note);color:var(--muted);border-radius:999px;align-items:center;text-decoration:none;display:inline-flex}.topnav-links a:hover{color:var(--fg)}.topnav-links a[aria-current=page]{color:var(--fg);background:var(--tint)}.topnav-links a[data-underline]:after{display:none}.topnav-act{border:1px solid var(--rule);background:var(--tint);cursor:pointer;border-radius:999px;place-items:center;width:44px;height:44px;display:none}.topnav-act svg{width:20px;height:20px}.tabbar{display:none}@media (width<=767px){:root{--nav-h:56px}.topnav-links,.topnav-cv{display:none}.topnav-act{display:grid}.topnav{padding-top:env(safe-area-inset-top);height:calc(var(--nav-h) + env(safe-area-inset-top))}.tabbar{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:45;transition:transform .35s var(--ease-out);display:block;position:fixed}.tabbar.is-hidden{transform:translateY(calc(100% + 24px + env(safe-area-inset-bottom)))}.tabbar ul{backdrop-filter:blur(24px)saturate(160%);border:1px solid var(--glass-edge);view-transition-name:tabbar;background:#121214bd;border-radius:999px;grid-template-columns:repeat(3,1fr);max-width:420px;margin:0 auto;padding:6px;list-style:none;display:grid;box-shadow:0 10px 30px #00000073}.tabbar a{color:var(--muted);border-radius:999px;justify-items:center;gap:2px;padding:8px 0 6px;font-size:11px;font-weight:500;text-decoration:none;display:grid}.tabbar svg{width:22px;height:22px}.tabbar a[aria-current=page]{color:var(--fg);background:var(--tint)}body{padding-bottom:calc(var(--tab-h) + 24px + env(safe-area-inset-bottom))}}dialog.sheet{max-width:none;max-height:none;color:var(--fg);background:0 0;border:0;margin:0;padding:0}dialog.sheet::backdrop{backdrop-filter:blur(4px);background:#0000008c}.sheet-panel{box-sizing:border-box;overscroll-behavior:contain;background:var(--surface-bg);width:100%;max-height:92dvh;backdrop-filter:var(--surface-filter);border-top:1px solid var(--rule);padding:var(--s3) max(var(--s4), env(safe-area-inset-right)) calc(var(--s6) + env(safe-area-inset-bottom)) max(var(--s4), env(safe-area-inset-left));transition:transform .3s var(--ease-out);border-radius:24px 24px 0 0;position:fixed;bottom:0;left:0;right:0;overflow:hidden auto}dialog.sheet[open] .sheet-panel{animation:sheet-up .38s var(--ease-out)}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet-grip{background:var(--rule-strong);width:40px;height:5px;margin:0 auto var(--s4);cursor:grab;border:0;border-radius:99px;padding:0;display:block}.sheet-title{font-size:var(--t-sec);margin:0 0 var(--s3);font-weight:600}.sheet-list{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.sheet-list li{min-width:0}.sheet-list a,.sheet-list button{box-sizing:border-box;align-items:center;gap:var(--s3);width:100%;min-width:0;min-height:52px;padding:0 var(--s4);color:inherit;font:inherit;background:var(--tint);font-size:var(--t-body);text-align:left;cursor:pointer;border:0;border-radius:14px;text-decoration:none;display:flex}.sheet-list svg{width:20px;height:20px;color:var(--muted);flex:none}.sheet-list small{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;color:var(--muted);font-size:var(--t-micro);margin-left:auto;overflow:hidden}.sheet-list a>:not(small,svg),.sheet-list button>:not(small,svg){flex:none}@media (width>=768px){.sheet-panel{border:1px solid var(--glass-edge);border-radius:24px;width:min(440px,92vw);inset:50% auto auto 50%;transform:translate(-50%,-50%)}dialog.sheet[open] .sheet-panel{animation:none}.sheet-grip{display:none}}dialog.viewer{width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--fg);background:#050506f5;border:0;margin:0;padding:0}dialog.viewer::backdrop{background:#0009}.viewer-stage{padding:64px var(--s4) 72px;touch-action:pan-x pan-y pinch-zoom;transition:transform .25s var(--ease-out), opacity .25s;place-items:center;display:grid;position:absolute;inset:0;overflow:auto}.viewer-stage img{object-fit:contain;border-radius:10px;width:auto;max-width:100%;max-height:calc(100dvh - 140px)}.viewer-close{top:calc(12px + env(safe-area-inset-top));z-index:2;border:1px solid var(--glass-edge);background:var(--glass);cursor:pointer;border-radius:999px;width:44px;height:44px;font-size:22px;line-height:1;position:absolute;right:12px}.viewer-cap{left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));text-align:center;color:var(--muted);font-size:var(--t-note);padding-inline:var(--s6);margin:0;position:absolute}dialog.viewer[open] .viewer-stage{animation:viewer-in .32s var(--ease-out)}@keyframes viewer-in{0%{opacity:0;transform:scale(.96)}}@media (width<=767px){dialog.viewer[open] .viewer-stage{animation:sheet-up .38s var(--ease-out)}}.pill-open{align-items:center;gap:var(--s2);font-size:var(--t-micro);border:1px solid var(--rule);border-radius:999px;padding:4px 10px;display:inline-flex}.pill-open:before{content:"";background:#4ade80;border-radius:50%;width:7px;height:7px}.badge{--st-bg:var(--st-internal-bg-d);--st-fg:var(--st-internal-fg-d);--st-edge:var(--st-internal-edge-d);--st-dot:var(--st-internal-dot);font-size:var(--t-micro);background:var(--st-bg);color:var(--st-fg);border:1px solid var(--st-edge);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-weight:600;display:inline-flex}.badge:before{content:"";background:var(--st-dot);border-radius:50%;width:7px;height:7px}.badge[data-status=Live]{--st-bg:var(--st-live-bg-d);--st-fg:var(--st-live-fg-d);--st-edge:var(--st-live-edge-d);--st-dot:var(--st-live-dot)}.badge[data-status=Shipped]{--st-bg:var(--st-shipped-bg-d);--st-fg:var(--st-shipped-fg-d);--st-edge:var(--st-shipped-edge-d);--st-dot:var(--st-shipped-dot)}.badge[data-status=In\ build]{--st-bg:var(--st-build-bg-d);--st-fg:var(--st-build-fg-d);--st-edge:var(--st-build-edge-d);--st-dot:var(--st-build-dot)}:is([data-theme=light],.ctx-light) .badge{--st-bg:var(--st-internal-bg-l);--st-fg:var(--st-internal-fg-l);--st-edge:var(--st-internal-edge-l)}:is([data-theme=light],.ctx-light) .badge[data-status=Live]{--st-bg:var(--st-live-bg-l);--st-fg:var(--st-live-fg-l);--st-edge:var(--st-live-edge-l);--st-dot:#16a34a}:is([data-theme=light],.ctx-light) .badge[data-status=Shipped]{--st-bg:var(--st-shipped-bg-l);--st-fg:var(--st-shipped-fg-l);--st-edge:var(--st-shipped-edge-l);--st-dot:#3b63d6}:is([data-theme=light],.ctx-light) .badge[data-status=In\ build]{--st-bg:var(--st-build-bg-l);--st-fg:var(--st-build-fg-l);--st-edge:var(--st-build-edge-l);--st-dot:#d97706}.ctx-light .ctx-dark .badge{--st-bg:var(--st-internal-bg-d);--st-fg:var(--st-internal-fg-d);--st-edge:var(--st-internal-edge-d)}.surface{background:var(--surface-bg);backdrop-filter:var(--surface-filter)}.chip{min-height:30px;font-size:var(--t-micro);border:1px solid color-mix(in srgb, currentColor 34%, transparent);white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-weight:500;text-decoration:none;display:inline-flex}a.chip:hover{background:color-mix(in srgb, currentColor 14%, transparent)}.chips{gap:var(--s2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.shot{min-width:0;margin:0}.shot figcaption{margin-top:var(--s3);font-size:var(--t-note);color:var(--p-muted,var(--muted))}.shot-frame{aspect-ratio:var(--ratio);background:var(--p-surface,var(--raise));border-radius:12px;position:relative;overflow:hidden}[data-mesh-on],[data-mesh-on] *{color:#0000}.mesh-text-canvas{pointer-events:none;z-index:1;position:absolute}.shot-frame picture,.shot-frame img,.shot-frame video,.shot-open{width:100%;height:100%;display:block}.shot-frame img,.shot-frame video{object-fit:cover;object-position:top center}.shot-open{cursor:zoom-in;background:0 0;border:0;padding:0}.shot-missing{place-content:center;gap:var(--s2);text-align:center;height:100%;padding:var(--s4);border-radius:inherit;color:#f59e0b;font-size:var(--t-micro);background:repeating-linear-gradient(45deg,#f59e0b0f 0 10px,#0000 10px 20px);border:2px dashed #f59e0b;display:grid}.shot-missing span:first-child{text-transform:uppercase;letter-spacing:.1em;font-weight:700}.shot-block{background:color-mix(in srgb, var(--p-accent,var(--warm)) 18%, var(--p-surface,var(--raise)));height:100%}.dev-phone .shot-frame{border:clamp(5px, 2.6%, 10px) solid #0b0b0d;box-sizing:content-box;border-radius:clamp(22px,14%,44px)/clamp(22px,6.5%,44px);box-shadow:0 0 0 1px #ffffff1f,0 30px 60px -20px #0009}.dev-desktop .shot-frame,.dev-tablet .shot-frame,.dev-tv .shot-frame{box-shadow:0 0 0 1px #ffffff1a,0 30px 70px -24px #000000a6}.dev-desktop .shot-frame{border-top:22px solid #1b1b1e;border-radius:10px}.dev-desktop .shot-frame:before{content:"";z-index:1;background:#ff5f57;border-radius:50%;width:8px;height:8px;position:absolute;top:-15px;left:10px;box-shadow:13px 0 #febc2e,26px 0 #28c840}.dev-tablet .shot-frame{border:clamp(8px, 2.4%, 16px) solid #0b0b0d;box-sizing:content-box;border-radius:clamp(14px,4%,28px)}.dev-tv .shot-frame{border:clamp(6px, 1.2%, 12px) solid #050506;box-sizing:content-box;border-radius:6px}.dev-tv{padding-bottom:18px;position:relative}.dev-tv:after{content:"";background:#1b1b1e;border-radius:0 0 6px 6px;height:10px;position:absolute;bottom:0;left:40%;right:40%}.pcard{border-radius:var(--r-card);background:color-mix(in srgb, var(--p-ground) 94%, transparent);backdrop-filter:var(--surface-filter);color:var(--p-ink);isolation:isolate;transition:transform .4s var(--ease-out);grid-template-rows:auto 1fr;display:grid;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff0f}.pcard-media{aspect-ratio:16/10;background:radial-gradient(120% 90% at 50% 100%, color-mix(in srgb, var(--p-accent) 32%, transparent), transparent 70%);padding:var(--s6) var(--s6) 0;place-items:end center;display:grid;position:relative;overflow:hidden;container-type:size}.pcard-media .shot{width:100%;max-height:100%}.pcard-media .shot.dev-phone{width:calc(100cqh * var(--ratio));transform:translateY(14%)}.pcard-media .shot.dev-desktop,.pcard-media .shot.dev-tablet,.pcard-media .shot.dev-tv,.pcard-media .shot.dev-none{transform:translateY(6%)}.pcard-body{gap:var(--s3);padding:var(--s6);align-content:start;display:grid}.pcard-top{gap:var(--s3);justify-content:space-between;align-items:center;display:flex}.pcard-name{font-size:var(--t-h4);letter-spacing:-.02em;font-weight:600;font-family:var(--p-display,var(--sans));margin:0}.pcard-name a{text-decoration:none}.pcard-name a:after{content:"";z-index:1;border-radius:inherit;position:absolute;inset:0}.pcard-name a:focus-visible{outline:none}.pcard:has(.pcard-name a:focus-visible){outline:2px solid var(--warm);outline-offset:3px}.pcard-one{color:var(--p-muted);font-size:var(--t-note);margin:0}.pcard .chips{z-index:2;position:relative}.pcard .chip{color:var(--p-ink)}.pcard .chip--tag{background:var(--p-accent);color:var(--p-on-accent);border-color:#0000;font-weight:600}@media (hover:hover){.pcard:hover{transform:translateY(-4px)}}.cards{gap:var(--s6);grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));display:grid}.prob{border-radius:var(--r-card);background:color-mix(in srgb, var(--p-ground) 94%, transparent);backdrop-filter:var(--surface-filter);color:var(--p-ink);grid-template-rows:auto auto 1fr;grid-template-columns:minmax(0,1fr);text-decoration:none;display:grid;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff0f}.prob-media{aspect-ratio:16/10;min-height:0;padding:var(--s4);background:radial-gradient(100% 80% at 50% 100%, color-mix(in srgb, var(--p-accent) 28%, transparent), transparent 70%);place-items:center;display:grid;overflow:hidden}.prob-media .shot{width:100%;max-height:100%}.prob-media{container-type:size}.prob-face{background:radial-gradient(90% 120% at 100% 0%, color-mix(in srgb, var(--p-accent) 34%, transparent), transparent 65%), var(--p-ground);padding:0;position:relative}.prob-face-grid{background-image:radial-gradient(color-mix(in srgb, var(--p-ink) 18%, transparent) 1px, transparent 1.5px);opacity:.55;background-size:18px 18px;position:absolute;inset:0;mask-image:linear-gradient(120deg,#0000 35%,#000 90%)}.prob-media .shot.dev-phone{width:calc(130cqh * var(--ratio));align-self:start}.prob-body{padding:var(--s4) var(--s6) var(--s6);gap:var(--s2);align-content:start;display:grid}.prob-proj{justify-content:space-between;align-items:baseline;gap:var(--s3);padding:var(--s4) var(--s6) var(--s3);font-size:var(--t-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--p-muted);margin:0;display:flex}.prob-proj-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--p-ink);font-weight:600;overflow:hidden}.prob-proj-plat{flex:none}.prob-before{color:var(--p-muted);font-size:var(--t-note);min-height:2.8em;text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--p-muted) 50%, transparent);margin:0;line-height:1.4}.prob-after{font-size:var(--t-deck);letter-spacing:-.01em;text-wrap:pretty;margin:0;font-weight:600;line-height:1.22}.prob-after:before{content:"→ ";color:var(--p-accent-ink)}.strip{gap:var(--s4);scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad);padding:var(--s2) var(--pad) var(--s6);margin-inline:calc(var(--pad) * -1);scrollbar-width:none;overscroll-behavior-x:contain;grid-auto-columns:min(78vw,340px);grid-auto-flow:column;display:grid;overflow-x:auto}.strip::-webkit-scrollbar{display:none}.strip>*{scroll-snap-align:start}::view-transition-group(*){animation-duration:.42s;animation-timing-function:var(--ease-out)}@media (width<=767px){html:active-view-transition-type(forward)::view-transition-old(root){animation:vt-out-left .36s var(--ease-out) both}html:active-view-transition-type(forward)::view-transition-new(root){animation:vt-in-right .36s var(--ease-out) both}html:active-view-transition-type(back)::view-transition-old(root){animation:vt-out-right .36s var(--ease-out) both}html:active-view-transition-type(back)::view-transition-new(root){animation:vt-in-left .36s var(--ease-out) both}}@keyframes vt-out-left{to{opacity:.4;transform:translate(-28%)}}@keyframes vt-in-right{0%{transform:translate(100%)}}@keyframes vt-out-right{to{transform:translate(100%)}}@keyframes vt-in-left{0%{opacity:.4;transform:translate(-28%)}}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}.tabbar,.pcard,.sheet-panel,.viewer-stage{transition:none!important;animation:none!important}}@media (pointer:coarse){body{user-select:none;-webkit-touch-callout:none}a,button{-webkit-touch-callout:default}input,textarea,select,[contenteditable=true]{user-select:text;-webkit-touch-callout:default}}.btn,.topnav-links a,.mast-step a{box-sizing:border-box;padding-bottom:1.6px}@media (width>=768px) and (pointer:fine){.motion-touch[data-astro-cid-yni366zu]{display:none}}.contact[data-astro-cid-yni366zu]{margin-top:var(--s16);border-top:1px solid var(--rule);scroll-margin-top:var(--nav-h);padding:clamp(4rem,12vh,10rem) 0 0}.contact-wrap[data-astro-cid-yni366zu]{align-items:center;gap:clamp(3rem,8vh,4.5rem);display:grid}@media (width>=768px){.contact-wrap[data-astro-cid-yni366zu]{grid-template-columns:auto minmax(0,1fr);gap:clamp(4rem,8vw,7rem)}}.contact-h[data-astro-cid-yni366zu]{font-size:var(--t-display);letter-spacing:-.04em;margin:0;font-weight:600;line-height:1.05}.contact-lede[data-astro-cid-yni366zu]{max-width:var(--measure);font-size:var(--t-lead);margin:clamp(1.5rem,3vh,2rem) 0 0;line-height:1.65}.say[data-astro-cid-yni366zu]{max-width:72ch}.close-facts[data-astro-cid-yni366zu]{border-bottom:1px solid var(--rule);margin:clamp(2rem,4.5vh,3rem) 0 0;padding:0}.close-fact[data-astro-cid-yni366zu]{border-top:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:1.25rem;padding:.8rem 0;display:flex}.close-fact[data-astro-cid-yni366zu] dt[data-astro-cid-yni366zu]{font-family:var(--mono,ui-monospace, monospace);font-size:var(--t-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);white-space:nowrap}.close-fact[data-astro-cid-yni366zu] dd[data-astro-cid-yni366zu]{text-align:right;font-size:var(--t-note);margin:0;line-height:1.4}.fact-note[data-astro-cid-yni366zu]{font-family:var(--mono,ui-monospace, monospace);font-size:var(--t-micro);letter-spacing:.04em;color:var(--dim);margin-top:.2rem;display:block}.contact-acts[data-astro-cid-yni366zu]{margin-top:clamp(2rem,4.5vh,3rem)}.contact-book[data-astro-cid-yni366zu]{margin-top:var(--s4);display:inline-block}.plate-col[data-astro-cid-yni366zu]{width:min(430px,78vw)}.plate[data-astro-cid-yni366zu]{touch-action:pan-y;aspect-ratio:1;isolation:isolate;background:radial-gradient(90% 90% at 50% 70%, #e8dfc824, var(--raise));border-radius:50%;width:100%;margin:0;position:relative;overflow:hidden}.plate[data-astro-cid-yni366zu] canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.plate-fallback[data-astro-cid-yni366zu]{width:70%;height:auto;position:absolute;bottom:0;left:9.3%}.reg[data-astro-cid-yni366zu]{width:22px;height:22px;color:var(--dim);stroke-width:1px;opacity:.85;pointer-events:none;position:absolute}.reg-a[data-astro-cid-yni366zu]{top:-4px;left:4%}.reg-b[data-astro-cid-yni366zu]{bottom:-4px;right:4%}.trim[data-astro-cid-yni366zu]{border:1px solid var(--rule);pointer-events:none;border-radius:50%;position:absolute;inset:0}.plate-hint[data-astro-cid-yni366zu]{border-top:1px solid var(--rule);font-family:var(--mono,ui-monospace, monospace);font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:1.4rem 0 0;padding-top:.8rem;display:none}.plate-col[data-astro-cid-yni366zu]:has(.plate canvas) .plate-hint[data-astro-cid-yni366zu]{display:block}.hint-touch[data-astro-cid-yni366zu]{display:none}@media (pointer:coarse){.hint-fine[data-astro-cid-yni366zu]{display:none}.hint-touch[data-astro-cid-yni366zu]{display:inline}}@media (width<=767px){.plate-col[data-astro-cid-yni366zu]{width:min(300px,66vw)}.reg[data-astro-cid-yni366zu]{display:none}}.foot-bar[data-astro-cid-yni366zu]{gap:var(--s4);padding-top:var(--s4);padding-bottom:var(--s6);border-top:1px solid var(--rule);color:var(--dim);font-size:var(--t-micro);flex-wrap:wrap;justify-content:space-between;align-items:center;margin-top:clamp(4rem,12vh,8rem);display:flex}.foot-bar-r[data-astro-cid-yni366zu]{gap:var(--s4);align-items:center;display:flex}.foot-hint[data-astro-cid-yni366zu] kbd[data-astro-cid-yni366zu]{font:inherit;border:1px solid var(--rule-strong);border-radius:4px;padding:1px 6px}@media (width<=767px),(pointer:coarse){.foot-hint[data-astro-cid-yni366zu]{display:none}}.cpk[data-astro-cid-dwmj447d]{left:max(16px, env(safe-area-inset-left));bottom:max(16px, env(safe-area-inset-bottom));z-index:46;font-family:var(--sans);position:fixed}@media (width<=767px),(pointer:coarse){.cpk[data-astro-cid-dwmj447d]{display:none}}.cpk-btn[data-astro-cid-dwmj447d]{border:1px solid var(--glass-edge);background:var(--surface-bg);min-height:40px;backdrop-filter:var(--surface-filter);color:var(--fg);font:500 13px/1 var(--sans);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 12px;display:inline-flex;box-shadow:0 8px 24px #00000059}.cpk-btn[data-astro-cid-dwmj447d] svg[data-astro-cid-dwmj447d]{width:14px;height:14px;fill:var(--warm)}.cpk-btn-v[data-astro-cid-dwmj447d]{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:14ch;overflow:hidden}.cpk-btn-v[data-astro-cid-dwmj447d]:before{content:"·";margin-right:8px}.cpk-btn[data-astro-cid-dwmj447d]:focus-visible,.cpk-pop[data-astro-cid-dwmj447d] [data-astro-cid-dwmj447d]:focus-visible{outline:2px solid var(--warm);outline-offset:2px}.cpk-pop[data-astro-cid-dwmj447d]{box-sizing:border-box;border:1px solid var(--glass-edge);background:var(--surface-bg);width:min(280px,100vw - 24px);max-height:min(70vh,560px);backdrop-filter:var(--surface-filter);color:var(--fg);opacity:0;transform-origin:0 100%;transition:opacity .18s var(--ease-out), transform .24s var(--ease-out);border-radius:18px;padding:14px;position:absolute;bottom:calc(100% + 8px);left:0;overflow:auto;transform:translateY(6px)scale(.98);box-shadow:0 20px 50px #00000080}.cpk-pop[data-astro-cid-dwmj447d].is-open{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.cpk-pop[data-astro-cid-dwmj447d]{transition:none;transform:none}}:root[data-tier="0"] .cpk-pop[data-astro-cid-dwmj447d]{transition:none;transform:none}.cpk-head[data-astro-cid-dwmj447d]{justify-content:space-between;align-items:center;display:flex}.cpk-title[data-astro-cid-dwmj447d]{margin:0;font-size:15px;font-weight:600}.cpk-x[data-astro-cid-dwmj447d]{background:var(--tint);width:32px;height:32px;color:var(--fg);cursor:pointer;border:0;border-radius:50%;place-items:center;display:grid}.cpk-x[data-astro-cid-dwmj447d] svg[data-astro-cid-dwmj447d]{stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:14px;height:14px}.cpk-sub[data-astro-cid-dwmj447d]{color:var(--muted);margin:2px 0 10px;font-size:12px}.cpk-list[data-astro-cid-dwmj447d]{border:0;grid-template-columns:1fr 1fr;gap:4px;margin:0;padding:0;display:grid}.cpk-opt[data-astro-cid-dwmj447d]{cursor:pointer;min-height:40px;color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:13px;display:flex;position:relative}.cpk-opt[data-astro-cid-dwmj447d] input[data-astro-cid-dwmj447d]{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.cpk-opt[data-astro-cid-dwmj447d]:hover{background:var(--tint);color:var(--fg)}.cpk-opt[data-astro-cid-dwmj447d]:has(input:checked){background:var(--warm);color:#14140f;font-weight:600}.cpk-opt[data-astro-cid-dwmj447d]:has(input:focus-visible){outline:2px solid var(--warm);outline-offset:2px}.cpk-k[data-astro-cid-dwmj447d]{opacity:.7;font-variant-numeric:tabular-nums;flex:none;width:18px;font-size:11px}.cpk-opt[data-astro-cid-dwmj447d].is-off{grid-column:1/-1}.cpk-more[data-astro-cid-dwmj447d]{box-sizing:border-box;border:1px solid var(--rule-strong);width:100%;min-height:40px;color:var(--fg);font:500 13px/1 var(--sans);cursor:pointer;background:0 0;border-radius:10px;justify-content:space-between;align-items:center;margin-top:10px;padding:0 12px;display:flex}.cpk-more[data-astro-cid-dwmj447d] kbd[data-astro-cid-dwmj447d]{font:inherit;border:1px solid var(--rule-strong);color:var(--muted);border-radius:4px;padding:1px 6px;font-size:11px}@media (pointer:coarse){.cpk-more[data-astro-cid-dwmj447d] kbd[data-astro-cid-dwmj447d]{display:none}}.fab[data-astro-cid-gxfura52]{right:max(24px, env(safe-area-inset-right));bottom:max(24px, env(safe-area-inset-bottom));z-index:45;box-sizing:border-box;background:var(--fg);min-height:48px;color:var(--bg);font-family:var(--sans);font-size:var(--t-note);transition:transform .32s var(--ease-out), opacity .24s ease-out;border-radius:999px;align-items:center;gap:8px;padding:0 20px 1.6px;font-weight:600;text-decoration:none;display:inline-flex;position:fixed;box-shadow:0 10px 30px #00000059,0 0 0 1px #ffffff14}.fab[data-astro-cid-gxfura52] svg{width:18px;height:18px}@media (hover:hover){.fab[data-astro-cid-gxfura52]:hover{transform:translateY(-2px)}}@media (width<=767px){.fab[data-astro-cid-gxfura52]{left:50%;right:auto;bottom:calc(var(--tab-h) + 22px + env(safe-area-inset-bottom));transform:translate(-50%)}.fab[data-astro-cid-gxfura52].is-away{opacity:0;pointer-events:none;transform:translate(-50%,16px)}}@media (prefers-reduced-motion:reduce){.fab[data-astro-cid-gxfura52]{transition:opacity .2s}}
