:root{--bg: #0f172a;--card: #1e293b;--text: #e2e8f0;--muted: #94a3b8;--primary: #3b82f6;--error: #f87171;--notice: #fbbf24;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}.shell{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.5rem}.card,.card.wide{margin-left:auto;margin-right:auto}.card{background:var(--card);border-radius:16px;padding:1.25rem;width:100%;max-width:28rem;box-shadow:0 10px 30px #0000004d}.card.wide{max-width:32rem}@media (max-width: 480px){.shell{padding:.75rem}.card{padding:1rem;border-radius:12px}}.ledger-root{display:flex;flex-direction:column;width:100%;max-width:32rem;height:100dvh}.ledger-scroll{flex:1;overflow-y:auto;padding:.5rem .5rem 0;-webkit-overflow-scrolling:touch}.ledger-scroll .card,.ledger-scroll .card.wide{margin-left:auto;margin-right:auto}.sticky-bottom{background:var(--bg);padding:.6rem .75rem .5rem;padding-bottom:max(.5rem,env(safe-area-inset-bottom));border-top:1px solid #1e293b;flex-shrink:0}.bottom-links{display:flex;justify-content:center;gap:1.5rem;margin-top:.25rem}h1{font-size:1.4rem;margin:0 0 .75rem}p{line-height:1.5}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--error)}.notice{color:var(--notice)}.center{text-align:center}label{display:block;margin:1rem 0 .25rem;font-size:.9rem}input,select{width:100%;padding:.6rem;margin-top:.25rem;border-radius:8px;border:1px solid #334155;background:#0f172a;color:var(--text);font-size:1rem}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}button{margin-top:1.25rem;padding:.65rem 1rem;border-radius:8px;border:1px solid #334155;background:transparent;color:var(--text);font-size:1rem;cursor:pointer}button.primary{background:var(--primary);border-color:var(--primary);color:#fff;width:100%}button.primary:disabled{opacity:.35;cursor:not-allowed}button.secondary{background:transparent;border-color:#334155;color:var(--muted);width:100%;margin-top:.5rem}button.secondary:hover{color:var(--text);border-color:var(--text)}button:disabled{opacity:.5;cursor:not-allowed}button.link{background:none;border:none;color:var(--muted);text-decoration:underline;margin-top:0;padding:.25rem 0}button.link-danger{background:none;border:none;color:#ef4444;text-decoration:underline;margin-top:0;padding:.25rem 0;opacity:.6}button.link-danger:hover{opacity:1}button.link-sm{background:none;border:1px solid #334155;color:var(--muted);font-size:.75rem;padding:.15rem .5rem;margin-top:0;border-radius:6px;cursor:pointer}button.link-sm:hover{color:var(--text);border-color:var(--text)}.kv{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;margin:1rem 0}.kv dt{color:var(--muted)}.kv dd{margin:0;text-align:right}code{background:#0f172a;padding:.1rem .3rem;border-radius:4px;font-size:.8rem}.stack{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%}.row{display:flex;align-items:center}.row.between{justify-content:space-between}.badge{font-size:.72rem;color:var(--muted);border:1px solid #334155;border-radius:999px;padding:.15rem .6rem}.candidates{list-style:none;padding:0}.candidates li{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 0;border-bottom:1px solid #334155}.candidates .muted{display:block}.month-nav{display:flex;align-items:center;gap:.75rem}.month-nav button{margin-top:0;border:none;background:none;color:var(--text);cursor:pointer;font-size:1rem;padding:.25rem .5rem}.month-nav button:disabled{opacity:.3;cursor:default}.month-nav-hero{justify-content:center;margin-bottom:1rem}.month-nav-hero span{font-size:1.5rem;font-weight:700;letter-spacing:-.01em}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin-bottom:.25rem}.stat-col{display:flex;flex-direction:column}.stat-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.15rem}.stat-value{font-size:1.4rem;font-weight:600;line-height:1.1}.bar{height:10px;background:#0f172a;border-radius:999px;overflow:hidden;margin:.5rem 0}.bar-fill{height:100%;border-radius:999px;transition:width .3s ease}.bar-fill.ok{background:#22c55e}.bar-fill.warn{background:#fbbf24}.bar-fill.over{background:#f87171}.status-block{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #334155}.status-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.2rem}.status-verdict{margin:.4rem 0 0;font-size:.82rem;line-height:1.4}.status-value{font-size:1rem;font-weight:600}.setup-btn{background:none;border:1px solid #334155;color:var(--muted);font-size:.78rem;padding:.2rem .6rem;border-radius:6px;cursor:pointer;margin-top:0}.setup-btn:hover{color:var(--text);border-color:var(--text)}.target-row{display:flex;align-items:center;gap:.5rem;margin:.5rem 0;font-size:.9rem;color:var(--muted)}.target-row strong{color:var(--text)}.target-row input{width:7rem;padding:.3rem .5rem;margin-top:0;font-size:.9rem}.target-row button{margin-top:0;padding:.3rem .7rem;font-size:.85rem}.actions-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.actions-row button.primary{margin-top:0}h2{font-size:1rem;margin:1.25rem 0 .5rem;color:var(--muted)}.section-header{margin:1.25rem 0 .5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.section-header h2{margin:0}.section-header:hover h2{color:var(--text)}.section-count{font-size:.82rem;font-weight:400;color:var(--muted);margin-left:.25rem}.cat-bar-wrap{width:50%}.cat-bar{height:4px;background:#1e293b;border-radius:999px;margin-top:.25rem}.cat-bar-fill{height:100%;border-radius:999px;background:var(--primary)}.show-all{font-size:.8rem;color:var(--muted);cursor:pointer;margin-top:.25rem;background:none;border:none;padding:.25rem 0;display:block}.show-all:hover{color:var(--text)}.show-less{font-size:.8rem;color:var(--muted);cursor:pointer;margin-top:.5rem;background:none;border:none;border-top:1px solid #334155;padding:.5rem 0 .25rem;display:block;width:100%;text-align:left}.show-less:hover{color:var(--text)}.tx-row{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;border-bottom:1px solid #1e293b}.tx-indicator{font-size:.85rem;width:1.2rem;text-align:center}.tx-indicator.income{color:#4ade80}.tx-indicator.expense{color:#94a3b8}.income-amt{color:#4ade80}.list{list-style:none;padding:0;margin:0}.list li{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid #1e293b}
