/* ============================================================
   GLOBAL SOVEREIGN RISK — TERMINAL
   Design tokens (sky-blue theme)
   ============================================================ */
:root{
  --bg:          #050912;
  --sidebar-bg:  #070C18;
  --panel:       #0E1830;
  --panel-2:     #16264A;
  --hairline:    #263A63;

  --paper:       #F3F7FF;
  --muted:       #ABC2EC;
  --dim:         #7188B4;

  --accent:       #4C8DFF;
  --accent-dark:  #2F6FE0;
  --accent-bright:#82B4FF;
  --accent-soft:  rgba(76,141,255,0.18);

  --red:        #FF6E62;
  --red-soft:   rgba(255,110,98,0.16);
  --amber:      #F7B155;
  --amber-soft: rgba(247,177,85,0.16);
  --green:      #4FDBA3;
  --green-soft: rgba(79,219,163,0.16);
  --blue:       #7C8FE6;
  --blue-soft:  rgba(124,143,230,0.16);

  --serif: "Fraunces", Georgia, serif;
  --sans:  "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --mono:  "JetBrains Mono", "SF Mono", monospace;

  --radius: 3px;
  --sidebar-w: 250px;
  --sidebar-w-collapsed: 68px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:
    radial-gradient(1100px 620px at 82% -8%, rgba(76,141,255,0.10) 0%, rgba(76,141,255,0) 60%),
    radial-gradient(900px 500px at -5% 12%, rgba(47,111,224,0.08) 0%, rgba(47,111,224,0) 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--paper);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:var(--serif); font-weight:600; margin:0; color:var(--paper); letter-spacing:-0.01em;}
