:root{--navy:#122039;--navy2:#233c58;--bg:#f2f6fb;--white:#fff;--ink:#18283e;--muted:#698096;--line:#e4ebf2;--teal:#087f72;--green:#0b8f71;--pale:#e6f6ef;--amber:#fff2d9;--red:#c75555;--shadow:0 10px 28px rgba(19,39,68,.065)}
*{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}input,select,textarea{outline-color:var(--teal)}a{color:var(--teal)}#shell{max-width:1040px;margin:auto;min-height:100vh;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;gap:10px;padding:20px max(16px,calc((100% - 900px)/2));background:var(--navy);color:white}.brandmark{width:40px;height:40px;border-radius:13px;background:linear-gradient(135deg,#18ae8a,#08685e);display:grid;place-items:center;font-size:25px;font-weight:800;box-shadow:0 3px 8px rgba(0,0,0,.12)}.brand-eyebrow{color:#a5b9ce;font-size:9px;letter-spacing:1.7px;font-weight:750}.brand-name{font-size:19px;line-height:1.3;font-weight:800;letter-spacing:-.5px}.privacy-dot{margin-left:auto;font-size:11px;display:flex;gap:5px;align-items:center;border:1px solid #3d526d;border-radius:20px;padding:7px 9px;color:#d3e0eb}.privacy-light{width:6px;height:6px;background:#5adcaa;border-radius:50%}#content{max-width:930px;margin:auto;padding:20px 17px 30px}.page-heading{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:16px}.eyebrow{font-size:10px;font-weight:850;letter-spacing:1.4px;color:var(--teal);text-transform:uppercase}.h1{font-size:25px;font-weight:850;letter-spacing:-.9px;margin:4px 0 0}.subtle{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.strong{font-weight:800}.muted{color:var(--muted)}.period-nav{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);padding:7px;border-radius:14px;box-shadow:var(--shadow)}.period-nav button{border:0;background:#f1f5fa;border-radius:9px;width:32px;height:34px;font-size:19px;color:var(--navy)}.period-nav button:active{background:#d9e9f1}.period-name{font-size:12px;font-weight:800;min-width:102px;text-align:center;text-transform:capitalize}.month-native{width:27px;height:29px;opacity:0;position:absolute;inset:0;cursor:pointer}.calendar-wrap{position:relative;width:23px;height:25px;display:grid;place-items:center;color:var(--teal)}.monthbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.monthbar .month-hint{font-size:12px;color:var(--muted)}.card{background:var(--white);border:1px solid var(--line);border-radius:19px;box-shadow:var(--shadow);padding:18px;margin-bottom:13px}.card.dark{background:linear-gradient(120deg,#142943,#244660);border-color:#20405e;color:white}.card-title{font-size:13px;font-weight:850;letter-spacing:-.1px}.card-subtitle{margin-top:4px;font-size:11px;color:var(--muted)}.dark .card-subtitle{color:#b5cada}.overview-value{font-size:34px;letter-spacing:-1.4px;font-weight:850;line-height:1.25;margin:9px 0 4px;font-variant-numeric:tabular-nums}.overview-value.small-number{font-size:26px}.hero-mini{display:flex;justify-content:space-between;gap:8px;align-items:center}.hero-pill{background:rgba(98,225,172,.13);border:1px solid rgba(98,225,172,.28);color:#a8ffd7;border-radius:30px;padding:6px 10px;font-size:11px;font-weight:700}.grid-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid-three{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-card{padding:15px}.stat-label{color:var(--muted);font-size:11px;font-weight:700;margin-bottom:8px}.stat-number{font-size:23px;font-weight:850;letter-spacing:-.7px;font-variant-numeric:tabular-nums}.stat-number.green{color:var(--teal)}.mini-note{color:var(--muted);font-size:10px;margin-top:6px}.section-title{font-size:17px;margin:22px 0 11px;font-weight:850;letter-spacing:-.5px}.section-sup{font-size:11px;color:var(--muted);font-weight:500}.alloc-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.alloc-row:last-child{border:0}.alloc-left{display:flex;gap:10px;align-items:center;min-width:0}.alloc-mark{width:10px;height:10px;border-radius:4px;flex-shrink:0}.alloc-name{font-weight:720}.alloc-sub{display:block;font-size:11px;color:var(--muted);margin-top:3px}.alloc-amount{font-weight:850;white-space:nowrap;font-variant-numeric:tabular-nums}.chart-track{display:flex;gap:3px;height:12px;border-radius:50px;overflow:hidden;margin:15px 0 8px;background:#edf2f8}.chart-track span{min-width:0}.marker-row{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.separator{height:1px;background:var(--line);margin:12px 0}.notice{border:1px solid #d8e8f1;background:#eef7fa;padding:13px 14px;border-radius:14px;color:#35536d;font-size:12px;line-height:1.55;margin-bottom:14px}.notice.warning{border-color:#f0dfb8;background:#fff6e3;color:#8d612c}.notice.danger{border-color:#ffd0d0;background:#fff0f0;color:#a83d44}.nice-input{background:#fff;border:1px solid #d6e2ec;border-radius:11px;padding:11px;width:100%;font-weight:720;min-width:0;color:var(--ink)}.nice-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #c1eee4}.field{display:flex;flex-direction:column;gap:6px;margin:7px 0 13px}.field label{font-size:11px;font-weight:740;color:#566f85}.field small{color:var(--muted)}.fields-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{border:1px solid #d5e4ec;border-radius:12px;background:white;color:var(--navy);padding:10px 14px;font-weight:800;font-size:12px;min-height:40px}.btn.primary{color:white;background:var(--teal);border-color:var(--teal)}.btn.secondary{background:#edf5f9}.btn.wide{width:100%}.btn.danger{color:#bb3c3c}.space-between{display:flex;justify-content:space-between;align-items:center;gap:12px}.progress{height:11px;border-radius:10px;background:#e7edf2;overflow:hidden;margin:10px 0}.progress-fill{height:100%;background:linear-gradient(90deg,#13a991,#40c48e);border-radius:10px}.goal-line{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted)}.goal-line strong{color:var(--ink)}.day-row{display:grid;grid-template-columns:56px minmax(90px,1fr) 90px 60px;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);align-items:center}.day-row:last-child{border:0}.day-date{font-weight:820}.day-week{font-size:10px;color:var(--muted)}.day-label{font-size:12px;font-weight:750}.day-meta{font-size:10px;color:var(--muted);margin-top:3px}.day-row.off .day-label{color:#8995a3}.day-control{display:flex;gap:5px;align-items:center}.work-check{width:18px;height:18px;accent-color:var(--teal)}.day-amount{font-weight:850;text-align:right;white-space:nowrap}.bonus-field{width:100%;padding:8px 6px;border:1px solid #e5d49c;border-radius:9px;background:#fff9e8;font-weight:790;text-align:right}.note-row{grid-column:1/-1;display:none}.day-row:focus-within .note-row,.day-row.show-note .note-row{display:block}.note-input{width:100%;border:1px solid var(--line);padding:8px;border-radius:8px}.status-dot{font-size:9px;padding:3px 7px;border-radius:20px;background:#eff5f8;color:#667e8f;white-space:nowrap}.status-dot.open{background:#e1f5ef;color:#17866e}.list-hint{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);padding:2px 0 10px}.chart-svg{width:100%;height:auto;display:block}.chart-legend{display:flex;gap:16px;align-items:center;font-size:11px;color:var(--muted)}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}.table-scroll{overflow-x:auto;margin:0 -4px}.data-table{width:100%;border-collapse:collapse;min-width:520px;font-size:11px}.data-table th{text-align:left;color:var(--muted);background:#f5f9fc;font-size:10px;padding:10px 8px;white-space:nowrap}.data-table td{padding:10px 8px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.data-table td:not(:first-child),.data-table th:not(:first-child){text-align:right}.data-table tr:last-child td{border-bottom:0}.data-table .highlight{color:var(--teal);font-weight:850}.settings-info{font-size:12px;background:#edf7f3;color:#277d67;border-radius:10px;padding:10px;margin-bottom:12px}.switch-label{font-size:11px;color:var(--muted)}.footer-note{padding:10px 0;color:#93a0ad;font-size:11px;text-align:center}.bottom-nav{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:1040px;background:rgba(255,255,255,.98);border-top:1px solid #e3ebf2;display:grid;grid-template-columns:repeat(4,1fr);padding:9px 10px calc(10px + env(safe-area-inset-bottom));z-index:10;box-shadow:0 -6px 22px rgba(18,32,57,.045)}.nav-btn{border:0;background:none;color:#7e90a0;display:grid;gap:5px;justify-items:center;padding:6px 0;font-size:10px;font-weight:750}.nav-btn.active{color:var(--teal)}.nav-icon{font-size:23px;height:27px;font-weight:700;line-height:1}.toast{position:fixed;bottom:92px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--navy);color:white;border-radius:30px;padding:12px 20px;font-size:12px;box-shadow:0 7px 24px #0002;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap;z-index:20}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.loading{padding:60px 15px;text-align:center;color:var(--muted)}
@media(min-width:670px){#content{padding:30px 25px}.h1{font-size:30px}.stat-number{font-size:27px}.day-row{grid-template-columns:110px minmax(130px,1fr) 140px 110px}.bottom-nav{max-width:700px;bottom:14px;border-radius:25px;border:1px solid #e4ebf2;box-shadow:var(--shadow)}.page-heading{margin-bottom:20px}.card{padding:22px}.grid-two{gap:16px}}
@media(max-width:370px){.privacy-dot{font-size:0;padding:8px}.day-row{grid-template-columns:46px minmax(86px,1fr) 78px 55px;gap:6px}.stat-number{font-size:20px}.period-name{min-width:82px;font-size:11px}.page-heading .h1{font-size:22px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Savings goal: mobile-friendly, independent of monthly allocation rules. */
.savings-goal-card .savings-goal-numbers{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:13px}
.savings-goal-numbers strong{font-size:23px;color:var(--teal);font-variant-numeric:tabular-nums}
.savings-goal-numbers span{font-size:12px;color:var(--muted)}
.goal-percent{color:var(--teal);font-size:12px;text-align:right;white-space:nowrap}
.savings-progress{height:13px}
.savings-progress .progress-fill{background:linear-gradient(90deg,#119a89,#49bd95)}
.text-btn{border:0;background:transparent;color:var(--teal);font-size:11px;font-weight:800;padding:3px 0;text-align:right;text-decoration:underline}
