:root{
  --ground:#F5F3EC;
  --surface:#FFFFFF;
  --surface-2:#EEEBE1;
  --ink:#1E271F;
  --ink-muted:#5B6B5D;
  --line:#DBD7C8;
  --accent:#2E6B4C;
  --accent-ink:#F4FBF6;
  --accent-soft:#E1EEE4;
  --accent-strong:#1F5138;
  --warn:#A9611E;
  --warn-soft:#F3E4D3;
  --danger:#A23B32;
  --danger-soft:#F4E0DC;
  --shadow: 0 1px 2px rgba(30,39,31,0.06), 0 6px 20px -8px rgba(30,39,31,0.18);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#141812;
    --surface:#1B211B;
    --surface-2:#232A22;
    --ink:#E8EBE3;
    --ink-muted:#9AAA9B;
    --line:#333B31;
    --accent:#6FBF93;
    --accent-ink:#0E1A13;
    --accent-soft:#20342A;
    --accent-strong:#8ED4AC;
    --warn:#E0A868;
    --warn-soft:#3A2C1B;
    --danger:#E08A7D;
    --danger-soft:#3B2320;
    --shadow: 0 1px 2px rgba(0,0,0,0.4), 0 8px 24px -8px rgba(0,0,0,0.55);
  }
}
:root[data-theme="dark"]{
  --ground:#141812;
  --surface:#1B211B;
  --surface-2:#232A22;
  --ink:#E8EBE3;
  --ink-muted:#9AAA9B;
  --line:#333B31;
  --accent:#6FBF93;
  --accent-ink:#0E1A13;
  --accent-soft:#20342A;
  --accent-strong:#8ED4AC;
  --warn:#E0A868;
  --warn-soft:#3A2C1B;
  --danger:#E08A7D;
  --danger-soft:#3B2320;
  --shadow: 0 1px 2px rgba(0,0,0,0.4), 0 8px 24px -8px rgba(0,0,0,0.55);
}
*{box-sizing:border-box;}
body{
  background:var(--ground);
  color:var(--ink);
  font-family:"Public Sans", system-ui, -apple-system, sans-serif;
  font-size:15px;
  line-height:1.5;
}
h1,h2,h3{
  font-family:"Fraunces", Georgia, serif;
  font-weight:600;
  text-wrap:balance;
  margin:0;
  color:var(--ink);
}
.num{font-family:"IBM Plex Mono", ui-monospace, monospace; font-variant-numeric:tabular-nums;}
a{color:var(--accent-strong);}
button{font-family:inherit;}

.shell{max-width:1180px;margin:0 auto;padding:28px 20px 80px;}

.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-bottom:20px;margin-bottom:24px;border-bottom:1px solid var(--line);
  flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:12px;}
.brand-mark{
  width:40px;height:40px;border-radius:10px;background:var(--accent);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  box-shadow:var(--shadow);
}
.brand-mark svg{width:22px;height:22px;}
.brand-text h1{font-size:1.5rem;letter-spacing:-0.01em;}
.brand-text p{margin:2px 0 0;color:var(--ink-muted);font-size:0.82rem;}

.sync-pill{
  display:flex;align-items:center;gap:8px;
  background:var(--surface);border:1px solid var(--line);border-radius:999px;
  padding:7px 14px;font-size:0.78rem;color:var(--ink-muted);box-shadow:var(--shadow);
}
.sync-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex-shrink:0;}
.sync-dot.stale{background:var(--warn);}

.tabs{display:flex;gap:6px;margin-bottom:24px;flex-wrap:wrap;}
.tab-btn{
  border:1px solid var(--line);background:var(--surface);color:var(--ink-muted);
  padding:9px 18px;border-radius:10px;font-size:0.88rem;font-weight:600;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.tab-btn:hover{color:var(--ink);}
.tab-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.tab-btn:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px;}

.view{display:none;}
.view.active{display:block;}

