:root{
  --bg:#F4EFE6; --surface:#FDFBF7; --surface-2:#EBE5D8; --surface-card:#FFFFFF;
  --ink:#1A202C; --ink-muted:#5A6270; --ink-soft:#828C9B;
  --border:#D8D2C2; --border-subtle:#E5DFCE;
  --brass:#926F2D; --brass-strong:#73541B; --brass-bg:#F5EAD4; --brass-border:#DECEAA;
  --gain:#177245; --gain-bg:#E2F3EB; --gain-border:#B2DEC9;
  --loss:#B83A26; --loss-bg:#FDE8E4; --loss-border:#F5BDB4;
  --info:#2A6F97; --info-bg:#E2EFF7; --info-border:#B9DAED;
  --ai:#6D4CA0; --ai-bg:#EFE8F9; --ai-border:#D1BFE8;
  --accent:#2463EB;
  --shadow-sm:0 1px 3px rgba(0,0,0,0.05);
  --shadow-md:0 4px 14px rgba(0,0,0,0.07);
  --shadow-lg:0 10px 28px rgba(0,0,0,0.12);
  --radius-sm:4px; --radius-md:8px; --radius-lg:12px;
  --font-display:'Newsreader',serif;
  --font-body:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,sans-serif;
  --font-mono:'IBM Plex Mono',monospace;
}

[data-theme="dark"]{
  --bg:#12141A; --surface:#1A1D26; --surface-2:#232734; --surface-card:#1E222D;
  --ink:#EDF0F7; --ink-muted:#A2A9B8; --ink-soft:#717888;
  --border:#2F3445; --border-subtle:#262A38;
  --brass:#DDBA75; --brass-strong:#EED196; --brass-bg:#3A311D; --brass-border:#5B4C2C;
  --gain:#4ECA96; --gain-bg:#163327; --gain-border:#255B44;
  --loss:#F06A55; --loss-bg:#3D1D18; --loss-border:#6B2E24;
  --info:#68B2DD; --info-bg:#172E3D; --info-border:#25506B;
  --ai:#BA9EE8; --ai-bg:#2B1E40; --ai-border:#4C3570;
  --accent:#3B82F6;
  --shadow-sm:0 1px 3px rgba(0,0,0,0.3);
  --shadow-md:0 4px 14px rgba(0,0,0,0.4);
  --shadow-lg:0 10px 28px rgba(0,0,0,0.6);
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#12141A; --surface:#1A1D26; --surface-2:#232734; --surface-card:#1E222D;
    --ink:#EDF0F7; --ink-muted:#A2A9B8; --ink-soft:#717888;
    --border:#2F3445; --border-subtle:#262A38;
    --brass:#DDBA75; --brass-strong:#EED196; --brass-bg:#3A311D; --brass-border:#5B4C2C;
    --gain:#4ECA96; --gain-bg:#163327; --gain-border:#255B44;
    --loss:#F06A55; --loss-bg:#3D1D18; --loss-border:#6B2E24;
    --info:#68B2DD; --info-bg:#172E3D; --info-border:#25506B;
    --ai:#BA9EE8; --ai-bg:#2B1E40; --ai-border:#4C3570;
    --accent:#3B82F6;
  }
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-padding-top:70px;scroll-behavior:smooth;}
body{
  background:var(--bg); color:var(--ink); font-family:var(--font-body);
  line-height:1.55; -webkit-font-smoothing:antialiased;
  min-height:100vh; display:flex; flex-direction:column;
}
::selection{background:var(--brass-bg);color:var(--ink);}
img,canvas{max-width:100%;}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px;width:100%;}
a{color:inherit;text-decoration:none;}
button,input,select{font-family:inherit;}

