@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));--hue-mat: var(--hue)}[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=redline]{--red: #d90003;--paper: color-mix(in oklab, var(--red) 4%, #fff);--paper-sunk: color-mix(in oklab, var(--red) 8%, #fff);--paper-raised: color-mix(in oklab, var(--red) 1.5%, #fff);--line: color-mix(in oklab, var(--red) 20%, #fff);--line-strong: color-mix(in oklab, var(--red) 35%, #fff);--ink: var(--red);--ink-soft: var(--red);--ink-faint: var(--red);--tint-base: #fff;--tint-shade: var(--red);--slab-mix: var(--red);--hue-navy: var(--red);--hue-blue-1: var(--red);--hue-blue-2: var(--red);--hue-blue-3: var(--red);--hue-blue-4: var(--red);--hue-blue-5: var(--red);--success: var(--red);--danger: var(--red);--dot: rgba(217, 0, 3, .1);--shadow-tint: 217, 0, 3}[data-theme=redline] .hued{--hue-tint: color-mix(in oklab, var(--hue) 12%, var(--tint-base));--hue-tint-strong: color-mix(in oklab, var(--hue) 24%, var(--tint-base));--hue-edge: color-mix(in oklab, var(--hue) 40%, var(--tint-base));--hue-mat: color-mix(in oklab, var(--hue) 30%, var(--tint-base));--carve-wall: color-mix(in oklab, var(--hue) 4%, var(--tint-base));--carve-floor: color-mix(in oklab, var(--hue) 22%, var(--tint-base));--carve-line: color-mix(in oklab, var(--hue) 40%, var(--tint-base))}[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);--hue-mat: color-mix(in oklab, var(--hue) 80%, var(--tint-shade))}}@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}[data-theme=redline] .monogram{--mono-face: color-mix(in oklab, var(--red) 45%, #fff);--mono-art-dark: var(--red);--mono-art-light: color-mix(in oklab, var(--red) 14%, #fff);--mono-slab: var(--red);--mono-edge: var(--red)}.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)}}.theme-slider{--stop: 15px;--knob: 12px;--pad: 4px;display:flex;align-items:flex-start;gap:var(--sp-2)}.theme-slider .is-paper{--swatch: #faf6f0;--swatch-edge: #b9a993}.theme-slider .is-blueprint{--swatch: #191d2b;--swatch-edge: #191d2b}.theme-slider .is-redline{--swatch: #d90003;--swatch-edge: #d90003}.theme-names{display:flex;flex-direction:column;align-items:flex-end;padding-top:calc(1px + var(--pad) + var(--knob) / 2 - var(--stop) / 2)}.theme-names span{font-family:var(--font-note);font-size:.625rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;line-height:var(--stop);color:var(--ink-faint);cursor:pointer;white-space:nowrap}.theme-names span:hover{color:var(--ink-soft)}.theme-names .is-on{color:var(--ink);font-weight:700}.theme-track{position:relative;display:flex;flex-direction:column;gap:calc(var(--stop) - var(--knob));padding:var(--pad);border-radius:var(--r-pill);background:var(--paper-sunk);border:1px solid var(--line-strong);box-shadow:inset calc(var(--lx) * 2px) calc(var(--ly) * 2px) 0 var(--paper),inset calc(var(--lx) * 1px) calc(var(--ly) * 1px) 0 var(--paper);cursor:pointer;touch-action:none}.theme-stop{position:relative;width:var(--knob);height:var(--knob);padding:0;border:0;border-radius:50%;background:none;cursor:pointer}.theme-stop:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:50%;background:var(--swatch);border:1px solid var(--swatch-edge)}.theme-stop:focus-visible{outline-offset:2px}.theme-knob{--ex-color: var(--line-strong);position:absolute;top:var(--pad);left:var(--pad);width:var(--knob);height:var(--knob);border-radius:50%;background:var(--swatch);border:1px solid var(--swatch-edge);pointer-events:none}@media (max-width: 860px){.topbar .theme-names{display:none}}.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)}@media (max-width: 860px){.brand-sub{display:none}}@media (max-width: 420px){.brand-name{display:none}}@media (max-width: 470px){.topbar.has-three .topbar-inner{gap:var(--sp-3)}.topbar.has-three .topbar-nav{gap:2px}.topbar.has-three .nav-link{padding-inline:8px}.topbar.has-three .nav-link.is-active:after{left:8px;right:8px}}.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))}@media (max-width: 360px){.landing-lockup{padding-inline:0}}.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}}.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 .far{opacity:.5}@media (prefers-reduced-motion: reduce){.street-trip{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}.lockup-text{display:flex;flex-direction:column;align-items:flex-start;text-align:left;min-width:0}.landing-sub{margin-top:var(--sp-2);color:var(--ink-soft);letter-spacing:.1em}@media (max-width: 520px){.landing-sub>span{display:block}.landing-sub>.landing-sub-dot{display:none}.landing-lockup{display:grid;grid-template-columns:auto auto;row-gap:0;align-items:start}.lockup-text{display:contents}.lockup-mark{grid-area:1 / 1;align-self:center;margin-block:calc((1.05 * var(--t-3xl) - 54px) / 2)}.landing-name{grid-area:1 / 2}.landing-sub{grid-area:2 / 2}}.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-title, var(--ink-soft));color:var(--ink);text-align:left;min-width:0}[data-theme=blueprint] .gate-work{--ex-color: color-mix(in oklab, var(--hue) 80%, var(--tint-shade))}.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}.gates.has-three{grid-template-columns:repeat(3,minmax(0,1fr));max-width:980px}@media (max-width: 1020px){.gates.has-three{grid-template-columns:1fr;max-width:460px}}@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}[data-theme=blueprint] .card{--ex-color: color-mix(in oklab, var(--hue) 80%, var(--tint-shade))}.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;object-position:var(--card-x, 50%) var(--card-y, 50%);transform-origin:var(--card-x, 50%) var(--card-y, 50%);transform:scale(var(--card-zoom, 1));transition:transform .62s cubic-bezier(.2,.8,.2,1)}.card:hover .card-frame img{transform:scale(calc(var(--card-zoom, 1) * 1.045))}.card-frame.is-sized img{position:absolute;max-width:none}.card-frame.is-matted{background:var(--hue-mat, var(--hue-tint-strong))}@media (prefers-reduced-motion: reduce){.card-frame img,.card:hover .card-frame img{transition:none;transform:scale(var(--card-zoom, 1))}}.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(--hue-title, var(--ink-soft));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-title, var(--ink-soft));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)}.iplan,.iplan-overlay,.room-schedule{--iplan-sheet: #ffffff;--iplan-accent: var(--hue-title, var(--accent));--iplan-tint-a: .17;--iplan-ceil-a: .5;--iplan-ramp-1: var(--base-blue-1);--iplan-ramp-2: var(--base-blue-2);--iplan-ramp-3: var(--base-blue-3);--iplan-ramp-4: var(--base-blue-4);--iplan-ramp-5: var(--base-blue-5);--c000000: #000000;--c002020: #002020;--c220000: #220000;--c4a4a4a: #4a4a4a;--c7f7f7f: #7f7f7f;--c808080: #808080;--ca0a0a0: #a0a0a0;--ca6a6a6: #a6a6a6;--cbcbcbc: #bcbcbc;--cd9d9d9: #d9d9d9;--ce1e1e1: #e1e1e1;--ce6e6e6: #e6e6e6;--cffffff: #ffffff;--c000033: #000033;--c0c0c0c: #0c0c0c;--c3f3f7f: #3f3f7f;--c444444: #444444;--c636e7f: #636e7f;--cc8c8c8: #c8c8c8;--cd4d4d4: #d4d4d4;--c707021: #707021;--c737373: #737373;--c7f5327: #7f5327;--c360037: #360037;--c464646: #464646;--c5b5b5b: #5b5b5b;--c6d6d6d: #6d6d6d;--cb7b7b7: #b7b7b7;--cbfbfbf: #bfbfbf;--fire-1: #d4512b;--fire-2: #ee8a2c;--fire-3: #f6c84a;--log: #6b4c3b;--water: var(--base-blue-3);--wet: var(--base-blue-4)}[data-theme=blueprint] :is(.iplan,.iplan-overlay,.room-schedule){--iplan-sheet: #1d2232;--iplan-tint-a: .2;--iplan-ceil-a: .42;--iplan-ramp-1: #c3cff5;--iplan-ramp-2: #9fb2ee;--iplan-ramp-3: #7b93e0;--iplan-ramp-4: #5873c7;--iplan-ramp-5: #3f56a1;--c000000: #e7ebf5;--c002020: #b6c3de;--c220000: #c9bfd6;--c4a4a4a: #a9b2c8;--c7f7f7f: #7d879f;--c808080: #5d6884;--ca0a0a0: #535d79;--ca6a6a6: #5f6a88;--cbcbcbc: #4c5571;--cd9d9d9: #3a425b;--ce1e1e1: #343c54;--ce6e6e6: #323a51;--cffffff: #262d40;--c000033: #b6c3de;--c0c0c0c: #e7ebf5;--c3f3f7f: #aebcf0;--c444444: #adb6cb;--c636e7f: #8f9ab4;--cc8c8c8: #455069;--cd4d4d4: #3d465f;--c707021: #b0b493;--c737373: #848ea6;--c7f5327: #c4ae9a;--c360037: #c8bcd9;--c464646: #adb6cb;--c5b5b5b: #949db4;--c6d6d6d: #8790a8;--cb7b7b7: #4f5874;--cbfbfbf: #4a536f;--fire-1: #ff6a3d;--fire-2: #ffa043;--fire-3: #ffd970;--log: #9a785f;--water: #a9bcf2;--wet: #5873c7}[data-theme=redline] :is(.iplan,.iplan-overlay,.room-schedule){--iplan-sheet: #ffffff;--iplan-accent: var(--red);--iplan-ramp-1: var(--red);--iplan-ramp-2: color-mix(in oklab, var(--red) 78%, #fff);--iplan-ramp-3: color-mix(in oklab, var(--red) 58%, #fff);--iplan-ramp-4: color-mix(in oklab, var(--red) 40%, #fff);--iplan-ramp-5: color-mix(in oklab, var(--red) 24%, #fff);--c000000: var(--red);--c002020: var(--red);--c220000: var(--red);--c4a4a4a: var(--red);--c7f7f7f: color-mix(in oklab, var(--red) 55%, #fff);--c808080: color-mix(in oklab, var(--red) 45%, #fff);--ca0a0a0: color-mix(in oklab, var(--red) 34%, #fff);--ca6a6a6: color-mix(in oklab, var(--red) 30%, #fff);--cbcbcbc: color-mix(in oklab, var(--red) 24%, #fff);--cd9d9d9: color-mix(in oklab, var(--red) 14%, #fff);--ce1e1e1: color-mix(in oklab, var(--red) 11%, #fff);--ce6e6e6: color-mix(in oklab, var(--red) 9%, #fff);--cffffff: #ffffff;--c000033: var(--red);--c0c0c0c: var(--red);--c3f3f7f: var(--red);--c444444: var(--red);--c636e7f: color-mix(in oklab, var(--red) 70%, #fff);--cc8c8c8: color-mix(in oklab, var(--red) 20%, #fff);--cd4d4d4: color-mix(in oklab, var(--red) 16%, #fff);--c707021: color-mix(in oklab, var(--red) 65%, #fff);--c737373: color-mix(in oklab, var(--red) 58%, #fff);--c7f5327: color-mix(in oklab, var(--red) 75%, #fff);--c360037: var(--red);--c464646: var(--red);--c5b5b5b: color-mix(in oklab, var(--red) 70%, #fff);--c6d6d6d: color-mix(in oklab, var(--red) 62%, #fff);--cb7b7b7: color-mix(in oklab, var(--red) 26%, #fff);--cbfbfbf: color-mix(in oklab, var(--red) 23%, #fff);--fire-1: var(--red);--fire-2: color-mix(in oklab, var(--red) 60%, #fff);--fire-3: color-mix(in oklab, var(--red) 28%, #fff);--log: color-mix(in oklab, var(--red) 75%, #fff);--water: var(--red);--wet: color-mix(in oklab, var(--red) 30%, #fff)}.iplan [hidden]{display:none!important}.plan-view.is-live{cursor:default}.iplan-host{position:absolute;inset:var(--sp-4)}.iplan{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border-radius:var(--r-sm);background:var(--iplan-sheet);container:iplan / size;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;outline:none}.iplan:focus-visible{box-shadow:0 0 0 2px var(--iplan-accent)}.iplan.is-panning{cursor:grabbing}.iplan[data-mode=measure]{cursor:crosshair;touch-action:none}.iplan-layer{position:absolute;left:0;top:0;max-width:none;transform-origin:0 0;overflow:visible}.iplan.is-moving .iplan-layer{will-change:transform}.iplan-over,.iplan-screen{pointer-events:none}.iplan-screen{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}:where(.iplan-plan .drawing) path{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:max(var(--w, 0px),var(--hair, 0px))}.iplan-plan .drawing,.iplan-plan .words{pointer-events:none}.iplan-plan .words{fill:var(--c000000)}.iplan-plan [data-span]{transition:fill .2s}.iplan-plan [data-span].on{fill:var(--iplan-accent)}.iplan .tint{fill:var(--iplan-accent);fill-opacity:0;stroke:none;transition:fill-opacity .24s ease}.iplan .tint.on{fill-opacity:var(--iplan-tint-a)}.iplan .is-ceilings .tint{fill:var(--ceil, transparent);fill-opacity:var(--iplan-ceil-a)}.iplan .is-ceilings .tint.open-above{fill:var(--hatch);fill-opacity:1}.iplan .is-ceilings .tint.on{fill-opacity:calc(var(--iplan-ceil-a) + .25)}.iplan .iplan-hatch-bg{fill:var(--iplan-ramp-1);fill-opacity:.22}.iplan .iplan-hatch-line{stroke:var(--iplan-ramp-1);stroke-width:2.4}.iplan .hit,.iplan .dhit{fill:none;stroke:none;pointer-events:fill;cursor:pointer}.iplan.is-panning :is(.hit,.dhit),.iplan[data-mode=measure] :is(.hit,.dhit),.iplan[data-mode=walk] :is(.hit,.dhit){pointer-events:none}.iplan .swing{stroke-dasharray:1 2}.iplan .door.on .leaf path,.iplan .door.on .swing{stroke:var(--iplan-accent)}.iplan .door.on .swing{--w: .9px}.iplan .tread path{transition:stroke .16s}.iplan .tread.on path{stroke:var(--iplan-accent);--w: 1.1px}.iplan .walker :is(.w-body,.w-arm,.w-foot){fill:var(--iplan-sheet);stroke:var(--iplan-accent);stroke-width:.9}.iplan .walker .w-head{fill:var(--iplan-accent)}.iplan .walker .w-nose{fill:none;stroke:var(--iplan-accent);stroke-width:.9;stroke-linejoin:round}.iplan .fx .f1{fill:var(--fire-1)}.iplan .fx .f2{fill:var(--fire-2)}.iplan .fx .f3{fill:var(--fire-3)}.iplan .fx .ember,.iplan .fx .hearth{fill:var(--fire-2)}.iplan .fx .log{fill:var(--log);stroke:var(--c000000);stroke-width:.35}.iplan .fx .drop{fill:none;stroke:var(--water);stroke-width:.85;stroke-linecap:round}.iplan .fx .ripple{fill:none;stroke:var(--water);stroke-width:.5}.iplan .fx .wet{fill:var(--wet)}.iplan .fx .head{fill:var(--water)}.iplan .fx-outline{fill:none;stroke:var(--iplan-accent);stroke-width:1.5;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.iplan .dims :is(line,path){stroke:var(--iplan-accent);stroke-width:1.25;fill:none}.iplan .dims rect{fill:var(--iplan-sheet);stroke:var(--iplan-accent);stroke-width:1}.iplan .dims text{fill:var(--iplan-accent);font-family:var(--font-note);font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:central}.iplan .snap{fill:none;stroke:var(--iplan-accent);stroke-width:1.5}.iplan-tag{position:absolute;left:0;top:0;z-index:3;pointer-events:none;opacity:0;translate:-50% calc(-100% - 22px);transition:opacity .16s ease}.iplan-tag.show{opacity:1}.iplan-tag.below{translate:-50% 22px}.iplan-tag-face{--ex-color: color-mix(in oklab, var(--iplan-accent) 52%, var(--slab-mix));padding:6px 10px 7px;background:var(--paper-raised);border:1px solid var(--iplan-accent);border-radius:var(--r-sm);white-space:nowrap}.iplan-tag-name{display:block;font-family:var(--font-display);font-weight:600;font-size:1rem;line-height:1.15;letter-spacing:-.01em;color:var(--iplan-accent)}.iplan-tag-note{display:block;margin-top:2px;font-family:var(--font-note);font-size:var(--t-note);color:var(--ink-soft)}.iplan-tag-note:empty{display:none}.iplan-tag:after,.iplan-tag:before{content:"";position:absolute;background:var(--iplan-accent)}.iplan-tag:after{left:50%;top:100%;width:1px;height:18px}.iplan-tag:before{left:calc(50% - 2.5px);top:calc(100% + 18px);width:5px;height:5px;border-radius:50%}.iplan-tag.below:after{top:auto;bottom:100%}.iplan-tag.below:before{top:auto;bottom:calc(100% + 18px)}.iplan-chips{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.iplan-chip{position:absolute;translate:-50% -50%;padding:2px 6px 3px;border-radius:4px;background:var(--paper-raised);border:1px solid var(--chip, var(--iplan-accent));font-family:var(--font-note);font-size:.6875rem;font-weight:600;line-height:1.2;white-space:nowrap;text-align:center;color:var(--ink);font-variant-numeric:tabular-nums}.iplan-chip small{display:block;font-weight:500;font-size:.5625rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.iplan-scale,.iplan-hint,.iplan-head,.iplan-floors{position:absolute;z-index:2;margin:0;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--iplan-sheet);font-family:var(--font-note);color:var(--ink-soft)}.iplan-scale{left:10px;top:10px;padding:5px 8px 1px;pointer-events:none}.iplan-scale svg{display:block;overflow:visible}.iplan-scale .sb-a{fill:var(--ink)}.iplan-scale .sb-b{fill:var(--iplan-sheet);stroke:var(--ink);stroke-width:1}.iplan-scale .sb-box{fill:none;stroke:var(--ink);stroke-width:1}.iplan-scale text{fill:var(--ink-soft);font-family:var(--font-note);font-size:10px}.iplan-hint{left:10px;bottom:10px;max-width:min(360px,calc(100% - 80px));padding:6px 9px;font-size:var(--t-note);line-height:1.45}.iplan-hint button{margin-top:6px}.iplan-head{left:10px;top:10px;padding:7px 12px;font-family:var(--font-display);font-weight:600;font-size:1.05rem;color:var(--ink)}.iplan-floors{right:10px;top:56px;z-index:3;display:flex;flex-direction:column;align-items:center;gap:5px;padding:5px 6px 7px 5px}.iplan-floors-head{font-size:.5625rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint)}.iplan-floors .iplan-btn{font-size:var(--t-sm);font-variant-numeric:tabular-nums}.iplan-caption{--ex-color: color-mix(in oklab, var(--iplan-accent) 52%, var(--slab-mix));position:absolute;top:10px;left:50%;z-index:3;translate:-50% 0;display:flex;align-items:center;gap:10px;max-width:calc(100% - 120px);padding:6px 6px 6px 12px;background:var(--paper-raised);border:1px solid var(--iplan-accent);border-radius:var(--r-md)}.iplan-caption-text{min-width:0}.iplan-caption-text b{display:block;font-family:var(--font-note);font-size:.625rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint)}.iplan-caption-text span{display:block;font-family:var(--font-display);font-weight:600;font-size:1rem;line-height:1.2;color:var(--iplan-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.iplan-caption-btns{display:flex;gap:5px;flex:none}.iplan-tools{position:absolute;z-index:3;right:10px;top:50%;translate:0 -50%;display:flex;flex-direction:column;gap:8px}.iplan-group{display:flex;flex-direction:column;gap:4px}.iplan-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:34px;height:34px;padding:0;border:1px solid var(--hue-title, var(--ink-soft));border-radius:var(--r-sm);background:var(--paper-raised);color:var(--ink-soft);font-family:var(--font-note);font-size:var(--t-sm);font-weight:600;white-space:nowrap;cursor:pointer}.iplan-btn:hover{color:var(--ink)}.iplan-btn svg{flex:none;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.iplan-btn .lbl{display:none}.iplan-btn[aria-pressed=true]{background:var(--hue-tint, color-mix(in oklab, var(--iplan-accent) 16%, var(--paper-raised)));border-color:var(--iplan-accent);color:var(--iplan-accent)}.iplan-btn.is-sm{width:auto;height:28px;padding:0 9px;font-size:var(--t-note)}.iplan.is-inline{cursor:zoom-in;touch-action:auto}.iplan.is-inline :is(.iplan-tools,.iplan-hint,.iplan-close,.iplan-floors,.fx-outline){display:none}.iplan.is-inline :is(.hit,.dhit){pointer-events:none}.iplan.is-expanded .iplan-open{display:none}.iplan-btn.is-wide{width:auto;padding:0 12px}.iplan-btn.is-wide span{display:inline}.iplan-open{position:absolute;z-index:3;right:10px;bottom:10px}.iplan-close{position:absolute;z-index:4;right:10px;top:10px}@container iplan (max-width: 360px){.iplan-open{right:8px;bottom:8px;height:30px;padding:0 10px;font-size:var(--t-note)}.iplan-scale{display:none}}.iplan-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;padding:clamp(8px,2vw,20px);background:var(--paper)}.iplan.is-expanded{inset:clamp(8px,2vw,20px);border:1px solid var(--line-strong);border-radius:var(--r-md);touch-action:none}.iplan.is-expanded .iplan-scale{top:auto;bottom:10px}.iplan.is-expanded .iplan-hint{bottom:70px}.iplan.is-expanded .iplan-tools{top:auto;right:auto;bottom:12px;left:50%;translate:-50% 0;flex-direction:row}.iplan.is-expanded .iplan-group{flex-direction:row}.iplan.is-expanded .iplan-btn:not(.is-sm){width:36px;height:36px}.iplan.is-expanded .iplan-close span{display:none}.iplan.is-expanded .iplan-head{max-width:calc(100% - 74px)}@container iplan (min-width: 980px){.iplan.is-expanded .iplan-btn:not(.is-icon):not(.is-sm){width:auto;padding:0 12px}.iplan.is-expanded .iplan-btn .lbl,.iplan.is-expanded .iplan-close span{display:inline}}@media (max-width: 640px){.iplan.is-expanded [data-act=in],.iplan.is-expanded [data-act=out]{display:none}.iplan.is-expanded .iplan-hint{left:10px;right:10px;max-width:none;bottom:62px}.iplan.is-expanded .iplan-scale{top:64px;bottom:auto}.iplan-head{font-size:.95rem}.iplan-caption{max-width:calc(100% - 20px);top:54px;flex-wrap:wrap;row-gap:6px}.iplan-caption-text{flex:1 0 100%}.iplan[data-mode=walk] .iplan-floors{display:none}}@media (prefers-reduced-motion: reduce){.iplan-tag,.iplan .tint,.iplan-plan [data-span]{transition:none}}.room-schedule{display:flex;flex-direction:column;min-height:0;margin-top:calc(var(--sp-1) * -1);border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper-raised)}.room-schedule-toggle{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);border:0;background:none;font:inherit;text-align:left;cursor:pointer}.room-schedule-toggle .note{color:var(--hue-title, var(--ink-soft))}.room-schedule-toggle .count{margin-left:auto}.room-schedule-toggle svg{flex:none;transition:rotate .2s}.room-schedule-toggle[aria-expanded=true] svg{rotate:180deg}.room-schedule-body{display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--line)}.room-groups{padding:var(--sp-1);overflow-y:auto;min-height:0}.room-rows{list-style:none;margin:0;padding:0}.room-group+.room-group{margin-top:var(--sp-2)}.room-group-title{margin:0;padding:var(--sp-1) var(--sp-2) 2px;color:var(--hue-title, var(--ink-soft))}.room-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:var(--sp-2);width:100%;padding:5px var(--sp-2);border:1px solid transparent;border-radius:var(--r-sm);background:none;font:inherit;text-align:left;cursor:pointer}.room-row:hover,.room-row.is-on{background:var(--hue-tint, var(--paper-sunk));border-color:var(--hue-edge, var(--line-strong))}.room-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--t-sm);font-weight:600;color:var(--ink)}.room-row.is-on .room-row-name{color:var(--hue-title, var(--ink))}.room-row-clg{font-size:var(--t-note);color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.room-row-sw{display:none;width:11px;height:11px;border-radius:3px;align-self:center}.room-schedule.is-ceilings .room-row{grid-template-columns:11px minmax(0,1fr) auto}.room-schedule.is-ceilings .room-row-sw{display:block;background:var(--sw, transparent);border:1px solid var(--sw, var(--line-strong))}.room-schedule.is-ceilings .room-row-sw.is-open{background:repeating-linear-gradient(45deg,var(--iplan-ramp-1) 0 1.5px,transparent 1.5px 4px);border-color:var(--iplan-ramp-1)}.room-schedule.is-ceilings .room-row-sw.is-none{visibility:hidden}.room-legend{padding:var(--sp-2) var(--sp-3) var(--sp-3);border-top:1px solid var(--line);font-size:var(--t-note);color:var(--ink-soft)}.room-legend-ramp{display:flex;gap:3px;margin-top:6px}.room-legend-ramp span{flex:1;min-width:0}.room-legend-ramp i{display:block;height:8px;border-radius:2px}.room-legend-ramp i.is-open{background:repeating-linear-gradient(45deg,var(--iplan-ramp-1) 0 1.5px,transparent 1.5px 4px);box-shadow:inset 0 0 0 1px var(--iplan-ramp-1)}.room-legend-ramp small{display:block;margin-top:3px;font-size:.625rem;color:var(--ink-faint);white-space:nowrap}@media (min-width: 901px){.plan-block.has-schedule{align-self:stretch;height:0;min-height:100%;display:flex;flex-direction:column}.plan-block.has-schedule .plan-tabs{flex:1;min-height:0}.plan-block.has-schedule .room-schedule{flex:0 1 auto}}.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);--hero-max-h: max(18rem, calc(100vh - var(--topbar-h, 64px) - var(--sp-8)));width:min(100%,calc(var(--hero-max-h) * var(--ratio, 1.7778)));margin-inline:auto;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--hue-edge);background:var(--hue-tint)}@supports (height: 1svh){.project-hero{--hero-max-h: max(18rem, calc(100svh - var(--topbar-h, 64px) - var(--sp-8)))}}.project-hero img{display:block;width:100%;height:auto;max-height:var(--hero-max-h);object-fit:contain}.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)}.project-plans{display:grid;grid-template-columns:1fr 300px;gap:clamp(var(--sp-5),5vw,var(--sp-8));align-items:start;padding-bottom:var(--sp-8)}.plan-view{--ex-color: var(--hue-slab);--plan-max-h: max(18rem, calc(100vh - var(--topbar-h, 64px) - var(--sp-8)));position:relative;display:block;width:100%;aspect-ratio:var(--ratio, 1.5);max-height:var(--plan-max-h);padding:0;border-radius:var(--r-lg);border:1px solid var(--hue-edge);background:var(--hue-tint);overflow:hidden;cursor:zoom-in}@supports (height: 1svh){.plan-view{--plan-max-h: max(18rem, calc(100svh - var(--topbar-h, 64px) - var(--sp-8)))}}.plan-view img{position:absolute;inset:var(--sp-4);width:calc(100% - 2 * var(--sp-4));height:calc(100% - 2 * var(--sp-4));object-fit:contain}.plan-tabs{display:flex;flex-direction:column;gap:var(--sp-3)}.plan-tab{display:flex;align-items:baseline;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);border:1px solid var(--hue-title, var(--ink-soft));background:var(--paper-raised);color:var(--ink-soft);font:inherit;text-align:left;cursor:pointer}.plan-tab:hover{color:var(--ink)}.plan-tab.is-on{background:var(--hue-tint, var(--paper-sunk));color:var(--hue-title, var(--ink))}.plan-tab-no{color:inherit;opacity:.75}.plan-tab-name{font-family:var(--font-display);font-size:clamp(1rem,.94rem + .28vw,1.125rem);font-weight:600;letter-spacing:-.015em;line-height:1.2}@media (max-width: 900px){.project-body{grid-template-columns:1fr}.spec-block{position:static}.project-plans{grid-template-columns:1fr}.plan-block{order:-1}}.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-frame{aspect-ratio:3 / 2;padding:var(--sp-3)}.gallery-item img{display:block;width:100%;height:100%;object-fit:contain}.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-title, var(--ink-soft));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}}.resume-head{padding-top:clamp(var(--sp-6),4vw,var(--sp-7));padding-bottom:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}.resume-title{font-size:clamp(1.6rem,1.3rem + .9vw,2.1rem)}.resume-title-kind{color:var(--ink-soft)}.resume-section{padding-block:var(--sp-6)}.resume-section-label{margin-bottom:var(--sp-5);font-size:var(--t-sm);color:var(--ink-soft)}[data-theme=blueprint] .job,[data-theme=blueprint] .edu,[data-theme=blueprint] .skill-chip{--ex-color: color-mix(in oklab, var(--hue) 80%, var(--tint-shade))}.timeline{--when-w: 10rem;--node-w: 2.75rem;position:relative;list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-5)}.timeline:before{content:"";position:absolute;top:var(--sp-5);bottom:var(--sp-5);left:calc(var(--when-w) + var(--node-w) / 2);width:1px;background:var(--line-strong)}.timeline-item{display:grid;grid-template-columns:var(--when-w) var(--node-w) minmax(0,1fr);grid-template-areas:"when node card";align-items:start}.timeline-when{grid-area:when;padding-top:calc(var(--sp-5) + 4px);padding-right:var(--sp-2);text-align:right;color:var(--ink-soft);line-height:1.35}.timeline-node{grid-area:node;justify-self:center;position:relative;z-index:1;width:11px;height:11px;margin-top:calc(var(--sp-5) + 7px);transform:rotate(45deg);background:var(--paper);border:1.5px solid var(--line-strong);transition:background .2s ease,border-color .2s ease}.timeline-item.is-open .timeline-node{background:var(--hue-navy);border-color:var(--hue-navy)}.job{grid-area:card;min-width:0;border-radius:var(--r-lg);background:var(--hue-tint, var(--paper-raised));border:1px solid var(--hue-title, var(--ink))}.job-head{display:flex;align-items:center;gap:var(--sp-4);width:100%;padding:var(--sp-4) var(--sp-5);background:none;border:0;border-radius:inherit;color:inherit;font:inherit;text-align:left;cursor:pointer}.job-head.is-static{cursor:default}.job-text{display:flex;flex-direction:column;gap:4px;min-width:0}.job-role{font-family:var(--font-display);font-size:var(--t-xl);font-weight:600;letter-spacing:-.02em;line-height:1.15;color:var(--hue-title, var(--ink))}.job-firm{color:var(--ink-soft);line-height:1.3}.job-toggle{display:grid;place-items:center;flex:none;margin-left:auto;width:32px;height:32px;border-radius:var(--r-sm);border:1px solid var(--hue-edge, var(--line));background:var(--paper-raised);color:var(--hue-title, var(--ink))}.job-body{overflow:hidden}.job-body-inner{margin:0 var(--sp-5);padding:var(--sp-4) 0 var(--sp-5);border-top:1px solid var(--hue-edge, var(--line));color:var(--ink-soft)}.job-summary{max-width:68ch}.job-highlights{display:grid;gap:var(--sp-2);margin:0;padding-left:1.15em;list-style:square;max-width:68ch}.job-summary+.job-highlights{margin-top:var(--sp-3)}.job-highlights li::marker{color:var(--hue-title, var(--ink-faint))}.edu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:var(--sp-5)}.edu{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-5);border-radius:var(--r-lg);background:var(--hue-tint, var(--paper-raised));border:1px solid var(--hue-title, var(--ink))}.edu-when{color:var(--ink-soft)}.edu-degree{font-family:var(--font-display);font-size:var(--t-xl);font-weight:600;letter-spacing:-.015em;line-height:1.2;color:var(--hue-title, var(--ink))}.edu-school{color:var(--ink-soft);text-wrap:wrap}.edu-where{white-space:nowrap}.edu-notes{color:var(--ink-soft);font-size:var(--t-sm, .92rem)}.skills{display:grid;gap:var(--sp-5)}.skill-group-name{margin-bottom:var(--sp-3)}.skill-chips{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin:0;padding:0;list-style:none}.skill-chip{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--hue-tint, var(--paper-raised));border:1px solid var(--hue-title, var(--ink));color:var(--ink);line-height:1.3}@media (max-width: 700px){.timeline{--node-w: 1.75rem}.timeline:before{left:calc(var(--node-w) / 2)}.timeline-item{grid-template-columns:var(--node-w) minmax(0,1fr);grid-template-areas:"node when" "node card"}.timeline-when{padding:0 0 var(--sp-2);text-align:left}.timeline-node{margin-top:4px}.job-head{padding:var(--sp-4)}.job-body-inner{margin:0 var(--sp-4)}}
