*{margin:0;padding:0;box-sizing:border-box}
:root{--bg:#F5F0E8;--raised:#EDE6DA;--surface:#F0E9DF;--text:#1C1712;--text2:#5A5048;--text3:#8C7F72;--border:#D8D0C4;--border-strong:#B8AFA4;--accent:#B05A35;--accent-soft:#F0E2DA;--accent-text:#8A3E1E;--on-accent:#FBF6EC;--maxw:1180px;--gutter:clamp(20px,5vw,72px);--voice:"Bricolage Grotesque",Georgia,serif;--ui:"Hanken Grotesk",system-ui,sans-serif}
html{scroll-behavior:smooth;overflow-x:clip;-webkit-text-size-adjust:100%}
body{font-family:var(--ui);background:var(--bg);color:var(--text);line-height:1.7;font-size:17px;font-variant-numeric:tabular-nums}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--voice);font-weight:500;line-height:1.1;letter-spacing:-.01em}
.skip{position:absolute;left:-9999px;background:var(--accent);color:var(--on-accent);padding:10px 16px;border-radius:8px;z-index:200}.skip:focus{left:12px;top:12px}
.cta{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:16px;background:var(--accent);color:var(--on-accent);border:0;border-radius:999px;padding:14px 26px;cursor:pointer;transition:transform .15s,filter .2s;box-shadow:0 12px 30px -12px var(--accent)}
.cta:hover{filter:brightness(1.05)}.cta:active{transform:scale(.97)}.cta-sm{padding:11px 21px;font-size:14.5px}
.hdr{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--border)}
.nav{display:flex;align-items:center;gap:18px;height:72px}
.brand{display:flex;align-items:center;gap:11px;flex:0 0 auto}.brand svg{width:36px;height:36px;border-radius:11px}.brand .wm{font-family:var(--voice);font-weight:600;font-size:21px}
.nav-links{display:flex;gap:30px;flex:1;justify-content:center}.nav-links a{font-size:14.5px;font-weight:500;color:var(--text2);position:relative;padding:4px 0;transition:color .2s}.nav-links a:hover{color:var(--text)}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--accent);border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .26s cubic-bezier(.2,.8,.2,1)}.nav-links a:hover::after{transform:scaleX(1)}
.nav-actions{display:flex;align-items:center;gap:18px;flex:0 0 auto}.nav-login{font-size:14.5px;font-weight:600;color:var(--text2);transition:color .2s}.nav-login:hover{color:var(--text)}
/* prose */
.doc{max-width:760px;margin:0 auto;padding:clamp(48px,8vh,90px) var(--gutter)}
.doc .crumb{font-size:13px;color:var(--text3);margin-bottom:18px}.doc .crumb a{color:var(--accent-text)}
.doc h1{font-size:clamp(32px,5vw,52px);font-weight:500;margin-bottom:10px}
.doc .meta{color:var(--text3);font-size:14px;margin-bottom:34px}
.doc h2{font-size:clamp(24px,3vw,32px);margin:42px 0 14px}
.doc h3{font-family:var(--ui);font-weight:600;font-size:20px;margin:28px 0 10px}
.doc p{margin:0 0 18px;color:var(--text);max-width:68ch}
.doc ul,.doc ol{margin:0 0 18px;padding-left:24px;color:var(--text)}.doc li{margin:7px 0}
.doc a{color:var(--accent-text);text-decoration:underline;text-underline-offset:2px}
.doc strong{font-weight:600}
.doc blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);margin:0 0 20px;padding:14px 20px;border-radius:0 12px 12px 0;color:var(--text2);font-style:italic}
.doc code{font-family:ui-monospace,monospace;font-size:.9em;background:var(--raised);padding:2px 6px;border-radius:6px}
.doc pre{background:var(--raised);border:1px solid var(--border);border-radius:12px;padding:18px;overflow-x:auto;margin:0 0 20px}.doc pre code{background:none;padding:0}
.doc .table-scroll{overflow-x:auto;margin:0 0 22px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.doc table{width:100%;border-collapse:collapse;font-size:14.5px;line-height:1.5}
.doc th,.doc td{padding:11px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border)}
.doc th{font-family:var(--ui);font-weight:600;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text2);background:var(--raised);white-space:nowrap}
.doc tbody tr:last-child td{border-bottom:0}
.doc td:first-child{font-weight:600}
.doc .cta{margin-top:14px}
.doc-cta{margin:46px 0 0;padding:30px;background:var(--surface);border:1px solid var(--border-strong);border-radius:20px;text-align:center}
.doc-cta p{margin:0 0 16px;font-family:var(--voice);font-size:22px}
/* blog index */
.blog-hero{padding:clamp(56px,9vh,110px) 0 20px;text-align:center}
.blog-hero h1{font-size:clamp(36px,6vw,64px)}.blog-hero p{margin:18px auto 0;max-width:46ch;color:var(--text2);font-size:18px}
.posts{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding:40px 0 90px}
.post-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:28px;transition:transform .3s,border-color .3s}
.post-card:hover{transform:translateY(-4px);border-color:var(--border-strong)}
.post-card .tag{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text)}
.post-card h2{font-size:23px;font-family:var(--voice);margin:12px 0 10px;line-height:1.18}
.post-card p{color:var(--text2);font-size:15px}
.post-card .more{display:inline-block;margin-top:14px;color:var(--accent-text);font-weight:600;font-size:14.5px}
/* footer */
footer{border-top:1px solid var(--border);padding:60px 0 40px;background:var(--raised)}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px}
.foot-brand .wm{font-family:var(--voice);font-weight:600;font-size:22px;display:flex;align-items:center;gap:10px}.foot-brand .wm svg{width:32px;height:32px;border-radius:9px}
.foot-brand .tag{margin-top:12px;color:var(--text2);font-size:14.5px;max-width:30ch}.foot-brand .sig{margin-top:16px;font-family:var(--voice);font-style:italic;color:var(--accent-text);font-size:16px}
.foot-col h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text3);margin-bottom:14px;font-weight:600}
.foot-col a{display:block;color:var(--text2);font-size:14.5px;padding:5px 0;transition:color .2s}.foot-col a:hover{color:var(--text)}
.foot-bottom{margin-top:46px;padding-top:22px;border-top:1px solid var(--border);color:var(--text3);font-size:13px}
@media(max-width:860px){.nav-links,.nav-actions{display:none}.posts{grid-template-columns:1fr}.foot-grid{grid-template-columns:1fr 1fr}.foot-brand{grid-column:1/-1}}