/* ============================================================
   GOT Busted News - Phase 0 demo design system
   AMO Scaling. Modernized black / red / gold crime-tabloid.
   Type: Oswald (masthead display) + Public Sans (body)
   ============================================================ */
:root{
  --bg:#0b0b0e;            /* near-black base */
  --bg-2:#121218;         /* panel */
  --bg-3:#1a1a22;         /* raised */
  --line:#26262f;
  --line-2:#33333f;
  --ink:#f4f4f6;          /* primary text */
  --mut:#9a9aa6;          /* muted */
  --mut-2:#6f6f7b;
  --red:#e01427;          /* locked primary accent */
  --red-2:#b30f1e;
  --red-soft:rgba(224,20,39,.14);
  --gold:#efb42d;         /* secondary accent */
  --gold-2:#c9962073;
  --r:10px;
  --r-lg:16px;
  /* 1280 was leaving ~700px of dead rail on a 2000px screen while the booking
     cards squeezed into five narrow columns. Prose is not at risk: .lead caps
     at 64ch and .hero .sub at 52ch, so paragraphs keep their measure and only
     the grids and tables take the extra room. */
  --wrap:1560px;
  --shadow:0 10px 40px -12px rgba(0,0,0,.7);
  --fd:'Oswald',system-ui,sans-serif;
  --fb:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden}
