:root {
  --ink:#1a1916; --muted:#5c574e; --paper:#f6f1e8; --card:#fffdf8;
  --line:#d9d1c3; --navy:#1c2a4a; --gold:#e3b505; --goldink:#2a2408;
  --chip:#f0eadf;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0; background:var(--paper); color:var(--ink);
  font:17px/1.55 "IBM Plex Sans", system-ui, sans-serif;
}
h1,h2,h3 { font-family:"Libre Baskerville", Georgia, serif; line-height:1.2; margin:0 0 .45em; font-weight:700; }
h1 { font-size:clamp(1.55rem, 4.6vw, 2.25rem); }
h2 { font-size:clamp(1.25rem, 2.6vw, 1.7rem); margin-top:1.4em; }
h3 { font-size:1.12rem; margin-top:1.1em; }
a { color:var(--navy); }
.wrap { max-width:1080px; margin:0 auto; padding:0 20px; }
.article { max-width:760px; }
.top { background:var(--navy); color:#f6f1e8; font-size:.92rem; position:sticky; top:0; z-index:40; }
.top-inner { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 20px; max-width:1080px; margin:0 auto; }
.logo { font-family:"Libre Baskerville", serif; font-weight:700; font-size:1.15rem; color:#fff; text-decoration:none; }
.logo span { color:var(--gold); }
nav a { color:#d7d2c6; text-decoration:none; margin-left:16px; font-weight:600; font-size:.9rem; }
.btn {
  display:inline-block; background:var(--gold); color:var(--goldink); text-decoration:none;
  font-weight:700; padding:12px 16px; border-radius:4px; border:0; cursor:pointer; font-size:1rem;
  text-align:center;
}
.btn.navy { background:var(--navy); color:#fff; }
.btn:disabled { opacity:.6; cursor:not-allowed; }
.btn.header { padding:8px 12px; font-size:.9rem; white-space:nowrap; }
.kicker {
  display:inline-block; font-weight:700; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--navy); background:var(--chip); border:1px solid var(--line); padding:4px 9px; margin-bottom:12px;
}
.crumbs { font-size:.88rem; color:var(--muted); margin:0 0 12px; }
.crumbs a { color:var(--muted); }
.updated { font-size:.88rem; color:var(--muted); margin:0 0 14px; }
.answer {
  background:var(--card); border:1px solid var(--line); border-left:4px solid var(--gold);
  padding:14px 16px; margin:0 0 18px;
}
.answer p { margin:0 0 .6em; }
.answer p:last-child { margin:0; }
.lead { font-size:1.05rem; color:var(--muted); margin:0 0 12px; }
.note, .fine, .muted { color:var(--muted); }
.fine { font-size:.82rem; }
.muted { font-size:.82rem; margin-top:2px; }
.cta-row { margin:0 0 22px; display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
table.permits { width:100%; border-collapse:collapse; font-size:.92rem; background:var(--card); }
table.permits th { text-align:left; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:8px 12px; background:#f0eadf; }
table.permits td { padding:9px 12px; border-top:1px solid var(--line); vertical-align:top; }
table.permits .val { white-space:nowrap; font-weight:700; }
.table-wrap { overflow-x:auto; border:1px solid var(--line); margin:0 0 16px; }
.stats { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:18px 0 20px; }
.stat { background:var(--card); border:1px solid var(--line); padding:12px; }
.stat b { display:block; font-family:"Libre Baskerville", serif; font-size:1.45rem; }
.stat span { color:var(--muted); font-size:.8rem; }
.grid3, .city-grid, .card-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:16px 0 8px; }
.card { background:var(--card); border:1px solid var(--line); padding:18px 16px; }
.card h3 { margin-top:0; }
.card p:last-child { margin-bottom:0; }
.sources { font-size:.92rem; }
.sources li { margin:0 0 6px; }
.hero-form, form.signup, .signup-box {
  background:var(--card); border:1px solid var(--line); padding:16px; margin:28px 0 12px;
}
form { display:grid; gap:8px; }
label { font-weight:650; font-size:.9rem; }
input[type=text], input[type=email], input[type=tel], select {
  width:100%; padding:11px 12px; border:1px solid var(--line); border-radius:4px; font:inherit; background:#fff;
}
.cities { display:grid; grid-template-columns:1fr 1fr; gap:6px 14px; margin:4px 0 8px; }
.cities label { font-weight:500; }
.hp { position:absolute; left:-9999px; }
#msg { font-weight:700; min-height:1.3em; }
.optional-fields { border:0; background:transparent; padding:0; margin:0; }
.optional-fields summary { font-weight:650; font-size:.9rem; color:var(--muted); }
.optional-fields[open] { display:grid; gap:8px; }
details.faq { background:var(--card); border:1px solid var(--line); padding:12px 16px; margin:0 0 8px; }
details.faq summary { cursor:pointer; font-weight:700; }
.related { margin:8px 0 0; padding:0; list-style:none; }
.related li { margin:0 0 8px; }
footer { background:var(--navy); color:#c9c3b6; padding:28px 0 40px; font-size:.88rem; }
footer a { color:#f6f1e8; }
footer .cols { display:grid; grid-template-columns:2fr 1fr 1fr; gap:24px; }
footer ul { list-style:none; margin:0; padding:0; }
footer li { margin:0 0 6px; }
.sticky-cta {
  display:none; position:fixed; left:0; right:0; bottom:0; z-index:50;
  background:var(--navy); padding:10px 16px 14px; box-shadow:0 -6px 20px rgba(0,0,0,.2);
}
.sticky-cta .btn { width:100%; }
.skip { position:absolute; left:-999px; top:0; background:var(--gold); color:var(--goldink); padding:8px; z-index:60; }
.skip:focus { left:8px; top:8px; }
main { padding:28px 0 48px; }
@media (max-width:860px) {
  .stats, .grid3, .city-grid, .card-grid, footer .cols { grid-template-columns:1fr; }
  .stats { grid-template-columns:1fr 1fr; }
  nav { display:none; }
  body { padding-bottom:76px; }
  .sticky-cta { display:block; }
  table.permits thead { display:none; }
  table.permits tr { display:block; padding:10px 12px; border-top:1px solid var(--line); }
  table.permits td { display:block; padding:0; border:0; }
  table.permits td.val { font-weight:700; margin-top:4px; }
  h1 { font-size:1.55rem; }
}
