:root{--color-bg:#f3f2f2;--color-surface:#eae9e9;--color-text:#201e1d;--color-accent:#0088b0;--color-accent-2:#d6006c;--color-accent-600:#1186ac;--color-accent-700:#006786;--color-divider:#d7d3d3;--color-neutral-100:#f8f4f4;--color-neutral-200:#eae7e7;--color-neutral-300:#d7d3d3;--color-neutral-400:#bab6b6;--color-neutral-500:#9b9797;--color-neutral-600:#7d7979;--color-neutral-700:#605d5d;--color-neutral-800:#444141;--color-neutral-900:#2d2b2b;--color-accent-100:#e9f8ff;--color-accent-800:#004961;--color-accent-2-100:#fff1f4;--color-accent-2-800:#790e3d;--font-heading:"Source Serif 4", Georgia, serif;--font-body:"Source Serif 4", Georgia, serif;--font-mono:"Fira Code", ui-monospace, "SF Mono", Menlo, monospace;--space-1:5px;--space-2:10px;--space-3:15px;--space-4:20px;--space-6:30px;--space-8:40px;--bg:var(--color-bg);--bg-elevated:var(--color-neutral-100);--bg-subtle:var(--color-neutral-200);--text:var(--color-text);--text-secondary:#444141;--text-tertiary:#7d7979;--accent:var(--color-accent);--accent-hover:var(--color-accent-600);--accent-soft:#38a6cf;--accent-tint:var(--color-accent-100);--accent-teal:var(--color-accent-2);--border:var(--color-divider);--border-strong:var(--color-neutral-400);--shadow-sm:0 1px 2px #2d2b2b24;--shadow-md:0 3px 10px #2d2b2b29;--shadow-lg:0 12px 32px #2d2b2b38;--shadow-sheet:0 -8px 28px #2d2b2b2e;--color-ink:var(--color-text);--color-on-ink:var(--color-bg);--color-on-ink-muted:var(--color-neutral-400);--color-scrim:#201e1d6b;--pipe-from:#0088b099;--pipe-to:#d6006c59;--image-dim:none;--ease:cubic-bezier(.22, 1, .36, 1);--transition-slow:all .5s var(--ease);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media screen and (prefers-color-scheme:dark){:root{--color-bg:#141312;--color-surface:#1f1d1b;--color-text:#ebe6de;--color-accent:#3aa7d0;--color-accent-2:#ff4b90;--color-accent-600:#4eb4dc;--color-accent-700:#2193bb;--color-divider:#3a3733;--color-neutral-100:#1f1d1b;--color-neutral-200:#1c1b19;--color-neutral-300:#36332f;--color-neutral-400:#524e49;--color-neutral-500:#6d6863;--color-neutral-600:#8a847e;--color-neutral-700:#a7a19a;--color-neutral-800:#c9c3bb;--color-neutral-900:#dbd5cc;--color-accent-100:#0e2a36;--color-accent-800:#a8daf0;--color-accent-2-100:#371922;--color-accent-2-800:#f7c4d1;--text-secondary:var(--color-neutral-800);--text-tertiary:var(--color-neutral-600);--accent-soft:var(--color-accent-600);--shadow-sm:0 1px 2px #00000080;--shadow-md:0 3px 10px #00000080;--shadow-lg:0 12px 32px #0009;--shadow-sheet:0 -8px 28px #00000080;--color-ink:#2a2825;--color-on-ink:var(--color-text);--color-on-ink-muted:var(--color-neutral-700);--color-scrim:#08070699;--pipe-from:#3aa7d099;--pipe-to:#ff4b9059;--image-dim:brightness(.88);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;background-color:var(--color-bg);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:15px;line-height:1.55}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.015em;font-weight:600;line-height:1.12}p{margin:0}a{color:var(--color-accent);text-underline-offset:3px}img{max-width:100%;display:block}::selection{background:color-mix(in srgb, var(--color-accent) 30%, transparent)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (hover:hover){a:hover{color:var(--color-accent-600)}}.wrap{max-width:1180px;padding-inline:var(--space-8);margin:0 auto}.section{padding-block:var(--space-8)}.section--work{padding-top:var(--space-6)}.mono{font-family:var(--font-mono)}.text-accent-2{color:var(--color-accent-2)}.nowrap{white-space:nowrap}.btn-row{gap:var(--space-3);flex-wrap:wrap;display:flex}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.when-touch{display:none}@media (hover:none){.when-touch{display:inline}.when-mouse{display:none}}.masthead{padding-top:var(--space-6)}.rule-tt{border-top:4px solid var(--color-text);border-bottom:1px solid var(--color-text)}.masthead-rail{justify-content:space-between;align-items:center;column-gap:var(--space-4);letter-spacing:.1em;text-transform:uppercase;font-variant-numeric:tabular-nums;padding:7px 0;font-size:11px;display:flex}.masthead-title{color:var(--color-accent);letter-spacing:.18em}.grid-bg{background-image:linear-gradient(var(--color-neutral-200) 1px, transparent 1px), linear-gradient(90deg, var(--color-neutral-200) 1px, transparent 1px);background-size:44px 44px}.frame{border:1px solid var(--color-text);background:var(--color-bg)}.mk{position:relative}.mk>i{z-index:2;width:10px;height:10px;position:absolute}.mk>i:before,.mk>i:after{content:"";background:var(--color-accent);position:absolute}.mk>i:before{height:1px;top:50%;left:0;right:0;transform:translateY(-.5px)}.mk>i:after{width:1px;top:0;bottom:0;left:50%;transform:translate(-.5px)}.mk>i.tl{top:-5px;left:-5px}.mk>i.tr{top:-5px;right:-5px}.mk>i.bl{bottom:-5px;left:-5px}.mk>i.br{bottom:-5px;right:-5px}.halftone .ht{background:repeating-linear-gradient(135deg, var(--color-neutral-300) 0 6px, var(--color-neutral-100) 6px 12px);place-items:center;width:100%;height:100%;display:grid}.sec-head{padding-top:calc(var(--space-3) + 4px);margin-bottom:var(--space-6);align-items:baseline;gap:14px;display:flex;position:relative}.sec-head:before{content:"";background:var(--color-text);transform-origin:0;height:4px;transition:transform .9s var(--ease);position:absolute;top:0;left:0;right:0}.sec-head.rule-pending:before{transition:none;transform:scaleX(0)}.sec-head--split{justify-content:space-between}.sec-head-main{align-items:baseline;gap:14px;display:flex}.sec-head-aside{letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);font-size:11px}.sec-idx{font-family:var(--font-mono);color:var(--color-accent);letter-spacing:.04em;white-space:nowrap;font-size:13px}.sec-title{letter-spacing:.16em;text-transform:uppercase;color:var(--color-text);margin:0;font-size:15px;font-weight:600}.liveobj{color:inherit;padding:var(--space-4);transition:background .15s, transform .2s var(--ease);text-decoration:none;display:block}.projobj{padding:var(--space-4);transition:background .15s, transform .2s var(--ease)}@media (hover:hover){.liveobj:hover{background:var(--color-neutral-100);transform:translateY(-3px)}.projobj:hover{background:var(--color-neutral-100)}}@font-face{font-family:"Source Serif 4 Fallback";src:local(Georgia Bold),local(Georgia-Bold);font-weight:700;size-adjust:80%}.hero{border-bottom:1px solid var(--color-text)}.hero-grid{gap:var(--space-8);grid-template-columns:1.7fr 1fr;align-items:start;display:grid}.hero-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin-bottom:var(--space-4);font-size:12px}.hero-title{letter-spacing:-.03em;margin:0;font-family:"Source Serif 4","Source Serif 4 Fallback",Georgia,serif;font-size:112px;font-weight:700;line-height:.88}.hero-pitch{max-width:36ch;margin:var(--space-6) 0 0;font-size:clamp(18px,3.2vw + 6px,24px);line-height:1.4}.hero-actions{margin-top:var(--space-6)}.hero-status{justify-content:space-between;column-gap:var(--space-6);row-gap:var(--space-2);border-top:1px solid var(--color-text);border-bottom:1px solid var(--color-text);flex-wrap:wrap;padding:12px 0;display:none}.hero-status dt{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-bottom:2px;font-size:12px}.hero-status dd{color:var(--color-text);font-size:15px;line-height:1.35}.hero-status .hero-status-open{color:var(--color-accent-2)}.metrics-grid{grid-template-columns:repeat(4,1fr);display:grid}.exp-grid{gap:var(--space-8);grid-template-columns:1.4fr 1fr;display:grid}.exp-lead-title{margin:0;font-size:42px;line-height:1}.exp-lead-body{max-width:52ch;font-size:19px;line-height:1.5}.exp-side{gap:var(--space-6);padding-top:var(--space-4);flex-direction:column;display:flex}.exp-more{gap:var(--space-8);margin-top:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.exp-item{border-top:1px solid var(--color-text);padding-top:var(--space-3)}.exp-item-title{margin:0;font-size:26px;line-height:1}.exp-item-body{max-width:46ch;margin:0}.exp-meta{margin:6px 0 var(--space-2);letter-spacing:.04em;text-transform:uppercase;color:var(--color-accent);font-size:11px}.exp-meta--lead{margin:8px 0 var(--space-3);font-size:12px}.live-grid{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.live-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);font-size:11px}.live-title{margin:8px 0 var(--space-2);font-size:30px}.live-body{margin:0 0 var(--space-3)}.live-url{margin-top:var(--space-3);color:var(--color-accent);font-size:13px}.live-bar{width:100%;height:auto;margin-bottom:var(--space-3);border:1px solid var(--color-divider);filter:var(--image-dim)}.proj-hint{letter-spacing:.06em;text-transform:uppercase;color:var(--color-neutral-600);margin-bottom:var(--space-4);font-size:11px}.proj-grid{gap:var(--space-4);grid-template-columns:repeat(3,1fr);list-style:none;display:grid}.proj-title{margin:0 0 6px;font-size:22px}.proj-body{margin:0 0 var(--space-3)}.proj-cta{margin-top:var(--space-3);color:var(--color-accent);font-size:11px}.project-card--feature{column-gap:var(--space-6);grid-column:1/-1;grid-template-rows:repeat(5,auto) 1fr;grid-template-columns:minmax(0,2fr) minmax(0,3fr);grid-template-areas:"shot kicker""shot title""shot body""shot tags""shot actions""shot.";display:grid}.proj-shot{border:1px solid var(--color-divider);width:100%;height:auto;filter:var(--image-dim);grid-area:shot}.proj-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-2);grid-area:kicker;margin:0 0 6px;font-size:11px}.project-card--feature .proj-title{grid-area:title;font-size:30px}.project-card--feature .proj-body{grid-area:body;max-width:62ch}.project-card--feature .tag-row{grid-area:tags}.proj-play{margin-top:var(--space-4);grid-area:actions;justify-self:start}.project-card--feature .proj-cta{width:auto;margin-top:var(--space-4);grid-area:actions;place-self:center end}.art-defs{width:0;height:0;position:absolute;overflow:hidden}.art-defs .ah{fill:none;stroke:var(--color-text);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.art-defs .ah-m{stroke:var(--color-accent-2)}.art-defs .fc{fill:var(--color-accent)}.art-defs .fm{fill:var(--color-accent-2)}.proj-art{width:100%;height:auto;margin-bottom:var(--space-3);border:1px solid var(--color-divider);background-color:var(--color-bg);background-image:linear-gradient(var(--color-neutral-200) 1px, transparent 1px), linear-gradient(90deg, var(--color-neutral-200) 1px, transparent 1px);fill:none;stroke:var(--color-text);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;background-size:4.16667% 10%;display:block}.proj-art .pa{fill:var(--color-bg)}.proj-art .ct{fill:var(--color-accent-100)}.proj-art .mt{fill:var(--color-accent-2-100)}.proj-art .fc{fill:var(--color-accent)}.proj-art .fm{fill:var(--color-accent-2)}.proj-art .fk{fill:var(--color-text)}.proj-art .fg{fill:var(--color-neutral-400)}.proj-art .fbg{fill:var(--color-bg)}.proj-art .dc{fill:url(#art-dots-c)}.proj-art .dm{fill:url(#art-dots-m)}.proj-art .c{stroke:var(--color-accent)}.proj-art .m{stroke:var(--color-accent-2)}.proj-art .g{stroke:var(--color-neutral-400)}.proj-art .pa-s{stroke:var(--color-bg)}.proj-art .n{stroke:none}.proj-art .w15{stroke-width:1.5px}.proj-art .w25{stroke-width:2.5px}.proj-art .w3{stroke-width:3px}.proj-art .w4{stroke-width:4px}.proj-art .w5{stroke-width:5px}.proj-art .w6{stroke-width:6px}.proj-art .w8{stroke-width:8px}.proj-art .butt{stroke-linecap:butt}.proj-art .dash{stroke-dasharray:3 5}.proj-art text{stroke:none;fill:var(--color-text);font-family:var(--font-mono);font-size:11px;font-weight:500}.proj-art .serif{font-family:var(--font-body);font-size:17px;font-weight:600}.proj-art .big{font-size:17px;font-weight:600}.proj-art .code{font-size:30px}.proj-art .c-t,.proj-art .code{fill:var(--color-accent)}.proj-art .m-t{fill:var(--color-accent-2)}.stack-grid{gap:var(--space-8);grid-template-columns:1.3fr 1fr;display:grid}.stack-tags{margin-bottom:var(--space-6);flex-wrap:wrap;gap:8px;display:flex}.cert-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cert-list li:not(:last-child){border-bottom:1px solid var(--color-text);padding-bottom:var(--space-2)}.edu-card{padding:var(--space-4)}.edu-card:not(:last-child){margin-bottom:var(--space-4)}.edu-title{margin:0;font-size:24px}.edu-meta{color:var(--color-accent);margin-top:6px;font-size:12px}.contact-card{padding:var(--space-8)}.contact-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent-2);font-size:12px}.contact-title{margin:var(--space-3) 0 var(--space-6);max-width:16ch;font-size:66px;line-height:.95}.colophon{margin-top:var(--space-8);letter-spacing:.04em;color:var(--color-neutral-700);font-size:11px}.back-to-top,.contact-bar{display:none}.nav{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);z-index:30;background:color-mix(in srgb, var(--color-bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #0000;transition:box-shadow .3s,border-color .3s;display:flex;position:sticky;top:0}.nav.nav-scrolled{border-bottom-color:var(--color-divider);box-shadow:var(--shadow-sm)}.nav-brand{font-family:var(--font-heading);letter-spacing:-.01em;white-space:nowrap;margin-right:auto;font-size:18px;font-weight:600}.nav-links{gap:var(--space-4);display:flex}.nav-links a{color:inherit;font-size:14px;text-decoration:none}@media (hover:hover){.nav-links a:hover{color:var(--color-accent)}}.nav-running,.nav-progress,.nav .nav-contents{display:none}.nav-running{min-width:0;font-family:var(--font-heading);letter-spacing:-.01em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s var(--ease), transform .25s var(--ease);align-items:baseline;column-gap:6px;font-size:16px;font-weight:600;transform:translateY(10px)}.nav-running-idx{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);font-size:13px;font-weight:400}.nav-running-label{text-overflow:ellipsis;overflow:hidden}.nav-running-idx:empty{display:none}@keyframes navRunIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.nav-running-change>span{animation:navRunIn .3s var(--ease) both}.nav-progress{background:var(--color-accent);height:2px;transform:scaleX(var(--nav-progress,0));transform-origin:0;position:absolute;bottom:-1px;left:0;right:0}.nav-contents-close{display:none}.nav .nav-contents[aria-expanded=true]{background:var(--color-text);border-color:var(--color-text);color:var(--color-bg)}.nav-contents[aria-expanded=true] .nav-contents-open{display:none}.nav-contents[aria-expanded=true] .nav-contents-close{display:block}.contents{display:none}.contents-inner{padding:var(--space-3) var(--space-4) var(--space-8)}.contents-head{text-align:center;letter-spacing:.18em;text-transform:uppercase;color:var(--color-accent);padding:7px 0;font-size:12px}.contents-list{margin-top:var(--space-2);list-style:none}.contents-list a{color:var(--color-text);background:linear-gradient(var(--color-text), var(--color-text)) 0 100% / 100% 1px no-repeat;grid-template-columns:46px 1fr auto;align-items:baseline;padding:14px 0;text-decoration:none;display:grid}.contents-list a:after{content:"→";content:"→" / "";font-family:var(--font-mono);color:var(--color-neutral-600);font-size:15px;line-height:1}.contents-idx{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);font-size:13px}.contents-title{font-family:var(--font-heading);letter-spacing:-.015em;text-wrap:balance;font-size:24px;font-weight:600;line-height:1.15}.contents-sub a{padding-block:12px}.contents-sub .contents-title{font-size:18px;font-weight:400}.contents-list a[aria-current=true] .contents-idx,.contents-list a[aria-current=true] .contents-title,.contents-list a[aria-current=true]:after{color:var(--color-accent-2)}.contents-list a[aria-current=true]:after{content:"●";content:"●" / "";font-size:12px}.contents-list a:active{background-color:color-mix(in srgb, var(--color-text) 6%, transparent)}@media (hover:hover){.contents-list a:hover .contents-title{color:var(--color-accent)}}.contents-folio{justify-content:space-between;gap:var(--space-1) var(--space-4);margin-top:var(--space-6);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);flex-wrap:wrap;font-size:12px;display:flex}@keyframes contentsIn{0%{opacity:0}to{opacity:1}}@keyframes contentsRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes contentsRule{0%{background-size:0 1px}to{background-size:100% 1px}}.btn{cursor:pointer;font-family:var(--font-heading);color:var(--color-text);padding:var(--space-2) calc(var(--space-3) * 1.2);transition:background .2s, border-color .2s, transform .2s var(--ease);background:0 0;border:1px solid #0000;border-radius:2px;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-accent);color:var(--color-bg)}.btn-secondary{border-color:var(--color-divider)}@media (hover:hover){.btn:hover{transform:translateY(-1px)}.btn-primary:hover{background:var(--color-accent-600);color:var(--color-bg)}.btn-secondary:hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}}.btn-primary:active{background:var(--color-accent-700)}.tag{letter-spacing:.02em;font-size:11px;font-family:var(--font-body);border-radius:2px;align-items:center;padding:3px 10px;display:inline-flex}.tag-accent{background:var(--color-accent-100);color:var(--color-accent-800)}.tag-accent-2{background:var(--color-accent-2-100);color:var(--color-accent-2-800)}.tag-neutral{background:var(--color-neutral-100);color:var(--color-neutral-800)}.tag-outline{border:1px solid var(--color-accent);color:var(--color-accent)}.spec-card{perspective:1200px;border-right:1px solid var(--color-neutral-300);cursor:default;min-height:156px;display:grid}.spec-card:last-child{border-right:none}.spec-inner{min-height:156px;transition:transform .6s var(--ease);transform-style:preserve-3d;display:grid;position:relative}.spec-card.is-open .spec-inner{transform:rotateX(180deg)}@media (hover:hover){.spec-card:hover .spec-inner{transform:rotateX(180deg)}}.spec-face{backface-visibility:hidden;padding:var(--space-4);flex-direction:column;grid-area:1/1;justify-content:center;display:flex;position:relative}.spec-toggle{width:100%;font:inherit;color:inherit;text-align:inherit;cursor:inherit;background:0 0;border:0;padding:0;display:block}.spec-num,.spec-label{display:block}.spec-num{font-variant-numeric:tabular-nums;color:var(--color-accent);font-size:54px;line-height:1}.spec-num.magenta{color:var(--color-accent-2)}.spec-num.spec-word{letter-spacing:-.01em;font-size:30px;line-height:1.08}.spec-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;margin-top:10px;font-size:11px}.spec-back{background:var(--color-ink);color:var(--color-on-ink);transform:rotateX(180deg)}.spec-back .spec-kicker{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-2);margin-bottom:8px;font-size:10px}.spec-back .spec-detail{font-size:15px;line-height:1.4}@supports selector(:has(*)){.spec-toggle:focus-visible{outline:none}.spec-card:has(.spec-toggle:focus-visible){outline:2px solid var(--color-accent);outline-offset:2px}}@media (hover:none){.spec-face:after{content:"↻";content:"↻" / "";top:var(--space-2);right:var(--space-3);font-family:var(--font-mono);color:var(--color-neutral-600);font-size:15px;line-height:1;position:absolute}.spec-back:after{color:var(--color-on-ink-muted)}}@media (prefers-reduced-motion:reduce){.spec-inner{transition:none}}.hero-card{perspective:1600px;cursor:pointer}.flip-inner{aspect-ratio:3/4;transition:transform .7s var(--ease);transform-style:preserve-3d;display:grid;position:relative}.hero-card.flipped .flip-inner{transform:rotateY(180deg)}.flip-face{backface-visibility:hidden;background:var(--color-bg);padding:var(--space-4);flex-direction:column;grid-area:1/1;display:flex}.flip-back{transform:rotateY(180deg)}.hc-head{font-family:var(--font-mono);letter-spacing:.08em;justify-content:space-between;align-items:baseline;font-size:12px;display:flex}.hc-head .fig{color:var(--color-accent)}.hc-head .fig.verso{color:var(--color-accent-2)}.hc-head .turn{color:var(--color-neutral-600)}.hc-rule{border:0;border-top:1px solid var(--color-text);height:0;margin:var(--space-3) 0}.hc-hair{border:0;border-top:1px solid var(--color-neutral-300);height:0;margin:var(--space-3) 0}.hc-field{margin-bottom:var(--space-3)}.hc-k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-600);margin-bottom:5px;font-size:10px}.hc-v{font-family:var(--font-mono);color:var(--color-text);font-size:14px;line-height:1.4}.hc-v .dot,.hc-v.magenta{color:var(--color-accent-2)}.hc-v.cyan{color:var(--color-accent)}.hc-foot{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-neutral-600);font-size:11px}.hc-flip{line-height:inherit;text-align:inherit;color:var(--color-neutral-700);cursor:pointer;background:0 0;border:0;padding:0}@media (hover:hover){.hc-flip:hover{color:var(--color-accent-700)}}.flip-face>.hc-field:nth-last-child(3){margin-bottom:var(--space-6)}.flip-face>.hc-rule:nth-last-child(2){border-top:0;border-bottom:1px solid var(--color-text);background:linear-gradient(to bottom, transparent 23px, color-mix(in srgb, var(--color-accent) 28%, var(--color-bg)) 23px) left bottom / 100% 24px repeat-y;flex-grow:1;margin-top:0}.hc-log{flex-direction:column;gap:4px;display:flex}@media (prefers-reduced-motion:reduce){.flip-inner{transition:none}}@media (scripting:none){.hero-card{cursor:auto}.flip-inner{aspect-ratio:auto;row-gap:var(--space-4)}.flip-face{grid-area:auto}.flip-back{transform:none}.hc-flip{display:none}}.reveal{transition:opacity .5s var(--ease), transform .5s var(--ease)}.reveal.reveal-pending{opacity:0;transform:translateY(24px)}@media (prefers-reduced-motion:reduce){.reveal{transition:none}.reveal.reveal-pending{opacity:1;transform:none}}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-neutral-400);border:2px solid var(--color-bg);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--accent-soft)}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-8px)}60%{transform:translateY(-4px)}}.animate-bounce{animation:2s infinite bounce}.project-card{cursor:pointer;-webkit-user-select:none;user-select:none}.proj-cta{width:100%;line-height:inherit;letter-spacing:inherit;text-align:inherit;cursor:inherit;background:0 0;border:0;padding:0;display:block}@supports selector(:has(*)){.proj-cta:focus-visible{outline:none}.project-card:has(.proj-cta:focus-visible){outline:2px solid var(--color-accent);outline-offset:3px}}.proj-modal{width:auto;max-width:none;height:auto;max-height:none;color:inherit;opacity:0;background:#201e1d00;border:0;margin:0;padding:1rem;transition:opacity .28s,background .28s,-webkit-backdrop-filter .28s,backdrop-filter .28s;position:fixed;inset:0;overflow:clip}.proj-modal[open]{justify-content:center;align-items:center;display:flex}.proj-modal::backdrop{background:0 0}.proj-modal.open{opacity:1;background:var(--color-scrim);-webkit-backdrop-filter:blur(14px)saturate(120%);backdrop-filter:blur(14px)saturate(120%)}html.proj-modal-open{overflow:hidden}.proj-modal-box{background:var(--color-neutral-100);border:1px solid var(--color-text);opacity:0;width:100%;max-width:780px;max-height:90dvh;transition:transform .28s var(--ease), opacity .28s ease;box-shadow:var(--shadow-lg);border-radius:4px;flex-direction:column;display:flex;position:relative;overflow:hidden;transform:scale(.94)translateY(12px)}.proj-modal.open .proj-modal-box{opacity:1;transform:scale(1)translateY(0)}.proj-modal-accent{background:linear-gradient(90deg, var(--color-accent) 0%, var(--color-accent-2) 60%, transparent 100%);flex-shrink:0;height:4px}.proj-modal-grip{display:none}.proj-modal-scroll{overscroll-behavior:contain;flex-direction:column;gap:2rem;padding:2rem;display:flex;overflow-y:auto}.proj-modal-scroll::-webkit-scrollbar{width:4px}.proj-modal-scroll::-webkit-scrollbar-track{background:0 0}.proj-modal-scroll::-webkit-scrollbar-thumb{background:var(--color-neutral-400);border-radius:4px}.proj-modal-header{justify-content:space-between;align-items:flex-start;gap:1.5rem;display:flex}.proj-modal-title{letter-spacing:-.02em;color:var(--color-text);font-size:1.7rem;font-weight:700;line-height:1.15}.proj-modal-desc{color:var(--text-secondary);max-width:520px;margin-top:.45rem;font-size:.95rem;line-height:1.55}.proj-modal-note{font-family:var(--font-mono,monospace);letter-spacing:.04em;color:var(--color-neutral-600);border-left:2px solid var(--color-accent-2);max-width:520px;margin-top:.6rem;padding-left:.6rem;font-size:.7rem;line-height:1.5}.proj-modal-note[hidden]{display:none}.proj-modal-close{border:1px solid var(--color-text);background:var(--color-bg);width:34px;height:34px;color:var(--color-text);cursor:pointer;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;transition:background .2s,color .2s,border-color .2s;display:flex}@media (hover:hover){.proj-modal-close:hover{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}}.proj-modal-section{flex-direction:column;gap:1.25rem;display:flex}.proj-section-label{font-family:var(--font-mono);letter-spacing:.14em;color:var(--color-accent);text-transform:uppercase;font-size:.62rem;font-weight:500}.proj-pipeline-wrap{scrollbar-width:thin;scrollbar-color:var(--color-neutral-400) transparent;flex-direction:row;align-items:flex-start;gap:0;padding-bottom:.75rem;display:flex;overflow-x:auto}.proj-pipeline-wrap::-webkit-scrollbar{height:4px}.proj-pipeline-wrap::-webkit-scrollbar-track{background:0 0}.proj-pipeline-wrap::-webkit-scrollbar-thumb{background:var(--color-neutral-400);border-radius:4px}@keyframes stepIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.proj-step{border:1px solid var(--color-divider);background:var(--color-bg);opacity:0;width:110px;animation:stepIn .38s var(--ease) both;cursor:default;border-radius:2px;flex-direction:column;flex-shrink:0;align-items:center;gap:.5rem;padding:.75rem .5rem;transition:border-color .2s,background .2s;display:flex}@media (hover:hover){.proj-step:hover{border-color:var(--color-accent);background:var(--color-accent-100)}}.proj-step-badge{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);align-self:flex-start;margin-left:.1rem;font-size:.55rem;font-weight:500}@keyframes pulseRing{0%{box-shadow:0 0 0 0px color-mix(in srgb, var(--color-accent) 45%, transparent)}60%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}.proj-step-icon{background:var(--color-accent-100);border:1px solid color-mix(in srgb, var(--color-accent) 28%, transparent);width:38px;height:38px;color:var(--color-accent);border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.proj-step-icon.pulsing{animation:.55s ease-out both pulseRing}.proj-step-title{color:var(--color-text);text-align:center;letter-spacing:-.01em;font-size:.66rem;font-weight:700;line-height:1.3}.proj-step-desc{color:var(--text-tertiary);text-align:center;font-size:.58rem;line-height:1.45}.proj-connector{flex-direction:column;flex-shrink:0;justify-content:center;align-self:center;align-items:center;gap:2px;width:28px;margin-top:-6px;display:flex}@keyframes connectorIn{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes connectorInY{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.proj-conn-line{background:linear-gradient(90deg, var(--pipe-from), var(--pipe-to));transform-origin:0;width:100%;height:2px;animation:.22s ease-out both connectorIn;transform:scaleX(0)}@keyframes arrowIn{0%{opacity:0}to{opacity:1}}.proj-conn-arrow{opacity:0;color:color-mix(in srgb, var(--color-accent) 75%, transparent);justify-content:center;align-items:center;margin-top:-5px;animation:.15s ease-out both arrowIn;display:flex}.proj-modal-footer{border-top:1px solid var(--color-divider);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem;padding-top:1.5rem;display:flex}.proj-tech-wrap{flex-wrap:wrap;gap:.4rem;margin-top:.6rem;display:flex}.proj-tech-chip{font-family:var(--font-mono);background:var(--color-accent-100);color:var(--color-accent-800);border:1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);letter-spacing:.02em;border-radius:2px;padding:3px 11px;font-size:.68rem}.proj-gh-btn{font-family:var(--font-mono);color:var(--color-text);border:1px solid var(--color-text);background:var(--color-bg);white-space:nowrap;border-radius:2px;flex-shrink:0;align-items:center;gap:.5rem;padding:9px 17px;font-size:.78rem;font-weight:500;text-decoration:none;transition:border-color .2s,background .2s,color .2s;display:inline-flex}@media (hover:hover){.proj-gh-btn:hover{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-bg)}}@media (width<=900px){.wrap{padding-inline:var(--space-4)}.hero-portrait{display:none}.hero-grid{gap:var(--space-6);grid-template-columns:1.2fr 1fr}.hero-title{font-size:68px}.contact-title{font-size:44px}.metrics-grid{grid-template-columns:repeat(2,1fr)}.spec-card:nth-of-type(2n){border-right:none}.spec-card:nth-of-type(-n+2){border-bottom:1px solid var(--color-neutral-300)}.exp-grid{grid-template-columns:1fr}.exp-side{gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid}.exp-more{gap:var(--space-6);margin-top:var(--space-6);grid-template-columns:1fr 1fr}.exp-more>:last-child:nth-child(odd){grid-column:1/-1}.live-grid,.proj-grid{grid-template-columns:repeat(2,1fr)}.live-grid>:last-child:nth-child(odd){grid-column:1/-1}.live-grid>:last-child:nth-child(odd) .live-bar{max-width:calc(50% - var(--space-4) - 1px - var(--space-2))}.stack-grid{gap:var(--space-6)}}@media (width<=760px){.masthead-rail{justify-content:center}.masthead-rail>:not(.masthead-title){display:none}}@media (width<=640px){.nav{padding-block:var(--space-2);background:var(--color-bg);-webkit-backdrop-filter:none;backdrop-filter:none;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;display:grid}.nav-links{display:none}.nav-brand,.nav-running{grid-area:1/1}.nav .nav-contents{grid-column:2}.nav>.btn-primary{grid-column:3}.nav .nav-contents:not([hidden]){padding-inline:13px;display:inline-flex}.nav-running:not([hidden]){display:flex}.nav-progress{display:block}.nav-brand{transition:opacity .25s var(--ease), transform .25s var(--ease)}.nav-in-section .nav-brand{opacity:0;transform:translateY(-10px)}.nav-in-section .nav-running{opacity:1;pointer-events:auto;cursor:pointer;transform:none}.contents:not([hidden]){z-index:29;padding-top:var(--nav-h,65px);overscroll-behavior:contain;background:var(--color-bg);animation:.2s both contentsIn;display:block;position:fixed;inset:0;overflow-y:auto}.contents:not([hidden]) .contents-list a{animation:contentsRise .4s var(--ease) both, contentsRule .6s var(--ease) both}.contents:not([hidden]) .contents-list li:nth-child(2) a{animation-delay:35ms}.contents:not([hidden]) .contents-list li:nth-child(3) a{animation-delay:70ms}.contents:not([hidden]) .contents-list li:nth-child(4) a{animation-delay:.105s}.contents:not([hidden]) .contents-list li:nth-child(5) a{animation-delay:.14s}.contents:not([hidden]) .contents-list li:nth-child(6) a{animation-delay:.175s}.contents:not([hidden]) .contents-list li:nth-child(7) a{animation-delay:.21s}html.contents-open{scrollbar-gutter:stable;overflow:hidden}.section{padding-block:var(--space-6)}.hero-grid,.exp-grid,.exp-side,.exp-more,.metrics-grid,.live-grid,.proj-grid,.stack-grid{grid-template-columns:1fr}.live-grid>:last-child:nth-child(odd) .live-bar{max-width:none}.hero-card{max-width:440px}.masthead{padding-top:var(--space-4)}.hero{overflow-x:clip}.hero>.section{padding-top:var(--space-4)}.hero-copy{container-type:inline-size}.hero-kicker{margin-bottom:var(--space-2)}.hero-title{font-size:clamp(52px,32.7cqi,150px)}.hero-pitch{margin-top:var(--space-4)}.hero-actions{margin-top:var(--space-4);grid-template-columns:1fr auto auto;display:grid}.hero-actions .btn{white-space:nowrap}.hero-actions .btn-primary{grid-column:1/-1}.hero-actions .btn[aria-label]{padding-inline:13px}.hero-status{margin-top:var(--space-4);display:flex}.spec-card{border-right:none;border-bottom:1px solid var(--color-neutral-300)}.spec-card:last-child{border-bottom:none}.spec-card{perspective:none;min-height:0}.spec-inner,.spec-card.is-open .spec-inner,.spec-card:hover .spec-inner{transform:none}.spec-inner{min-height:0;transition:grid-template-rows .35s var(--ease);grid-template-rows:auto 0fr}.spec-card.is-open .spec-inner{grid-template-rows:auto 1fr}.spec-face{backface-visibility:visible;grid-area:auto;padding:0}.spec-face:after{content:none}.spec-toggle{padding:14px var(--space-3);cursor:pointer;grid-template-columns:122px 1fr 14px;align-items:center;column-gap:10px;display:grid}.spec-toggle:active{background-color:color-mix(in srgb, var(--color-text) 5%, transparent)}.spec-num{font-size:44px}.spec-num.spec-word{font-size:24px}.spec-label{margin-top:0}.spec-toggle:after{content:"";width:14px;height:14px;color:var(--color-neutral-700);transition:background-size .3s var(--ease);background:linear-gradient(currentColor,currentColor) 50%/100% 1.5px no-repeat,linear-gradient(currentColor,currentColor) 50%/1.5px 100% no-repeat}.spec-card.is-open .spec-toggle:after{background-size:100% 1.5px,1.5px 0}.spec-back{visibility:hidden;min-height:0;transition:visibility 0s .35s;overflow:hidden;transform:none}.spec-card.is-open .spec-back{visibility:visible;transition-delay:0s}.spec-body{padding:14px var(--space-3) 16px}@supports selector(:has(*)){.spec-card:has(.spec-toggle:focus-visible){outline-offset:-2px}}.sec-head--split{row-gap:var(--space-1);flex-wrap:wrap}.contact-card{padding:var(--space-4)}.contact-card .btn-row{grid-template-columns:1fr 1fr;display:grid}.contact-card .btn-row>:nth-child(-n+2){grid-column:1/-1}.back-to-top{min-height:44px;margin-top:var(--space-2);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);justify-content:center;align-items:center;gap:6px;font-size:12px;text-decoration:none;display:flex}html{scroll-padding-bottom:76px}.contact-bar:not([hidden]){gap:var(--space-2);z-index:20;padding:var(--space-2) var(--space-4) calc(var(--space-2) + env(safe-area-inset-bottom,0px));background:var(--color-bg);border-top:1px solid var(--color-text);visibility:hidden;transition:transform .3s var(--ease), visibility 0s .3s;grid-template-columns:1fr auto;display:grid;position:fixed;inset:auto 0 0;transform:translateY(100%)}.contact-bar.is-shown{visibility:visible;transition-delay:0s;transform:none}.contact-bar .btn-secondary{padding-inline:var(--space-6)}.proj-grid{counter-reset:project;border-bottom:1px solid var(--color-text);gap:0}.project-card{counter-increment:project;border:0;border-top:1px solid var(--color-text);grid-template-columns:auto 1fr;align-items:baseline;padding:14px 0 16px;display:grid}.project-card>i{display:none}.project-card:before{content:counter(project, decimal-leading-zero);content:counter(project, decimal-leading-zero) / "";font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);font-size:13px}.proj-cta{letter-spacing:.06em;text-transform:uppercase;grid-area:1/2;justify-self:end;width:auto;margin:-12px 0;padding-block:12px}.proj-art,.proj-title,.proj-body,.project-card .tag-row{grid-column:1/-1}.proj-title{margin:6px 0 4px;font-size:24px}.proj-body{margin-bottom:10px}.project-card:active{background-color:color-mix(in srgb, var(--color-text) 5%, transparent)}.project-card--feature{grid-template-rows:none;grid-template-areas:none}.project-card--feature>:is(.proj-shot,.proj-kicker,.proj-title,.proj-body,.tag-row,.proj-play){grid-area:auto/1/auto/-1}.project-card--feature .proj-cta{grid-area:1/2;align-self:auto;margin:-12px 0}.proj-shot,.proj-art{margin:14px 0 12px}.proj-kicker{margin-bottom:0}.project-card--feature .proj-title{font-size:24px}.proj-play{justify-self:stretch;margin-top:14px}.proj-modal{padding:0}.proj-modal[open]{align-items:flex-end}.proj-modal-box{max-width:none;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-sheet);opacity:1;transition:transform .4s var(--ease);border-width:1px 0 0;border-radius:4px 4px 0 0;transform:translateY(100%)}.proj-modal.open .proj-modal-box{transform:translateY(var(--sheet-drag,0px))}.proj-modal.dragging .proj-modal-box{transition:none}.proj-modal-grip{touch-action:none;background:linear-gradient(var(--color-neutral-400), var(--color-neutral-400)) 50% 12px / 40px 4px no-repeat;border-bottom:1px solid #0000;flex-shrink:0;height:52px;transition:border-color .2s;display:block}.proj-modal-box.is-scrolled .proj-modal-grip{border-bottom-color:var(--color-divider)}.proj-modal-close{top:8px;right:var(--space-3);position:absolute}.proj-modal-scroll{padding:0 var(--space-4) calc(var(--space-6) + env(safe-area-inset-bottom,0px));gap:var(--space-6)}.proj-modal-title{font-size:28px}.proj-modal-desc{font-size:16px}.proj-modal-footer{align-items:stretch;gap:var(--space-4);flex-direction:column}.proj-gh-btn{justify-content:center}.proj-pipeline-wrap{flex-direction:column;align-items:stretch;row-gap:18px;padding-bottom:0;overflow:visible}.proj-step{background:0 0;border:0;grid-template-columns:36px 1fr auto;grid-template-areas:"icon title badge""icon desc desc";align-items:start;gap:2px 14px;width:auto;padding:0;display:grid;position:relative}.proj-step-icon{grid-area:icon;width:36px;height:36px}.proj-step-badge{grid-area:badge;margin-left:0;font-size:12px;line-height:1.8}.proj-step-title{text-align:left;grid-area:title;font-size:16px;line-height:1.35}.proj-step-desc{text-align:left;color:var(--text-secondary);grid-area:desc;font-size:14px;line-height:1.5}.proj-step:not(:last-child):after{content:"";background:linear-gradient(180deg, var(--pipe-from), var(--pipe-to));transform-origin:50% 0;width:2px;animation:.3s ease-out both connectorInY;position:absolute;top:40px;bottom:-14px;left:17px}.proj-connector{display:none}}@media (width<=359px){.spec-toggle{grid-template-columns:1fr 14px;row-gap:6px}.spec-toggle .spec-num{grid-area:1/1}.spec-toggle .spec-label{grid-area:2/1}.spec-toggle:after{grid-area:1/2/3}}@media (width<=640px) and (scripting:none){.spec-inner{grid-template-rows:auto 1fr}.spec-back{visibility:visible}.spec-toggle{cursor:auto}.spec-toggle:after{content:none}}@media (scripting:none){.proj-hint,.proj-cta{display:none}.project-card{cursor:auto}}@media (width<=640px),(pointer:coarse){.masthead-rail,.hc-k,.hc-foot,.spec-label,.spec-back .spec-kicker,.tag,.exp-meta,.live-kicker,.sec-head-aside,.proj-hint,.proj-kicker,.proj-cta,.colophon,.proj-section-label,.proj-modal-note,.proj-tech-chip{font-size:12px}}@media (pointer:coarse){.btn,.proj-gh-btn{min-height:44px}.nav-links a{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.proj-modal-close{width:44px;height:44px}}@media (hover:none){html{-webkit-tap-highlight-color:transparent}.btn:active,.proj-gh-btn:active,.proj-modal-close:active{transform:scale(.97)}.btn-secondary:active,.proj-gh-btn:active,.proj-modal-close:active{background-color:color-mix(in srgb, var(--color-text) 8%, var(--color-bg))}.liveobj:active,.projobj:active{background-color:color-mix(in srgb, var(--color-text) 5%, var(--color-bg));transform:scale(.985)}.back-to-top:active{background-color:color-mix(in srgb, var(--color-text) 5%, transparent)}.nav-links a:active{color:var(--color-accent-700)}.proj-gh-btn,.proj-modal-close{transition:background-color .2s, color .2s, border-color .2s, transform .2s var(--ease)}.contents-list a,.spec-toggle,.back-to-top{transition:background-color .2s}:is(.btn,.liveobj,.projobj,.proj-gh-btn,.proj-modal-close,.contents-list a,.spec-toggle,.back-to-top):active{transition-duration:0s}}@media (hover:none) and (width<=640px){.projobj:active{transform:none}}@media (hover:none) and (prefers-reduced-motion:reduce){.btn:active,.proj-gh-btn:active,.proj-modal-close:active,.liveobj:active,.projobj:active{transform:none}}@media (prefers-reduced-motion:reduce){.sec-head:before{transition:none}.sec-head.rule-pending:before{transform:none}html{scroll-behavior:auto}.nav-brand,.nav-running,.spec-inner,.spec-back,.spec-toggle:after{transition:none}.nav-running-change>span,.contents:not([hidden]),.contents:not([hidden]) .contents-list a{animation:none}.proj-modal,.proj-modal-box,.contact-bar:not([hidden]){transition:none}.proj-step,.proj-step:not(:last-child):after,.proj-conn-line,.proj-conn-arrow{opacity:1;animation:none;transform:none}}
