:root{ /* Talos Concealment palette (taluscamo.com) */
  --bg:#100D0A;--panel:#1C1A17;--ink:#EDE3C8;--ink2:#D8CFB4;--muted:#A89E86;--line:#3A3428;--accent:#AD9248;--sage:#9C9B72;--field:#15120F;
  /* Heat ramp light green (least) -> dark red (most); lightness strictly decreasing L* 94 -> 22 so it
     still reads light -> dark with red-green colour blindness */
  --h1:#E1F3D6;--h2:#A9DA93;--h3:#B9B044;--h4:#D9892F;--h5:#CF5526;--h6:#A8281F;--h7:#6A0E0D}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:16px/1.45 'Public Sans',system-ui,-apple-system,sans-serif}
#map{position:fixed;inset:0;height:100dvh;width:100vw;background:#d9d4c7}
/* Muted warm-gray basemap so the bronze shading reads clearly */
#map[data-base=street] .leaflet-tile-pane{filter:grayscale(.9) sepia(.15) brightness(1.02) contrast(.95)}
#panel{position:fixed;z-index:1000;background:var(--panel);border:1px solid var(--line);color:var(--ink);overflow:auto;
  top:12px;left:12px;bottom:12px;width:360px;border-radius:14px;padding:16px 18px;box-shadow:0 8px 28px rgba(0,0,0,.35)}