body{width:100%;max-width:100%;overflow-x:hidden;font-family:var(--fb);background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
img,video,iframe{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{width:100%;max-width:var(--wrap);min-width:0;margin:0 auto;padding-right:24px;padding-left:24px}

h1,h2,h3,h4{font-family:var(--fd);font-weight:700;line-height:1.02;letter-spacing:.01em;text-transform:uppercase}
h2{font-size:clamp(1.6rem,3.2vw,2.5rem)}
.kick{font-family:var(--fd);font-weight:600;font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;color:var(--red)}
.kick.gold{color:var(--gold)}
.lead{font-size:1.1rem;color:var(--mut);max-width:64ch;line-height:1.7}
.mut{color:var(--mut)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--fd);font-weight:600;font-size:.92rem;letter-spacing:.04em;text-transform:uppercase;padding:.72rem 1.3rem;border-radius:var(--r);border:1px solid transparent;cursor:pointer;transition:.15s;white-space:nowrap;line-height:1}
.btn i{font-size:1.15em}
.btn-red{background:var(--red);color:#fff}
.btn-red:hover{background:var(--red-2)}
.btn-red:active{transform:translateY(1px)}
.btn-gold{background:var(--gold);color:#1a1400}
.btn-gold:hover{background:#f7c249}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.btn-ghost:hover{border-color:var(--red);color:var(--red)}
.btn-dark{background:var(--bg-3);color:var(--ink);border-color:var(--line)}
.btn-dark:hover{background:#22222c}

/* breaking ticker */
.ticker{width:100%;max-width:100%;background:var(--red);color:#fff;overflow:hidden;contain:inline-size;border-bottom:1px solid var(--red-2)}
.ticker .wrap{display:flex;align-items:center;gap:1rem;height:38px;overflow:hidden}
.ticker .tag{font-family:var(--fd);font-weight:700;letter-spacing:.1em;font-size:.78rem;text-transform:uppercase;background:#fff;color:var(--red);padding:.15rem .6rem;border-radius:4px;flex-shrink:0;display:flex;align-items:center;gap:.35rem}
.ticker .tag i{animation:blink 1.4s steps(1) infinite}
@keyframes blink{50%{opacity:.35}}
.ticker .scroll{flex:1 1 0;width:0;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;font-size:.86rem;font-weight:500}
.ticker .scroll span{display:inline-block;padding-left:100%;animation:mar 39s linear infinite}
/* The strip is now filled from live data (see the BREAKING ticker block at the
   end of gb.js), so it can contain links. They have to stay legible on red. */
.ticker .scroll a{color:#fff;text-decoration:underline;text-underline-offset:2px;text-decoration-color:rgba(255,255,255,.45)}
.ticker .scroll a:hover{text-decoration-color:#fff}
/* Only set when a real public-safety alert is live. Gold-on-black so a genuine
   AMBER/Silver alert cannot be mistaken for the everyday red strip. */
.ticker.breaking{background:#12120f;border-bottom-color:var(--gold)}
.ticker.breaking .tag{background:var(--gold);color:#1a1400}
.ticker.breaking .scroll{color:#ffe9a8}
.ticker.breaking .scroll a{color:#fff;text-decoration-color:var(--gold)}
/* A marquee that never stops is an accessibility problem for people who ask
   the OS to reduce motion; hold it still and let them read it instead. */
@media(prefers-reduced-motion:reduce){
  .ticker .scroll span{animation:none!important;padding-left:0}
  .ticker .tag i{animation:none}
}
@keyframes mar{to{transform:translateX(-100%)}}

/* utility strip */
.util{background:#0a0a0d;color:var(--mut);font-size:.8rem;border-bottom:1px solid var(--line)}
.util .wrap{display:flex;justify-content:space-between;align-items:center;min-height:44px;gap:1.6rem;padding-top:.35rem;padding-bottom:.35rem}
.util .u-l{display:flex;align-items:center;gap:.6rem;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.util .u-l .zia{color:var(--gold);flex-shrink:0;font-size:.98rem}
.util .u-r{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;min-width:0}
.util .u-r a{color:var(--mut);display:inline-flex;align-items:center;gap:.42rem;padding:.34rem .85rem;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.02);transition:.15s;white-space:nowrap;font-weight:500}
.util .u-r a i{color:var(--gold);font-size:1rem}
.util .u-r a:hover{color:#fff;border-color:var(--gold);background:rgba(240,177,0,.08)}
@media(max-width:900px){.util .u-r a span{display:none}.util .u-l{min-width:0}.util .wrap{gap:.75rem}}
@media(max-width:720px){.util .u-l{display:none}.util .wrap{justify-content:flex-end}.util .u-r{flex-wrap:nowrap}}

/* nav */
.nav{position:sticky;top:0;z-index:60;background:rgba(11,11,14,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:1.5rem;height:76px;overflow:visible}
.brand{display:flex;align-items:center;gap:.7rem;min-width:0;flex-shrink:0}
.brand .logo{width:48px;height:48px;border-radius:10px;background:radial-gradient(circle at 30% 25%,#1c1c24,#0c0c10);border:1.5px solid var(--gold);display:grid;place-items:center;position:relative;overflow:hidden}
.brand .logo i{color:var(--gold);font-size:1.5rem}
.brand .bt{line-height:1}
.brand .bt b{font-family:var(--fd);font-weight:700;font-size:1.35rem;letter-spacing:.01em;display:block}
.brand .bt b em{color:var(--red);font-style:normal}
.brand .bt small{font-family:var(--fd);font-weight:500;font-size:.62rem;letter-spacing:.28em;color:var(--gold);text-transform:uppercase}
.nav-links{display:flex;align-items:center;gap:.2rem;margin-left:auto}
.nav-links>a{font-family:var(--fd);font-weight:500;font-size:.95rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);padding:.5rem .75rem;border-radius:7px;transition:.15s}
.nav-links>a:hover{color:var(--red)}
.nav-links>a.active{color:var(--red)}
/* GROUPED NAV. Ken, 2026-08-10: the primary menu is Bookings, Crime News,
   Dockets, Public Safety, Community, Directory, Advertise, with the rest
   grouped underneath. Missing Persons and the Sex Offender Registry are public
   safety pages, so they hang off Public Safety instead of sitting as peers.

   No JavaScript anywhere in here on purpose. On desktop the submenu opens on
   hover AND on focus-within, so it is keyboard-reachable; on the burger
   breakpoint below it is simply always expanded and indented, because a tap
   target that has to be tapped twice to reveal what is under it is a worse
   menu than one that just shows you. That also means the submenu links are in
   the DOM and crawlable at every width — a JS-only dropdown would hide two
   real pages from Googlebot's link graph.

   .nav-grp-t duplicates the .nav-links>a rules rather than sharing them
   because those selectors are direct-child and the group title is one level
   deeper. Keep the two in sync. */
.nav-grp{position:relative;display:flex;align-items:center}
.nav-grp>.nav-grp-t{font-family:var(--fd);font-weight:500;font-size:.95rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);padding:.5rem .75rem;border-radius:7px;transition:.15s;white-space:nowrap;display:flex;align-items:center;gap:.3rem}
.nav-grp>.nav-grp-t:hover,.nav-grp>.nav-grp-t.active{color:var(--red)}
.nav-grp>.nav-grp-t i{font-size:.8rem;transition:transform .15s}
.nav-grp:hover>.nav-grp-t i,.nav-grp:focus-within>.nav-grp-t i{transform:rotate(180deg)}
.nav-sub{display:none;position:absolute;top:100%;left:0;min-width:230px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;z-index:60}
.nav-grp:hover .nav-sub,.nav-grp:focus-within .nav-sub{display:block}
.nav-sub>a{display:block;font-family:var(--fd);font-weight:500;font-size:.88rem;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);padding:.6rem .7rem;border-radius:7px;white-space:nowrap;transition:.15s}
.nav-sub>a:hover{color:var(--red);background:var(--bg)}
.nav-sub>a.active{color:var(--red)}

.nav-cta{display:flex;align-items:center;gap:.6rem;margin-left:1.1rem}
.nav-icon{width:42px;height:42px;border-radius:9px;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--ink);font-size:1.2rem;transition:.15s}
.nav-icon:hover{border-color:var(--red);color:var(--red)}
.burger{display:none}
/* NAV FIT. Nine links plus two buttons do not fit a 1280px wrap — the bar
   overflowed and pushed "Search Records" off the right edge on every desktop
   width. It already did that before Court Dockets was added; the extra link
   only made it obvious. Four things fix it, in order of screen size:
   a wider bar than the body wrap, then the big red button goes, then the
   links tighten, then the ghost button goes, then the burger takes over —
   and the burger now arrives BEFORE the links run out of room, not 250px
   after it, which is what left 780–1040px broken. */
/* 1560 -> 1680. MEASURED 2026-08-05 in headless Chromium with Oswald and
   Public Sans actually loaded (system-font fallback gives useless numbers):
   at every viewport of 1565px and up the bar needed 1652px and only had 1560,
   so the red "Search Records" button hung 92px past the right edge and the
   whole page grew a horizontal scrollbar. That is the exact failure the note
   below says was fixed - it was not; it only moved to the big monitors. */
.nav .wrap{max-width:var(--wrap)}
.nav-links>a{white-space:nowrap}
/* auth.js appends a second account link to .nav-links for the MOBILE menu.
   Hidden in the desktop row; .nav.open shows it at the BOTTOM of the burger
   list, which is where the owners asked for Sign In to live. The desktop copy
   is a utility-bar pill (#gb-acct in .util .u-r), not a nav item. */
#gb-acct-m{display:none}
/* Same treatment for the staff link auth.js injects for gb_role=staff accounts.
   Without this it lands in the DESKTOP nav row as a ninth primary item — which
   is precisely the regression the comment above records: the owners asked on
   2026-08-05 for account links to stop being primary nav, and an async-injected
   item there re-broke the row width. Measured 2026-08-14 on a 1501px window:
   "STAFF DASHBOARD" rendered inline next to Advertise. Desktop staff use the
   utility-bar pill (#gb-staff-link); this copy is burger-menu only. */
#gb-staff-link-m{display:none}
/* The account pill is injected into the utility bar by auth.js after Supabase
   answers, so it is not in the HTML and gets no styling from .util .u-r a
   until it exists. Nothing extra is needed - it inherits that rule - but it is
   pinned last so signing in/out never reorders the row. */
.util .u-r #gb-acct{order:99}

/* ---- "Advertise" as a call-to-action -----------------------------------
   Owner request 2026-08-05: advertising is a primary revenue driver, so the
   nav entry should read as a button, not as one more grey word in a row of
   eleven. Gold, not red — red is already the "Search Records" CTA and the
   .active colour, and two competing reds in one bar reads as an error state.
   The rule is scoped to .nav-links>a so it also styles the burger copy (the
   mobile menu is the same element), where it is re-flowed full-width below. */
.nav-links>a.nav-ad{background:var(--gold);color:#1a1400;font-weight:700;border-radius:7px}
.nav-links>a.nav-ad:hover{background:#f7c249;color:#1a1400}
.nav-links>a.nav-ad.active{color:#1a1400}

/* Sex Offenders, promoted to the top level 2026-10-01 (see the note by NAV in
   SiteShell.tsx). Filled red rather than the gold used by Advertise, because
   gold is the paid slot and this is editorial — and because the two sitting
   side by side in different colours is what stops the bar reading as two ads.
   Same .nav-links>a scope as nav-ad, so the mobile burger picks it up too. */
.nav-links>a.nav-hot{background:var(--red);color:#fff;font-weight:700;border-radius:7px}
.nav-links>a.nav-hot:hover{background:#c5101f;color:#fff}
.nav-links>a.nav-hot.active{background:#c5101f;color:#fff}

/* ---- NATIONAL OFFENDER MAP (gb-usmap.js) --------------------------------
   Hidden until the script says ready, so a visitor with JS off or a failed
   fetch sees the state links underneath instead of an empty box. */
/* The mount is NEVER display:none. An element with no box cannot intersect,
   so an IntersectionObserver on it never fires and the map never starts -
   the element stays hidden waiting for itself. It reserves a skeleton box
   instead, and the real canvas replaces it on success. If the script never
   runs the skeleton collapses to nothing via :empty and the links below
   remain the path. */
#usmap{display:block;margin:0 0 1.4rem}
#usmap:empty{min-height:120px;border:1px solid var(--line);border-radius:14px;
  background:repeating-linear-gradient(135deg,var(--bg-2),var(--bg-2) 10px,
    var(--bg-3) 10px,var(--bg-3) 20px);opacity:.5}
.usmap{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg-2)}
.usmap-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;
  border-bottom:1px solid var(--line);font-size:.72rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--mut)}
.usmap-bar b{color:var(--ink);font-family:var(--fd);font-weight:500;letter-spacing:.04em}
.usmap-back{margin-left:auto;background:none;border:1px solid var(--line-2);
  color:var(--mut);border-radius:7px;padding:5px 11px;font:inherit;
  text-transform:uppercase;letter-spacing:.08em;cursor:pointer}
.usmap-back:hover{color:var(--ink);border-color:var(--red)}
.usmap-stage{position:relative;background:var(--bg)}
.usmap-stage canvas{display:block;width:100%;cursor:pointer}
.usmap-tip{position:absolute;pointer-events:none;background:rgba(0,0,0,.86);
  border:1px solid var(--line-2);border-radius:8px;padding:6px 11px;
  font-size:.82rem;white-space:nowrap}
.usmap-tip b{color:#fff}
.usmap-tip i{font-style:normal;color:var(--mut)}

/* Corner readout for the national map. Bottom-left so it never sits under
   the cursor: a panel that follows the pointer competes with the thing you
   are pointing at, and on a map the pointer position IS the question. */
.usmap-read{position:absolute;left:14px;bottom:14px;z-index:3;
  background:rgba(10,12,16,.88);border:1px solid var(--line-2);
  border-radius:11px;padding:11px 15px;min-width:168px;
  backdrop-filter:blur(3px);pointer-events:none}
.usmap-read b{display:block;font-family:var(--fd);font-weight:500;
  font-size:1.18rem;line-height:1.15;color:#fff;letter-spacing:.01em}
.usmap-read i{display:block;font-style:normal;font-size:.9rem;
  color:var(--red);font-variant-numeric:tabular-nums;margin-top:2px}
.usmap-read u{display:block;text-decoration:none;font-size:.68rem;
  text-transform:uppercase;letter-spacing:.1em;color:var(--mut);margin-top:7px}
.usmap-read[hidden]{display:none}

/* Hide the red "Search Records" button when the bar runs out of room.
   MEASURED 2026-08-05 with assets/auth.js actually running (see the note in
   auth.js - every earlier measurement blocked supabase.co and therefore sized
   this bar for a nav that was missing a 117-171px button):
     brand + 11 links + search icon + red button = 1610px of content
     brand + 11 links + search icon             = 1417px of content
   .nav .wrap is min(viewport - 48, 1680). 1610 + 48 = 1658, so the red button
   can only be shown above ~1660px. Hiding it at <=1680 leaves 22px of slack.
   The search ICON stays at every width, so the action is never actually lost. */
@media(max-width:1680px){.nav-cta>a.btn-red{display:none}}
/* 1417 + 48 = 1465, so the full-size links row needs a 1465px viewport. Step
   the type down at 1500 rather than 1460 so the handoff has ~35px of slack
   instead of landing exactly on the failure width. */
@media(max-width:1500px){.nav-links>a{padding:.5rem .5rem;font-size:.86rem;letter-spacing:.02em}.nav-links{gap:0}.nav .wrap{gap:1rem}}
/* Medium screens: drop the remaining CTA button too. */
@media(max-width:1380px){.nav-cta .btn{display:none}}
@media(max-width:1330px){.nav-links>a{padding:.45rem .38rem;font-size:.79rem;letter-spacing:0}}
/* Small screens: collapse links into the hamburger.
   History: 1040 -> 1150 (2026-07-29, Advertise made this a nine-link bar)
   -> 1290 (2026-08-05, the owners' list took it to ELEVEN links and "Registry"
   became the much wider "Sex Offender Registry") -> 1100, below.

   1290 was ESTIMATED from character widths, and the comment that sat here
   claimed it had been measured in a browser. It had not been. It has been now:
   headless Chromium, the staged build, Oswald and Public Sans confirmed loaded
   before any number was read, viewports swept 800-2000px in 5px steps with the
   burger rule disabled so the links row could be watched all the way down.

   MEASURED RESULT: at the .79rem step the links row is 785px wide and the bar
   first overflows at 1080px, not at 1285px. 1290 was hiding a nav that still
   had 200px of room - the opposite of what the owners asked for, which was a
   desktop bar that shows Bookings first and Advertise as a button. 1100 is the
   floor with ~16px of slack measured at that width.
   IF A TWELFTH LINK IS EVER ADDED, or any label is lengthened, re-run
   /tmp/measure_nav2.py before shipping. Do not re-estimate this. */
/* ---- NAV FIT, rewritten 2026-10-02 -------------------------------------
   The bar ran off the right-hand edge: COMMUNITY and FIND AN ATTORNEY were
   clipped by the viewport at ~1330px wide.

   Measured, at the 1330px type size: brand ~170px, the NEXT DROP countdown
   ~150px, twelve top-level items ~1020px, search + CTA ~190px. About 1530px
   of content. The burger only took over at 1100px, so every width between
   1100 and 1530 — which is most laptops, and the Lovable preview pane —
   rendered a bar that could not fit and simply overflowed.

   Promoting SEX OFFENDER REGISTRY to the top level made it worse: it is the
   longest label in the bar.

   Three stages now, and the numbers come from that measurement rather than
   from round figures:
     <=1560  tighten spacing, drop the countdown (decorative, and the page
             carries it again further down)
     <=1400  burger. Below the ~1530 the full bar needs, so it never overflows.
     any     the row may not expand past its container, and the links are
             allowed to scroll rather than push the CTA off-screen. This is
             the backstop: whatever a future label does, nothing leaves the
             viewport. */
@media(max-width:1560px){
  .nav .gb-countdown,.nav .nav-countdown,.nav [class*="countdown"]{display:none}
  .nav .wrap{gap:.6rem}
  .nav-links>a{padding:.42rem .32rem;font-size:.76rem}
}
@media(max-width:1400px){.nav-links{display:none}.burger{display:grid}.nav-cta{margin-left:auto}}
.nav .wrap{min-width:0}
.nav-links{min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none}
.nav-links::-webkit-scrollbar{display:none}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .bgimg{position:absolute;inset:0;opacity:.22}
.hero .bgimg img{width:100%;height:100%;object-fit:cover}
.hero .scrim{position:absolute;inset:0;background:radial-gradient(1200px 500px at 20% 0%,rgba(224,20,39,.16),transparent 60%),linear-gradient(180deg,rgba(11,11,14,.6),var(--bg))}
.hero .wrap{position:relative;z-index:2;padding:72px 24px 60px}
.hero .eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--fd);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:.78rem;color:var(--gold);border:1px solid var(--gold-2);background:rgba(239,180,45,.08);padding:.4rem .85rem;border-radius:100px;margin-bottom:1.3rem}
.hero h1{max-width:16ch;overflow-wrap:anywhere;font-size:clamp(2.6rem,6.5vw,5.2rem);line-height:.95}
.hero h1 em{color:var(--red);font-style:normal}
.hero .sub{max-width:52ch;overflow-wrap:anywhere;font-size:clamp(1.05rem,1.6vw,1.28rem);color:var(--mut);margin:1.3rem 0 2rem;line-height:1.6}
.hero .cta-row{display:flex;gap:.9rem;flex-wrap:wrap}
/* hero search */
.hsearch{width:100%;max-width:720px;min-width:0;margin-top:2.2rem;background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow)}
.hsearch .lab{font-family:var(--fd);font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:.85rem;color:var(--ink);display:flex;align-items:center;gap:.5rem;margin-bottom:.8rem}
.hsearch .lab i{color:var(--red)}
.hsearch .row{display:flex;gap:.6rem}
.hsearch input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line-2);border-radius:var(--r);padding:.85rem 1rem;color:var(--ink);font-size:1rem;font-family:var(--fb)}
.hsearch input:focus{outline:2px solid var(--red);border-color:var(--red)}
.hsearch .chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.9rem}
.hsearch .chips a{font-size:.8rem;font-weight:600;color:var(--mut);background:var(--bg-3);border:1px solid var(--line);padding:.35rem .75rem;border-radius:100px;transition:.15s}
.hsearch .chips a:hover{border-color:var(--red);color:var(--ink)}

/* stat bar */
.statbar{background:var(--bg-2);border-bottom:1px solid var(--line)}
.statbar .grid{display:grid;grid-template-columns:repeat(4,1fr)}
.statbar .s{padding:1.5rem;text-align:center;border-right:1px solid var(--line)}
.statbar .s:last-child{border-right:none}
.statbar .s b{font-family:var(--fd);font-weight:700;font-size:1.9rem;color:#fff;display:block;line-height:1}
.statbar .s b em{color:var(--red);font-style:normal}
.statbar .s span{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-top:.4rem;display:block}
/* The advertise page carries a fifth tile (social reach), so the bar sizes
   itself from how many tiles are actually present instead of assuming four.
   auto-fit with a floor keeps 4-up and 5-up both looking deliberate and drops
   to 2-up on phones without a second media query fighting this one. */
.statbar .grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
@media(max-width:720px){.statbar .grid{grid-template-columns:1fr 1fr}.statbar .s:nth-child(2){border-right:none}}
@media(max-width:430px){.statbar .grid{grid-template-columns:1fr}.statbar .s{border-right:0;border-bottom:1px solid var(--line)}.statbar .s:last-child{border-bottom:0}}

/* section */
.section{padding:72px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:2rem;border-bottom:2px solid var(--red);padding-bottom:.9rem}
.sec-head h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.sec-head .kick{margin-bottom:.3rem}
.sec-head a{font-family:var(--fd);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:.85rem;color:var(--gold);white-space:nowrap}

/* featured stories */
.feat{display:grid;grid-template-columns:1.6fr 1fr;gap:22px}
@media(max-width:860px){.feat{grid-template-columns:1fr}}
.fcard{position:relative;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);background:var(--bg-2);display:flex;flex-direction:column}
.fcard.lead-story{min-height:440px}
.fcard .fimg{position:relative;overflow:hidden;flex:1;min-height:200px;background:#000}
.fcard .fimg img{width:100%;height:100%;object-fit:cover;transition:.5s}
.fcard:hover .fimg img{transform:scale(1.04)}
.fcard .badge{position:absolute;top:14px;left:14px;z-index:2;font-family:var(--fd);font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;padding:.3rem .7rem;border-radius:5px}
.badge.red{background:var(--red);color:#fff}
.badge.gold{background:var(--gold);color:#1a1400}
.badge.dark{background:rgba(0,0,0,.7);color:#fff;border:1px solid var(--line-2)}
.fcard .fbody{padding:22px}
.fcard.lead-story .fbody{position:absolute;bottom:0;left:0;right:0;z-index:2;background:linear-gradient(0deg,rgba(8,8,10,.96),rgba(8,8,10,.75) 60%,transparent);padding:28px 26px}
.fcard .meta{font-size:.76rem;color:var(--gold);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.5rem;display:flex;gap:.6rem;align-items:center}
.fcard h3{font-size:1.3rem;line-height:1.05;margin-bottom:.5rem}
.fcard.lead-story h3{font-size:clamp(1.6rem,2.6vw,2.3rem)}
.fcard p{color:var(--mut);font-size:.92rem}
.fside{display:flex;flex-direction:column;gap:22px}
.fside .fcard{flex-direction:row;min-height:0}
.fside .fcard .fimg{width:120px;flex:none;min-height:110px}
.fside .fcard .fbody{padding:16px;flex:1}
.fside .fcard h3{font-size:1.02rem}

/* latest bookings rail */
.brow{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
@media(min-width:1500px){.brow{grid-template-columns:repeat(6,1fr)}}
@media(max-width:1000px){.brow{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.brow{grid-template-columns:repeat(2,1fr)}}
.bcard{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:.18s}
.bcard:hover{border-color:var(--red);transform:translateY(-3px)}
.bcard .mug{position:relative;aspect-ratio:4/5;background:#000;overflow:hidden}
.bcard .mug img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15)}
.bcard .mug .cty{position:absolute;top:8px;left:8px;font-family:var(--fd);font-weight:600;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;background:rgba(0,0,0,.75);color:var(--gold);padding:.2rem .5rem;border-radius:4px;border:1px solid var(--line-2)}
.bcard .mug .new{position:absolute;top:8px;right:8px;font-family:var(--fd);font-weight:700;font-size:.62rem;letter-spacing:.06em;background:var(--red);color:#fff;padding:.2rem .45rem;border-radius:4px}
.bcard .binfo{padding:12px 14px}
/* A person from a county that has no jail of its own, held somewhere else.
   Deliberately teal, not the gold used for charge category, and worded
   "resident" — it must never read as "arrested by that county". */
.fromcty{display:inline-block;font-family:var(--fd);font-weight:600;font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:#7fe6f2;background:rgba(79,216,232,.1);border:1px solid rgba(79,216,232,.3);padding:.1rem .45rem;border-radius:20px;margin:0 0 .45rem .35rem}
.catchip{display:inline-block;font-family:var(--fd);font-weight:600;font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);background:rgba(240,177,0,.1);border:1px solid rgba(240,177,0,.28);padding:.1rem .45rem;border-radius:20px;margin-bottom:.45rem}
.bcard .binfo h4{font-family:var(--fd);font-weight:600;font-size:1.02rem;letter-spacing:.01em;text-transform:none;line-height:1.1;margin-bottom:.3rem}
.bcard .binfo .chg{font-size:.8rem;color:var(--red);font-weight:600;margin-bottom:.2rem}
.bcard .binfo .dt{font-size:.72rem;color:var(--mut-2)}

/* database page: toolbar + filters */
.dbwrap{display:grid;grid-template-columns:270px 1fr;gap:32px;padding:44px 0}
@media(max-width:860px){.dbwrap{grid-template-columns:1fr}}
.filters{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;align-self:start;position:sticky;top:92px}
@media(max-width:860px){.filters{position:static;top:auto}}
.filters h4{font-family:var(--fd);font-size:.95rem;letter-spacing:.08em;color:var(--gold);margin-bottom:1rem;border-bottom:1px solid var(--line);padding-bottom:.6rem}
.fgrp{margin-bottom:1.2rem}
.fgrp label{font-family:var(--fd);font-weight:500;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);display:block;margin-bottom:.4rem}
.fgrp input,.fgrp select{width:100%;background:var(--bg);border:1px solid var(--line-2);border-radius:8px;padding:.6rem .7rem;color:var(--ink);font-family:var(--fb);font-size:.92rem}
.fgrp input:focus,.fgrp select:focus{outline:1px solid var(--red);border-color:var(--red)}
.dbmain .dbtop{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.3rem;flex-wrap:wrap;gap:.6rem}
.dbmain .dbtop .cnt{font-family:var(--fd);color:var(--mut);letter-spacing:.04em;text-transform:uppercase;font-size:.85rem}
.dbmain .dbtop .cnt b{color:#fff}
.dblist{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:1100px){.dblist{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.dblist{grid-template-columns:repeat(2,1fr)}}

/* booking profile */
.profile{padding:44px 0}
.pgrid{display:grid;grid-template-columns:340px 1fr;gap:40px}
@media(max-width:820px){.pgrid{grid-template-columns:1fr;gap:24px}}
.pmug{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line-2);background:#000;position:relative}
.pmug img{width:100%;filter:grayscale(.12)}
.pmug .stamp{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.9),transparent);padding:16px;font-family:var(--fd);letter-spacing:.06em;text-transform:uppercase;font-size:.78rem;color:var(--gold)}
.pmain .ptag{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--fd);font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:.76rem;color:var(--red);background:var(--red-soft);border:1px solid rgba(224,20,39,.3);padding:.3rem .7rem;border-radius:5px;margin-bottom:.9rem}
.pmain h1{font-family:var(--fd);font-size:clamp(2rem,4vw,3rem);text-transform:uppercase;line-height:1}
.pmeta{display:flex;flex-wrap:wrap;gap:1.5rem;margin:1.3rem 0;padding:1.2rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pmeta .m span{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--mut-2);display:block;font-family:var(--fd)}
.pmeta .m b{font-size:1.05rem;color:#fff;font-weight:600}
.charges{margin:1.4rem 0}
.charges h4{font-family:var(--fd);letter-spacing:.06em;color:var(--gold);font-size:1rem;margin-bottom:.8rem}
.charge{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 1rem;background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--red);border-radius:8px;margin-bottom:.6rem}
.charge b{font-weight:600;color:var(--ink)}
.charge span{font-size:.82rem;color:var(--mut);font-family:var(--fd);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.disclaimer{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:1rem 1.2rem;font-size:.85rem;color:var(--mut);margin-top:1.4rem;display:flex;gap:.7rem}
.disclaimer i{color:var(--gold);font-size:1.2rem;flex-shrink:0}

/* pricing */
.pricing{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:900px;margin:0 auto}
@media(max-width:720px){.pricing{grid-template-columns:1fr}}
.plan{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px;position:relative}
.plan.pro{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold-2),0 20px 50px -20px rgba(239,180,45,.25)}
.plan .ptop{font-family:var(--fd);letter-spacing:.1em;text-transform:uppercase;font-size:.9rem;color:var(--mut)}
.plan.pro .ptop{color:var(--gold)}
.plan .price{font-family:var(--fd);font-weight:700;font-size:3rem;color:#fff;line-height:1;margin:.6rem 0}
.plan .price small{font-size:1rem;color:var(--mut);font-weight:500}
/* font-size was .72rem (11.52px) and the mobile audit flagged it as sub-12px
   at every width on advertise.html and subscribe.html. Raised to .76rem
   (12.16px) at the BASE rule rather than inside the mobile block, because the
   flag is small at desktop too and a page-local <style> would beat the mobile
   block anyway (see the note in advertise.html). */
.plan .flag{position:absolute;top:-13px;right:24px;background:var(--gold);color:#1a1400;font-family:var(--fd);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:.76rem;padding:.3rem .8rem;border-radius:5px}
.plan ul{list-style:none;margin:1.4rem 0}
.plan ul li{display:flex;gap:.7rem;padding:.55rem 0;border-top:1px solid var(--line);font-size:.94rem;color:var(--ink)}
.plan ul li:first-child{border-top:none}
.plan ul li i{color:var(--gold);font-size:1.1rem;flex-shrink:0}
.plan ul li.off{color:var(--mut-2)}
.plan ul li.off i{color:var(--mut-2)}
.plan .btn{width:100%;justify-content:center;margin-top:.6rem}

/* store */
.store{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:900px){.store{grid-template-columns:1fr 1fr}}
.product{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:.18s}
.product:hover{border-color:var(--gold);transform:translateY(-3px)}
.product .pimg{aspect-ratio:1;background:linear-gradient(150deg,#17171d,#0c0c10);display:grid;place-items:center;color:var(--gold);position:relative}
.product .pimg i{font-size:3rem;opacity:.5}
.product .pimg .tee{font-family:var(--fd);font-weight:700;font-size:1.3rem;text-transform:uppercase;color:#fff;text-align:center;line-height:1}
.product .pimg .tee em{color:var(--red);font-style:normal}
.product .pb{padding:16px}
.product .pb b{font-family:var(--fd);font-weight:600;font-size:1.02rem;text-transform:none;display:block}
.product .pb .pr{color:var(--gold);font-weight:700;font-family:var(--fd);font-size:1.1rem;margin-top:.2rem}

/* directory rows */
.dirlist{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:720px){.dirlist{grid-template-columns:1fr}}
.dirrow{display:flex;gap:1rem;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.3rem;transition:.15s}
.dirrow:hover{border-color:var(--red)}
.dirrow .dic{width:48px;height:48px;border-radius:10px;background:var(--bg-3);border:1px solid var(--line-2);display:grid;place-items:center;color:var(--gold);font-size:1.4rem;flex-shrink:0}
.dirrow b{font-family:var(--fd);font-weight:600;font-size:1.05rem;text-transform:none;display:block}
.dirrow span{font-size:.85rem;color:var(--mut)}
.dirrow .sp{margin-left:auto;font-family:var(--fd);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);border:1px solid var(--gold-2);padding:.25rem .55rem;border-radius:4px}

/* article */
.article{max-width:760px;margin:0 auto;padding:44px 0}
.article .atag{display:flex;gap:.6rem;align-items:center;margin-bottom:1rem}
.article h1{font-size:clamp(2rem,4.5vw,3.2rem);line-height:1;margin-bottom:1rem}
.article .abyline{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--mut);font-size:.88rem;margin-bottom:1.6rem}
.article .abyline .share{margin-left:auto;display:flex;gap:.5rem}
.article .abyline .share a{width:34px;height:34px;border-radius:8px;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--mut);transition:.15s}
.article .abyline .share a:hover{border-color:var(--red);color:var(--red)}
.article .ahero{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);margin-bottom:1.6rem}
.article p{color:#d5d5dc;font-size:1.06rem;margin-bottom:1.2rem;line-height:1.75}
.article p.drop::first-letter{font-family:var(--fd);font-weight:700;font-size:3.4rem;float:left;line-height:.8;padding:.1rem .5rem .1rem 0;color:var(--red)}

/* ad slot */
.adslot{background:repeating-linear-gradient(45deg,#111116,#111116 12px,#0e0e12 12px,#0e0e12 24px);border:1px dashed var(--line-2);border-radius:12px;padding:2rem;text-align:center;color:var(--mut-2)}
.adslot span{font-family:var(--fd);letter-spacing:.14em;text-transform:uppercase;font-size:.8rem}
.adslot b{display:block;color:var(--mut);font-family:var(--fd);font-size:1.1rem;margin-top:.3rem}

/* subhero (interior) */
.subhero{border-bottom:1px solid var(--line);position:relative;overflow:hidden;background:linear-gradient(120deg,#0e0e13,#08080a)}
.subhero::before{content:"";position:absolute;top:-30%;right:-5%;width:480px;height:480px;background:radial-gradient(circle,rgba(224,20,39,.18),transparent 65%)}
.subhero .wrap{position:relative;z-index:2;padding:54px 24px 46px}
.subhero h1{font-size:clamp(2rem,4.5vw,3.2rem);line-height:1}
.subhero h1 em{color:var(--red);font-style:normal}
.subhero p{color:var(--mut);max-width:60ch;margin-top:.8rem;font-size:1.05rem}

/* crumb */
.crumb{background:#08080a;border-bottom:1px solid var(--line)}
.crumb .wrap{display:flex;align-items:center;gap:.5rem;height:46px;font-size:.84rem;color:var(--mut)}
.crumb a{color:var(--mut)}
.crumb a:hover{color:var(--gold)}
.crumb i{font-size:.8rem;color:var(--line-2)}
.crumb .here{color:var(--ink)}

/* footer */
.foot{background:#08080a;border-top:1px solid var(--line);padding:60px 0 30px}
.foot .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px;padding-bottom:36px;border-bottom:1px solid var(--line)}
@media(max-width:820px){.foot .cols{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.foot .cols{grid-template-columns:1fr}}
.foot .fabout{color:var(--mut);margin:1rem 0;max-width:34ch;font-size:.9rem;line-height:1.6}
.foot h5{font-family:var(--fd);letter-spacing:.1em;text-transform:uppercase;color:#fff;font-size:.85rem;margin-bottom:1rem}
.foot ul{list-style:none}
.foot ul li{margin-bottom:.55rem}
.foot ul a{color:var(--mut);font-size:.92rem}
.foot ul a:hover{color:var(--red)}
.foot .social{display:flex;gap:.6rem;margin-top:1rem}
.foot .social a{width:38px;height:38px;border-radius:9px;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--mut);transition:.15s}
.foot .social a:hover{border-color:var(--red);color:var(--red)}
.foot .fbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-top:24px;font-size:.82rem;color:var(--mut-2)}
.foot .concept{background:var(--red-soft);border:1px solid rgba(224,20,39,.3);border-radius:10px;padding:.7rem 1rem;margin-top:18px;font-size:.8rem;color:#f0a9a9}

/* reveal */
.reveal{opacity:0;transform:translateY(20px);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}}

/* mobile dropdown menu — must match the burger breakpoint above (1100), or the
   burger appears on screens where tapping it does nothing. */
@media(max-width:1400px){
 .nav.open .nav-links{overflow-x:visible;max-width:none;display:flex;position:absolute;top:76px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 16px 14px;box-shadow:var(--shadow);max-height:calc(100vh - 96px);overflow-y:auto;-webkit-overflow-scrolling:touch}
 .nav.open .nav-links>a{padding:.9rem .5rem;font-size:1.05rem;border-bottom:1px solid var(--line)}
 /* this is the menu the duplicate account link was written for */
 .nav.open .nav-links>#gb-acct-m{display:block}
 .nav.open .nav-links>#gb-staff-link-m{display:block}
 /* The gold CTA needs its own treatment stacked: full-width, centred, and it
    keeps the bottom border off so it reads as a button and not as a row. */
 .nav.open .nav-links>a.nav-ad{margin:.5rem 0 .25rem;border-bottom:0;border-radius:8px;text-align:center;font-weight:700}
 /* Stacked menu: the group is not a dropdown, it is a heading with its pages
    listed under it. Always open — see the note by .nav-grp. */
 .nav.open .nav-links>.nav-grp{display:block}
 .nav.open .nav-grp>.nav-grp-t{padding:.9rem .5rem;font-size:1.05rem;border-bottom:1px solid var(--line);justify-content:space-between}
 .nav.open .nav-grp>.nav-grp-t i{display:none}
 .nav.open .nav-sub{display:block;position:static;min-width:0;background:transparent;border:0;box-shadow:none;padding:0}
 .nav.open .nav-sub>a{padding:.75rem .5rem .75rem 1.4rem;font-size:.95rem;color:var(--mut);border-bottom:1px solid var(--line)}
 .nav.open .nav-sub>a:hover,.nav.open .nav-sub>a.active{color:var(--red);background:transparent}
}

/* ===== NM coverage map (homepage) ===== */
#home-map{background:radial-gradient(120% 85% at 50% 12%, rgba(60,224,130,.07), transparent 55%), linear-gradient(180deg,#15161b,#0f0f13);border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:26px 16px;box-shadow:0 24px 55px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.04)}
.nmmap{width:100%;max-width:620px;height:auto;display:block;margin:0 auto;overflow:visible}
.cty{transform-box:fill-box;transform-origin:center;transition:transform .24s cubic-bezier(.2,.85,.25,1),filter .24s ease}
.cty path{transition:fill .2s ease,stroke .2s ease,stroke-width .2s ease}
.cty.live{cursor:pointer}
.cty.hov{transform:translateY(-13px) scale(1.12);filter:drop-shadow(0 20px 24px rgba(0,0,0,.85))}
.cty.live.hov path{stroke:#dcffec;stroke-width:2.6}
.cty:not(.live).hov path{fill:#262630;stroke:rgba(255,255,255,.22);stroke-width:1.4}
.ctylab{text-anchor:middle;font-family:var(--fd);font-weight:600;font-size:21px;fill:#fff;paint-order:stroke;stroke:#06301a;stroke-width:5.5px;pointer-events:none;letter-spacing:.3px}
.ctynum{text-anchor:middle;font-family:var(--fd);font-size:17px;fill:#c8ffdd;paint-order:stroke;stroke:#06301a;stroke-width:5px;pointer-events:none}
/* map labels are bigger on phones (the map itself is narrower there) */
@media(max-width:600px){#home-map{padding:16px 8px}.ctylab{font-size:30px;stroke-width:6px}.ctynum{font-size:24px;stroke-width:6px}}

/* placeholder mug for real records with no face-sheet image yet */
.mug .mug-ph{width:100%;height:100%;min-height:120px;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#1a1a1e,#2a2a30);color:#5a5a63;font-size:2.4rem}
.mug .mug-ph i{opacity:.7}

/* ---- county service notice (a county whose own roster is offline) ------- */
.cty-notice{display:flex;gap:.75rem;align-items:flex-start;margin:0 0 1.1rem;padding:.85rem 1rem;
  border:1px solid rgba(224,178,60,.42);border-left:3px solid #e0b23c;border-radius:10px;
  background:rgba(224,178,60,.08);color:var(--mut);font-size:.9rem;line-height:1.5}
.cty-notice i{color:#e0b23c;font-size:1.15rem;line-height:1.35;flex:none}
.cty-notice b{color:#f0d9a0;font-weight:700}
/* Residents-only counties: no roster of their own, but real people from there
   are in custody elsewhere. Clickable like a live county, coloured unlike one. */
.cty.resonly{cursor:pointer}
.cty.resonly.hov path{stroke:#c8ffdf;stroke-width:2.4}
.cty.resonly .ctynum{fill:#dcffee;stroke:#053021}
.ctyres{font-size:12px;fill:#8fe8b8}
.nmmap g.cty.maint{cursor:default}
.nmmap g.cty.maint path{opacity:.95}

/* ============================================================
   COURT DOCKETS — the second dataset (public.court_cases)
   ------------------------------------------------------------
   Deliberately NOT the booking palette. Booking cards are the
   red/gold tabloid world and carry a mugshot; a docket entry is
   a scheduled hearing, often on a person who was summonsed or
   cited and never booked at all. Indigo, no photo well, no
   charge text — because the source publishes none of those. If
   these ever start looking like booking cards, the visual
   language is asserting a custody that the data does not.
   ============================================================ */
.ccard{background:var(--bg-2);border:1px solid var(--line);border-left:3px solid #6f7ce8;
  border-radius:12px;padding:14px 15px 13px;transition:border-color .16s,transform .16s}
.ccard:hover{transform:translateY(-2px);border-color:#7b8bf5}
.ccard.t-sev{border-left-color:#e0554f}
.ccard.t-mid{border-left-color:#6f7ce8}
.ccard.t-low{border-left-color:#4d5570}
.cc-top{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.5rem}
.cc-type{font-family:var(--fd);font-size:.68rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.07em;padding:3px 8px;border-radius:6px;line-height:1.35;
  background:rgba(111,124,232,.14);color:#a8b3ff;border:1px solid rgba(111,124,232,.34)}
.t-sev .cc-type{background:rgba(224,85,79,.13);color:#ff9d97;border-color:rgba(224,85,79,.34)}
.t-low .cc-type{background:rgba(255,255,255,.05);color:var(--mut);border-color:var(--line-2)}
.cc-cty{font-size:.72rem;color:var(--mut-2);white-space:nowrap;flex:none}
.ccard h4{font-family:var(--fd);font-size:1.12rem;font-weight:600;line-height:1.2;
  color:var(--ink);margin:0 0 .45rem}
.cc-when{font-size:.86rem;color:#c3ccff;display:flex;align-items:center;gap:.35rem;margin-bottom:.3rem}
.cc-when i{font-size:.95rem;color:#8892e8}
.cc-what{font-size:.85rem;color:var(--mut);line-height:1.45}
.cc-court{font-size:.8rem;color:var(--mut-2);margin-top:.35rem}
.cc-meta{font-size:.72rem;color:var(--mut-2);margin-top:.55rem;padding-top:.5rem;
  border-top:1px solid var(--line);font-variant-numeric:tabular-nums}

/* grids: 4-up on the homepage strip, 3-up on the dockets page */
.ctrow{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.ctlist{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:1000px){.ctrow{grid-template-columns:repeat(2,1fr)}.ctlist{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.ctrow,.ctlist{grid-template-columns:1fr}}

/* The one thing a reader must not get wrong about this dataset. */
.ct-warn{display:flex;gap:.75rem;align-items:flex-start;margin:0 0 1.3rem;padding:.9rem 1.05rem;
  border:1px solid rgba(111,124,232,.4);border-left:3px solid #6f7ce8;border-radius:10px;
  background:rgba(111,124,232,.07);color:var(--mut);font-size:.9rem;line-height:1.55}
.ct-warn i{color:#8892e8;font-size:1.15rem;line-height:1.35;flex:none}
.ct-warn b{color:#c3ccff;font-weight:700}

.ct-kick{color:#8892e8!important}
.ct-all{color:#8892e8!important}

/* map: a county lit ONLY by court data. Indigo, never the custody green. */
.cty.courtonly{cursor:pointer}
.cty.courtonly.hov path{stroke:#cdd5ff;stroke-width:2.4}
.cty.courtonly .ctynum{fill:#e2e7ff;stroke:#141a3d}
.ctycrt{font-size:12px;fill:#a8b3ff}

/* ===========================================================================
   MOBILE / TOUCH PASS — added 2026-07-29 after a Playwright audit of all 15
   pages at 360/390/430/768px with is_mobile + has_touch.

   What the audit actually found: ZERO horizontal overflow, zero load failures,
   zero JS errors, and the burger swapped correctly on every page. The
   responsive skeleton was already right. Every single defect was one of two
   things, so that is all this block fixes:

     1. tap targets under 44px  (inputs 37px, selects 39px, .btn 40px,
        footer links 16px, the util-bar icons 29x13, social tiles 38x38)
     2. data-bearing text under 12px  (.catchip/.fromcty 9.6px, the county and
        NEW badges 9.9-10.6px, .cc-type 10.9px, .cc-cty/.cc-meta/.dt 11.5px)

   RULES FOR EDITING THIS BLOCK:
   * It is LAST in the file and scoped to max-width:900px, so it cannot touch
     the desktop cascade. Keep it that way — do not hoist rules out of here.
   * 16px on text inputs is NOT a style choice. iOS Safari auto-zooms the
     viewport on focus for anything under 16px and never zooms back out. Do
     not "tidy" it down to .95rem.
   * Inline links in prose get padding-block, not min-height. Padding on an
     inline element grows the hit rectangle without changing the line box, so
     the paragraph does not re-flow.
   * The brand tagline (.brand .bt small, 9.92px) is deliberately NOT bumped.
     It is a letter-spaced decorative lockup, not content, and enlarging it
     pushes the logo into the burger at 360px.
   =========================================================================== */
@media(max-width:900px){

  /* ---- form controls: 44px minimum, 16px text to stop iOS focus-zoom ---- */
  .fgrp input,.fgrp select,.hsearch input,
  input[type=text],input[type=email],input[type=search],input[type=tel],
  input[type=password],select,textarea{
    min-height:44px;font-size:16px}
  .fgrp input,.fgrp select{padding:.65rem .75rem}

  /* ---- buttons ---- */
  .btn{min-height:46px;padding:.8rem 1.25rem;font-size:.95rem}
  .btn.btn-sm{min-height:40px}

  /* ---- utility bar: the icon-only links were a 29x13 target ---- */
  .util .wrap{min-height:48px}
  .util .u-r{gap:.2rem}
  .util .u-r a{padding:.7rem .8rem;display:inline-flex;align-items:center;min-height:44px}
  .util .u-r a i{font-size:1.15rem}

  /* ---- breadcrumb ---- */
  .crumb .wrap{height:auto;min-height:48px;flex-wrap:wrap;padding:.4rem 0}
  .crumb a{padding:.62rem 0;display:inline-block}

  /* ---- homepage quick-search chips ---- */
  .hsearch .chips a{padding:.6rem 1rem;font-size:.85rem}

  /* ---- "view all" / section links ---- */
  .ct-all,.sec-all,.hm-all,.sec-head a,a.more{padding:.62rem 0;display:inline-block}

  /* ---- footer: 16px-tall links were the worst targets on the site ---- */
  .foot{padding:44px 0 26px}
  .foot ul li{margin-bottom:0}
  .foot ul a{display:block;padding:.62rem 0;font-size:.95rem}
  .foot .social a{width:44px;height:44px}
  .foot .fbar{font-size:.86rem;gap:.9rem}
  .foot .fbar a,.foot .concept a{padding:.62rem 0;display:inline-block}
  .foot .concept{font-size:.85rem;line-height:1.55}

  /* ---- inline prose links (login "forgot password", signup, etc.) ----
     padding-block only: grows the hit box, leaves the line box alone. */
  .fgrp a,form a,p a:not(.btn),.auth a,.tagrow a{padding-top:.85rem;padding-bottom:.85rem}

  /* ---- legibility floors on text that carries DATA ---- */
  .catchip,.fromcty{font-size:.75rem;padding:.15rem .5rem}
  .bcard .mug .cty{font-size:.78rem}
  .bcard .mug .new{font-size:.78rem}
  .bcard .binfo .dt{font-size:.78rem}
  .cc-type{font-size:.75rem}
  .cc-cty,.cc-meta,.cc-court{font-size:.78rem}
  .mi-verified{font-size:.78rem}
  /* Deliberately NOT here: .mut. Almost every .mut on the site carries an
     INLINE font-size, which beats a stylesheet rule, so a .mut rule would do
     nothing for the elements the audit flagged while silently shrinking the
     ones that inherit a larger size. The remaining sub-12px .mut instances
     are uppercase letter-spaced kickers — labels, not reading copy. */
}

/* Phones only. The two-column footer at 768 is fine; at 430 and below the
   four link columns were 2-up and very narrow, so go 1-up. */
@media(max-width:520px){
  .foot .cols{grid-template-columns:1fr;gap:20px}
  .foot .fbar{flex-direction:column;gap:.6rem}
}

/* Smallest phones — iPhone SE 1st gen, older small Androids, 320px wide.
   Measured on the live site 2026-08-10: every page scrolled 15px sideways at
   320. 360 and up were all clean, which is why this went unnoticed.

   The arithmetic, not a guess. .nav .wrap is padded 0 24px, so at 320 there are
   272px of content box. Inside it .brand measures 184 and .nav-cta measures 94,
   with a 16px flex gap between them: 184 + 16 + 94 = 294. The brand carries
   flex-shrink:0 (correct — the wordmark must not squash), so the 22px of excess
   goes out the right-hand side and the whole document scrolls.

   Reclaiming it from the gutters and the gap rather than from the brand:
   12px padding and an 8px gap gives 296px of room for 286px of content. Only
   the header is touched; section padding elsewhere stays put, because 12px
   gutters on body copy would look cramped. */
@media(max-width:360px){
  .nav .wrap{padding-left:12px;padding-right:12px;gap:.5rem}
  .nav-cta{margin-left:0;gap:.4rem}
}

/* "Advertise" now lives in .nav-links (added 2026-07-29 at the user's request,
   which also puts it in the burger menu since .nav.open .nav-links is the same
   element). The util-bar pill would then render the same word twice, stacked
   ~20px apart, on wide screens. Hide the pill only where .nav-links is actually
   visible — i.e. above the 1100px burger breakpoint. Below that the nav is
   collapsed, so the pill is the only one-tap route to the page and must stay.
   Keep this breakpoint in sync with the .nav-links/.burger rule above. */
@media(min-width:1101px){ .util .u-r a[href="advertise.html"]{display:none} }

/* ---- loading skeletons --------------------------------------------------
   Every homepage rail ships display:none and unhides when its data arrives, so
   before this the page assembled itself in front of the reader: missing kids
   first, then dockets a second later, then the map, each one shoving the rest
   of the page down as it appeared. The skeletons claim the space immediately so
   the sections fade in where they were always going to sit.

   Deliberately NOT an animation-heavy shimmer: this is the first paint on a
   crime-news site people open on cheap phones over rural NM cell service, and a
   repainting gradient on eight cards costs more than it buys. A slow pulse on
   the background colour is enough to read as "loading" rather than "broken".
   prefers-reduced-motion turns even that off. */
.gb-skel{
  background:linear-gradient(90deg,rgba(255,255,255,.045),rgba(255,255,255,.085),rgba(255,255,255,.045));
  background-size:200% 100%;
  border-radius:12px;
  animation:gb-skel-pulse 1.4s ease-in-out infinite;
}
@keyframes gb-skel-pulse{0%{background-position:0% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){
  .gb-skel{animation:none;background:rgba(255,255,255,.06);}
}
/* Heights are matched to the real cards so the swap is a fade, not a jump. */
.gb-skel-card{height:232px;}
.gb-skel-ct{height:104px;}
.gb-skel-hm{height:150px;}

/* The 'Record not found' heading is demoted to a div by
   netlify/edge-functions/og-booking.js whenever a real record IS found,
   so the page's only h1 is the person's name. This keeps it looking
   identical in the case where it genuinely is the heading. */
.nf-h{font-family:var(--fd);font-size:2rem;font-weight:700;line-height:1.15}

/* ===== Join the GotBusted Community (homepage) =====
   Ken asked for a section with Facebook and TikTok buttons plus the social
   reach figures. Brand colours for the two platforms rather than the site red,
   because a Facebook button that is not Facebook blue reads as a decoy. */
.hs-wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:28px;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:18px;padding:28px 26px}
@media(max-width:860px){.hs-wrap{grid-template-columns:1fr;gap:22px}}
.hs-left h2{font-family:var(--fd);font-size:clamp(1.6rem,3vw,2.2rem);margin:.35rem 0 .6rem}
.hs-left h2 em{color:var(--red);font-style:normal}
.hs-left p{color:var(--mut);line-height:1.65;max-width:52ch;margin-bottom:1.3rem}
.hs-btns{display:flex;gap:.7rem;flex-wrap:wrap}
.hs-fb{background:#1877f2;color:#fff;border-color:#1877f2}
.hs-fb:hover{background:#0f63d3}
/* TikTok's own mark is black-on-white; on this background the inverse reads
   better and still scans as TikTok next to the logo glyph. */
.hs-tt{background:#f4f4f6;color:#0b0b0e;border-color:#f4f4f6}
.hs-tt:hover{background:#fff}
.hs-right{display:grid;gap:10px}
.hs-stat{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-align:center}
.hs-stat b{display:block;font-family:var(--fd);font-weight:700;font-size:1.8rem;line-height:1;color:#fff}
.hs-stat b em{color:var(--red);font-style:normal}
.hs-stat span{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-top:.4rem}
.hs-tot{border-color:var(--gold)}
.hs-tot b{color:var(--gold)}

/* ===== Registry "current as of" banner =====
   Ken asked for the last-updated date to be very noticeable. Amber to match the
   registry page's own accent, and it turns red once the capture is more than
   about a quarter old — see the .stale toggle in offenders.html. */
.so-asof-bar{display:flex;gap:.8rem;align-items:flex-start;background:rgba(217,164,65,.09);border:1px solid rgba(217,164,65,.45);border-left:4px solid #d9a441;border-radius:12px;padding:14px 18px;margin:1.4rem 0 .2rem}
.so-asof-bar>i{color:#d9a441;font-size:1.35rem;flex-shrink:0;margin-top:.1rem}
.so-asof-bar b{display:block;font-family:var(--fd);font-size:1.05rem;letter-spacing:.02em;color:#f0d08a;text-transform:uppercase}
.so-asof-bar span{display:block;color:var(--mut);font-size:.85rem;line-height:1.55;margin-top:.25rem}
.so-asof-bar.stale{background:rgba(224,20,39,.08);border-color:rgba(224,20,39,.5);border-left-color:var(--red)}
.so-asof-bar.stale>i{color:var(--red)}
.so-asof-bar.stale b{color:#ffc9ce}

/* ===== Legal page switcher =====
   Terms, Privacy, Editorial Standards and Corrections are four pages now
   (Ken, 2026-08-10). This strip sits at the top of each one so a reader who
   lands on the wrong one is a single tap from the right one. */
.legalnav{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 2rem;padding-bottom:1.4rem;border-bottom:1px solid var(--line)}
.legalnav a{font-family:var(--fd);font-weight:500;font-size:.82rem;letter-spacing:.05em;text-transform:uppercase;color:var(--mut);border:1px solid var(--line);border-radius:999px;padding:.42rem .95rem;transition:.15s}
.legalnav a:hover{color:var(--ink);border-color:var(--line-2)}
.legalnav a.on{color:#1a1400;background:var(--gold);border-color:var(--gold)}

/* ===== Advertise page: off-site social reach =====
   The statbar shows the combined number; this is the platform split, on the
   page where an advertiser is deciding. Same hand-maintained figures as the
   homepage block — update both together. */
.adsocial{display:grid;grid-template-columns:1.05fr .95fr;gap:28px;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:18px;padding:26px 24px}
@media(max-width:860px){.adsocial{grid-template-columns:1fr;gap:20px}}
.as-l h2{font-family:var(--fd);font-size:clamp(1.5rem,2.8vw,2rem);margin:.35rem 0 .6rem}
.as-l p{color:var(--mut);line-height:1.65;max-width:50ch}
.as-r{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:520px){.as-r{grid-template-columns:1fr}}
.as-s{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:16px 12px;text-align:center;display:block;transition:border-color .16s}
a.as-s:hover{border-color:var(--gold)}
.as-s>i{display:block;font-size:1.5rem;color:var(--gold);margin-bottom:.4rem}
.as-s b{display:block;font-family:var(--fd);font-weight:700;font-size:1.6rem;line-height:1;color:#fff}
.as-s b em{color:var(--red);font-style:normal}
.as-s span{display:block;font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);margin-top:.4rem}
.as-tot{border-color:var(--gold)}
.as-tot b{color:var(--gold)}
.as-s small.as-stamp{display:block;font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);opacity:.8;margin-top:.25rem}
.as-fresh{grid-column:1/-1;margin:2px 0 0;text-align:center;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}

/* ===== Stage 3 homepage parity: Busted Meter, My County, Daily Poll, map info panel,
   Tonight's Feature tile, 3D map chrome — selectors extracted verbatim from live gb.css ===== */

.sec-head .kick{margin-bottom:.3rem}

html.gb-shell .subhero .kick{ font-size:.62rem; letter-spacing:.2em }

.pollcard{
  background:var(--bg-2); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:22px 24px; max-width:640px;
}

.poll-h{ margin-bottom:.5rem }

.poll-q{ font-family:var(--fd); font-size:1.35rem; line-height:1.2; margin:0 0 1.1rem; text-transform:none }

.poll-opts{ display:flex; flex-direction:column; gap:.5rem }

.poll-opt{
  display:flex; align-items:center; gap:.7rem; width:100%; text-align:left;
  background:var(--bg); border:1px solid var(--line-2); color:var(--ink);
  border-radius:10px; padding:.8rem .9rem; font-size:.95rem; font-family:var(--fb);
  cursor:pointer; transition:border-color .14s, background .14s;
}

.poll-opt:hover{ border-color:var(--red); background:var(--bg-3) }

.poll-opt:active{ transform:scale(.995) }

.poll-dot{
  width:16px; height:16px; border-radius:50%; border:2px solid var(--line-2);
  flex:0 0 auto; transition:border-color .14s;
}

.poll-opt:hover .poll-dot{ border-color:var(--red) }

.poll-results{ display:flex; flex-direction:column; gap:.7rem }

.poll-res-t{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:.3rem; font-size:.92rem }

.poll-res-t b{ font-family:var(--fd); color:var(--mut) }

.poll-res.mine .poll-res-t b{ color:var(--gold) }

.poll-bar{ height:8px; border-radius:99px; background:var(--bg); overflow:hidden }

.poll-bar i{
  display:block; height:100%; border-radius:99px; background:var(--line-2);
  transition:width .5s cubic-bezier(.22,1,.36,1);
}

.poll-res.mine .poll-bar i{ background:linear-gradient(90deg,var(--red),#f0273c) }

.poll-foot{ margin:1rem 0 0; font-size:.78rem; color:var(--mut-2) }

@media(max-width:520px){
  .pollcard{ padding:18px 16px }
  .poll-q{ font-size:1.15rem }
}

.tfp{
  display:grid; grid-template-columns:200px 1fr; gap:0;
  background:var(--bg-2); border:1px solid var(--line); border-radius:var(--r-lg);
  overflow:hidden; max-width:820px;
}

.tfp-img{ position:relative; background:var(--bg-3); min-height:220px }

.tfp-img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 20% }

.tfp.nopic .tfp-img{ display:none }

.tfp.nopic{ grid-template-columns:1fr }

.tfp-body{ padding:22px 24px; display:flex; flex-direction:column; justify-content:center }

.tfp-kick{
  display:inline-flex; align-items:center; gap:.4rem;
  font-family:var(--fd); font-size:.62rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--gold); margin-bottom:.55rem;
}

.tfp-body h3{
  font-family:var(--fd); font-size:1.5rem; line-height:1.1; margin:0 0 .45rem;
  text-transform:uppercase; letter-spacing:.01em;
}

.tfp-body p{ margin:0 0 .5rem; color:#ff6b76; font-weight:600; font-size:.95rem; line-height:1.35 }

.tfp-meta{ font-size:.78rem; color:var(--mut-2) }

.tfp:hover{ border-color:var(--red) }

.tfp:active{ transform:scale(.995) }

.meter{
  background:var(--bg-2); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:20px 24px; max-width:520px;
}

.meter-h{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.7rem }

.meter-verdict{
  font-family:var(--fd); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  padding:.25rem .6rem; border-radius:999px; border:1px solid var(--line-2); color:var(--mut);
}

.meter.hot  .meter-verdict{ color:#ff8a93; border-color:rgba(224,20,39,.5) }

.meter.cool .meter-verdict{ color:#7fd6a3; border-color:rgba(75,231,147,.35) }

.meter-n{ display:flex; align-items:baseline; gap:.6rem; margin-bottom:.8rem }

.meter-n b{ font-family:var(--fd); font-size:2.6rem; line-height:1; font-variant-numeric:tabular-nums }

.meter-n span{ font-size:.85rem; color:var(--mut) }

.meter-bar{ position:relative; height:10px; border-radius:99px; background:var(--bg); overflow:hidden }

.meter-bar i{
  display:block; height:100%; border-radius:99px;
  background:linear-gradient(90deg,#4be793,#e0b64c);
  transition:width .7s cubic-bezier(.22,1,.36,1);
}

.meter.hot .meter-bar i{ background:linear-gradient(90deg,#e0b64c,var(--red)) }

.meter-mid{ position:absolute; left:50%; top:-3px; bottom:-3px; width:2px; background:var(--line-2) }

.meter-foot{ margin:.7rem 0 0; font-size:.78rem; color:var(--mut-2); line-height:1.5 }

.meter-foot b{ color:var(--mut) }

.myc{
  background:var(--bg-2); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:20px 24px; max-width:520px;
}

.myc-h{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.6rem }

.myc-change{
  background:none; border:0; color:var(--mut-2); font-size:.75rem; cursor:pointer;
  font-family:var(--fd); letter-spacing:.08em; text-transform:uppercase;
}

.myc-change:hover{ color:var(--gold) }

.myc p{ margin:0 0 .8rem; font-size:.9rem; color:var(--mut); line-height:1.5 }

.myc-line b{ color:var(--ink); font-family:var(--fd); font-size:1.1rem }

.myc-chips{ display:flex; flex-wrap:wrap; gap:.4rem; max-height:170px; overflow-y:auto }

.myc-chip{
  background:var(--bg); border:1px solid var(--line-2); color:var(--ink);
  border-radius:999px; padding:.4rem .75rem; font-size:.82rem; cursor:pointer;
  font-family:var(--fd); letter-spacing:.02em;
}

.myc-chip:hover{ border-color:var(--red); color:#fff }

.myc-rows{ display:flex; flex-direction:column; gap:.3rem; margin-bottom:.8rem }

.myc-row{ display:flex; flex-direction:column; padding:.45rem 0; border-top:1px solid var(--line) }

.myc-row b{ font-size:.88rem }

.myc-row span{ font-size:.78rem; color:#ff6b76 }

.myc-a{ display:flex; flex-wrap:wrap; gap:.5rem .9rem }

.myc-a a{
  font-family:var(--fd); font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; color:var(--gold);
}

@media(max-width:560px){
  .tfp{ grid-template-columns:1fr }
  .tfp-img{ min-height:200px }
  .tfp-body{ padding:16px 18px }
  .tfp-body h3{ font-size:1.25rem }
  .meter,.myc{ padding:16px 18px }
  .meter-n b{ font-size:2.1rem }
}

.mapinfo{
  background:var(--bg-2); border:1px solid var(--line-2); border-radius:var(--r);
  padding:14px 16px; margin-top:12px; max-width:420px;
}

.mapinfo-h{ display:flex; align-items:center; justify-content:space-between; gap:1rem }

.mapinfo-h b{ font-family:var(--fd); font-size:1.02rem; letter-spacing:.02em }

.mapinfo-x{
  background:none; border:0; color:var(--mut-2); font-size:1.4rem; line-height:1;
  cursor:pointer; padding:0 .2rem;
}

.mapinfo-x:hover{ color:var(--ink) }

.mapinfo p{ margin:.45rem 0 .7rem; font-size:.86rem; color:var(--mut); line-height:1.5 }

.mapinfo p b{ color:var(--ink); font-family:var(--fd) }

.mapinfo-a{ display:flex; flex-wrap:wrap; gap:.5rem .9rem }

.mapinfo-a a{
  font-family:var(--fd); font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; color:var(--gold);
}

.gbmap3d{
  position:relative; width:100%; height:min(74vh,780px);
  border-radius:14px; overflow:hidden; touch-action:pan-y;
  opacity:0; transition:opacity .45s ease;
  
}

.gbmap3d.on{ opacity:1 }

@media(max-width:820px){ .gbmap3d{ height:auto; aspect-ratio:5/6 } }

.gbmap3d canvas{ display:block; width:100%; height:100%; position:relative; z-index:1 }

.gbmap3d-labels{
  position:absolute; inset:0; z-index:3; pointer-events:none;
  transition:opacity .35s ease; will-change:opacity;
}

.gbmap3d-lab{
  position:absolute; transform:translate(-50%,-50%);
  text-align:center; line-height:1.05; white-space:nowrap;
  font-family:var(--font-head,inherit); letter-spacing:.02em;
  text-shadow:0 1px 3px #000, 0 0 8px rgba(0,0,0,.9);
}

.gbmap3d-lab b{ display:block; font-size:.68rem; font-weight:700; color:#fff }

.gbmap3d-dot{
  display:block; width:3px; height:3px; margin:0 auto 2px;
  border-radius:50%; background:rgba(255,255,255,.75);
  box-shadow:0 0 3px rgba(0,0,0,.9);
}

.gbmap3d-lab i{ display:block; font-style:normal; font-size:.62rem; font-weight:600; opacity:.95 }

.gbmap3d-lab.s-live i{ color:#8affc4 }

.gbmap3d-lab.s-resonly i{ color:#5ad9c6 }

.gbmap3d-lab.s-courtonly i{ color:#b3beff }

.gbmap3d-lab.s-maint i{ color:#f0cc72 }

.gbmap3d-lab.s-none{ opacity:.55 }

@media(max-width:820px){
  .gbmap3d-lab b{ font-size:.58rem } .gbmap3d-lab i{ font-size:.55rem }
  .gbmap3d-lab.s-none{ display:none }   
}

.gbmap3d-tip{
  position:absolute; z-index:4; pointer-events:none; opacity:0;
  padding:.3rem .55rem; border-radius:7px; font-size:.78rem; font-weight:600;
  background:rgba(10,10,14,.92); color:#fff; border:1px solid rgba(255,255,255,.14);
  transition:opacity .12s ease;
}

.gbmap3d-tip.on{ opacity:1 }

.gbmap3d-back{
  position:absolute; z-index:5; top:12px; left:12px;
  padding:.42rem .8rem; border-radius:999px; cursor:pointer;
  font:inherit; font-size:.8rem; font-weight:600;
  background:rgba(10,10,14,.86); color:#fff;
  border:1px solid rgba(255,255,255,.18);
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}

.gbmap3d-back.on{ opacity:1; pointer-events:auto }

.gbmap3d-back:hover{ background:rgba(24,24,32,.94) }

@media(prefers-reduced-motion:reduce){ .gbmap3d{ display:none } }

.gbmap3d-lab.is-compact b{ font-size:.6rem }

.gbmap3d-lab.is-compact i{ display:none }

.gbmap3d-lab.is-dot b, .gbmap3d-lab.is-dot i{ display:none }

.gbmap3d-lab.is-dot .gbmap3d-dot{
  width:5px; height:5px; margin:0;
  background:rgba(255,255,255,.9); box-shadow:0 0 4px rgba(0,0,0,1);
}

.gbmap3d-lab.is-tiny b{ font-size:.53rem; letter-spacing:0 }

.gbmap3d-lab.is-tiny i{ display:none }

.gbmap3d-lab.is-tiny .gbmap3d-dot{ width:2px; height:2px; margin-bottom:1px }

.gbmap3d-lab.is-mine b{ color:#ffe8a8 }

.gbmap3d-lab.is-mine .gbmap3d-dot{
  width:6px; height:6px; background:#ffd166;
  box-shadow:0 0 0 2px rgba(255,209,102,.35), 0 0 6px rgba(0,0,0,.9);
}

.gbmap3d-mine{
  position:absolute; z-index:5; right:12px; bottom:12px;
  padding:.42rem .8rem; border-radius:999px; cursor:pointer;
  font:inherit; font-size:.78rem; font-weight:600;
  background:rgba(10,10,14,.86); color:#ffd166;
  border:1px solid rgba(255,209,102,.35);
}

.gbmap3d-mine:hover{ background:rgba(24,24,32,.94) }

.gbmap3d-perf{
  position:absolute; z-index:6; left:12px; bottom:12px; pointer-events:none;
  font:600 11px/1.35 ui-monospace,Menlo,monospace; white-space:pre;
  padding:.35rem .5rem; border-radius:6px;
  background:rgba(0,0,0,.72); color:#8affc4;
}

.gbmap3d-panel{
  position:absolute; z-index:6; left:12px; bottom:12px; right:auto;
  max-width:min(340px, calc(100% - 24px));
}

.gbmap3d-panel .mapinfo{
  background:rgba(10,10,14,.93); border:1px solid rgba(255,255,255,.14);
  border-radius:12px; padding:.7rem .85rem;
  box-shadow:0 10px 30px rgba(0,0,0,.55);
}

@media(max-width:820px){
  .gbmap3d-panel{ left:8px; right:8px; bottom:8px; max-width:none }
  
  .gbmap3d-mine{ bottom:auto; top:12px; right:12px }
}

.todaygrid{
  display:grid; gap:18px; align-items:start;
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
}

.todaygrid > div{ min-width:0 }

#home-today-sec .tfp{ max-width:none }

.todaygrid .meter,
.todaygrid .myc,
.todaygrid .poll{ max-width:none; width:100% }

#home-today-sec .tfp{ grid-template-columns:300px 1fr }

@media(max-width:860px){ #home-today-sec .tfp{ grid-template-columns:1fr } }

.todaygrid .myc-pick .myc-chips{
  max-height:190px; overflow-y:auto; padding-right:4px;
  -webkit-mask-image:linear-gradient(#000 82%,transparent);
          mask-image:linear-gradient(#000 82%,transparent);
}

.tfp-img img{ object-fit:contain; object-position:center }

#home-today-sec .tfp-img{ min-height:320px; background:#08080c }

@media(max-width:860px){
  #home-today-sec .tfp-img{ min-height:420px }
}

/* Flat-map takeover: when the 3D build attaches it marks the section
   .gbmap3d-on; the SVG stays in the DOM for crawlers/screen readers but is
   clipped away visually so it does not reserve a panel above the 3D map. */
#home-map-sec.gbmap3d-on #home-map{
  position:absolute; width:1px; height:1px; overflow:hidden; padding:0; margin:-1px;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
}

/* ===== FBI Most Wanted ===== */
.mw-warning{display:flex;gap:.9rem;align-items:flex-start;background:var(--red-soft);border:1px solid var(--red);border-radius:var(--r-lg);padding:1rem 1.2rem;margin:1.6rem 0}
.mw-warning>i{color:var(--red);font-size:1.6rem;flex:none;margin-top:.15rem}
.mw-warning p{font-weight:600;line-height:1.5}
.mw-contacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem;margin-bottom:1.6rem}
.mw-contacts a{display:flex;gap:.8rem;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:.85rem 1rem;transition:border-color .15s}
.mw-contacts a:hover{border-color:var(--gold)}
.mw-contacts i{font-size:1.5rem;color:var(--gold);flex:none}
.mw-contacts span{display:flex;flex-direction:column;font-size:.85rem;color:var(--mut);line-height:1.35}
.mw-contacts b{color:var(--ink);font-family:var(--fd);letter-spacing:.04em;text-transform:uppercase;font-size:.8rem}
.mw-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.2rem}
.mw-tabs button{font-family:var(--fd);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:.82rem;background:var(--bg-2);color:var(--mut);border:1px solid var(--line);border-radius:999px;padding:.5rem 1rem;cursor:pointer;transition:all .15s}
.mw-tabs button:hover{color:var(--ink);border-color:var(--line-2)}
.mw-tabs button.active{background:var(--red);border-color:var(--red);color:#fff}
.mw-filters{display:flex;gap:.8rem;flex-wrap:wrap;margin-bottom:1.4rem}
.mw-search{flex:1;min-width:240px;display:flex;align-items:center;gap:.6rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:0 .9rem}
.mw-search i{color:var(--mut)}
.mw-search input{flex:1;background:none;border:none;color:var(--ink);padding:.7rem 0;font:inherit;outline:none}
.mw-office select{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);padding:.7rem .9rem;font:inherit;max-width:100%}
.mw-count{color:var(--mut);font-size:.85rem;margin-bottom:1rem}
.mw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.2rem}
.mw-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;display:flex;flex-direction:column}
.mw-photo{position:relative;aspect-ratio:4/3.4;background:var(--bg-3);overflow:hidden}
.mw-photo img{width:100%;height:100%;object-fit:cover;object-position:top}
.mw-nophoto{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:var(--mut-2)}
.mw-nophoto i{font-size:3rem}
.mw-nophoto span{font-size:.8rem}
.mw-source{position:absolute;left:.7rem;bottom:.7rem;background:rgba(0,0,0,.78);color:var(--gold);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.3rem .6rem;border-radius:6px;display:inline-flex;gap:.35rem;align-items:center}
.mw-body{padding:1.1rem 1.2rem 1.2rem;display:flex;flex-direction:column;gap:.55rem;flex:1}
.mw-body h3{font-family:var(--fd);font-size:1.25rem;letter-spacing:.02em;line-height:1.2}
.mw-aliases,.mw-charges{font-size:.85rem;color:var(--mut)}
.mw-aliases b,.mw-charges b{color:var(--ink)}
.mw-reward{font-size:.88rem;color:var(--gold);font-weight:600;display:flex;gap:.4rem;align-items:flex-start}
.mw-caution{font-size:.82rem;color:#ff8a94;display:flex;gap:.4rem;align-items:flex-start;background:rgba(224,20,39,.08);border-radius:8px;padding:.5rem .6rem}
.mw-meta{display:grid;gap:.4rem;font-size:.8rem}
.mw-meta div{display:flex;gap:.5rem}
.mw-meta dt{color:var(--mut-2);min-width:130px;font-weight:600;text-transform:uppercase;font-size:.68rem;letter-spacing:.08em;padding-top:.15rem}
.mw-meta dd{color:var(--mut)}
.mw-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:auto;padding-top:.5rem}
.mw-notice{font-size:.72rem;color:var(--mut-2);line-height:1.5;border-top:1px solid var(--line);padding-top:.6rem}
.mw-pager{display:flex;gap:1rem;align-items:center;justify-content:center;margin:1.8rem 0}
.mw-pager span{color:var(--mut);font-size:.85rem}
.mw-footnote{display:flex;gap:.8rem;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;margin:2rem 0 3rem;color:var(--mut);font-size:.82rem}
.mw-footnote>i{color:var(--gold);font-size:1.2rem;flex:none;margin-top:.1rem}

/* ===== Know Your Rights ===== */
.kyr-page{padding-bottom:3rem}
.kyr-toolbar{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-top:1.2rem}
.kyr-lang{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.kyr-lang button{background:var(--bg-2);border:none;color:var(--mut);font-family:var(--fd);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:.8rem;padding:.55rem 1.1rem;cursor:pointer}
.kyr-lang button.active{background:var(--red);color:#fff}
.kyr-disclaimer{display:flex;gap:.9rem;align-items:flex-start;background:rgba(239,180,45,.08);border:1px solid var(--gold-2);border-radius:var(--r-lg);padding:1rem 1.2rem;margin:1.6rem 0}
.kyr-disclaimer>i{color:var(--gold);font-size:1.5rem;flex:none;margin-top:.15rem}
.kyr-reviewed{font-size:.78rem;color:var(--mut);margin-top:.35rem}
.kyr-toc{display:flex;gap:.4rem 1.2rem;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--line);padding-bottom:1.1rem;margin-bottom:2.2rem;font-size:.9rem}
.kyr-toc b{font-family:var(--fd);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;color:var(--mut)}
.kyr-toc a{color:var(--gold);font-weight:600}
.kyr-toc a:hover{text-decoration:underline}
.kyr-sec{margin-bottom:3rem;scroll-margin-top:90px}
.kyr-intro{color:var(--mut);max-width:760px;margin-bottom:1.2rem}
.kyr-limits{display:flex;gap:.8rem;align-items:flex-start;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:.9rem 1.1rem;margin-bottom:1.4rem;font-size:.88rem;color:var(--mut)}
.kyr-limits>i{color:var(--gold);flex:none;margin-top:.15rem}
.kyr-jump{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.6rem}
.kyr-jump a{width:2.2rem;height:2.2rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:var(--bg-2);font-family:var(--fd);font-weight:600;font-size:.85rem;color:var(--mut);transition:all .15s}
.kyr-jump a:hover{border-color:var(--red);color:var(--ink)}
.kyr-amends{display:grid;gap:1.2rem}
.kyr-amend{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.4rem 1.5rem;scroll-margin-top:90px}
.kyr-amend>header{display:flex;gap:1rem;align-items:center;margin-bottom:1rem}
.kyr-num{flex:none;width:3rem;height:3rem;border-radius:10px;background:var(--red);color:#fff;font-family:var(--fd);font-weight:700;font-size:1.3rem;display:inline-flex;align-items:center;justify-content:center}
.kyr-amend h3{font-family:var(--fd);font-size:1.25rem;letter-spacing:.02em;line-height:1.25}
.kyr-year{color:var(--mut-2);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}
.kyr-original{margin-bottom:.9rem}
.kyr-original h4{font-family:var(--fd);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin-bottom:.4rem}
.kyr-original blockquote{border-left:3px solid var(--gold);padding:.4rem 0 .4rem 1rem;color:var(--ink);font-size:.92rem;line-height:1.65;font-style:italic}
.kyr-excerpt{font-size:.75rem;color:var(--mut-2);margin-top:.4rem}
.kyr-plain,.kyr-why{font-size:.92rem;margin-bottom:.6rem}
.kyr-plain b,.kyr-why b{color:var(--gold)}
.kyr-expanded{font-size:.9rem;color:var(--mut);margin-bottom:.6rem;line-height:1.65}
.kyr-anno{display:inline-flex;gap:.45rem;align-items:center;color:var(--gold);font-size:.82rem;font-weight:600;margin-top:.4rem}
.kyr-anno:hover{text-decoration:underline}
.kyr-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin-bottom:1.2rem}
@media(max-width:820px){.kyr-cols{grid-template-columns:1fr}}
.kyr-col{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.3rem 1.4rem}
.kyr-col h3{font-family:var(--fd);font-size:1.1rem;letter-spacing:.03em;display:flex;gap:.5rem;align-items:center;margin-bottom:.9rem}
.kyr-col.do h3 i{color:#3ecf6e}
.kyr-col.dont h3 i{color:var(--red)}
.kyr-col ul{list-style:none;display:grid;gap:.55rem}
.kyr-col li{font-size:.88rem;line-height:1.55;padding-left:1.1rem;position:relative;color:var(--mut)}
.kyr-col.do li::before{content:"✓";position:absolute;left:0;color:#3ecf6e;font-weight:700}
.kyr-col.dont li::before{content:"✕";position:absolute;left:0;color:var(--red);font-weight:700}
.kyr-helpful{background:var(--bg-2);border:1px solid var(--gold-2);border-radius:var(--r-lg);padding:1.3rem 1.4rem;margin-bottom:1.2rem}
.kyr-helpful h3{font-family:var(--fd);font-size:1.1rem;display:flex;gap:.5rem;align-items:center;margin-bottom:.9rem;color:var(--gold)}
.kyr-helpful ul{list-style:none;display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.kyr-helpful li{font-size:.92rem;background:var(--bg-3);border-radius:8px;padding:.55rem .8rem}
.kyr-safety{display:flex;gap:.9rem;align-items:flex-start;background:var(--red-soft);border:1px solid var(--red);border-radius:var(--r-lg);padding:1rem 1.2rem}
.kyr-safety>i{color:var(--red);font-size:1.5rem;flex:none;margin-top:.15rem}
.kyr-safety p{font-weight:600;font-size:.92rem}
.kyr-list{list-style:none;display:grid;gap:.6rem;max-width:760px}
.kyr-list li{display:flex;gap:.6rem;align-items:flex-start;font-size:.92rem;color:var(--mut);line-height:1.55}
.kyr-list li>i{color:var(--gold);flex:none;margin-top:.2rem}
.kyr-resources{margin-top:1.6rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.3rem 1.4rem}
.kyr-resources h3{font-family:var(--fd);font-size:1.1rem;display:flex;gap:.5rem;align-items:center;margin-bottom:1rem}
.kyr-res-links{display:flex;gap:.7rem;flex-wrap:wrap;margin-bottom:.8rem}
.kyr-res-note{font-size:.8rem;color:var(--mut-2)}
.kyr-state{margin-bottom:1.6rem}
.kyr-state>h3{font-family:var(--fd);font-size:1.15rem;display:flex;gap:.5rem;align-items:center;margin-bottom:.8rem;color:var(--gold)}
.kyr-update{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:.8rem}
.kyr-update h4{font-size:1rem;margin-bottom:.25rem}
.kyr-update p{font-size:.9rem;color:var(--mut);line-height:1.6}
.kyr-related{border-top:1px solid var(--line);padding-top:1.6rem}
.kyr-related h3{font-family:var(--fd);font-size:1.05rem;margin-bottom:.9rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.kyr-related>div{display:flex;gap:.7rem;flex-wrap:wrap}
@media print{.kyr-toolbar,.kyr-toc,.kyr-jump,.kyr-related,.nav,.util,.foot,.ticker,.gb-chat{display:none!important}.kyr-amend{break-inside:avoid}}

/* ---- BREAKING CRIME & PUBLIC SAFETY NEWS ticker (crime news feed) ---- */
.ticker .tag .tk-title-sm{display:none}
@media(max-width:900px){.ticker .tag .tk-title{display:none}.ticker .tag .tk-title-sm{display:inline}}
.ticker.emergency{background:#12120f;border-bottom:2px solid var(--gold)}
.ticker.emergency .tag{background:var(--gold);color:#1a1400}
.ticker .wrap{flex-wrap:nowrap}
.ticker .tk-controls{display:flex;gap:.25rem;flex-shrink:0;margin-left:auto}
.ticker .tk-btn{background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:5px;width:28px;height:26px;display:grid;place-items:center;cursor:pointer;font-size:.8rem}
.ticker .tk-btn:hover,.ticker .tk-btn:focus-visible{background:rgba(0,0,0,.5);border-color:#fff}
.ticker.ticker-min .tk-btn{width:auto;padding:.2rem .7rem;gap:.4rem;display:inline-flex;align-items:center;font-size:.76rem;text-transform:uppercase;letter-spacing:.06em}
.ticker.ticker-min .wrap{height:32px}
.ticker .tk-cat{display:inline-block;font-family:var(--fd);font-weight:700;font-size:.66rem;letter-spacing:.08em;padding:.05rem .4rem;border-radius:3px;vertical-align:middle}
.ticker .tk-sep{color:#fff;margin:0 .7rem;opacity:.8}
.ticker .tk-single{padding-left:0;animation:none;display:inline-block}
.ticker .tk-emergency{display:inline-block;padding-left:0;animation:none;color:#ffe9a8}
.ticker .tk-emergency a{color:#fff}
.ticker .tk-panel{display:flex;flex-wrap:wrap;gap:.8rem;align-items:end;padding:.6rem 0;height:auto;background:rgba(0,0,0,.35)}
.ticker .tk-panel label{display:flex;flex-direction:column;gap:.2rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em}
.ticker .tk-panel input,.ticker .tk-panel select{background:#0b0b0e;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:4px;padding:.28rem .45rem;font-size:.8rem}
.ticker .tk-panel .tk-more{color:#fff;text-decoration:underline;font-size:.78rem}
@media(max-width:720px){.ticker .tk-panel label{flex:1 1 45%}}

/* crime news pages */
.cn-page{padding:2rem 0 3rem;max-width:860px}
.cn-page h1{font-family:var(--fd);font-size:1.9rem;margin:.6rem 0 1rem}
.cn-lede{color:var(--mut);margin-bottom:1.4rem}
.cn-list{list-style:none;padding:0;display:grid;gap:1rem}
.cn-list li{border:1px solid var(--line);border-radius:8px;padding:.9rem 1rem;background:rgba(255,255,255,.02)}
.cn-list a{color:#fff;font-weight:600;text-decoration:none}
.cn-list a:hover{text-decoration:underline}
.cn-cat{display:inline-block;font-family:var(--fd);font-weight:700;font-size:.68rem;letter-spacing:.09em;padding:.1rem .45rem;border-radius:3px;margin-right:.5rem}
.cn-meta{color:var(--mut);font-size:.8rem;margin-top:.4rem}
.cn-summary{margin:1rem 0;line-height:1.6}
.cn-correction{border-left:3px solid var(--red);padding-left:.8rem;color:#ffb4b4}
.cn-source-btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--red);color:#fff;font-family:var(--fd);font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.8rem 1.4rem;border-radius:6px;text-decoration:none;margin:.5rem 0 1.5rem}
.cn-source-btn:hover{background:#a70d25}
.cn-notice{border:1px solid var(--line);border-radius:8px;padding:.9rem;color:var(--mut);font-size:.84rem;margin-top:2rem}
.cn-extra ul{padding-left:1.2rem}
.cn-filters{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:0 0 1.2rem}
.cn-filters select{background:#141418;color:#fff;border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;font-size:.85rem}
.cn-topics{display:flex;flex-wrap:wrap;gap:.35rem}
.cn-topics button,.cn-clear{background:transparent;color:var(--mut);border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;font-size:.76rem;cursor:pointer}
.cn-topics button.is-on{background:var(--red);border-color:var(--red);color:#fff}
.cn-clear{color:#fff}
.cn-topic{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--gold,#efb42d);border:1px solid rgba(239,180,45,.45);border-radius:3px;padding:.08rem .4rem;margin-right:.5rem;text-decoration:none}
.cn-sum{color:#d6d6dc;font-size:.88rem;line-height:1.5;margin:.4rem 0 0}
.cn-legal{border:1px solid var(--line);border-radius:8px;padding:.7rem .9rem;color:var(--mut);font-size:.85rem;margin:.8rem 0}
.cn-legal.is-allegation{border-color:rgba(239,180,45,.45)}
.cn-legal-mini{color:var(--mut);font-size:.74rem;margin:.3rem 0 0;font-style:italic}
.cn-resolved{border-left:3px solid #22c55e;padding-left:.8rem;color:#9be7b4;margin:.6rem 0}
.admin-ticker section{border:1px solid var(--line);border-radius:8px;padding:1rem;margin:1.2rem 0}
.admin-ticker .admin-card{border:1px solid var(--line);border-radius:6px;padding:.7rem;margin:.6rem 0}
.admin-ticker .admin-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.5rem}
.admin-ticker input,.admin-ticker textarea,.admin-ticker select{background:#0b0b0e;color:#fff;border:1px solid var(--line);border-radius:4px;padding:.4rem;margin:.25rem 0;max-width:100%}
.admin-ticker textarea{width:100%;min-height:60px}
.admin-ticker button{background:var(--red);color:#fff;border:none;border-radius:4px;padding:.45rem .9rem;cursor:pointer;font-weight:600}
@media(max-width:720px){
  .ticker .wrap{flex-wrap:wrap;height:auto;padding-top:.35rem;padding-bottom:.35rem;row-gap:.3rem}
  .ticker .wrap>.scroll{order:3;flex:1 0 100%;min-width:0}
  .ticker .tk-controls{order:2}
  .ticker .tk-panel{order:4;flex:1 0 100%}
}
@media(max-width:380px){
  .ticker .wrap{column-gap:.45rem}
  .ticker .tag{max-width:calc(100% - 122px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .ticker .tk-controls{gap:.15rem}
  .ticker .tk-controls .tk-btn:nth-child(2),.ticker .tk-controls .tk-btn:nth-child(3){display:none}
}

/* The marquee rule must apply only to the single track element, not to the
   category chips and item pieces nested inside it. */
.ticker .scroll > span span,.ticker .scroll .tk-cat,.ticker .scroll .tk-piece{padding-left:0;animation:none}
.ticker .scroll > span{animation-duration:26s}
.ticker .scroll.tk-paused > span{animation-play-state:paused}
.ticker .scroll > .tk-single,.ticker .scroll > .tk-emergency{padding-left:0;animation:none}
.ticker .tk-piece{margin-right:.2rem}

/* ---- Site-wide smart record search ---- */
.ss-wrap{margin:1.4rem 0 2rem}
.ss-bar{display:flex;gap:.7rem;flex-wrap:wrap;align-items:stretch}
.ss-input{position:relative;flex:1 1 320px;display:flex;align-items:center}
.ss-input i{position:absolute;left:14px;color:var(--mut-2)}
.ss-input input{width:100%;height:52px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--bg-2);color:inherit;padding:0 44px 0 40px;font-size:1rem}
.ss-input input:focus{outline:none;border-color:var(--red)}
.ss-input button{position:absolute;right:10px;background:none;border:0;color:var(--mut-2);cursor:pointer}
.ss-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin:.9rem 0}
.ss-tab{font-family:var(--fd);font-weight:600;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;padding:.5rem .9rem;border-radius:999px;border:1px solid var(--line);background:var(--bg-2);color:var(--mut);cursor:pointer}
.ss-tab.on{border-color:var(--red);color:#fff;background:rgba(200,30,40,.16)}
.ss-tab span{opacity:.7;margin-left:.35rem}
.ss-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:1rem;margin-bottom:1rem}
.ss-status{font-size:.85rem;color:var(--mut);margin:.4rem 0 1rem}
.ss-empty{text-align:center;padding:2.4rem 1rem;color:var(--mut);border:1px dashed var(--line);border-radius:var(--r-lg)}
.ss-list{display:grid;gap:.9rem}
.ss-row{display:grid;grid-template-columns:120px 1fr;gap:1rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:.18s;color:inherit;text-decoration:none}
.ss-row:hover{border-color:var(--red)}
.ss-photo{background:#000;aspect-ratio:4/5}
.ss-photo img{width:100%;height:100%;object-fit:cover}
.ss-photo-ph{display:flex;align-items:center;justify-content:center;height:100%;color:var(--mut-2);font-size:2rem}
.ss-body{padding:.9rem 1rem .9rem 0}
.ss-kind{display:inline-block;font-family:var(--fd);font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);border:1px solid var(--line-2);border-radius:4px;padding:.15rem .45rem;margin-bottom:.4rem}
.ss-body h4{font-family:var(--fd);font-size:1.05rem;font-weight:600;margin-bottom:.4rem;text-transform:none}
.ss-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.35rem .9rem;margin-bottom:.45rem}
.ss-fact span{display:block;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mut-2)}
.ss-fact b{font-size:.85rem;font-weight:600}
.ss-charge{font-size:.85rem;color:var(--red);font-weight:600}
.ss-mark{background:rgba(226,178,68,.28);color:inherit;border-radius:3px;padding:0 2px}
.ss-note{margin-top:1.2rem;font-size:.75rem;color:var(--mut-2);text-align:center}
@media(max-width:640px){
  .ss-row{grid-template-columns:1fr}
  .ss-photo{aspect-ratio:1/1;max-height:320px}
  .ss-body{padding:.9rem 1rem}
}

/* NMCD prison inmate search (handoff) */
.nmcd{margin:1.2rem 0 0}
.nmcd-note{display:flex;gap:.55rem;align-items:flex-start;background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:.85rem 1rem;font-size:.92rem;line-height:1.5}
.nmcd-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:.8rem;align-items:end;margin:1.1rem 0 .5rem}
.nmcd-f{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.nmcd-f span{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;opacity:.8}
.nmcd-f input{width:100%;padding:.7rem .8rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:inherit;font:inherit}
.nmcd-go{white-space:nowrap}
.nmcd-fresh{font-size:.85rem;opacity:.8;display:flex;gap:.4rem;align-items:center;margin:.2rem 0 0}
.nmcd-result{margin:1.3rem 0 0;border:1px solid var(--line);border-radius:10px;padding:1.1rem;background:var(--bg-2)}
.nmcd-result h3{margin:.6rem 0 .4rem;font-size:1.15rem}
.nmcd-badge{display:inline-flex;gap:.4rem;align-items:center;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gold);border:1px solid var(--gold);border-radius:999px;padding:.25rem .6rem}
.nmcd-list{list-style:none;margin:.9rem 0 0;padding:0;display:grid;gap:.7rem}
.nmcd-list li{display:flex;flex-direction:column;gap:.2rem;border-top:1px solid var(--line);padding-top:.7rem}
.nmcd-verify{margin:.9rem 0 0;font-size:.85rem;opacity:.85}
.nmcd-src{margin-top:1rem;display:inline-flex;gap:.45rem;align-items:center}
@media(max-width:760px){.nmcd-form{grid-template-columns:1fr}.nmcd-go{width:100%;justify-content:center}}

/* ── Sex offender registry (React page). Sober slate + amber reference tool:
   deliberately not the red/gold booking tabloid palette. */
.so-hero{background:linear-gradient(180deg,#1c1a17 0%,var(--bg) 100%);border-bottom:1px solid var(--line);padding:3.2rem 0 2.6rem}
.so-hero .eyebrow{color:#d9a441}
.so-hero h1{font-family:var(--fd);font-size:clamp(2.1rem,5vw,3.2rem);line-height:1.03;margin:.5rem 0 .7rem;text-transform:uppercase}
.so-hero h1 em{color:#d9a441;font-style:normal}
.so-hero p{color:var(--mut);max-width:660px;line-height:1.6}
.so-warn{display:flex;gap:.8rem;align-items:flex-start;background:rgba(217,164,65,.07);border:1px solid rgba(217,164,65,.26);border-radius:14px;padding:14px 16px;margin-top:1.4rem;max-width:720px}
.so-warn i{color:#d9a441;font-size:1.3rem;flex-shrink:0;margin-top:.1rem}
.so-warn b{display:block;margin-bottom:.15rem;text-transform:uppercase;font-family:var(--fd);letter-spacing:.02em}
.so-warn span{color:var(--mut);font-size:.9rem;line-height:1.55}
.so-official{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.2rem;background:#d9a441;color:#171310;border-radius:999px;padding:.75rem 1.4rem;font-weight:700;font-size:.9rem;text-decoration:none}
.so-official:hover{filter:brightness(1.08)}

.so-bar{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-bottom:1.6rem}
.so-bar select,.so-bar input{background:var(--bg-2);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:.6rem .8rem;font:inherit;font-size:.9rem}
.so-bar input{min-width:170px;flex:1 1 170px}
.so-count{color:var(--mut);font-size:.88rem;margin-left:auto}
@media(max-width:640px){.so-bar select,.so-bar input{flex:1 1 100%;width:100%}.so-bar .btn{flex:1 1 46%}.so-count{margin-left:0;width:100%}}

.so-list{display:grid;gap:12px}
.so-row{display:grid;grid-template-columns:74px 1fr auto;gap:14px;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
@media(max-width:640px){.so-row{grid-template-columns:60px 1fr}.so-row .so-cta{grid-column:1/-1}}
.so-pic{width:74px;height:74px;border-radius:10px;background:#16181d;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#3a4048;font-size:1.7rem}
@media(max-width:640px){.so-pic{width:60px;height:60px}}
.so-pic img{width:100%;height:100%;object-fit:cover}
.so-info h3{font-family:var(--fd);font-size:1.05rem;margin-bottom:.2rem;text-transform:uppercase}
.so-info .so-off{color:#c9a86a;font-size:.82rem;line-height:1.45;margin-bottom:.2rem}
.so-info .so-loc{color:var(--mut);font-size:.82rem}
.so-info .so-src{color:#5a6472;font-size:.72rem;margin-top:.3rem;line-height:1.45}
.so-cta{font-size:.78rem;color:#d9a441;text-decoration:none;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:.3rem}
.so-cta:hover{text-decoration:underline}
.so-more{display:block;margin:1.4rem auto 0;background:transparent;border:1px solid rgba(217,164,65,.45);color:#d9a441;border-radius:999px;padding:.7rem 1.5rem;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}
.so-more:hover{background:rgba(217,164,65,.1)}
.so-empty{text-align:center;padding:3rem 1rem;color:var(--mut)}
.so-empty h3{font-family:var(--fd);margin:.6rem 0}
.so-pending{text-align:center;background:var(--bg-2);border:1px solid var(--line);border-radius:16px;padding:2.4rem 1.4rem;max-width:640px;margin:0 auto}
.so-pending>i{font-size:2.4rem;color:#d9a441}
.so-pending h3{font-family:var(--fd);font-size:1.25rem;text-transform:uppercase;margin:.7rem 0 .5rem}
.so-pending p{color:var(--mut);font-size:.92rem;line-height:1.6;margin-bottom:1.2rem}
.so-pending small{display:block;color:#5a6472;font-size:.75rem;margin-top:1rem}
.so-foot{font-size:.78rem;color:#5a6472;line-height:1.6;max-width:760px;margin:1.8rem auto 0;text-align:center}
.so-foot a{color:#d9a441}
.gb-mobile-head{display:block;padding:.85rem 0 .3rem;font-family:var(--fd);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#d9a441}
.gb-mobile-menu .gb-mobile-sub{padding-left:.9rem}

/* ── "Latest from our Facebook": official Meta Page Plugin in a branded card.
   Gold accent + condensed uppercase heading, max-width card, graceful
   fallback panel when Meta will not render inside the page. */
.gb-fbx{max-width:620px;margin:2.6rem auto;padding:0 4px}
.gb-fbx__head{text-align:center;margin-bottom:1.1rem}
.gb-fbx__eyebrow{display:inline-flex;align-items:center;gap:.4rem;color:#d9a441;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700}
.gb-fbx__head h2{font-family:var(--fd);font-size:clamp(1.6rem,5vw,2.4rem);line-height:1.05;text-transform:uppercase;margin:.45rem 0 .5rem}
.gb-fbx__head p{color:var(--mut);font-size:.92rem;line-height:1.6;max-width:520px;margin:0 auto}
.gb-fbx__card{background:var(--bg-2);border:1px solid var(--line);border-radius:18px;padding:14px;overflow:hidden;display:flex;justify-content:center}
.gb-fbx__card .fb-page{max-width:100%}
.gb-fbx__fallback{text-align:center;padding:1.6rem .8rem}
.gb-fbx__fallback>i{font-size:2.3rem;color:#d9a441}
.gb-fbx__fallback p{color:var(--mut);font-size:.92rem;line-height:1.6;margin:.7rem auto 1rem;max-width:420px}
.gb-fbx__fallback small{display:block;color:#5a6472;font-size:.72rem;margin-top:.9rem}
.gb-fbx__btns{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center}
.gb-fbx__btn{display:inline-flex;align-items:center;gap:.45rem;background:#d9a441;color:#171310;border:1px solid #d9a441;border-radius:999px;padding:.7rem 1.3rem;font:inherit;font-size:.85rem;font-weight:700;text-decoration:none;cursor:pointer}
.gb-fbx__btn:hover{filter:brightness(1.08)}
.gb-fbx__btn--ghost{background:transparent;color:#d9a441}
.gb-fbx__foot{text-align:center;margin-top:.9rem;font-size:.82rem}
.gb-fbx__foot a{color:#d9a441;text-decoration:none;font-weight:600}
.gb-fbx__foot a:hover{text-decoration:underline}
@media(max-width:640px){.gb-fbx{margin:2rem auto}.gb-fbx__btn{flex:1 1 100%;justify-content:center}}

/* ===================== Border & Federal / Immigration ===================== */
.gb-border-hub,.gb-border-services,.gb-border-feed,.gb-border-registry,.gb-border-detail,.gb-imm{padding:2rem 24px 3.2rem}
.gb-border-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin:1.2rem 0}
.gb-border-hubcard{display:flex;flex-direction:column;gap:.5rem;padding:1.3rem;border:1px solid #2a2a2a;border-radius:14px;background:#141414;color:inherit;text-decoration:none;transition:border-color .18s,transform .18s}
.gb-border-hubcard:hover{border-color:#c8a032;transform:translateY(-2px)}
.gb-border-hubcard i{font-size:1.9rem;color:#c8a032}
.gb-border-hubcard b{font-family:var(--head,inherit);font-size:1.1rem;letter-spacing:.02em}
.gb-border-hubcard span{color:#b9b9b9;font-size:.93rem;line-height:1.5}
.gb-border-hubcard em{color:#e0463c;font-style:normal;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em}
.gb-border-card,.gb-border-listing,.gb-border-article{border:1px solid #2a2a2a;border-radius:14px;background:#141414;padding:1.2rem;display:flex;flex-direction:column;gap:.55rem}
.gb-border-article{padding:1.6rem;max-width:820px;margin:0 auto}
.gb-border-card h3,.gb-border-listing h3{margin:0;font-size:1.08rem;line-height:1.35}
.gb-border-tags{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.gb-border-tags span{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.24rem .55rem;border-radius:999px}
.gb-border-fed{background:#3a1210;color:#ff9a90;border:1px solid #6a231d}
.gb-border-agency{background:#1d1d1d;color:#cfcfcf;border:1px solid #333}
.gb-border-pending{background:#2a2410;color:#e5c56a;border:1px solid #5c4c1a}
.gb-border-paid{background:#c8a032;color:#12100a;border:1px solid #c8a032}
.gb-border-feat{background:#1b2b1b;color:#8fd58f;border:1px solid #2f542f}
.gb-border-cat{background:#171717;color:#b9b9b9;border:1px solid #2f2f2f}
.gb-border-date,.gb-border-meta{color:#8e8e8e;font-size:.85rem}
.gb-border-sum{color:#c9c9c9;font-size:.95rem;line-height:1.6;margin:0}
.gb-border-body{color:#d4d4d4;line-height:1.75;white-space:pre-wrap}
.gb-border-cred{color:#9fbfa0;font-size:.85rem}
.gb-border-legal,.gb-border-foot{color:#8e8e8e;font-size:.82rem;line-height:1.6;margin:.5rem 0 0}
.gb-border-err{color:#ff8a8a;font-size:.85rem}
.gb-border-sent{color:#8fd58f;font-size:.92rem}
.gb-border-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.35rem}
.gb-border-actions .btn{font-size:.85rem}
.gb-border-filters{display:flex;flex-wrap:wrap;gap:.55rem;margin:1rem 0 .4rem}
.gb-border-filters select,.gb-border-filters input{flex:1 1 180px;min-width:0;padding:.66rem .8rem;border-radius:10px;border:1px solid #333;background:#111;color:#eee;font-size:.92rem}
.gb-border-filters .btn{flex:0 0 auto}
.gb-border-empty{text-align:center;border:1px dashed #3a3a3a;border-radius:14px;padding:2.4rem 1.2rem;background:#111;display:flex;flex-direction:column;align-items:center;gap:.6rem}
.gb-border-empty i{font-size:2.2rem;color:#c8a032}
.gb-border-empty h1,.gb-border-empty h3{margin:0;font-size:1.15rem}
.gb-border-empty p{color:#9d9d9d;max-width:52ch;margin:0}
.gb-border-scope{margin-bottom:1rem}
.gb-border-warn{border-left:3px solid #e0463c}
.gb-border-figure{margin:0}
.gb-border-figure img{width:100%;max-width:420px;border-radius:12px;border:1px solid #2a2a2a}
.gb-border-figure figcaption{color:#8e8e8e;font-size:.78rem;margin-top:.35rem}
.gb-border-facts{display:grid;gap:.7rem;margin:1rem 0;padding:1rem;border:1px solid #262626;border-radius:12px;background:#111}
.gb-border-facts dt{color:#8e8e8e;font-size:.75rem;text-transform:uppercase;letter-spacing:.07em}
.gb-border-facts dd{margin:.15rem 0 0;color:#e2e2e2;font-size:.93rem;word-break:break-word}
.gb-border-lead{display:grid;gap:.5rem;margin-top:.7rem;padding-top:.8rem;border-top:1px solid #262626}
.gb-border-lead input,.gb-border-lead textarea{padding:.62rem .78rem;border-radius:10px;border:1px solid #333;background:#111;color:#eee;font:inherit;font-size:.9rem}
.gb-border-banners{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin:1rem 0}
.gb-border-banner{display:flex;flex-direction:column;gap:.4rem;padding:1rem;border-radius:14px;border:1px solid #3a3117;background:#16140d;color:inherit;text-decoration:none}
.gb-border-banner img{width:100%;border-radius:10px}
.gb-imm-quiz{display:grid;gap:.7rem;margin:1.2rem 0;padding:1.3rem;border:1px solid #2a2a2a;border-radius:14px;background:#141414}
.gb-imm-choices{display:grid;gap:.55rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.gb-imm-choice{text-align:left;padding:.8rem .95rem;border-radius:12px;border:1px solid #333;background:#111;color:#e6e6e6;font:inherit;font-size:.92rem;cursor:pointer}
.gb-imm-choice:hover,.gb-imm-choice[aria-pressed="true"]{border-color:#c8a032;background:#191712}
.gb-imm-result{border:1px solid #3a3117;background:#16140d;border-radius:14px;padding:1.2rem;display:flex;flex-direction:column;gap:.6rem}
.gb-imm-result h3{margin:0;font-size:1.05rem}
.gb-imm-links{display:flex;flex-wrap:wrap;gap:.5rem}
@media (max-width:640px){
  .gb-border-hub,.gb-border-services,.gb-border-feed,.gb-border-registry,.gb-border-detail,.gb-imm{padding:1.4rem 16px 2.4rem}
  .gb-border-grid{grid-template-columns:1fr}
  .gb-border-filters select,.gb-border-filters input{flex:1 1 100%}
  .gb-border-actions .btn{flex:1 1 auto;justify-content:center}
}

/* ---------- Digital issue newsstand ---------- */
.issue-store{display:flex;flex-direction:column;gap:1.6rem}
.issue-filters{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end;border:1px solid var(--line);border-radius:8px;padding:.9rem}
.issue-filters label{display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase}
.issue-filters select{min-width:10rem;padding:.5rem;background:#0e0e0e;color:inherit;border:1px solid var(--line);border-radius:5px}
.issue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1.2rem}
.issue-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;background:#0c0c0c}
.issue-card__link{display:block}
.issue-card__body{padding:.9rem;display:flex;flex-direction:column;gap:.4rem;flex:1}
.issue-card__body h3{margin:0;font-size:1.02rem;line-height:1.25}
.issue-card__meta{font-size:.82rem;margin:0}
.issue-card__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding-top:.6rem}
.issue-cover{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#151515}
.issue-cover--blank{display:grid;place-items:center;color:var(--gold,#d4af37);font-weight:800;letter-spacing:.18em;font-size:1.6rem;border-bottom:1px solid var(--line)}
.issue-tag{display:inline-block;align-self:flex-start;background:var(--gold,#d4af37);color:#111;font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:.15rem .45rem;border-radius:3px}
.issue-price{font-size:1.05rem}
.issue-price.big{font-size:1.6rem;margin:.6rem 0}
.issue-featured{display:grid;grid-template-columns:minmax(0,16rem) minmax(0,1fr);gap:1.4rem;border:1px solid var(--gold,#d4af37);border-radius:10px;padding:1.2rem}
.issue-featured h2{margin:.4rem 0}
.issue-empty{border:1px dashed var(--line);border-radius:8px;padding:2rem;text-align:center}
.issue-library{border-bottom:1px solid var(--line);padding-bottom:1.4rem}
.issue-detail{display:grid;grid-template-columns:minmax(0,18rem) minmax(0,1fr);gap:2rem;padding:2rem 0 3.5rem}
.issue-buy{display:flex;flex-direction:column;gap:.7rem;align-items:flex-start;border-top:1px solid var(--line);padding-top:1rem;margin-top:1rem}
.issue-buy__email{display:flex;flex-direction:column;gap:.25rem;width:min(22rem,100%);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
.issue-buy__email input{padding:.6rem;background:#0e0e0e;color:inherit;border:1px solid var(--line);border-radius:5px}
@media (max-width:760px){
  .issue-featured,.issue-detail{grid-template-columns:1fr}
  .issue-filters label,.issue-filters select{width:100%}
  .issue-grid{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.9rem}
}
/* ── AMBER Alerts in the sitewide ticker ─────────────────────────────── */
.ticker.amber{background:#12120f;border-bottom:3px solid #f0b100}
.ticker.amber .tag{background:#f0b100;color:#1a1400}
.ticker.amber .scroll{color:#ffe9a8;font-weight:700}
.ticker .tk-amber-cat{background:#f0b100;color:#1a1400;border:1px solid #f0b100;font-size:.7rem}
.ticker .tk-amber-link{color:#fff;text-decoration:underline;text-underline-offset:2px;text-decoration-color:#f0b100}
.ticker .tk-amber-link:hover,.ticker .tk-amber-link:focus-visible{text-decoration-color:#fff}
.ticker .tk-amber-note{font-size:.68rem;line-height:1.35;color:#ffe9a8;opacity:.9;margin:0;padding:.2rem 0 .35rem}
.al-detail{padding:1.5rem 0 2.5rem}
.al-detail .al-kicker{display:flex;align-items:center;gap:.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem}
.al-detail .al-facts{display:grid;gap:.35rem;margin:1rem 0}
.al-detail .al-row{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:.75rem;padding:.4rem 0;border-bottom:1px solid rgba(0,0,0,.08)}
.al-detail .al-disclaimer{font-size:.8rem;opacity:.85;border-left:3px solid #f0b100;padding-left:.7rem;margin-top:1.25rem}
.al-detail .al-official{font-weight:700}
@media(max-width:640px){.al-detail .al-row{grid-template-columns:1fr}}
/* ── Public Safety Alerts board (/alerts) ─────────────────────────────── */
.al2{padding:1.25rem 0 4.5rem;max-width:1100px;margin:0 auto}
.al2-head h1{margin:0 0 .25rem;font-size:clamp(1.7rem,4vw,2.4rem)}
.al2-sub{margin:0 0 .5rem;color:var(--muted,#9a9aa6)}
.al2-short{border-left:3px solid var(--red,#e01427);padding:.5rem .75rem;background:rgba(224,20,39,.08);font-size:.9rem;margin:.5rem 0 1rem}
.al2-status{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.65rem .85rem;border:1px solid var(--line-2,#33333f);border-radius:8px;background:var(--bg-2,#121218);margin-bottom:1rem}
.al2-status__count strong{color:var(--gold,#efb42d);font-size:1.15rem}
.al2-status__time{font-size:.85rem;color:var(--muted,#9a9aa6)}
.al2-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1rem}
.al2-chip{min-height:44px;padding:.5rem 1rem;border-radius:999px;border:1px solid var(--line-2,#33333f);background:transparent;color:inherit;font-weight:700;cursor:pointer}
.al2-chip.is-on{background:var(--red,#e01427);border-color:var(--red,#e01427);color:#fff}
.al2-chip:focus-visible,.al2-btn:focus-visible,.al2-map__county:focus-visible{outline:2px solid var(--gold,#efb42d);outline-offset:2px}
.al2-select select,.al2-form select,.al2-form input{min-height:44px;padding:.5rem .7rem;border-radius:8px;border:1px solid var(--line-2,#33333f);background:#0e0e12;color:inherit}
.al2-map{margin:0 0 1.5rem;border:1px solid var(--line-2,#33333f);border-radius:10px;padding:.5rem;background:var(--bg-2,#121218)}
.al2-map__svg{width:100%;height:auto;max-height:420px}
.al2-map__county{fill:#1d1d24;stroke:#3a3a46;stroke-width:2;cursor:pointer}
.al2-map__county.is-affected{fill:var(--red,#e01427)}
.al2-map__county.is-selected{fill:var(--gold,#efb42d);stroke:#fff}
.al2-section{margin:0 0 2rem}
.al2-section h2{font-size:1.15rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--gold,#efb42d);padding-bottom:.35rem;margin:0 0 .9rem}
.al2-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr))}
.al2-card{border:1px solid var(--line-2,#33333f);border-left:4px solid var(--red,#e01427);border-radius:10px;padding:1rem;background:var(--bg-2,#121218)}
.al2-card.is-amber{border-left-color:#f0b100;background:#14130e}
.al2-card h3{margin:.35rem 0 .5rem;font-size:1.05rem}
.al2-card__head{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.al2-tag{font-size:.7rem;font-weight:800;letter-spacing:.08em;padding:.2rem .5rem;border-radius:4px;background:var(--red,#e01427);color:#fff}
.al2-tag.is-amber{background:#f0b100;color:#1a1400}
.al2-sev{font-size:.72rem;text-transform:uppercase;color:var(--gold,#efb42d)}
.al2-photo{max-width:160px;border-radius:8px;border:1px solid var(--line-2,#33333f);margin:.25rem 0 .6rem}
.al2-nophoto{font-size:.8rem;color:var(--muted,#9a9aa6);font-style:italic}
.al2-body{font-size:.92rem;line-height:1.5;white-space:pre-line}
.al2-facts{display:grid;gap:.2rem;margin:.6rem 0}
.al2-row{display:grid;grid-template-columns:minmax(96px,150px) 1fr;gap:.6rem;font-size:.85rem;padding:.2rem 0;border-bottom:1px solid rgba(255,255,255,.06)}
.al2-row__k{color:var(--muted,#9a9aa6);text-transform:uppercase;font-size:.7rem;letter-spacing:.05em}
.al2-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}
.al2-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--line-2,#33333f);background:#191920;color:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.al2-btn.is-danger{background:var(--red,#e01427);border-color:var(--red,#e01427);color:#fff}
.al2-btn.is-primary{background:var(--gold,#efb42d);border-color:var(--gold,#efb42d);color:#17130a}
.al2-btn.is-ghost{background:transparent}
.al2-empty{border:1px dashed var(--line-2,#33333f);border-radius:8px;padding:1.1rem;color:var(--muted,#9a9aa6)}
.al2-error{border:1px solid var(--red,#e01427);border-radius:8px;padding:1rem;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.al2-note{font-size:.85rem;color:var(--muted,#9a9aa6)}
.al2-skeletons{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr))}
.al2-skeleton{border:1px solid var(--line-2,#33333f);border-radius:10px;padding:1rem;display:grid;gap:.6rem}
.al2-skeleton__bar{height:.85rem;border-radius:4px;background:linear-gradient(90deg,#1d1d24,#2a2a34,#1d1d24);background-size:200% 100%;animation:al2shimmer 1.3s linear infinite}
.al2-skeleton__bar.w60{width:60%}.al2-skeleton__bar.w90{width:90%}.al2-skeleton__bar.w40{width:40%}
@keyframes al2shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.al2-sources{display:grid;gap:.4rem;padding-left:1.1rem}
.al2-form{display:grid;gap:.75rem;max-width:34rem}
.al2-form label{display:grid;gap:.3rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
.al2-cats{border:1px solid var(--line-2,#33333f);border-radius:8px;padding:.75rem;display:grid;gap:.4rem}
.al2-check{display:flex!important;flex-direction:row;align-items:center;gap:.5rem;text-transform:none;letter-spacing:0;font-size:.9rem}
.al2-hp{position:absolute;left:-9999px;opacity:0}
.al2-ok{color:#6ee7a8}.al2-err{color:#ff8b95}
.al2-legal{border-top:1px solid var(--line-2,#33333f);padding-top:1rem;font-size:.85rem;color:var(--muted,#9a9aa6)}
@media(max-width:640px){
  .al2{padding-bottom:7rem}
  .al2-grid,.al2-skeletons{grid-template-columns:1fr}
  .al2-row{grid-template-columns:1fr}
  .al2-select select{width:100%}
}
@media(max-width:640px){.al2-actions .al2-btn{flex:1 1 45%}.al2-form .al2-btn.is-primary{margin-bottom:1.5rem}}

/* 2026-09-26 desktop header: dropdown group titles now step down with the
   plain links, the links row can shrink, and the burger takes over below
   1500px so the search icon is never pushed off-screen. */
.nav-links{min-width:0;flex:1 1 auto}
.nav-cta{flex:0 0 auto}
@media(max-width:1680px){.nav-grp>.nav-grp-t{padding:.5rem .5rem;font-size:.86rem;letter-spacing:.02em}}


/* ---- utility strip: one emphasis, not five ------------------------------
   With the strip cut to five controls there is room to let the one that earns
   money look like a button instead of a fifth grey pill. Gold, not red: red is
   already Search Records and .active, and two reds in one bar reads as an
   error state. */
.util .u-r a.u-cta{border-color:rgba(240,177,0,.5);background:rgba(240,177,0,.1);color:#f0b100;font-weight:600}
.util .u-r a.u-cta:hover{background:rgba(240,177,0,.18);border-color:#f0b100;color:#ffd04d}
