:root{
  --bg:#fff9f6;--card:#fffdfb;--pink:#f7d6e0;--rose:#e9a8b8;--blush:#fff1f5;--mauve:#7a5368;
  --ink:#4a3440;--muted:#8f7a84;--lav:#e7ddf4;--green:#dcefdc;--gold:#f4e3b7;--danger:#f7c7cd;
  --line:#ecdfe4;--shadow:0 12px 34px rgba(101,68,84,.08);--radius:20px;
}
*{box-sizing:border-box} body{margin:0;background:linear-gradient(180deg,#fffaf8 0,#fff6f9 100%);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Avenir Next","Helvetica Neue","Segoe UI",Arial,sans-serif}
button,input,select,textarea{font:inherit;color:inherit} button{cursor:pointer}
.app-shell{max-width:1220px;margin:auto;padding:28px 28px 110px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px}
.eyebrow,.kicker{font-size:.7rem;letter-spacing:.18em;font-weight:700;color:var(--mauve)}
h1,h2,h3{font-family:"Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;font-weight:500;letter-spacing:-.025em}
h1{font-size:clamp(2.15rem,5vw,3.7rem);margin:.2rem 0 0;line-height:1.02}h2{margin:.1rem 0;font-size:1.6rem}h3{margin:.5rem 0}
.top-actions,.filter-row,.stack-actions{display:flex;gap:10px;flex-wrap:wrap}select,input,textarea{border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px 13px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--rose);box-shadow:0 0 0 3px rgba(233,168,184,.18)}
.primary,.ghost,.danger,.file-label{border:0;border-radius:999px;padding:11px 16px;font-weight:700}.primary{background:var(--ink);color:#fff;box-shadow:var(--shadow)}.ghost,.file-label{background:#fff;border:1px solid var(--line)}.danger{background:var(--danger);color:#8c2638}.file-label input{display:none}
.view{display:none}.view.active{display:block}.hero-grid{display:grid;grid-template-columns:1.25fr .9fr .9fr;gap:16px}.card{background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);backdrop-filter:blur(10px)}.hero-card{background:linear-gradient(135deg,#fff 0,var(--blush) 100%)}.soft-green{background:linear-gradient(145deg,#fff,var(--green))}.soft-lav{background:linear-gradient(145deg,#fff,var(--lav))}.note-card{background:linear-gradient(135deg,#fff,var(--gold));margin-bottom:16px}.money{font-family:-apple-system,BlinkMacSystemFont,"Avenir Next","Helvetica Neue","Segoe UI",Arial,sans-serif;font-size:clamp(2.4rem,6vw,4.4rem);font-weight:750;letter-spacing:-.055em;margin:.4rem 0}.money.small{font-size:2.1rem}.muted,.card p{color:var(--muted);line-height:1.5}.progress{height:10px;background:#f0e7eb;border-radius:999px;overflow:hidden}.progress.big{height:14px}.progress span{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--rose),var(--mauve));transition:width .3s ease}
.section-head,.page-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:28px 0 14px}.section-head.compact{margin:0 0 14px}.goal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.goal-grid.large{grid-template-columns:repeat(3,1fr)}.goal-card h3{font-size:1.1rem}.goal-meta{display:flex;justify-content:space-between;gap:10px;font-size:.9rem;color:var(--muted);margin-top:10px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stats-grid div{background:var(--blush);padding:14px;border-radius:18px}.stats-grid span{display:block;font-size:.82rem;color:var(--muted);margin-bottom:4px}.stats-grid strong{font-size:1.15rem}.pill{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--green);font-size:.8rem;font-weight:800}
.movement-list{display:flex;flex-direction:column;gap:8px}.movement-row{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--line)}.movement-row:last-child{border-bottom:0}.movement-row small{color:var(--muted)}.amount.neg{color:#a61b2b}.amount.pos{color:#2f7b4a}.actions{display:flex;gap:6px}.icon-btn{border:0;background:transparent;font-size:1.55rem}.mini-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:6px 8px}
.table-card{overflow:auto;padding:0}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table th{position:sticky;top:0;background:#f9edf1;text-align:left;padding:12px;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.data-table td{padding:11px 12px;border-top:1px solid var(--line);vertical-align:middle}.data-table input{width:110px;padding:8px 9px;border-radius:10px}.budget-input{width:105px!important}.over{background:#fff0f2}.under{background:#f1faf1}.page-title{margin-top:4px}.form-card label{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}.form-card input{width:100%}.stack-actions{flex-direction:column;align-items:flex-start}.filter-row{margin-bottom:14px}
.bottom-nav{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;display:flex;gap:3px;background:rgba(255,255,255,.94);padding:7px;border:1px solid var(--line);border-radius:24px;box-shadow:0 16px 50px rgba(84,51,68,.18);backdrop-filter:blur(14px);z-index:20}.nav-item{border:0;background:transparent;border-radius:18px;padding:9px 12px;font-weight:700;color:var(--muted);display:flex;gap:6px;align-items:center}.nav-item.active{background:var(--pink);color:var(--ink)}footer{text-align:center;margin-top:28px;color:var(--muted);font-size:.8rem}
.modal{border:0;border-radius:28px;padding:0;max-width:680px;width:calc(100% - 28px);box-shadow:0 28px 80px rgba(70,40,55,.3)}.modal::backdrop{background:rgba(55,36,45,.35);backdrop-filter:blur(4px)}.modal form{padding:24px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.form-grid label{display:flex;flex-direction:column;gap:7px;font-size:.88rem;font-weight:700}.form-grid .wide{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.small-modal{max-width:520px}
.empty{padding:28px;text-align:center;color:var(--muted)}
@media(max-width:900px){.hero-grid,.goal-grid,.goal-grid.large{grid-template-columns:1fr 1fr}.topbar{align-items:flex-start;flex-direction:column}.top-actions{width:100%}.top-actions select,.top-actions button{flex:1}.bottom-nav{width:calc(100% - 18px);overflow-x:auto;justify-content:flex-start}.nav-item{white-space:nowrap}.app-shell{padding:20px 16px 110px}}
@media(max-width:620px){.hero-grid,.two-col,.goal-grid,.goal-grid.large{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.movement-row{grid-template-columns:1fr auto}.movement-row .actions{grid-column:1/-1}.nav-item span{display:none}.nav-item{padding:9px 10px}h1{font-size:2.3rem}}
.goal-actions{display:flex;gap:8px;margin-top:14px}.danger-lite{color:#8c2638;background:#fff3f5}.closed-row{opacity:.7}
.goal-topline{display:flex;justify-content:space-between;align-items:center;gap:8px}.fund-pill{background:var(--gold);font-size:.68rem}.allocation-card{grid-column:1/-1}.allocation-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}.allocation-summary div{background:var(--blush);padding:12px;border-radius:16px}.allocation-summary span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:4px}.allocation-list{display:flex;flex-direction:column;gap:8px}.allocation-row{display:grid;grid-template-columns:1fr 140px;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.allocation-row:last-child{border-bottom:0}.allocation-row small{display:block;color:var(--muted);margin-top:3px}.allocation-row input{width:100%;text-align:right}.negative{color:#a61b2b!important}.allocation-input:disabled{background:#f6f0f2;color:var(--muted)}
@media(max-width:620px){.allocation-summary{grid-template-columns:1fr}.allocation-row{grid-template-columns:1fr 120px}}

/* v0.2.0 — adult-girly typography + Gift Planner */
.gift-summary-grid{margin-bottom:16px}.gift-filters{justify-content:flex-end}.gift-table .pill{white-space:nowrap}.gift-link{color:var(--mauve);text-decoration-thickness:1px;text-underline-offset:3px}.check-label{display:grid!important;grid-template-columns:auto 1fr!important;align-items:start!important;gap:10px!important;font-weight:600!important}.check-label input{width:auto!important;margin-top:3px}.status-idea{background:var(--blush)}.status-planned{background:var(--gold)}.status-bought{background:var(--lav)}.status-given{background:var(--green)}
.goal-card,.card{letter-spacing:0}.data-table,.money,input,select,textarea,button{font-family:-apple-system,BlinkMacSystemFont,"Avenir Next","Helvetica Neue","Segoe UI",Arial,sans-serif}
