:root{--bg:#f3efe6;--bg-deep:#e4ddd0;--surface:#f7f3eb;--surface-2:#ebe4d7;--ink:#2a2318;--muted:#6b5d4b;--faint:#95856f;--line:#d5cbb8;--accent:#6b7340;--accent-hover:#565d33;--accent-soft:#e2e6d0;--accent-ink:#2a2318;--gain:#5a6b3a;--warn:#a16207;--warn-soft:#f0e0c4;--danger:#8f3d2f;--danger-soft:#f0d6cf;--ok:#5a6b3a;--ok-soft:#dce6d0;--shadow:none;--radius:12px;--radius-sm:8px;--nav-h:72px;--safe-bottom:env(safe-area-inset-bottom,0px);--brand-h:52px;--font-display:"DM Sans", system-ui, sans-serif;--font-body:"DM Sans", system-ui, sans-serif;color:var(--ink);background:var(--bg);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:#2a2318;min-width:320px;margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-weight:700}p{margin:0}::selection{background:var(--accent-soft);color:var(--ink)}.app-shell{background:var(--bg);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;position:relative}.install-hint{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;justify-content:space-between;align-items:center;gap:.75rem;margin:.65rem 1rem 0;padding:.75rem .85rem;display:flex}.install-hint-copy{flex-direction:column;gap:.15rem;min-width:0;display:flex}.install-hint-copy strong{letter-spacing:-.02em;font-size:.9rem}.install-hint-copy span{color:var(--muted);font-size:.78rem;line-height:1.35}.top-brand{z-index:30;height:var(--brand-h);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#f7f3ebf0;align-items:center;gap:.55rem;padding:0 1rem;display:flex;position:sticky;top:0}.brand-mark{background:var(--ink);color:#d8e0b0;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.brand-name{font-family:var(--font-display);letter-spacing:-.04em;font-size:1.15rem;font-weight:700}.logout-btn{gap:.3rem;margin-left:auto}.login-screen{background:var(--bg);place-items:center;min-height:100dvh;padding:1.25rem;display:grid}.login-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;width:min(380px,100%);padding:1.5rem 1.25rem}.login-brand{align-items:center;gap:.65rem;display:flex}.login-brand h1{letter-spacing:-.04em;font-size:1.6rem}.login-sub{color:var(--muted);margin-top:.55rem;font-size:.95rem}.login-form{gap:.85rem;margin-top:1.25rem;display:grid}.login-submit{width:100%;margin-top:.25rem}.login-error{color:var(--danger);font-size:.88rem;font-weight:600}.settings-row{border-bottom:1px solid var(--line);align-items:center;gap:1rem;padding:.85rem 0;display:flex}.settings-status{color:var(--muted);margin-top:1rem;font-size:.9rem}.toggle{cursor:pointer;flex-shrink:0;display:inline-flex;position:relative}.toggle input{opacity:0;width:1px;height:1px;position:absolute}.toggle-track{background:#cfc4b0;border-radius:999px;width:48px;height:28px;transition:background .15s;display:block;position:relative}.toggle-thumb{background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle.on .toggle-track{background:var(--accent)}.toggle.on .toggle-thumb{transform:translate(20px)}.toggle.busy{opacity:.6;pointer-events:none}.unavailable-screen{color:#2a2318;background:#f3efe6;place-items:center;min-height:100dvh;padding:1.5rem;display:grid}.unavailable-card{text-align:center;max-width:280px}.unavailable-card h1{margin-bottom:.5rem;font-size:1.5rem}.unavailable-card p{color:#6b5d4b;font-size:.95rem}.unavailable-admin{color:#95856f;cursor:pointer;background:0 0;border:0;margin-top:2rem;font-size:.78rem;text-decoration:underline}.main{padding:.75rem 1rem calc(var(--nav-h) + var(--safe-bottom) + 1.25rem);flex:1;min-width:0}.bottom-nav{width:min(480px,100%);height:auto;min-height:calc(var(--nav-h) + var(--safe-bottom));padding:.45rem .15rem calc(.45rem + var(--safe-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--line);z-index:40;box-sizing:border-box;background:#f7f3ebf5;justify-content:space-between;align-items:stretch;gap:0;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab-btn{min-width:0;height:56px;color:var(--faint);letter-spacing:-.01em;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.2rem;padding:.25rem .1rem 0;font-size:.62rem;font-weight:600;line-height:1.1;display:flex}.tab-btn span{text-overflow:clip;white-space:nowrap;max-width:100%;overflow:visible}.tab-btn.active{color:var(--ink)}.mobile-nav-toggle,.sidebar,.scrim,.sidebar-foot,.brand-tag{display:none!important}.panel{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;animation:.35s both rise}.panel+.panel{border-top:1px solid var(--line);margin-top:1.5rem;padding-top:1.25rem}.panel-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.panel-head h2{letter-spacing:-.04em;font-size:1.35rem}.grid-2,.grid-3,.quick-links,.form-grid{grid-template-columns:1fr;gap:.85rem;display:grid}@media (width>=420px){.grid-2,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat{border-bottom:1px solid var(--line);background:0 0;border-top:0;border-left:0;border-right:0;border-radius:0;padding:.85rem 0;animation:none}.stat-label{color:var(--muted);font-size:.8rem;font-weight:500}.stat-value{font-family:var(--font-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;margin-top:.2rem;font-size:2rem;font-weight:700}.btn{letter-spacing:-.02em;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:.7rem 1.1rem;font-size:.9rem;font-weight:700;transition:background .15s,transform .15s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:#f4f0e6}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{color:var(--ink);border:1px solid var(--line);background:0 0}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-sm{padding:.4rem .75rem;font-size:.8rem}.field{flex-direction:column;gap:.35rem;display:flex}.field label{color:var(--muted);font-size:.75rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface);border-radius:10px;outline:none;padding:.75rem .85rem;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}.field textarea{resize:vertical;min-height:72px}.form-grid .full{grid-column:1/-1}.form-actions{justify-content:flex-end;gap:.5rem;margin-top:.75rem;display:flex}.list{flex-direction:column;gap:0;display:flex}.list-row{border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;align-items:center;gap:.75rem;padding:.95rem 0;transition:background .15s;display:flex}.list-row:hover{border-color:var(--line);background:0 0}.list-row.done{opacity:.45}.list-row.done .row-title{text-decoration:line-through}.row-main{flex:1;min-width:0}.row-title{letter-spacing:-.02em;font-size:.98rem;font-weight:600}.row-meta{color:var(--muted);margin-top:.15rem;font-size:.78rem}.row-actions{flex-shrink:0;gap:.35rem;display:flex}.badge{letter-spacing:.01em;text-transform:lowercase;border-radius:6px;align-items:center;padding:.18rem .45rem;font-size:.68rem;font-weight:700;display:inline-flex}.badge-event{background:var(--ok-soft);color:#3f4c28}.badge-reminder{background:var(--warn-soft);color:var(--warn)}.badge-high{background:var(--danger-soft);color:var(--danger)}.badge-medium{background:var(--warn-soft);color:#7a5420}.badge-low{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.badge-home{color:#4a4032;background:#ddd6c8}.badge-vehicle{background:var(--ink);color:#d8e0b0}.badge-short{background:var(--ok-soft);color:#3f4c28}.badge-long{background:var(--ink);color:#d8e0b0}.progress{background:var(--bg-deep);border-radius:999px;height:4px;margin-top:.55rem;overflow:hidden}.progress>span{border-radius:inherit;background:var(--gain);height:100%;transition:width .35s;display:block}.empty{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:1.5rem 0}.empty strong{color:var(--ink);font-family:var(--font-display);letter-spacing:-.03em;margin-bottom:.25rem;font-size:1.05rem;display:block}.modal-backdrop{z-index:50;background:#00000073;place-items:end center;padding:0;animation:.2s both fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);width:min(480px,100%);padding:1.25rem 1.15rem calc(1.25rem + env(safe-area-inset-bottom,0));border:0;border-radius:20px 20px 0 0;max-height:92vh;animation:.28s both sheet;overflow:auto;box-shadow:0 -8px 40px #0000002e}.modal h2{letter-spacing:-.04em;margin-bottom:1rem;font-size:1.35rem}.cal-header{justify-content:space-between;align-items:flex-end;gap:.75rem;margin-bottom:1.1rem;display:flex}.cal-header h2{letter-spacing:-.05em;font-size:2rem;line-height:1}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.2rem;display:grid}.cal-dow{text-align:center;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;padding:.35rem 0;font-size:.68rem;font-weight:600}.cal-day{text-align:center;background:0 0;border:0;border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;min-height:48px;padding:.35rem .15rem;transition:background .15s;display:flex}.cal-day:hover:not(:disabled){background:var(--surface-2)}.cal-day:disabled{opacity:.28;cursor:default}.cal-day.today{background:0 0}.cal-day.today .cal-day-num{background:var(--ink);color:#f4f0e6}.cal-day.selected .cal-day-num{background:var(--accent);color:#f4f0e6}.cal-day-num{border-radius:999px;place-items:center;width:32px;height:32px;font-size:.85rem;font-weight:650;display:grid}.cal-dots{flex-wrap:wrap;justify-content:center;gap:2px;min-height:6px;display:flex}.dot{border-radius:50%;width:4px;height:4px}.dot-event{background:var(--gain)}.dot-reminder{background:var(--warn)}.meal-toolbar{border-bottom:1px solid var(--line);grid-template-columns:1fr;gap:.75rem;margin-bottom:1.1rem;padding-bottom:1rem;display:grid}@media (width>=420px){.meal-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.meal-toolbar .field:first-child{grid-column:1/-1}}.meal-toolbar select,.meal-toolbar input[type=date]{border:1px solid var(--line);background:var(--surface);border-radius:10px;outline:none;width:100%;padding:.75rem .85rem}.meal-toolbar select:focus,.meal-toolbar input[type=date]:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}.meal-day-row{text-align:left;cursor:pointer;width:100%}.meal-day-row:hover .row-title{color:var(--accent)}.meal-plan-wrap{margin-top:.25rem}.meal-plan-nav{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.meal-plan-nav h2{letter-spacing:-.03em;text-align:center;font-size:1.15rem}.meal-plan-scroll{-webkit-overflow-scrolling:touch;background:#fff;border:2px solid #1a1a1a;overflow-x:auto}.meal-plan-table{border-collapse:collapse;table-layout:fixed;color:#111;width:100%;min-width:720px;font-size:.72rem}.meal-plan-table th,.meal-plan-table td{vertical-align:top;border:1px solid #1a1a1a;padding:0}.meal-plan-table thead th{text-align:center;background:#ffe566;padding:.45rem .25rem;font-weight:700;line-height:1.2}.meal-plan-corner{background:#ffe566;width:72px}.meal-plan-day{font-size:.78rem}.meal-plan-date{margin-top:.1rem;font-size:.68rem;font-weight:600}.meal-plan-table tbody th{text-align:center;vertical-align:middle;background:#fff;width:72px;padding:.4rem .2rem;font-size:.78rem;font-weight:700}.meal-plan-cell{text-align:left;cursor:pointer;background:#fff;border:0;width:100%;min-height:88px;padding:.4rem .35rem;display:block}.meal-plan-cell:hover{background:#fffbeb}.meal-plan-empty{color:#aaa;font-size:.68rem}.meal-bullets{margin:0;padding-left:.95rem;list-style:outside}.meal-bullets li{margin:.1rem 0;font-weight:500;line-height:1.25}.tabs-inline{flex-wrap:wrap;gap:.35rem;display:flex}.chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;padding:.45rem .8rem;font-size:.8rem;font-weight:650}.chip.active{background:var(--ink);border-color:var(--ink);color:#f4f0e6}.money{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-weight:700}.money.neg{color:var(--danger)}.money.pos{color:var(--gain)}.home-sections{gap:.25rem;display:grid}.home-summary-row{text-align:left;cursor:pointer;width:100%}.home-summary-row:hover .row-title{color:var(--accent)}.home-count{font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--ink);text-align:right;min-width:1.5rem;font-size:1.15rem;font-weight:700}.quick-link{border:0;border-bottom:1px solid var(--line);text-align:left;background:0 0;border-radius:0;flex-direction:column;gap:.2rem;padding:1rem 0;display:flex}.quick-link:hover{box-shadow:none;transform:none}.quick-link span{color:var(--muted);font-size:.8rem}.quick-link strong{font-family:var(--font-display);letter-spacing:-.03em;font-size:1.05rem}.check{background:var(--surface);color:#0000;border:1.5px solid #b5a894;border-radius:999px;flex-shrink:0;place-items:center;width:22px;height:22px;padding:0;display:grid}.check.on{background:var(--gain);border-color:var(--gain);color:#f4f0e6}.rh-hero{padding:.5rem 0 1rem}.rh-hero-label{color:var(--muted);font-size:.85rem;font-weight:500}.rh-hero-value{letter-spacing:-.06em;font-variant-numeric:tabular-nums;margin-top:.15rem;font-size:clamp(2.4rem,10vw,3rem);font-weight:700;line-height:1}.rh-hero-sub{color:var(--gain);margin-top:.45rem;font-size:.9rem;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes sheet{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@media (width>=900px){body{background:#2a2318}.app-shell{border:1px solid #4a4032;border-radius:20px;max-width:920px;min-height:calc(100vh - 3rem);margin:1.5rem auto;overflow:hidden}.main{padding:1.25rem 1.5rem calc(var(--nav-h) + 1.5rem)}.bottom-nav{border-radius:0 0 20px 20px;width:min(920px,100%)}.grid-2{grid-template-columns:1.1fr .9fr;gap:2rem}}