.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px;}
.stat-tile{
  background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:16px 18px;box-shadow:var(--shadow);
}
.stat-tile .label{font-size:0.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:6px;}
.stat-tile .value{font-family:"IBM Plex Mono",monospace;font-size:1.6rem;font-weight:600;font-variant-numeric:tabular-nums;}
.stat-tile .sub{font-size:0.76rem;color:var(--ink-muted);margin-top:3px;}

.panel{
  background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:22px 24px;box-shadow:var(--shadow);margin-bottom:20px;
}
.panel h2{font-size:1.15rem;margin-bottom:4px;}
.panel .desc{color:var(--ink-muted);font-size:0.85rem;margin-bottom:16px;}

.board-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.rank-list{display:flex;flex-direction:column;gap:9px;}
.rank-row{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:center;}
.rank-row .rank{font-family:"IBM Plex Mono",monospace;color:var(--ink-muted);font-size:0.78rem;}
.rank-row .bar-wrap{position:relative;background:var(--surface-2);border-radius:6px;height:26px;overflow:hidden;}
.rank-row .bar{position:absolute;left:0;top:0;bottom:0;background:var(--accent-soft);border-right:2px solid var(--accent);}
.rank-row .bar-label{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 10px;font-size:0.82rem;}
.rank-row .bar-count{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:0.8rem;}

.empty-note{color:var(--ink-muted);font-size:0.85rem;font-style:italic;padding:10px 0;}

.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px;padding-bottom:18px;border-bottom:1px dashed var(--line);}
.field{display:flex;flex-direction:column;gap:4px;}
.field label{font-size:0.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-muted);}
select, input[type="text"], input[type="number"], input[type="email"]{
  background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
  padding:7px 10px;color:var(--ink);font-family:inherit;font-size:0.85rem;min-width:130px;
}
select[multiple]{min-height:84px;}
input:focus-visible, select:focus-visible, button:focus-visible{outline:2px solid var(--accent-strong);outline-offset:1px;}
.geo-toggle{display:flex;gap:6px;}
.geo-toggle button{
  border:1px solid var(--line);background:var(--surface-2);color:var(--ink-muted);
  padding:6px 12px;border-radius:8px;font-size:0.78rem;font-weight:600;cursor:pointer;
}
.geo-toggle button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.preset-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}
.preset-chip{
  border:1px solid var(--line);background:var(--surface-2);color:var(--ink-muted);
  padding:4px 9px;border-radius:999px;font-size:0.72rem;cursor:pointer;
}
.preset-chip:hover{color:var(--ink);border-color:var(--accent);}

