/* ============================================================
   VERDANT — automated investing
   Design tokens
   ============================================================ */
:root{
  --ink:#12241A;
  --forest:#1F4B36;
  --forest-light:#2E6B4C;
  --teal:#3E7C63;
  --gold:#C69A3D;
  --gold-light:#E4C778;
  --paper:#FAF7EF;
  --paper-dim:#F1ECDD;
  --paper-card:#FFFFFF;
  --text:#1C2620;
  --muted:#5B6357;
  --border:rgba(18,36,26,0.12);
  --border-soft:rgba(18,36,26,0.07);
  --shadow:0 20px 50px -25px rgba(18,36,26,0.35);
  --shadow-sm:0 8px 20px -12px rgba(18,36,26,0.3);
  --radius:14px;
  --radius-sm:9px;
  --font-display:'Fraunces', Georgia, serif;
  --font-body:'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono:'IBM Plex Mono', 'Courier New', monospace;
  --ease:cubic-bezier(.22,1,.36,1);
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;}
}

body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;}

h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:600;
  line-height:1.08;
  margin:0;
  color:var(--ink);
  letter-spacing:-0.01em;
}

.eyebrow{
  font-family:var(--font-mono);
  font-size:0.72rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--teal);
  display:flex;
  align-items:center;
  gap:0.6em;
}
.eyebrow::before{
  content:"";
  width:20px;height:1px;
  background:var(--gold);
  display:inline-block;
}

.container{
  max-width:1180px;
  margin:0 auto;
  padding:0 28px;
}

:focus-visible{
  outline:2px solid var(--forest-light);
  outline-offset:3px;
  border-radius:4px;
}

/* ---------------- Nav ---------------- */
.nav{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(250,247,239,0.86);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border-soft);
}
.nav-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:16px 28px;
  max-width:1180px;
  margin:0 auto;
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
  font-family:var(--font-display);
  font-weight:600;
  font-size:1.25rem;
  color:var(--ink);
}
.brand-mark{
  width:30px;height:30px;
  flex-shrink:0;
}
.nav-links{
  display:flex;
  gap:32px;
  list-style:none;
  margin:0;padding:0;
  font-size:0.93rem;
  color:var(--muted);
}
.nav-links a{transition:color .2s var(--ease);}
.nav-links a:hover{color:var(--ink);}
.nav-actions{display:flex;align-items:center;gap:10px;}
.nav-toggle{
  display:none;
  background:none;border:none;cursor:pointer;
  width:38px;height:38px;
  align-items:center;justify-content:center;
}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{
  content:"";
  display:block;
  width:20px;height:2px;
  background:var(--ink);
  position:relative;
  transition:transform .25s var(--ease), opacity .25s;
}
.nav-toggle span::before{position:absolute;top:-6px;}
.nav-toggle span::after{position:absolute;top:6px;}
.nav-toggle[aria-expanded="true"] span{background:transparent;}
.nav-toggle[aria-expanded="true"] span::before{top:0;transform:rotate(45deg);}
.nav-toggle[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg);}

