*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#09090f;--bg2:#0f1018;--bg3:#161722;--bg4:#1d1f2e;--bg5:#242638;
  --border:#252738;--border2:#2e3148;
  --text:#f0f1f8;--text2:#9395a8;--text3:#545668;
  --blue:#3ab5a4;--blue-d:#0d3d38;
  --green:#3ecf8e;--green-d:#0d3d26;
  --red:#ff5252;--red-d:#3d0d0d;
  --amber:#ffb547;--amber-d:#3d2800;
  --r:10px;
}
html,body{height:100%;background:var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;font-size:14px;overflow:hidden}

/* LANDING */
#landing{position:fixed;inset:0;background:var(--bg);z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;text-align:center}
#landing.out{animation:landOut .5s ease forwards}
@keyframes landOut{to{opacity:0;transform:scale(1.03);pointer-events:none}}
.land-grid{position:absolute;inset:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:60px 60px;opacity:.3;pointer-events:none}
.land-glow{position:absolute;width:700px;height:700px;border-radius:50%;background:radial-gradient(ellipse,rgba(91,143,255,.10) 0%,transparent 70%);pointer-events:none;top:50%;left:50%;transform:translate(-50%,-60%)}
.l-eye{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--text3);margin-bottom:20px;animation:fup .6s .1s both}
.l-h1{font-family:'Syne',sans-serif;font-size:clamp(32px,6vw,68px);font-weight:800;line-height:1.05;margin-bottom:14px;animation:fup .6s .3s both}
.l-h1 em{font-style:normal;color:var(--blue)}
.l-sub{font-size:15px;color:var(--text2);max-width:520px;line-height:1.7;margin-bottom:36px;animation:fup .6s .5s both}
.l-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;animation:fup .6s .7s both}
.l-sel{font-size:14px;padding:11px 16px;border-radius:8px;border:1px solid var(--border2);background:var(--bg4);color:var(--text);min-width:260px;font-family:inherit}
.l-btn{font-family:'Syne',sans-serif;font-size:13px;font-weight:700;padding:11px 28px;border-radius:8px;background:var(--blue);color:#fff;border:none;cursor:pointer;transition:.2s;letter-spacing:.03em}
.l-btn:hover{background:#7aaaff;transform:translateY(-1px)}
.l-btn:disabled{background:var(--bg4);color:var(--text3);cursor:not-allowed;transform:none}
.l-stats{display:flex;gap:36px;margin-top:28px;animation:fup .6s .9s both}
.lst-n{font-family:'Syne',sans-serif;font-size:26px;font-weight:700;color:var(--blue)}
.lst-l{font-size:10px;color:var(--text3);letter-spacing:.06em;text-transform:uppercase;margin-top:2px}
@keyframes fup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

/* APP */
#app{display:flex;height:100vh;opacity:0;transition:opacity .4s}
#app.vis{opacity:1}

/* SIDEBAR */
#sb{width:226px;background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}
.sb-top{padding:16px 16px 12px;border-bottom:1px solid var(--border)}
.sb-logo{font-family:'Syne',sans-serif;font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px}
.sb-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);flex-shrink:0}
.sb-gmina-row{margin-top:8px;padding:8px 10px;background:var(--bg4);border-radius:6px;border:1px solid var(--border2)}
.sb-gmina-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px}
.sb-gmina-name{font-size:13px;font-weight:600;color:var(--blue)}
.sb-gmina-change{font-size:10px;color:var(--text3);cursor:pointer;text-decoration:underline;text-underline-offset:2px;margin-left:auto}
.sb-gmina-change:hover{color:var(--blue)}
.sb-gmina-flex{display:flex;align-items:center}
nav{flex:1;overflow-y:auto;padding:8px 0}
nav::-webkit-scrollbar{width:3px}
nav::-webkit-scrollbar-thumb{background:var(--border2)}
.nsec{padding:12px 16px 4px;font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text3)}
.ni{display:flex;align-items:center;gap:9px;padding:8px 16px;font-size:13px;color:var(--text2);cursor:pointer;border-left:2px solid transparent;transition:.12s;user-select:none}
.ni:hover{background:var(--bg3);color:var(--text)}
.ni.active{color:var(--blue);border-left-color:var(--blue);background:var(--bg3)}
.ni svg{width:15px;height:15px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8}
.ni .nb{margin-left:auto;font-size:9px;padding:2px 5px;border-radius:3px;background:var(--red-d);color:var(--red);font-weight:700}
.sb-foot{padding:11px 16px;border-top:1px solid var(--border);font-size:10px;color:var(--text3);line-height:1.7}
.sb-foot strong{color:var(--green)}

