/* ============================================================
   Hill Country Towns — town guide pages
   Editorial layer over the game's vintage cartography language.
   ============================================================ */

:root{
  --paper:#EDEBDC; --paper-2:#E3E0CB; --card:#F6F4E7; --ink:#29251B; --muted:#6E6753;
  --line:#CDC8AC; --map-bg:#E9E7D3; --plateau:#DEDDC1; --contour:#B0AA87;
  --river:#4A81A6; --lake:#B9D3DE; --lake-line:#7FA8BC;
  --road-i:#C2402F; --road-us:#8D6B41; --road-st:#A9A288;
  --accent:#C2402F; --accent-ink:#FFF6E8;
  --violet:#505CA8; --good:#3E7A4E; --bad:#A8382B; --gold:#B98A2F;
  --halo:#E9E7D3;
  --shadow:0 12px 32px rgba(41,37,27,.13), 0 2px 6px rgba(41,37,27,.08);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#181B14; --paper-2:#121409; --card:#21251A; --ink:#EAE6D2; --muted:#A69E82;
    --line:#3C4030; --map-bg:#1C2017; --plateau:#242A1B; --contour:#565941;
    --river:#7FB0CC; --lake:#2C4450; --lake-line:#517A8C;
    --road-i:#D96B51; --road-us:#B08A55; --road-st:#5C5E48;
    --accent:#D96248; --accent-ink:#20130D;
    --violet:#9AA3E2; --good:#84BD8F; --bad:#E08070; --gold:#D9AC58;
    --halo:#1C2017;
    --shadow:0 12px 32px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  --paper:#181B14; --paper-2:#121409; --card:#21251A; --ink:#EAE6D2; --muted:#A69E82;
  --line:#3C4030; --map-bg:#1C2017; --plateau:#242A1B; --contour:#565941;
  --river:#7FB0CC; --lake:#2C4450; --lake-line:#517A8C;
  --road-i:#D96B51; --road-us:#B08A55; --road-st:#5C5E48;
  --accent:#D96248; --accent-ink:#20130D;
  --violet:#9AA3E2; --good:#84BD8F; --bad:#E08070; --gold:#D9AC58;
  --halo:#1C2017;
  --shadow:0 12px 32px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.3);
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--paper); color:var(--ink);
  font:16px/1.7 "Archivo", system-ui, "Segoe UI", sans-serif;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:40; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
a{color:inherit}
img,svg{max-width:100%}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0;touch-action:manipulation}
::selection{background:var(--violet);color:var(--paper)}

/* ---------- site chrome ---------- */
.site-header{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  max-width:1160px;margin:0 auto;padding:16px 22px 12px;
}
.site-brand{display:flex;align-items:center;gap:11px;text-decoration:none}
.site-brand svg{width:34px;height:38px;flex:none}
.site-brand b{
  font-family:"Alfa Slab One","Rockwell",Georgia,serif;font-weight:400;font-size:17px;
  letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;
}
.site-brand b .hc{color:var(--accent)}
.site-nav{display:flex;gap:8px}
.site-nav a{
  text-decoration:none;font-weight:600;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);padding:7px 13px;border:1.5px solid transparent;border-radius:999px;
  transition:color .15s,border-color .15s;
}
.site-nav a:hover{color:var(--ink);border-color:var(--line)}
.site-nav a.active{color:var(--ink);border-color:var(--ink)}
.site-rule{max-width:1160px;margin:0 auto;padding:0 22px}
.site-rule::after{content:"";display:block;border-top:1.5px solid var(--ink)}

.site-footer{
  max-width:1160px;margin:36px auto 0;padding:18px 22px 34px;
  border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  color:var(--muted);font-size:12.5px;
}
.site-footer .links{display:flex;gap:18px}
.site-footer a{color:var(--muted);text-decoration:none;font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:11.5px}
.site-footer a:hover{color:var(--ink)}
.site-footer .colophon{font-style:italic;font-family:"Gelasio",Georgia,serif}

