:root{
  --bg:#0a0e13; --surface:#12181f; --surface2:#182029; --line:#232e3a;
  --text:#e8eef4; --muted:#8b98a5; --accent:#3ecf8e; --accent-dim:#14532d;
  --gold:#d4a94e; --red:#e5534b; --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  -webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select,textarea{font:inherit;color:var(--text);background:var(--surface2);
  border:1px solid var(--line);border-radius:10px;padding:10px;width:100%}
label{display:block;font-size:.85rem;color:var(--muted);margin:10px 0}
label input,label select,label textarea{margin-top:5px;color:var(--text)}
.primary{background:var(--accent);color:#04120a;font-weight:700;border-radius:12px;
  padding:13px 18px;width:100%;margin-top:8px}
.ghost{border:1px solid var(--line);border-radius:12px;padding:11px 16px;width:100%}
.danger{background:var(--red);color:#fff;font-weight:700;border-radius:12px;padding:12px;width:100%}
.err{color:var(--red);min-height:1.2em;font-size:.9rem}
.warn{color:var(--gold);font-size:.85rem;line-height:1.45}
.muted{color:var(--muted)}
.small{font-size:.85rem}
hr{border:none;border-top:1px solid var(--line);margin:18px 0}

/* lock */
.lock{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}
.lock-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);
  border-radius:20px;padding:28px 22px;text-align:center}
.lock-card .logo{font-size:44px}
.lock-card h1{margin:8px 0 2px}
.lock-card label{text-align:left}

/* shell */
.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;
  padding:12px 16px;background:rgba(10,14,19,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{font-weight:800;font-size:1.1rem}
.top-actions{display:flex;gap:8px;align-items:center}
.badge{font-size:.72rem;color:var(--gold);border:1px solid var(--gold);border-radius:99px;padding:3px 9px}
.icon-btn{font-size:1.05rem;padding:7px 10px;border-radius:10px;background:var(--surface2)}
main{padding:16px 14px 110px;max-width:720px;margin:0 auto}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:space-around;
  background:rgba(13,18,24,.97);border-top:1px solid var(--line);padding:8px 4px calc(8px + env(safe-area-inset-bottom))}
.tab{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:1.15rem;color:var(--muted);padding:4px 6px;border-radius:10px}
.tab span{font-size:.66rem}
.tab.active{color:var(--accent)}

/* cards & lists */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}
.row{display:flex;align-items:center;gap:12px}
.row .grow{flex:1;min-width:0}
.amt{font-weight:700;white-space:nowrap}
.pos{color:var(--accent)} .neg{color:var(--red)}
.summary{display:flex;gap:12px;flex-wrap:wrap}
.summary .card{flex:1;min-width:140px;text-align:center}
.summary .big{font-size:1.5rem;font-weight:800}
.bar{height:9px;border-radius:99px;background:var(--surface2);overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.bar.gold i{background:var(--gold)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.chip{border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-size:.85rem;color:var(--muted)}
.chip.active{border-color:var(--accent);color:var(--accent)}
.fab{display:block;width:100%;border:1.5px dashed var(--line);color:var(--accent);
  border-radius:var(--radius);padding:13px;font-weight:700;margin:6px 0 14px}
.item-btns{display:flex;gap:6px}
.item-btns button{background:var(--surface2);border-radius:9px;padding:7px 10px;font-size:.9rem}
.section-title{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px}
.section-title h2{font-size:1.05rem;margin:0}
h2.view-title{margin:2px 0 12px;font-size:1.35rem}
.pill{font-size:.7rem;border-radius:99px;padding:2px 8px;background:var(--accent-dim);color:var(--accent)}
.pill.off{background:#3a2320;color:var(--red)}
.strike{opacity:.55}

/* checks dropdown */
.checks-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.check-menu-wrap{position:relative}
.check-btn{display:flex;align-items:center;gap:7px;background:var(--surface2);border:1px solid var(--line);
  border-radius:99px;padding:8px 13px;font-size:1rem}
.check-count{background:var(--accent);color:#04120a;font-weight:800;border-radius:99px;font-size:.72rem;padding:1px 7px}
.check-menu{position:absolute;right:0;top:calc(100% + 8px);width:min(320px,86vw);z-index:40;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px rgba(0,0,0,.55);overflow:hidden}
.check-menu .cm-row{display:flex;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid var(--line);width:100%;text-align:left}
.check-menu .cm-row.current{background:var(--surface2)}
.check-menu .cm-new{color:var(--accent);font-weight:700;justify-content:center}
.check-menu .cm-name{flex:1;min-width:0}
.check-menu .cm-sub{display:block;color:var(--muted);font-size:.76rem}
.check-menu .mini{background:var(--surface2);border-radius:8px;padding:6px 8px}
.check-menu .mini.confirm{background:var(--red);color:#fff}

/* modal */
.backdrop{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.66);display:flex;align-items:flex-end;justify-content:center}
.modal{background:var(--surface);width:100%;max-width:560px;max-height:92dvh;overflow:auto;
  border-radius:20px 20px 0 0;padding:18px;border:1px solid var(--line)}
@media(min-width:640px){.backdrop{align-items:center}.modal{border-radius:20px}}
.modal-head{display:flex;justify-content:space-between;align-items:center}
.modal-head h2{margin:0;font-size:1.15rem}
.modal .primary{margin-top:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.checkline{display:flex;gap:9px;align-items:center;color:var(--text);font-size:.95rem}
.checkline input{width:auto}
