/* Kane GIS browser UI — layered on /brand/colors_and_type.css (Kane Design System).
   Every colour/type value is a variable from that file; nothing here forks one.
   Rules for this dense internal tool:
   - data pages: white / neutral-050 canvas, navy-800 text, navy-800 header bar
   - blue-600 = every interactive element; gold only for board stage counts
     (gold-800 on light — gold-600 is ~2.8:1 on white) and the login page
   - Fraunces only for page titles and stat/count numbers; DM Sans elsewhere;
     --font-mono for PINs, coordinates and code-like identifiers
   - chips: navy text on the semantic soft tint + a semantic left rule
     (semantic colour as text on its own tint fails WCAG AA) */

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg-2);color:var(--fg-1);
 font:var(--weight-regular) var(--text-sm)/1.5 var(--font-body);
 -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--fg-action);text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{color:var(--kane-blue-700)}
:focus-visible{outline:2px solid var(--kane-blue-600);outline-offset:2px}
.muted{color:var(--kane-neutral-600)}
.small{font-size:var(--text-xs)}
.mono,.pin,.pinlink{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.wrap{max-width:1180px;margin:0 auto;padding:20px 16px 48px}
.wrap.wide{max-width:none}
.eyebrow{font:var(--weight-semibold) 11px/1.2 var(--font-body);letter-spacing:var(--track-widest);
 text-transform:uppercase;color:var(--kane-neutral-600)}
h1.title{font:var(--weight-heavy) 28px/var(--lead-tight) var(--font-display);
 letter-spacing:var(--track-tight);color:var(--fg-1);margin:4px 0 0}

/* ------------------------------------------------------------- header bar */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;
 background:var(--bg-inverse);color:var(--fg-inverse);padding:10px 16px;
 position:sticky;top:0;z-index:1000;box-shadow:var(--shadow-sm)}
.brandlink{display:flex;align-items:center;gap:10px;color:var(--fg-inverse);text-decoration:none}
.brandlink img{display:block;height:20px;width:auto}
.brandlink .appname{font:var(--weight-semibold) 11px/1 var(--font-body);letter-spacing:var(--track-widest);
 text-transform:uppercase;color:var(--kane-navy-200);border-left:1px solid var(--border-inverse-strong);
 padding-left:10px}
.topbar nav{display:flex;align-items:center;gap:14px;font-size:var(--text-sm)}
.topbar nav a{color:var(--fg-inverse);text-decoration:none;font-weight:var(--weight-medium)}
.topbar nav a:hover{color:var(--kane-navy-100);text-decoration:underline}
.topbar nav form{margin:0}
.ro{font:var(--weight-semibold) 10.5px/1 var(--font-body);letter-spacing:var(--track-wide);
 text-transform:uppercase;color:var(--kane-navy-100);border:1px solid var(--border-inverse-strong);
 padding:4px 7px;border-radius:var(--radius-pill)}
.linkbtn{white-space:nowrap;background:transparent;border:1px solid rgba(255,255,255,.4);color:var(--fg-inverse);
 font:var(--weight-medium) var(--text-sm) var(--font-body);padding:5px 12px;
 border-radius:var(--radius-md);cursor:pointer}
.linkbtn:hover{border-color:var(--kane-white);background:rgba(255,255,255,.06)}

/* ----------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;cursor:pointer;
 font:var(--weight-semibold) var(--text-sm)/1 var(--font-body);padding:10px 16px;
 border-radius:var(--radius-md);text-decoration:none;
 transition:background var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.btn-primary{background:var(--kane-blue-600);color:var(--kane-white)}
.btn-primary:hover{background:var(--kane-blue-700);color:var(--kane-white);box-shadow:var(--shadow-primary-hover)}

/* ------------------------------------------------------------------ login */
.login-body{background:var(--kane-navy-800) var(--pattern-dotgrid-navy);color:var(--fg-inverse)}
.login-wrap{min-height:100vh;min-height:100dvh;display:grid;align-items:center;justify-items:center;
 padding:32px 20px;background:radial-gradient(ellipse at 20% 0%,var(--kane-navy-700) 0%,transparent 60%)}
.login-hero{width:100%;max-width:960px;display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}
.login-copy img{height:30px;width:auto;display:block}
.login-eyebrow{font:var(--weight-semibold) 13px/1.2 var(--font-body);letter-spacing:var(--track-widest);
 text-transform:uppercase;color:var(--kane-gold-600);margin:36px 0 12px}