.ms-dropdown{position:relative;min-width:190px;}
.ms-toggle{
  width:100%;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
  padding:7px 28px 7px 10px;color:var(--ink);font-family:inherit;font-size:0.85rem;
  cursor:pointer;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ms-toggle::after{
  content:"";position:absolute;right:11px;top:50%;width:7px;height:7px;
  border-right:2px solid var(--ink-muted);border-bottom:2px solid var(--ink-muted);
  transform:translateY(-70%) rotate(45deg);pointer-events:none;
}
.ms-toggle.open::after{transform:translateY(-30%) rotate(-135deg);}
.ms-toggle.has-selection{border-color:var(--accent);color:var(--accent-strong);font-weight:700;}
.ms-toggle:hover{border-color:var(--accent);}
.ms-panel{
  position:absolute;top:calc(100% + 4px);left:0;z-index:1500;width:max-content;min-width:240px;max-width:320px;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:8px;
}
.ms-search{width:100%;margin-bottom:6px;min-width:0;}
.ms-options{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;}
.ms-option{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;font-size:0.83rem;cursor:pointer;}
.ms-option:hover{background:var(--surface-2);}
.ms-option input{margin:0;flex-shrink:0;accent-color:var(--accent);width:15px;height:15px;cursor:pointer;}
.ms-option .no-match{color:var(--ink-muted);font-style:italic;padding:5px 6px;font-size:0.8rem;}
.ms-actions{border-top:1px dashed var(--line);margin-top:6px;padding-top:6px;text-align:right;}
.ms-clear-btn{border:none;background:none;color:var(--ink-muted);font-size:0.76rem;text-decoration:underline;cursor:pointer;padding:2px 4px;}
.ms-clear-btn:hover{color:var(--danger);}
.location-field{position:relative;flex:1;min-width:220px;}
.location-field input{width:100%;}
details.advanced-geo{margin-top:8px;}
details.advanced-geo summary{cursor:pointer;font-size:0.74rem;color:var(--ink-muted);}
details.advanced-geo .adv-row{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;}

.permit-table{width:100%;border-collapse:collapse;}
.table-scroll{overflow-x:auto;}
.permit-table th{
  text-align:left;font-size:0.7rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--ink-muted);border-bottom:1px solid var(--line);padding:0 10px 8px;white-space:nowrap;
}
.permit-table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:0.85rem;}
.permit-table tr:last-child td{border-bottom:none;}
.addr{font-weight:600;}
.district-pill{
  display:inline-block;background:var(--accent-soft);color:var(--accent-strong);
  padding:2px 8px;border-radius:999px;font-size:0.72rem;font-weight:600;margin-top:3px;
}
.tree-chip{
  display:inline-flex;align-items:center;gap:4px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:7px;padding:2px 7px;font-size:0.76rem;margin:1px 3px 1px 0;
}
.tree-chip .d{font-family:"IBM Plex Mono",monospace;color:var(--ink-muted);}
.reason-tag{color:var(--ink-muted);font-size:0.78rem;}
.linkrow{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px;}
.linkrow a{font-size:0.76rem;text-decoration:none;font-weight:600;white-space:nowrap;}
.linkrow a::after{content:" ↗";}
.linkrow a.doclink::after{content:" →";}
.date-cell{color:var(--ink-muted);font-size:0.78rem;white-space:nowrap;}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;}
.form-grid .full{grid-column:1 / -1;}
.hint{font-size:0.76rem;color:var(--ink-muted);margin-top:3px;}
.submit-btn{
  background:var(--accent);color:var(--accent-ink);border:none;border-radius:9px;
  padding:11px 22px;font-weight:700;font-size:0.9rem;cursor:pointer;box-shadow:var(--shadow);
}
.submit-btn:hover{background:var(--accent-strong);}
.submit-btn:disabled{opacity:0.55;cursor:default;}
.ghost-btn{
  background:transparent;border:1px solid var(--line);color:var(--ink-muted);
  border-radius:8px;padding:6px 12px;font-size:0.78rem;cursor:pointer;font-weight:600;
}
.ghost-btn:hover{color:var(--danger);border-color:var(--danger);}
.toast{
  margin-top:14px;padding:10px 14px;border-radius:9px;font-size:0.84rem;display:none;
}
.toast.ok{display:block;background:var(--accent-soft);color:var(--accent-strong);}
.toast.err{display:block;background:var(--danger-soft);color:var(--danger);}

.sub-list{display:flex;flex-direction:column;gap:10px;margin-top:12px;}
.sub-row{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:10px 14px;
}
.sub-row .meta{font-size:0.78rem;color:var(--ink-muted);}

footer{margin-top:36px;padding-top:18px;border-top:1px solid var(--line);color:var(--ink-muted);font-size:0.78rem;}
footer a{color:var(--ink-muted);}

.legend-note{display:flex;align-items:flex-start;gap:8px;font-size:0.78rem;color:var(--ink-muted);background:var(--surface-2);border-radius:9px;padding:10px 12px;margin-bottom:16px;}

