:root {
  --bg:#f4f3ef;--sur:#fff;--sur2:#f0eeea;--bor:#e3e0d8;
  --tx:#1a1917;--tx2:#6b6860;--tx3:#a09d96;
  --ac:#2563eb;--ac-bg:#eff4ff;
  --gn:#16a34a;--gn-bg:#f0fdf4;
  --rd:#dc2626;--rd-bg:#fef2f2;
  --am:#d97706;--am-bg:#fffbeb;
  --r:10px;--rs:6px;
}
@media(prefers-color-scheme:dark){:root{
  --bg:#111110;--sur:#1c1c1a;--sur2:#252523;--bor:#2e2d2a;
  --tx:#f0ede8;--tx2:#a09d96;--tx3:#6b6860;
  --ac:#3b82f6;--ac-bg:#1a2540;
  --gn:#22c55e;--gn-bg:#0d2318;
  --rd:#f87171;--rd-bg:#2a1010;
  --am:#fbbf24;--am-bg:#261d08;
}}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--tx);font-size:14px;line-height:1.5;}
.screen{display:none;}
.screen.active{display:flex;flex-direction:column;height:100dvh;overflow:hidden;}

/* ── LOGIN ── */
#login-screen{align-items:center;justify-content:center;padding:24px;}
.login-card{background:var(--sur);border:1px solid var(--bor);border-radius:16px;padding:44px 36px;width:100%;max-width:380px;animation:up .4s ease;}
.brand{display:flex;align-items:center;gap:10px;margin-bottom:28px;}
.brand-mark{width:32px;height:32px;background:var(--ac);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font:500 14px 'DM Mono',monospace;}
.brand-name{font:600 16px 'DM Sans',sans-serif;}
.login-h{font-size:22px;font-weight:600;letter-spacing:-.5px;margin-bottom:6px;}
.login-sub{color:var(--tx2);font-size:13px;margin-bottom:28px;}
.btn-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px;background:var(--ac);color:#fff;border:none;border-radius:var(--rs);font:500 14px 'DM Sans',sans-serif;cursor:pointer;transition:opacity .15s,transform .1s;}
.btn-cta:hover{opacity:.9;transform:translateY(-1px);}
.btn-cta:disabled{opacity:.45;cursor:not-allowed;transform:none;}
.login-hint{margin-top:12px;text-align:center;color:var(--tx3);font:11px 'DM Mono',monospace;}

/* ── ERROR ── */
#error-screen{align-items:center;justify-content:center;padding:24px;}
.error-card{background:var(--sur);border:1px solid var(--bor);border-radius:16px;padding:44px 36px;width:100%;max-width:380px;text-align:center;animation:up .4s ease;}
.err-icon{width:48px;height:48px;background:var(--rd-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--rd);}
.err-title{font-size:18px;font-weight:600;margin-bottom:8px;}
.err-msg{color:var(--tx2);font-size:13px;margin-bottom:24px;}
.btn-ghost{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;background:transparent;color:var(--tx);border:1px solid var(--bor);border-radius:var(--rs);font:500 13px 'DM Sans',sans-serif;cursor:pointer;transition:background .15s;}
.btn-ghost:hover{background:var(--sur2);}

/* ── DASHBOARD ── */
#dashboard-screen{background:var(--bg);}

/* HEADER */
.header{background:var(--sur);border-bottom:1px solid var(--bor);padding:24px 28px 20px;}
.header-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px;}
.welcome-label{font:11px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;}
.welcome-name{font:600 26px 'DM Sans',sans-serif;letter-spacing:-.5px;}
.header-right{display:flex;align-items:center;gap:10px;}
.btn-logout{display:flex;align-items:center;gap:6px;padding:7px 14px;background:transparent;color:var(--tx2);border:1px solid var(--bor);border-radius:var(--rs);font:500 12px 'DM Sans',sans-serif;cursor:pointer;transition:all .15s;}
.btn-logout:hover{color:var(--rd);border-color:var(--rd);background:var(--rd-bg);}
.welcome-date{font:12px 'DM Mono',monospace;color:var(--tx3);}