#panel .bar{display:flex;align-items:center;justify-content:space-between;gap:10px}
#sheet-btn{display:none}
#panel header h1{font:700 26px/1.05 'Big Shoulders Display',sans-serif;letter-spacing:.02em;text-transform:uppercase;margin:0 0 6px}
#panel header p{margin:0 0 6px;color:var(--ink2);font-size:14px}
#panel header .sub{font:500 12px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:0 0 6px}
#panel section{border-top:1px solid var(--line);padding:12px 0}
#panel h2{font:500 12px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.12em;margin:0 0 10px;color:var(--accent)}
#panel label{display:flex;align-items:center;gap:8px;margin:6px 0;color:var(--ink);font-size:15px;cursor:pointer}
#panel input[type=radio],#panel input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);margin:0}
#panel fieldset{border:0;margin:0;padding:0}
#date{width:100%;padding:10px 12px;font-size:16px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--ink);color-scheme:dark}
#outlook{margin-top:10px}
#outlook .big{font:700 21px/1.15 'Big Shoulders Display',sans-serif;letter-spacing:.01em;margin:0 0 8px;color:var(--ink)}
#outlook p{margin:0 0 6px;color:var(--ink2);font-size:15px}
#outlook .tag{display:inline-block;font:500 11px/1.4 'IBM Plex Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid #6E5C28;border-radius:3px;padding:2px 8px;margin-bottom:8px}
.muted{color:var(--muted)!important;font-size:13px}
#legend{display:flex;align-items:center;gap:2px;margin:10px 0 2px;font-size:13px;color:var(--ink2)}
#legend i{flex:1;height:12px;border-radius:3px}
#legend i:nth-of-type(1){background:var(--h1)}#legend i:nth-of-type(2){background:var(--h2)}#legend i:nth-of-type(3){background:var(--h3)}
#legend i:nth-of-type(4){background:var(--h4)}#legend i:nth-of-type(5){background:var(--h5)}#legend i:nth-of-type(6){background:var(--h6)}
#legend i:nth-of-type(7){background:var(--h7)}
#legend span:first-child{margin-right:6px}#legend span:last-child{margin-left:6px}
#legend.off,#legend-note.off{display:none}
#legend.success i:nth-of-type(1){background:#EEF5E4}#legend.success i:nth-of-type(2){background:#CFE6B8}#legend.success i:nth-of-type(3){background:#A8D08B}
#legend.success i:nth-of-type(4){background:#7FB862}#legend.success i:nth-of-type(5){background:#57993F}#legend.success i:nth-of-type(6){background:#377A2A}
#legend.success i:nth-of-type(7){background:#1F5A1C}
#legend.crowding i:nth-of-type(1){background:#FEEDDE}#legend.crowding i:nth-of-type(2){background:#FDD0A2}#legend.crowding i:nth-of-type(3){background:#FDAE6B}#legend.crowding i:nth-of-type(4){background:#FD8D3C}#legend.crowding i:nth-of-type(5){background:#F16913}#legend.crowding i:nth-of-type(6){background:#D94801}#legend.crowding i:nth-of-type(7){background:#8C2D04}
details{border-top:1px solid var(--line);padding:12px 0 4px}
summary{cursor:pointer;color:var(--accent);font:500 12px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.12em}
details p{color:var(--ink2);font-size:14px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
#grab{display:none}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--panel);color:var(--ink)}
.leaflet-popup-content{font:14px/1.4 'Public Sans',sans-serif}
.leaflet-tooltip{background:var(--panel);color:var(--ink);border:1px solid var(--line);font:13px/1.35 'Public Sans',sans-serif}
.leaflet-tooltip:before{display:none}
.leaflet-bar a{background:var(--panel);color:var(--ink);border-color:var(--line)}
.leaflet-popup-content strong{display:block;font-size:15px;margin-bottom:2px}
/* Phone: the map fills the screen; the panel becomes a pull-up sheet. */
@media (max-width:700px){
  #panel{top:auto;left:0;right:0;bottom:0;width:auto;max-height:78dvh;border-radius:16px 16px 0 0;padding:0 16px calc(16px + env(safe-area-inset-bottom));
    transition:max-height .25s;overscroll-behavior:contain;box-shadow:0 -6px 24px rgba(0,0,0,.45)}
  #panel.min{max-height:142px;overflow:hidden}
  #grab{display:block;width:100%;height:28px;border:0;background:var(--panel);padding:0;margin:0;cursor:pointer;position:sticky;top:0;z-index:2}
  #grab span{display:block;width:56px;height:6px;border-radius:3px;background:var(--muted);margin:10px auto 0}
  #panel header{position:sticky;top:28px;z-index:2;background:var(--panel);padding-bottom:6px}
  #sheet-btn{display:flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border:0;border-radius:22px;background:var(--accent);color:#100D0A;
    font:700 16px 'Public Sans',sans-serif;cursor:pointer;flex:none}
  #sheet-btn::after{content:'';width:9px;height:9px;border:solid #100D0A;border-width:2.5px 2.5px 0 0;transform:translateY(2px) rotate(-45deg)}
  #sheet-btn[aria-expanded=true]{background:none;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--accent)}
  #sheet-btn[aria-expanded=true]::after{border-color:var(--ink);transform:translateY(-3px) rotate(135deg)}
  #panel header h1{font-size:22px}
  .leaflet-bottom.leaflet-left,.leaflet-bottom.leaflet-right{bottom:144px}
  #panel.min .tagline,#panel.min .sub{display:none}
  #panel.min > :not(#grab):not(header){visibility:hidden}
  #panel.min #mini{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:0;margin-top:4px;border:0;background:none;color:var(--ink);font:500 16px 'Public Sans',sans-serif;text-align:left;cursor:pointer}
  .chip{font:800 17px/1 'Big Shoulders Display',sans-serif;letter-spacing:.04em;text-transform:uppercase;padding:6px 10px;border-radius:6px;color:#100D0A}
  .chip.good{background:#7CC36B}.chip.fair{background:#E0B83A}.chip.slow{background:#D9652A}
  .seg span{padding:13px 4px}
  #panel label.opt{min-height:40px}
  #panel input[type=checkbox]{width:22px;height:22px}
  .leaflet-bar a{width:40px;height:40px;line-height:40px}
}
.unit-label{background:none;border:0;box-shadow:none;font:600 12px/1 'IBM Plex Mono',monospace;color:#1C1A17;
  text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 2px #fff;white-space:nowrap;pointer-events:none}
.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;background:linear-gradient(90deg,#BFDBF7,#5FA2E8,#1E5BB8);border:1px solid #0E3A7E;margin-right:6px;vertical-align:-2px}
#unit{width:100%;padding:10px 12px;font-size:16px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--ink);color-scheme:dark;min-height:44px}
#unit-info p{margin:8px 0 0;font-size:15px}
#panel a,#panel a:visited,.leaflet-popup-content a{color:#D9BE6A}
.btn{margin-top:10px;width:100%;min-height:44px;border:1px solid var(--accent);border-radius:8px;background:none;color:var(--ink);font:600 15px 'Public Sans',sans-serif;cursor:pointer}
#mini{display:none}
#unit-info h3{font:500 11px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin:12px 0 2px}
.swatch.ay{background:#3FBF6A;border-color:#1B7F3B}.swatch.closed{background:#E53935;border-color:#B71C1C}
.dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:-1px;border:2px solid #fff}.dot.edge{background:#F57C00}.dot.help{background:#C2185B}
#pred-pick select{width:100%;min-height:44px;font:inherit}.swatch.pred{background:radial-gradient(circle,#D84315,#FFC94A 60%,transparent 75%)}
.key{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0 6px 30px;font-size:13px;color:var(--ink2)}
.key i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:-6px;border:1px solid rgba(0,0,0,.3)}
.key[hidden]{display:none}
.leaflet-popup-content hr{border:0;border-top:1px solid var(--line);margin:8px 0}
.rules{margin:4px 0;padding-left:18px}
#crosshair{position:fixed;z-index:1050;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;pointer-events:none}
#crosshair::before,#crosshair::after{content:'';position:absolute;background:#F2C230;box-shadow:0 0 0 2px #100D0A}
#crosshair::before{left:20px;top:0;width:4px;height:44px}#crosshair::after{top:20px;left:0;height:4px;width:44px}
#placebar{position:fixed;z-index:1100;top:12px;left:50%;transform:translateX(-50%);width:min(92vw,420px);display:flex;flex-direction:column;gap:8px;
  padding:12px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--accent);box-shadow:0 8px 24px rgba(0,0,0,.45);color:var(--ink);font-size:15px;text-align:center}
#placebar div{display:flex;gap:8px}
#placebar button{flex:1;min-height:44px;border-radius:8px;font:700 16px 'Public Sans',sans-serif;cursor:pointer;border:1.5px solid var(--accent)}
#place-ok{background:var(--accent);color:#100D0A}#place-cancel{background:none;color:var(--ink)}
#crosshair[hidden],#placebar[hidden]{display:none}
@media (min-width:701px){#crosshair,#placebar{left:calc(50% + 190px)}}
#panel label[hidden],#species-seg[hidden]{display:none!important}
#species-seg{margin:4px 0 10px}
.swatch.water{background:#2E86DE;border-color:#0B4F94}
.swatch.burn{background:#E0A526;border-color:#A8770F}
.water-tiles{filter:saturate(1.6) contrast(1.15)}
.row2{display:flex;gap:8px}.row2 .btn{margin-top:0}
#spot-hint{margin:6px 0 0}#spot-hint:empty{display:none}
#spots{list-style:none;margin:8px 0 0;padding:0}
#spots button{display:flex;justify-content:space-between;gap:10px;width:100%;min-height:44px;padding:8px 0;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);font:15px 'Public Sans',sans-serif;text-align:left;cursor:pointer}
#spots button span{color:var(--muted);font:13px 'IBM Plex Mono',monospace}
.spot-pin span{display:block;width:28px;height:28px;margin:0 auto;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#F2C230;border:3px solid #100D0A;box-shadow:0 2px 6px rgba(0,0,0,.5)}
.spot-pop{display:flex;flex-direction:column;gap:6px;min-width:190px}
.spot-pop input{font:16px 'Public Sans',sans-serif;padding:8px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--ink)}
.spot-pop button{min-height:44px;border:1px solid var(--line);border-radius:6px;background:none;color:var(--ink);font:600 14px 'Public Sans',sans-serif;cursor:pointer}
.spot-pop .del{border-color:#8C3A2B;color:#F0A08F}

/* Simple controls: big segmented buttons and a traffic-light rating */
.seg{display:flex;gap:6px;margin-bottom:6px}
.seg label{flex:1;margin:0!important;display:block!important}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:block;text-align:center;padding:10px 4px;border:1px solid var(--line);border-radius:8px;font-weight:600;font-size:14px;color:var(--ink2);background:var(--field)}
.seg input:checked+span{background:var(--accent);border-color:var(--accent);color:#100D0A}
.seg input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}
label.opt{font-size:15px}
.rating{display:flex;align-items:center;gap:10px;margin:12px 0 8px}
.rating b{font:800 26px/1 'Big Shoulders Display',sans-serif;letter-spacing:.04em;text-transform:uppercase;padding:6px 14px;border-radius:8px;color:#100D0A}
.rating.good b{background:#7CC36B}.rating.fair b{background:#E0B83A}.rating.slow b{background:#D9652A}
.rating span{font-size:15px;color:var(--ink)}
.facts{margin:6px 0 0;padding:0;list-style:none}
.facts li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;padding:7px 0;border-top:1px solid var(--line);font-size:15px}
.facts li>span:first-child{color:var(--muted);flex:0 0 auto;max-width:100%}
.facts li>span:last-child{color:var(--ink);font-weight:600;text-align:right;flex:1 1 12em}
/* long values (safety, no-signal, patterns) wrap under their label, read left to right */
#no-signal .facts li>span:last-child,#help-box .facts li>span:last-child,#evidence .facts li>span:last-child{text-align:left}
/* 5: phone numbers are tap targets */
.facts a[href^="tel:"],.facts a[href^="sms:"]{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;margin:-8px 0}

/* Harvest trend: single series, bronze line, recessive average, text in ink tokens */
svg.trend{width:100%;height:auto;display:block;margin:2px 0 4px;overflow:visible}
svg.trend .ln{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
svg.trend .avg{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
svg.trend .end{fill:var(--accent);stroke:var(--panel);stroke-width:2}
svg.trend .lbl{fill:var(--muted);font:500 10px/1 'IBM Plex Mono',monospace}
svg.trend .lbl.strong{fill:var(--ink)}
svg.trend .hit{fill:transparent;cursor:pointer}
svg.trend .hit:hover{fill:rgba(173,146,72,.18)}
details.nums summary{color:var(--muted);font-size:13px;cursor:pointer;margin:2px 0 6px}
#harvest-box .facts li.me span{color:var(--accent);font-weight:600}

/* Where-am-I button: matches the zoom control */
.locate-btn{width:34px;height:34px;display:grid;place-items:center;background:var(--panel);color:var(--ink);border:2px solid rgba(0,0,0,.3);border-radius:4px;cursor:pointer;padding:0;background-clip:padding-box}
.locate-btn:hover{color:var(--accent)}
.locate-btn.on{color:#5FA2E8}
.measure-btn.on{color:#FFEB3B;border-color:#FFEB3B}
#map.measuring,#map.measuring .leaflet-interactive{cursor:crosshair}
@media (min-width:701px){.leaflet-bottom.leaflet-left{left:384px}}  /* desktop: keep the scale and measure bar clear of the side panel */
.measure-bar{display:flex;gap:6px;align-items:center;background:var(--panel);color:var(--ink);border:2px solid rgba(0,0,0,.3);border-radius:6px;padding:6px 8px;font:600 13px/1.2 'Public Sans',sans-serif;background-clip:padding-box}
.measure-bar[hidden]{display:none}
.measure-bar .mb-total{min-width:120px}
.measure-bar button{font:inherit;font-weight:500;background:transparent;color:var(--ink);border:1px solid rgba(255,255,255,.25);border-radius:4px;padding:4px 8px;cursor:pointer}
.measure-bar button:disabled{opacity:.4}
.measure-bar .mb-trail.on{background:#FF9800;color:#1C1A17;border-color:#FF9800}
.dir-bar{background:var(--panel);color:var(--ink);border:2px solid rgba(0,0,0,.3);border-radius:10px;padding:10px 12px;font:13px/1.35 'Public Sans',sans-serif;width:340px;max-width:calc(100vw - 24px);background-clip:padding-box;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.dir-bar[hidden],.dir-bar [hidden]{display:none}
.dir-bar button{font:inherit;background:transparent;color:var(--ink);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:4px 10px;cursor:pointer;min-height:40px}
.dir-bar button:disabled{opacity:.4}
.db-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.db-to{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-from{display:flex;align-items:center;gap:8px;background:var(--field);border:1.5px solid var(--accent);border-radius:8px;padding:0 4px 0 10px}
.db-from span{font:600 11px 'Public Sans',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.db-from input{flex:1;min-width:0;min-height:46px;border:0;background:transparent;color:var(--ink);font:16px 'Public Sans',sans-serif;outline:none}
.db-from:focus-within{box-shadow:0 0 0 3px rgba(173,146,72,.35)}
.db-sugg{list-style:none;margin:6px 0 0;padding:0;max-height:38vh;overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--field)}
.db-sugg li.muted{padding:10px 12px}
.db-sugg button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;min-height:46px;padding:8px 12px;font-size:14px}
.db-sugg li:last-child button{border-bottom:0}.db-sugg button:hover,.db-sugg button:focus{background:rgba(173,146,72,.18)}
.db-chips{display:flex;gap:8px;margin-top:8px}.db-chips button{flex:1;min-height:44px;border-color:#1976D2;color:#8EC5FF;font-weight:600}
.db-recent{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}.db-recent:empty{display:none}
.db-recent .muted{font-size:11px;text-transform:uppercase;letter-spacing:.06em;width:100%}
.db-recent button{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.db-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.db-sum{flex:1 1 140px;font-size:14px}
.db-msg{margin:8px 0 0}.db-msg:empty{display:none}
.db-list{max-height:34vh;overflow:auto;margin:8px 0 4px;padding-left:20px}.db-list li{margin:3px 0}
.db-foot{font-size:11px;margin-top:6px}.db-foot a{color:#8EC5FF}
@media (max-width:700px){.dir-bar{position:fixed;top:calc(10px + env(safe-area-inset-top));left:10px;right:10px;width:auto;max-width:none}}
.spot-pop .dir-go{border-color:#1976D2;color:#8EC5FF}
.measure-tip{background:#1C1A17;color:#FFEB3B;border:0;font:600 12px/1 'Public Sans',sans-serif;padding:3px 6px}
.measure-tip::before{display:none}
.scale-bar{background:rgba(28,26,23,.94);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:6px 14px 9px 10px;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.sb-labels{position:relative;height:16px;font:600 12px/1 'Public Sans',sans-serif}
.sb-labels span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.sb-labels span:first-child{left:0;transform:none}
.sb-labels span:last-child{transform:translateX(-70%)}
.sb-bar{position:relative;height:9px;border:2px solid #F4EFE6;box-sizing:content-box;background:#1C1A17}
.sb-bar i{position:absolute;top:0;bottom:0;width:25%;background:transparent}
.sb-bar i:nth-child(odd){background:#F4EFE6}
.sb-bar::after{content:'';position:absolute;left:50%;top:-6px;height:6px;border-left:2px solid #F4EFE6}
.locate-btn.busy svg{animation:locpulse 1s ease-in-out infinite}
@keyframes locpulse{50%{opacity:.35}}
@media (max-width:700px){.locate-btn{width:44px;height:44px}.measure-bar{font-size:12px;padding:5px 6px}.measure-bar .mb-total{min-width:0;flex-basis:100%}.measure-bar button{min-height:44px;padding:0 12px}}

.file-btn{display:flex!important;justify-content:center;align-items:center;margin-top:8px!important;cursor:pointer}
#unit-info .row2{margin-top:10px}

/* Offline notice */
.offline-chip{position:fixed;z-index:1200;top:12px;left:50%;transform:translateX(-50%);background:#2F2A1F;color:var(--ink);border:1px solid var(--accent);border-radius:999px;padding:6px 14px;font:500 13px 'Public Sans',sans-serif;box-shadow:0 4px 14px rgba(0,0,0,.35)}
.offline-chip[hidden]{display:none}
@media (min-width:701px){.offline-chip{left:calc(50% + 190px)}}
.linkish{background:none;border:0;color:var(--muted);text-decoration:underline;font:13px 'Public Sans',sans-serif;min-height:44px;padding:0;cursor:pointer}
svg.trend .ev{font-size:10px}
.ev-key{margin:0 0 4px}
/* Map legend: lives on the map, so it stays with you at any zoom (bottom right on desktop, top left on phone) */
#legend{display:none} /* the panel keeps the note; the colours are in the map legend */
.map-legend{background:rgba(28,26,23,.94);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:6px 10px 8px;
  max-width:230px;max-height:52vh;overflow:auto;font:13px/1.35 'Public Sans',sans-serif;box-shadow:0 2px 10px rgba(0,0,0,.4)}
.map-legend[hidden]{display:none}
.ml-toggle{all:unset;cursor:pointer;display:block;min-height:44px;line-height:44px;font:700 12px 'Public Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ml-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.map-legend h4{margin:8px 0 4px;font:600 12px 'Public Sans',sans-serif;color:var(--ink2)}
.ml-ramp{display:flex;gap:2px}.ml-ramp i{flex:1;height:11px;border-radius:2px}
.ml-ends{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin-top:2px}
.ml-row{display:flex;align-items:center;gap:7px;margin:3px 0}
.ml-sq{display:inline-block;flex:none;width:13px;height:13px;border-radius:2px;border:1.5px solid;box-shadow:0 0 0 1px rgba(237,227,200,.5)}
.ml-dot{display:inline-block;flex:none;width:11px;height:11px;border-radius:50%;border:2px solid #fff}
.ml-line{display:inline-block;flex:none;width:16px;height:0;border-top:3px solid #6D4C41}
.ml-line.gold{border-top:4px solid #AD9248}.ml-line.water{border-top:3px dashed #2E86DE}.ml-line.road{border-top:3px solid #8D6E63}
@media (max-width:700px){.map-legend{max-width:180px;max-height:40vh;font-size:12px}}
/* Print: the map as on screen with legend and a header line; everything else hidden */
.print-head{display:none}
body.printing #map{position:fixed;left:0;top:44px;width:1000px;height:690px}
@media print{
  @page{size:landscape;margin:8mm}
  html,body{background:#fff!important;color:#000}
  body>*:not(#map):not(.print-head){display:none!important}
  .print-head{display:block!important;position:fixed;top:0;left:0;width:1000px;font:14px/1.3 'Public Sans',sans-serif;color:#000}
  .print-head span{display:block;font-size:10px;color:#444}
  #map{position:fixed!important;top:44px!important;left:0!important;width:1000px!important;height:690px!important}
  .leaflet-control-zoom,.locate-btn,.leaflet-control-locate,.measure-bar,.db-top button,.db-foot,.db-head button,.db-form,.db-msg{display:none!important}
  .map-legend{background:#fff!important;color:#000!important;border-color:#999!important;box-shadow:none!important;max-height:none!important}
  .scale-bar{background:#fff!important;color:#000!important;border-color:#999!important;box-shadow:none!important}
  .sb-bar{border-color:#000!important;background:#fff!important}.sb-bar i:nth-child(odd){background:#000!important}.sb-bar::after{border-color:#000!important}
  .map-legend h4,.ml-ends{color:#333!important}.ml-toggle{color:#000!important}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
/* Season calendar: general (blue) and controlled (amber) hunts as bars on a month axis; white line = your date.
   Colours validated for colour-blind separation on the panel surface; groups are also labelled in text. */
.sn-game{display:flex;gap:6px;margin:6px 0}
.sn-game button{flex:1;min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink2);font:600 14px 'Public Sans',sans-serif;cursor:pointer}
.sn-game button[aria-checked=true]{border-color:var(--accent);color:var(--ink);background:rgba(173,146,72,.18)}
.sn-filter{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.sn-chip{min-height:40px;padding:4px 12px;border:1px solid var(--line);border-radius:20px;background:none;color:var(--ink2);font:500 13px 'Public Sans',sans-serif;cursor:pointer}
.sn-chip.on{border-color:var(--accent);color:var(--ink);background:rgba(173,146,72,.18)}
.sn-today{margin:8px 0 2px;font-size:14px}
.sn-axis{position:relative;height:30px;margin-top:4px;border-bottom:1px solid var(--line);font:500 10px 'IBM Plex Mono',monospace;color:var(--muted)}
.sn-axis span{position:absolute;bottom:3px;padding-left:3px;border-left:1px solid var(--line);line-height:1}
.sn-axis .sn-you{position:absolute;top:0;transform:translateX(-50%);color:#fff;font:600 10px 'Public Sans',sans-serif;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}
.sn-group{display:flex;align-items:center;gap:6px;margin:12px 0 0;font:600 12px 'Public Sans',sans-serif;color:var(--ink2)}
.sw.general,.sw.controlled{display:inline-block;width:14px;height:8px;border-radius:4px}
.sw.general,.sn-bar.general{background:#4A90D9}.sw.controlled,.sn-bar.controlled{background:#C0801C}
.sn-list{list-style:none;margin:0;padding:0}
.sn-row{border-top:1px solid var(--line)}
.sn-row.on{box-shadow:inset 3px 0 0 #fff}.sn-row.on .sn-head{padding-left:9px}
.sn-head{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;min-height:44px;padding:8px 0;background:none;border:0;color:var(--ink);text-align:left;font:14px/1.3 'Public Sans',sans-serif;cursor:pointer}
.sn-when{color:var(--ink2);font:500 12px 'IBM Plex Mono',monospace;white-space:nowrap;align-self:start;padding-top:2px}
.sn-track{grid-column:1/-1;position:relative;height:10px;margin-top:5px;border-radius:5px;background:rgba(237,227,200,.06)}
.sn-bar{position:absolute;top:1px;height:8px;border-radius:4px}
.sn-bar.clip-l{border-top-left-radius:0;border-bottom-left-radius:0}.sn-bar.clip-r{border-top-right-radius:0;border-bottom-right-radius:0}
.sn-date{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 0 1px #100D0A}
.sn-odds{grid-column:1/-1;font-size:12px;color:var(--ink2);margin-top:2px}
.sn-more{padding:0 0 10px}.sn-more .facts li{font-size:13px}
.odds{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}
.odds th,.odds td{padding:5px 4px;text-align:right;border-top:1px solid var(--line)}.odds th:first-child,.odds td:first-child{text-align:left}
.odds th{color:var(--muted);font-weight:500}
/* Offline pack */
.pk-saved{margin:6px 0;font-size:14px;color:var(--ink)}
.pk-saved::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#4CAF50;margin-right:6px;vertical-align:1px}
.pk-opt{display:flex!important;gap:8px;align-items:flex-start;margin:6px 0;font-size:14px;line-height:1.35;cursor:pointer}
.pk-opt input{margin-top:3px;width:18px;height:18px;flex:none}
.pk-bar{height:8px;border-radius:4px;background:rgba(237,227,200,.1);overflow:hidden;margin:8px 0 2px}
.pk-bar[hidden]{display:none}.pk-bar span{display:block;height:100%;width:0;background:var(--accent);transition:width .3s}
a.tel911{color:#FF8A80}
.exp-label{margin:0 0 4px;font:500 11px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.rule-warn{margin:6px 0;padding:6px 8px;border-left:3px solid #AB47BC;background:rgba(142,36,170,.12);font-size:13px;line-height:1.35}
.rule-list{list-style:none;margin:6px 0;padding:0}.rule-list li{padding:8px 10px;margin:6px 0;border-left:3px solid #AB47BC;background:rgba(142,36,170,.10);font-size:14px;line-height:1.4}
.rule-list b{display:block;color:var(--ink)}
/* Glove pass: 44 px map controls (leaflet.css's .leaflet-touch rule otherwise wins), safe areas, scale bar clear of the credits */
.leaflet-touch .leaflet-bar a,.leaflet-bar a{width:44px;height:44px;line-height:44px;font-size:22px}
.leaflet-top{top:env(safe-area-inset-top)}
.offline-chip{top:calc(12px + env(safe-area-inset-top))}
#placebar{top:calc(12px + env(safe-area-inset-top))}
body:has(#placebar:not([hidden])) .offline-chip{display:none}
@media (max-width:700px){.scale-bar{margin-bottom:22px!important}}
.gate-pin span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;border:2px solid #fff;color:#fff;font:700 12px/1 'Public Sans',sans-serif;box-shadow:0 1px 3px rgba(0,0,0,.5)}
.load-failed{outline:2px solid #E57373;outline-offset:2px;border-radius:4px}
.toast{position:fixed;z-index:1500;left:50%;transform:translateX(-50%);bottom:calc(180px + env(safe-area-inset-bottom));display:flex;gap:12px;align-items:center;
  background:#2F2A1F;color:var(--ink);border:1px solid var(--accent);border-radius:12px;padding:8px 8px 8px 14px;font:500 14px 'Public Sans',sans-serif;box-shadow:0 6px 18px rgba(0,0,0,.45);max-width:92vw}
.toast[hidden]{display:none}.toast button{min-height:40px;padding:4px 14px;border-radius:8px;border:0;background:var(--accent);color:#100D0A;font:700 14px 'Public Sans',sans-serif;cursor:pointer}
@media (min-width:701px){.toast{bottom:32px;left:calc(50% + 190px)}}
.spot-pop .del{margin-top:14px}
.me-chip{position:fixed;z-index:1001;left:50%;transform:translateX(-50%);top:calc(56px + env(safe-area-inset-top));background:#1E5BB8;color:#fff;border-radius:999px;padding:5px 12px;font:600 13px 'Public Sans',sans-serif;box-shadow:0 3px 10px rgba(0,0,0,.4)}
.me-chip[hidden]{display:none}
@media (min-width:701px){.me-chip{left:calc(50% + 190px)}}
.mb-profile{flex-basis:100%;display:flex;align-items:center;gap:8px;margin-top:4px}.mb-profile svg{flex:1;height:46px;min-width:0}
.mb-profile span{font:500 11px 'IBM Plex Mono',monospace;color:var(--muted);white-space:nowrap}
.mb-profile[hidden]{display:none}
.measure-bar{flex-wrap:wrap}
.pk-saved.incomplete::before{background:#FFB300}.warn{color:#FFB300}
.pack-ul{list-style:none;margin:6px 0;padding:0}.pack-ul li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.pack-ul .linkish{min-height:40px}
.seg span small{display:block;font-size:11px;font-weight:500;line-height:1.2}
.wx-alert span:first-child{color:#FFB74D!important;font-weight:700}.wx-alert.warn span:first-child{color:#FF5252!important}
.wx-alerts{border-left:3px solid #FF5252;padding-left:8px}
.spot-pop .wx-go{margin-top:6px}.pin-wx{max-width:240px;font-size:13px}
.finder-row{display:flex;gap:8px;margin:6px 0}.finder-row label{flex:1;display:flex!important;flex-direction:column;align-items:stretch!important;gap:4px;font-size:13px;color:var(--muted)}
.finder-row select{min-height:44px;font-size:15px}
.finder-list .linkish{min-height:36px;font-weight:700}
.first-hint{position:fixed;z-index:1001;left:50%;transform:translateX(-50%);top:calc(12px + env(safe-area-inset-top));max-width:min(90vw,360px);background:var(--accent);color:#100D0A;border-radius:12px;padding:10px 14px;font:600 14px/1.35 'Public Sans',sans-serif;box-shadow:0 6px 18px rgba(0,0,0,.4);cursor:pointer}
.first-hint[hidden]{display:none}
@media (min-width:701px){.first-hint{left:calc(50% + 190px)}}
@media (max-width:700px){#panel header{position:static}}
/* Keyboard focus is always visible; motion is reduced when the phone asks for it */
:focus-visible{outline:3px solid #FFD54F!important;outline-offset:2px}
.db-from:focus-within{outline:3px solid #FFD54F}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
.jump{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.jump button{min-height:40px;padding:4px 12px;border-radius:20px;border:1px solid var(--line);background:var(--field);color:var(--ink);font:600 13px 'Public Sans',sans-serif;cursor:pointer}
details.more{margin:8px 0;border-top:1px solid var(--line)}details.more>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;color:var(--ink2);font-weight:600;list-style:none}
details.more>summary::-webkit-details-marker{display:none}details.more>summary::after{content:'\25B8';margin-left:auto;padding-left:8px}details.more[open]>summary::after{content:'\25BE'}
#unit-info [id]{scroll-margin-top:70px}
.pop-age{display:block;margin-top:6px;font-size:11px}
/* Hunter input: feedback survey and Signal check */
#panel .fb-cta{margin:4px 0 10px;padding:10px 12px;border:1px dashed var(--line);border-radius:8px}
.fb-cta p{margin:0;color:var(--ink2);font-size:14px}.fb-cta .btn{margin-top:8px}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
dialog#fb,dialog#sig{color-scheme:dark;width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;box-sizing:border-box;padding:16px 16px calc(16px + env(safe-area-inset-bottom));
  border:1px solid var(--accent);border-radius:12px;background:var(--panel);color:var(--ink);box-shadow:0 12px 40px rgba(0,0,0,.6)}
dialog#fb::backdrop,dialog#sig::backdrop{background:rgba(0,0,0,.6)}
dialog h2{margin:0 0 6px;font:700 22px/1.15 'Big Shoulders Display',sans-serif}
dialog p{margin:0 0 10px;color:var(--ink2);font-size:15px}
#fb fieldset{border:1px solid var(--line);border-radius:8px;margin:0 0 12px;padding:6px 10px 8px}
#fb legend{padding:0 4px;color:var(--ink);font-weight:600;font-size:15px}
#fb fieldset>label{display:flex;align-items:center;gap:10px;min-height:44px;font-size:15px;cursor:pointer}
#fb input[type=checkbox],#fb input[type=radio]{width:20px;height:20px;accent-color:var(--accent);flex:none}
.fb-text{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;font-weight:600;font-size:15px}
.fb-text textarea,.fb-text input{font:16px 'Public Sans',sans-serif;padding:10px 12px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--ink);color-scheme:dark;font-weight:400;resize:vertical}
#fb .fb-scale{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}  /* 0–5 then 6–10: ~48 px targets on a phone */
#fb .fb-scale legend{grid-column:1/-1;font-size:14px;margin-bottom:6px}
#fb .fb-scale label{min-height:44px;justify-content:center;position:relative}
#fb .fb-scale input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
#fb .fb-scale span{display:grid;place-items:center;width:100%;min-height:44px;border:1px solid var(--line);border-radius:6px;background:var(--field);font-weight:600;font-size:14px}
#fb .fb-scale input:checked+span{background:var(--accent);color:#100D0A;border-color:var(--accent)}
#fb .fb-scale input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}
.btn.primary{background:var(--accent);color:#100D0A;border-color:var(--accent)}
.btn:disabled{opacity:.55;cursor:default}
#fb-status:empty{display:none}#fb-status{margin-top:8px;color:var(--ink)}
.sig-carriers{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:6px}.sig-carriers .btn{margin-top:0}
.signal-btn svg{display:block}.signal-btn.busy,.signal-btn:disabled{opacity:.6;cursor:progress}
/* Site moved: banner on the old address (public/move.js); controls under it move down while it shows */
.moved-bar{position:fixed;z-index:2000;top:calc(8px + env(safe-area-inset-top));left:8px;right:8px;max-width:520px;margin:0 auto;padding:10px 12px;border:1px solid var(--accent);border-radius:12px;background:var(--panel);color:var(--ink);box-shadow:0 8px 24px rgba(0,0,0,.5);max-height:60vh;overflow:auto}
.moved-bar p{margin:0 0 6px;font-size:15px}.moved-bar .muted{font-size:13px}.moved-bar ol{margin:0 0 6px;padding-left:20px;font-size:14px;color:var(--ink2)}
.moved-bar .row2 .btn{margin-top:4px}.moved-bar .btn:disabled{opacity:.6}
.move-code{width:100%;box-sizing:border-box;margin-top:8px;height:64px;font:12px 'IBM Plex Mono',monospace;background:var(--field);color:var(--ink);border:1px solid var(--line);border-radius:6px}
body.has-moved-bar .leaflet-top{margin-top:var(--moved-h,150px)}body.has-moved-bar #placebar,body.has-moved-bar .offline-chip,body.has-moved-bar .first-hint{margin-top:var(--moved-h,150px)}
