
/* writing/article.css — shared styling for the Writing section */
:root{
  --bg:#080a0f;--bg-2:#0b0e15;--surface:#10141d;--surface-2:#141925;
  --ink:#eef1f6;--muted:#9aa4b4;--faint:#5f6a7d;
  --line:rgba(255,255,255,.08);--line-strong:rgba(255,255,255,.14);
  --gold:#e3c08a;--gold-deep:#c79b56;--gold-soft:rgba(227,192,138,.12);--signal:#43d39e;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:hidden;width:100%}
body{background:var(--bg);color:var(--ink);font-family:"IBM Plex Sans",sans-serif;font-weight:400;
  line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
.bg-fx{position:fixed;inset:0;z-index:-2;pointer-events:none;overflow:hidden}
.bg-fx::before{content:"";position:absolute;top:-30vh;left:50%;transform:translateX(-50%);width:120vw;height:80vh;
  background:radial-gradient(50% 50% at 50% 50%,rgba(227,192,138,.08),transparent 70%)}
.grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.04;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.wrap{max-width:760px;margin:0 auto;padding:0 clamp(20px,4.5vw,40px);width:100%}
.wrap.wide{max-width:1100px}
.mono{font-family:"IBM Plex Mono",monospace}
a{color:var(--gold);text-decoration:none}
/* nav */
header.nav{position:fixed;top:0;left:0;right:0;z-index:50;border-bottom:1px solid transparent;
  transition:background .35s var(--ease),border-color .35s var(--ease)}
header.nav.scrolled{background:rgba(8,10,15,.72);backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid var(--line)}
.nav-inner{max-width:1100px;margin:0 auto;padding:0 clamp(20px,4.5vw,40px);display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;align-items:center;gap:12px;color:var(--ink)}
.monogram{width:40px;height:40px;border:1px solid var(--gold);border-radius:10px;display:grid;place-items:center;
  font-family:"Fraunces",serif;font-weight:600;color:var(--gold);font-size:25px;line-height:1;letter-spacing:-.02em}
.brand b{font-weight:500;font-size:15px;display:block;line-height:1.15;color:var(--ink)}
.brand .btag{display:block;font-size:11px;color:var(--muted);letter-spacing:.04em}
.nav-links{display:flex;align-items:center;gap:26px}
.nav-links a{color:var(--muted);font-size:14px;transition:color .25s;position:relative}
.nav-links a:not(.cta)::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:1px;background:var(--gold);transition:width .3s var(--ease)}
.nav-links a:not(.cta):hover::after{width:100%}
.nav-links a:hover{color:var(--ink)}
.nav-links a.cta{color:var(--ink);border:1px solid var(--line-strong);padding:9px 16px;border-radius:8px;transition:border-color .25s,background .25s}
.nav-links a.cta:hover{border-color:var(--gold);background:var(--gold-soft)}
.menu-btn{display:none;background:none;border:0;color:var(--ink);cursor:pointer;font-size:22px;line-height:1}
@media(max-width:900px){
  .nav-links{position:fixed;inset:72px 0 auto;flex-direction:column;align-items:flex-start;gap:0;
    background:rgba(8,10,15,.97);backdrop-filter:blur(16px);padding:8px clamp(20px,4.5vw,40px) 26px;
    border-bottom:1px solid var(--line);transform:translateY(-120%);transition:transform .4s var(--ease)}
  .nav-links.open{transform:none}
  .nav-links a{padding:15px 0;width:100%;border-bottom:1px solid var(--line);font-size:16px}
  .nav-links a:last-child{border-bottom:0}
  .nav-links a:not(.cta)::after{display:none}
  .nav-links a.cta{margin-top:14px;display:inline-block;width:auto}
  .menu-btn{display:block}
}
/* article */
main{padding-top:128px;padding-bottom:80px}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.backlink{display:inline-flex;align-items:center;gap:8px;font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--muted);margin-bottom:30px;transition:color .25s}
.backlink:hover{color:var(--gold)}
.backlink svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.6}
article h1{font-family:"Fraunces",serif;font-weight:500;font-size:clamp(34px,5.4vw,56px);line-height:1.04;letter-spacing:-.015em;margin:18px 0 0}
.dek{font-size:clamp(18px,2.3vw,22px);font-weight:300;color:#cdd5e1;margin-top:22px;line-height:1.5}
.meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:26px;padding-bottom:30px;border-bottom:1px solid var(--line);
  font-family:"IBM Plex Mono",monospace;font-size:12.5px;color:var(--muted)}
