/* ============================================
   NEPAL AGRO ATLAS - DESIGN SYSTEM
   ============================================

   COMPONENT PATTERNS:
   ----------------
   .btn-primary/.btn-save  - Primary actions (rust color)
   .btn-secondary/.btn-reset - Secondary actions (outlined)
   .tag                    - Small category labels
   .zone-chip              - Colored region indicators
   .panel-close            - Circular close button
   
   SPACING:
   - Use --space-* tokens (4px base)
   - Common: --space-2 (8px), --space-3 (12px), --space-4 (16px)
   
   COLORS:
   - Semantic: --rust (danger), --terai (success), --muted (secondary)
   - Surfaces: --panel, --panel-2, --bg
   
   INTERACTIONS:
   - Hover: translateY(-1px) + border-color change
   - Active: translateY(1px) or scale(0.96)
   - Focus-visible: 2px solid --rust-light outline
   
   See individual component implementations below.
   ============================================ */

:root{
    /* Colors */
    --bg:#111817;
    --panel:#182220;
    --panel-2:#1e2b28;
    --ink:#ECE7DD;
    --muted:#8FA098;
    --muted-light:#A8B5AE;
    --hair:#2A3634;
    --terai:#6B8E4E;
    --hills:#C08A3E;
    --mountain:#9FC1D4;
    --rust:#B5482E;
    --rust-light:#D7714F;

    /* Spacing scale (4px base) */
    --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
    --space-5:20px; --space-6:24px; --space-7:28px; --space-8:32px;
    --space-9:36px; --space-10:40px;

    /* Border radius */
    --radius-sm:6px; --radius-md:8px; --radius-lg:12px; --radius-xl:16px; --radius-full:9999px;

    /* Shadows */
    --shadow-sm:0 1px 2px rgba(0,0,0,0.2);
    --shadow-md:0 4px 12px rgba(0,0,0,0.25);
    --shadow-lg:0 6px 24px rgba(0,0,0,0.3);

    /* Transitions */
    --ease:cubic-bezier(0.25,1,0.5,1);
    --duration-fast:150ms; --duration-normal:250ms; --duration-slow:350ms;
  }
  *{box-sizing:border-box;}
  html,body{height:100%;margin:0;}
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:'IBM Plex Sans', system-ui, sans-serif;
    overflow:hidden;
  }
  .app{
    display:flex;
    height:100vh;
    width:100%;
    position:relative;
  }
  .map-app{flex-direction:column;}
  .map-app .topbar{
    position:static;pointer-events:auto;flex-shrink:0;
    background:var(--panel);border-bottom:1px solid var(--hair);
    z-index:auto;text-shadow:none;
  }
  .map-app .topbar h1,
  .map-app .topbar .sub,
  .map-app .topbar .legend,
  .map-app .topbar .map-controls .btn-dashboard{
    text-shadow:none;
  }
  .app-body{flex:1;display:flex;flex-direction:row;height:100%;overflow:hidden;}
  /* ---------- Header ---------- */
  .topbar{
    position:absolute;
    top:0; left:0; right:0;
    z-index:1000;
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:var(--space-5) var(--space-6);
    pointer-events:none;
    gap:var(--space-3);
  }
  .topbar .brand{
    pointer-events:auto;
  }
  .topbar h1{
    font-family:'Fraunces', serif;
    font-optical-sizing:auto;
    font-weight:600;
    font-size:22px;
    margin:0;
    letter-spacing:0.01em;
    color:var(--ink);
    text-shadow:0 1px 8px rgba(0,0,0,0.6);
    white-space:nowrap;
  }
  .topbar .sub{
    font-size:11.5px;
    color:var(--muted-light);
    text-transform:uppercase;
    letter-spacing:0.08em;
    margin-top:3px;
    text-shadow:0 1px 8px rgba(0,0,0,0.6);
  }
  .legend{
    pointer-events:auto;
    display:flex;
    align-items:center;
    gap:14px;
    font-size:11px;
    color:var(--muted-light);
    text-shadow:0 1px 8px rgba(0,0,0,0.7);
  }
  .legend-item{display:flex;align-items:center;gap:5px;white-space:nowrap;letter-spacing:0.03em;}
  .legend .dot{width:8px;height:8px;border-radius:2px;flex-shrink:0;}
  .legend .dot.terai{background:var(--terai);}
  .legend .dot.hills{background:var(--hills);}
  .legend .dot.mountain{background:var(--mountain);}

  .map-controls{
    pointer-events:auto;
    display:flex;
    align-items:center;
    gap:8px;
  }
  .map-color-select,
  .map-search,
  .map-controls .btn-dashboard{
    height:32px;box-sizing:border-box;
    font-size:11px;padding:var(--space-1) var(--space-3);
    border-radius:var(--radius-lg);
    border:1px solid var(--hair);background:rgba(17,24,23,0.86);
    color:var(--muted);font-family:'IBM Plex Sans',sans-serif;
    backdrop-filter:blur(6px);text-shadow:0 1px 8px rgba(0,0,0,0.7);
    text-decoration:none;white-space:nowrap;
  }
  .map-color-select{cursor:pointer;}
  .map-controls .btn-dashboard{
    flex-shrink:0;
    display:inline-flex;align-items:center;justify-content:center;
    border-radius:10px;box-shadow:0 1px 2px rgba(0,0,0,0.2);
  }
  .map-search:focus-visible,
  .map-color-select:focus-visible,
  .map-controls .btn-dashboard:focus-visible{outline:2px solid var(--rust-light);outline-offset:2px;}
  .map-search:active,
  .map-color-select:active,
  .map-controls .btn-dashboard:active{transform:translateY(1px);}
  .map-search:hover,
  .map-color-select:hover,
  .map-controls .btn-dashboard:hover{color:var(--ink);border-color:var(--rust-light);}
  .map-color-select option{background:#1a1f1e;color:var(--muted);}

  .map-search-wrap{
    position:relative;width:160px;flex-shrink:0;
  }
  .map-search{
    width:100%;outline:none;
    background:rgba(17,24,23,0.9);
  }
  .map-search::placeholder{color:var(--muted);}
  .map-search:focus{border-color:var(--rust-light);color:var(--ink);}
  .map-search:focus-visible{outline:2px solid var(--rust-light);outline-offset:2px;}
  .map-search-results{
    position:absolute;top:calc(100% + 2px);left:0;right:0;
    background:rgba(17,24,23,0.95);border:1px solid var(--hair);
    border-radius:8px;backdrop-filter:blur(6px);
    display:none;max-height:280px;overflow-y:auto;z-index:1001;
    transform-origin:top center;
  }
  .map-search-result-item{
    padding:8px 13px;font-size:12.5px;color:var(--muted);
    cursor:pointer;border-bottom:1px solid var(--hair);
    transition:background 0.12s,color 0.12s;
  }
  .map-search-result-item:last-child{border-bottom:none;}
  .map-search-result-item:hover,.map-search-result-item.active{background:rgba(255,255,255,0.06);color:var(--ink);}
  .map-search-result-item:active{background:rgba(255,255,255,0.1);}
  .map-search-result-item .result-province{font-size:10px;color:var(--muted);margin-left:6px;}

  /* ---------- Map ---------- */
  .map-app #map{height:auto;}
  #map{
    flex:1 1 75%;
    height:100%;
    min-width:0;
    background:var(--bg);
    position:relative;
  }
  .leaflet-container{
    background:var(--bg);
    font-family:'IBM Plex Sans', sans-serif;
  }

  /* ---------- Side panel ---------- */
  .panel{
    flex:0 0 25%;
    height:100%;
    background:var(--panel);
    border-left:1px solid var(--hair);
    border-radius:12px 0 0 12px;
    display:flex;
    flex-direction:column;
    position:static;
    transform:none;
    overflow:hidden;
    transition:transform 0.3s cubic-bezier(0.25,1,0.5,1);
    box-shadow:-6px 0 24px rgba(0,0,0,0.18);
  }
  .panel-scroll{
    overflow-y:auto;
    flex:1;
    padding:var(--space-7) var(--space-6) var(--space-8);
  }
  .panel-scroll::-webkit-scrollbar{width:8px;}
  .panel-scroll::-webkit-scrollbar-thumb{background:var(--hair);border-radius:4px;}

  .panel-close{
    position:absolute;
    top:var(--space-4); right:var(--space-4);
    width:32px;height:32px;
    border-radius:50%;
    background:var(--panel-2);
    border:1px solid var(--hair);
    color:var(--muted);
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;
    font-size:16px;
    line-height:1;
    z-index:60;
    transition:transform var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast),box-shadow var(--duration-fast);
  }
  .panel-close:hover{color:var(--ink);border-color:var(--rust);background:var(--panel);box-shadow:0 2px 8px rgba(0,0,0,0.25);}
  .panel-close:active{transform:scale(0.92);}

  .panel-eyebrow{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.1em;
    color:var(--rust-light);
    font-weight:600;
    margin-bottom:6px;
  }
  .panel h2{
    font-family:'Fraunces', serif;
    font-weight:600;
    font-size:30px;
    padding-right:40px;
    margin:0 0 var(--space-2);
    line-height:1.08;
  }

  .zone-strip{
    display:flex;
    gap:6px;
    margin-bottom:6px;
  }
  .zone-chip{
    font-size:11px;
    padding:var(--space-1) var(--space-3);
    border-radius:var(--radius-full);
    font-weight:500;
    letter-spacing:0.02em;
    border:1px solid transparent;
    transition:transform 0.15s,box-shadow 0.15s;
  }
  .zone-chip:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);}
  .zone-chip.terai{background:rgba(107,142,78,0.18);color:var(--terai);border-color:rgba(107,142,78,0.4);}
  .zone-chip.hills{background:rgba(192,138,62,0.18);color:var(--hills);border-color:rgba(192,138,62,0.4);}
  .zone-chip.mountains{background:rgba(159,193,212,0.18);color:var(--mountain);border-color:rgba(159,193,212,0.4);}

  .elev-note{
    font-size:13.5px;
    color:var(--muted);
    line-height:1.55;
    margin:12px 0 22px;
    padding-bottom:22px;
    border-bottom:1px solid var(--hair);
  }

  .block{margin-bottom:22px;}
  .block-label{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.09em;
    color:var(--muted);
    font-weight:700;
    margin-bottom:8px;
    display:flex;
    align-items:center;
    gap:8px;
  }
  .block-label::after{
    content:'';
    flex:1;
    height:1px;
    background:var(--hair);
  }
  .block p{
    font-size:14px;
    line-height:1.6;
    margin:0;
    color:var(--ink);
  }
  .tag-row{display:flex;flex-wrap:wrap;gap:7px;}
  .tag{
    font-size:12.5px;
    background:var(--panel-2);
    border:1px solid var(--hair);
    padding:var(--space-1) var(--space-3);
    border-radius:var(--radius-md);
    color:var(--ink);
    transition:border-color 0.15s,transform 0.15s;
  }
  .tag:hover{border-color:var(--rust-light);transform:translateY(-1px);}
  .tag.cash{border-color:rgba(192,138,62,0.5);}

  .note-card{
    background:var(--panel-2);
    border-left:3px solid var(--rust);
    border-radius:0 8px 8px 0;
    padding:12px 14px;
    font-size:13px;
    line-height:1.55;
    color:var(--ink);
    font-style:italic;
  }

  /* suited-for tagline */
  .suited{
    font-family:'Fraunces', serif;
    font-style:italic;
    font-weight:500;
    font-size:15px;
    color:#C9C2B3;
    line-height:1.4;
    margin:2px 0 14px;
  }

  /* farming calendar (fiscal-year band + crop gantt) */
  .cal-wrap{
    background:var(--panel-2);
    border:1px solid var(--hair);
    border-radius:12px;
    padding:16px 16px 14px;
  }
  .cal-wrap .cal-footnote{
    margin:14px 0 2px;
    padding:0 0 0;
    border-top:1px solid var(--hair);
    padding-top:12px;
  }
  .cal-band{
    position:relative;
    height:30px;
    border-radius:6px;
    overflow:hidden;
    background:#111817;
    margin-bottom:4px;
  }
  .cal-seg{
    position:absolute;
    top:0; bottom:0;
    opacity:0.55;
  }
  .cal-months{
    position:relative;
    height:16px;
    margin-bottom:12px;
  }
  .cal-month{
    position:absolute;
    top:0;
    font-size:9px;
    color:#cbd5e1;
    font-family:'IBM Plex Mono',monospace;
    text-align:center;
    width:8.3333%;
  }
  .cal-season-legend{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px 16px;
    margin-bottom:16px;
    padding-bottom:14px;
    border-bottom:1px solid var(--hair);
  }
  .cal-season-item{
    display:flex;
    align-items:flex-start;
    gap:7px;
    font-size:11px;
    font-weight:600;
    color:var(--muted);
    line-height:1.5;
  }
  .cal-season-swatch{
    width:9px;height:9px;
    border-radius:2px;
    margin-top:3px;
    flex-shrink:0;
  }
  .cal-season-item b{color:#C9C2B3;font-weight:500;}

  .crop-legend{
    display:flex;
    gap:16px;
    font-size:10.5px;
    color:var(--muted);
    margin-bottom:10px;
  }
  .crop-legend span{display:flex;align-items:center;gap:5px;}
  .crop-legend i{width:12px;height:7px;border-radius:2px;display:inline-block;}
  .crop-legend i.lg-sow{background:rgba(107,142,78,0.28);border:1px solid var(--terai);}
  .crop-legend i.lg-harvest{background:var(--rust-light);}
  .crop-legend i.lg-perennial{background:repeating-linear-gradient(135deg, var(--hills), var(--hills) 3px, #B4813A 3px, #B4813A 6px);}

  .crop-row{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:7px;
  }
  .crop-name{
    width:112px;
    flex-shrink:0;
    font-size:11.5px;
    color:var(--ink);
    line-height:1.3;
  }
  .crop-track{
    position:relative;
    flex:1;
    height:14px;
    background:#111817;
    border-radius:4px;
  }
  .crop-seg{
    position:absolute;
    top:1px;bottom:1px;
    border-radius:3px;
    cursor:default;
  }
  .crop-seg.sow{background:rgba(107,142,78,0.28);border:1px solid var(--terai);}
  .crop-seg.harvest{background:var(--rust-light);}
  .crop-seg.perennial{background:repeating-linear-gradient(135deg, var(--hills), var(--hills) 4px, #B4813A 4px, #B4813A 8px);}

  .mountain-caveat{
    margin-top:14px;
    font-size:12px;
    color:var(--muted);
    line-height:1.55;
    display:flex;
    gap:8px;
  }
  .mountain-caveat .ic{color:var(--mountain);flex-shrink:0;}

  .placeholder{
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:40px;
    text-align:center;
  }
  .placeholder-inner{max-width:280px;}
  .placeholder-inner .glyph{
    font-family:'Fraunces',serif;
    font-size:44px;
    color:var(--hair);
    margin-bottom:14px;
  }
  .placeholder-inner p{
    color:var(--muted);
    font-size:13.5px;
    line-height:1.6;
  }

  .footnote{
    font-size:11px;
    color:#5D6B65;
    line-height:1.6;
    margin-top:8px;
  }
  .footnote-header{font-size:10.5px;font-weight:500;color:var(--muted);cursor:pointer;user-select:none;letter-spacing:0.03em;text-transform:uppercase;}
  .footnote-header:hover{color:var(--ink);}
  .fn-toggle{display:inline-block;width:14px;text-align:center;}
  .footnote-body{max-height:0;overflow:hidden;transition:max-height 0.2s;margin-top:0;}
  .footnote.expanded .footnote-body{max-height:200px;margin-top:8px;}

  /* leaflet polygon labels tooltip override */
  .province-tooltip{
    background:rgba(17,24,23,0.92)!important;
    border:1px solid var(--hair)!important;
    color:var(--ink)!important;
    font-family:'IBM Plex Sans',sans-serif;
    font-size:12px;
    padding:4px 9px;
    box-shadow:none!important;
  }
  .leaflet-tooltip-top:before{border-top-color:var(--hair)!important;}
  .leaflet-control-container{z-index:20 !important;}

  @media (min-width:721px) and (max-width:1024px){
    .panel{width:380px;}
    .map-search-wrap{width:140px;}
    .topbar{padding:14px 20px;}
    .map-controls{gap:6px;}
  }

  @media (max-width:720px){
    .panel{
      position:fixed;
      left:0;right:0;bottom:0;
      top:auto;
      width:100vw;max-width:100vw;
      height:70vh;
      border-radius:16px 16px 0 0;
      border-left:none;
      transform:translateY(100%);
      z-index:50;
      transition:transform 0.35s cubic-bezier(0.25,1,0.5,1);
      box-shadow:0 -8px 30px rgba(0,0,0,0.35);
    }
    .panel.open{transform:translateY(0);}
  .panel-backdrop{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.5);
    z-index:40;
    transition:opacity 0.35s ease;
  }
  .panel-backdrop.show{display:block;opacity:1;}
    .topbar{
      flex-direction:column;
      align-items:flex-start;
      gap:8px;
      padding:10px 14px;
    }
    .topbar .sub{font-size:10px;}
    .map-controls{width:100%;flex-wrap:wrap;gap:6px;}
    .map-search-wrap{width:100%;}
    .map-search,.map-color-select,.map-controls .btn-dashboard{font-size:11px;height:28px;}
    .legend{gap:10px;font-size:10px;flex-wrap:wrap;}
    .panel-scroll{padding:16px 14px 30px;}
    .panel h2{font-size:24px;}
    .season-grid{grid-template-columns:1fr;}
    .crop-name{width:auto;min-width:70px;font-size:10.5px;}
    .cal-month{font-size:8px;}
    .crop-legend{flex-wrap:wrap;gap:10px;}
    .season-card{padding:8px 10px;}
    .peak-list > div{font-size:12px;}
    .infra-grid > div{font-size:12px;}
    .page p{font-size:13px;}
    .cal-season-legend{grid-template-columns:1fr;}
    .crop-row{gap:6px;}
    .cal-wrap{padding:12px 10px;}
    .block-label{font-size:10px;}
    .irr-labels{font-size:11px;gap:10px;}
    .block p{font-size:13px;line-height:1.5;}
  }

  @media (max-width:480px){
    .topbar{padding:10px 10px;gap:6px;}
    .topbar{flex-direction:column;align-items:flex-start;gap:8px;}
    .topbar h1{font-size:17px;}
    .topbar .sub{font-size:9px;letter-spacing:0.06em;}
    .legend{font-size:9px;gap:6px;}
    .panel-scroll{padding-bottom:28px;}
    .legend-item{gap:3px;}
    .map-controls{gap:4px;}
    .map-search-wrap{width:100%;}
    .map-search,.map-color-select,.map-controls .btn-dashboard{font-size:10px;height:26px;padding:3px 7px;}
    .panel-scroll{padding:12px 10px 24px;}
    .panel h2{font-size:20px;padding-right:30px;}
    .panel-close{width:26px;height:26px;font-size:14px;top:12px;right:12px;}
    .zone-chip{font-size:10px;padding:3px 7px;}
    .season-grid{gap:6px;}
    .season-card{padding:7px 8px;}
    .season-name{font-size:12px;}
    .season-detail{font-size:10.5px;}
    .crop-name{font-size:10px;min-width:60px;}
    .crop-track{height:12px;}
    .crop-seg{border-radius:2px;}
    .cal-month{font-size:6.5px;}
    .cal-band{height:24px;}
    .cal-months{height:14px;}
    .crop-legend{font-size:9px;gap:6px;}
    .crop-legend i{width:10px;height:6px;}
    .cal-wrap{padding:10px 8px;}
    .cal-season-legend{gap:6px 10px;}
    .cal-season-item{font-size:10px;}
    .block{margin-bottom:16px;}
    .block-label{font-size:9.5px;margin-bottom:6px;}
    .block p{font-size:12px;}
    .peak-list > div{font-size:11px;}
    .infra-grid > div{font-size:11px;}
    .soil-card{font-size:12px;padding:10px 12px;}
    .soil-prop{font-size:11px;}
    .tag{font-size:11px;padding:4px 8px;}
    .irrigation-bar-wrap{margin-top:2px;}
    .irr-bar{height:14px;}
    .irr-labels{font-size:10px;gap:8px;}
    .suited{font-size:13px;}
    .mountain-caveat{font-size:11px;}
    .footnote{font-size:10px;}
  }

/* ---------- Dashboard ---------- */
.dashboard-app{display:flex;height:100vh;}
.dashboard-layout{display:flex;flex:1;height:100vh;padding-top:60px;}
.dash-sidebar{
  width:260px;min-width:220px;max-width:320px;
  height:100vh;background:var(--panel);
  border-right:1px solid var(--hair);
  display:flex;flex-direction:column;
  overflow-y:auto;
}
.dash-sidebar-header{
  padding:18px 16px 12px;
  border-bottom:1px solid var(--hair);
}
.dash-sidebar-header h3{
  font-family:'Fraunces',serif;
  font-size:16px;
  margin:0 0 10px;
  font-weight:600;
}

.dash-main{
  flex:1;overflow-y:auto;padding:28px 32px;
  background:var(--bg);
}
.dash-form{max-width:640px;}
.dash-form h3{
  font-family:'Fraunces',serif;
  font-size:24px;margin:0 0 20px;font-weight:600;
}
.dash-form .form-group{
  margin-bottom:18px;
}
.dash-form .form-group label{
  display:block;font-size:11px;text-transform:uppercase;
  letter-spacing:0.08em;color:var(--muted);font-weight:600;
  margin-bottom:6px;
}
.dash-form .form-group textarea,
.dash-form .form-group input[type="text"]{
  width:100%;background:var(--panel-2);
  border:1px solid var(--hair);border-radius:var(--radius-md);
  padding:var(--space-2) var(--space-3);
  font-size:13.5px;color:var(--ink);
  font-family:'IBM Plex Sans',sans-serif;
  resize:vertical;line-height:1.5;
}
.dash-form .form-group textarea:focus,
.dash-form .form-group input[type="text"]:focus{
  outline:none;border-color:var(--rust-light);
}
.checkbox-group{display:flex;flex-wrap:wrap;gap:12px;}
.checkbox-label{
  font-size:13px;color:var(--ink);cursor:pointer;
  display:flex;align-items:center;gap:6px;
}
.checkbox-label input[type="checkbox"]{
  accent-color:var(--rust);width:15px;height:15px;cursor:pointer;
}
.form-actions{display:flex;gap:10px;margin-top:20px;padding-top:18px;border-top:1px solid var(--hair);}
  .btn-save{
  background:var(--rust);color:#fff;border:none;
  padding:var(--space-2) var(--space-5);
  border-radius:var(--radius-md);
  font-size:13px;font-weight:600;cursor:pointer;
  font-family:'IBM Plex Sans',sans-serif;
  letter-spacing:0.02em;
  transition:background var(--duration-fast),transform var(--duration-fast);
}
.btn-save:hover{background:var(--rust-light);}
.btn-save:focus-visible{outline:2px solid var(--rust-light);outline-offset:2px;}
.btn-save:active{transform:translateY(1px);}
  .btn-reset{
  background:var(--panel-2);color:var(--muted);
  border:1px solid var(--hair);
  padding:var(--space-2) var(--space-5);
  border-radius:var(--radius-md);
  font-size:13px;cursor:pointer;
  font-family:'IBM Plex Sans',sans-serif;
  transition:border-color 0.15s,color 0.15s,transform var(--duration-fast);
}
.btn-reset:hover{border-color:var(--rust-light);color:var(--ink);}
.btn-reset:focus-visible{outline:2px solid var(--rust-light);outline-offset:2px;}
.btn-reset:active{transform:translateY(1px);}
.form-message{
  margin-top:12px;font-size:13px;
  padding:8px 12px;border-radius:6px;
  display:none;
}
.form-message.success{display:block;background:rgba(107,142,78,0.15);color:var(--terai);border:1px solid rgba(107,142,78,0.3);}
.form-message.error{display:block;background:rgba(181,72,46,0.15);color:var(--rust-light);border:1px solid rgba(181,72,46,0.3);}
.dashboard-placeholder{color:var(--muted);font-size:14px;padding:40px 0;}
.dashboard-placeholder p{margin:0;}

/* ---------- Empty states ---------- */
.empty-state{
  text-align:center;padding:60px 20px;color:var(--muted);
}
.empty-state-icon{
  font-size:48px;margin-bottom:16px;opacity:0.5;
  font-family:'Fraunces',serif;
}
.empty-state-title{
  font-size:18px;font-weight:600;color:var(--ink);margin-bottom:8px;
  font-family:'Fraunces',serif;
}
.empty-state-desc{
  font-size:13px;line-height:1.6;max-width:320px;margin:0 auto;
}

.topbar-right{display:flex;align-items:center;gap:8px;pointer-events:auto;}
.btn-dashboard{
  pointer-events:auto;
  font-size:11.5px;text-transform:uppercase;
  letter-spacing:0.08em;color:var(--muted);
  text-decoration:none;padding:5px 12px;
  border:1px solid var(--hair);border-radius:6px;
  transition:color 0.15s,border-color 0.15s;
}
.btn-dashboard:hover{color:var(--ink);border-color:var(--rust-light);}
.btn-logout{color:var(--rust-light);border-color:rgba(215,113,79,0.3);}
.btn-logout:hover{color:#fff;border-color:var(--rust-light);}

/* ---------- Dashboard tabs ---------- */
.topbar-left{display:flex;align-items:baseline;gap:12px;pointer-events:auto;}
.btn-sidebar-toggle{
  background:none;border:1px solid var(--hair);border-radius:6px;
  color:var(--muted);font-size:16px;cursor:pointer;padding:3px 7px;line-height:1;
  transition:color 0.15s;font-family:'IBM Plex Sans',sans-serif;
}
.btn-sidebar-toggle:hover{color:var(--ink);}
.dash-tabs{
  display:flex;gap:2px;margin-bottom:20px;
  border-bottom:1px solid var(--hair);padding-bottom:0;
}
  .dash-tab{
    background:none;border:none;border-bottom:2px solid transparent;
    padding:8px 14px;font-size:12px;cursor:pointer;
    font-family:'IBM Plex Sans',sans-serif;font-weight:500;
    color:var(--muted);letter-spacing:0.04em;transition:color 0.15s,border-color 0.15s;
    text-transform:uppercase;position:relative;
  }
  .dash-tab:hover{color:var(--ink);}
  .dash-tab.active{color:var(--rust-light);border-bottom-color:var(--rust-light);}
.dash-tab-content{display:none;}
.dash-tab-content.active{display:block;animation:fadeIn 0.2s ease;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}

/* ---------- Dashboard sidebar collapsed ---------- */
.dash-sidebar.collapsed{width:0;min-width:0;overflow:hidden;padding:0;border:none;transition:width 0.25s cubic-bezier(0.25,1,0.5,1),min-width 0.25s cubic-bezier(0.25,1,0.5,1),padding 0.25s,border 0.25s;}

/* ---------- Crop calendar editor ---------- */
.cal-editor-intro{font-size:13px;color:var(--muted);margin-bottom:18px;line-height:1.5;}
.cal-row{
  background:var(--panel-2);border:1px solid var(--hair);
  border-radius:10px;padding:14px 16px;margin-bottom:10px;
}
.cal-row-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:10px;
}
.cal-row-name{font-weight:600;font-size:14px;font-family:'Fraunces',serif;}
.cal-row-fields{display:flex;flex-wrap:wrap;gap:10px 20px;margin-bottom:10px;}
.cal-field-group{display:flex;flex-wrap:wrap;gap:8px;max-height:400px;opacity:1;overflow:hidden;transition:max-height 0.3s ease,opacity 0.3s ease,padding 0.2s ease,margin 0.2s ease;}
.cal-field-group.cal-fields-hidden{max-height:0;opacity:0;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;pointer-events:none;}
.cal-field-group label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;}
.cal-field-group select{
  background:var(--bg);border:1px solid var(--hair);border-radius:5px;
  color:var(--ink);font-size:11px;padding:4px 6px;font-family:'IBM Plex Sans',sans-serif;
}
.cal-field-group input[type="text"]{
  background:var(--bg);border:1px solid var(--hair);border-radius:5px;
  color:var(--ink);font-size:11px;padding:4px 8px;width:200px;font-family:'IBM Plex Sans',sans-serif;
}
.cal-row-actions{display:flex;align-items:center;gap:10px;}
.cal-row-msg{font-size:11px;}
.cal-row-msg.success{color:var(--terai);}
.cal-row-msg.error{color:var(--rust-light);}

/* ---------- Sidebar district list ---------- */
.district-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto;}
.district-item{
  padding:10px 16px;border-bottom:1px solid var(--hair);
  cursor:pointer;font-size:13px;transition:background 0.15s;
  display:flex;align-items:center;
}
.district-item:hover{background:var(--panel-2);}
.district-item.active{background:var(--panel-2);border-left:3px solid var(--rust);}
.district-item span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-filter{padding:8px 12px;display:flex;flex-direction:column;gap:6px;}
.dash-filter-input,.dash-filter-select{
  width:100%;padding:7px 10px;font-size:12.5px;border-radius:6px;
  border:1px solid var(--hair);background:var(--panel-2);color:var(--ink);
  font-family:'IBM Plex Sans',sans-serif;box-sizing:border-box;
}
.dash-filter-input:focus,.dash-filter-select:focus{outline:none;border-color:var(--rust-light);}
.dash-filter-select option{background:var(--bg);color:var(--ink);}
.district-item.hidden-by-filter{display:none;}

.dash-sidebar-actions{
  border-top:1px solid var(--hair);padding:8px 12px;
  display:flex;gap:6px;flex-shrink:0;
}
.dash-action-btn{
  flex:1;font-size:11px;padding:6px 10px;border-radius:6px;
  border:1px solid var(--hair);background:var(--panel-2);color:var(--muted);
  cursor:pointer;font-family:'IBM Plex Sans',sans-serif;
  text-align:center;transition:color 0.15s,border-color 0.15s;
}
.dash-action-btn:hover{color:var(--ink);border-color:var(--rust-light);}
.dash-action-btn.import-btn{flex:1;display:flex;align-items:center;justify-content:center;}
.import-msg{font-size:11px;color:var(--muted);padding:6px 12px 2px;text-align:center;}

@media(max-width:720px){
  .dash-filter{padding:8px;}
}

/* ---------- Spinner ---------- */
.spinner{
  display:none;width:28px;height:28px;margin:40px auto;
  border:3px solid var(--hair);border-top-color:var(--rust-light);
  border-radius:50%;animation:spin 0.7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}
.map-loader{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:12px;
  background:var(--bg);z-index:500;transition:opacity 0.3s;
}
.map-loader.hidden{opacity:0;pointer-events:none;}
.map-loader-text{font-size:13px;color:var(--muted);font-family:'IBM Plex Sans',sans-serif;}

/* ---------- Skeleton Loading ---------- */
.skeleton{
  background:linear-gradient(90deg,var(--panel-2) 25%,var(--hair) 50%,var(--panel-2) 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s infinite;
  border-radius:4px;
}
@keyframes shimmer{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
.skeleton-text{height:14px;margin-bottom:10px;}
.skeleton-text.short{width:60%;}
.skeleton-title{height:24px;margin-bottom:16px;width:40%;}
.skeleton-card{height:120px;margin-bottom:12px;border-radius:8px;}

/* ---------- Form validation ---------- */
.field-error{font-size:11px;color:var(--rust-light);margin-top:3px;}
.req{color:var(--rust-light);}

/* ---------- Dashboard form sections ---------- */
.form-section{
  border:1px solid var(--hair);border-radius:10px;
  padding:18px 18px 8px;margin-bottom:18px;background:var(--panel);
}
.form-section-title{
  font-size:12px;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--rust-light);font-weight:600;
  padding:0 8px;font-family:'IBM Plex Sans',sans-serif;
}
.form-row{display:flex;gap:14px;}
.form-group.half{flex:1;}
.season-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;}
.season-form-row{display:flex;flex-direction:column;gap:4px;background:var(--panel-2);padding:10px;border-radius:8px;border:1px solid var(--hair);}
.season-form-label{font-size:11px;font-weight:600;color:var(--ink);}
.season-form-row input[type="text"]{
  background:var(--bg);border:1px solid var(--hair);border-radius:5px;
  padding:5px 8px;font-size:11.5px;color:var(--ink);font-family:'IBM Plex Sans',sans-serif;width:100%;
}
.season-form-row input[type="text"]:focus{outline:none;border-color:var(--rust-light);}

/* ---------- Panel: season cards ---------- */
.season-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.season-card{
  background:var(--panel-2);border:1px solid var(--hair);border-radius:8px;
  padding:10px 12px;line-height:1.5;
}
.season-name{font-weight:600;font-size:13px;color:var(--ink);margin-bottom:3px;}
.season-detail{font-size:11.5px;color:var(--muted);}
.climate-bars{margin-top:6px;display:flex;flex-direction:column;gap:3px;}
.climate-bar-row{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);}
.climate-bar-label{width:28px;flex-shrink:0;text-transform:uppercase;letter-spacing:0.04em;opacity:0.7;}
.climate-bar-track{flex:1;height:5px;border-radius:3px;background:var(--bg);overflow:hidden;}
.climate-bar-fill{height:100%;border-radius:3px;transition:width 0.4s;}
.climate-bar-fill.temp{background:var(--rust-light);}
.climate-bar-fill.rain{background:var(--terai);opacity:0.7;}

.peak-list{display:flex;flex-direction:column;gap:6px;}
.peak-list > div{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;border-bottom:1px solid var(--hair);}
.peak-label{color:var(--muted);}
.peak-val{color:var(--ink);font-weight:500;}

/* ---------- Panel: risk tags ---------- */
.tag.risk{border-color:rgba(181,72,46,0.5);color:var(--rust-light);background:rgba(181,72,46,0.1);}

/* ---------- Panel: irrigation bar ---------- */
.irrigation-bar-wrap{margin-top:4px;}
.irr-bar{height:18px;display:flex;border-radius:4px;overflow:hidden;background:var(--panel-2);border:1px solid var(--hair);}
.irr-seg{transition:width 0.3s;}
.irr-seg.irrigated{background:rgba(107,142,78,0.6);}
.irr-seg.rainfed{background:rgba(159,193,212,0.3);}
.irr-labels{display:flex;gap:20px;margin-top:5px;font-size:12px;color:var(--muted);}
.irr-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle;}
.irr-dot.irrigated{background:rgba(107,142,78,0.6);}
.irr-dot.rainfed{background:rgba(159,193,212,0.3);}