/* ---------- page scaffold ---------- */
.town-page{max-width:1160px;margin:0 auto;padding:0 22px}
.breadcrumbs{
  display:flex;align-items:center;gap:9px;padding:16px 0 0;
  font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);
}
.breadcrumbs a{color:var(--muted);text-decoration:none}
.breadcrumbs a:hover{color:var(--ink)}
.breadcrumbs .sep{color:var(--line)}
.breadcrumbs .here{color:var(--ink)}

/* ---------- hero ---------- */
.town-hero{padding:34px 0 10px;max-width:820px}
.town-eyebrow,.section-eyebrow{
  margin:0 0 14px;font:600 12px "Oswald",sans-serif;letter-spacing:.3em;text-transform:uppercase;
  color:var(--accent);
}
.town-hero h1{
  font-family:"Alfa Slab One","Rockwell",Georgia,serif;font-weight:400;
  font-size:clamp(30px,5.4vw,54px);line-height:1.05;margin:0 0 18px;
  letter-spacing:.005em;text-transform:uppercase;text-wrap:balance;
}
.town-deck{
  font-family:"Gelasio",Georgia,serif;font-style:italic;font-weight:500;
  font-size:clamp(16.5px,2vw,19.5px);line-height:1.65;color:var(--muted);
  margin:0 0 24px;max-width:38em;
}
.town-actions{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 8px}
.btn{
  display:inline-flex;align-items:center;gap:9px;text-decoration:none;
  border-radius:9px;padding:12px 22px;font-weight:700;font-size:14px;letter-spacing:.04em;
  transition:transform .12s, filter .12s;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);color:var(--accent-ink);border:1.5px solid transparent}
.btn-primary:hover{filter:brightness(1.06)}
.btn-ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}
.btn-ghost:hover{background:var(--paper-2)}

/* ---------- locator section ---------- */
.town-locator-section{
  display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start;
  padding:22px 0 8px;
}
.locator-figure{margin:0;position:relative}
.locator-svg,.challenge-svg{
  display:block;width:100%;height:auto;background:var(--map-bg);
  border:1.5px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);
}
.locator-caption{
  margin:10px 4px 0;font-family:"Gelasio",Georgia,serif;font-style:italic;
  font-size:12.5px;color:var(--muted);
}
.locator-inset-wrap{margin-top:22px}

.town-snapshot{
  background:var(--card);border:1.5px solid var(--ink);border-radius:12px;box-shadow:var(--shadow);
  padding:18px 20px 8px;position:sticky;top:22px;overflow:hidden;
}
.town-snapshot::before{content:"";position:absolute;inset:5px;border:1px solid var(--line);border-radius:8px;pointer-events:none}
.town-snapshot > *{position:relative}
.town-snapshot h2{
  margin:0 0 10px;font:600 12.5px "Oswald",sans-serif;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);
}
.town-snapshot dl{margin:0}
.town-snapshot dl > div{
  display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:9px 2px;border-top:1px dashed var(--line);
}
.town-snapshot dl > div:first-of-type{border-top:none}
.town-snapshot dt{
  font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  flex:none;
}
.town-snapshot dd{margin:0;font-size:14px;font-weight:600;text-align:right;line-height:1.45}
.snapshot-note{
  margin:10px 0 12px;font-family:"Gelasio",Georgia,serif;font-style:italic;
  font-size:12px;color:var(--muted);
}

/* ---------- prose ---------- */
.town-copy{max-width:720px;padding:26px 0 0}
.town-copy h2,.town-pin-section h2,.nearby-towns h2,.town-faq h2,.town-sources h2,
.town-water-schematic h2,.town-radial-map h2{
  font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.3;
  margin:38px 0 12px;
}
.town-copy h2:first-child{margin-top:0}
.town-copy p{margin:0 0 16px;max-width:66ch}
.town-copy h3{font-size:16.5px;font-weight:700;margin:0 0 6px}
.town-copy a,.hub-copy a,.town-faq a,.locator-caption a{
  color:var(--ink);text-decoration:none;border-bottom:2px solid var(--accent);
  transition:color .12s;
}
.town-copy a:hover,.hub-copy a:hover,.town-faq a:hover,.locator-caption a:hover{color:var(--accent)}

