/* Wealth By Rule — modern SaaS dashboard UI */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('../fonts/inter-var.woff2') format('woff2');
}
:root{
  --bg:#eef0f3; --surface:#ffffff; --surface-2:#f4f5f7; --surface-3:#e9ebee;
  --ink:#1f2733; --ink-2:#3f4854; --muted:#6b7480; --faint:#9aa3af;
  --line:#e6e9ed; --line-2:#d7dbe1;
  --brand:#0d3b66; --brand-2:#14507f; --brand-3:#1e6fb8; --accent:#1b7a3d;
  --primary:#00BFA5; --primary-2:#00a892; --primary-ink:#0a5e52; --primary-soft:rgba(0,191,165,.12);
  --secondary:#2D3748; --success:#10B981; --warning:#F59E0B; --danger:#EF4444;
  --glass-bg:rgba(255,255,255,.78); --glass-brd:rgba(255,255,255,.6); --glass-blur:saturate(160%) blur(14px);
  --dark-green:#1b7a3d; --green:#3aa760; --lime:#7cb342; --yellow:#e0b400;
  --orange:#e0592b; --red:#c0392b; --dark-red:#b3261e;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 1px 2px rgba(15,23,42,.04),0 6px 18px rgba(15,23,42,.05);
  --shadow-md:0 4px 12px rgba(15,23,42,.07),0 14px 30px rgba(15,23,42,.07);
  --radius:16px; --radius-sm:10px; --radius-pill:999px;
  --mono:"SFMono-Regular",ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Inter',system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--ink); font-size:15px; line-height:1.5;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
a{color:var(--brand-3);text-decoration:none}
a:hover{text-decoration:underline}

/* ---- header / nav (light SaaS bar) ---- */
.topbar{background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:50}
.topbar .wrap{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:0 22px;height:62px}
.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:18px;letter-spacing:-.015em;color:var(--brand)}
.brand:hover{text-decoration:none}
.brand-logo{height:38px;width:auto;display:block}
.brand small{font-weight:600;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);padding-left:11px;border-left:1px solid var(--line-2)}
.nav{display:flex;align-items:center;gap:2px;margin-left:auto}
.nav-logout{margin-left:8px;color:var(--faint) !important;font-weight:500}
.nav-logout:hover{color:var(--red) !important;background:#fdecec !important}
.nav a{color:var(--muted);padding:8px 14px;border-radius:var(--radius-sm);font-weight:500;font-size:13.5px;transition:background .15s,color .15s}
.nav a:hover{background:var(--surface-2);text-decoration:none;color:var(--ink)}
.nav a.active{background:var(--brand);color:#fff;font-weight:600}
.topbar .spacer{display:none}
.nav-toggle{display:none;margin-left:auto;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);width:40px;height:38px;font-size:18px;color:var(--ink-2);cursor:pointer}
.nav-toggle:hover{border-color:var(--brand-3);color:var(--brand)}

/* ---- snapshot strip (light pill row) ---- */
.snapstrip{background:var(--surface);border-bottom:1px solid var(--line)}
.snapstrip .wrap{max-width:1280px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:11px 22px;font-size:13px}
.snapstrip .wrap>span{display:inline-flex;align-items:center;gap:7px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:6px 13px}
.snapstrip .k{color:var(--muted);font-weight:500}
.snapstrip .v{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.snapchip span[style*=opacity]{color:var(--muted);font-size:12px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}

/* ---- layout ---- */
.page{max-width:1280px;margin:0 auto;padding:26px 22px 64px}
.page h1{font-size:24px;margin:2px 0 3px;font-weight:700;letter-spacing:-.02em}
.page .sub{color:var(--muted);margin:0 0 20px;font-size:14px}
.grid{display:grid;gap:18px}
.cols-2{grid-template-columns:1fr 1fr}
.cols-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:900px){.cols-2,.cols-3{grid-template-columns:1fr}}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.card h2{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin:0 0 14px;font-weight:600}
.hint{color:var(--muted);font-size:12.5px}

/* ---- hero gauges ---- */
.gauge .score{font-size:48px;font-weight:700;line-height:.92;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.gauge .zone{display:inline-block;margin-top:8px;padding:5px 13px;border-radius:var(--radius-pill);color:#fff;font-weight:600;font-size:13px}
.gauge .meta{color:var(--muted);font-size:13px;margin-top:10px}
.thermo{height:13px;border-radius:8px;margin:18px 0 7px;position:relative;
  background:linear-gradient(90deg,var(--dark-green) 0%,var(--green) 30%,var(--yellow) 55%,var(--orange) 75%,var(--dark-red) 100%)}
.thermo .needle{position:absolute;top:-5px;width:3px;height:23px;background:var(--ink);border-radius:2px;transform:translateX(-50%);box-shadow:0 0 0 2px #fff}
.thermo-scale{display:flex;justify-content:space-between;color:var(--faint);font-size:11px}

/* call of the day */
.callout{border-left:4px solid var(--accent);background:#eef6f1;border-radius:var(--radius-sm);padding:14px 16px}
.callout.warn{border-color:var(--orange);background:#fdf2ec}
.callout .lead{font-weight:700;margin-bottom:2px}

/* stance banner */
.stance{display:flex;gap:16px;align-items:center;border-radius:var(--radius);padding:18px 20px;color:#fff;box-shadow:var(--shadow-sm)}
.stance .ic{font-size:30px;line-height:1}
.stance .style{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.85;font-weight:600}
.stance .name{font-size:21px;font-weight:700;letter-spacing:-.01em}
.stance .why{font-size:13px;opacity:.92;margin-top:3px}

/* ---- style rotation ---- */
.rotation{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;margin:6px 0 4px}
.rot-stage{flex:1;min-width:150px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2);position:relative;transition:border-color .15s,box-shadow .15s}
.rot-stage .ph{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.rot-stage .stl{font-size:16px;font-weight:700;margin-top:2px}
.rot-stage .rl{font-size:11px;margin-top:3px;color:var(--muted)}
.rot-stage.now{border-color:var(--brand);border-width:2px;background:#eef4fa;box-shadow:var(--shadow)}
.rot-stage .nowtag{position:absolute;top:-9px;right:10px;background:var(--brand);color:#fff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:var(--radius-pill)}
.rot-arrow{display:flex;align-items:center;color:#b6c2cf;font-size:18px;padding:0 6px}
@media(max-width:760px){.rot-arrow{transform:rotate(90deg);padding:4px 0}.rotation{flex-direction:column}.rot-stage{min-width:0}}

.styles-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:6px}
@media(max-width:760px){.styles-grid{grid-template-columns:1fr 1fr}}
.style-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface);transition:border-color .15s,box-shadow .15s}
.style-card.now{border-color:var(--brand);border-width:2px;background:#f4f9ff}
.style-card .sn{font-size:15px;font-weight:700;display:flex;justify-content:space-between;align-items:center;gap:6px}
.style-card .bw{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.45}
.style-card .sub{font-size:11px;color:var(--faint);margin-top:5px}
.rolechip{font-size:10px;font-weight:700;padding:3px 8px;border-radius:var(--radius-pill);color:#fff;white-space:nowrap}
.rolechip.agg{background:var(--orange)} .rolechip.def{background:var(--brand-2)}
.rot-stage[data-style]:hover,.style-card[data-style]:hover{border-color:var(--brand-3);box-shadow:var(--shadow);cursor:pointer}

/* allocation */
.alloc-row{display:flex;align-items:center;gap:12px;margin:11px 0}
.alloc-row .lbl{width:96px;font-weight:500;font-size:13px;color:var(--ink-2)}
.bar{flex:1;height:24px;border-radius:8px;background:var(--surface-3);overflow:hidden;display:flex}
.bar span{display:flex;align-items:center;justify-content:center;color:#fff;font-size:11.5px;font-weight:600;white-space:nowrap}
.seg-eq{background:var(--green)} .seg-baf{background:var(--brand-2)} .seg-debt{background:#8a98a6}

/* component bars (0-2) */
.compbar{margin:14px 0}
.compbar .top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
.compbar .track{height:18px;border-radius:8px;position:relative;
  background:linear-gradient(90deg,var(--dark-green),var(--lime) 25%,var(--yellow) 50%,var(--orange) 70%,var(--dark-red))}
.compbar .track .pin{position:absolute;top:-4px;width:3px;height:26px;background:var(--ink);border-radius:2px;transform:translateX(-50%);box-shadow:0 0 0 2px #fff}
.compbar .act{font-size:12px;color:var(--muted);margin-top:5px}

/* as-of stamp — the market score only moves monthly, so its age is always on screen */
.asof{font-size:13px;color:var(--muted);margin:-6px 0 14px}
.asof .age{color:var(--muted)}
.asof .warn-pill{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:11px;
  color:#fff;font-size:12px;font-weight:600}
.callout .lead-date{font-weight:400;opacity:.75}

/* business-cycle ADD/MINUS trigger — neutral track, with the two trigger zones tinted */
.trig{margin:14px 0}
.trig .top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
.trig .track{height:18px;border-radius:8px;position:relative;overflow:hidden;background:var(--surface-3)}
.trig .zone-add{position:absolute;left:0;top:0;height:100%;background:var(--dark-green);opacity:.28}
.trig .zone-minus{position:absolute;top:0;height:100%;background:var(--dark-red);opacity:.28}
.trig .pin{position:absolute;top:-4px;width:3px;height:26px;background:var(--ink);border-radius:2px;
  transform:translateX(-50%);box-shadow:0 0 0 2px #fff}
.trig .act{font-size:12px;color:var(--muted);margin-top:5px}

/* fine tuner gauges */
.ft{margin:16px 0}
.ft .top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px}
.ft .track{height:12px;border-radius:7px;background:var(--surface-3);position:relative}
.ft .fill{position:absolute;height:100%;border-radius:7px;left:0}
.ft .mark{position:absolute;top:-3px;height:18px;width:2px;background:var(--muted)}
.ft .mark.sell{background:var(--red)} .ft .mark.buy{background:var(--accent)}

/* chart */
.chart-wrap{position:relative;height:340px}
.toggle-row{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.btn{border:1px solid var(--line-2);background:var(--surface);border-radius:var(--radius-sm);padding:7px 13px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink-2);transition:border-color .15s,color .15s,background .15s}
.btn:hover{border-color:var(--brand-3);color:var(--brand)}
.btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(13,59,102,.18)}

/* generic table */
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
table.tbl th,table.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
table.tbl th{color:var(--muted);font-weight:600;cursor:pointer;user-select:none;position:sticky;top:0;background:var(--surface);font-size:11.5px;text-transform:uppercase;letter-spacing:.03em}
table.tbl td.num,table.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}
table.tbl tbody tr:hover{background:var(--surface-2)}
.chip{display:inline-block;padding:3px 9px;border-radius:6px;font-size:11.5px;font-weight:600;color:#fff}
.chip.high{background:var(--dark-green)} .chip.medium{background:var(--lime)} .chip.none{background:var(--surface-3);color:var(--muted)}
/* per-fund style tags (Screener scheme view) — coloured by factor so Value/Momentum/etc read at a glance */
.stag{display:inline-block;padding:2px 8px;border-radius:11px;font-size:10.5px;font-weight:700;color:#fff;margin:1px 3px 1px 0;white-space:nowrap;line-height:1.5}
.stag.s-value{background:#2563eb}
.stag.s-momentum{background:#e0592b}
.stag.s-quality{background:#7c3aed}
.stag.s-growth{background:#0f766e}
.stag.s-lowvol{background:#64748b}
.stag.s-other{background:var(--surface-3);color:var(--muted)}
.secpct{font-weight:800;color:var(--brand);font-variant-numeric:tabular-nums}

/* footer / disclaimer */
.footer{max-width:1280px;margin:0 auto;padding:22px;color:var(--faint);font-size:12px;border-top:1px solid var(--line)}
.placeholder{padding:56px;text-align:center;color:var(--muted)}
.tag{font-size:11px;color:var(--muted);background:var(--surface-3);border-radius:6px;padding:2px 7px;margin-left:6px}

/* ---- screener ---- */
.stance-mini{display:flex;align-items:center;gap:12px;border-radius:12px;padding:12px 16px;color:#fff;margin-bottom:16px;flex-wrap:wrap;box-shadow:var(--shadow-sm)}
.stance-mini .nm{font-weight:700;font-size:15px}
.stance-mini .bn{font-size:13px;opacity:.92}
.stance-mini .sp{flex:1}
.switch{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.18);padding:6px 13px;border-radius:var(--radius-pill);cursor:pointer;font-size:13px;font-weight:600;color:#fff;user-select:none}
.switch input{accent-color:#fff}

.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}
.seg button{border:0;background:var(--surface);padding:8px 16px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;color:var(--muted);transition:background .15s,color .15s}
.seg button:hover{background:var(--surface-2)}
.seg button.active{background:var(--brand);color:#fff}

.filterbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:16px}
.filterbar .row{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}
.fld{display:flex;flex-direction:column;gap:4px}
.fld label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.fld select,.fld input{border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:8px 10px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink);min-width:90px;transition:border-color .15s,box-shadow .15s}
.fld select:focus,.fld input:focus{outline:none;border-color:var(--brand-3);box-shadow:0 0 0 3px rgba(30,111,184,.14)}
.fld input{width:110px}
.scheme-only{display:none}
.view-scheme .scheme-only{display:flex}
.view-scheme .amc-only{display:none}

.toolbar{display:flex;align-items:center;gap:12px;margin:8px 0 12px;flex-wrap:wrap}
.toolbar .count{color:var(--muted);font-size:13px}
.toolbar .sp{flex:1}

.tablecard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto;max-height:72vh}
table.tbl th.sorted::after{content:" ▾";opacity:.7}
table.tbl th.sorted.asc::after{content:" ▴"}
table.tbl tbody tr{cursor:pointer}
/* Scheme view: freeze the checkbox + Scheme-name columns so the fund name stays visible
   while scrolling the wide table left/right. (.tablecard is the horizontal scroll container.) */
#screener.view-scheme table.tbl thead th{z-index:3}
#screener.view-scheme table.tbl th:nth-child(1),#screener.view-scheme table.tbl td:nth-child(1){position:sticky;left:0;z-index:2;background:var(--surface);width:34px;min-width:34px;max-width:34px;padding-left:10px;padding-right:4px}
#screener.view-scheme table.tbl th:nth-child(2),#screener.view-scheme table.tbl td:nth-child(2){position:sticky;left:34px;z-index:2;background:var(--surface);box-shadow:6px 0 8px -6px rgba(15,23,42,.22)}
#screener.view-scheme table.tbl thead th:nth-child(1),#screener.view-scheme table.tbl thead th:nth-child(2){z-index:4}
#screener.view-scheme table.tbl tbody tr:hover td:nth-child(1),#screener.view-scheme table.tbl tbody tr:hover td:nth-child(2){background:var(--surface-2)}
/* Column picker */
.colpick-wrap{position:relative;display:inline-block}
.colpanel{position:absolute;top:100%;right:0;margin-top:4px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:6px 8px;z-index:40;display:none;min-width:170px;max-height:340px;overflow:auto}
.colpanel.open{display:block}
.colpanel .cp-t{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;padding:2px 2px 4px}
.colpanel label{display:flex;align-items:center;gap:8px;padding:4px 2px;font-size:13px;white-space:nowrap;cursor:pointer;color:var(--ink)}
.fit{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--line-2)}
.fit.on{background:var(--dark-green)} .fit.mid{background:var(--lime)}
tr.boost{background:#eef6f1}
.badge-ov{display:inline-block;font-size:10px;font-weight:700;color:#fff;background:var(--brand);border-radius:5px;padding:2px 6px;margin-left:5px}
.capref summary{cursor:pointer;font-weight:600;color:var(--brand-3)}
.capref summary:hover{text-decoration:underline}

/* ---- data refresh ---- */
.src-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.src-head h2{margin:0}
.src-badge{font-size:11px;font-weight:600;background:var(--surface-3);color:var(--muted);border-radius:var(--radius-pill);padding:3px 11px;white-space:nowrap}
.fetchbtn{display:inline-block;margin:14px 0 4px;background:var(--brand);color:#fff;border-color:var(--brand)}
.fetchbtn:hover{text-decoration:none;background:var(--brand-2);color:#fff;border-color:var(--brand-2)}
.steps{margin:10px 0;padding-left:20px;font-size:13.5px}
.steps li{margin:5px 0}
.steps code,.hint code,.src-head code{background:var(--surface-3);border-radius:5px;padding:2px 6px;font-family:var(--mono);font-size:12px}
.cmd{display:flex;align-items:center;gap:8px;background:#0c2030;border-radius:var(--radius-sm);padding:9px 12px;margin-top:6px}
.cmd code{color:#dbe7f0;font-family:var(--mono);font-size:13px;flex:1;background:none;padding:0}
.copybtn{background:#1c3a52;color:#fff;border:0;border-radius:7px;padding:6px 13px;cursor:pointer;font-size:12px;font-weight:600;transition:background .15s}
.copybtn:hover{background:#26506f}

/* drawer */
.drawer-ov{position:fixed;inset:0;background:rgba(15,23,42,.4);display:none;z-index:80;backdrop-filter:blur(1px)}
.drawer-ov.open{display:block}
.drawer{position:fixed;top:0;right:0;height:100%;width:440px;max-width:92vw;background:var(--surface);box-shadow:-6px 0 30px rgba(15,23,42,.2);z-index:81;transform:translateX(100%);transition:transform .22s ease;overflow:auto}
.drawer.open{transform:translateX(0)}
.drawer .dh{position:sticky;top:0;background:var(--brand);color:#fff;padding:18px 20px}
.drawer .dh .x{position:absolute;top:14px;right:16px;cursor:pointer;font-size:20px;opacity:.85}
.drawer .dh .x:hover{opacity:1}
.drawer .db{padding:18px 20px}
.drawer dl{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;margin:0}
.drawer dt{color:var(--muted);font-size:12.5px} .drawer dd{margin:0;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.drawer h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin:20px 0 8px;font-weight:600}
.drawer .interp{background:var(--surface-2);border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;line-height:1.55}

/* ---- overlap ---- */
.ov-layout{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.ov-layout{grid-template-columns:1fr}}
#fundlist{max-height:58vh;overflow-y:auto;padding-right:4px}
.rail .fund{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--surface);transition:border-color .15s,box-shadow .15s}
.rail .fund:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm)}
.rail .fund .nm{font-weight:600;font-size:13px;line-height:1.35}
.rail .fund .mt{display:flex;justify-content:space-between;align-items:center;margin-top:7px;font-size:12px;color:var(--muted)}
.rail .fund .acts{display:flex;gap:8px}
.rail .fund .acts a{cursor:pointer;font-size:12px}
.sumok{color:var(--accent);font-weight:700} .sumwarn{color:var(--orange);font-weight:700}
.ctxchip{display:inline-block;background:var(--surface-3);border-radius:6px;padding:2px 7px;font-size:11px;color:var(--muted);margin-right:4px;margin-top:4px}

.matrix{border-collapse:separate;border-spacing:3px}
.matrix th{font-size:11px;color:var(--muted);font-weight:600;padding:3px;max-width:84px;text-align:center;vertical-align:bottom}
.matrix th.rowh{text-align:right;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.matrix td{width:64px;height:42px;text-align:center;color:#fff;font-weight:700;border-radius:8px;cursor:pointer;font-size:13px}
.matrix td.diag{background:var(--surface-3) !important;color:var(--faint);cursor:default}

.pairbox{margin-top:18px}
.twobar{display:flex;height:24px;border-radius:8px;overflow:hidden;margin:8px 0}
.twobar .ovl{background:var(--orange)} .twobar .ua{background:#9aa7b4} .twobar .ub{background:#c8d2dc}
.flagrow{color:var(--red);font-weight:700}
.addbox{border:1px dashed var(--line-2);border-radius:12px;padding:14px;margin-bottom:12px}
.mrow{display:flex;gap:6px;margin-bottom:6px}
.mrow input.s{flex:1} .mrow input.w{width:80px}
.tabs{display:flex;gap:4px;margin-bottom:8px}
.tabs button{font-size:12px;padding:6px 11px}
textarea.paste{width:100%;min-height:90px;border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:10px;font-family:var(--mono);font-size:12px}
.allocbar input{width:64px}

/* ---- overlap comparison (A vs B) ---- */
:root{--ova:#2f8fd0;--ovb:#e8616b;--ovg:#34c38f}
.cmp-top{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.cmp-top .fld{flex:1;min-width:180px}.cmp-top .fld select{width:100%}
.cmp-vs{font-weight:700;color:var(--muted);padding-bottom:8px}
.pill{display:inline-block;color:#fff;font-weight:600;font-size:12px;border-radius:var(--radius-pill);padding:4px 14px}
.pill.a{background:var(--ova)} .pill.b{background:var(--ovb)}

.cmp-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;align-items:stretch}
@media(max-width:980px){.cmp-grid{grid-template-columns:1fr}}

/* Venn weight-bar panel */
.vennwrap{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--surface)}
.venn-pills{display:flex;justify-content:space-between;margin-bottom:6px}
.venn{position:relative;padding:6px 6px 2px}
.venn-frame{position:absolute;top:18px;bottom:26px;border-radius:16px;opacity:.5;pointer-events:none}
.venn-frame.a{left:0;width:67%;border:2px solid var(--ova)}
.venn-frame.b{right:0;width:67%;border:2px solid var(--ovb)}
.venn-cols{position:relative;z-index:1;display:flex;gap:6px}
.vcol{flex:1;display:flex;flex-direction:column;align-items:center;padding:6px 8px}
.vcol.common{flex:1.05}
.vtot{font-weight:800;font-size:15px;margin-bottom:4px;width:100%;text-align:left}.vtot.a{color:var(--ova)}.vtot.b{color:var(--ovb)}
.vcommon{display:flex;gap:14px;justify-content:center;width:100%}
.vsub{flex:1;display:flex;flex-direction:column;align-items:stretch}
.vstack{display:flex;flex-direction:column;gap:2px;width:100%;min-height:80px}
.vbar{height:5px;border-radius:2px}.vbar.a{background:var(--ova)}.vbar.b{background:var(--ovb)}
.vh{font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);text-align:center;margin-top:8px;font-weight:600;line-height:1.3}
.vh-top{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:4px}
.vaxis{position:absolute;left:-2px;top:40%;transform:rotate(-90deg);transform-origin:left;font-size:9px;letter-spacing:.25em;color:var(--faint)}
.vennnote{font-size:11px;color:var(--muted);text-align:center;margin-top:8px}

/* summary cards — full-width KPI strip */
.sumcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media(max-width:980px){.sumcards{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.sumcards{grid-template-columns:1fr}}
.sumcard{border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;align-items:center;gap:12px;background:var(--surface)}
.sumcard.donut{flex-direction:column;justify-content:center;gap:4px;text-align:center}
.sumcard .ic{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;flex:0 0 auto}
.ic.green{background:var(--ovg)} .ic.blue{background:var(--ova)} .ic.red{background:var(--ovb)}
.sumcard .big{font-size:26px;font-weight:800;line-height:1.05;letter-spacing:-.01em}
.sumcard .big2{font-size:18px;font-weight:800;margin-top:6px;color:var(--ink)}
.sumcard .lbl{font-size:12px;color:var(--muted)}
.dlbl{font-size:12px;color:var(--muted)}

/* overlap table with back-to-back bars */
.otable{width:100%;border-collapse:collapse;font-size:13px;margin-top:4px}
.otable th{color:var(--muted);font-weight:600;text-align:left;padding:9px 10px;border-bottom:2px solid var(--line);font-size:11.5px;text-transform:uppercase;letter-spacing:.03em}
.otable th.num{text-align:right}.otable th.bbh{text-align:center}
.otable td{padding:8px 10px;border-bottom:1px solid var(--line)}
.otable td.num{text-align:right;font-variant-numeric:tabular-nums}
.otable td.num.a{color:var(--ova);font-weight:700}.otable td.num.b{color:var(--ovb);font-weight:700}
.sq{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px}.sq.a{background:var(--ova)}.sq.b{background:var(--ovb)}
.bb{width:34%}
.bb .bbrow{display:flex;align-items:center;height:14px}
.bb-half{width:50%;display:flex;align-items:center}
.bb-half.left{justify-content:flex-end;border-right:1px solid var(--line-2)}
.bb-bar{height:9px;border-radius:2px}.bb-bar.a{background:var(--ova)}.bb-bar.b{background:var(--ovb)}

/* ---- client baskets + diversification score ---- */
.bk-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.bk-row .fld select,.bk-row input{padding:8px 10px;border:1px solid var(--line-2);border-radius:var(--radius-sm);font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.fund .memck{display:flex;align-items:center;gap:7px;cursor:pointer}
.fund .memck input{flex:0 0 auto}
.fund.dim{opacity:.5}
.divpanel{display:flex;gap:16px;align-items:flex-start}
.divpanel .grade{flex:0 0 auto;width:58px;height:58px;border-radius:14px;color:#fff;font-weight:800;font-size:30px;display:flex;align-items:center;justify-content:center}
.divpanel .dmeta{flex:1}
.divpanel .big{font-size:16px;font-weight:700}
.dstats{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:6px;font-size:13px;color:var(--muted)}
.dstats strong{color:var(--ink)}
.dwarn{margin-top:10px;background:#fdf2ec;border-left:4px solid var(--orange);border-radius:var(--radius-sm);padding:9px 13px;font-size:13px}
.dwarn a{cursor:pointer;font-weight:700;white-space:nowrap}
.dsug{margin-top:8px;font-size:13px;color:var(--ink)}
.mom{margin-top:8px;font-size:13px}

/* ---- mobile ---- */
@media(max-width:760px){
  .topbar .wrap{padding:0 16px;height:56px;gap:12px}
  .nav-toggle{display:flex}
  .nav{position:absolute;top:56px;left:0;right:0;flex-direction:column;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow-md);padding:8px;gap:2px;display:none;margin-left:0}
  .topbar.nav-open .nav{display:flex}
  .nav a{padding:12px 14px;border-radius:8px;font-size:15px}
  .snapstrip .wrap{padding:10px 16px}
  .page{padding:18px 16px 56px}
  .page h1{font-size:21px}
  .stance{flex-wrap:wrap}
  .brand-logo{height:32px}
  .brand small{display:none}
  .nav-logout{margin-left:0}
}

/* ---- login screen ---- */
.login-page{min-height:100vh;margin:0;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(1200px 600px at 20% -10%,rgba(147,192,31,.22),transparent 60%),
             linear-gradient(135deg,#0d3b66 0%,#14507f 48%,#1b7a3d 130%)}
.login-shell{width:100%;max-width:410px}
.login-card{background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(8,20,35,.4);padding:40px 36px 30px;text-align:center}
.login-logo{width:200px;max-width:72%;height:auto;margin:0 auto 18px;display:block}
.login-card h1{font-size:20px;font-weight:700;margin:4px 0 2px;letter-spacing:-.01em;color:var(--ink)}
.login-sub{color:var(--muted);font-size:14px;margin:0 0 24px}
.login-field{display:block;text-align:left;margin-bottom:15px}
.login-field span{display:block;font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:7px}
.login-field input{width:100%;border:1px solid var(--line-2);border-radius:11px;padding:12px 14px;font:inherit;font-size:14.5px;background:var(--surface-2);transition:border-color .15s,box-shadow .15s,background .15s}
.login-field input:focus{outline:none;border-color:var(--brand-3);background:#fff;box-shadow:0 0 0 3px rgba(30,111,184,.16)}
/* "Keep me logged in" — a checkbox row, so it must NOT inherit .login-field's stacked/uppercase span */
.login-remember{display:flex;align-items:flex-start;gap:9px;text-align:left;margin:-4px 0 4px;cursor:pointer;user-select:none}
.login-remember input{width:16px;height:16px;margin:1px 0 0;flex:0 0 auto;accent-color:var(--brand);cursor:pointer}
.login-remember span{font-size:13.5px;color:var(--muted);line-height:1.35}
.login-remember small{display:block;font-size:11.5px;color:var(--muted);opacity:.75;margin-top:1px}
.login-btn{width:100%;margin-top:10px;background:var(--brand);color:#fff;border:0;border-radius:11px;padding:13px;font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s,transform .05s}
.login-btn:hover{background:var(--brand-2)}
.login-btn:active{transform:scale(.99)}
.login-error{background:#fdecec;border:1px solid #f3c4c4;color:#b3261e;border-radius:11px;padding:11px 13px;font-size:13px;margin-bottom:18px;text-align:left}
.login-foot{text-align:center;color:rgba(255,255,255,.82);font-size:12px;margin-top:20px}

/* ===== Phase 1 — teal accent + glassmorphism + dark mode ===== */
a{color:var(--primary-2)}
.nav a.active{background:var(--primary);color:#fff}
.btn:hover{border-color:var(--primary);color:var(--primary-2)}
.btn.active{background:var(--primary);border-color:var(--primary);color:#fff}
.btn:focus-visible{box-shadow:0 0 0 3px var(--primary-soft)}
.seg button.active{background:var(--primary)}
.login-btn{background:var(--primary)} .login-btn:hover{background:var(--primary-2)}
.fetchbtn{background:var(--primary);border-color:var(--primary)} .fetchbtn:hover{background:var(--primary-2);border-color:var(--primary-2)}
.fld select:focus,.fld input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.login-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.capref summary{color:var(--primary-2)}
.badge-ov{background:var(--primary)}
.callout{border-left-color:var(--primary);background:var(--primary-soft)}
.rot-stage.now,.style-card.now{border-color:var(--primary)}
.rot-stage .nowtag{background:var(--primary)}

/* glassmorphism chrome */
.topbar{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom-color:var(--glass-brd)}
.snapstrip{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}

/* theme toggle */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;margin-left:8px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);cursor:pointer;color:var(--ink-2);font-size:16px;flex:0 0 auto}
.theme-toggle:hover{border-color:var(--primary);color:var(--primary)}

/* ---- dark mode ---- */
:root[data-theme="dark"]{
  --bg:#0e1622; --surface:#16202e; --surface-2:#1d2937; --surface-3:#26344a;
  --ink:#e7eef7; --ink-2:#bcc9da; --muted:#8b9bb1; --faint:#647489;
  --line:#26344a; --line-2:#33455f;
  --brand:#bcd3ef; --brand-2:#9fc0e4; --brand-3:#6fb0ea;
  --glass-bg:rgba(16,24,36,.66); --glass-brd:rgba(255,255,255,.08);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 22px rgba(0,0,0,.45);
  --shadow-md:0 10px 34px rgba(0,0,0,.55);
}
:root[data-theme="dark"] body{background:
  radial-gradient(900px 520px at 100% -10%,rgba(0,191,165,.10),transparent 55%),
  radial-gradient(760px 520px at -10% 8%,rgba(30,111,184,.10),transparent 55%), var(--bg)}
:root[data-theme="dark"] .callout.warn{background:rgba(224,89,43,.14)}
:root[data-theme="dark"] tr.boost{background:rgba(0,191,165,.08)}
:root[data-theme="dark"] .rot-stage{background:var(--surface-2)}
:root[data-theme="dark"] .rot-stage.now,:root[data-theme="dark"] .style-card.now{background:rgba(0,191,165,.10)}
:root[data-theme="dark"] .bar,:root[data-theme="dark"] .ft .track{background:var(--surface-3)}
:root[data-theme="dark"] .matrix td.diag{background:var(--surface-3) !important}
:root[data-theme="dark"] .dwarn{background:rgba(224,89,43,.14)}
:root[data-theme="dark"] .login-card{background:var(--surface)}
:root[data-theme="dark"] .login-field input{background:var(--surface-2)}
:root[data-theme="dark"] .login-error{background:rgba(239,68,68,.14);border-color:rgba(239,68,68,.4);color:#fca5a5}

/* ---- compare page ---- */
.cmp-pick{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}
.cmp-results{position:absolute;top:100%;left:0;right:0;z-index:30;margin-top:4px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);max-height:320px;overflow:auto;display:none}
.cmp-results.open{display:block}
.cmp-res{padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:1px}
.cmp-res:last-child{border-bottom:0}
.cmp-res:hover{background:var(--primary-soft)}
.cmp-res span{font-size:13.5px;font-weight:500;color:var(--ink)}
.cmp-res small{font-size:11.5px;color:var(--muted)}
.cmp-res-empty{padding:11px 12px;color:var(--muted);font-size:13px}
.cmp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.cmp-chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface-2);border:1.5px solid var(--line-2);border-radius:var(--radius-pill);padding:5px 12px;font-size:12.5px;font-weight:500;color:var(--ink)}
.cmp-chip a{cursor:pointer;color:var(--muted);font-weight:700;font-size:15px;line-height:1;margin-left:2px}
.cmp-chip a:hover{color:var(--danger);text-decoration:none}
/* filter bar on the overlap result tables */
.ov-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.ov-filter input,.ov-filter select{border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:7px 10px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.ov-filter input{flex:1;min-width:200px}
.ov-filter input:focus,.ov-filter select:focus{outline:none;border-color:var(--brand-3);box-shadow:0 0 0 3px rgba(30,111,184,.14)}
.cdot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:0 0 auto}
#cmp-table td .cdot,#sip-table td .cdot{margin-right:7px}

/* ---- holdings manager ---- */
.dropzone{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1.5px dashed var(--line-2);border-radius:var(--radius-sm);padding:7px 12px;font-size:12.5px;color:var(--muted);cursor:pointer;min-width:130px;transition:border-color .15s,background .15s,color .15s}
.dropzone:hover,.dropzone:focus{border-color:var(--primary);color:var(--primary-2);outline:none}
.dropzone.over{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-2)}
.amc-auto{display:inline-block;font-size:10.5px;font-weight:700;color:var(--primary-ink);background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--radius-pill);padding:1px 8px;margin-left:4px}
.amc-ok{color:var(--accent);font-weight:700}
.amc-no{color:var(--faint)}
.amc-up{color:var(--faint);font-size:11px}
#hold-table td{white-space:nowrap}
.snum{color:var(--faint);width:48px;font-variant-numeric:tabular-nums}

/* ---- client portfolio x-ray (printable report) ---- */
.xray-doc{max-width:900px;margin:18px auto 0;background:#fff;color:#1f2733;border:1px solid #e6e9ed;border-radius:14px;padding:28px 32px;box-shadow:0 1px 3px rgba(15,23,42,.06)}
.xray-doc h1{font-size:22px;margin:0 0 2px;color:#1f2733}
.xray-doc h2{font-size:14px;margin:20px 0 6px;color:#0f766e;border-bottom:1px solid #eef1f4;padding-bottom:5px;text-transform:none}
.xr-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid #00BFA5;padding-bottom:12px;margin-bottom:14px}
.xr-logo{font-weight:800;font-size:18px;color:#1f7a3d;line-height:1.1}
.xr-brand{display:flex;flex-direction:column}
.xr-logo-img{height:56px;width:auto;display:block;margin-bottom:5px}
.xr-firm{font-size:11.5px;color:#64748b;margin-top:3px}
.xr-meta{font-size:11px;color:#64748b;text-align:right;line-height:1.6;white-space:nowrap}
.xr-title{margin-bottom:6px}
.xr-sub{color:#64748b;font-size:12.5px;margin-top:2px}
.xr-p{font-size:13px;color:#334155;line-height:1.55;margin:4px 0 2px}
.xr-note{font-size:11px;color:#94a3b8;margin:6px 0 0;line-height:1.5}
/* Coverage disclosure on the report cover: which of the client's funds this analysis could NOT
   look through, and what they are worth. Deliberately darker than .xr-note — it is a statement
   of fact the client needs to read, not a footnote — but not alarm-red: holding a debt or
   arbitrage fund we have no portfolio for is perfectly normal, it just can't be x-rayed. */
.xr-note-excl{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-left:3px solid #94a3b8;
  border-radius:6px;padding:7px 10px;margin-top:8px;font-size:11.5px}
.xr-note-excl strong{color:#1e293b}
.xr-note-list{margin-top:3px;color:#64748b;font-size:10.5px;line-height:1.45}
.xr-grade{display:inline-block;min-width:30px;text-align:center;font-weight:800;color:#fff;border-radius:7px;padding:2px 9px;font-size:15px;margin-right:8px;vertical-align:middle}
.xr-tbl{width:100%;border-collapse:collapse;margin:6px 0 4px;font-size:12.5px}
.xr-tbl th,.xr-tbl td{padding:7px 10px;border-bottom:1px solid #eef1f4;text-align:left;vertical-align:top}
.xr-tbl th.num,.xr-tbl td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.xr-tbl thead th{font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:#64748b;border-bottom:1.5px solid #e6e9ed;font-weight:700}
.xr-tbl tfoot th,.xr-tbl tfoot td{font-weight:800;border-top:1.5px solid #e6e9ed;border-bottom:0;color:#1f2733}
.xr-tbl tr.xr-tail td{color:#64748b;font-style:italic}
.xr-tbl tr.xr-tailrow{display:none}
.xr-tbl tr.xr-tailrow td{color:#64748b;font-style:italic}
.xr-disc{font-size:10.5px;color:#94a3b8;margin-top:20px;border-top:1px solid #eef1f4;padding-top:10px;line-height:1.55}
.xr-gen{font-size:10px;color:#b6c0cc;margin-top:6px}
/* Advanced X-ray — mode tabs (screen) + advisory block (in the printable doc) */
.xr-tabs{display:inline-flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:3px;margin-bottom:10px}
.xr-tab{border:0;background:transparent;color:var(--muted);font-weight:600;font-size:13px;padding:6px 14px;border-radius:var(--radius-pill);cursor:pointer}
.xr-tab.active{background:var(--brand);color:#fff}
.xr-advice{margin:4px 0}
.xr-adv{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid #eef1f4;font-size:13px;color:#334155;line-height:1.5}
.xr-adv:last-child{border-bottom:0}
.xr-adv-ic{font-size:16px;flex:0 0 auto;line-height:1.45}
.xr-adv b{color:#0f766e}
.xr-muted{color:#94a3b8}
/* ---- X-ray report redesign: as-on date, Contents, summary cards, goals ---- */
.xr-h2{display:flex;align-items:center;gap:9px}
.xr-secn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;background:#0f766e;color:#fff;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}
.xr-datebar{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.xr-datechip{display:inline-flex;align-items:baseline;gap:5px;background:#f1f7f6;border:1px solid #d9e9e6;border-radius:20px;padding:4px 12px;font-size:12px;color:#1f2733}
.xr-datechip-l{color:#64748b;font-size:10.5px;text-transform:uppercase;letter-spacing:.03em}
.xr-datechip strong{color:#0f766e}
.xr-toc{border:1px solid #e6e9ed;border-radius:12px;padding:14px 18px;margin:18px 0 6px;background:linear-gradient(180deg,#fafcfc,#fff)}
.xr-toc-t{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-weight:700;margin-bottom:6px}
.xr-toc ol{margin:0;padding:0;list-style:none;counter-reset:xrtoc;columns:2;column-gap:28px}
.xr-toc li{counter-increment:xrtoc;break-inside:avoid;padding:3px 0;font-size:13px}
.xr-toc li::before{content:counter(xrtoc);display:inline-block;min-width:20px;color:#0f766e;font-weight:800}
.xr-toc a{color:#1f2733;text-decoration:none;border-bottom:1px solid transparent}
.xr-toc a:hover{border-bottom-color:#0f766e;color:#0f766e}
.xr-cards{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 2px}
.xr-card{flex:1 1 120px;min-width:108px;border:1px solid #e6e9ed;border-radius:12px;padding:12px 14px;background:linear-gradient(180deg,#fbfdfd,#fff);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.xr-card-v{font-size:20px;font-weight:800;color:#1f2733;line-height:1.1;font-variant-numeric:tabular-nums}
.xr-card-l{font-size:11px;color:#334155;font-weight:600;margin-top:3px}
.xr-card-s{font-size:10.5px;color:#94a3b8;margin-top:1px}
.xr-gradesm{display:inline-block;min-width:26px;text-align:center;color:#fff;border-radius:6px;padding:0 8px;font-size:18px;font-weight:800}
.xr-goal{border:1px solid #e6e9ed;border-left:4px solid #0f766e;border-radius:10px;padding:12px 15px;margin:10px 0;background:#fff}
.xr-goal-un{border-left-color:#cbd5e1}
.xr-goal-hd{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.xr-goal-name{font-size:15px;font-weight:800;color:#1f2733}
.xr-goal-meta{font-size:12px;color:#64748b}
.xr-goal-amt{font-size:13px;color:#0f766e;font-weight:800;margin-top:2px}
.xr-goal-amt-l{color:#94a3b8;font-weight:600;font-size:11.5px}
.xr-goalbar{height:7px;border-radius:5px;background:#eef1f4;overflow:hidden;margin:8px 0 4px}
.xr-goalbar span{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#14b8a6);border-radius:5px}
.xr-goalprog{font-size:11.5px;color:#64748b}
.xr-goal-tbl{margin-top:8px}
.xr-goal-tbl thead th{font-size:9.5px}
.xr-nowrap{white-space:nowrap}
/* market-cap mix bar + factor-tilt bars (client X-ray analysis) */
.xr-capbar{display:flex;height:30px;border-radius:8px;overflow:hidden;margin:10px 0;font-size:11px;font-weight:700;color:#fff;background:#eef1f4}
.xr-capbar span{display:flex;align-items:center;justify-content:center;white-space:nowrap;min-width:0}
.xr-capbar .cap-l,.xr-capdot.cap-l{background:#0d3b66}
.xr-capbar .cap-m,.xr-capdot.cap-m{background:#2f8f6b}
.xr-capbar .cap-s,.xr-capdot.cap-s{background:#c99a2e}
.xr-capdot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;vertical-align:middle}
.xr-facwrap{margin:8px 0 2px}
.xr-fac{display:flex;align-items:center;gap:10px;margin:6px 0}
.xr-fac-l{width:104px;flex:0 0 auto;font-size:12.5px;color:#334155;font-weight:600}
.xr-fac-track{flex:1;height:14px;background:#eef1f4;border-radius:7px;overflow:hidden}
.xr-fac-track span{display:block;height:100%;border-radius:7px}
.xr-fac-v{width:42px;flex:0 0 auto;text-align:right;font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums;color:#334155}
.fac-value{background:#2563eb}
.fac-momentum{background:#e0592b}
.fac-quality{background:#7c3aed}
.fac-growth{background:#0f766e}
.fac-lowvol{background:#64748b}
/* goals editor (builder form, screen only — inside .no-print) */
.xr-goalcard{border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2)}
.xr-goalcard-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.xr-goalrow{display:flex;gap:8px;align-items:center;margin:6px 0}
.xr-goaldot{flex:0 0 auto}
.xr-goalrow .xr-g-name{flex:2;min-width:140px}
.xr-goalrow .xr-g-target{flex:1;min-width:110px}
.xr-goalrow .xr-g-horizon{flex:1;min-width:120px}
.xr-g-del{cursor:pointer;color:var(--muted);font-weight:800;font-size:18px;padding:0 4px;flex:0 0 auto;text-decoration:none}
.xr-goalpick{max-width:160px;padding:4px 6px}
/* Family members mode (builder form, screen only — inside .no-print) */
.xr-family-panel{border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2)}
.xr-family-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}
.xr-member-card{border:1px solid var(--line-2);border-radius:10px;padding:10px 14px;margin:8px 0;background:var(--surface)}
.xr-member-card.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.xr-member-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.xr-member-actions{display:flex;gap:6px;flex-wrap:wrap}
.xr-member-actions .btn{font-size:12px;padding:5px 10px}
.xr-member-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--brand);border-radius:var(--radius-sm);padding:9px 12px;background:rgba(0,191,165,.08)}
.xr-member-banner-l{font-weight:700;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.xr-member-banner input{flex:1;min-width:180px}
/* Family members & allocation — inside the printable report */
.xr-family-members-section .xr-tbl{margin-top:6px}
.xr-member-row td{vertical-align:top}
/* client import (Excel / CSV / paste) — screen only */
.xr-import{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2)}
.xr-import-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.xr-tmpl-link{font-size:12.5px;font-weight:600;color:var(--brand);text-decoration:none;white-space:nowrap;flex:0 0 auto}
.xr-tmpl-link:hover{text-decoration:underline}
.xr-drop{flex:1;min-width:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px;border:1.5px dashed var(--line);border-radius:var(--radius);padding:14px;cursor:pointer;color:var(--muted);background:var(--surface);min-height:76px}
.xr-drop small{opacity:.75}
.xr-drop.over,.dropzone.over{border-color:var(--brand);background:rgba(0,191,165,.07);color:var(--ink)}
.xr-or-lbl{font-size:12px;color:var(--muted);margin-bottom:4px}
.xr-paste{width:100%;flex:1;font-family:inherit;font-size:12.5px;resize:vertical;min-height:74px}
#xr-import-result{margin-top:8px;max-height:190px;overflow:auto}
.xr-imp-ok,.xr-imp-no{font-size:12px;padding:2px 0;line-height:1.4}
.xr-imp-ok{color:#334155}
.xr-imp-no{color:#b3261e}
.xr-imp-arrow{color:var(--muted)}
.xr-imp-amt{color:#0f766e;font-weight:700}
.xr-imp-warn{color:#e0592b;font-size:11px}
/* Proposed changes — builder card (screen only, inside .no-print) */
.xr-proposalscard{border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2)}
.xr-proposalscard-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.xr-prop-row{border:1px solid var(--line-2);border-radius:10px;padding:12px;margin:8px 0;background:var(--surface);display:flex;flex-direction:column;gap:10px}
.xr-prop-r1{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.xr-prop-fld-action{flex:0 1 auto;min-width:130px}
.xr-prop-fld-fund{flex:1;min-width:220px;position:relative}
.xr-prop-fld-fund select,.xr-prop-fld-fund input{width:100%}
.xr-prop-fld-amt{flex:0 1 auto;min-width:110px}
.xr-prop-fld-amt input{width:100%}
.xr-prop-current{background:var(--surface-3)}
.xr-prop-r3{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.xr-prop-fld-status{flex:0 1 auto;min-width:190px}
.xr-prop-fld-status select{width:100%}
.xr-prop-timeline{flex:1;min-width:200px;font-size:11px;color:var(--muted);align-self:center;line-height:1.5}
.xr-prop-remove{cursor:pointer;color:var(--danger);font-weight:800;font-size:18px;padding:2px 8px;text-decoration:none;align-self:center}
.xr-prop-fld-rationale input{width:100%;max-width:520px}

/* Proposed changes — report section (screen only; wrapped in .no-print at assembly in xray.js) */
.xr-proposals-tbl{margin-top:6px}
.xr-action-badge{display:inline-block;font-size:11px;font-weight:700;color:#0f766e;background:#e7f5f3;border:1px solid #cfe9e5;border-radius:20px;padding:2px 10px;white-space:nowrap}
.xr-status-block{display:flex;flex-direction:column;gap:3px}
.xr-status-badge{display:inline-block;font-size:11px;font-weight:700;color:#fff;border-radius:20px;padding:2px 10px;white-space:nowrap;width:fit-content}
.xr-status-pending{background:#b8860b}
.xr-status-approved{background:#1b7a3d}
.xr-status-implemented{background:#1e6fb8}
.xr-status-rejected{background:#b3261e}
.xr-timeline{font-size:10px;color:#94a3b8;line-height:1.6}

/* ---------------------- Client Welcome Letter --------------------------- */
.wl-doc{max-width:820px;margin:18px auto 0;background:#fff;color:#243244;font-family:Georgia,"Times New Roman",serif;line-height:1.6;font-size:15px;border:1px solid #e6e9ed;border-radius:14px;padding:40px 46px;box-shadow:0 1px 3px rgba(15,23,42,.06)}
.wl-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.wl-brand{display:flex;flex-direction:column}
.wl-logo{height:56px;width:auto;margin-bottom:6px}
.wl-firm{font-size:23px;font-weight:800;color:#0d3b66;letter-spacing:.2px;font-family:Inter,Georgia,serif}
.wl-tag{font-size:12.5px;font-style:italic;color:#a9843f;letter-spacing:.4px;margin-top:1px}
.wl-reg{font-size:11.5px;color:#5b6b7b;text-align:right;line-height:1.7;font-family:Inter,Arial,sans-serif}
.wl-reg strong{color:#243244}
.wl-rule{border:0;border-top:2px solid #0d3b66;margin:12px 0 0}
.wl-rule::after{content:"";display:block;border-top:1px solid #a9843f;margin-top:2px}
.wl-datel{font-size:12.5px;color:#5b6b7b;margin:14px 0 2px;font-family:Inter,Arial,sans-serif}
.wl-title{font-size:20px;color:#0d3b66;text-align:center;font-weight:800;letter-spacing:.3px;margin:8px 0 16px;font-family:Inter,Georgia,serif}
.wl-salut{font-size:15.5px;margin:0 0 10px}
.wl-p{margin:0 0 12px;text-align:justify}
.wl-lead{margin:0 0 4px}
.wl-quote{margin:14px 24px;padding:8px 18px;border-left:3px solid #a9843f;color:#0d3b66;font-style:italic;font-size:15px}
.wl-h2{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:#0d3b66;font-weight:700;margin:18px 0 6px;font-family:Inter,Arial,sans-serif;border-bottom:1px solid #eef1f4;padding-bottom:3px}
.wl-cols{display:flex;gap:26px;flex-wrap:wrap}
.wl-col{flex:1;min-width:240px}
.wl-list{margin:2px 0 8px;padding-left:20px}
.wl-list li{margin:3px 0}
.wl-rules{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px}
.wl-rules span{font-family:Inter,Arial,sans-serif;font-size:12.5px;font-weight:600;color:#0d3b66;background:#f2f6fb;border:1px solid #dde7f1;border-radius:20px;padding:5px 14px}
.wl-close{margin:18px 0;padding:14px 18px;background:linear-gradient(180deg,#f7faf9,#fff);border:1px solid #e6e9ed;border-left:4px solid #1b7a3d;border-radius:8px;font-size:15.5px}
.wl-sign{margin-top:22px;line-height:1.5}
.wl-sign-warm{font-size:15px}
.wl-sign-team{font-size:17px;font-weight:800;color:#0d3b66;margin-top:4px;font-family:Inter,Georgia,serif}
.wl-sign-tag{font-size:12.5px;font-style:italic;color:#a9843f}
.wl-sign-reg{font-size:11.5px;color:#5b6b7b;margin-top:3px;font-family:Inter,Arial,sans-serif}
.wl-disc{margin-top:20px;border-top:1px solid #eef1f4;padding-top:10px;font-size:10.5px;color:#8593a2;line-height:1.55;font-family:Inter,Arial,sans-serif}

/* ------------------------- Monthly Client Newsletter ------------------------
   Warm-magazine restyle (user-locked 2026-07-30): cream paper, serif display headlines
   (Georgia — GU glyphs fall back per-glyph to the system Gujarati face, which is intended),
   teal brand as accent, amber/gold secondary, rust for trimmed bars. Class names unchanged;
   new blocks: .nl-smart* (three-dials panel), .nl-value* (advisor-value strip), .nl-sign*
   (letter signature). Palette: paper #FBF6EB · panel #F6EFDE · ink #2B241C · muted #857661 ·
   teal #0F766E/#0B544E · amber #B4762A · gold #A9843F · rust #B65C32. */
.nl-doc{max-width:900px;margin:18px auto 0;background:#FBF6EB;color:#2B241C;border:1px solid #E7DCC3;border-radius:14px;padding:30px 36px;box-shadow:0 1px 3px rgba(72,58,32,.10)}
.nl-doc h1{font-size:21px;margin:0 0 2px;color:#2B241C;font-family:Georgia,'Times New Roman',serif;font-weight:700}
.nl-mast{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:3px double #0F766E;padding-bottom:12px;margin-bottom:14px}
.nl-logo-img{height:48px;width:auto;display:block;flex:0 0 auto}
.nl-mast-mid{display:flex;flex-direction:column;justify-content:center;flex:1}
.nl-mast-firm{font-size:14px;font-weight:700;color:#2B241C}
.nl-mast-issue{font-size:11.5px;color:#B4762A;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin-top:2px}
.nl-mast-meta{font-size:11px;color:#857661;text-align:right;line-height:1.6;white-space:nowrap}
/* Wealth Weather cover line (mechanics item 2) — the magazine cover-line hook, directly under
   the masthead: one big serif sentence, 1-2 lines max (break-inside protection lives in the
   @media print atomic list below, alongside every other .nl- block). */
.nl-cover{font-size:29px;font-weight:700;color:#0B544E;line-height:1.22;margin:12px 0 16px;font-family:Georgia,'Times New Roman',serif}
.nl-title{margin-bottom:6px}
.nl-datebar{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.nl-datechip{display:inline-flex;align-items:baseline;gap:5px;background:#F4EBD5;border:1px solid #E0D2AE;border-radius:20px;padding:4px 12px;font-size:12px;color:#2B241C}
.nl-datechip-l{color:#857661;font-size:10.5px;text-transform:uppercase;letter-spacing:.03em}
.nl-datechip strong{color:#0F766E}
.nl-datenote{margin-top:6px;font-size:11px;font-style:italic;color:#857661;line-height:1.5}
.nl-h2{font-size:15px;margin:22px 0 7px;color:#0B544E;border-bottom:1px solid #E3D5B8;padding-bottom:6px;font-family:Georgia,'Times New Roman',serif;font-weight:700}
.nl-h2::before{content:"\25C6\00A0\00A0";color:#B4762A;font-size:10px;vertical-align:2px}
.nl-p{font-size:13px;color:#43382C;line-height:1.6;margin:4px 0 2px}

.nl-pulse{margin-top:4px}
.nl-stanceband{font-size:13.5px;font-weight:700;color:#0B544E;margin-bottom:8px}
.nl-rot{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;margin:6px 0 10px}
.nl-rotseg{flex:1;min-width:120px;border:1px solid #E0D2AE;border-radius:10px;padding:8px 10px;background:#F6EFDE;position:relative}
.nl-rotseg.now{border-color:#0F766E;border-width:2px;background:#FBEED3}
.nl-nowtag{position:absolute;top:-9px;right:8px;background:#0F766E;color:#fff;font-size:9px;font-weight:700;padding:2px 7px;border-radius:20px}
.nl-rotseg-ph{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:#857661;font-weight:600}
.nl-rotseg-stl{font-size:13px;font-weight:700;margin-top:2px;color:#2B241C}
.nl-rotarrow{display:flex;align-items:center;color:#C9B792;font-size:15px;padding:0 4px}

.nl-wtm{display:flex;flex-direction:column;gap:2px;background:#EFF5EA;border:1px solid #D3E0C6;border-left:4px solid #0F766E;border-radius:10px;padding:10px 14px;margin:12px 0 4px}
.nl-wtm-l{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#0F766E}
.nl-wtm-t{font-size:13px;color:#2B241C;line-height:1.5}

.nl-basis{font-size:12px;color:#5C4F3D;background:#F6EFDE;border:1px solid #E0D2AE;border-radius:10px;padding:9px 13px;margin:6px 0 10px;line-height:1.55}
.nl-secbars{margin:6px 0 2px}
.nl-secrow{display:flex;align-items:center;gap:10px;margin:7px 0;font-size:12.5px}
.nl-secrow.nl-neg{opacity:.8}
.nl-sec-name{flex:0 0 175px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#2B241C}
.nl-sec-bar{flex:1 1 auto;min-width:60px;height:11px;background:#EFE5CC;border-radius:6px;overflow:hidden}
.nl-sec-bar span{display:block;height:100%;background:linear-gradient(90deg,#0F766E,#14B8A6);border-radius:6px}
.nl-secrow.nl-neg .nl-sec-bar span{background:linear-gradient(90deg,#B65C32,#D08A5A)}
.nl-sec-lbl{flex:0 0 74px;color:#0F766E;font-size:11.5px}
.nl-secrow.nl-neg .nl-sec-lbl{color:#B65C32}
.nl-sec-note{flex:0 0 260px;color:#857661;font-size:11.5px}

/* "The month in three numbers" — dial tiles. Serif numerals do the talking. */
.nl-smart{margin:14px 0 4px;background:#F6EFDE;border:1px solid #E0D2AE;border-radius:12px;padding:12px 16px 14px}
.nl-smart-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#B4762A;margin-bottom:9px}
.nl-smart-row{display:flex;gap:12px;flex-wrap:wrap}
.nl-smart-tile{flex:1;min-width:170px;background:#FBF6EB;border:1px solid #E7DCC3;border-radius:10px;padding:10px 13px}
.nl-smart-num{font-size:26px;font-weight:700;color:#0B544E;font-family:Georgia,'Times New Roman',serif;line-height:1.1}
.nl-smart-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:#857661;font-weight:700;margin-top:2px}
.nl-smart-sub{font-size:11.5px;color:#5C4F3D;line-height:1.45;margin-top:5px}

/* "India kept investing" — AMFI industry chips (adviser-entered, optional). */
.nl-amfi{margin:12px 0 4px;background:#FBF6EB;border:1px solid #E0D2AE;border-radius:12px;padding:11px 15px 10px;border-left:4px solid #B4762A}
.nl-amfi-t{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#B4762A;margin-bottom:7px}
.nl-amfi-row{display:flex;gap:10px;flex-wrap:wrap}
.nl-amfi-chip{flex:1;min-width:150px;display:flex;flex-direction:column;background:#F6EFDE;border:1px solid #E7DCC3;border-radius:10px;padding:8px 12px}
.nl-amfi-num{font-size:19px;font-weight:700;color:#0B544E;font-family:Georgia,'Times New Roman',serif;line-height:1.15}
.nl-amfi-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:#857661;font-weight:700;margin-top:2px}
.nl-amfi-credit{font-size:10px;color:#9C8D77;margin-top:7px}

/* "Tax corner" — current-regime ready-reckoner (rates live in newsletter.js TAX_EN / GU mirror). */
.nl-tax{margin:14px 0 4px;background:#F6EFDE;border:1px solid #E0D2AE;border-radius:12px;padding:12px 16px}
.nl-tax-t{font-size:15px;font-weight:700;color:#0B544E;font-family:Georgia,'Times New Roman',serif;margin-bottom:7px}
.nl-tax-t::before{content:"\25C6\00A0\00A0";color:#B4762A;font-size:10px;vertical-align:2px}
.nl-tax-row{display:flex;gap:12px;align-items:baseline;padding:5px 0;border-bottom:1px dashed #E0D2AE;font-size:12px}
.nl-tax-row:last-of-type{border-bottom:none}
.nl-tax-k{flex:0 0 46%;font-weight:700;color:#2B241C}
.nl-tax-v{flex:1;color:#43382C}
.nl-tax-tie{margin-top:8px;font-size:12px;color:#0B544E;font-style:italic;font-family:Georgia,'Times New Roman',serif;border-top:1px solid #E0D2AE;padding-top:7px}
.nl-tax-foot{font-size:10px;color:#9C8D77;margin-top:5px}

.nl-edu{margin-top:4px}
.nl-edu-t{font-size:17px;font-weight:700;color:#2B241C;margin-bottom:6px;font-family:Georgia,'Times New Roman',serif}
/* Drop cap — EN issues only (.nl-edu-en set by renderSectionC): ::first-letter on shaped
   Gujarati risks splitting a conjunct/matra cluster, so GU keeps a plain opening. */
.nl-edu-en > .nl-p:first-of-type::first-letter{font-family:Georgia,'Times New Roman',serif;font-size:40px;line-height:.85;float:left;padding:4px 7px 0 0;color:#0F766E;font-weight:700}
.nl-edu-q{margin:14px 0 4px;padding:12px 20px;border-left:none;color:#0B544E;font-style:italic;font-size:14.5px;background:#F6EFDE;border-radius:10px;text-align:center;font-family:Georgia,'Times New Roman',serif;border-top:1px solid #E0D2AE;border-bottom:1px solid #E0D2AE;position:relative}
.nl-edu-q::before{content:"\201C";display:block;font-size:26px;color:#B4762A;line-height:.6;margin-bottom:4px;font-style:normal}

/* "Behind this one page" — advisor-value strip (hidden in compact print, see @media print). */
.nl-value{margin:16px 0 4px;background:#F6EFDE;border:1px solid #E0D2AE;border-radius:12px;padding:13px 16px}
.nl-value-t{font-size:15px;font-weight:700;color:#0B544E;font-family:Georgia,'Times New Roman',serif;margin-bottom:8px}
.nl-value-t::before{content:"\25C6\00A0\00A0";color:#B4762A;font-size:10px;vertical-align:2px}
.nl-value-cols{display:flex;gap:14px;flex-wrap:wrap}
.nl-value-col{flex:1.4;min-width:220px}
.nl-value-see{flex:1;min-width:180px;background:#FBF6EB;border:1px solid #E7DCC3;border-radius:10px;padding:9px 13px}
.nl-value-l{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.09em;color:#B4762A;margin-bottom:4px}
.nl-value-list{margin:2px 0 0;padding-left:0;list-style:none}
.nl-value-list li{font-size:12px;color:#43382C;line-height:1.5;margin:4px 0;padding-left:18px;position:relative}
.nl-value-list li::before{content:"\2713";position:absolute;left:2px;color:#0F766E;font-weight:700}
.nl-value-close{margin-top:9px;font-size:12px;color:#0B544E;font-style:italic;font-family:Georgia,'Times New Roman',serif;border-top:1px solid #E0D2AE;padding-top:7px}

.nl-note{font-size:13px;color:#43382C;line-height:1.65;white-space:pre-wrap;background:#F6EFDE;border:1px solid #E0D2AE;border-radius:10px;padding:13px 16px}
.nl-sign{margin-top:10px;text-align:right;white-space:normal}
.nl-sign-name{font-size:14.5px;font-weight:700;color:#0B544E;font-family:Georgia,'Times New Roman',serif}
.nl-sign-sub{font-size:10.5px;color:#857661;margin-top:1px}

.nl-disc{font-size:10.5px;color:#9C8D77;margin-top:20px;border-top:1px solid #E3D5B8;padding-top:10px;line-height:1.55}
.nl-foot{font-size:10px;color:#B3A488;margin-top:6px}

@media print{
    /* margin:0 removes the browser's default header/footer (page URL, date, title); the page
       margins are provided by the document's own padding instead. */
    .wl-doc{max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;padding:16mm 14mm}
    .wl-close,.wl-rules span,.wl-quote,.wl-datel,.wl-tag,.wl-sign-tag{-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .wl-cols,.wl-sign,.wl-disc,.wl-close{page-break-inside:avoid}
    .wl-h2{page-break-after:avoid}
    @page{margin:0}
}

@media print{
    .topbar,.snapstrip,.footer,.no-print,.nav-toggle,.theme-toggle{display:none !important}
    body{background:#fff !important}
    main{margin:0 !important}
    .page{padding:0 !important}
    .xray-doc{max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;padding:12mm}
    .xr-tbl{font-size:11px}
    .xr-tbl tr{page-break-inside:avoid}
    .xray-doc h2{page-break-after:avoid}
    .xr-toc,.xr-card,.xr-goal,.xr-cards{page-break-inside:avoid}
    .xr-toc a{border-bottom:0 !important;color:#1f2733 !important}
    .xr-datechip{background:#f1f7f6 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .xr-secn,.xr-goalbar span,.xr-gradesm{-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .xr-capbar,.xr-capbar span,.xr-capdot,.xr-fac-track,.xr-fac-track span{-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .xr-capbar,.xr-facwrap{page-break-inside:avoid}
    /* "Print summary" collapses the long stock list to the top rows (PDF only) */
    .xray-doc.summary .xr-extra{display:none !important}
    .xray-doc.summary .xr-tbl tr.xr-tailrow{display:table-row !important}
    /* margin:0 hides the browser's page-URL header/footer; .xray-doc padding gives the margins */
    @page{margin:0}
}

/* ---------------------------- Price charts -------------------------------- */
#pricechart .pc-toolbar{display:flex;gap:18px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
#pricechart .pc-search{position:relative;flex:1;min-width:280px}
#pricechart .pc-search input{width:100%}
#pricechart .pc-controls{display:flex;gap:10px;flex-wrap:wrap}
#pricechart .pc-stage{padding:16px 16px 12px}
#pricechart .pc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:10px}
#pricechart .pc-name{font-size:17px;font-weight:700;color:var(--ink)}
#pricechart .pc-meta{font-size:12.5px;color:var(--muted);margin-top:2px}
#pricechart .pc-stats{display:flex;gap:18px;flex-wrap:wrap}
#pricechart .pc-stat{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}
#pricechart .pc-stat-l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
#pricechart .pc-stat-v{font-size:16px;font-weight:700;color:var(--ink)}
#pricechart .pc-stat-v.up{color:#16b08a}
#pricechart .pc-stat-v.down{color:#e0592b}
#pricechart .pc-chart{width:100%;height:460px}
#pricechart .pc-tabs{display:inline-flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:3px;margin-bottom:10px}
#pricechart .pc-tab{border:0;background:transparent;color:var(--muted);font-weight:600;font-size:13px;padding:6px 14px;border-radius:var(--radius-pill);cursor:pointer}
#pricechart .pc-tab.active{background:var(--brand);color:#fff}
#pricechart .pc-legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:12px;color:var(--text-secondary,var(--muted))}
#pricechart .pc-lg{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
#pricechart .pc-sw{width:13px;height:10px;border-radius:2px;display:inline-block;flex:none}
#pricechart .pc-sw-dash{height:0;width:16px;border-top:2px dashed currentColor;background:none !important;border-radius:0}
#pricechart .pc-empty{padding:40px 10px;text-align:center;color:var(--muted);font-size:14px}
#pricechart .pc-foot{margin-top:10px;font-size:11.5px;color:var(--muted)}
@media (max-width:640px){
  #pricechart .pc-stats{gap:14px}
  #pricechart .pc-stat{align-items:flex-start}
  #pricechart .pc-chart{height:360px}
}

/* ---------------------------- Style DNA (AMC & Fund Attribute) ------------- */
#styledna .sd-sub-h{font-weight:500;color:var(--muted);font-size:.62em}
#styledna h1{margin-bottom:6px}
#styledna .sd-frame{margin:14px 0 18px}
#styledna .sd-note{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:4px 18px}
#styledna .sd-note>summary{cursor:pointer;font-weight:700;color:var(--ink);padding:12px 0;list-style:none}
#styledna .sd-note>summary::-webkit-details-marker{display:none}
#styledna .sd-note>summary::before{content:"▸ ";color:var(--primary)}
#styledna .sd-note[open]>summary::before{content:"▾ "}
#styledna .sd-intro{color:var(--ink-2);font-size:13.5px;margin:2px 0 14px}
#styledna .sd-tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
#styledna .sd-tier{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px}
#styledna .sd-tier-h{font-weight:700;color:var(--ink);font-size:14px}
#styledna .sd-tier-sub{font-weight:600;color:var(--primary-ink);font-size:11.5px;background:var(--primary-soft);padding:1px 7px;border-radius:var(--radius-pill);margin-left:4px}
#styledna .sd-tier-d{color:var(--muted);font-size:12.5px;margin-top:6px;line-height:1.45}
#styledna .sd-roles{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
#styledna .sd-role{font-size:12px;color:var(--ink-2);border:1px solid var(--line-2);border-radius:var(--radius-pill);padding:5px 12px;border-left-width:4px}
#styledna .sd-role.r-anchor{border-left-color:var(--dark-green)}
#styledna .sd-role.r-accelerator{border-left-color:var(--orange)}
#styledna .sd-role.r-stabilizer{border-left-color:var(--brand-3)}
#styledna .sd-princ{color:var(--ink-2);font-size:13px;font-style:italic;border-left:3px solid var(--primary);padding-left:12px;margin:6px 0 10px}

#styledna .sd-panels{display:inline-flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:3px;margin-bottom:16px}
#styledna .sd-panels button{border:0;background:transparent;color:var(--muted);font-weight:600;font-size:13.5px;padding:8px 18px;border-radius:var(--radius-pill);cursor:pointer}
#styledna .sd-panels button.active{background:var(--brand);color:#fff}

#styledna .sd-toolbar{display:flex;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap}
#styledna .sd-toolbar input{flex:1;min-width:280px}
#styledna .sd-count{font-size:12.5px;color:var(--muted);white-space:nowrap}
#styledna .sd-scroll{overflow-x:auto}

#styledna table.tbl th{white-space:nowrap;position:sticky;top:0;background:var(--surface-2);z-index:1}
#styledna .sd-th-note,#styledna .sd-h2-note{font-weight:500;color:var(--muted);font-size:.82em;margin-left:4px}
#styledna .sd-amc-tbl td,#styledna .sd-attrib-tbl td{vertical-align:top;font-size:13px;line-height:1.45}
#styledna .sd-amc-nm,#styledna .sd-fund-nm{font-weight:700;color:var(--ink);min-width:130px}
#styledna .sd-interp{color:var(--muted);min-width:230px}
#styledna .sd-strat{color:var(--brand-3);font-weight:600;min-width:150px}
#styledna .sd-risk{color:var(--orange);min-width:190px}
#styledna .sd-ret{color:var(--dark-green);min-width:190px}
#styledna .sd-partner{color:var(--ink-2);min-width:170px}
#styledna .sd-garp{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:var(--radius-pill);white-space:nowrap}
#styledna .sd-garp.g5{background:rgba(27,122,61,.14);color:var(--dark-green)}
#styledna .sd-garp.g4{background:rgba(124,179,66,.16);color:#5a8021}
#styledna .sd-garp.g3{background:rgba(224,180,0,.16);color:#8a6d00}
#styledna .sd-garp.g2{background:rgba(224,89,43,.14);color:var(--orange)}
#styledna .sd-garp.g1{background:rgba(192,57,43,.13);color:var(--red)}
#styledna .sd-garp.g0{background:rgba(107,116,128,.16);color:var(--muted)}

#styledna .sd-cattabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
#styledna .sd-cattabs button{border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-weight:600;font-size:13px;padding:7px 16px;border-radius:var(--radius-pill);cursor:pointer}
#styledna .sd-cattabs button:hover{border-color:var(--primary)}
#styledna .sd-cattabs button.active{background:var(--primary);border-color:var(--primary);color:#fff}
#styledna .sd-h2{font-size:16px;font-weight:700;color:var(--ink);margin:18px 0 12px}
#styledna .sd-combos{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-bottom:8px}
#styledna .sd-combo{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--primary);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:14px 16px}
#styledna .sd-combo-h{font-weight:800;color:var(--primary-ink);font-size:13px;margin-bottom:10px}
#styledna .sd-slot{margin-bottom:9px;border-left:3px solid var(--line-2);padding-left:9px}
#styledna .sd-slot.s-anchor{border-left-color:var(--dark-green)}
#styledna .sd-slot.s-accel{border-left-color:var(--orange)}
#styledna .sd-slot.s-stab{border-left-color:var(--brand-3)}
#styledna .sd-slot-l{display:block;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
#styledna .sd-slot.s-anchor .sd-slot-l{color:var(--dark-green)}
#styledna .sd-slot.s-accel .sd-slot-l{color:var(--orange)}
#styledna .sd-slot.s-stab .sd-slot-l{color:var(--brand-3)}
#styledna .sd-slot-v{display:block;font-weight:600;color:var(--ink);font-size:13.5px;margin-top:1px}
#styledna .sd-disc{margin-top:20px;font-size:11.5px;color:var(--faint);line-height:1.5}
@media (max-width:720px){
  #styledna .sd-tiers{grid-template-columns:1fr}
}

/* ------------------- Unified Client Report (X-ray upgrade) ----------------- */
/* builder options row (screen only) */
.xr-optrow{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}
.xr-optrow-l{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.xr-opt{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-weight:600}
/* Per-scheme include/exclude ("Use" column) — excluded rows stay visible but clearly inert */
.xr-row-off{opacity:.42}
.xr-row-off td strong{text-decoration:line-through}
.xr-usebar{margin-top:10px;padding:9px 12px;border:1px solid #f0c36d;background:#fff8e6;color:#7a5b12;
  border-radius:8px;font-size:13px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.xr-usebar .btn{margin-left:auto}
/* "Stock universe only" is exclusive — the options it overrides grey out while it is on */
/* dimmed = "no effect while Stock-universe-only is on", but still clickable (not disabled) */
.xr-opt-off{opacity:.5}
.xr-opt-only{padding-left:14px;border-left:1px solid var(--line,#e5e7eb)}
/* "What this means for you" callout */
.xr-wtm{display:flex;flex-direction:column;gap:2px;background:#f0faf8;border:1px solid #cdeae4;border-left:4px solid #0f766e;border-radius:10px;padding:10px 14px;margin:12px 0 4px}
.xr-wtm-l{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:#0f766e}
.xr-wtm-t{font-size:13px;color:#1f2733;line-height:1.5}
/* sub-headings inside a numbered section */
.xr-h3{font-size:12.5px;font-weight:800;color:#334155;margin:16px 0 4px;text-transform:uppercase;letter-spacing:.04em}
/* executive summary (cover page) */
.xr-exec{border:1.5px solid #0f766e;border-radius:14px;padding:16px 20px 14px;margin:16px 0 6px;background:linear-gradient(180deg,#fafdfc,#fff)}
.xr-exec-t{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.09em;color:#0f766e;margin-bottom:8px}
.xr-exec-l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:12px 0 4px}
.xr-exec-cols{display:flex;gap:24px;flex-wrap:wrap}
.xr-exec-cols>div{flex:1;min-width:240px}
.xr-exec .xr-tbl td{padding:5px 8px;font-size:12px}
.xr-assetbar{display:flex;height:30px;border-radius:8px;overflow:hidden;font-size:11px;font-weight:700;color:#fff;background:#eef1f4}
.xr-assetbar span{display:flex;align-items:center;justify-content:center;white-space:nowrap;min-width:0;overflow:hidden}
.xr-assetbar .as-eq{background:#0d3b66}
.xr-assetbar .as-gold{background:#c99a2e}
.xr-assetbar .as-ovr{background:#2563eb}
.xr-assetbar .as-cash{background:#94a3b8}
/* style-philosophy pillar cards */
.xr-pillars{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
.xr-pillar{flex:1;min-width:200px;border:1px solid #e6e9ed;border-top:3px solid #0f766e;border-radius:10px;padding:11px 14px;background:#fbfdfd}
.xr-pillar-h{font-size:13px;font-weight:800;color:#1f2733;margin-bottom:4px}
.xr-pillar-d{font-size:12px;color:#475569;line-height:1.5}
/* welcome letter, embedded in the report (serif, letter-like) */
.xw-wrap{font-family:Georgia,"Times New Roman",serif;font-size:14px;line-height:1.6;color:#243244;margin-top:4px}
.xw-datel{font-size:12px;color:#5b6b7b;font-family:Inter,Arial,sans-serif;margin-bottom:6px}
.xw-salut{font-size:15px;margin:0 0 10px}
.xw-p{margin:0 0 11px;text-align:justify}
.xw-quote{margin:12px 22px;padding:7px 16px;border-left:3px solid #a9843f;color:#0d3b66;font-style:italic;font-size:14px}
.xw-h2{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:#0d3b66;font-weight:700;margin:15px 0 5px;font-family:Inter,Arial,sans-serif;border-bottom:1px solid #eef1f4;padding-bottom:3px}
.xw-cols{display:flex;gap:24px;flex-wrap:wrap}
.xw-col{flex:1;min-width:230px}
.xw-list{margin:2px 0 8px;padding-left:19px}
.xw-list li{margin:3px 0}
.xw-rules{display:flex;flex-wrap:wrap;gap:7px;margin:6px 0 4px}
.xw-rules span{font-family:Inter,Arial,sans-serif;font-size:11.5px;font-weight:600;color:#0d3b66;background:#f2f6fb;border:1px solid #dde7f1;border-radius:20px;padding:4px 12px}
.xw-close{margin:15px 0;padding:12px 16px;background:linear-gradient(180deg,#f7faf9,#fff);border:1px solid #e6e9ed;border-left:4px solid #1b7a3d;border-radius:8px;font-size:14.5px}
.xw-sign{margin-top:18px;line-height:1.5}
.xw-sign-team{font-size:16px;font-weight:800;color:#0d3b66;margin-top:3px;font-family:Inter,Georgia,serif}
.xw-sign-tag{font-size:12px;font-style:italic;color:#a9843f}
.xw-sign-reg{font-size:11px;color:#5b6b7b;margin-top:3px;font-family:Inter,Arial,sans-serif}
/* next steps list */
.xr-next{margin:6px 0 4px;padding-left:20px}
.xr-next li{font-size:13px;color:#334155;line-height:1.55;margin:6px 0}
@media (max-width:640px){
  .xr-exec-cols,.xr-pillars,.xw-cols{flex-direction:column}
}
@media print{
  .xr-break{page-break-after:always;height:0;overflow:hidden}
  /* no forced break after the welcome — let the next section flow up so the sign-off
     doesn't get orphaned onto a near-blank page. The sign-off block stays intact below. */
  .xr-wtm,.xr-pillar,.xr-exec,.xw-close,.xw-cols,.xw-sign,.xw-rules{page-break-inside:avoid}
  .xr-h2{page-break-after:avoid}
  .xr-wtm,.xr-exec,.xr-pillar,.xw-rules span,.xw-quote,.xw-close,.xr-assetbar,.xr-assetbar span{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .xr-h3{page-break-after:avoid}
}

/* ------------------- Screener upgrades (Workstream B) ---------------------- */
/* saved screens (presets) */
.presetbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px;padding:9px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm)}
.preset-l{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap}
.presetbar select{max-width:230px}
.presetbar input{flex:1;min-width:180px;max-width:320px}
/* multi-select pickers */
.mpick{position:relative}
.mpick-btn{white-space:nowrap;max-width:190px;overflow:hidden;text-overflow:ellipsis}
.mpick-btn.on{border-color:var(--primary);color:var(--primary-ink);background:var(--primary-soft);font-weight:700}
.mpick-panel{display:none;position:absolute;top:calc(100% + 4px);left:0;z-index:60;min-width:250px;max-height:300px;overflow:auto;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:8px 10px}
.mpick-panel.open{display:block}
.mpick-panel label{display:flex;gap:7px;align-items:center;font-size:13px;padding:3px 2px;cursor:pointer;color:var(--ink-2)}
.mpick-panel label:hover{color:var(--ink)}
/* performance range filters */
.scr-ranges{flex-basis:100%;margin-top:4px}
.scr-ranges>summary{cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted);list-style:none;padding:2px 0}
.scr-ranges>summary::-webkit-details-marker{display:none}
.scr-ranges[open]>summary{color:var(--primary-ink)}
.scr-ranges .row{margin-top:6px}
.rng-pair{display:flex;gap:4px;align-items:center}
.rng-pair input{width:74px}
.rng-pair span{color:var(--faint)}
/* peer-quartile + fit-score chips */
.pq{display:inline-block;min-width:26px;text-align:center;font-size:11px;font-weight:800;border-radius:6px;padding:2px 6px;cursor:help}
.pq1{background:rgba(27,122,61,.15);color:var(--dark-green)}
.pq2{background:rgba(124,179,66,.16);color:#5a8021}
.pq3{background:rgba(224,180,0,.16);color:#8a6d00}
.pq4{background:rgba(192,57,43,.13);color:var(--red)}
.scpill{display:inline-block;min-width:30px;text-align:center;font-size:12px;font-weight:800;border-radius:7px;padding:2px 7px;color:#fff}
.scpill.sc-hi{background:#1b7a3d}
.scpill.sc-mid{background:#c99a2e}
.scpill.sc-lo{background:#8a98a6}
/* fit-score breakdown in the drawer */
.fs-parts{margin:4px 0 2px}
.fs-part{display:flex;align-items:center;gap:9px;margin:5px 0}
.fs-l{flex:0 0 172px;font-size:12px;color:var(--ink-2)}
.fs-track{flex:1;height:11px;background:var(--surface-3);border-radius:6px;overflow:hidden}
.fs-track span{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#14b8a6);border-radius:6px}
.fs-v{flex:0 0 64px;text-align:right;font-size:12px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.fs-v small{color:var(--faint);font-weight:600}
/* mobile: filters collapse behind a toggle */
.filters-toggle{display:none;margin-bottom:8px}
@media (max-width:720px){
  .filters-toggle{display:inline-block}
  #filterbar{display:none}
  #filterbar.open{display:block}
  .presetbar input{min-width:120px}
}

/* ------------------------------ Left sidebar ------------------------------- */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:236px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:90;overflow-y:auto;overscroll-behavior:contain}
.sb-brand{display:flex;flex-direction:column;gap:2px;padding:18px 18px 8px;text-decoration:none}
.sb-brand:hover{text-decoration:none}
.sb-logo{height:44px;width:auto;align-self:flex-start}
.sb-brand small{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.03em}
.sb-nav{flex:1;padding-bottom:10px}
.sb-group{font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:800;padding:16px 18px 5px}
.sb-nav a{display:flex;align-items:center;gap:10px;padding:7px 18px;color:var(--ink-2);font-weight:600;font-size:13.5px;text-decoration:none;border-left:3px solid transparent;line-height:1.35}
.sb-nav a:hover{background:var(--surface-2);text-decoration:none;color:var(--ink)}
.sb-nav a.active{border-left-color:var(--primary);background:var(--primary-soft);color:var(--primary-ink)}
.sb-ic{width:20px;flex:0 0 auto;text-align:center;font-size:14px}
.sb-foot{margin-top:auto;padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center}
.sb-logout{font-size:12.5px;font-weight:700;color:var(--muted)}
.sb-logout:hover{color:var(--danger);text-decoration:none}
.main-wrap{margin-left:236px;min-height:100vh;display:flex;flex-direction:column}
.main-wrap main{flex:1}
.mobilebar{display:none;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:80}
.mobilebar .nav-toggle{border:1px solid var(--line-2);background:var(--surface);border-radius:8px;font-size:18px;padding:4px 10px;cursor:pointer;color:var(--ink)}
.mb-brand img{height:34px;display:block}
.sb-ov{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:85}
@media (max-width:900px){
  .sidebar{transform:translateX(-102%);transition:transform .22s ease;box-shadow:var(--shadow-md)}
  body.sb-open .sidebar{transform:none}
  body.sb-open .sb-ov{display:block}
  .main-wrap{margin-left:0}
  .mobilebar{display:flex}
}
@media print{
  .sidebar,.mobilebar,.sb-ov{display:none !important}
  .main-wrap{margin-left:0 !important}
}

/* ------------------------------ Clients page ------------------------------- */
#clients .cl-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
#clients .cl-toolbar input{flex:1;min-width:240px}
.cl-card{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:14px 18px;margin-bottom:12px}
.cl-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.cl-name{font-size:16px;font-weight:800;color:var(--ink)}
.cl-meta{font-size:12.5px;color:var(--muted);margin-top:2px}
.cl-contact{font-size:12px;color:var(--muted);margin-top:3px}
/* New-client form (Clients page header card) */
.cl-new-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.cl-new-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}
.cl-new-row .fld{flex:1;min-width:190px}
.cl-more-wrap{display:flex;justify-content:center;margin:6px 0 14px}
.cl-open{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:700}
.cl-open:hover{filter:brightness(1.06);color:#fff}
.cl-famchip{display:inline-block;font-size:11px;font-weight:700;color:var(--primary-ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:1px 8px;margin-left:6px;vertical-align:2px}

/* --------------------------- Client profile page --------------------------- */
.cp-crumb{margin-bottom:10px;font-size:13px}
.cp-crumb a{color:var(--muted);text-decoration:none;font-weight:600}
.cp-crumb a:hover{color:var(--primary-ink)}
.cp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.cp-head h1{margin:0;font-size:24px}
.cp-head-r{display:flex;gap:8px;flex-wrap:wrap}
.cp-sub{font-size:12.5px;color:var(--muted);margin-top:4px}
.cp-contact{font-size:13px;color:var(--ink-2);margin-top:8px}
.cp-contact a{color:var(--primary-ink)}
.cp-danger:hover{border-color:var(--danger);color:var(--danger)}
.cp-edit-row{display:flex;gap:14px;flex-wrap:wrap}
.cp-edit-row .fld{flex:1;min-width:190px}
/* Summary tiles: same equal-share approach as the X-ray cards so 3 tiles never wrap to 2+1 */
.cp-stats{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.cp-stat{flex:1 1 0;min-width:150px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:14px 16px}
.cp-stat-v{font-size:21px;font-weight:800;color:var(--ink);line-height:1.15;font-variant-numeric:tabular-nums}
.cp-stat-l{font-size:12px;font-weight:700;color:var(--ink-2);margin-top:4px}
.cp-stat-s{font-size:11.5px;color:var(--muted);margin-top:1px}
.cp-sec-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.cp-add-grid{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:4px}
.cp-add-grid .fld{flex:1;min-width:150px}
.cp-add-grid .fld:first-child{flex:2;min-width:240px}
.cp-add-btn{flex:0 0 auto !important;min-width:0 !important}
.cp-tbl-wrap{overflow-x:auto}
.cp-tbl{width:100%}
.cp-tbl .num{text-align:right}
.cp-in{width:110px;text-align:right;padding:4px 8px;font-size:13px;font-variant-numeric:tabular-nums}
.cp-up{color:var(--accent);font-weight:700}
.cp-down{color:var(--danger);font-weight:700}
.cp-pct{font-size:11.5px;opacity:.85}
.cp-flag{font-size:10.5px;font-weight:700;color:#8a6d00;background:#fff6d6;border:1px solid #f0dfa0;border-radius:var(--radius-pill);padding:1px 7px;margin-left:6px;white-space:nowrap}
.cp-inv-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.cp-partial{flex:1 1 100%;font-size:12px;color:#8a6d00;background:#fff9e6;border:1px solid #f0dfa0;border-radius:var(--radius-sm);padding:8px 12px}
.cp-foot-note{font-size:10.5px;font-weight:600;color:var(--muted);white-space:nowrap}
.cp-member{border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:8px;background:var(--surface)}
.cp-member-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.cp-member-tot{font-weight:800;color:var(--primary-ink);font-variant-numeric:tabular-nums}
.cp-tools{display:flex;gap:8px;flex-wrap:wrap}
.cp-tool{font-weight:600}
@media screen and (max-width:640px){
  .cp-in{width:88px}
  .cp-stat{min-width:120px}
}
/* Clients-page book summary. The four tiles reuse .cp-stat from the client profile so the two
   pages read as one system; only the size-band rows below need their own rules. Bars are scaled
   to the LARGEST band, not to the book, so the shape of the book stays legible when one band
   dominates — a bar scaled to the total would render every other band as a hairline. */
/* Keep the sign welded to its number: at two-column widths "+₹5,65,98,692" broke after the "+",
   leaving a lone plus on its own line. Scoped to #cl-summary so .cp-stat on the client profile,
   which shares these classes, is untouched. */
#cl-summary .cp-stat-v{white-space:nowrap}
@media screen and (max-width:520px){ #cl-summary .cp-stat-v{font-size:18px} }
.cl-bands{margin-bottom:14px;padding:12px 16px}
.cl-bands-h{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:8px}
.cl-band{display:grid;grid-template-columns:110px 1fr 92px 116px 52px;gap:10px;align-items:center;
  padding:3px 0;font-size:12.5px;font-variant-numeric:tabular-nums}
.cl-band-l{color:var(--ink-2);font-weight:600}
.cl-band-bar{background:var(--line);border-radius:99px;height:8px;overflow:hidden}
.cl-band-bar i{display:block;height:100%;background:var(--brand);border-radius:99px}
.cl-band-n{color:var(--muted);text-align:right}
.cl-band-v{text-align:right;font-weight:700;color:var(--ink)}
.cl-band-p{text-align:right;color:var(--muted)}
@media screen and (max-width:720px){
  /* Screen-only (see the print notes in this file): at A4 the grid must stay intact. */
  .cl-band{grid-template-columns:96px 1fr 96px;row-gap:2px}
  .cl-band-n{display:none}
  .cl-band-p{display:none}
}
.cl-total{font-size:17px;font-weight:800;color:var(--primary-ink);font-variant-numeric:tabular-nums}
.cl-funds{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.cl-fund{font-size:11.5px;font-weight:600;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);padding:3px 10px}
.cl-fund.cl-more{color:var(--muted);border-style:dashed}
.cl-actions{display:flex;gap:8px;flex-wrap:wrap}
.cl-actions .btn{font-size:12.5px;padding:5px 12px}
.cl-actions .cl-del{color:var(--muted);cursor:pointer}
.cl-actions .cl-del:hover{color:var(--danger);border-color:var(--danger)}

/* ------------------------------ WhatsApp page ------------------------------ */
#whatsapp .wa-grid{align-items:start}
#whatsapp .wa-text{width:100%;font-family:inherit;font-size:13.5px;line-height:1.55;resize:vertical}
@media (max-width:860px){ #whatsapp .wa-grid{grid-template-columns:1fr} }

/* ------------------------------ Favourites --------------------------------- */
.favstar{cursor:pointer;font-size:16px;color:var(--faint);display:inline-block;min-width:20px;text-align:center;user-select:none}
.favstar:hover{color:#c99a2e;transform:scale(1.15)}
.favstar.on{color:#e0a800}
#favs .fv-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#favs .fv-missing td{color:var(--faint)}
#favs .fv-del{cursor:pointer;color:var(--muted);font-weight:800;font-size:16px;padding:0 6px;text-decoration:none}
#favs .fv-del:hover{color:var(--danger)}
.xr-srno{color:var(--faint);font-variant-numeric:tabular-nums;width:34px}

/* columns picker: select-all / clear-all */
.cp-actions{display:flex;gap:6px;margin:2px 0 8px}
.cp-actions button{flex:1;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:11.5px;font-weight:700;padding:4px 8px;border-radius:7px;cursor:pointer}
.cp-actions button:hover{border-color:var(--primary);color:var(--primary-ink);background:var(--primary-soft)}

/* ===== Stock Bucket (AMC Holdings Intelligence) ===== */
.bk-basis{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:14px;font-size:12.5px}
.bk-stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.bk-stat{flex:1;min-width:130px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:12px 14px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.bk-stat:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.bk-stat-v{font-size:22px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.bk-stat-l{font-size:11.5px;color:var(--muted);margin-top:3px}
.bk-h2{font-size:15px;font-weight:700;margin:26px 0 4px;color:var(--ink)}
.bk-up{color:var(--dark-green);font-weight:700}
.bk-down{color:var(--dark-red);font-weight:700}
.bk-smrow{display:flex;gap:14px;flex-wrap:wrap}
/* the four smart-money panels sit in a 2×2 grid on desktop, stacking on narrow screens.
   (.bk-smcol was a flex ITEM from day one, but the row lacked display:flex — the panels
   silently stacked full-width into a ~1400px wall.) */
.bk-smrow{display:flex;flex-wrap:wrap;gap:16px}
.bk-smcol{flex:1 1 46%;min-width:300px}
.bk-smtbl td:nth-child(2){max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-smcol h3{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-weight:700}
table.bk-smtbl{font-size:12px}
table.bk-smtbl th,table.bk-smtbl td{padding:6px 8px}
.bk-secbars{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}
.bk-secrow{display:flex;align-items:center;gap:10px;margin:7px 0;font-size:12.5px}
.bk-secrow.bk-neg{opacity:.55}
.bk-sec-l{flex:0 0 190px;color:var(--ink-2);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-sec-v{flex:0 0 64px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
.bk-consensus{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;margin-bottom:6px}
.bk-consensus summary{cursor:pointer;font-weight:600;color:var(--brand-3)}
.bk-conlist{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
.bk-conlist .chip{cursor:pointer}
.bk-priocols{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.bk-priocols{grid-template-columns:1fr}}
.bk-priocol{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:12px 14px;max-height:420px;overflow:auto}
.bk-priocol h3{margin:0 0 8px;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.bk-priorow{border-bottom:1px solid var(--line);padding:8px 0;cursor:pointer}
.bk-priorow:last-child{border-bottom:0}
.bk-priorow-t{font-weight:700;font-size:13px;display:flex;justify-content:space-between;gap:8px;align-items:center}
.bk-priorow-r{font-size:12px;color:var(--muted);margin-top:3px}
.bk-stealth{display:inline-block;margin-top:4px;font-size:10.5px;font-weight:700;color:var(--primary-ink);background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--radius-pill);padding:1px 8px}

/* =====================================================================
   PUBLICATION-QUALITY PRINT — client X-ray report as an A4 PDF.
   Appended last so it authoritatively governs the printed report
   (overrides the earlier, fragmented print blocks). Print-scoped, so
   on-screen rendering is untouched. Goal: perfect pagination — no
   heading, table row, chart, card or paragraph split across a page.
   ===================================================================== */
@media print {
  /* A4 with generous, even margins; the margin area carries a running footer
     (which also replaces the browser's default URL/date header & footer). */
  @page {
    size: A4 portrait;
    margin: 17mm 16mm 15mm;
    @top-center { content: ""; }
    @top-left { content: ""; }
    @top-right { content: ""; }
    @bottom-center { content: ""; }
    @bottom-left {
      content: "Wealth By Rule  ·  Private & Confidential";
      font-family: 'Inter', Arial, sans-serif; font-size: 7.5pt; color: #aeb6c1;
      letter-spacing: .02em;
    }
    @bottom-right {
      content: "Page " counter(page) " of " counter(pages);
      font-family: 'Inter', Arial, sans-serif; font-size: 7.5pt; color: #aeb6c1;
      letter-spacing: .02em;
    }
  }
  /* @page supplies the margins now — the document itself has none */
  .xray-doc, .wl-doc, .nl-doc { padding: 0 !important; margin: 0 !important; }

  /* never let a floating widget bleed onto the printed page (CI4 debug toolbar in dev,
     any fixed helper, etc.) — the report must be the only thing on paper */
  #debug-icon, #debug-bar, .debug-bar, [id^="debugbar"] { display: none !important; }

  /* colour fidelity: every branded bar / badge / rule prints in colour */
  .xray-doc *, .wl-doc *, .nl-doc * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

  /* ---- keep every heading with the content that follows it ---- */
  .xray-doc h1, .xray-doc h2, .xray-doc .xr-h2, .xray-doc .xr-h3,
  .xw-h2, .wl-h2, .xr-exec-t, .xr-exec-l, .xr-toc-t,
  .nl-doc h1, .nl-h2, .nl-edu-t {
    break-after: avoid-page !important; page-break-after: avoid !important;
    break-inside: avoid; page-break-inside: avoid;
  }
  .xr-h2 + *, .xr-h3 + * { break-before: avoid; }

  /* break-after:avoid only binds a heading to its ONE next sibling. Most sections emit
     <h2> + a one-line intro (.xr-note/.xr-p) + the real content, so the chain ended at the
     intro: heading+intro sat at the foot of a page while the table began overleaf. Carrying
     break-after:avoid onto that intro extends the chain to heading+intro+content, so the trio
     moves to the next page together instead of stranding. */
  .xr-h2 + .xr-note, .xr-h2 + .xr-p, .xr-h2 + .xr-sub, .xr-h2 + .xr-intro,
  .xr-h3 + .xr-note, .xr-h3 + .xr-p, .xr-h3 + .xr-sub, .xr-h3 + .xr-intro {
    break-after: avoid-page !important; page-break-after: avoid !important;
  }
  /* break-after binds ONE sibling only (measured fact, see note above) — the newsletter's own
     heading+intro chains need the same one-step treatment. */
  .nl-h2 + .nl-p, .nl-h2 + .nl-basis, .nl-h2 + .nl-pulse {
    break-after: avoid-page !important; page-break-after: avoid !important;
  }

  /* NOTE: break-after:avoid only binds a block to its IMMEDIATE next sibling — Chrome does not
     propagate it along a chain. Measured: for the closing run (.xr-next → .xr-note → .xr-disc →
     .xr-gen), adding break-after:avoid to every link renders byte-identically to adding none, in
     both the `avoid` and `avoid-page` spellings. So do NOT try to compose the closing page that
     way; it is a no-op. The bullets are held together by .xr-next's break-inside:avoid below. */

  /* ---- line breaking: no single-word "runts" on a heading's last line ----
          "Your Portfolio Report — Darshil Shah HUF — Consolidated Portfolio" broke with the
          final word alone on line 2. `balance` splits a heading into even lines instead;
          `pretty` stops body copy and contents entries ending on a lone word. Both degrade
          silently to normal wrapping on engines that don't support them. */
  .xr-h2, .xr-h3, .xw-h2, .wl-h2, .nl-h2 { text-wrap: balance; }
  .xr-p, .xr-note, .xr-sub, .xr-intro, .xw-p, .wl-p, .xr-disc { text-wrap: pretty; }

  /* The report title is "<title> — <client> — <scope>". At 22px it overran the printed
     type area by a hair and balanced into two lines that broke INSIDE the client's name
     ("Darshil / Shah HUF") — splitting a person's name across lines is the one break a
     financial report must never make. 19px fits a typical title on one line; when a long
     name does force a wrap, `balance` is deliberately NOT used here (it optimises for even
     line lengths, which is exactly what put the break mid-name). Normal wrapping prefers
     the spaces around the em-dashes, which is where the title should break. */
  .xr-title h1 { font-size: 19px; line-height: 1.25; }

  /* Contents: a wrapped entry used to start under the number, so "investments" hung in the
     gutter. Hanging indent aligns continuation lines with the entry text instead. */
  .xr-toc li { padding-left: 20px; text-indent: -20px; }
  .xr-toc li::before { text-indent: 0; }

  /* ---- body text: no 1–2 line orphans/widows; short blocks stay whole ---- */
  .xray-doc p, .xr-p, .xr-note, .xr-sub, .xw-p, .wl-p, .xr-next li, .xr-disc, .xr-intro, .xr-princ {
    orphans: 4; widows: 4;
  }
  .xr-p, .xr-note, .xr-wtm, .xw-p, .xr-sub { break-inside: avoid; page-break-inside: avoid; }
  /* The coverage disclosure must print — a background-only box would vanish without
     printBackground, so it carries a real border — and must never split its fund list. */
  .xr-note-excl { break-inside: avoid; page-break-inside: avoid;
    -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* ---- atomic blocks that must never be split across pages ----
          .xr-next is the closing "Observations & next steps" list. Protecting only its <li>s
          (orphans/widows above) let the LIST itself split, which stranded the last two bullets
          alone on a near-empty final page. Keeping the whole list atomic — plus the heading's
          break-after:avoid, which drags the heading with it — makes the report close on one
          composed page instead of a 2-bullet widow. ---- */
  .xr-exec, .xr-toc, .xr-cards, .xr-card, .xr-goal, .xr-pillar, .xr-pillars,
  .xr-wtm, .xr-capbar, .xr-facwrap, .xr-fac, .xr-assetbar, .xr-combo,
  .xr-status-block, .xr-prop-row, .xr-datebar, .xr-title, .xr-next,
  .xr-adv, .xr-disc, .xr-gen,
  .xw-cols, .xw-col, .xw-sign, .xw-close, .xw-rules, .xw-quote,
  .wl-cols, .wl-sign, .wl-close, .wl-rules, .wl-quote,
  .xr-exec-cols > div, .xr-goalbar, .xr-goalprog,
  .bk-stat, .bk-secrow, .bk-priorow, .bk-smcol,
  .nl-mast, .nl-cover, .nl-title, .nl-datebar, .nl-pulse, .nl-stanceband, .nl-rot, .nl-wtm,
  .nl-basis, .nl-secbars, .nl-secrow, .nl-edu, .nl-edu-q, .nl-note, .nl-disc, .nl-foot,
  .nl-smart, .nl-smart-tile, .nl-value, .nl-sign, .nl-amfi, .nl-tax {
    break-inside: avoid !important; page-break-inside: avoid !important;
  }

  /* ---- summary cards: one even row, never 4-and-a-stretched-one ----
          The printed type area (~178mm) is narrower than the screen, so the screen rule
          (flex:1 1 120px) wrapped the 5th card onto its own line where flex-grow stretched
          it across the full width — a lone giant "Diversification" card under four normal
          ones. Equal shares (basis 0 + min-width 0) keep 4, 5 or 6 cards — the count varies
          with the gold/goals/grade toggles — on ONE balanced row at any width. Type is
          nudged down a step so a 7-figure rupee value still fits its narrower box. */
  .xr-cards { flex-wrap: nowrap; gap: 8px; }
  .xr-card  { flex: 1 1 0; min-width: 0; padding: 10px 11px; }
  .xr-card-v { font-size: 16px; }
  .xr-card-l { font-size: 9.5px; }
  .xr-card-s { font-size: 9px; }
  .xr-gradesm { font-size: 15px; padding: 0 6px; }

  /* ---- tables: rows never split; the header row repeats on every page a
          table spans. Footers must NOT repeat: .xr-tbl tfoot carries a one-off
          summary (Equity / Gold & silver / Cash & debt), not a running total, and
          table-footer-group restamps it on every page of the ~330-row universe
          table. table-row-group renders it once, in DOM order, at the end;
          break-inside:avoid below still keeps the block from splitting. ---- */
  /* Kept at 10pt deliberately. At the correct 178mm type area the sector column wraps the
     longest label ("Industrials & Capital Goods") onto two lines. Dropping to 9pt does NOT
     fix that — the column is proportional, so it narrows with the type and wraps exactly the
     same — it only costs the client legibility. The row still prints whole (break-inside:
     avoid below), so the wrap is cosmetic. If it ever needs solving, widen the sector column
     or shorten the label; do not shrink the font again. */
  .xr-tbl { break-inside: auto; page-break-inside: auto; font-size: 10pt; width: 100%; }
  .xr-tbl thead { display: table-header-group; }
  .xr-tbl tfoot { display: table-row-group; }
  .xr-tbl tr, .xr-tbl thead, .xr-tbl tfoot { break-inside: avoid !important; page-break-inside: avoid !important; }
  .xr-tbl thead th { border-bottom: 1.4px solid #c3ccd6 !important; padding-top: 8px; padding-bottom: 6px; }
  .xr-tbl td, .xr-tbl th { padding-top: 6.5px; padding-bottom: 6.5px; }

  /* ---- print typography refinements (a touch more air, crisper hierarchy) ---- */
  .xray-doc { color: #1a2230; line-height: 1.5; }
  .xr-h2 { margin: 20px 0 8px; font-size: 15px; }
  .xr-h3 { margin: 14px 0 5px; }
  .xr-p { margin: 5px 0 3px; }
  .xr-toc a { color: #1f2733 !important; border: 0 !important; }
  .xr-toc { break-after: avoid; }
  /* the section that opens each page shouldn't hug the top edge */
  .xr-h2 { padding-top: 1px; }

  /* ---- Monthly Client Newsletter — compact mode (builder checkbox): standard ≤3pp,
     compact ≤2pp by dropping the rotation strip, the lowest-conviction sector bars (rows
     past the 6th), and every education paragraph after the first. Screen is unaffected —
     the .compact collapse lives inside this @media print block only (same "Print summary"
     pattern as xray.js's doPrint(summary)). ---- */
  .nl-doc.compact .nl-rot { display: none !important; }
  .nl-doc.compact .nl-secrow.nl-extra { display: none !important; }
  .nl-doc.compact .nl-edu-long { display: none !important; }
  /* magazine redesign: compact (≤2pp) drops the advisor-value strip; the three-dials panel
     stays (one short row — it earns its lines). AMFI strip + tax corner also drop in compact. */
  .nl-doc.compact .nl-value { display: none !important; }
  .nl-doc.compact .nl-amfi { display: none !important; }
  .nl-doc.compact .nl-tax { display: none !important; }
}
/* Stock Bucket — help block */
.bk-help{margin:10px 0 14px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface-2);padding:10px 14px;font-size:13px}
.bk-help summary{cursor:pointer;font-weight:700;color:var(--brand);font-size:13px}
.bk-help h4{margin:12px 0 4px;font-size:12.5px}
.bk-help p,.bk-help li{color:var(--muted);line-height:1.55;font-size:12.5px}
.bk-help ul{margin:4px 0 8px;padding-left:20px}

/* ------------------------- Clients: overlap-grade chip ---------------------- */
.cl-hd-r{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.cl-grade{display:inline-block;font-size:11px;font-weight:800;color:#fff;border-radius:var(--radius-pill);padding:3px 10px;white-space:nowrap;letter-spacing:.01em}
.cl-grade-na{background:var(--surface-2);color:var(--muted);border:1px solid var(--line);font-weight:700}

/* ------------------------- Clients: bulk import preview --------------------- */
#bi-preview:not(:empty){margin-top:10px}
.bi-preview-wrap{border-top:1px solid var(--line);padding-top:10px}
.bi-tbl th,.bi-tbl td{font-size:12.5px}
.bi-tbl td{vertical-align:middle}
.bi-preview-actions{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.bi-warn{color:#b3261e;font-weight:700;font-size:12px}
.bi-upd{color:#e0b400;font-weight:700;font-size:12px}
.bi-new{color:var(--accent);font-weight:700;font-size:12px}
/* "this import removes funds the client holds" — loud enough to stop a partial file being
   imported over a full portfolio by reflex */
.bi-drop{color:#b3261e;font-size:11.5px;font-weight:600;margin-top:3px;max-width:340px;line-height:1.35}
.bi-excl{color:var(--muted);font-size:11px;font-weight:500;margin-top:2px}

/* ------------------------------- MF News ------------------------------- */
.mn-basis{margin-bottom:10px}
.mn-tagpicker{display:flex;flex-wrap:wrap;gap:8px 14px}
.mn-tag-radio{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer}
.mn-tag-radio input{margin:0}

.mn-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin:12px 0}
.mn-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:13px 15px;display:flex;flex-direction:column;gap:6px}
.mn-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.mn-card-title{font-weight:700;font-size:13.5px;line-height:1.35}
.mn-card-note{font-size:12.5px;color:var(--ink-2);line-height:1.5;background:var(--surface-2);border-radius:var(--radius-sm);padding:8px 10px}
.mn-card-actions{margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}
.mn-card-actions .btn{padding:5px 10px;font-size:12px}
.mn-del-confirm{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;font-weight:600;color:var(--dark-red)}

.mn-src-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px 14px;margin-top:8px}
.mn-src-item{font-size:12.5px;display:flex;align-items:center;gap:7px}
.bi-unmatched{color:var(--muted);font-size:11.5px}
/* MF News — compaction: dense rows, one stacked asset-mix bar instead of four % columns,
   symbol status chips (⏸ carried-forward / ∅ no-prior) with tooltips, show-all toggle. */
#mfnews .tbl th, #mfnews .tbl td{padding:4px 8px;font-size:12px}
#mfnews .tbl td .hint{font-size:11px}
.mn-mix{display:inline-flex;width:120px;height:10px;border-radius:5px;overflow:hidden;vertical-align:middle;background:var(--line-2)}
.mn-mix span{display:block;height:100%}
.mn-sym{display:inline-block;font-size:13px;line-height:1;color:var(--muted);cursor:help}
.mn-more{background:none;border:0;color:var(--brand);font:inherit;font-size:12px;font-weight:700;cursor:pointer;padding:4px 0}
.mn-more:hover{text-decoration:underline}
.mn-more-row td{text-align:center;border-bottom:0}

/* ----------------------------- Poster Studio ---------------------------- */
#posters .pst-grid{align-items:start}
#posters .pst-frame{background:#dfe3e8;border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px;display:flex;justify-content:center;align-items:flex-start;overflow:auto}
#posters .pst-frame svg{width:100%;max-width:420px;height:auto;display:block;box-shadow:0 2px 12px rgba(15,23,42,.22)}
@media(max-width:900px){ #posters .pst-grid{grid-template-columns:1fr} }

/* ================= Financial Planning (builder + client plan report) ================= */
.pl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:10px 14px}
.pl-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pl-sub{font-weight:700;font-size:12.5px;color:var(--ink-2);margin:2px 0 8px}
.pl-risk{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px 14px}
.pl-live{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pl-chip{background:var(--surface-2);border:1px solid var(--line-2);border-radius:20px;
  padding:3px 12px;font-size:12px;color:var(--ink-2)}
.pl-chip strong{color:var(--brand)}
.pl-chip-warn{border-color:#B4762A}.pl-chip-warn strong{color:#B4762A}
@media(max-width:760px){.pl-two{grid-template-columns:1fr}}

/* ---- the printable client plan — "Minimal Statement" (Version D, user-picked 2026-08-02):
   monochrome + one blue accent, hairline rules, personal headline, bars not donuts ---- */
.pr-doc{background:#fff;color:#111;font-family:-apple-system,'Segoe UI',Roboto,Inter,sans-serif;
  padding:52px 56px;margin-top:18px;border:1px solid #ECECEA;border-radius:8px;line-height:1.65}
.pr-mast{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:40px}
.pr-firm{font-size:15px;font-weight:700;letter-spacing:-.01em;color:#111}
.pr-firm i{font-style:normal;color:#2563EB}
.pr-who{text-align:right;font-size:11px;color:#8A8A86;line-height:1.6}
.pr-title h1{font-size:32px;font-weight:800;letter-spacing:-.035em;line-height:1.15;margin:0;color:#111}
.pr-for{font-size:13px;color:#8A8A86;margin:8px 0 36px}
.pr-for strong{color:#111;font-weight:600}
.pr-kvgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 48px;margin:0 0 34px}
.pr-kv{display:flex;justify-content:space-between;align-items:baseline;padding:11px 0;border-bottom:1px solid #ECECEA}
.pr-kv .k{font-size:12px;color:#8A8A86}
.pr-kv .v{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:#111;text-align:right}
.pr-kv .v.blue{color:#2563EB}.pr-kv .v.red{color:#DC2626}
.pr-oneline{font-size:16px;line-height:1.55;font-weight:500;color:#111;border-top:2px solid #111;
  padding-top:18px;margin:0 0 40px}
.pr-oneline small{display:block;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.1em;color:#2563EB;margin-bottom:8px}
.pr-h2{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#8A8A86;
  margin:42px 0 8px}
.pr-h2 b{color:#111}
.pr-h3{font-size:13.5px;font-weight:700;color:#111;margin:18px 0 5px}
.pr-p{font-size:13.5px;margin:6px 0;color:#333}
.pr-cap{font-size:12px;color:#8A8A86;margin:4px 0}
.pr-tbl{width:100%;border-collapse:collapse;margin:8px 0;font-size:13.5px}
.pr-tbl th{text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;color:#8A8A86;padding:8px 0;border-bottom:2px solid #111}
.pr-tbl td{padding:10px 0;border-bottom:1px solid #ECECEA;vertical-align:top}
.pr-tbl th.num,.pr-tbl td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;padding-left:14px}
.pr-tbl td.num{font-weight:600}
.pr-note{font-size:13px;color:#333;border-left:2px solid #2563EB;padding:4px 0 4px 16px;margin:14px 0}
.pr-work{font-size:12px;color:#8A8A86;margin:10px 0;padding-left:14px;border-left:2px solid #ECECEA}
.pr-work strong{color:#555}
.pr-wtm{margin:14px 0;padding-left:16px;border-left:2px solid #2563EB}
.pr-wtm strong{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:#2563EB}
.pr-wtm p{margin:4px 0 0;font-size:13px;color:#333}
.pr-two{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.pr-list{margin:5px 0;padding-left:18px;font-size:13px;color:#333}
.pr-list li{margin:4px 0}
.pr-tag{background:#F0F0EE;border-radius:9px;padding:1px 8px;font-size:10px;color:#555;font-weight:600}
.pr-good{color:#059669;font-weight:700}.pr-warn{color:#B45309;font-weight:700}
.pr-bad{color:#DC2626;font-weight:700}
.pr-bar{height:8px;background:#F0F0EE;border-radius:4px;overflow:hidden;margin:8px 0}
.pr-bar span{display:block;height:100%;border-radius:4px}
.pr-bars{margin:14px 0}
.pr-brow{display:flex;align-items:center;gap:14px;margin:10px 0}
.pr-brow .l{width:132px;font-size:13px;color:#111}
.pr-brow .track{flex:1;height:10px;background:#F0F0EE;border-radius:5px;overflow:hidden}
.pr-brow .track i{display:block;height:100%;border-radius:5px}
.pr-brow .amt{width:150px;text-align:right;font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}
.pr-brow .amt span{color:#8A8A86;font-weight:400;font-size:12px;margin-left:6px}
.pr-cat{font-size:12px;color:#8A8A86;font-weight:400}
.pr-score{display:flex;align-items:baseline;gap:16px;margin:12px 0 0}
.pr-score-n{font-size:54px;font-weight:800;letter-spacing:-.04em;line-height:1;color:#111;
  font-variant-numeric:tabular-nums}
.pr-score-n small{font-size:17px;color:#8A8A86;font-weight:600}
.pr-score-b{font-size:14px;font-weight:700;color:#2563EB}
.pr-strack{height:6px;background:#F0F0EE;border-radius:3px;overflow:hidden;margin:12px 0 6px}
.pr-strack i{display:block;height:100%;background:#2563EB}
.pr-disc{margin-top:44px;padding-top:14px;border-top:1px solid #ECECEA;font-size:10.5px;
  color:#B0B0AC;line-height:1.6}
.pr-foot{margin-top:8px;font-size:10.5px;color:#B0B0AC}
@media(max-width:760px){.pr-two,.pr-kvgrid{grid-template-columns:1fr}}
@media print{
  body.has-sidebar .sidebar,.mobilebar,.page-head,.card,#pl-gen,#pl-save,#pl-print,.pl-live{display:none!important}
  .pr-doc{border:0;border-radius:0;margin:0;padding:0;background:#fff}  /* @page margin, emitted per-document, supplies the inset on EVERY page */
  .pr-h2,.pr-h3{break-after:avoid}
  .pr-tbl,.pr-note,.pr-wtm,.pr-work,.pr-kvgrid,.pr-oneline,.pr-bars,.pr-score,.pr-brow{break-inside:avoid}
  /* NOTE: a later @page rule in this file (the Storybook block) sets margin:0, and the LAST
     @page wins for the whole document — so page margins cannot be set here. Each plan document
     supplies its own inset via padding below, the same way the Storybook sheets do. */
}

/* ---- Plan Snapshot (blue dashboard one-pager; user-approved look, live engine data) ---- */
.ps-doc{margin-top:18px;background:#f5f7fb;border:1px solid var(--line);border-radius:14px;padding:22px;color:#333}
.ps-head{background:linear-gradient(135deg,#0d47a1,#1976d2);color:#fff;padding:24px 28px;border-radius:13px;display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}
.ps-head h1{font-size:24px;margin:0;letter-spacing:-.01em}
.ps-head p{opacity:.92;margin:6px 0 10px;font-size:13px}
.ps-head p strong{color:#fff}
.ps-badge{display:inline-block;padding:6px 14px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:30px;font-size:11.5px}
.ps-head-r{text-align:right;font-size:11px;opacity:.92;line-height:1.6}
.ps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:14px}
.ps-card{background:#fff;padding:18px 20px;border-radius:13px;box-shadow:0 6px 18px rgba(13,71,161,.07)}
.ps-card h2{margin:0 0 12px;color:#0d47a1;font-size:15.5px}
.ps-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.ps-tbl td,.ps-tbl th{padding:7px 4px;border-bottom:1px solid #eee;text-align:left}
.ps-tbl td:last-child,.ps-tbl th:last-child{text-align:right;font-variant-numeric:tabular-nums}
.ps-tbl-3 td:nth-child(2),.ps-tbl-3 th:nth-child(2){text-align:right;font-variant-numeric:tabular-nums}
.ps-tbl th{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:#777;border-bottom:2px solid #0d47a1}
.ps-total td{border-top:2px solid #0d47a1;border-bottom:none;font-weight:700}
.ps-progress{background:#ececec;height:9px;border-radius:6px;overflow:hidden;margin:4px 0 8px}
.ps-progress span{display:block;height:100%;background:#4CAF50;border-radius:6px}
.ps-progress-big{height:13px;margin:6px 0 14px}
.ps-progress-big span{background:linear-gradient(90deg,#1976d2,#4CAF50)}
.ps-scorerow{display:flex;justify-content:space-between;font-size:12px;color:#555;margin-top:4px}
.ps-goal{padding:10px 12px;margin-bottom:9px;background:#f8f9ff;border-left:4px solid #1976d2;border-radius:8px}
.ps-goal-t{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.ps-goal p{font-size:12px;color:#555;margin:3px 0 4px}
.ps-tag{font-size:10px;background:#e3ecf9;color:#0d47a1;border-radius:9px;padding:2px 8px;font-weight:600}
.ps-list{margin:0;padding-left:18px;font-size:12.5px;color:#444}
.ps-list li{margin:5px 0}
.ps-note{font-size:10.5px;color:#888;margin-top:8px;font-style:italic}
.ps-p{font-size:12.5px;color:#555}
.ps-foot{margin-top:14px;text-align:center;font-size:10px;color:#888;line-height:1.6}
@media print{
  /* the snapshot prints as exactly ONE A4 page */
  body.has-sidebar .sidebar,.mobilebar,.page-head,.card,#pl-gen,#pl-save,#pl-print,#pl-snapshot,.pl-live{display:none!important}
  .ps-doc{border:0;border-radius:0;margin:0;padding:0;background:#fff}
  .ps-doc *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ps-head{border-radius:0;padding:16px 20px}
  .ps-head h1{font-size:19px}
  .ps-grid{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
  .ps-card{box-shadow:none;border:1px solid #e4e8f0;padding:10px 12px;break-inside:avoid}
  .ps-card h2{font-size:11.5px;margin-bottom:6px}
  .ps-tbl{font-size:9px}
  .ps-tbl td,.ps-tbl th{padding:3.5px 3px}
  .ps-goal{padding:6px 8px;margin-bottom:5px}
  .ps-goal p,.ps-list,.ps-p{font-size:9px}
  .ps-list li{margin:3px 0}
  .ps-scorerow{font-size:9px}
  .ps-progress{height:6px;margin:2px 0 5px}
  .ps-progress-big{height:9px;margin:4px 0 8px}
  .ps-note{font-size:8px}
  .ps-badge{font-size:9px;padding:3px 10px}
  .ps-head p{font-size:10px;margin:3px 0 6px}
  .ps-head-r{font-size:8.5px}
  .ps-foot{font-size:7.5px;margin-top:8px}
}

/* Holdings tabs: row highlight when an AMC lands in the Loaded tab after an upload */
@keyframes amcFlash{0%{background:rgba(0,191,165,.28)}100%{background:transparent}}
.amc-flash td{animation:amcFlash 2.4s ease-out}

/* Holdings tab strip: segmented-control look; no background transition so switching is crisp */
.hold-tabs{display:flex;gap:0;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.hold-tabs .btn{transition:none;border-radius:0;margin-left:-1px;position:relative}
.hold-tabs .btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}
.hold-tabs .btn:nth-child(2){border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.hold-tabs .btn.active{background:var(--brand);color:#fff;border-color:var(--brand);z-index:1}
.hold-tabs .hint{margin-left:12px}

/* ================= Storybook plan style (Satvic-book inspired; original artwork only) ======== */
.sb-doc{margin-top:18px;background:#EDE7DA;padding:22px 10px;border-radius:10px;
  font-family:'Segoe UI',system-ui,sans-serif;color:#3D3729;line-height:1.7}
.sb-sheet{max-width:860px;margin:0 auto 22px;background:#F9F5EC;border-radius:6px;
  box-shadow:0 3px 22px rgba(61,55,41,.14);overflow:hidden;position:relative}
.sb-pad{padding:44px 52px}
.sb-doodle{position:absolute;opacity:.95;pointer-events:none;z-index:0}
.sb-pad>*{position:relative;z-index:1}
.sb-eyebrow{display:inline-block;background:#E8DFC6;border-radius:4px;padding:4px 12px;font-size:12px;
  letter-spacing:.06em;color:#6B6046;margin-bottom:10px;font-weight:600}
.sb-doc h1{font-size:32px;color:#2E4A34;letter-spacing:-.01em;line-height:1.22;margin:0 0 20px}
.sb-doc h2{font-size:23px;color:#2E4A34;margin:0 0 6px}
.sb-h3{font-size:15px;color:#3D3729;margin:18px 0 6px}
.sb-lede{color:#6B6046;font-size:14px;margin:8px 0 0}
.sb-p{font-size:14px;margin:10px 0;color:#4A4335}
.sb-letter{max-width:640px;margin:0 auto;text-align:center}
.sb-letter p{margin:13px 0;text-align:justify;text-align-last:center;font-size:14.5px}
.sb-letter .dear{font-weight:700;font-size:17px;color:#2E4A34;text-align:center}
.sb-sig{font-family:'Segoe Script','Comic Sans MS',cursive;font-size:22px;color:#4E5F3D;margin-top:16px}
.sb-sig small{display:block;font-family:'Segoe UI',sans-serif;font-size:11px;color:#8A7F64;margin-top:4px}
.sb-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:26px 0 6px}
.sb-step{text-align:center}
.sb-stepnum{width:44px;height:44px;border-radius:50%;margin:0 auto 10px;display:flex;align-items:center;
  justify-content:center;font-size:20px;font-weight:800;color:#fff}
.sb-step.s1 .sb-stepnum{background:#D98E32}.sb-step.s2 .sb-stepnum{background:#7A9E4F}
.sb-step.s3 .sb-stepnum{background:#C75D4F}
.sb-step h3{font-size:15px;color:#3D3729;margin:0 0 4px}
.sb-stepamt{font-size:21px;font-weight:800;color:#2E4A34}
.sb-stepblob{border-radius:46% 54% 50% 50%/52% 48% 52% 48%;padding:14px 16px;font-size:12.5px;
  color:#5A5140;margin-top:10px}
.sb-step.s1 .sb-stepblob{background:#F5E4C8}.sb-step.s2 .sb-stepblob{background:#E3ECD2}
.sb-step.s3 .sb-stepblob{background:#F3DCD4}
.sb-swap{border:2px solid #D9CDA8;border-radius:16px;overflow:hidden;margin:24px 0;background:#FBF8F0}
.sb-swap-head{display:grid;grid-template-columns:1fr 54px 1fr}
.sb-swap-head .from{background:#C75D4F;color:#fff;text-align:center;padding:9px;font-weight:700;border-radius:0 0 14px 0}
.sb-swap-head .to{background:#7A9E4F;color:#fff;text-align:center;padding:9px;font-weight:700;border-radius:0 0 0 14px}
.sb-swap-row{display:grid;grid-template-columns:1fr 54px 1fr;align-items:center;padding:14px 18px;border-top:1px dashed #E0D5B4}
.sb-swap-cell{font-size:13.5px}
.sb-arrow{color:#B79C55;font-size:22px;text-align:center;font-weight:700}
.sb-dyk{background:#F2D976;border-radius:12px;padding:16px 20px 16px 84px;margin:24px 0;position:relative;
  box-shadow:inset 0 0 0 2px rgba(122,101,32,.18)}
.sb-dyk::after{content:"";position:absolute;inset:6px;border:1.5px dashed rgba(122,101,32,.35);border-radius:8px;pointer-events:none}
.sb-dyk h3{color:#5F4C12;font-size:16px;margin:0 0 4px}
.sb-dyk p{font-size:13px;color:#6B5A1D;margin:0}
.sb-dyk .q{position:absolute;left:26px;top:50%;transform:translateY(-50%);font-size:40px;font-weight:900;color:#B7912B}
.sb-dyk-green{background:#E3ECD2;box-shadow:inset 0 0 0 2px rgba(90,122,58,.18)}
.sb-dyk-green h3{color:#3C5220}.sb-dyk-green p{color:#4E5F3D}.sb-dyk-green .q{color:#5F7A3A}
.sb-goals{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}
.sb-goal{background:#FFFDF7;border:1.5px solid #E4D9B8;border-radius:14px;padding:16px 18px;position:relative}
.sb-tag{position:absolute;top:-11px;left:16px;background:#7A9E4F;color:#fff;font-size:11px;border-radius:10px;
  padding:2px 12px;font-weight:700}
.sb-goal h3{font-size:15px;color:#2E4A34;margin:4px 0 6px}
.sb-goal .amt{font-size:19px;font-weight:800;color:#3D3729}
.sb-meta{font-size:12px;color:#8A7F64}
.sb-gbar{height:9px;background:#EDE4CB;border-radius:5px;overflow:hidden;margin-top:9px}
.sb-gbar span{display:block;height:100%;background:linear-gradient(90deg,#A9C46C,#7A9E4F);border-radius:5px}
.sb-tbl{width:100%;border-collapse:collapse;margin:14px 0;font-size:13.5px}
.sb-tbl td,.sb-tbl th{padding:9px 6px;border-bottom:1px dashed #E0D5B4;text-align:left}
.sb-tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#8A7F64;border-bottom:2px solid #D9CDA8}
.sb-tbl .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.sb-total td{border-bottom:none;border-top:2px solid #7A9E4F;font-weight:800;color:#2E4A34}
.sb-scoregrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 22px;margin:14px 0 6px}
.sb-scorerow{display:flex;justify-content:space-between;font-size:12.5px;color:#5A5140;margin-top:6px}
.sb-list{margin:4px 0 0;padding-left:18px;font-size:13.5px;color:#4A4335}
.sb-list li{margin:5px 0}
.sb-foot{background:#EFE8D6;padding:14px 52px;font-size:10.5px;color:#8A7F64;text-align:center;line-height:1.6}
/* SCREEN-only collapse: an A4 print box is ~658px wide, so an unscoped max-width query
   fires during printing and stacked the goal cards one-per-row — 4 cards then overflowed
   the sheet onto a 13th page with an orphaned banner. Print keeps the multi-column grid. */
@media screen and (max-width:760px){.sb-pad{padding:28px 20px}.sb-steps,.sb-goals,.sb-scoregrid{grid-template-columns:1fr}}
@media print{
  body.has-sidebar .sidebar,.mobilebar,.page-head,.card,#pl-gen,#pl-save,#pl-print,#pl-snapshot,
  #pl-storybook,.pl-live{display:none!important}
  .sb-doc{background:#fff;padding:0;margin:0;border-radius:0}
  .sb-doc *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  /* each sheet IS one A4 page — min-height makes the warm paper reach every edge, which is
     what makes it read as a book rather than a web page that happened to print */
  .sb-sheet{box-shadow:none;margin:0;border-radius:0;break-after:page;page-break-after:always;
    min-height:297mm;display:flex;flex-direction:column}
  .sb-sheet:last-child{break-after:auto;page-break-after:auto}
  .sb-pad{padding:16mm 18mm;flex:1}
  .sb-foot{margin-top:auto;padding-bottom:12mm}  /* clear of the printer's unprintable edge */
  .sb-doc h1{font-size:26px}.sb-doc h2{font-size:19px}
  .sb-steps,.sb-goals,.sb-swap,.sb-dyk,.sb-tbl,.sb-goal,.sb-step{break-inside:avoid;page-break-inside:avoid}
  .sb-steps{grid-template-columns:repeat(3,1fr)}
  .sb-goals,.sb-scoregrid{grid-template-columns:1fr 1fr}
  /* NO @page HERE. It used to say `@page{size:A4;margin:0}`, and because the last @page in a
     document wins for the WHOLE document, it silently overrode the X-ray/Welcome/Newsletter
     @page above (17mm 16mm 15mm) — those reports printed edge-to-edge, text at x=0, clipped
     by any real printer, and with no running footer. The Storybook needs margin:0 only for
     ITS OWN full-bleed sheets, so it emits that rule inline with its markup instead
     (pageRule() in planning.js). Never put a bare @page in this stylesheet again. */
}

/* Planning builder: folded-away optional fields (the intake keeps only 8 essentials) */
.pl-more{grid-column:1/-1;margin-top:4px;border-top:1px dashed var(--line-2);padding-top:10px}
.pl-more>summary{cursor:pointer;font-size:12.5px;color:var(--muted);font-weight:600;list-style:none}
.pl-more>summary::-webkit-details-marker{display:none}
.pl-more>summary::before{content:"▸ ";color:var(--brand-3)}
.pl-more[open]>summary::before{content:"▾ "}
.pl-more>summary:hover{color:var(--brand-3)}

/* Planning builder: per-section capture switches (sections 2 and 3 are optional) */
.pl-switch{float:right;display:inline-flex;align-items:center;gap:6px;font-size:12px;
  font-weight:500;color:var(--muted);cursor:pointer;user-select:none}
.pl-switch input{accent-color:var(--brand);cursor:pointer}
.pl-switch:hover{color:var(--brand-3)}
.card.pl-card-off > .pl-grid,.card.pl-card-off > .pl-two,.card.pl-card-off > .pl-live{display:none}
.card.pl-card-off{opacity:.72}
.card.pl-card-off > .cardh{margin-bottom:0}
.card.pl-card-off > .hint{margin-top:6px}

/* ---- Wealth By Rule mark on the three plan deliverables ---- */
.pr-brand{display:flex;align-items:center;gap:10px}
.pr-logo{height:30px;width:auto;flex:none}
.ps-logo-chip{display:inline-flex;align-items:center;background:#fff;border-radius:8px;
  padding:6px 10px;margin-bottom:10px}
.ps-logo{height:26px;width:auto;display:block}
.sb-logo{height:62px;width:auto;display:block;margin:0 auto 16px}
@media print{
  .pr-logo{height:26px}
  .ps-logo{height:22px}
  .sb-logo{height:56px;margin-bottom:12px}
  .pr-logo,.ps-logo,.sb-logo,.ps-logo-chip{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* SIP run-failure banner — a whole failed send run must be impossible to miss.
   Sits above the toolbar, not inside the Usage panel (that is where the Aug 2026
   outage hid for nine days). */
.sip-alert{border:1.5px solid #f0b4ae;background:#FDECEA;border-radius:12px;
  padding:12px 16px;margin-bottom:14px;display:flex;flex-direction:column;gap:4px}
.sip-alert-title{font-weight:800;color:#B91C1C;font-size:15px}
.sip-alert-body{font-size:13px;color:#7f1d1d;line-height:1.55}
.sip-alert code{background:#fff;border:1px solid #f0b4ae;border-radius:4px;padding:1px 5px;font-size:12px}
.sip-alert.warn{border-color:#f0c36d;background:#fff8e6}
.sip-alert.warn .sip-alert-title{color:#8a5a1b}
.sip-alert.warn .sip-alert-body{color:#7a5b12}

/* MF News - market briefing board (Module E). A briefing is a wide editorial card, not a
   notice chip: the claim, the drivers, the counter-arguments and the sources it rests on. */
.mn-brf{border:1px solid var(--line-2);border-left:4px solid var(--brand);border-radius:10px;
  padding:14px 16px;margin-bottom:14px;background:var(--surface)}
.mn-brf-title{font-size:19px;font-weight:800;line-height:1.3;margin:6px 0 8px;color:var(--ink)}
.mn-brf-lede{margin:0 0 10px;font-size:14px;line-height:1.55}
.mn-brf-note{margin:0 0 10px;color:var(--muted);font-size:13px}
.mn-brf-cols{display:flex;gap:14px;flex-wrap:wrap;margin-top:4px}
.mn-brf-col{flex:1;min-width:240px;border-radius:8px;padding:10px 12px}
.mn-brf-col.warn{background:#fdf7e8;border:1px solid #ecdcb0}
.mn-brf-col.good{background:#f0f7f2;border:1px solid #c9e2d3}
.mn-brf-col ul{margin:6px 0 0;padding-left:17px}
.mn-brf-col li{margin-bottom:5px;line-height:1.45}
.mn-brf-colh{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;
  color:var(--muted)}
.mn-brf-src{margin-top:12px;border-top:1px solid var(--line-2);padding-top:9px}
.mn-brf-src ol{margin:6px 0 0;padding-left:19px;font-size:12.5px}
.mn-brf-src li{margin-bottom:3px}
.mn-cite{font-size:9px;color:var(--brand);font-weight:700;padding-left:1px}
.chip.briefing{background:#0d3b66;color:#fff}
@media screen and (max-width:640px){ .mn-brf-col{min-width:100%} }

/* Briefing cards print as part of a client handout, so keep a card whole on one page. */
@media print{ .mn-brf{page-break-inside:avoid} .mn-brf .mn-card-actions{display:none} }
