/* =====================================================================
   RipleyGazette.com — theme (v0.1.0 Core Engine)
   Vintage county-gazette / newsprint: cream paper, black ink,
   oxblood accent, double rules, serif type. Mobile-first.
   ===================================================================== */

:root{
  --paper:#f6f1e7;
  --paper-2:#efe8d8;
  --ink:#1c1a16;
  --ink-soft:#4a463d;
  --muted:#7a7466;
  --accent:#7d2b2b;
  --accent-dark:#5d1f1f;
  --line:#c9c0ab;
  --ok:#2f6d3a;
  --warn:#9a6b14;
  --bad:#9a2222;
  --serif:"Old Standard TT", Georgia, "Times New Roman", serif;
  --body:Georgia, "Iowan Old Style", "Times New Roman", serif;
  --maxw:1080px;
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  background-image:radial-gradient(rgba(0,0,0,.018) 1px, transparent 1px);
  background-size:3px 3px;
  color:var(--ink);
  font-family:var(--body);
  font-size:18px;
  line-height:1.55;
}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 18px;}
a{color:var(--accent); text-decoration:none;}
a:hover{color:var(--accent-dark); text-decoration:underline;}
.muted{color:var(--muted);}
img{max-width:100%; height:auto;}

/* ---------- Community engine ---------- */
.cp-tabs{display:flex; flex-wrap:wrap; gap:6px; border-bottom:2px solid var(--ink); padding-bottom:10px; margin-bottom:18px;}
.cp-tabs a{font-family:var(--serif); font-size:13px; padding:5px 11px; border:1px solid var(--line); color:var(--ink-soft); white-space:nowrap;}
.cp-tabs a.on{background:var(--ink); color:var(--paper); border-color:var(--ink);}
.cp-head{display:flex; justify-content:space-between; align-items:flex-end; gap:14px; flex-wrap:wrap; margin-bottom:16px;}
.cp-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line);}
.cp-card{background:var(--paper); padding:15px 16px; display:flex; flex-direction:column; gap:5px;}
.cp-photo-wrap{display:block; margin:-15px -16px 4px; border-bottom:1px solid var(--line);}
.cp-photo{width:100%; height:160px; object-fit:cover; display:block;}
.cp-card-head{display:flex; align-items:center; gap:8px;}
.cp-tag{font-family:var(--serif); text-transform:uppercase; letter-spacing:.07em; font-size:10px; color:var(--accent);}
.cp-title{font-family:var(--serif); font-size:19px; line-height:1.14; margin:0;}
.cp-title a{color:var(--ink);}
.cp-meta{font-size:13px; color:var(--ink-soft);}
.cp-body{font-size:14px; color:var(--ink-soft); margin:2px 0 0;}
.cp-foot{display:flex; justify-content:space-between; align-items:center; gap:8px; margin-top:auto; padding-top:6px; font-size:12px; color:var(--muted);}
.cp-count{font-family:var(--serif); color:var(--accent);}
.cp-facts{display:grid; grid-template-columns:auto 1fr; gap:4px 14px; margin:16px 0; font-size:15px;}
.cp-facts dt{font-family:var(--serif); text-transform:uppercase; letter-spacing:.04em; font-size:12px; color:var(--muted); padding-top:2px;}
.cp-facts dd{margin:0;}
.cp-checkin{border:1px solid var(--ink); background:var(--paper-2); padding:16px 18px; margin:24px 0;}
.cp-checkin-top{font-size:17px; font-family:var(--serif);}
.cp-checkin-form{display:flex; gap:8px; margin-top:10px; flex-wrap:wrap;}
.cp-checkin-form input[type=text]{flex:1; min-width:180px;}
.cp-checkin-list{list-style:none; padding:0; margin:12px 0 0; font-size:14px; columns:2; column-gap:24px;}
.cp-checkin-list li{margin:0 0 4px; break-inside:avoid;}
@media (max-width:520px){ .cp-checkin-list{columns:1;} }