a{color:inherit;}
::selection{background:var(--accent); color:#fff;}

/* ============================================================
   LOADING / ERROR STATES (live CSV fetch)
   ============================================================ */
.loading-overlay{
  position:fixed; inset:0; z-index:200;
  background:var(--bg);
  display:flex; align-items:center; justify-content:center;
}
.loading-box{text-align:center;}
.loading-spinner{
  width:34px; height:34px; margin:0 auto 18px;
  border:3px solid var(--hairline); border-top-color:var(--accent);
  border-radius:50%;
  animation:gsr-spin .8s linear infinite;
}
@keyframes gsr-spin{ to{ transform:rotate(360deg); } }
.loading-text{font-family:var(--serif); font-size:16px; color:var(--paper); font-weight:600;}
.loading-sub{font-family:var(--mono); font-size:11px; color:var(--muted); margin-top:8px;}
.loading-sub code{background:var(--panel-2); padding:1px 5px; border-radius:2px;}

.load-error-banner{
  max-width:760px; margin:60px auto; padding:22px 26px;
  background:var(--panel); border:1px solid var(--red);
  border-left:4px solid var(--red); border-radius:4px;
  font-size:13.5px; line-height:1.6; color:var(--paper);
}
.load-error-banner strong{display:block; color:var(--red); font-size:15px; margin-bottom:8px;}
.load-error-banner code{
  font-family:var(--mono); background:var(--panel-2); padding:1px 5px; border-radius:2px; font-size:12.5px;
}
.load-error-detail{
  margin-top:14px; font-family:var(--mono); font-size:11.5px; color:var(--muted);
  background:var(--panel-2); padding:10px 12px; border-radius:3px; word-break:break-word;
}

/* ============================================================
   APP SHELL — sidebar runs full height from the very top
   ============================================================ */
.app-shell{display:flex; align-items:stretch; min-height:100vh;}

.sidebar{
  position:sticky; top:0; align-self:flex-start;
  width:var(--sidebar-w); flex-shrink:0;
  height:100vh;
  background:var(--sidebar-bg);
  border-right:1px solid var(--hairline);
  padding:26px 18px 18px;
  display:flex; flex-direction:column;
  overflow-y:auto; overflow-x:hidden;
  transition:width .18s ease, padding .18s ease;
}
.sidebar-toggle{
  position:absolute; top:22px; right:-13px; z-index:5;
  width:26px; height:26px; border-radius:50%;
  background:var(--panel); border:1px solid var(--hairline); color:var(--accent);
  font-family:var(--sans); font-size:13px; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 3px 10px -3px rgba(22,50,77,.28);
  transition:background .15s, color .15s, border-color .15s;
}
.sidebar-toggle:hover{background:var(--accent); color:#fff; border-color:var(--accent);}

.sidebar.collapsed{width:var(--sidebar-w-collapsed); padding:26px 10px 18px;}
.sidebar.collapsed .brand-name,
.sidebar.collapsed .nav-group-label,
.sidebar.collapsed .navlink-text,
.sidebar.collapsed .sidebar-foot{display:none;}
.sidebar.collapsed .brand{justify-content:center; margin-bottom:22px;}
.sidebar.collapsed .navlink{justify-content:center; padding:8px 0;}
.sidebar.collapsed .sidebar-toggle{transform:none;}

.brand{display:flex; align-items:center; gap:10px; margin-bottom:30px;}
.brand-mark{
  width:38px; height:38px; flex-shrink:0;
  border:1px solid var(--accent);
  color:var(--accent); background:var(--panel);
  font-family:var(--mono); font-weight:600; font-size:11px; letter-spacing:.02em;
  display:flex; align-items:center; justify-content:center;
}
.brand-name{font-family:var(--serif); font-size:14.5px; font-weight:600; line-height:1.2; color:var(--paper);}
.brand-name span{display:block; font-family:var(--mono); font-weight:400; font-size:10px; color:var(--muted); letter-spacing:.06em; margin-top:3px; text-transform:uppercase;}

.navlist{display:flex; flex-direction:column; flex:1;}
.nav-group-label{
  font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--dim); margin:18px 0 8px; padding-left:10px;
}
.nav-group-label:first-child{margin-top:0;}
.navlink{
  display:flex; align-items:center; gap:10px;
  padding:7px 10px; font-size:13px; color:var(--muted);
  text-decoration:none; border-left:2px solid transparent; border-radius:0 3px 3px 0;
  transition:color .15s, border-color .15s, background .15s;
}
.navlink:hover{color:var(--accent-dark); background:var(--panel); border-left-color:var(--accent);}
.nav-bullet{
  width:5px; height:5px; border-radius:50%; background:var(--dim); flex-shrink:0;
  transition:background .15s;
}
.navlink:hover .nav-bullet{background:var(--accent);}
.sidebar-foot{
  font-family:var(--mono); font-size:10px; color:var(--muted);
  border-top:1px solid var(--hairline); padding-top:14px; margin-top:14px; line-height:1.7;
}
.sidebar-foot a{color:var(--accent-dark); text-decoration:none; font-weight:600;}
.sidebar-foot a:hover{text-decoration:underline;}

/* ============================================================
   CONTENT COLUMN — filter console + main, to the right of sidebar
   ============================================================ */
.content-col{flex:1; min-width:0; display:flex; flex-direction:column;}

/* ============================================================
   FILTER CONSOLE — the terminal's command deck
   ============================================================ */
.console-bar{
  position:sticky; top:0; z-index:60;
  background:linear-gradient(180deg, var(--panel) 0%, var(--panel-2) 100%);
  border-bottom:1px solid var(--hairline);
  box-shadow:0 8px 22px -14px rgba(22,50,77,.22);
}
.console-inner{
  max-width:1200px; margin:0 auto;
  display:flex; align-items:flex-end; flex-wrap:wrap;
  gap:22px 28px;
  padding:14px 36px;
}
.console-field{display:flex; flex-direction:column; gap:6px;}
.console-label{
  font-family:var(--mono); font-size:9.5px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); display:flex; align-items:center; gap:6px;
}
.console-label .console-dot{width:5px; height:5px; border-radius:50%; background:var(--accent); flex-shrink:0;}

