:root{--paper:#fffaf3;--ink:#2b2430;--mute:#7a6f78;--line:#3a3340;--dash:#c9bec7;--card:#fffdf8;--kennedy:#8a62b8;--shelby:#e89b74;--hudson:#e6c04a;--maggie:#7aaa6e;--sun:#d07d86;--today-wash:color-mix(in srgb, var(--kid) 16%, transparent);--shadow:0 10px 28px #3c281e14;--ink-mix:#241820;--kid:var(--kennedy);--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--tab-h:calc(64px + var(--safe-b))}*{box-sizing:border-box}html,body{margin:0;padding:0}html{height:100%;scroll-padding-top:12px;scroll-padding-bottom:var(--tab-h)}body{min-height:100dvh;color:var(--ink);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:radial-gradient(900px 420px at 8% -8%,#ffe8d6 0%,#0000 52%),radial-gradient(720px 340px at 110% 0,#e8f3ea 0%,#0000 48%),linear-gradient(#f4efe6 0%,#efe6d8 100%);font-family:Nunito,Avenir Next,Segoe UI,sans-serif;font-size:16px;line-height:1.45}.app{max-width:560px;min-height:100dvh;padding:calc(12px + var(--safe-t)) 14px var(--tab-h);margin:0 auto;position:relative}.skip{left:12px;top:calc(8px + var(--safe-t));z-index:20;background:var(--ink);color:#fff;border-radius:999px;padding:10px 14px;font-size:14px;font-weight:800;text-decoration:none;position:absolute;transform:translateY(-160%)}.skip:focus{transform:none}.top{padding:4px 2px 10px}.rainbow{flex-wrap:wrap;justify-content:center;margin:0;line-height:1;display:flex}.rainbow span{text-transform:uppercase;-webkit-text-stroke:1.15px #2b2430;paint-order:stroke fill;font-size:clamp(26px,8vw,38px);font-weight:900}.rainbow .space{width:.34em}.weekline{text-align:center;letter-spacing:.04em;margin:8px 0 12px;font-size:14px;font-weight:800}.weekline .today-name{color:var(--kid)}.kids{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.kid-pill{appearance:none;color:var(--ink);min-height:52px;font:inherit;letter-spacing:.02em;box-shadow:var(--shadow);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border:2px solid #0000;border-radius:14px;padding:8px 4px 7px;font-size:12px;font-weight:800}.kid-pill .who{font-size:clamp(11px,3.2vw,13px);line-height:1.2;display:block}.kid-pill .meta{font-variant-numeric:tabular-nums;color:var(--mute);margin-top:2px;font-size:11px;font-weight:700;display:block}.kid-pill[aria-selected=true]{border-color:var(--who-ink,var(--who));background:color-mix(in srgb, var(--who) 18%, #fff)}.kid-pill[aria-selected=true] .who{color:var(--ink)}.kid-pill[aria-selected=true] .meta{color:var(--who-ink,var(--ink))}.main{padding-bottom:12px}.banner{background:#fff3d4;border:1.5px solid #c6a23a;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:12px;padding:12px;font-size:14px;font-weight:700;line-height:1.35;display:flex}.banner button{font:inherit;background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:44px;margin-left:auto;padding:8px 16px;font-weight:800}.card{background:var(--card);box-shadow:var(--shadow);border:1.5px solid #eadfd3;border-radius:16px;margin-bottom:12px;overflow:hidden}.card.today-card{outline:3px solid color-mix(in srgb, var(--kid) 35%, transparent)}.card-head{justify-content:space-between;align-items:center;gap:10px;padding:12px 14px 8px;display:flex}.card-head h2,.card-head h3{margin:0;font-size:16px;font-weight:800}.hint{color:var(--mute);margin:0;padding:0 14px 12px;font-size:12px;font-weight:700}.count-pill{background:color-mix(in srgb, var(--kid) 18%, #fff);color:var(--ink);font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--kid) 42%, var(--ink-mix));white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:800}.count-pill.plain{color:var(--ink);box-shadow:none;background:#efe6dc}.count-pill.done{background:color-mix(in srgb, var(--maggie) 24%, #fff);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--maggie) 50%, var(--ink-mix))}.chore{border-top:1px dashed var(--dash);cursor:pointer;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:52px;padding:12px 14px;display:grid}.chore .label{overflow-wrap:break-word;font-size:16px;font-weight:800;line-height:1.3}.chore input[type=checkbox]{appearance:none;border:2.5px solid color-mix(in srgb, var(--kid) 55%, var(--ink-mix));cursor:pointer;background:#fff;border-radius:7px;justify-self:center;width:26px;height:26px;margin:0;position:relative}.chore input[type=checkbox]:checked{background:color-mix(in srgb, var(--kid) 46%, var(--ink-mix));border-color:color-mix(in srgb, var(--kid) 46%, var(--ink-mix))}.chore input[type=checkbox]:checked:after{content:"";border:2.5px solid #fff;border-width:0 2.5px 2.5px 0;width:6px;height:11px;position:absolute;top:3px;left:7px;transform:rotate(40deg)}.chore input[type=checkbox]:disabled{cursor:default;opacity:.6}.chore.save-error{background:#fde8e8}.save-note{color:#8d3a44;grid-column:2/-1;font-size:12px;font-weight:800}.chore input[type=text]{width:100%;font:inherit;color:var(--ink);background:0 0;border:none;border-bottom:1.5px solid #d8cfc8;min-width:0;padding:2px 0 3px;font-size:16px;font-weight:800}.chore input[type=text]:focus{border-bottom-color:color-mix(in srgb, var(--kid) 50%, var(--ink-mix))}.chore .rate{color:var(--mute);letter-spacing:.02em;white-space:nowrap;font-size:12px;font-weight:800}.chore .rate.set{color:var(--ink)}.readonly .chore{cursor:default}.readonly .chore input{pointer-events:none}.day-row{border:0;border-top:1px dashed var(--dash);width:100%;min-height:52px;font:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;grid-template-columns:72px minmax(0,1fr) auto 16px;align-items:center;gap:10px;padding:12px 14px;display:grid}.day-row.today{background:var(--today-wash)}.day-row .dow{letter-spacing:.04em;text-transform:uppercase;font-size:13px;font-weight:900}.day-row .date{color:var(--mute);font-size:12px;font-weight:700}.day-row .bar{background:#efe6dc;border-radius:999px;height:8px;overflow:hidden}.day-row .bar>i{background:color-mix(in srgb, var(--kid) 70%, var(--ink-mix));border-radius:inherit;height:100%;display:block}.day-chip{color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;font-weight:800}.room-head{border:0;border-top:1px dashed var(--dash);width:100%;min-height:52px;font:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;grid-template-columns:10px minmax(0,1fr) auto 16px;align-items:center;gap:10px;padding:12px 14px;font-weight:800;display:grid}.swatch{background:var(--room);border-radius:99px;width:10px;height:22px}.room-open{background:#fff}.card>.room-head:first-child{border-top:0}.money{grid-template-columns:1fr auto;gap:8px 12px;padding:4px 14px 14px;font-size:14px;font-weight:700;display:grid}.money .k{color:var(--mute)}.money .v{font-variant-numeric:tabular-nums;font-weight:800}.money .big{border-top:1px dashed var(--dash);grid-column:1/-1;justify-content:space-between;align-items:baseline;padding-top:6px;font-size:18px;display:flex}.placeholder{color:var(--mute)}.epic-card .chore{grid-template-columns:32px minmax(0,1fr)}.past{border:0;border-top:1px dashed var(--dash);width:100%;min-height:48px;font:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-weight:800;display:flex}.tabs{background:color-mix(in srgb, var(--paper) 94%, #fff);width:min(560px,100%);padding:6px 6px calc(6px + var(--safe-b));z-index:5;-webkit-backdrop-filter:blur(14px)saturate(1.15);border-top:1.5px solid #eadfd3;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -10px 28px #3c281e0f}.tabs a{color:var(--mute);text-align:center;letter-spacing:.02em;-webkit-user-select:none;user-select:none;border-radius:12px;justify-content:center;align-items:center;min-height:44px;padding:12px 2px;font-size:12px;font-weight:800;text-decoration:none;display:flex}.tabs a[aria-current=page]{color:var(--ink);background:color-mix(in srgb, var(--kid) 16%, #fff);box-shadow:inset 0 3px 0 color-mix(in srgb, var(--kid) 42%, var(--ink-mix))}.error{text-align:center;box-shadow:var(--shadow);background:#fff;border-radius:16px;padding:22px 16px;font-weight:800}.error button,.error a{font:inherit;background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:44px;margin-top:10px;padding:10px 16px;font-weight:800;text-decoration:none;display:inline-block}.balance-head{width:100%;min-height:64px;font:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:0;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.balance-head .count-pill{margin-left:auto}.balance-head strong{font-size:16px;display:block}.balance-head .meta{color:var(--mute);font-size:12px;font-weight:700;display:block}.ledger-list{padding:0 0 8px}.ledger-line{border-top:1px dashed var(--dash);grid-template-columns:1fr auto;gap:2px 12px;padding:8px 14px;font-size:13px;font-weight:700;display:grid}.ledger-line .k{color:var(--ink)}.ledger-line .v{font-variant-numeric:tabular-nums;font-weight:800}.ledger-line .when{color:var(--mute);grid-column:1/-1;font-size:11px}.admin-body .app{padding-bottom:28px}.admin-form{gap:10px;padding:0 14px 14px;display:grid}.admin-form.row{grid-template-columns:1fr 1fr;align-items:center}.admin-form label{gap:4px;font-size:13px;font-weight:800;display:grid}.admin-form input,.admin-form select{font:inherit;min-height:44px;color:var(--ink);background:#fff;border:1.5px solid #eadfd3;border-radius:10px;padding:8px 10px;font-size:16px;font-weight:700}.admin-form button:disabled,.admin-form .btn:disabled{opacity:.55;cursor:not-allowed}.admin-form button,.admin-form .btn{font:inherit;background:var(--ink);color:#fff;cursor:pointer;text-align:center;border:0;border-radius:999px;min-height:44px;padding:10px 14px;font-weight:800;text-decoration:none}.plan-editor .admin-form .hint{padding:0}.plan-editor input[type=search]{min-height:48px}.plan-editor .plan-switch{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.plan-editor .plan-switch button{color:var(--ink);background:#fff;border:1.5px solid #eadfd3;min-height:48px}.plan-editor .plan-switch button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.plan-editor .plan-table{border-collapse:collapse;width:100%;font-size:15px}.plan-editor .plan-table th{letter-spacing:.04em;text-transform:uppercase;color:var(--mute);text-align:left;border-bottom:1px solid var(--dash);padding:8px;font-size:12px;font-weight:800}.plan-editor .plan-sort{color:inherit;text-align:left;min-width:0;min-height:44px;letter-spacing:inherit;text-transform:inherit;background:0 0;border:0;border-radius:0;padding:0}.plan-editor .plan-table td{border-bottom:1px solid var(--dash);vertical-align:top;padding:14px 8px}.plan-editor .plan-row{cursor:pointer}.plan-editor .plan-row.is-archived{cursor:default}.plan-editor .plan-row.is-open td{background:color-mix(in srgb, var(--ink) 5%, #fff);border-bottom-color:#0000}.plan-editor .plan-editor-row td{background:color-mix(in srgb, var(--ink) 5%, #fff);padding-top:0}.plan-editor .plan-title,.plan-editor .plan-pay{gap:2px;display:grid}.plan-editor .plan-table td:nth-child(2),.plan-editor .plan-table td:nth-child(3),.plan-editor .plan-table th:nth-child(2),.plan-editor .plan-table th:nth-child(3){white-space:nowrap}.plan-editor .plan-pay{font-variant-numeric:tabular-nums}.plan-editor .plan-editor-row fieldset{border:0;gap:12px;min-width:0;margin:0;padding:0;display:grid}.plan-editor .plan-editor-row button,.plan-editor .plan-editor-row input,.plan-editor .plan-editor-row select{min-height:48px}.plan-editor .plan-actions{flex-wrap:wrap;gap:8px;display:flex}.rate-group{border:1.5px solid #eadfd3;border-radius:12px;margin:0;padding:8px 10px 10px}.rate-group legend{padding:0;font-size:13px;font-weight:800}.rate-group-head{width:100%;min-height:48px;font:inherit;text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:8px;padding:10px 6px;font-size:13px;font-weight:800;display:grid}.rate-group-head .day-chip{justify-self:end}.rate-row{border-top:1px dashed var(--dash);grid-template-columns:1fr 88px 72px;align-items:center;gap:8px;padding:6px 0;display:grid}.rate-row .label{font-size:13px;font-weight:800}.rate-row .tiny{color:var(--mute);grid-template-columns:auto 1fr;align-items:center;gap:4px;font-size:11px;display:grid}.rate-row input{width:100%;min-width:0;padding:8px;font-size:16px}.banner.bad{background:#fde8e8;border-color:#d07d86}.hint+.hint{margin-top:-6px}.hint a{color:color-mix(in srgb, var(--kid) 42%, var(--ink-mix));text-underline-offset:3px;font-weight:800}.twist:after{content:"";box-sizing:border-box;border-right:2.5px solid var(--mute);border-bottom:2.5px solid var(--mute);flex:none;place-self:center;width:8px;height:8px;margin-left:2px;transform:translateY(-2px)rotate(-45deg)}.twist[aria-expanded=true]:after{transform:translateY(2px)rotate(45deg)}.skeleton{min-height:52px;box-shadow:none;background:linear-gradient(90deg,#efe6dc 0%,#f8f3eb 45%,#efe6dc 100%) 0 0/200% 100%;border-radius:14px;animation:1.15s ease-in-out infinite shimmer}.skeleton-card{border:0;height:196px;margin-top:14px}.main>section{animation:.22s rise}button,a,.chore{touch-action:manipulation;-webkit-tap-highlight-color:transparent}::selection{background:color-mix(in srgb, var(--kid) 32%, #fff)}:focus-visible{outline:2.5px solid var(--ink);outline-offset:2px}@media (width<=959px){html{scroll-padding-top:84px}.kids{top:var(--safe-t);z-index:4;-webkit-backdrop-filter:blur(14px)saturate(1.2);background:#f6f1e8f0;margin:0 -14px;padding:8px 14px;position:sticky;box-shadow:0 10px 18px #3c281e0d}}@media (width<=420px){.rate-row{grid-template-columns:1fr 1fr}.rate-row .label{grid-column:1/-1}}@media (hover:hover) and (pointer:fine){.kid-pill:hover{border-color:var(--who-ink,var(--who));transform:translateY(-1px)}.tabs a:hover{color:var(--ink);background:#fff}.day-row:hover,.room-head:hover,.past:hover,.balance-head:hover,.chore:hover,.plan-row:not(.is-archived):hover{background:color-mix(in srgb, var(--kid) 8%, #fff)}.day-row.today:hover{background:color-mix(in srgb, var(--kid) 22%, #fff)}.banner button:hover,.admin-form button:hover,.error button:hover,.error a:hover,.btn:hover{background:#433848}}.kid-pill:active,.day-row:active,.room-head:active,.past:active,.balance-head:active,.chore:active,.tabs a:active{background:color-mix(in srgb, var(--kid) 18%, #fff)}.kid-pill,.tabs a,.day-row,.room-head,.past,.balance-head,.chore,.banner button,.admin-form button,.error button,.error a,.btn,.day-row .bar>i,.twist:after{transition:background .16s,color .16s,transform .16s,box-shadow .16s,border-color .16s,width .2s}@media (width>=960px){html{scroll-padding-bottom:28px}.app:has(nav.tabs){grid-template-columns:220px minmax(0,1fr);grid-template-areas:"top top""kids kids""tabs main";align-items:start;gap:6px 28px;max-width:960px;padding:28px 28px 40px;display:grid}.app:has(nav.tabs) .top{grid-area:top;padding-bottom:6px}.app:has(nav.tabs) .kids{grid-area:kids}.app:has(nav.tabs) .main{grid-area:main;padding-bottom:8px}.rainbow span{font-size:46px}.weekline{font-size:15px}.kids{gap:12px}.kid-pill{border-radius:16px;min-height:64px;padding:12px 8px 10px}.kid-pill .who{font-size:16px}.kid-pill .meta{font-size:13px}.card-head h2,.card-head h3{font-size:18px}.tabs{background:color-mix(in srgb, var(--card) 92%, transparent);width:auto;box-shadow:var(--shadow);-webkit-backdrop-filter:none;backdrop-filter:none;border:1.5px solid #eadfd3;border-radius:18px;flex-direction:column;grid-area:tabs;gap:4px;padding:8px;display:flex;position:sticky;top:20px;bottom:auto;left:auto;transform:none}.tabs a{text-align:left;justify-content:flex-start;min-height:46px;padding:10px 14px;font-size:15px}.tabs a[aria-current=page]{box-shadow:inset 3px 0 0 color-mix(in srgb, var(--kid) 42%, var(--ink-mix))}.admin-body .app{max-width:760px;padding-top:28px}.rate-row{grid-template-columns:1fr 120px 96px}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.app:has(.skip:focus){padding-top:calc(56px + var(--safe-t))}
