/* Motorcycle Pothole Reporter: road-sign safety, biker grit. */
:root{
  --asphalt:#141516; --asphalt-2:#22252a; --bg:#e9e7e2; --surface:#ffffff; --ink:#17181a; --muted:#5d6267;
  --line:#d2cfc7; --sign:#f5c518; --sign-ink:#141516; --flame:#ff6b1a; --flame-ink:#141516; --ok:#1f7a4a; --warn:#b3261e; --field:#f5f4f0;
  --head:"Oswald","Arial Narrow",Impact,sans-serif;
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#0f1011;--surface:#1b1d20;--ink:#f1efe9;--muted:#a3a8ad;--line:#33373c;--field:#141618;--ok:#5cc58d;--warn:#ff8a80}}
:root[data-theme="dark"]{--bg:#0f1011;--surface:#1b1d20;--ink:#f1efe9;--muted:#a3a8ad;--line:#33373c;--field:#141618;--ok:#5cc58d;--warn:#ff8a80}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Overpass",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:17px;line-height:1.45}
.wrap{max-width:560px;margin:0 auto;padding:16px 16px 48px}

header.road,.road.stats{background:radial-gradient(120% 90% at 100% 0,#2a2d33 0,transparent 60%),var(--asphalt);color:#f4f3ef;margin:-16px -16px 0;padding:22px 18px 40px;position:relative;overflow:hidden}
header.road::after,.road.stats::after{content:"";position:absolute;left:0;right:0;bottom:0;height:14px;background:repeating-linear-gradient(-45deg,var(--sign) 0 14px,var(--asphalt) 14px 28px)}
header.road .kicker{margin:0;font-family:var(--head);font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;color:var(--flame)}
header.road h1{margin:.15rem 0 0;font-family:var(--head);font-weight:700;text-transform:uppercase;font-size:2.15rem;line-height:.98;letter-spacing:.01em}
header.road h1 span{display:block;color:var(--sign)}
header.road .lede,.road .lede{margin:0;color:#c4c7cb;font-size:.95rem;max-width:38ch}
.counter{display:flex;align-items:center;gap:12px;margin-top:10px;padding:10px 14px;border:2px solid var(--sign);border-radius:8px;background:rgba(0,0,0,.35);width:fit-content;max-width:100%}
.counter b{font-family:var(--head);font-weight:700;font-size:2rem;line-height:1;color:var(--sign);font-variant-numeric:tabular-nums}
.counter span{font-family:var(--head);font-weight:500;text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;line-height:1.2;color:#e7e5df}
.counter small{display:block;color:var(--flame);letter-spacing:.04em}

.road.stats{margin:18px -16px 0}
.road.stats::before{content:"";position:absolute;left:0;right:0;top:0;height:14px;background:repeating-linear-gradient(-45deg,var(--sign) 0 14px,var(--asphalt) 14px 28px)}
.road.stats{padding-top:32px}
header.road{padding-bottom:30px}
.steps{margin:4px 0 10px;padding-left:1.3em}
.steps li{margin:4px 0}
.mark-zone{display:flex;flex-direction:column;align-items:center;padding:26px 0 6px}
.diamond{width:260px;height:258px;border:none;background:none;padding:0;cursor:pointer;position:relative;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.diamond img{display:block;width:100%;height:100%;filter:drop-shadow(0 10px 18px rgba(0,0,0,.35));transition:transform .15s;user-select:none;-webkit-user-drag:none}
.diamond:active img{transform:scale(.95)}
.diamond:focus-visible{outline:3px solid var(--ink);outline-offset:6px;border-radius:12px}
.diamond[aria-busy="true"] img{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(.93)}}
@media (prefers-reduced-motion:reduce){.diamond[aria-busy="true"] img{animation:none}}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.status{min-height:1.5em;margin-top:6px;text-align:center;color:var(--muted);font-size:.95rem;max-width:36ch}
.status.err{color:var(--warn)}
.status.good{color:var(--ok);font-weight:700}

section.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px;margin-top:18px}
section.card h2{margin:0 0 10px;font-family:var(--head);text-transform:uppercase;letter-spacing:.03em;font-size:1.3rem;font-weight:700;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
section.card h2 .count{font-size:.9rem;color:var(--muted);font-weight:600}
label{display:block;font-weight:600;font-size:.88rem;margin:10px 0 4px}
input,select{width:100%;font:inherit;font-size:16px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;padding:9px 11px}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--sign);outline-offset:1px}
.hint{font-size:.83rem;color:var(--muted);margin:6px 0 0}
.row{display:grid;grid-template-columns:1fr 1fr;gap:8px}

ol.queue{list-style:none;margin:0;padding:0;counter-reset:q}
ol.queue>li{border-top:1px solid var(--line);padding:12px 0;counter-increment:q}
ol.queue>li:first-child{border-top:none;padding-top:2px}
.qhead{display:flex;gap:10px;align-items:flex-start}
.qnum{flex:none;width:28px;height:28px;background:var(--sign);color:var(--sign-ink);font-weight:900;display:grid;place-items:center;transform:rotate(45deg);border-radius:4px;margin:4px 4px 0}
.qnum b{transform:rotate(-45deg);font-size:.85rem}
.qmeta{flex:1;min-width:0}
.qmeta strong{display:block;font-size:1rem}
.qmeta .sub{font-size:.85rem;color:var(--muted);font-variant-numeric:tabular-nums}
.qmeta a{color:inherit}
.mini{font:inherit;font-size:.85rem;font-weight:700;background:none;border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:6px 9px;cursor:pointer}
.qedit{margin-top:8px;padding-left:42px}
.qedit[hidden]{display:none}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{font:inherit;font-size:.85rem;font-weight:600;padding:7px 8px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--ink);cursor:pointer}
.chip[aria-pressed="true"]{background:var(--sign);color:var(--sign-ink);border-color:var(--sign-ink)}
.empty{color:var(--muted);font-size:.95rem;margin:0}

.btn{font:inherit;font-family:var(--head);text-transform:uppercase;letter-spacing:.05em;font-weight:600;font-size:1.05rem;padding:15px;border-radius:8px;border:2px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;text-align:center;text-decoration:none;display:block;width:100%}
.btn.primary{background:var(--flame);border-color:var(--flame);color:var(--flame-ink)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.actions{display:grid;gap:10px;margin-top:14px}
.sendmsg{margin:10px 0 0;font-size:.92rem}
.sendmsg.err{color:var(--warn)}
.sendmsg.good{color:var(--ok);font-weight:700}

ul.history{list-style:none;margin:0;padding:0}
ul.history li{border-top:1px solid var(--line);padding:10px 0;font-size:.92rem}
ul.history li:first-child{border-top:none;padding-top:0}
ul.history .sub{color:var(--muted);font-size:.83rem}
details summary{cursor:pointer;font-family:var(--head);text-transform:uppercase;letter-spacing:.03em;font-weight:700;font-size:1.25rem}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:8px;font-weight:600;opacity:0;transition:opacity .2s;pointer-events:none;max-width:90vw;text-align:center}
.toast.show{opacity:1}
.auth{display:inline-block;font-size:.72rem;font-weight:800;padding:2px 7px;border-radius:4px;margin-left:6px;vertical-align:2px}
.auth.vicroads{background:#1d4f91;color:#fff}
.auth.council{background:var(--ok);color:#fff}
.auth.check{background:var(--warn);color:#fff}
.why{font-size:.8rem;color:var(--muted);margin-top:2px}
.why.warn{color:var(--warn)}
.sendrow{display:grid;gap:10px}
.footnote{font-size:.83rem;color:var(--muted);margin:18px 0 0;text-align:center}
.confirm{margin-top:14px;padding:14px;border:2px solid var(--sign);border-radius:8px;background:var(--field)}
.confirm p{margin:0 0 10px;font-weight:700}
.confirm .btn{padding:12px;font-size:.95rem}
.span2{grid-column:1/-1}
#councilBtns{margin-top:0}
#councilBtns:empty{display:none}
.sub-h{font-size:.95rem;margin:16px 0 0}
ol.queue>li{touch-action:pan-y;transition:transform .18s,opacity .18s;background:var(--surface)}
ol.queue>li.swiping{transition:none}
.btn.danger{border-color:var(--warn);color:var(--warn)}
.mini.danger{color:var(--warn)}
.clear-sent{margin-top:10px}
.swipe-hint{text-align:center}
.toast.act{pointer-events:auto}
.toast button{font:inherit;font-weight:800;background:none;border:none;color:var(--sign);cursor:pointer;padding:4px 6px;margin-left:6px;text-decoration:underline}
section.card{border-top:4px solid var(--sign)}
label.check{display:flex;gap:10px;align-items:center;font-size:.95rem;margin-top:16px}
label.check input{width:22px;height:22px;flex:none;accent-color:var(--flame)}
.map-range{margin:10px 0}
.map{height:360px;border-radius:8px;border:1px solid var(--line);background:var(--field);overflow:hidden;z-index:0}
.map-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.dot{display:inline-block;width:11px;height:11px;border-radius:50%;border:2px solid #141516;margin-right:-6px;vertical-align:-1px}
.dot.new{background:#ff6b1a}.dot.mid{background:#f5c518}.dot.old{background:#9aa0a6}
#mapCount{margin-left:auto}
.leaflet-container{font-family:"Overpass",sans-serif}
.marker-cluster div{font-family:var(--head);font-weight:700}
.map .marker-cluster-small,.map .marker-cluster-medium,.map .marker-cluster-large{background:rgba(245,197,24,.45)}
.map .marker-cluster-small div,.map .marker-cluster-medium div,.map .marker-cluster-large div{background:#f5c518;color:#141516;border:2px solid #141516}
.map .marker-cluster-large div{background:#ff6b1a}
#councilSearch{margin:10px 0 4px;box-sizing:border-box;-webkit-appearance:none;appearance:none}
ul.councils{list-style:none;margin:0;padding:0}
ul.councils li{border-top:1px solid var(--line);padding:10px 0}
ul.councils li:first-child{border-top:none}
.crow{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.crow strong{font-size:.98rem}
.cemail{font-size:.88rem;word-break:break-all;margin-top:2px}
.cemail.none{color:var(--muted);word-break:normal}
.clinks{display:flex;gap:14px;font-size:.85rem;margin-top:2px}
.clinks a{color:inherit}
.cedit{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.cedit input{flex:1 1 200px}
.tag{display:inline-block;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:4px;background:var(--sign);color:var(--sign-ink);vertical-align:2px}
.tag.mine{background:var(--flame)}
.pop strong{font-family:var(--head);text-transform:uppercase;letter-spacing:.03em;font-size:1rem}
.pop-tally{font-size:.82rem;color:#444;margin:4px 0 8px}
.pop-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.pop-btn{font:inherit;cursor:pointer;border:2px solid #141516;border-radius:6px;background:#fff;color:#141516;padding:6px 4px;display:flex;flex-direction:column;align-items:center;line-height:1.1}
.pop-btn b{font-family:var(--head);text-transform:uppercase;font-weight:600;font-size:.86rem;letter-spacing:.02em}
.pop-btn small{font-size:.66rem;margin-top:2px;color:#555}
.pop-btn.gone[aria-pressed="true"]{background:#1f7a4a;border-color:#1f7a4a;color:#fff}
.pop-btn.fixed[aria-pressed="true"]{background:#f5c518}
.pop-btn.there[aria-pressed="true"]{background:#ff6b1a}
.pop-btn[aria-pressed="true"] small{color:inherit}
.pop-note{font-size:.8rem;font-weight:700;margin-top:6px;min-height:1em}
.tally{margin-top:16px;display:flex;flex-direction:column;align-items:flex-start}
.counter b{min-width:2.2ch;text-align:center}
.counter.fixed{border-color:#5cc58d}
.counter.fixed b{color:#5cc58d}
.counter.fixed small{color:#a9dcc0}
.worst{margin-top:10px;padding:10px 14px;border:2px solid var(--flame);border-radius:8px;background:rgba(0,0,0,.35);max-width:100%}
.worst-h{font-family:var(--head);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--flame);font-size:.85rem}
.worst ol{margin:6px 0 4px;padding-left:1.4em;font-family:var(--head);font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:.95rem}
.worst li{padding:1px 0}
.worst li b{color:var(--sign);margin-left:10px;font-variant-numeric:tabular-nums}
.worst small{display:block;color:#a3a8ad;font-size:.72rem}
.worst-vr{margin:10px 0 0;padding-top:8px;border-top:1px solid #3a3e44;font-family:var(--head);font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:.95rem}
.worst-vr small{font-family:"Overpass",system-ui,sans-serif;font-weight:400;text-transform:none;letter-spacing:0;margin-top:2px}
.worst-vr b{color:var(--sign);margin-left:10px;font-variant-numeric:tabular-nums}
.qbtns{display:flex;flex-direction:column;gap:4px;flex:none}
.mini.ok{color:var(--ok);border-color:var(--ok)}
.tag.ok{background:var(--ok);color:#fff}
.hitem{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;font-size:.88rem}
.tally .counter,.tally .worst{width:100%;max-width:340px}
.share-row{display:flex;gap:8px;margin-top:14px;max-width:340px}
.share-row .btn{padding:11px 10px;font-size:.98rem}
.btn.share{background:var(--sign);border-color:var(--sign);color:var(--sign-ink);flex:1.6}
.btn.ghost{border-color:#5d6267;color:#f4f3ef;flex:1}
.qr{margin-top:10px;padding:14px;border-radius:8px;background:#fff;color:#141516;max-width:340px;text-align:center}
.qr img{display:block;margin:0 auto;width:180px;height:180px}
.qr p{margin:6px 0 8px;font-size:.85rem;font-weight:700}
.qr input{font-size:.8rem;text-align:center;background:#f5f4f0;color:#141516;border-color:#d2cfc7}
.qr[hidden]{display:none}
.qr-h{margin:0 0 8px!important;font-family:var(--head);text-transform:uppercase;letter-spacing:.05em;font-size:1rem!important}
.share-links{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}
.share-links a,.share-links button{font:inherit;font-size:.82rem;font-weight:800;padding:9px 4px;border-radius:6px;border:2px solid #141516;background:#fff;color:#141516;text-decoration:none;cursor:pointer;text-align:center}
.share-links #shWhatsapp{background:#25d366;border-color:#25d366;color:#0b2e17}
.share-links #shFacebook{background:#1877f2;border-color:#1877f2;color:#fff}
.share-links #shCopy{background:#f5c518;border-color:#f5c518}
.qr img{margin-top:12px!important}
.speedo{display:flex;flex-direction:column;align-items:center;margin-top:12px;font:inherit;color:var(--ink);background:none;border:none;padding:0;cursor:pointer}
.speedo:disabled{cursor:default}
.speedo-n{font-family:var(--head);font-weight:700;font-size:3.4rem;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.speedo-n small{font-size:1.1rem;font-weight:600;margin-left:6px;color:var(--muted);letter-spacing:.06em}
.speedo-note{font-size:.75rem;color:var(--muted);margin-top:2px;text-align:center}
.speedo.stale .speedo-n{color:var(--muted)}
.awake{display:inline-flex;align-items:center;gap:8px;margin-top:10px;font:inherit;font-size:.85rem;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer}
.awake[hidden]{display:none}
.awake-dot{width:9px;height:9px;border-radius:50%;background:var(--muted)}
.awake.on{color:var(--ink);border-color:var(--ok)}
.awake.on .awake-dot{background:#2fbf71;box-shadow:0 0 0 3px rgba(47,191,113,.25)}
.awake:disabled{cursor:default;opacity:.7}

/* One-tap setup guide */
.guide-h{font-weight:800;margin:12px 0 4px}
.guide-done{background:var(--ok);color:#fff;font-weight:700;padding:8px 12px;border-radius:8px}
.guide{list-style:none;counter-reset:g;margin:0;padding:0}
.guide li{counter-increment:g;position:relative;padding:10px 0 10px 42px;border-bottom:1px solid var(--line)}
.guide li:last-child{border-bottom:none}
.guide li::before{content:counter(g);position:absolute;left:0;top:10px;width:30px;height:30px;border-radius:50%;background:var(--sign);color:var(--sign-ink);font-family:var(--head);font-weight:700;display:flex;align-items:center;justify-content:center}
.guide p{margin:0;font-size:.95rem}
.mock{margin-top:8px;font-size:.85rem;border-radius:10px;background:var(--field);border:1px solid var(--line);padding:6px;display:flex;gap:6px;width:fit-content;max-width:100%}
.mock span{padding:6px 10px;border-radius:6px;color:var(--muted)}
.mock .hi{background:var(--sign);color:var(--sign-ink);font-weight:800;outline:2px solid var(--flame);outline-offset:1px}
.mock .no{text-decoration:line-through;opacity:.75}
.mock-menu{flex-direction:column;gap:2px;min-width:200px}
.mock-hold{align-items:flex-start;background:none;border:none;padding:0}
.mock-hold img{border-radius:12px}
.mock-hold .pop{display:flex;flex-direction:column;gap:2px;background:var(--field);border:1px solid var(--line);border-radius:10px;padding:6px;padding:4px}

/* Pothole-ahead warnings */
.pills{display:flex;flex-wrap:wrap;justify-content:center;gap:0 8px}
.ahead{position:fixed;left:12px;right:12px;top:calc(12px + env(safe-area-inset-top,0px));z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-radius:12px;background:var(--sign);color:var(--sign-ink);border:4px solid var(--asphalt);box-shadow:0 8px 24px rgba(0,0,0,.45);
  font-family:var(--head);text-transform:uppercase;max-width:536px;margin:0 auto}
.ahead[hidden]{display:none}
.ahead-h{font-weight:700;font-size:1.6rem;letter-spacing:.03em;line-height:1}
.ahead b{font-weight:700;font-size:2.2rem;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap}
.passed{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:50;padding:14px;border-radius:12px;background:var(--surface);
  border:2px solid var(--sign);box-shadow:0 8px 24px rgba(0,0,0,.45);max-width:536px;margin:0 auto}
.passed[hidden]{display:none}
.passed p{margin:0 0 10px;font-weight:800;text-align:center}
.passed .row{display:flex;gap:8px}
.passed .btn{flex:1;padding:16px 6px;font-size:1.05rem}
.passed #passSkip{flex:.7;font-size:.9rem}
.btn.danger-fill{background:var(--flame);border-color:var(--flame);color:var(--flame-ink)}
.btn.ok-fill{background:#2fbf71;border-color:#2fbf71;color:#0b2e17}
.linkish{font:inherit;background:none;border:none;padding:4px 2px;color:inherit;text-decoration:underline;cursor:pointer}
.fb-nudge .linkish{color:var(--ink);font-weight:600}
.fb-link{color:var(--muted);font-size:.83rem}
.emailed{margin-top:4px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.emailed .mini{padding:3px 8px;font-size:.8rem}
.sent-nag{font:inherit;font-size:.92rem;font-weight:700;margin:10px auto 0;display:block;padding:8px 14px;border-radius:8px;border:2px solid var(--sign);background:var(--field);color:var(--ink);cursor:pointer}
.sent-nag b{color:var(--flame);margin-left:4px}
.sent-nag[hidden]{display:none}
.flash{position:fixed;inset:0;pointer-events:none;z-index:1000;opacity:0}
.flash.hit{--fc:#22c55e;animation:flash .9s ease-out}
.flash.miss{--fc:#ef2b2b;animation:flash .9s ease-out}
@keyframes flash{0%,35%{opacity:1;box-shadow:inset 0 0 0 16px var(--fc),inset 0 0 40px 22px var(--fc)}100%{opacity:0;box-shadow:inset 0 0 0 16px var(--fc),inset 0 0 40px 22px var(--fc)}}
.pin-open{margin:0 0 14px;padding:11px;font-size:.95rem}
.pin-box{margin:0 0 16px;padding:12px;border:2px solid var(--line);border-radius:8px}
.pin-box[hidden]{display:none}
.pin-box .hint{margin:0 0 10px}
.pin-search{display:flex;gap:6px;margin-bottom:8px}
.pin-search input{flex:1;min-width:0}
.pin-results{list-style:none;margin:0 0 8px;padding:0;border:1px solid var(--line);border-radius:6px;background:var(--field)}
.pin-results[hidden]{display:none}
.pin-results li+li{border-top:1px solid var(--line)}
.pin-results button{font:inherit;font-size:.85rem;text-align:left;width:100%;padding:9px 10px;background:none;border:none;color:var(--ink);cursor:pointer}
.pin-map-wrap{position:relative;margin-bottom:8px}
.pin-map{height:340px}
.pin-cross{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;pointer-events:none;z-index:500;border:3px solid var(--flame);border-radius:50%;box-shadow:0 0 0 2px #fff}
.pin-cross::before,.pin-cross::after{content:"";position:absolute;background:var(--flame);box-shadow:0 0 0 1px #fff}
.pin-cross::before{left:50%;top:-12px;bottom:-12px;width:3px;margin-left:-1.5px}
.pin-cross::after{top:50%;left:-12px;right:-12px;height:3px;margin-top:-1.5px}
.tag.est{background:#1d4f91;color:#fff;margin-top:4px}
.map-legend+.pin-open{margin:12px 0 0}
.map-legend~.pin-box{margin:12px 0 0}
.flash.hit.hold{animation:none;opacity:1;box-shadow:inset 0 0 0 16px var(--fc),inset 0 0 40px 22px var(--fc)}