.login-h1{font:var(--weight-heavy) var(--fluid-h1)/var(--lead-tight) var(--font-display);
 letter-spacing:var(--track-tighter);color:var(--kane-white);margin:0}
.login-lead{font:var(--weight-regular) var(--text-lg)/var(--lead-relaxed) var(--font-body);
 color:var(--kane-navy-200);margin:18px 0 0;max-width:30em}
.login-form{background:rgba(255,255,255,.04);border:1px solid var(--border-inverse-strong);
 border-radius:var(--radius-lg);padding:28px 26px}
.login-form label{display:block;font:var(--weight-semibold) 12px/1 var(--font-body);
 letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--kane-navy-200);margin:0 0 8px}
.login-form input[type=password]{width:100%;font:var(--text-base) var(--font-body);color:var(--fg-1);
 background:var(--kane-white);padding:12px 14px;border:1px solid var(--kane-navy-300);border-radius:var(--radius-md)}
.login-form input[type=password]:focus{outline:2px solid var(--kane-gold-500);outline-offset:1px}
.btn-gold{width:100%;margin-top:18px;background:var(--kane-gold-600);color:var(--kane-navy-800);
 font:var(--weight-bold) var(--text-base)/1 var(--font-body);padding:14px 18px;border:0;
 border-radius:var(--radius-md);cursor:pointer}
.btn-gold:hover{background:var(--kane-gold-500);box-shadow:var(--shadow-cta)}
.login-form .alert,.login-form .note{margin:0 0 16px}
.login-foot{margin:18px 0 0;font-size:var(--text-xs);color:var(--kane-navy-300)}
a.btn-gold{display:block;box-sizing:border-box;text-align:center;text-decoration:none}
.btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-sizing:border-box;
 background:var(--kane-white);color:var(--kane-navy-800);text-decoration:none;
 font:var(--weight-bold) var(--text-base)/1 var(--font-body);padding:14px 18px;
 border-radius:var(--radius-md);border:1px solid var(--kane-navy-300)}
.btn-google:hover{background:var(--kane-navy-50,#f2f5fa);box-shadow:var(--shadow-cta)}
.btn-google:focus-visible{outline:2px solid var(--kane-gold-500);outline-offset:2px}
.login-fallback{margin-top:22px;padding-top:18px;border-top:1px solid var(--border-inverse-strong)}
.login-or{margin:0 0 14px;font-size:var(--text-xs);letter-spacing:var(--track-wide);
 text-transform:uppercase;color:var(--kane-navy-200)}
.whoami{font-size:var(--text-xs);color:var(--kane-navy-100);max-width:22ch;overflow:hidden;
 text-overflow:ellipsis;white-space:nowrap}
.whoami strong{font-weight:var(--weight-semibold);color:var(--fg-inverse)}

/* ------------------------------------------------------------------ alerts */
.alert{background:var(--kane-danger-soft);color:var(--fg-1);padding:10px 12px;font-size:var(--text-sm);
 border-left:4px solid var(--kane-danger);border-radius:var(--radius-sm)}
.note{background:var(--kane-info-soft);color:var(--fg-1);padding:10px 12px;font-size:var(--text-sm);
 border-left:4px solid var(--kane-info);border-radius:var(--radius-sm)}

/* ------------------------------------------------------------------ board */
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.pagehead .sub{color:var(--kane-neutral-600);font-size:var(--text-sm);margin-top:4px}
.pagehead .sub b{font-variant-numeric:tabular-nums;color:var(--fg-1)}
.filters{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end;margin:16px 0 18px;
 background:var(--bg-1);border:1px solid var(--border-1);border-radius:var(--radius-lg);
 padding:14px;box-shadow:var(--shadow-xs)}
.filters label{display:flex;flex-direction:column;gap:5px;font-size:var(--text-sm)}
.filters label>span:first-child{font:var(--weight-semibold) 10.5px/1 var(--font-body);
 letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--kane-neutral-600)}
.filters input,.filters select{font:var(--text-sm) var(--font-body);color:var(--fg-1);padding:7px 9px;
 border:1px solid var(--border-2);border-radius:var(--radius-md);background:var(--bg-1);min-width:0}
.filters input:focus,.filters select:focus{outline:2px solid var(--kane-blue-600);outline-offset:0;
 border-color:var(--kane-blue-600)}
.filters label.on input,.filters label.on select{border-color:var(--kane-blue-600);
 background:var(--kane-blue-050);box-shadow:inset 0 0 0 1px var(--kane-blue-600)}
.filters label.on>span:first-child{color:var(--kane-blue-700)}
.filters .search{flex:1 1 260px}
.filters .search input{width:100%}
.filters input[type=number]{width:86px}
.filters .pair{display:flex;gap:4px}
.filters .actions{display:flex;gap:12px;align-items:center}
.restored{font-size:var(--text-sm);color:var(--kane-neutral-600);margin-bottom:8px}
.restored a{font-weight:var(--weight-medium)}
.filters .clear{font-size:var(--text-sm);font-weight:var(--weight-medium)}
.cols{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(252px,1fr);gap:14px;
 overflow-x:auto;padding-bottom:12px;scroll-snap-type:x proximity}
.col{scroll-snap-align:start;min-width:0}
.col h2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 10px;
 padding-bottom:7px;border-bottom:3px solid var(--stage-color,var(--kane-navy-800))}