.vclass-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:0.72rem;font-weight:700;white-space:nowrap;}
.vclass-I, .vclass-II, .vclass-III{background:var(--accent-soft);color:var(--accent-strong);}
.vclass-IV{background:var(--warn-soft);color:var(--warn);}
.vclass-V{background:var(--danger-soft);color:var(--danger);}

.map-wrap{position:relative;width:100%;padding-top:77.9%;border-radius:10px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);margin-top:6px;background:#1b2a1f;}
.leaflet-map-el{position:absolute;inset:0;background:#1b2a1f;}
.dot-green{background:#3fae5c;}
.dot-yellow{background:#e0a83c;}
.dot-red{background:#d1453b;}

/* Raievalvuri oma punkti-/klastritäpid Leafleti divIcon markerite jaoks */
.rv-pin-dot{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,0.6);}
.rv-cluster-dot{
  width:100%;height:100%;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,0.6);
  display:flex;align-items:center;justify-content:center;color:#fff;font-family:"IBM Plex Mono",monospace;
  font-weight:700;font-size:0.78rem;
}
.leaflet-tooltip.rv-tooltip{
  background:var(--surface);border:1px solid var(--line);color:var(--ink);
  border-radius:8px;padding:8px 10px;font-size:0.78rem;box-shadow:var(--shadow);max-width:220px;line-height:1.4;
}
.leaflet-tooltip.rv-tooltip::before{display:none;}
.map-zoom-controls{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:5px;z-index:1000;}
.map-zoom-btn{
  width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  color:var(--ink);font-size:1.15rem;line-height:1;cursor:pointer;box-shadow:var(--shadow);font-weight:600;
}
.map-zoom-btn:hover{background:var(--surface-2);}
.map-zoom-btn:active{background:var(--accent-soft);}
.map-legend{display:flex;gap:16px;margin-top:12px;font-size:0.8rem;color:var(--ink-muted);flex-wrap:wrap;}
.legend-item{display:flex;align-items:center;gap:6px;}
.legend-item .dot{width:10px;height:10px;border-radius:50%;display:inline-block;}

.geo-open-btn{
  background:none;border:none;color:var(--accent-strong);font-size:0.76rem;font-weight:600;
  cursor:pointer;padding:0;text-decoration:underline;font-family:inherit;
}
.geo-open-btn:hover{color:var(--accent);}

.popup-backdrop{position:fixed;inset:0;background:rgba(20,24,18,0.55);z-index:2000;}
.geo-popup{
  position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2001;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);
  padding:22px 24px;width:min(90vw, 380px);
}
.geo-popup-close{
  position:absolute;top:10px;right:12px;background:none;border:none;color:var(--ink-muted);
  font-size:1.3rem;line-height:1;cursor:pointer;padding:4px;
}
.geo-popup-close:hover{color:var(--ink);}
.geo-popup-title{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.05rem;padding-right:20px;}
.geo-popup-sub{font-size:0.78rem;color:var(--ink-muted);margin-top:2px;font-family:"IBM Plex Mono",monospace;}
.geo-popup-actions{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.geo-popup-btn{
  display:block;text-align:center;background:var(--accent);color:var(--accent-ink);
  border-radius:9px;padding:10px 14px;font-weight:700;font-size:0.86rem;text-decoration:none;
}
.geo-popup-btn:hover{background:var(--accent-strong);}
.geo-popup-copy{display:flex;gap:6px;margin-top:14px;}
.geo-popup-copy input{flex:1;min-width:0;font-size:0.76rem;}
.geo-popup-copy button{
  border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:8px;
  padding:6px 10px;font-size:0.78rem;font-weight:600;cursor:pointer;white-space:nowrap;
}
.geo-popup-copy button:hover{background:var(--accent-soft);}
.geo-popup-hint{font-size:0.72rem;color:var(--ink-muted);margin-top:10px;line-height:1.4;}

@media (max-width: 860px){
  .stat-row{grid-template-columns:repeat(2,1fr);}
  .board-grid{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
}
