:root{
  --ink:#1c1c1a; --paper:#ffffff; --bar:#dcebd4; --bar-line:#bcd1b0;
  --navy:#16335c; --navy-dk:#0f2546; --red:#9e1b32; --muted:#5a6157;
  --page:#e6e9e1; --rule:#2a2a28;
  --w95-face:#c0c0c0; --w95-light:#fff; --w95-hl:#dfdfdf; --w95-shadow:#808080; --w95-dark:#0a0a0a;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{ margin:0; background:var(--page); color:var(--ink);
  font-family:Georgia,"Times New Roman",serif; font-size:17px; line-height:1.6; }
.wrap{max-width:760px; margin:0 auto; padding:24px 16px 64px;}

/* ---------- Homepage background — Letchworth State Park ---------- */
/* Photo: Philip Herzog, public domain via Wikimedia Commons */
body.home{
  background: var(--page) url('bg-letchworth.jpg') center top / cover no-repeat fixed;
}
body.home .wrap{
  background:rgba(255,255,255,.88);
  box-shadow:0 0 40px rgba(0,0,0,.15);
  padding-top:28px;
}

/* ---------- Ballparks background — Fenway Park ---------- */
/* Photo: Aidan Siegel, CC BY-SA 3.0 via Wikimedia Commons */
body.ballparks-bg{
  background: var(--page) url('bg-fenway.jpg') center top / cover no-repeat fixed;
}
body.ballparks-bg .wrap{
  background:rgba(255,255,255,.88);
  box-shadow:0 0 40px rgba(0,0,0,.15);
  padding-top:28px;
}