.col h2 .lbl{font:var(--weight-semibold) 11px/1.2 var(--font-body);letter-spacing:var(--track-widest);
 text-transform:uppercase;color:var(--fg-1)}
/* the stat format: Fraunces, gold — gold-800 because this sits on a light canvas */
.col h2 .count{font:var(--weight-heavy) 22px/1 var(--font-display);letter-spacing:-.5px;
 font-variant-numeric:tabular-nums;color:var(--kane-gold-800)}
.card{display:block;background:var(--bg-1);border:1px solid var(--border-1);
 border-left:4px solid var(--stage-color,var(--border-2));border-radius:var(--radius-md);
 padding:9px 11px;margin-bottom:8px;font-size:var(--text-xs);color:inherit;text-decoration:none;
 box-shadow:var(--shadow-xs);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.card:hover,.card:focus-visible{border-color:var(--kane-blue-600);
 border-left-color:var(--stage-color,var(--kane-blue-600));box-shadow:var(--shadow-sm);outline:none;color:inherit}
.card .row1{display:flex;justify-content:space-between;gap:6px}
.card .pin{font-weight:var(--weight-semibold);font-size:12.5px;color:var(--fg-1);word-break:break-all}
.card .score{font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:var(--fg-2)}
.card .owner{font-weight:var(--weight-medium);font-size:var(--text-sm);margin-top:2px;overflow:hidden;
 text-overflow:ellipsis;white-space:nowrap;color:var(--fg-1)}
.card .meta{color:var(--kane-neutral-600);font-size:11.5px;margin-top:3px;font-variant-numeric:tabular-nums}
.card .chips{margin-top:5px}
.empty,.more{color:var(--kane-neutral-600);font-size:var(--text-xs);padding:6px 2px}
.offline{background:var(--bg-1);border:1px solid var(--border-1);border-left:4px solid var(--kane-warning);
 border-radius:var(--radius-sm);padding:9px 12px;font-size:var(--text-xs);color:var(--fg-1);margin-top:14px}

/* stage → semantic token */
.st-universe{--stage-color:var(--kane-neutral-400);--stage-soft:var(--kane-neutral-100)}
.st-screened{--stage-color:var(--kane-success);--stage-soft:var(--kane-success-soft)}
.st-review{--stage-color:var(--kane-warning);--stage-soft:var(--kane-warning-soft)}
.st-scorecarded{--stage-color:var(--kane-info);--stage-soft:var(--kane-info-soft)}
.st-phase1{--stage-color:var(--kane-blue-800);--stage-soft:var(--kane-blue-100)}
.st-interconnection{--stage-color:var(--kane-navy-600);--stage-soft:var(--kane-navy-100)}
.st-advanced{--stage-color:var(--kane-navy-800);--stage-soft:var(--kane-navy-100)}
.st-parked{--stage-color:var(--kane-neutral-500);--stage-soft:var(--kane-neutral-100)}
.st-disqualified{--stage-color:var(--kane-danger);--stage-soft:var(--kane-danger-soft)}

/* ------------------------------------------------------------------ chips */
.chip{display:inline-block;font:var(--weight-semibold) 10.5px/1.6 var(--font-body);
 letter-spacing:var(--track-wide);text-transform:uppercase;padding:0 7px;margin:2px 4px 2px 0;
 border-radius:var(--radius-sm);background:var(--kane-neutral-100);color:var(--fg-1);
 border:1px solid var(--chip-edge,var(--border-1));border-left:3px solid var(--chip-rule,var(--border-2));
 white-space:normal;word-break:break-word;vertical-align:middle}
.chip.small{font-size:10px;padding:0 5px}
/* machine-generated reasons: code-like, so mono and as-is (no case change) */
.chip.reason{font-family:var(--font-mono);font-weight:var(--weight-medium);text-transform:none;
 letter-spacing:0;font-size:11px}
.chip.ok{background:var(--kane-success-soft);--chip-rule:var(--kane-success);--chip-edge:var(--kane-success-soft)}
.chip.review,.chip.warn{background:var(--kane-warning-soft);--chip-rule:var(--kane-warning);--chip-edge:var(--kane-warning-soft)}
.chip.dq{background:var(--kane-danger-soft);--chip-rule:var(--kane-danger);--chip-edge:var(--kane-danger-soft)}
.chip.ej{background:var(--kane-info-soft);--chip-rule:var(--kane-info);--chip-edge:var(--kane-info-soft)}
.chip.stage{background:var(--stage-soft);--chip-rule:var(--stage-color);--chip-edge:var(--stage-soft)}
.chip.band-high{background:var(--kane-success-soft);--chip-rule:var(--kane-success);--chip-edge:var(--kane-success-soft)}
.chip.band-medium{background:var(--kane-warning-soft);--chip-rule:var(--kane-warning);--chip-edge:var(--kane-warning-soft)}
.chip.band-low{background:var(--kane-danger-soft);--chip-rule:var(--kane-danger);--chip-edge:var(--kane-danger-soft)}
.chip.v-go{background:var(--kane-success-soft);--chip-rule:var(--kane-success);--chip-edge:var(--kane-success-soft)}
.chip.v-conditional{background:var(--kane-warning-soft);--chip-rule:var(--kane-warning);--chip-edge:var(--kane-warning-soft)}
.chip.v-nogo{background:var(--kane-danger-soft);--chip-rule:var(--kane-danger);--chip-edge:var(--kane-danger-soft)}

/* ------------------------------------------------------------ site detail */
.crumbs{font-size:var(--text-sm);margin-bottom:10px;font-weight:var(--weight-medium)}
.sitehead .pinline{font:var(--weight-medium) var(--text-base)/1.3 var(--font-mono);color:var(--fg-2);
 margin-top:6px;word-break:break-all}
.chips.top{margin-top:10px}
.banner{margin:14px 0;padding:11px 14px;font-size:var(--text-sm);border-left:4px solid;
 border-radius:var(--radius-sm);background:var(--bg-1);color:var(--fg-1)}
.banner.warn{background:var(--kane-warning-soft);--chip-edge:var(--kane-warning)}
.banner.dq{background:var(--kane-danger-soft);--chip-edge:var(--kane-danger)}
.banner.ok{background:var(--kane-success-soft);--chip-edge:var(--kane-success)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}
.panel-c{background:var(--bg-1);border:1px solid var(--border-1);border-radius:var(--radius-lg);
 padding:16px 18px;min-width:0;box-shadow:var(--shadow-xs)}
.panel-c h2{font:var(--weight-bold) var(--text-base)/1.3 var(--font-body);color:var(--fg-1);
 border-bottom:2px solid var(--kane-navy-800);padding-bottom:6px;margin:0 0 12px}
#map-sec{grid-column:1 / -1}
.map{height:440px;background:var(--kane-navy-050);border:1px solid var(--border-1);border-radius:var(--radius-md)}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:var(--text-xs);color:var(--fg-2);
 margin-top:10px;align-items:center}