/* MAIN */
#main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
#topbar{height:50px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:10px;flex-shrink:0}
.tb-title{font-family:'Syne',sans-serif;font-size:14px;font-weight:600;flex:1}
.chip{font-size:10px;padding:3px 8px;border-radius:4px;font-family:'DM Mono',monospace;font-weight:500}
.c-ok{background:var(--green-d);color:var(--green)}
.c-w{background:var(--amber-d);color:var(--amber)}
.c-e{background:var(--red-d);color:var(--red)}
.btn-sm{font-size:11px;padding:5px 11px;border-radius:6px;border:1px solid var(--border2);background:var(--bg4);color:var(--text2);cursor:pointer;font-family:inherit;transition:.15s}
.btn-sm:hover{background:var(--bg5);color:var(--text)}
.btn-primary{background:var(--blue-d);border-color:var(--blue);color:var(--blue)}
.btn-primary:hover{background:var(--blue);color:#fff}

#content{flex:1;overflow-y:auto;padding:22px}
#content::-webkit-scrollbar{width:4px}
#content::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
.view{display:none;animation:vin .25s ease}
.view.active{display:block}
@keyframes vin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* CONTEXT BOX */
.ctx{background:var(--bg3);border:1px solid var(--border2);border-left:3px solid var(--blue);border-radius:var(--r);padding:14px 18px;margin-bottom:18px}
.ctx-t{font-family:'Syne',sans-serif;font-size:15px;font-weight:700;margin-bottom:5px}
.ctx-b{font-size:13px;color:var(--text2);line-height:1.75}
.ctx-b strong{color:var(--text)}

/* GMINA STATUS PANEL */
.gsp{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.gsp-box{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:16px}
.gsp-box.highlight{border-color:var(--blue-d);background:linear-gradient(135deg,var(--blue-d),var(--bg3))}
.gsp-label{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px}
.gsp-val{font-family:'Syne',sans-serif;font-size:28px;font-weight:800;line-height:1}
.gsp-sub{font-size:12px;color:var(--text3);margin-top:5px;line-height:1.5}

/* HERO */
.hero{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r);padding:20px;margin-bottom:14px;display:flex;align-items:center;gap:20px}
.hero-num{font-family:'Syne',sans-serif;font-size:52px;font-weight:800;line-height:1;flex-shrink:0}
.hero-right .hero-label{font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin-bottom:6px}
.hero-right .hero-desc{font-size:13px;color:var(--text2);line-height:1.65}
.hero-right .hero-desc strong{color:var(--text)}
.h-blue .hero-num{color:var(--blue)}
.h-red .hero-num{color:var(--red)}
.h-green .hero-num{color:var(--green)}
.h-amber .hero-num{color:var(--amber)}

/* KPI ROW */
.krow{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:14px}
.kpi{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:14px 15px;position:relative}
.kpi-l{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px}
.kpi-v{font-family:'Syne',sans-serif;font-size:24px;font-weight:700;line-height:1}
.kpi-s{font-size:11px;color:var(--text3);margin-top:4px}
.kp-blue .kpi-v{color:var(--blue)} .kp-green .kpi-v{color:var(--green)}
.kp-red .kpi-v{color:var(--red)}   .kp-amber .kpi-v{color:var(--amber)}
.rag{position:absolute;top:10px;right:10px;width:7px;height:7px;border-radius:50%}
.rok{background:var(--green)} .rwa{background:var(--amber)} .rer{background:var(--red)}

/* CARDS */
.card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;margin-bottom:12px}
.card-h{font-family:'Syne',sans-serif;font-size:13px;font-weight:600;margin-bottom:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.card-sub{font-size:12px;color:var(--text3);margin-bottom:12px;line-height:1.6}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
@media(max-width:860px){.two{grid-template-columns:1fr}}

/* TABLE */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
th{padding:7px 9px;text-align:left;font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border2);white-space:nowrap}
td{padding:8px 9px;border-bottom:1px solid var(--border);color:var(--text2)}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--bg4)}
.tn{color:var(--text);font-weight:500}
.tr{text-align:right;font-family:'DM Mono',monospace;font-size:11px}