.map-memory-hook{
  margin:26px 0;padding:16px 20px;
  background:var(--card);border:1.5px solid var(--ink);border-left-width:5px;border-radius:10px;
  font-size:15px;
}
.map-memory-hook .kicker{
  display:block;margin:0 0 4px;font:600 10.5px "Oswald",sans-serif;
  letter-spacing:.24em;text-transform:uppercase;color:var(--gold);
}

.town-fact-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0 8px}
.town-fact-grid article{
  background:var(--card);border:1px solid var(--line);border-radius:11px;padding:16px 18px;
}
.town-fact-grid p{margin:0;font-size:14.5px;max-width:none}

/* ---------- schematic / radial bands ---------- */
.town-water-schematic,.town-radial-map{
  max-width:720px;padding:8px 0 0;
}
.schematic-card{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:22px 18px 8px;margin:14px 0 12px;
}
.water-flow{display:block;width:100%;max-width:560px;height:auto;margin:0 auto}
.schematic-note{
  text-align:center;margin:8px 0 12px;
  font:italic 500 11.5px "Gelasio",Georgia,serif;color:var(--muted);letter-spacing:.06em;
}
.town-water-schematic > p,.town-radial-map > p{max-width:66ch;margin:0 0 16px}
.radial-svg{display:block;width:100%;max-width:620px;height:auto;margin:0 auto}
.rd-ring{fill:none;stroke:var(--line);stroke-dasharray:3 4}
.rd-spoke{stroke:var(--muted);stroke-width:1;opacity:.45;stroke-dasharray:1 3}
.rd-lbl{font:500 12px "Oswald",sans-serif;letter-spacing:.08em;fill:var(--ink);text-transform:uppercase}
.rd-mi{font:italic 500 11px "Gelasio",Georgia,serif;fill:var(--muted)}
.rd-card{font:600 12px "Oswald",sans-serif;fill:var(--contour)}
.rd-center-lbl{font:600 13px "Oswald",sans-serif;letter-spacing:.16em;fill:var(--accent)}
.rd-note{font:italic 500 10px "Gelasio",Georgia,serif;fill:var(--muted)}

/* water flow schematic pieces */
.wf-node-lbl{font:500 13px "Oswald",sans-serif;letter-spacing:.1em;fill:var(--ink);text-transform:uppercase}
.wf-sub{font:italic 500 10.5px "Gelasio",Georgia,serif;fill:var(--muted)}
.wf-stream{fill:none;stroke:var(--river);stroke-width:3;stroke-linecap:round}
.wf-stream.wide{stroke-width:6}
.wf-spring{fill:var(--lake);stroke:var(--river);stroke-width:1.4}
.wf-town{fill:var(--accent);stroke:var(--halo);stroke-width:1.4}
.wf-arrow{fill:var(--river)}

