/* The Torch Lake Observer — Broadsheet design system (shared by site pages).
   Spec + rationale: DESIGN.md. Story pages inline these tokens to stay self-contained. */
:root{
  --paper:#f4efe4; --card:#fbf8f1; --tint:#ebe4d5;
  --ink:#16130f; --ink2:#3b352c; --muted:#5f574a; --hair:#cfc6b4;
  --red:#a3231a; --red-soft:#eaa69e;
  --display:"Libre Caslon Display",Georgia,"Times New Roman",serif;
  --text:"Libre Caslon Text",Georgia,"Times New Roman",serif;
  --sans:"Libre Franklin","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --maxw:1180px; --textw:700px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font:19px/1.6 var(--text);-webkit-text-size-adjust:100%}
img{display:block;max-width:100%;height:auto}
a{color:var(--ink)}
a:hover{color:var(--red)}
:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.narrow{max-width:var(--textw);margin:0 auto;padding:0 20px}
.sans{font-family:var(--sans)}
.mono{font-family:var(--mono)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;background:var(--ink);color:var(--paper);padding:8px 12px;z-index:100}

/* kicker / labels */
.kick{font:800 13.5px/1.3 var(--sans);text-transform:uppercase;letter-spacing:.1em;color:var(--red)}
.kick.ink{color:var(--ink)}
.kick.muted{color:var(--muted)}
.kick.sm{font-size:13.5px}

/* ---------- full masthead (front page) ---------- */
.mast-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font:600 13px/1.3 var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:12px 0 8px;border-bottom:1px solid var(--ink)}
.nameplate{text-align:center;padding:18px 0 12px}
.nameplate a{font-family:var(--display);font-size:clamp(38px,8.2vw,92px);line-height:1;text-decoration:none;color:var(--ink);letter-spacing:-.005em}
.nameplate .motto{font:italic 17px/1.4 var(--text);color:var(--muted);margin-top:8px}
.secbar{display:flex;justify-content:center;gap:4px 26px;flex-wrap:wrap;font:700 15.5px/1 var(--sans);letter-spacing:.01em;border-top:1px solid var(--ink);border-bottom:5px double var(--ink)}
.secbar a{text-decoration:none;padding:16px 2px;display:inline-block;min-height:48px}
.secbar a.hot{color:var(--red)}

/* ---------- compact masthead (inner pages) ---------- */
.mast-compact{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:3px double var(--ink)}
.mast-compact .np{font:400 30px/1 var(--display);text-decoration:none;display:inline-block;padding:9px 0}
.mast-compact nav{display:flex;gap:20px;font:700 15.5px/1 var(--sans);letter-spacing:.01em}
.mast-compact nav a{text-decoration:none;padding:14px 0;display:inline-block}

/* ---------- hearing alert ---------- */
.alert{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;padding:14px 18px;margin:20px 0 0;border:2px solid var(--ink);background:var(--card);font:600 17.5px/1.45 var(--sans)}
.alert .lbl{font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:14px;color:var(--red)}
.alert .cd{margin-left:auto;font-weight:800}
.alert a{color:var(--red);font-weight:800}

/* ---------- front-page lead + rail ---------- */
.front{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:0 36px;padding:24px 0 30px}
.lead h1{font:400 clamp(34px,5vw,58px)/1.03 var(--display);letter-spacing:-.015em;margin:12px 0 14px}
.lead h1 a{text-decoration:none}
.deck{font-size:21px;line-height:1.45;color:var(--ink2);margin:0 0 12px}
.byline{font:500 15.5px/1.45 var(--sans);color:var(--muted)}
.byline b{color:var(--ink);font-weight:700}
.lead figure{margin:18px 0 0}
.lead figure img{width:100%;filter:saturate(.88)}
.lead figure img.crop-titleblock{aspect-ratio:1400/770;object-fit:cover;object-position:top}
.cap{font:15.5px/1.5 var(--sans);color:var(--muted);margin-top:8px}
.cap b{color:var(--ink2)}
.findings{list-style:none;margin:16px 0 0;border-top:2px solid var(--ink)}
.findings li{padding:14px 0;border-bottom:1px solid var(--hair);display:grid;grid-template-columns:36px 1fr;gap:10px;font-size:18.5px;line-height:1.5}
.findings .num{font:400 28px/1 var(--display);color:var(--red)}
.more{display:inline-block;margin-top:14px;padding:14px 0;font:800 17px/1.2 var(--sans);color:var(--red);text-decoration:none}
.more:hover{text-decoration:underline}

