/* ══════════════════════════════════════════════════
   zdsearcy.com — shared system
   ══════════════════════════════════════════════════ */

:root{
  --paper:#E6E3DA;
  --paper-2:#DEDACE;
  --ink:#17160F;
  --graphite:#6E6A5F;
  --line:#CBC6B8;
  --mark:#DB4B24;
  --slate:#222A26;
  --slate-line:#3C453F;
  --body:#34322A;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:80px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  background:var(--paper);
  color:var(--ink);
  font-family:"Newsreader",Georgia,serif;
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

a{color:inherit}

.mono{
  font-family:"Space Mono",monospace;
  text-transform:uppercase;
  letter-spacing:0.18em;
  font-size:0.7rem;
  color:var(--graphite);
}

.wrap{max-width:1080px;margin:0 auto;padding:0 32px}

/* ── corner brackets ─────────────────────────── */
.frame{position:fixed;inset:14px;pointer-events:none;z-index:60}
.frame span{position:absolute;width:13px;height:13px;border:0 solid var(--mark)}
.frame .tl{top:0;left:0;border-top-width:2px;border-left-width:2px}
.frame .tr{top:0;right:0;border-top-width:2px;border-right-width:2px}
.frame .bl{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px}
.frame .br{bottom:0;right:0;border-bottom-width:2px;border-right-width:2px}
@media (max-width:640px){.frame{inset:8px}}

/* ── topbar ──────────────────────────────────── */
.topbar{
  position:relative;z-index:20;display:flex;justify-content:space-between;align-items:center;
  padding:26px 32px;max-width:1080px;margin:0 auto;border-bottom:1px solid var(--line);
  flex-wrap:wrap;gap:14px;
}
.brand{
  font-family:"Archivo",sans-serif;font-weight:800;letter-spacing:0.04em;
  font-size:1rem;text-transform:uppercase;text-decoration:none;
}
.brand b{color:var(--mark)}
.nav{display:flex;gap:26px;flex-wrap:wrap}
.nav a{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.14em;
  font-size:0.66rem;color:var(--graphite);text-decoration:none;
  border-bottom:1px solid transparent;padding-bottom:2px;transition:color .2s,border-color .2s;
}
.nav a:hover,.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--mark)}

