/* Tanmyaa — product UI. Docked application layout (top bar, icon rail, sidebar, map), neutral surfaces,
   one accent colour, hairline structure, tabular figures. Loaded after style.css and atlas.css and overrides them. */

/* ------------------------------------------------------------------ tokens */
:root{
  --accent:#0079C1; --accent-strong:#00639E; --accent-weak:#E8F2FA; --accent-ink:#00507F;
  --bg:#EEF1F4; --surface:#FFFFFF; --surface-2:#F7F8FA; --surface-3:#F0F2F5;
  --ink:#101828; --ink-2:#344054; --muted:#667085; --faint:#98A2B3;
  --line:#E4E7EC; --line-2:#D0D5DD;
  --ok:#1D5F8A; --ok-weak:#EAF2F8; --warn:#A8432C; --warn-weak:#FBF0EA; --bad:#B42318; --bad-weak:#FEF3F2;
  --shadow-1:0 1px 2px rgba(16,24,40,.06); --shadow-2:0 4px 12px rgba(16,24,40,.08),0 1px 3px rgba(16,24,40,.06);
  --shadow-pop:0 12px 32px rgba(16,24,40,.14),0 2px 6px rgba(16,24,40,.08);
  --r-sm:6px; --r:8px; --r-lg:10px;
  --top:52px; --rail-w:64px; --side-w:380px; --rail:0px;
  --font:"Inter","IBM Plex Sans Arabic","Segoe UI",system-ui,sans-serif;
  --font-ar:"IBM Plex Sans Arabic","Inter","Segoe UI",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --ease:cubic-bezier(.2,0,0,1);
  /* legacy names used by the base styles */
  --panel:var(--surface); --rule:var(--line); --warm:var(--warn); --brand:var(--accent); --brand-2:var(--accent);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --accent:#4AA3DF; --accent-strong:#7BBDE8; --accent-weak:#10273A; --accent-ink:#A9D4F2;
  --bg:#0A0F15; --surface:#11171F; --surface-2:#161D26; --surface-3:#1C2430;
  --ink:#ECEFF3; --ink-2:#C5CCD6; --muted:#8B97A7; --faint:#5F6B7A;
  --line:#222B36; --line-2:#2E3946;
  --ok:#8DB9D4; --ok-weak:#12222E; --warn:#EDB98C; --warn-weak:#2B1A12; --bad:#F97066; --bad-weak:#2C1412;
  --shadow-1:none; --shadow-2:0 4px 14px rgba(0,0,0,.4); --shadow-pop:0 14px 36px rgba(0,0,0,.55);
  color-scheme:dark}}
[dir=rtl]{--font:var(--font-ar)}

