/* Siliguri Puja Guide — deep burgundy, warm cream, muted gold; day + night. */
:root{
  --bg:#fbf5e6; --surface:#fffdf7; --card:#ffffff; --surface-2:#f3e9d2; --line:#d3c299;
  --ink:#2a1a16; --muted:#54443c; --accent:#5a0f1e; --accent-2:#3b0a14; --on-accent:#fbf5e6;
  --link:#74182a; --gold:#b08a2e; --gold-l:#e3c36f; --gold-text:#6b4f0e; --focus:#8a5a00;
  --head-1:#5a0f1e; --head-2:#3b0a14; --head-ink:#fbf5e6; --head-gold:#e3c36f;
  --warn-bg:#fff1cc; --warn-ink:#3d2a00; --warn-bd:#b08a2e;
  --err-bg:#fbe3e3; --err-ink:#5c0f13; --err-bd:#8c1c2c;
  --demo-bg:#f6e6e8; --demo-ink:#5a0f1e; --demo-bd:#5a0f1e;
  --pend-bg:#fff1cc; --pend-ink:#4a3300; --pend-bd:#8a6a10;
  --ok-bg:#e4efe7; --ok-ink:#173f2b; --ok-bd:#2f5a43;
  --input-bg:#fff; --input-bd:#6f5f52;
  --mk-pandal:#5a0f1e; --mk-park:#2f5a43; --mk-fac:#6b4f0e; --mk-pab:#1e4a6b; --mk-hosp:#6b4f0e; --mk-traf:#8c1c2c; --mk-ctrl:#c9a227;
  --tabbar-h:56px; --sos-size:52px;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --serif:Georgia,"Times New Roman",serif;
  color-scheme:light;
}
html[data-theme="dark"]{
  --bg:#150709; --surface:#210e13; --card:#2b141b; --surface-2:#3a1c25; --line:#6b4450;
  --ink:#f8efde; --muted:#dcc9b6; --accent:#e3c36f; --accent-2:#f0d78a; --on-accent:#2a0a12;
  --link:#f0d78a; --gold:#e3c36f; --gold-l:#e3c36f; --gold-text:#f0d78a; --focus:#ffd86b;
  --head-1:#3b0a14; --head-2:#24060c; --head-ink:#fbf5e6; --head-gold:#e3c36f;
  --warn-bg:#3f2f08; --warn-ink:#fff0c4; --warn-bd:#e3c36f;
  --err-bg:#4a1218; --err-ink:#ffe0e0; --err-bd:#ff8f98;
  --demo-bg:#3a1822; --demo-ink:#ffdfe4; --demo-bd:#ff9fb0;
  --pend-bg:#3f2f08; --pend-ink:#fff0c4; --pend-bd:#e3c36f;
  --ok-bg:#17382a; --ok-ink:#d6f5e2; --ok-bd:#7fd0a0;
  --input-bg:#150709; --input-bd:#c9b79f;
  --mk-pandal:#e3c36f; --mk-park:#3f8a63; --mk-fac:#b08a2e; --mk-pab:#6fa0c4; --mk-hosp:#b08a2e; --mk-traf:#c4344a; --mk-ctrl:#e3c36f;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:12px;background:var(--bg)}
body{
  margin:0;font:16px/1.45 var(--sans);color:var(--ink);background:var(--bg);
  min-height:100dvh;overflow-x:hidden;
  padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);
}
body.has-chrome{padding-bottom:calc(var(--tabbar-h) + var(--sos-size) + 20px + env(safe-area-inset-bottom))}
body.has-chrome:has(#view-home:not([hidden])){padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}
[hidden]{display:none!important}
.wrap{max-width:720px;margin:0 auto;padding:0 16px}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-60px;z-index:3000;background:var(--gold-l);color:#3b0a14;padding:12px 16px;min-height:44px;border-radius:8px;font-weight:700;text-decoration:none}
.skip:focus{top:8px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.mast :focus-visible,.tabbar :focus-visible,.sos-fab:focus-visible{outline-color:var(--gold-l)}
a{color:var(--link)}
h1,h2{font-family:var(--serif);line-height:1.2;margin:0 0 .35em;color:var(--accent)}
.muted{color:var(--muted)}.small{font-size:.9rem}
.empty{color:var(--muted);padding:12px 0;margin:0}

/* ----- mast ----- */
.mast{
  background:var(--head-1);
  color:var(--head-ink);padding:calc(4px + env(safe-area-inset-top)) 0 4px;
  border-bottom:0;
}
.mast-festive{
  position:relative;overflow:hidden;
  background:#5a0f1e; /* fallback while banner loads */
  padding:calc(10px + env(safe-area-inset-top)) 0 20px;
  /* Mockup header ~24% — fills cream that would otherwise sit under safety */
  min-height:clamp(160px,24dvh,230px);
}
/* Full banner art (Durga/mandala/bridge); left scrim keeps title readable */
.mast-festive .mast-art{
  position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;
  display:block;
}
.mast-festive .mast-art picture,.mast-festive .mast-art-img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:center center;
}
.mast-festive::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(42,6,12,.62) 0%,rgba(42,6,12,.38) 38%,rgba(42,6,12,.12) 62%,transparent 82%),
    linear-gradient(180deg,rgba(42,6,12,.2) 0%,transparent 40%,rgba(42,6,12,.15) 100%);
}
.mast-festive .mast-wave{
  position:absolute;left:0;right:0;bottom:-1px;height:20px;color:var(--bg);line-height:0;pointer-events:none;z-index:2;
}
.mast-festive .mast-wave svg{display:block;width:100%;height:20px}
.mast-festive .mast-inner,.mast-festive .mast-meta,.mast-festive .idstrip{position:relative;z-index:2}
.mast-festive .brand-name{
  display:block;font-family:var(--serif);font-size:clamp(1.55rem,6.8vw,1.9rem);font-weight:700;
  line-height:1.08;letter-spacing:.005em;color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.35);
}
.mast-festive .brand-puja{
  position:relative;display:inline;padding-bottom:2px;
  border-bottom:3px solid var(--head-gold);
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
.mast-festive .brand-tag{
  font-family:var(--sans);font-style:normal;font-weight:500;font-size:.84rem;line-height:1.3;
  color:#fff;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.28);max-width:15.5em;
}
.mast-festive .theme-btn{position:relative;z-index:3;background:rgba(0,0,0,.4);border-color:rgba(227,195,111,.5);backdrop-filter:blur(2px)}
html[data-theme="dark"] .mast-festive{background:#24060c}
html[data-theme="dark"] .mast-festive .mast-art{opacity:.72;filter:brightness(.72) saturate(.85)}
html[data-theme="dark"] .mast-festive::before{
  background:
    linear-gradient(90deg,rgba(20,3,8,.72) 0%,rgba(20,3,8,.5) 40%,rgba(20,3,8,.2) 70%,transparent 90%),
    linear-gradient(180deg,rgba(20,3,8,.25) 0%,transparent 45%,rgba(20,3,8,.2) 100%);
}
.mast-inner{display:flex;align-items:center;justify-content:space-between;gap:8px}
.brand{display:flex;flex-direction:column;gap:5px;text-decoration:none;color:inherit;min-width:0;flex:1;max-width:72%}
.brand-name{font-family:var(--serif);font-size:clamp(1.12rem,4.6vw,1.38rem);font-weight:700;line-height:1.15;color:var(--head-ink)}
.brand-tag{font-family:var(--serif);font-style:italic;font-size:.8rem;font-weight:400;color:var(--head-gold);line-height:1.25;opacity:.92}
.theme-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:44px;
  padding:0 8px;border-radius:999px;border:1px solid rgba(255,255,255,.18);
  background:rgba(0,0,0,.15);color:var(--head-ink);font:500 .75rem/1 var(--sans);cursor:pointer;flex:none;opacity:.85;
}
.theme-btn .ic{width:18px;height:18px}
.theme-lbl{display:inline;font-size:.7rem;letter-spacing:.01em}
.theme-btn .ic-auto,.theme-btn .ic-moon,.theme-btn .ic-sun{display:none}
html[data-theme-mode="auto"] .theme-btn .ic-auto,html[data-theme-mode="dark"] .theme-btn .ic-moon,html[data-theme-mode="light"] .theme-btn .ic-sun{display:inline}
html:not([data-theme-mode]) .theme-btn .ic-auto{display:inline}
/* icons: one small monochrome stroke set, always subordinate to the label */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ic{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mast-meta{margin-top:8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:0;line-height:1.25}
.descriptor{margin:0;font-family:var(--sans);font-size:.7rem;font-weight:400;letter-spacing:0;text-transform:none;color:rgba(251,245,230,.72);line-height:inherit}
.dates{margin:0;font-family:var(--sans);font-size:.7rem;font-weight:400;color:rgba(251,245,230,.62);line-height:inherit}
.dates::before{content:" \00B7 ";opacity:.75}
.mast-festive .mast-meta{margin-top:10px}
.mast-festive .descriptor,.mast-festive .dates{
  font-size:.62rem;font-weight:400;color:rgba(251,245,230,.58);letter-spacing:.01em;
}
.mast-festive .dates::before{content:": ";opacity:.85}
.idstrip{margin-top:10px;padding-top:8px;border-top:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;align-items:center;gap:6px}
.idstrip-logos{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.idstrip-logos img{height:32px;width:auto;max-width:96px;object-fit:contain}
.idstrip-cap{margin:0;font-size:.78rem;color:#f1e8d4;text-align:center}

/* ----- banners ----- */
.banners{display:flex;flex-direction:column;gap:4px;padding-top:8px;padding-bottom:0}
.banner{
  display:flex;gap:8px;align-items:flex-start;padding:5px 8px;border-radius:0;
  border:0;border-left:2px solid var(--line);background:var(--surface-2);font-family:var(--sans);font-size:.78rem;line-height:1.3;font-weight:400;
}
.banner-warn{background:var(--warn-bg);color:var(--warn-ink);border-left-color:var(--warn-bd)}
.banner-err{background:var(--err-bg);color:var(--err-ink);border-left-color:var(--err-bd)}
.banner-demo{display:block;background:var(--demo-bg);color:var(--demo-ink);border-left:4px solid var(--accent);padding:8px 10px;border-radius:0 8px 8px 0}
.banner-demo-row{display:flex;gap:8px;align-items:flex-start}
.banner-info-ic{width:18px;height:18px;flex:none;margin-top:1px;opacity:.9}
.banner-demo-text{min-width:0;flex:1}
.banner-demo .banner-demo-main{margin:0;font-family:var(--sans);font-size:.78rem;font-weight:600;line-height:1.35;color:var(--demo-ink)}
.banner-demo .banner-demo-main .demo-badge,.banner-demo .banner-demo-main strong{
  display:inline;font-weight:800;letter-spacing:.04em;margin-right:.35em;
  padding:0;border-radius:0;background:transparent;color:var(--demo-ink);font-size:inherit;vertical-align:baseline;
}
.banner-demo .banner-demo-sub{margin:3px 0 0;font-family:var(--sans);font-size:.7rem;font-weight:400;line-height:1.3;color:var(--demo-ink);opacity:.75}
.banner button{margin-left:auto;flex:none}

/* ----- views ----- */
main.wrap{padding-top:8px;padding-bottom:16px}
/* Home: demo→CTA gap owned by #view-home .bigactions margin-top */
body:has(#view-home:not([hidden])) main.wrap{padding-top:0;padding-bottom:0}
.view-head{margin-bottom:14px}
.view-head h1{font-size:1.45rem}
.lede{margin:0;color:var(--muted);font-size:.95rem}
.back{
  display:inline-flex;align-items:center;min-height:44px;padding:4px 0;margin-bottom:4px;
  font-weight:650;text-decoration:none;color:var(--link);
}
.sec{font-size:1.05rem;margin:1.1em 0 .5em}

/* ----- home big actions ----- */
#view-home{padding-top:0}
.view-home-festive{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.bigactions{display:flex;flex-direction:column;gap:8px;margin:6px 0 8px}
#view-home .bigactions{gap:8px;margin:8px 0 8px}
#view-home .bigbtn-primary{
  min-height:50px;padding:12px 14px;font-family:var(--sans);font-size:1.05rem;font-weight:600;
  color:#fff;letter-spacing:.01em;
}
#view-home .bigrow{gap:8px}
#view-home .bigrow .bigbtn,#view-home .bigrow .bigbtn-secondary{
  min-height:48px;padding:10px 10px;font-family:var(--sans);font-size:15px;font-weight:600;color:#5a0f1e;
  background:#fff;border:1px solid rgba(90,15,30,.1);
}
.bigbtn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:52px;padding:12px 14px;border-radius:12px;
  background:var(--card);border:1px solid var(--line);color:var(--ink);
  text-decoration:none;font-family:var(--sans);font-weight:600;font-size:.95rem;line-height:1.2;
  box-shadow:none;
}
.bigbtn-primary{
  background:#5a0f1e;color:#fbf5e6;border-color:#5a0f1e;
  min-height:56px;font-size:1.02rem;font-weight:650;justify-content:flex-start;
}
.bigbtn-primary .bt{flex:1;text-align:center}
.bigbtn-primary .chev{margin-left:auto;opacity:.9;width:18px;height:18px}
html[data-theme="dark"] .bigbtn-primary{background:#5a0f1e;color:#fbf5e6;border-color:#7a1830}
.bigrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bigbtn .bi{width:18px;height:18px;opacity:.95;flex:none}
.bigbtn .chev{width:16px;height:16px;flex:none;opacity:.7;margin-left:auto}
/* secondary: pink-tinted equal cards with chevron */
.bigrow .bigbtn,.bigrow .bigbtn-secondary{
  flex-direction:row;gap:6px;padding:10px 10px;text-align:left;min-height:52px;font-size:15px;font-weight:600;
  background:#faf3eb;border:1px solid rgba(90,15,30,.06);color:#5a0f1e;justify-content:flex-start;
  box-shadow:none;
}
html[data-theme="dark"] .bigrow .bigbtn,html[data-theme="dark"] .bigrow .bigbtn-secondary{
  background:rgba(251,245,230,.08);border-color:rgba(248,239,222,.12);color:var(--head-ink);
}
html[data-theme="dark"] #view-home .bigrow .bigbtn,html[data-theme="dark"] #view-home .bigrow .bigbtn-secondary{
  background:rgba(251,245,230,.1);color:#f8efde;border-color:rgba(248,239,222,.18);
}
.bigrow .bt{white-space:nowrap;flex:1}
@media(max-width:359px){.bigrow .bigbtn{gap:4px;padding:10px 6px}.bigrow .bi{width:16px;height:16px}.bigrow .chev{display:none}}
.freshness{margin:0;font-family:var(--sans);font-size:.75rem;font-weight:400;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.freshness-ic{width:14px;height:14px;opacity:.75}
.freshness[data-level="stale"],.freshness[data-level="old"],.freshness[data-level="none"]{color:var(--warn-ink);font-weight:500}
/* Updated between thin rules */
#view-home .freshness-row{
  display:flex;justify-content:flex-start;align-items:center;margin:2px 0 8px;padding:6px 0 8px;
  border-top:0;border-bottom:1px solid var(--line);
}
#view-home .freshness{
  margin:0;font-family:var(--sans);font-size:.72rem;font-weight:400;color:#6b5c52;
}
html[data-theme="dark"] #view-home .freshness{color:var(--muted)}
.warn-card{
  display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:10px;
  background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-bd);font-size:.9rem;
}
.warn-card p{margin:0}
.warn-ic{font-size:1.1rem;flex:none}
/* Home caution: light yellow gold-border box (mockup) */
#view-home .warn-card,#view-home .warn-card-home{
  display:flex;gap:8px;align-items:flex-start;padding:8px 10px;margin:0;
  background:#fff8e6;color:#5a5348;border:1.5px solid #c9a227;border-radius:10px;
  font-family:var(--sans);font-size:.78rem;line-height:1.4;font-weight:400;
}
#view-home .warn-card p{margin:0;color:#5a5348}
#view-home .warn-ic{font-size:1rem;flex:none;line-height:1.35;color:#c9a227}
html[data-theme="dark"] #view-home .warn-card,html[data-theme="dark"] #view-home .warn-card-home{
  background:var(--warn-bg);color:var(--warn-ink);border-color:var(--warn-bd);
}
html[data-theme="dark"] #view-home .warn-card p{color:var(--warn-ink)}
/* Bottom scene: short real art (~160–200); grows into leftover; footer overlaid near nav */
.home-scene{
  position:relative;margin:2px -16px 0;flex:1 1 auto;min-height:160px;
  /* Fill leftover under safety so footer sits on art; keep short (≤260) */
  max-height:min(260px,32dvh);
  pointer-events:none;user-select:none;overflow:hidden;
}
.home-scene picture,.home-scene-img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:center 38%;
}
.home-scene::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:52%;pointer-events:none;z-index:1;
  background:linear-gradient(to bottom,transparent 0%,var(--bg) 82%);
}
html[data-theme="dark"] .home-scene{opacity:.55;filter:brightness(.65) saturate(.8)}
@media(max-height:700px){
  .home-scene{min-height:148px;max-height:min(180px,28dvh)}
  #view-home .bigactions{margin:8px 0 10px}
  .mast-festive{padding:calc(6px + env(safe-area-inset-top)) 0 14px;min-height:clamp(130px,20dvh,160px)}
}
@media(min-height:800px){
  .mast-festive{min-height:clamp(190px,26dvh,250px)}
}
@media(min-height:900px){
  .mast-festive{min-height:clamp(230px,29dvh,280px)}
  .home-scene{max-height:min(260px,30dvh)}
}

