:root{--ink:#1c1916;--muted:#5c564e;--paper:#f6f1e8;--card:#fffdf8;--line:#d9d0c3;--accent:#2f4a3c;--gold:#d97706}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;background:var(--paper);color:var(--ink);line-height:1.6;font-size:18px}
a{color:var(--accent);text-underline-offset:2px}
a:hover{color:var(--gold);text-decoration-thickness:1.5px;text-underline-offset:2px}
a{cursor:pointer;transition:color .12s ease}
p{margin:0 0 1.15em}

/* ---- shell: content left, link rail right ---- */
.shell{max-width:1040px;margin:0 auto;padding:0 28px 90px;display:grid;grid-template-columns:1fr 210px;gap:56px;align-items:start}
.main{min-width:0;max-width:660px}

header.site{display:flex;align-items:center;gap:12px;padding:46px 0 6px}
header.site .mark{flex:none;overflow:visible}
header.site .name{font-weight:600;font-size:1.05rem}
header.site .name a{text-decoration:none;color:var(--ink)}
.needle{transform-origin:50px 50px;animation:spin 2.2s cubic-bezier(.215,.61,.355,1) forwards}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(900deg)}}
@media(prefers-reduced-motion:reduce){.needle{animation:none;transform:rotate(180deg)}}

/* ---- right-hand link rail ---- */
.rail{position:sticky;top:46px;padding-top:52px;font-size:.95rem;line-height:1.95}
.rail a{display:block;text-decoration:none;color:var(--muted)}
.rail a:hover,.rail a.on{color:var(--ink)}
.rail a{cursor:pointer;transition:color .12s ease,transform .12s ease}
.rail a:hover{color:var(--gold);transform:translateX(3px);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.rail a.addr{font-size:.82rem;letter-spacing:-.01em}
.rail .grp{margin-bottom:20px}
.rail .lbl{font-size:.7rem;letter-spacing:.11em;text-transform:uppercase;color:var(--line);margin-bottom:2px}

.lede{font-size:1.2rem}
h1{font-size:2.1rem;line-height:1.12;letter-spacing:-.02em;margin:26px 0 6px}
h2{font-size:1rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:50px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.muted{color:var(--muted)}
.sub{color:var(--muted);margin:0 0 34px}

/* ---- card list (blog / projects index) ---- */
.cards{list-style:none;padding:0;margin:0}
.cards li{display:grid;grid-template-columns:104px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line);align-items:start}
.cards li:last-child{border-bottom:0}
.thumb{width:104px;height:78px;border:1px solid var(--line);background:var(--card);border-radius:3px;display:flex;align-items:center;justify-content:center}
.thumb{overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover;display:block;border-radius:2px}
.thumb svg{opacity:.22;width:38px;height:38px}
.cards .t{font-weight:600;font-size:1.06rem;line-height:1.3;margin:0 0 4px}
.cards .t a{text-decoration:none}
.cards .meta{font-size:.8rem;color:var(--muted);letter-spacing:.02em;margin:0 0 5px}
.cards .d{margin:0;color:var(--muted);font-size:.97rem;line-height:1.45}
.tags{margin-top:6px;font-size:.76rem;color:var(--muted);letter-spacing:.03em}
.tags span{margin-right:9px}
.status{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-left:8px}

footer{margin-top:60px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}

@media(max-width:820px){
  .shell{grid-template-columns:1fr;gap:0}
  .rail{position:static;padding-top:34px;border-top:1px solid var(--line);margin-top:44px;display:flex;flex-wrap:wrap;gap:0 18px}
  .rail .grp{margin-bottom:0}
  .rail .lbl{display:none}
  .cards li{grid-template-columns:1fr}
  .thumb{display:none}
}

/* plain bullet list — now page */
ul.plain { margin: 0 0 1.15em; padding-left: 1.25em; }
ul.plain li { margin: .55em 0; }

/* homepage hero — ink-and-wash banner, matches the LinkedIn header */
.hero { display: block; width: 100%; height: auto; margin: 20px 0 34px; }

/* Key ideas block — standard end-of-post summary card */
.kibox{background:var(--card);border:1px solid var(--line);border-radius:4px;padding:24px 28px 20px;margin:52px 0 34px}
.kibox .kilbl{font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 6px}
.kibox .kisum{font-size:.98rem;color:var(--ink);margin:0 0 14px;line-height:1.55;padding-bottom:14px;border-bottom:1px solid var(--line)}
ol.kilist{list-style:none;margin:0;padding:0;counter-reset:ki}
ol.kilist li{display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:baseline;padding:11px 0;border-bottom:none;counter-increment:ki;font-size:.95rem;line-height:1.5}
ol.kilist li+li{border-top:1px solid var(--line)}
ol.kilist li:before{content:counter(ki);color:var(--accent);font-weight:600;font-size:.78rem;font-variant-numeric:tabular-nums}
@media(max-width:600px){.kibox{padding:20px 18px 16px}ol.kilist li{grid-template-columns:20px 1fr;gap:10px}}

/* In-article question list */
ul.qlist{list-style:none;margin:0 0 1.2rem;padding:0}
ul.qlist li{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:baseline;padding:7px 0;border-bottom:none;position:relative}
ul.qlist li:before{content:"\00b7";color:var(--accent);font-weight:700}
