/*
  Africa Economic Review — authenticated portal design system.

  This file did not exist in the exported codebase at all, despite being
  linked by every AER view (resources/views/aer/**) and resources/views/layouts/app.blade.php.
  Rebuilt as a coherent, investor-grade design system: legible, high-contrast,
  and — the explicit requirement this rebuild must never regress on — every
  form control has a visible border in both its resting and focus state.
*/

:root{
  --aer-ink:#07111f;
  --aer-navy:#0b2540;
  --aer-teal:#087c74;
  --aer-teal-dark:#065f59;
  --aer-slate:#334155;
  --aer-muted:#64748b;
  --aer-line:#d7dfe4;
  --aer-line-strong:#aab8c2;
  --aer-bg:#f4f7f8;
  --aer-panel:#ffffff;
  --aer-success:#0f7a4d;
  --aer-success-bg:#e8f6ee;
  --aer-danger:#b3261e;
  --aer-danger-bg:#fbeaea;
  --aer-warning:#8a5a00;
  --aer-warning-bg:#fdf3e0;
  --aer-info:#0b5cab;
  --aer-info-bg:#e9f2fc;
  --aer-radius-sm:10px;
  --aer-radius:16px;
  --aer-radius-lg:22px;
  --aer-shadow:0 15px 40px rgba(15,23,42,.07);
  --aer-shadow-sm:0 4px 14px rgba(15,23,42,.06);
}

.aer-techwind-body{
  background:var(--aer-bg);
  color:var(--aer-ink);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}

.aer-shell,.aer-page-wrap,.aer-container{max-width:1320px;margin:0 auto;padding:0 1.25rem;}
.aer-institution-suite,.aer-subscription-ops,.aer-credit-suite,.aer-scenario-engine,
.aer-research-workflow,.aer-visual-shell,.aer-risk-monitor{width:100%;}

/* ---------- Layout: headers ---------- */
.aer-page-header,.aer-page-head,.aer-module-head,.aer-section-head{
  display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;
  gap:1rem;margin-bottom:1.5rem;
}
.aer-eyebrow,.aer-kicker{
  display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--aer-teal-dark);margin:0 0 .3rem;
}
.aer-page-title,.aer-module-title{font-size:1.85rem;font-weight:850;letter-spacing:-.03em;color:var(--aer-ink);margin:0 0 .35rem;}
.aer-page-subtitle,.aer-module-subtitle{color:var(--aer-muted);line-height:1.6;max-width:900px;margin:0;}
.aer-legacy-title{font-size:1.35rem;font-weight:850;letter-spacing:-.025em;color:var(--aer-ink);margin:0;}
.aer-legacy-subtitle{color:var(--aer-muted);margin:.35rem 0 0;line-height:1.6;}
.aer-muted{color:var(--aer-muted);}
.aer-actions,.aer-hero-actions,.aer-inline-actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;}
.aer-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1.25rem;}

/* ---------- Panels / cards ---------- */
.aer-panel,.aer-content-card,.aer-card,.aer-table-card,.aer-report-card,.aer-mini-card,
.aer-kpi-card,.aer-stat-card,.aer-list-card,.aer-module-card,.aer-workbench-card,.aer-model-card{
  background:var(--aer-panel);
  border:1px solid var(--aer-line);
  border-radius:var(--aer-radius);
  box-shadow:var(--aer-shadow-sm);
  padding:0;
}
.aer-panel-pad,.aer-panel{padding:1.55rem;}
.aer-card-body{padding:1.25rem;}
.aer-card-topline{border-top:3px solid var(--aer-teal);border-top-left-radius:var(--aer-radius);border-top-right-radius:var(--aer-radius);}
.aer-card-title{font-weight:750;line-height:1.25;margin:0 0 .6rem;color:var(--aer-ink);}
.aer-card-meta{color:var(--aer-muted);font-size:.85rem;margin-bottom:.75rem;}
.aer-section,.aer-section-white{padding:2.5rem 0;}
.aer-section-dark{padding:2.5rem 0;background:var(--aer-navy);color:#e7edf3;border-radius:var(--aer-radius-lg);}
.aer-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem;}
.aer-callout,.aer-data-note{
  border-left:4px solid var(--aer-teal);background:#f8fbfb;border-radius:14px;
  padding:1rem 1.1rem;color:var(--aer-slate);line-height:1.65;
}

/* ---------- Grids ---------- */
.aer-grid,.aer-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;}
.aer-grid-3,.aer-mega-grid,.aer-feature-list,.aer-card-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem;}
.aer-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.1rem;}
.aer-tight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;}
.aer-split{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:start;}
.aer-admin-two{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1.25rem;align-items:start;}
.aer-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1.25rem;}
.aer-filter{margin-bottom:1.25rem;}
.aer-filter-grid .span-6{grid-column:span 6;}
.aer-filter-grid .span-4{grid-column:span 4;}
.aer-filter-grid .span-2{grid-column:span 2;}
.aer-list-stack,.aer-event-stack,.aer-signal-list{display:flex;flex-direction:column;gap:.75rem;}
/* .aer-card-grid is used both standalone AND combined with Bootstrap's
   .row/.col-* (e.g. <div class="row aer-card-grid">) — it must not set
   display:grid, or it fights Bootstrap's flexbox and breaks the columns.
   Bootstrap's .row already provides the grid when paired; when used alone
   it's just a vertical stack of .aer-panel/.aer-country-card children,
   which already have their own spacing. */
.aer-card-grid{margin-bottom:0;}
@media(max-width:991.98px){
  .aer-grid,.aer-kpi-grid,.aer-grid-3,.aer-grid-4,.aer-mega-grid,.aer-feature-list,.aer-card-grid-3,
  .aer-tight-grid,.aer-split,.aer-admin-two{grid-template-columns:1fr;}
  .aer-filter-grid .span-6,.aer-filter-grid .span-4,.aer-filter-grid .span-2{grid-column:span 1;}
  .aer-panel,.aer-panel-pad,.aer-workbench-card,.aer-model-card,.aer-report-card{padding:1.15rem;}
}