/* ---------- pin challenge band ---------- */
.town-pin-section{
  margin:44px calc(50% - 50vw) 0;
  background:var(--paper-2);
  border-block:1.5px solid var(--ink);
}
.town-pin-section > .inner{
  max-width:1160px;margin:0 auto;padding:36px 22px 40px;
  display:grid;grid-template-columns:300px minmax(0,1fr);gap:30px;align-items:start;
}
.town-pin-section .intro{position:sticky;top:22px;padding-top:8px}
.town-pin-section .section-eyebrow{margin-bottom:10px}
.town-pin-section h2{margin:0 0 10px;font-size:26px}
.town-pin-section .lede{margin:0 0 18px;color:var(--muted);font-size:15px}
.town-pin-challenge{position:relative}
.town-pin-challenge .challenge-svg{cursor:crosshair}
.pin-result{
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  margin:12px 2px 0;
}
.pin-result[hidden]{display:none}
.pin-result .grade{font-family:"Alfa Slab One",Georgia,serif;font-size:19px;line-height:1.2}
.pin-result .grade.good{color:var(--good)}
.pin-result .grade.warm{color:var(--gold)}
.pin-result .grade.cold{color:var(--bad)}
.pin-result .miles{font-size:14px;color:var(--muted)}
.pin-result .miles b{color:var(--ink)}
.pin-result .pts{font-size:20px;font-weight:700;color:var(--violet);font-variant-numeric:tabular-nums}
.pin-hint{margin:12px 2px 0;font:italic 500 13px "Gelasio",Georgia,serif;color:var(--muted)}
.challenge-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.challenge-actions .btn{padding:10px 18px;font-size:13px}
.challenge-actions [hidden]{display:none}
/* markers drawn into the challenge svg */
.ch-guess .body{fill:var(--accent);stroke:var(--halo);stroke-width:1.3}
.ch-guess .hole{fill:var(--halo)}
.ch-true .body{fill:var(--good);stroke:var(--halo);stroke-width:1.3}
.ch-true .hole{fill:var(--halo)}
.ch-line{stroke:var(--violet);stroke-width:1.7;stroke-dasharray:5 5;fill:none}
.ch-truelbl{font:600 11px "Oswald",sans-serif;letter-spacing:.1em;fill:var(--good);text-transform:uppercase;paint-order:stroke;stroke:var(--halo);stroke-width:3px;stroke-linejoin:round}

/* ---------- nearby towns ---------- */
.nearby-towns{max-width:720px;padding:8px 0 0}
.nearby-towns > p{max-width:66ch;margin:0 0 14px;color:var(--muted);font-size:14.5px}
.nearby-list{list-style:none;margin:0;padding:0;border-top:1.5px solid var(--ink)}
.nearby-list li{
  display:flex;align-items:baseline;gap:12px;
  padding:11px 4px;border-bottom:1px dashed var(--line);
}
.nearby-list .nm{font-weight:700;font-size:15px}
.nearby-list .nm a{text-decoration:none;color:var(--ink);border-bottom:2px solid var(--accent)}
.nearby-list .nm a:hover{color:var(--accent)}
.nearby-list .co{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.nearby-list .mi{margin-left:auto;font-variant-numeric:tabular-nums;font-size:13.5px;color:var(--muted);white-space:nowrap}
.nearby-list .mi b{color:var(--ink);font-size:14.5px}
.nearby-foot{margin:8px 4px 0;font:italic 500 12px "Gelasio",Georgia,serif;color:var(--muted)}

/* ---------- faq ---------- */
.town-faq{max-width:720px;padding:8px 0 0}
.town-faq article{padding:14px 0 4px;border-top:1px dashed var(--line)}
.town-faq article:first-of-type{border-top:1.5px solid var(--ink)}
.town-faq h3{font-size:15.5px;font-weight:700;margin:0 0 6px}
.town-faq p{margin:0 0 10px;max-width:66ch;font-size:14.5px}

/* ---------- sources ---------- */
.town-sources{max-width:720px;padding:8px 0 0}
.town-sources h2{font-size:13px;font-weight:600;font-family:"Oswald",sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.town-sources ul{list-style:none;margin:0;padding:0;font-size:13px;color:var(--muted)}
.town-sources li{padding:3px 0}
.town-sources a{color:var(--muted)}
.town-sources a:hover{color:var(--ink)}

/* ============================================================
   towns hub
   ============================================================ */
.hub-hero{padding:34px 0 6px;max-width:860px}
.hub-hero h1{
  font-family:"Alfa Slab One","Rockwell",Georgia,serif;font-weight:400;
  font-size:clamp(30px,5vw,50px);line-height:1.06;margin:0 0 18px;text-transform:uppercase;
}
.hub-hero .town-deck{max-width:44em}
.guide-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;padding:20px 0 6px}
.guide-card{
  display:flex;flex-direction:column;text-decoration:none;background:var(--card);
  border:1.5px solid var(--ink);border-radius:12px;padding:15px 15px 13px;
  box-shadow:var(--shadow);transition:transform .14s;position:relative;overflow:hidden;
}
.guide-card::before{content:"";position:absolute;inset:4px;border:1px solid var(--line);border-radius:8px;pointer-events:none}
.guide-card:hover{transform:translateY(-3px)}
.guide-card .pin{width:20px;height:26px;margin-bottom:9px}
.guide-card b{
  display:block;font:600 15px "Oswald",sans-serif;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink);margin-bottom:3px;
}
.guide-card span{display:block;font:italic 500 12px "Gelasio",Georgia,serif;color:var(--muted);line-height:1.45}
.guide-card .go{
  display:block;margin-top:auto;padding-top:10px;font:700 10.5px "Archivo",sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);
}
.hub-map-figure{margin:30px 0 0;padding:0}
.hub-map-figure img{
  display:block;width:100%;height:auto;border:1.5px solid var(--ink);border-radius:14px;
  box-shadow:var(--shadow);background:var(--map-bg);
}
.hub-map-figure figcaption{
  display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap;
  margin:10px 4px 0;font-size:13px;color:var(--muted);
}
.hub-map-figure .dl{font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);text-decoration:none;white-space:nowrap}
.hub-map-figure .dl:hover{text-decoration:underline}
.reuse-note{margin:6px 4px 0;font:italic 500 12px "Gelasio",Georgia,serif;color:var(--muted)}