.meta .dot{color:var(--faint)}
.body{margin-top:38px;font-size:17px;color:#d7dde6}
.body>p{margin:0 0 22px}
.body h2{font-family:"Fraunces",serif;font-weight:500;font-size:clamp(24px,3.4vw,32px);color:var(--ink);letter-spacing:-.01em;margin:46px 0 16px;line-height:1.15}
.body h3{font-family:"IBM Plex Sans",sans-serif;font-weight:600;font-size:19px;color:var(--ink);margin:32px 0 12px}
.body ul,.body ol{margin:0 0 22px;padding-left:22px}
.body li{margin:0 0 9px}
.body li::marker{color:var(--gold)}
.body strong{color:var(--ink);font-weight:600}
.body a{border-bottom:1px solid rgba(227,192,138,.35)}
.body blockquote{margin:30px 0;padding:18px 26px;border-left:2px solid var(--gold);background:var(--surface);border-radius:0 10px 10px 0;
  font-family:"Fraunces",serif;font-style:italic;font-size:20px;color:#e7ecf3;line-height:1.5}
.body code{font-family:"IBM Plex Mono",monospace;font-size:14px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:5px;padding:2px 7px;color:var(--gold)}
.body hr{border:0;border-top:1px solid var(--line);margin:40px 0}
.body .tablewrap{overflow-x:auto;margin:28px 0}
.body table{width:100%;border-collapse:collapse;font-size:14.5px;min-width:520px}
.body table th,.body table td{text-align:left;padding:12px 13px;border-bottom:1px solid var(--line);vertical-align:top}
.body table th{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-weight:500}
.body table td{color:var(--muted)}
.body table td:first-child{color:var(--ink);font-weight:500}
.body table code{font-size:12.5px}
.body figure.diagram{margin:32px 0;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--surface),var(--bg-2));padding:22px 22px 16px}
.body figure.diagram svg{width:100%;height:auto;display:block}
.body figure.diagram figcaption{margin-top:14px;font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--muted);text-align:center;letter-spacing:.04em}
.dgm-box{fill:#141925;stroke:rgba(227,192,138,.45);stroke-width:1.2}
.dgm-box.alt{fill:#10141d;stroke:rgba(255,255,255,.14)}
.dgm-box.bad{fill:rgba(229,115,107,.08);stroke:rgba(229,115,107,.5)}
.dgm-box.good{fill:rgba(67,211,158,.08);stroke:rgba(67,211,158,.5)}
.dgm-t{fill:#eef1f6;font-family:"IBM Plex Sans",sans-serif;font-weight:500}
.dgm-l{fill:#9aa4b4;font-family:"IBM Plex Mono",monospace}
.dgm-g{fill:#e3c08a;font-family:"IBM Plex Mono",monospace}
.dgm-line{stroke:rgba(227,192,138,.5);stroke-width:1.4;fill:none}
.dgm-dash{stroke:rgba(67,211,158,.55);stroke-width:1.3;fill:none;stroke-dasharray:5 4}
.callout{background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--line);border-left:2px solid var(--gold);
  border-radius:0 12px 12px 0;padding:22px 26px;margin:30px 0}
.callout .lbl{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);display:block;margin-bottom:8px}
.callout p{margin:0;font-size:16px;color:#d7dde6}
.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:30px}
.tag{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:5px 9px;background:rgba(255,255,255,.02)}
/* author + cta */
.author{display:flex;gap:18px;align-items:center;margin-top:54px;padding-top:34px;border-top:1px solid var(--line)}
.author img{width:64px;height:64px;border-radius:12px;object-fit:cover;object-position:50% 18%;border:1px solid var(--gold-soft);flex-shrink:0}
.author .n{font-family:"Fraunces",serif;font-size:19px;color:var(--ink)}
.author .r{font-size:14px;color:var(--muted);margin-top:2px}
.author .r a{border-bottom:1px solid rgba(227,192,138,.35)}
.endcta{margin-top:40px;background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--line);border-radius:16px;padding:34px;text-align:center}
.endcta h3{font-family:"Fraunces",serif;font-weight:500;font-size:26px;color:var(--ink)}
.endcta p{color:var(--muted);margin-top:8px;font-size:15px}
.btn{display:inline-flex;align-items:center;gap:9px;font-size:14.5px;font-weight:500;padding:13px 22px;border-radius:9px;margin-top:18px;
  background:var(--gold);color:#11140d;transition:transform .25s,box-shadow .3s}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px -12px var(--gold-deep)}
/* index listing */
.lead{padding-top:128px}
.page-title{font-family:"Fraunces",serif;font-weight:500;font-size:clamp(40px,7vw,72px);line-height:1;letter-spacing:-.02em;margin:18px 0 0}
.page-title em{font-style:italic;color:var(--gold)}
.lead .dek{max-width:60ch}
.post-list{margin-top:56px;display:grid;gap:0;border-top:1px solid var(--line)}
.post{display:grid;grid-template-columns:88px 1fr;gap:26px;padding:30px 0;border-bottom:1px solid var(--line);transition:background .3s;align-items:start}
.post:hover{background:rgba(255,255,255,.015)}
.post .num{font-family:"Fraunces",serif;font-size:30px;color:var(--faint)}
.post:hover .num{color:var(--gold)}
.post .pmeta{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:10px}
.post h2{font-family:"Fraunces",serif;font-weight:500;font-size:clamp(22px,2.8vw,27px);line-height:1.2;letter-spacing:-.01em;color:var(--ink);transition:color .25s}
.post a:hover h2{color:var(--gold)}
.post p{color:var(--muted);font-size:15.5px;margin-top:9px;max-width:62ch}
.post .ptags{margin-top:14px;display:flex;flex-wrap:wrap;gap:7px}
@media(max-width:560px){.post{grid-template-columns:1fr;gap:6px}.post .num{font-size:22px}}
footer{border-top:1px solid var(--line);padding:28px 0;margin-top:60px}
.foot{max-width:1100px;margin:0 auto;padding:0 clamp(20px,4.5vw,40px);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;
  color:var(--faint);font-family:"IBM Plex Mono",monospace;font-size:12px}
.foot a{color:var(--faint)}.foot a:hover{color:var(--gold)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
