:root{--bg:#faf7fb;--paper:#fffefd;--ink:#40374a;--muted:#857a90;--line:#e8dfea;--lav:#b69dcc;--lavdark:#795f96;--lavlight:#f1eaf7;--sage:#8bb3a1;--sagelight:#e6f1eb;--peach:#e5ae91;--peachlight:#fff0e8;--pink:#dfa8bf;--pinklight:#fbeaf1;--shadow:0 10px 26px rgba(75,52,92,.07);--radius:21px;--font:-apple-system,BlinkMacSystemFont,'Avenir Next',Avenir,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 8% 0%,#f2eaf9 0,transparent 36%),radial-gradient(ellipse at 94% 20%,#eaf3ee 0,transparent 26%),var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.45;min-height:100vh;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--lavdark)}.app-shell{max-width:990px;margin:0 auto;padding:20px 18px 116px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:45px;height:45px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(145deg,#dfc8ed,#f9e5ee);box-shadow:var(--shadow);font-size:25px;color:#76578b}.brand-name{font-size:19px;font-weight:900;letter-spacing:-.6px}.brand-sub{font-size:11px;color:var(--muted);font-weight:650;letter-spacing:.25px}.top-actions{display:flex;gap:8px;align-items:center}.top-chip{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:9px 12px;color:var(--muted);font-weight:700;font-size:12px}.top-chip.click{color:var(--lavdark)}.layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px}.sidebar{position:sticky;top:22px;align-self:start;display:grid;gap:9px}.side-nav{width:100%;background:transparent;border:1px solid transparent;text-align:left;display:flex;align-items:center;gap:13px;border-radius:15px;padding:13px 15px;font-weight:750;color:var(--muted)}.side-nav.active{background:var(--lavlight);color:var(--lavdark);border-color:#e4d6ee}.side-nav:hover{background:#f3edf5}.sidebar-note{margin-top:18px;color:var(--muted);font-size:12px;padding:13px;border:1px dashed var(--line);border-radius:13px}.main{min-width:0}.page-title{font-size:29px;font-weight:900;letter-spacing:-1.1px;line-height:1.15;margin:0}.page-sub{font-size:13px;color:var(--muted);margin:7px 0 18px}.row{display:flex;align-items:center;gap:9px}.between{justify-content:space-between}.start{align-items:flex-start}.wrap{flex-wrap:wrap}.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:13px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.stack{display:grid;gap:13px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:17px;min-width:0}.card.soft{background:var(--lavlight);border-color:#eadcf0}.card.sage{background:var(--sagelight);border-color:#d6e8dc}.card.peach{background:var(--peachlight);border-color:#f6e0d4}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.card-title{font-size:14px;font-weight:850;display:flex;align-items:center;gap:9px;margin:0}.card-title .i{color:var(--lavdark)}.card-link{border:none;background:none;padding:4px;color:var(--lavdark);font-size:12px;font-weight:850}.muted{color:var(--muted)}.muted.sm{font-size:12px}.mini{font-size:11px;color:var(--muted)}.eyebrow{font-weight:850;text-transform:uppercase;letter-spacing:1px;font-size:10px;color:var(--muted)}.big-number{font-size:43px;font-weight:900;letter-spacing:-2px;line-height:1.13;margin:8px 0 3px;font-variant-numeric:tabular-nums}.stat{font-size:21px;font-weight:850;letter-spacing:-.65px;font-variant-numeric:tabular-nums}.submetric{padding:12px;background:rgba(255,255,255,.67);border:1px solid rgba(255,255,255,.85);border-radius:14px;min-width:0}.submetric strong{font-size:19px;font-weight:850;display:block;overflow-wrap:anywhere}.submetric span{font-size:10px;color:var(--muted);display:block;font-weight:750;line-height:1.3;margin-bottom:5px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:#f0edf1;color:#6e6276;font-size:10px;font-weight:850;white-space:nowrap}.badge.paid{background:var(--sagelight);color:#577866}.badge.unpaid,.badge.partial{background:var(--lavlight);color:var(--lavdark)}.badge.overdue{background:var(--peachlight);color:#a96f55}.badge.unknown,.badge.pending{background:#f6f0e4;color:#987c56}.btn{display:inline-flex;justify-content:center;align-items:center;gap:7px;border-radius:13px;padding:11px 15px;font-size:12px;font-weight:850;border:1px solid var(--line);background:white;color:var(--ink);min-height:41px;text-decoration:none}.btn.primary{background:var(--lavdark);color:white;border-color:var(--lavdark)}.btn.secondary{background:var(--lavlight);color:var(--lavdark);border-color:#e2d5ed}.btn.sage{background:var(--sagelight);color:#4d8064;border-color:#cde4d5}.btn.danger{color:#ad625b;background:#fff5f2;border-color:#f3d6d0}.btn.tiny{font-size:11px;padding:7px 9px;min-height:31px;border-radius:10px}.btn.full{width:100%}.btn:focus-visible,.navbtn:focus-visible,[role=button]:focus-visible{outline:3px solid #b89ed0;outline-offset:2px}.btn .i{width:16px;height:16px}.divider{height:1px;background:var(--line);margin:12px 0}.notice{display:flex;gap:10px;align-items:flex-start;border-radius:14px;padding:12px 13px;background:#fbf3e9;border:1px solid #f0e1cf;font-size:12px;color:#765b52}.notice.purple{background:var(--lavlight);border-color:#e5d8ef;color:#755f84}.notice.sage{background:var(--sagelight);border-color:#d3e7da;color:#4f7460}.notice b{font-weight:850}.checkin{padding:14px 15px;margin-bottom:14px;background:linear-gradient(110deg,#f4e8f8,#fcf1f5);border:1px solid #ecdbef;border-radius:18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.checkin p{margin:3px 0 0;font-size:12px;color:#796b82}.checkin strong{font-weight:850}.statline{display:flex;align-items:baseline;justify-content:space-between;gap:7px}.statline .num{font-weight:850;font-variant-numeric:tabular-nums}.progress{width:100%;height:8px;background:#e9e1ec;border-radius:99px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--lav);border-radius:inherit;max-width:100%}.goal-row{margin:13px 0 16px}.goal-row:last-child{margin-bottom:0}.goal-row .row{justify-content:space-between;margin-bottom:6px;gap:7px}.goal-row strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal-row .mini{white-space:nowrap}.tile{min-height:156px;display:flex;flex-direction:column;gap:8px}.tile .card-head{margin-bottom:0}.tile .tile-main{font-size:22px;line-height:1.15;font-weight:900;letter-spacing:-.7px;margin-top:4px}.tile .tile-sub{font-size:11px;color:var(--muted)}.tile .tile-foot{font-size:10px;color:var(--muted);margin-top:auto}.tile .goal-row{margin:2px 0 6px}.tile .progress{height:6px}.tile .goal-row strong{font-size:11px}.tile .goal-row .mini{font-size:10px}.section-title{font-size:17px;font-weight:900;letter-spacing:-.4px;margin:21px 0 11px}.item{display:flex;align-items:flex-start;justify-content:space-between;gap:11px;padding:13px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:0;padding-bottom:0}.item:first-child{padding-top:1px}.item-main{flex:1;min-width:0}.item-name{font-weight:800;font-size:13px;overflow-wrap:anywhere}.item-meta{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45}.item-right{text-align:right;flex:0 0 auto}.item-amount{font-weight:900;font-variant-numeric:tabular-nums;font-size:13px}.item-right .badge{margin-top:5px}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}.seg{display:flex;gap:3px;border-radius:12px;padding:4px;background:#f1ecf4}.seg button{flex:1;border:0;background:transparent;padding:10px;border-radius:10px;color:var(--muted);font-weight:850;font-size:12px;min-width:0}.seg button.active{background:white;color:var(--lavdark);box-shadow:0 2px 8px rgba(70,52,88,.09)}.month-bar{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:12px}.month-bar strong{font-size:16px;font-weight:850}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.cal-day-name{text-align:center;color:var(--muted);font-size:10px;font-weight:800;padding-bottom:7px}.cal-cell{min-height:67px;display:flex;flex-direction:column;align-items:center;border:1px solid #eee7ef;border-radius:10px;padding:7px 2px 5px;background:#fff;text-align:center;gap:3px;min-width:0}.cal-cell:disabled{opacity:.35}.cal-cell.has{border-color:#dbc9e8;background:#f9f5fd}.cal-cell.done{background:#edf5ef;border-color:#d2e6d9;color:#568266}.cal-cell.overdue{background:#fff1e8;border-color:#edd5c7}.cal-cell.today{box-shadow:inset 0 0 0 1.5px #a789bf}.cal-cell .day{font-size:12px;font-weight:850}.cal-cell .tiny-label{font-size:8px;line-height:1.15;white-space:nowrap;color:inherit;font-weight:700}.cal-cell .progress{height:4px;width:80%;background:#ded5e5}.cal-cell .progress>span{background:#9d82b7}.cal-cell.done .progress>span{background:#81b99d}.cal-key{display:flex;gap:10px;flex-wrap:wrap;margin-top:11px;font-size:10px;color:var(--muted)}.cal-key>span:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;background:#c4a6da}.cal-key>span:nth-child(2):before{background:#94bda4}.cal-key>span:nth-child(3):before{background:#e5b494}.pill-tabs{display:flex;gap:7px;overflow:auto;padding-bottom:5px;scrollbar-width:none}.pill-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;white-space:nowrap;font-size:11px;font-weight:800;color:var(--muted)}.pill-tabs button.active{background:var(--lavlight);color:var(--lavdark);border-color:#d8c7e5}.empty{text-align:center;padding:25px 15px;color:var(--muted);font-size:12px;background:#faf8fb;border-radius:14px;border:1px dashed var(--line)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.field{display:grid;gap:5px;margin:10px 0}.field>label,.field .lbl{font-size:11px;font-weight:850;color:#72647b}.field input,.field select,.field textarea,.input{width:100%;background:#fff;border:1px solid #dcd3e0;border-radius:12px;padding:11px 12px;min-height:43px;outline:none;font-size:14px}.field textarea{min-height:95px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#a38ab7;box-shadow:0 0 0 3px #efebf5}.field input[type=checkbox]{width:auto;min-height:auto;accent-color:var(--lavdark)}.check-field{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700}.check-field input{width:17px;height:17px;accent-color:var(--lavdark)}.field small{font-size:10px;color:var(--muted)}.form-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.form-actions>*{flex:1}.overlay{position:fixed;inset:0;z-index:40;background:rgba(52,40,60,.46);display:flex;align-items:flex-end;justify-content:center;padding:13px 8px 0;animation:fadeIn .17s ease}.sheet{background:var(--paper);border-radius:25px 25px 0 0;width:min(100%,700px);max-height:91dvh;overflow:auto;box-shadow:0 -12px 38px rgba(29,21,34,.2);padding:13px 19px calc(23px + env(safe-area-inset-bottom));animation:slideUp .22s ease}.sheet-bar{width:44px;height:5px;background:#ded4e4;border-radius:99px;margin:0 auto 17px}.sheet-head{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:12px}.sheet-head h2{font-size:21px;letter-spacing:-.5px;margin:0}.sheet-head p{margin:4px 0;color:var(--muted);font-size:11px}.sheet-content{padding-bottom:8px}.sheet .btn.close{border:0;background:#f1ebf5;width:33px;height:33px;border-radius:50%;padding:0;font-size:21px;min-height:0}.modal-screen{background:#fff;min-height:200px}.bar-label{font-size:11px;font-weight:850;color:var(--muted)}.list-check{display:grid;gap:7px}.list-check label{display:flex;align-items:center;gap:9px;padding:10px 12px;background:#faf8fb;border:1px solid var(--line);border-radius:11px;font-size:12px;font-weight:700}.list-check input{accent-color:var(--lavdark)}.dashed{border:1px dashed #d9c9df;background:#fbf8fc;padding:13px;border-radius:13px}.numbered{display:grid;grid-template-columns:24px 1fr;gap:11px;align-items:start;margin:12px 0}.stepnum{width:24px;height:24px;border-radius:50%;background:var(--lavlight);color:var(--lavdark);display:grid;place-items:center;font-size:11px;font-weight:900}.splitbox{display:flex;justify-content:space-between;gap:8px;padding:11px;background:#f7f3f9;border:1px solid #e9deee;border-radius:11px;margin:5px 0}.small-cta{font-size:11px;font-weight:850;color:var(--lavdark);border:0;background:none;padding:4px}.inline-choices{display:grid;gap:7px}.inline-choices label{padding:10px;border-radius:12px;background:#f8f5fa;border:1px solid var(--line);display:flex;gap:8px;align-items:start;font-size:12px}.inline-choices input{margin-top:3px;accent-color:var(--lavdark)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.theme-dot{width:25px;height:25px;display:inline-block;border-radius:50%;border:2px solid white;box-shadow:0 0 0 1px #d9cde0}.theme-choice{display:flex;align-items:center;gap:10px;padding:12px;background:white;border:1px solid var(--line);border-radius:12px;cursor:pointer}.theme-choice input{accent-color:var(--lavdark)}.lock-screen{min-height:65vh;display:grid;place-items:center}.lock-inner{max-width:340px;width:100%;text-align:center}.bottomnav{display:none}.i{display:inline-flex;vertical-align:middle;width:20px;height:20px;flex:0 0 auto}.i svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}.no-js{padding:32px}.bold{font-weight:850}.spacer{height:5px}#toast{position:fixed;z-index:70;bottom:calc(90px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);pointer-events:none;background:#473a53;color:#fff;padding:10px 14px;border-radius:13px;font-size:12px;font-weight:750;opacity:0;transition:opacity .2s;box-shadow:var(--shadow);max-width:90%;text-align:center}#toast.visible{opacity:1}.smalltext{font-size:11px}.name-pair{display:flex;align-items:center;justify-content:space-between;gap:8px}.mini-total{font-size:11px;color:var(--muted)}.log{font-size:12px;line-height:1.65}.log strong{color:var(--ink)}
body.theme-sage{--bg:#f6faf6;--lav:#94bbaa;--lavdark:#507e69;--lavlight:#e5f2e9;--line:#dce9df;--pinklight:#edf7f0}body.theme-peach{--bg:#fffaf6;--lav:#e4b097;--lavdark:#a36c5b;--lavlight:#ffefe7;--line:#f0dfd7;--pinklight:#fff0e9}body.theme-night{--bg:#282634;--paper:#383344;--ink:#f6f0fa;--muted:#c6baca;--line:#514a5a;--lav:#b89ed1;--lavdark:#d8baf0;--lavlight:#514460;--sagelight:#364a43;--peachlight:#493d40;--shadow:0 10px 25px rgba(0,0,0,.19)}body.theme-night .card,body.theme-night .field input,body.theme-night .field select,body.theme-night .field textarea,body.theme-night .btn,body.theme-night .sheet,body.theme-night .submetric{background:var(--paper);color:var(--ink)}body.theme-night .seg,body.theme-night .splitbox,body.theme-night .dashed,body.theme-night .empty,body.theme-night .item,body.theme-night .pill-tabs button{background:#40394d}body.theme-night .cal-cell,body.theme-night .cal-cell.has{background:#413b4f;color:#f3e9f8}body.theme-night .btn.primary{background:#785a94;color:white}body.theme-night .checkin{background:#4b3e52;color:white}body.theme-night .notice{background:#514052;color:#f6eafa}
@keyframes slideUp{from{transform:translateY(30px);opacity:.6}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@media (max-width:780px){.app-shell{padding:16px 12px 108px}.sidebar{display:none}.layout{display:block}.bottomnav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;z-index:20;background:rgba(255,254,255,.97);border-top:1px solid #e7deed;padding:8px 6px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -8px 25px rgba(67,47,73,.06)}.bottomnav button{border:0;background:none;color:#93879b;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;border-radius:11px;font-size:10px;font-weight:800;min-height:44px}.bottomnav button.active{color:var(--lavdark);background:var(--lavlight)}.bottomnav button .i{width:20px;height:20px}.page-title{font-size:27px}.topbar{margin-bottom:19px}.brand-name{font-size:17px}.brand-mark{width:40px;height:40px;font-size:23px}.top-chip{font-size:11px;padding:8px 10px}}@media(max-width:390px){.app-shell{padding-inline:10px}.card{padding:13px;border-radius:18px}.grid2{gap:9px}.tile{min-height:157px}.tile .tile-main{font-size:19px}.big-number{font-size:37px}.cal-grid{gap:3px}.cal-cell{min-height:61px}.cal-cell .tiny-label{font-size:7px}.form-grid{grid-template-columns:1fr}.top-chip{padding:7px 9px}}@media(min-width:781px){.sheet{border-radius:24px;margin:auto;max-height:87dvh;padding-bottom:23px}.overlay{align-items:center;padding:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
