:root{--paper: #f4efe6;--paper-2: #efe8db;--ink: #2b3440;--ink-soft: #5b6675;--ink-faint: #8b95a3;--card: #ffffff;--line: #e7e0d3;--line-card: #eef1f4;--in: #0f8a78;--in-bg: #e3f3ef;--out: #b5651d;--out-bg: #f6ebdc;--accent: #0f8a78;--danger: #b23b3b;--radius: 14px;--radius-sm: 10px;--shadow: 0 1px 2px rgba(43, 52, 64, .06), 0 6px 18px rgba(43, 52, 64, .08);--shadow-bold: 0 2px 6px rgba(15, 138, 120, .18), 0 12px 30px rgba(15, 138, 120, .22);--tap: 44px;--maxw: 760px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "SF Mono", "Cascadia Mono", "Roboto Mono", "JetBrains Mono", Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--paper);color:var(--ink);line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,p,ul{margin:0}ul{padding:0;list-style:none}.amount{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;font-weight:600;white-space:nowrap}.amount-in{color:var(--in)}.amount-out{color:var(--out)}.amount-neutral{color:var(--ink)}.btn{font:inherit;font-weight:600;border:1px solid transparent;border-radius:var(--radius-sm);padding:0 16px;min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;background:var(--paper-2);color:var(--ink);transition:background-color .15s ease,transform .05s ease,border-color .15s ease}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#0c7264}.btn-ghost{background:transparent;color:var(--ink-soft);border-color:var(--line)}.btn-ghost:hover{background:var(--paper-2)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#9a3030}.btn-sm{min-height:36px;padding:0 12px;font-size:.85rem}.btn-icon{min-width:var(--tap);padding:0;font-size:1.4rem;line-height:1}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field-label{font-size:.8rem;font-weight:600;color:var(--ink-faint)}input,select{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:0 12px;min-height:var(--tap);width:100%;min-width:0;max-width:100%}input[type=date],input[type=number]{-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus,select:focus,.btn:focus-visible,input:focus-visible,select:focus-visible,.nav-item:focus-visible,.segment:focus-visible{outline:3px solid rgba(15,138,120,.45);outline-offset:2px}:focus{outline:none}.field-check{flex-direction:row;align-items:center;gap:10px}.field-check input{width:auto;min-height:0;width:22px;height:22px;accent-color:var(--accent)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.field-wide{grid-column:1 / -1}.form-actions{display:flex;gap:10px}.form-error{color:var(--danger);font-size:.9rem;margin-bottom:12px}.form-ok{color:var(--accent, #2f7a4d);font-size:.9rem;margin-bottom:12px}.shell{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;background:#f4efe6e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar-inner{max-width:var(--maxw);margin:0 auto;padding:0 16px;min-height:60px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-weight:700;font-size:1.05rem;letter-spacing:.01em}.content{flex:1;padding-bottom:calc(72px + env(safe-area-inset-bottom))}.content-inner{max-width:var(--maxw);margin:0 auto;padding:16px}.nav{display:flex}.nav-top{display:none;gap:4px}.nav-bottom{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fffffff5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);justify-content:space-around}.nav-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;cursor:pointer;color:var(--ink-faint);font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:1;min-height:60px;min-width:var(--tap);transition:color .15s ease}.nav-item.is-active{color:var(--accent)}.nav-icon{font-size:1.25rem;line-height:1}.nav-label{font-size:.72rem;font-weight:600}.tab{display:flex;flex-direction:column;gap:16px}.tab-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tab-title{font-size:1.5rem;font-weight:700}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card-title{font-size:1rem;font-weight:700;margin-bottom:12px}.muted{color:var(--ink-soft);font-size:.92rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.bills-add{order:1}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.cal-weekday{text-align:center;font-size:.72rem;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-cell{display:flex;flex-direction:column;align-items:stretch;gap:2px;min-height:64px;padding:4px;background:var(--paper-2, #faf6ee);border:1px solid var(--line-card);border-radius:var(--radius-sm);text-align:left;cursor:pointer;overflow:hidden}.cal-cell-out{opacity:.4}.cal-cell-today{border-color:var(--accent)}.cal-cell-selected{outline:2px solid var(--accent);outline-offset:-2px}.cal-day{font-size:.78rem;font-weight:600;color:var(--ink-soft)}.cal-events{display:flex;flex-direction:column;gap:2px;min-width:0}.cal-chip{font-size:.66rem;line-height:1.25;padding:1px 4px;border-radius:4px;background:var(--accent);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-more{font-size:.66rem;color:var(--ink-faint)}.stat{display:flex;flex-direction:column;gap:6px;padding:16px}.stat-label{font-size:.78rem;font-weight:600;color:var(--ink-faint)}.stat-value{font-size:1.25rem}.list{display:flex;flex-direction:column}.row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-card)}.row:last-child{border-bottom:none}.row-muted{opacity:.55}.goal-row{padding:12px 0;border-bottom:1px solid var(--line-card)}.goal-row:last-child{border-bottom:none}.bill-item{padding:12px 0;border-bottom:1px solid var(--line-card)}.bill-item:last-child{border-bottom:none}.bill-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.bill-edit{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-card)}.row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.row-title{font-weight:600;display:flex;align-items:center;gap:8px}.row-sub{font-size:.82rem;color:var(--ink-soft)}.row-end{display:flex;align-items:center;gap:10px;flex-shrink:0}.amount-stack{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.badge{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);background:var(--paper-2);border-radius:999px;padding:2px 8px}.group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:4px}.group-subtotal{display:inline-flex;align-items:baseline;gap:8px;font-size:.85rem}.group-toggle{display:flex;align-items:center;gap:8px;margin-bottom:12px}.progress{height:10px;border-radius:999px;background:var(--line, #e4ddcf);overflow:hidden;margin:4px 0 8px}.progress-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease}.progress-fill.is-complete{background:#2f7a4d}.progress-caption{font-size:.95rem;margin-bottom:4px}.add-inline{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;margin-top:16px;padding-top:16px;border-top:1px solid var(--line-card)}.inline-edit{display:flex;gap:8px;align-items:center;width:100%}.inline-edit input{flex:1}.month-picker{display:inline-flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:2px}.month-label{font-weight:600;min-width:130px;text-align:center;font-size:.95rem}.month-picker .btn-icon{border-radius:999px;min-height:38px;min-width:38px}.segmented{display:flex;background:var(--paper-2);border-radius:999px;padding:4px;gap:4px}.segment{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;font:inherit;font-weight:600;color:var(--ink-soft);border-radius:999px;min-height:40px;cursor:pointer;transition:background-color .15s ease,color .15s ease}.segment.is-active{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.settle-card{background:linear-gradient(135deg,#0f8a78,#0c6f7d);color:#fff;box-shadow:var(--shadow-bold)}.settle-title{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.85;margin-bottom:8px}.settle-line{font-size:1.25rem;line-height:1.4}.settle-line strong{font-weight:700}.settle-amount{color:#fff;font-size:1.35rem}.center-screen,.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px}.login-title{font-size:1.5rem;font-weight:700}.login-sub{color:var(--ink-soft)}.setup-text{color:var(--ink-soft);font-size:.92rem}.setup-code{background:var(--ink);color:#f4efe6;border-radius:var(--radius-sm);padding:12px;font-family:var(--mono);font-size:.8rem;overflow-x:auto;white-space:pre}code{font-family:var(--mono);font-size:.85em;background:var(--paper-2);padding:1px 5px;border-radius:5px}@media (min-width: 720px){.nav-top{display:flex}.nav-bottom{display:none}.content{padding-bottom:24px}.nav-top .nav-item{flex-direction:row;gap:8px;min-height:40px;padding:0 14px;border-radius:999px}.nav-top .nav-item.is-active{background:var(--accent);color:#fff}.nav-top .nav-icon{font-size:1rem}.nav-top .nav-label{font-size:.9rem}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (max-width: 600px){.form-grid,.add-inline{grid-template-columns:1fr}.month-label{min-width:110px}.bill-line{flex-wrap:wrap}.bill-line .row-end{flex-wrap:wrap;justify-content:flex-end}}
