:root{
  --deep:#071d14;
  --deep-2:#0b2d1e;
  --green:#1d5c3f;
  --green-2:#2f8f5b;
  --green-3:#8fd7a8;
  --mint:#e8f6ed;
  --cream:#fffaf0;
  --paper:#ffffff;
  --sand:#ead8b4;
  --gold:#d8a943;
  --orange:#d9822b;
  --red:#c24132;
  --blue:#245b8f;
  --purple:#5b4c9a;
  --text:#17211b;
  --muted:#66736b;
  --line:rgba(13,47,33,.13);
  --shadow:0 24px 70px rgba(7,29,20,.18);
  --soft:0 12px 30px rgba(7,29,20,.09);
  --radius-xl:30px;
  --radius-lg:22px;
  --radius-md:16px;
  --radius-sm:12px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  min-height:100vh;
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--text);
  background:radial-gradient(circle at 12% 6%,rgba(216,169,67,.22),transparent 30%),radial-gradient(circle at 88% 8%,rgba(47,143,91,.22),transparent 32%),linear-gradient(135deg,#edf7ef 0%,#f9f0dc 100%);
}
button,input,select,textarea{font:inherit}
button{border:0}
a{color:inherit}
img{display:block;max-width:100%}
.hidden{display:none!important}
.page{width:min(1180px,calc(100% - 28px));margin:0 auto;padding:22px 0 36px}
.brand{display:flex;align-items:center;gap:13px}
.brand-mark{width:58px;height:58px;display:grid;place-items:center;border-radius:18px;background:linear-gradient(145deg,var(--deep),var(--green));box-shadow:0 16px 32px rgba(7,29,20,.22)}
.brand-mark img{width:42px;height:42px;filter:brightness(0) invert(1)}
.brand h1{font-family:"Playfair Display",serif;font-size:clamp(1.7rem,3vw,2.25rem);line-height:.95;color:var(--deep);letter-spacing:-.04em}
.brand p{color:var(--muted);font-weight:800;font-size:.9rem;margin-top:4px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}
.top-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.9);box-shadow:0 10px 22px rgba(7,29,20,.07);color:var(--green);font-weight:900;font-size:.9rem;white-space:nowrap}
.dot{width:9px;height:9px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.15)}
.btn{min-height:48px;padding:0 18px;border-radius:15px;display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;font-weight:900;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;text-decoration:none;white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn-primary{color:#fff;background:linear-gradient(145deg,var(--deep),var(--green));box-shadow:0 16px 34px rgba(7,29,20,.25)}
.btn-secondary{color:var(--deep);background:var(--cream);border:1px solid var(--sand);box-shadow:0 10px 22px rgba(7,29,20,.08)}
.btn-ghost{background:transparent;color:var(--green);border:1px solid #cae2d1}
.btn-danger{color:#fff;background:linear-gradient(145deg,#8a1c1c,var(--red));box-shadow:0 16px 34px rgba(194,65,50,.2)}
.badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;border-radius:999px;padding:0 10px;font-weight:900;font-size:.73rem;white-space:nowrap;letter-spacing:.02em}
.badge.low{color:#17633c;background:#e8f8ee;border:1px solid #bde7c9}
.badge.medium{color:#7c3f00;background:#fff1d3;border:1px solid #f8d490}
.badge.high{color:#8a1c1c;background:#fee2e2;border:1px solid #fecaca}
.badge.critical{color:#fff;background:#991b1b;border:1px solid #7f1d1d}
.badge.neutral{color:var(--deep);background:#edf2f7;border:1px solid #d7dee8}
.card{background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.92);border-radius:var(--radius-lg);box-shadow:var(--soft)}
.notice{padding:14px 16px;border-radius:16px;font-weight:800;line-height:1.45}
.notice.info{color:#104128;background:#e8f6ed;border:1px solid #bee4c8}
.notice.warn{color:#704600;background:#fff8df;border:1px solid #f2d48b}
.notice.error{color:#841c1c;background:#fee2e2;border:1px solid #fecaca}
.status{display:none;padding:13px 14px;border-radius:14px;font-weight:800;line-height:1.4;margin:16px 24px 0}
.status.show{display:block}
.status.loading{color:#744600;background:#fff7d6;border:1px solid #f1d675}
.status.success{color:#16623b;background:#e7f8ed;border:1px solid #bce7c8}
.status.error{color:#841c1c;background:#fee2e2;border:1px solid #fecaca}
.field-group{display:grid;gap:9px}
.field-group label{font-weight:900;color:var(--deep);font-size:.94rem}
.field,textarea,select{width:100%;border:1px solid #dce8df;background:#fff;color:var(--text);border-radius:15px;padding:13px 14px;outline:none;transition:.2s ease}
textarea{min-height:96px;resize:vertical}
.field:focus,textarea:focus,select:focus{border-color:var(--green-2);box-shadow:0 0 0 4px rgba(47,143,91,.12)}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi{padding:18px;border-radius:20px;border:1px solid var(--line);background:#fff;box-shadow:0 10px 24px rgba(7,29,20,.07);display:flex;gap:14px;align-items:center}
.kpi-icon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:var(--mint);color:var(--green);font-size:1.45rem;flex:0 0 auto}
.kpi small{display:block;color:var(--muted);font-weight:800;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}
.kpi strong{display:block;font-size:1.55rem;color:var(--deep);letter-spacing:-.04em;margin-top:2px}
.kpi span{display:block;color:var(--muted);font-size:.82rem;font-weight:700;margin-top:2px}
.risk-low{--risk-color:#267447;--risk-bg:#e8f8ee}
.risk-medium{--risk-color:#a1600b;--risk-bg:#fff1d3}
.risk-high{--risk-color:#c24132;--risk-bg:#fee2e2}
.risk-critical{--risk-color:#991b1b;--risk-bg:#fee2e2}
.chart-bars{display:grid;gap:12px}
.chart-row{display:grid;grid-template-columns:150px 1fr 55px;gap:12px;align-items:center;font-size:.9rem;font-weight:800;color:var(--deep)}
.chart-track{height:13px;background:#edf2ee;border:1px solid #dce8df;border-radius:999px;overflow:hidden}
.chart-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--green-2),var(--gold));transition:width .3s ease}
.risk-meter{width:190px;height:190px;border-radius:999px;background:conic-gradient(var(--risk-color) calc(var(--value)*1%),#e9f1eb 0);display:grid;place-items:center;margin:auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.risk-meter-inner{width:132px;height:132px;border-radius:999px;background:#fff;display:grid;place-items:center;text-align:center;padding:14px;box-shadow:0 8px 18px rgba(7,29,20,.09)}
.risk-meter-inner strong{display:block;font-size:1.4rem;color:var(--risk-color);letter-spacing:-.04em}
.risk-meter-inner span{display:block;margin-top:5px;color:var(--muted);font-size:.72rem;font-weight:900;text-transform:uppercase;line-height:1.25}
.inline-icon{width:20px;height:20px;object-fit:contain;flex:0 0 auto}
.leaflet-container{font-family:Inter,system-ui,sans-serif}
.map{width:100%;height:340px;border-radius:18px;border:1px solid #dce8df;background:#e8eee8;overflow:hidden}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:9999;display:none;align-items:center;justify-content:center;padding:20px}
.modal.active{display:flex}
.modal-card{width:min(900px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:24px;box-shadow:0 30px 70px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.6)}
.modal-head{padding:20px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}
.modal-body{padding:22px;display:grid;gap:16px}
.close-btn{width:40px;height:40px;border-radius:999px;background:#f1f5f2;color:var(--deep);cursor:pointer;font-size:1.4rem;font-weight:900}
.table-wrap{overflow:auto;border-radius:20px;border:1px solid var(--line);background:#fff}
table{width:100%;border-collapse:collapse;min-width:860px}
th,td{padding:13px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:.9rem;vertical-align:top}
th{background:#f3f8f4;color:var(--deep);font-weight:900;position:sticky;top:0;z-index:1}
td{color:var(--text)}
tr:hover td{background:#fbfdfb}
@media(max-width:980px){.grid-3{grid-template-columns:repeat(2,1fr)}.kpi-grid{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.chart-row{grid-template-columns:110px 1fr 45px}}
@media(max-width:680px){.page{width:min(100% - 18px,1180px);padding-top:12px}.topbar{align-items:flex-start;flex-direction:column}.grid-3{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr}.btn{width:100%}.risk-meter{width:160px;height:160px}.risk-meter-inner{width:112px;height:112px}.chart-row{grid-template-columns:1fr}.chart-row > span:last-child{text-align:right}.map{height:280px}}