/* TABS */
.tab-bar{background:var(--sur);border-bottom:1px solid var(--bor);padding:0 28px;position:sticky;top:0;z-index:10;}
.tab-bar-inner{display:flex;max-width:960px;margin:0 auto;justify-content:center;}
.tab-btn{padding:12px 16px;background:none;border:none;border-bottom:2px solid transparent;font:500 13px 'DM Sans',sans-serif;color:var(--tx2);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:7px;margin-bottom:-1px;white-space:nowrap;}
.tab-btn:hover{color:var(--tx);}
.tab-btn.active{color:var(--ac);border-bottom-color:var(--ac);}
.tab-pane{display:none;}
.tab-pane.active{display:block;}
.badge-count{background:var(--rd);color:#fff;font:600 10px 'DM Mono',monospace;padding:1px 5px;border-radius:99px;min-width:16px;text-align:center;line-height:14px;}

/* MAIN */
.main{padding:24px 28px;max-width:960px;margin:0 auto;display:flex;flex-direction:column;gap:20px;}

/* SECTION */
.sect{background:var(--sur);border:1px solid var(--bor);border-radius:var(--r);overflow:hidden;}
.sect-head{padding:14px 18px;border-bottom:1px solid var(--bor);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.sect-title{font:600 13px 'DM Sans',sans-serif;}
.sect-sub{font:11px 'DM Mono',monospace;color:var(--tx3);}

/* CSV UPLOAD */
.upload-area{padding:16px;}
.upload-zone{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1.5px dashed var(--bor);border-radius:var(--rs);cursor:pointer;transition:border-color .15s,background .15s;}
.upload-zone:hover,.upload-zone.drag{border-color:var(--ac);background:var(--ac-bg);}
.upload-zone-icon{width:36px;height:36px;background:var(--sur2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--tx3);flex-shrink:0;}
.upload-zone-text{flex:1;}
.upload-zone-main{font:500 13px 'DM Sans',sans-serif;color:var(--tx2);margin-bottom:2px;}
.upload-zone-hint{font:11px 'DM Mono',monospace;color:var(--tx3);}
.btn-browse{padding:7px 14px;background:var(--ac);color:#fff;border:none;border-radius:var(--rs);font:500 12px 'DM Sans',sans-serif;cursor:pointer;white-space:nowrap;transition:opacity .15s;flex-shrink:0;}
.btn-browse:hover{opacity:.9;}
.import-feedback{margin-top:10px;padding:10px 14px;border-radius:var(--rs);font:12px 'DM Mono',monospace;display:none;}
.import-ok{background:var(--gn-bg);color:var(--gn);display:block;}
.import-err{background:var(--rd-bg);color:var(--rd);display:block;}
.import-loading{background:var(--am-bg);color:var(--am);display:block;}

/* XIRR FORM */
.xirr-form{padding:16px;display:flex;flex-direction:column;gap:16px;}
.form-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;align-items:end;}
.form-group{display:flex;flex-direction:column;gap:5px;}
.form-label{font:500 11px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;}
select,input[type=date]{padding:9px 12px;background:var(--sur);border:1px solid var(--bor);border-radius:var(--rs);color:var(--tx);font:13px 'DM Sans',sans-serif;width:100%;outline:none;transition:border-color .15s;-webkit-appearance:none;appearance:none;}
select:focus,input[type=date]:focus{border-color:var(--ac);}
select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b6860' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;}
.btn-calc{padding:9px 20px;background:var(--ac);color:#fff;border:none;border-radius:var(--rs);font:500 13px 'DM Sans',sans-serif;cursor:pointer;transition:opacity .15s;height:38px;}
.btn-calc:hover{opacity:.9;}
.btn-calc:disabled{opacity:.4;cursor:not-allowed;}

/* XIRR RESULT */
.result-wrap{border-top:1px solid var(--bor);padding:20px;}
.xirr-hero{display:flex;align-items:baseline;gap:10px;margin-bottom:4px;}
.xirr-num{font:500 44px 'DM Mono',monospace;letter-spacing:-1.5px;}
.xirr-unit{font:11px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;}
.xirr-note{font:11px 'DM Mono',monospace;color:var(--tx3);margin-bottom:20px;}
.result-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px;}
.rc{background:var(--sur2);border-radius:var(--rs);padding:14px;}
.rc-label{font:10px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;}
.rc-val{font:500 17px 'DM Mono',monospace;}
.pos{color:var(--gn);}.neg{color:var(--rd);}.muted{color:var(--tx3);}
.breakdown-title{font:600 12px 'DM Sans',sans-serif;color:var(--tx2);margin-bottom:10px;}

/* TABLE */
table{width:100%;border-collapse:collapse;}
th{padding:8px 0;text-align:left;font:500 10px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--bor);}
th:last-child,td:last-child{text-align:right;}
td{padding:11px 0;font-size:12px;border-bottom:1px solid var(--bor);}
tr:last-child td{border-bottom:none;}
.mono{font:12px 'DM Mono',monospace;}
.badge{display:inline-flex;padding:2px 6px;border-radius:3px;font:500 10px 'DM Mono',monospace;}
.b-buy{background:var(--gn-bg);color:var(--gn);}
.b-sell{background:var(--rd-bg);color:var(--rd);}

/* EMPTY/LOADING */
.spin-wrap{padding:32px;display:flex;flex-direction:column;align-items:center;gap:10px;}
.spinner{width:18px;height:18px;border:2px solid var(--bor);border-top-color:var(--ac);border-radius:50%;animation:spin .7s linear infinite;}
.cen-txt{font:12px 'DM Mono',monospace;color:var(--tx3);}
.empty-txt{padding:28px;text-align:center;font:12px 'DM Mono',monospace;color:var(--tx3);}
.err-txt{padding:28px;text-align:center;font:12px 'DM Mono',monospace;color:var(--rd);}

/* ALERT ROWS */
.alert-list-wrap{padding:12px 18px;display:flex;flex-direction:column;gap:8px;}
.alert-row{display:flex;align-items:stretch;flex-shrink:0;border:1px solid var(--bor);border-radius:var(--rs);overflow:hidden;cursor:pointer;transition:background .1s;background:var(--sur);}
.alert-row:hover{background:var(--sur2);}
.alert-row.unread{background:var(--am-bg);border-color:var(--am);}
.alert-bar{width:4px;flex-shrink:0;}
.alert-body{padding:12px 14px;flex:1;min-width:0;}
.alert-top{display:flex;align-items:center;gap:7px;margin-bottom:4px;flex-wrap:wrap;}
.alert-sym{font:600 13px 'DM Mono',monospace;}
.type-badge{padding:2px 7px;border-radius:3px;font:500 10px 'DM Mono',monospace;white-space:nowrap;}
.tb-am{background:var(--am-bg);color:var(--am);}
.tb-gn{background:var(--gn-bg);color:var(--gn);}
.tb-rd{background:var(--rd-bg);color:var(--rd);}
.tb-ac{background:var(--ac-bg);color:var(--ac);}
.tb-pu{background:#f5f3ff;color:#7c3aed;}
@media(prefers-color-scheme:dark){.tb-pu{background:#1e1730;color:#a78bfa;}}
.tb-gr{background:var(--sur2);color:var(--tx2);}
.alert-msg{font:13px 'DM Sans',sans-serif;margin-bottom:4px;word-break:break-word;}
.alert-meta{font:11px 'DM Mono',monospace;color:var(--tx3);}
.alert-right{padding:12px 14px;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:8px;flex-shrink:0;}
.alert-time{font:11px 'DM Mono',monospace;color:var(--tx3);white-space:nowrap;}
.score-dots{display:flex;gap:3px;align-items:center;}
.score-dot{width:7px;height:7px;border-radius:50%;background:var(--bor);}
.score-dot.filled{background:var(--am);}
.score-dot.filled.hi{background:var(--gn);}

/* ALERT DAY SEPARATOR (collapsible) */
.alert-day-sep{padding:5px 16px 4px;font:600 10px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.06em;background:var(--sur2);border-bottom:1px solid var(--bor);position:sticky;top:0;z-index:1;cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none;}
.alert-day-sep:hover{background:var(--bor);}
.alert-day-sep::after{content:'▾';font-size:9px;opacity:.6;}
.alert-day-sep.collapsed::after{content:'▸';}
.alert-day-group.collapsed .alert-row{display:none;}

/* FILTER CHIPS */
.chip-bar{display:flex;gap:6px;flex-wrap:wrap;}
.chip{padding:5px 12px;border:1px solid var(--bor);border-radius:99px;font:500 11px 'DM Mono',monospace;color:var(--tx2);background:var(--sur);cursor:pointer;transition:all .15s;}
.chip:hover{border-color:var(--ac);color:var(--ac);}
.chip.active{background:var(--ac);border-color:var(--ac);color:#fff;}

/* STATS ROW */
.stats-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.stat-chip{font:11px 'DM Mono',monospace;color:var(--tx3);}
.stat-chip span{color:var(--tx);font-weight:500;}

/* TOGGLE */
.toggle{position:relative;width:36px;height:20px;flex-shrink:0;display:inline-block;}
.toggle input{opacity:0;width:0;height:0;}
.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--bor);border-radius:20px;transition:.2s;}
.toggle-slider:before{content:'';position:absolute;width:14px;height:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;}
.toggle input:checked+.toggle-slider{background:var(--gn);}
.toggle input:checked+.toggle-slider:before{transform:translateX(16px);}

/* INLINE NUMBER INPUT */
.num-input{width:56px;padding:5px 8px;border:1px solid var(--bor);border-radius:var(--rs);font:12px 'DM Mono',monospace;background:var(--sur);color:var(--tx);text-align:center;}
.num-input:focus{outline:none;border-color:var(--ac);}

/* DMA LEVELS TABLE CONTAINERS */
#etf-levels-table,#us-levels-table{min-height:238px;}

/* ETF TABLE */
.etf-tbl{table-layout:fixed;width:100%;}
.etf-tbl th{padding:6px 8px 6px 14px;font:500 10px 'DM Mono',monospace;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--bor);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.etf-tbl td{padding:9px 8px 9px 14px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.etf-tbl th+th,.etf-tbl td+td{padding-left:6px;}
.etf-tbl .act-cell{display:flex;gap:6px;justify-content:flex-end;}
.etf-tbl th:last-child,.etf-tbl td:last-child{text-align:right;padding-right:14px;}
.btn-sm{padding:5px 10px;border:none;border-radius:var(--rs);font:500 11px 'DM Sans',sans-serif;cursor:pointer;transition:opacity .15s;height:30px;}
.btn-sm-pri{background:var(--ac);color:#fff;}
.btn-sm-pri:hover{opacity:.85;}
.btn-sm-sec{background:var(--sur2);color:var(--tx2);border:1px solid var(--bor);}
.btn-sm-sec:hover{background:var(--bor);}

#ticker-dot[style*="--gn"] { animation: blink 2s infinite; }
@keyframes blink { 0%,100%{opacity:1;} 50%{opacity:.3;} }
@keyframes up{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
@keyframes spin{to{transform:rotate(360deg);}}
.anim{animation:up .35s ease both;}

/* ── 3-PANEL WORKSPACE ───────────────────────────────────────────────────── */
.workspace { display:flex; flex:1; min-height:0; overflow:hidden; }
.panel     { flex:1; display:flex; flex-direction:column; overflow:hidden; min-width:0;
             border-right:1px solid var(--bor); }
.panel:last-child { border-right:none; }

.panel-header { padding:10px 14px 8px; font:600 11px 'DM Mono',monospace; color:var(--tx3);
                text-transform:uppercase; letter-spacing:.06em;
                border-bottom:1px solid var(--bor); flex-shrink:0;
                display:flex; align-items:center; gap:8px; }
.panel-body  { flex:1; overflow-y:auto; }
.panel-stats-bar { display:flex; gap:10px; padding:8px 14px; border-bottom:1px solid var(--bor);
                   flex-shrink:0; }
.panel-chips { display:flex; flex-wrap:wrap; gap:5px; padding:8px 10px;
               border-bottom:1px solid var(--bor); flex-shrink:0; }
.panel-sym-tag { background:var(--ac-bg); color:var(--ac);
                 font:500 10px 'DM Mono',monospace; padding:2px 7px;
                 border-radius:10px; flex-shrink:0; }
.btn-clear-sym { font:500 10px 'DM Mono',monospace; color:var(--tx3); background:none;
                 border:1px solid var(--bor); border-radius:10px; padding:2px 7px;
                 cursor:pointer; flex-shrink:0; }
.btn-clear-sym:hover { color:var(--tx); border-color:var(--tx3); }
.btn-nav-view { padding:5px 10px; background:var(--sur2); border:1px solid var(--bor);
                border-radius:var(--rs); font:500 11px 'DM Mono',monospace; color:var(--tx3);
                cursor:pointer; transition:all .15s; }
.btn-nav-view:hover { color:var(--tx); }
.btn-nav-view.active { background:var(--ac-bg); color:var(--ac); border-color:var(--ac); }

/* ETF page view (full-width scrollable) */
.view-page { flex:1; overflow-y:auto; }

/* ── WATCHLIST ITEM: selected state ─────────────────────────────────────── */
.wl-item.selected { background:var(--ac-bg); }
.wl-item.selected .wl-sym { color:var(--ac); font-weight:600; }

/* ── SIDEBAR INTERNALS ───────────────────────────────────────────────────── */
.sidebar-hd   { padding:12px 14px 8px; font:600 11px 'DM Mono',monospace; color:var(--tx3);
                text-transform:uppercase; letter-spacing:.06em;
                display:flex; align-items:center; justify-content:space-between;
                border-bottom:1px solid var(--bor); flex-shrink:0; }
.sidebar-search { display:flex; gap:6px; padding:8px 10px; border-bottom:1px solid var(--bor);
                  flex-shrink:0; }
.sidebar-search input { flex:1; padding:5px 8px; border:1px solid var(--bor);
                        border-radius:var(--rs); background:var(--sur2); color:var(--tx);
                        font:12px 'DM Mono',monospace; outline:none; min-width:0; }
.sidebar-search input:focus { border-color:var(--ac); }
.btn-wl-add   { padding:5px 9px; border:1px solid var(--bor); border-radius:var(--rs);
                background:var(--sur2); color:var(--tx2); cursor:pointer; font-size:15px;
                line-height:1; flex-shrink:0; transition:background .15s; }
.btn-wl-add:hover { background:var(--bor); }
.wl-feedback  { padding:2px 14px 4px; font:10px 'DM Mono',monospace; color:var(--tx3);
                min-height:18px; flex-shrink:0; }
.sidebar-list { flex:1; overflow-y:auto; }
.wl-item      { display:flex; align-items:center; padding:8px 8px 8px 14px;
                border-bottom:1px solid var(--bor); cursor:pointer; gap:4px; }
.wl-item:hover { background:var(--sur2); }
.wl-sym       { flex:1; font:500 12px 'DM Mono',monospace; color:var(--tx); min-width:0;
                overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wl-info      { text-align:right; flex-shrink:0; }
.wl-price     { font:11px 'DM Mono',monospace; color:var(--tx2); }
.wl-chg       { font:10px 'DM Mono',monospace; min-height:14px; }
.wl-chg.pos   { color:var(--gn); }
.wl-chg.neg   { color:var(--rd); }
.wl-rm        { opacity:0; color:var(--tx3); font-size:10px; cursor:pointer;
                padding:2px 4px; border:none; background:none; flex-shrink:0; }
.wl-item:hover .wl-rm { opacity:1; }
.wl-dot       { width:6px; height:6px; border-radius:50%; background:var(--tx3); flex-shrink:0; }
.wl-dot.live  { background:var(--gn); }
.wl-source    { font:500 9px 'DM Mono',monospace; padding:1px 4px; border-radius:3px;
                flex-shrink:0; margin-left:2px; }
.wl-src-z     { background:var(--ac-bg); color:var(--ac); }
.wl-src-csv   { background:var(--sur2); color:var(--tx3); border:1px solid var(--bor); }

/* ── Subscribe Modal ─────────────────────────────────────────────────────── */
#subscribe-modal { display:none; position:fixed; inset:0; background:rgba(0,0,0,.45);
                   z-index:200; align-items:center; justify-content:center; }
#subscribe-modal.open { display:flex; }
.sub-modal-card  { background:var(--sur); border:1px solid var(--bor); border-radius:10px;
                   width:440px; max-width:calc(100vw - 32px); display:flex; flex-direction:column;
                   box-shadow:0 8px 32px rgba(0,0,0,.2); max-height:90vh; }
.sub-modal-head  { display:flex; align-items:center; justify-content:space-between;
                   padding:14px 16px 12px; border-bottom:1px solid var(--bor); flex-shrink:0; }
.sub-modal-head span { font:600 13px 'DM Sans',sans-serif; color:var(--tx); }
.sub-modal-close { background:none; border:none; font-size:18px; color:var(--tx3);
                   cursor:pointer; padding:0 4px; line-height:1; }
.sub-modal-close:hover { color:var(--tx); }
.sub-modal-search { padding:12px 12px 10px; border-bottom:1px solid var(--bor);
                    display:flex; flex-direction:column; gap:8px; flex-shrink:0; }
.sub-modal-search input { width:100%; padding:9px 11px; border:1px solid var(--bor);
                          border-radius:var(--rs); background:var(--sur2); color:var(--tx);
                          font:13px 'DM Mono',monospace; outline:none; }
.sub-modal-search input:focus { border-color:var(--ac); }
.sub-exch-tabs  { display:flex; gap:6px; }
.sub-tab        { padding:4px 14px; border:1px solid var(--bor); border-radius:var(--rs);
                  background:var(--sur2); color:var(--tx3); font:500 11px 'DM Mono',monospace;
                  cursor:pointer; transition:all .15s; }
.sub-tab.active { background:var(--ac-bg); color:var(--ac); border-color:var(--ac); }
.sub-feedback   { min-height:20px; padding:4px 14px; font:11px 'DM Mono',monospace;
                  color:var(--tx3); flex-shrink:0; }
.sub-results    { flex:1; overflow-y:auto; min-height:80px; }
.sub-hint       { padding:24px 16px; font:11px 'DM Mono',monospace; color:var(--tx3);
                  text-align:center; }
.sub-result-row { display:flex; align-items:center; padding:10px 14px;
                  border-bottom:1px solid var(--bor); cursor:pointer; gap:10px; }
.sub-result-row:hover  { background:var(--sur2); }
.sub-result-row.adding { opacity:.5; pointer-events:none; }
.sub-result-row.already { cursor:default; }
.sub-result-row.already:hover { background:none; }
.sub-result-sym  { font:500 13px 'DM Mono',monospace; color:var(--tx); flex:0 0 110px; }
.sub-result-row.already .sub-result-sym { color:var(--tx3); }
.sub-result-name { font:11px 'DM Sans',sans-serif; color:var(--tx3); flex:1; min-width:0;
                   overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sub-result-type { font:500 9px 'DM Mono',monospace; color:var(--tx3); background:var(--sur2);
                   border:1px solid var(--bor); border-radius:3px; padding:1px 5px; flex:0 0 auto; }
.sub-result-check { font-size:12px; color:var(--gn); flex:0 0 auto; }

@media(max-width:640px){
  .header{padding:20px 16px 16px;}
  .main{padding:16px;gap:16px;}
  .form-row{grid-template-columns:1fr;}
  .result-cards{grid-template-columns:1fr 1fr;}
  .welcome-name{font-size:20px;}
  .workspace{flex-direction:column;}
  .panel{min-height:200px;}
}

/* ── Holdings Pie Chart ──────────────────────────────────────────────────── */
.pie-inner { display:flex; align-items:center; gap:20px; }
.pie-inner svg { flex-shrink:0; }
.pie-legend { flex:1; display:flex; flex-direction:column; gap:5px; min-width:0; padding-right:6px; }
.pie-leg-row { display:grid; grid-template-columns:8px minmax(0,1fr) minmax(0,max-content) 44px; align-items:center;
               gap:8px; font:12px 'DM Mono',monospace; padding:3px 0; }
.pie-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.pie-sym { color:var(--tx); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.pie-val { color:var(--tx2); white-space:nowrap; text-align:right; font-size:11px; }
.pie-pct { color:var(--tx); font-weight:500; white-space:nowrap; text-align:right; font-size:11px; }
@media(max-width:640px){
  .pie-inner { flex-direction:column; }
  .pie-inner svg { margin:0 auto; }
}

/* ── Chart Modal ─────────────────────────────────────────────────────────── */
#chart-modal { display:none; position:fixed; inset:0; background:rgba(0,0,0,.55);
               z-index:200; align-items:center; justify-content:center; }
#chart-modal.open { display:flex; }
.chart-modal-card { background:var(--sur); border:1px solid var(--bor); border-radius:10px;
                    width:860px; max-width:calc(100vw - 32px); height:520px;
                    max-height:calc(100vh - 80px); display:flex; flex-direction:column;
                    box-shadow:0 8px 32px rgba(0,0,0,.22); }
.chart-modal-head { display:flex; align-items:center; justify-content:space-between;
                    padding:14px 16px 12px; border-bottom:1px solid var(--bor); flex-shrink:0; }
.chart-modal-head span { font:600 13px 'DM Sans',sans-serif; color:var(--tx); }
.chart-modal-body { flex:1; min-height:0; position:relative; overflow:hidden; }
@media(max-width:640px){
  .chart-modal-card { width:100vw; height:100vh; max-height:100vh; border-radius:0; margin:0; }
}

/* ── Clickable section affordance ──────────────────────────────────────── */
.sect-clickable { cursor:pointer; transition:transform .12s ease, box-shadow .12s ease; }
.sect-clickable:hover { transform:translateY(-1px); box-shadow:0 4px 16px rgba(0,0,0,.05); }
.sect-clickable:focus-visible { outline:2px solid var(--ac); outline-offset:2px; }
.sect-cta { font:11px 'DM Mono',monospace; color:var(--ac); white-space:nowrap; align-self:center; }

/* ── Portfolio analysis page ───────────────────────────────────────────── */
.pa-wrap { max-width:1400px; margin:0 auto; padding:24px 28px 60px; }
.pa-back { display:inline-flex; align-items:center; gap:6px; color:var(--tx2); text-decoration:none;
           font:12px 'DM Mono',monospace; margin-bottom:16px; }
.pa-back:hover { color:var(--ac); }
.pa-h1 { font:600 24px 'DM Sans',sans-serif; letter-spacing:-.4px; margin-bottom:4px; }
.pa-sub { color:var(--tx2); font-size:13px; margin-bottom:24px; }
.pa-card { background:var(--sur); border:1px solid var(--bor); border-radius:12px;
           padding:20px; margin-bottom:18px; }
.pa-card-title { font:600 14px 'DM Sans',sans-serif; margin-bottom:4px; }
.pa-card-title.collapsible { cursor:pointer; user-select:none; }
.pa-card-title.collapsible::after { content:'▾'; float:right; font-size:10px; opacity:.45; display:inline-block; margin-left:6px; }
.pa-card-title.collapsible.collapsed::after { content:'▸'; }
.pa-card-body.collapsed { display:none; }
.pa-dma-table-wrap { max-height:440px; overflow-y:auto; overflow-x:auto; }
.pa-card-sub { color:var(--tx2); font-size:12px; margin-bottom:14px; }

/* Status pill */
.pa-status { display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:999px;
             font:500 12px 'DM Sans',sans-serif; }
.pa-status-ok       { background:var(--gn-bg); color:var(--gn); }
.pa-status-mod      { background:var(--am-bg); color:var(--am); }
.pa-status-severe   { background:var(--rd-bg); color:var(--rd); }
.pa-status-needs    { background:var(--ac-bg); color:var(--ac); }

/* Targets editor table */
.pa-targets-table { width:100%; border-collapse:collapse; font:12px 'DM Mono',monospace; }
.pa-targets-table th { text-align:left; font:500 11px 'DM Mono',monospace; color:var(--tx3);
                       padding:8px 8px; border-bottom:1px solid var(--bor); text-transform:uppercase;
                       letter-spacing:.5px; }
.pa-targets-table td { padding:10px 8px; border-bottom:1px solid var(--bor); vertical-align:middle; }
.pa-targets-table tr:last-child td { border-bottom:none; }
.pa-targets-table input[type=number] { width:70px; padding:4px 6px; border:1px solid var(--bor);
                                        border-radius:var(--rs); background:var(--sur); color:var(--tx);
                                        font:12px 'DM Mono',monospace; text-align:right; }
.pa-targets-table input[type=number]:focus { outline:1px solid var(--ac); border-color:var(--ac); }
.pa-frozen-pill { display:inline-block; padding:2px 7px; background:var(--sur2); color:var(--tx3);
                  border-radius:var(--rs); font:500 10px 'DM Mono',monospace; }
.pa-sum-row { display:flex; justify-content:space-between; align-items:center; margin-top:14px;
              padding-top:14px; border-top:1px solid var(--bor); }
.pa-sum-row .pa-sum-label { font:500 12px 'DM Mono',monospace; color:var(--tx2); }
.pa-sum-row .pa-sum-val   { font:600 14px 'DM Mono',monospace; }
.pa-sum-row .pa-sum-val.bad { color:var(--rd); }
.pa-sum-row .pa-sum-val.ok  { color:var(--gn); }
.pa-actions { display:flex; gap:10px; margin-top:14px; }
.pa-btn-primary { padding:8px 16px; background:var(--ac); color:#fff; border:none; border-radius:var(--rs);
                  font:500 13px 'DM Sans',sans-serif; cursor:pointer; }
.pa-btn-primary:hover { opacity:.9; }
.pa-btn-primary:disabled { opacity:.4; cursor:not-allowed; }
.pa-btn-ghost { padding:8px 14px; background:transparent; color:var(--tx2); border:1px solid var(--bor);
                border-radius:var(--rs); font:500 13px 'DM Sans',sans-serif; cursor:pointer; }
.pa-btn-ghost:hover { background:var(--sur2); color:var(--tx); }

/* Drift dashboard */
.pa-drift-row { padding:12px 0; border-bottom:1px solid var(--bor); }
.pa-drift-row:last-child { border-bottom:none; }
.pa-drift-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.pa-drift-name { font:600 13px 'DM Sans',sans-serif; }
.pa-drift-meta { font:11px 'DM Mono',monospace; color:var(--tx3); margin-left:8px; }
.pa-drift-amounts { font:12px 'DM Mono',monospace; color:var(--tx2); }
.pa-drift-foot { display:flex; justify-content:space-between; margin-top:5px;
                 font:11px 'DM Mono',monospace; color:var(--tx3); }
.pa-drift-foot .pos { color:var(--gn); }
.pa-drift-foot .neg { color:var(--rd); }

/* Uncategorized bucket */
.pa-uncat { background:var(--am-bg); border:1px dashed var(--am); border-radius:var(--rs);
            padding:12px 14px; margin-top:14px; }
.pa-uncat-title { font:600 12px 'DM Sans',sans-serif; color:var(--am); margin-bottom:4px; }
.pa-uncat-list  { font:12px 'DM Mono',monospace; color:var(--tx); }
.pa-uncat-list  .ticker { display:inline-block; margin-right:14px; margin-top:4px; }
.pa-uncat-list  .ticker button { margin-left:4px; padding:1px 6px; font:10px 'DM Mono',monospace;
                                  background:transparent; border:1px solid var(--am); color:var(--am);
                                  border-radius:var(--rs); cursor:pointer; }
.pa-uncat-list  .ticker button:hover { background:var(--am); color:#fff; }

/* ── SLEEVE MANAGER ──────────────────────────────────────────────────────── */
.smgr-sleeve-row { padding:10px 0; border-bottom:1px solid var(--bor); }
.smgr-sleeve-row:last-child { border-bottom:none; }
.smgr-sleeve-head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:7px; }
.smgr-sleeve-name { font:600 13px 'DM Sans',sans-serif; color:var(--tx); }
.smgr-sleeve-name-clickable { cursor:pointer; border-bottom:1px dashed transparent; }
.smgr-sleeve-name-clickable:hover { color:var(--ac); border-bottom-color:var(--ac); }
.smgr-sleeve-meta { font:10px 'DM Mono',monospace; color:var(--tx3); margin-left:6px; }
.smgr-sleeve-actions { display:flex; gap:6px; }
.smgr-del-btn { font-size:10px; padding:2px 8px; color:var(--rd); border-color:var(--rd); }
.smgr-del-btn:hover { background:var(--rd); color:#fff; }
.smgr-chips { display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-height:24px; }
.smgr-chip { display:inline-flex; align-items:center; background:var(--sur2); border:1px solid var(--bor);
             border-radius:20px; padding:2px 4px 2px 10px; font:11px 'DM Mono',monospace; gap:2px; }
.smgr-chip-unassigned { border-color:var(--am); background:var(--am-bg); }
.smgr-sym { cursor:pointer; color:var(--tx); font-weight:500; }
.smgr-sym:hover { color:var(--ac); text-decoration:underline; }
.smgr-remove { background:none; border:none; cursor:pointer; color:var(--tx3); font-size:13px;
               padding:0 4px; line-height:1; border-radius:50%; }
.smgr-remove:hover { color:var(--rd); background:var(--rd-bg); }
.smgr-dropdown { display:inline-flex; align-items:center; gap:4px; background:var(--sur);
                 border:1px solid var(--ac); border-radius:6px; padding:2px 6px; margin-left:4px; }
.smgr-dropdown select { font:11px 'DM Mono',monospace; background:transparent; border:none;
                         color:var(--tx); outline:none; cursor:pointer; }
.smgr-unassigned { margin-top:14px; padding:10px 12px; background:var(--am-bg);
                   border:1px dashed var(--am); border-radius:var(--rs); }
.smgr-unassigned-title { font:600 11px 'DM Sans',sans-serif; color:var(--am); margin-bottom:8px; }

/* Inline messages */
.pa-msg { padding:8px 12px; border-radius:var(--rs); font:12px 'DM Mono',monospace; margin-top:10px; }
.pa-msg.error { background:var(--rd-bg); color:var(--rd); }
.pa-msg.warn  { background:var(--am-bg); color:var(--am); }
.pa-msg.success { background:var(--gn-bg); color:var(--gn); }

/* Portfolio-target row inside the status card */
.pa-target-row { display:grid; grid-template-columns:1fr 1.4fr; gap:18px; margin-top:14px;
                 padding-top:14px; border-top:1px solid var(--bor); }
.pa-target-cell { min-width:0; }
.pa-target-label { font:11px 'DM Mono',monospace; color:var(--tx3);
                   text-transform:uppercase; letter-spacing:.5px; margin-bottom:6px; }
.pa-target-val { font:600 18px 'DM Mono',monospace; color:var(--tx); }
.pa-target-hint { text-transform:none; letter-spacing:0; color:var(--tx3);
                  font-weight:400; margin-left:4px; }
.pa-target-input-row { display:flex; align-items:center; gap:8px; }
.pa-target-input-row input[type=number] { flex:1; min-width:0; padding:7px 10px;
    border:1px solid var(--bor); border-radius:var(--rs); background:var(--sur);
    color:var(--tx); font:14px 'DM Mono',monospace; }
.pa-target-input-row input[type=number]:focus { outline:1px solid var(--ac); border-color:var(--ac); }
@media (max-width:640px) {
  .pa-target-row { grid-template-columns:1fr; }
}

/* ── PORTFOLIO PAGE: TWO-COLUMN LAYOUT ──────────────────────────────────── */
.pa-two-col {
  display: grid;
  grid-template-columns: 1fr 520px;
  gap: 20px;
  align-items: start;
}
.pa-right-col {
  position: sticky;
  top: 20px;
}
@media (max-width: 960px) {
  .pa-two-col { grid-template-columns: 1fr; }
  .pa-right-col { position: static; }
}

/* ── FILTER CHIP ─────────────────────────────────────────────────────────── */
.pa-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font: 12px 'DM Sans', sans-serif;
  background: var(--ac-bg);
  border: 1px solid var(--ac);
  color: var(--ac);
  padding: 5px 12px 5px 14px;
  border-radius: 20px;
}
.pa-filter-chip strong { font-weight: 600; }
.pa-filter-chip button {
  background: none; border: none; cursor: pointer;
  color: var(--ac); font-size: 16px; line-height: 1;
  padding: 0 2px; opacity: .7;
}
.pa-filter-chip button:hover { opacity: 1; }

/* ── SELECTED SLEEVE HIGHLIGHT ───────────────────────────────────────────── */
tr.pa-row-selected td { background: var(--ac-bg) !important; }
.pa-drift-row { cursor: pointer; border-left: 3px solid transparent; padding-left: 9px; transition: border-color .15s; }
.pa-drift-row:hover { border-left-color: var(--bor); }
.pa-drift-row.pa-row-selected { border-left-color: var(--ac); }
.pa-drift-row:last-child { border-bottom: none; }

/* ── DRIFT BAR: 3-SEGMENT ────────────────────────────────────────────────── */
.pa-drift-bar { position: relative; height: 8px; border-radius: 4px; background: var(--sur2); overflow: hidden; }
.pa-drift-bar-fill { height: 100%; border-radius: 4px; background: var(--gn); transition: width .3s; }
.pa-drift-bar-fill.over { background: var(--rd); }
.pa-drift-bar-fill.no-target { background: var(--bor); opacity: .5; }
.pa-drift-bar-inflight {
  position: absolute; top: 0; height: 100%;
  background: repeating-linear-gradient(
    45deg, var(--am) 0, var(--am) 3px, transparent 3px, transparent 8px
  );
  opacity: .7;
}

/* ── GTT SUGGESTIONS TABLE ───────────────────────────────────────────────── */
.pa-gtt-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.pa-gtt-table th {
  text-align: left; color: var(--tx3); font: 500 10px 'DM Mono', monospace;
  text-transform: uppercase; letter-spacing: .05em;
  padding: 6px 6px 8px; border-bottom: 1px solid var(--bor);
}
.pa-gtt-table td { padding: 8px 6px; border-bottom: 1px solid var(--sur2); vertical-align: middle; }
.pa-gtt-table tr:last-child td { border-bottom: none; }
.pa-gtt-table tr:hover td { background: var(--sur2); }

/* transaction type chips */
.pa-gtt-buy  { display:inline-block; padding:2px 7px; border-radius:4px; font:600 10px 'DM Mono',monospace;
               background: rgba(22,163,74,.12); color: var(--gn); }
.pa-gtt-sell { display:inline-block; padding:2px 7px; border-radius:4px; font:600 10px 'DM Mono',monospace;
               background: rgba(220,38,38,.10); color: var(--rd); }
.pa-gtt-live { color: var(--gn); font-weight: 600; font-size: 11px; }
.pa-gtt-warn { color: var(--am); font-size: 10px; }
.pa-gtt-place-btn {
  padding: 3px 10px; border-radius: 5px; font: 600 11px 'DM Sans', sans-serif;
  background: var(--ac); color: #fff; border: none; cursor: pointer; white-space: nowrap;
}
.pa-gtt-place-btn:hover { opacity: .85; }

/* inflight rows */
.pa-gtt-inflight-row {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: 8px 20px; align-items: center;
  padding: 8px 0; border-bottom: 1px solid var(--sur2); font-size: 12px;
}
.pa-gtt-inflight-row:last-child { border-bottom: none; }
.pa-gtt-inflight-sym { font: 600 12px 'DM Mono', monospace; }
.pa-gtt-inflight-meta { color: var(--tx3); font-size: 11px; }
.pa-gtt-inflight-amt { font: 500 12px 'DM Mono', monospace; text-align: right; justify-self: end; }

/* ── Groww holdings table ──────────────────────────────────────────────────── */
.groww-summary {
  display: flex; gap: 16px; align-items: center;
  font: 12px 'DM Mono', monospace; color: var(--tx2);
  padding: 6px 0 10px; flex-wrap: wrap;
}
.groww-summary strong { color: var(--tx1); }
.groww-tbl {
  width: 100%; border-collapse: collapse;
  font: 12px 'DM Mono', monospace;
}
.groww-tbl th {
  font: 600 10px 'DM Sans', sans-serif; text-transform: uppercase;
  letter-spacing: .05em; color: var(--tx3);
  padding: 4px 6px 6px; border-bottom: 1px solid var(--bor);
  text-align: left;
}
.groww-tbl td {
  padding: 7px 6px; border-bottom: 1px solid var(--sur2);
  vertical-align: middle;
}
.groww-tbl tr:last-child td { border-bottom: none; }
.groww-tbl tr:hover td { background: var(--sur2); }
.groww-sym {
  font: 600 12px 'DM Mono', monospace; color: var(--tx1);
  display: block;
}
.groww-name {
  font: 11px 'DM Sans', sans-serif; color: var(--tx3);
  display: block;
}
.groww-amc {
  font: 10px 'DM Sans', sans-serif; color: var(--tx3); opacity: .7;
  display: block;
}
.groww-live-badge {
  display: inline-block; padding: 1px 5px; border-radius: 3px;
  font: 600 9px 'DM Mono', monospace; background: rgba(22,163,74,.12);
  color: var(--gn); vertical-align: middle;
}
.groww-stale-badge {
  display: inline-block; padding: 1px 5px; border-radius: 3px;
  font: 600 9px 'DM Mono', monospace; background: var(--sur2);
  color: var(--tx3); vertical-align: middle;
}

/* source badge in India pie legend */
.pie-src-badge {
  display: inline-block; margin-left: 4px; padding: 1px 4px;
  border-radius: 3px; font: 600 9px 'DM Mono', monospace;
  background: var(--sur2); color: var(--tx3);
  vertical-align: middle; letter-spacing: 0;
}