/* ------------------------------------------------------------------ base */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{display:block;margin:0;overflow:hidden;background:var(--bg);color:var(--ink);font:400 13.5px/1.55 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.n,.kpi b,.hstat b,.card .sc,.tbl td.n,.rank td.n,.scope small,.bench{font-variant-numeric:tabular-nums}
#map{position:fixed;inset:0;height:auto;background:var(--bg)}
[hidden]{display:none!important}

/* ------------------------------------------------------------------ top bar */
.topbar{position:fixed;z-index:30;inset-block-start:0;inset-inline:0;block-size:var(--top);display:flex;align-items:center;justify-content:space-between;gap:16px;padding-inline:16px 12px;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow-1);border-radius:0;backdrop-filter:none;-webkit-backdrop-filter:none}
.brand{display:flex;align-items:center;gap:12px;min-width:0;color:inherit;text-decoration:none}
.wordmark{font:800 22px/1 "Inter Tight","Inter",sans-serif;letter-spacing:-.04em;color:var(--accent);white-space:nowrap}
.wordmark i{font-style:normal;color:var(--accent)}
.wordmark.sm{font-size:18px}
.product{display:flex;flex-direction:column;justify-content:center;min-width:0;padding-inline-start:12px;border-inline-start:1px solid var(--line);line-height:1.25}
.product b{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.product small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{display:flex;align-items:center;gap:6px;flex:none}
.pill-btn,.lang{block-size:32px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font:500 12.5px var(--font);cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.pill-btn:hover,.lang:hover{background:var(--surface-2);border-color:var(--faint);color:var(--ink)}
.icon-btn{display:grid;place-items:center;inline-size:32px;block-size:32px;border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.icon-btn:hover{background:var(--surface-2);color:var(--ink)}
.icon-btn[aria-pressed=true]{background:var(--accent-weak);border-color:var(--accent);color:var(--accent)}
.icon-btn svg,.pb-btn svg{inline-size:17px;block-size:17px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

/* ------------------------------------------------------------------ icon rail (laptop) */
body.gov-mode{--rail:var(--rail-w)}
.rail{position:fixed;z-index:25;inset-block:var(--top) 0;inset-inline-start:0;inline-size:var(--rail-w);display:flex;flex-direction:column;gap:2px;padding:8px 6px;overflow-y:auto;scrollbar-width:none;background:var(--surface);border-inline-end:1px solid var(--line);border-radius:0;box-shadow:none;backdrop-filter:none}
.rail::-webkit-scrollbar{display:none}
.rail button{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;border:0;border-radius:var(--r);background:transparent;color:var(--muted);font:500 10.5px/1.15 var(--font);cursor:pointer;transition:color .15s,background .15s}
.rail .ri{display:grid;place-items:center;inline-size:auto;block-size:auto;background:none!important;box-shadow:none!important;color:inherit;border-radius:0}
.rail .ri svg{inline-size:20px;block-size:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.rail .rl{max-inline-size:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rail button:hover{color:var(--ink);background:var(--surface-2)}
.rail button[aria-current=page]{color:var(--accent);background:var(--accent-weak)}
.rail button[aria-current=page]::before{content:"";position:absolute;inset-block:10px;inset-inline-start:-6px;inline-size:3px;border-radius:0 3px 3px 0;background:var(--accent)}
[dir=rtl] .rail button[aria-current=page]::before{border-radius:3px 0 0 3px}
.rail-ink{display:none}

/* ------------------------------------------------------------------ sidebar */
#panel{position:fixed;z-index:20;inset-block:var(--top) 0;inset-inline-start:var(--rail);inline-size:var(--side-w);block-size:auto;height:auto;display:flex;flex-direction:column;gap:14px;padding:0 16px 16px;margin:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;background:var(--surface);border:0;border-inline-end:1px solid var(--line);border-radius:0;box-shadow:var(--shadow-1);backdrop-filter:none;-webkit-backdrop-filter:none;transition:transform .25s var(--ease),opacity .2s}
body.collapsed #panel{transform:translateX(calc(-100% - var(--rail)));opacity:0;pointer-events:none}
[dir=rtl] body.collapsed #panel{transform:translateX(calc(100% + var(--rail)))}
.grabber{display:none}

/* window bar of the sidebar */
.panel-bar{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:8px;margin:0 -16px;padding:0 10px 0 16px;block-size:44px;flex:none;background:var(--surface);border-bottom:1px solid var(--line);border-radius:0;backdrop-filter:none}
.pb-title{flex:1;min-width:0;padding:0;border:0;background:none;text-align:start;color:var(--ink-2);font:600 12.5px var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}
.pb-btn{display:grid;place-items:center;inline-size:28px;block-size:28px;flex:none;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}
.pb-btn:hover{background:var(--surface-3);color:var(--ink);border-color:var(--line)}
body.minimized #panel{inset-block-end:auto;block-size:44px!important;overflow:hidden;padding-bottom:0;border-bottom:1px solid var(--line);box-shadow:var(--shadow-2);animation:none}
body.minimized #panel>:not(.panel-bar){display:none!important}
body.minimized .panel-bar{border-bottom:0;margin:0 -16px;position:static}
body.minimized .pb-title{cursor:pointer;color:var(--ink)}
body.minimized .pb-title:hover{color:var(--accent)}

/* section rhythm */
.home,.gov{display:flex;flex-direction:column;gap:14px}
h3,.h4{margin:6px 0 0;font:600 11px/1.4 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
[dir=rtl] h3,[dir=rtl] .h4{letter-spacing:0;text-transform:none;font-size:12px}
.note{margin:0;font-size:12px;line-height:1.55;color:var(--muted)}
.label{display:block;font:500 11.5px var(--font);color:var(--muted);letter-spacing:0}

/* ------------------------------------------------------------------ home */
.hero{display:flex;flex-direction:column;gap:6px;padding-top:14px}
.eyebrow{align-self:flex-start;padding:0;background:none;border-radius:0;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
[dir=rtl] .eyebrow{letter-spacing:0;text-transform:none;font-size:12px}
.hero h2{margin:0;font:600 20px/1.3 var(--font);letter-spacing:-.01em;color:var(--ink);background:none;-webkit-background-clip:initial;background-clip:initial;-webkit-text-fill-color:currentColor}
.hero .intro{margin:0;font-size:12.5px;color:var(--muted)}
.hero-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:8px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.hstat{padding:10px 12px;border:0;border-radius:0;background:none}
.hstat+.hstat{border-inline-start:1px solid var(--line)}
.hstat b{display:block;font:600 17px/1.2 var(--font);color:var(--ink);letter-spacing:-.01em}
.hstat span{display:block;margin-top:2px;font-size:11px;line-height:1.3;color:var(--muted)}
.home-tools{display:flex;gap:6px}
.home-tools input,.home-tools select,select,.expbox input[type=text],.expbox select{block-size:34px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:400 13px var(--font);box-shadow:var(--shadow-1);transition:border-color .15s,box-shadow .15s}
.home-tools input{flex:1;min-width:0}
.home-tools input:focus,select:focus,.expbox input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
/* city list: rows, not cards */
.cards{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.cards h3{margin:0;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.cards h3:not(:first-child){border-top:1px solid var(--line)}
.card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1px 12px;inline-size:100%;margin:0;padding:10px 12px;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer;box-shadow:none;animation:none;transition:background .12s}
.card+.card{border-top:1px solid var(--line)}
.card:hover,.card:focus-visible{background:var(--surface-2);transform:none;box-shadow:none}
.card b{font-size:13.5px;font-weight:600;color:var(--ink)}
.card small{font-size:12px;color:var(--muted)}
.card .sc{grid-row:span 2;position:static;display:flex;align-items:center;gap:6px;inline-size:auto;block-size:auto;padding:3px 8px;border-radius:999px;background:var(--surface-3);font:600 12.5px var(--font);color:var(--ink)}
.card .sc::before{content:"";position:static;inset:auto;inline-size:8px;block-size:8px;border-radius:50%;background:var(--c,var(--faint))}
.card .sc>*{position:static}

/* ------------------------------------------------------------------ city view */
.gov-head{display:flex;align-items:center;gap:8px;padding-top:14px}
.gov-head select{flex:1;min-width:0;font-weight:500}
.back{display:inline-flex;align-items:center;gap:6px;block-size:34px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-2);font:500 12.5px var(--font);cursor:pointer;flex:none}
.back:hover{background:var(--surface-2);color:var(--ink)}
.scope{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2)}
.scope b{display:block;font:600 15px/1.3 var(--font);color:var(--ink)}
.scope small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.scope-actions{display:flex;flex-direction:column;gap:6px}
.svc-head{display:flex;flex-direction:column;gap:2px;animation:none}
.ios-back{display:none}
.large-title{display:block;margin:0;font:600 18px/1.3 var(--font);letter-spacing:-.01em;color:var(--ink)}
.tabq{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted);font-weight:400}
#panel.pushed .svc-head,#panel.pushed .tabq,#panel.pushed .inds,#panel.pushed .view{animation:fadein .2s var(--ease) both}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.view{display:flex;flex-direction:column;gap:14px;animation:none}
.tabs{display:none}

/* indicator switcher: segmented control */
.inds{display:flex;flex-wrap:nowrap;gap:0;padding:2px;overflow-x:auto;scrollbar-width:none;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-3)}
.inds::-webkit-scrollbar{display:none}
.inds button{flex:1 0 auto;block-size:28px;padding:0 10px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--muted);font:500 12px var(--font);white-space:nowrap;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}
.inds button:hover{color:var(--ink)}
.inds button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1),0 0 0 1px var(--line)}
.inds select{block-size:28px;margin-inline-start:4px;border:0;box-shadow:none}
.inds .thr{min-inline-size:200px;padding:2px 8px;font-size:12px}

/* narrative line */
.say{margin:0;padding:10px 12px;border:0;border-inline-start:3px solid var(--accent);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--accent-weak);color:var(--ink);font-size:13px;line-height:1.55}
[dir=rtl] .say{border-radius:var(--r-sm) 0 0 var(--r-sm)}
.say::before{display:none}

/* KPI grid: hairline cells, selected one marked by an accent edge */
.kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.kpi,.kpi:nth-child(odd),.kpi:nth-child(even){position:relative;display:flex;flex-direction:column;gap:3px;padding:10px 12px;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:pointer;transition:background .12s;transform:none}
.kpi:nth-child(even){border-inline-start:1px solid var(--line)}
.kpi:nth-child(n+3){border-top:1px solid var(--line)}
.kpi:hover{background:var(--surface-2);transform:none}
.kpi.cur{background:var(--accent-weak);box-shadow:none}
.kpi.cur::after{content:"";position:absolute;inset-block:0;inset-inline-start:0;inline-size:3px;background:var(--accent)}
.kpi .k{font-size:11.5px;line-height:1.35;color:var(--muted)}
.kpi b{margin-top:1px;font:600 19px/1.15 var(--font);letter-spacing:-.01em;color:var(--ink)}
.kpi.cur b{color:var(--accent-ink)}
.kpi b small{margin-inline-start:2px;font-size:11px;font-weight:500;color:var(--muted)}
.kpi .qm{inline-size:18px;block-size:18px;border:1px solid var(--line-2);border-radius:50%;background:var(--surface);color:var(--muted);font:600 10px var(--font);cursor:help}
.bench{align-self:flex-start;padding:1px 6px;border:0;border-radius:4px;background:var(--surface-3);color:var(--muted);font:500 11px var(--font)}
.bench.ok{background:var(--ok-weak);color:var(--ok)}
.bench.bad{background:var(--warn-weak);color:var(--warn)}
/* legend */
.legend-bar{gap:6px}
.bins{gap:2px}
.bins button{block-size:10px;border-radius:2px;transition:opacity .15s}
.bins button:hover{transform:none;opacity:.8}
.bins button[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:1px}
.legend-bar .ends,.bins-note{font-size:11px;color:var(--muted)}
/* tables */
.tbl{font-size:12.5px}
.tbl th{border-bottom:1px solid var(--line-2);font:600 11px var(--font);color:var(--muted)}
.tbl td{border-bottom:1px solid var(--line);padding:6px 4px 6px 0}
.rank{max-block-size:320px;border:1px solid var(--line);border-radius:var(--r);overflow:auto}
.rank th{background:var(--surface-2);border-bottom:1px solid var(--line);font:600 11px var(--font)}
.rank td{border-bottom:1px solid var(--line);padding:6px 8px}
.rank tr:hover td{background:var(--surface-2)}
.rank tr.sel td{background:var(--accent-weak)}
.lu-legend{font-size:12px}
.lu-legend i{border-radius:2px}
.micro{gap:8px;padding:12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2)}
.issue{border-bottom:1px solid var(--line)}
.issue::before{color:var(--accent)}
.issue .where a,.refs a,.say a,.foot a{color:var(--accent)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;block-size:32px;padding:0 12px;border:1px solid var(--accent);border-radius:var(--r-sm);background:var(--accent);color:#fff;font:500 12.5px var(--font);box-shadow:var(--shadow-1);cursor:pointer;transition:background .15s,border-color .15s;transform:none}
.btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);transform:none;box-shadow:var(--shadow-1)}
.btn.ghost{background:var(--surface);color:var(--ink-2);border-color:var(--line-2)}
.btn.ghost:hover{background:var(--surface-2);color:var(--ink);border-color:var(--faint)}
.btn.sm{block-size:28px;padding:0 10px;font-size:12px}
.status{display:none}
.foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);font-size:11px;line-height:1.55;color:var(--faint)}
button:active,.card:active,.kpi:active,.ios-row:active{transform:none!important}

