:root{--ink:#17312b;--muted:#6d7d76;--paper:#f5f3eb;--white:#fffefa;--line:#e6e3d8;--forest:#173d35;--mint:#bde5cb;--peach:#ffe0c6;--gold:#f5c864;--coral:#e87d63;--lavender:#cfc3ef}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif}.app-shell{max-width:1180px;margin:auto;padding:28px 28px 112px}.topbar{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px}.brand-mark{display:grid;place-items:center;width:32px;height:32px;background:var(--forest);border-radius:9px;color:#fff;font-family:Fraunces,serif}.month-picker,.avatar,.text-button,.nav-item,.close{font:inherit;border:0;background:transparent;color:var(--ink);cursor:pointer}.month-picker{padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.5);font-size:14px}.month-picker span{margin-left:7px}.avatar{width:34px;height:34px;border-radius:50%;background:#e7c9ae;font-weight:700}.hero{margin:66px 0 36px;max-width:650px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:#75867e;margin:0 0 10px}.hero h1,h2{font-family:Fraunces,serif}.hero h1{font-size:clamp(39px,6vw,68px);line-height:1.02;letter-spacing:-.045em;margin:0}.hero-copy{color:var(--muted);line-height:1.55;max-width:490px;margin:20px 0 0}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.summary-card{border-radius:18px;padding:22px;min-height:162px;display:flex;flex-direction:column}.income-card{background:var(--mint)}.expense-card{background:var(--peach)}.balance-card{background:var(--forest);color:#fff}.card-label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600}.card-count{margin-left:auto;color:rgba(23,49,43,.55);font-weight:500;font-size:11px}.balance-card .card-label{color:#d9eee2}.icon-bubble{font-size:17px}.summary-card strong{font-family:Fraunces,serif;font-size:31px;letter-spacing:-.04em;margin-top:auto}.summary-card small{font-size:12px;margin-top:5px;color:rgba(23,49,43,.63)}.balance-card small{color:#c4d9cf}.content-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:16px;margin-top:18px}.panel{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:25px}.panel-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.panel h2{font-size:26px;margin:0;letter-spacing:-.03em}.text-button{font-size:12px;font-weight:700;text-decoration:underline;text-underline-offset:4px;white-space:nowrap}.chart-layout{display:flex;align-items:center;gap:32px;margin-top:29px}.donut{width:170px;aspect-ratio:1;border-radius:50%;display:grid;align-content:center;justify-items:center;background:conic-gradient(var(--line) 0 100%);position:relative;flex:none}.donut:before{content:"";position:absolute;inset:25px;background:var(--white);border-radius:50%}.donut span,.donut small{z-index:1}.donut span{font-family:Fraunces,serif;font-size:23px;font-weight:700;letter-spacing:-.04em}.donut small{font-size:11px;color:var(--muted)}.legend{padding:0;margin:0;width:100%;list-style:none}.legend li{display:flex;align-items:center;gap:9px;padding:8px 0;font-size:13px}.legend .swatch,.activity-dot{width:9px;height:9px;border-radius:50%;flex:none}.legend .legend-value{margin-left:auto;font-weight:700}.empty-state{color:var(--muted);line-height:1.5}.activity-list{margin-top:19px}.empty-activity{min-height:165px;border:1px dashed #d9d7cc;border-radius:13px;display:grid;place-content:center;text-align:center;color:var(--muted);font-size:13px;padding:15px}.empty-activity span{font-size:26px}.empty-activity p{max-width:185px;line-height:1.5}.activity{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid #efede5}.activity:last-child{border:0}.activity strong{font-size:14px}.activity small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.activity-value{font-size:13px;font-weight:700}.activity-value.income{color:#28775e}.delete-entry{border:0;background:transparent;color:#a7aaa4;font-size:20px;cursor:pointer;padding:2px 0 2px 5px}dialog{border:0;border-radius:20px;padding:0;width:min(460px,calc(100% - 28px));box-shadow:0 20px 60px #14281b33;color:var(--ink)}dialog::backdrop{background:#17312b73}dialog form,dialog>div,dialog>p,dialog>.category-editor{margin-left:25px;margin-right:25px}dialog form{padding:25px 0}dialog#categoriesDialog{padding:25px 0}.dialog-title{display:flex;justify-content:space-between;align-items:flex-start}.dialog-title h2{margin:0;font-size:29px;letter-spacing:-.035em}.close{font-size:29px;line-height:.7;color:var(--muted)}label{display:block;font-size:12px;font-weight:700;margin-top:18px}input,select{width:100%;appearance:none;border:1px solid #dcdacf;border-radius:10px;background:#fffefa;padding:12px;margin-top:7px;font:inherit;color:var(--ink);outline-color:#5c9c80}select{background-image:linear-gradient(45deg,transparent 50%,#52675f 50%),linear-gradient(135deg,#52675f 50%,transparent 50%);background-position:calc(100% - 15px) 17px,calc(100% - 10px) 17px;background-size:5px 5px;background-repeat:no-repeat}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}fieldset{padding:0;border:0;margin:22px 0 0}legend{font-size:12px;font-weight:700}.choice-row{display:flex;gap:7px;margin-top:9px}.choice{position:relative;margin:0}.choice input{position:absolute;opacity:0}.choice span{display:block;border:1px solid #dcdacf;border-radius:9px;padding:9px 10px;font-size:12px;font-weight:500;white-space:nowrap}.choice input:checked+span{background:#d9eee2;border-color:#75af91;color:#153d33}.primary-button{width:100%;border:0;border-radius:11px;background:var(--forest);padding:13px 16px;color:#fff;font:inherit;font-weight:700;margin-top:26px;cursor:pointer;display:flex;justify-content:space-between}.dialog-intro{color:var(--muted);line-height:1.5;font-size:13px}.category-editor{margin-top:20px;margin-bottom:12px}.category-row{display:grid;grid-template-columns:13px 1fr auto;align-items:center;gap:9px;margin:8px 0}.category-row input{margin:0;padding:9px}.category-row button,.new-category button{border:0;border-radius:8px;background:#f0eee7;color:#7e877f;padding:8px 10px;cursor:pointer}.new-category{display:flex;gap:8px;margin-top:16px!important}.new-category input{margin:0}.new-category button{background:var(--forest);color:#fff;font-weight:700}.bottom-nav{display:none}@media(max-width:700px){.app-shell{padding:20px 16px 100px}.topbar .month-picker{order:3;margin-left:auto;margin-right:10px}.hero{margin:44px 0 28px}.hero h1{font-size:42px}.hero-copy{font-size:14px}.summary-grid{grid-template-columns:1fr 1fr;gap:10px}.summary-card{padding:16px;min-height:138px;border-radius:15px}.summary-card strong{font-size:25px}.balance-card{grid-column:span 2;min-height:112px}.balance-card strong{font-size:31px}.content-grid{grid-template-columns:1fr;gap:12px;margin-top:12px}.panel{padding:20px;border-radius:15px}.panel h2{font-size:23px}.chart-layout{gap:20px;margin-top:22px}.donut{width:130px}.donut:before{inset:20px}.legend li{font-size:12px}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);align-items:end;bottom:0;left:0;right:0;height:77px;padding:8px 9px calc(8px + env(safe-area-inset-bottom));background:#fffefa;border-top:1px solid var(--line);z-index:2}.nav-item{font-size:9px;display:grid;gap:3px;justify-items:center;color:#829087}.nav-item span{font-size:20px;line-height:16px}.nav-item.active{color:var(--forest);font-weight:700}.add-button{place-self:center;width:47px;height:47px;border-radius:16px;border:0;background:var(--forest);color:#fff;font-size:30px;line-height:1;box-shadow:0 5px 13px #173d3559;cursor:pointer;transform:translateY(-16px)}dialog{width:min(100% - 18px,460px)}.choice-row{gap:4px}.choice span{padding:8px 7px;font-size:11px}.activity-panel{display:none}}
.month-picker{padding:7px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.5);font-size:14px;display:flex;align-items:center;gap:8px}.month-picker button{border:0;background:transparent;font-size:22px;line-height:20px;color:var(--forest);cursor:pointer}.paid-choice{display:flex;align-items:center;gap:8px}.paid-choice input{width:auto;margin:0}.paid-toggle,.edit-entry{border:0;background:transparent;color:var(--forest);cursor:pointer;font:inherit}.paid-toggle{font-size:20px}.edit-entry{font-size:11px;text-decoration:underline;font-weight:700}.is-paid{opacity:.58}.is-paid strong{text-decoration:line-through}.activity-panel{max-height:500px;overflow:auto}@media(max-width:700px){.activity-panel{display:block}.month-picker{font-size:12px}.topbar .month-picker{margin-left:auto;margin-right:8px}.activity{gap:7px}.activity-value{font-size:12px}}
.grocery-panel{margin-top:18px}.grocery-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.grocery-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;padding:12px;border:1px solid var(--line);border-radius:11px}.grocery-item button{border:0;background:transparent;color:var(--forest);font:inherit;font-size:18px;cursor:pointer}.grocery-item strong{font-size:13px}.grocery-item small{display:block;font-size:11px;color:var(--muted);margin-top:2px}.is-bought{opacity:.55}.is-bought strong{text-decoration:line-through}@media(max-width:700px){.grocery-list{grid-template-columns:1fr}.grocery-panel{margin-top:12px}.activity{grid-template-columns:auto 1fr auto auto auto}}
.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.tool-panel h2{margin:0;font-size:25px}.tool-copy{font-size:13px;line-height:1.5;color:var(--muted)}.afford-form{display:flex;gap:8px;margin-top:18px}.afford-form input{margin:0}.afford-form button,.outline-button{border:1px solid var(--forest);border-radius:10px;background:var(--forest);color:#fff;font:inherit;font-size:13px;font-weight:700;padding:0 16px;cursor:pointer;white-space:nowrap}.outline-button{padding:11px 14px;background:transparent;color:var(--forest);margin-top:8px}.tool-panel small{display:block;color:var(--muted);font-size:11px;line-height:1.4;margin-top:10px}.afford-result{font-size:13px;font-weight:700;margin:14px 0 0}.is-safe{color:#28775e}.is-short{color:#be3d3d}@media(max-width:700px){.tools-grid{grid-template-columns:1fr;gap:12px;margin-top:12px}}
.auth-screen{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#173d35,#274c43)}.auth-card{width:min(410px,100%);background:var(--white);border-radius:22px;padding:28px;box-shadow:0 25px 70px #0005}.auth-card h1{font-family:Fraunces,serif;font-size:34px;letter-spacing:-.04em;margin:30px 0 7px}.auth-card>p{color:var(--muted);font-size:14px;line-height:1.5}.auth-error{color:#b33c3c;font-size:12px;min-height:16px;margin:12px 0 -12px}.account-logout{display:block;margin:20px auto 0;color:#a13c3c}.auth-screen[hidden]{display:none}
.appointments-panel{margin-top:18px}.appointment-list{display:grid;gap:8px;margin-top:18px}.appointment{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:11px 13px}.appointment-date{display:grid;place-items:center;width:44px;height:44px;border-radius:10px;background:var(--lavender);font-size:11px;font-weight:700;text-align:center}.appointment strong{font-size:13px}.appointment small{display:block;color:var(--muted);font-size:11px;margin-top:3px}@media(max-width:700px){.appointments-panel{margin-top:12px}}
html{scroll-behavior:smooth}body{overflow-x:hidden;overscroll-behavior-y:none}.panel,.summary-card{contain:layout paint style}.bottom-nav{transform:translateZ(0);will-change:transform}@media(max-width:700px){.app-shell{will-change:transform}.panel{contain:layout paint}}
.debts-panel{margin-top:18px}.debt-list{display:grid;gap:8px;margin-top:17px}.debt{display:grid;grid-template-columns:1fr auto auto auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px}.debt strong{font-size:13px}.debt small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.debt-balance{color:#a94b40}@media(max-width:700px){.debts-panel{margin-top:12px}.debt{grid-template-columns:1fr auto auto;gap:8px}.debt .delete-entry{grid-column:3}}
.plan-health-panel{margin-top:18px}.plan-health-layout{display:flex;align-items:center;gap:34px;margin-top:22px}.plan-health-donut{width:175px;aspect-ratio:1;position:relative;border-radius:50%;display:grid;place-content:center;text-align:center;background:conic-gradient(#e6e3d8 0 100%);flex:none}.plan-health-donut:before{content:"";position:absolute;inset:25px;border-radius:50%;background:var(--white)}.plan-health-donut strong,.plan-health-donut small{position:relative;z-index:1}.plan-health-donut strong{font-family:Fraunces,serif;font-size:22px;letter-spacing:-.04em}.plan-health-donut small{font-size:11px;color:var(--muted);margin-top:3px}.plan-health-legend{width:100%;display:grid;gap:13px}.plan-health-legend>div{display:flex;align-items:center;gap:9px}.plan-health-legend p{margin:0;font-size:12px;color:var(--muted)}.plan-health-legend strong{display:block;font-size:15px;color:var(--ink)}@media(max-width:700px){.plan-health-panel{margin-top:12px}.plan-health-layout{gap:19px}.plan-health-donut{width:132px}.plan-health-donut:before{inset:20px}.plan-health-donut strong{font-size:17px}}
.chart-note{margin:0 0 2px;font-size:11px;color:var(--muted);font-weight:700}
.payment-filters{display:flex;gap:7px;margin-top:17px;padding-bottom:4px;border-bottom:1px solid var(--line)}.payment-filters button{border:0;background:transparent;padding:8px 7px 10px;color:var(--muted);font:inherit;font-size:12px;font-weight:700;cursor:pointer;border-bottom:2px solid transparent}.payment-filters button.active{color:var(--forest);border-color:var(--forest)}