/* ── sections ────────────────────────────────── */
.section{position:relative;padding:88px 0;border-bottom:1px solid var(--line)}
.section--hero{padding:72px 0 88px}
.section--dark{background:var(--slate);color:var(--paper);border-bottom:none}
.section--dark .mono{color:#9b988c}
.section--tight{padding:64px 0}

.eyebrow{display:flex;gap:18px;align-items:baseline;margin-bottom:32px;flex-wrap:wrap}
.eyebrow .num{color:var(--mark)}

h1{
  font-family:"Archivo",sans-serif;font-weight:900;
  font-size:clamp(2.4rem,6.2vw,5.2rem);
  line-height:0.98;letter-spacing:-0.022em;max-width:17ch;
}
h1 em{font-style:normal;color:var(--mark)}
.lede{font-size:clamp(1.1rem,1.8vw,1.42rem);max-width:50ch;margin-top:28px;color:var(--body)}

h2{
  font-family:"Archivo",sans-serif;font-weight:800;
  font-size:clamp(1.6rem,3.2vw,2.5rem);
  line-height:1.06;letter-spacing:-0.012em;max-width:22ch;
}
h2 em{font-style:normal;color:var(--mark)}
h3{font-family:"Archivo",sans-serif;font-weight:700;font-size:1.2rem;line-height:1.25}

p.body{max-width:56ch;margin-top:20px;font-size:1.08rem;color:var(--body)}
p.body + p.body{margin-top:16px}

/* ── buttons ─────────────────────────────────── */
.cta{
  display:inline-flex;align-items:center;gap:12px;
  font-family:"Archivo",sans-serif;font-weight:700;font-size:0.9rem;
  text-transform:uppercase;letter-spacing:0.06em;
  background:var(--ink);color:var(--paper);
  padding:15px 25px;border:none;cursor:pointer;text-decoration:none;
  transition:background .2s ease,transform .2s ease;
}
.cta:hover{background:var(--mark);transform:translateY(-2px)}
.cta .arr{transition:transform .2s ease}
.cta:hover .arr{transform:translateX(4px)}
.cta--ghost{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.cta--ghost:hover{background:var(--ink);color:var(--paper)}
.hero-meta{margin-top:36px;display:flex;flex-wrap:wrap;gap:18px;align-items:center}

/* ── three-up steps ──────────────────────────── */
.steps{display:grid;grid-template-columns:repeat(3,1fr);margin-top:50px;border-top:1px solid var(--line)}
.step{padding:28px 26px 32px;border-right:1px solid var(--line)}
.step:last-child{border-right:none}
.step .num{font-family:"Space Mono",monospace;color:var(--mark);font-size:0.78rem;letter-spacing:0.1em}
.step h3{margin:13px 0 9px}
.step p{font-size:0.98rem;color:var(--body)}
@media (max-width:760px){
  .steps{grid-template-columns:1fr}
  .step{border-right:none;border-bottom:1px solid var(--line)}
  .step:last-child{border-bottom:none}
}

/* ── work entries ────────────────────────────── */
.entries{margin-top:44px;border-top:1px solid var(--line)}
.entry{
  display:grid;grid-template-columns:78px 1fr;gap:0 24px;
  padding:26px 0;border-bottom:1px solid var(--line);align-items:start;
}
.entry .idx{font-family:"Space Mono",monospace;color:var(--mark);font-size:0.76rem;letter-spacing:0.1em;padding-top:6px}
.entry .head{display:flex;justify-content:space-between;align-items:baseline;gap:18px;flex-wrap:wrap}
.entry h3{font-size:1.3rem;font-weight:800;letter-spacing:-0.008em}
.entry .org{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.13em;
  font-size:0.6rem;color:var(--graphite);white-space:nowrap;
}
.entry p{margin-top:9px;font-size:1.02rem;color:var(--body);max-width:64ch}
.entry .tags{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.tag{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.1em;
  font-size:0.55rem;color:var(--graphite);border:1px solid var(--line);padding:4px 9px;
}
@media (max-width:620px){.entry{grid-template-columns:1fr;gap:6px}}

/* ── framework cards ─────────────────────────── */
.fw-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:44px;border-top:1px solid var(--line)}
.fw-card{
  padding:28px 30px 30px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);
  text-decoration:none;display:block;transition:background .2s ease;
}
.fw-card:nth-child(2n){border-right:none}
.fw-card:hover{background:var(--paper-2)}
.fw-card .kicker{font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.13em;font-size:0.58rem;color:var(--mark)}
.fw-card h3{margin:11px 0 9px;font-size:1.22rem;font-weight:800;letter-spacing:-0.008em}
.fw-card p{font-size:0.98rem;color:var(--body);max-width:46ch}
.fw-card .go{
  display:inline-block;margin-top:16px;font-family:"Space Mono",monospace;
  text-transform:uppercase;letter-spacing:0.12em;font-size:0.58rem;color:var(--ink);
}
.fw-card:hover .go{color:var(--mark)}
@media (max-width:760px){
  .fw-grid{grid-template-columns:1fr}
  .fw-card{border-right:none}
}

/* ── ladder / chain ──────────────────────────── */
.ladder{
  font-family:"Space Mono",monospace;font-size:0.7rem;letter-spacing:0.09em;
  text-transform:uppercase;color:var(--graphite);line-height:2.3;margin-top:26px;
}
.ladder b{color:var(--mark);font-weight:700}
.ladder .hit{color:var(--ink);font-weight:700;border-bottom:2px solid var(--mark);padding-bottom:2px}

/* ── spec rows w/ dot leaders ────────────────── */
.specs{margin-top:38px;border-top:1px solid var(--line)}
.spec-row{
  display:flex;align-items:baseline;font-family:"Space Mono",monospace;font-size:0.68rem;
  letter-spacing:0.05em;text-transform:uppercase;padding:13px 0;border-bottom:1px solid var(--line);
}
.spec-row .k{color:var(--ink);font-weight:700;white-space:nowrap}
.spec-row .dots{flex:1;border-bottom:1px dotted var(--line);margin:0 12px;position:relative;top:-3px}
.spec-row .v{color:var(--graphite);text-align:right}
@media (max-width:620px){
  .spec-row{flex-wrap:wrap;gap:4px}
  .spec-row .dots{display:none}
  .spec-row .v{text-align:left;width:100%}
}

/* ── proof stats ─────────────────────────────── */
.proof{display:flex;flex-wrap:wrap;margin-top:34px;border-top:1px solid var(--line)}
.proof > div{padding:20px 30px 20px 0;border-right:1px solid var(--line);margin-right:30px}
.proof > div:last-child{border-right:none;margin-right:0}
.proof .fig{font-family:"Archivo",sans-serif;font-weight:900;font-size:1.9rem;letter-spacing:-0.02em}
.proof .lab{font-family:"Space Mono",monospace;font-size:0.58rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--graphite);margin-top:6px}

