@layer tokens{:root{--paper: #faf6f0;--paper-sunk: #f1ebe2;--paper-raised: #fffdfa;--line: #e6dcce;--line-strong: #d4c6b2;--ink: #2b2620;--ink-soft: #6a5f55;--ink-faint: #9e9388;--tint-shade: #2a1e14;--tint-base: #fffdfa;--slab-mix: #2b2015;--dot: rgba(120, 96, 72, .14);--shadow-tint: 74, 55, 38;--base-navy: #374987;--base-blue-1: #202b55;--base-blue-2: var(--base-navy);--base-blue-3: #4a64b4;--base-blue-4: #6c88ce;--base-blue-5: #94a9de;--hue-navy: var(--base-navy);--hue-blue-1: var(--base-blue-1);--hue-blue-2: var(--base-blue-2);--hue-blue-3: var(--base-blue-3);--hue-blue-4: var(--base-blue-4);--hue-blue-5: var(--base-blue-5);--accent: var(--hue-navy);--danger: #d4453f;--success: #4f8a1c;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--r-xl: 24px;--r-pill: 999px;--shadow-rest: 0 1px 2px rgba(var(--shadow-tint), .06), 0 2px 6px rgba(var(--shadow-tint), .05);--shadow-hover: 0 4px 8px rgba(var(--shadow-tint), .08), 0 10px 22px rgba(var(--shadow-tint), .1);--shadow-lift: 0 12px 20px rgba(var(--shadow-tint), .12), 0 28px 60px rgba(var(--shadow-tint), .18);--shadow-panel: 0 20px 40px rgba(var(--shadow-tint), .14), 0 50px 100px rgba(var(--shadow-tint), .2);--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--font-note: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--t-note: .6875rem;--t-sm: .8125rem;--t-base: 1rem;--t-lg: clamp(1.0625rem, .99rem + .32vw, 1.25rem);--t-xl: clamp(1.3rem, 1.16rem + .6vw, 1.75rem);--t-2xl: clamp(1.7rem, 1.42rem + 1.2vw, 2.6rem);--t-3xl: clamp(2.3rem, 1.72rem + 2.5vw, 4rem);--t-4xl: clamp(3rem, 1.9rem + 4.7vw, 6.5rem);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 72px;--sp-9: 112px;--topbar-h: 68px;--page-max: 1280px;--page-pad: clamp(20px, 5vw, 64px);--lx: .78;--ly: .63;--mono-lx: .78;--mono-ly: .63;--k-flat: 0px;--k-hair: .16px;--k-thin: .26px;--k-mid: .42px;--k-deep: .62px;--k-hero: 1.05px}.hued{--hue-tint: color-mix(in oklab, var(--hue) 20%, var(--tint-base));--hue-tint-strong: color-mix(in oklab, var(--hue) 36%, var(--tint-base));--hue-edge: color-mix(in oklab, var(--hue) 56%, var(--tint-base));--hue-slab: color-mix(in oklab, var(--hue) 52%, var(--slab-mix));--hue-deep: color-mix(in oklab, var(--hue) 74%, var(--tint-shade));--hue-title: var(--hue-slab);--carve-wall: color-mix(in oklab, var(--hue) 11%, var(--tint-base));--carve-floor: color-mix(in oklab, var(--hue) 38%, var(--tint-base));--carve-line: color-mix(in oklab, var(--hue) 56%, var(--tint-base))}[data-theme=blueprint]{--paper: #191d2b;--paper-sunk: #131622;--paper-raised: #232839;--line: #313749;--line-strong: #454d63;--ink: #eef1f7;--ink-soft: #adb4c6;--ink-faint: #7c8398;--tint-shade: #ffffff;--tint-base: #272d3f;--slab-mix: #090b13;--accent: #7d93e8;--success: #8dc94e;--danger: #f0736d;--dot: rgba(160, 180, 235, .11);--shadow-tint: 4, 6, 14;--shadow-rest: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 6px rgba(0, 0, 0, .22);--shadow-hover: 0 4px 8px rgba(0, 0, 0, .32), 0 10px 22px rgba(0, 0, 0, .3);--shadow-lift: 0 12px 20px rgba(0, 0, 0, .36), 0 28px 60px rgba(0, 0, 0, .46);--shadow-panel: 0 20px 40px rgba(0, 0, 0, .42), 0 50px 100px rgba(0, 0, 0, .55)}[data-theme=blueprint] .hued{--hue-tint: color-mix(in oklab, var(--hue) 26%, var(--tint-base));--hue-tint-strong: color-mix(in oklab, var(--hue) 44%, var(--tint-base));--hue-edge: color-mix(in oklab, var(--hue) 60%, var(--tint-base));--hue-deep: color-mix(in oklab, var(--hue) 30%, var(--tint-shade));--hue-title: color-mix(in oklab, var(--hue) 54%, var(--tint-shade));--carve-wall: color-mix(in oklab, var(--hue) 26%, #565d76);--carve-floor: color-mix(in oklab, var(--hue) 22%, #12141d);--carve-line: color-mix(in oklab, var(--hue) 34%, #868da8)}}@layer extrude{.ex{--k: var(--k-thin);--ex-color: var(--hue-slab, var(--slab-mix));box-shadow:calc(var(--k) * var(--lx) * 1) calc(var(--k) * var(--ly) * 1) 0 var(--ex-color),calc(var(--k) * var(--lx) * 2) calc(var(--k) * var(--ly) * 2) 0 var(--ex-color),calc(var(--k) * var(--lx) * 3) calc(var(--k) * var(--ly) * 3) 0 var(--ex-color),calc(var(--k) * var(--lx) * 4) calc(var(--k) * var(--ly) * 4) 0 var(--ex-color),calc(var(--k) * var(--lx) * 5) calc(var(--k) * var(--ly) * 5) 0 var(--ex-color),calc(var(--k) * var(--lx) * 6) calc(var(--k) * var(--ly) * 6) 0 var(--ex-color),calc(var(--k) * var(--lx) * 7) calc(var(--k) * var(--ly) * 7) 0 var(--ex-color),calc(var(--k) * var(--lx) * 8) calc(var(--k) * var(--ly) * 8) 0 var(--ex-color),calc(var(--k) * var(--lx) * 9) calc(var(--k) * var(--ly) * 9) 0 var(--ex-color),calc(var(--k) * var(--lx) * 10) calc(var(--k) * var(--ly) * 10) 0 var(--ex-color),calc(var(--k) * var(--lx) * 11) calc(var(--k) * var(--ly) * 11) 0 var(--ex-color),calc(var(--k) * var(--lx) * 12) calc(var(--k) * var(--ly) * 12) 0 var(--ex-color),calc(var(--k) * var(--lx) * 13) calc(var(--k) * var(--ly) * 13) 0 var(--ex-color),calc(var(--k) * var(--lx) * 14) calc(var(--k) * var(--ly) * 14) 0 var(--ex-color),calc(var(--k) * var(--lx) * 15) calc(var(--k) * var(--ly) * 15) 0 var(--ex-color),calc(var(--k) * var(--lx) * 16) calc(var(--k) * var(--ly) * 16) 0 var(--ex-color),calc(var(--k) * var(--lx) * 17) calc(var(--k) * var(--ly) * 17) 0 var(--ex-color),calc(var(--k) * var(--lx) * 18) calc(var(--k) * var(--ly) * 18) 0 var(--ex-color),calc(var(--k) * var(--lx) * 19) calc(var(--k) * var(--ly) * 19) 0 var(--ex-color),calc(var(--k) * var(--lx) * 20) calc(var(--k) * var(--ly) * 20) 0 var(--ex-color),calc(var(--k) * var(--lx) * 21) calc(var(--k) * var(--ly) * 21) 0 var(--ex-color),calc(var(--k) * var(--lx) * 22) calc(var(--k) * var(--ly) * 22) 0 var(--ex-color),calc(var(--k) * var(--lx) * 23) calc(var(--k) * var(--ly) * 23) 0 var(--ex-color),calc(var(--k) * var(--lx) * 24) calc(var(--k) * var(--ly) * 24) 0 var(--ex-color);transition:box-shadow .26s cubic-bezier(.3,1.2,.5,1),transform .26s cubic-bezier(.3,1.2,.5,1)}.ex-hi{--k: var(--k-hero);--ex-color: var(--hue-slab, var(--slab-mix));box-shadow:calc(var(--k) * var(--lx) * 1) calc(var(--k) * var(--ly) * 1) 0 var(--ex-color),calc(var(--k) * var(--lx) * 2) calc(var(--k) * var(--ly) * 2) 0 var(--ex-color),calc(var(--k) * var(--lx) * 3) calc(var(--k) * var(--ly) * 3) 0 var(--ex-color),calc(var(--k) * var(--lx) * 4) calc(var(--k) * var(--ly) * 4) 0 var(--ex-color),calc(var(--k) * var(--lx) * 5) calc(var(--k) * var(--ly) * 5) 0 var(--ex-color),calc(var(--k) * var(--lx) * 6) calc(var(--k) * var(--ly) * 6) 0 var(--ex-color),calc(var(--k) * var(--lx) * 7) calc(var(--k) * var(--ly) * 7) 0 var(--ex-color),calc(var(--k) * var(--lx) * 8) calc(var(--k) * var(--ly) * 8) 0 var(--ex-color),calc(var(--k) * var(--lx) * 9) calc(var(--k) * var(--ly) * 9) 0 var(--ex-color),calc(var(--k) * var(--lx) * 10) calc(var(--k) * var(--ly) * 10) 0 var(--ex-color),calc(var(--k) * var(--lx) * 11) calc(var(--k) * var(--ly) * 11) 0 var(--ex-color),calc(var(--k) * var(--lx) * 12) calc(var(--k) * var(--ly) * 12) 0 var(--ex-color),calc(var(--k) * var(--lx) * 13) calc(var(--k) * var(--ly) * 13) 0 var(--ex-color),calc(var(--k) * var(--lx) * 14) calc(var(--k) * var(--ly) * 14) 0 var(--ex-color),calc(var(--k) * var(--lx) * 15) calc(var(--k) * var(--ly) * 15) 0 var(--ex-color),calc(var(--k) * var(--lx) * 16) calc(var(--k) * var(--ly) * 16) 0 var(--ex-color),calc(var(--k) * var(--lx) * 17) calc(var(--k) * var(--ly) * 17) 0 var(--ex-color),calc(var(--k) * var(--lx) * 18) calc(var(--k) * var(--ly) * 18) 0 var(--ex-color),calc(var(--k) * var(--lx) * 19) calc(var(--k) * var(--ly) * 19) 0 var(--ex-color),calc(var(--k) * var(--lx) * 20) calc(var(--k) * var(--ly) * 20) 0 var(--ex-color),calc(var(--k) * var(--lx) * 21) calc(var(--k) * var(--ly) * 21) 0 var(--ex-color),calc(var(--k) * var(--lx) * 22) calc(var(--k) * var(--ly) * 22) 0 var(--ex-color),calc(var(--k) * var(--lx) * 23) calc(var(--k) * var(--ly) * 23) 0 var(--ex-color),calc(var(--k) * var(--lx) * 24) calc(var(--k) * var(--ly) * 24) 0 var(--ex-color),calc(var(--k) * var(--lx) * 25) calc(var(--k) * var(--ly) * 25) 0 var(--ex-color),calc(var(--k) * var(--lx) * 26) calc(var(--k) * var(--ly) * 26) 0 var(--ex-color),calc(var(--k) * var(--lx) * 27) calc(var(--k) * var(--ly) * 27) 0 var(--ex-color),calc(var(--k) * var(--lx) * 28) calc(var(--k) * var(--ly) * 28) 0 var(--ex-color),calc(var(--k) * var(--lx) * 29) calc(var(--k) * var(--ly) * 29) 0 var(--ex-color),calc(var(--k) * var(--lx) * 30) calc(var(--k) * var(--ly) * 30) 0 var(--ex-color),calc(var(--k) * var(--lx) * 31) calc(var(--k) * var(--ly) * 31) 0 var(--ex-color),calc(var(--k) * var(--lx) * 32) calc(var(--k) * var(--ly) * 32) 0 var(--ex-color),calc(var(--k) * var(--lx) * 33) calc(var(--k) * var(--ly) * 33) 0 var(--ex-color),calc(var(--k) * var(--lx) * 34) calc(var(--k) * var(--ly) * 34) 0 var(--ex-color),calc(var(--k) * var(--lx) * 35) calc(var(--k) * var(--ly) * 35) 0 var(--ex-color),calc(var(--k) * var(--lx) * 36) calc(var(--k) * var(--ly) * 36) 0 var(--ex-color),calc(var(--k) * var(--lx) * 37) calc(var(--k) * var(--ly) * 37) 0 var(--ex-color),calc(var(--k) * var(--lx) * 38) calc(var(--k) * var(--ly) * 38) 0 var(--ex-color),calc(var(--k) * var(--lx) * 39) calc(var(--k) * var(--ly) * 39) 0 var(--ex-color),calc(var(--k) * var(--lx) * 40) calc(var(--k) * var(--ly) * 40) 0 var(--ex-color),calc(var(--k) * var(--lx) * 41) calc(var(--k) * var(--ly) * 41) 0 var(--ex-color),calc(var(--k) * var(--lx) * 42) calc(var(--k) * var(--ly) * 42) 0 var(--ex-color),calc(var(--k) * var(--lx) * 43) calc(var(--k) * var(--ly) * 43) 0 var(--ex-color),calc(var(--k) * var(--lx) * 44) calc(var(--k) * var(--ly) * 44) 0 var(--ex-color),calc(var(--k) * var(--lx) * 45) calc(var(--k) * var(--ly) * 45) 0 var(--ex-color),calc(var(--k) * var(--lx) * 46) calc(var(--k) * var(--ly) * 46) 0 var(--ex-color),calc(var(--k) * var(--lx) * 47) calc(var(--k) * var(--ly) * 47) 0 var(--ex-color),calc(var(--k) * var(--lx) * 48) calc(var(--k) * var(--ly) * 48) 0 var(--ex-color);transition:box-shadow .26s cubic-bezier(.3,1.2,.5,1)}.k-flat{--k: var(--k-flat)}.k-hair{--k: var(--k-hair)}.k-thin{--k: var(--k-thin)}.k-mid{--k: var(--k-mid)}.k-deep{--k: var(--k-deep)}.k-hero{--k: var(--k-hero)}.ex-lift:hover,.ex-lift:focus-visible{--k: var(--k-deep);transform:translate(calc(var(--lx) * -3px),calc(var(--ly) * -3px))}.ex-lift.is-deep:hover,.ex-lift.is-deep:focus-visible{--k: var(--k-hero);transform:translate(calc(var(--lx) * -6px),calc(var(--ly) * -6px))}.ex-lift:active{--k: var(--k-hair);transform:translate(calc(var(--lx) * 1px),calc(var(--ly) * 1px));transition-duration:70ms}@media (prefers-reduced-motion: reduce){.ex,.ex-hi{transition:none}.ex-lift:hover,.ex-lift:focus-visible,.ex-lift:active,.ex-lift.is-deep:hover,.ex-lift.is-deep:focus-visible{transform:none}}}@layer base{*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{font-family:var(--font-note);font-size:var(--t-base);line-height:1.6;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:radial-gradient(var(--dot) 1px,transparent 1px);background-size:22px 22px;background-attachment:fixed}img,svg,video{display:block;max-width:100%}img{height:auto}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:color-mix(in oklab,var(--accent) 26%,var(--paper));color:var(--ink)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.06;letter-spacing:-.022em;font-variation-settings:"opsz" 96;text-wrap:balance}h1{font-size:var(--t-3xl)}h2{font-size:var(--t-2xl)}h3{font-size:var(--t-xl)}p{text-wrap:pretty}.note{font-family:var(--font-note);font-size:var(--t-note);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.note-rule{display:flex;align-items:center;gap:var(--sp-3)}.note-rule:after{content:"";flex:1;height:1px;background:var(--line-strong)}.lede{font-size:var(--t-lg);color:var(--ink-soft);max-width:62ch}.prose p+p{margin-top:var(--sp-4)}.prose{max-width:68ch;color:var(--ink-soft)}.prose strong{color:var(--ink);font-weight:700}.page{max-width:var(--page-max);margin:0 auto;padding-inline:var(--page-pad)}.page-wide{max-width:1600px;margin:0 auto;padding-inline:var(--page-pad)}.section{padding-block:clamp(var(--sp-8),9vw,var(--sp-9))}.section-tight{padding-block:var(--sp-8)}.stack{display:flex;flex-direction:column}.section-head{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-7)}.sheet{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg)}.sheet-sunk{background:var(--paper-sunk);border:1px solid var(--line);border-radius:var(--r-lg)}.carve{background:var(--carve-floor, var(--paper-sunk));border:1px solid var(--carve-line, var(--line-strong));border-radius:var(--r-md);box-shadow:inset calc(var(--lx) * 2px) calc(var(--ly) * 2px) 0 var(--carve-wall, var(--paper)),inset calc(var(--lx) * 1px) calc(var(--ly) * 1px) 0 var(--carve-wall, var(--paper))}.btn{--hue: var(--accent);--k: var(--k-thin);display:inline-flex;align-items:center;gap:var(--sp-2);padding:13px 22px;border:1px solid var(--hue-edge);border-radius:var(--r-md);background:var(--hue-tint);color:var(--hue-deep);font-weight:700;font-size:var(--t-sm);letter-spacing:.01em;cursor:pointer;white-space:nowrap}.btn-solid{background:var(--hue);border-color:color-mix(in oklab,var(--hue) 70%,var(--slab-mix));color:#fff}[data-theme=blueprint] .btn-solid{color:#12151f}.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--ink);--k: var(--k-hair)}.btn-lg{padding:17px 30px;font-size:var(--t-base)}.btn:disabled{opacity:.5;cursor:not-allowed}.tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);background:var(--hue-tint);border:1px solid var(--hue-edge);color:var(--hue-deep);font-family:var(--font-note);font-size:var(--t-note);font-weight:500;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.dot-swatch{width:8px;height:8px;border-radius:50%;background:var(--hue);flex:none}.monogram{--mono-face: #999999;--mono-art-dark: #5a5a5a;--mono-art-light: #dddddd;--mono-slab: #4a4a4a;--mono-edge: #5a5a5a}.monogram .mono-body{fill:var(--mono-slab, var(--slab-mix))}.monogram .mono-disc{fill:var(--mono-face, var(--paper-raised));stroke:var(--mono-edge, var(--slab-mix));stroke-width:3;paint-order:fill stroke}.monogram .mono-art-dark{fill:var(--mono-art-dark, #5a5a5a)}.monogram .mono-art-light{fill:var(--mono-art-light, #dddddd)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-60px;left:var(--sp-4);z-index:200;padding:12px 20px;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--r-md);font-weight:700;transition:top .16s ease}.skip-link:focus{top:var(--sp-3)}}.topbar{position:sticky;top:0;z-index:100;background:color-mix(in oklab,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);border-bottom:1px solid transparent;transition:border-color .22s ease,background .22s ease}.topbar.is-lifted{border-bottom-color:var(--line);background:color-mix(in oklab,var(--paper) 94%,transparent)}.topbar-inner{max-width:1600px;margin:0 auto;height:var(--topbar-h);padding-inline:var(--page-pad);display:flex;align-items:center;gap:var(--sp-5)}.brand{display:flex;align-items:center;gap:var(--sp-3);margin-right:auto;overflow:visible}.brand .monogram{flex:none}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-family:var(--font-display);font-weight:700;font-size:1.06rem;letter-spacing:-.02em;font-variation-settings:"opsz" 40}.brand-sub{font-size:.5625rem;letter-spacing:.17em}.topbar-nav{display:flex;align-items:center;gap:var(--sp-2)}.nav-link{position:relative;padding:8px 14px;border-radius:var(--r-sm);font-weight:700;font-size:var(--t-sm);color:var(--ink-soft);transition:color .16s ease,background .16s ease}.nav-link:hover{color:var(--ink);background:var(--paper-sunk)}.nav-link.is-active{color:var(--ink)}.nav-link.is-active:after{content:"";position:absolute;left:14px;right:14px;bottom:2px;height:2px;border-radius:2px;background:var(--accent)}.topbar-actions{display:flex;align-items:center;gap:var(--sp-3)}.icon-btn{--hue: var(--accent);--k: var(--k-hair);display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--paper-raised);color:var(--ink-soft);cursor:pointer;--ex-color: var(--line-strong)}.icon-btn:hover{color:var(--ink)}@media (max-width: 860px){.brand-sub{display:none}}@media (max-width: 420px){.brand-name{display:none}}.footer{padding-block:var(--sp-8) var(--sp-6);border-top:1px solid var(--line);background:var(--paper-sunk);margin-top:var(--sp-9)}.title-block{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line-strong);border-radius:var(--r-sm);overflow:hidden;background:var(--paper-raised)}.tb-cell{display:flex;flex-direction:column;gap:3px;padding:var(--sp-3) var(--sp-4);border-right:1px solid var(--line);min-width:0}.tb-cell:last-child{border-right:0}.tb-value{font-family:var(--font-note);font-size:var(--t-sm);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 900px){.title-block{grid-template-columns:1fr 1fr}.tb-cell{border-bottom:1px solid var(--line)}.tb-cell:nth-child(2n){border-right:0}.tb-cell-wide{grid-column:1 / -1;border-bottom:0}}.landing{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-7) var(--page-pad) var(--sp-8)}.landing-inner{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;max-width:1180px}.landing-lockup{display:flex;align-items:center;justify-content:center;gap:clamp(var(--sp-3),2vw,var(--sp-5));justify-self:center;z-index:1;overflow:visible;padding:var(--sp-2) clamp(var(--sp-4),3vw,var(--sp-6))}.lockup-mark{flex:none;width:clamp(54px,7.5vw,96px);height:clamp(54px,7.5vw,96px)}.landing-street{width:100%;color:var(--ink-soft);margin-top:clamp(var(--sp-5),4vw,var(--sp-7))}.linework{display:block;width:100%;height:auto;overflow:visible}.linework path,.linework circle{vector-effect:non-scaling-stroke}@keyframes street-cross{0%{transform:translate(var(--street-from));opacity:0}4%{opacity:1}90%{opacity:1}to{transform:translate(var(--street-to));opacity:0}}@keyframes walk{0%{d:path("M-2.5 0 L3 -12 L9.5 0")}25%{d:path("M4 -2.2 L3 -12 L3 0")}50%{d:path("M9.5 0 L3 -12 L-2.5 0")}75%{d:path("M3 0 L3 -12 L4 -2.2")}to{d:path("M-2.5 0 L3 -12 L9.5 0")}}@keyframes pedal{0%{d:path("M13.5 -18.5 L18.7 -11.5 L19 -5")}25%{d:path("M13.5 -18.5 L17.8 -10 L15.5 -1.5")}50%{d:path("M13.5 -18.5 L16 -11.2 L12 -5")}75%{d:path("M13.5 -18.5 L17.2 -13.4 L15.5 -8.5")}to{d:path("M13.5 -18.5 L18.7 -11.5 L19 -5")}}@keyframes trot{0%{d:path("M18.6 -6.6 L17.4 0 M20.2 -6.6 L21.4 0 M23.2 -7 L22 0 M24.7 -7 L25.9 0")}50%{d:path("M18.6 -6.6 L19.8 0 M20.2 -6.6 L19 0 M23.2 -7 L24.4 0 M24.7 -7 L23.5 0")}to{d:path("M18.6 -6.6 L17.4 0 M20.2 -6.6 L21.4 0 M23.2 -7 L22 0 M24.7 -7 L25.9 0")}}.street-trip{fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;animation:street-cross var(--street-dur, 30s) linear forwards}.street-trip .walk{animation:walk .7s linear infinite}.street-trip .pedal{animation:pedal .7s linear infinite}.street-trip .trot{animation:trot .4s linear infinite}@media (prefers-reduced-motion: reduce){.street-trip,.street-trip .walk,.street-trip .pedal,.street-trip .trot{display:none;animation:none}}.landing-name{font-family:var(--font-display);font-size:var(--t-3xl);font-weight:600;letter-spacing:-.025em;line-height:1.05;margin:0;white-space:nowrap}.landing-sub{margin-top:var(--sp-3);color:var(--ink-soft);letter-spacing:.1em}.landing-toggle{position:fixed;top:var(--sp-5);right:var(--sp-5);z-index:20}.gates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);width:100%;max-width:720px;margin-top:clamp(var(--sp-5),4vw,var(--sp-7))}.gate{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--r-lg);background:var(--hue-tint, var(--paper-raised));border:1px solid var(--hue-edge, var(--line));color:var(--ink);text-align:left;min-width:0}.gate-icon{flex:none;opacity:.9;color:var(--hue-title, var(--ink-soft))}.gate-text{display:flex;flex-direction:column;gap:2px;min-width:0}.gate-label{font-family:var(--font-display);font-size:var(--t-xl);font-weight:600;letter-spacing:-.02em;line-height:1.1}.gate-sub{color:var(--ink-soft);line-height:1.25}.gate-arrow{margin-left:auto;flex:none;opacity:.5;transition:transform .16s ease,opacity .16s ease}.gate:hover .gate-arrow{transform:translate(3px);opacity:1}@media (max-width: 620px){.gates{grid-template-columns:1fr}}.card-slot{display:flex;min-width:0}.card{display:flex;flex-direction:column;width:100%;min-width:0;background:var(--hue-tint);border:1px solid var(--hue-edge);border-radius:var(--r-lg);overflow:hidden}.card-frame{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:var(--hue-tint-strong);border-bottom:1px solid var(--hue-edge)}.card-frame img{width:100%;height:100%;object-fit:cover;transition:transform .62s cubic-bezier(.2,.8,.2,1)}.card:hover .card-frame img{transform:scale(1.045)}@media (prefers-reduced-motion: reduce){.card-frame img,.card:hover .card-frame img{transition:none;transform:none}}.card-body{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-4) var(--sp-4) var(--sp-5);flex:1;min-width:0}.card-meta{display:flex;align-items:center;gap:var(--sp-2);justify-content:space-between}.card-sheet{color:var(--hue-title);opacity:.8}.card-cat{font-size:.5625rem;color:var(--hue-title);opacity:.62}.card-title{font-size:var(--t-xl);color:var(--hue-title);font-variation-settings:"opsz" 48;line-height:1.1}.card-summary{font-size:var(--t-sm);color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-more{display:inline-flex;align-items:center;gap:7px;margin-top:auto;padding-top:var(--sp-3);color:var(--hue-title);opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease}.card:hover .card-more,.card:focus-visible .card-more{opacity:.9;transform:translateY(0)}@media (hover: none){.card-more{opacity:.9;transform:none}}.card-lg .card-frame{aspect-ratio:16 / 9}.card-lg .card-title{font-size:var(--t-2xl);font-variation-settings:"opsz" 72}.card-lg .card-body{padding:var(--sp-5) var(--sp-5) var(--sp-6)}.card-sm .card-frame{aspect-ratio:4 / 3}.card-sm .card-title{font-size:var(--t-lg)}.card-sm .card-summary{-webkit-line-clamp:2}.work-head{padding-top:clamp(var(--sp-7),6vw,var(--sp-8));padding-bottom:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3)}.work-title{font-size:var(--t-3xl)}.cat-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3);padding-bottom:var(--sp-7);border-bottom:1px solid var(--line)}.cat-btn{--hue: var(--accent);display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);min-width:0;min-height:116px;padding:var(--sp-4);border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--paper-raised);color:var(--ink-soft);font-size:var(--t-sm);font-weight:700;text-align:left;cursor:pointer}.cat-btn:hover{color:var(--ink)}.cat-btn.is-on{background:var(--hue-tint, var(--paper-sunk));border-color:var(--hue-edge, var(--accent));color:var(--hue-title, var(--ink))}.cat-btn-icon{flex:none;opacity:.9}.cat-btn-name{font-family:var(--font-display);font-size:var(--t-lg);font-weight:600;letter-spacing:-.015em;line-height:1.15;margin-top:auto}.cat-btn.is-on .cat-btn-name{color:var(--hue-title, var(--ink))}.cat-btn-count{color:var(--ink-faint);font-variant-numeric:tabular-nums}.cat-btn.is-empty:not(.is-on){opacity:.62}@media (max-width: 560px){.cat-btn{min-height:96px;gap:var(--sp-2);padding:var(--sp-3)}}.work-body{padding-top:var(--sp-7)}.work-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--sp-5)}@media (max-width: 520px){.work-grid{grid-template-columns:1fr}}.empty{max-width:620px;margin:0 auto;padding:clamp(var(--sp-5),5vw,var(--sp-7));display:flex;flex-direction:column;gap:var(--sp-3);text-align:center;align-items:center}.empty-title{font-size:var(--t-2xl);color:var(--hue-deep)}.empty-body{color:var(--ink-soft);max-width:48ch}.empty-services{list-style:none;padding:0;margin-top:var(--sp-3);display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2)}.empty-services li{padding:5px 12px;border-radius:var(--r-pill);border:1px solid var(--carve-line);font-size:var(--t-sm);color:var(--ink-soft);background:color-mix(in oklab,var(--carve-wall) 60%,transparent)}.empty-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:center;margin-top:var(--sp-4)}.project-head{padding-top:clamp(var(--sp-6),5vw,var(--sp-8));padding-bottom:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-4)}.back-link{display:inline-flex;align-items:center;gap:var(--sp-2);width:fit-content;color:var(--hue-title);transition:transform .16s ease}.back-link:hover{transform:translate(-3px)}.project-title{font-size:var(--t-3xl);color:var(--hue-title)}.project-summary{margin-top:var(--sp-4)}.project-hero-wrap{padding-bottom:var(--sp-8)}.project-hero{--ex-color: var(--hue-slab);border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--hue-edge);background:var(--hue-tint)}.project-hero img{width:100%;height:auto}.project-body{display:grid;grid-template-columns:1fr 300px;gap:clamp(var(--sp-5),5vw,var(--sp-8));align-items:start;padding-bottom:var(--sp-8)}.project-prose p{font-size:var(--t-lg)}.spec-block{--ex-color: var(--hue-slab);padding:var(--sp-5);position:sticky;top:calc(var(--topbar-h) + var(--sp-4))}.spec-head{color:var(--hue-title);margin-bottom:var(--sp-4)}.spec-list{display:flex;flex-direction:column;gap:var(--sp-4);margin:0}.spec-row{display:flex;flex-direction:column;gap:3px}.spec-row dd{margin:0;font-size:var(--t-sm);font-weight:600;color:var(--ink)}@media (max-width: 900px){.project-body{grid-template-columns:1fr}.spec-block{position:static}}.gallery-head{margin-bottom:var(--sp-5);padding-inline:0}.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:var(--sp-5)}.gallery-item{--ex-color: var(--hue-slab);margin:0;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--hue-edge);background:var(--hue-tint);cursor:zoom-in}.gallery-item img{width:100%;height:auto;display:block}.gallery-item figcaption{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--hue-edge);color:var(--hue-title)}@media (max-width: 520px){.gallery{grid-template-columns:1fr}}.project-nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);padding-top:var(--sp-7)}.neighbour{--ex-color: var(--hue-slab);display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-5);background:var(--hue-tint);border-color:var(--hue-edge)}.neighbour .note{color:var(--hue-title);opacity:.75}.neighbour.is-next{text-align:right;grid-column:2}.neighbour-title{font-family:var(--font-display);font-size:var(--t-lg);font-weight:600;color:var(--hue-title);letter-spacing:-.015em}@media (max-width: 620px){.project-nav{grid-template-columns:1fr}.neighbour.is-next{grid-column:1;text-align:left}}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:grid;place-items:center;padding:clamp(var(--sp-4),5vw,var(--sp-7));background:color-mix(in oklab,var(--slab-mix) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:zoom-out}.lightbox img{max-width:100%;max-height:82vh;width:auto;border-radius:var(--r-md);cursor:default;box-shadow:var(--shadow-panel)}.lightbox-bar,.lightbox-side,.lightbox-close{--ex-color: var(--line-strong);background:var(--paper-raised);border:1px solid var(--line-strong);color:var(--ink);cursor:pointer}.lightbox-bar{position:absolute;bottom:clamp(var(--sp-4),4vw,var(--sp-6));left:0;right:0;width:fit-content;margin-inline:auto;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--r-md);cursor:default}.lightbox-btn{--ex-color: var(--line-strong);display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--paper-raised);color:var(--ink);cursor:pointer}.lightbox-count{padding-inline:var(--sp-2);color:var(--ink-soft);font-variant-numeric:tabular-nums}.lightbox-side{position:absolute;top:0;bottom:0;margin-block:auto;display:grid;place-items:center;width:54px;height:54px;border-radius:var(--r-md)}.lightbox-side.is-prev{left:clamp(var(--sp-3),3vw,var(--sp-6))}.lightbox-side.is-next{right:clamp(var(--sp-3),3vw,var(--sp-6))}.lightbox-close{position:absolute;top:clamp(var(--sp-4),4vw,var(--sp-6));right:clamp(var(--sp-4),4vw,var(--sp-6));display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-md)}@media (max-width: 560px){.lightbox-side{width:40px;height:40px}.lightbox-side.is-prev{left:4px}.lightbox-side.is-next{right:4px}}.lightbox-btn:hover,.lightbox-close:hover{background:var(--paper-sunk)}.lightbox-close{position:absolute;top:clamp(var(--sp-4),4vw,var(--sp-6));right:clamp(var(--sp-4),4vw,var(--sp-6));width:40px;height:40px;font-size:1rem;background:var(--paper-raised);border:1px solid var(--line-strong)}.contact{min-height:calc(100dvh - var(--topbar-h));display:grid;place-items:center;padding:var(--sp-7) var(--page-pad) var(--sp-8)}.contact-inner{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;max-width:560px}.contact-mark{overflow:visible;padding:0 var(--sp-4) var(--sp-4) 0}.contact-name{font-family:var(--font-display);font-size:var(--t-2xl);font-weight:600;letter-spacing:-.025em;line-height:1.05;margin-top:var(--sp-4)}.contact-sub{margin-top:var(--sp-2);color:var(--ink-soft);letter-spacing:.1em}.contact-rows{display:grid;gap:var(--sp-3);width:100%;margin-top:clamp(var(--sp-6),5vw,var(--sp-7))}.contact-row{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-radius:var(--r-lg);background:var(--hue-tint, var(--paper-raised));border:1px solid var(--hue-edge, var(--line));text-align:left}.contact-well{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:var(--r-md)}.contact-icon{color:var(--hue-title, var(--ink))}.contact-text{display:flex;flex-direction:column;gap:3px;min-width:0}.contact-label{color:var(--ink-faint);letter-spacing:.1em}.contact-value{font-family:var(--font-display);font-size:var(--t-lg);font-weight:600;letter-spacing:-.015em;color:var(--hue-title, var(--ink));text-decoration:none;overflow-wrap:anywhere}a.contact-value:hover{text-decoration:underline;text-underline-offset:3px}.contact-value.is-static{cursor:default}.contact-copy{position:relative;display:grid;place-items:center;flex:none;margin-left:auto;width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--hue-edge, var(--line));background:var(--paper-raised);color:var(--ink-soft);cursor:pointer}.contact-copy:hover{color:var(--hue-title, var(--ink))}.contact-copy-icon{grid-area:1 / 1;display:grid;place-items:center}.contact-copy-icon.is-check{color:var(--success)}@media (max-width: 480px){.contact-row{gap:var(--sp-3);padding:var(--sp-3)}.contact-well{width:40px;height:40px}}