/* ---------- Panel: soil card ---------- */
.soil-card{
  background:var(--panel-2);border-left:3px solid var(--terai);
  border-radius:0 8px 8px 0;padding:12px 14px;
  font-size:13px;line-height:1.55;color:#D7D2C7;
}
.soil-card p{margin:0 0 5px;}
.soil-prop{display:flex;gap:8px;font-size:12px;margin-top:3px;color:var(--muted);}
.soil-prop-label{color:var(--terai);font-weight:600;flex-shrink:0;}

/* ---------- Panel: infrastructure grid ---------- */
.infra-grid{display:flex;flex-direction:column;gap:6px;}
.infra-grid > div{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;border-bottom:1px solid var(--hair);}
.infra-label{color:var(--muted);}
.infra-val{color:var(--ink);font-weight:500;}

/* ---------- Mobile ---------- */
@media (max-width:720px){
  .dash-sidebar{position:fixed;top:60px;left:0;bottom:0;width:280px;min-width:280px;z-index:900;box-shadow:4px 0 20px rgba(0,0,0,0.4);transition:transform 0.25s ease;}
  .dash-sidebar.collapsed{transform:translateX(-100%);width:280px;min-width:280px;}
  .dashboard-layout{padding-top:60px;}
  .dash-main{padding:16px;}
  .dash-tabs{overflow-x:auto;white-space:nowrap;flex-wrap:nowrap;}
  .dash-tab{font-size:11px;padding:8px 10px;}
  .topbar-left .brand h1{font-size:17px;}
  .topbar-right{gap:4px;}
  .topbar-right .btn-dashboard{font-size:10px;padding:4px 8px;}
  .cal-row-fields{flex-direction:column;}
  .cal-field-group{flex-wrap:wrap;}
  .cal-field-group select{width:auto;}
  .cal-field-group input[type="text"]{width:100%;}
  .dash-form{max-width:100%;}
  .form-row{flex-direction:column;gap:10px;}
  .season-form-grid{grid-template-columns:1fr;}
  .dashboard-placeholder{padding:20px 0;}
  .spinner{margin:20px auto;}
}

