:root{
  --navy:#06192f; --navy2:#0a2745; --navy3:#123d63; --green:#176a3a; --emerald:#21a35b;
  --lime:#74c947; --gold:#d39a16; --cyan:#31d5d8; --white:#f8fbff; --ink:#10243a;
  --muted:#8095aa; --line:rgba(255,255,255,.12); --shadow:0 18px 50px rgba(3,15,29,.24);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
*{box-sizing:border-box} html,body{height:100%;margin:0;background:#06192f;color:var(--white);overflow:hidden}
button,input,select{font:inherit}.hidden{display:none!important}
.boot{position:fixed;inset:0;z-index:9999;background:radial-gradient(circle at 50% 45%,#123d63 0,#06192f 55%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:.45s opacity}.boot.hide{opacity:0;pointer-events:none}.boot-ring{width:54px;height:54px;border:2px solid rgba(255,255,255,.12);border-top-color:var(--gold);border-radius:50%;animation:spin 1s linear infinite}.boot strong{letter-spacing:.18em}.boot span{color:#9eb4c8;font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}
.topbar{height:74px;background:rgba(5,22,41,.96);border-bottom:1px solid rgba(255,255,255,.08);display:grid;grid-template-columns:310px minmax(320px,1fr) auto;align-items:center;gap:20px;padding:0 18px;position:relative;z-index:30;box-shadow:0 8px 30px rgba(0,0,0,.2)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-logo{width:55px;height:55px;border-radius:50%;object-fit:cover;background:#fff}.brand div{display:flex;flex-direction:column}.brand strong{font-family:Georgia,serif;font-size:22px;letter-spacing:.08em}.brand span{color:#d4a22a;font-size:10px;letter-spacing:.14em;font-weight:800}
.top-search-wrap{position:relative;display:flex;align-items:center}.top-search{width:100%;background:#0b2846;border:1px solid rgba(255,255,255,.13);height:44px;border-radius:13px;color:#fff;padding:0 72px 0 42px;outline:none;transition:.2s}.top-search:focus{border-color:rgba(49,213,216,.55);box-shadow:0 0 0 3px rgba(49,213,216,.08)}.top-search::placeholder{color:#7790a8}.search-icon{position:absolute;left:15px;font-size:21px;color:#88a5bd}.top-search-wrap kbd{position:absolute;right:10px;color:#7390a8;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:3px 6px;font-size:11px;background:#071c33}.search-results{position:absolute;top:51px;left:0;right:0;background:#071d35;border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:var(--shadow);padding:8px;max-height:360px;overflow:auto}.search-item{display:flex;align-items:center;justify-content:space-between;padding:10px;border-radius:10px;cursor:pointer}.search-item:hover{background:#0c3153}.search-item small{color:#7f9ab0}
.top-actions{display:flex;gap:8px}.ghost-btn,.primary-btn,.map-tool,.icon-btn,.text-btn{border:0;cursor:pointer}.ghost-btn{background:rgba(255,255,255,.06);color:#cfe0ec;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:10px 12px}.ghost-btn:hover{background:rgba(255,255,255,.1)}.ghost-btn.small{padding:8px 10px;font-size:12px}.primary-btn{background:linear-gradient(135deg,#1d7a43,#2e9c4f);color:#fff;border-radius:10px;padding:11px 14px;font-weight:750;box-shadow:0 8px 24px rgba(33,163,91,.2)}
.app-shell{height:calc(100vh - 74px);display:grid;grid-template-columns:314px 1fr 342px;position:relative;transition:.25s}.app-shell.left-collapsed{grid-template-columns:64px 1fr 342px}.app-shell.right-collapsed{grid-template-columns:314px 1fr 64px}.app-shell.left-collapsed.right-collapsed{grid-template-columns:64px 1fr 64px}
.glass-panel{background:linear-gradient(180deg,rgba(8,31,54,.96),rgba(5,24,43,.94));backdrop-filter:blur(16px);border-color:rgba(255,255,255,.1);box-shadow:var(--shadow)}
.left-panel,.right-panel{position:relative;z-index:20;overflow:auto;padding:16px;border-right:1px solid rgba(255,255,255,.08)}.right-panel{border-right:0;border-left:1px solid rgba(255,255,255,.08)}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px}.panel-head h2{font-size:20px;margin:2px 0 0}.eyebrow{display:block;font-size:9px;font-weight:900;letter-spacing:.16em;color:#6fd39c}.icon-btn{width:32px;height:32px;color:#a7bccd;background:rgba(255,255,255,.06);border-radius:9px;font-size:23px}.app-shell.left-collapsed .left-panel>*:not(.panel-head),.app-shell.right-collapsed .right-panel>*:not(.panel-head){display:none}.app-shell.left-collapsed .left-panel .panel-head>div,.app-shell.right-collapsed .right-panel .panel-head>div{display:none}
.layer-stack{display:grid;gap:7px}.layer-row{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:9px;padding:8px;border:1px solid rgba(255,255,255,.07);border-radius:11px;background:rgba(255,255,255,.035);cursor:pointer}.layer-row:hover{background:rgba(255,255,255,.07)}.layer-icon{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;background:rgba(255,255,255,.06);font-size:16px}.layer-copy strong{display:block;font-size:12px}.layer-copy span{font-size:9px;color:#7892a8}.layer-toggle{appearance:none;width:34px;height:19px;background:#2a4258;border-radius:20px;position:relative;cursor:pointer}.layer-toggle:after{content:"";position:absolute;top:3px;left:3px;width:13px;height:13px;background:#fff;border-radius:50%;transition:.2s}.layer-toggle:checked{background:#208b4c}.layer-toggle:checked:after{transform:translateX(15px)}
.divider{height:1px;background:rgba(255,255,255,.08);margin:14px 0}.section-title{display:flex;justify-content:space-between;font-size:12px;font-weight:800;margin-bottom:9px}.text-btn{background:none;color:#65c890;font-size:10px}.field-label{display:block;color:#8ca3b6;font-size:10px;margin:10px 0 6px}.control{width:100%;background:#0b2a49;color:#e9f2f7;border:1px solid rgba(255,255,255,.1);border-radius:9px;padding:9px;outline:none}input[type=range]{width:100%;accent-color:#26a35b}.range-row{display:flex;justify-content:space-between;color:#748da3;font-size:9px}.range-row strong{color:#d8e5ee}.switch-row{display:flex;align-items:center;gap:8px;font-size:11px;margin-top:12px;cursor:pointer}.switch-row input{display:none}.switch{width:34px;height:19px;background:#2a4258;border-radius:20px;position:relative}.switch:after{content:"";position:absolute;top:3px;left:3px;width:13px;height:13px;background:#fff;border-radius:50%;transition:.2s}.switch-row input:checked+.switch{background:#208b4c}.switch-row input:checked+.switch:after{transform:translateX(15px)}.integrity-card{display:flex;gap:9px;margin-top:15px;padding:10px;background:rgba(30,118,67,.13);border:1px solid rgba(56,177,103,.2);border-radius:11px}.integrity-icon{width:26px;height:26px;border-radius:50%;background:#1a7d45;display:grid;place-items:center;flex:0 0 auto}.integrity-card strong{font-size:11px}.integrity-card p{margin:3px 0 0;color:#92aa9e;font-size:9px;line-height:1.45}
.map-stage{position:relative;min-width:0;overflow:hidden;background:#071b31}.map{position:absolute;inset:0}.maplibregl-map{font-family:inherit}.maplibregl-ctrl-group{background:#0b2a49!important;border:1px solid rgba(255,255,255,.12)!important}.maplibregl-ctrl button span{filter:invert(1);opacity:.8}.maplibregl-popup-content{background:#08243f;color:#fff;border-radius:12px;padding:12px;box-shadow:var(--shadow)}.maplibregl-popup-tip{border-top-color:#08243f!important}.map-fallback{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,#0d4167,#06192f);display:grid;place-items:center;align-content:center;text-align:center;color:#87a7bd}.fallback-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(49,213,216,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(49,213,216,.06) 1px,transparent 1px);background-size:40px 40px}.fallback-country{font-size:74px;font-weight:900;letter-spacing:.1em;color:rgba(255,255,255,.05);z-index:1}.map-fallback p{z-index:1}.map-top-left,.map-top-right{position:absolute;z-index:12;top:14px}.map-top-left{left:14px}.map-top-right{right:14px;display:flex;gap:7px}.mode-tabs{display:flex;background:rgba(6,25,47,.88);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:4px;box-shadow:var(--shadow)}.mode-tab{border:0;color:#87a4ba;background:transparent;padding:8px 10px;border-radius:8px;font-size:10px;font-weight:750;cursor:pointer}.mode-tab.active{background:#0e3c61;color:#fff}.map-tool{background:rgba(6,25,47,.9);border:1px solid rgba(255,255,255,.12);color:#fff;padding:9px 11px;border-radius:10px;box-shadow:var(--shadow);font-size:11px}.map-tool.drawing{background:#176a3a;border-color:#39c072}.map-legend{position:absolute;left:14px;bottom:85px;z-index:12;width:250px;padding:11px;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.legend-head{display:flex;justify-content:space-between;align-items:center;font-size:10px}.demo-pill{font-size:7px;padding:3px 5px;border-radius:5px;background:rgba(211,154,22,.18);color:#e3b447}.gradient-bar{height:7px;border-radius:6px;background:linear-gradient(90deg,#1c4e68,#2c917d,#77ba47,#e3aa1c);margin:8px 0 4px}.legend-scale{display:flex;justify-content:space-between;color:#829cb1;font-size:8px}.map-legend small{display:block;color:#6e879c;font-size:7.5px;line-height:1.35;margin-top:7px}.national-kpis{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:12;display:flex;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:6px 8px;max-width:calc(100% - 290px);overflow:auto}.kpi{min-width:110px;padding:4px 11px;border-right:1px solid rgba(255,255,255,.09)}.kpi:last-child{border-right:0}.kpi strong{display:block;font-size:15px}.kpi span{font-size:8px;color:#7f9bb0;text-transform:uppercase;letter-spacing:.05em}
.score-hero{display:grid;grid-template-columns:86px 1fr;gap:12px;align-items:center;padding:12px;background:linear-gradient(135deg,rgba(30,131,72,.18),rgba(17,64,99,.22));border:1px solid rgba(63,190,108,.2);border-radius:13px}.score-ring{width:80px;height:80px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#61c561 var(--score),rgba(255,255,255,.08) 0);position:relative}.score-ring:before{content:"";position:absolute;inset:7px;border-radius:50%;background:#08233d}.score-ring b{position:relative;font-size:25px}.score-copy strong{font-size:12px}.score-copy p{color:#89a3b5;font-size:9px;line-height:1.4;margin:4px 0}.confidence{font-size:8px;color:#7cdaa1}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.metric-card{padding:9px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07);border-radius:10px}.metric-card span{display:block;color:#7f98ad;font-size:8px}.metric-card strong{font-size:13px}.mini-bars{display:grid;gap:6px;margin-top:12px}.bar-row{display:grid;grid-template-columns:84px 1fr 25px;align-items:center;gap:6px;font-size:8px;color:#8fa6b8}.bar-track{height:5px;background:rgba(255,255,255,.07);border-radius:5px;overflow:hidden}.bar-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,#1d8350,#71c94c)}.insight{margin-top:11px;padding:10px;border-left:2px solid var(--gold);background:rgba(211,154,22,.08);border-radius:0 9px 9px 0}.insight strong{font-size:10px}.insight p{margin:4px 0;color:#95aabd;font-size:9px;line-height:1.4}.action-stack{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.action-stack button{padding:9px;border-radius:9px;border:0;cursor:pointer;font-size:10px;font-weight:750}.action-stack .primary-action{background:#1f8c4d;color:#fff}.action-stack .secondary-action{background:#0d3152;color:#cfe2ee;border:1px solid rgba(255,255,255,.08)}.source-note{margin-top:13px;color:#637f94;font-size:8px;line-height:1.45}.source-note a{color:#6fb5d8}
.exchange-drawer{position:fixed;z-index:40;left:314px;right:342px;bottom:0;height:286px;background:linear-gradient(180deg,rgba(8,31,54,.99),rgba(5,21,39,.995));border-top:1px solid rgba(255,255,255,.12);box-shadow:0 -20px 50px rgba(0,0,0,.24);transform:translateY(232px);transition:.32s;padding:10px 16px 16px}.exchange-drawer.open{transform:translateY(0)}.app-shell.left-collapsed~.exchange-drawer{left:64px}.drawer-handle{position:absolute;top:-17px;left:50%;transform:translateX(-50%);width:70px;height:18px;background:#092743;border:1px solid rgba(255,255,255,.1);border-bottom:0;border-radius:10px 10px 0 0;cursor:pointer}.drawer-handle span{width:28px;height:3px;background:#617e94;border-radius:3px;display:block;margin:8px auto}.drawer-header{display:flex;align-items:center;justify-content:space-between;margin:7px 0 10px}.drawer-header h2{font-size:16px;margin:2px 0}.drawer-actions{display:flex;align-items:center;gap:8px}.count-pill{font-size:9px;color:#a5bbcb;background:rgba(255,255,255,.07);padding:6px 8px;border-radius:8px}.project-grid{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:9px;overflow:auto;padding-bottom:6px}.project-card{background:#0a2947;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:10px;cursor:pointer;transition:.2s;min-height:176px}.project-card:hover{transform:translateY(-2px);border-color:rgba(64,202,119,.35)}.card-top{display:flex;justify-content:space-between;gap:8px}.project-type{font-size:7px;text-transform:uppercase;color:#73d39c;letter-spacing:.08em}.maturity-badge{font-size:7px;border-radius:5px;padding:3px 5px;background:#102f4d;color:#a5bdcf}.project-card h3{font-size:12px;margin:7px 0 4px;line-height:1.25}.project-card .location{font-size:8px;color:#7f9bb0}.progress{height:5px;background:rgba(255,255,255,.07);border-radius:5px;overflow:hidden;margin:9px 0 4px}.progress span{height:100%;display:block;background:linear-gradient(90deg,#1e8b4d,#71c84b)}.funding-row{display:flex;justify-content:space-between;font-size:8px;color:#7f98aa}.card-metrics{display:flex;gap:10px;margin-top:9px}.card-metrics div{border-left:1px solid rgba(255,255,255,.08);padding-left:7px}.card-metrics div:first-child{border-left:0;padding-left:0}.card-metrics strong{display:block;font-size:10px}.card-metrics span{font-size:7px;color:#718da3}
.modal{width:min(840px,92vw);max-height:88vh;border:1px solid rgba(255,255,255,.13);border-radius:18px;background:#061c33;color:#fff;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.55)}.modal::backdrop{background:rgba(1,9,17,.7);backdrop-filter:blur(7px)}.modal-shell{padding:20px}.modal-close{float:right;border:0;background:#0e3456;color:#fff;width:34px;height:34px;border-radius:9px;cursor:pointer}.modal h2{margin:5px 0}.modal-sub{color:#80a0b5;font-size:11px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.modal-card{background:#0a2a49;border:1px solid rgba(255,255,255,.08);padding:13px;border-radius:12px}.modal-card h3{font-size:11px;margin:0 0 8px}.modal-card p,.modal-card li{font-size:9px;color:#9cb1c0;line-height:1.45}.modal-card ul{padding-left:16px}.funder-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px;border-bottom:1px solid rgba(255,255,255,.06)}.funder-row:last-child{border-bottom:0}.funder-row strong{font-size:10px}.funder-row small{display:block;color:#7e98ad;font-size:8px}.match{color:#70d39a;font-size:9px}.toast{position:fixed;z-index:100;left:50%;bottom:25px;transform:translate(-50%,30px);opacity:0;background:#0d3b2b;border:1px solid rgba(75,213,126,.3);padding:10px 14px;border-radius:10px;font-size:11px;box-shadow:var(--shadow);transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1200px){.topbar{grid-template-columns:250px 1fr auto}.brand span{display:none}.top-actions .ghost-btn{display:none}.app-shell{grid-template-columns:280px 1fr 300px}.exchange-drawer{left:280px;right:300px}.project-grid{grid-template-columns:repeat(3,minmax(220px,1fr))}}
@media(max-width:920px){body{overflow:auto}.topbar{grid-template-columns:1fr auto;height:64px}.top-search-wrap{display:none}.brand-logo{width:45px;height:45px}.app-shell{height:calc(100vh - 64px);grid-template-columns:1fr}.left-panel,.right-panel{position:absolute;top:8px;bottom:8px;width:min(320px,90vw);z-index:25;border-radius:14px}.left-panel{left:8px;transform:translateX(calc(-100% - 12px))}.right-panel{right:8px;transform:translateX(calc(100% + 12px))}.left-panel.mobile-open,.right-panel.mobile-open{transform:none}.exchange-drawer{left:0;right:0}.map-legend{bottom:75px}.national-kpis{max-width:calc(100% - 20px)}.project-grid{grid-template-columns:repeat(2,minmax(210px,1fr))}.modal-grid{grid-template-columns:1fr}}