/* ------------------------------------------------------------------ map chrome */
.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{top:calc(var(--top) + 4px)}
[dir=ltr] .maplibregl-ctrl-top-left,[dir=ltr] .maplibregl-ctrl-bottom-left{left:calc(var(--rail) + var(--side-w));transition:left .25s var(--ease)}
[dir=rtl] .maplibregl-ctrl-top-right,[dir=rtl] .maplibregl-ctrl-bottom-right{right:calc(var(--rail) + var(--side-w));transition:right .25s var(--ease)}
[dir=ltr] body.collapsed .maplibregl-ctrl-top-left,[dir=ltr] body.collapsed .maplibregl-ctrl-bottom-left{left:var(--rail)}
[dir=rtl] body.collapsed .maplibregl-ctrl-top-right,[dir=rtl] body.collapsed .maplibregl-ctrl-bottom-right{right:var(--rail)}
.maplibregl-ctrl-group{overflow:hidden;border:1px solid var(--line-2)!important;border-radius:var(--r-sm)!important;background:var(--surface)!important;box-shadow:var(--shadow-2)!important;backdrop-filter:none}
.maplibregl-ctrl-group button{inline-size:32px;block-size:32px}
.maplibregl-ctrl-group button+button{border-top:1px solid var(--line)!important}
.maplibregl-ctrl-group button:hover{background:var(--surface-2)!important}
@media (prefers-color-scheme:dark){.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(.9)}}
.ctl3d{font:700 11px var(--font)!important;color:var(--ink-2)!important}
.ctl3d[aria-pressed=true]{background:var(--accent-weak)!important;color:var(--accent)!important}
.maplibregl-ctrl-scale{border-color:var(--ink-2);background:color-mix(in srgb,var(--surface) 85%,transparent);color:var(--ink-2);font:500 10px var(--font);border-radius:0}
.maplibregl-ctrl-attrib{font-size:10.5px;background:color-mix(in srgb,var(--surface) 85%,transparent)!important;border-radius:var(--r-sm) 0 0 0}
.maplibregl-popup-content{padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-pop);font:400 12.5px/1.5 var(--font)}
.maplibregl-popup-close-button{inline-size:24px;block-size:24px;color:var(--muted);font-size:16px}
.place h4{margin:0 0 6px;font:600 13px var(--font);color:var(--ink)}
.place td{border-bottom:1px solid var(--line);padding:3px 0}
.place .ok{color:var(--ok)}.place .bad{color:var(--warn)}
.gov-tip .maplibregl-popup-content,.hextip .maplibregl-popup-content{padding:7px 10px;font:500 12px/1.45 var(--font)}
/* layers & export panels */
.lyr{min-inline-size:0;inline-size:auto;max-inline-size:300px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-2);backdrop-filter:none;overflow:hidden}
.lyr-head{display:flex}
.lyr-btn{display:inline-flex;align-items:center;gap:7px;inline-size:auto;block-size:36px;padding:0 12px;font:600 12.5px var(--font);color:var(--ink);white-space:nowrap}
.lyr-btn:hover{background:var(--surface-2)}
.lyr-btn[aria-expanded=true]{color:var(--accent)}
.lyr-btn.exp{border-inline-start:1px solid var(--line);color:var(--ink-2)}
.lyr-btn .cnt{display:inline-grid;place-items:center;min-inline-size:18px;block-size:18px;padding:0 5px;border-radius:9px;background:var(--accent-weak);color:var(--accent-ink);font:600 10.5px var(--font)}
.lyr-body{display:flex;flex-direction:column;gap:0;inline-size:300px;max-inline-size:calc(100vw - 80px);padding:0;max-block-size:min(70vh,620px);overflow:auto;border-top:1px solid var(--line);scrollbar-width:thin}
.lyr-sec{display:flex;flex-direction:column;gap:2px;padding:10px 12px}
.lyr-sec+.lyr-sec{border-top:1px solid var(--line)}
.lyr-body b{display:flex;align-items:center;justify-content:space-between;margin:0 0 4px;font:600 11px var(--font);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
[dir=rtl] .lyr-body b{letter-spacing:0;text-transform:none}
.lyr-body b .all{padding:0;border:0;background:none;color:var(--accent);font:500 11px var(--font);cursor:pointer;text-transform:none;letter-spacing:0}
.lyr-body .row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.lyr-body .row>span{display:inline-flex;align-items:center;gap:8px;min-width:0}
.lyr-body .row.op input[type=range]{inline-size:130px;accent-color:var(--accent)}
.lyr-body .sw{flex:none;inline-size:14px;block-size:10px;border-radius:2px;margin:0;box-shadow:inset 0 0 0 1px rgba(16,24,40,.12)}
.lyr-body .sw.ln{background:transparent;border:0;border-bottom:3px solid;border-radius:0;block-size:6px;box-shadow:none}
.lyr-body .sw.ln.dash{border-bottom-style:dashed}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;block-size:28px;padding:0 10px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);color:var(--ink-2);font:500 12px var(--font);cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.chip:hover{background:var(--surface-2);border-color:var(--faint);color:var(--ink)}
.chip.on{background:var(--accent-weak);border-color:var(--accent);color:var(--accent-ink)}
.chip .x{margin-inline-start:2px;color:var(--faint);font-size:14px;line-height:1}
.chip .x:hover{color:var(--warn)}
.save-row{display:flex;gap:6px;margin-top:8px}
.save-row input{flex:1;min-width:0;block-size:30px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:400 12px var(--font)}
.save-row input:focus{outline:none;border-color:var(--accent)}
.btn.sm{block-size:30px;padding:0 10px;font-size:12px}
/* the scale the map is showing (city-wide cells vs plot-level buildings) */
.scale-badge{display:flex;align-items:center;gap:8px;padding:5px 6px 5px 10px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);box-shadow:var(--shadow-2);font:500 12px var(--font);color:var(--ink-2)}
[dir=rtl] .scale-badge{padding:5px 10px 5px 6px}
.scale-badge i{inline-size:8px;block-size:8px;border-radius:50%;background:var(--accent)}
.scale-badge.is-micro i{background:#E0965A}
.scale-badge b{font-weight:600;color:var(--ink)}
.scale-badge button{block-size:24px;padding:0 9px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface-2);color:var(--accent-ink);font:500 11.5px var(--font);cursor:pointer}
.scale-badge button:hover{border-color:var(--accent)}
.expbox{inset-block-start:calc(var(--top) + 12px);border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-pop);backdrop-filter:none;font-size:12.5px}
/* switches */
.lyr-body input[type=checkbox],.exp-checks input[type=checkbox]{inline-size:32px;block-size:18px;border-radius:9px;background:var(--line-2)}
.lyr-body input[type=checkbox]::before,.exp-checks input[type=checkbox]::before{inset-block-start:2px;inset-inline-start:2px;inline-size:14px;block-size:14px;box-shadow:0 1px 2px rgba(16,24,40,.2)}
.lyr-body input[type=checkbox]:checked,.exp-checks input[type=checkbox]:checked{background:var(--accent)}
.lyr-body input[type=checkbox]:checked::before,.exp-checks input[type=checkbox]:checked::before{transform:translateX(14px)}
[dir=rtl] .lyr-body input[type=checkbox]:checked::before,[dir=rtl] .exp-checks input[type=checkbox]:checked::before{transform:translateX(-14px)}
/* notification */
.toast{position:fixed;z-index:40;inset-block-end:16px;inset-inline-end:16px;max-inline-size:min(380px,calc(100vw - 32px));padding:10px 14px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--ink);color:var(--surface);box-shadow:var(--shadow-pop);font-size:12.5px;backdrop-filter:none;animation:fadein .2s var(--ease)}
/* guide dialog */
.guide{background:rgba(16,24,40,.45);backdrop-filter:none}
.guide-box{gap:12px;padding:22px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-pop)}
.guide-box h2{font:600 16px var(--font)}
.guide-box ol{font-size:13px}