@media (max-width:480px){
  .dash-sidebar{width:100vw;min-width:100vw;}
  .dash-sidebar.collapsed{width:100vw;min-width:100vw;}
  .dash-main{padding:12px;}
  .dash-form h3{font-size:18px;}
  .dash-form .form-group{margin-bottom:14px;}
  .dash-form .form-group label{font-size:10px;}
  .cal-row{padding:10px 12px;}
  .cal-row-name{font-size:13px;}
  .cal-field-group input[type="text"]{width:100%;font-size:11px;}
  .cal-field-group select{font-size:10px;}
  .cal-editor-intro{font-size:12px;}
  .dash-tab{font-size:10px;padding:6px 8px;}
  .form-section{padding:14px 12px 6px;}
  .form-section-title{font-size:11px;}
  .month-cb-label{font-size:10px;padding:2px 5px;}
  .season-form-row{padding:8px;}
}

/* ---------- Month checkbox rows ---------- */
.month-checkbox-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;}
.month-cb-label{font-size:11.5px;color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:3px;padding:3px 7px;border:1px solid var(--hair);border-radius:5px;transition:color 0.12s,border-color 0.12s,background 0.12s;}
.month-cb-label:hover{border-color:var(--rust-light);color:var(--ink);}
.month-cb-label input[type="checkbox"]{accent-color:var(--rust);width:12px;height:12px;cursor:pointer;}
.month-cb-label:has(input:checked){background:rgba(181,72,46,0.12);border-color:var(--rust-light);color:var(--ink);}
.month-cb-legacy{font-size:11px;color:var(--rust-light);font-style:italic;margin-top:2px;}