/* TOP STATUS BAR */
.top-bar{
  background:var(--surface-2); border-bottom:1px solid var(--border);
  font-size:11.5px; font-family:var(--font-mono); color:var(--ink-muted);
  padding:6px 0;
}
.top-bar-inner{
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px;
}
.market-status{display:flex; align-items:center; gap:8px;}
.pulse-dot{
  width:8px; height:8px; border-radius:50%; background:var(--gain);
  display:inline-block; box-shadow:0 0 0 2px var(--gain-border);
  animation:pulse 2s infinite;
}
@keyframes pulse{0%{opacity:.6;transform:scale(0.95)}50%{opacity:1;transform:scale(1.15)}100%{opacity:.6;transform:scale(0.95)}}
.top-actions{display:flex; gap:12px; align-items:center;}
.btn-link{background:none; border:none; color:var(--ink); font-family:var(--font-mono); font-size:11.5px; cursor:pointer; display:flex; align-items:center; gap:4px;}
.btn-link:hover{color:var(--brass);}

/* HERO */
header.hero{
  border-bottom:1px solid var(--border);
  background:linear-gradient(180deg, var(--surface) 0%, var(--bg) 100%);
  padding:36px 0 28px;
}
.eyebrow{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.05em;
  color:var(--brass-strong); text-transform:uppercase; margin-bottom:10px;
  display:flex; align-items:center; gap:10px;
}
.hero-title-row{
  display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap;
}
.hero h1{
  font-family:var(--font-display); font-weight:500; font-style:italic;
  font-size:clamp(26px, 3.2vw, 38px); line-height:1.2; letter-spacing:-.015em;
  max-width:28ch;
}
.hero-sub{color:var(--ink-muted); max-width:65ch; margin-top:10px; font-size:14px;}
.hero-cta{display:flex; gap:10px; margin-top:16px; flex-wrap:wrap;}

.hero-grid{
  display:grid; grid-template-columns:1.2fr 1fr; gap:32px; margin-top:28px; align-items:end;
}
@media (max-width:880px){.hero-grid{grid-template-columns:1fr; gap:20px;}}

.patrimonio-card{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:20px 24px; box-shadow:var(--shadow-sm);
}
.patrimonio-figure .label{
  font-family:var(--font-mono); font-size:11px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.06em;
}
.patrimonio-figure .value{
  font-family:var(--font-mono); font-weight:700; font-size:clamp(30px, 4.2vw, 44px);
  letter-spacing:-.02em; margin-top:4px; color:var(--ink);
}
.patrimonio-figure .deltas{
  display:flex; gap:16px; flex-wrap:wrap; margin-top:8px; font-size:12.5px; font-family:var(--font-mono);
}
.delta-badge{padding:2px 8px; border-radius:4px; font-weight:600;}
.delta-badge.pos{background:var(--gain-bg); color:var(--gain); border:1px solid var(--gain-border);}
.delta-badge.neg{background:var(--loss-bg); color:var(--loss); border:1px solid var(--loss-border);}

.alloc-block{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:20px 24px; box-shadow:var(--shadow-sm);
}
.alloc-header{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;}
.alloc-title{font-size:11.5px; font-family:var(--font-mono); text-transform:uppercase; color:var(--ink-soft); letter-spacing:.05em;}
.allocbar{
  display:flex; width:100%; height:16px; border-radius:var(--radius-sm);
  overflow:hidden; border:1px solid var(--border); background:var(--surface-2);
}
.allocbar span{height:100%; transition:width .4s cubic-bezier(0.4, 0, 0.2, 1);}
.alloc-legend{
  display:flex; flex-wrap:wrap; gap:10px 16px; margin-top:12px; font-size:12px;
  font-family:var(--font-mono); color:var(--ink-muted);
}
.alloc-legend b{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle;}