/* PILLS */
.pill{display:inline-flex;align-items:center;font-size:10px;padding:2px 6px;border-radius:3px;font-weight:600}
.p-ok{background:var(--green-d);color:var(--green)}
.p-w{background:var(--amber-d);color:var(--amber)}
.p-e{background:var(--red-d);color:var(--red)}
.p-b{background:var(--blue-d);color:var(--blue)}
.p-g{background:#1a3d26;color:#4fd68a}

/* DISC */
.disc{font-size:12px;color:var(--text3);background:var(--bg4);border:1px solid var(--border);border-left:2px solid var(--amber);border-radius:6px;padding:10px 13px;margin-top:10px;line-height:1.7}
.disc strong{color:var(--amber)}
.disc-ok{border-left-color:var(--green)} .disc-ok strong{color:var(--green)}
.disc-red{border-left-color:var(--red)}  .disc-red strong{color:var(--red)}
.disc-b{border-left-color:var(--blue)}   .disc-b strong{color:var(--blue)}

/* BARS */
.brow{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.blbl{font-size:11px;color:var(--text2);width:160px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btrack{flex:1;height:6px;background:var(--bg5);border-radius:3px;overflow:hidden}
.bfill{height:100%;border-radius:3px}
.bval{font-size:11px;color:var(--text3);width:90px;text-align:right;flex-shrink:0;font-family:'DM Mono',monospace}

/* SCORE BAR */
.score-bar{background:var(--bg4);border:1px solid var(--border2);border-radius:var(--r);padding:16px;margin-bottom:12px}
.score-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.score-label{font-size:12px;color:var(--text2);width:200px;flex-shrink:0}
.score-track{flex:1;height:10px;background:var(--bg5);border-radius:5px;overflow:hidden;position:relative}
.score-fill{height:100%;border-radius:5px;transition:width .4s ease}
.score-val{font-size:12px;font-family:'DM Mono',monospace;color:var(--text);width:36px;text-align:right;flex-shrink:0}
.score-total{font-family:'Syne',sans-serif;font-size:32px;font-weight:800;margin-top:8px}

/* CHECKLIST */
.checklist{margin-top:4px}
.cl-item{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);align-items:flex-start}
.cl-item:last-child{border-bottom:none}
.cl-num{font-family:'Syne',sans-serif;font-size:16px;font-weight:700;color:var(--text3);width:24px;flex-shrink:0;text-align:center}
.cl-body{flex:1}
.cl-title{font-size:13px;font-weight:500;color:var(--text);margin-bottom:2px}
.cl-desc{font-size:11px;color:var(--text3);line-height:1.55}

/* KALKULATOR */
.slg{margin-bottom:13px}
.sll{font-size:12px;color:var(--text2);display:flex;justify-content:space-between;margin-bottom:4px}
.slv{color:var(--blue);font-family:'DM Mono',monospace;font-weight:500}
input[type=range]{width:100%;accent-color:var(--blue)}
.rbox{background:var(--bg4);border:1px solid var(--border2);border-radius:var(--r);padding:18px}
.rrow{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--border)}
.rrow:last-child{border-bottom:none;padding-bottom:0}
.rlbl{font-size:12px;color:var(--text3)}
.rval{font-family:'Syne',sans-serif;font-size:17px;font-weight:700}
.rbig{font-size:30px;color:var(--blue)}
.rgreen{color:var(--green)}

/* VARIANTS */
.vtabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:0}
.vtab{padding:9px 16px;font-size:13px;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:.12s;font-weight:500}
.vtab:hover{color:var(--text2)}
.vtab.a{color:var(--blue);border-bottom-color:var(--blue)}
.vpanel{display:none}
.vpanel.a{display:block}
.vrow{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);align-items:flex-start}
.vrow:last-child{border-bottom:none}
.vidx{font-family:'Syne',sans-serif;font-size:18px;font-weight:700;color:var(--text3);width:22px;flex-shrink:0}
.vact{font-size:13px;color:var(--text);font-weight:500;margin-bottom:2px}
.vtype{font-size:11px;color:var(--text3)}
.vcost{flex-shrink:0;text-align:right;font-size:12px;font-family:'DM Mono',monospace;color:var(--amber)}
.vfrpa{font-size:10px;color:var(--green);margin-top:2px}

