/* ColonyTrack — beekeeping regulations pages */
.reg-wrap{max-width:900px;margin:0 auto;padding:1.5rem 1.1rem 4rem}
.reg-crumb{font-size:.82rem;color:var(--brown-600,#6B4F3A);margin:.4rem 0 1rem}
.reg-crumb a{color:var(--amber-700,#9c6f26);text-decoration:none}
.reg-wrap h1{font-size:1.9rem;margin:.2rem 0 .5rem}
.reg-intro{color:var(--brown-600,#6B4F3A);font-size:1.02rem;margin:0 0 1.2rem}
.reg-banner{background:#FFF6E6;border:1px solid #E8C877;border-radius:12px;padding:.8rem 1rem;font-size:.85rem;color:#7a5a12;margin-bottom:1rem}
.reg-banner strong{color:#5f4409}
.reg-statewide{background:#F3EADB;border-radius:12px;padding:.85rem 1rem;font-size:.9rem;margin-bottom:1.6rem}
.reg-statewide a{color:var(--amber-700,#9c6f26);font-weight:600}
/* Collapsed by default. The block is ~650 characters, which on a phone was
   most of the wall of text sitting between the heading and the search box.
   The summary keeps the one fact a reader needs to know it exists; the detail
   is one tap away. */
/* overflow-wrap because the summary carries a bare URL. Without it the URL is
   one unbreakable token and pushes the block wider than the phone. The URL is
   deliberately PLAIN TEXT and not an <a>: a link inside <summary> fights the
   disclosure toggle, since the same tap both follows it and opens the block.
   The live link lives in the expanded body, where it behaves normally. */
details.reg-statewide > summary{cursor:pointer;font-weight:700;color:var(--brown-900,#3d2b1f);list-style-position:outside;overflow-wrap:anywhere}
details.reg-statewide > summary::marker{color:var(--amber-700,#9c6f26)}
details.reg-statewide > summary:hover{color:var(--amber-700,#9c6f26)}
details.reg-statewide > p{margin:.6rem 0 0}
.reg-card{background:#fff;border:1px solid rgba(74,48,32,.14);border-radius:14px;padding:1rem 1.1rem;margin-bottom:.85rem;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.reg-card .top{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;flex-wrap:wrap}
.reg-card h2,.reg-card h3{margin:0;font-size:1.15rem}
.reg-badge{font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.16em .55em;border-radius:5px;white-space:nowrap}
.reg-badge.city{background:#E7E0F3;color:#5a3fa0}
.reg-badge.county{background:#FBE6C7;color:#8a5a12}
.reg-badge.reg{background:#DCEFD8;color:#2E6B28}
/* State apiary registration. A LINK, not a label: it is the only badge that is
   also an action, and the duty it names appears in almost no local code, so the
   card is the only place a reader will meet it. */
a.reg-badge.state{background:#DCEFD8;color:#2E6B28;text-decoration:none;border-bottom:1px solid rgba(46,107,40,.35)}
a.reg-badge.state:hover,a.reg-badge.state:focus{background:#2E6B28;color:#fff;border-bottom-color:transparent}
.reg-badge.none{background:#eee;color:#666}
.reg-stats{display:flex;gap:1.3rem;flex-wrap:wrap;margin:.7rem 0}
.reg-stat .n{font-size:1.1rem;font-weight:700;color:var(--amber-700,#9c6f26)}
.reg-stat .n small{font-size:.7rem;font-weight:500}
.reg-stat .l{font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;color:var(--brown-600,#6B4F3A)}
.reg-regs{font-size:.92rem;color:var(--brown-600,#6B4F3A);margin:.5rem 0}
.reg-meta{font-size:.78rem;color:var(--brown-600,#6B4F3A);margin-top:.5rem}
.reg-link{display:inline-block;margin-top:.6rem;font-size:.85rem;font-weight:600;color:#fff;background:#4A3020;padding:.45rem .8rem;border-radius:9px;text-decoration:none}
.reg-link:hover{background:#6B4F3A}
.reg-link.dead{background:#fff;color:#9c6f26;border:1.5px solid #E8C877}
.reg-search{display:flex;gap:.6rem;flex-wrap:wrap;margin:.4rem 0 .4rem}
.reg-search input,.reg-search select{font-size:1rem;padding:.65rem .8rem;border:1.5px solid rgba(74,48,32,.18);border-radius:10px;background:#fff;flex:1;min-width:180px}
.reg-count{font-size:.82rem;color:var(--brown-600,#6B4F3A);margin-bottom:1rem}
.reg-dir{columns:3;column-gap:1.4rem;margin:1rem 0 2rem}
.reg-dir a{display:block;padding:.6rem 0;min-height:44px;line-height:1.5;color:var(--amber-700,#9c6f26);text-decoration:none;break-inside:avoid;font-size:.95rem}
@media(max-width:640px){.reg-dir{columns:2}}
.reg-foot-note{font-size:.8rem;color:var(--brown-600,#6B4F3A);border-top:1px solid rgba(74,48,32,.14);margin-top:2rem;padding-top:1.1rem}
.reg-foot-note a{color:var(--amber-700,#9c6f26)}

/* Requirement lists — for rules that aren't a setback or a hive cap
   (water, fire, signage, permission). Rural/agricultural counties are
   mostly these, with no numeric limits at all. */
.reg-badge.ag{background:#DDEAD4;color:#3F6B2E}
.reg-stat .n.none{color:var(--brown-600,#6B4F3A);opacity:.6;font-weight:600}
.reg-group{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--brown-600,#6B4F3A);margin:1rem 0 .4rem}
.reg-reqs{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.reg-reqs li{position:relative;padding-left:1.3rem;font-size:.9rem;line-height:1.5;color:var(--brown-600,#6B4F3A)}
.reg-reqs li::before{content:"";position:absolute;left:.1rem;top:.5em;width:.42rem;height:.42rem;border-radius:2px;background:var(--amber-700,#9c6f26)}
.reg-reqs strong{color:#4A3020}
.reg-reqs cite{font-style:normal;font-size:.76rem;color:#8a7563;white-space:nowrap}
/* Tiered/conditional hive limits that don't fit the numeric tile */
.reg-limit{font-size:.9rem;color:var(--brown-600,#6B4F3A);margin:.6rem 0 0}
.reg-limit strong{color:#4A3020}

/* ── Vintage signalling ───────────────────────────────────────────
   This dataset is mixed: most of it is a 2020 compilation, some has been
   re-read against the live code. Blue marks the second kind. Readers should
   be able to tell at a glance which is which, because for a legal summary
   "when was this last checked" matters as much as what it says. */
.reg-card.verified{border-color:#9CC3E0;box-shadow:0 1px 2px rgba(27,108,168,.08)}
.reg-badge.verified{background:#E2EFF9;color:#14567F}
.reg-link.verified{background:#1B6CA8}
.reg-link.verified:hover{background:#14567F}
.reg-meta.verified{color:#14567F;font-weight:600}
.reg-legend{display:flex;gap:1.1rem;flex-wrap:wrap;align-items:center;font-size:.8rem;
  color:var(--brown-600,#6B4F3A);background:#FBF8F2;border:1px solid rgba(74,48,32,.12);
  border-radius:12px;padding:.7rem .9rem;margin:0 0 1.4rem}
.reg-legend .key{display:inline-flex;align-items:center;gap:.4rem}
.reg-legend .dot{width:.7rem;height:.7rem;border-radius:3px;flex-shrink:0}
.reg-legend .dot.verified{background:#1B6CA8}
.reg-legend .dot.legacy{background:#C08B30}

/* County directory, coloured by vintage so the state of the dataset is visible
   before a reader clicks rather than after. A left rule reads as a status mark
   without turning the list into a wall of coloured text. */
.reg-dir a.reg-dir-link{border-left:3px solid transparent;padding-left:.55rem}
.reg-dir a.fresh{border-left-color:#1B6CA8;color:#14567F;font-weight:600}
.reg-dir a.stale{border-left-color:#C08B30}
@media (prefers-contrast: more){
  .reg-dir a.fresh{text-decoration:underline}
}

/* A prohibition outranks every other fact on a card: it answers "may I keep
   bees here at all", so it must be readable at a glance rather than sitting in
   a bullet list among water and signage rules. */
.reg-badge.ban{background:#F6DEDE;color:#8E2020}
.reg-card.banned{border-color:#D9A3A3}

/* Where a card IS, inside its own heading. Present so a passage lifted from
   this page keeps its geography — a card headed just "Fremont" could be any of
   several. Visually subordinate to the name; semantically part of the heading. */
.reg-where{display:block;font-size:.72em;font-weight:400;opacity:.6;letter-spacing:.01em;margin-top:.15rem}
/* The comma exists so the heading still reads "Alameda, Alameda County,
   California" as plain text, with no stylesheet and to anything extracting the
   page. It is hidden here because the qualifier sits on its own row. */
.reg-where .sep{display:none}

/* The correction route. On a page whose whole value is being right, a reader
   who finds a mistake is the cheapest correction mechanism available — and had
   nowhere to put it. Deliberately placed where a doubting reader already is:
   immediately above the source-and-disclaimer note. */
.reg-correct{margin:1.5rem 0 .5rem;padding:.85rem 1rem;border-left:3px solid var(--amber-500,#d99b2b);background:rgba(217,155,43,.07);border-radius:0 6px 6px 0;font-size:.9rem;line-height:1.55}
.reg-correct a{color:var(--amber-700,#9c6f26)}

/* The verification line, now at the FOOT of the page, below the CAMBP
   attribution. It used to sit under the banner, on the reasoning that this is
   the moment a reader decides whether to believe the page. In practice it was
   one more block of preamble between the heading and the thing the reader came
   for, and on a phone the top of the page had become unusable. Trust copy
   belongs next to the sourcing note it qualifies. */
.reg-verify{margin:.6rem 0 1rem;font-size:.92rem;line-height:1.5;color:var(--ink-700,#4a4238)}
.reg-verify a{color:var(--amber-700,#9c6f26);font-weight:500}