.legend .lg{display:inline-block;width:14px;height:10px;margin-right:6px;vertical-align:middle;border:2px solid}
/* map colours: brand for the site, water-blue kept for wetlands (legibility) */
.lg.parcel{border-color:var(--kane-navy-800);background:color-mix(in srgb,var(--kane-navy-800) 8%,transparent)}
.lg.wetland{border-color:#1F6FB2;background:rgba(31,111,178,.5)}  /* water blue, deliberately not a brand token */
.lg.feeder{border-color:var(--kane-gold-600);background:color-mix(in srgb,var(--kane-gold-400) 30%,transparent);border-style:dashed}
.lg.sub{border-color:var(--kane-white);background:var(--kane-navy-800);border-radius:50%;width:12px;height:12px;
 box-shadow:0 0 0 1px var(--kane-navy-800,#1B2A4A)}
.lg.miso{border-color:var(--kane-neutral-600);background:var(--kane-white);border-radius:50%;width:10px}
/* legend swatches follow the base map (site.js toggles .base-satellite on #map-sec) */
/* a white line is invisible on the light page, so the swatch gets a dark ring + backing */
.base-satellite .lg.parcel{border-color:#FFFFFF;background:rgba(27,42,74,.55);box-shadow:0 0 0 1px var(--kane-navy-800,#1B2A4A)}
.base-satellite .lg.wetland{border-color:#4FC3F7;background:rgba(79,195,247,.35)}
.base-satellite .lg.building{border-color:#FFB27A;background:rgba(255,178,122,.3)}
.base-satellite .lg.feeder{border-color:var(--kane-gold-400);background:color-mix(in srgb,var(--kane-gold-400) 20%,transparent)}
.gmaps{margin-left:auto;font-weight:var(--weight-medium)}
.kv{display:grid;grid-template-columns:minmax(120px,34%) 1fr;gap:7px 14px;margin:0;font-size:var(--text-sm)}
.kv dt{color:var(--kane-neutral-600);font:var(--weight-medium) var(--text-xs)/1.7 var(--font-body)}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere;color:var(--fg-1)}
.bigrow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}
.big{background:var(--bg-3);border:1px solid var(--border-1);border-radius:var(--radius-md);
 padding:10px 12px;display:flex;flex-direction:column}
.big .lab{font:var(--weight-semibold) 10px/1.3 var(--font-body);letter-spacing:var(--track-wide);
 text-transform:uppercase;color:var(--kane-neutral-600)}
.big .val{font:var(--weight-heavy) 26px/1.15 var(--font-display);letter-spacing:-.5px;
 font-variant-numeric:tabular-nums;color:var(--fg-1);margin-top:3px}
.big .sub{font-size:11.5px;color:var(--kane-neutral-600)}
.tbl{width:100%;border-collapse:collapse;font-size:var(--text-sm);margin:4px 0 10px}
.tbl th{text-align:left;font:var(--weight-semibold) 10.5px/1.3 var(--font-body);letter-spacing:var(--track-wide);
 text-transform:uppercase;color:var(--kane-neutral-600);border-bottom:1px solid var(--border-2);padding:5px 6px}
.tbl td{padding:6px;border-bottom:1px solid var(--border-1);font-variant-numeric:tabular-nums}
.tbl.compact td{padding:4px 6px}
.r{text-align:right}
.reasons{margin:8px 0}
.reasons .lab{font:var(--weight-semibold) 10.5px var(--font-body);text-transform:uppercase;
 letter-spacing:var(--track-wide);color:var(--kane-neutral-600);margin-right:6px}
.ok-t{color:var(--fg-1);border-left:3px solid var(--kane-success);padding-left:8px}
.hist{margin-top:12px;font-size:var(--text-sm)}
.hist summary{cursor:pointer;font-weight:var(--weight-semibold);color:var(--fg-action)}
.hist ol{padding-left:18px;margin:8px 0 0}
.hist li{margin-bottom:5px}
.plain{list-style:none;padding:0;margin:4px 0 0}
.p1{list-style:none;padding:0;margin:8px 0 0;font-size:13px}
.p1 li{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--border-1);padding:4px 0}
.p1 b{font:var(--weight-semibold) 11px/1.5 var(--font-body);letter-spacing:var(--track-wide);
 text-transform:uppercase;padding:0 6px;border-radius:var(--radius-sm);color:var(--fg-1)}
.p1-flag b{background:var(--kane-danger-soft);box-shadow:inset 3px 0 0 var(--kane-danger)}
.p1-clear b{background:var(--kane-success-soft);box-shadow:inset 3px 0 0 var(--kane-success)}
.p1-not_screened b{background:var(--kane-warning-soft);box-shadow:inset 3px 0 0 var(--kane-warning)}
.links{padding-left:18px;margin:0;font-size:var(--text-sm)}
.links li{margin-bottom:7px}
.sel{user-select:all;word-break:break-all}

/* Leaflet, restyled minimally to the system */
.leaflet-container{font-family:var(--font-body);background:var(--kane-navy-050)}
.leaflet-bar{border:1px solid var(--border-2)!important;border-radius:var(--radius-md)!important;
 box-shadow:var(--shadow-sm)!important;overflow:hidden}
.leaflet-bar a{color:var(--fg-1)!important;border-bottom-color:var(--border-1)!important}
.leaflet-bar a:hover{background:var(--kane-blue-050)!important;color:var(--kane-blue-700)!important}
.leaflet-control-layers{border:1px solid var(--border-2)!important;border-radius:var(--radius-md)!important;
 box-shadow:var(--shadow-sm)!important;color:var(--fg-1)}
.leaflet-control-layers-expanded{padding:8px 12px}
.leaflet-tooltip{font:var(--weight-medium) var(--text-xs) var(--font-body);color:var(--fg-1);
 border-radius:var(--radius-sm);border-color:var(--border-2);box-shadow:var(--shadow-sm)}
.leaflet-control-attribution{font-size:10.5px}
.leaflet-control-attribution a{color:var(--fg-action)}
.leaflet-control-scale-line{border-color:var(--kane-navy-800);color:var(--fg-1)}

@media (max-width:820px){
 .grid2{grid-template-columns:1fr}
 .map{height:320px}
 .kv{grid-template-columns:1fr;gap:0}
 .kv dt{margin-top:9px}
 .bigrow{gap:6px}
 .big .val{font-size:20px}
 .cols{grid-auto-columns:minmax(80vw,1fr)}
 .filters{padding:12px}
 .filters label:not(.search){flex:1 1 44%}
 .filters select,.filters input{font-size:var(--text-base)}
 .filters .search{flex-basis:100%}
 .topbar .ro,.brandlink .appname{display:none}
 .topbar{padding:10px 12px}
 .topbar nav{gap:10px;font-size:13px}
 .brandlink img{height:16px}
 .linkbtn{padding:4px 9px}
 .who-pre{display:none}
 .whoami{max-width:16ch}
 h1.title{font-size:24px}
 .login-hero{grid-template-columns:1fr;gap:28px}
 .login-eyebrow{margin-top:24px}
 .login-h1{font-size:34px}
 .login-lead{font-size:var(--text-base)}
}

/* ------------------------------------------------------------- assemblages */
.stack{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.stack label,.stack-l{display:flex;flex-direction:column;gap:5px;font-size:var(--text-sm);margin:10px 0}
.stack label>span:first-child,.stack-l>span:first-child{font:var(--weight-semibold) 10.5px/1 var(--font-body);
 letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--kane-neutral-600)}
.stack input,.stack select,.stack textarea,.stack-l textarea,.asm-add select,.asm-add input{
 font:var(--text-sm) var(--font-body);color:var(--fg-1);padding:8px 10px;border:1px solid var(--border-2);
 border-radius:var(--radius-md);background:var(--bg-1);width:100%}
.stack textarea,.stack-l textarea{font-family:var(--font-mono);font-size:13px;resize:vertical}
.stack input:focus,.stack select:focus,.stack textarea:focus,.stack-l textarea:focus,
.asm-add select:focus,.asm-add input:focus{outline:2px solid var(--kane-blue-600);outline-offset:0;border-color:var(--kane-blue-600)}
.stack .btn{align-self:flex-start}
form.inline{display:inline;margin:0}
.linkish{background:none;border:0;padding:0;font:inherit;color:var(--fg-action);text-decoration:underline;
 text-underline-offset:2px;cursor:pointer}
.linkish:disabled{color:var(--kane-neutral-500);cursor:default;text-decoration:none}
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.asm-top{margin-top:16px}
.asm-list{margin-top:16px}
.asm-list h2 a{float:right;font-weight:var(--weight-medium)}
.asm-add{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;margin-top:8px}
.asm-add .or{grid-column:1 / -1;font-size:var(--text-xs);color:var(--kane-neutral-600);margin:4px 0 -2px}
.asm-member{margin:0 0 6px;font-size:var(--text-sm)}
@media (max-width:820px){.asm-add{grid-template-columns:1fr}}

/* assemblage cards on the board: a stacked-sheet card, pinned above parcels */
.asmcard{background:var(--kane-navy-050);box-shadow:3px 3px 0 var(--bg-1),4px 4px 0 var(--border-2);
 margin-bottom:12px}
.asmcard:hover,.asmcard:focus-visible{box-shadow:3px 3px 0 var(--bg-1),4px 4px 0 var(--kane-blue-600)}
.asm-eyebrow{font:var(--weight-semibold) 10px/1.3 var(--font-body);letter-spacing:var(--track-wide);
 text-transform:uppercase;color:var(--kane-navy-600);margin-bottom:2px}
.asmcard .asm-name{font-weight:var(--weight-bold);font-size:var(--text-sm);color:var(--fg-1)}
.asm-n{font:var(--weight-semibold) 10px/1 var(--font-body);letter-spacing:0;text-transform:none;
 color:var(--kane-navy-600);background:var(--kane-navy-100);padding:2px 5px;border-radius:var(--radius-pill);
 vertical-align:1px}
.chip.asm{background:var(--kane-navy-050);--chip-rule:var(--kane-navy-600);--chip-edge:var(--kane-navy-100);
 text-transform:none;letter-spacing:0}
.asm-note{background:var(--bg-1);border:1px solid var(--border-1);border-left:4px solid var(--kane-warning);
 border-radius:var(--radius-sm);padding:9px 12px;font-size:var(--text-sm);margin:0 0 14px}
/* financials */
.panel-c.wide{grid-column:1 / -1}
.bigrow.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-fin{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;margin-top:6px}
.chip.irr{background:var(--kane-blue-050);--chip-rule:var(--kane-blue-600);--chip-edge:var(--kane-blue-100);
 text-transform:none;letter-spacing:0;font-variant-numeric:tabular-nums}
@media (max-width:820px){.bigrow.four{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-fin{grid-template-columns:1fr}}

/* scorecards */
.sc-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sc-head .chip.verdict{font-size:13px;padding:2px 10px}
.sc-score{font:var(--weight-heavy) 28px/1 var(--font-display);font-variant-numeric:tabular-nums}
.sc-live{position:sticky;top:52px;z-index:5;margin:14px 0}
.sc-live .val.v-go{color:var(--kane-success)}
.sc-live .val.v-conditional{color:var(--kane-gold-800)}
.sc-live .val.v-nogo{color:var(--kane-danger)}
.sc-table select{font:var(--text-sm) var(--font-body);padding:5px 8px;border:1px solid var(--border-2);
 border-radius:var(--radius-md);min-width:64px}
.sc-table tr.placeholder td:first-child b{color:var(--fg-2)}
.sc-notes{border-bottom:1px solid var(--border-1);padding:6px 0}
.sc-notes summary{cursor:pointer;font-weight:var(--weight-medium);color:var(--fg-action)}
.grid2.tight{gap:10px;margin-top:6px}
form#scform>section{margin-top:14px}
@media (max-width:820px){.sc-live{top:48px}}

/* buildings on site: neutral slate, informational (not a warning) */
.chip.bldg{background:color-mix(in srgb,var(--kane-neutral-600) 14%,transparent);color:var(--kane-neutral-600)}
.lg.building{border-color:#8A4B2A;background:rgba(138,75,42,.45)}  /* rust, distinct from parcel navy and wetland blue */

/* owner class (municipal strategy): public bodies are FILLED navy with a gold rule so they
   read at a glance among the tinted status chips; everything private is muted neutral */
.chip.cls{text-transform:none;letter-spacing:0}
.chip.cls.pub{background:var(--kane-navy-600);color:#fff;--chip-rule:var(--kane-gold-600);--chip-edge:var(--kane-navy-600)}
.chip.cls.priv{background:color-mix(in srgb,var(--kane-neutral-600) 10%,transparent);color:var(--kane-neutral-600)}
.cp-members{margin:0;padding-left:18px;font-size:var(--text-sm)}
.cp-members li{margin:2px 0}
.cp-def{font-size:var(--text-xs);color:var(--kane-neutral-600);margin:8px 0 0}
tr.dqrow td{color:var(--kane-neutral-600)}

/* ------------------------------------------------ "What do these mean?" help */
.helpdd{position:relative;display:inline-block}
.helpdd>summary{list-style:none;cursor:pointer}
.helpdd>summary::-webkit-details-marker{display:none}
.helpbtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;
 border-radius:50%;border:1px solid var(--kane-blue-600);color:var(--kane-blue-700);background:var(--bg-1);
 font:var(--weight-bold) var(--text-sm)/1 var(--font-body)}
.helpbtn:hover,.helpdd[open]>.helpbtn{background:var(--kane-blue-050)}
.helplink{font:var(--weight-medium) var(--text-xs)/1.4 var(--font-body);color:var(--fg-action);
 text-decoration:underline;text-underline-offset:2px;margin-left:10px}
.helppanel{position:absolute;right:0;top:calc(100% + 8px);z-index:900;width:min(560px,86vw);
 background:var(--bg-1);border:1px solid var(--border-2);border-radius:var(--radius-lg);
 box-shadow:var(--shadow-lg,var(--shadow-sm));padding:12px 16px;
 font:var(--weight-regular) var(--text-sm)/1.5 var(--font-body);color:var(--fg-1);text-align:left}
.helppanel.small{font-size:var(--text-xs);width:min(480px,86vw)}
.helphead{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.helpx{border:0;background:none;color:var(--kane-neutral-600);font-size:20px;line-height:1;cursor:pointer;padding:2px 6px}
.helpx:hover{color:var(--fg-1)}
.helpbody p{margin:0 0 9px}
.helpbody .helpclose{margin:10px 0 0;padding-top:8px;border-top:1px solid var(--border-1)}
.panelhead{display:flex;align-items:baseline;gap:4px 12px;flex-wrap:wrap;
 border-bottom:2px solid var(--kane-navy-800);margin:0 0 12px}
.panel-c .panelhead h2{border:0;margin:0}
.helptip .helplink{margin-left:0}
/* site page: span the Score panel itself so it can never overflow the viewport */
.panel-c{position:relative}
.helpdd.helptip{position:static}
.helptip .helppanel{left:8px;right:8px;width:auto;top:38px;max-height:70vh;overflow:auto}
/* board: anchor the panel to the filter bar (the ? button floats wherever the filters wrap) */
.filters{position:relative}
.helpdd.onform{position:static}
.helpdd.onform .helppanel{left:14px;right:auto;top:calc(100% + 6px);max-height:70vh;overflow:auto}

/* Library panel (site + assemblage pages) */
.lib-filter{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.lib-filter select{font:inherit;font-size:var(--text-sm);padding:4px 8px}
.lib-list{list-style:none;padding-left:0}
.lib-list li{margin-bottom:10px;overflow-wrap:anywhere}
.lib-list li[hidden]{display:none}
.lib-notes{margin-top:2px}
.lib-upload{margin-top:16px;padding-top:14px;border-top:1px solid var(--border-1)}
.lib-upload input[type=file]{font-size:14px;max-width:100%}

/* ---------------------------------------------------- review resolutions */
.cards{min-height:56px}
.card-wrap{margin-bottom:8px}
.card-wrap>.card{margin-bottom:0}
.card-actions,.card-note{display:flex;gap:6px;margin-top:4px}
.btn-sm{font:var(--weight-semibold) 11.5px/1 var(--font-body);padding:5px 9px;cursor:pointer;
 background:var(--bg-1);color:var(--fg-action);border:1px solid var(--border-2);border-radius:var(--radius-sm)}
.btn-sm:hover{border-color:var(--kane-blue-600)}
.drag-ghost{opacity:.45}
.chip.dq.confirmed{background:var(--kane-white);--chip-rule:var(--kane-danger);
 border:1px dashed var(--kane-danger)}   /* a human's DQ: dashed, vs a rule's solid fill */
.chip.ok[href],.chip.dq[href]{text-decoration:none}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:50;max-width:min(92vw,520px);
 background:var(--kane-navy-800);color:var(--fg-inverse);padding:10px 14px;border-radius:var(--radius-md);
 font-size:var(--text-sm);box-shadow:var(--shadow-sm)}
.toast[hidden]{display:none}
.modal{border:0;border-radius:var(--radius-lg);padding:20px 22px;width:min(92vw,460px);color:var(--fg-1);
 box-shadow:var(--shadow-sm)}
.modal::backdrop{background:rgba(27,42,74,.55)}
.modal h2{margin:0 0 4px;font:var(--weight-bold) var(--text-base)/1.3 var(--font-body)}
.modal textarea{width:100%;box-sizing:border-box;font:var(--text-base) var(--font-body);padding:9px 10px;
 border:1px solid var(--kane-navy-300);border-radius:var(--radius-md)}
.modal .req{color:var(--kane-neutral-600);font-weight:var(--weight-regular)}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.resolve-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
