:root{--bg:#f3f6fa;--card:#fff;--text:#142033;--muted:#6c788b;--line:#dce3ec;--accent:#0f5b46;--accent2:#173f6b;--danger:#9b2c2c}*{box-sizing:border-box}html{font-size:clamp(14px,.45vw + 10px,20px)}body{margin:0;font-family:"Segoe UI",Tahoma,Arial,sans-serif;font-weight:600;background:var(--bg);color:var(--text);display:flex;min-height:100vh}body.dark{--bg:#0e1621;--card:#172231;--text:#eef4fb;--muted:#aab6c5;--line:#2b3a4d;--accent:#35a77c;--accent2:#5b91cc}.sidebar{width:250px;background:#102b3c;color:#fff;padding:18px;position:sticky;top:0;height:100vh}.sidebar .brand{font-size:1.15rem;font-weight:800;padding:12px 6px 24px}.sidebar a{display:block;color:#eaf2f7;text-decoration:none;padding:11px;border-radius:9px;margin:3px 0}.sidebar a:hover{background:#ffffff18}main{flex:1;min-width:0}header{height:64px;background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:0 24px;position:sticky;top:0;z-index:3}.content{padding:24px;max-width:1900px;margin:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 5px 20px #00000008;margin-bottom:18px}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(5,minmax(150px,1fr))}.kpi b{font-size:2rem;color:var(--accent)}.kpi span,.category-cards span{display:block;color:var(--muted);margin-top:5px}.charts{grid-template-columns:2fr 1fr}.category-cards{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.category-cards b{font-size:1.5rem}.titlebar{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap}h1,h2,h3{font-weight:800}button,.btn,.export a{border:0;background:var(--accent2);color:#fff;padding:10px 14px;border-radius:8px;text-decoration:none;font-weight:700;cursor:pointer}.primary{background:var(--accent);font-size:1.05rem}.danger{background:var(--danger)}input,select,textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);font:inherit;font-weight:600}label{display:grid;gap:6px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.wide{grid-column:span 2}.item{border:1px dashed var(--line);padding:14px;border-radius:12px;margin:12px 0}.filters,.export{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.filters input,.filters select{width:auto;min-width:170px}.table-wrap{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;min-width:850px}th,td{padding:12px;border-bottom:1px solid var(--line);text-align:right}th{background:#7b8ba00e}.badge{background:#0f5b4618;color:var(--accent);padding:8px 12px;border-radius:99px}.details-grid{display:grid;grid-template-columns:150px 1fr;gap:10px}.photos{display:flex;gap:10px;flex-wrap:wrap}.photos img{width:180px;height:130px;object-fit:cover;border-radius:10px}.events-layout{display:grid;grid-template-columns:2fr 1fr;gap:16px}.events-layout #map{height:72vh;border-radius:14px}.feed{max-height:72vh;overflow:auto}.feed article{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}.feed time{display:block;color:var(--muted);font-size:.85rem}.login{display:grid;place-items:center}.login-card{width:min(440px,92vw);background:var(--card);padding:30px;border-radius:18px;box-shadow:0 20px 70px #0002;display:grid;gap:12px}.note,.alert{padding:12px;background:var(--card);border:1px solid var(--line);border-radius:10px}@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.charts,.events-layout{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){body{display:block}.sidebar{position:relative;width:100%;height:auto;display:flex;overflow:auto;gap:5px;padding:8px}.sidebar .brand{display:none}.sidebar a{white-space:nowrap}.content{padding:12px}.form-grid,.kpis{grid-template-columns:1fr}.wide{grid-column:auto}header{height:50px}.events-layout #map{height:50vh}}@media print{.sidebar,header,.filters,.export,button{display:none!important}.content{padding:0}.card{box-shadow:none}}
