:root{--desk: #d9cdb8;--paper: #f6f0e6;--ink: #241c16;--muted: #5c5148;--line: #e4d8c6;--theo: #0e6e68;--theo-ink: #084e4a;--theo-wash: #d7f0ee;--millie: #b84358;--millie-ink: #7d2436;--millie-wash: #f8e3e7;--gold: #8a5a12;--gold-wash: #f8edd4;--good: #1d6b3a;--danger: #9d2c2c;--focus: #1d4e89;--accent: var(--ink);--accent-ink: var(--ink);--wash: #fffaf3;color-scheme:light}*{box-sizing:border-box}html{color-scheme:light}body{margin:0;min-height:100vh;background-color:var(--desk);background-image:radial-gradient(rgba(80,50,20,.045) .8px,transparent .8px);background-size:7px 7px;color:var(--ink);font-family:Nunito,Trebuchet MS,Segoe UI,sans-serif;font-size:18px;font-weight:600;line-height:1.45}button,input{font:inherit;color:inherit}h1,h2,.balance-figure,.card-balance,.stats dd,.card-meta dd,.ledger-amt{font-family:Fraunces,Georgia,Iowan Old Style,serif;font-weight:600}h1{margin:0;font-size:clamp(2.5rem,7vw,4.1rem);letter-spacing:-.035em;line-height:.92}h2{margin:0;font-size:1.7rem}p{margin:0}button{cursor:pointer}.skip{position:absolute;left:12px;top:12px;z-index:40;background:#fff;padding:8px 12px;border-radius:8px;transform:translateY(-160%)}.skip:focus{transform:none}.unlock-banner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;background:#f3d48a;color:#3a2a08;font-weight:800}.unlock-banner p{margin:0}.unlock-banner .button{background:#fff;border-color:#3a2a08;color:#3a2a08;min-height:42px}.sheet{position:relative;width:min(920px,calc(100% - 32px));margin:28px auto 48px;min-height:calc(100vh - 76px);padding:32px 28px 64px 68px;background:var(--paper);border-radius:18px;box-shadow:0 1px #ffffffbf inset,0 18px 50px #462a1224}.sheet:before{content:"";position:absolute;top:0;bottom:0;left:38px;width:2px;background:#e07a70}.sheet[data-kid=theo]{--accent: var(--theo);--accent-ink: var(--theo-ink);--wash: var(--theo-wash)}.sheet[data-kid=theo]:before{background:var(--theo)}.sheet[data-kid=millie]{--accent: var(--millie);--accent-ink: var(--millie-ink);--wash: var(--millie-wash)}.sheet[data-kid=millie]:before{background:var(--millie)}.mast{display:flex;gap:16px;align-items:flex-start}.house-mark{width:76px;height:76px;flex:none}.kicker{margin:0 0 6px;color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.lede{max-width:38rem;margin-top:12px}.rate-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.rate-strip span,.badge{display:inline-flex;align-items:center;width:fit-content;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;font-weight:800}.badge{border-color:#e4c98a;background:var(--gold-wash);color:var(--gold)}.kid-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}.kid-card{display:grid;gap:6px;align-content:start;padding:16px;border-radius:22px;background:var(--wash)}.kid-card[data-kid=theo]{--accent: var(--theo);--accent-ink: var(--theo-ink);--wash: var(--theo-wash)}.kid-card[data-kid=millie]{--accent: var(--millie);--accent-ink: var(--millie-ink);--wash: var(--millie-wash)}.kid-card-top,.kid-heading{display:flex;gap:12px;align-items:center}.kid-card h2{font-size:2rem}.kid-heading h1{font-size:clamp(2.2rem,6vw,3.4rem)}.age,.fine{color:var(--muted);font-weight:700}.fine{margin-top:6px;font-size:.95rem}.card-balance,.balance-figure{margin:8px 0 0;font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:.88}.card-balance{font-size:clamp(2.4rem,4vw,3.3rem)}.balance-figure{font-size:clamp(3.2rem,10vw,5rem)}.card-caption,.balance-label{font-weight:800}.card-meta,.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}.card-meta dt,.stats dt{color:var(--muted);font-size:.75rem;font-weight:800;line-height:1.25}.card-meta dd,.stats dd{margin:2px 0 0;font-size:1.15rem;font-variant-numeric:tabular-nums}.stats{margin-top:14px}.stats div{padding:10px 12px;border:1px solid var(--line);border-radius:16px;background:#fff}.avatar{display:grid;width:52px;height:52px;flex:none;place-items:center;border-radius:50%;background:var(--accent-ink);color:#fffaf3;font-family:Fraunces,Georgia,serif;font-size:1.7rem}.setup,.danger-zone{display:grid;gap:10px;margin-top:22px;padding:16px;border-radius:18px}.setup{border:2px solid #e0c27a;background:var(--gold-wash)}.danger-zone{background:#fdecee}.home-actions,.row-actions,.modal-actions,.chips,.claim-actions{display:flex;flex-wrap:wrap;gap:8px}.home-actions{margin-top:22px}.save-note{margin-top:18px}.button{appearance:none;min-height:48px;padding:10px 16px;border:2px solid var(--ink);border-radius:999px;background:transparent;color:var(--ink);font-weight:800}.button.solid{border-color:var(--accent-ink);background:var(--accent-ink);color:#fffaf3}.button.quiet{border-color:transparent;background:transparent;color:var(--muted)}.button.danger{border-color:var(--danger);color:var(--danger);background:transparent}.button:disabled{cursor:not-allowed;opacity:.45}.button.solid:hover{filter:brightness(1.08)}.card-actions .button,.kid-card form .button.solid{width:100%}.bank-grid .card-meta{grid-template-columns:1fr 1fr}.back{display:inline-flex;align-items:center;min-height:44px;margin:0 0 8px;padding:0;border:0;background:none;color:var(--muted);font-weight:800}.hero{margin-top:8px;padding:18px;border-radius:24px;background:var(--wash)}.points-line{margin-top:8px;font-weight:800}.projection{max-width:40rem;margin-top:10px;font-weight:700}.block{margin-top:28px}.goal-form{display:grid;grid-template-columns:1.4fr .8fr auto;gap:10px;align-items:end;margin-top:10px}.goal-list{display:grid;gap:10px;margin-top:14px}.goal-card{padding:14px;border:2px solid var(--line);border-radius:16px;background:#fff}.goal-open{display:flex;width:100%;justify-content:space-between;gap:12px;min-height:44px;padding:0;border:0;background:none;font-weight:800;text-align:left}.slider{display:grid;gap:4px;margin-top:12px;font-weight:800}.slider input[type=range]{width:100%;accent-color:var(--accent)}.goal-result{margin:10px 0 0;font-weight:800}.goal-card .button.quiet{margin-top:4px;padding-left:0}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:8px}.claim-list,.chore-list,.stack{display:grid;gap:10px}.claim-list,.chore-list,.add-form,.block .row-actions{margin-top:10px}.claim,.chore,.editor{border:2px solid var(--line);border-radius:16px;background:#fff}.claim{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:14px;border-color:#e4c98a;background:var(--gold-wash)}.claim h3,.chore-name{margin:0;font-family:Nunito,sans-serif;font-size:1.08rem;font-weight:800}.chore{display:flex;width:100%;min-width:0;min-height:72px;gap:12px;align-items:center;justify-content:space-between;padding:14px 14px 14px 16px;border-left:8px solid var(--accent);text-align:left}.chore>span:first-child{display:grid;min-width:0}.chore.waiting{cursor:default}.chore-name{overflow-wrap:anywhere}.chore-meta{margin-top:2px;color:var(--muted);font-size:.92rem;font-weight:800}.chore-side{display:grid;gap:2px;justify-items:end;font-weight:800;color:var(--accent-ink)}.wait-flag{color:var(--gold)}.editor{padding:12px}.add-grid,.editor,.withdraw-grid,.password-line{display:grid;gap:8px;align-items:end}.add-grid{grid-template-columns:1fr 110px auto}.editor{grid-template-columns:1fr 110px}.editor .row-actions,.editor .form-error{grid-column:1 / -1}.withdraw-grid{grid-template-columns:160px 1fr}.password-line{grid-template-columns:1fr auto}.field{display:grid;gap:6px;font-size:.92rem;font-weight:800}input{width:100%;min-height:48px;padding:10px 12px;border:2px solid #ddc7a8;border-radius:12px;background:#fff;font-size:16px}.form-error{margin-top:8px;color:var(--danger);font-weight:800}.empty{margin-top:8px;font-weight:700}.chips{margin:10px 0}.payslip{margin-top:28px;border:2px solid var(--line);border-radius:18px;background:#fff}.payslip summary{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;padding:14px 16px;list-style:none;cursor:pointer}.payslip summary::-webkit-details-marker{display:none}.payslip summary:after{content:"";flex:none;width:10px;height:10px;margin-left:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}.payslip[open] summary:after{transform:rotate(225deg) translateY(-2px)}.payslip summary:focus-visible{outline:3px solid var(--focus);outline-offset:-3px;border-radius:16px}.payslip-title{display:block;font-family:Fraunces,Georgia,serif;font-size:1.25rem;font-weight:650}.payslip-total{font-weight:800;text-align:right;font-variant-numeric:tabular-nums}.payslip .ledger,.payslip .empty{margin:0 16px 12px}.button.plus{width:52px;min-width:52px;padding:0;font-size:2rem;line-height:1}.week-cal{display:grid;gap:8px;margin:12px 0 0;padding:0;list-style:none}.week-cal>li{display:grid;grid-template-columns:76px 1fr;gap:4px 12px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:#fff}.week-cal>li[data-today=true]{outline:2px solid var(--accent)}.week-cal>li[data-payday=true]{background:var(--gold-wash);border-color:#e4c98a}.week-cal header{display:grid}.week-name{font-weight:800}.week-date{color:var(--muted);font-weight:800}.payday{margin:0;color:var(--gold);font-size:.82rem;font-weight:800}.week-empty{margin:0;color:var(--muted)}.week-cal ul,.week-empty{grid-column:2}.week-cal ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}.week-cal ul li{display:flex;gap:12px;justify-content:space-between;align-items:baseline}.week-submit{margin-top:14px}.ledger{margin:8px 0 0;padding:0;list-style:none}.ledger li{display:flex;gap:16px;justify-content:space-between;padding:12px 0;border-bottom:1px dashed #e3d8c6}.ledger-title{font-weight:800}.ledger-amt{font-variant-numeric:tabular-nums;white-space:nowrap}.ledger-credit,.ledger-added{color:var(--good)}.ledger-interest{color:var(--gold)}.ledger-withdrawal,.ledger-banked{color:var(--millie-ink)}.card-actions{display:grid;gap:8px;margin-top:8px}.card-actions.pair{grid-template-columns:1fr 1fr}.bank-link{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:14px;padding:12px 14px;border-radius:16px;background:#fff}.bank-link p{font-weight:800}.bank-grid{margin-top:22px}.account-label{margin-top:6px;font-weight:800}.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.spark{display:block;width:100%;height:96px;color:var(--accent)}.file-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-height:48px;padding:10px 16px;border:2px solid var(--ink);border-radius:999px;font-weight:800;cursor:pointer}.file-button input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.file-button:focus-within{outline:3px solid var(--focus);outline-offset:2px}.wipe{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}.backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:#241c1675}.modal{width:min(440px,100%);max-height:min(92vh,760px);overflow:auto;padding:20px;border:2px solid var(--ink);border-radius:20px;background:var(--paper);animation:pop .16s ease-out}.modal h2{margin-bottom:8px}.toast{position:fixed;bottom:16px;left:50%;z-index:30;max-width:min(92vw,520px);padding:12px 18px;border-radius:999px;background:var(--ink);color:#fffaf3;font-weight:800;text-align:center;transform:translate(-50%);box-shadow:0 10px 30px #0003}:focus{outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@keyframes pop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:760px){.sheet{width:100%;min-height:100vh;margin:0;padding:20px 16px 48px 28px;border-radius:0}.sheet:before{left:12px}.kid-grid,.add-grid,.editor,.withdraw-grid,.password-line,.goal-form{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.house-mark{width:56px;height:56px}.add-grid .button,.password-line .button{width:100%}.add-grid .button.plus{width:52px;justify-self:start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
