:root{
  --bg:#0a1024; --panel:#111a33; --panel2:#0f1730; --line:#22305c;
  --text:#e8ecf7; --muted:#8b96b8; --accent:#3a6ae0; --accent2:#5b86ff;
  --pos:#37d399; --neg:#ff6b6b;
  --radius:14px; --shadow:0 8px 30px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:radial-gradient(1200px 600px at 80% -10%,#152a63 0%,var(--bg) 55%);
  color:var(--text);font:14px/1.5 -apple-system,Segoe UI,Roboto,Arial,sans-serif}
.muted{color:var(--muted)} .pad{padding:14px}
.pos{color:var(--pos)} .neg{color:var(--neg)} .r{text-align:right}

.app{display:grid;grid-template-columns:290px 1fr;min-height:100vh}

/* ---- sidebar ---- */
.sidebar{background:linear-gradient(180deg,#0d1630 0%,#0a1330 100%);
  border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 16px;gap:14px;overflow:auto}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;
  background:linear-gradient(135deg,#3a6ae0,#5b86ff);color:#fff;font-weight:900;font-size:20px}
.brand b{font-size:16px} .brand small{display:block;color:var(--muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase}
.sync-pill{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);
  padding:8px 12px;border-radius:999px;font-size:12px;color:var(--muted)}
.sync-pill .dot{width:9px;height:9px;border-radius:50%;background:#5c6b96}
.sync-pill.live .dot{background:var(--pos);animation:pulse 1.8s infinite}
.sync-pill.stale .dot{background:#ffb020}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(55,211,153,.5)}70%{box-shadow:0 0 0 8px rgba(55,211,153,0)}100%{box-shadow:0 0 0 0 rgba(55,211,153,0)}}
.rail-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:4px 2px -4px}

/* ---- bank rail ---- */
.banks{display:flex;flex-direction:column;gap:8px}
.bankcard{--c:#3a6ae0;text-align:left;background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--c);
  border-radius:12px;padding:11px 12px;cursor:pointer;transition:.15s;color:var(--text)}
.bankcard:hover{transform:translateY(-1px);border-color:var(--c)}
.bankcard.active{background:color-mix(in srgb,var(--c) 22%,var(--panel2));border-color:var(--c);box-shadow:var(--shadow)}
.bankcard.all{border-left-color:#5b86ff}
.bc-top{display:flex;align-items:center;gap:8px}
.bc-dot{--c:#3a6ae0;width:9px;height:9px;border-radius:50%;background:var(--c);flex:0 0 auto}
.bc-name{font-weight:600}
.bc-bal{font-size:17px;font-weight:700;margin-top:5px}
.bc-sub{font-size:11px;color:var(--muted);margin-top:2px}
.a-cur{font-size:11px;color:var(--muted);font-weight:500}

/* ---- accounts ---- */
.accounts{display:flex;flex-direction:column;gap:8px}
.acct{--c:#3a6ae0;text-align:left;background:var(--panel2);border:1px solid var(--line);border-radius:12px;
  padding:11px 12px;cursor:pointer;transition:.15s;color:var(--text)}
.acct:hover{border-color:var(--c);transform:translateY(-1px)}
.acct.active{border-color:var(--c);background:color-mix(in srgb,var(--c) 18%,var(--panel2));box-shadow:var(--shadow)}
.acct .a-top{display:flex;align-items:center;gap:8px}
.acct .a-dot{width:8px;height:8px;border-radius:50%;background:var(--c);flex:0 0 auto}
.acct .a-name{font-weight:600}
.acct .a-num{font-size:11px;color:var(--muted);font-family:ui-monospace,monospace;margin-top:3px}
.acct .a-bankname{font-size:11px;color:var(--muted);margin-top:2px}
.acct .a-bal{font-size:16px;font-weight:700;margin-top:5px}
.side-foot{margin-top:auto;font-size:11px;display:flex;flex-direction:column;gap:10px;padding-top:8px}
.logout{color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:9px;padding:8px 12px;text-align:center}
.logout:hover{color:#fff;border-color:var(--accent)}

/* ---- main ---- */
.main{padding:22px 26px;overflow:auto}
.topbar{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px}
.topbar h1{margin:0;font-size:24px}
.switch{display:flex;align-items:center;gap:8px;color:var(--muted);cursor:pointer;font-size:13px}
.switch input{accent-color:var(--accent)}
.top-actions{display:flex;align-items:center;gap:16px}
.top-actions .btn-ghost{padding:6px 12px}

.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:20px}
.card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-radius:var(--radius);padding:16px}
.card.net{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent)}
.card-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.card-value{font-size:22px;font-weight:700;margin-top:8px}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}}

.panel{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-radius:var(--radius);margin-bottom:20px;overflow:hidden}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:16px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel-head h2{margin:0;font-size:15px}

/* ---- net worth bars ---- */
.worth{padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.worth-row{display:grid;grid-template-columns:180px 1fr 160px;align-items:center;gap:14px}
.wr-name{display:flex;align-items:center;gap:8px;font-weight:600}
.wr-track{height:12px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.wr-fill{height:100%;border-radius:999px;transition:width .4s}
.wr-val{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
@media(max-width:900px){.worth-row{grid-template-columns:120px 1fr 110px;gap:8px}}

.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.filters input,.filters select{background:var(--bg);border:1px solid var(--line);color:var(--text);
  padding:8px 10px;border-radius:9px;font-size:13px}
.filters select{cursor:pointer}
.filters input[type=search]{min-width:200px}
.btn,.btn-ghost{padding:8px 14px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line);text-decoration:none}
.btn{background:var(--accent);border-color:var(--accent);color:#fff}
.btn:hover{filter:brightness(1.1)}
.btn-ghost{background:transparent;color:var(--muted)}
.btn-ghost:hover{color:var(--text);border-color:var(--accent)}

/* ---- chart ---- */
.chart{padding:16px 18px;height:180px}
.chart svg{width:100%;height:100%;overflow:visible}
.bar-inc{fill:var(--pos)} .bar-exp{fill:var(--neg)}
.chart .axis{stroke:var(--line)} .chart text{fill:var(--muted);font-size:10px}

/* ---- table ---- */
.table-wrap{overflow-x:auto}
table.txn{width:100%;border-collapse:collapse;font-size:13.5px}
table.txn th{position:sticky;top:0;background:#12235c;color:#cdd6f4;text-align:left;
  padding:11px 16px;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;z-index:1}
table.txn td{padding:11px 16px;border-top:1px solid var(--line)}
table.txn tbody tr:hover{background:rgba(90,134,255,.06)}
td.amt{font-variant-numeric:tabular-nums;font-weight:600}
.tag{display:inline-block;font-size:11px;color:var(--muted);font-family:ui-monospace,monospace}
.bchip{--c:#556;display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;
  color:#fff;background:var(--c);white-space:nowrap}
.table-foot{padding:12px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pager{display:flex;align-items:center;gap:6px}
.pager .pg{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:6px 11px;border-radius:7px;font-size:12px;cursor:pointer}
.pager .pg:hover:not(:disabled){border-color:var(--accent);color:#fff}
.pager .pg:disabled{opacity:.4;cursor:default}
.pg-info{font-size:12px;color:var(--muted);padding:0 8px;white-space:nowrap}
table.txn th.sortable{cursor:pointer;user-select:none}
table.txn th.sortable:hover{color:#fff}
.sort-i{color:var(--accent2);font-size:11px}
.col-wrap{position:relative}
.col-menu{position:absolute;top:110%;right:0;z-index:20;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:8px;box-shadow:var(--shadow);min-width:170px;display:flex;flex-direction:column;gap:2px}
.col-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;font-size:13px;cursor:pointer;color:var(--text)}
.col-item:hover{background:var(--panel2)}
.col-item input{accent-color:var(--accent)}
.txn-row{cursor:pointer}
.memo{color:var(--muted);font-size:12px;font-style:italic}

/* ---- detail ---- */
.detail{padding:14px 18px;background:var(--panel2);border-top:1px solid var(--line)}
.d-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 22px;margin-bottom:12px}
.d-item{display:flex;flex-direction:column;gap:2px}
.d-k{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.d-v{font-size:13.5px;word-break:break-word}
.d-json{margin-top:10px;background:var(--bg);border:1px solid var(--line);border-radius:8px;
  padding:12px;font-size:12px;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}

/* ---- payment toasts ---- */
.toasts{position:fixed;right:20px;bottom:20px;z-index:99999;display:flex;flex-direction:column;gap:12px;max-width:360px}
.toast{--c:#37d399;display:flex;gap:12px;align-items:flex-start;background:linear-gradient(135deg,#0f3d2e,#123a5c);
  border:1px solid #2f6b4f;border-left:4px solid var(--c);border-radius:12px;padding:14px 16px;
  box-shadow:0 10px 34px rgba(0,0,0,.45);transform:translateX(120%);opacity:0;transition:.4s cubic-bezier(.2,.9,.3,1)}
.toast.show{transform:translateX(0);opacity:1}
.t-icon{font-size:26px;line-height:1}
.t-body{flex:1;min-width:0}
.t-title{font-weight:700;font-size:15px;color:#eafff4}
.t-desc{font-size:13px;color:#d3e0f5;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.t-meta{font-size:11px;color:var(--muted);margin-top:4px}
.t-close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:0 2px}
.t-close:hover{color:#fff}

/* ================= login ================= */
.login-body{display:grid;place-items:center;min-height:100vh}
.login-wrap{width:100%;max-width:380px;padding:20px}
.login-card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-radius:18px;padding:28px 26px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}
.login-brand{display:flex;align-items:center;gap:12px}
.lb-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;
  background:linear-gradient(135deg,#3a6ae0,#5b86ff);color:#fff;font-weight:900;font-size:22px}
.login-brand b{font-size:17px} .login-brand small{display:block;color:var(--muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase}
.login-banks{display:flex;gap:8px}
.lb-chip{--c:#3a6ae0;flex:1;text-align:center;font-size:12px;font-weight:600;padding:6px 0;border-radius:8px;
  color:#fff;background:var(--c)}
.login-field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}
.login-field input{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:11px 12px;border-radius:10px;font-size:14px}
.login-field input:focus{outline:none;border-color:var(--accent)}
.login-btn{margin-top:4px;background:var(--accent);border:1px solid var(--accent);color:#fff;
  padding:12px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer}
.login-btn:hover{filter:brightness(1.1)}
.login-err{background:rgba(255,107,107,.12);border:1px solid var(--neg);color:#ffd5d5;padding:9px 12px;border-radius:9px;font-size:13px}
.login-foot{text-align:center;font-size:11px;color:var(--muted)}

/* ================= top nav (cross-page) ================= */
.topnav{display:flex;align-items:center;gap:20px;padding:0 22px;height:54px;background:#0c1430;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.tn-brand{display:flex;align-items:center;gap:9px;font-weight:700;color:var(--text);text-decoration:none;white-space:nowrap}
.tn-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#3a6ae0,#5b86ff);color:#fff;font-weight:900}
.tn-links{display:flex;gap:4px;flex:1}
.tn-link{padding:8px 14px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:13.5px;font-weight:600}
.tn-link:hover{color:var(--text);background:var(--panel2)}
.tn-link.active{color:#fff;background:var(--accent)}
.tn-out{color:var(--muted);text-decoration:none;font-size:13px;border:1px solid var(--line);padding:7px 12px;border-radius:8px}
.tn-out:hover{color:#fff;border-color:var(--accent)}

/* ================= standalone pages ================= */
.page{max-width:1200px;margin:0 auto;padding:24px 26px 60px}
.page h1{margin:0 0 16px;font-size:24px}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:14px}
.sel{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:8px 12px;border-radius:9px;font-size:13px;cursor:pointer}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.chart.tall{height:240px}
.switch.mini span{font-size:12px}

/* health dots (bank rail + launcher) */
.bc-health,.lc-dot{width:9px;height:9px;border-radius:50%;background:#5c6b96;flex:0 0 auto;display:inline-block}
.bc-health.live,.lc-dot.live{background:var(--pos);box-shadow:0 0 0 0 rgba(55,211,153,.6);animation:pulse 1.8s infinite}
.bc-health.stale,.lc-dot.stale{background:#ffb020}
.bc-health.down,.lc-dot.down{background:var(--neg)}
.bc-health.never,.lc-dot.never{background:#5c6b96}
.bc-hlabel.live{color:var(--pos)}.bc-hlabel.stale{color:#ffb020}.bc-hlabel.down{color:var(--neg)}

/* category chips + transfer badge */
.catchip{display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);color:var(--text)}
.catchip.income{color:var(--pos);border-color:#2f6b4f}.catchip.expense{color:var(--neg);border-color:#6b2f2f}
.xfer{display:inline-block;font-size:10px;font-weight:700;color:#c9a24b;border:1px solid #6b5a2f;border-radius:999px;padding:1px 7px;margin-left:6px}
.pend{display:inline-block;font-size:10px;font-weight:700;color:#ffb020;border:1px solid #7a5c12;border-radius:999px;padding:1px 7px;margin-left:6px;background:rgba(255,176,32,.08)}
table.txn tr.pending td{background:rgba(255,176,32,.05)}
table.txn tr.pending{opacity:.92}

/* analytics category bars */
.catlist{padding:14px 18px;display:flex;flex-direction:column;gap:10px}
.catrow{display:grid;grid-template-columns:150px 1fr 130px;align-items:center;gap:12px}
.catname{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cattrack{height:11px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.catfill{height:100%;background:var(--neg);border-radius:999px}
.catval{text-align:right;font-variant-numeric:tabular-nums}

/* mini tables */
table.mini{width:100%;border-collapse:collapse;font-size:13px}
table.mini th{text-align:left;padding:9px 14px;color:#cdd6f4;background:#12235c;font-size:11px;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0}
table.mini td{padding:9px 14px;border-top:1px solid var(--line)}
table.mini tbody tr:hover{background:rgba(90,134,255,.05)}
.rowact button{background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:3px 9px;font-size:12px;cursor:pointer;margin-left:4px}
.rowact button:hover{color:#fff;border-color:var(--accent)}

/* forms */
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 18px;padding:16px 18px}
@media(max-width:820px){.form-grid{grid-template-columns:1fr 1fr}}
.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.form-grid input,.form-grid select{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:9px 11px;border-radius:9px;font-size:14px}
.form-grid input:focus,.form-grid select:focus{outline:none;border-color:var(--accent)}
.form-actions{display:flex;gap:10px;flex-wrap:wrap;padding:0 18px 18px;align-items:center}
.chk{flex-direction:row!important;align-items:center;gap:8px;color:var(--text)!important}
.small{font-size:12px}.muted.small,.small.muted{color:var(--muted)}
p.muted.small{padding:0 18px}
.pill{font-size:11px;padding:3px 10px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
.pill.good{color:var(--pos);border-color:#2f6b4f}
.flash{margin:0 0 16px;padding:11px 14px;border-radius:10px;font-size:13.5px}
.flash.ok{background:rgba(55,211,153,.12);border:1px solid #2f6b4f;color:#c9f5e2}
.flash.err{background:rgba(255,107,107,.12);border:1px solid var(--neg);color:#ffd5d5}

/* modal */
.modal{position:fixed;inset:0;background:rgba(4,8,20,.66);display:grid;place-items:center;z-index:200;padding:20px}
.modal-card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:16px;
  padding:22px;width:100%;max-width:440px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;max-height:90vh;overflow:auto}
.modal-card h3{margin:0 0 4px}
.modal-card label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.modal-card label.chk{flex-direction:row;align-items:center;gap:8px;color:var(--text)}
.modal-card input,.modal-card select{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:9px 11px;border-radius:9px;font-size:14px}

/* reports statement */
.statement h3{margin:18px 18px 8px;font-size:14px}
.stmt-head{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 18px 6px}
.stmt-head h2{margin:0}
.stmt-brand{font-weight:700;color:var(--muted)}
.stmt-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:14px 18px}
.stmt-cards>div{background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:12px}
.stmt-cards span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.stmt-cards b{font-size:18px;margin-top:5px;display:block}
@media(max-width:820px){.stmt-cards{grid-template-columns:repeat(2,1fr)}}

/* launcher */
.launch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:20px}
@media(max-width:900px){.launch-grid{grid-template-columns:1fr}}
.launch-card{--c:#3a6ae0;background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-top:3px solid var(--c);border-radius:14px;padding:18px}
.lc-head{display:flex;align-items:center;gap:9px;font-size:16px}
.lc-tag{font-size:12px;margin:4px 0 10px}
.lc-stat{font-size:12px;color:var(--muted);margin-bottom:14px;min-height:16px}
.lc-actions{display:flex;gap:10px;flex-wrap:wrap}

/* ================= monitor page ================= */
.panel.mon{--c:#3a6ae0}
.mon-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.mon-title{display:flex;align-items:center;gap:10px;font-size:16px}
.mon-bar{width:4px;height:20px;border-radius:2px;background:var(--c)}
.mon-pills{display:flex;gap:10px;flex-wrap:wrap}
.mstat{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;padding:5px 11px;border-radius:999px;background:var(--panel2);border:1px solid var(--line)}
.mstat i{width:9px;height:9px;border-radius:50%;background:#5c6b96;flex:0 0 auto}
.mstat.live i{background:var(--pos);animation:pulse 1.8s infinite}.mstat.live{color:var(--pos)}
.mstat.stale i{background:#ffb020}.mstat.stale{color:#ffb020}
.mstat.down i{background:var(--neg)}.mstat.down{color:var(--neg)}
.mstat.never i{background:#5c6b96}.mstat.never{color:var(--muted)}
.mon-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}
.mon-col{padding:0;border-right:1px solid var(--line)}
.mon-col:last-child{border-right:none}
.mon-col-h{padding:10px 16px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line)}
.table-wrap.tall{max-height:300px;overflow:auto}
.mono{font-family:ui-monospace,monospace;font-size:12.5px}
@media(max-width:820px){.mon-grid{grid-template-columns:1fr}.mon-col{border-right:none;border-bottom:1px solid var(--line)}}

/* print */
@media print{
  .topnav,.no-print,.form-actions{display:none!important}
  body{background:#fff;color:#000}
  .panel,.statement{background:#fff;border:1px solid #ccc;box-shadow:none}
  table.mini th{background:#eee;color:#000}
  .stmt-cards>div{background:#f5f5f5}
  .page{max-width:none;padding:0}
}

/* ===== notification bell ===== */
.bell-wrap{ position:relative; }
.bell{ position:relative; background:transparent; border:1px solid var(--line); color:var(--text); width:38px; height:34px; border-radius:9px; cursor:pointer; font-size:16px; }
.bell:hover{ background:var(--panel2); }
.bell.has{ border-color:var(--accent); }
.bell-badge{ position:absolute; top:-6px; right:-6px; background:var(--neg); color:#fff; font-size:11px; font-weight:700; min-width:18px; height:18px; border-radius:9px; padding:0 4px; display:grid; place-items:center; box-shadow:0 0 0 2px var(--bg); }
.bell-menu{ position:absolute; right:0; top:42px; width:360px; max-width:88vw; background:var(--panel); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow,0 16px 48px rgba(0,0,0,.5)); z-index:60; overflow:hidden; }
.bell-head{ display:flex; align-items:center; justify-content:space-between; padding:10px 12px; border-bottom:1px solid var(--line); }
.bell-acts{ display:flex; gap:4px; }
.bell-list{ max-height:60vh; overflow-y:auto; }
.bell-item{ display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line); }
.bell-item:last-child{ border-bottom:none; }
.bell-item.unread{ background:rgba(224,168,0,.07); }
.bi-ic{ font-size:16px; flex:none; margin-top:1px; }
.bi-m{ flex:1; min-width:0; }
.bi-t{ font-weight:600; font-size:13px; }
.bi-s{ font-size:12px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bi-time{ font-size:11px; color:var(--muted); margin-top:2px; }
.bi-ack{ background:transparent; border:1px solid var(--line); color:var(--muted); border-radius:6px; padding:2px 8px; font-size:12px; cursor:pointer; flex:none; }
.bi-ack:hover{ border-color:var(--accent); color:var(--text); }
.bi-ackd{ color:var(--pos); flex:none; font-weight:700; }
.bell-item.ackd{ opacity:.5; }
