:root {
  --forest:#0D3D2A; --canopy:#1A5C3E; --leaf:#2E8B57; --sprout:#4DB87A;
  --mist:#E8F5EE; --earth:#7B5E3A; --sun:#F5C842; --amber:#E8832A;
  --alert:#C84B2F; --cloud:#F7F9F8; --stone:#8A9E94; --bark:#2A1F14;
  --ink:#111816; --fog:#D4E4DA; --radius:18px; --radius-sm:10px;
  --shadow:0 4px 24px rgba(13,61,42,0.12); --shadow-lg:0 12px 48px rgba(13,61,42,0.18);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:'Sora',sans-serif;background:#0A1F14;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.phone{width:375px;height:812px;background:var(--cloud);border-radius:44px;overflow:hidden;position:relative;box-shadow:0 0 0 2px #2A3D32,0 0 0 4px #0D3D2A,var(--shadow-lg);display:flex;flex-direction:column}
.status-bar{background:var(--forest);padding:14px 24px 10px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.status-bar .time{font-size:15px;font-weight:600;color:#fff;letter-spacing:.02em}
.status-bar .icons{display:flex;gap:6px;align-items:center}
.status-bar .icons span{font-size:12px;color:rgba(255,255,255,.8)}
.top-bar{background:var(--forest);padding:8px 20px 18px;color:white;flex-shrink:0}
.top-bar .logo-row{display:flex;align-items:center;justify-content:space-between}
.top-bar .brand{display:flex;align-items:center;gap:8px}
.top-bar .brand-icon{width:32px;height:32px;background:var(--sprout);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}
.top-bar .brand-name{font-size:17px;font-weight:700;letter-spacing:-.02em}
.top-bar .brand-sub{font-size:10px;color:var(--sprout);letter-spacing:.08em;text-transform:uppercase;margin-top:1px}
.top-bar .avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--sprout),var(--canopy));border:2px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:white;cursor:pointer}
.screens{flex:1;overflow:hidden;position:relative}
.screen{position:absolute;inset:0;overflow-y:auto;display:none;flex-direction:column;background:var(--cloud)}
.screen.active{display:flex}
.screen::-webkit-scrollbar{display:none}
.bottom-nav{background:white;border-top:1px solid var(--fog);display:flex;padding:10px 0 20px;flex-shrink:0}
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:all .2s;padding:4px 0}
.nav-item .nav-icon{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}
.nav-item .nav-label{font-size:10px;font-weight:500;color:var(--stone);transition:color .2s}
.nav-item.active .nav-icon{background:var(--mist)}
.nav-item.active .nav-label{color:var(--canopy);font-weight:600}
.screen-header{padding:20px 20px 12px}
.screen-title{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:-.03em}
.screen-sub{font-size:13px;color:var(--stone);margin-top:3px}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 20px 16px}
.stat-card{background:white;border-radius:var(--radius-sm);padding:12px;text-align:center;border:1px solid var(--fog)}
.stat-num{font-size:22px;font-weight:700;letter-spacing:-.03em}
.stat-label{font-size:10px;color:var(--stone);margin-top:2px;text-transform:uppercase;letter-spacing:.06em}
.stat-green{color:var(--leaf)} .stat-amber{color:var(--amber)} .stat-gray{color:var(--stone)}
.section-label{font-size:11px;font-weight:600;color:var(--stone);text-transform:uppercase;letter-spacing:.08em;padding:0 20px 10px}
.plot-card{background:white;margin:0 16px 10px;border-radius:var(--radius);padding:16px;display:flex;align-items:center;gap:14px;cursor:pointer;border:1.5px solid var(--fog);transition:all .2s;position:relative;overflow:hidden}
.plot-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:4px 0 0 4px}
.plot-card.high::before{background:var(--leaf)} .plot-card.medium::before{background:var(--amber)} .plot-card.low::before{background:var(--alert)}
.plot-card:active{transform:scale(.98)}
.plot-avatar{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.plot-avatar.high{background:var(--mist)} .plot-avatar.medium{background:#FFF3E0} .plot-avatar.low{background:#FFEBEE}
.plot-info{flex:1;min-width:0}
.plot-name{font-size:15px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.plot-meta{font-size:12px;color:var(--stone);margin-top:2px}
.badge{font-size:10px;font-weight:600;padding:4px 10px;border-radius:20px;letter-spacing:.04em;text-transform:uppercase;flex-shrink:0}
.badge.high{background:var(--mist);color:var(--canopy)} .badge.medium{background:#FFF3E0;color:#C06010} .badge.low{background:#FFEBEE;color:var(--alert)}
.badge.repair{background:#FFF3E0;color:#C06010}
.plots-actions{display:flex;gap:8px;padding:4px 16px 4px}
.upload-btn{flex:1;background:var(--forest);color:white;border:none;border-radius:var(--radius);padding:14px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .2s}
.upload-btn:active{transform:scale(.98);background:var(--canopy)}
.clear-btn{background:white;color:var(--alert);border:1.5px solid #FFCDD2;border-radius:var(--radius);padding:14px 16px;font-family:'Sora',sans-serif;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s;white-space:nowrap}
.clear-btn:active{transform:scale(.98)}
#file-upload{display:none}
.plots-bottom{padding-bottom:16px}
.map-container{margin:0 16px;border-radius:var(--radius);overflow:hidden;height:220px;position:relative;background:#1a3a28;flex-shrink:0}
#leaflet-map{width:100%;height:100%}
.map-badge{position:absolute;top:10px;right:10px;background:rgba(255,255,255,.95);border-radius:20px;padding:5px 12px;font-size:11px;font-weight:600;color:var(--canopy);display:flex;align-items:center;gap:5px;backdrop-filter:blur(8px);z-index:1000;pointer-events:auto !important}
.map-dot{width:8px;height:8px;border-radius:50%}
.map-hint{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.65);color:white;font-size:11px;border-radius:20px;padding:5px 14px;white-space:nowrap;letter-spacing:.02em;z-index:1000;pointer-events:none}
.edit-toggle{position:absolute;top:10px;left:10px;background:rgba(255,255,255,.95);border-radius:20px;padding:5px 12px;font-size:11px;font-weight:600;color:var(--forest);display:flex;align-items:center;gap:5px;backdrop-filter:blur(8px);z-index:1000;cursor:pointer;border:none;font-family:'Sora',sans-serif}
.edit-toggle.active{background:var(--sprout);color:white}
.score-card{background:white;margin:12px 16px 0;border-radius:var(--radius);padding:18px;border:1.5px solid var(--fog)}
.score-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.score-title{font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.02em}
.conf-track{background:var(--fog);height:10px;border-radius:5px;overflow:hidden;margin-bottom:6px}
.conf-fill{height:100%;border-radius:5px;transition:width .8s cubic-bezier(.4,0,.2,1)}
.conf-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--stone);margin-bottom:16px}
.layer-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--fog)}
.layer-row:last-child{border-bottom:none}
.layer-icon{font-size:16px;width:24px;text-align:center;flex-shrink:0}
.layer-name{font-size:12px;color:#555;flex:1}
.layer-bar-bg{width:72px;height:6px;background:var(--fog);border-radius:3px;overflow:hidden;flex-shrink:0}
.layer-bar-fill{height:100%;border-radius:3px}
.layer-val{font-size:12px;font-weight:600;color:var(--ink);width:36px;text-align:right;flex-shrink:0;font-family:'JetBrains Mono',monospace}
.geo-card{background:white;margin:10px 16px 0;border-radius:var(--radius);padding:16px;border:1.5px solid var(--fog)}
.geo-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.geo-item{display:flex;flex-direction:column;gap:2px}
.geo-label{font-size:10px;color:var(--stone);text-transform:uppercase;letter-spacing:.06em}
.geo-val{font-size:14px;font-weight:600;color:var(--ink);font-family:'JetBrains Mono',monospace}
.action-area{padding:14px 16px 20px;display:flex;flex-direction:column;gap:10px}
.btn-primary{background:var(--forest);color:white;border:none;border-radius:var(--radius-sm);padding:14px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s}
.btn-primary:active{transform:scale(.98)}
.btn-row{display:flex;gap:10px}
.btn-secondary{flex:1;background:white;color:var(--ink);border:1.5px solid var(--fog);border-radius:var(--radius-sm);padding:13px;font-family:'Sora',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.btn-danger{flex:1;background:white;color:var(--alert);border:1.5px solid #FFCDD2;border-radius:var(--radius-sm);padding:13px;font-family:'Sora',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.compliance-hero{margin:0 16px;background:linear-gradient(135deg,var(--forest) 0%,var(--canopy) 100%);border-radius:var(--radius);padding:22px;color:white;position:relative;overflow:hidden}
.compliance-hero::after{content:'☕';position:absolute;right:-8px;bottom:-8px;font-size:80px;opacity:.08}
.compliance-hero .hero-label{font-size:11px;color:var(--sprout);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px}
.compliance-hero .hero-count{font-size:42px;font-weight:700;letter-spacing:-.04em;line-height:1}
.compliance-hero .hero-sub{font-size:13px;color:rgba(255,255,255,.7);margin-top:4px}
.compliance-hero .hero-date{margin-top:14px;background:rgba(255,255,255,.12);border-radius:8px;padding:8px 12px;font-size:12px;display:flex;align-items:center;gap:8px}
.compliance-list{padding:14px 16px 0}
.compliance-item{background:white;border-radius:var(--radius-sm);padding:14px 16px;display:flex;align-items:center;gap:12px;margin-bottom:8px;border:1.5px solid var(--fog);cursor:pointer}
.compliance-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.ci-green{background:var(--mist)} .ci-amber{background:#FFF3E0} .ci-red{background:#FFEBEE}
.compliance-name{font-size:14px;font-weight:600;color:var(--ink)}
.compliance-detail{font-size:11px;color:var(--stone);margin-top:2px}
.compliance-arrow{color:var(--stone);font-size:16px;margin-left:auto}
.whisp-btn{margin:14px 16px 20px;background:white;border:2px solid var(--forest);color:var(--forest);border-radius:var(--radius-sm);padding:14px;width:calc(100% - 32px);font-family:'Sora',sans-serif;font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;letter-spacing:-.01em}
.activity-list{padding:0 16px}
.activity-item{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--fog);align-items:flex-start}
.activity-item:last-child{border-bottom:none}
.activity-dot-col{display:flex;flex-direction:column;align-items:center;padding-top:4px}
.activity-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.activity-line{width:1px;flex:1;background:var(--fog);margin-top:4px;min-height:20px}
.activity-item:last-child .activity-line{display:none}
.activity-content{flex:1}
.activity-title{font-size:13px;font-weight:600;color:var(--ink);line-height:1.4}
.activity-meta{font-size:11px;color:var(--stone);margin-top:3px}
.activity-tag{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;margin-top:5px;text-transform:uppercase;letter-spacing:.04em}
.tag-confirm{background:var(--mist);color:var(--canopy)} .tag-edit{background:#FFF3E0;color:#C06010}
.tag-reject{background:#FFEBEE;color:var(--alert)} .tag-calib{background:#EDE7F6;color:#512DA8}
.tag-whisp{background:#E3F2FD;color:#1565C0} .tag-repair{background:#FFF8E1;color:#E65100}
.toast{position:absolute;bottom:90px;left:50%;transform:translateX(-50%);background:var(--forest);color:white;font-size:13px;font-weight:500;border-radius:20px;padding:10px 20px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s;z-index:9999;box-shadow:var(--shadow)}
.toast.show{opacity:1}
.vertex-marker{width:14px;height:14px;background:white;border:3px solid #4DB87A;border-radius:50%;cursor:grab;margin-left:-7px;margin-top:-7px;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.vertex-marker:active{cursor:grabbing}
.edit-info-bar{background:var(--mist);border:1px solid #c3e0cd;border-radius:8px;padding:8px 14px;font-size:11px;color:var(--canopy);margin:8px 16px 0;display:flex;align-items:center;gap:6px;font-weight:500}
.edit-info-bar.hidden{display:none}
.leaflet-control-zoom{display:none !important}
.leaflet-control-attribution{font-size:9px !important;opacity:.6}

/* ── OFFLINE BANNER ─────────────────────────────── */
.offline-banner{
  display:none;background:#2A1F14;color:#F5C842;
  font-size:11px;font-weight:600;padding:7px 16px;
  text-align:center;letter-spacing:.02em;flex-shrink:0;
}
.offline-banner.visible{display:block}

/* ── PLAIN LANGUAGE CARD ─────────────────────────── */
.plain-card{
  background:white;margin:10px 16px 0;border-radius:var(--radius);
  padding:16px;border:1.5px solid var(--fog);
}
.plain-verdict{
  font-size:22px;font-weight:700;color:var(--ink);
  letter-spacing:-.02em;line-height:1.2;margin-bottom:6px;
}
.plain-message{
  font-size:13px;color:#444;line-height:1.6;
}
.plain-action{
  margin-top:10px;font-size:12px;font-weight:600;
  color:var(--canopy);background:var(--mist);
  border-radius:8px;padding:8px 12px;display:flex;align-items:flex-start;gap:6px;
}
.details-toggle{
  font-size:11px;font-weight:600;color:var(--stone);
  background:none;border:none;cursor:pointer;
  font-family:'Sora',sans-serif;text-decoration:underline;
  margin-top:8px;padding:0;display:block;
}
.technical-details{display:none}
.technical-details.open{display:block}

/* ── STORAGE PILL ────────────────────────────────── */
.save-pill{
  display:flex;align-items:center;gap:5px;
  font-size:10px;font-weight:600;color:var(--stone);
  background:var(--fog);border-radius:20px;
  padding:4px 10px;margin:4px 16px 0;
  width:fit-content;
}
.save-dot{width:6px;height:6px;border-radius:50%;background:var(--stone)}
.save-dot.saved{background:var(--leaf)}

/* ── WHISP MODE SELECTOR ─────────────────────────── */
.mode-selector{
  display:flex;gap:6px;padding:10px 16px 10px;flex-wrap:wrap;
}
.mode-btn{
  font-family:'Sora',sans-serif;font-size:11px;font-weight:600;
  padding:5px 12px;border-radius:20px;border:1.5px solid var(--fog);
  background:white;color:var(--stone);cursor:pointer;transition:all .2s;
}
.mode-btn.active{background:var(--forest);color:white;border-color:var(--forest)}

/* ── CACHED BADGE ────────────────────────────────── */
.cached-badge{
  font-size:9px;font-weight:600;padding:2px 7px;border-radius:10px;
  background:#E3F2FD;color:#1565C0;margin-left:4px;
}


/* ══════════════════════════════════════════
   STAGE 1 REPAIR MODAL
══════════════════════════════════════════ */
.repair-overlay{
  position:absolute;inset:0;background:rgba(10,31,20,.7);
  backdrop-filter:blur(3px);z-index:8000;
  display:none;align-items:flex-end;justify-content:center;
}
.repair-overlay.active{display:flex}
.repair-sheet{
  background:var(--cloud);border-radius:28px 28px 0 0;
  width:100%;max-height:92%;overflow-y:auto;
  padding:0 0 24px;
}
.repair-sheet::-webkit-scrollbar{display:none}
.repair-drag{width:40px;height:4px;background:var(--fog);border-radius:2px;margin:12px auto 0}
.repair-header{padding:16px 20px 0}
.repair-title{font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.03em}
.repair-subtitle{font-size:13px;color:var(--stone);margin-top:3px;line-height:1.5}

/* Error badge strip */
.error-strip{
  display:flex;gap:8px;padding:14px 20px 4px;
  overflow-x:auto;scrollbar-width:none;
}
.error-strip::-webkit-scrollbar{display:none}
.error-pill{
  flex-shrink:0;display:flex;align-items:center;gap:6px;
  background:#FFEBEE;border-radius:20px;
  padding:6px 12px;font-size:11px;font-weight:600;color:var(--alert);
  border:1px solid #FFCDD2;
}
.error-pill .ep-icon{font-size:14px}

/* Side-by-side mini maps */
.repair-maps{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 16px 0}
.repair-map-wrap{border-radius:14px;overflow:hidden;position:relative}
.repair-map-label{
  position:absolute;top:7px;left:50%;transform:translateX(-50%);
  background:rgba(0,0,0,.6);color:white;font-size:10px;font-weight:600;
  border-radius:20px;padding:3px 10px;white-space:nowrap;z-index:500;
  pointer-events:none;letter-spacing:.04em
}
.repair-map-label.good{background:rgba(46,139,87,.85)}
#repair-map-before,#repair-map-after{width:100%;height:140px}

/* Scores table */
.repair-scores{margin:14px 16px 0;background:white;border-radius:14px;border:1px solid var(--fog);overflow:hidden}
.rs-row{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid var(--fog);gap:10px}
.rs-row:last-child{border-bottom:none}
.rs-icon{font-size:15px;width:22px;text-align:center;flex-shrink:0}
.rs-name{font-size:12px;color:var(--ink);flex:1;font-weight:500}
.rs-bar-bg{width:60px;height:5px;background:var(--fog);border-radius:3px;overflow:hidden;flex-shrink:0}
.rs-bar-fill{height:100%;border-radius:3px}
.rs-val{font-size:12px;font-weight:700;width:34px;text-align:right;flex-shrink:0;font-family:'JetBrains Mono',monospace}
.rs-delta{font-size:10px;font-weight:600;padding:2px 7px;border-radius:10px;flex-shrink:0}
.rs-delta.pos{background:#E8F5EE;color:var(--canopy)}
.rs-delta.neg{background:#FFEBEE;color:var(--alert)}
.rs-delta.neu{background:var(--fog);color:var(--stone)}

/* Repair selection cards */
.repair-candidates{padding:12px 16px 0}
.repair-cand-title{font-size:12px;font-weight:600;color:var(--stone);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.repair-cand{
  background:white;border:2px solid var(--fog);border-radius:14px;
  padding:13px 14px;margin-bottom:8px;cursor:pointer;transition:all .2s;
  display:flex;align-items:center;gap:12px;
}
.repair-cand.selected{border-color:var(--leaf);background:var(--mist)}
.repair-cand:active{transform:scale(.98)}
.repair-cand .rc-radio{
  width:18px;height:18px;border-radius:50%;border:2px solid var(--fog);
  flex-shrink:0;display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.repair-cand.selected .rc-radio{border-color:var(--leaf);background:var(--leaf)}
.repair-cand.selected .rc-radio::after{content:'';width:6px;height:6px;border-radius:50%;background:white}
.repair-cand .rc-body{flex:1}
.repair-cand .rc-name{font-size:13px;font-weight:600;color:var(--ink)}
.repair-cand .rc-desc{font-size:11px;color:var(--stone);margin-top:2px;line-height:1.4}
.repair-cand .rc-score{font-size:13px;font-weight:700;flex-shrink:0;font-family:'JetBrains Mono',monospace}

/* Action buttons */
.repair-actions{display:flex;gap:10px;padding:16px 16px 0}
.repair-btn-accept{
  flex:1;background:var(--forest);color:white;border:none;
  border-radius:var(--radius-sm);padding:14px;
  font-family:'Sora',sans-serif;font-size:14px;font-weight:600;
  cursor:pointer;transition:all .2s;
}
.repair-btn-accept:active{transform:scale(.98)}
.repair-btn-reject{
  background:white;color:var(--alert);border:1.5px solid #FFCDD2;
  border-radius:var(--radius-sm);padding:14px 16px;
  font-family:'Sora',sans-serif;font-size:13px;font-weight:600;
  cursor:pointer;transition:all .2s;white-space:nowrap;
}
.repair-btn-reject:active{transform:scale(.98)}

/* ══════════════════════════════════════════
   WHISP RESULTS SCREEN
══════════════════════════════════════════ */
.whisp-hero{margin:0 16px;background:linear-gradient(135deg,#0D3D2A 0%,#1A5C3E 100%);border-radius:var(--radius);padding:20px;color:white;position:relative;overflow:hidden}
.whisp-hero::after{content:'🛰️';position:absolute;right:-4px;bottom:-8px;font-size:72px;opacity:.08}
.whisp-hero .wh-label{font-size:11px;color:var(--sprout);text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}
.whisp-hero .wh-risk{font-size:36px;font-weight:700;letter-spacing:-.03em;line-height:1;text-transform:capitalize}
.whisp-hero .wh-sub{font-size:12px;color:rgba(255,255,255,.65);margin-top:4px}
.whisp-hero .wh-meta{margin-top:12px;background:rgba(255,255,255,.1);border-radius:8px;padding:7px 12px;font-size:11px;display:flex;align-items:center;gap:8px}
.whisp-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 16px 0}
.wm-card{background:white;border-radius:var(--radius-sm);padding:12px 14px;border:1.5px solid var(--fog)}
.wm-label{font-size:10px;color:var(--stone);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.wm-val{font-size:20px;font-weight:700;color:var(--ink);font-family:'JetBrains Mono',monospace;line-height:1.1}
.wm-unit{font-size:11px;font-weight:400;color:var(--stone)}
.whisp-alert{background:#FFF3E0;border:1.5px solid #FFB74D;border-radius:var(--radius-sm);margin:10px 16px 0;padding:12px 14px;display:flex;gap:10px;align-items:flex-start}
.whisp-alert.ok{background:#E8F5EE;border-color:#A5D6A7}
.wa-text{font-size:12px;color:#4E342E;line-height:1.5}
.whisp-alert.ok .wa-text{color:#1B5E20}
.whisp-indicators{padding:12px 16px 0}
.wi-title{font-size:11px;font-weight:600;color:var(--stone);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
.wi-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--fog)}
.wi-row:last-child{border-bottom:none}
.wi-icon{font-size:15px;width:22px;text-align:center;flex-shrink:0}
.wi-label{font-size:12px;color:var(--ink);flex:1}
.wi-pill{font-size:10px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap;flex-shrink:0}
.wi-pill.ok{background:#E8F5EE;color:#1B5E20}
.wi-pill.warn{background:#FFF3E0;color:#E65100}
.wi-pill.flag{background:#FFEBEE;color:var(--alert)}
.whisp-chart-card{background:white;margin:10px 16px 0;border-radius:var(--radius);padding:14px 16px;border:1.5px solid var(--fog)}
.wcc-title{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:10px}
.bar-chart{display:flex;flex-direction:column;gap:5px}
.bc-row{display:flex;align-items:center;gap:8px}
.bc-year{font-size:10px;color:var(--stone);width:32px;text-align:right;flex-shrink:0;font-family:'JetBrains Mono',monospace}
.bc-track{flex:1;height:14px;background:var(--fog);border-radius:3px;overflow:hidden;position:relative}
.bc-fill{height:100%;border-radius:3px;transition:width .6s cubic-bezier(.4,0,.2,1)}
.bc-val{font-size:10px;font-weight:600;color:var(--ink);width:38px;text-align:right;flex-shrink:0;font-family:'JetBrains Mono',monospace}
.whisp-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px}
.whisp-spinner{width:40px;height:40px;border:3px solid var(--fog);border-top-color:var(--leaf);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ws-label{font-size:14px;font-weight:600;color:var(--ink)}
.ws-sub{font-size:12px;color:var(--stone);text-align:center;line-height:1.5}
.whisp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:10px}
.we-icon{font-size:48px;opacity:.4}
.we-label{font-size:15px;font-weight:600;color:var(--ink)}
.we-sub{font-size:12px;color:var(--stone);text-align:center;line-height:1.5}


/* Stage 3 active-learning farmer queue */
.queue-summary{margin:0 16px 12px;background:var(--forest);color:white;border-radius:var(--radius);padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.queue-summary strong{font-size:25px}.queue-summary span{font-size:11px;color:rgba(255,255,255,.7)}
.queue-weights{font:10px 'JetBrains Mono',monospace;text-align:right;color:var(--sprout);line-height:1.5}
.farmer-queue-list{padding:0 16px 24px}.queue-empty{background:white;border:1px solid var(--fog);border-radius:var(--radius);padding:20px;text-align:center;color:var(--stone);font-size:12px}
.queue-card{background:white;border:1.5px solid var(--fog);border-radius:var(--radius);padding:14px;margin-bottom:10px;display:flex;gap:12px}
.queue-rank{width:28px;height:28px;border-radius:50%;background:#FFF3E0;color:#C06010;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.queue-main{flex:1;min-width:0}.queue-title{font-size:14px;font-weight:700;color:var(--ink)}.queue-meta{font-size:11px;color:var(--stone);margin-top:3px;line-height:1.4}.queue-scores{font:10px 'JetBrains Mono',monospace;color:var(--canopy);margin:7px 0}
.queue-select,.queue-notes{width:100%;border:1px solid var(--fog);border-radius:8px;font:11px 'Sora',sans-serif;padding:8px;background:white;margin-top:6px}.queue-notes{min-height:48px;resize:vertical}
.queue-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}.queue-actions button{border:none;border-radius:8px;padding:9px 6px;background:var(--mist);color:var(--canopy);font:600 11px 'Sora',sans-serif;cursor:pointer}.queue-actions button.danger{background:#FFEBEE;color:var(--alert)}
.bottom-nav{overflow-x:auto}.nav-item{min-width:62px}

.repair-btn-edit{background:white;color:var(--canopy);border:1.5px solid var(--leaf);border-radius:var(--radius-sm);padding:14px 12px;font-family:'Sora',sans-serif;font-size:13px;font-weight:600;cursor:pointer}
.rc-kicker{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--canopy);font-weight:700;margin-bottom:3px}
.rc-metrics{margin-top:6px;font-size:10px;color:var(--stone);line-height:1.4}
.rc-warning{margin-top:5px;font-size:10px;color:var(--alert);font-weight:600}
.queue-open{border:none;background:var(--mist);color:var(--canopy);border-radius:12px;padding:3px 8px;font:600 10px 'Sora';cursor:pointer;margin-left:5px}
#s-activity .farmer-queue-list{padding-bottom:4px}
#s-activity .queue-summary{margin-top:0}
/* Study mode */
.study-badge {
  position: absolute;
  top: 112px;
  right: 12px;
  z-index: 7000;
  border: 0;
  border-radius: 20px;
  background: var(--sun);
  color: var(--bark);
  font: 600 10px 'Sora', sans-serif;
  padding: 6px 10px;
  cursor: pointer;
  box-shadow: var(--shadow);
}

.study-shell {
  position: absolute;
  inset: 0;
  z-index: 9000;
  display: none;
  overflow: hidden;
  background: rgba(10, 31, 20, 0.72);
  backdrop-filter: blur(4px);
}

.study-shell.open {
  display: block;
}

.study-card {
  position: absolute;
  inset: 8% 0 0;
  width: 100%;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--cloud);
  border-radius: 28px 28px 0 0;
  padding: 20px;
  box-shadow: 0 -10px 30px rgba(13, 61, 42, 0.18);
}

.study-card > .study-topline {
  flex: 0 0 auto;
}

.study-topline {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.study-card h2 {
  font-size: 20px;
  color: var(--ink);
  margin: 0 0 6px;
}

.study-card h3 {
  font-size: 13px;
  color: var(--canopy);
  margin: 20px 0 8px;
}

.study-muted {
  font-size: 12px;
  color: var(--stone);
  line-height: 1.5;
}

.study-card ul {
  padding-left: 20px;
  font-size: 12px;
  line-height: 1.55;
  color: #394940;
}

.study-icon-btn {
  border: 0;
  background: var(--fog);
  border-radius: 9px;
  padding: 7px 10px;
  cursor: pointer;
}

.study-panel {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.study-panel[hidden] {
  display: none !important;
}

.study-consent-row {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  background: white;
  border: 1px solid var(--fog);
  border-radius: 12px;
  padding: 12px;
  font-size: 12px;
  line-height: 1.45;
  margin: 12px 0;
}

.study-actions {
  display: flex;
  gap: 8px;
  margin-top: 14px;
}

.study-actions button {
  flex: 1;
  border-radius: 11px;
  padding: 12px;
  font: 600 12px 'Sora', sans-serif;
  cursor: pointer;
}

.study-primary {
  border: 0;
  background: var(--forest);
  color: #fff;
}

.study-primary:disabled {
  opacity: 0.65;
  cursor: wait;
}

.study-secondary {
  border: 1px solid var(--fog);
  background: white;
  color: var(--ink);
}

.study-progress {
  height: 9px;
  background: var(--fog);
  border-radius: 6px;
  overflow: hidden;
  margin: 14px 0;
}

.study-progress > div {
  height: 100%;
  background: var(--leaf);
  transition: width 0.25s;
}

.study-task-box {
  background: white;
  border: 1px solid var(--fog);
  border-radius: 14px;
  padding: 15px;
}

.study-task-index {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--stone);
}

.study-task-box h3 {
  font-size: 17px;
  color: var(--ink);
  margin: 7px 0;
}

.study-status {
  font-size: 11px;
  color: var(--canopy);
  margin-top: 12px;
  background: var(--mist);
  padding: 8px 10px;
  border-radius: 9px;
}

/* Questionnaire: only .study-questionnaire-scroll scrolls. */
#study-questionnaire-panel {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.study-questionnaire-header {
  flex: 0 0 auto;
  padding-bottom: 8px;
}

#study-questionnaire-form {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.study-questionnaire-scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
  padding-right: 4px;
  padding-bottom: 20px;
  scrollbar-width: thin;
}

#study-questionnaire-fields {
  display: block;
  min-height: 0;
  overflow: visible;
}

.study-questionnaire-actions {
  flex: 0 0 auto;
  margin: 0;
  padding-top: 12px;
  border-top: 1px solid var(--fog);
  background: var(--cloud);
}

.study-questionnaire-actions .study-primary {
  width: 100%;
}

.study-question {
  border: 0;
  border-bottom: 1px solid var(--fog);
  padding: 12px 0;
  margin: 0;
}

.study-question legend {
  font-size: 12px;
  line-height: 1.45;
}

.study-question.missing {
  margin: 6px 0;
  padding: 10px;
  border: 1px solid #ffb4a7;
  border-radius: 10px;
  background: #fff6f4;
}

.study-likert {
  display: flex;
  justify-content: space-between;
  gap: 5px;
  margin-top: 8px;
}

.study-likert label {
  flex: 1;
  text-align: center;
  position: relative;   /* add this */
}

.study-likert input {
  position: absolute;
  inset: 0;              /* replace the implicit static position */
  opacity: 0;
  pointer-events: none;
}

.study-likert span {
  display: block;
  border: 1px solid var(--fog);
  border-radius: 9px;
  padding: 7px 2px;
  font-size: 11px;
  background: white;
  cursor: pointer;
}

.study-likert input:focus-visible + span {
  outline: 2px solid var(--sprout);
  outline-offset: 2px;
}

.study-likert input:checked + span {
  background: var(--forest);
  border-color: var(--forest);
  color: white;
}

.study-text-label {
  display: block;
  font-size: 12px;
  margin-top: 14px;
}

.study-text-label textarea {
  display: block;
  width: 100%;
  margin-top: 6px;
  border: 1px solid var(--fog);
  border-radius: 10px;
  padding: 10px;
  font: 12px 'Sora', sans-serif;
  resize: vertical;
}

.study-error {
  color: var(--alert);
  font-size: 11px;
  margin: 10px 0 4px;
}

#study-finish-panel {
  min-height: 0;
  overflow-y: auto;
}


/* Geometry revalidation after manual vertex editing */
.technical-details{display:none}
.technical-details.open{display:block}
.action-area button:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.2)}
#geo-topology{transition:color .2s ease}

.confidence-badge {
  cursor: help;
  z-index: 1500;
}

/* Separate tooltip positioned inside the map */
.confidence-tooltip {
  position: absolute;
  top: 58px;
  right: 12px;
  z-index: 1600;

  width: min(245px, calc(100% - 24px));
  padding: 11px 13px;

  background: rgba(13, 61, 42, 0.96);
  color: white;

  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(13, 61, 42, 0.25);

  font-family: 'Sora', sans-serif;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.5;
  text-align: left;
  white-space: normal;

  opacity: 0;
  visibility: hidden;
  transform: translateY(-5px);

  transition:
    opacity 0.18s ease,
    visibility 0.18s ease,
    transform 0.18s ease;

  pointer-events: none;
}

/* Tooltip arrow */
.confidence-tooltip::before {
  content: "";
  position: absolute;
  right: 22px;
  bottom: 100%;

  border: 6px solid transparent;
  border-bottom-color: rgba(13, 61, 42, 0.96);
}

/* Mouse and keyboard interaction */
.confidence-badge:hover + .confidence-tooltip,
.confidence-badge:focus + .confidence-tooltip,
.confidence-badge:focus-visible + .confidence-tooltip {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
/* Vertex editing controls */
[data-edit-vertices]{pointer-events:auto!important;touch-action:manipulation}
.geocitizens-vertex-icon{background:transparent!important;border:0!important;overflow:visible!important}
.geocitizens-vertex-icon .vertex-marker{width:18px;height:18px;margin:0;background:#fff;border-width:4px;box-shadow:0 2px 8px rgba(0,0,0,.45);pointer-events:auto}
.leaflet-marker-pane{z-index:650}