.hub-groups{padding:26px 0 0}
.hub-groups h2{font-size:22px;font-weight:700;margin:0 0 6px}
.hub-groups .tier{margin:22px 0 0}
.tier-head{
  display:flex;align-items:center;gap:9px;margin:0 0 10px;
  font:700 11px "Archivo",sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);
}
.tier-head .dot{width:8px;height:8px;border-radius:50%;background:var(--td)}
.tier-head .note{font-weight:500;letter-spacing:.04em;text-transform:none;font-style:italic;font-family:"Gelasio",Georgia,serif;font-size:12.5px}
.town-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.town-chips li{display:contents}
.town-chip{
  display:inline-block;padding:7px 4px;border:none;
  font-size:13.5px;font-weight:600;color:var(--muted);background:transparent;
}
a.town-chip{
  color:var(--ink);border:1.5px solid var(--ink);border-radius:999px;padding:7px 14px;
  text-decoration:none;background:var(--card);
  transition:background .15s,color .15s;
}
a.town-chip::after{content:" →";color:var(--accent);font-weight:700}
a.town-chip:hover{background:var(--accent);color:var(--accent-ink)}
a.town-chip:hover::after{color:var(--accent-ink)}

.hub-copy{max-width:720px;padding:16px 0 0}
.hub-copy h2{font-size:22px;font-weight:700;margin:34px 0 12px}
.hub-copy p{margin:0 0 16px;max-width:66ch}