/* ---------- Sidebar toggle button ---------- */
.btn-sidebar-toggle{
  background:none;border:1px solid var(--hair);border-radius:6px;
  color:var(--muted);font-size:16px;cursor:pointer;padding:3px 7px;line-height:1;
  transition:color 0.15s,background 0.15s;
}
.btn-sidebar-toggle:hover{color:var(--ink);background:var(--panel-2);}
.btn-sidebar-toggle:active{transform:scale(0.96);}

/* ---------- Irrigation sum indicator ---------- */
.irr-sum-note{font-size:12px;color:var(--muted);margin-top:2px;margin-bottom:10px;}
.irr-sum-note.valid{color:var(--terai);}
.irr-sum-note.invalid{color:var(--rust-light);}
.irr-helper{font-size:10.5px;color:var(--muted);opacity:0.7;margin-left:6px;}
.dash-form input[type="number"]{width:100%;background:var(--panel-2);border:1px solid var(--hair);border-radius:8px;padding:10px 12px;font-size:13.5px;color:var(--ink);font-family:'IBM Plex Sans',sans-serif;resize:vertical;line-height:1.5;}
.dash-form input[type="number"]:focus{outline:none;border-color:var(--rust-light);}

/* ---------- Print styles ---------- */
@media print{
  body{background:#fff;color:#000;}
  .topbar,.legend,.map-controls,.btn-dashboard,.panel-close,.leaflet-control-zoom,
  .map-loader,#panelClose,.dash-tabs,.dash-sidebar,.btn-sidebar-toggle{display:none!important;}
  #map{display:none!important;}
  #panel{position:static!important;width:100%!important;height:auto!important;overflow:visible!important;border:none!important;box-shadow:none!important;}
  .panel-scroll{overflow:visible!important;height:auto!important;padding:0!important;}
  .panel-eyebrow{color:#666!important;}
  h2{color:#000!important;}
  .soil-card,.season-card,.infra-grid,.irrigation-bar-wrap,
  .peak-list,.tag-row,.footnote{background:#f5f5f5!important;border:1px solid #ddd!important;color:#000!important;}
  .tag{background:#e0e0e0!important;color:#333!important;}
  .tag.cash{background:#d4edda!important;color:#155724!important;}
  .tag.risk{background:#f8d7da!important;color:#721c24!important;}
  .zone-chip{background:#e0e0e0!important;color:#333!important;border:1px solid #ccc!important;}
  .irr-bar{border:1px solid #999!important;}
  .irr-seg.irrigated{background:#4a7c59!important;}
  .irr-seg.rainfed{background:#8ba888!important;}
  .season-card{border:1px solid #ddd!important;}
  .season-name{color:#333!important;}
  .season-detail{color:#555!important;}
  .footnote{font-size:9px!important;color:#888!important;}
  .footnote.expanded .footnote-body{max-height:none!important;}
  @page{margin:1.5cm;}
}
