/* ============================================================
   TOKENS
   ============================================================ */
:root{
  --paper: #F4EEDD;
  --paper-2: #ECE2C6;
  --paper-3: #E4D6AE;
  --ink: #16223B;
  --ink-2: #2C4270;
  --oxblood: #7C2431;
  --oxblood-2: #9C3140;
  --brass: #A07C2C;
  --brass-light: #C9A24A;
  --charcoal: #262420;
  --charcoal-soft: #514C42;
  --line: rgba(22,34,59,0.20);
  --line-soft: rgba(22,34,59,0.12);
  --shadow: 0 1px 2px rgba(22,34,59,0.06), 0 8px 24px -12px rgba(22,34,59,0.25);
  --radius: 3px;
  --max: 1180px;
  --measure: 68ch;
  --serif-display: "Libre Caslon Display", "Iowan Old Style", Georgia, serif;
  --serif-text: "Libre Caslon Text", Georgia, serif;
  --sans: "Public Sans", -apple-system, "Segoe UI", sans-serif;
}

@media (prefers-color-scheme: dark){
  /* Intentionally not switching to a dark theme — this is a paper-and-ink
     civic record and should read the same in any light. */
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important; }
}

body{
  margin:0;
  background:var(--paper);
  background-image:
    radial-gradient(ellipse at top left, rgba(160,124,44,0.07), transparent 45%),
    radial-gradient(ellipse at bottom right, rgba(124,36,49,0.05), transparent 50%);
  color:var(--charcoal);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

a{ color:var(--ink-2); text-decoration-color:rgba(44,66,112,0.35); text-underline-offset:3px; }
a:hover{ color:var(--oxblood); text-decoration-color:currentColor; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible{
  outline:2px solid var(--oxblood-2);
  outline-offset:2px;
  border-radius:2px;
}

.wrap{ max-width:var(--max); margin:0 auto; padding:0 24px; }

/* ============================================================
   SEAL (signature element)
   ============================================================ */
.seal{ width:56px; height:56px; flex:0 0 auto; }
.seal .ring{ fill:none; stroke:var(--ink); stroke-width:1.1; }
.seal .ring-inner{ fill:none; stroke:var(--brass); stroke-width:0.8; }
.seal .star{ fill:var(--oxblood); }
.seal .star-brass{ fill:var(--brass); }

/* ============================================================
   MASTHEAD
   ============================================================ */
.masthead{
  padding:34px 0 20px;
  border-bottom:1px solid var(--ink);
  box-shadow:0 3px 0 -2px var(--paper), 0 4px 0 -2px var(--brass-light);
  margin-bottom:6px;
  position:sticky; top:0; z-index:100;
  background:var(--paper);
  transition:padding .22s ease;
}
.masthead .wrap{ transition:none; }
.masthead.is-compact{ padding:10px 0; }
.masthead.is-compact .masthead-tagline,
.masthead.is-compact .masthead-meta{
  max-height:0; opacity:0; margin:0; overflow:hidden;
  transition:max-height .18s ease, opacity .15s ease, margin .18s ease;
}
.masthead .masthead-tagline, .masthead .masthead-meta{
  max-height:60px; opacity:1;
  transition:max-height .22s ease, opacity .2s ease .05s, margin .22s ease;
}
.masthead.is-compact .seal{ width:34px; height:34px; }
.masthead.is-compact .masthead-title{ font-size:1.35rem; }
.masthead.is-compact .masthead-title small{ display:none; }
.seal{ transition:width .22s ease, height .22s ease; }
.masthead-title{ transition:font-size .22s ease; }
@media (prefers-reduced-motion: reduce){
  .masthead, .masthead .masthead-tagline, .masthead .masthead-meta, .seal, .masthead-title{ transition:none !important; }
}
.masthead-row{ display:flex; align-items:center; gap:18px; }
.masthead-title{
  font-family:var(--serif-display);
  font-size:clamp(2rem, 5vw, 3.1rem);
  letter-spacing:0.01em;
  color:var(--ink);
  margin:0;
  line-height:1;
}
.masthead-title small{
  display:block;
  font-family:var(--sans);
  font-size:0.72rem;
  font-weight:600;
  letter-spacing:0.16em;
  color:var(--oxblood);
  text-transform:uppercase;
  margin-bottom:6px;
}
.masthead-tagline{
  font-family:var(--serif-text);
  font-style:italic;
  color:var(--charcoal-soft);
  margin:10px 0 0;
  font-size:1.02rem;
}
.masthead-meta{
  display:flex; flex-wrap:wrap; gap:0 14px;
  margin-top:16px;
  font-size:0.78rem;
  letter-spacing:0.03em;
  text-transform:uppercase;
  color:var(--charcoal-soft);
  font-weight:600;
}
.masthead-meta span{ display:inline-flex; align-items:center; gap:6px; }
.masthead-meta .star-sep::before{ content:"★"; color:var(--brass); font-size:0.6rem; margin-right:14px; }
.mast-nav-link{ color:var(--oxblood); font-weight:700; text-decoration:none; }
.mast-nav-link:hover{ text-decoration:underline; }

/* ============================================================
   MEDIA LOG PAGE
   ============================================================ */
.medialog-intro{ padding:18px 0 4px; }
.medialog-intro h2{ font-family:var(--serif-display); font-size:1.7rem; color:var(--ink); margin:0 0 8px; }
.medialog-intro p{ font-size:0.92rem; color:var(--charcoal-soft); max-width:70ch; line-height:1.55; margin:0 0 6px; }
.medialog-stats{
  display:flex; flex-wrap:wrap; gap:10px; margin:16px 0 8px;
}
.stat-chip{
  border:1px solid var(--line); background:#FFFCF3; border-radius:2px;
  padding:8px 14px; font-size:0.8rem; color:var(--charcoal-soft);
  font-family:var(--sans); text-align:left;
}
.stat-chip strong{ display:block; font-family:var(--serif-display); font-size:1.3rem; color:var(--ink); line-height:1.1; }
button.stat-chip.clickable{
  cursor:pointer; transition:border-color .15s ease, box-shadow .15s ease;
}
button.stat-chip.clickable:hover, button.stat-chip.clickable.is-open{
  border-color:var(--brass); box-shadow:0 1px 2px rgba(22,34,59,0.06);
}
.chip-caret{
  display:inline-block; color:var(--brass); font-size:0.7em; margin-left:2px;
  transition:transform .15s ease;
}
button.stat-chip.clickable.is-open .chip-caret{ transform:rotate(180deg); }

.outlet-breakdown{
  margin:4px 0 14px; padding:16px 18px; border:1px dashed var(--line);
  border-radius:var(--radius); background:#FFFCF3;
  animation:fadein .2s ease both;
}
.outlet-breakdown-label{
  font-size:0.7rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--charcoal-soft); margin-bottom:12px;
}
.outlet-breakdown-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));
  gap:6px 10px; max-height:340px; overflow-y:auto;
}
.outlet-breakdown-groups{
  max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:16px;
}
.outlet-group-label{
  font-family:var(--serif-display); font-size:0.95rem; color:var(--oxblood);
  border-bottom:1px solid var(--line-soft); padding-bottom:4px; margin-bottom:8px;
}
.outlet-group-count{
  font-family:var(--sans); font-size:0.72rem; font-weight:600; color:var(--charcoal-soft);
}
.outlet-group-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));
  gap:4px 10px;
}
.outlet-item{
  display:flex; justify-content:space-between; align-items:center; gap:8px;
  font-family:var(--sans); font-size:0.82rem; text-align:left;
  background:none; border:1px solid transparent; border-radius:2px;
  padding:5px 8px; cursor:pointer; color:var(--charcoal);
}
.outlet-item:hover{ background:rgba(160,124,44,0.08); border-color:var(--line); }
.outlet-item .outlet-name{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.outlet-item .outlet-count{
  flex:0 0 auto; font-weight:700; color:var(--brass); font-variant-numeric:tabular-nums;
}
.medialog-table-wrap{
  overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius);
  background:#FFFCF3; margin-bottom:50px;
}
table.medialog{ width:100%; border-collapse:collapse; font-size:0.85rem; }
table.medialog th{
  text-align:left; padding:10px 14px; background:var(--ink); color:#FFFCF3;
  font-weight:700; font-size:0.7rem; letter-spacing:0.06em; text-transform:uppercase;
  position:sticky; top:0;
}
table.medialog td{ padding:9px 14px; border-top:1px solid var(--line-soft); vertical-align:top; }
table.medialog tr:nth-child(even) td{ background:rgba(160,124,44,0.035); }
table.medialog .col-date{ white-space:nowrap; font-weight:600; color:var(--charcoal-soft); font-size:0.8rem; }
table.medialog a.row-link{ color:inherit; text-decoration:none; border-bottom:1px dotted var(--line); }
table.medialog a.row-link:hover{ color:var(--oxblood); border-bottom-color:var(--oxblood); }
table.medialog .col-type{ white-space:nowrap; }
table.medialog .col-station{ font-weight:700; color:var(--ink); white-space:nowrap; }
table.medialog .col-market{ color:var(--charcoal-soft); font-size:0.8rem; white-space:nowrap; }
table.medialog .col-topic{ color:var(--charcoal); }
table.medialog .no-topic{ color:#b3a98f; font-style:italic; }
.type-pill{
  display:inline-block; font-size:0.65rem; font-weight:700; letter-spacing:0.05em;
  text-transform:uppercase; padding:2px 7px; border-radius:2px; border:1px solid;
}
.type-pill.Radio{ color:var(--ink-2); border-color:var(--ink-2); }
.type-pill.TV{ color:var(--oxblood); border-color:var(--oxblood); }
.type-pill.Podcast{ color:var(--brass); border-color:var(--brass); }
.type-pill.Video, .type-pill.Livestream, .type-pill.Vlog{ color:#5c7a52; border-color:#5c7a52; }
.type-pill.Letter-to-the-Editor{ color:#6b4a8a; border-color:#6b4a8a; }

/* ============================================================
   TOOLBAR
   ============================================================ */
.toolbar{ padding:22px 0 10px; }
.search-field{
  position:relative;
  margin-bottom:16px;
}
.search-label{
  display:block;
  font-size:0.72rem;
  font-weight:700;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color:var(--ink);
  margin-bottom:6px;
}
.search-input{
  width:100%;
  font-family:var(--serif-text);
  font-size:1.15rem;
  padding:12px 16px 12px 42px;
  border:1.5px solid var(--ink);
  background:#FFFCF3;
  border-radius:var(--radius);
  color:var(--charcoal);
}
.search-input::placeholder{ color:#9a9080; font-style:italic; }
.search-icon{
  position:absolute; left:14px; top:41px;
  width:18px; height:18px; color:var(--brass); pointer-events:none;
}
.filters{
  display:flex; flex-wrap:wrap; gap:14px 18px; align-items:end;
  padding-bottom:16px;
  border-bottom:1px solid var(--line);
}
.filter-group{ display:flex; flex-direction:column; gap:5px; }
.filter-group label{
  font-size:0.68rem; font-weight:700; letter-spacing:0.1em;
  text-transform:uppercase; color:var(--charcoal-soft);
}
.filter-group select{
  font-family:var(--sans); font-size:0.88rem; font-weight:500;
  padding:7px 30px 7px 10px; border:1px solid var(--line);
  background:#FFFCF3 url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6"><path d="M0 0l5 6 5-6z" fill="%232C4270"/></svg>') no-repeat right 10px center;
  color:var(--charcoal); border-radius:2px; appearance:none; cursor:pointer;
  min-width:150px;
}
.filter-group select:hover{ border-color:var(--brass); }
.clear-btn{
  font-family:var(--sans); font-size:0.8rem; font-weight:600;
  color:var(--oxblood); background:none; border:none; cursor:pointer;
  padding:7px 0; text-decoration:underline; text-underline-offset:3px;
  letter-spacing:0.02em;
}
.clear-btn:hover{ color:var(--oxblood-2); }
.archive-toggle{
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  font-family:var(--sans); font-size:0.84rem; color:var(--charcoal);
  padding:12px 0 4px; cursor:pointer;
}
.archive-toggle input{ cursor:pointer; }
.archive-toggle-note{ font-size:0.76rem; color:var(--charcoal-soft); font-style:italic; }
tr.is-archive-row{ background:rgba(160,124,44,0.06); }
tr.is-archive-row:nth-child(even) td{ background:rgba(160,124,44,0.1); }
.archive-badge{
  display:inline-block; font-size:0.62rem; font-weight:800; letter-spacing:0.05em;
  text-transform:uppercase; color:var(--brass); border:1px solid var(--brass);
  border-radius:2px; padding:1px 5px; margin-right:5px;
}
.results-row{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:14px 0 4px;
  font-size:0.82rem; color:var(--charcoal-soft);
}
.results-row strong{ color:var(--ink); }

/* ============================================================
   CARD GRID
   ============================================================ */
.grid{
  display:grid; grid-template-columns:1fr; gap:16px;
  padding:12px 0 60px;
}
@media (min-width:860px){ .grid{ grid-template-columns:1fr 1fr; } }

.card{
  background:#FFFCF3;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:18px 20px 16px;
  display:flex; flex-direction:column; gap:8px;
  box-shadow:var(--shadow);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.card:hover{ transform:translateY(-2px); border-color:var(--brass); box-shadow:0 2px 4px rgba(22,34,59,0.08), 0 14px 28px -14px rgba(124,36,49,0.35); }
.card-external{ border-left:3px solid var(--brass); }

.card-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.stamp{
  display:inline-block;
  font-size:0.65rem; font-weight:700; letter-spacing:0.09em; text-transform:uppercase;
  color:var(--ink-2); border:1px solid var(--ink-2); border-radius:2px;
  padding:2px 7px; white-space:nowrap;
}
.stamp.badge-type{ color:var(--oxblood); border-color:var(--oxblood); margin-left:6px; }
.card-date{ font-size:0.72rem; color:var(--charcoal-soft); font-weight:600; letter-spacing:0.03em; white-space:nowrap; padding-top:2px; }

.card-title{
  font-family:var(--serif-display); font-size:1.28rem; line-height:1.22;
  margin:2px 0 0; color:var(--ink);
}
.card-title a{ color:inherit; text-decoration:none; }
.card-title a:hover{ color:var(--oxblood); }
.card-byline{ font-size:0.78rem; color:var(--charcoal-soft); font-weight:600; }
.card-excerpt{ font-size:0.9rem; color:var(--charcoal); line-height:1.5; margin:2px 0 4px; }
.card-foot{
  margin-top:auto; padding-top:10px; border-top:1px dashed var(--line-soft);
  display:flex; justify-content:space-between; align-items:center;
  font-size:0.78rem;
}
.read-link{ font-weight:700; color:var(--oxblood); text-decoration:none; }
.read-link:hover{ text-decoration:underline; }
.source-tag{ color:var(--charcoal-soft); font-style:italic; font-family:var(--serif-text); }

.empty-state{
  padding:60px 20px; text-align:center; color:var(--charcoal-soft);
  border:1px dashed var(--line); border-radius:var(--radius); background:#FFFCF3;
}
.empty-state h3{ font-family:var(--serif-display); color:var(--ink); font-size:1.4rem; margin:0 0 8px; }
.empty-state button{
  margin-top:14px; font-family:var(--sans); font-weight:700; font-size:0.85rem;
  color:#FFFCF3; background:var(--oxblood); border:none; padding:9px 18px;
  border-radius:2px; cursor:pointer;
}
.empty-state button:hover{ background:var(--oxblood-2); }

/* ============================================================
   ARTICLE DETAIL
   ============================================================ */
.detail{ padding:8px 0 80px; max-width:var(--measure); margin:0 auto; }
.back-link{
  display:inline-flex; align-items:center; gap:6px;
  font-size:0.82rem; font-weight:700; color:var(--ink-2);
  text-decoration:none; margin:18px 0 22px;
}
.back-link:hover{ color:var(--oxblood); }
.detail-stamps{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.detail-title{
  font-family:var(--serif-display); font-size:clamp(1.7rem, 4vw, 2.5rem);
  line-height:1.14; color:var(--ink); margin:0 0 12px;
}
.detail-meta{
  display:flex; flex-wrap:wrap; gap:4px 16px; font-size:0.84rem;
  color:var(--charcoal-soft); padding-bottom:18px; margin-bottom:26px;
  border-bottom:2px solid var(--ink);
  box-shadow:0 3px 0 -2px var(--paper), 0 4px 0 -2px var(--brass-light);
}
.detail-meta strong{ color:var(--ink); font-weight:700; }

.prose{ font-family:var(--serif-text); font-size:1.14rem; line-height:1.72; color:var(--charcoal); }
.prose p{ margin:0 0 1.15em; }
.prose h1,.prose h2,.prose h3{ font-family:var(--serif-display); color:var(--ink); margin:1.4em 0 0.5em; }
.prose strong{ color:var(--ink); }
.prose ul,.prose ol{ margin:0 0 1.15em; padding-left:1.4em; }
.prose li{ margin-bottom:0.4em; }
.prose blockquote{
  margin:1.4em 0; padding:2px 0 2px 20px;
  border-left:3px solid var(--oxblood);
  font-style:italic; color:var(--charcoal-soft);
}
.prose blockquote p{ margin-bottom:0.7em; }
.prose a{ word-break:break-word; }

.pdf-cta{
  display:inline-flex; align-items:center; gap:8px;
  margin:6px 0 30px; padding:10px 16px;
  background:var(--ink); color:#FFFCF3; text-decoration:none;
  font-weight:700; font-size:0.85rem; border-radius:2px;
}
.pdf-cta:hover{ background:var(--ink-2); color:#fff; }

.source-line{
  font-size:0.85rem; color:var(--charcoal-soft); margin:28px 0 10px;
}
.source-line a{ font-weight:600; }

.related-entries{ margin:40px 0 0; padding-top:28px; border-top:1px solid var(--line); }
.related-entries-label{
  font-family:var(--sans); font-size:0.72rem; font-weight:800; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--brass); margin:0 0 14px;
}
.related-entries-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:12px;
}
.related-card{
  display:flex; flex-direction:column; gap:4px;
  border:1px solid var(--line); border-radius:var(--radius); background:#FFFCF3;
  padding:12px 14px; text-decoration:none; transition:border-color .15s ease, transform .15s ease;
}
.related-card:hover{ border-color:var(--brass); transform:translateY(-1px); }
.related-card-date{ font-size:0.7rem; font-weight:600; color:var(--charcoal-soft); }
.related-card-title{ font-family:var(--serif-display); font-size:0.98rem; color:var(--ink); line-height:1.3; }

.prevnext-nav{
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
  margin:24px 0 10px; padding-top:20px; border-top:1px dashed var(--line-soft);
}
.prevnext-link{
  display:flex; flex-direction:column; gap:4px; text-decoration:none;
  padding:10px 12px; border:1px solid transparent; border-radius:var(--radius);
}
.prevnext-link.is-older{ text-align:right; align-items:flex-end; }
.prevnext-link:hover{ border-color:var(--line); background:#FFFCF3; }
.prevnext-dir{
  font-family:var(--sans); font-size:0.68rem; font-weight:800; letter-spacing:0.08em;
  text-transform:uppercase; color:var(--oxblood);
}
.prevnext-title{
  font-family:var(--serif-text); font-size:0.9rem; color:var(--charcoal);
  overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}
@media (max-width:640px){
  .prevnext-nav{ grid-template-columns:1fr; }
  .prevnext-link.is-older{ text-align:left; align-items:flex-start; }
}

.summary-box{
  font-family:var(--serif-text); font-size:1.1rem; line-height:1.65;
  color:var(--charcoal); background:#FFFCF3; border:1px solid var(--line);
  border-left:3px solid var(--brass); border-radius:var(--radius);
  padding:18px 20px; margin:0 0 24px;
}
.media-embed{
  margin:0 0 24px; border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; background:#000;
}
.media-embed iframe{ display:block; width:100%; border:0; }
.media-embed.is-video iframe{ aspect-ratio:16/9; height:auto; }
.media-embed.is-audio iframe{ height:180px; background:#FFFCF3; }
.summary-label{
  font-family:var(--sans); font-size:0.68rem; font-weight:800;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--brass);
  margin-bottom:8px;
}
.external-cta{
  display:inline-flex; align-items:center; gap:8px;
  margin:0 0 30px; padding:12px 20px;
  background:var(--oxblood); color:#FFFCF3; text-decoration:none;
  font-weight:700; font-size:0.9rem; border-radius:2px;
}
.external-cta:hover{ background:var(--oxblood-2); color:#fff; }

.notice{
  margin-top:34px; padding:18px 20px;
  border:1.5px dashed var(--oxblood);
  border-radius:var(--radius);
  background:rgba(124,36,49,0.045);
  position:relative;
}
.notice-label{
  font-family:var(--sans); font-size:0.68rem; font-weight:800;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--oxblood);
  display:flex; align-items:center; gap:8px; margin-bottom:8px;
}
.notice-label svg{ width:14px; height:14px; flex:0 0 auto; }
.notice p{ font-family:var(--sans); font-size:0.86rem; line-height:1.55; color:var(--charcoal-soft); margin:0 0 8px; }
.notice p:last-child{ margin-bottom:0; }
.notice .checked-date{ font-weight:700; color:var(--charcoal); }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{
  border-top:1px solid var(--ink); padding:26px 0 40px;
  font-size:0.8rem; color:var(--charcoal-soft);
}
.site-footer .wrap{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; }
.elsewhere{ border-top:1px dashed var(--line); padding:18px 0 22px; }
.elsewhere-label{
  font-size:0.68rem; font-weight:800; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--brass); margin-bottom:10px;
}
.elsewhere-links{ display:flex; flex-wrap:wrap; gap:8px 18px; }
.elsewhere-links a{
  font-size:0.82rem; font-weight:600; color:var(--ink-2); text-decoration:none;
  border-bottom:1px solid transparent;
}
.elsewhere-links a:hover{ color:var(--oxblood); border-bottom-color:currentColor; }

.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* Fade-in for lists on filter change */
.grid, .detail{ animation:fadein .28s ease both; }
@keyframes fadein{ from{ opacity:0; transform:translateY(4px);} to{ opacity:1; transform:none; } }