/* ---------------- Buttons ---------------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:12px 22px;
  border-radius:999px;
  font-size:0.92rem;
  font-weight:600;
  border:1px solid transparent;
  cursor:pointer;
  transition:transform .18s var(--ease), box-shadow .18s var(--ease), background .18s var(--ease), border-color .18s;
  white-space:nowrap;
}
.btn:active{transform:scale(0.97);}
button:disabled,.btn:disabled{
  cursor:not-allowed;
  opacity:.62;
  transform:none!important;
  box-shadow:none;
}
.btn-primary{
  background:var(--forest);
  color:var(--paper);
  box-shadow:var(--shadow-sm);
}
.btn-primary:hover{background:var(--forest-light);box-shadow:var(--shadow);}
.btn-ghost{
  background:transparent;
  color:var(--ink);
  border-color:var(--border);
}
.btn-ghost:hover{border-color:var(--ink);}
.btn-block{width:100%;}
.btn-lg{padding:15px 28px;font-size:1rem;}



/* ---------------- Action feedback / async button states ---------------- */
button.is-action-busy,.btn.is-action-busy,input[type="submit"].is-action-busy{
  pointer-events:none;
  cursor:wait;
  opacity:.82;
}
button.is-action-busy::before,.btn.is-action-busy::before{
  content:"";
  width:14px;height:14px;
  flex:0 0 14px;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:action-spin .65s linear infinite;
}
button.is-action-success,.btn.is-action-success{
  box-shadow:0 0 0 3px rgba(46,107,76,.12),var(--shadow-sm);
}
button.is-action-success::before,.btn.is-action-success::before{
  content:"✓";
  font-weight:800;
  line-height:1;
}
button.is-action-error,.btn.is-action-error{
  box-shadow:0 0 0 3px rgba(179,69,47,.12),var(--shadow-sm);
}
@keyframes action-spin{to{transform:rotate(360deg)}}
.action-toast-container{
  position:fixed;
  top:18px;
  right:18px;
  z-index:99999;
  display:flex;
  flex-direction:column;
  gap:10px;
  width:min(390px,calc(100vw - 28px));
  pointer-events:none;
}
.action-toast{
  display:flex;
  align-items:flex-start;
  gap:10px;
  background:var(--paper-card,#fff);
  color:var(--ink,#14261c);
  border:1px solid rgba(46,107,76,.24);
  box-shadow:0 14px 40px rgba(20,38,28,.16);
  border-radius:14px;
  padding:13px 15px;
  font-size:.9rem;
  line-height:1.45;
  opacity:0;
  transform:translateY(-8px) scale(.98);
  transition:opacity .2s ease,transform .2s ease;
}
.action-toast.show{opacity:1;transform:translateY(0) scale(1)}
.action-toast.error{border-color:rgba(179,69,47,.28)}
.action-toast-icon{
  width:22px;height:22px;
  flex:0 0 22px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#EFF4EE;
  color:var(--forest,#2e6b4c);
  font-weight:800;
  margin-top:1px;
}
.action-toast.error .action-toast-icon{background:#fff0ed;color:#B3452F}
@media(max-width:640px){
  .action-toast-container{top:12px;right:14px;left:14px;width:auto}
  .action-toast{font-size:.88rem;padding:12px 13px}
}
@media(prefers-reduced-motion:reduce){
  button.is-action-busy::before,.btn.is-action-busy::before{animation-duration:1.4s}
  .action-toast{transition:none}
}

/* ---------------- Hero ---------------- */
.hero{
  padding:88px 0 60px;
  overflow:hidden;
}
.hero-inner{
  display:grid;
  grid-template-columns:1.05fr 0.95fr;
  gap:56px;
  align-items:center;
}
.hero h1{
  font-size:clamp(2.4rem,4.6vw,3.85rem);
  margin:18px 0 22px;
}
.hero h1 em{
  font-style:italic;
  color:var(--forest);
}
.hero p.lead{
  font-size:1.12rem;
  color:var(--muted);
  max-width:46ch;
  margin-bottom:32px;
}
.hero-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;}
.hero-note{
  margin-top:18px;
  font-size:0.82rem;
  color:var(--muted);
  font-family:var(--font-mono);
}

/* Signature growth-rings visual */
.rings-wrap{
  position:relative;
  aspect-ratio:1/1;
  display:flex;
  align-items:center;
  justify-content:center;
}
.rings-svg{width:100%;height:100%;max-width:440px;}
.ring-path{
  fill:none;
  stroke-width:1.4;
  stroke-linecap:round;
  stroke-dasharray:1400;
  stroke-dashoffset:1400;
  animation:draw 1.6s var(--ease) forwards;
}
@keyframes draw{to{stroke-dashoffset:0;}}
.ring-center{
  font-family:var(--font-mono);
}
.rings-caption{
  position:absolute;
  bottom:8%;
  left:50%;
  transform:translateX(-50%);
  font-family:var(--font-mono);
  font-size:0.72rem;
  color:var(--muted);
  text-align:center;
  letter-spacing:0.06em;
  background:var(--paper);
  padding:4px 12px;
  border-radius:999px;
  border:1px solid var(--border-soft);
  white-space:nowrap;
}

/* ---------------- Stat bar ---------------- */
.statbar{
  background:var(--ink);
  color:var(--paper-dim);
  padding:34px 0;
}
.statbar-inner{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:20px;
}
.stat{border-left:1px solid rgba(250,247,239,0.16);padding-left:20px;}
.stat:first-child{border-left:none;padding-left:0;}
.stat-num{
  font-family:var(--font-mono);
  font-size:1.7rem;
  color:var(--gold-light);
}
.stat-label{font-size:0.8rem;color:rgba(250,247,239,0.65);margin-top:4px;}

/* ---------------- Sections ---------------- */
section{padding:88px 0;}
.section-head{
  max-width:640px;
  margin:0 0 48px;
}
.section-head h2{
  font-size:clamp(1.9rem,3vw,2.6rem);
  margin-top:14px;
}
.section-head p{color:var(--muted);font-size:1.05rem;margin-top:14px;}

.grid-3{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
}
.card{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  padding:30px;
  transition:box-shadow .25s var(--ease), transform .25s var(--ease), border-color .25s;
}
.card:hover{box-shadow:var(--shadow);transform:translateY(-3px);border-color:var(--border);}
.card-icon{
  width:44px;height:44px;
  border-radius:10px;
  background:var(--paper-dim);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:20px;
  color:var(--forest);
}
.card h3{font-size:1.2rem;margin-bottom:10px;}
.card p{color:var(--muted);font-size:0.95rem;}

/* How it works — annotated ring ticks (order matters: sequence of onboarding) */
.steps{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:0;
  border-top:1px solid var(--border-soft);
  margin-top:8px;
}
.step{
  padding:32px 28px 32px 0;
  border-right:1px solid var(--border-soft);
}
.step:last-child{border-right:none;}
.step-tick{
  font-family:var(--font-mono);
  font-size:0.78rem;
  color:var(--gold);
  margin-bottom:14px;
}
.step h4{font-size:1.1rem;margin-bottom:8px;}
.step p{color:var(--muted);font-size:0.93rem;}

/* ---------------- CTA band ---------------- */
.cta-band{
  background:var(--forest);
  color:var(--paper);
  border-radius:24px;
  padding:64px 56px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  flex-wrap:wrap;
}
.cta-band h2{color:var(--paper);font-size:clamp(1.7rem,3vw,2.2rem);}
.cta-band p{color:rgba(250,247,239,0.75);margin-top:10px;max-width:40ch;}

/* ---------------- Footer ---------------- */
footer{
  border-top:1px solid var(--border-soft);
  padding:56px 0 34px;
  color:var(--muted);
  font-size:0.88rem;
}
.footer-grid{
  display:grid;
  grid-template-columns:1.4fr repeat(2,1fr);
  gap:32px;
  margin-bottom:40px;
}
.footer-grid h5{
  font-family:var(--font-body);
  font-size:0.78rem;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color:var(--ink);
  margin-bottom:14px;
}
.footer-grid ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.footer-grid a:hover{color:var(--ink);}
.footer-bottom{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-top:24px;
  border-top:1px solid var(--border-soft);
  flex-wrap:wrap;
  gap:12px;
}

/* ============================================================
   Auth pages (login / register)
   ============================================================ */
.auth-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:1fr 1fr;
}
.auth-side{
  background:var(--ink);
  color:var(--paper);
  padding:56px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  position:relative;
  overflow:hidden;
}
.auth-side .brand{color:var(--paper);}
.auth-quote{
  font-family:var(--font-display);
  font-size:1.7rem;
  line-height:1.35;
  max-width:26ch;
  position:relative;
  z-index:2;
}
.auth-quote span{color:var(--gold-light);font-style:italic;}
.auth-side-rings{
  position:absolute;
  right:-120px;
  bottom:-120px;
  width:440px;
  height:440px;
  opacity:0.5;
}
.auth-attrib{
  font-family:var(--font-mono);
  font-size:0.78rem;
  color:rgba(250,247,239,0.55);
  position:relative;z-index:2;
}

.auth-main{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:40px 28px;
}
.auth-card{
  width:100%;
  max-width:400px;
}
.auth-card .eyebrow{margin-bottom:14px;}
.auth-card h1{font-size:2rem;margin-bottom:8px;}
.auth-card .sub{color:var(--muted);margin-bottom:32px;font-size:0.96rem;}

.field{margin-bottom:18px;}
.field label{
  display:block;
  font-size:0.85rem;
  font-weight:600;
  margin-bottom:7px;
  color:var(--ink);
}
.field-hint{font-size:0.78rem;color:var(--muted);margin-top:6px;}
.field-error{font-size:0.78rem;color:#B3452F;margin-top:6px;display:none;}
.field.invalid .field-error{display:block;}
.field.invalid input{border-color:#B3452F;}

.input-wrap{position:relative;}
input[type="text"],input[type="email"],input[type="password"],input[type="tel"],textarea{
  width:100%;
  padding:13px 14px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--paper-card);
  font-size:0.96rem;
  color:var(--text);
  font-family:inherit;
  resize:vertical;
  transition:border-color .18s, box-shadow .18s;
}
input:focus,textarea:focus{
  border-color:var(--forest-light);
  box-shadow:0 0 0 3px rgba(46,107,76,0.14);
  outline:none;
}
input:disabled,input[readonly],textarea:disabled,textarea[readonly]{
  background:var(--paper-dim);color:var(--muted);cursor:not-allowed;
}
.input-wrap input{padding-right:44px;}
.pw-toggle{
  position:absolute;
  right:6px;top:50%;
  transform:translateY(-50%);
  background:none;border:none;
  cursor:pointer;
  color:var(--muted);
  font-size:0.78rem;
  font-family:var(--font-mono);
  padding:6px 8px;
}
.pw-toggle:hover{color:var(--ink);}

.strength-meter{
  display:flex;gap:4px;margin-top:8px;height:4px;
}
.strength-meter i{
  flex:1;border-radius:2px;background:var(--border);
  transition:background .2s;
}
.strength-label{font-size:0.76rem;color:var(--muted);margin-top:6px;font-family:var(--font-mono);}

.row-between{
  display:flex;align-items:center;justify-content:space-between;
  font-size:0.85rem;margin-bottom:24px;
}
.checkbox-row{display:flex;align-items:flex-start;gap:9px;font-size:0.85rem;color:var(--muted);}
.checkbox-row input{margin-top:3px;}
.checkbox-row a{color:var(--ink);text-decoration:underline;}

.divider{
  display:flex;align-items:center;gap:14px;
  margin:26px 0;
  color:var(--muted);
  font-size:0.78rem;
  font-family:var(--font-mono);
  text-transform:uppercase;
  letter-spacing:0.06em;
}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--border);}

.btn-social{
  border:1px solid var(--border);
  background:var(--paper-card);
  color:var(--ink);
}
.btn-social:hover{border-color:var(--ink);}

.auth-switch{
  text-align:center;
  margin-top:26px;
  font-size:0.9rem;
  color:var(--muted);
}
.auth-switch a{color:var(--forest);font-weight:600;}

.form-banner{
  display:none;
  align-items:center;
  gap:10px;
  background:#EFF4EE;
  border:1px solid rgba(46,107,76,0.25);
  color:var(--forest);
  padding:12px 14px;
  border-radius:var(--radius-sm);
  font-size:0.86rem;
  margin-bottom:20px;
}
.form-banner.show{display:flex;}

/* ---------------- OTP verification ---------------- */
.otp-inputs{
  display:flex;
  gap:10px;
}
.otp-input{
  width:100%;
  max-width:52px;
  aspect-ratio:1/1;
  text-align:center;
  padding:0;
  font-family:var(--font-mono);
  font-size:1.35rem;
  font-weight:500;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--paper-card);
  color:var(--ink);
  transition:border-color .18s, box-shadow .18s;
}
.otp-input:focus{
  border-color:var(--forest-light);
  box-shadow:0 0 0 3px rgba(46,107,76,0.14);
  outline:none;
}
.otp-input.filled{border-color:var(--forest);}
.field.invalid .otp-input{border-color:#B3452F;}
.otp-resend{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:0.85rem;
  color:var(--muted);
  margin-top:6px;
}
#otp-countdown{font-family:var(--font-mono);color:var(--ink);}
.link-btn{
  background:none;border:none;padding:0;cursor:pointer;
  color:var(--forest);font-weight:600;font-size:0.85rem;
  font-family:inherit;
}
.link-btn:hover{color:var(--forest-light);}

/* ============================================================
   Dashboard — responsive: top bar + bottom tabs on mobile,
   top bar + wider canvas on desktop. Pattern: net worth hero,
   stacked account cards, goal rings, activity feed.
   ============================================================ */
.dash-shell{
  min-height:100vh;
  background:var(--paper-dim);
  padding-bottom:76px; /* room for mobile tab bar */
}

.dash-topbar{
  background:var(--paper-card);
  border-bottom:1px solid var(--border-soft);
  position:sticky;top:0;z-index:40;
}
.dash-topbar-inner{
  max-width:960px;margin:0 auto;
  padding:14px 24px;
  display:flex;align-items:center;justify-content:space-between;
  gap:20px;
}
.dash-tabs{
  display:flex;gap:4px;
  list-style:none;margin:0;padding:0;
}
.dash-tab{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:8px 16px;
  border-radius:10px;
  font-size:0.78rem;
  color:var(--muted);
  transition:background .18s, color .18s;
}
.dash-tab svg{width:20px;height:20px;}
.dash-tab:hover{color:var(--ink);background:var(--paper-dim);}
.dash-tab.active{color:var(--forest);}
.dash-tab.active svg{stroke:var(--forest);}

.dash-topbar .avatar{width:34px;height:34px;}

.dash-main{max-width:960px;margin:0 auto;padding:32px 24px 40px;}

.dash-header{margin-bottom:24px;}
.dash-header h1{font-size:1.5rem;}
.dash-header p{color:var(--muted);margin-top:4px;font-size:0.94rem;}

/* Net worth hero */
.networth-card{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  padding:30px;
  margin-bottom:24px;
}
.networth-card .eyebrow{margin-bottom:10px;}
.networth-num{
  font-family:var(--font-mono);
  font-size:2.5rem;
  color:var(--ink);
}
.networth-change{
  font-family:var(--font-mono);
  font-size:0.86rem;
  color:var(--forest);
  margin-top:6px;
}
.networth-change.neg{color:#8a6d1d;}
.networth-spark{margin-top:18px;width:100%;height:56px;}

/* Section label */
.dash-section-label{
  display:flex;align-items:center;justify-content:space-between;
  margin:32px 0 14px;
}
.dash-section-label h2{
  font-family:var(--font-body);
  font-size:0.82rem;
  text-transform:uppercase;
  letter-spacing:0.07em;
  color:var(--muted);
  font-weight:600;
}
.dash-section-label a{font-size:0.85rem;color:var(--forest);font-weight:600;}

/* Account list — stacked cards, Betterment-style */
.account-list{
  display:flex;flex-direction:column;
  gap:10px;
}
.account-card{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);
  padding:16px 18px;
  display:flex;align-items:center;gap:14px;
  transition:box-shadow .2s var(--ease), border-color .2s;
}
.account-card:hover{box-shadow:var(--shadow-sm);border-color:var(--border);}
.account-icon{
  width:40px;height:40px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  color:var(--paper);
}
.account-icon svg{width:20px;height:20px;}
.account-info{flex:1;min-width:0;}
.account-info strong{display:block;font-size:0.96rem;font-weight:600;color:var(--ink);}
.account-info span{display:block;font-size:0.8rem;color:var(--muted);margin-top:2px;}
.account-spark{width:70px;height:28px;flex-shrink:0;display:none;}
.account-amounts{text-align:right;flex-shrink:0;}
.account-amounts .amt{font-family:var(--font-mono);font-size:0.98rem;color:var(--ink);}
.account-amounts .pct{font-family:var(--font-mono);font-size:0.78rem;margin-top:2px;}
.pct.pos{color:var(--forest);}
.pct.neg{color:#8a6d1d;}

/* Goals — horizontal cards with progress ring */
.goal-scroller{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.goal-card{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);
  padding:18px;
  display:flex;flex-direction:column;align-items:center;
  text-align:center;
  gap:10px;
}
.goal-ring{position:relative;width:76px;height:76px;}
.goal-ring svg{transform:rotate(-90deg);}
.goal-ring-track{fill:none;stroke:var(--paper-dim);stroke-width:5;}
.goal-ring-fill{fill:none;stroke:var(--forest);stroke-width:5;stroke-linecap:round;}
.goal-ring-pct{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:0.78rem;color:var(--ink);
}
.goal-card strong{font-size:0.88rem;font-weight:600;}
.goal-card span{font-size:0.78rem;color:var(--muted);font-family:var(--font-mono);}

/* Activity */
.panel{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  padding:22px 24px;
}
.activity-list{list-style:none;margin:0;padding:0;}
.activity-list li{
  display:flex;justify-content:space-between;align-items:center;
  padding:13px 0;border-bottom:1px solid var(--border-soft);
  font-size:0.9rem;
}
.activity-list li:last-child{border-bottom:none;}
.activity-list .a-label{display:flex;flex-direction:column;}
.activity-list .a-date{color:var(--muted);font-size:0.78rem;margin-top:2px;}
.activity-list .a-amt{font-family:var(--font-mono);}
.a-amt.pos{color:var(--forest);}
.a-amt.neg{color:#8a6d1d;}

/* Bottom tab bar — mobile only */
.mobile-tabbar{
  display:none;
  position:fixed;bottom:0;left:0;right:0;
  background:var(--paper-card);
  border-top:1px solid var(--border-soft);
  padding:8px 6px calc(8px + env(safe-area-inset-bottom));
  z-index:50;
}
.mobile-tabbar-inner{
  display:flex;justify-content:space-around;
}
.mtab{
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 10px;
  font-size:0.66rem;
  color:var(--muted);
  border-radius:8px;
}
.mtab svg{width:20px;height:20px;}
.mtab.active{color:var(--forest);}
.mtab.active svg{stroke:var(--forest);}

/* ============================================================
   Dashboard sub-pages — Invest, Transfer, Advice, Settings
   ============================================================ */

/* Forms (transfer / settings) */
.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
select{
  width:100%;
  padding:13px 14px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--paper-card);
  font-size:0.96rem;
  color:var(--text);
  font-family:inherit;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235B6357' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
}
select:focus{border-color:var(--forest-light);box-shadow:0 0 0 3px rgba(46,107,76,0.14);outline:none;}

.confirm-banner{
  display:none;align-items:center;gap:10px;
  background:#EFF4EE;border:1px solid rgba(46,107,76,0.25);color:var(--forest);
  padding:12px 14px;border-radius:var(--radius-sm);font-size:0.88rem;margin-bottom:20px;
}
.confirm-banner.show{display:flex;}

/* Invest page */
.holdings-table{width:100%;border-collapse:collapse;font-size:0.88rem;}
.holdings-table th{
  text-align:left;color:var(--muted);font-weight:600;
  font-size:0.72rem;text-transform:uppercase;letter-spacing:0.06em;
  padding-bottom:10px;border-bottom:1px solid var(--border-soft);
}
.holdings-table td{padding:13px 8px 13px 0;border-bottom:1px solid var(--border-soft);}
.holdings-table tr:last-child td{border-bottom:none;}
.ticker-badge{
  font-family:var(--font-mono);font-size:0.72rem;
  background:var(--paper-dim);padding:2px 7px;border-radius:5px;margin-right:8px;
}
/* Reusable donut + legend row (dashboard allocation, invest page) */
.donut-row{display:flex;align-items:center;gap:26px;flex-wrap:wrap;}
.legend{flex:1;min-width:180px;list-style:none;margin:0;padding:0;}
.legend li{
  display:flex;justify-content:space-between;align-items:center;
  padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:0.88rem;
}
.legend li:last-child{border-bottom:none;}
.legend li span:first-child{display:flex;align-items:center;color:var(--text);}
.legend li span:last-child{font-family:var(--font-mono);color:var(--muted);}
.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:8px;flex-shrink:0;}

/* Performance stat row */
.perf-row{display:grid;grid-template-columns:repeat(3,1fr);gap:0;}
.perf-stat{padding:4px 18px;text-align:center;border-left:1px solid var(--border-soft);}
.perf-stat:first-child{border-left:none;padding-left:0;}
.perf-stat:last-child{padding-right:0;}
.perf-stat .perf-label{
  font-size:0.72rem;text-transform:uppercase;letter-spacing:0.06em;
  color:var(--muted);font-weight:600;margin-bottom:8px;
}
.perf-stat .perf-num{font-family:var(--font-mono);font-size:1.3rem;color:var(--forest);}
.perf-stat .perf-num.neg{color:#8a6d1d;}
@media (max-width:520px){
  .perf-row{grid-template-columns:1fr;gap:16px;}
  .perf-stat{border-left:none;border-top:1px solid var(--border-soft);padding:16px 0 0;}
  .perf-stat:first-child{border-top:none;padding-top:0;}
}

/* Recent activity — transaction table (dashboard) */
.activity-table td:last-child, .activity-table th:last-child{text-align:right;}
.activity-table td:last-child{font-family:var(--font-mono);}
.activity-table td.pos{color:var(--forest);}
.activity-table td.neg{color:#8a6d1d;}
.activity-table .a-desc-sub{display:block;color:var(--muted);font-size:0.78rem;margin-top:2px;}
.activity-badge{
  display:inline-block;padding:3px 10px;border-radius:20px;
  font-size:0.72rem;font-weight:600;white-space:nowrap;
}
.activity-badge.buy{background:#EFF4EE;color:var(--forest);}
.activity-badge.sell{background:#FBF3DE;color:#8a6d1d;}
.activity-badge.deposit{background:#EFF4EE;color:var(--forest);}
.activity-badge.transfer{background:var(--paper-dim);color:var(--muted);}
.activity-badge.dividend{background:#EFF4EE;color:var(--forest);}

.risk-slider-wrap{margin-top:6px;}
input[type="range"]{width:100%;accent-color:var(--forest);margin:10px 0 6px;}
.risk-labels{display:flex;justify-content:space-between;font-size:0.76rem;color:var(--muted);font-family:var(--font-mono);}
.risk-readout{
  margin-top:14px;padding:14px;background:var(--paper-dim);border-radius:var(--radius-sm);
  font-size:0.88rem;color:var(--text);
}

/* Advice page */
.advisor-card{
  display:flex;gap:20px;align-items:center;
  background:var(--forest);color:var(--paper);
  border-radius:var(--radius);padding:26px;flex-wrap:wrap;
}
.advisor-card .av-avatar{
  width:56px;height:56px;border-radius:50%;background:var(--gold);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;flex-shrink:0;font-size:1.1rem;
}
.advisor-card .av-info{flex:1;min-width:180px;}
.advisor-card .av-info p{color:rgba(250,247,239,0.75);margin-top:4px;font-size:0.9rem;}

.article-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.article-card{
  padding:20px;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--paper-card);
}
.article-card h3{font-size:1rem;margin-bottom:8px;}
.article-card p{font-size:0.87rem;color:var(--muted);}

.readiness-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.readiness-card{
  background:var(--paper-card);border:1px solid var(--border-soft);border-radius:var(--radius-sm);
  padding:18px;text-align:center;
}
.readiness-num{font-family:var(--font-mono);font-size:1.6rem;color:var(--forest);}
.readiness-card span{font-size:0.8rem;color:var(--muted);display:block;margin-top:4px;}

/* Settings page */
.settings-section{margin-bottom:34px;}
.settings-section > h2{
  font-family:var(--font-body);font-size:0.82rem;text-transform:uppercase;
  letter-spacing:0.07em;color:var(--muted);font-weight:600;margin-bottom:14px;
}

/* Verification & identity status cards */
.verify-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.verify-card{
  border:1px solid var(--border-soft);border-radius:var(--radius-sm);
  padding:16px;display:flex;flex-direction:column;gap:8px;
}
.verify-card-top{display:flex;justify-content:space-between;align-items:center;}
.verify-card .v-icon{
  width:34px;height:34px;border-radius:9px;background:var(--paper-dim);
  display:flex;align-items:center;justify-content:center;color:var(--forest);flex-shrink:0;
}
.verify-card strong{font-size:0.9rem;}
.verify-card .detail{font-size:0.78rem;color:var(--muted);font-family:var(--font-mono);}

.switch-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:14px 0;border-bottom:1px solid var(--border-soft);
}
.switch-row:last-child{border-bottom:none;}
.switch-row strong{display:block;font-size:0.92rem;font-weight:600;}
.switch-row span{font-size:0.8rem;color:var(--muted);}
.switch{position:relative;width:42px;height:24px;flex-shrink:0;display:inline-block;}
.switch input{opacity:0;width:0;height:0;position:absolute;}
.switch .slider{
  position:absolute;inset:0;background:var(--border);border-radius:999px;
  transition:.2s;cursor:pointer;
}
.switch .slider::before{
  content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;
  background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,0.2);
}
.switch input:checked + .slider{background:var(--forest);}
.switch input:checked + .slider::before{transform:translateX(18px);}
.switch input:focus-visible + .slider{outline:2px solid var(--forest-light);outline-offset:2px;}

.bank-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--border-soft);}
.bank-row:last-child{border-bottom:none;}
.bank-row .b-info{display:flex;align-items:center;gap:12px;}
.bank-row .b-icon{
  width:36px;height:36px;border-radius:8px;background:var(--paper-dim);
  display:flex;align-items:center;justify-content:center;color:var(--forest);flex-shrink:0;
}
.bank-row .b-text strong{display:block;font-size:0.9rem;}
.bank-row .b-text span{font-size:0.78rem;color:var(--muted);font-family:var(--font-mono);}
.link-danger{color:#B3452F;font-size:0.85rem;font-weight:600;}

.logout-btn{
  border:1px solid rgba(179,69,47,0.3);color:#B3452F;background:transparent;
}
.logout-btn:hover{background:rgba(179,69,47,0.06);border-color:#B3452F;}

/* ---------------- Press / "as featured in" bar ---------------- */
.press-bar{
  padding:28px 0 22px;
  border-bottom:1px solid var(--border-soft);
}
.press-bar-inner{
  display:flex;
  align-items:center;
  gap:36px;
  flex-wrap:wrap;
}
.press-label{
  font-family:var(--font-mono);
  font-size:0.72rem;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color:var(--muted);
  flex-shrink:0;
}
.press-list{
  display:flex;
  gap:36px;
  flex-wrap:wrap;
  list-style:none;
  margin:0;padding:0;
  flex:1;
}
.press-list li{
  font-family:var(--font-display);
  font-weight:600;
  font-size:1.05rem;
  color:var(--muted);
  opacity:0.72;
  white-space:nowrap;
}
.press-note{
  margin:10px auto 0;
  font-family:var(--font-mono);
  font-size:0.72rem;
  color:var(--muted);
  opacity:0.7;
}

/* ---------------- 4-up grid (security cards) ---------------- */
.grid-4{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:20px;
}
.security-grid .card-icon{color:var(--forest);}
.security-disclaimer{
  margin-top:28px;
  font-family:var(--font-mono);
  font-size:0.78rem;
  color:var(--muted);
  text-align:center;
}

/* ---------------- Comparison table ---------------- */
.compare-wrap{
  overflow-x:auto;
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  background:var(--paper-card);
}
.compare-table{
  width:100%;
  min-width:560px;
  border-collapse:collapse;
  font-size:0.92rem;
}
.compare-table th,.compare-table td{
  padding:16px 20px;
  text-align:left;
  border-bottom:1px solid var(--border-soft);
}
.compare-table thead th{
  font-family:var(--font-mono);
  font-size:0.72rem;
  text-transform:uppercase;
  letter-spacing:0.06em;
  color:var(--muted);
  font-weight:600;
}
.compare-table tbody tr:last-child td{border-bottom:none;}
.compare-table td:first-child{color:var(--ink);font-weight:600;}
.compare-highlight{
  background:rgba(46,107,76,0.07);
  color:var(--forest);
  font-weight:600;
}
.compare-table th.compare-highlight{
  background:var(--forest);
  color:var(--paper);
}
.compare-note{
  margin-top:16px;
  font-family:var(--font-mono);
  font-size:0.78rem;
  color:var(--muted);
}

/* ---------------- Testimonials ---------------- */
.testimonial-card{
  background:var(--paper-card);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  padding:28px;
  display:flex;
  flex-direction:column;
  gap:16px;
}
.stars{color:var(--gold);letter-spacing:2px;font-size:0.9rem;}
.testimonial-card .quote{
  color:var(--text);
  font-size:0.98rem;
  line-height:1.55;
  flex:1;
}
.testimonial-author{display:flex;align-items:center;gap:12px;}
.t-avatar{
  width:38px;height:38px;border-radius:50%;
  background:var(--paper-dim);color:var(--forest);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;font-size:0.8rem;
  flex-shrink:0;
}
.t-info{display:flex;flex-direction:column;font-size:0.85rem;}
.t-info strong{color:var(--ink);font-weight:600;}
.t-info span{color:var(--muted);font-size:0.78rem;margin-top:1px;}

/* ---------------- FAQ ---------------- */
.faq-list{
  display:flex;flex-direction:column;
  gap:1px;
  background:var(--border-soft);
  border:1px solid var(--border-soft);
  border-radius:var(--radius);
  overflow:hidden;
}
.faq-item{
  background:var(--paper-card);
  padding:0 24px;
}
.faq-item summary{
  padding:20px 0;
  cursor:pointer;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  font-weight:600;
  color:var(--ink);
  font-size:0.98rem;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-icon{
  font-family:var(--font-mono);
  color:var(--forest);
  flex-shrink:0;
  transition:transform .2s var(--ease);
  font-size:1.1rem;
}
.faq-item[open] .faq-icon{transform:rotate(45deg);}
.faq-item p{
  color:var(--muted);
  font-size:0.92rem;
  padding-bottom:20px;
  margin:0;
  max-width:70ch;
}

/* ---------------- Responsive ---------------- */
@media (max-width:960px){
  .nav-inner{position:relative;}
  .nav-links{display:none;}
  .nav-links.open{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    position:absolute;
    top:100%;
    left:0;
    right:0;
    gap:2px;
    margin:0;
    padding:10px 28px 20px;
    background:var(--paper);
    border-bottom:1px solid var(--border-soft);
    box-shadow:var(--shadow-sm);
  }
  .nav-links.open li{width:100%;}
  .nav-links.open a{
    display:block;
    padding:12px 0;
    font-size:1rem;
    border-bottom:1px solid var(--border-soft);
  }
  .nav-links.open li:last-child a{border-bottom:none;}
  .nav-toggle{display:flex;}
  .hero-inner{grid-template-columns:1fr;}
  .rings-wrap{max-width:320px;margin:0 auto;order:-1;}
  .statbar-inner{grid-template-columns:repeat(2,1fr);gap:24px;}
  .stat:nth-child(3){border-left:none;padding-left:0;}
  .grid-3,.steps{grid-template-columns:1fr;}
  .grid-4{grid-template-columns:1fr 1fr;}
  .step{border-right:none;border-bottom:1px solid var(--border-soft);padding:26px 0;}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .press-bar-inner{gap:16px 28px;}
  .press-list{gap:22px;}
  .auth-shell{grid-template-columns:1fr;}
  .auth-side{display:none;}

  /* Dashboard -> mobile-app pattern */
  .dash-tabs{display:none;}
  .mobile-tabbar{display:block;}
  .dash-main{padding:24px 18px 20px;}
  .networth-num{font-size:2.1rem;}
  .goal-scroller{
    display:flex;overflow-x:auto;
    scroll-snap-type:x mandatory;
    gap:12px;margin:0 -18px;padding:0 18px 4px;
  }
  .goal-card{min-width:130px;scroll-snap-align:start;}
  .form-grid-2,.article-grid,.readiness-grid,.verify-grid{grid-template-columns:1fr;}
  .holdings-table{font-size:0.82rem;}
  .holdings-table th:nth-child(3),.holdings-table td:nth-child(3){display:none;}
}
@media (min-width:640px){
  .account-spark{display:block;}
}
@media (max-width:600px){
  .cta-band{padding:40px 28px;flex-direction:column;align-items:flex-start;}
  .footer-grid{grid-template-columns:1fr;}
  .grid-4{grid-template-columns:1fr;}
}

/* ============================================================
   Admin console — sidebar shell, tables, modal, settings form
   ============================================================ */
.admin-shell{
  display:grid;
  grid-template-columns:240px 1fr;
  min-height:100vh;
  background:var(--paper-dim);
}
.admin-sidebar{
  background:var(--ink);
  color:var(--paper-dim);
  padding:24px 18px;
  display:flex;flex-direction:column;gap:4px;
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.admin-sidebar .brand{color:var(--paper);margin-bottom:6px;}
.admin-badge{
  font-family:var(--font-mono);font-size:0.66rem;letter-spacing:0.09em;text-transform:uppercase;
  color:rgba(250,247,239,0.5);padding:0 12px;margin-bottom:20px;
}
.admin-link{
  display:flex;align-items:center;gap:12px;
  padding:11px 12px;border-radius:9px;font-size:0.9rem;
  color:rgba(250,247,239,0.7);
  transition:background .18s, color .18s;
}
.admin-link svg{width:18px;height:18px;flex-shrink:0;}
.admin-link:hover{background:rgba(250,247,239,0.06);color:var(--paper);}
.admin-link.active{background:var(--forest);color:var(--paper);}
.admin-sidebar .spacer{flex:1;}
.admin-sidebar-foot{
  border-top:1px solid rgba(250,247,239,0.1);
  padding-top:14px;display:flex;flex-direction:column;gap:2px;
}

.admin-topbar-mobile{
  display:none;align-items:center;justify-content:space-between;
  padding:14px 18px;background:var(--paper-card);border-bottom:1px solid var(--border-soft);
  position:sticky;top:0;z-index:60;
}
.admin-menu-btn{
  background:none;border:1px solid var(--border);border-radius:8px;
  padding:8px 10px;cursor:pointer;display:flex;
}
.admin-overlay-bg{display:none;position:fixed;inset:0;background:rgba(18,36,26,0.4);z-index:80;}
.admin-overlay-bg.show{display:block;}

.admin-main{padding:32px 36px 60px;max-width:1180px;}
.admin-header{
  display:flex;justify-content:space-between;align-items:flex-start;
  margin-bottom:26px;flex-wrap:wrap;gap:14px;
}
.admin-header h1{font-size:1.5rem;}
.admin-header p{color:var(--muted);margin-top:4px;font-size:0.9rem;}

.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px;}
.admin-stat{
  background:var(--paper-card);border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);padding:18px;
}
.admin-stat .eyebrow{margin-bottom:8px;}
.admin-stat-num{font-family:var(--font-mono);font-size:1.5rem;color:var(--ink);}

.admin-toolbar{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  margin-bottom:16px;flex-wrap:wrap;
}
.admin-search{position:relative;flex:1;min-width:220px;max-width:340px;}
.admin-search input{width:100%;}

.admin-table-wrap{
  background:var(--paper-card);border:1px solid var(--border-soft);
  border-radius:var(--radius);overflow-x:auto;
}
.admin-table{width:100%;border-collapse:collapse;font-size:0.88rem;min-width:640px;}
.admin-table th{
  text-align:left;font-size:0.72rem;text-transform:uppercase;letter-spacing:0.06em;
  color:var(--muted);font-weight:600;padding:14px 16px;
  border-bottom:1px solid var(--border-soft);background:var(--paper-dim);white-space:nowrap;
}
.admin-table td{padding:13px 16px;border-bottom:1px solid var(--border-soft);vertical-align:middle;}
.admin-table tr:last-child td{border-bottom:none;}
.admin-table tbody tr:hover td{background:var(--paper-dim);}

.user-cell{display:flex;align-items:center;gap:10px;}
.user-cell .avatar{width:30px;height:30px;font-size:0.7rem;}
.user-cell .u-text strong{display:block;font-size:0.88rem;}
.user-cell .u-text span{font-size:0.76rem;color:var(--muted);}

.status-pill{
  font-family:var(--font-mono);font-size:0.7rem;
  padding:3px 9px;border-radius:999px;display:inline-block;white-space:nowrap;
}
.status-pill.active{background:#EFF4EE;color:var(--forest);}
.status-pill.pending{background:#FBF3DE;color:#8a6d1d;}
.status-pill.suspended{background:#FBEAE6;color:#B3452F;}

.row-actions{display:flex;gap:14px;white-space:nowrap;}
.row-actions button{
  background:none;border:none;padding:0;font-size:0.82rem;font-weight:600;
  color:var(--forest);cursor:pointer;font-family:inherit;
}
.row-actions button.danger{color:#B3452F;}
.empty-row td{text-align:center;color:var(--muted);padding:34px 16px;}

/* Modal */
.modal-overlay{
  display:none;position:fixed;inset:0;background:rgba(18,36,26,0.45);
  z-index:100;align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.show{display:flex;}
.modal-card{
  background:var(--paper-card);border-radius:var(--radius);padding:28px;
  max-width:440px;width:100%;max-height:90vh;overflow-y:auto;
}
.modal-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:4px;}
.modal-top h2{font-size:1.25rem;}
.modal-close{
  background:none;border:none;font-size:1.5rem;line-height:1;
  cursor:pointer;color:var(--muted);flex-shrink:0;
}
.modal-close:hover{color:var(--ink);}
.modal-card .sub{color:var(--muted);font-size:0.86rem;margin-bottom:22px;}

/* Settings: color swatches + logo upload */
.color-swatches{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;}
.color-swatch{
  width:32px;height:32px;border-radius:50%;cursor:pointer;
  border:2px solid transparent;display:flex;align-items:center;justify-content:center;
  transition:transform .15s var(--ease), border-color .15s;
}
.color-swatch:hover{transform:scale(1.08);}
.color-swatch.active{border-color:var(--ink);}
.color-swatch svg{width:14px;height:14px;color:#fff;display:none;}
.color-swatch.active svg{display:block;}

.logo-upload{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.logo-preview{
  width:64px;height:64px;border-radius:12px;background:var(--paper-dim);
  display:flex;align-items:center;justify-content:center;overflow:hidden;
  border:1px solid var(--border-soft);flex-shrink:0;color:var(--muted);
}
.logo-preview img{width:100%;height:100%;object-fit:cover;}
input[type="file"]{display:none;}

@media (max-width:900px){
  .admin-shell{grid-template-columns:1fr;}
  .admin-sidebar{
    position:fixed;left:0;top:0;bottom:0;width:240px;
    transform:translateX(-100%);transition:transform .25s var(--ease);z-index:90;
  }
  .admin-sidebar.open{transform:translateX(0);}
  .admin-topbar-mobile{display:flex;}
  .admin-stats{grid-template-columns:repeat(2,1fr);}
  .admin-main{padding:20px 18px 50px;}
}

/* ============================================================
   Account summary, joint accounts, deposit/withdraw
   ============================================================ */

/* Account summary panel (dashboard) */
.acct-summary-row{
  display:flex;align-items:center;gap:14px;
  padding:14px 0;border-bottom:1px solid var(--border-soft);
}
.acct-summary-row:last-child{border-bottom:none;}
.acct-summary-icon{
  width:38px;height:38px;border-radius:10px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.acct-summary-icon svg{width:18px;height:18px;}
.acct-summary-main{flex:1;min-width:0;}
.acct-summary-main strong{display:block;font-size:0.94rem;}
.acct-summary-sub{
  display:flex;align-items:center;gap:8px;margin-top:2px;flex-wrap:wrap;
  font-family:var(--font-mono);font-size:0.76rem;color:var(--muted);
}
.acct-summary-amt{font-family:var(--font-mono);font-weight:600;text-align:right;white-space:nowrap;}

.joint-pill{
  display:inline-flex;align-items:center;gap:4px;
  background:#FBF3DE;color:#8a6d1d;border-radius:20px;
  padding:2px 9px;font-size:0.68rem;font-weight:600;letter-spacing:.2px;text-transform:uppercase;
  font-family:Helvetica,Arial,sans-serif;
}
.owner-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
.owner-chip{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--paper-dim);border-radius:20px;padding:4px 10px 4px 4px;
  font-size:0.78rem;color:var(--text);
}
.owner-avatar{
  width:20px;height:20px;border-radius:50%;background:var(--forest);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:0.62rem;font-weight:700;
  font-family:Helvetica,Arial,sans-serif;flex-shrink:0;
}

/* Segmented method tabs (deposit/withdraw pages) */
.method-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;}
.method-tab{
  flex:1;min-width:110px;text-align:center;cursor:pointer;
  padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);
  background:var(--paper-card);font-size:0.88rem;font-weight:600;color:var(--muted);
  transition:border-color .15s, color .15s, background .15s;
}
.method-tab.active{border-color:var(--forest-light);color:var(--forest);background:#EFF4EE;}
.method-panel{display:none;}
.method-panel.active{display:block;}

/* Bank instruction card */
.bank-instructions{
  background:var(--paper-dim);border-radius:var(--radius-sm);padding:18px 20px;margin-bottom:18px;
}
.bank-instructions .bi-row{
  display:flex;justify-content:space-between;gap:12px;padding:7px 0;
  border-top:1px solid var(--border-soft);font-size:0.86rem;
}
.bank-instructions .bi-row:first-child{border-top:none;}
.bank-instructions .bi-label{color:var(--muted);}
.bank-instructions .bi-value{font-family:var(--font-mono);color:var(--text);text-align:right;}
.bank-instructions .bi-note{margin-top:12px;font-size:0.82rem;color:var(--muted);line-height:1.5;}

.bank-request-box{
  background:var(--paper-dim);border-radius:var(--radius-sm);padding:18px 20px;margin-bottom:12px;
}
.bank-request-box .field-hint{color:var(--muted);}

/* Funding request status pill reuses .status-pill; add two more states */
.status-pill.completed{background:#EFF4EE;color:var(--forest);}
.status-pill.rejected{background:#FBEAE6;color:#B3452F;}

.funding-list{list-style:none;margin:0;padding:0;}
.funding-list li{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:13px 0;border-bottom:1px solid var(--border-soft);font-size:0.88rem;
}
.funding-list li:last-child{border-bottom:none;}
.funding-list .fl-main{display:flex;flex-direction:column;gap:2px;}
.funding-list .fl-ref{font-family:var(--font-mono);font-size:0.76rem;color:var(--muted);}
.funding-list .fl-right{display:flex;align-items:center;gap:10px;}
.funding-list .fl-amt{font-family:var(--font-mono);font-weight:600;}

@media (max-width:640px){
  .method-tab{min-width:90px;font-size:0.8rem;padding:10px 8px;}
  .acct-summary-amt{font-size:0.9rem;}
}

/* ============================================================
   Balance history chart + Contact us
   ============================================================ */
.bh-chart{width:100%;}
.bh-axis{
  display:flex;justify-content:space-between;margin-top:6px;
  font-family:var(--font-mono);font-size:0.7rem;color:var(--muted);
}
.bh-axis span{flex:1;text-align:center;}
.bh-axis span:first-child{text-align:left;}
.bh-axis span:last-child{text-align:right;}

.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:28px;}
.contact-firm{
  font-family:var(--font-display);font-size:1.05rem;font-weight:600;
  color:var(--ink);margin:0 0 10px;
}
.contact-line{margin:0 0 6px;font-size:0.9rem;color:var(--text);}
.contact-line a{color:var(--forest);font-weight:600;}
.contact-advisors{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.contact-advisor{
  display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);
  font-size:0.88rem;padding:6px 0;
}
.contact-advisor:hover span:last-child{color:var(--forest);text-decoration:underline;}

@media (max-width:640px){
  .contact-grid{grid-template-columns:1fr;gap:18px;}
}

/* ============================================================
   Testimonials (index.html)
   ============================================================ */
.testimonial-card{display:flex;flex-direction:column;}
.testimonial-card .quote-mark{color:var(--gold);opacity:0.7;margin-bottom:14px;}
.testimonial-quote{
  font-family:var(--font-display);font-size:1.08rem;line-height:1.5;
  color:var(--ink);flex:1;margin-bottom:22px;
}
.testimonial-person{display:flex;align-items:center;gap:12px;}
.testimonial-person > span:last-child{display:flex;flex-direction:column;font-size:0.86rem;}
.testimonial-person strong{color:var(--ink);font-size:0.92rem;}
.testimonial-person span span{color:var(--muted);}

@media (max-width:640px){
  .testimonial-quote{font-size:1rem;}
}

/* ============================================================
   Trading chart (dashboard.html) — live simulated price line
   ============================================================ */
.trading-chart-panel{padding:22px 24px 18px;}
.tc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.tc-price{font-family:var(--font-mono);font-size:1.7rem;color:var(--ink);margin-top:6px;}
.tc-change{font-family:var(--font-mono);font-size:0.86rem;color:var(--forest);margin-top:4px;}
.tc-change.neg{color:#8a6d1d;}
.tc-live-pill{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;
  color:var(--forest);background:#EFF4EE;border:1px solid var(--forest-light);
  border-radius:999px;padding:5px 10px;
}
.tc-live-dot{width:6px;height:6px;border-radius:50%;background:var(--forest-light);animation:tcPulse 1.6s ease-in-out infinite;}
@keyframes tcPulse{0%,100%{opacity:1;}50%{opacity:0.25;}}
.tc-svg{width:100%;height:180px;margin-top:16px;}

/* ============================================================
   Hub tabs (transfer.html — Transfer / Deposit / Withdraw)
   ============================================================ */
.hub-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;}
.hub-tab{
  flex:1;min-width:120px;text-align:center;cursor:pointer;
  padding:13px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);
  background:var(--paper-card);font-size:0.92rem;font-weight:600;color:var(--muted);
  transition:border-color .15s, color .15s, background .15s;
}
.hub-tab.active{border-color:var(--forest-light);color:var(--forest);background:#EFF4EE;}
.hub-panel{display:none;}
.hub-panel.active{display:block;}

/* ============================================================
   Settings — grouped sections (settings.html)
   ============================================================ */
.settings-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap;overflow-x:auto;}
.settings-tab{
  white-space:nowrap;cursor:pointer;
  padding:10px 16px;border-radius:999px;border:1px solid var(--border);
  background:var(--paper-card);font-size:0.86rem;font-weight:600;color:var(--muted);
  transition:border-color .15s, color .15s, background .15s;
}
.settings-tab.active{border-color:var(--forest-light);color:var(--forest);background:#EFF4EE;}
.settings-group{display:none;}
.settings-group.active{display:block;}

/* ============================================================
   Loading skeleton — prevents the flash of the static template's
   placeholder numbers/name on first paint & refresh, before /me
   and /accounts resolve. body.is-loading is present in the raw
   HTML (not added by JS) so it applies before any script runs;
   removed once real data is in.
   ============================================================ */
body.is-loading [data-live-amt],
body.is-loading [data-live-pctlabel],
body.is-loading [data-live-change],
body.is-loading [data-tc-price],
body.is-loading [data-tc-change],
body.is-loading [data-user-first],
body.is-loading [data-user-name]{
  color:transparent;
  background:var(--paper-dim);
  border-radius:4px;
  animation:skeletonPulse 1.3s ease-in-out infinite;
}
body.is-loading [data-live-spark],
body.is-loading .tc-svg{opacity:0;}
@keyframes skeletonPulse{0%,100%{opacity:1;}50%{opacity:0.55;}}

/* ============================================================
   Brokerage overview hero (invest.html / Portfolio page)
   ============================================================ */
.brokerage-overview{padding:22px 24px;margin-bottom:8px;}
.bo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px;}
.bo-eyebrow{font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;}
.bo-acct{font-size:0.95rem;font-weight:600;color:var(--ink);margin:0;}
.bo-refresh{
  display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--border);background:var(--paper-card);
  border-radius:var(--radius-sm);padding:8px 14px;
  font-size:0.82rem;font-weight:600;color:var(--forest);cursor:pointer;
}
.bo-refresh:hover{background:var(--paper-dim);}
.bo-stats{display:flex;align-items:center;gap:30px;flex-wrap:wrap;}
.bo-stat{flex:1;min-width:160px;}
.bo-divider{width:1px;align-self:stretch;background:var(--border-soft);}
.bo-value{font-family:var(--font-mono);font-size:2rem;color:var(--ink);margin-top:6px;}
.bo-change{font-family:var(--font-mono);font-size:1rem;color:var(--forest);margin-top:6px;}
.bo-change.neg{color:#8a6d1d;}
@media (max-width: 560px){
  .bo-divider{display:none;}
  .bo-value{font-size:1.6rem;}
}

/* ============================================================
   TradingView-inspired dashboard chart
   ============================================================ */
.tv-panel{
  --tv-bg:#0f1722;
  --tv-panel:#131c29;
  --tv-border:#263244;
  --tv-grid:#202b3a;
  --tv-text:#8f9bad;
  --tv-bright:#d7dde7;
  --tv-up:#22ab94;
  --tv-down:#f7525f;
  --tv-cross:#778399;
  padding:0;
  overflow:hidden;
  background:var(--tv-bg);
  border-color:var(--tv-border);
  color:var(--tv-bright);
}
.tv-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px 10px;border-bottom:1px solid var(--tv-border);background:var(--tv-panel);}
.tv-symbol-block{min-width:0;}
.tv-symbol-row,.tv-price-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.tv-symbol{font-family:var(--font-mono);font-size:.86rem;font-weight:600;letter-spacing:.035em;color:#f3f6fa;}
.tv-market{font-size:.72rem;color:var(--tv-text);padding-left:1px;}
.tv-price-row{margin-top:5px;}
.tv-panel .tc-price{margin:0;color:#f4f7fb;font-family:var(--font-mono);font-size:1.23rem;font-weight:500;}
.tv-panel .tc-change{margin:0;font-family:var(--font-mono);font-size:.78rem;color:var(--tv-up);}
.tv-panel .tc-change.neg{color:var(--tv-down);}
.tv-panel .tc-live-pill{padding:3px 7px;border-radius:4px;border:1px solid rgba(34,171,148,.32);background:rgba(34,171,148,.09);color:var(--tv-up);font-size:.62rem;letter-spacing:.04em;}
.tv-panel .tc-live-dot{background:var(--tv-up);}
.tv-actions{display:flex;gap:6px;}
.tv-icon-btn,.tv-tool{border:1px solid transparent;background:transparent;color:var(--tv-text);cursor:pointer;font-family:var(--font-mono);transition:background .15s,color .15s,border-color .15s;}
.tv-icon-btn{width:32px;height:32px;border-radius:5px;display:grid;place-items:center;}
.tv-icon-btn:hover,.tv-tool:hover{background:#1d2938;color:#f5f7fa;}
.tv-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:39px;padding:4px 9px;border-bottom:1px solid var(--tv-border);background:var(--tv-bg);overflow-x:auto;}
.tv-timeframes{display:flex;align-items:center;gap:2px;flex:0 0 auto;}
.tv-tool{padding:6px 8px;border-radius:4px;font-size:.7rem;}
.tv-tool.active{color:#fff;background:#253347;border-color:#32435a;}
.tv-chart-meta{display:flex;align-items:center;gap:10px;white-space:nowrap;color:var(--tv-text);font-family:var(--font-mono);font-size:.66rem;}
.tv-chart-meta b{font-weight:500;color:#c5ceda;}
.tv-chart-wrap{position:relative;height:360px;min-height:280px;background:var(--tv-bg);user-select:none;overflow:hidden;}
.tv-canvas{display:block;width:100%;height:100%;cursor:crosshair;}
.tv-crosshair-label{position:absolute;z-index:3;pointer-events:none;background:#40506a;color:#fff;border-radius:3px;font:10px/1.2 var(--font-mono);padding:5px 6px;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.tv-price-label{right:3px;transform:translateY(0);}
.tv-time-label{bottom:2px;min-width:104px;text-align:center;}
.tv-bottom-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px;border-top:1px solid var(--tv-border);background:var(--tv-panel);color:var(--tv-text);font:10px var(--font-mono);}
.tv-status{display:flex;align-items:center;gap:6px;}
.tv-panel:fullscreen{width:100vw;height:100vh;border-radius:0;display:flex;flex-direction:column;}
.tv-panel:fullscreen .tv-chart-wrap{height:auto;flex:1;}
@media (max-width:700px){
  .tv-chart-wrap{height:300px;}
  .tv-chart-meta{display:none;}
  .tv-topbar{padding:12px;}
  .tv-toolbar{padding-left:7px;padding-right:7px;}
  .tv-panel .tc-price{font-size:1.05rem;}
}

/* Investment performance summary */
.invest-disclosure{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:0 0 14px;border:1px solid var(--border,#dde3df);border-radius:12px;background:rgba(92,120,103,.06);font-size:.78rem;line-height:1.45}
.invest-disclosure strong{white-space:nowrap;font-size:.76rem}
.invest-disclosure span{color:var(--muted,#66736c)}
.invest-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:24px}
.invest-metric{padding:14px 15px;border:1px solid var(--border,#dde3df);border-radius:14px;background:var(--surface,#fff)}
.invest-metric>span{display:block;color:var(--muted,#66736c);font-size:.72rem;font-weight:600;margin-bottom:7px}
.invest-metric strong{display:block;font-family:'IBM Plex Mono',monospace;font-size:1.03rem;line-height:1.25}
.invest-metric small{display:block;color:var(--muted,#66736c);font-size:.68rem;margin-top:5px}
.invest-metric strong.pos,.invest-metric small.pos{color:#138a52}
.invest-metric strong.neg,.invest-metric small.neg{color:#c53a3a}
.activity-badge.performance{background:rgba(80,109,92,.12);color:#456252}
@media(max-width:760px){.invest-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.invest-disclosure{display:block}.invest-disclosure strong{display:block;margin-bottom:4px}}
.bot-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}.bot-actions{display:flex;gap:8px;flex-wrap:wrap}.bot-metrics{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:10px;margin:18px 0}.bot-metrics>div,.bot-card{border:1px solid var(--border-soft);border-radius:12px;padding:14px}.bot-metrics span{display:block;font-size:.72rem;color:var(--text-muted);margin-bottom:5px}.bot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.bot-card h3{font-size:.9rem;margin:0 0 12px}.watchlist{display:flex;gap:7px;flex-wrap:wrap}.watchlist span{border:1px solid var(--border-soft);padding:6px 9px;border-radius:20px;font-weight:700;font-size:.78rem}.bot-feed{max-height:180px;overflow:auto}.bot-feed-item{padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:.8rem}.bot-feed-item small{display:block;color:var(--text-muted);margin-top:3px}.goal-track{height:7px;background:var(--border-soft);border-radius:10px;margin:12px 0;overflow:hidden}.goal-track span{display:block;height:100%;background:var(--primary);width:0}.trade-row{cursor:pointer}.trade-row:hover{background:rgba(0,0,0,.025)}@media(max-width:850px){.bot-metrics{grid-template-columns:repeat(2,1fr)}.bot-grid{grid-template-columns:1fr}}


/* v17 notification/document/security/system surfaces */
.notif-wrap{position:relative;margin-left:auto}.notif-bell{position:relative;width:38px;height:38px;border:1px solid var(--border-soft);background:var(--white,#fff);border-radius:50%;display:grid;place-items:center;cursor:pointer}.notif-bell svg{width:19px;height:19px}.notif-count{position:absolute;right:-4px;top:-4px;background:#B3452F;color:#fff;border:2px solid #fff;border-radius:999px;min-width:19px;height:19px;padding:0 4px;font:700 10px/15px Inter;text-align:center}.notif-panel{position:absolute;right:0;top:48px;width:min(390px,calc(100vw - 24px));max-height:520px;background:#fff;border:1px solid var(--border-soft);border-radius:14px;box-shadow:0 18px 45px rgba(18,36,26,.16);z-index:1000;overflow:hidden}.notif-head{display:flex;justify-content:space-between;align-items:center;padding:14px 15px;border-bottom:1px solid var(--border-soft)}.notif-head button{border:0;background:none;color:var(--forest);cursor:pointer}.notif-list{max-height:450px;overflow:auto}.notif-item{width:100%;display:grid;grid-template-columns:30px 1fr;gap:8px;text-align:left;border:0;border-bottom:1px solid var(--border-soft);background:#fff;padding:12px 14px;cursor:pointer}.notif-item.unread{background:#f4f8f5}.notif-item strong,.notif-item small,.notif-item time{display:block}.notif-item small{color:var(--muted);margin-top:3px;line-height:1.35}.notif-item time{font-size:10px;color:var(--muted);margin-top:5px}.notif-kind{width:28px;height:28px;border-radius:50%;background:#eaf2ed;display:grid;place-items:center;color:var(--forest);font-weight:700}.documents-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin:16px 0}.document-card{display:flex;flex-direction:column;gap:13px}.document-card h3{margin:0 0 6px}.document-card p{color:var(--muted);font-size:.88rem;line-height:1.5}.document-icon{width:38px;height:38px;border-radius:10px;background:#eaf2ed;display:grid;place-items:center;color:var(--forest);font-size:19px}.doc-disclosure{border-left:3px solid #C69A3D}.doc-disclosure p{margin:.35rem 0 0;color:var(--muted)}.security-status-row{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--border-soft);font-size:.87rem}.cron-card{display:flex;flex-direction:column;gap:7px}.cron-card h3{margin:0;text-transform:capitalize}.cron-card p,.cron-card small{color:var(--muted);margin:0}.cron-card .status-pill{align-self:flex-start}
@media(max-width:900px){.dash-tabs .dash-tab[href="documents.html"]{display:none}.notif-wrap{margin-left:auto}.notif-panel{position:fixed;right:12px;top:64px}.documents-grid{grid-template-columns:1fr}}


/* Portfolio disclosure modal */
body.portfolio-modal-open{overflow:hidden;}
.portfolio-disclosure-modal{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(12,24,18,.58);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);}
.portfolio-disclosure-modal.is-hidden{display:none;}
.portfolio-disclosure-card{position:relative;width:min(520px,100%);background:var(--surface,#fff);border:1px solid var(--border-soft,#dfe6e1);border-radius:20px;padding:30px;box-shadow:0 24px 70px rgba(12,30,20,.22);}
.portfolio-disclosure-card h2{margin:5px 36px 12px 0;font-size:1.55rem;line-height:1.2;}
.portfolio-disclosure-card>p:not(.eyebrow){margin:0;color:var(--text-muted,#5f6f66);font-size:.96rem;line-height:1.65;}
.portfolio-disclosure-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border:0;border-radius:50%;background:var(--surface-soft,#f1f4f2);color:var(--text,#16231b);font-size:1.35rem;line-height:1;cursor:pointer;}
.portfolio-disclosure-continue{width:100%;margin-top:22px;justify-content:center;}
@media(max-width:600px){.portfolio-disclosure-modal{align-items:flex-end;padding:12px}.portfolio-disclosure-card{border-radius:20px 20px 16px 16px;padding:24px 20px 20px}.portfolio-disclosure-card h2{font-size:1.3rem}.portfolio-disclosure-card>p:not(.eyebrow){font-size:.92rem}}

/* v23 portfolio disclosure metadata */
.portfolio-disclosure-meta{margin-top:12px!important;font-size:.78rem!important;color:var(--text-muted,#738078)!important;font-weight:600;letter-spacing:.01em;}

/* v25 deposit operations */
.settings-list{display:grid;gap:10px;}
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--border-soft);cursor:pointer;}
.setting-row:last-child{border-bottom:0;}
.setting-row span{display:flex;flex-direction:column;gap:3px;}
.setting-row small{color:var(--muted);font-weight:400;line-height:1.4;}
.setting-row input[type="checkbox"]{width:20px;height:20px;flex:0 0 auto;}
.crypto-deposit-card{padding:18px;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--paper-dim);}
.crypto-deposit-card code{font-family:var(--font-mono);font-size:.82rem;color:var(--text);}
@media(max-width:640px){.setting-row{align-items:flex-start}.crypto-deposit-card .form-grid-2{grid-template-columns:1fr!important}.crypto-deposit-card img{margin:10px auto 0}}

/* v28 registration + identity verification */
.auth-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.joint-registration-panel{padding:18px;border:1px solid var(--border);border-radius:14px;background:rgba(31,75,54,.035)}.section-divider{display:flex;align-items:center;gap:12px;margin-bottom:18px;color:var(--forest);font-weight:700}.section-divider:after{content:"";height:1px;background:var(--border);flex:1}.kyc-shell{min-height:100vh;background:var(--cream);padding:40px 16px;display:flex;justify-content:center}.kyc-card{width:min(760px,100%);background:var(--paper);border:1px solid var(--border);border-radius:22px;padding:36px;box-shadow:0 18px 60px rgba(18,36,26,.08)}.kyc-brand{display:flex;align-items:center;gap:10px;margin-bottom:30px}.kyc-brand .brand-mark{width:22px;height:22px;border-radius:50%;background:var(--forest);border:2px solid var(--gold)}.kyc-step{display:flex;gap:12px;align-items:flex-start;margin:26px 0 16px}.kyc-step h3{margin:0 0 4px}.kyc-step p{margin:0;color:var(--muted);font-size:.9rem}.kyc-step-num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--forest);color:white;font-weight:700;flex:0 0 28px}.kyc-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.kyc-upload{border:1px dashed var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:9px;background:#fff}.kyc-upload span{font-weight:600}.kyc-upload em{font-weight:400;color:var(--muted)}.kyc-upload small{color:var(--muted)}.liveness-stage{position:relative;aspect-ratio:16/9;background:#111;border-radius:16px;overflow:hidden;display:grid;place-items:center}.liveness-stage video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.liveness-placeholder{position:absolute;color:#ddd}.liveness-controls{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}.liveness-progress{display:flex;gap:8px;margin-top:12px}.liveness-progress span{padding:6px 10px;border-radius:999px;background:var(--cream);font-size:.8rem;color:var(--muted)}.liveness-progress span.done{background:#e7f2eb;color:var(--forest);font-weight:700}.kyc-result{text-align:center;padding:42px 10px}.kyc-result h2{margin-top:14px}.kyc-result p{color:var(--muted);max-width:520px;margin:0 auto 20px}.kyc-evidence-links{display:flex;gap:6px;flex-wrap:wrap}.kyc-evidence-links a{font-size:.76rem;text-decoration:underline;color:var(--forest)}
@media(max-width:640px){.auth-grid-2,.kyc-upload-grid{grid-template-columns:1fr}.kyc-card{padding:24px 18px;border-radius:16px}.kyc-shell{padding:16px 10px}.liveness-controls .btn{flex:1}}
/* v30 balance history */
.bh-ranges{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;margin:0 0 10px}
.bh-ranges button{border:1px solid var(--border-soft);background:transparent;border-radius:999px;padding:5px 10px;font:inherit;font-size:12px;cursor:pointer;color:inherit}
.bh-ranges button.active{background:var(--forest);color:#fff;border-color:var(--forest)}
.bh-chart{position:relative;min-height:220px}
.bh-svg{width:100%;height:220px;overflow:visible}
.bh-grid{stroke:var(--border-soft);stroke-width:1;vector-effect:non-scaling-stroke}
.bh-area{fill:rgba(31,75,54,.08)}
.bh-line{fill:none;stroke:var(--forest);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.bh-dot{fill:var(--paper-card);stroke:var(--forest);stroke-width:2;vector-effect:non-scaling-stroke;cursor:pointer}
.bh-tooltip{position:absolute;z-index:2;top:8px;left:10px;background:rgba(16,30,23,.92);color:#fff;padding:7px 9px;border-radius:8px;font-size:12px;pointer-events:none}
.bh-axis{display:flex;justify-content:space-between;font-size:11px;opacity:.65;margin-top:2px}

/* v39 session warning + scheduling */
.idle-warning-modal{position:fixed;inset:0;z-index:99999;background:rgba(10,18,14,.66);backdrop-filter:blur(5px);align-items:center;justify-content:center;padding:20px}.idle-warning-card{max-width:430px;text-align:center}.idle-warning-icon{font-size:2rem;margin-bottom:10px}.idle-countdown{margin:22px auto;display:flex;flex-direction:column;align-items:center}.idle-countdown strong{font-family:var(--serif);font-size:3.2rem;line-height:1;color:var(--forest)}.idle-countdown span{font-size:.85rem;color:var(--muted);margin-top:6px}.idle-warning-actions{display:flex;gap:10px}.idle-warning-actions .btn{flex:1}.schedule-call-card{max-width:520px}.scheduled-call-list{margin-top:14px;max-height:130px;overflow:auto}.scheduled-call-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border);font-size:.82rem}.scheduled-call-row span{color:var(--muted);text-transform:capitalize;text-align:right}@media(max-width:560px){.idle-warning-actions{flex-direction:column}.scheduled-call-row{flex-direction:column}.scheduled-call-row span{text-align:left}}

/* v46 portfolio-aware trading chart selector */
.tv-account-picker{display:flex;align-items:center;gap:8px;margin-top:10px;max-width:390px}
.tv-account-picker[hidden]{display:none!important}
.tv-account-picker label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--tv-text,#94a3b8)}
.tv-account-select{min-width:0;max-width:280px;border:1px solid var(--tv-grid,#233044);background:rgba(255,255,255,.04);color:inherit;border-radius:7px;padding:7px 30px 7px 9px;font:inherit;font-size:12px}
.tv-account-select option{color:#111;background:#fff}
@media(max-width:600px){.tv-account-picker{width:100%;align-items:stretch;flex-direction:column;gap:4px}.tv-account-select{max-width:none;width:100%}}

/* ============================================================
   v47 — authenticated page loading gate
   The raw HTML carries body.is-loading so template/fallback copy never
   flashes before /me and the page's first real GET requests settle.
   ============================================================ */
body[data-page].is-loading{
  overflow:hidden;
}
body[data-page].is-loading .dash-shell{
  visibility:hidden !important;
  opacity:0 !important;
  pointer-events:none !important;
}
body[data-page].is-loading::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:2147483000;
  background:var(--paper, #f6f1e5);
}
body[data-page].is-loading::after{
  content:"";
  position:fixed;
  z-index:2147483001;
  left:50%;
  top:50%;
  width:42px;
  height:42px;
  margin:-21px 0 0 -21px;
  border:4px solid rgba(25,70,53,.16);
  border-top-color:var(--forest, #194635);
  border-radius:50%;
  animation:pageLoadSpin .72s linear infinite;
}
body[data-page].is-loaded .dash-shell{
  animation:pageDataReveal .18s ease-out both;
}
@keyframes pageLoadSpin{to{transform:rotate(360deg)}}
@keyframes pageDataReveal{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  body[data-page].is-loading::after{animation-duration:1.5s}
  body[data-page].is-loaded .dash-shell{animation:none}
}


/* v55: gentle, non-blocking Joint security-deposit reminder */
.joint-security-notice{
  position:fixed;
  right:22px;
  bottom:92px;
  z-index:1450;
  width:min(390px,calc(100vw - 28px));
  display:flex;
  gap:14px;
  padding:18px;
  border:1px solid rgba(31,75,54,.16);
  border-radius:18px;
  background:rgba(255,255,255,.98);
  box-shadow:0 18px 55px rgba(20,35,27,.16);
  opacity:0;
  transform:translateY(12px) scale(.985);
  transition:opacity .18s ease,transform .18s ease;
}
.joint-security-notice.show{opacity:1;transform:translateY(0) scale(1)}
.joint-security-notice.leaving{opacity:0;transform:translateY(8px) scale(.99)}
.joint-security-notice-icon{
  flex:0 0 42px;height:42px;border-radius:13px;
  display:grid;place-items:center;
  background:#f4eddc;font-size:19px;
}
.joint-security-notice-body{min-width:0;padding-right:14px}
.joint-security-notice-kicker{
  display:block;margin-bottom:4px;
  font:600 .72rem/1.2 var(--font-mono,monospace);
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#687068);
}
.joint-security-notice-body strong{display:block;font-size:1.05rem;color:var(--forest,#1F4B36)}
.joint-security-notice-body p{margin:7px 0 13px;color:var(--muted,#687068);font-size:.9rem;line-height:1.5}
.joint-security-notice-actions{display:flex;gap:8px;flex-wrap:wrap}
.joint-security-notice-close{
  position:absolute;right:10px;top:8px;
  width:30px;height:30px;border:0;background:transparent;
  color:var(--muted,#687068);font-size:22px;line-height:1;cursor:pointer;
}
@media(max-width:700px){
  .joint-security-notice{
    left:14px;right:14px;bottom:88px;width:auto;
    border-radius:16px;padding:16px;
  }
}

.joint-hold-pill{display:inline-flex;align-items:center;gap:4px;margin-left:5px;padding:2px 6px;border-radius:999px;background:#f4eddc;color:#745b18;font-size:.72rem;font-weight:700;vertical-align:middle}.joint-hold-pill svg{width:11px;height:11px}.joint-security-notice-icon svg{width:20px;height:20px}


/* v57 — secondary-holder Joint Account Hold state */
.joint-account-hold{
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin-left:8px;
  padding:4px 8px;
  border-radius:999px;
  background:#fff4df;
  border:1px solid #e2bf79;
  color:#825a08;
  font-size:.72rem;
  font-weight:700;
  line-height:1;
  vertical-align:middle;
  white-space:nowrap;
}
.joint-account-hold svg{width:13px;height:13px;flex:0 0 13px}
.joint-account-hold.compact{padding:3px 7px;font-size:.68rem}
.account-card.has-security-hold{
  border-color:rgba(198,154,61,.48);
  box-shadow:inset 3px 0 0 rgba(198,154,61,.85);
}
.account-card.has-security-hold .account-info strong{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:3px;
}
@media(max-width:700px){
  .joint-account-hold{font-size:.66rem;padding:3px 6px}
}

.document-account-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.document-card-stacked{align-items:flex-start}@media(max-width:700px){.document-account-links{display:grid;grid-template-columns:1fr}.document-account-links .btn{width:100%;justify-content:center}}

/* ============================================================
   v59 — Institutional brokerage visual system
   ============================================================ */
:root{
  --ink:#102018;--forest:#173f30;--forest-light:#235b45;--teal:#3f7761;--gold:#b68a32;
  --paper:#f4f6f5;--paper-dim:#eef1ef;--paper-card:#fff;--text:#17221c;--muted:#66736b;
  --border:rgba(16,32,24,.13);--border-soft:rgba(16,32,24,.075);
  --shadow:0 20px 50px -32px rgba(9,29,19,.38);--shadow-sm:0 10px 28px -22px rgba(9,29,19,.34);
  --radius:16px;--radius-sm:10px;--control-h:46px;--danger:#a63f35;--danger-soft:#fff3f1;
  --success:#276749;--success-soft:#eff8f3;--warning:#8a651a;--warning-soft:#fff8e8;
}
body{background:var(--paper);color:var(--text);font-feature-settings:"tnum" 1,"ss01" 1}
body[data-page] h1,body[data-page] h2,body[data-page] h3,body[data-admin-guard] h1,body[data-admin-guard] h2,body[data-admin-guard] h3{font-family:var(--font-body);letter-spacing:-.025em}
body[data-page] h1{font-size:clamp(1.65rem,2vw,2.15rem);font-weight:650}
body[data-page] h2{font-size:1.08rem;font-weight:650} body[data-page] h3{font-size:.96rem;font-weight:650}
.dash-shell{min-height:100vh}.dash-main{max-width:1240px;margin:0 auto;padding:34px 30px 86px}
.dash-header{margin-bottom:26px}.dash-header p{max-width:760px;color:var(--muted);margin-top:7px}
.dash-section-label{margin:30px 0 12px;display:flex;align-items:end;justify-content:space-between;gap:16px}
.dash-section-label h2{font-size:1rem}.dash-section-label a{font-size:.82rem;font-weight:650;color:var(--forest)}
.panel{background:#fff;border:1px solid var(--border-soft);border-radius:var(--radius);box-shadow:0 1px 1px rgba(16,32,24,.02),var(--shadow-sm)}
.panel:hover{border-color:rgba(16,32,24,.11)}
.dash-topbar{position:sticky;top:0;z-index:800;background:rgba(255,255,255,.94);backdrop-filter:blur(18px) saturate(150%);border-bottom:1px solid var(--border-soft)}
.dash-topbar-inner{max-width:1280px;margin:0 auto;padding:0 30px;min-height:70px;gap:22px}
.dash-topbar .brand{font-family:var(--font-body);font-weight:720;letter-spacing:-.02em}.dash-tabs{gap:5px}
.dash-tab{min-height:38px;padding:8px 12px;border-radius:9px;font-size:.84rem;font-weight:570;color:#5e6b63;transition:background .16s,color .16s,box-shadow .16s}
.dash-tab svg{width:16px;height:16px;opacity:.78}.dash-tab:hover{background:#f3f6f4;color:var(--ink)}
.dash-tab.active{background:#edf3ef;color:var(--forest);box-shadow:inset 0 0 0 1px rgba(23,63,48,.08)}
.avatar,.notif-bell{border:1px solid var(--border)!important;background:#fff!important;box-shadow:0 1px 2px rgba(16,32,24,.04)}
.avatar:hover,.notif-bell:hover{border-color:rgba(23,63,48,.3)!important;background:#f8faf9!important}
.btn{min-height:42px;padding:10px 17px;border-radius:9px;font-size:.86rem;font-weight:650;letter-spacing:-.005em;box-shadow:none;transition:background .15s,border-color .15s,box-shadow .15s,transform .12s}
.btn:active{transform:translateY(1px) scale(.995)}.btn-primary{background:var(--forest);color:#fff;border-color:var(--forest);box-shadow:0 1px 2px rgba(10,42,28,.12)}
.btn-primary:hover{background:#1c503c;border-color:#1c503c;box-shadow:0 5px 16px rgba(23,63,48,.16)}
.btn-ghost,.btn-secondary{background:#fff;color:var(--ink);border:1px solid var(--border)}.btn-ghost:hover,.btn-secondary:hover{background:#f8faf9;border-color:rgba(23,63,48,.25)}
.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{background:#91382f}.btn-lg{min-height:48px;padding:12px 20px;font-size:.91rem}.btn-sm{min-height:34px;padding:7px 11px;font-size:.78rem}
button:disabled,.btn:disabled{opacity:.48;filter:saturate(.75)}
.row-actions button{min-height:34px;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--ink);font:600 .76rem var(--font-body);cursor:pointer}
.row-actions button:hover{background:#f6f8f7;border-color:rgba(23,63,48,.25)}.row-actions button.danger{color:var(--danger);border-color:rgba(166,63,53,.25)}.row-actions button.danger:hover{background:var(--danger-soft)}
.field{margin-bottom:18px}.field label{display:flex;align-items:center;gap:6px;margin-bottom:7px;color:#2c3932;font-size:.79rem;font-weight:650;letter-spacing:.005em}.field .optional{font-weight:500;color:#879189}
input,select,textarea{width:100%;min-height:var(--control-h);border:1px solid rgba(16,32,24,.16)!important;border-radius:10px!important;background:#fff!important;color:var(--ink)!important;padding:11px 13px!important;font:500 .91rem/1.35 var(--font-body)!important;box-shadow:inset 0 1px 1px rgba(16,32,24,.02);transition:border-color .15s,box-shadow .15s,background .15s}
textarea{min-height:108px;resize:vertical}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#66736b 50%),linear-gradient(135deg,#66736b 50%,transparent 50%)!important;background-position:calc(100% - 17px) 20px,calc(100% - 12px) 20px!important;background-size:5px 5px,5px 5px!important;background-repeat:no-repeat!important;padding-right:36px!important}
input:hover,select:hover,textarea:hover{border-color:rgba(23,63,48,.28)!important}input:focus,select:focus,textarea:focus{outline:none!important;border-color:var(--forest)!important;box-shadow:0 0 0 3px rgba(23,63,48,.10)!important}
input::placeholder,textarea::placeholder{color:#9aa39d;opacity:1}input[readonly],input:disabled,select:disabled,textarea:disabled{background:#f2f4f3!important;color:#7a857e!important}
input[type=file]{padding:8px!important;border-style:dashed!important;background:#fafcfb!important}input[type=file]::file-selector-button{margin-right:10px;border:0;border-radius:7px;padding:7px 10px;background:#edf3ef;color:var(--forest);font-weight:650;cursor:pointer}
.input-wrap{position:relative}.input-wrap input{padding-right:62px!important}.pw-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);min-height:32px;border:0;border-radius:7px;background:transparent;color:var(--forest);font-weight:650;cursor:pointer}
.field-hint{font-size:.76rem;color:#78837c;line-height:1.5}.field-error{font-size:.75rem;color:var(--danger);margin-top:6px}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--danger)!important;box-shadow:0 0 0 3px rgba(166,63,53,.08)!important}
.hub-tabs,.settings-tabs,.method-tabs{background:#e9eeeb;padding:4px;border-radius:11px;gap:4px;border:1px solid rgba(16,32,24,.05)}
.hub-tab,.settings-tab,.method-tab{border:0!important;border-radius:8px!important;background:transparent!important;color:#66736b!important;min-height:38px;padding:8px 12px!important;font-weight:620!important;font-size:.8rem!important;cursor:pointer}
.hub-tab.active,.settings-tab.active,.method-tab.active{background:#fff!important;color:var(--ink)!important;box-shadow:0 1px 3px rgba(16,32,24,.10)!important}
.account-card,.acct-summary-row{border:1px solid var(--border-soft)!important;background:#fff!important;border-radius:14px!important;box-shadow:none!important}
.account-card{padding:17px 18px;transition:border-color .15s,box-shadow .15s,transform .15s}.account-card:hover{border-color:rgba(23,63,48,.2)!important;box-shadow:0 8px 24px -18px rgba(15,48,33,.34)!important;transform:translateY(-1px)}
.account-info strong,.acct-summary-main strong{font-family:var(--font-body);font-weight:680;letter-spacing:-.01em}.account-info span,.acct-summary-sub{color:#78837c}
.account-amounts .amt,.acct-summary-amt{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:520}.account-icon,.acct-summary-icon{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}
.joint-pill,.status-pill,.joint-account-hold,.joint-hold-pill{font-family:var(--font-body);font-weight:700;letter-spacing:0}.account-card.has-security-hold{background:linear-gradient(90deg,#fffdf8 0,#fff 42%)!important}
.brokerage-overview{border:1px solid rgba(23,63,48,.12)!important;background:linear-gradient(135deg,#fff 0%,#fbfdfc 70%)!important;padding:24px 26px!important}.bo-eyebrow{font-family:var(--font-body);font-weight:650;letter-spacing:.07em}.bo-value{font-family:var(--font-body);font-size:2.15rem;font-weight:650;letter-spacing:-.04em}.bo-change{font-family:var(--font-mono);font-size:.9rem}.bo-refresh{border-radius:8px;background:#fff}
table{border-collapse:separate;border-spacing:0}.panel table{width:100%}th{background:#f8faf9;color:#68746c;font-size:.7rem!important;font-weight:700!important;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border-soft)!important}th,td{padding:12px 14px!important}td{border-bottom:1px solid rgba(16,32,24,.055)!important;font-size:.84rem}tbody tr:last-child td{border-bottom:0!important}tbody tr:hover td{background:#fafcfb}.empty-row td{padding:28px!important;text-align:center!important;color:var(--muted)}
.confirm-banner{display:none;margin:0 0 16px;padding:12px 14px 12px 42px;border:1px solid rgba(39,103,73,.18)!important;border-radius:11px!important;background:var(--success-soft)!important;color:#285d45!important;font-size:.82rem;line-height:1.45;position:relative}.confirm-banner.show{display:block}.confirm-banner::before{content:"";position:absolute;left:14px;top:13px;width:17px;height:17px;border-radius:50%;background:var(--success);box-shadow:inset 0 0 0 5px var(--success-soft)}
.action-toast{border-radius:12px;border-color:rgba(16,32,24,.10);box-shadow:0 18px 50px rgba(16,32,24,.14)}.action-toast.error{background:#fffafa;border-color:rgba(166,63,53,.18)}
.joint-security-notice{border-radius:14px;border-color:rgba(138,101,26,.18);box-shadow:0 22px 60px rgba(25,34,29,.16);background:#fffdf9}
.notif-panel{border-radius:13px;border-color:var(--border);box-shadow:0 22px 60px rgba(16,32,24,.16)}.notif-head{background:#fbfcfb}.notif-item{padding:13px 14px}.notif-item:hover{background:#f8faf9}.notif-item.unread{background:#f1f7f3}
.documents-grid{gap:16px}.document-card{padding:19px!important;min-height:188px;justify-content:space-between}.document-icon{background:#edf3ef;border:1px solid rgba(23,63,48,.08)}.document-card p{margin:.35rem 0;color:#707b74}.document-card .btn{align-self:flex-start}
.bot-metrics>div,.bot-card{background:#fff;border:1px solid var(--border-soft);border-radius:13px;padding:15px}.bot-card h3{font-family:var(--font-body);font-weight:680}.bot-metrics span{color:#7c8780}.watchlist span{background:#f8faf9;border-color:var(--border)}.goal-track{background:#edf0ee}.goal-track span{background:var(--forest)}.invest-metric{border-color:var(--border-soft);box-shadow:none}.invest-metric strong{font-family:var(--font-mono)!important}
.security-status-row{padding:13px 0;font-size:.84rem;border-bottom-color:var(--border-soft)}.bank-row,.scheduled-call-row{border-color:var(--border-soft)!important}
.kyc-shell{background:#eef2ef}.kyc-card{border-radius:18px;border-color:rgba(16,32,24,.10);box-shadow:0 26px 70px rgba(16,32,24,.10)}.kyc-step-num{background:var(--forest)}.kyc-upload{border-color:rgba(23,63,48,.22);background:#fbfdfc}
body[data-admin-guard]{background:#f3f5f4}.admin-sidebar{background:#132f25!important;border-right:1px solid rgba(255,255,255,.05)}.admin-sidebar a{border-radius:8px}.admin-sidebar a.active{background:rgba(255,255,255,.09)}.admin-header h1{font-family:var(--font-body)!important;font-weight:680}.admin-stat,.admin-card{border-color:var(--border-soft)!important;box-shadow:none!important}
.premium-dialog-root{position:fixed;inset:0;z-index:2147483500;display:grid;place-items:center;padding:18px}.premium-dialog-root[hidden]{display:none}.premium-dialog-backdrop{position:absolute;inset:0;background:rgba(10,18,14,.58);backdrop-filter:blur(5px);opacity:0;transition:opacity .16s}.premium-dialog-card{position:relative;z-index:1;width:min(460px,100%);background:#fff;border:1px solid rgba(16,32,24,.10);border-radius:16px;padding:24px;box-shadow:0 30px 90px rgba(9,24,16,.24);opacity:0;transform:translateY(8px) scale(.985);transition:opacity .16s,transform .16s}.premium-dialog-root.show .premium-dialog-backdrop{opacity:1}.premium-dialog-root.show .premium-dialog-card{opacity:1;transform:none}.premium-dialog-x{position:absolute;right:12px;top:12px;width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:#748078;font-size:22px;cursor:pointer}.premium-dialog-x:hover{background:#f2f5f3}.premium-dialog-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#edf3ef;color:var(--forest);margin-bottom:15px}.premium-dialog-icon svg{width:22px;height:22px}.premium-dialog-root[data-tone="danger"] .premium-dialog-icon{background:var(--danger-soft);color:var(--danger)}.premium-dialog-eyebrow{margin:0 0 5px;text-transform:uppercase;letter-spacing:.08em;font:700 .68rem var(--font-body);color:#7b867f}.premium-dialog-copy h2{font:680 1.22rem/1.2 var(--font-body)!important;margin:0 0 8px}.premium-dialog-copy p:last-child{margin:0;color:#66736b;font-size:.88rem;line-height:1.55}.premium-dialog-field{margin-top:18px}.premium-dialog-field label{display:block;margin-bottom:7px;font-size:.78rem;font-weight:650}.premium-dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.premium-dialog-actions .btn{min-width:104px}
body[data-page].is-loading::before{background:#f4f6f5}body[data-page].is-loading::after{width:34px;height:34px;margin:-17px 0 0 -17px;border-width:3px}
.mobile-tabbar{background:rgba(255,255,255,.97)!important;backdrop-filter:blur(18px);border-top:1px solid var(--border-soft)!important;box-shadow:0 -8px 30px rgba(16,32,24,.06)}.mtab{font-size:.67rem!important;color:#6e7a72!important}.mtab.active{color:var(--forest)!important}.mtab svg{width:20px!important;height:20px!important}
@media(max-width:900px){.dash-main{padding:26px 18px 94px}.dash-topbar-inner{padding:0 18px;min-height:62px}.dash-tabs{display:none!important}}
@media(max-width:640px){.dash-main{padding:20px 14px 94px}.dash-header{margin-bottom:20px}.panel{border-radius:13px}.brokerage-overview{padding:19px!important}.bo-value{font-size:1.75rem}.btn-lg{width:100%}.form-grid-2,.auth-grid-2{grid-template-columns:1fr!important}.premium-dialog-card{padding:20px;border-radius:14px}.premium-dialog-actions{flex-direction:column-reverse}.premium-dialog-actions .btn{width:100%}.documents-grid{grid-template-columns:1fr}}
@media(min-width:901px){.form-grid-2{gap:18px}.documents-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v60 account summary spacing */
.account-list{gap:16px!important}
.account-card{margin:0!important}
@media(max-width:640px){
 .account-list{gap:14px!important}
 .account-card{padding:18px 16px!important;min-height:92px}
 .account-card.has-security-hold{min-height:118px}
}

/* v61 universal post-KYC security-deposit notice */
.onboarding-security-notice{border-color:rgba(23,63,48,.18);background:#fbfdfc}
.onboarding-security-notice .joint-security-notice-icon{background:#edf3ef;color:var(--forest)}

#security-deposit-policy-form .field{margin-bottom:8px}


/* v63 — native checkbox/radio sizing and customer profile image */
input[type="checkbox"],input[type="radio"]{
  width:16px!important;
  height:16px!important;
  min-height:0!important;
  padding:0!important;
  border-radius:4px!important;
  flex:0 0 16px;
  accent-color:var(--forest);
  box-shadow:none!important;
}
input[type="radio"]{border-radius:50%!important}
.checkbox-row input[type="checkbox"]{margin-top:2px}
.avatar,.profile-photo-preview,.owner-avatar{overflow:hidden}
.avatar.has-photo{padding:0!important}
.avatar img,.profile-photo-preview img,.owner-avatar img{
  width:100%;height:100%;display:block;object-fit:cover;
}
.profile-photo-row{
  display:flex;align-items:center;gap:18px;
  padding:0 0 22px;margin-bottom:22px;
  border-bottom:1px solid var(--border-soft);
}
.profile-photo-preview{
  width:72px;height:72px;flex:0 0 72px;border-radius:50%;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#e6eee9,#f4f0e4);
  color:var(--forest);border:1px solid var(--border);
  font-weight:700;font-size:1.15rem;
}
.profile-photo-copy{min-width:0}
.profile-photo-copy>strong{display:block;margin-bottom:4px}
.profile-photo-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
@media(max-width:560px){
  .profile-photo-row{align-items:flex-start}
  .profile-photo-preview{width:60px;height:60px;flex-basis:60px}
}

/* v64 controlled test-customer purge */
.row-actions button.subtle-danger{background:#fff9f8;color:#8f4339;border-color:rgba(166,63,53,.18)}
.row-actions button.subtle-danger:hover{background:#fff1ef;border-color:rgba(166,63,53,.35)}

/* v65 coordinated Joint test purge */
.row-actions .subtle-danger[data-purge-test-joint]{
  border-color:rgba(166,63,53,.22);
  background:#fffafa;
}
.row-actions .subtle-danger[data-purge-test-joint]:hover{
  background:#fff1ef;
}

/* v66 mandatory Joint Account agreement */
.agreement-summary{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:20px}
.agreement-summary h2{margin:4px 0 0}
.agreement-parties{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}
.agreement-parties>div{padding:15px;border:1px solid var(--border-soft);border-radius:12px;background:#fafbf9}
.agreement-parties span,.agreement-parties small{display:block;color:var(--text-muted);font-size:.82rem}
.agreement-parties strong{display:block;margin:5px 0}
.agreement-document{max-height:540px;overflow:auto;padding:22px;border:1px solid var(--border-soft);border-radius:12px;background:#fff;font-family:Georgia,serif;font-size:.92rem;line-height:1.7;white-space:normal}
.agreement-sign-panel{margin-top:22px;padding-top:22px;border-top:1px solid var(--border-soft)}
.signature-canvas{display:block;width:100%;height:180px;margin:14px 0 8px;border:1px solid #b9c1bc;border-radius:12px;background:#fff;touch-action:none;cursor:crosshair}
.signature-actions{display:flex;justify-content:flex-end}
.agreement-consent{align-items:flex-start;margin:18px 0}
.agreement-signed-state{margin-top:20px;padding:16px;border-radius:12px;background:#f0f5f2;border:1px solid #d8e4dc}
.agreement-download{display:flex;justify-content:flex-end;margin-top:18px}
#joint-agreement-content{min-height:520px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;line-height:1.55}
@media(max-width:680px){.agreement-parties{grid-template-columns:1fr}.agreement-summary{display:block}.agreement-summary .status-pill{display:inline-flex;margin-top:10px}.agreement-document{padding:16px;max-height:460px}.signature-canvas{height:150px}}

/* v67 premium Joint Account Agreement */
#joint-agreement-app{padding:0!important;overflow:hidden;border:1px solid rgba(16,32,24,.10);box-shadow:0 22px 60px -38px rgba(15,45,30,.38)}
.agreement-hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-start;padding:30px 32px 24px;background:linear-gradient(180deg,#fff 0%,#fbfcfb 100%);border-bottom:1px solid var(--border-soft)}
.agreement-kicker{display:block;margin-bottom:9px;font:700 .7rem/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:#6d786f}
.agreement-hero h2{margin:0!important;font-family:Georgia,"Times New Roman",serif!important;font-size:clamp(1.5rem,2.4vw,2rem)!important;line-height:1.2;letter-spacing:-.025em!important;color:#102018}
.agreement-hero p{margin:7px 0 0;color:#6c776f;font-size:.9rem}
.agreement-execution-status{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;padding:8px 11px;border-radius:999px;font-size:.76rem;font-weight:700;border:1px solid var(--border);background:#fff}
.agreement-execution-status.pending{color:#80611c;background:#fffaf0;border-color:rgba(128,97,28,.18)}.agreement-execution-status.executed{color:#246343;background:#f1f8f4;border-color:rgba(36,99,67,.18)}
.agreement-status-dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.agreement-parties{display:grid!important;grid-template-columns:1fr 1fr;gap:14px!important;margin:0!important;padding:22px 32px;background:#f7f9f7;border-bottom:1px solid var(--border-soft)}
.agreement-party-card{min-height:132px;padding:18px 19px;border:1px solid rgba(16,32,24,.10);border-radius:13px;background:#fff}.agreement-party-card.primary{box-shadow:inset 3px 0 0 #315f4c}.agreement-party-card.secondary{box-shadow:inset 3px 0 0 #b68a32}
.agreement-party-role{display:block;font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#748078}.agreement-party-card strong{display:block;margin:10px 0 4px;font:650 1.08rem/1.3 var(--font-body);color:#122019}.agreement-party-allocation{display:block;margin-bottom:12px;font:600 .82rem/1.3 var(--font-body);color:#4f5d54}.agreement-party-card small{display:block;color:#78837c;font-size:.76rem}
.agreement-document{max-height:none!important;overflow:visible!important;margin:0!important;padding:42px 8.5% 46px!important;border:0!important;border-radius:0!important;background:#fff!important;color:#202a24;font-family:Georgia,"Times New Roman",serif!important;font-size:1rem!important;line-height:1.72!important}
.agreement-document-mark{display:flex;justify-content:space-between;gap:20px;margin-bottom:30px;padding-bottom:12px;border-bottom:1px solid #dfe4e1;font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#748078}
.agreement-document-body>p{margin:0 0 20px}.agreement-clause{display:grid;grid-template-columns:34px minmax(0,1fr);gap:13px;margin:28px 0 0;padding-top:24px;border-top:1px solid #e6e9e7}.agreement-clause:first-of-type{margin-top:16px}
.agreement-clause-number{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#edf2ef;color:#234b39;font:700 .75rem/1 var(--font-body)}
.agreement-clause-copy h3{margin:2px 0 11px!important;font-family:var(--font-body)!important;font-size:.8rem!important;line-height:1.3;letter-spacing:.07em!important;text-transform:uppercase;color:#24352b}.agreement-clause-copy p{margin:0 0 14px;color:#354239}
.agreement-allocation-line{display:block;margin:7px 0;padding:10px 12px;border-left:3px solid #b68a32;background:#faf8f2;font-family:var(--font-body);font-size:.86rem;font-weight:700;color:#243028}
.agreement-sign-panel,.agreement-signed-state,.agreement-download{margin-left:8.5%!important;margin-right:8.5%!important}.agreement-sign-panel{margin-top:0!important;padding:30px 0 36px!important;border-top:1px solid #e4e8e5!important}.agreement-sign-panel h3{font-family:Georgia,"Times New Roman",serif!important;font-size:1.25rem!important}.agreement-sign-panel>p{max-width:720px;color:#69756d}
.signature-canvas{height:190px!important;border:1px solid #bcc6c0!important;border-radius:10px!important;background:#fff!important;box-shadow:inset 0 -34px 0 #fbfcfb}.agreement-consent{padding:13px 14px;border:1px solid #e0e5e2;border-radius:10px;background:#fafbf9}.agreement-signed-state{margin-top:28px!important;margin-bottom:12px!important;padding:18px!important}.agreement-download{margin-top:0!important;padding:0 0 36px;display:flex;justify-content:flex-end}
@media(max-width:680px){.agreement-hero{display:block;padding:24px 18px 20px}.agreement-execution-status{margin-top:16px}.agreement-parties{grid-template-columns:1fr;padding:18px}.agreement-document{padding:30px 20px 34px!important;font-size:.94rem!important}.agreement-document-mark{display:block}.agreement-document-mark span{display:block;margin:2px 0}.agreement-clause{grid-template-columns:28px minmax(0,1fr);gap:9px}.agreement-clause-number{width:24px;height:24px}.agreement-sign-panel,.agreement-signed-state,.agreement-download{margin-left:20px!important;margin-right:20px!important}.signature-canvas{height:160px!important}}
