:root{--paper: #f3efe4;--paper-2: #fffaf1;--ink: #241c14;--muted: #6d6258;--line: #ddd2c3;--spent: #9a3412;--current: #0f5f52;--planned: #1e3a8a;--accent: #c45c26;--shadow: 0 18px 40px rgba(36, 28, 20, .08)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background:radial-gradient(circle at top left,#fbe7d3 0,transparent 28%),linear-gradient(180deg,#f7f1e6,var(--paper));font-family:Avenir Next,Segoe UI,sans-serif}h1,h2,h3,.serif{font-family:Iowan Old Style,Palatino,Georgia,serif;font-weight:600}button,input,select{font:inherit}a{color:inherit}.app-shell{max-width:1120px;margin:0 auto;padding:28px 20px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.brand{display:flex;flex-direction:column;gap:2px}.brand small{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.nav{display:flex;gap:8px;align-items:center}.nav button,.btn{border:1px solid var(--line);background:var(--paper-2);color:var(--ink);padding:8px 14px;border-radius:999px;cursor:pointer}.nav button.active,.btn.primary{background:var(--ink);color:#fff8ee;border-color:var(--ink)}.btn.ghost{background:transparent}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}.card{background:var(--paper-2);border:1px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:var(--shadow)}.card .label{color:var(--muted);font-size:13px}.card .value{font-size:28px;margin-top:8px}.card.spent .value{color:var(--spent)}.card.current .value{color:var(--current)}.card.planned .value{color:var(--planned)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}.toolbar select,.pay-select{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fffdf8}.pay-add{display:flex;gap:6px;align-items:center}.pay-add input{width:140px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fffdf8}.year-nav{display:flex;align-items:center;gap:8px;font-size:22px}.months{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-bottom:22px}.month-pill{border:1px solid var(--line);background:#fffdf8;border-radius:12px;padding:10px 6px;text-align:center;cursor:pointer}.month-pill .name{font-size:11px;color:var(--muted)}.month-pill .amt{font-size:12px;margin-top:6px}.month-pill.selected{outline:2px solid var(--ink)}.month-pill.spent{background:#f8e8dc}.month-pill.current{background:#dceee9}.month-pill.planned{background:#e4eaf8}.panel{background:var(--paper-2);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.tag{display:inline-block;padding:3px 8px;border-radius:999px;background:#efe4d4;font-size:12px}.warn{color:var(--spent);font-size:12px}.banner{background:#f8e8dc;border:1px solid #e8c8b0;border-radius:14px;padding:12px 14px;margin-bottom:16px}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--paper-2);border:1px solid var(--line);border-radius:24px;padding:32px;box-shadow:var(--shadow)}.login-card h1{margin:8px 0 6px}.login-card p{color:var(--muted)}.login-card input{width:100%;margin:18px 0;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:#fff}.account{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.calendar-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.dot{width:12px;height:12px;border-radius:50%;background:#c45c26}.error{color:var(--spent)}.empty{color:var(--muted);padding:24px 0}@media(max-width:800px){.cards,.months{grid-template-columns:1fr 1fr}.topbar{flex-direction:column;align-items:flex-start}}