/* ----- search / lists ----- */
.search{
  width:100%;min-height:48px;padding:12px 14px;border-radius:12px;
  border:2px solid var(--input-bd);background:var(--input-bg);color:var(--ink);font:inherit;margin-bottom:10px;
}
.filter-sum{margin:0 0 10px;font-size:.88rem;color:var(--muted)}
.filter-sum:empty{display:none}
.nhood-list,.result-list,.card-list,.sos-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.nhood-list{gap:0;border-top:1px solid var(--line)}
.pandal-card,.info-card{display:block;padding:12px 14px;border-radius:10px;background:var(--card);border:1px solid var(--line);color:inherit}
.nhood-item{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.nhood-item .nh-name{flex:1;font-weight:600;color:var(--ink)}
.nhood-item .nh-count{font-size:.86rem;color:var(--muted)}
.nhood-item .ic{color:var(--muted);width:18px;height:18px}
.info-card.is-demo{border-style:dashed;border-color:var(--demo-bd)}
.info-card.is-sel{outline:2px solid var(--gold);outline-offset:-1px}
.kv{margin:4px 0;font-size:.92rem}.kv .k{color:var(--muted)}
.rtype{margin:0 0 4px;font-weight:600;font-size:.92rem}
.clear-note{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.clear-note p{margin:0}.clear-h{font-weight:650;color:var(--ok-ink)}
.pandal-card .pc-name{font-weight:700;font-size:1.02rem;margin:0 0 2px}
.pandal-card .pc-loc{margin:0 0 8px;font-size:.9rem;color:var(--muted)}
.pc-actions,.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.info-card h3{margin:4px 0;font-size:1rem;color:var(--ink)}
.info-card p{margin:4px 0;font-size:.92rem}
.info-card .meta{color:var(--muted);font-size:.88rem}

/* ----- badges ----- */
.badge-row{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0}
.badge{
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;
  font-size:.7rem;font-weight:700;letter-spacing:.03em;border:1px solid;
}
.badge-demo{background:var(--demo-bg);color:var(--demo-ink);border-color:var(--demo-bd)}
.badge-pending,.badge-reference,.badge-unverified{background:var(--pend-bg);color:var(--pend-ink);border-color:var(--pend-bd)}
.badge-confirmed,.badge-mapped{background:var(--surface-2);color:var(--ink);border-color:var(--line)}
.badge-approved,.badge-field{background:var(--ok-bg);color:var(--ok-ink);border-color:var(--ok-bd)}
.badge-expired{background:var(--surface-2);color:var(--muted);border-color:var(--line)}

/* ----- buttons ----- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:44px;padding:10px 16px;border-radius:12px;border:1.5px solid var(--line);
  background:var(--surface);color:var(--ink);font:650 .95rem/1 var(--sans);
  text-decoration:none;cursor:pointer;
}
.btn-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent-2)}
.btn-ghost{background:transparent}
.btn-sm{min-height:40px;padding:8px 12px;font-size:.88rem}
.btn-call{background:var(--accent);color:var(--on-accent);border-color:var(--accent-2);min-width:88px}

/* ----- map ----- */
.mapbox{
  width:100%;height:200px;border-radius:10px;overflow:hidden;
  border:1px solid var(--line);background:var(--surface-2);margin:10px 0 14px;isolation:isolate;position:relative;z-index:0;
}
.mapbox.mapbox-sm{height:160px}
.leaflet-container{font:inherit;background:var(--surface-2)}
.mk{
  width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 2px rgba(0,0,0,.35);
}
.mk-pandal{background:var(--mk-pandal)}
.mk-park{background:var(--mk-park)}
.mk-fac{background:var(--mk-fac)}
.mk-pab{background:var(--mk-pab)}
.mk-hosp{background:var(--mk-hosp)}
.mk-traf{background:var(--mk-traf)}
.mk-ctrl{background:var(--mk-ctrl)}

/* ----- subtabs ----- */
.subtabs{display:flex;gap:6px;margin-top:10px;padding:4px;background:var(--surface-2);border-radius:12px}
.subtab{
  flex:1;min-height:44px;border:0;border-radius:10px;background:transparent;
  color:var(--muted);font:650 .9rem/1.2 var(--sans);cursor:pointer;padding:8px 10px;
}
.subtab[aria-selected="true"]{background:var(--card);color:var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.timecheck{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0 14px}
.timecheck label{display:flex;flex-direction:column;gap:4px;font-size:.82rem;font-weight:650;color:var(--muted)}
.timecheck input{
  min-height:44px;padding:8px 10px;border-radius:10px;border:1.5px solid var(--input-bd);
  background:var(--input-bg);color:var(--ink);font:inherit;
}

/* ----- foot / chrome ----- */
.footlinks{
  display:flex;flex-wrap:wrap;justify-content:center;gap:6px;align-items:center;
  padding:2px 16px;font-size:.75rem;font-weight:400;
}

/* PWA install — compact chip in footer; only when beforeinstallprompt fired */
.foot-inner{display:flex;flex-direction:column;align-items:center;gap:6px}
.install-chip{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:36px;padding:6px 14px;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--accent);
  font:600 .78rem/1.2 var(--sans);cursor:pointer;
  box-shadow:0 1px 2px rgba(42,26,22,.06);
}
.install-chip:hover{background:var(--surface-2)}
.install-chip:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.install-chip[hidden]{display:none!important}
html[data-theme="dark"] .install-chip{background:var(--card);border-color:var(--line);color:var(--gold-l)}

/* Home: mockup-tight — scene under safety, footer on art near nav, no scroll */
body.has-chrome:has(#view-home:not([hidden])){
  display:flex;flex-direction:column;justify-content:flex-start;
  height:100dvh;max-height:100dvh;min-height:100dvh;overflow:hidden;
  position:relative;
}
body.has-chrome:has(#view-home:not([hidden])) .mast{flex:none}
body.has-chrome:has(#view-home:not([hidden])) .banners{flex:none;padding-top:4px}
body.has-chrome:has(#view-home:not([hidden])) #main{
  flex:1 1 auto;min-height:0;display:flex;flex-direction:column;
}
body.has-chrome:has(#view-home:not([hidden])) #view-home{
  flex:1 1 auto;min-height:0;display:flex;flex-direction:column;
}
/* Absolute footer sits in lower decorative area above tabbar */
body.has-chrome:has(#view-home:not([hidden])) .footlinks{
  position:absolute;left:0;right:0;z-index:2;margin:0;padding:0 16px;
  /* Sit in scene cream just above tabbar (higher = more overlap into short scene) */
  bottom:calc(var(--tabbar-h) + var(--sos-size) + 12px + env(safe-area-inset-bottom));
}
body.has-chrome:has(#view-home:not([hidden])) .foot{
  position:absolute;left:0;right:0;z-index:2;margin:0;padding:0;
  bottom:calc(var(--tabbar-h) + var(--sos-size) - 8px + env(safe-area-inset-bottom));
}

.footlinks a{color:var(--muted);min-height:36px;display:inline-flex;align-items:center;text-decoration:none}
body.has-chrome:has(#view-home:not([hidden])) .footlinks{
  font-family:var(--sans);font-size:.7rem;font-weight:400;color:#6b5c52;
}
body.has-chrome:has(#view-home:not([hidden])) .footlinks a{min-height:28px;color:#6b5c52}
body.has-chrome:has(#view-home:not([hidden])) .foot{
  font-family:var(--sans);font-size:.65rem;font-weight:400;color:#7a6b60;text-align:center;
}
html[data-theme="dark"] body.has-chrome:has(#view-home:not([hidden])) .footlinks,
html[data-theme="dark"] body.has-chrome:has(#view-home:not([hidden])) .footlinks a,
html[data-theme="dark"] body.has-chrome:has(#view-home:not([hidden])) .foot{color:var(--muted)}
.foot{padding:0 0 6px;color:var(--muted);font-size:.7rem;text-align:center}
.foot p{margin:0}
.prose{font-size:.95rem;line-height:1.55}
.prose h2{font-size:1.15rem;margin-top:1.2em}
.prose p{margin:.5em 0}
.prose ul{padding-left:1.2em}

/* ----- tabbar ----- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:900;
  display:flex;justify-content:space-around;align-items:stretch;
  min-height:var(--tabbar-h);padding:0 0 env(safe-area-inset-bottom);
  background:var(--card);border-top:1px solid var(--line);
  box-shadow:none;
}
.tabbar a{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-height:44px;padding:4px 2px;text-decoration:none;color:#6b5c52;
  font:500 .7rem/1.15 var(--sans);border-radius:0;
}
.tabbar a[aria-current="page"]{color:#5a0f1e;font-weight:600}
html[data-theme="dark"] .tabbar a{color:var(--muted)}
html[data-theme="dark"] .tabbar a[aria-current="page"]{color:var(--accent)}
.tabbar .ti{width:18px;height:18px;opacity:.85}

/* ----- SOS FAB — sits above tabbar, clear of content ----- */
.sos-fab{
  position:fixed;z-index:950;
  right:calc(12px + env(safe-area-inset-right));
  bottom:calc(var(--tabbar-h) + 8px + env(safe-area-inset-bottom));
  width:var(--sos-size);height:var(--sos-size);border-radius:50%;
  border:0;background:var(--accent);color:var(--on-accent);
  cursor:pointer;box-shadow:0 1px 3px rgba(42,26,22,.22);
  display:flex;align-items:center;justify-content:center;
}
.sos-fab .ic{width:20px;height:20px;stroke-width:2}
.sos-fab[aria-expanded="true"]{outline:3px solid var(--gold-l)}

/* ----- bottom sheets ----- */
.sheet{
  border:0;padding:0;margin:0;max-width:100%;width:100%;
  background:transparent;color:var(--ink);
}
.sheet::backdrop{background:rgba(20,8,10,.45)}
html[data-theme="dark"] .sheet::backdrop{background:rgba(0,0,0,.6)}
.sheet[open]{display:flex;align-items:flex-end;justify-content:center;position:fixed;inset:0;z-index:1200;height:100%;max-height:none;width:100%;max-width:none}
.sheet-inner{
  width:100%;max-width:520px;margin:0 auto;
  background:var(--card);border-radius:18px 18px 0 0;
  padding:16px 16px calc(18px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 28px rgba(0,0,0,.2);max-height:85dvh;overflow:auto;
}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.sheet-head h2{margin:0;font-size:1.2rem}
.sheet-close{
  width:44px;height:44px;border:0;border-radius:50%;background:var(--surface-2);
  color:var(--ink);font-size:1.4rem;cursor:pointer;line-height:1;
}
.sheet-warn{
  margin:0 0 14px;padding:12px;border-radius:12px;background:var(--warn-bg);
  color:var(--warn-ink);border:1px solid var(--warn-bd);font-size:.9rem;
}
.sheet-actions{display:flex;flex-direction:column;gap:8px}
.sos-list li{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 0;border-bottom:1px solid var(--line);
}
.sos-list li:last-child{border-bottom:0}
.sos-list .sos-label{font-weight:700}
.sos-list .sos-sub{font-size:.85rem;color:var(--muted);margin-top:2px}

/* admin-preview helpers reused lightly */
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin:14px 0}
.row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.field{margin:10px 0}
.ok{color:var(--ok-ink);font-weight:700}.bad{color:var(--err-ink);font-weight:700}
.masthead{background:var(--head-1);color:var(--head-ink);padding:calc(10px + env(safe-area-inset-top)) 0 14px;border-radius:0 0 18px 18px}
.masthead .wrap{max-width:720px;margin:0 auto;padding:0 16px}
.masthead h1{color:var(--head-ink);margin:0}
.masthead .tagline{color:var(--head-gold);font-style:italic}
.masthead .eyebrow{margin:0 0 4px;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;opacity:.85}
.skip-link{position:absolute;left:8px;top:-60px;z-index:3000;background:var(--gold-l);color:#3b0a14;padding:12px 16px;min-height:44px;border-radius:8px;font-weight:700;text-decoration:none}
.skip-link:focus{top:8px}
.banner-warn code{font-size:.9em}

@media(min-width:700px){
  .mapbox{height:260px}
  .bigrow{gap:14px}
}
/* ===== Tap / press states (fix: white flash on mobile taps) =====
   Android Chrome paints a default translucent tap-highlight box over any tapped element; on burgundy/dark
   buttons it reads as a white flash. Remove it everywhere and give every interactive element explicit
   themed backgrounds for hover / focus / active so the UA never supplies a light colour. */
html,body,a,button,input,select,textarea,label,summary,[role="button"],[role="tab"],.leaflet-container,.leaflet-container a{-webkit-tap-highlight-color:transparent}
button,input[type="search"],input[type="date"],input[type="time"]{-webkit-appearance:none;appearance:none}
button{font:inherit;color:inherit;margin:0}
.theme-switching,.theme-switching *,.theme-switching *::before,.theme-switching *::after{transition:none!important;animation:none!important}
.sheet{color-scheme:inherit}
dialog.sheet:not([open]){display:none}
/* theme toggle (on burgundy mast) */
.theme-btn,.theme-btn:hover,.theme-btn:focus{background:rgba(0,0,0,.18);color:var(--head-ink)}
.theme-btn:active{background:rgba(0,0,0,.32);color:var(--head-ink)}
/* SOS FAB */
.sos-fab,.sos-fab:hover,.sos-fab:focus{background:var(--accent);color:var(--on-accent)}
.sos-fab:active{background:var(--accent-2);color:var(--on-accent)}
/* sheet close × */
.sheet-close,.sheet-close:hover,.sheet-close:focus{background:var(--surface-2);color:var(--ink)}
.sheet-close:active{background:var(--line);color:var(--ink)}
/* generic buttons */
.btn,.btn:hover,.btn:focus{background:var(--surface);color:var(--ink)}
.btn:active{background:var(--surface-2);color:var(--ink)}
.btn-ghost,.btn-ghost:hover,.btn-ghost:focus{background:transparent}
.btn-ghost:active{background:var(--surface-2)}
.btn-primary,.btn-primary:hover,.btn-primary:focus,.btn-call,.btn-call:hover,.btn-call:focus{background:var(--accent);color:var(--on-accent)}
.btn-primary:active,.btn-call:active{background:var(--accent-2);color:var(--on-accent)}
/* subtabs */
.subtab:hover,.subtab:focus{background:transparent;color:var(--muted)}
.subtab:active{background:var(--surface);color:var(--accent)}
.subtab[aria-selected="true"],.subtab[aria-selected="true"]:hover,.subtab[aria-selected="true"]:focus,.subtab[aria-selected="true"]:active{background:var(--card);color:var(--accent)}
/* big home actions */
.bigbtn:hover,.bigbtn:focus{background:var(--card);color:var(--ink)}
.bigbtn:active{background:var(--surface-2);color:var(--ink)}
.bigbtn-primary:hover,.bigbtn-primary:focus{background:var(--accent);color:var(--on-accent)}
.bigbtn-primary:active{background:var(--accent-2);color:var(--on-accent)}
/* tab bar, list rows, text links */
.tabbar a:hover,.tabbar a:focus{background:transparent}
.tabbar a:active{background:var(--surface-2)}
a.nhood-item:hover,a.nhood-item:focus{background:var(--card)}
a.nhood-item:active{background:var(--surface-2)}
.back:active,.footlinks a:active,.brand:active{background:transparent;opacity:.75}
/* focus ring stays visible for keyboard users */
.btn:focus-visible,.bigbtn:focus-visible,.subtab:focus-visible,.sheet-close:focus-visible,.tabbar a:focus-visible,a.nhood-item:focus-visible,.back:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.theme-btn:focus-visible,.sos-fab:focus-visible{outline:3px solid var(--gold-l);outline-offset:2px}

@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;transition:none!important}
}

/* traffic layer */
.traffic-caveat{margin:0 0 12px;font-size:.8rem;line-height:1.4;color:var(--muted)}
.card-list-compact .info-card{padding:10px 12px}
.info-card-compact h3{font-size:.95rem}
#panel-traffic .mapbox{margin-bottom:12px;min-height:180px}

/* PWA install card on Home — overlays the decorative scene so Home never scrolls */
.install-card{
  position:fixed;z-index:960;left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));
  /* sits above the footer line + chip, below the warning card */
  bottom:calc(var(--tabbar-h) + var(--sos-size) + 52px + env(safe-area-inset-bottom));
  max-width:520px;margin:0 auto;display:flex;align-items:flex-start;gap:10px;
  padding:8px 6px 8px 12px;border-radius:14px;
  background:var(--surface);border:1px solid var(--gold);color:var(--ink);
  box-shadow:0 6px 18px rgba(42,26,22,.22);
}
.install-card[hidden]{display:none!important}
.install-card-ic{flex:none;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:var(--on-accent)}
.install-card-ic .ic{width:20px;height:20px}
.install-card-body{flex:1;min-width:0}
.install-card-title{margin:0;font-family:var(--serif);font-weight:700;font-size:1rem;line-height:1.25;color:var(--accent)}
.install-card-text{margin:2px 0 6px;font-size:.875rem;line-height:1.3;color:var(--muted)}
.install-card-btn{min-height:44px;padding:0 18px;border-radius:999px;border:0;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:700;cursor:pointer}
.install-card-x{flex:none;width:44px;height:44px;margin:-6px -2px 0 0;border:0;background:transparent;color:var(--muted);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.install-card-x .ic{width:20px;height:20px}
.install-card-btn:focus-visible,.install-card-x:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
html[data-theme="dark"] .install-card{background:var(--card);border-color:var(--gold-l);box-shadow:0 6px 18px rgba(0,0,0,.5)}
html[data-theme="dark"] .install-card-title{color:var(--gold-l)}