/* ---------- Country / module / sector cards ---------- */
.aer-country-index{width:100%;}
.aer-country-coverage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;}
.aer-country-coverage>div{border:1px solid var(--aer-line);border-radius:var(--aer-radius-sm);padding:.9rem 1rem;background:var(--aer-panel);}
.aer-country-coverage span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--aer-muted);}
.aer-country-coverage strong{display:block;font-size:1.4rem;font-weight:800;color:var(--aer-ink);}
.aer-country-coverage em{display:block;font-style:normal;font-size:.78rem;color:var(--aer-slate);}
.aer-country-card{
  border:1px solid var(--aer-line);border-radius:var(--aer-radius);background:var(--aer-panel);
  box-shadow:var(--aer-shadow-sm);padding:1.25rem;display:flex;flex-direction:column;gap:.7rem;
}
.aer-country-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;}
.aer-country-card-top h4{margin:.35rem 0 0;font-size:1.05rem;}
.aer-country-card-top h4 a{color:var(--aer-ink);text-decoration:none;}
.aer-country-card-summary{color:var(--aer-slate);font-size:.85rem;line-height:1.55;margin:0;}
.aer-country-card-meta{display:flex;flex-wrap:wrap;gap:.4rem .8rem;font-size:.78rem;color:var(--aer-muted);}
.aer-country-card-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;border-top:1px solid var(--aer-line);border-bottom:1px solid var(--aer-line);padding:.7rem 0;}
.aer-country-card-metrics span{display:block;font-size:.68rem;text-transform:uppercase;color:var(--aer-muted);}
.aer-country-card-metrics strong{display:block;font-size:1rem;color:var(--aer-ink);}
.aer-country-card-footer{display:flex;align-items:center;justify-content:space-between;font-size:.78rem;color:var(--aer-muted);}
.aer-country-card-footer a{color:var(--aer-teal-dark);font-weight:650;text-decoration:none;}
.aer-risk-high{background:var(--aer-danger-bg);color:var(--aer-danger);border-color:#f0c6c3;}
.aer-risk-watch{background:var(--aer-warning-bg);color:var(--aer-warning);border-color:#f1dcab;}
.aer-risk-low{background:var(--aer-success-bg);color:var(--aer-success);border-color:#bfe6d1;}
.aer-module-card,.aer-sector-card{
  display:block;border:1px solid var(--aer-line);border-radius:var(--aer-radius);background:var(--aer-panel);
  box-shadow:var(--aer-shadow-sm);padding:1.25rem;text-decoration:none;color:inherit;
}
.aer-module-card h4{margin:.5rem 0;color:var(--aer-ink);}
.aer-module-card p{color:var(--aer-slate);font-size:.85rem;margin:0;}
.aer-meta-row{display:flex;justify-content:space-between;gap:1rem;font-size:.78rem;color:var(--aer-muted);margin-top:.75rem;}
.aer-detail-list{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;}
.aer-detail-list.compact>div{display:flex;justify-content:space-between;gap:1rem;}
.aer-detail-list span{color:var(--aer-muted);}
.aer-pagination{display:flex;justify-content:center;}
.aer-pagination nav{display:flex;}

/* ---------- KPI / stat tiles ---------- */
.aer-kpi,.aer-metric-tile,.aer-stat{
  border:1px solid var(--aer-line);border-radius:var(--aer-radius-sm);
  padding:1rem 1.1rem;background:var(--aer-panel);
}
.aer-kpi strong,.aer-metric-tile strong,.aer-stat strong{display:block;font-size:1.6rem;font-weight:800;color:var(--aer-ink);}
.aer-kpi span,.aer-metric-tile span,.aer-stat span{display:block;font-size:.78rem;color:var(--aer-muted);text-transform:uppercase;letter-spacing:.05em;}
.aer-metric-tile em{display:block;font-style:normal;color:var(--aer-slate);font-size:.85rem;margin-top:.15rem;}

/* ---------- Buttons ---------- */
.aer-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  padding:.6rem 1.1rem;border-radius:999px;font-weight:650;font-size:.9rem;
  border:1px solid transparent;cursor:pointer;text-decoration:none;line-height:1.2;
  transition:filter .15s ease, background-color .15s ease;
}
.aer-btn-primary{background:var(--aer-teal);border-color:var(--aer-teal);color:#fff;}
.aer-btn-primary:hover{filter:brightness(.93);color:#fff;}
.aer-btn-secondary{background:#fff;border-color:var(--aer-line-strong);color:var(--aer-ink);}
.aer-btn-secondary:hover{background:#f1f5f7;color:var(--aer-ink);}
.aer-btn-light{background:#eef2f4;border-color:#eef2f4;color:var(--aer-ink);}
.aer-btn-outline{background:transparent;border-color:currentColor;color:var(--aer-teal-dark);}
.aer-link{color:var(--aer-teal-dark);text-decoration:underline;font-weight:600;}

/* ---------- Badges / chips / pills ---------- */
.aer-badge,.aer-chip,.aer-risk-pill,.aer-status{
  display:inline-flex;align-items:center;gap:.3rem;padding:.28rem .7rem;
  border-radius:999px;font-size:.75rem;font-weight:700;line-height:1;
  background:#eef2f4;color:var(--aer-slate);border:1px solid var(--aer-line);
}
.aer-badge-success,.aer-alert-success{background:var(--aer-success-bg);color:var(--aer-success);border-color:#bfe6d1;}
.aer-badge-danger{background:var(--aer-danger-bg);color:var(--aer-danger);border-color:#f0c6c3;}
.aer-badge-warning{background:var(--aer-warning-bg);color:var(--aer-warning);border-color:#f1dcab;}
.aer-badge-info{background:var(--aer-info-bg);color:var(--aer-info);border-color:#bfdcf4;}
.aer-chip-muted{background:#f1f5f7;color:var(--aer-muted);}
.aer-chip-row{display:flex;flex-wrap:wrap;gap:.5rem;}

/* ---------- Alerts ---------- */
.aer-alert{border:1px solid var(--aer-line);border-radius:var(--aer-radius-sm);padding:.85rem 1.1rem;margin-bottom:1rem;}
.aer-alert-success{border-color:#bfe6d1;}
.aer-alert-danger{background:var(--aer-danger-bg);color:var(--aer-danger);border-color:#f0c6c3;}
.aer-alert-warning{background:var(--aer-warning-bg);color:var(--aer-warning);border-color:#f1dcab;}
.aer-alert-info{background:var(--aer-info-bg);color:var(--aer-info);border-color:#bfdcf4;}

/* ---------- Tables ---------- */
.aer-table-wrap{overflow-x:auto;border:1px solid var(--aer-line);border-radius:var(--aer-radius);}
.aer-table{width:100%;border-collapse:collapse;font-size:.9rem;}
.aer-table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--aer-muted);padding:.75rem 1rem;border-bottom:1px solid var(--aer-line);background:#f8fafb;}
.aer-table td{padding:.75rem 1rem;border-bottom:1px solid var(--aer-line);vertical-align:top;}
.aer-table tr:last-child td{border-bottom:none;}

/* ---------- Empty states ---------- */
.aer-empty,.aer-empty-state{
  border:1px dashed var(--aer-line-strong);border-radius:var(--aer-radius);
  padding:2rem;text-align:center;color:var(--aer-muted);background:#fbfcfd;
}

/* =========================================================================
   Forms — every input, select and textarea gets an explicit, visible border
   in both its resting and focused state. This is a hard requirement: do not
   remove border-color/border-width from any rule below.
   ========================================================================= */

.aer-form-stack{display:flex;flex-direction:column;gap:.9rem;}
.aer-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;}
.aer-two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;}
.aer-three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;}
@media(max-width:767.98px){
  .aer-chart-frame-country{--aer-chart-height:280px;}
  .aer-chart-frame-categories{min-height:260px;max-height:500px;}.aer-form-grid,.aer-two-col,.aer-three-col{grid-template-columns:1fr;}}

.aer-field{display:flex;flex-direction:column;gap:.35rem;}
.aer-field label,.aer-form-stack>label{font-size:.82rem;font-weight:650;color:var(--aer-slate);}
.aer-field-error{color:var(--aer-danger);font-size:.78rem;margin-top:.2rem;}

.aer-input,
.aer-select,
.aer-textarea,
.aer-techwind-body input[type="text"],
.aer-techwind-body input[type="email"],
.aer-techwind-body input[type="password"],
.aer-techwind-body input[type="number"],
.aer-techwind-body input[type="date"],
.aer-techwind-body input[type="datetime-local"],
.aer-techwind-body input[type="month"],
.aer-techwind-body input[type="search"],
.aer-techwind-body input[type="tel"],
.aer-techwind-body input[type="time"],
.aer-techwind-body input[type="url"],
.aer-techwind-body input:not([type]),
.aer-techwind-body select,
.aer-techwind-body textarea,
.aer-techwind-body .form-control,
.aer-techwind-body .form-select{
  display:block;
  width:100%;
  padding:.62rem .85rem;
  font-size:.92rem;
  line-height:1.4;
  color:var(--aer-ink);
  background-color:#fff;
  border:1.5px solid var(--aer-line-strong) !important;
  border-radius:var(--aer-radius-sm);
  box-shadow:none;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.aer-textarea,.aer-techwind-body textarea{min-height:7rem;resize:vertical;}

.aer-input:focus,
.aer-select:focus,
.aer-textarea:focus,
.aer-techwind-body input:focus,
.aer-techwind-body select:focus,
.aer-techwind-body textarea:focus,
.aer-techwind-body .form-control:focus,
.aer-techwind-body .form-select:focus{
  outline:none;
  border-color:var(--aer-teal) !important;
  box-shadow:0 0 0 3px rgba(8,124,116,.15);
}

.aer-input::placeholder,.aer-textarea::placeholder,.aer-techwind-body input::placeholder,.aer-techwind-body textarea::placeholder{
  color:#94a3b8;
}

.aer-input:disabled,.aer-select:disabled,.aer-textarea:disabled,
.aer-techwind-body input:disabled,.aer-techwind-body select:disabled,.aer-techwind-body textarea:disabled{
  background:#f1f5f7;color:var(--aer-muted);cursor:not-allowed;
}

/* Checkboxes / radios keep a visible border of their own (not just accent-color). */
.aer-techwind-body input[type="checkbox"],
.aer-techwind-body input[type="radio"],
.aer-techwind-body .form-check-input{
  width:1.05rem;height:1.05rem;
  border:1.5px solid var(--aer-line-strong) !important;
  border-radius:4px;
  accent-color:var(--aer-teal);
  vertical-align:middle;
}
.aer-techwind-body input[type="radio"],.aer-techwind-body .form-check-input[type="radio"]{border-radius:50%;}

.aer-module-checks label{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--aer-slate);margin-bottom:.4rem;}

/* Legacy Soft UI Dashboard demo pages (billing/profile/tables/user-management)
   use plain Bootstrap form-control markup with no .aer-* wrapper — the rules
   above already cover input/select/textarea globally within .aer-techwind-body,
   so those pages inherit bordered controls too. */

/* ---------- Auth (login/register) ---------- */
.aer-auth-shell{max-width:1100px;margin:0 auto;padding:2rem 1.5rem 3rem;}
.aer-auth-brandbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:2rem;}
/* Scoped to the logo-link/card-head classes directly rather than their
   parent containers -- these classes get reused across templates
   (static-sign-in/up, reset-password, the guest nav bar) that don't all
   wrap the image in the same parent, and a bare <img> with none of this
   applying renders at native pixel size (the giant-logo bug). */
.aer-auth-logo-link img,.aer-auth-card-head img{
  width:36px;height:36px;object-fit:contain;border-radius:8px;flex-shrink:0;
}
.aer-auth-logo-link{display:flex;align-items:center;gap:.6rem;}
.aer-auth-toplink,.aer-auth-logo-link{color:var(--aer-teal-dark);font-weight:650;text-decoration:none;}

/* Guest top nav (static-sign-in/up legacy preview pages) — was entirely
   unstyled: raw links, unconstrained logo. */
.aer-guest-nav{background:#fff;border-bottom:1px solid var(--aer-line);padding:.85rem 0;}
.aer-guest-nav-inner{max-width:1100px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;}
.aer-guest-nav-links{display:flex;gap:1.25rem;align-items:center;}
.aer-guest-nav-links a{color:var(--aer-slate);text-decoration:none;font-weight:600;font-size:.9rem;}
.aer-guest-nav-links a:hover{color:var(--aer-teal-dark);}
.aer-auth-shell-compact{max-width:520px;}
.aer-auth-single{display:flex;justify-content:center;}
.aer-auth-single .aer-auth-card{max-width:480px;}

.aer-auth-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:3rem;align-items:center;}
.aer-auth-copy h1{font-size:2.1rem;font-weight:850;letter-spacing:-.03em;color:var(--aer-ink);margin:.4rem 0 1rem;}
.aer-auth-copy>p{color:var(--aer-slate);line-height:1.65;max-width:520px;}
.aer-public-kicker{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--aer-teal-dark);margin-bottom:.4rem;}
.aer-auth-proof-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.75rem;}
.aer-auth-proof-grid>div{border:1px solid var(--aer-line);border-radius:var(--aer-radius-sm);padding:.9rem 1rem;background:var(--aer-panel);}
.aer-auth-proof-grid strong{display:block;font-size:1.1rem;font-weight:800;color:var(--aer-ink);}
.aer-auth-proof-grid span{display:block;font-size:.78rem;color:var(--aer-muted);margin-top:.15rem;}
.aer-auth-proof-list{list-style:none;margin:1.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem;}
.aer-auth-proof-list li,.aer-auth-proof-list>span{padding-left:1.4rem;position:relative;color:var(--aer-slate);font-size:.9rem;display:block;}
.aer-auth-proof-list li::before,.aer-auth-proof-list>span::before{content:"✓";position:absolute;left:0;color:var(--aer-teal-dark);font-weight:800;}

.aer-auth-card,.aer-auth-card-elevated{
  background:var(--aer-panel);border:1px solid var(--aer-line);border-radius:var(--aer-radius-lg);
  box-shadow:var(--aer-shadow);padding:2rem;width:100%;max-width:440px;margin:0 auto;
}
.aer-auth-card-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;}
.aer-auth-card-head p{margin:0;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--aer-muted);}
.aer-auth-card-head h2{margin:.15rem 0 0;font-size:1.35rem;}
.aer-auth-muted{color:var(--aer-muted);font-size:.85rem;margin-bottom:1.25rem;}
.aer-auth-form{display:flex;flex-direction:column;gap:1rem;}
.aer-auth-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.85rem;}
.aer-auth-row a{color:var(--aer-teal-dark);text-decoration:none;font-weight:600;}
.aer-checkline{display:flex;align-items:center;gap:.4rem;color:var(--aer-slate);cursor:pointer;}
.aer-auth-submit{
  width:100%;margin-top:.5rem;padding:.7rem 1rem;border-radius:999px;border:1px solid var(--aer-teal);
  background:var(--aer-teal);color:#fff;font-weight:650;font-size:.92rem;cursor:pointer;
}
.aer-auth-submit:hover{filter:brightness(.93);}

@media(max-width:991.98px){
  .aer-page-header,.aer-page-head,.aer-module-head{margin-bottom:1.25rem;}
  .aer-auth-grid{grid-template-columns:1fr;gap:2rem;}
  .aer-auth-proof-grid{grid-template-columns:1fr;}
}

/* ========================================================================
   UI RECOVERY LAYER v6.0.0
   Restores the application shell and the shared component primitives that
   are referenced throughout resources/views/aer/** but were absent from the
   exported stylesheet. Loaded after Soft UI, so shell rules intentionally
   take precedence over the legacy dashboard theme.
   ======================================================================== */

/* ---------- Global shell / typography ---------- */
.aer-techwind-body{min-width:320px;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
.aer-techwind-body h1,.aer-techwind-body h2,.aer-techwind-body h3,.aer-techwind-body h4,.aer-techwind-body h5,.aer-techwind-body h6{color:var(--aer-ink);letter-spacing:-.02em;}
.aer-techwind-body p{color:var(--aer-slate);}
.aer-main-content{min-height:100vh;min-width:0;overflow-x:clip;}
.aer-main-content>.container-fluid{padding-top:1.25rem!important;padding-bottom:2rem!important;}
.aer-shell,.aer-page-wrap,.aer-container{width:100%;}
.aer-shell>*:last-child,.aer-page-wrap>*:last-child{margin-bottom:0;}

/* Remove legacy Soft UI button casing/shadow from AER controls only. */
.aer-techwind-body .aer-btn{text-transform:none;letter-spacing:0;box-shadow:none;margin-bottom:0;}
.aer-techwind-body .aer-btn:hover{box-shadow:none;transform:none;}
.aer-btn-sm{padding:.45rem .78rem;font-size:.78rem;}
.aer-btn-outline-danger{background:#fff;border-color:#d85b55;color:#a82922;}
.aer-btn-outline-danger:hover{background:#fbeaea;color:#8d201a;}
.aer-link-danger{color:var(--aer-danger);font-weight:650;text-decoration:none;}

/* ---------- Portal sidebar ---------- */
.aer-portal-sidebar{
  width:260px!important;max-width:260px!important;
  top:16px!important;bottom:16px!important;left:16px!important;
  height:calc(100vh - 32px)!important;margin:0!important;
  overflow:hidden!important;transform:none!important;animation:none!important;
  background:#fff!important;border:1px solid var(--aer-line)!important;
  border-radius:20px!important;box-shadow:0 18px 48px rgba(15,23,42,.09)!important;
  z-index:1040;
}
.aer-portal-sidebar .sidenav-header{height:auto;min-height:76px;padding:.55rem .55rem .35rem;}
.aer-portal-sidebar .navbar-brand{display:flex!important;align-items:center!important;min-width:0;padding:.8rem .7rem!important;margin:0!important;border-radius:14px;}
.aer-portal-sidebar .navbar-brand:hover{background:#f7fafb;}
.aer-portal-sidebar .navbar-brand-img{width:38px!important;height:38px!important;max-height:38px!important;object-fit:contain;border-radius:9px;flex:0 0 auto;}
.aer-portal-sidebar .navbar-brand span{display:block!important;opacity:1!important;min-width:0;white-space:normal;line-height:1.25;font-size:.84rem;color:var(--aer-ink);}
.aer-portal-sidebar .horizontal{margin-inline:.8rem!important;border-color:var(--aer-line)!important;opacity:1;}
.aer-sidebar-scroll{display:block!important;height:calc(100vh - 116px)!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;padding:.35rem .55rem 1rem;scrollbar-width:thin;scrollbar-color:#c9d5da transparent;}
.aer-sidebar-scroll::-webkit-scrollbar{width:6px}.aer-sidebar-scroll::-webkit-scrollbar-thumb{background:#c9d5da;border-radius:999px}.aer-sidebar-scroll::-webkit-scrollbar-track{background:transparent;}
.aer-sidebar-accordion{width:100%;padding:0!important;margin:0!important;list-style:none;}
.aer-nav-group{width:100%;margin:.18rem 0;}
.aer-nav-group details{width:100%;}
.aer-nav-parent{list-style:none;display:grid;grid-template-columns:30px minmax(0,1fr) 18px;align-items:center;gap:.48rem;width:100%;padding:.62rem .7rem;border-radius:11px;color:#46586a;font-size:.79rem;font-weight:750;cursor:pointer;user-select:none;transition:background-color .14s ease,color .14s ease;}
.aer-nav-parent::-webkit-details-marker{display:none;}.aer-nav-parent::marker{display:none;content:"";}
.aer-nav-parent:hover{background:#f2f7f7;color:var(--aer-ink);}
.aer-nav-parent.active{background:#eaf6f4;color:var(--aer-teal-dark);}
.aer-nav-parent-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#f1f5f6;color:#61717d;}
.aer-nav-parent.active .aer-nav-parent-icon{background:#d7eeea;color:var(--aer-teal-dark);}
.aer-nav-parent-icon i{font-size:.78rem;}
.aer-nav-chevron{font-size:.63rem;color:#93a1aa;transition:transform .16s ease;justify-self:end;}
.aer-nav-group details[open] .aer-nav-chevron{transform:rotate(180deg);}
.aer-nav-children{display:flex;flex-direction:column;gap:.08rem;padding:.22rem 0 .42rem .42rem;}
.aer-nav-child{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:.42rem;padding:.48rem .68rem;border-radius:10px;text-decoration:none!important;color:#64748b;font-size:.76rem;font-weight:600;line-height:1.3;}
.aer-nav-child i{font-size:.68rem;text-align:center;color:#94a3b8;}
.aer-nav-child:hover{background:#f6f9fa;color:var(--aer-ink);}
.aer-nav-child.active{background:#0c766f;color:#fff;font-weight:700;}
.aer-nav-child.active i{color:#fff;}

@media(min-width:1200px){
  .aer-portal-sidebar{transform:none!important;}
  .aer-portal-sidebar+.aer-main-content,.aer-portal-sidebar+.main-content{margin-left:292px!important;width:calc(100% - 292px);}
}
@media(max-width:1199.98px){
  .aer-portal-sidebar{left:12px!important;top:12px!important;bottom:12px!important;height:calc(100vh - 24px)!important;transform:translateX(-290px)!important;transition:transform .2s ease!important;box-shadow:0 24px 60px rgba(15,23,42,.18)!important;}
  .g-sidenav-show.g-sidenav-pinned .aer-portal-sidebar{transform:translateX(0)!important;}
  .aer-portal-sidebar+.aer-main-content,.aer-portal-sidebar+.main-content{margin-left:0!important;width:100%!important;}
}

/* ---------- Top application navbar ---------- */
.aer-main-content .navbar-main{position:relative;z-index:30;margin:12px 20px 0!important;padding:.15rem 0!important;border:1px solid rgba(215,223,228,.8);border-radius:16px!important;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);box-shadow:0 8px 24px rgba(15,23,42,.045)!important;}
.aer-main-content .navbar-main .container-fluid{padding:.72rem 1rem!important;}
.aer-main-content .navbar-main .breadcrumb{margin-bottom:.12rem!important;}
.aer-main-content .navbar-main .breadcrumb-item,.aer-main-content .navbar-main .breadcrumb-item a{font-size:.72rem!important;color:#73828d!important;text-decoration:none;}
.aer-main-content .navbar-main h6{font-size:.92rem;margin:0!important;}
.aer-main-content .navbar-main .btn{margin:0!important;text-transform:none;letter-spacing:0;box-shadow:none;}
@media(max-width:767.98px){
  .aer-main-content .navbar-main{margin:8px 10px 0!important;}
  .aer-main-content .navbar-main .badge{display:none!important;}
  .aer-main-content>.container-fluid{padding-inline:.8rem!important;}
}

/* ---------- Page headers / heroes ---------- */
.aer-hero,.aer-hero-compact,.aer-page-hero,.aer-hero-lite{border:1px solid var(--aer-line);border-radius:var(--aer-radius-lg);background:linear-gradient(145deg,#fff,#f5f9fa);box-shadow:var(--aer-shadow-sm);}
.aer-hero,.aer-page-hero{padding:1.8rem;}
.aer-hero-compact,.aer-hero-lite{padding:1.45rem 1.55rem;}
.aer-page-header.aer-hero-compact{display:flex;}
.aer-page-header h1,.aer-page-header h2,.aer-page-head h1,.aer-module-head h1,.aer-hero h1,.aer-hero h2,.aer-page-hero h2{font-weight:850;letter-spacing:-.04em;}
.aer-page-header>div:first-child,.aer-page-head>div:first-child,.aer-module-head>div:first-child{min-width:0;flex:1 1 520px;}
.aer-page-actions{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;}
.aer-panel-header,.aer-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;}
.aer-panel-header h3,.aer-panel-header h4,.aer-card-header h3,.aer-card-header h4{margin:.1rem 0 0;}
.aer-panel-header p,.aer-card-header p{margin:.3rem 0 0;}
.aer-section-head.compact{margin-bottom:.9rem;}
.aer-section-title>div>p,.aer-section-title>div>span{display:block;margin:0 0 .18rem;color:var(--aer-muted);font-size:.7rem;font-weight:750;text-transform:uppercase;letter-spacing:.07em;}
.aer-section-title h3,.aer-section-title h4{margin:0;}

/* ---------- Core cards / metric cards ---------- */
.aer-card{background:#fff;border:1px solid var(--aer-line);border-radius:var(--aer-radius);box-shadow:var(--aer-shadow-sm);padding:1.35rem;min-width:0;}
.aer-mini-card,.aer-list-card,.aer-stat-card,.aer-kpi-card,.aer-output-card,.aer-credit-action-card,.aer-note-card,.aer-knowledge-card,.aer-case-card,.aer-board-card,.aer-report-template-card,.aer-notification-card{
  background:#fff;border:1px solid var(--aer-line);border-radius:var(--aer-radius-sm);box-shadow:0 4px 14px rgba(15,23,42,.04);padding:1rem;min-width:0;
}
a.aer-mini-card,a.aer-module-card{text-decoration:none;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease;}
a.aer-mini-card:hover,a.aer-module-card:hover{border-color:#bdd1d3;transform:translateY(-1px);box-shadow:0 10px 26px rgba(15,23,42,.07);}
.aer-mini-card strong{display:block;color:var(--aer-ink);margin-bottom:.22rem;}.aer-mini-card span{font-size:.78rem;color:var(--aer-muted);}
.aer-stat-card,.aer-kpi-card{display:flex;flex-direction:column;gap:.18rem;}
.aer-stat-card>span,.aer-kpi-card>span{font-size:.72rem;text-transform:uppercase;letter-spacing:.055em;color:var(--aer-muted);font-weight:700;}
.aer-stat-card>strong,.aer-kpi-card>strong{font-size:1.65rem;letter-spacing:-.04em;color:var(--aer-ink);font-weight:820;}
.aer-stat-card>small,.aer-kpi-card>small{font-size:.76rem;color:var(--aer-muted);}
.aer-kpi em{display:block;margin-top:.2rem;font-size:.76rem;font-style:normal;color:var(--aer-muted);text-transform:none;letter-spacing:0;}
.aer-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;}
.aer-grid-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;}
.aer-module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;}
.aer-metric-strip,.aer-country-strip,.aer-data-freshness,.aer-data-freshness-grid,.aer-region-list,.aer-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;}
.aer-metric-strip .aer-metric-tile{min-width:0;}
.aer-data-freshness-grid>div,.aer-region-list>div,.aer-data-freshness>div{border:1px solid var(--aer-line);border-radius:12px;padding:.8rem .9rem;background:#f9fbfc;}
.aer-data-freshness-grid span,.aer-region-list span,.aer-data-freshness span{display:block;color:var(--aer-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;}
.aer-data-freshness-grid strong,.aer-region-list strong,.aer-data-freshness strong{display:block;color:var(--aer-ink);margin-top:.18rem;font-size:.95rem;}

/* ---------- Dashboard / signals / lists ---------- */
.aer-change-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;}
.aer-change-grid>div{padding:.9rem;border:1px solid var(--aer-line);border-radius:12px;background:#f9fbfb;}
.aer-change-grid>div>strong{display:block;margin-bottom:.55rem;color:var(--aer-ink);font-size:.8rem;text-transform:uppercase;letter-spacing:.055em;}
.aer-change-grid p{margin:.35rem 0;font-size:.82rem;line-height:1.5;}
.aer-event-card,.aer-work-item,.aer-alert-row,.aer-risk-alert-item,.aer-evidence-row,.aer-list-item,.aer-source-list>div,.aer-usage-row,.aer-toggle-row{
  display:flex;align-items:flex-start;gap:.8rem;padding:.8rem 0;border-bottom:1px solid var(--aer-line);min-width:0;
}
.aer-event-card:last-child,.aer-work-item:last-child,.aer-alert-row:last-child,.aer-risk-alert-item:last-child,.aer-evidence-row:last-child,.aer-list-item:last-child,.aer-source-list>div:last-child,.aer-usage-row:last-child,.aer-toggle-row:last-child{border-bottom:0;}
a.aer-event-card,a.aer-work-item{text-decoration:none;color:inherit;}
.aer-event-card time{flex:0 0 52px;width:52px;padding:.42rem .35rem;border-radius:9px;background:#eef5f4;color:var(--aer-teal-dark);font-size:.73rem;font-weight:800;text-align:center;}
.aer-event-card>div,.aer-work-item>div,.aer-alert-row>div{min-width:0;flex:1;}
.aer-event-card strong,.aer-work-item strong{display:block;color:var(--aer-ink);}.aer-event-card span,.aer-work-item span{display:block;margin-top:.12rem;color:var(--aer-muted);font-size:.74rem;}.aer-event-card p,.aer-work-item p{margin:.32rem 0 0;font-size:.8rem;line-height:1.5;}
.aer-event-card em{flex:0 0 auto;font-style:normal;font-size:.7rem;font-weight:700;color:var(--aer-muted);}
.aer-result-meta,.aer-meta-line,.aer-doc-meta,.aer-report-meta{display:flex;gap:.4rem .85rem;flex-wrap:wrap;color:var(--aer-muted);font-size:.76rem;}
.aer-tag-row,.aer-chip-list,.aer-driver-tags{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;}

/* ---------- Filters ---------- */
.aer-filter-bar,.aer-filterbar{display:flex;align-items:flex-end;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem;padding:.9rem;border:1px solid var(--aer-line);border-radius:14px;background:#fff;}
.aer-filter-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;}
.aer-filter-grid-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;}
.aer-filter-actions,.aer-form-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;}
.aer-inline-form{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;}
.aer-checkbox-list,.aer-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.5rem .8rem;}

/* ---------- Table recovery ---------- */
.aer-table-wrap,.aer-visual-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
.aer-table-wrap>.table,.aer-visual-table-wrap>.table,.aer-data-table,.aer-report-table,.aer-compact-table,.aer-matrix-table{min-width:680px;margin:0;}
.aer-data-table th,.aer-data-table td,.aer-report-table th,.aer-report-table td,.aer-compact-table th,.aer-compact-table td{vertical-align:middle;}
.aer-table td small{display:block;margin-top:.18rem;color:var(--aer-muted);font-size:.72rem;}
.aer-score-number{display:inline-flex;min-width:46px;justify-content:center;padding:.28rem .48rem;border-radius:8px;background:#f0f5f5;color:var(--aer-ink);font-weight:800;}

/* ---------- Risk / progress / bars ---------- */
.aer-risk,.aer-impact,.aer-status-pill,.aer-risk-chip{display:inline-flex;align-items:center;justify-content:center;padding:.28rem .62rem;border:1px solid var(--aer-line);border-radius:999px;background:#eef2f4;color:var(--aer-slate);font-size:.7rem;font-weight:750;text-transform:capitalize;}
.aer-badge-high,.aer-risk-high,.aer-risk-chip.high,.aer-impact.high{background:var(--aer-danger-bg);color:var(--aer-danger);border-color:#f0c6c3;}
.aer-badge-watch,.aer-risk-watch,.aer-risk-chip.medium,.aer-impact.medium{background:var(--aer-warning-bg);color:var(--aer-warning);border-color:#f1dcab;}
.aer-risk-muted{background:#f1f5f7;color:var(--aer-muted);}
.aer-badge-dark,.aer-chip-dark{background:#172635;color:#fff;border-color:#172635;}
.aer-badge-soft{background:#eef4f4;color:var(--aer-teal-dark);border-color:#d4e6e4;}
.aer-trend{display:inline-flex;align-items:center;padding:.25rem .55rem;border-radius:999px;background:#eef2f4;color:var(--aer-muted);font-size:.7rem;font-weight:700;text-transform:capitalize;}
.aer-trend-up,.aer-trend-rising,.aer-trend-worsening{background:var(--aer-danger-bg);color:var(--aer-danger);}.aer-trend-down,.aer-trend-falling,.aer-trend-improving{background:var(--aer-success-bg);color:var(--aer-success);}
.aer-progress,.aer-risk-bar,.aer-bar-track,.aer-mini-track{height:8px;border-radius:999px;background:#e7edf0;overflow:hidden;}
.aer-progress>i,.aer-progress>span,.aer-risk-bar>i,.aer-bar-fill,.aer-mini-bar{display:block;height:100%;border-radius:inherit;background:var(--aer-teal);}
.aer-risk-bar-high{background:var(--aer-danger)!important;}.aer-risk-bar-watch{background:#d5961f!important;}.aer-risk-bar-low{background:var(--aer-success)!important;}
.aer-bar-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(140px,2fr) 60px;align-items:center;gap:.65rem;margin:.65rem 0;}.aer-bar-meta{font-size:.78rem;color:var(--aer-slate);}.aer-bar-value{text-align:right;font-weight:750;color:var(--aer-ink);font-size:.78rem;}
.aer-credit-score-line{display:flex;align-items:center;gap:.8rem;}.aer-credit-score-line .aer-progress{flex:1;}

/* ---------- Country intelligence ---------- */
.aer-country-hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.7fr);gap:1rem;border:1px solid var(--aer-line);border-radius:22px;background:linear-gradient(145deg,#fff,#f3f8f8);padding:1.6rem;box-shadow:var(--aer-shadow-sm);}
.aer-country-hero-main h1{font-size:clamp(2rem,4vw,3.3rem);margin:.15rem 0 .6rem;font-weight:860;letter-spacing:-.05em;}
.aer-country-facts{display:flex;gap:.55rem 1rem;flex-wrap:wrap;color:var(--aer-muted);font-size:.8rem;}
.aer-country-risk-panel{align-self:stretch;border:1px solid var(--aer-line);border-radius:16px;background:#fff;padding:1.15rem;}
.aer-country-strip{grid-template-columns:repeat(4,minmax(0,1fr));}
.aer-kpi-tile{border:1px solid var(--aer-line);border-radius:13px;background:#fff;padding:.9rem 1rem;}
.aer-kpi-tile span{display:block;color:var(--aer-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;}.aer-kpi-tile strong{display:block;color:var(--aer-ink);font-size:1.35rem;font-weight:820;letter-spacing:-.03em;margin-top:.18rem;}.aer-kpi-tile small{display:block;color:var(--aer-muted);font-size:.72rem;margin-top:.18rem;}
.aer-judgement-list,.aer-indicator-groups,.aer-peer-list,.aer-source-list{display:flex;flex-direction:column;gap:.65rem;}
.aer-judgement-item,.aer-indicator-group,.aer-scenario-impact{border:1px solid var(--aer-line);border-radius:12px;background:#fbfcfd;padding:.85rem .95rem;}
.aer-indicator-group h6{margin:0 0 .45rem;color:var(--aer-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;}
.aer-indicator-row,.aer-peer-comparison,.aer-delta-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.48rem 0;border-bottom:1px solid #edf1f3;}.aer-indicator-row:last-child{border-bottom:0;}
.aer-mini-title{margin:1rem 0 .45rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--aer-muted);}
.aer-timeline-item{position:relative;padding:.65rem 0 .65rem 1rem;border-left:2px solid #dce8e7;}.aer-timeline-item::before{content:"";position:absolute;left:-5px;top:.95rem;width:8px;height:8px;border-radius:50%;background:var(--aer-teal);}

/* ---------- Research workflow / reports ---------- */
.aer-board-grid{display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:1rem;overflow-x:auto;padding-bottom:.5rem;}
.aer-board-lane{min-width:230px;border:1px solid var(--aer-line);border-radius:15px;background:#f8fafb;padding:.75rem;}
.aer-board-lane-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.3rem .2rem .65rem;font-size:.78rem;font-weight:800;color:var(--aer-ink);}
.aer-board-stack{display:flex;flex-direction:column;gap:.65rem;}
.aer-board-card h4{font-size:.9rem;margin:0 0 .35rem;}.aer-board-card p{font-size:.76rem;line-height:1.5;margin:.2rem 0;}.aer-board-empty{padding:1rem;text-align:center;border:1px dashed var(--aer-line-strong);border-radius:10px;color:var(--aer-muted);font-size:.78rem;}
.aer-report-sheet,.aer-report-pack,.aer-report-page,.aer-print-shell{max-width:980px;margin:0 auto;background:#fff;border:1px solid var(--aer-line);box-shadow:0 18px 50px rgba(15,23,42,.08);border-radius:16px;padding:2rem;}
.aer-report-header{padding-bottom:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--aer-line);}.aer-report-lead{font-size:1.05rem;line-height:1.72;color:var(--aer-slate);}.aer-report-block,.aer-doc-section{padding:1rem 0;border-bottom:1px solid var(--aer-line);}.aer-report-block:last-child,.aer-doc-section:last-child{border-bottom:0;}
.aer-report-grid,.aer-report-template-grid,.aer-export-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;}
.aer-action-stack{display:flex;flex-direction:column;gap:.55rem;}
.aer-alert-soft,.aer-note{border:1px solid #d5e6e5;border-radius:12px;background:#f4f9f8;padding:.85rem 1rem;color:var(--aer-slate);}

/* ---------- Scenario / architecture ---------- */
.aer-case-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;}
.aer-mini-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;}
.aer-mini-matrix>div{border:1px solid var(--aer-line);border-radius:10px;padding:.7rem;background:#fafcfc;}
.aer-card-footer-line{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding-top:.8rem;margin-top:.8rem;border-top:1px solid var(--aer-line);}
.aer-graph-canvas,.aer-africa-map-panel,.aer-map-surface{position:relative;min-height:420px;border:1px solid var(--aer-line);border-radius:16px;background:radial-gradient(circle at 50% 20%,#f1f8f7,#e9f0f2);overflow:auto;padding:1rem;}
.aer-graph-node-card{border:1px solid var(--aer-line);border-radius:12px;background:#fff;padding:.8rem;box-shadow:var(--aer-shadow-sm);}
.aer-map-legend{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.75rem;}.aer-map-node{display:inline-flex;padding:.35rem .55rem;border-radius:999px;background:#fff;border:1px solid var(--aer-line);font-size:.72rem;}

/* ---------- Visual analytics ---------- */
.aer-chart-card,.aer-map-card{background:#fff;border:1px solid var(--aer-line);border-radius:var(--aer-radius);padding:1rem;min-width:0;}
/* Chart.js with maintainAspectRatio:false MUST live inside an independently sized
   parent. If a canvas is placed directly in an auto-height/h-100 panel, Chart.js
   can enter a ResizeObserver feedback loop where parent and canvas repeatedly
   enlarge one another. All AER chart surfaces use this containment layer. */
.aer-chart-frame,.aer-chart-box{
  position:relative;
  width:100%;
  min-width:0;
  height:var(--aer-chart-height,300px);
  min-height:220px;
  max-height:560px;
  overflow:hidden;
  contain:layout size;
}
.aer-chart-frame-country{--aer-chart-height:320px;}
.aer-chart-frame-categories{--aer-chart-height:360px;}
.aer-chart-frame>canvas,.aer-chart-box>canvas,.aer-chart-card canvas{
  display:block;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
}
/* Safety net for any AER chart added without the preferred wrapper. The JS
   automatically wraps these canvases, but this prevents an uninitialised canvas
   from influencing panel height before Chart.js runs. */
canvas[data-chart-series],canvas[data-risk-series],canvas[data-category-series]{
  display:block;
  max-width:100%;
}

.aer-annotation-item{padding:.85rem 0;border-bottom:1px solid var(--aer-line);}.aer-annotation-item:last-child{border-bottom:0;}.aer-annotation-item h4{font-size:.9rem;margin:.4rem 0 .25rem;}.aer-annotation-item p{font-size:.8rem;margin:0;line-height:1.55;}

/* ---------- Subscription / access / admin ---------- */
.aer-list,.aer-grid-list,.aer-studio-list,.aer-admin-list{display:flex;flex-direction:column;gap:.6rem;}
.aer-studio-list-item,.aer-admin-list-item{border:1px solid var(--aer-line);border-radius:11px;padding:.75rem .85rem;background:#fbfcfd;}.aer-admin-list-item p,.aer-studio-list-item p{margin:.22rem 0 0;font-size:.76rem;}
.aer-feature-line{display:flex;align-items:flex-start;gap:.6rem;padding:.55rem 0;border-bottom:1px solid var(--aer-line);}.aer-feature-line:last-child{border-bottom:0;}
.aer-media-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;align-items:start;}
.aer-media-management-page .aer-card{padding:1.35rem;}
.aer-admin-form{display:flex;flex-direction:column;gap:.8rem;}
.aer-admin-form label{display:flex;flex-direction:column;gap:.32rem;color:var(--aer-slate);font-size:.78rem;font-weight:650;}
.aer-admin-stack{display:flex;flex-direction:column;gap:.5rem;}
.aer-admin-check{flex-direction:row!important;align-items:center!important;gap:.45rem!important;font-weight:550!important;}
.aer-admin-check input[type="checkbox"]{flex:0 0 auto;}
.aer-checkline-block{display:flex!important;align-items:flex-start!important;gap:.45rem!important;}
.aer-usage-row{justify-content:space-between;}.aer-usage-row>span{color:var(--aer-muted);}.aer-usage-row>strong{color:var(--aer-ink);}

/* ---------- Misc ---------- */
.aer-prose{max-width:820px;color:var(--aer-slate);line-height:1.75;}.aer-prose h2,.aer-prose h3{margin-top:1.6rem;}.aer-prose p{margin:.75rem 0;}
.aer-legacy-note{border-left:4px solid var(--aer-teal);padding:.8rem 1rem;background:#f5f9f9;color:var(--aer-slate);}
.aer-auth-footer{max-width:1100px;margin:1.5rem auto 0;padding:1rem 1.5rem;color:var(--aer-muted);font-size:.78rem;text-align:center;}

/* ---------- Responsive recovery ---------- */
@media(max-width:1199.98px){
  .aer-grid-5{grid-template-columns:repeat(3,minmax(0,1fr));}
  .aer-media-admin-grid{grid-template-columns:1fr;}
}
@media(max-width:991.98px){
  .aer-country-hero{grid-template-columns:1fr;}
  .aer-country-strip,.aer-metric-strip,.aer-data-freshness,.aer-data-freshness-grid,.aer-region-list,.aer-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .aer-change-grid,.aer-report-grid,.aer-report-template-grid,.aer-export-grid{grid-template-columns:1fr;}
  .aer-filter-grid-5{grid-template-columns:repeat(2,minmax(0,1fr));}
  .aer-grid-5{grid-template-columns:repeat(2,minmax(0,1fr));}
  .aer-hero,.aer-page-hero{padding:1.35rem;}
}
@media(max-width:767.98px){
  .aer-shell,.aer-page-wrap,.aer-container{padding-inline:.15rem;}
  .aer-page-header,.aer-page-head,.aer-module-head,.aer-section-head,.aer-toolbar{align-items:flex-start;flex-direction:column;}
  .aer-page-header .aer-toolbar,.aer-page-header .aer-actions{width:100%;}
  .aer-grid-2,.aer-grid-5,.aer-country-strip,.aer-metric-strip,.aer-data-freshness,.aer-data-freshness-grid,.aer-region-list,.aer-metric-grid,.aer-filter-grid-3,.aer-filter-grid-5,.aer-case-grid{grid-template-columns:1fr;}
  .aer-bar-row{grid-template-columns:1fr;gap:.3rem;}.aer-bar-value{text-align:left;}
  .aer-report-sheet,.aer-report-pack,.aer-report-page,.aer-print-shell{padding:1.2rem;border-radius:12px;}
  .aer-table-wrap{border-radius:12px;}
  .aer-country-hero-main h1{font-size:2.15rem;}
}
@media(max-width:520px){
  .aer-main-content>.container-fluid{padding-inline:.55rem!important;}
  .aer-panel,.aer-card{border-radius:13px;}
  .aer-panel{padding:1rem!important;}
  .aer-actions,.aer-toolbar,.aer-inline-actions,.aer-page-actions{gap:.45rem;}
}
@media(prefers-reduced-motion:reduce){
  .aer-techwind-body *, .aer-techwind-body *::before,.aer-techwind-body *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
}

/* Print: keep reporting pages clean and prevent the portal shell from leaking. */
@media print{
  .aer-portal-sidebar,.navbar-main,.aer-actions,.aer-toolbar,.aer-page-actions,.no-print{display:none!important;}
  .aer-main-content{margin:0!important;width:100%!important;}
  .aer-main-content>.container-fluid{padding:0!important;}
  .aer-report-sheet,.aer-report-pack,.aer-report-page,.aer-print-shell{max-width:none;border:0;box-shadow:none;padding:0;}
}

/* ---------- Recovery layer: secondary application surfaces ---------- */
.aer-search-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,220px) auto;gap:.65rem;align-items:center;margin-bottom:1rem;}
.aer-search-input-wrap{position:relative;min-width:0;}.aer-search-input-wrap input{width:100%;padding-left:2.35rem!important;}.aer-search-input-wrap>i{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--aer-muted);pointer-events:none;}
.aer-result-stack,.aer-notification-stack,.aer-preference-list,.aer-role-stack,.aer-risk-category-list,.aer-risk-weight-list{display:flex;flex-direction:column;gap:.75rem;}
.aer-result-card,.aer-watch-card,.aer-research-card,.aer-risk-method-card,.aer-scenario-card,.aer-plan-card{display:block;border:1px solid var(--aer-line);border-radius:15px;background:#fff;padding:1.05rem 1.1rem;color:inherit;box-shadow:var(--aer-shadow-sm);min-width:0;}
.aer-result-card:hover,.aer-watch-card:hover,.aer-research-card:hover{border-color:#b9d5d2;box-shadow:0 14px 32px rgba(15,23,42,.075);transform:translateY(-1px);}
.aer-result-card{text-decoration:none!important;}.aer-result-card h3,.aer-result-card h4{margin:.25rem 0 .4rem;font-size:1rem;}.aer-result-meta,.aer-meta-list{display:flex;gap:.45rem .8rem;flex-wrap:wrap;color:var(--aer-muted);font-size:.72rem;}
.aer-notification-card{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:.8rem;align-items:flex-start;border:1px solid var(--aer-line);border-radius:14px;background:#fff;padding:.95rem 1rem;}.aer-notification-card.is-unread{border-color:#b7d7d4;background:#f7fbfa;box-shadow:inset 3px 0 0 var(--aer-teal);}.aer-notification-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:#edf5f4;color:var(--aer-teal-dark);}.aer-notification-icon.severity-high,.aer-notification-icon.severity-critical{background:var(--aer-danger-bg);color:var(--aer-danger);}.aer-notification-icon.severity-medium{background:var(--aer-warning-bg);color:var(--aer-warning);}
.aer-toggle-row{display:flex!important;flex-direction:row!important;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--aer-line);border-radius:12px;background:#fff;padding:.8rem .9rem;font-weight:650!important;}.aer-toggle-row input{flex:0 0 auto;}
.aer-watchlist-grid,.aer-research-grid,.aer-risk-method-grid,.aer-studio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;}.aer-watch-card,.aer-research-card,.aer-risk-method-card{height:100%;}.aer-watch-card h3,.aer-research-card h3,.aer-risk-method-card h3{font-size:.96rem;margin:.15rem 0 .45rem;}
.aer-research-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,320px);gap:1.2rem;align-items:start;}.aer-research-document,.aer-research-aside,.aer-review-note{border:1px solid var(--aer-line);border-radius:15px;background:#fff;padding:1.2rem;}.aer-research-aside{position:sticky;top:90px;}.aer-review-note{background:#f8fafb;margin-bottom:.65rem;}
.aer-risk-category-item,.aer-risk-driver{border:1px solid var(--aer-line);border-radius:12px;background:#fbfcfd;padding:.85rem .9rem;}.aer-risk-category-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.55rem;}.aer-risk-driver{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;}
.aer-scenario-card{display:flex;flex-direction:column;height:100%;}.aer-scenario-card .aer-card-footer-line{margin-top:auto;}.aer-scenario-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:.8rem 0;}.aer-scenario-metrics>div{border:1px solid var(--aer-line);border-radius:10px;background:#fafcfc;padding:.65rem .7rem;}.aer-scenario-metrics span{display:block;color:var(--aer-muted);font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;}.aer-scenario-metrics strong{display:block;color:var(--aer-ink);font-size:.95rem;margin-top:.12rem;}
.aer-scenario-bubble-row{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;}.aer-scenario-bubble{display:inline-flex;align-items:center;padding:.35rem .58rem;border-radius:999px;border:1px solid var(--aer-line);background:#f6f9fa;color:var(--aer-slate);font-size:.7rem;font-weight:700;}
.aer-studio-header{margin-bottom:1.1rem;}.aer-studio-stat{border:1px solid var(--aer-line);border-radius:14px;background:#fff;padding:1rem;box-shadow:var(--aer-shadow-sm);}.aer-studio-stat span,.aer-metric-label{display:block;color:var(--aer-muted);font-size:.67rem;text-transform:uppercase;letter-spacing:.055em;font-weight:750;}.aer-studio-stat strong,.aer-metric-value{display:block;color:var(--aer-ink);font-size:1.45rem;line-height:1.15;font-weight:830;letter-spacing:-.035em;margin-top:.2rem;}
.aer-score-pill{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:.3rem .55rem;border-radius:999px;background:#edf5f4;color:var(--aer-teal-dark);font-weight:800;font-size:.72rem;}.aer-panel-table{padding:0!important;overflow:hidden;}

/* ---------- Print/report composition ---------- */
.aer-print-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem;}.aer-print-pack{max-width:1020px;margin:0 auto;}.aer-report-cover{min-height:620px;display:flex;flex-direction:column;justify-content:space-between;border-radius:16px;background:linear-gradient(145deg,#102737,#173f46);color:#fff;padding:2.4rem;overflow:hidden;}.aer-report-cover-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.65fr);gap:2rem;align-items:end;}.aer-report-brand{font-size:.75rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase;}.aer-report-classification{display:inline-flex;width:max-content;max-width:100%;padding:.35rem .6rem;border:1px solid rgba(255,255,255,.25);border-radius:999px;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;}.aer-report-sections{display:flex;flex-direction:column;gap:1.1rem;}.aer-report-section{padding:1.15rem 0;border-bottom:1px solid var(--aer-line);}.aer-report-section:last-child{border-bottom:0;}.aer-report-disclaimer{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--aer-line);color:var(--aer-muted);font-size:.72rem;line-height:1.6;}

@media(max-width:991.98px){.aer-watchlist-grid,.aer-research-grid,.aer-risk-method-grid,.aer-studio-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.aer-research-layout{grid-template-columns:1fr;}.aer-research-aside{position:static;}.aer-search-form{grid-template-columns:minmax(0,1fr) 180px auto;}}
@media(max-width:767.98px){.aer-search-form,.aer-watchlist-grid,.aer-research-grid,.aer-risk-method-grid,.aer-studio-grid,.aer-report-cover-grid{grid-template-columns:1fr;}.aer-search-form .aer-btn{width:100%;}.aer-notification-card{grid-template-columns:38px minmax(0,1fr);}.aer-notification-card>.aer-actions{grid-column:1/-1;}.aer-risk-driver{grid-template-columns:1fr;}.aer-report-cover{min-height:520px;padding:1.45rem;}}
@media print{.aer-print-toolbar{display:none!important;}.aer-report-cover{border-radius:0;box-shadow:none;break-after:page;}.aer-report-section{break-inside:avoid;}}

/* ---------- Final component normalization ---------- */
.aer-metric{font-size:2rem;line-height:1.05;font-weight:850;letter-spacing:-.045em;color:var(--aer-ink);}
.aer-badge-low{background:var(--aer-success-bg);color:var(--aer-success);border-color:#bfe6d1;}
.aer-alert-box{border-radius:12px!important;border-width:1px!important;box-shadow:none!important;}
.aer-mini-panel{display:flex;align-items:center;min-height:84px;border:1px solid var(--aer-line);border-radius:13px;background:#fff;padding:.9rem 1rem;box-shadow:var(--aer-shadow-sm);}
.aer-mini-panel strong{font-size:.84rem;color:var(--aer-ink);line-height:1.45;}
.aer-architecture-card{height:100%;}
.aer-command-strip{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.65rem .8rem;border:1px solid var(--aer-line);border-radius:13px;background:#fff;box-shadow:var(--aer-shadow-sm);}
.aer-credit-profile-card{padding:1rem!important;}.aer-credit-profile-card>span{color:var(--aer-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;}.aer-credit-profile-card>strong{display:block;margin:.25rem 0;color:var(--aer-ink);}.aer-credit-profile-card>p{font-size:.78rem;line-height:1.55;margin:.25rem 0 .7rem;}
.aer-methodology-meta{display:flex;gap:.45rem .7rem;flex-wrap:wrap;margin-top:.7rem;color:var(--aer-muted);font-size:.72rem;}
.aer-status-chip,.aer-pill{display:inline-flex;align-items:center;justify-content:center;padding:.3rem .58rem;border:1px solid var(--aer-line);border-radius:999px;background:#edf5f4;color:var(--aer-teal-dark);font-size:.68rem;font-weight:800;text-transform:capitalize;}
.aer-risk-alert-list,.aer-step-list{display:flex;flex-direction:column;gap:.65rem;}
.aer-risk-list-row,.aer-transmission-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid var(--aer-line);border-radius:11px;background:#fbfcfd;padding:.75rem .85rem;}
.aer-section-chip-row{display:flex;gap:.35rem;flex-wrap:wrap;margin:.7rem 0;}.aer-section-chip-row em{font-style:normal;padding:.24rem .48rem;border-radius:999px;background:#f0f5f5;color:var(--aer-slate);font-size:.65rem;font-weight:700;}
.aer-select-multi{min-height:118px!important;padding:.55rem .7rem!important;}
@media(max-width:767.98px){.aer-risk-list-row,.aer-transmission-item{grid-template-columns:1fr;}.aer-metric{font-size:1.75rem;}}

/* Soft UI initialises PerfectScrollbar on Windows. AER keeps native scrolling
   on its fixed shell, so suppress the duplicate visual rails without removing
   nodes that the library still owns. */
.aer-techwind-body .ps__rail-x,.aer-techwind-body .ps__rail-y{display:none!important;}
.aer-sidebar-scroll.ps{overflow-x:hidden!important;overflow-y:auto!important;}