/* ---------- locator svg language (matches generator output) ---------- */
.tl-grat line{stroke:var(--ink);opacity:.06;stroke-width:.8}
.tl-river{fill:none;stroke:var(--river);stroke-width:1.7;opacity:.95;stroke-linecap:round}
.tl-river.minor{stroke-width:1.15;opacity:.72}
.tl-river.hot{stroke-width:2.6;opacity:1}
.tl-lakestroke{fill:none;stroke:var(--lake);stroke-linecap:round}
.tl-lake{fill:var(--lake);stroke:var(--lake-line);stroke-width:.8}
.tl-wlbl{font:italic 500 10px "Gelasio",Georgia,serif;fill:var(--river)}
.tl-wlbl.sm{font-size:8.5px;opacity:.85}
.tl-road{fill:none;stroke-linecap:round;stroke-linejoin:round}
.tl-road.i{stroke:var(--road-i);stroke-width:3.1}
.tl-road.icl{stroke:var(--halo);stroke-width:.9;opacity:.85}
.tl-road.us{stroke:var(--road-us);stroke-width:1.7;opacity:.95}
.tl-road.st{stroke:var(--road-st);stroke-width:1.15;opacity:.8}
.tl-shield-us rect{fill:var(--halo);stroke:var(--road-us);stroke-width:1}
.tl-shield-us text{fill:var(--road-us);font:700 8px "Archivo",sans-serif}
.tl-shield-i rect{fill:var(--road-i)}
.tl-shield-i text{fill:var(--halo);font:700 8px "Archivo",sans-serif}
.tl-lm path{fill:var(--good);opacity:.85}
.tl-lm text{font:italic 500 8.5px "Gelasio",Georgia,serif;fill:var(--good);opacity:.9}
.tl-anchor polygon,.tl-anchor .fill{fill:var(--muted)}
.tl-anchor circle{stroke:var(--muted);stroke-width:1.4}
.tl-anchor text{font:600 11.5px "Oswald",sans-serif;letter-spacing:.14em;fill:var(--muted);text-transform:uppercase;paint-order:stroke;stroke:var(--halo);stroke-width:3px;stroke-linejoin:round}
.tl-town circle{fill:var(--ink);stroke:var(--halo);stroke-width:1.2}
.tl-town text{font:500 10.5px "Oswald",sans-serif;letter-spacing:.09em;fill:var(--ink);text-transform:uppercase;paint-order:stroke;stroke:var(--halo);stroke-width:3px;stroke-linejoin:round}
.tl-target .ring{fill:none;stroke:var(--accent)}
.tl-target .ring.r1{opacity:.55;stroke-width:1.6}
.tl-target .ring.r2{opacity:.22;stroke-width:1.2}
.tl-target .pinbody{fill:var(--accent);stroke:var(--halo);stroke-width:1.1}
.tl-target .pinhole{fill:var(--halo)}
.tl-target-lbl{font:600 13px "Oswald",sans-serif;letter-spacing:.14em;fill:var(--accent);paint-order:stroke;stroke:var(--halo);stroke-width:3.5px;stroke-linejoin:round}
.tl-scale rect.a{fill:var(--ink)}
.tl-scale rect.b{fill:var(--halo);stroke:var(--ink);stroke-width:.7}
.tl-scale text{fill:var(--ink);font-family:"Archivo",sans-serif;font-weight:500}

/* full-map + inset variants compensate for viewBox scale */
.locator-svg--full .tl-town text{font-size:15px;stroke-width:4px}
.locator-svg--full .tl-town circle{r:5px}
.locator-svg--full .tl-anchor text{font-size:16px;stroke-width:4px}
.locator-svg--full .tl-target-lbl{font-size:19px;stroke-width:5px}
.locator-svg--full .tl-lm text{font-size:12px}
.locator-svg--inset .tl-town text{font-size:7.5px;stroke-width:2px}
.locator-svg--inset .tl-town circle{r:2.4px}
.locator-svg--inset .tl-target-lbl{font-size:9px;stroke-width:2.4px}
.locator-svg--inset .tl-shield-us rect,.locator-svg--inset .tl-shield-i rect,
.locator-svg--inset .tl-shield-us text,.locator-svg--inset .tl-shield-i text{display:none}
.locator-svg--inset .tl-lm text{font-size:6px}

/* ---------- responsive ---------- */
@media (max-width:940px){
  .town-locator-section{grid-template-columns:1fr}
  .town-pin-section > .inner{grid-template-columns:1fr;gap:18px}
  .guide-cards{grid-template-columns:repeat(2,1fr)}
  .town-fact-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .site-header{padding:12px 14px 10px}
  .site-brand b{font-size:15px}
  .site-nav a{padding:6px 10px;font-size:11.5px}
  .site-rule,.town-page{padding-left:14px;padding-right:14px}
  .town-hero{padding-top:24px}
  .town-hero h1{font-size:clamp(27px,8.6vw,34px)}
  .town-pin-section > .inner{padding:26px 14px 30px}
  .guide-cards{grid-template-columns:1fr 1fr;gap:10px}
  .guide-card:last-child:nth-child(odd){grid-column:1 / -1}
  .site-footer{flex-direction:column;align-items:flex-start;gap:8px}
}