/* region multi-select dropdown */
.region-select{position:relative; width:220px;}
.region-select-btn{
  width:100%; text-align:left;
  font-family:var(--mono); font-size:12px; letter-spacing:.01em;
  padding:7px 30px 7px 10px; border-radius:2px; cursor:pointer;
  background:var(--bg); border:1px solid var(--hairline); color:var(--paper);
  position:relative; transition:border-color .15s;
}
.region-select-btn::after{
  content:"▾"; position:absolute; right:10px; top:50%; transform:translateY(-50%);
  color:var(--dim); font-size:10px;
}
.region-select-btn:hover, .region-select-btn:focus{border-color:var(--accent); outline:none;}
.region-select.open .region-select-btn{border-color:var(--accent);}
.region-select-panel{
  display:none; position:absolute; top:calc(100% + 4px); left:0; right:0; z-index:70;
  background:var(--panel); border:1px solid var(--hairline); border-radius:3px;
  max-height:280px; overflow-y:auto; padding:6px;
  box-shadow:0 14px 30px -10px rgba(22,50,77,.28);
  min-width:260px;
}
.region-select.open .region-select-panel{display:block;}
.region-option{
  display:flex; align-items:center; gap:8px;
  padding:7px 8px; font-size:12.5px; color:var(--paper); cursor:pointer; border-radius:2px;
}
.region-option:hover{background:var(--panel-2);}
.region-option input[type="checkbox"]{accent-color:var(--accent); width:14px; height:14px; cursor:pointer;}
.region-option-all{font-weight:600; color:var(--accent-dark);}
.region-option-divider{height:1px; background:var(--hairline); margin:4px 4px 6px;}
.region-select.disabled .region-select-btn{opacity:.45; pointer-events:none;}

/* country combobox */
.country-combo{position:relative; width:230px;}
.country-combo input{
  width:100%; background:var(--bg); border:1px solid var(--hairline); color:var(--paper);
  font-family:var(--sans); font-size:12.5px; padding:7px 10px; border-radius:2px; outline:none;
}
.country-combo input:focus{border-color:var(--accent);}
.country-suggestions{
  display:none; position:absolute; top:calc(100% + 4px); left:0; right:0; z-index:70;
  background:var(--panel); border:1px solid var(--hairline); border-radius:2px;
  max-height:220px; overflow-y:auto;
  box-shadow:0 12px 28px -8px rgba(22,50,77,.25);
}
.country-suggestions.open{display:block;}
.suggestion{padding:7px 10px; font-size:12.5px; color:var(--muted); cursor:pointer;}
.suggestion:hover{background:var(--panel-2); color:var(--paper);}
.suggestion-empty{color:var(--dim); cursor:default;}
.suggestion-empty:hover{background:transparent; color:var(--dim);}
.country-chips{display:flex; flex-wrap:wrap; gap:5px; margin-top:7px; max-width:230px;}
.country-chip{
  display:inline-flex; align-items:center; gap:5px;
  background:var(--accent-soft); color:var(--accent-dark); border:1px solid rgba(46,124,192,.32);
  font-family:var(--mono); font-size:10.5px; padding:3px 6px 3px 8px; border-radius:2px;
}
.country-chip button{
  background:none; border:none; color:inherit; cursor:pointer; font-size:13px; line-height:1;
  padding:0; opacity:.7;
}
.country-chip button:hover{opacity:1;}

/* score slider */
.score-slider{position:relative; width:200px; padding-top:4px;}
.score-slider-track{position:relative; height:3px; background:var(--hairline); border-radius:2px; margin:14px 0 8px;}
.score-slider-fill{position:absolute; top:0; bottom:0; background:var(--accent); border-radius:2px;}
.range-thumb{
  position:absolute; top:6px; left:0; width:100%; height:14px; margin:0;
  -webkit-appearance:none; appearance:none; background:transparent; pointer-events:none;
}
.range-thumb::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none; pointer-events:all;
  width:14px; height:14px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 0 3px var(--panel), 0 2px 6px rgba(22,50,77,.3); cursor:pointer;
  margin-top:0;
}
.range-thumb::-moz-range-thumb{
  pointer-events:all; width:14px; height:14px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 0 3px var(--panel); border:none; cursor:pointer;
}
.range-thumb::-webkit-slider-runnable-track{ background:transparent; height:14px; }
.range-thumb::-moz-range-track{ background:transparent; height:14px; }
.score-slider-labels{
  display:flex; justify-content:space-between;
  font-family:var(--mono); font-size:10.5px; color:var(--muted);
}

/* year select */
.console-select{
  background:var(--bg); border:1px solid var(--hairline); color:var(--paper);
  font-family:var(--mono); font-size:12px; padding:7px 10px; border-radius:2px; outline:none;
  width:130px; cursor:pointer;
}
.console-select:focus{border-color:var(--accent);}

/* reset + counter */
.console-actions{display:flex; align-items:center; gap:14px; margin-left:auto;}
.console-count{font-family:var(--mono); font-size:11px; color:var(--muted); white-space:nowrap;}
.console-count b{color:var(--paper);}
.console-reset{
  font-family:var(--mono); font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  background:transparent; border:1px solid var(--hairline); color:var(--muted);
  padding:8px 14px; border-radius:2px; cursor:pointer; transition:border-color .15s, color .15s;
}
.console-reset:hover{border-color:var(--red); color:var(--red);}

