:root{--ink:#12221d;--muted:#60726b;--green:#0a6b55;--green2:#159276;--mint:#e7f6f0;--line:#dde8e3;--paper:#f4f7f5;--red:#d6455d;--amber:#dc8a16;--blue:#316fd3;--purple:#7257b5;--shadow:0 18px 50px rgba(20,55,43,.10)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,system-ui,sans-serif}.portal-shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.portal-side{position:sticky;top:0;height:100vh;background:#092e27;color:#fff;padding:26px 17px;display:flex;flex-direction:column}.portal-brand{display:flex;align-items:center;gap:12px;padding:0 8px 25px;border-bottom:1px solid rgba(255,255,255,.12)}.portal-brand>span{display:grid;place-items:center;width:43px;height:43px;border-radius:14px;background:linear-gradient(145deg,#24a77f,#0c745b);font-weight:800}.portal-brand strong,.portal-brand small{display:block}.portal-brand small{opacity:.62;font-size:10px;margin-top:3px}.portal-side nav{display:grid;gap:4px;margin-top:21px}.portal-side nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;text-decoration:none;color:#c8ded7;font-size:13px;font-weight:650}.portal-side nav a:hover,.portal-side nav a.active{background:rgba(255,255,255,.11);color:#fff}.nav-dot{display:grid;place-items:center;width:25px;height:25px;border:1px solid rgba(255,255,255,.17);border-radius:8px;font-size:10px}.side-note{margin-top:auto;padding:14px;border-radius:13px;background:rgba(255,255,255,.08);font-size:10px;line-height:1.5}.side-note b,.side-note span{display:block}.side-note span{opacity:.72;margin-top:5px}.portal-main{min-width:0;padding:28px 34px 50px}.portal-top{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.portal-top h1{font:700 34px/1.1 'Playfair Display',serif;margin:5px 0 7px}.portal-top p{margin:0;color:var(--muted);font-size:13px}.portal-top .eyebrow{font-size:10px;letter-spacing:.15em;font-weight:800;color:var(--green)}.live-pill{padding:9px 13px;background:#fff;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.live-pill i{display:inline-block;width:8px;height:8px;background:#20ae78;border-radius:50%;margin-right:7px;box-shadow:0 0 0 5px rgba(32,174,120,.12)}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.kpi,.card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 24px rgba(20,55,43,.045)}.kpi{padding:18px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;right:-24px;top:-25px;background:var(--mint)}.kpi small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:800}.kpi strong{display:block;font-size:28px;margin-top:7px}.kpi span{font-size:10px;color:var(--green)}.grid-2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);gap:18px}.grid-equal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 19px;border-bottom:1px solid var(--line)}.card-head h2{font-size:15px;margin:0}.card-head p{font-size:10px;color:var(--muted);margin:3px 0 0}.card-body{padding:18px}.hero-map{height:390px;background:#eaf0ed}.mini-map{height:265px;border-radius:14px;overflow:hidden}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #edf2ef;vertical-align:middle}th{background:#f8faf9;color:#687b74;text-transform:uppercase;letter-spacing:.055em;font-size:9px;white-space:nowrap}tr:hover td{background:#fbfdfc}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.035em;background:#eef2f0;color:#52635d}.badge.critical,.badge.open{background:#fee9ed;color:#ad2440}.badge.high{background:#fff0dd;color:#9b5805}.badge.medium,.badge.under-review{background:#fff6d9;color:#846200}.badge.low,.badge.resolved,.badge.verified{background:#e7f6f0;color:#087054}.badge.government{background:#e8efff;color:#2e58aa}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:9px 12px;text-decoration:none;font:700 11px Manrope;cursor:pointer}.btn.primary{background:var(--green);color:#fff}.btn.secondary{background:var(--mint);color:var(--green)}.btn.ghost{border:1px solid var(--line);background:#fff;color:var(--ink)}.actions{display:flex;flex-wrap:wrap;gap:8px}.alert-stack{display:grid;gap:10px}.alert-card{padding:14px;border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:12px;background:#fff}.alert-card.critical{border-left-color:var(--red)}.alert-card b,.alert-card small{display:block}.alert-card small{margin-top:5px;color:var(--muted)}.metric-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.metric-row:last-child{border:0}.filters{display:flex;flex-wrap:wrap;gap:10px;padding:15px 18px;background:#fff;border:1px solid var(--line);border-radius:16px;margin-bottom:16px}.filters input,.filters select,.field input,.field select,.field textarea{border:1px solid #cfdcd6;border-radius:10px;padding:10px 12px;font:500 12px Manrope;background:#fff}.filters input{min-width:260px;flex:1}.field{display:grid;gap:6px}.field label{font-size:10px;text-transform:uppercase;font-weight:800;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.empty-state{padding:45px;text-align:center;color:var(--muted)}.empty-state strong{display:block;color:var(--ink);font-size:16px;margin-bottom:6px}.callout{padding:14px 16px;border-radius:13px;background:#e9f2ff;color:#254f88;font-size:11px;line-height:1.6;margin-bottom:16px}.report-hero{padding:28px;background:linear-gradient(135deg,#092e27,#0e765e);color:#fff}.report-hero h2{font:700 27px 'Playfair Display';margin:3px 0}.report-hero p{color:#cce2da;margin:0}.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.report-tile{padding:17px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);transition:.2s}.report-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.report-tile strong,.report-tile span{display:block}.report-tile span{font-size:10px;color:var(--muted);margin-top:6px}.timeline{position:relative;padding-left:23px}.timeline:before{content:"";position:absolute;left:6px;top:7px;bottom:7px;width:2px;background:var(--line)}.timeline-item{position:relative;padding:0 0 18px}.timeline-item:before{content:"";position:absolute;left:-22px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--mint)}.timeline-item b,.timeline-item small{display:block}.timeline-item small{color:var(--muted);margin-top:4px}.portal-footer{text-align:center;color:#7b8c86;font-size:9px;padding-top:25px}.map-legend{background:white;padding:8px 10px;border-radius:9px;box-shadow:0 4px 12px #0002;font-size:10px}.pulse-marker{animation:pulse 1.7s infinite}@keyframes pulse{50%{filter:saturate(1.8);opacity:.72}}@media(max-width:1050px){.portal-shell{grid-template-columns:76px 1fr}.portal-brand div,.portal-side nav a:not(.active) .label,.side-note{display:none}.portal-brand{padding-left:0}.portal-side nav a{justify-content:center;font-size:0}.portal-side nav a.active{font-size:0}.kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:750px){.portal-main{padding:20px 14px}.portal-shell{display:block}.portal-side{position:static;height:auto;padding:12px;display:block}.portal-brand{display:none}.portal-side nav{display:flex;overflow:auto;margin:0}.portal-side nav a{font-size:0;min-width:45px}.grid-2,.grid-equal,.form-grid{grid-template-columns:1fr}.kpis{grid-template-columns:1fr 1fr}.portal-top h1{font-size:27px}.hero-map{height:330px}}@media print{.portal-side,.live-pill,.filters,.no-print,.portal-footer{display:none!important}.portal-shell{display:block}.portal-main{padding:0}.card,.kpi{box-shadow:none;break-inside:avoid}.portal-top{margin-top:0}.btn{display:none}}