.rail{border-left:1px solid var(--hair);padding-left:28px;display:flex;flex-direction:column;gap:26px}
.rail-h{font:800 14px/1.2 var(--sans);text-transform:uppercase;letter-spacing:.08em;padding:0 0 8px;border-bottom:2px solid var(--ink);margin:0 0 10px}
.vs-mini>div{padding:10px 0;border-top:1px solid var(--hair)}
.vs-mini>div+div{border-top:1px solid var(--ink)}
.vs-mini q{display:block;font:italic 19px/1.3 var(--text);margin-top:5px;quotes:none}
.vs-mini p{font-size:17.5px;line-height:1.45;margin-top:5px}
.nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.nums div{padding:10px 8px 10px 0;border-bottom:1px solid var(--hair)}
.nums b{display:block;font:400 32px/1 var(--display)}
.nums span{font:15.5px/1.35 var(--sans);color:var(--muted);display:block;margin-top:3px}
.service-card{background:var(--ink);color:var(--paper);padding:18px}
.service-card .kick{color:var(--red-soft)}
.service-card h2{font:700 25px/1.2 var(--text);margin:8px 0}
.service-card p{font:17px/1.5 var(--sans)}
.btn{display:inline-flex;align-items:center;min-height:52px;margin-top:12px;font:800 16.5px/1.1 var(--sans);letter-spacing:.02em;padding:0 20px;text-decoration:none;background:var(--paper);color:var(--ink);border:0;cursor:pointer}
.btn:hover{background:#fff;color:var(--ink)}
.btn.dark{background:var(--ink);color:var(--paper)}
.btn.dark:hover{background:#000;color:#fff}
.docs{list-style:none;font:17px/1.4 var(--sans)}
.docs li{border-bottom:1px solid var(--hair)}
.docs a{display:flex;gap:10px;padding:13px 0;text-decoration:none;min-height:48px}
.docs a:hover span:last-child{text-decoration:underline}
.docs .tag{font:500 13px/1.8 var(--mono);color:var(--red);border:1px solid var(--red);padding:0 4px;height:19px;flex:none}

/* ---------- today vs. proposed (public impact) ---------- */
.compare{border-top:2px solid var(--ink);padding:16px 0 30px}
.compare h2{font:400 clamp(26px,3.6vw,36px)/1.1 var(--display);margin:8px 0 6px}
.compare .intro{font-size:19px;line-height:1.5;color:var(--ink2);max-width:70ch;margin-bottom:14px}
.cmp{width:100%;border-collapse:collapse;font-size:17.5px;line-height:1.5}
.cmp th{font:800 13.5px/1.2 var(--sans);text-transform:uppercase;letter-spacing:.12em;text-align:left;padding:8px 14px 8px 0;border-bottom:2px solid var(--ink);color:var(--muted)}
.cmp th.now{color:var(--muted)} .cmp th.next{color:var(--red)}
.cmp td{padding:11px 14px 11px 0;border-bottom:1px solid var(--hair);vertical-align:top}
.cmp td.topic{font:700 16px/1.35 var(--sans);width:17%}
.cmp td.now{color:var(--ink2);width:36%}
.cmp .key{display:block;margin-top:5px;font:600 15.5px/1.45 var(--sans);color:var(--red)}
.compare .bottom{margin-top:14px;padding:14px 18px;border:2px solid var(--ink);background:var(--card);font-size:18.5px;line-height:1.55}
.compare .src{font:500 14px/1.55 var(--mono);color:var(--muted);margin-top:10px}
@media(max-width:640px){
  .cmp thead{display:none}
  .cmp tr{display:block;padding:10px 0;border-bottom:1px solid var(--hair)}
  .cmp td,.cmp td.topic,.cmp td.now{display:block;border:0;padding:3px 0;width:auto}
  .cmp td.topic{font-size:16px;margin-bottom:2px}
  .cmp td.now::before{content:"Now: ";font:800 14px/1 var(--sans);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
  .cmp td.next::before{content:"If built: ";font:800 14px/1 var(--sans);text-transform:uppercase;letter-spacing:.1em;color:var(--red)}
}

/* ---------- inside-this-investigation ---------- */
.inside{border-top:2px solid var(--ink);padding:16px 0 44px}
.inside .grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:16px}
.inside a{text-decoration:none;display:block}
.inside img{width:100%;aspect-ratio:3/2;object-fit:cover;margin-bottom:10px;filter:saturate(.85)}
.inside h3{font:700 21px/1.25 var(--text);margin:6px 0}
.inside a:hover h3{text-decoration:underline}
.inside p{font:16.5px/1.5 var(--sans);color:var(--ink2)}

/* ---------- article (inner pages) ---------- */
.article-head{padding-top:40px}
.article-head h1{font:400 clamp(38px,6.4vw,68px)/1.02 var(--display);letter-spacing:-.015em;margin:14px 0 16px}
.article-head .deck{font-size:21px}
.byline-bar{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--hair)}
.body{padding-top:26px}
.body p{margin:0 0 16px}
.body h2{font:400 32px/1.1 var(--display);margin:34px 0 14px;padding-top:14px;border-top:2px solid var(--ink)}
.body h3{font:700 19px/1.25 var(--text);margin:22px 0 8px}
.body ul,.body ol{margin:0 0 16px 22px}
.body li{margin-bottom:8px}
.placeholder{background:#f7e3b5;padding:0 4px;font-family:var(--mono);font-size:.85em}

/* ---------- footer ---------- */
footer.site{border-top:5px double var(--ink);padding:24px 0 54px;font:16.5px/1.6 var(--sans);color:var(--muted)}
footer.site .np{font:400 24px/1 var(--display);color:var(--ink);text-decoration:none}
footer.site p{margin-top:10px;max-width:72ch}

@media(max-width:640px){
  .front{grid-template-columns:1fr}
  .rail{border-left:0;padding-left:0;margin-top:28px}
  .inside .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .mast-top .r{display:none}
  .mast-compact nav{display:none}
  .alert .cd{margin-left:0}
  .secbar{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--ink)}
  .secbar a{padding:14px 6px;text-align:center;border-bottom:1px solid var(--hair);font-size:15.5px;line-height:1.25}
  .secbar a:nth-child(odd){border-right:1px solid var(--hair)}
}
@media print{
  .secbar,.alert a,.btn,.skip{display:none}
  body{background:#fff;font-size:11.5pt}
  .front{grid-template-columns:1fr}
  .rail{border-left:0;padding-left:0}
  a{text-decoration:none}
}

/* ---------- big action buttons (age-friendly; 48px+ targets) ---------- */
.actions{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}
.actions a{display:inline-flex;align-items:center;min-height:52px;padding:0 18px;font:800 16.5px/1.15 var(--sans);text-decoration:none;border:2px solid var(--ink);background:var(--paper);color:var(--ink)}
.actions a.primary{background:var(--ink);color:var(--paper)}
.actions a:hover{background:#fff;color:var(--ink)}
.actions a.primary:hover{background:#000;color:#fff}
@media(max-width:640px){.actions a{flex:1 1 100%;justify-content:center}}