.unfiltered-badge, .filter-note{
  display:inline-flex; align-items:center; gap:5px;
  font-family:var(--mono); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--muted); border:1px solid var(--hairline); padding:3px 7px; border-radius:2px;
  margin-top:8px;
}
.unfiltered-badge::before{content:""; width:5px; height:5px; border-radius:50%; background:var(--blue);}
.filter-note::before{content:""; width:5px; height:5px; border-radius:50%; background:var(--dim);}

@media (max-width:960px){
  .console-inner{padding:14px 20px;}
  .console-actions{margin-left:0; width:100%; justify-content:space-between;}
}

/* ============================================================
   MASTHEAD
   ============================================================ */
.main{max-width:1200px; margin:0 auto; width:100%; padding:0 36px 80px;}
.masthead{
  padding:52px 0 40px; border-bottom:1px solid var(--hairline);
  position:relative;
}
.masthead::before{
  content:"";
  position:absolute; top:-20px; right:-60px; width:520px; height:320px;
  background:radial-gradient(circle, rgba(46,124,192,.12) 0%, rgba(46,124,192,0) 70%);
  pointer-events:none; z-index:0;
}
.masthead > *{position:relative; z-index:1;}
.masthead-eyebrow{
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--accent-dark); margin-bottom:16px;
}
.masthead-title{
  font-size:clamp(28px, 3.6vw, 44px); line-height:1.12; max-width:760px; font-weight:600;
  color:var(--paper);
}
.masthead-dek{
  max-width:620px; color:var(--muted); margin-top:18px; font-size:15.5px; line-height:1.65;
}
.kpi-row{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:var(--hairline); border:1px solid var(--hairline); margin-top:36px;
}
.kpi{background:var(--panel); padding:18px 20px; transition:background .15s;}
.kpi:hover{background:var(--panel-2);}
.kpi-label{font-family:var(--mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--dim);}
.kpi-value{font-family:var(--serif); font-size:30px; margin-top:8px; font-weight:600;}
.kpi-value.red{color:var(--red);} .kpi-value.amber{color:var(--amber);}
.kpi-value.green{color:var(--green);} .kpi-value.blue{color:var(--blue);}
.kpi-sub{font-size:11.5px; color:var(--dim); margin-top:4px;}

@media (max-width:900px){ .kpi-row{grid-template-columns:repeat(2,1fr);} }

/* ============================================================
   PILLAR DIVIDER
   ============================================================ */
.pillar-divider{
  display:flex; align-items:center; gap:14px;
  margin:64px 0 8px;
  font-family:var(--serif); font-size:20px; color:var(--paper);
}
.pillar-divider span{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
  color:#fff; background:var(--accent); padding:4px 9px;
}
.pillar-divider::after{content:""; flex:1; height:1px; background:var(--hairline);}

/* ============================================================
   SECTION
   ============================================================ */
.section{padding:36px 0; border-bottom:1px solid var(--hairline); scroll-margin-top:20px;}
.section-head{display:flex; gap:20px; margin-bottom:26px;}
.section-code{
  font-family:var(--mono); font-size:13px; color:var(--muted);
  border:1px solid var(--hairline); height:28px; min-width:28px;
  display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:4px;
  background:var(--panel);
}
.section-head h2{font-size:22px; margin-bottom:8px;}
.section-brief{color:var(--muted); font-size:14px; max-width:720px; line-height:1.6;}

/* ============================================================
   CHART CARD
   ============================================================ */
.chart-card{
  background:var(--panel); border:1px solid var(--hairline); border-radius:4px;
  padding:20px 22px 16px; margin-bottom:20px;
}
.chart-card-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:14px;}
.chart-card-head h3{font-size:14.5px; font-weight:600; color:var(--paper);}
.chart-card-note{font-family:var(--mono); font-size:10.5px; color:var(--dim);}

/* ============================================================
   TABLE CARD
   ============================================================ */