/* ------------------------------------------------------------------ phones */
@media (max-width:760px){
  :root{--top:52px;--side-w:100vw}
  body.gov-mode{--rail:0px}
  .product{display:none}
  .wordmark{font-size:20px}
  .pill-btn{padding:0 10px}
  .rail{inset-block:auto 0;inset-inline:0;inline-size:auto;block-size:calc(58px + env(safe-area-inset-bottom));flex-direction:row;gap:0;padding:4px 4px env(safe-area-inset-bottom);overflow-x:auto;overflow-y:hidden;border-inline-end:0;border-top:1px solid var(--line);scroll-snap-type:x proximity}
  .rail button{flex:0 0 auto;min-inline-size:66px;padding:6px 2px;scroll-snap-align:center}
  .rail button[aria-current=page]::before{inset-block:auto 0;inset-inline:16px;inline-size:auto;block-size:2px;border-radius:2px 2px 0 0}
  #panel{inset-block:auto 0;inset-inline:0;inline-size:auto;block-size:52vh;border:0;border-top:1px solid var(--line);border-radius:12px 12px 0 0;box-shadow:var(--shadow-pop)}
  body.gov-mode #panel{inset-block-end:calc(58px + env(safe-area-inset-bottom))}
  .grabber{display:grid;place-items:center;position:sticky;top:0;z-index:5;margin:0 -16px;padding:6px 0 2px;background:var(--surface);cursor:grab;touch-action:none}
  .grabber i{inline-size:36px;block-size:4px;border-radius:2px;background:var(--line-2)}
  .panel-bar{top:12px}
  [dir] body.collapsed #panel{transform:translateY(calc(100% + 70px))}
  /* minimised on a phone: the bar stays at the bottom, above the tab bar, never behind the top bar */
  body.minimized #panel{inset-block:auto 0;block-size:44px!important;border-radius:12px 12px 0 0}
  body.gov-mode.minimized #panel{inset-block-end:calc(58px + env(safe-area-inset-bottom))}
  body.minimized .panel-bar{margin:0 -16px}
  [dir] .maplibregl-ctrl-top-left,[dir] .maplibregl-ctrl-bottom-left{left:0;right:auto}
  [dir] .maplibregl-ctrl-top-right,[dir] .maplibregl-ctrl-bottom-right{right:0;left:auto}
  body.gov-mode .maplibregl-ctrl-bottom-left,body.gov-mode .maplibregl-ctrl-bottom-right{bottom:calc(58px + env(safe-area-inset-bottom))}
  .hero-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hstat b{font-size:15px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* report: scale chooser and the scale line on the report header */
.scale-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.scale-pick .sp{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);color:var(--ink-2);font:400 12px/1.45 var(--font);text-align:start;cursor:pointer;transition:border-color .15s,background .15s}
.scale-pick .sp b{font:600 13.5px var(--font);color:var(--ink)}
.scale-pick .sp:hover{border-color:var(--accent);background:var(--accent-weak)}
.scale-pick .sp[aria-disabled=true]{opacity:.6;cursor:not-allowed;background:var(--surface-2)}
.scale-pick .sp[aria-disabled=true]:hover{border-color:var(--line-2)}
.rscale{display:inline-block;margin:6px 0 0;padding:4px 10px;border-inline-start:3px solid #0079C1;background:#E8F2FA;color:#00507F;font-size:12px}
.rscale.micro{border-color:#E0965A;background:#FBF0EA;color:#7A3A1E}
.rpage .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:760px){.scale-pick{grid-template-columns:1fr}}

/* toggle switches (layers panel, export options) */
.lyr-body input[type=checkbox],.exp-checks input[type=checkbox]{-webkit-appearance:none;appearance:none;position:relative;flex:none;margin:0;cursor:pointer;transition:background .15s}
.lyr-body input[type=checkbox]::before,.exp-checks input[type=checkbox]::before{content:"";position:absolute;border-radius:50%;background:#fff;transition:transform .15s}
.chip{flex:none;white-space:nowrap}
.scale-badge{white-space:nowrap}
.lyr-body .row>span{flex:1;line-height:1.35}
/* MapLibre sizes every control button 29×29; the panel and badge buttons size to their content */
.lyr .chip,.lyr .lyr-btn,.lyr .btn,.lyr b .all,.scale-badge button{width:auto;height:auto}
.lyr .chip{display:inline-flex;block-size:28px}
.lyr .lyr-btn{display:inline-flex;block-size:36px}
.lyr .btn.sm{display:inline-flex;block-size:30px;padding:0 10px}
.scale-badge button{display:inline-block;block-size:24px}

/* ---- map toolbar: one vertical group on the map's outer edge (Layers, Export, 3D), zoom below ---- */
.maplibregl-ctrl.tools{position:relative;margin:12px 0 0 12px;overflow:visible}
.tools-group{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-2)}
.maplibregl-ctrl .tool{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;inline-size:56px!important;block-size:54px!important;padding:0;border:0;background:transparent;color:var(--ink-2)!important;font:500 10.5px/1.1 var(--font)!important;cursor:pointer;transition:background .15s,color .15s}
.maplibregl-ctrl .tool+.tool{border-top:1px solid var(--line)}
.maplibregl-ctrl .tool svg{inline-size:20px;block-size:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.maplibregl-ctrl .tool:hover{background:var(--surface-2)!important;color:var(--ink)!important}
.maplibregl-ctrl .tool[aria-expanded=true],.maplibregl-ctrl .tool[aria-pressed=true]{background:var(--accent-weak)!important;color:var(--accent)!important}
.tool .cnt{position:absolute;inset-block-start:6px;inset-inline-end:8px;min-inline-size:15px;block-size:15px;padding:0 4px;border-radius:8px;background:var(--accent);color:#fff;font:600 9.5px/15px var(--font);font-style:normal;text-align:center}
.tool .cnt:empty{display:none}
.maplibregl-ctrl-top-left .maplibregl-ctrl-group:not(.tools-group){margin:8px 0 0 12px}
.maplibregl-ctrl-top-left .maplibregl-ctrl-group:not(.tools-group) button{inline-size:56px;block-size:36px}
/* the layers flyout opens beside the toolbar */
.lyr-fly{position:absolute;inset-block-start:0;left:calc(100% + 8px);z-index:5;inline-size:320px;max-inline-size:calc(100vw - 100px);max-block-size:min(74vh,640px);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line-2);border-radius:var(--r-lg,12px);background:var(--surface);box-shadow:var(--shadow-pop);animation:fadein .15s var(--ease,ease)}
.lyr-fly[hidden]{display:none}
.fly-head{display:flex;align-items:center;justify-content:space-between;flex:none;block-size:44px;padding:0 8px 0 14px;border-bottom:1px solid var(--line)}
[dir=rtl] .fly-head{padding:0 14px 0 8px}
.fly-head b{font:600 13.5px var(--font);color:var(--ink)}
.maplibregl-ctrl .fly-x{display:grid;place-items:center;inline-size:28px!important;block-size:28px!important;border:0;border-radius:var(--r-sm);background:transparent;color:var(--muted);font-size:18px;cursor:pointer}
.maplibregl-ctrl .fly-x:hover{background:var(--surface-3)!important;color:var(--ink)}
.lyr-fly .lyr-body{display:flex;inline-size:auto;max-block-size:none;flex:1;overflow:auto;border-top:0}
.lyr-fly .chip,.lyr-fly b .all,.lyr-fly .btn{width:auto;height:auto}
.lyr-fly .chip{display:inline-flex;block-size:28px}
.lyr-fly .btn.sm{display:inline-flex;block-size:30px;padding:0 10px}
/* ---- scale switch: a segmented control at the foot of the map ---- */
.scale-switch{position:absolute;z-index:3;inset-block-end:30px;left:50%;transform:translateX(-50%);display:flex;padding:3px;gap:2px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-2)}
.scale-switch[hidden]{display:none}
.scale-switch button{display:flex;flex-direction:column;align-items:center;gap:1px;min-inline-size:120px;padding:5px 14px;border:0;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}
.scale-switch button b{font:600 12.5px var(--font)}
.scale-switch button small{font:400 10.5px var(--font);white-space:nowrap}
.scale-switch button:hover{color:var(--ink);background:var(--surface-2)}
.scale-switch button[aria-pressed=true]{background:var(--accent-weak);color:var(--accent-ink);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}
@media (max-width:760px){
  .scale-switch{inset-block-end:auto;inset-block-start:10px}
  .scale-switch button{min-inline-size:0;padding:4px 10px}
  .scale-switch button small{display:none}
  .maplibregl-ctrl .tool{inline-size:48px!important;block-size:46px!important}
  .lyr-fly{inline-size:min(320px,calc(100vw - 84px))}
}

/* ---- Layers panel: seven collapsible groups, each row with its legend symbol and feature count ---- */
.lyr-fly{inline-size:340px}
.fly-head{gap:8px}
.fly-head .fly-sub{flex:1;font:400 11px var(--font);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.presets{display:flex;gap:6px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.presets select{flex:1;min-width:0;block-size:30px;font-size:12px}
.lyr-fly .presets .btn.sm{block-size:30px;white-space:nowrap}
.lsec{border-bottom:1px solid var(--line)}
.lsec-h{display:flex;align-items:center;gap:8px;padding:0 12px 0 4px}
[dir=rtl] .lsec-h{padding:0 4px 0 12px}
.lyr-fly .lsec-t{flex:1;display:flex;align-items:center;gap:8px;min-width:0;inline-size:auto;block-size:42px;padding:0 8px;border:0;background:transparent;color:var(--ink);font:600 13px var(--font);text-align:start;cursor:pointer}
.lsec-t:hover{background:var(--surface-2)}
.lsec-t .num{display:inline-grid;place-items:center;flex:none;inline-size:20px;block-size:20px;border-radius:6px;background:var(--surface-3);color:var(--muted);font:600 11px var(--font)}
.lsec.open .lsec-t .num{background:var(--accent);color:#fff}
.lsec-t b{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lsec-t small{font:500 11px var(--font);color:var(--muted)}
.lsec-t .chev{inline-size:8px;block-size:8px;border-inline-end:1.5px solid var(--muted);border-block-end:1.5px solid var(--muted);transform:rotate(45deg);transition:transform .15s;margin-inline:4px}
.lsec.open .lsec-t .chev{transform:rotate(-135deg)}
.lsec-b{display:none;flex-direction:column;gap:0;padding:0 12px 10px}
.lsec.open .lsec-b{display:flex}
.lsec-b .chips{margin:2px 0 8px}
.lsec-b .row{padding:5px 0}
.lsec-b .row>span{gap:9px}
.lsec-b .row em{margin-inline-start:auto;padding-inline-start:6px;font:500 11px var(--font);font-style:normal;color:var(--faint)}
.lsec-b .row.empty{opacity:.55}
.cur-study{margin:2px 0 6px;font-size:12.5px;color:var(--ink-2)}
/* legend symbols */
.sym{flex:none;display:inline-block;inline-size:18px;block-size:12px;position:relative}
.sym.dot::before{content:"";position:absolute;inset:1px 4px;border-radius:50%;background:var(--c);box-shadow:0 0 0 1.5px #fff,0 0 0 2.5px rgba(16,24,40,.12)}
.sym.fill{border-radius:3px;background:color-mix(in srgb,var(--c) 55%,transparent);box-shadow:inset 0 0 0 1.5px var(--c)}
.sym.ln::before{content:"";position:absolute;inset-inline:0;inset-block-start:4px;border-block-start:3px solid var(--c)}
.sym.ln.dash::before{border-block-start-style:dashed}
.sym.rail::before{content:"";position:absolute;inset-inline:0;inset-block-start:3px;block-size:4px;background:repeating-linear-gradient(90deg,#3B4048 0 4px,#ffffff 4px 7px);box-shadow:0 0 0 1px #3B4048}
.sym.txt{display:inline-grid;place-items:center;border:1px solid var(--line-2);border-radius:3px;font:700 9px var(--font);color:var(--ink-2)}
/* critical-areas switch and all-services proposals (side panel engine) */
.crit{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);font-size:12.5px;color:var(--ink-2);cursor:pointer}
.crit b{color:var(--warn)}
.crit input{accent-color:var(--warn);inline-size:16px;block-size:16px}
.sites-all{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.sites-all .srow{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;cursor:pointer}
.sites-all .srow:last-child{border-bottom:0}
.sites-all .srow:hover{background:var(--surface-2)}
.sites-all .srow i{inline-size:12px;block-size:12px;border-radius:50%;box-shadow:0 0 0 1.5px #fff,0 0 0 2.5px rgba(16,24,40,.12)}
.sites-all .srow small{color:var(--muted)}
.sites-all .srow em{font-style:normal;font-weight:600;color:var(--ink)}