/* ---------- NFL Kickoff Countdown ---------- */
.nfl-countdown{
  background:linear-gradient(135deg,#013369 0%,#1a4d8f 50%,#013369 100%);
  color:#fff; text-align:center; padding:10px 16px; position:relative; overflow:hidden;
  border-bottom:3px solid #d50a0a;
}
.nfl-countdown::before{
  content:''; position:absolute; inset:0; opacity:.06;
  background:repeating-linear-gradient(90deg, transparent 0 48px, rgba(255,255,255,.3) 48px 50px);
}
.nfl-inner{
  display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap;
  position:relative; z-index:1;
}
.nfl-shield{ font-size:22px; }
.nfl-label{
  font-family:"Courier New",Courier,monospace; font-size:13px; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase;
}
.nfl-timer{ display:flex; align-items:center; gap:2px; }
.nfl-unit{ display:flex; flex-direction:column; align-items:center; min-width:44px; }
.nfl-num{
  font-family:"Courier New",Courier,monospace; font-size:24px; font-weight:700;
  line-height:1; background:rgba(0,0,0,.35); border-radius:4px; padding:4px 6px;
  min-width:38px; text-align:center;
}
.nfl-txt{ font-family:"Courier New",monospace; font-size:9px; text-transform:uppercase; letter-spacing:.1em; opacity:.7; margin-top:2px; }
.nfl-sep{ font-family:"Courier New",monospace; font-size:20px; font-weight:700; opacity:.5; padding-bottom:12px; }
.nfl-done{ font-family:Georgia,serif; font-size:18px; font-weight:700; letter-spacing:.02em; }

/* ---------- Red Sox Ticker ---------- */
.sox-ticker{
  background:linear-gradient(90deg,#0d2b56 0%,#0d2b56 100%);
  color:#fff; padding:8px 16px; border-bottom:2px solid #bd3039;
  font-family:"Courier New",Courier,monospace; font-size:12px;
}
.sox-inner{
  max-width:760px; margin:0 auto;
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
.sox-badge{
  background:#bd3039; color:#fff; font-weight:700; font-size:11px;
  padding:3px 8px; letter-spacing:.08em; white-space:nowrap; flex-shrink:0;
}
.sox-loading{ opacity:.6; font-style:italic; }
.sox-live-dot{
  display:inline-block; width:8px; height:8px; background:#ff3b3b;
  border-radius:50%; margin-right:4px; animation:sox-pulse 1.2s infinite;
}
@keyframes sox-pulse{ 0%,100%{opacity:1;} 50%{opacity:.3;} }
.sox-game{
  display:inline-flex; align-items:center; gap:6px;
  background:rgba(255,255,255,.08); padding:3px 8px; border-radius:2px;
}
.sox-game .vs{ opacity:.5; }
.sox-game .score{ font-weight:700; color:#5cdb5c; }
.sox-game .date{ opacity:.6; font-size:11px; }
.sox-game .live-score{ font-weight:700; color:#ffcc00; }
.sox-sched{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }

/* ---------- Site Navigation ---------- */
.site-nav{
  background:var(--paper); border-bottom:2px solid var(--rule); padding:0;
  font-family:"Courier New",Courier,monospace; font-size:12px;
  text-transform:uppercase; letter-spacing:.06em;
}
.site-nav ul{
  max-width:760px; margin:0 auto; padding:0; list-style:none;
  display:flex; flex-wrap:wrap; justify-content:center; gap:0;
}
.site-nav a{
  display:block; padding:9px 16px; color:var(--navy); text-decoration:none;
  border-right:1px solid var(--bar-line); transition:background .15s;
}
.site-nav li:last-child a{border-right:none;}
.site-nav a:hover{background:var(--bar);}
.site-nav a.active{background:var(--navy); color:#fff; font-weight:700;}

/* ---------- Masthead ---------- */
.masthead{ text-align:center; padding:14px 0 10px; border-bottom:3px double var(--rule); border-top:3px double var(--rule);}
.masthead .name{ font-size:clamp(40px,9vw,68px); line-height:.95; letter-spacing:-1px; margin:8px 0 6px; font-weight:700; font-variant:small-caps;}
.masthead .tag{ font-style:italic; color:var(--muted); font-size:16px; margin:0 0 12px;}
.dateline{ display:flex; flex-wrap:wrap; justify-content:center; gap:6px 18px;
  font-family:"Courier New",Courier,monospace; font-size:12px; letter-spacing:.06em;
  text-transform:uppercase; padding:8px 0 2px; border-top:1px solid var(--rule);}
.dateline b{font-weight:700;}

/* ---------- baseball-stitch divider ---------- */
.stitch{ height:18px; margin:22px 0;
  background:
    repeating-linear-gradient(115deg, transparent 0 12px, var(--red) 12px 15px, transparent 15px 20px) center/auto 100% no-repeat,
    linear-gradient(var(--bar),var(--bar));
  border-top:1px solid var(--bar-line); border-bottom:1px solid var(--bar-line); opacity:.9;}

/* ---------- Compose ---------- */
.compose{ border:1px solid #b9c6ad; background:var(--paper); margin:0 0 6px;}
.compose .hd{ background:var(--navy); color:#fff; padding:8px 12px; font-size:15px; letter-spacing:.04em;
  font-family:"Courier New",Courier,monospace; text-transform:uppercase;}
.compose .bd{ padding:14px 16px;}
.frow{ display:flex; gap:14px; }
.frow .col{flex:1;} .frow .col.wide{flex:2;}
.lf{display:block; margin-bottom:14px;}
.lf > span{ display:block; font-family:"Courier New",monospace; font-size:12px; text-transform:uppercase;
  letter-spacing:.06em; color:var(--muted); margin-bottom:4px;}
.lf input, .lf textarea{ width:100%; font-family:Georgia,serif; font-size:16px; color:var(--ink); background:#fcfdfb;
  border:1px solid #aab8a0; border-radius:0; padding:8px 10px; box-shadow:inset 1px 1px 2px rgba(0,0,0,.08);}
.lf input[type=file]{ font-family:"Courier New",monospace; font-size:13px; padding:7px; box-shadow:none;}
.lf textarea{min-height:120px; resize:vertical; line-height:1.55;}
.lf select{ width:100%; font-family:Georgia,serif; font-size:16px; color:var(--ink); background:#fcfdfb;
  border:1px solid #aab8a0; border-radius:0; padding:8px 10px; box-shadow:inset 1px 1px 2px rgba(0,0,0,.08);}
.lf input:focus, .lf textarea:focus, .lf select:focus{ outline:2px solid var(--navy); outline-offset:0; border-color:var(--navy);}
.hint{ font-family:"Courier New",monospace; font-size:11px; color:var(--muted); margin:-8px 0 14px;}
.prev{ display:flex; align-items:center; gap:12px; margin:-6px 0 14px; padding:8px;
  border:1px dashed #aab8a0; background:#f7faf3; font-family:"Courier New",monospace; font-size:12px; color:var(--muted);}
.prev img, .prev video{ max-height:64px; max-width:96px; border:1px solid #9aa890; background:#000;}
.prev .rm{ color:var(--red); background:none; border:none; cursor:pointer; text-decoration:underline; font-family:inherit; font-size:12px;}
.pubrow{display:flex; align-items:center; gap:14px;}
.pub{ font-family:Georgia,serif; font-size:16px; font-weight:700; color:#fff; background:var(--navy);
  border:1px solid var(--navy-dk); padding:9px 22px; cursor:pointer; letter-spacing:.02em;}
.pub:hover{background:var(--navy-dk);}
.pub:focus-visible{outline:2px solid var(--red); outline-offset:2px;}
.note{font-family:"Courier New",monospace; font-size:12px; color:#2c6b2c;}

/* ---------- Blog Hub (homepage) ---------- */
.blog-hub{ margin:0 0 6px; }
.hub-hd{ font-family:"Courier New",Courier,monospace; font-size:12px; text-transform:uppercase;
  letter-spacing:.1em; color:var(--muted); margin-bottom:12px; padding-bottom:6px;
  border-bottom:2px solid var(--rule); }
.hub-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:14px; }
.hub-card{ display:flex; flex-direction:column; text-decoration:none; color:var(--ink);
  border:1px solid #b9c6ad; background:var(--paper); overflow:hidden;
  transition:transform .18s, box-shadow .18s; }
.hub-card:hover{ transform:translateY(-3px); box-shadow:0 6px 20px rgba(0,0,0,.15); }
.hub-img{ height:130px; display:flex; align-items:center; justify-content:center; position:relative; }
.hub-icon{ font-size:52px; line-height:1; filter:drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.hub-body{ padding:12px 14px 14px; flex:1; display:flex; flex-direction:column; gap:4px; }
.hub-title{ font-size:18px; font-weight:700; font-variant:small-caps; letter-spacing:.02em;
  color:var(--navy); line-height:1.1; }
.hub-sub{ font-size:13px; color:var(--muted); font-style:italic; line-height:1.4; flex:1; }
.hub-cta{ font-family:"Courier New",monospace; font-size:11px; text-transform:uppercase;
  letter-spacing:.06em; color:var(--red); font-weight:700; margin-top:6px; }
.hub-card:hover .hub-cta{ text-decoration:underline; }

/* ---------- Ledger / entries ---------- */
.ledger-hd{ display:flex; align-items:baseline; justify-content:space-between; margin:26px 0 6px;
  border-bottom:2px solid var(--rule); padding-bottom:4px;}
.ledger-hd h2{ font-size:22px; margin:0; font-variant:small-caps; letter-spacing:.02em;}
.ledger-hd .count{font-family:"Courier New",monospace; font-size:12px; color:var(--muted);}
.sheet{ border:1px solid #aec0a2; padding:0 20px;
  background:
    radial-gradient(circle at 10px, #c4d2b8 2.6px, transparent 3px) 0 11px/20px 24px repeat-y,
    radial-gradient(circle at 10px, #c4d2b8 2.6px, transparent 3px) 100% 11px/20px 24px repeat-y,
    var(--paper);}
.entry{ position:relative; padding:16px 14px; border-bottom:1px solid var(--bar-line);}
.entry:nth-child(odd){ background:var(--bar);}
.entry:nth-child(even){ background:var(--paper);}
.entry:last-child{border-bottom:none;}
.entry .erow{ font-family:"Courier New",Courier,monospace; font-size:12px; color:var(--muted);
  display:flex; flex-wrap:wrap; gap:4px 14px; margin-bottom:6px; letter-spacing:.04em;}
.entry .erow .no{color:var(--navy); font-weight:700;}
.entry h3{ font-size:23px; margin:2px 0 8px; line-height:1.25;}
.entry .text{ font-size:17px; line-height:1.65; white-space:pre-wrap;}
.entry .media{ margin:12px 0 4px;}
.media-el{ display:block; max-width:100%; height:auto; border:1px solid #9aa890; background:#000;}
.entry video.media-el{ width:100%;}
.media-missing{ font-family:"Courier New",monospace; font-size:12px; color:var(--muted); font-style:italic;}
.entry .loc-tag{ background:var(--navy); color:#fff; padding:1px 6px; font-size:11px; letter-spacing:.02em; }

/* ---------- Ratings display (baseball emojis) ---------- */
.ratings-display{ margin:12px 0 4px; padding:10px 12px; background:var(--navy); border:1px solid var(--navy-dk); color:#fff; }
.rd-row{ display:flex; align-items:center; gap:6px; padding:3px 0;
  font-family:"Courier New",monospace; font-size:12px; }
.rd-cat{ width:200px; flex-shrink:0; color:#aebfda; text-transform:uppercase; letter-spacing:.04em; font-size:10px; }
.rd-balls{ font-size:15px; letter-spacing:1px; line-height:1; }
.rd-balls .ball-empty, .rd-balls .rd-icon-empty{ opacity:.2; filter:grayscale(1); }
.rd-num{ font-size:11px; color:#e8c840; font-weight:700; margin-left:4px; }
.rd-avg{ margin-top:6px; padding-top:6px; border-top:1px solid rgba(255,255,255,.15);
  font-family:"Courier New",monospace; font-size:13px; font-weight:700; color:#e8c840; }
.entry .del{ position:absolute; top:14px; right:12px; font-family:"Courier New",monospace; font-size:12px;
  color:var(--red); background:none; border:none; cursor:pointer; text-decoration:underline;}
.entry .del:hover{color:#6f1322;}
.empty{ padding:28px 14px; text-align:center; color:var(--muted); font-style:italic;}
.footer{ margin-top:28px; text-align:center; font-family:"Courier New",monospace; font-size:12px; color:var(--muted);}

/* ---------- Site-wide legal footer ---------- */
.site-footer{ background:var(--rule); color:#aaa; text-align:center; padding:10px 16px;
  font-family:"Courier New",Courier,monospace; font-size:11px; letter-spacing:.04em; }
.site-footer-inner{ max-width:760px; margin:0 auto; display:flex; flex-wrap:wrap;
  justify-content:center; align-items:center; gap:5px 12px; }
.site-footer a{ color:#ccc; text-decoration:none; }
.site-footer a:hover{ color:#fff; text-decoration:underline; }
.sf-sep{ opacity:.35; }

/* ---------- Legal pages (Terms, Privacy) ---------- */
.legal-wrap{ max-width:760px; margin:0 auto; padding:0 16px; }
.legal-content{ background:rgba(255,255,255,.95); padding:32px 36px 40px; margin:20px 0; }
.legal-content h1{ font-size:clamp(24px,5vw,34px); margin:0 0 4px; font-variant:small-caps; letter-spacing:.01em; }
.legal-content .updated{ font-family:"Courier New",monospace; font-size:12px; color:var(--muted); margin:0 0 22px; border-bottom:1px solid var(--bar-line); padding-bottom:14px; }
.legal-content h2{ font-size:17px; margin:28px 0 8px; font-variant:small-caps; letter-spacing:.03em;
  border-bottom:1px solid var(--bar-line); padding-bottom:4px; color:var(--navy); }
.legal-content p{ margin:0 0 14px; line-height:1.75; font-size:16px; }
.legal-content a{ color:var(--navy); }
.legal-content .legal-footer{ margin-top:36px; font-family:"Courier New",monospace; font-size:11px;
  color:var(--muted); border-top:1px solid var(--bar-line); padding-top:12px; text-align:center; }
@media(max-width:600px){ .legal-content{ padding:20px 16px 28px; } }

/* ============================================================
   STACK & CLEAR — Windows 95 styling, unique layout
   ============================================================ */
.game-zone-hd{ text-align:center; margin:10px 0 16px;}
.game-zone-hd h2{ font-size:22px; margin:0 0 4px; font-variant:small-caps;}
.game-zone-hd p{ margin:0; color:var(--muted); font-style:italic; font-size:15px;}
.tetris-mount{display:flex; justify-content:center;}
.window{ background:var(--w95-face); padding:3px;
  box-shadow: inset -1px -1px var(--w95-dark), inset 1px 1px var(--w95-light), inset -2px -2px var(--w95-shadow), inset 2px 2px var(--w95-hl);
  display:inline-flex; flex-direction:column; font-family:Tahoma,"MS Sans Serif",Geneva,sans-serif; font-size:11px;}
.title-bar{ display:flex; align-items:center; gap:4px; height:20px; padding:0 2px 0 3px; background:linear-gradient(90deg,#000080,#1084d0); color:#fff;}
.title-bar .ico{width:16px;height:16px;font-size:11px;line-height:16px;text-align:center;}
.title-bar .title{flex:1; font-weight:bold; font-size:11px;}
.window-body{padding:8px;}
button.btn{ font-family:inherit; font-size:11px; background:var(--w95-face); color:#000; min-width:70px; min-height:23px; padding:2px 10px; cursor:default; border:none;
  box-shadow: inset -1px -1px var(--w95-dark), inset 1px 1px var(--w95-light), inset -2px -2px var(--w95-shadow), inset 2px 2px var(--w95-hl);}
button.btn:active{box-shadow: inset -1px -1px var(--w95-light), inset 1px 1px var(--w95-dark), inset -2px -2px var(--w95-hl), inset 2px 2px var(--w95-shadow); padding:3px 9px 1px 11px;}

/* Stats bar — horizontal across top */
.stats-bar{display:flex; gap:6px; margin-bottom:8px;}
.stats-bar .stat{flex:1; text-align:center;}

/* Game row — next/buttons on LEFT, playfield on RIGHT */
.game-row{display:flex; gap:10px;}
.left-col{width:110px; display:flex; flex-direction:column; gap:8px;}

#playfield{display:block; image-rendering:pixelated;
  box-shadow: inset -1px -1px var(--w95-light), inset 1px 1px var(--w95-shadow), inset -2px -2px var(--w95-hl), inset 2px 2px var(--w95-dark);}
.panel{background:var(--w95-face); padding:6px;
  box-shadow: inset -1px -1px var(--w95-light), inset 1px 1px var(--w95-shadow), inset -2px -2px var(--w95-hl), inset 2px 2px var(--w95-dark);}
.panel .k{font-weight:bold;}
.panel .v{font-family:"Courier New",monospace; font-size:14px; background:#000; color:#0f0; padding:1px 4px; margin-top:2px; box-shadow: inset 1px 1px var(--w95-dark);}
#next{display:block; background:#000;}
.scores-list{background:#fff; padding:4px; margin-top:4px; max-height:150px; overflow:auto;
  box-shadow: inset -1px -1px var(--w95-light), inset 1px 1px var(--w95-shadow), inset -2px -2px var(--w95-hl), inset 2px 2px var(--w95-dark);}
.scores-list .row{display:flex; justify-content:space-between; padding:1px 4px; font-size:11px;}
.scores-list .row.head{font-weight:bold; border-bottom:1px solid var(--w95-shadow); margin-bottom:2px;}
.scores-list .row:nth-child(even){background:#eee;}
.scores-list .empty{padding:8px; font-size:11px; color:#555; font-style:normal;}
.touch{display:none; margin-top:8px; gap:6px; flex-wrap:wrap; justify-content:center;}
.touch button{min-width:46px; min-height:38px;}
.game-msg{position:absolute; inset:0; display:none; align-items:center; justify-content:center; flex-direction:column; gap:6px; background:rgba(0,0,0,.6); color:#fff; text-align:center; font-weight:bold;}
.hr95{height:2px; margin:8px 0; box-shadow: inset 0 1px var(--w95-shadow), inset 0 -1px var(--w95-light);}

/* ---------- shared dialog ---------- */
.overlay{position:fixed; inset:0; background:rgba(0,0,0,.35); display:flex; align-items:center; justify-content:center; z-index:1000;}
.dialog{ width:320px; max-width:92vw; background:var(--paper); border:1px solid #9aa890; box-shadow:0 10px 30px rgba(0,0,0,.3); font-family:Georgia,serif;}
.dialog .dh{ background:var(--navy); color:#fff; padding:8px 12px; font-size:14px; font-family:"Courier New",monospace; letter-spacing:.04em;}
.dialog .db{ padding:16px; display:flex; flex-direction:column; gap:12px; font-size:15px;}
.dialog .db input{ font-family:Georgia,serif; font-size:16px; padding:8px 10px; border:1px solid #aab8a0; box-shadow:inset 1px 1px 2px rgba(0,0,0,.08);}
.dialog .drow{display:flex; justify-content:flex-end; gap:10px;}
.dialog .drow button{ font-family:Georgia,serif; font-size:15px; padding:7px 18px; cursor:pointer; border:1px solid var(--navy-dk); background:var(--navy); color:#fff;}
.dialog .drow button.sec{ background:#e4e8df; color:var(--ink); border-color:#aab8a0;}

/* ---------- Interactive Map (The Great 48) ---------- */
.map-section{ margin:0 0 6px; border:1px solid #b9c6ad; background:var(--paper); }
.map-section .hd{ background:var(--navy); color:#fff; padding:8px 12px; font-size:15px; letter-spacing:.04em;
  font-family:"Courier New",Courier,monospace; text-transform:uppercase;}
.map-wrap{ padding:14px 16px; position:relative; }
.map-wrap svg{ width:100%; height:auto; display:block; }
.map-legend{
  display:flex; flex-wrap:wrap; gap:10px 20px; margin-top:10px; padding:8px 0;
  font-family:"Courier New",monospace; font-size:11px; color:var(--muted); border-top:1px solid var(--bar-line);
}
.map-legend-item{ display:flex; align-items:center; gap:5px; }
.map-legend-swatch{ width:14px; height:14px; border:1px solid #888; display:inline-block; }
.map-counter{
  font-family:"Courier New",monospace; font-size:13px; color:var(--navy);
  font-weight:700; margin-top:8px; text-align:center;
}
.map-tooltip{
  position:fixed; pointer-events:none; z-index:500;
  background:var(--navy); color:#fff; padding:4px 10px; font-family:"Courier New",monospace;
  font-size:12px; border-radius:2px; white-space:nowrap; display:none;
  box-shadow:0 2px 6px rgba(0,0,0,.3);
}
svg .state-lower48{ fill:#3a7d44; stroke:#fff; stroke-width:.8; cursor:pointer; transition:fill .15s; }
svg .state-lower48:hover{ fill:#2e6336; }
svg .state-lower48.visited{ fill:#e8c840; }
svg .state-lower48.visited:hover{ fill:#d4b530; }
svg .province{ fill:#c0c8bc; stroke:#fff; stroke-width:.6; }
svg .province-on{ fill:#1a6fa0; stroke:#fff; stroke-width:.8; cursor:pointer; transition:fill .15s; }
svg .province-on:hover{ fill:#15587e; }
svg .province-on.visited{ fill:#e8c840; }
svg .state-non48{ fill:#8a9a82; stroke:#fff; stroke-width:.6; cursor:pointer; transition:fill .15s; }
svg .state-non48:hover{ fill:#6d7f66; }
svg .state-non48.visited{ fill:#e8c840; }
svg .country-bg{ fill:#ddd8cc; stroke:none; }
svg .water{ fill:#b8d4e8; stroke:#8ab8d4; stroke-width:.4; }

/* ============================================================
   MOBILE — iPhone & small screens (≤ 640px)
   ============================================================ */

/* -- Hamburger toggle button -- */
.nav-toggle{
  display:none; width:100%; background:var(--paper); border:none; border-bottom:1px solid var(--bar-line);
  font-family:"Courier New",Courier,monospace; font-size:13px; font-weight:700;
  text-transform:uppercase; letter-spacing:.08em; color:var(--navy);
  padding:11px 16px; text-align:left; cursor:pointer;
}

@media(max-width:640px){
  /* ---- Body & wrap ---- */
  body{ font-size:15px; }
  .wrap{ padding:16px 12px 48px; }

  /* ---- Navigation: hamburger ---- */
  .nav-toggle{ display:block !important; }
  .site-nav ul{
    display:none; flex-direction:column; width:100%;
    background:var(--paper); border-bottom:2px solid var(--rule);
  }
  .site-nav ul.open{ display:flex; }
  .site-nav a{
    padding:13px 18px; border-right:none; border-bottom:1px solid var(--bar-line);
    font-size:12px; display:block;
  }
  .site-nav li:last-child a{ border-bottom:none; }
  .site-nav a.active{ border-left:4px solid var(--navy); }

  /* ---- NFL countdown ---- */
  .nfl-inner{ flex-direction:column; gap:6px; padding:2px 0; }
  .nfl-label{ font-size:11px; }
  .nfl-num{ font-size:18px; min-width:30px; padding:3px 4px; }
  .nfl-timer{ gap:1px; }

  /* ---- Red Sox ticker ---- */
  .sox-inner{ gap:6px; }
  .sox-sched{ gap:4px; flex-direction:column; }
  .sox-game{ font-size:11px; }

  /* ---- Masthead ---- */
  .masthead{ padding:10px 0 8px; }
  .masthead .name{ font-size:clamp(28px,11vw,48px); }
  .masthead .tag{ font-size:13px; }
  .dateline{ font-size:10px; gap:4px 10px; }

  /* ---- Homepage: show Letchworth background on sides ---- */
  body.home .wrap{ margin-left:10px; margin-right:10px; }

  /* ---- Blog hub cards: 2-column grid ---- */
  .hub-grid{ grid-template-columns:1fr 1fr; gap:10px; }
  .hub-img{ height:88px; }

  /* ---- Compose form ---- */
  .frow{ flex-direction:column; gap:0; }
  .lf select{ font-size:14px; }

  /* ---- Rating inputs (all pages) ---- */
  .ri-cat{ width:120px !important; font-size:9px !important; letter-spacing:0 !important; }
  .ri-balls .ball{ font-size:18px !important; }
  .ratings-input{ padding:10px 10px; }

  /* ---- Cinema thumbs verdict ---- */
  .cin-thumbs-row{ display:grid; grid-template-columns:1fr 1fr; gap:6px; }
  .thumbs-btn{ font-size:18px; padding:8px 6px; min-height:60px; }
  .cin-hist-row .ri-cat{ width:120px !important; font-size:9px !important; }
  .cin-thumbs-section{ padding:10px; }

  /* ---- Ballpark team badges ---- */
  .tb{ width:48px; height:48px; font-size:14px; }
  .teams-grid{ gap:7px; padding:12px; }

  /* ---- Tetris / Stack & Clear ---- */
  .game-row{ flex-direction:column; align-items:center; gap:10px; }
  .left-col{ width:100%; flex-direction:row; flex-wrap:wrap; gap:8px; justify-content:center; }
  .stats-bar{ gap:4px; }
  .stats-bar .stat .v{ font-size:11px; }
  .touch{ display:flex; }
  #playfield{ width:200px; height:400px; }

  /* ---- Interactive map ---- */
  .map-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .map-wrap svg{ min-width:480px; }
  .map-legend{ font-size:10px; gap:6px 12px; }
  .map-counter{ font-size:11px; }

  /* ---- Entries / ledger ---- */
  .entry h3{ font-size:18px; }
  .entry .text{ font-size:15px; }
  .rd-cat{ width:130px; font-size:9px; }
  .ce-cat{ width:130px !important; font-size:9px !important; }
  .rd-balls{ font-size:13px; }

  /* ---- Legal pages ---- */
  .legal-content{ padding:20px 14px 28px; }

  /* ---- Site footer ---- */
  .site-footer-inner{ flex-direction:column; gap:6px; }
}

@media(max-width:380px){
  /* Extra-small iPhones (SE, mini) */
  .nfl-num{ font-size:16px; }
  .masthead .name{ font-size:28px; }
  .tb{ width:42px; height:42px; font-size:12px; }
  .ri-cat{ width:100px !important; }
  .ri-balls .ball{ font-size:16px !important; }
}

@media(prefers-reduced-motion:reduce){ html{scroll-behavior:auto;} *{transition:none !important;} }