.table-card{background:var(--panel); border:1px solid var(--hairline); border-radius:4px;}
.table-card-head{
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 20px; border-bottom:1px solid var(--hairline);
}
.table-card-head h3{font-size:14.5px; font-weight:600;}
.table-search{
  background:var(--bg); border:1px solid var(--hairline); color:var(--paper);
  font-family:var(--sans); font-size:12.5px; padding:7px 10px; width:220px;
  border-radius:2px; outline:none;
}
.table-search:focus{border-color:var(--accent);}
.table-scroll{max-height:440px; overflow:auto;}

table{width:100%; border-collapse:collapse; font-size:12.5px;}
thead th{
  position:sticky; top:0; background:var(--panel-2); z-index:1;
  text-align:left; font-family:var(--mono); font-size:10px; letter-spacing:.04em; text-transform:uppercase;
  color:var(--muted); padding:9px 14px; border-bottom:1px solid var(--hairline);
  cursor:pointer; white-space:nowrap; user-select:none;
}
thead th:hover{color:var(--accent-dark);}
thead th.sorted::after{content:" ▾"; color:var(--accent);}
tbody td{
  padding:8px 14px; border-bottom:1px solid var(--hairline); white-space:nowrap;
  font-family:var(--mono); font-size:12px; color:var(--muted);
}
tbody td.name-cell{font-family:var(--sans); color:var(--paper); font-weight:500;}
tbody tr{border-left:3px solid transparent;}
tbody tr:hover{background:var(--panel-2);}
tbody tr.flag-red{border-left-color:var(--red);}
tbody tr.flag-amber{border-left-color:var(--amber);}
tbody tr.flag-green{border-left-color:var(--green);}
tbody tr.flag-blue{border-left-color:var(--blue);}

.pill{
  display:inline-block; padding:2px 8px; border-radius:2px;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.02em; white-space:nowrap;
}
.pill.red{background:var(--red-soft); color:var(--red);}
.pill.amber{background:var(--amber-soft); color:var(--amber);}
.pill.green{background:var(--green-soft); color:var(--green);}
.pill.blue{background:var(--blue-soft); color:var(--blue);}
.pill.gray{background:rgba(78,110,140,0.12); color:var(--muted);}

tr.empty-row td{
  text-align:center; padding:32px 14px; font-family:var(--sans); color:var(--dim);
  font-size:13px; white-space:normal;
}

:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
input:focus-visible, .chip:focus-visible{ outline-offset:1px; }

/* ============================================================
   COMPARE GRID (Q3)
   ============================================================ */
.compare-grid{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--hairline); border:1px solid var(--hairline);}
.compare-card{background:var(--panel); padding:24px;}
.compare-card h4{font-family:var(--serif); font-size:19px; margin:0 0 4px;}
.compare-card .sub{font-family:var(--mono); font-size:10.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.05em; margin-bottom:18px;}
.compare-stat{display:flex; justify-content:space-between; padding:9px 0; border-top:1px solid var(--hairline); font-size:13px;}
.compare-stat:first-of-type{border-top:none;}
.compare-stat .k{color:var(--muted);}
.compare-stat .v{font-family:var(--mono); color:var(--paper);}
@media (max-width:700px){.compare-grid{grid-template-columns:1fr;}}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{margin-top:60px; padding-top:36px;}
.footer-grid{display:grid; grid-template-columns:2fr 1fr 1fr; gap:40px;}
.footer-brand{font-family:var(--serif); font-size:16px; letter-spacing:.03em; margin-bottom:10px; color:var(--paper);}
.footer p{color:var(--muted); font-size:12.5px; line-height:1.7;}
.footer p a{color:var(--accent-dark); text-decoration:none; font-weight:600;}
.footer p a:hover{text-decoration:underline;}
.footer-label{font-family:var(--mono); font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:10px;}
.legend-row{display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--muted); margin-bottom:7px;}
.dot{width:8px; height:8px; border-radius:50%; flex-shrink:0;}
.dot.red{background:var(--red);} .dot.amber{background:var(--amber);}
.dot.green{background:var(--green);} .dot.blue{background:var(--blue);}
@media (max-width:800px){.footer-grid{grid-template-columns:1fr;}}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:960px){
  .sidebar{position:fixed; left:0; top:0; z-index:80; box-shadow:0 0 0 2000px rgba(22,50,77,.35);}
  .sidebar.collapsed{width:0; padding:26px 0 18px; border-right:none; box-shadow:none;}
  .sidebar.collapsed .sidebar-toggle{right:-13px;}
  .main{padding:0 20px 60px;}
}