/* ---------- News items (with thumbnails) ---------- */
.news-item{display:flex; gap:12px; align-items:flex-start; padding:11px 0; border-bottom:1px solid var(--line);}
.news-thumbwrap{flex:0 0 auto;}
.news-thumb{width:76px; height:76px; object-fit:cover; display:block; background:var(--paper-2); border:1px solid var(--line);}
.news-thumb.is-logo{object-fit:contain; padding:14px; background:#fff;}
.news-body{flex:1; min-width:0;}
.news-headline{font-family:var(--serif); font-size:17px; line-height:1.2; color:var(--ink); display:block;}
.news-meta{font-size:12px; color:var(--muted); margin-top:2px;}
.news-blurb{font-size:14px; color:var(--ink-soft); margin-top:3px;}
@media (max-width:480px){ .news-thumb{width:60px; height:60px;} .news-thumb.is-logo{padding:10px;} }

/* ---------- Weather strip ---------- */
.wx-alert{background:var(--accent); color:#fff; padding:8px 18px; font-size:14px; text-align:center;}
.wx-alert strong{text-transform:uppercase; letter-spacing:.04em;}
.wx-strip{background:var(--ink); color:var(--paper); padding:9px 18px; display:flex; flex-wrap:wrap; gap:6px 22px; align-items:baseline; justify-content:center;}
.wx-strip .wx-temp{font-family:var(--serif); font-weight:700; font-size:26px; line-height:1;}
.wx-strip .wx-desc{font-family:var(--serif); font-size:16px;}
.wx-strip .wx-loc{font-size:12px; color:#cdbf9a; text-transform:uppercase; letter-spacing:.08em;}
.wx-strip .wx-periods{display:flex; flex-wrap:wrap; gap:4px 16px; font-size:13px; color:#e7ddc6;}
@media (max-width:620px){ .wx-strip .wx-periods{display:none;} }

/* ---------- Account bar (top strip) ---------- */
.accountbar{background:var(--paper-2); border-bottom:1px solid var(--line); font-size:13px; font-family:var(--serif); letter-spacing:.03em;}
.accountbar .wrap{display:flex; justify-content:flex-end; gap:8px; align-items:center; padding:5px 18px;}
.accountbar .sep{color:var(--line);}

/* ---------- Masthead ---------- */
.masthead{background:var(--paper); border-bottom:3px double var(--ink); padding:18px 0 12px; text-align:center;}
.masthead .dateline{font-family:var(--serif); letter-spacing:.12em; font-size:12px; color:var(--ink-soft); text-transform:uppercase;}
.masthead .title{font-family:var(--serif); font-weight:700; font-size:clamp(40px, 9vw, 82px); line-height:.95; margin:.12em 0 .08em; letter-spacing:.01em;}
.masthead .title a{color:var(--ink); text-decoration:none;}
.masthead .tagline{font-style:italic; color:var(--ink-soft); font-size:16px;}

/* ---------- Top nav ---------- */
.topnav{background:var(--ink); border-bottom:1px solid #000;}
.topnav .wrap{display:flex; flex-wrap:wrap; gap:2px 18px; padding:9px 18px; justify-content:center;}
.topnav .navlinks{display:flex; flex-wrap:wrap; gap:2px 18px; justify-content:center;}
.topnav a, .topnav .soon{font-family:var(--serif); text-transform:uppercase; letter-spacing:.06em; font-size:13px; padding:3px 2px;}
.topnav a{color:var(--paper);}
.topnav a:hover{color:#fff; text-decoration:none; border-bottom:2px solid var(--accent);}
.topnav .soon{color:#8a8275; cursor:default;}
.topnav .navsearch{display:flex; align-items:center;}
.topnav .navsearch input{font-family:var(--body); font-size:13px; padding:5px 10px; border:1px solid #000; background:#fffdf7; color:var(--ink); width:170px;}
.topnav .navsearch input:focus{outline:2px solid var(--accent); outline-offset:-2px;}
/* hamburger: hidden on desktop */
.topnav .nav-cb{position:absolute; opacity:0; pointer-events:none;}
.topnav .nav-burger{display:none;}

/* ---------- Content ---------- */
.content{padding:26px 18px 10px;}
h2.section{font-family:var(--serif); font-size:24px; border-bottom:2px solid var(--ink); padding-bottom:4px; margin:0 0 16px; display:flex; justify-content:space-between; align-items:baseline;}
h2.section .small{font-size:13px; font-weight:400; color:var(--muted); letter-spacing:.04em; text-transform:uppercase;}
.lede{font-size:19px; color:var(--ink-soft); border-left:3px solid var(--accent); padding-left:14px; margin:0 0 24px;}

/* ---------- Broadsheet zone skeleton (front page; fills in later phases) ---------- */
.broadsheet{display:grid; grid-template-columns:2fr 1fr; gap:26px;}
.broadsheet .col-main{display:flex; flex-direction:column; gap:22px;}
.broadsheet .col-side{display:flex; flex-direction:column; gap:22px;}
.zone{border:1px solid var(--line); background:var(--paper);}
.zone .zone-head{font-family:var(--serif); text-transform:uppercase; letter-spacing:.08em; font-size:13px; color:var(--ink); background:var(--paper-2); border-bottom:1px solid var(--line); padding:8px 12px; display:flex; justify-content:space-between; align-items:center;}
.zone .zone-body{padding:16px 14px;}
.zone .coming{color:var(--muted); font-style:italic; font-size:15px;}
.zone .phase-tag{font-family:var(--serif); font-style:normal; font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--accent); border:1px solid var(--accent); padding:1px 6px;}

/* module chips */
.modgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line);}
.modchip{background:var(--paper); padding:12px 12px;}
.modchip .ic{font-size:18px;}
.modchip .nm{font-family:var(--serif); font-size:15px; margin-top:2px;}
.modchip .bl{font-size:12px; color:var(--muted);}

/* ---------- Forms / buttons ---------- */
select, input[type=text], input[type=password], input[type=number], input[type=email], textarea{
  font-family:var(--body); font-size:16px; padding:8px 10px; border:1px solid var(--line); background:#fffdf7; color:var(--ink); border-radius:0;
}
textarea{width:100%; min-height:140px; line-height:1.5;}
.btn{display:inline-block; cursor:pointer; font-family:var(--serif); text-transform:uppercase; letter-spacing:.06em; font-size:14px; background:var(--accent); color:#fff; border:none; padding:9px 18px;}
.btn:hover{background:var(--accent-dark); color:#fff; text-decoration:none;}
.btn-ghost{background:transparent; color:var(--ink); border:1px solid var(--ink);}
.btn-ghost:hover{background:var(--ink); color:var(--paper);}
.btn-sm{padding:5px 11px; font-size:12px;}
.btn-danger{background:var(--bad);} .btn-danger:hover{background:#7a1a1a;}

/* ---------- Badges ---------- */
.badge{font-family:var(--serif); font-size:11px; text-transform:uppercase; letter-spacing:.05em; padding:2px 7px; border:1px solid;}
.badge-ok{color:var(--ok); border-color:var(--ok);}
.badge-warn{color:var(--warn); border-color:var(--warn);}
.badge-bad{color:var(--bad); border-color:var(--bad);}
.badge-mute{color:var(--muted); border-color:var(--line);}

/* ---------- Footer ---------- */
.sitefoot{margin-top:40px; padding:10px 0 40px; font-size:14px;}
.rule-double{border-top:3px double var(--ink); margin:0 0 16px;}
.sitefoot p{margin:4px 0;}
.empty{background:var(--paper-2); border:1px dashed var(--line); padding:40px 20px; text-align:center; color:var(--muted); font-style:italic;}

/* =====================================================================
   ADMIN
   ===================================================================== */
.adminbar{background:var(--ink); color:var(--paper); border-bottom:3px solid var(--accent);}
.adminbar .wrap{display:flex; flex-wrap:wrap; gap:4px 18px; align-items:center; padding:11px 18px; max-width:var(--maxw); margin:0 auto;}
.adminbar a{color:#f1d9a6; font-family:var(--serif); text-transform:uppercase; letter-spacing:.05em; font-size:13px;}
.adminbar a:hover{color:#fff;}
.adminbar .soon{color:#867c63; font-family:var(--serif); text-transform:uppercase; letter-spacing:.05em; font-size:13px; cursor:default;}
.adminbar .brand{color:#fff; font-weight:700; margin-right:auto;}
.admin-main{max-width:var(--maxw); margin:24px auto; padding:0 18px;}

.stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); margin-bottom:26px;}
.stat{background:var(--paper); padding:16px;}
.stat .n{font-family:var(--serif); font-size:30px; font-weight:700; line-height:1;}
.stat .l{font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-top:6px;}

table.grid{width:100%; border-collapse:collapse; background:var(--paper); font-size:15px;}
table.grid th, table.grid td{text-align:left; padding:9px 11px; border-bottom:1px solid var(--line); vertical-align:top;}
table.grid th{font-family:var(--serif); text-transform:uppercase; letter-spacing:.05em; font-size:12px; color:var(--ink-soft); background:var(--paper-2);}
table.grid tr:hover td{background:var(--paper-2);}
table.grid td.r, table.grid th.r{text-align:right;}

.notice{padding:11px 14px; border:1px solid; margin-bottom:18px; font-size:15px;}
.notice-ok{border-color:var(--ok); color:var(--ok); background:rgba(47,109,58,.06);}
.notice-bad{border-color:var(--bad); color:var(--bad); background:rgba(154,34,34,.06);}
.notice-warn{border-color:var(--warn); color:var(--warn); background:rgba(154,107,20,.06);}

.formrow{margin-bottom:16px;}
.formrow label{display:block; font-family:var(--serif); text-transform:uppercase; letter-spacing:.05em; font-size:13px; color:var(--ink-soft); margin-bottom:4px;}
.login-card{max-width:380px; margin:8vh auto; background:var(--paper); border:1px solid var(--ink); padding:30px;}
.login-card h1{font-family:var(--serif); font-size:26px; margin:0 0 4px;}

@media (max-width:720px){
  body{font-size:17px;}
  .broadsheet{grid-template-columns:1fr;}
  .topnav .wrap{justify-content:flex-start; padding:0;}
  .topnav .nav-burger{
    display:flex; align-items:center; gap:10px; width:100%;
    padding:12px 18px; color:var(--paper); cursor:pointer;
    font-family:var(--serif); text-transform:uppercase; letter-spacing:.08em; font-size:14px;
  }
  .topnav .nav-burger-icon{
    width:22px; height:2px; background:var(--paper); position:relative; display:inline-block;
  }
  .topnav .nav-burger-icon::before,
  .topnav .nav-burger-icon::after{
    content:""; position:absolute; left:0; width:22px; height:2px; background:var(--paper);
  }
  .topnav .nav-burger-icon::before{top:-7px;}
  .topnav .nav-burger-icon::after{top:7px;}
  .topnav .navlinks{
    display:none; flex-direction:column; gap:0; width:100%;
    border-top:1px solid #000;
  }
  .topnav .navlinks a,
  .topnav .navlinks .soon{
    padding:12px 22px; font-size:15px; border-bottom:1px solid rgba(255,255,255,.08);
  }
  .topnav .navlinks a:hover{border-bottom:1px solid rgba(255,255,255,.08);}
  /* checkbox-driven open state */
  .topnav .nav-cb:checked ~ .navlinks{display:flex;}
  .topnav .navsearch{width:100%; padding:8px 16px 12px;}
  .topnav .navsearch input{width:100%;}
  .topnav .nav-cb:focus-visible ~ .nav-burger{outline:2px solid var(--accent); outline-offset:-2px;}
}

/* --- Ad placements (all framed as cards) --- */
.ad-zone{margin:16px auto;}
.ad-zone.ad-leaderboard{max-width:760px;}
.ad-zone .zone-body.ad-body{text-align:center; padding:12px; line-height:0;}
.ad-zone iframe{max-width:100%; border:0; vertical-align:middle;}
.ad-creative{display:inline-block; text-decoration:none; color:var(--ink); max-width:100%; line-height:1.4;}
.ad-creative img{display:block; max-width:100%; height:auto; margin:0 auto;}
.ad-creative .ad-text{display:block; font-family:var(--serif); font-size:15px; margin-top:8px;}

/* --- Events calendar --- */
.cal-nav{display:flex; align-items:center; justify-content:space-between; gap:10px; margin:6px 0 12px;}
.cal-nav .cal-month{font-family:var(--serif); font-size:20px;}
.cal{width:100%; border-collapse:collapse; border:1px solid var(--line); background:var(--paper); table-layout:fixed;}
.cal th{font-family:var(--serif); text-transform:uppercase; letter-spacing:.06em; font-size:11px; color:var(--muted); padding:6px 4px; border:1px solid var(--line); background:var(--paper-2);}
.cal td{border:1px solid var(--line); vertical-align:top; height:92px; padding:3px 4px; font-size:12px;}
.cal td.cal-empty{background:var(--paper-2);}
.cal .cal-day{display:block; font-weight:bold; color:var(--muted); font-size:11px; margin-bottom:2px;}
.cal td.cal-today{outline:2px solid var(--accent); outline-offset:-2px;}
.cal .cal-ev{display:block; margin-top:2px; background:var(--paper-2); border-left:2px solid var(--accent); padding:1px 4px; font-size:11px; line-height:1.3; color:var(--ink); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.cal .cal-ev:hover{background:#efe7d6;}
.cal .cal-ev-time{color:var(--accent); font-weight:bold;}
.cal-agenda{list-style:none; padding:0; margin:8px 0 0;}
.cal-agenda li{display:flex; gap:12px; padding:8px 0; border-bottom:1px solid var(--line); font-size:15px;}
.cal-agenda .cal-agenda-date{flex:0 0 150px; font-family:var(--serif); color:var(--muted);}
@media (max-width:640px){ .cal td{height:auto; min-height:46px;} .cal .cal-ev{font-size:10px;} .cal-agenda li{flex-direction:column; gap:2px;} .cal-agenda .cal-agenda-date{flex:none;} }

/* --- Admin dashboard --- */
.dash-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr)); gap:12px;}
.dash-tile{display:block; border:1px solid var(--line); background:var(--paper); padding:14px; text-decoration:none; color:var(--ink);}
.dash-tile .n{font-family:var(--serif); font-size:30px; line-height:1;}
.dash-tile .l{font-size:13px; font-weight:bold; margin-top:4px;}
.dash-tile .h{font-size:11px; color:var(--muted); margin-top:3px; line-height:1.3;}
.dash-tile:hover{border-color:var(--ink);}
.dash-tile.alert{border-color:var(--accent); background:#f7ecec;}
.dash-tile.alert .n{color:var(--accent);}
.nav-badge{display:inline-block; min-width:16px; padding:0 4px; margin-left:3px; background:var(--accent); color:#fff; border-radius:8px; font-size:10px; line-height:16px; text-align:center; vertical-align:middle;}

/* --- Static pages --- */
.page-body{font-size:17px; line-height:1.7;}
.page-body h2{font-family:var(--serif); font-size:24px; margin:24px 0 8px;}
.page-body h3{font-family:var(--serif); font-size:19px; margin:20px 0 6px;}
.page-body p{margin:0 0 14px;}
.page-body ul{margin:0 0 14px; padding-left:22px;}
.page-body li{margin-bottom:6px;}

/* --- Admin nav dropdown --- */
.adminbar .navmenu{position:relative;}
.adminbar .navmenu>summary{list-style:none; cursor:pointer; color:#f1d9a6; font-family:var(--serif); text-transform:uppercase; letter-spacing:.05em; font-size:13px;}
.adminbar .navmenu>summary::-webkit-details-marker{display:none;}
.adminbar .navmenu>summary::marker{content:"";}
.adminbar .navmenu>summary:hover{color:#fff;}
.adminbar .navmenu .menu{position:absolute; top:calc(100% + 8px); left:0; z-index:60; background:var(--ink); border:1px solid var(--accent); min-width:190px; padding:6px 0; box-shadow:0 8px 22px rgba(0,0,0,.35);}
.adminbar .navmenu .menu a{display:block; padding:7px 16px; font-size:13px;}
.adminbar .navmenu .menu a:hover{background:rgba(255,255,255,.06);}
.adminbar .sep{width:1px; height:16px; background:rgba(255,255,255,.18);}

/* --- 'More' button used in section headers (public side) --- */
.btn-more{
  display:inline-block;
  font-family:var(--serif);
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.1em;
  font-weight:400;
  color:var(--accent);
  background:transparent;
  border:1px solid var(--accent);
  padding:3px 11px 4px;
  text-decoration:none;
  line-height:1;
  transition:background-color .15s ease, color .15s ease;
}
.btn-more::after{content:" \2192"; margin-left:2px;}
.btn-more:hover{background:var(--accent); color:var(--paper);}

/* --- Public top-nav dropdown ('News' menu) --- */
.topnav .navmenu{position:relative;}
.topnav .navmenu > summary{
  list-style:none; cursor:pointer;
  font-family:var(--serif); text-transform:uppercase; letter-spacing:.06em;
  font-size:13px; padding:3px 2px; color:var(--paper);
}
.topnav .navmenu > summary::-webkit-details-marker{display:none;}
.topnav .navmenu > summary::marker{content:"";}
.topnav .navmenu > summary::after{content:" \25BE"; font-size:10px; margin-left:3px; opacity:.75;}
.topnav .navmenu > summary:hover, .topnav .navmenu[open] > summary{color:#fff;}
.topnav .navmenu .menu{
  position:absolute; top:calc(100% + 9px); left:-14px;
  background:var(--paper); border:1px solid var(--ink);
  min-width:180px; padding:6px 0;
  box-shadow:0 8px 22px rgba(0,0,0,.35); z-index:60;
}
.topnav .navmenu .menu a{
  display:block; padding:7px 18px;
  font-family:var(--serif); font-size:14px;
  text-transform:none; letter-spacing:0;
  color:var(--ink); border:0;
}
.topnav .navmenu .menu a:hover{background:var(--accent); color:var(--paper); border:0;}

/* =====================================================================
   River Report — surf-report styling
   ===================================================================== */
.rr-page{max-width:980px; margin:0 auto;}
.rr-pagehead{margin:0 0 18px;}
.rr-pagehead h1{font-family:var(--serif); font-size:clamp(28px,4.6vw,40px); line-height:1.05; margin:0 0 6px;}
.rr-h3{font-family:var(--serif); font-size:20px; margin:0 0 10px; border-bottom:1px solid var(--line); padding-bottom:6px; text-transform:uppercase; letter-spacing:.08em;}
.rr-block{margin:24px 0;}

/* tones (status & verdict pills + hero accent) */
.rr-tone-ok   {--tone:#256a3a; --tonebg:#eef7f0;}
.rr-tone-warn {--tone:#8a5a14; --tonebg:#fbf3e3;}
.rr-tone-bad  {--tone:var(--accent); --tonebg:#f7eceb;}

.rr-status, .rr-verdict{
  display:inline-block;
  font-family:var(--serif); font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  padding:3px 9px; border:1px solid var(--tone); color:var(--tone); background:var(--tonebg);
}
.rr-verdict{font-weight:bold;}
.rr-num{font-family:var(--serif); font-size:38px; font-weight:700; line-height:1; color:var(--ink);}
.rr-num-sm{font-family:var(--serif); font-size:20px; font-weight:700; line-height:1;}
.rr-unit{font-size:.5em; font-weight:400; color:var(--ink-soft); margin-left:1px;}
.rr-sub{font-size:12px; color:var(--ink-soft); margin-top:4px;}
.rr-lbl{font-family:var(--serif); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-top:6px;}

/* hero card */
.rr-hero{
  border:1px solid var(--tone, var(--line)); background:var(--paper);
  padding:18px 22px; margin:0 0 24px; position:relative;
  border-left:6px solid var(--tone, var(--accent));
}
.rr-hero-eyebrow{font-family:var(--serif); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); margin:0;}
.rr-hero-title{font-family:var(--serif); font-size:30px; line-height:1.05; margin:2px 0 4px;}
.rr-hero-where{font-size:13px; margin-bottom:14px;}
.rr-hero-stats{display:grid; grid-template-columns:1fr 1fr auto; gap:24px; align-items:end;}
.rr-hero-stat .rr-num{font-size:46px;}
.rr-hero-spark{align-self:end; text-align:right; color:var(--accent);}
.rr-hero-foot{display:flex; gap:10px; margin-top:16px; flex-wrap:wrap;}

/* float sections list */
.rr-sections{display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,1fr));}
.rr-river-label{
  grid-column:1/-1; background:var(--paper-2); padding:6px 10px;
  font-family:var(--serif); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft);
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.rr-section{
  display:grid; grid-template-columns:1fr auto; gap:8px 14px;
  padding:10px 14px; background:var(--paper); align-items:center;
  border-bottom:1px solid var(--line); border-right:1px solid var(--line);
}
.rr-section-name{font-family:var(--serif); font-size:15px; line-height:1.2;}
.rr-section-gauge{grid-column:1; font-size:12px; margin-top:1px;}
.rr-section .rr-verdict{grid-column:2; grid-row:1 / span 2; align-self:center;}

/* gauge cards grid */
.rr-gauges{display:grid; grid-template-columns:repeat(auto-fit, minmax(260px,1fr)); gap:12px;}
.rr-gauge{
  border:1px solid var(--line); background:var(--paper);
  padding:12px 14px; display:flex; flex-direction:column; gap:6px;
}
.rr-gauge-head{display:flex; justify-content:space-between; align-items:center; gap:8px;}
.rr-gauge-name{font-family:var(--serif); font-size:18px; font-weight:700; line-height:1.1;}
.rr-gauge-where{font-size:12px; line-height:1.3;}
.rr-gauge-stats{display:flex; gap:18px; align-items:baseline; margin-top:4px;}
.rr-gauge-stats strong{font-family:var(--serif); font-size:22px; font-weight:700;}
.rr-gauge-foot{display:flex; justify-content:space-between; align-items:center; gap:10px; color:var(--accent); font-size:12px;}
.rr-trend{font-family:var(--serif); letter-spacing:.04em;}
.rr-gauge-thresh{font-size:11px; line-height:1.3;}
.rr-gauge-link{font-size:11px; align-self:flex-start;}
.rr-source{font-size:12px; text-align:center; margin:28px 0 0;}

/* sparklines */
.rr-spark{display:inline-block; vertical-align:middle;}
.rr-spark-wrap{display:inline-flex; align-items:center;}

/* front-page hero compact */
.rr-home{padding:14px;}
.rr-home-eyebrow{font-family:var(--serif); font-size:12px; letter-spacing:.08em; color:var(--ink-soft);}
.rr-home-row{display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center; margin-top:8px;}
.rr-home-stage .rr-num{font-size:34px;}
.rr-home-flow{font-size:13px;}
.rr-home-spark{color:var(--accent); text-align:right;}
.rr-home-foot{display:flex; gap:8px; margin-top:10px; flex-wrap:wrap;}
.rr-home-meta{font-size:11px; margin-top:8px;}

@media (max-width: 680px){
  .rr-hero-stats{grid-template-columns:1fr 1fr;}
  .rr-hero-spark{grid-column:1/-1; text-align:left;}
  .rr-home-row{grid-template-columns:1fr auto;}
  .rr-home-spark{grid-column:1/-1; text-align:left;}
}

/* anomaly / offline states */
.rr-anomaly{color:var(--muted) !important; font-style:italic;}
.rr-gauge-offline{opacity:.78; background:var(--paper-2);}
.rr-gauge-offline .rr-gauge-name{color:var(--ink-soft);}

/* =====================================================================
   Amazon affiliate banners
   ===================================================================== */
.amzn-ad{display:block; text-decoration:none; color:var(--ink); background:var(--paper); border:1px solid var(--line); position:relative;}
.amzn-ad:hover{border-color:var(--accent);}
.amzn-ad .amzn-img{display:block; max-width:100%; height:auto;}
.amzn-ad .amzn-meta{padding:8px 10px;}
.amzn-ad .amzn-title{font-family:var(--serif); font-size:14px; line-height:1.25; color:var(--ink); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.amzn-ad .amzn-desc{font-size:11px; color:var(--ink-soft); margin-top:3px; line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.amzn-ad .amzn-price{margin-top:5px; font-family:var(--serif); font-weight:bold; color:var(--accent); font-size:15px;}
.amzn-ad .amzn-price .amzn-as-of{font-size:10px; color:var(--muted); font-weight:normal; margin-left:4px; letter-spacing:.04em;}
.amzn-ad .amzn-cta{display:none;}
.amzn-ad .amzn-disclose{font-size:9px; color:var(--muted); padding:4px 10px 6px; line-height:1.25; text-align:center; border-top:1px dashed var(--line); font-style:italic;}

/* 300x250 rectangle (sidebar) */
.amzn-ad-rect{display:flex; flex-direction:column;}
.amzn-ad-rect .amzn-img{aspect-ratio:4/3; object-fit:contain; background:#fff; padding:6px;}
.amzn-ad-rect .amzn-meta{flex:1;}

/* 728x90 leaderboard (footer) */
.amzn-ad-banner{display:grid; grid-template-columns:80px minmax(0, 1fr) auto; grid-template-rows:1fr auto; gap:0; align-items:center;}
.amzn-ad-banner .amzn-img{width:80px; height:80px; object-fit:contain; background:#fff; padding:4px; grid-row:1; grid-column:1;}
.amzn-ad-banner .amzn-meta{grid-row:1; grid-column:2; padding:6px 12px; min-width:0; text-align:left;}
.amzn-ad-banner .amzn-title{font-size:14px; -webkit-line-clamp:1;}
.amzn-ad-banner .amzn-desc{display:none;}
.amzn-ad-banner .amzn-price{margin-top:3px; font-size:13px;}
.amzn-ad-banner .amzn-cta{display:block; grid-row:1; grid-column:3; padding:0 16px; font-family:var(--serif); font-size:12px; color:var(--accent); white-space:nowrap; letter-spacing:.06em; text-transform:uppercase; text-align:center; align-self:center;}
.amzn-ad-banner .amzn-disclose{grid-row:2; grid-column:1/-1; border-top:1px dashed var(--line);}

/* sensor reading shown with a warning rather than hidden — transparent but visually flagged */
.rr-num.rr-suspect, strong.rr-suspect{color:var(--muted); text-decoration:line-through; text-decoration-color:rgba(125,43,43,.45); text-decoration-thickness:1.5px;}
.rr-warn-tag{display:inline-block; font-size:.65em; padding:1px 6px; border:1px solid #8a5a14; color:#8a5a14; background:#fbf3e3; font-weight:normal; letter-spacing:.06em; vertical-align:middle; margin-left:4px; font-style:italic;}

/* directory header: + Add a business CTA */
.cp-head{display:flex; justify-content:space-between; align-items:flex-end; gap:18px; margin-bottom:12px; flex-wrap:wrap;}
.cp-head-actions{display:flex; gap:8px; flex-wrap:wrap;}

/* chain businesses are still listed but visually downranked */
.cp-card-chain{opacity:.78; background:var(--paper-2);}
.cp-card-chain:hover{opacity:1;}
.cp-card-chain .cp-title a{color:var(--ink-soft);}
.cp-tag-chain{display:inline-block; font-size:10px; letter-spacing:.08em; text-transform:uppercase; padding:2px 6px; background:var(--paper-3, #eae4d3); color:var(--ink-soft); border:1px solid var(--line); margin-left:6px; font-style:italic;}

/* ---- v0.20.1: business photos ---- */

/* Card thumbnail — 16:9 banner above the existing card meta */
.cp-card-with-photo{padding-top:0;}
.cp-card-photo{display:block; aspect-ratio:16/9; overflow:hidden; background:var(--paper-2); margin:0 calc(-1 * var(--card-padding, 14px)) 10px; border-bottom:1px solid var(--line);}
.cp-card-photo img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .25s ease;}
.cp-card-with-photo:hover .cp-card-photo img{transform:scale(1.03);}

/* Detail-page hero — full width of the article column, soft framing */
figure.biz-hero{margin:0 0 20px; padding:0; border:1px solid var(--line); background:var(--paper-2);}
figure.biz-hero img{display:block; width:100%; height:auto; max-height:440px; object-fit:cover;}

/* ---- v0.21.0: /government page ---- */
.gov-jumpnav{display:flex; flex-wrap:wrap; gap:0; margin:18px 0 24px; padding:8px 12px; background:var(--paper-2); border:1px solid var(--line); font-family:var(--serif); font-size:13px; text-transform:uppercase; letter-spacing:.08em;}
.gov-jumpnav a{padding:4px 12px; color:var(--ink); text-decoration:none; border-right:1px solid var(--line);}
.gov-jumpnav a:last-child{border-right:none;}
.gov-jumpnav a:hover{color:var(--accent); background:var(--paper);}

.gov-section{margin:32px 0; padding-top:16px; border-top:2px solid var(--ink);}
.gov-section:first-of-type{border-top:none; padding-top:0;}
.gov-section-title{font-family:var(--serif); font-size:clamp(22px, 3.5vw, 28px); margin:0 0 4px; color:var(--ink);}
.gov-town{font-family:var(--serif); font-size:18px; margin:20px 0 8px; color:var(--accent); text-transform:uppercase; letter-spacing:.06em;}

.gov-list{list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:14px;}
.gov-entry{display:flex; gap:12px; padding:12px; border:1px solid var(--line); background:var(--paper); align-items:flex-start;}
.gov-entry:hover{border-color:var(--accent);}
.gov-thumb{flex:0 0 80px; width:80px; height:80px; overflow:hidden; background:var(--paper-2);}
.gov-thumb img{width:100%; height:100%; object-fit:cover; display:block;}
.gov-body{flex:1; min-width:0;}
.gov-name{font-family:var(--serif); font-size:17px; margin:0 0 4px; line-height:1.2;}
.gov-name a{color:var(--ink); text-decoration:none;}
.gov-name a:hover{color:var(--accent);}
.gov-desc{font-size:13px; color:var(--ink-soft); margin:0 0 6px; line-height:1.4;}
.gov-meta{display:flex; flex-direction:column; gap:2px; font-size:12px; color:var(--muted);}
.gov-meta a{color:var(--muted);}
.gov-meta a:hover{color:var(--accent);}

/* ---- v0.21.2: classifieds photos ---- */
/* Post-listing form: 3-slot photo grid */
.lst-photo-grid{display:grid; grid-template-columns:repeat(3, 1fr); gap:10px;}
.lst-photo-slot{border:1px solid var(--line); padding:8px; background:var(--paper-2); display:flex; flex-direction:column; gap:6px;}
.lst-photo-preview{width:100%; aspect-ratio:1; object-fit:cover; border:1px solid var(--line); display:block;}
.lst-photo-empty{aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--paper); border:1px dashed var(--line); color:var(--muted); font-size:13px;}
.lst-photo-remove{font-family:var(--body); font-size:12px; text-transform:none; letter-spacing:0; color:var(--muted);}
.lst-photo-slot input[type=file]{font-size:12px;}
@media (max-width: 540px){ .lst-photo-grid{grid-template-columns:1fr; } }

/* Listing detail: photo gallery */
.lst-gallery img{max-width:100%; display:block; border:1px solid var(--line);}
.lst-hero{width:100%; max-height:520px; object-fit:contain; background:var(--paper-2);}
.lst-gallery-main{width:100%; max-height:480px; object-fit:contain; background:var(--paper-2); margin-bottom:8px;}
.lst-gallery-thumbs{display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:8px;}
.lst-gallery-thumbs img{width:100%; aspect-ratio:1; object-fit:cover; cursor:zoom-in; transition:transform .15s ease;}
.lst-gallery-thumbs img:hover{transform:scale(1.02);}

/* Browse cards: top thumbnail when photo present */
.lst-card-photo{display:block; overflow:hidden; background:var(--paper-2); aspect-ratio:16/9;}
.lst-card-photo img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .25s ease;}
.lst-card-with-photo:hover .lst-card-photo img{transform:scale(1.03);}

/* ---- v0.21.3: Front-page classifieds rows + sidebar mini-list ---- */
/* Main-column "Latest Classifieds" rows — left-side photo chip when present */
.lst-front-row{display:flex; gap:12px; padding:8px 0; border-bottom:1px solid var(--line); align-items:flex-start;}
.lst-front-row:last-of-type{border-bottom:none;}
.lst-front-chip{flex:0 0 56px; width:56px; height:56px; overflow:hidden; background:var(--paper-2); border:1px solid var(--line); display:block;}
.lst-front-chip img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .2s ease;}
.lst-front-chip:hover img{transform:scale(1.04);}
.lst-front-body{flex:1; min-width:0;}

/* Sidebar mini-listing rows — tighter, smaller chip, two-line title */
.lst-side-row{display:flex; gap:10px; padding:8px 0; border-bottom:1px solid var(--line); align-items:flex-start; color:var(--ink); text-decoration:none; min-height:56px;}
.lst-side-row:last-of-type{border-bottom:none;}
.lst-side-row:hover .lst-side-title{color:var(--accent);}
.lst-side-chip{flex:0 0 48px; width:48px; height:48px; object-fit:cover; border:1px solid var(--line); display:block; background:var(--paper-2);}
.lst-side-chip-empty{background:var(--paper-2); border:1px dashed var(--line);}
.lst-side-body{flex:1; min-width:0;}
.lst-side-title{font-family:var(--serif); font-size:15px; line-height:1.2; color:var(--ink);
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.lst-side-meta{font-size:11px; color:var(--muted); margin-top:3px; text-transform:uppercase; letter-spacing:.04em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
