:root{--bg: #f6f7f9;--card: #fff;--text: #1d2330;--muted: #6b7280;--line: #e5e7eb;--ok: #1e8e3e;--warn: #d97706;--bad: #c62828;--accent: #1F3A93;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}@media (prefers-color-scheme: dark){:root{--bg: #12151b;--card: #1b2029;--text: #e7e9ee;--muted: #9aa3b2;--line: #2b3240;--accent: #7aa2ff}}*{box-sizing:border-box}body{margin:0;background:var(--bg)}.page{max-width:820px;margin:0 auto;padding:12px 16px 48px}header{display:flex;flex-wrap:wrap;align-items:center;gap:8px}h1{font-size:1.3rem;margin:0 8px 0 0}h2{font-size:1.05rem;margin:20px 0 8px;display:flex;justify-content:space-between}h3{margin:0 0 4px}nav{display:flex;gap:4px;margin-left:auto}button,select,input{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:8px;padding:6px 10px}button{cursor:pointer}button.on,button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}.badge{background:var(--bad);color:#fff;border-radius:10px;padding:0 6px;font-size:.75rem;margin-left:4px}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}.muted{color:var(--muted)}.small{font-size:.8rem}.note{padding:8px;color:var(--muted)}.error{background:#fdecea;color:var(--bad);padding:8px;border-radius:8px}.toggle{display:flex;gap:4px;margin-top:8px}.gold{background:var(--card);border-left:5px solid var(--ok);padding:10px 12px;border-radius:8px;margin:10px 0}.gold.bad{border-color:var(--bad)}.gold table{width:100%;margin-top:6px;font-size:.85rem;border-collapse:collapse}.gold td{padding:2px 4px}.heads>div{margin-bottom:4px}.head{width:100%;display:grid;grid-template-columns:14px 1fr 2fr auto;align-items:center;gap:8px;text-align:left}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:middle}.bar{height:8px;background:var(--line);border-radius:4px;overflow:hidden}.bar span{display:block;height:100%}.amount,.num,.total{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.kinds{width:100%;border-collapse:collapse;background:var(--card);border-radius:8px}.kinds td{padding:6px 10px;border-bottom:1px solid var(--line)}.ok{color:var(--ok)}.warn,tr.warn td{color:var(--warn)}.txs{background:var(--card);border-radius:8px;margin:4px 0 10px}.tx{display:grid;grid-template-columns:48px 1fr auto auto;gap:8px;padding:7px 10px;border-bottom:1px solid var(--line);cursor:pointer;align-items:center}.tx.unsure{background:#d9770614}.tx.excluded{opacity:.45;text-decoration:line-through}.tx .date{color:var(--muted);font-size:.85rem}.tx .who{color:var(--muted);font-size:.8rem}.num.in{color:var(--ok)}.mini{padding:2px 8px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:10}.sheet{background:var(--card);width:100%;max-width:620px;max-height:88vh;overflow:auto;padding:16px;border-radius:14px 14px 0 0}.sheet label{display:flex;justify-content:space-between;align-items:center;margin:8px 0;gap:8px}.sheet pre{font-size:.72rem;white-space:pre-wrap;word-break:break-all}.big{font-size:1.4rem;margin:4px 0 10px}.review{background:var(--card);border-radius:8px;padding:10px;margin-bottom:8px}.review .row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.review input{flex:1;min-width:140px}.budget{position:relative;height:30px;background:var(--line);border-radius:8px;overflow:hidden}.budget .fill{height:100%;background:var(--ok)}.budget.warn .fill{background:var(--warn)}.budget.bad .fill{background:var(--bad)}.budget span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-weight:600}@media (max-width: 560px){nav{margin-left:0;width:100%}.head{grid-template-columns:14px 1fr auto}.head .bar{display:none}}.login{max-width:360px;display:flex;flex-direction:column;gap:10px;padding-top:12vh}.login input,.login button{padding:10px 12px;font-size:1rem}.chips{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.chip{background:var(--line);border-radius:10px;padding:1px 8px;font-size:.8rem}.tag{background:var(--warn);color:#fff;border-radius:6px;padding:0 6px;font-size:.75rem;margin-left:6px}button.link{background:none;border:none;color:var(--accent);padding:4px 0}.tx.line{grid-template-columns:90px 1fr auto auto;cursor:default}.scope{display:flex;gap:6px;align-items:center;margin:8px 0;font-size:.9rem}.weeks{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;align-items:start}.week{background:var(--card);border-radius:8px;padding:6px}.whead{display:flex;gap:6px;align-items:baseline;border-bottom:2px solid var(--line);padding:2px 4px 6px}.whead .num{margin-left:auto;font-weight:600}.day{margin-top:6px}.dhead{display:flex;justify-content:space-between;font-size:.8rem;font-weight:600;padding:2px 4px;color:var(--muted)}.entry{display:grid;grid-template-columns:10px 1fr auto;gap:6px;align-items:center;padding:3px 4px;font-size:.85rem;border-radius:4px;cursor:pointer}.entry:hover{background:var(--line)}.entry .swatch{width:9px;height:9px}.entry .what{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry .acct{color:var(--muted);font-size:.72rem}.entry.unsure{background:#d977061f}.entry.k-transfer,.entry.k-savings{color:var(--muted);font-style:italic}.purpose{display:inline-block;font-size:.65rem;font-weight:700;color:#fff;border-radius:3px;padding:0 3px;margin-right:4px}.p-work{background:#475569}.p-education{background:#b7950b}.p-holiday{background:#d63384}.recon-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}.rperson{margin:10px 0}.rhead-btn,.rsub-btn{width:100%;display:flex;justify-content:space-between;text-align:left}.rhead-btn{font-weight:700;font-size:1.05rem;background:var(--card)}.raccount{margin:6px 0 6px 14px}.rsub-btn{background:transparent;border-color:var(--line)}.rsection{background:var(--card);border-radius:8px;margin:6px 0;overflow-x:auto}.rgrid{display:grid;grid-template-columns:62px minmax(120px,1fr) 84px 132px 150px 96px 34px 58px;gap:6px;align-items:center;padding:4px 8px;min-width:780px}.rtitle{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--line)}.rtitle span:first-child{color:var(--text);font-weight:700}.rrow{border-bottom:1px solid var(--line);font-size:.88rem}.rrow .merchant{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rrow .date{color:var(--muted);white-space:nowrap}.rrow select{padding:3px 4px;font-size:.82rem;min-width:0}.rrow.unsure{background:#d9770612}.rrow.saved{opacity:.5}.pen{border:none;background:none;padding:0 4px 0 0;color:var(--muted);cursor:pointer;font-size:.85rem}.pen:hover{color:var(--accent)}.page:has(.sheet-tab){max-width:1680px}.sheet-bar{display:flex;justify-content:space-between;align-items:center;margin:8px 0;flex-wrap:wrap;gap:8px}.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:.9rem}.switch input{display:none}.switch span{width:34px;height:18px;border-radius:9px;background:var(--line);position:relative;transition:.15s}.switch span:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.15s}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{left:18px}.gold-pill{display:inline-block;padding:4px 10px;border-radius:12px;font-weight:600;font-size:.85rem}.gold-pill.ok{background:#1e8e3e26;color:var(--ok)}.gold-pill.bad{background:#c6282826;color:var(--bad)}.day-blocks,.card-blocks{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:10px;align-items:start}.card-blocks{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.sheet-h{margin-top:18px}table.block{width:100%;border-collapse:collapse;background:var(--card);border-radius:6px;overflow:hidden;font-size:.8rem;table-layout:fixed}table.block th{font-size:.7rem;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);text-align:left;padding:4px;border-bottom:2px solid var(--line)}table.block.card thead tr:first-child th{text-transform:none;font-size:.85rem;color:var(--text)}table.block td{padding:2px 4px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}table.block th.vday,table.block td.vday{width:22px;padding:0;text-align:center}table.block td.vday{border-right:2px solid var(--line);background:var(--bg);cursor:default;vertical-align:middle}table.block td.vday span{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:700;font-size:.72rem;color:var(--muted)}table.block th:nth-child(2){width:auto}table.block .n{width:64px;text-align:right;font-variant-numeric:tabular-nums}table.block.card .date{width:42px;color:var(--muted)}table.block.card .n{width:70px}table.block td.desc .bank{color:var(--muted);font-size:.7rem}table.block td.desc em{color:var(--muted);font-style:normal}table.block .dot,.sum .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}table.block tr.empty td{height:16px;cursor:default}table.block tr.moved td{color:var(--muted);font-style:italic}table.block tr.unsure td.desc{box-shadow:inset 3px 0 0 var(--warn)}table.block tfoot td{font-weight:700;border-top:2px solid var(--line);border-bottom:none;cursor:default}table.block td.earn{color:var(--ok)}.who-d{color:var(--muted);font-size:.7rem}.bottom-half{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;margin-top:18px;align-items:start}.panel{background:var(--card);border-radius:8px;padding:8px 10px}.panel h3{font-size:.95rem;margin:2px 0 8px}table.sum{width:100%;border-collapse:collapse;font-size:.84rem}table.sum td,table.sum th{padding:3px 4px;border-bottom:1px solid var(--line)}table.sum th{font-size:.7rem;text-transform:uppercase;color:var(--muted);text-align:left}table.sum .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.sum tfoot td,table.sum tr.strong td{font-weight:700}table.sum tr.warn td{color:var(--warn)}@media (max-width: 560px){.day-blocks,.card-blocks,.bottom-half{grid-template-columns:1fr}table.block .n{width:54px}}.page:has(.diary-tab){max-width:1280px}.glance{background:var(--card);border-radius:10px;padding:10px 12px;margin:8px 0 12px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.tile{display:flex;flex-direction:column;gap:2px;padding:4px 0}.tile span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.tile b{font-size:1.15rem;font-variant-numeric:tabular-nums}.tile.in b,.tile.ok b{color:var(--ok)}.tile.bad b{color:var(--bad)}.where{display:flex;height:14px;border-radius:7px;overflow:hidden;margin-top:10px;gap:2px}.where .seg{border:none;padding:0;min-width:4px;cursor:pointer;border-radius:0}.where .seg.dim{opacity:.25}.diary-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.diary-side{position:sticky;top:8px;display:flex;flex-direction:column;gap:10px}.diary-tools{display:flex;gap:10px;align-items:center;margin-bottom:6px}.chip-btn{border-radius:14px;padding:2px 10px;font-size:.82rem}.dweek{margin-bottom:14px}.dweek-head{display:grid;grid-template-columns:1fr 84px auto;gap:10px;align-items:end;padding:4px 2px 6px;border-bottom:2px solid var(--line);font-weight:700;font-size:.9rem}.spark{display:flex;align-items:flex-end;gap:3px;height:22px}.spark i{flex:1;background:var(--accent);opacity:.55;border-radius:2px 2px 0 0;min-height:2px}.spark i.we{background:var(--warn)}.dday{display:grid;grid-template-columns:52px 1fr;border-bottom:1px solid var(--line)}.dday-date{padding:7px 4px;font-size:.8rem;color:var(--muted);line-height:1.1}.dday-date b{display:block;color:var(--text);font-size:.72rem;text-transform:uppercase}.dday.weekend .dday-date{color:var(--warn)}.dday-lines{padding:3px 0;min-width:0}.dline{display:grid;grid-template-columns:1fr 18px 78px;gap:6px;align-items:center;padding:4px 6px 4px 10px;margin:1px 0;border-radius:4px;cursor:pointer;font-size:.88rem;position:relative;background:color-mix(in srgb,var(--c, transparent) 12%,transparent)}.dline:before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:4px;border-radius:2px;background:var(--c, transparent)}.dline:hover{filter:brightness(1.15)}.dline .what{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dline .what em{color:var(--muted);font-style:normal;font-size:.8rem}.dline .bank{color:var(--muted);font-size:.72rem}.dline .who{color:var(--muted);font-size:.7rem;text-align:center}.dline .num{text-align:right;font-variant-numeric:tabular-nums}.dline .num.in{color:var(--ok)}.dline.neutral{color:var(--muted);font-style:italic}.dline.unsure{outline:1px dashed var(--warn)}.dline.nested{grid-template-columns:42px 1fr 18px 78px;margin-left:14px;font-size:.84rem}.dline .pdate{color:var(--muted);font-size:.72rem}.dbill-head{width:100%;display:grid;grid-template-columns:16px 1fr 78px;gap:6px;align-items:center;text-align:left;padding:5px 6px;margin:2px 0;background:var(--card);border:1px solid var(--line);border-radius:6px;font-weight:600;font-size:.88rem}.dbill-head .what{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dbill-head .what .muted{font-weight:400;font-size:.78rem}.dbill-head .num{text-align:right;font-variant-numeric:tabular-nums}.dbill-lines{border-left:2px solid var(--line);margin:2px 0 6px 8px}.bankrow{display:grid;grid-template-columns:1fr 80px 82px 14px;gap:6px;align-items:center;padding:4px 0;font-size:.84rem;border-bottom:1px solid var(--line)}.bankrow .bname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bline{width:80px;height:22px}.bline path{fill:none;stroke:var(--accent);stroke-width:1.6;vector-effect:non-scaling-stroke}.hrow{width:100%;display:grid;grid-template-columns:10px 1fr 70px 76px;gap:6px;align-items:center;padding:3px 2px;border:none;background:none;text-align:left;font-size:.84rem;border-radius:4px}.hrow.on{background:var(--line)}.hrow .hname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hrow .hbar{height:7px;background:var(--line);border-radius:4px;overflow:hidden}.hrow .hbar i{display:block;height:100%}.hrow .num{text-align:right;font-variant-numeric:tabular-nums}@media (max-width: 900px){.diary-layout{grid-template-columns:1fr}.diary-side{position:static}}@media (max-width: 560px){.tiles{grid-template-columns:repeat(2,1fr)}.dday{grid-template-columns:40px 1fr}.dline{grid-template-columns:1fr 14px 66px;font-size:.84rem}.dline.nested{grid-template-columns:36px 1fr 14px 66px;margin-left:6px}}