/* ── callout ─────────────────────────────────── */
.callout{border-left:3px solid var(--mark);padding:4px 0 4px 22px;margin-top:30px;max-width:58ch}
.callout p{font-size:1.05rem;color:var(--body)}
.callout .lab{display:block;margin-bottom:7px}

/* ── prose (framework detail pages) ──────────── */
.prose{max-width:62ch}
.prose h2{margin:52px 0 0;max-width:24ch}
.prose h3{margin:34px 0 0;font-size:1.16rem}
.prose p{margin-top:16px;font-size:1.08rem;color:var(--body)}
.prose ul,.prose ol{margin:16px 0 0 22px}
.prose li{margin-top:9px;font-size:1.05rem;color:var(--body)}
.prose li::marker{color:var(--mark)}
.prose strong{font-weight:600;color:var(--ink)}
.prose em{font-style:italic}

table{border-collapse:collapse;width:100%;margin-top:26px;font-size:0.95rem}
th{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.12em;
  font-size:0.58rem;color:var(--graphite);text-align:left;font-weight:400;
  padding:0 14px 10px 0;border-bottom:1px solid var(--line);
}
td{padding:13px 14px 13px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--body)}
td:last-child,th:last-child{padding-right:0}
td strong{color:var(--ink)}

/* ── footer ──────────────────────────────────── */
footer{background:var(--slate);color:#8d8a7e;padding:44px 0 52px}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:22px;align-items:flex-start}
footer .mono{color:#8d8a7e;display:block;line-height:2}
footer a{color:var(--paper);text-decoration:none;border-bottom:1px solid var(--slate-line)}
footer a:hover{color:var(--mark);border-bottom-color:var(--mark)}
footer .fnav{display:flex;flex-direction:column;gap:9px}
footer .fnav a{border:none;font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.14em;font-size:0.62rem;color:#8d8a7e}
footer .fnav a:hover{color:var(--mark)}


/* ── source quote ────────────────────────────── */
.quote{margin:38px 0 6px;padding-left:26px;border-left:2px solid var(--mark);max-width:56ch}
.quote .mark{
  font-family:"Archivo",sans-serif;font-weight:900;font-size:1.6rem;color:var(--mark);
  line-height:1;display:block;margin-bottom:8px;
}
.quote p{
  font-family:"Newsreader",Georgia,serif;font-style:italic;
  font-size:1.22rem;line-height:1.42;color:var(--ink);
}
.quote cite{
  display:block;margin-top:14px;font-style:normal;
  font-family:"Space Mono",monospace;text-transform:uppercase;
  letter-spacing:0.13em;font-size:0.6rem;color:var(--graphite);line-height:1.9;
}
.quote cite b{color:var(--ink);font-weight:700}
.quote .gloss{
  margin-top:16px;font-family:"Newsreader",serif;font-style:normal;
  font-size:1rem;line-height:1.5;color:var(--body);
}
.section--dark .quote p{color:var(--paper)}
.section--dark .quote cite{color:#9b988c}
.section--dark .quote cite b{color:var(--paper)}
.section--dark .quote .gloss{color:#c9c5b8}

/* ── reveal ──────────────────────────────────── */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ── back link ───────────────────────────────── */
.backlink{
  display:inline-flex;align-items:center;gap:9px;margin-bottom:26px;
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.14em;
  font-size:0.62rem;color:var(--graphite);text-decoration:none;
}
.backlink:hover{color:var(--mark)}

:focus-visible{outline:2px solid var(--mark);outline-offset:3px}

/* ── portfolio gallery ───────────────────────── */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-top:34px}
.filters button{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.12em;
  font-size:0.6rem;color:var(--graphite);background:transparent;
  border:1px solid var(--line);padding:9px 15px;cursor:pointer;transition:all .18s ease;
}
.filters button:hover{color:var(--ink);border-color:var(--graphite)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.gallery{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));
  gap:22px;margin-top:34px;
}
.tile{
  position:relative;cursor:pointer;background:var(--paper-2);border:none;padding:0;
  text-align:left;display:block;overflow:hidden;transition:transform .22s ease;
}
.tile:hover{transform:translateY(-3px)}
.tile .thumb{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--slate)}
.tile .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tile:hover .thumb img{opacity:.86}
.tile .play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:54px;height:54px;border-radius:50%;background:var(--mark);
  display:flex;align-items:center;justify-content:center;
}
.tile .play::after{content:"";border-left:16px solid var(--paper);border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:4px}
.tile .meta{padding:15px 16px 18px}
.tile .kick{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.13em;
  font-size:0.55rem;color:var(--mark);display:block;
}
.tile h3{margin-top:7px;font-size:1.02rem;font-weight:800;letter-spacing:-0.005em;line-height:1.2}
.tile .brand{
  display:block;margin-top:6px;font-family:"Space Mono",monospace;
  text-transform:uppercase;letter-spacing:0.12em;font-size:0.55rem;color:var(--graphite);
}

/* ── spotlight ───────────────────────────────── */
.spot{
  position:fixed;inset:0;z-index:200;background:rgba(23,22,15,.93);
  display:none;overflow-y:auto;padding:28px 18px;
}
.spot[open],.spot.on{display:block}
.spot-inner{
  max-width:1000px;margin:0 auto;background:var(--paper);position:relative;
}
.spot-close{
  position:sticky;top:0;margin-left:auto;display:block;
  background:var(--ink);color:var(--paper);border:none;cursor:pointer;
  font-family:"Space Mono",monospace;font-size:0.7rem;letter-spacing:0.12em;
  padding:11px 16px;z-index:5;
}
.spot-media{width:100%;aspect-ratio:16/9;background:var(--slate)}
.spot-media iframe,.spot-media img{width:100%;height:100%;border:0;display:block;object-fit:cover}
.spot-body{padding:30px 34px 38px}
.spot-body .kick{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.14em;
  font-size:0.6rem;color:var(--mark);
}
.spot-body h2{margin-top:10px;max-width:24ch}
.spot-fields{margin-top:26px;border-top:1px solid var(--line)}
.spot-field{padding:16px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:120px 1fr;gap:0 24px}
.spot-field dt{
  font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:0.12em;
  font-size:0.58rem;color:var(--graphite);padding-top:3px;
}
.spot-field dd{font-size:1rem;line-height:1.5;color:var(--body)}
.spot-field.conviction dd{
  font-family:"Newsreader",serif;font-style:italic;font-size:1.12rem;color:var(--ink);
}
@media (max-width:620px){
  .spot-field{grid-template-columns:1fr;gap:5px}
  .spot-body{padding:24px 20px 30px}
}
.spot-actions{margin-top:26px;display:flex;gap:14px;flex-wrap:wrap}
body.locked{overflow:hidden}
