:root{--ink:#15233f;--paper:#f7f3eb;--accent:#d44a1e;--line:#e3ddd1;--paper2:#efe9dc}
html{scroll-behavior:smooth}
body{font-family:'Geist',system-ui,sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}a:hover{color:var(--accent)}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace}
.hairline{border-color:var(--line)}
.num{font-variant-numeric:tabular-nums;letter-spacing:-0.02em}
.blueprint{background-image:linear-gradient(rgba(255,255,255,0.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.03) 1px,transparent 1px);background-size:48px 48px}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
details>summary{list-style:none;cursor:pointer}
details>summary::-webkit-details-marker{display:none}
details[open] .chev{transform:rotate(45deg)}
.chev{transition:transform .2s ease}
.nav-group{position:relative}
.nav-menu{position:absolute;top:calc(100% + 6px);left:-10px;background:var(--paper);border:1px solid var(--line);min-width:260px;padding:6px;opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .15s ease,transform .15s ease;z-index:50}
.nav-group:hover .nav-menu,.nav-group:focus-within .nav-menu{opacity:1;pointer-events:auto;transform:none}
.nav-menu a{display:block;padding:8px 10px;font-size:14px;color:var(--ink);white-space:nowrap}
.nav-menu a:hover{background:#fbf8f1;color:var(--accent)}
.nav-menu a .sub{display:block;font-size:10.5px;color:#6a7990;font-family:'JetBrains Mono',ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;margin-top:2px}
.photo-placeholder{background-color:var(--paper2);background-image:repeating-linear-gradient(135deg,rgba(21,35,63,0.07) 0 1px,transparent 1px 14px)}
.disclosure{font-size:12px;font-style:italic;color:#6a7990;line-height:1.55}
.prose-h2 p+p{margin-top:1.1rem}
.prose-h2 strong{color:var(--ink);font-weight:600}
.prose-h2 a{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.prose-h2 a:hover{color:var(--accent)}
.confirm-flag{border:2px dashed var(--accent);background:#fff4ee}
:where(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
input,select,textarea{border-radius:0}
.field-invalid{border-color:var(--accent)!important}
