:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#193b32;background:#f4f6f4;font-size:16px;--green:#153e33;--yellow:#f5bf4f;--muted:#64776f;--border:#dde5e0}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}button,input,summary{touch-action:manipulation}button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #df9d24;outline-offset:3px}button{transition:background .15s,color .15s}h1,h2,h3,p{margin:0}h2{font-size:1.4rem;letter-spacing:-.035em}h3{font-size:1rem}a{color:inherit}[hidden]{display:none!important}.skip{position:fixed;left:10px;top:-100px;z-index:2000;background:white;padding:12px}.skip:focus{top:10px}
.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:var(--green);color:white;border-bottom:1px solid #254e41}.brand{display:flex;align-items:center;gap:12px}.brand h1{font-size:1.22rem;font-weight:650;letter-spacing:-.02em}.brand span{font-size:.875rem;color:#b9ccbf;display:block;margin-top:2px}.topbar .text-button{color:#e5eee8}.text-button{border:0;background:transparent;color:#315e4d;font-size:.875rem;padding:8px 0}.text-button:hover{text-decoration:underline}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 438px;height:calc(100dvh - 76px);min-height:560px}.map-panel{position:relative;min-width:0;background:#dce6d9}#map{height:100%;width:100%;z-index:0}.map-caption{position:absolute;z-index:450;top:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:13px 20px;border-radius:8px;box-shadow:0 4px 20px #1a33211a;background:#ffffffed;max-width:calc(100% - 100px);font-size:.875rem;pointer-events:none}.caption-icon{font-size:1.3rem;color:#59775e}.map-legend{position:absolute;bottom:30px;left:24px;z-index:450;display:flex;gap:8px;align-items:center;background:#ffffffee;box-shadow:0 2px 12px #173b321a;padding:10px 14px;font-size:.875rem;border-radius:6px}.legend-zone{width:13px;height:13px;border:2px solid #d99b20;border-radius:100%;background:#f5bf4f33}.legend-quarter{width:13px;height:13px;border:1px solid #267650;background:#26765044;margin-left:8px}.map-locate{position:absolute;z-index:450;right:18px;top:20px;background:white;border:1px solid #d3ded6;box-shadow:0 2px 8px #173b321a;border-radius:6px;width:42px;height:42px;font-size:1.65rem;color:var(--green)}
.sidebar{padding:26px 26px 0;background:#fff;overflow-y:auto;border-left:1px solid var(--border)}.sidebar-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow{font-size:.75rem;letter-spacing:.11em;color:var(--muted);font-weight:650;margin-bottom:6px}.radius-badge{background:#f8e6b7;color:#694911;padding:7px 12px;border-radius:30px;font-size:.875rem;font-weight:650}.search-form label,.two-columns label{display:block;font-size:.875rem;font-weight:550;color:#425d50}input{display:block;width:100%;min-width:0;padding:11px 12px;border:1px solid #cbd8cf;border-radius:6px;background:#fff;color:#193b32;margin-top:6px;font-size:.9375rem}input::placeholder{color:#87968e}.input-action{display:flex;gap:7px;align-items:end}.input-action input{flex:1}.small-button{padding:11px 12px;background:#eaf0ec;border:1px solid #dbe4de;border-radius:6px;font-size:.9375rem;color:var(--green)}.small-button:hover,.secondary-button:hover{background:#e3ece5}.search-results{margin-top:8px}.search-result{width:100%;text-align:left;padding:10px 12px;background:#f6f8f6;border:1px solid var(--border);border-radius:6px;margin-bottom:5px;display:block}.search-result strong,.search-result small{display:block}.search-result strong{font-size:.9375rem}.search-result small{font-size:.8125rem;color:var(--muted);margin-top:2px}.search-message{font-size:.875rem;color:var(--muted);padding:7px 0}.coordinates{margin:14px 0 18px}.coordinates summary{font-size:.875rem;color:#496a59;cursor:pointer}.coordinates form{padding-top:10px}.coordinates .secondary-button{margin-top:10px;width:100%}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.point-card{background:#f0f5f1;border:1px solid #e0eae2;border-radius:8px;padding:13px 12px;display:flex;gap:10px;align-items:center;min-height:72px;margin:0 0 24px}.point-symbol{font-size:1.7rem;color:#4b745d}.point-card strong{font-size:.9375rem;display:block}.point-card span:not(.point-symbol){display:block;font-size:.8125rem;color:var(--muted);margin-top:4px}.period-block h3{margin-bottom:10px}.field-hint{font-size:.8125rem;line-height:1.5;color:var(--muted);margin-top:9px}.primary-button{width:100%;padding:14px 12px;border:0;border-radius:6px;background:var(--green);color:white;font-weight:600;font-size:.9375rem;margin-top:20px}.primary-button:hover:not(:disabled){background:#245744}.primary-button.loading{background:#315e4e}.status{font-size:.875rem;line-height:1.5;color:var(--muted);margin:10px 0 20px}.status.error{color:#a4392b;background:#fff2ed;padding:10px 12px;border-radius:6px}.status.success{color:#315e4d}.initial-help{margin:36px 10px 34px;text-align:center}.help-mark{font-size:2.2rem;color:#b7c7ba;margin-bottom:8px}.initial-help h3{font-size:1rem;color:#466450}.initial-help p{font-size:.875rem;line-height:1.7;color:var(--muted);margin-top:8px}.sidebar-footer{font-size:.75rem;color:#81938a;border-top:1px solid var(--border);padding:18px 0 20px;margin-top:24px}
.results{border-top:1px solid var(--border);padding-top:22px}.results-heading{display:flex;justify-content:space-between;align-items:center}.metrics{display:grid;grid-template-columns:1fr 1fr;margin:18px 0;gap:12px}.metrics>div{background:#f3f6f3;border:1px solid #e8eee9;border-radius:6px;padding:13px 14px}.metrics span{font-size:.8125rem;color:var(--muted);display:block;margin-bottom:5px}.metrics strong{font-size:1.6rem;font-weight:650;letter-spacing:-.025em}.metrics small{font-size:.8125rem;font-weight:400;color:var(--muted)}.tabs{display:flex;border-bottom:1px solid var(--border);gap:18px;margin-bottom:20px}.tabs button{flex:1;white-space:nowrap;background:transparent;border:0;border-bottom:3px solid transparent;color:var(--muted);padding:12px 0;font-size:.875rem}.tabs button[aria-selected=true]{border-color:#d9a334;color:var(--green);font-weight:650}.forecast-total{background:#153e33;color:white;border-radius:8px;padding:22px;margin:0 0 20px;position:relative;overflow:hidden}.forecast-total:after{content:"";position:absolute;right:-18px;bottom:-24px;width:120px;height:120px;border:1px solid #ffffff18;border-radius:50%;pointer-events:none}.forecast-total>span{display:block;font-size:.875rem;color:#c4d5c9;margin-bottom:7px}.forecast-total strong{font-size:2.4rem;line-height:1.1;font-weight:650;letter-spacing:-.04em;color:#f5bf4f}.forecast-total strong small{font-size:1rem;letter-spacing:0;color:#d9e5db;font-weight:400}.forecast-total p{font-size:.8125rem;color:#c4d5c9;margin-top:10px}.plant-row{padding:13px 0;border-bottom:1px solid #edf1ee}.plant-row-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.9375rem}.plant-row-top strong{font-weight:550}.plant-row-top .plant-value{font-weight:650;white-space:nowrap}.plant-meta{font-size:.8125rem;color:var(--muted);margin-top:5px}.bar-track{height:4px;background:#eaf0ea;margin-top:9px;border-radius:2px;overflow:hidden}.bar-fill{height:100%;background:#d9aa44}.stock .bar-fill{background:#468363}.result-note{font-size:.8125rem;line-height:1.6;color:var(--muted);margin:15px 0}.empty-state{padding:22px 16px;text-align:center;background:#f5f7f5;border:1px solid #e2e9e3;border-radius:8px;font-size:.9375rem;line-height:1.6}.empty-state p{color:var(--muted);font-size:.875rem;margin-top:7px}.quarter-card{border:1px solid var(--border);border-radius:7px;margin:0 0 10px;background:white}.quarter-card summary{list-style:none;cursor:pointer;padding:14px;position:relative}.quarter-card summary::-webkit-details-marker{display:none}.quarter-card summary:after{content:"+";position:absolute;right:14px;top:12px;color:#6b8473;font-size:1.2rem}.quarter-card[open] summary:after{content:"−"}.quarter-card summary strong{font-size:.9375rem;display:block;margin-right:20px}.quarter-card summary span{display:block;color:var(--muted);font-size:.8125rem;margin-top:5px}.quarter-body{padding:0 14px 14px}.quarter-areas{font-size:.875rem;line-height:1.8;padding:10px 0;border-top:1px solid var(--border)}.quarter-stock{display:flex;justify-content:space-between;font-size:.875rem;gap:10px;padding:5px 0}.quarter-body .secondary-button{margin-top:10px;width:100%}.secondary-button{padding:10px 9px;background:#f5f8f5;border:1px solid #d9e3db;border-radius:6px;font-size:.8125rem;color:#315e4d}.export-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:22px}.export-actions button{flex:1;white-space:nowrap}dialog{border:1px solid var(--border);border-radius:12px;padding:26px;max-width:530px;width:calc(100% - 32px);color:#193b32;box-shadow:0 16px 90px #163c3333}dialog::backdrop{background:#12312788}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}dialog p{font-size:.9375rem;line-height:1.7;color:#4d6458;margin:12px 0}.icon-button{border:0;background:#eef3ee;color:#315e4d;width:32px;height:32px;border-radius:50%;font-size:1.2rem}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:24px;background:#153e33;color:white;border-radius:8px;padding:12px 20px;z-index:3000;box-shadow:0 6px 25px #163c3322;font-size:.9375rem;max-width:90vw}.print-report{display:none}.leaflet-control-zoom{border:1px solid #cfdbcf!important;box-shadow:0 2px 10px #163c3320!important;margin-top:20px!important;margin-left:20px!important}.leaflet-control-zoom a{color:#315e4d!important}.leaflet-popup-content{font-size:.875rem;color:#193b32;line-height:1.6}.selected-marker{background:transparent;border:0}.selected-marker span{display:block;width:18px;height:18px;border:4px solid #fff;border-radius:50%;background:#db9d22;box-shadow:0 0 0 2px #966819,0 2px 8px #173b3233}.leaflet-control-attribution{font-size:12px!important}
@media(min-width:1600px){.workspace{grid-template-columns:minmax(0,1fr) 480px}.sidebar{padding:30px 32px 0}}
@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1fr) 390px}.sidebar{padding:22px 20px 0}.map-caption{left:18px;transform:none;max-width:calc(100% - 85px);top:90px}.map-legend{left:16px;bottom:28px;font-size:.8125rem}}
@media(max-width:720px){.topbar{height:68px;padding:0 16px}.brand{gap:9px}.brand h1{font-size:1.05rem}.brand span{font-size:.75rem}.brand img{width:32px;height:32px}.topbar .text-button{font-size:.8125rem}.workspace{display:flex;flex-direction:column;height:auto;min-height:0}.map-panel{height:44dvh;min-height:290px;max-height:480px}.sidebar{overflow:visible;border-left:0;border-top:1px solid var(--border);padding:22px 20px 0}.sidebar-heading{margin-bottom:18px}.map-caption{top:18px;left:65px;max-width:calc(100% - 128px);font-size:.8125rem;padding:9px 11px;gap:6px}.caption-icon{display:none}.map-locate{right:12px;top:18px;width:38px;height:38px}.map-legend{left:12px;bottom:28px;padding:7px 10px}.leaflet-control-zoom{margin-top:18px!important;margin-left:12px!important}.point-card{margin-bottom:20px}.initial-help{margin-top:28px}.results{margin-top:16px}.tabs{gap:14px}.export-actions button{font-size:.875rem}.toast{bottom:18px}.coordinates{margin-bottom:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{body{background:white;color:#111}.topbar,.workspace,dialog,.toast,.skip,noscript{display:none!important}.print-report{display:block;font-size:11pt}.print-report h1{font-size:23pt;margin-bottom:12pt}.print-report h2{font-size:15pt;margin:18pt 0 8pt}.print-report p{line-height:1.6}.print-report table{border-collapse:collapse;width:100%;margin:10pt 0}.print-report td,.print-report th{border-bottom:1px solid #ccc;text-align:left;padding:6pt 4pt;font-size:10pt}.print-report thead{display:table-header-group}.print-report tr{break-inside:avoid}.print-report .report-meta{color:#444;font-size:10pt}.print-report .report-total{font-size:18pt;margin:15pt 0}@page{size:A4;margin:18mm}}

/* A click picks a point; only an active drag uses the moving cursor. */
#map.leaflet-container { cursor: crosshair; }
#map.leaflet-container.leaflet-drag-target { cursor: grabbing; }
