:root{--bg: #111418;--surface: #1a1f26;--surface-hi: #232a33;--fg: #e8eaed;--muted: #9aa0a6;--accent: #4c8dff;--danger: #ff6b6b;--radius: 12px;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Noto Sans TC,sans-serif;-webkit-tap-highlight-color:transparent}button,select,input{font:inherit;color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.entry{min-height:100dvh;max-width:480px;margin-inline:auto;padding:max(.75rem,env(safe-area-inset-top)) .75rem max(.75rem,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:.75rem}.bar{display:flex;justify-content:space-between;align-items:baseline;color:var(--muted);font-size:.875rem}.month-total{color:var(--fg);font-weight:600;font-variant-numeric:tabular-nums}.merchants{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.merchant{padding:.9rem .25rem;border:1px solid transparent;border-radius:var(--radius);background:var(--surface);font-size:.95rem;cursor:pointer}.merchant.is-selected{background:var(--accent);color:#fff;font-weight:600}.merchant.is-more{color:var(--muted)}.load-error{color:var(--danger);font-size:.875rem;margin:0}.amount{text-align:right;padding:.5rem .5rem 0}.amount-main{font-size:3rem;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;word-break:break-all}.sign{color:var(--muted);margin-right:.35rem;font-size:2rem}.amount-hint{min-height:1.5rem;color:var(--accent);font-variant-numeric:tabular-nums}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.key{padding:1.1rem 0;border:none;border-radius:var(--radius);background:var(--surface-hi);font-size:1.5rem;cursor:pointer}.key:active{background:var(--accent)}.submit-bar{margin-top:auto;display:flex;flex-direction:column;gap:.6rem}.meta{display:flex;gap:.5rem}.meta select,.meta input{flex:1;min-width:0;padding:.7rem .6rem;border:1px solid var(--surface-hi);border-radius:var(--radius);background:var(--surface)}.record{padding:1.1rem;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer}.record:disabled{background:var(--surface-hi);color:var(--muted);cursor:default}.toast{position:fixed;left:50%;bottom:calc(1.25rem + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(90vw,420px);padding:.7rem 1.1rem;border-radius:999px;background:#2c333d;box-shadow:0 8px 24px #0006;font-size:.9rem}.toast.is-error{background:var(--danger);color:#fff}@media(min-width:768px){.entry{padding-block:2rem}.amount-main{font-size:3.5rem}}.unlock{min-height:100dvh;max-width:360px;margin-inline:auto;padding:1.5rem;display:flex;flex-direction:column;justify-content:center;gap:.75rem;text-align:center}.unlock h1{margin:0;font-size:1.75rem}.unlock p{margin:0;color:var(--muted)}.unlock input{padding:.9rem;border:1px solid var(--surface-hi);border-radius:var(--radius);background:var(--surface);text-align:center}.unlock button{padding:.9rem;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-weight:600;cursor:pointer}.unlock button:disabled{background:var(--surface-hi);color:var(--muted)}.unlock-error{color:var(--danger)!important}.bar-right{display:flex;align-items:baseline;gap:.75rem}.link{border:none;background:none;color:var(--accent);padding:0;cursor:pointer;font-size:.875rem}.merchant.is-add{color:var(--accent);border:1px dashed var(--surface-hi)}.muted{color:var(--muted)}.modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#0009}.modal[hidden]{display:none}.modal-card{width:100%;max-width:340px;display:flex;flex-direction:column;gap:.6rem;padding:1.25rem;border-radius:var(--radius);background:var(--surface)}.modal-card h2{margin:0;font-size:1.1rem}.modal-card p{margin:0;font-size:.875rem}.modal-card input,.modal-card select{padding:.75rem;border:1px solid var(--surface-hi);border-radius:var(--radius);background:var(--bg);width:100%}.modal-actions{display:flex;gap:.5rem;margin-top:.25rem}.modal-actions button{flex:1;padding:.75rem;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-weight:600;cursor:pointer}.modal-actions .ghost{background:var(--surface-hi);color:var(--fg)}.modal-actions button:disabled{background:var(--surface-hi);color:var(--muted)}.modal-error{color:var(--danger)!important}.list{min-height:100dvh;max-width:900px;margin-inline:auto;padding:max(.75rem,env(safe-area-inset-top)) .75rem max(.75rem,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:1rem}.list-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.list-head input{padding:.5rem .6rem;border:1px solid var(--surface-hi);border-radius:var(--radius);background:var(--surface)}.grand{display:flex;align-items:baseline;gap:.6rem}.grand-amount{font-size:2.25rem;font-weight:600;font-variant-numeric:tabular-nums}.cats{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.cats li{display:grid;grid-template-columns:4rem 1fr auto;gap:.5rem;padding:.5rem .75rem;border-radius:var(--radius);background:var(--surface);font-size:.9rem;font-variant-numeric:tabular-nums}.rows{overflow-x:auto}.ledger{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.ledger th{text-align:left;padding:.5rem;color:var(--muted);font-size:.8rem;font-weight:500;border-bottom:1px solid var(--surface-hi)}.ledger td{padding:.7rem .5rem;border-bottom:1px solid var(--surface)}.ledger .num{text-align:right}.ledger .date,.ledger .cat{color:var(--muted);font-size:.875rem}.ledger .actions{width:2.5rem;text-align:right}.del{border:none;background:none;color:var(--muted);padding:.25rem .4rem;cursor:pointer}.del:hover{color:var(--danger)}@media(max-width:480px){.ledger .cat{display:none}.ledger thead th:nth-child(3){display:none}}.ledger .actions{white-space:nowrap}.del.is-confirm{color:var(--danger);font-weight:600}.pending{padding:.15rem .5rem;border-radius:999px;background:var(--surface-hi);color:var(--accent);font-size:.75rem}.pending[hidden]{display:none}