/* DIP MODULE */
.dip-card{background:var(--bg4);border:1px solid var(--border2);border-radius:8px;padding:14px 16px;margin-bottom:10px}
.dip-title{font-size:13px;font-weight:500;color:var(--text);margin-bottom:4px}
.dip-desc{font-size:11px;color:var(--text3);line-height:1.6;margin-bottom:8px}
.dip-meta{font-size:10px;color:var(--blue);font-weight:500}
.dip-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.dip-status{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.status-btn{font-size:10px;padding:3px 8px;border-radius:4px;border:1px solid var(--border2);background:var(--bg5);color:var(--text3);cursor:pointer;font-family:inherit;transition:.12s}
.status-btn:hover{border-color:var(--blue);color:var(--blue)}
.status-btn.active-status{border-color:var(--green);color:var(--green);background:var(--green-d)}

/* MAP */
#mapLeaflet{height:calc(100vh - 200px);min-height:500px;border-radius:8px;overflow:hidden;border:1px solid var(--border);z-index:0}
.map-legend{background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:8px 12px;line-height:1.7}
.map-legend label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text2);cursor:pointer}
.map-legend input{accent-color:var(--blue)}
.leaflet-container{background:#0d1520!important;font-family:'DM Sans',sans-serif}

/* SOURCES */
.sitem{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid var(--border)}
.sitem:last-child{border-bottom:none}
.sdot{width:8px;height:8px;border-radius:50%;margin-top:4px;flex-shrink:0}
.sname{font-size:13px;font-weight:500;color:var(--text);margin-bottom:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sdesc{font-size:12px;color:var(--text2);margin-bottom:3px}
.sgap{font-size:11px;color:var(--text3)}

/* SELECT / FILTER */
.fbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.fbar label{font-size:11px;color:var(--text3)}
.fsel{font-size:12px;padding:6px 9px;border-radius:6px;border:1px solid var(--border2);background:var(--bg4);color:var(--text);font-family:inherit}
.finp{font-size:12px;padding:6px 9px;border-radius:6px;border:1px solid var(--border2);background:var(--bg4);color:var(--text);font-family:inherit;width:150px}

/* RAPORT */
.rap-doc{background:var(--bg4);border:1px solid var(--border2);border-radius:var(--r);padding:24px;line-height:1.8}
.rap-doc h2{font-family:'Syne',sans-serif;font-size:20px;font-weight:700;margin-bottom:4px}
.rap-doc h3{font-size:13px;font-weight:400;color:var(--text2);margin-bottom:20px}
.rap-sec{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.1em;margin:16px 0 6px}
.rap-doc p{font-size:13px;color:var(--text2);margin-bottom:10px}
.rap-fact{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px}
.rap-fact-l{color:var(--text3)} .rap-fact-v{color:var(--text);font-family:'DM Mono',monospace;font-weight:500}

#hambBtn{display:none;position:fixed;top:12px;left:12px;z-index:200;background:var(--blue);color:#fff;border:none;border-radius:6px;padding:8px 12px;font-size:18px;cursor:pointer}
@media(max-width:768px){#hambBtn{display:block}#sidebar{transform:translateX(-100%);transition:transform .25s}#sidebar.open{transform:translateX(0)}#main{margin-left:0!important}}