/* STICKY NAV TABS */
nav.tabs{
  position:sticky; top:0; z-index:100; background:var(--surface);
  border-bottom:1px solid var(--border); box-shadow:0 2px 8px rgba(0,0,0,0.03);
}
.tabs-inner{
  display:flex; gap:2px; overflow-x:auto; scrollbar-width:none; align-items:center;
}
.tabs-inner::-webkit-scrollbar{display:none;}
.tab-btn{
  font-family:var(--font-body); font-size:13.5px; font-weight:500; color:var(--ink-muted);
  background:none; border:none; padding:15px 14px 13px; cursor:pointer; white-space:nowrap;
  border-bottom:2px solid transparent; transition:all .15s ease; display:flex; align-items:center; gap:6px;
}
.tab-btn:hover{color:var(--ink); background:rgba(0,0,0,0.02);}
.tab-btn.active{
  color:var(--brass-strong); border-bottom-color:var(--brass); font-weight:600;
}
.tab-btn .badge-pill{
  font-family:var(--font-mono); font-size:10px; padding:2px 6px; border-radius:10px;
  background:var(--brass-bg); color:var(--brass-strong); font-weight:600;
}
.nav-right-actions{
  margin-left:auto; display:flex; gap:8px; align-items:center; padding-left:12px;
}

