@font-face{font-family:"EB Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/eb-garamond-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/eb-garamond-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"EB Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/eb-garamond-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"EB Garamond";font-style:italic;font-weight:500;font-display:swap;src:url(../fonts/eb-garamond-latin-500-italic.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Caveat";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/caveat-latin-500-normal.woff2) format("woff2")}


:root{
  --bg:#0e1317;--ink:#ece5d2;--ink-soft:#bdb59f;--ink-faint:#8a8373;
  --rule:#2a343b;--rule-soft:#1e272d;--rule-strong:#414d56;
  --copper:#d99f5e;--copper-soft:#8a6a3f;--blue:#82a9c9;--blue-soft:#4d6a80;--rust:#c76a4d;--sage:#a3ac84;--ochre:#d6bd7c;
  --paper:#e6dcc3;--paper-ink:#262119;--paper-mid:#4a4233;--paper-faint:#7b7261;
  --accent:var(--copper);--accent-soft:var(--copper-soft);--grid:rgba(140,175,205,.045);
  --serif:"EB Garamond","Iowan Old Style",Georgia,serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --hand:"Caveat","Segoe Print","Bradley Hand",cursive;
  color-scheme:dark;
}
body[data-theme=projects]{--accent:var(--copper);--accent-soft:var(--copper-soft)}
body[data-theme=disclosures]{--bg:#150f0c;--accent:var(--rust);--accent-soft:#7d3f2e;--grid:rgba(210,150,110,.05)}
body[data-theme=roadmap]{--bg:#0a141d;--accent:var(--blue);--accent-soft:var(--blue-soft);--grid:rgba(130,190,235,.075)}
body[data-theme=writing]{--bg:#0d1511;--accent:var(--sage);--accent-soft:#69704f;--grid:rgba(165,195,140,.05)}
body[data-theme=about]{--bg:#121318;--accent:var(--ochre);--accent-soft:#8d7a47;--grid:rgba(200,185,140,.045)}
body[data-theme=tarnhaven]{--bg:#0d151a;--accent:#8fb3c4;--accent-soft:#4f6f7e;--grid:rgba(143,179,196,.06)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:70px;-webkit-text-size-adjust:100%}
body{margin:0;background-color:var(--bg);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),radial-gradient(ellipse at 50% 0%,rgba(80,120,160,.07),transparent 60%);
  background-size:28px 28px,28px 28px,100% 100%;background-position:-1px -1px,-1px -1px,0 0;
  color:var(--ink);font-family:var(--serif);font-size:19px;line-height:1.65;
  font-feature-settings:"onum" 1,"liga" 1,"kern" 1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:2;opacity:.055;mix-blend-mode:screen;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 50% 35%,transparent 50%,rgba(0,0,0,.45) 100%)}
a{color:inherit}
::selection{background:rgba(217,159,94,.3)}
:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px}
#main:focus{outline:none}
.skip-link{position:absolute;left:-999px;top:8px;z-index:200;background:var(--bg);color:var(--accent);padding:8px 14px;border:1px solid var(--accent);font-family:var(--mono);font-size:12px}
.skip-link:focus{left:8px}
.wrap{max-width:1120px;margin:0 auto;padding:0 36px;position:relative;z-index:3}
.vh{position:absolute;width:0;height:0;overflow:hidden}

/* top bar */
.top{position:sticky;top:0;z-index:20;padding-top:env(safe-area-inset-top);background:linear-gradient(var(--bg) 72%,transparent);backdrop-filter:blur(3px)}
.top .wrap{display:flex;align-items:baseline;gap:22px;padding-top:14px;padding-bottom:11px;border-bottom:1px solid var(--rule)}
.sig{white-space:nowrap;flex-shrink:0;font-family:var(--hand);font-size:30px;line-height:1;color:var(--accent);position:relative;transform:rotate(-1.2deg);padding:0 6px 2px;text-decoration:none}
.sig::after{content:"";position:absolute;left:2px;right:2px;bottom:0;height:1px;background:var(--accent);opacity:.5;transform:skewX(-14deg)}
.top nav{margin-left:auto;display:flex;gap:20px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;overflow-x:auto;scrollbar-width:none}
.top nav::-webkit-scrollbar{display:none}
.top nav a{color:var(--ink-soft);text-decoration:none;border-bottom:1.5px solid transparent;padding-bottom:2px;white-space:nowrap;transition:color .15s,border-color .15s}
.top nav a:hover{color:var(--ink)}
.top nav a[aria-current]{color:var(--accent);border-bottom-color:var(--accent)}

/* headings, pages */
.kicker{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 16px}
.page-head{padding:60px 0 10px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 40px;align-items:start}
.page-head h1,.hero h1{margin:0;font-weight:500;font-size:clamp(38px,5.2vw,58px);line-height:1.06;letter-spacing:-.015em}
.lede{margin:22px 0 0;max-width:58ch;font-size:21px;line-height:1.55;color:var(--ink-soft)}
.lede strong{color:var(--ink);font-weight:500}
.scrawl{font-family:var(--hand);color:var(--accent);font-size:26px;line-height:1.1;transform:rotate(-2.5deg);display:inline-block;max-width:15ch}
.hero{padding:56px 0 6px;display:grid;grid-template-columns:minmax(0,1fr) 210px;column-gap:50px}
.hero .sig{display:inline-block;font-size:44px;margin:0 0 14px -6px;text-decoration:none}
.chips{margin:26px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}
.chips li::before{content:"\25E6  ";color:var(--accent);letter-spacing:0}
.stamp{justify-self:end;align-self:start;margin-top:10px;padding:12px 18px 10px;border:1.5px solid var(--accent);outline:1px solid var(--accent-soft);outline-offset:3px;color:var(--accent);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;text-align:center;line-height:1.65;transform:rotate(-6.5deg);opacity:.85;filter:url(#rough)}
.stamp b{display:block;font-weight:500;font-size:12px;letter-spacing:.18em;margin:5px 0;padding:5px 0;border-block:1px solid var(--accent-soft)}
.sec{padding-top:30px;margin-top:64px;border-top:1px solid var(--rule);position:relative}
.sec::before,.sec::after{content:"";position:absolute;width:10px;height:10px;top:-1px;border-top:1px solid var(--ink-faint)}
.sec::before{left:0;border-left:1px solid var(--ink-faint)}.sec::after{right:0;border-right:1px solid var(--ink-faint)}
.sec-head{display:flex;align-items:baseline;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.sec-num{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--accent)}
.sec-head h2{margin:0;font-weight:500;font-size:30px;line-height:1.15}
.sec-ref{margin-left:auto;font-family:var(--hand);font-size:22px;color:var(--ink-faint)}
.prose p{margin:0 0 18px;max-width:62ch}
.note{font-family:var(--hand);font-size:23px;line-height:1.25;color:var(--accent);transform:rotate(-.8deg);max-width:28ch}
code,.mono{font-family:var(--mono);font-size:.83em}

/* paper things */
.paper{position:relative;color:var(--paper-ink);background-color:var(--paper);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='0.16'/%3E%3C/svg%3E"),linear-gradient(172deg,rgba(255,255,255,.18),transparent 40%,rgba(90,70,40,.12));
  box-shadow:0 12px 26px rgba(0,0,0,.5),0 2px 4px rgba(0,0,0,.45);transform:rotate(var(--rot,0deg));transition:transform .25s ease,box-shadow .25s ease}
.paper.dark-ink{color:var(--paper-ink)}
.tape::before{content:"";position:absolute;top:-13px;left:50%;width:88px;height:27px;margin-left:-44px;background:rgba(214,189,124,.6);transform:rotate(var(--tape,-3deg));box-shadow:0 1px 2px rgba(0,0,0,.3);clip-path:polygon(0 0,100% 0,98% 25%,100% 50%,98% 75%,100% 100%,0 100%,2% 75%,0 50%,2% 25%);z-index:2}
.pin::before{content:"";position:absolute;top:-9px;left:50%;margin-left:-8px;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f0c2a4,#c76a4d 55%,#6f2f1f);box-shadow:0 4px 5px rgba(0,0,0,.55);z-index:2}
.ink{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;padding:3px 9px;border:2px solid currentColor;transform:rotate(var(--irot,-5deg));opacity:.88;filter:url(#rough);line-height:1.4;white-space:nowrap}
.ink.released{color:#85561b}.ink.closed{color:#a1412a}.ink.building{color:#2d587a}.ink.planned{color:#7b7261;border-style:dashed}.ink.live{color:#2d587a}
.ink.fixed{color:#2d587a}.ink.open{color:#a1412a;border-style:dashed}

/* hub: floor plan */
.plan{margin:34px 0 0}
.plan svg{display:block;width:100%;height:auto;overflow:visible}
.ln{fill:none;stroke:var(--ink-soft);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ln.f{stroke:var(--ink-faint);stroke-width:1.3}.ln.hv{stroke:var(--ink-soft);stroke-width:2.2}
.ln.a{stroke:var(--accent)}
.js .wall{stroke-dasharray:var(--len);stroke-dashoffset:var(--len)}
.js .plan.in .wall{animation:draw 2.6s cubic-bezier(.5,0,.3,1) forwards}
.js .plan .room{opacity:0;transition:opacity .9s ease}
.js .plan.in .room{opacity:1}
.js .plan.in .room:nth-of-type(1){transition-delay:.5s}.js .plan.in .room:nth-of-type(2){transition-delay:.9s}.js .plan.in .room:nth-of-type(3){transition-delay:1.3s}
.js .plan.in .room:nth-of-type(4){transition-delay:1.7s}.js .plan.in .room:nth-of-type(5){transition-delay:2.1s}.js .plan.in .room:nth-of-type(6){transition-delay:2.5s}
@keyframes draw{to{stroke-dashoffset:0}}
.room{cursor:pointer;outline:none}
.room .fill{fill:var(--c);fill-opacity:0;transition:fill-opacity .25s}
.room:hover .fill,.room:focus-visible .fill{fill-opacity:.1}
.room:focus-visible .fill{stroke:var(--c);stroke-width:2;stroke-dasharray:6 5}
.rl{font-family:var(--hand);font-size:36px;fill:var(--ink);transition:fill .2s}
.rs{font-family:var(--mono);font-size:12.5px;letter-spacing:.14em;fill:var(--ink-faint);text-transform:uppercase}
.room:hover .rl,.room:focus-visible .rl{fill:var(--c)}
.room .ln{transition:stroke .2s}.room:hover .ln,.room:focus-visible .ln{stroke:var(--c)}
.tx{font-family:var(--hand);font-size:22px;fill:var(--ink-soft)}
.led{fill:var(--rule-strong);stroke:var(--ink-faint);stroke-width:1}
.plan-note{min-height:44px;margin:14px 0 0;font-family:var(--hand);font-size:27px;color:var(--accent);text-align:center}
.doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px 40px;margin:34px 0 0;padding:0;list-style:none}
.doors a{display:block;text-decoration:none;padding:12px 0 14px 16px;border-left:3px solid var(--c,var(--accent));transition:background .2s,padding .2s}
.doors a:hover{background:linear-gradient(90deg,rgba(255,255,255,.05),transparent);padding-left:22px}
.doors b{display:block;font-family:var(--serif);font-weight:500;font-size:22px;color:var(--ink)}
.doors span{color:var(--ink-soft);font-size:16.5px;line-height:1.45}
.now-notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:34px 26px;padding:12px 4px 0}
.now-notes .paper{padding:22px 22px 18px}
.now-notes h3{margin:0 0 6px;font-family:var(--mono);font-weight:500;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-faint)}
.now-notes p{margin:0;font-size:18px;line-height:1.45;color:var(--paper-ink)}
.now-notes a{color:var(--paper-ink);text-decoration-color:#a1412a;text-underline-offset:3px}
.now-notes .paper:nth-child(1){--rot:-1.2deg}.now-notes .paper:nth-child(2){--rot:.9deg}.now-notes .paper:nth-child(3){--rot:-.5deg}

/* project cards */
.filters{display:flex;flex-wrap:wrap;gap:8px 10px;margin:8px 0 6px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.filters button{font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--ink-soft);background:none;border:1.5px dashed var(--rule-strong);padding:5px 12px;cursor:pointer;transform:rotate(var(--r,0deg));transition:color .15s,border-color .15s,background .15s}
.filters button:nth-child(odd){--r:-.8deg}.filters button:nth-child(even){--r:.7deg}
.filters button:hover{color:var(--ink);border-color:var(--ink-faint)}
.filters button[aria-pressed=true]{color:var(--bg);background:var(--accent);border-color:var(--accent);border-style:solid}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:40px 30px;padding:26px 6px 10px}
.card{padding:28px 26px 22px;display:flex;flex-direction:column}
.card:nth-child(8n+1){--rot:-1.1deg}.card:nth-child(8n+2){--rot:.7deg}.card:nth-child(8n+3){--rot:-.4deg}.card:nth-child(8n+4){--rot:1.2deg}
.card:nth-child(8n+5){--rot:.5deg}.card:nth-child(8n+6){--rot:-.9deg}.card:nth-child(8n+7){--rot:.9deg}.card:nth-child(8n+8){--rot:-.6deg}
.card:nth-child(odd){--tape:-3deg}.card:nth-child(even){--tape:2.5deg}
.card:hover{--rot:0deg;transform:translateY(-4px) rotate(0);box-shadow:0 18px 30px rgba(0,0,0,.55),0 2px 4px rgba(0,0,0,.45)}
.card[hidden]{display:none}
.card .top-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}
.card .num{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--paper-faint);padding-top:4px}
.card h3{margin:0 0 8px;font-weight:500;font-size:26px;line-height:1.15;color:#1c1812}
.card p{margin:0 0 12px;font-size:17px;line-height:1.5;color:#3b352a}
.htags{margin:auto 0 0;padding:6px 0 0;list-style:none;display:flex;flex-wrap:wrap;gap:0 14px;font-family:var(--hand);font-size:21px;color:#7d4a22;line-height:1.3}
.htags li::before{content:"#"}
.card .links{margin:10px 0 0;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase}
.card .links a{color:var(--paper-ink);text-decoration:none;border-bottom:2px solid #b4533a;margin-right:16px;padding-bottom:1px}
.card .links a:hover{background:rgba(180,83,58,.12)}

/* plates */
.plates{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:26px;margin-top:6px}
.plate{margin:0;border:1.5px solid var(--rule-strong);background:rgba(26,35,41,.62);min-width:0}
.plate-cap{display:flex;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--rule-strong);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}
.plate-cap .t{color:var(--ink)}
.plate-body{padding:14px 16px 8px}
.plate-foot{margin:0;padding:6px 16px 14px;font-size:16px;line-height:1.45;color:var(--ink-soft);font-style:italic}
.plate svg{display:block;width:100%;height:auto}
.q-axis{stroke:var(--rule-strong);stroke-width:1.3;fill:none}.q-mid{stroke:var(--rule-strong);stroke-width:1;stroke-dasharray:3 5;fill:none}
.q-lab{font-family:var(--mono);font-size:10px;letter-spacing:.14em;fill:var(--ink-faint)}
.q-hand{font-family:var(--hand);font-size:19px;fill:var(--ink-faint)}
.q-name{font-family:var(--mono);font-size:11.5px;fill:var(--ink)}
.q-contour{fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.q-contour.outer{stroke-width:1.1;opacity:.78}.q-contour.inner{stroke-width:1.8}
.q-contour.released,.q-contour.live{stroke:var(--copper)}
.q-contour.outer.released,.q-contour.outer.live{fill:rgba(217,159,94,.08)}
.q-contour.building{stroke:var(--blue)}.q-contour.outer.building{stroke-dasharray:5 3;fill:rgba(130,169,201,.05)}
.q-contour.planned{stroke:var(--ink-faint)}.q-contour.outer.planned{stroke-dasharray:1 4}.q-contour.inner.planned{stroke-dasharray:2 3}
.q-contour.closed{stroke:var(--rust)}.q-contour.outer.closed{stroke-dasharray:8 3;fill:rgba(199,106,77,.04)}.q-contour.inner.closed{stroke-dasharray:2 3}
.q-contour.private{stroke:var(--ochre)}.q-contour.outer.private{stroke-dasharray:1 3;fill:rgba(214,189,124,.04)}
.q-center{fill:var(--bg);stroke:var(--ink-soft);stroke-width:1.3;vector-effect:non-scaling-stroke}
.q-center.released,.q-center.live{fill:var(--copper);stroke:var(--copper)}.q-center.building{fill:var(--blue);stroke:var(--blue)}
.q-center.closed{fill:var(--rust);stroke:var(--rust)}.q-center.private{fill:var(--ochre);stroke:var(--ochre)}
.q-x{stroke:var(--rust);stroke-width:1.8;fill:none;stroke-linecap:round}
.q-pulse{fill:none;stroke:var(--copper);stroke-width:1.2;transform-box:fill-box;transform-origin:center}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:6px 0 4px;padding:0;list-style:none;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
.legend i{display:inline-block;width:10px;height:10px;border:1.6px solid;border-radius:50%;margin-right:7px;vertical-align:-1px}
.legend .l1 i{background:var(--copper);border-color:var(--copper)}.legend .l2 i{border-color:var(--blue)}.legend .l3 i{border-color:var(--ink-faint);border-style:dashed}.legend .l4 i{border-color:var(--rust)}
.tk-row{font-family:var(--hand);fill:var(--ink-soft);font-size:23px}
.tk{stroke:var(--ink);stroke-width:2.2;stroke-linecap:round;fill:none}

/* ledger (disclosures) */
.sheet{padding:40px 36px 44px 88px;--rot:-.25deg;color:var(--paper-ink);line-height:36px;
  background-image:linear-gradient(90deg,transparent 62px,rgba(168,69,44,.6) 62px,rgba(168,69,44,.6) 64px,transparent 64px),repeating-linear-gradient(to bottom,transparent 0 35px,rgba(60,85,120,.3) 35px 36px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='0.16'/%3E%3C/svg%3E")}
.sheet::before{content:"";position:absolute;left:18px;top:60px;bottom:60px;width:20px;background:radial-gradient(circle,#15100d 0 8px,transparent 9px) 0 0/20px 120px repeat-y}
.l-head,.l-row{display:grid;grid-template-columns:70px minmax(0,1fr) 210px;column-gap:22px;margin:0}
.l-head{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-faint)}
.l-row{padding-bottom:36px}
.l-row .ref{font-family:var(--mono);font-size:13px;color:#2d587a}
.l-row .what{font-size:19px;color:#1c1812}
.l-row .what small,.l-row .out-note{display:block;font-family:var(--hand);font-size:23px;color:#6b3a22;line-height:36px}
.l-row .out{position:relative}
.l-row .out .ink{margin:4px 0 0;font-size:12px}
.l-row .out-note{margin-top:0}
.sheet .l-head span{line-height:36px}
.checks{list-style:none;margin:28px 0 0;padding:0;max-width:66ch}
.checks li{display:flex;gap:14px;align-items:flex-start;margin-bottom:12px;font-size:19px}
.checks svg{flex:0 0 28px;width:28px;height:28px;margin-top:3px}
.checks .ln{stroke:var(--accent);stroke-width:2}

/* roadmap */
.trail svg{display:block;width:100%;height:auto;overflow:visible}
.trail .wp{fill:var(--bg);stroke:var(--blue);stroke-width:2.2}
.trail .wp.maybe{stroke-dasharray:3 3;stroke:var(--ink-faint)}
.trail .wl{font-family:var(--hand);font-size:23px;fill:var(--ink)}
.trail .wl.maybe{fill:var(--ink-faint)}
.trail .zone{font-family:var(--mono);font-size:11px;letter-spacing:.2em;fill:var(--blue);text-transform:uppercase}
.sticky-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:38px 30px;padding:26px 6px 6px}
.sticky-col h3{margin:0 0 20px;font-family:var(--hand);font-weight:500;font-size:34px;line-height:1;color:var(--blue)}
.sticky-col.maybe h3{color:var(--ink-faint)}
.sticky{padding:22px 22px 16px;margin:0 0 30px;background-color:var(--paper)}
.sticky.s1{background-color:#d6c18a}.sticky.s2{background-color:#e6dcc3}.sticky.s3{background-color:#a9bdc9}
.sticky:nth-child(1){--rot:-1.2deg;--tape:-4deg}.sticky:nth-child(2){--rot:.9deg;--tape:3deg}.sticky:nth-child(3){--rot:-.5deg}.sticky:nth-child(4){--rot:1.1deg;--tape:2deg}
.sticky b{display:block;font-family:var(--hand);font-weight:500;font-size:27px;line-height:1.1;margin-bottom:6px;color:#1c1812}
.sticky p{margin:0;font-size:17px;line-height:1.45;color:#3b352a}
.sticky-col.maybe .sticky{opacity:.92}

/* clippings (writing) */
.posts{display:grid;gap:42px;padding:28px 6px 6px}
.post{display:grid;grid-template-columns:230px minmax(0,1fr);gap:24px;padding:22px 24px 20px;--rot:-.5deg}
.post:nth-child(even){--rot:.6deg}
.post:hover,.post:focus-within{--rot:0deg;transform:translateY(-3px)}
.post-img{display:block;position:relative;width:100%;min-width:0;aspect-ratio:16/10;overflow:hidden;background:#cfc3a5;border:1px solid rgba(40,30,15,.35);box-shadow:inset 0 0 0 4px rgba(255,255,255,.25)}
.post-img img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;filter:none;transition:transform .35s ease}
.post:hover .post-img img,.post:focus-within .post-img img{transform:scale(1.025)}
.post-img.ph{display:flex;align-items:center;justify-content:center;font-family:var(--hand);font-size:clamp(48px,5vw,60px);color:#8a7a58;background-image:repeating-linear-gradient(135deg,transparent 0 9px,rgba(60,50,30,.08) 9px 10px)}
.post-body{display:flex;flex-direction:column;gap:6px;min-width:0}
.post time{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#85561b}
.post h3{margin:0;font-weight:500;font-size:26px;line-height:1.18;color:#1c1812}
.post h3 a{text-decoration:none}.post h3 a::after{content:"";position:absolute;inset:0;z-index:3}
.post p{margin:0;font-style:italic;color:#3b352a;font-size:17.5px;line-height:1.45}
.post .tags{list-style:none;margin:auto 0 0;padding:6px 0 0;display:flex;flex-wrap:wrap;gap:0 14px;font-family:var(--hand);font-size:21px;color:#7d4a22}
.post .tags li::before{content:"#"}
.empty{padding:34px 28px;border:2px dashed var(--rule-strong);color:var(--ink-soft);max-width:60ch;font-family:var(--hand);font-size:27px;line-height:1.3;transform:rotate(-.6deg)}
.more{margin-top:22px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.more a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft)}

/* about */
.pass{max-width:420px;padding:26px 28px 22px;--rot:1.4deg}
.pass .hd{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--paper-faint);border-bottom:1.5px solid rgba(40,30,15,.4);padding-bottom:8px;margin-bottom:12px}
.pass .hn{font-family:var(--hand);font-size:54px;line-height:1;color:#1c1812;margin:0 0 4px;transform:rotate(-1.5deg);display:inline-block}
.pass dl{display:grid;grid-template-columns:90px 1fr;gap:6px 12px;margin:10px 0 0;font-size:17px;line-height:1.35}
.pass dt{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint);padding-top:5px}
.pass dd{margin:0;min-width:0;overflow-wrap:anywhere}.pass a{color:var(--paper-ink);text-decoration-color:#a1412a;text-underline-offset:3px;overflow-wrap:anywhere}
.tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 26px;padding:6px 4px}
.tab{position:relative;padding:20px 22px 18px;border:1.5px solid var(--rule-strong);background:rgba(20,27,33,.5);margin-top:16px}
.tab::before{content:attr(data-l);position:absolute;top:-16px;left:18px;padding:3px 14px;background:var(--accent);color:var(--bg);font-family:var(--hand);font-size:23px;line-height:1.1;transform:rotate(-1.5deg);clip-path:polygon(0 100%,4% 12%,12% 0,88% 0,96% 12%,100% 100%)}
.tab h3{margin:6px 0 6px;font-weight:500;font-size:21px}.tab p{margin:0;font-size:17px;line-height:1.5;color:var(--ink-soft)}
.fig svg{display:block;width:100%;height:auto;overflow:visible}
.fig .bx{fill:rgba(31,42,49,.88);stroke:var(--ink-soft);stroke-width:1.6}.fig .bt{font-family:var(--hand);font-size:22px;fill:var(--ink)}
.fig .bn{font-family:var(--mono);font-size:11px;fill:var(--accent);letter-spacing:.1em}
.fig .cap{font-family:var(--hand);font-size:22px;fill:var(--accent)}
.fig .mo{font-family:var(--mono);font-size:11px;fill:var(--ink-faint);letter-spacing:.1em}
.fig .ev{font-family:var(--hand);font-size:22px;fill:var(--ink)}
.fig .evd{font-family:var(--mono);font-size:10.5px;fill:var(--accent);letter-spacing:.1em}
.fig .rust{stroke:var(--rust)}.fig .rustf{fill:var(--rust)}
.fig .hatch{fill:none;stroke:var(--ink-faint);stroke-width:1;stroke-linecap:round}
.cta-line{margin-top:34px;font-family:var(--hand);font-size:28px;color:var(--accent)}
.cta-line a{text-decoration:none;border-bottom:2px solid var(--accent-soft)}

/* footer */
footer.colophon{margin-top:96px;padding:34px 0 56px;border-top:1.5px solid var(--rule-strong);position:relative;z-index:3}
.colophon .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;font-size:16px;color:var(--ink-soft)}
.colophon h2{margin:0 0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);font-weight:500}
.colophon p{margin:0 0 8px}.colophon a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule-strong)}.colophon a:hover{color:var(--accent);border-bottom-color:var(--accent)}
.colophon-end{margin-top:36px;padding-top:16px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}
.js .rv{opacity:0;transform:translateY(12px);transition:opacity .7s ease,transform .7s ease}
.js .rv.in{opacity:1;transform:none}

/* Intro: a researcher's note written out line by line, then stamped. */
#gate{display:none}
html.gate-on,html.gate-on body{overflow:hidden;height:100%;overscroll-behavior:none}
html.gate-on #gate{display:grid;place-items:center;position:fixed;inset:0;z-index:100;padding:24px;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),radial-gradient(ellipse at 50% 50%,transparent 40%,rgba(0,0,0,.55) 100%);background-size:28px 28px,28px 28px,100% 100%}
.g-skip{position:absolute;top:max(18px,env(safe-area-inset-top));right:clamp(18px,4vw,40px);font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);background:none;border:1.5px dashed var(--rule-strong);padding:6px 12px;cursor:pointer;transition:color .15s,border-color .15s}
.g-skip:hover,.g-skip:focus-visible{color:var(--ink);border-color:var(--copper)}
.g-sheet{width:min(540px,100%);padding:42px 38px 36px;--rot:-1.6deg;--tape:-3deg;opacity:0;animation:g-in .9s .15s cubic-bezier(.2,.7,.2,1) forwards}
.g-head{margin:0 0 16px;padding-bottom:8px;border-bottom:1.5px solid rgba(40,30,15,.35);font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-faint)}
.g-line{margin:0;font-family:var(--hand);font-size:clamp(32px,6vw,46px);line-height:1.22;color:var(--paper-ink)}
.g-line span{display:inline-block;clip-path:inset(0 100% 0 0);animation:g-write var(--d) var(--t) steps(20,end) forwards}
.g-sign{position:relative;display:inline-block;margin:16px 0 0;font-family:var(--hand);font-size:clamp(46px,9vw,62px);line-height:1;color:#1c1812;transform:rotate(-2deg);opacity:0;animation:g-fade .5s 4.9s forwards}
.g-sign svg{position:absolute;left:-4%;bottom:-6px;width:108%;height:14px;overflow:visible}
.g-sign path{fill:none;stroke:#a1412a;stroke-width:2.6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:g-draw .6s 5s ease-out forwards}
.g-stamp{position:absolute;right:28px;bottom:32px;font-size:15px;padding:5px 14px;color:#a1412a;opacity:0;animation:g-thump .4s 5.6s cubic-bezier(.3,1.5,.5,1) forwards}
.g-pencil{position:absolute;left:clamp(18px,4vw,40px);right:clamp(18px,4vw,40px);bottom:max(20px,env(safe-area-inset-bottom));height:1px;background:var(--rule)}
.g-pencil i{display:block;height:100%;width:0;background:var(--copper);animation:g-bar 6.6s linear forwards}
#gate.exiting{pointer-events:none;animation:g-exit .72s ease-in forwards}
@keyframes g-in{from{opacity:0;transform:translateY(18px) rotate(calc(var(--rot) - 2deg))}to{opacity:1;transform:rotate(var(--rot))}}
@keyframes g-write{to{clip-path:inset(0 0 0 0)}}
@keyframes g-fade{to{opacity:1}}
@keyframes g-draw{to{stroke-dashoffset:0}}
@keyframes g-thump{from{opacity:0;transform:scale(2.3) rotate(-16deg)}to{opacity:.88;transform:scale(1) rotate(var(--irot,-7deg))}}
@keyframes g-bar{to{width:100%}}
@keyframes g-exit{to{opacity:0;transform:translateY(-14px)}}
.colophon-end a{border:0;color:inherit;text-decoration:underline;text-underline-offset:3px}
/* disclosures: redaction bars and ledger stamps */
.bar{display:inline-block;width:6.5em;height:.78em;margin:0 .15em;vertical-align:-.05em;background:#17120e;border-radius:2px 6px 3px 7px;transform:skewX(-7deg);transform-origin:left}
.js .rv.in .bar{animation:g-barin .5s .5s cubic-bezier(.3,.7,.2,1) both}
.js .rv:not(.in) .l-row .ink{opacity:0}
.js .rv.in .l-row .ink{animation:g-thump .4s both cubic-bezier(.3,1.5,.5,1)}
.js .rv.in .l-row:nth-of-type(2) .ink{animation-delay:.9s}.js .rv.in .l-row:nth-of-type(3) .ink{animation-delay:1.3s}.js .rv.in .l-row:nth-of-type(4) .ink{animation-delay:1.7s}
@keyframes g-barin{from{transform:skewX(-7deg) scaleX(0)}to{transform:skewX(-7deg) scaleX(1)}}
@media (prefers-reduced-motion:reduce){.g-sheet,.g-line span,.g-sign,.g-sign path,.g-stamp,.g-pencil i,.bar,.l-row .ink{animation:none!important}.g-sheet,.g-sign,.g-stamp{opacity:1}.g-line span{clip-path:none}.g-sign path{stroke-dashoffset:0}.g-pencil i{width:100%}}

/* responsive */
@media (max-width:860px){
  body{font-size:18px}.wrap{padding:0 22px}
  .top .wrap{gap:14px}
  .page-head{grid-template-columns:1fr;padding-top:42px}
  .hero{grid-template-columns:1fr;padding-top:40px}
  .stamp{justify-self:start;margin-top:26px;transform:rotate(-4deg)}
  .plates,.tabs{grid-template-columns:1fr}
  .post{grid-template-columns:1fr}
  .colophon .grid{grid-template-columns:1fr;gap:26px}
  .sheet{padding:30px 18px 30px 66px}.sheet::before{left:10px}
  .l-head{display:none}.l-row{grid-template-columns:1fr;padding-bottom:18px}.l-row .ref{line-height:30px}.l-row .out{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
  
  .rl{font-size:44px}.rs{display:none}
}
@media (max-width:600px){.q-name{font-size:18px}.q-hand{font-size:24px}.q-lab{font-size:13px}.tk-row{font-size:30px}}
@media (max-width:520px){.sec-head h2{font-size:26px}.top nav{gap:14px}.hero .sig{font-size:38px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .rv{opacity:1;transform:none;transition:none}.js .wall{stroke-dashoffset:0;animation:none!important}.js .plan .room{opacity:1;transition:none}.paper{transition:none}}
/* final responsive/accessibility overrides */
img,video{max-width:100%}
h1,h2,h3{ text-wrap:balance }
p,li{ text-wrap:pretty }
.prose p,.lede,.card p,.post p,.colophon p{overflow-wrap:break-word}
.plate-cap{align-items:flex-start;flex-wrap:wrap}
.plate-body,.plan,.trail{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent}
.plate-body svg,.plan svg,.trail svg{max-width:none}
.post-img img{background:#cfc3a5}
@media(max-width:600px){
  html{scroll-padding-top:104px}
  .top .wrap{align-items:center;flex-wrap:wrap;row-gap:9px;padding-top:12px;padding-bottom:10px}
  .top .sig{font-size:27px}
  .top nav{order:2;flex:1 0 100%;width:100%;margin-left:0;display:flex;flex-wrap:wrap;overflow:visible;white-space:normal;gap:8px 14px;font-size:10px;letter-spacing:.1em;line-height:1.5;padding:2px 0 1px}
  .top nav a{white-space:nowrap;padding-bottom:3px}
  .wrap{padding-left:18px;padding-right:18px}
  .page-head{gap:8px 20px;padding-top:36px}
  .page-head>*{min-width:0}
  .pass{width:100%;min-width:0;max-width:100%;padding:22px 18px}
  .pass dl{grid-template-columns:70px minmax(0,1fr);gap:6px 10px}
  .lede{font-size:19px;line-height:1.48}
  .sec{margin-top:46px;padding-top:24px}
  .sec-head{gap:10px;margin-bottom:20px}
  .sec-ref{font-size:19px}
  .cards{grid-template-columns:minmax(0,1fr);gap:26px;padding-left:4px;padding-right:4px}
  .card{padding:24px 20px 20px}
  .doors{grid-template-columns:minmax(0,1fr)}
  .plate-cap{padding:9px 12px;font-size:9.5px;letter-spacing:.1em}
  .plate-body{padding:12px 12px 8px}
  .plate-body svg{min-width:600px}
  .plan svg{min-width:740px}
  .trail svg{min-width:760px}
  .plan-note{font-size:24px}
  .post{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px}
  .post-img{max-height:220px}
  .post h3{font-size:24px}
  .colophon .grid{gap:22px}
  .colophon-end{font-size:9.5px;letter-spacing:.09em}
}
@media(max-width:360px){
  .wrap{padding-left:14px;padding-right:14px}
  .top nav{gap:7px 11px;font-size:9.5px}
  .stamp{padding:10px 14px}
  .card{padding:22px 16px 18px}
}
@media(prefers-reduced-motion:reduce){
  .post-img img{transition:none}
  .post:hover .post-img img,.post:focus-within .post-img img{transform:none}
}
@media print{
  body{background:#fff;color:#000}
  body::before,body::after,#gate,.top{display:none!important}
  .js .rv{opacity:1!important;transform:none!important;visibility:visible!important}
  .plate-body,.plan,.trail{overflow:visible!important}
  .plate-body svg,.plan svg,.trail svg{min-width:0!important;width:100%!important}
}

.ink.private{color:#5d5630;border-style:dotted}
.q-dot.private{fill:none;stroke:var(--ochre)}
.legend .l5 i{border-color:var(--ochre);border-style:dotted}

/* The opening trace is a hand-drawn instrument reading, not a generic spinner. */
.g-sheet{width:min(590px,100%);padding:36px 38px 32px;animation:g-in .55s .08s cubic-bezier(.2,.7,.2,1) both}
.g-scope{display:block;width:100%;height:auto;margin:2px 0 14px;overflow:visible;color:#a1412a}
.g-grid{fill:none;stroke:rgba(38,33,25,.11);stroke-width:.65;stroke-dasharray:1 3}
.g-base{fill:none;stroke:rgba(38,33,25,.35);stroke-width:.8;stroke-dasharray:2 4}
.g-trace-wake{fill:none;stroke:rgba(38,33,25,.45);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.g-trace{fill:none;stroke:#a1412a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:g-scope-draw 2.35s cubic-bezier(.62,0,.3,1) both}
.g-trace-dot{fill:#a1412a;stroke:#f3e8cf;stroke-width:1.6;filter:drop-shadow(0 1px 1px rgba(38,24,12,.35))}
@keyframes g-scope-draw{0%{stroke-dashoffset:1;opacity:.55}18%{opacity:1}88%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:.42}}
.g-line span{animation-duration:var(--d);animation-delay:var(--t)}
.g-sign{animation-delay:2.08s}
.g-sign path{animation-delay:2.2s}
.g-stamp{animation-delay:2.62s}
.g-pencil i{animation-duration:3.5s}
#gate.exiting{animation-duration:.52s}
.js .plan.in .room:nth-of-type(1) .led{animation-delay:.2s}
.js .plan.in .room:nth-of-type(2) .led{animation-delay:.8s}
.js .plan.in .room:nth-of-type(3) .led{animation-delay:1.1s}
.js .plan.in .room:nth-of-type(4) .led{animation-delay:.5s}
.js .plan.in .room:nth-of-type(5) .led{animation-delay:1.4s}
.js .plan.in .room:nth-of-type(6) .led{animation-delay:.9s}
.js .plan.in .room .led{animation:beacon-breathe 3.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes beacon-breathe{0%,100%{opacity:.62;filter:none}48%{opacity:1;filter:drop-shadow(0 0 3px var(--accent))}}
.q-pulse{fill:none;stroke:var(--copper);stroke-width:1.25;transform-box:fill-box;transform-origin:center}
.js .sec.in .fig svg path.etch,.js .sec.in .checks svg path.etch{stroke-dasharray:1;stroke-dashoffset:1;animation:etch-line .85s cubic-bezier(.4,0,.2,1) var(--ink-delay,0s) both}
.js .sec.in .plate svg .q-center{transform-box:fill-box;transform-origin:center;animation:plot-in .35s cubic-bezier(.2,.8,.2,1) var(--ink-delay,0s) both}
.js .sec.in .plate svg .q-pulse{animation:plot-pulse 2.8s ease-out 1.1s infinite}
@keyframes etch-line{to{stroke-dashoffset:0}}
@keyframes plot-in{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
@keyframes plot-pulse{0%{opacity:.7;transform:scale(.55)}85%,100%{opacity:0;transform:scale(2.8)}}
.js .page-head{animation:page-in .72s cubic-bezier(.2,.7,.2,1) both}
@keyframes page-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.tab{transition:border-color .22s,background-color .22s,transform .22s,box-shadow .22s}
.tab:hover,.tab:focus-within{border-color:var(--accent);background:rgba(24,33,39,.78);transform:translateY(-2px);box-shadow:0 7px 18px rgba(0,0,0,.18)}
.sticky{transition:transform .22s ease,box-shadow .22s ease}
.sticky:hover,.sticky:focus-within{transform:translateY(-3px) rotate(0deg);box-shadow:0 12px 22px rgba(0,0,0,.32)}
.js .sec.in .trail .wp{transform-box:fill-box;transform-origin:center;animation:waypoint-set .5s cubic-bezier(.16,1,.3,1) var(--ink-delay,0s) both}
@keyframes waypoint-set{0%{opacity:.2;transform:scale(.25)}72%{opacity:1;transform:scale(1.35)}100%{opacity:1;transform:scale(1)}}
.fig #today-mark .ln{stroke-width:2.5;filter:drop-shadow(0 0 2px rgba(199,106,77,.4))}
.post{transition:transform .26s ease,box-shadow .26s ease}
.js .rv.in .post{animation:clipping-arrive .55s cubic-bezier(.2,.7,.2,1) both}
.js .rv.in .post:nth-child(2){animation-delay:.08s}.js .rv.in .post:nth-child(3){animation-delay:.16s}.js .rv.in .post:nth-child(4){animation-delay:.24s}
@keyframes clipping-arrive{from{opacity:.25;transform:translateY(9px) rotate(var(--rot))}to{opacity:1;transform:rotate(var(--rot))}}
.lost-page{display:block;width:clamp(112px,18vw,154px);height:auto;margin:0 0 22px 2px;transform:rotate(-2deg);overflow:visible}
.lost-paper{fill:rgba(230,220,195,.035);stroke:var(--ink-soft);stroke-width:1.5;stroke-linejoin:round}
.lost-grid{fill:none;stroke:var(--rule-strong);stroke-width:.7;stroke-dasharray:2 4;opacity:.7}
.lost-route{fill:none;stroke:var(--rust);stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:lost-trace 1.5s .3s cubic-bezier(.4,0,.2,1) forwards}
.lost-mark{fill:var(--rust);transform-box:fill-box;transform-origin:center;animation:lost-beacon 2.2s 1.2s ease-out infinite}
.lost-fold{fill:none;stroke:var(--ink-faint);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
@keyframes lost-trace{to{stroke-dashoffset:0}}
@keyframes lost-beacon{0%{opacity:.9;transform:scale(.75)}80%,100%{opacity:0;transform:scale(2.2)}}
@media(max-width:600px){.g-sheet{padding:32px 22px 28px}.g-scope{margin:0 0 12px}}
@media(prefers-reduced-motion:reduce){
  .g-sheet{animation:none;opacity:1;transform:rotate(var(--rot))}
  .g-trace{animation:none;stroke-dashoffset:0}
  .g-trace-dot{display:none}
  .js .plan.in .room .led{animation:none;filter:none;opacity:1}
  .js .sec.in .fig svg path.etch,.js .sec.in .checks svg path.etch,.js .sec.in .plate svg .q-center,.js .sec.in .plate svg .q-pulse{animation:none;stroke-dashoffset:0;opacity:1;transform:none}
  .js .page-head,.js .sec.in .trail .wp,.js .rv.in .post{animation:none;opacity:1;transform:none}
  .tab,.sticky{transition:none}
  .lost-route,.lost-mark{animation:none;stroke-dashoffset:0;opacity:1;transform:none}
}