/* MAIN & PANELS */
main{padding:30px 0 80px; flex:1;}
section.panel{display:none;}
section.panel.active{display:block; animation:fadePanel .25s ease-out;}
@keyframes fadePanel{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

.section-title-wrap{margin-bottom:24px;}
h2.section-title{
  font-family:var(--font-display); font-style:italic; font-weight:500; font-size:26px;
  letter-spacing:-.01em; color:var(--ink);
}
.section-desc{color:var(--ink-muted); font-size:14px; max-width:85ch; margin-top:4px;}
h3.sub-title{
  font-family:var(--font-body); font-weight:600; font-size:16px; margin:32px 0 14px;
  display:flex; align-items:center; justify-content:space-between;
}

/* COMMON UI CARDS & GRIDS */
.card{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:22px; box-shadow:var(--shadow-sm); position:relative;
}
.card h3{font-size:14.5px; font-weight:600; margin-bottom:4px;}
.card .card-sub{font-size:12px; color:var(--ink-muted); margin-bottom:16px;}

.kpi-row{
  display:grid; grid-template-columns:repeat(5,1fr); gap:12px; margin-bottom:24px;
}
@media (max-width:1024px){.kpi-row{grid-template-columns:repeat(3,1fr);}}
@media (max-width:640px){.kpi-row{grid-template-columns:repeat(2,1fr);}}
.kpi{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:16px; box-shadow:var(--shadow-sm);
}
.kpi .k-label{
  font-family:var(--font-mono); font-size:10.5px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.05em;
}
.kpi .k-value{
  font-family:var(--font-mono); font-size:20px; font-weight:700; margin-top:6px; color:var(--ink);
}
.kpi .k-note{font-size:11.5px; color:var(--ink-muted); margin-top:4px;}

.btn{
  font-family:var(--font-mono); font-size:12px; font-weight:600; padding:9px 15px;
  border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface);
  color:var(--ink); cursor:pointer; white-space:nowrap; transition:all .15s ease;
  display:inline-flex; align-items:center; gap:6px; justify-content:center;
}
.btn:hover{border-color:var(--brass); transform:translateY(-1px); box-shadow:var(--shadow-sm);}
.btn:active{transform:none;}
.btn.primary{
  background:var(--brass); border-color:var(--brass); color:#FFFFFF;
}
[data-theme="dark"] .btn.primary{background:var(--brass); color:#12141A;}
.btn.secondary{background:var(--surface-2); border-color:var(--border);}
.btn.success{background:var(--gain); border-color:var(--gain); color:#FFFFFF;}
.btn.danger{color:var(--loss); border-color:var(--loss-border); background:var(--loss-bg);}
.btn.danger:hover{background:var(--loss); color:#FFFFFF;}
.btn.small{padding:5px 9px; font-size:11px;}
.btn.icon-only{padding:7px; border-radius:50%;}

/* BADGES */
.badge{
  font-family:var(--font-mono); font-size:10.5px; padding:3px 9px; border-radius:12px;
  white-space:nowrap; font-weight:600; display:inline-flex; align-items:center; gap:4px;
}
.badge.aportar{background:var(--gain-bg); color:var(--gain); border:1px solid var(--gain-border);}
.badge.manter{background:var(--info-bg); color:var(--info); border:1px solid var(--info-border);}
.badge.reduzir{background:var(--brass-bg); color:var(--brass-strong); border:1px solid var(--brass-border);}
.badge.zerar{background:var(--loss-bg); color:var(--loss); border:1px solid var(--loss-border);}

/* HEALTH SCORE & ADVISOR HERO CARD */
.advisor-hero-card{
  background:linear-gradient(135deg, var(--surface-card) 0%, var(--surface-2) 100%);
  border:1px solid var(--border); border-radius:var(--radius-lg); padding:26px;
  box-shadow:var(--shadow-md); margin-bottom:28px; position:relative; overflow:hidden;
}
.advisor-hero-card::before{
  content:''; position:absolute; top:0; left:0; width:5px; height:100%; background:var(--brass);
}
.advisor-header{
  display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap;
  margin-bottom:18px;
}
.advisor-tag{
  font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em;
  color:var(--brass-strong); font-weight:700; display:flex; align-items:center; gap:6px;
}
.advisor-score-box{
  display:flex; align-items:center; gap:16px; background:var(--surface); border:1px solid var(--border);
  padding:12px 18px; border-radius:var(--radius-md); box-shadow:var(--shadow-sm);
}
.score-circle{
  width:54px; height:54px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-weight:700; font-size:22px; color:#FFFFFF;
}
.score-details .score-title{font-size:11px; font-family:var(--font-mono); color:var(--ink-soft); text-transform:uppercase;}
.score-details .score-status{font-size:14px; font-weight:600; color:var(--ink);}

.advisor-summary-text{
  font-size:14.5px; line-height:1.65; color:var(--ink); margin-bottom:20px;
}
.advisor-summary-text p{margin-bottom:8px;}
.advisor-summary-text p:last-child{margin-bottom:0;}

.advisor-pillars{
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:20px;
}
@media (max-width:880px){.advisor-pillars{grid-template-columns:repeat(2,1fr);}}
.pillar-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:12px 14px; font-size:12px;
}
.pillar-name{font-family:var(--font-mono); font-size:10px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.04em;}
.pillar-status{font-weight:600; font-size:13.5px; margin:4px 0 2px; color:var(--ink);}
.pillar-desc{font-size:11.5px; color:var(--ink-muted);}

/* REBALANCING MODULE */
.rebalance-grid{
  display:grid; grid-template-columns:1.2fr 1fr; gap:24px; margin-bottom:28px;
}
@media (max-width:960px){.rebalance-grid{grid-template-columns:1fr;}}

.target-editor-row{
  display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 0;
  border-bottom:1px solid var(--border-subtle);
}
.target-editor-row:last-child{border-bottom:none;}
.target-class-label{display:flex; align-items:center; gap:8px; font-weight:600; font-size:13.5px;}
.target-class-label b{width:10px; height:10px; border-radius:2px;}
.target-input-wrap{display:flex; align-items:center; gap:8px;}
.target-input-wrap input{
  width:64px; text-align:right; padding:6px 8px; border:1px solid var(--border);
  border-radius:var(--radius-sm); font-family:var(--font-mono); font-size:13px; background:var(--bg); color:var(--ink);
}

.boleta-step-card{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:20px; margin-bottom:14px; position:relative;
}
.boleta-step-header{
  display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;
}
.step-number{
  font-family:var(--font-mono); font-size:11px; background:var(--brass-bg); color:var(--brass-strong);
  padding:3px 8px; border-radius:12px; font-weight:700;
}
.order-list{display:flex; flex-direction:column; gap:10px;}
.order-item{
  display:flex; justify-content:space-between; align-items:center; padding:12px 14px;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm);
  gap:12px; flex-wrap:wrap;
}
.order-left{display:flex; align-items:center; gap:12px;}
.order-type-badge{
  font-family:var(--font-mono); font-size:10px; font-weight:700; padding:3px 7px;
  border-radius:4px; text-transform:uppercase;
}
.order-type-badge.compra{background:var(--gain-bg); color:var(--gain); border:1px solid var(--gain-border);}
.order-type-badge.venda{background:var(--loss-bg); color:var(--loss); border:1px solid var(--loss-border);}
.order-type-badge.novo{background:var(--ai-bg); color:var(--ai); border:1px solid var(--ai-border);}
.order-ticker{font-family:var(--font-mono); font-weight:700; font-size:15px;}
.order-desc{font-size:12.5px; color:var(--ink-muted);}
.order-right{text-align:right;}
.order-val{font-family:var(--font-mono); font-weight:700; font-size:15px;}
.order-meta{font-family:var(--font-mono); font-size:11.5px; color:var(--ink-soft);}

/* QUICK CAIXA WIDGET */
.quick-caixa-bar{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 14px;
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-sm);
  margin-bottom:14px;
}
.quick-caixa-display{
  display:flex; align-items:baseline; gap:6px; font-family:var(--font-mono);
}
.quick-caixa-display span{
  font-size:11px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.04em;
}
.quick-caixa-display b{
  font-size:18px; color:var(--brass-strong); font-weight:700;
}
.quick-caixa-btns{
  display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-left:auto;
}

/* RADAR DE OPORTUNIDADES & SUGESTÕES DE NOVOS ATIVOS */
.opp-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(340px, 1fr));
  gap:16px; margin-top:14px;
}
.opp-card{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:20px; display:flex; flex-direction:column; justify-content:space-between;
  transition:all .2s ease; box-shadow:var(--shadow-sm); position:relative;
}
.opp-card:hover{
  border-color:var(--brass); transform:translateY(-2px); box-shadow:var(--shadow-md);
}
.opp-card.in-portfolio{
  border-left:4px solid var(--gain);
}
.opp-header{
  display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:10px;
}
.opp-ticker-wrap{
  display:flex; align-items:center; gap:8px;
}
.opp-ticker{
  font-family:var(--font-mono); font-size:18px; font-weight:700; color:var(--ink);
}
.opp-category-badge{
  font-family:var(--font-mono); font-size:10px; padding:3px 8px; border-radius:12px;
  font-weight:600; background:var(--surface-2); color:var(--ink-muted);
}
.opp-tag{
  font-family:var(--font-mono); font-size:10px; padding:3px 8px; border-radius:10px;
  font-weight:700; text-transform:uppercase; letter-spacing:.03em;
}
.opp-name{
  font-size:13px; color:var(--ink-muted); margin-bottom:12px; font-weight:500;
}
.opp-metrics{
  display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; padding:10px 12px;
  background:var(--surface-2); border-radius:var(--radius-sm); margin-bottom:12px;
}
.opp-metric-item{
  display:flex; flex-direction:column;
}
.opp-m-label{
  font-family:var(--font-mono); font-size:9.5px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.04em;
}
.opp-m-val{
  font-family:var(--font-mono); font-size:12.5px; font-weight:700; color:var(--ink); margin-top:2px;
}
.opp-thesis{
  font-size:12.5px; line-height:1.55; color:var(--ink); margin-bottom:12px;
  background:var(--surface); border-left:3px solid var(--brass); padding:8px 12px;
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
}
.opp-bullets{
  margin:0 0 14px 16px; padding:0; font-size:11.5px; color:var(--ink-muted); line-height:1.5;
}
.opp-bullets li{margin-bottom:3px;}
.opp-actions{
  display:flex; gap:8px; margin-top:auto; padding-top:12px; border-top:1px solid var(--border-subtle);
  flex-wrap:wrap;
}

/* CHIPS & FILTERS */
.chip-row{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px;}
.chip{
  font-family:var(--font-mono); font-size:12px; padding:6px 14px; border:1px solid var(--border);
  border-radius:20px; background:var(--surface); cursor:pointer; color:var(--ink-muted);
  transition:all .15s ease;
}
.chip:hover{border-color:var(--brass); color:var(--ink);}
.chip.active{
  background:var(--ink); color:var(--bg); border-color:var(--ink); font-weight:600;
}
[data-theme="dark"] .chip.active{background:var(--brass); color:#12141A; border-color:var(--brass);}

/* ASSET CARDS GRID */
.asset-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:16px;
}
.asset-card{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:18px; cursor:pointer; transition:all .2s ease; box-shadow:var(--shadow-sm);
}
.asset-card:hover{
  border-color:var(--brass); transform:translateY(-2px); box-shadow:var(--shadow-md);
}
.asset-top{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
.asset-ticker{font-family:var(--font-mono); font-size:17px; font-weight:700; color:var(--ink);}
.asset-class{font-size:11px; color:var(--ink-soft); font-family:var(--font-mono); margin-top:2px;}
.asset-nums{
  display:flex; justify-content:space-between; align-items:baseline; margin-top:14px;
  padding-top:12px; border-top:1px solid var(--border-subtle);
}
.asset-result{font-family:var(--font-mono); font-size:18px; font-weight:700;}
.asset-result.pos{color:var(--gain);} .asset-result.neg{color:var(--loss);}
.asset-value{font-family:var(--font-mono); font-size:11.5px; color:var(--ink-muted); text-align:right;}

.asset-detail{
  font-size:13px; color:var(--ink-muted); margin-top:14px; padding-top:14px;
  border-top:1px dashed var(--border); display:none;
}
.asset-card.open .asset-detail{display:block;}
.asset-detail h4{
  font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft);
  margin:12px 0 4px; font-family:var(--font-mono);
}
.asset-detail h4:first-child{margin-top:0;}
.suggest-box{
  margin-top:12px; padding:10px 12px; border-radius:var(--radius-sm); font-size:12.5px; font-weight:500;
}
.suggest-box.aportar{background:var(--gain-bg); color:var(--gain); border-left:3px solid var(--gain);}
.suggest-box.reduzir,.suggest-box.realizar{background:var(--brass-bg); color:var(--brass-strong); border-left:3px solid var(--brass);}
.suggest-box.zerar{background:var(--loss-bg); color:var(--loss); border-left:3px solid var(--loss);}
.suggest-box.manter{background:var(--info-bg); color:var(--info); border-left:3px solid var(--info);}
.tatica-box{
  margin-top:8px; padding:10px 12px; border-radius:var(--radius-sm); font-size:12px;
  background:var(--surface-2); color:var(--ink-muted); font-style:italic;
}

/* TABLES */
.scrollx{overflow-x:auto; -webkit-overflow-scrolling:touch; margin-bottom:16px;}
.data-table{
  width:100%; border-collapse:collapse; font-size:13px; min-width:760px;
}
.data-table th{
  text-align:left; font-family:var(--font-mono); font-size:10px; text-transform:uppercase;
  letter-spacing:.05em; color:var(--ink-soft); padding:10px 10px; border-bottom:1px solid var(--border);
  background:var(--surface-2); position:sticky; top:0;
}
.data-table td{
  padding:12px 10px; border-bottom:1px solid var(--border-subtle); font-family:var(--font-mono);
  font-size:12.5px; color:var(--ink);
}
.data-table td.ticker-cell{
  font-weight:700; font-family:var(--font-mono); font-size:13.5px; color:var(--ink);
}
.data-table td.desc-cell{font-family:var(--font-body); font-size:12px;}
.data-table tr:hover td{background:rgba(0,0,0,0.015);}
.data-table tr.total-row td{
  font-weight:700; border-top:2px solid var(--border); border-bottom:none; background:var(--surface-2);
}
.pos{color:var(--gain); font-weight:600;}
.neg{color:var(--loss); font-weight:600;}

/* TREEMAP */
.treemap{display:flex; flex-wrap:wrap; gap:4px; margin-bottom:18px;}
.tile{
  border-radius:var(--radius-sm); padding:12px 14px; cursor:pointer; min-width:115px; height:105px;
  display:flex; flex-direction:column; justify-content:space-between; color:#FFFFFF;
  transition:all .15s ease; box-shadow:var(--shadow-sm);
}
.tile:hover{transform:translateY(-2px); filter:brightness(1.08); box-shadow:var(--shadow-md);}
.tile .tt{font-family:var(--font-mono); font-weight:700; font-size:14px;}
.tile .tp{font-family:var(--font-mono); font-size:19px; font-weight:700;}
.tile .tv{font-family:var(--font-mono); font-size:11px; opacity:.9;}

/* FORMS & INPUTS */
.field{margin-bottom:16px;}
.field label{
  display:block; font-family:var(--font-mono); font-size:11px; color:var(--ink-soft);
  text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; font-weight:500;
}
select,input[type=number],input[type=text],input[type=date]{
  width:100%; padding:9px 12px; background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius-sm); color:var(--ink); font-family:var(--font-mono); font-size:13.5px;
  transition:border-color .15s ease;
}
select:focus,input:focus{outline:none; border-color:var(--brass); box-shadow:0 0 0 2px var(--brass-bg);}
input[type=range]{width:100%; accent-color:var(--brass);}
.inline-form{display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;}
.inline-form .field{flex:1; min-width:140px; margin-bottom:0;}

/* TOAST NOTIFICATIONS */
#toastContainer{
  position:fixed; bottom:24px; right:24px; z-index:9999; display:flex; flex-direction:column;
  gap:10px; max-width:380px; pointer-events:none;
}
.toast{
  background:var(--surface-card); color:var(--ink); border:1px solid var(--border);
  border-radius:var(--radius-md); padding:14px 18px; box-shadow:var(--shadow-lg);
  font-size:13px; display:flex; align-items:center; gap:12px; pointer-events:auto;
  animation:slideToast .25s ease-out; border-left:4px solid var(--brass);
}
.toast.success{border-left-color:var(--gain);}
.toast.error{border-left-color:var(--loss);}
.toast.info{border-left-color:var(--info);}
@keyframes slideToast{from{transform:translateX(100%);opacity:0;}to{transform:none;opacity:1;}}

/* MODAL DIALOG */
.modal-overlay{
  position:fixed; inset:0; background:rgba(0,0,0,0.5); backdrop-filter:blur(3px);
  z-index:9000; display:none; align-items:center; justify-content:center; padding:20px;
}
.modal-overlay.active{display:flex; animation:modalFade .2s ease-out;}
@keyframes modalFade{from{opacity:0;}to{opacity:1;}}
.modal-box{
  background:var(--surface-card); border:1px solid var(--border); border-radius:var(--radius-lg);
  max-width:540px; width:100%; padding:26px; box-shadow:var(--shadow-lg);
  animation:modalSlide .2s ease-out; max-height:90vh; overflow-y:auto;
}
@keyframes modalSlide{from{transform:scale(0.95);opacity:0;}to{transform:none;opacity:1;}}
.modal-title{font-family:var(--font-display); font-size:22px; font-weight:600; margin-bottom:8px;}
.modal-body{font-size:14px; color:var(--ink-muted); margin-bottom:22px;}
.modal-actions{display:flex; justify-content:flex-end; gap:10px;}

/* FOOTER */
footer{
  border-top:1px solid var(--border); padding:32px 0 50px; background:var(--surface);
  font-size:12px; color:var(--ink-soft); margin-top:auto;
}
footer p{max-width:85ch; margin-bottom:10px;}

/* SPINNER */
.spin{animation:spin 1s linear infinite;}
@keyframes spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
