@font-face{font-family:DM Sans;src:url(/fonts/dm-sans.woff2) format("woff2");font-weight:500 800;font-style:normal;font-display:swap}:root{--bg: #ffffff;--surface: #f4f4f5;--text: #111111;--muted: #5c5c66;--line: #e4e4e7;--danger: #b42318;--gain: #16a34a;--loss: #dc2626;--up-1: color-mix(in srgb, var(--gain) 20%, var(--bg));--up-2: color-mix(in srgb, var(--gain) 36%, var(--bg));--up-3: color-mix(in srgb, var(--gain) 55%, var(--bg));--down-1: color-mix(in srgb, var(--loss) 20%, var(--bg));--down-2: color-mix(in srgb, var(--loss) 36%, var(--bg));--down-3: color-mix(in srgb, var(--loss) 55%, var(--bg));--radius: 20px;--tap: 64px;--gutter: 20px;--font: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0e0e10;--surface: #1a1a1d;--text: #f5f5f7;--muted: #a1a1aa;--line: #2c2c31;--danger: #ff8a80;--up-1: color-mix(in srgb, var(--gain) 26%, var(--bg));--up-2: color-mix(in srgb, var(--gain) 40%, var(--bg));--down-1: color-mix(in srgb, var(--loss) 32%, var(--bg));--down-2: color-mix(in srgb, var(--loss) 50%, var(--bg));--down-3: color-mix(in srgb, var(--loss) 72%, var(--bg))}}:root[data-theme=dark]{color-scheme:dark;--bg: #0e0e10;--surface: #1a1a1d;--text: #f5f5f7;--muted: #a1a1aa;--line: #2c2c31;--danger: #ff8a80;--up-1: color-mix(in srgb, var(--gain) 26%, var(--bg));--up-2: color-mix(in srgb, var(--gain) 40%, var(--bg));--down-1: color-mix(in srgb, var(--loss) 32%, var(--bg));--down-2: color-mix(in srgb, var(--loss) 50%, var(--bg));--down-3: color-mix(in srgb, var(--loss) 72%, var(--bg))}:root[data-theme=light]{color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-weight:600;font-size:18px;line-height:1.4;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body:before{content:"";position:fixed;inset:0 0 auto 0;height:env(safe-area-inset-top);background:#111;z-index:4;pointer-events:none}:root[data-theme=dark] body:before{background:var(--bg)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) body:before{background:var(--bg)}}button,input{font:inherit;color:inherit}.app{min-height:100dvh;padding-bottom:calc(var(--nav-h) + var(--nav-gap) + 16px + env(safe-area-inset-bottom))}.screen{max-width:560px;margin:0 auto;padding:calc(24px + env(safe-area-inset-top)) var(--gutter) 32px;display:flex;flex-direction:column;gap:24px}.screen--settings{gap:32px}.screen--settings>.section{padding-top:32px;border-top:1px solid var(--line)}.screen--center{min-height:100dvh;justify-content:center}.splash{min-height:100dvh;display:grid;place-items:center}.splash img{width:min(240px,60vw);height:auto}.stack{display:flex;flex-direction:column;gap:16px}.title{margin:0;font-size:44px;font-weight:800;letter-spacing:-.02em;line-height:1.05}.lead{margin:0;font-size:20px}.hint{margin:0;color:var(--muted);font-size:16px;font-weight:500}.error{margin:0;color:var(--danger);font-size:16px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.button{min-height:var(--tap);padding:0 24px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font-size:20px;font-weight:800;cursor:pointer}.button:disabled{opacity:.4;cursor:default}.button--primary{background:var(--text);border-color:var(--text);color:var(--bg)}.button--ghost{background:transparent}.button--small{min-height:48px;padding:0 16px;font-size:16px;border-radius:14px}.button:focus-visible,.input:focus-visible,.segmented__option:focus-visible,.tabbar__tab:focus-visible,.swatch:focus-within{outline:3px solid var(--text);outline-offset:2px}.field{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.field__label{padding:0;font-size:16px;font-weight:700;color:var(--muted)}.input{min-height:var(--tap);width:100%;padding:0 20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);font-size:22px;font-weight:700}.input--code{font-size:32px;font-weight:800;letter-spacing:.25em;text-align:center}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);padding:4px;border-radius:var(--radius);background:var(--surface)}.segmented__option{min-height:calc(var(--tap) - 8px);padding:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:calc(var(--radius) - 4px);background:transparent;font-size:20px;font-weight:800;color:var(--muted);cursor:pointer}.segmented__option[aria-selected=true],.segmented__option[aria-checked=true]{background:var(--bg);color:var(--text);box-shadow:0 0 0 1px var(--line)}.preview{padding-top:24px;border-top:1px solid var(--line)}.kid-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.kid-card{display:flex;flex-direction:column;align-items:stretch;gap:4px;width:100%;min-height:140px;padding:24px;border:0;border-radius:var(--radius);background:var(--kid);color:#fff;text-align:left}.kid-card--button{cursor:pointer;touch-action:manipulation}.kid-card--button:active{transform:scale(.99)}.kid-card--button:focus-visible{outline:3px solid var(--text);outline-offset:3px}.kid-card__top{display:flex;align-items:center;justify-content:space-between;gap:12px}.kid-card__score{font-size:88px;font-weight:800;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.kid-card__today{font-size:20px;font-weight:800;opacity:.9}.kid-card__name{font-size:40px;font-weight:800;letter-spacing:-.01em;overflow-wrap:anywhere}.kid-card__tag{padding:6px 14px;border-radius:999px;border:2px solid currentColor;font-size:16px;font-weight:800}.empty{display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding:32px 24px;border:1px dashed var(--line);border-radius:var(--radius)}.empty__title{margin:0;font-size:28px;font-weight:800}.back{align-self:flex-start;min-height:48px;margin:-8px 0 -8px -12px;padding:0 12px;border:0;border-radius:14px;background:transparent;font-size:18px;font-weight:800;color:var(--muted);cursor:pointer}.back:focus-visible{outline:3px solid var(--text)}.kid-hero{display:flex;flex-direction:column;align-items:center;gap:4px;padding:20px 20px 18px;border-radius:var(--radius);background:var(--kid);color:#fff;text-align:center}.kid-hero__name{margin:0;font-size:32px;font-weight:800;overflow-wrap:anywhere}.kid-hero__score{font-size:clamp(112px,38vw,168px);font-weight:800;line-height:.95;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kid-hero__today{margin:0;font-size:22px;font-weight:800;opacity:.9}.tap-pad{display:flex;flex-direction:column;gap:16px;min-width:0}.tap-pad__hint{text-align:center}.reasons{display:flex;gap:8px;overflow-x:auto;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter);scrollbar-width:none;-webkit-overflow-scrolling:touch}.reasons::-webkit-scrollbar{display:none}.reason-chip{flex:none;min-height:calc(var(--tap) - 8px);padding:0 18px;border:1px solid var(--line);border-radius:999px;background:var(--bg);font-size:17px;font-weight:800;white-space:nowrap;cursor:pointer;touch-action:manipulation}.reason-chip[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--bg)}.amounts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.amount{position:relative;overflow:hidden;min-height:88px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.amount:active{background:var(--line)}.amount:disabled{opacity:.35;cursor:default}.amount:disabled:active{background:var(--surface)}.reason-chip:focus-visible,.amount:focus-visible,.toast__action:focus-visible{outline:3px solid var(--text);outline-offset:2px}.hold__fill{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--kid) 55%,var(--surface));transform:scaleX(0);transform-origin:left center;transition:transform .15s ease-out}.hold[data-holding] .hold__fill{transform:scaleX(1);transition:transform var(--hold-ms, .6s) linear}.hold__label{position:relative}.event-list{list-style:none;margin:0;padding:0}.event-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.event-row__delta{flex:none;min-width:3ch;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.event-row__detail{flex:1 1 14ch;min-width:0;color:var(--muted);overflow-wrap:anywhere}.event-row__actions{display:flex;gap:8px;margin-left:auto;align-self:center}.event-row__button{flex:none;align-self:center;margin-left:auto;min-width:44px;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-weight:700;cursor:pointer}.event-row__actions .event-row__button{margin-left:0}.event-row--holdable{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:pan-y}.event-row__key-delete:not(:focus-visible){position:absolute;width:1px;height:1px;min-width:0;min-height:0;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.event-row__button--danger{border-color:transparent;background:var(--text);color:var(--bg)}.toast{position:fixed;left:var(--gutter);right:var(--gutter);top:calc(12px + env(safe-area-inset-top));pointer-events:none;max-width:520px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 20px;border-radius:var(--radius);background:var(--text);color:var(--bg);font-size:20px;font-weight:800}.toast__action{pointer-events:auto;min-height:calc(var(--tap) - 8px);padding:0 20px;border:0;border-radius:calc(var(--radius) - 6px);background:var(--bg);color:var(--text);font-size:18px;font-weight:800;cursor:pointer}.kid-card__stars{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:18px;font-weight:800;opacity:.9}.kid-card__today-star{display:inline-flex;align-items:center;gap:6px}.kid-actions{display:flex;gap:12px}.review-open{flex:1;min-width:0}.review-head{display:flex;flex-direction:column;align-items:center;gap:6px;padding:24px 20px;border-radius:var(--radius);background:var(--kid);color:#fff;text-align:center}.review-head__name{margin:0;font-size:32px;font-weight:800;overflow-wrap:anywhere}.review-head__line{margin:0;text-wrap:balance;font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}.review-head__net{margin:0;font-size:18px;font-weight:800;opacity:.9}.tap-group{display:flex;flex-direction:column;gap:12px}.tap-group__title{margin:0;font-size:24px;font-weight:800}.tap-group__list{list-style:none;margin:0;padding:0}.tap-group__item{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.tap-group__delta{min-width:3ch;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.tap-group__time{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}.reason-chip--static{min-height:0;padding:4px 14px;font-size:16px;cursor:default}.review-close{display:flex;flex-direction:column;gap:12px}.review-close .hint{text-align:center}.close-hold{position:relative;overflow:hidden;width:100%;min-height:88px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:24px;font-weight:800;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.close-hold:focus-visible{outline:3px solid var(--text);outline-offset:2px}.review-closed{display:flex;flex-direction:column;gap:6px;padding:20px;border:1px solid var(--line);border-radius:var(--radius)}.review-closed__result{display:flex;align-items:center;gap:10px;margin:0;font-size:26px;font-weight:800}.review-closed__star{width:32px;height:32px;color:var(--kid)}.shooting-star{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;overflow:hidden;background:var(--kid);color:#fff;animation:shooting-wash var(--shoot-ms, 1.6s) ease-in-out both;cursor:pointer}.shooting-star__flyer{position:absolute;left:50%;top:50%;display:flex;align-items:center;animation:shooting-fly var(--shoot-ms, 1.6s) cubic-bezier(.25,.6,.3,1) both}.shooting-star__trail{width:200px;height:6px;margin-right:-12px;border-radius:3px;background:linear-gradient(to right,transparent,rgba(255,255,255,.95));transform-origin:right center;animation:shooting-trail var(--shoot-ms, 1.6s) ease-out both}.shooting-star__star{width:72px;height:72px;flex:none}.shooting-star__still{display:none}.shooting-star__text{position:relative;margin:0;margin-top:45vh;font-size:40px;font-weight:800;letter-spacing:-.01em;animation:shooting-text var(--shoot-ms, 1.6s) ease-out both}@keyframes shooting-wash{0%{opacity:0}10%,85%{opacity:1}to{opacity:0}}@keyframes shooting-fly{0%{transform:translate(-50%,-50%) rotate(-24deg) translate(-110vmax)}to{transform:translate(-50%,-50%) rotate(-24deg) translate(30vmax)}}@keyframes shooting-trail{0%{opacity:0;transform:scaleX(.2)}25%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(.4)}}@keyframes shooting-text{0%,30%{opacity:0;transform:translateY(12px)}50%,to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.shooting-star,.shooting-star__text{animation:none}.shooting-star__flyer{display:none}.shooting-star__still{position:absolute;top:30%;display:block}.shooting-star__still .shooting-star__star{width:120px;height:120px}.shooting-star__text{margin-top:0}}.reward-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.reward-card__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 24px;background:var(--kid);color:#fff}.reward-card__name{margin:0;font-size:32px;font-weight:800;overflow-wrap:anywhere;min-width:0}.reward-card__stars{display:flex;align-items:center;gap:8px;margin:0;font-size:56px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.reward-card__star{flex:none;font-size:32px}.reward-card__body{display:flex;flex-direction:column;gap:12px;padding:20px 24px 24px}.reward-card__streak{margin:0;font-size:24px;font-weight:800}.reward-card__badges{margin:0;font-size:18px;font-weight:800}.streak-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.streak-strip__segment{height:14px;border-radius:7px;background:var(--line)}.streak-strip__segment[data-lit]{background:var(--kid)}.star-grid{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.star-grid__cell{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:10px}.star-grid__cell[aria-current=date]{box-shadow:inset 0 0 0 2px var(--line)}.star-grid__star{width:78%;height:78%;color:var(--kid)}.star-grid__cell--miss:before,.star-grid__cell--open:before{content:"";border-radius:50%}.star-grid__cell--miss:before{width:46%;height:46%;border:2px solid var(--muted)}.star-grid__cell--open:before{width:18%;height:18%;background:var(--line)}.section__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.segmented--small .segmented__option{min-height:44px;min-width:56px;font-size:17px}.chart{position:relative;touch-action:pan-y}.chart__readout{position:relative;height:40px}.chart__pill.chart__pill--end{right:0;transform:none}.chart__pill{position:absolute;top:0;transform:translate(-50%);display:inline-flex;align-items:center;gap:12px;padding:5px 14px;border-radius:999px;background:var(--text);color:var(--bg);font-size:16px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}.chart__svg{display:block;overflow:visible;user-select:none;-webkit-user-select:none;cursor:crosshair}.chart__grid{stroke:var(--line);stroke-width:1;shape-rendering:crispEdges}.chart__axis{fill:var(--muted);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.chart__goal{stroke:var(--muted);stroke-width:2;stroke-dasharray:7 6;stroke-linecap:round}.chart__goal-label{fill:var(--muted);font-size:13px;font-weight:800;paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}.chart__line{fill:none;stroke:var(--kid);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round}.chart__star{fill:var(--kid);stroke:var(--bg);stroke-width:1.5;stroke-linejoin:round;paint-order:stroke}.chart__star-dot{fill:var(--kid)}.chart__today{fill:var(--kid);stroke:var(--bg);stroke-width:3}.chart__cursor{stroke:var(--muted);stroke-width:1}.chart__marker{fill:var(--bg);stroke:var(--kid);stroke-width:3}.chart__empty,.chart__loading{padding:24px 0}.cal{display:flex;flex-direction:column;gap:12px}.cal__head{display:flex;align-items:center;justify-content:space-between;gap:8px}.cal__title{margin:0;font-size:22px;font-weight:800}.cal__nav{width:48px;height:48px;border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:26px;font-weight:800;line-height:1;cursor:pointer}.cal__nav:disabled{opacity:.35;cursor:default}.cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.cal__weekday{padding-bottom:4px;text-align:center;font-size:14px;font-weight:800;color:var(--muted)}.cal__cell{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0;border:0;border-radius:10px;background:transparent;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text);cursor:pointer;touch-action:manipulation}.cal__cell--out{color:var(--line);cursor:default}.cal__cell[data-tone=even]{background:var(--surface)}.cal__cell[data-tone=up1]{background:var(--up-1)}.cal__cell[data-tone=up2]{background:var(--up-2)}.cal__cell[data-tone=up3]{background:var(--up-3)}.cal__cell[data-tone=down1]{background:var(--down-1)}.cal__cell[data-tone=down2]{background:var(--down-2)}.cal__cell[data-tone=down3]{background:var(--down-3)}.cal__cell[aria-current=date]{box-shadow:inset 0 0 0 2px var(--text)}.cal__cell:focus-visible,.cal__nav:focus-visible{outline:3px solid var(--text);outline-offset:2px}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;justify-content:flex-end}.sheet__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073}.sheet__panel{position:relative;width:100%;max-width:560px;max-height:85dvh;margin:0 auto;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding:20px var(--gutter) calc(24px + env(safe-area-inset-bottom));border-radius:var(--radius) var(--radius) 0 0;background:var(--bg)}.sheet__head{display:flex;align-items:center;justify-content:space-between;gap:12px}.sheet__title{margin:0;font-size:24px;font-weight:800}.sheet__score{display:flex;align-items:center;gap:12px;margin:0;font-size:34px;font-weight:800;font-variant-numeric:tabular-nums}.sheet__net{font-size:22px;color:var(--muted)}.sheet__star{width:28px;height:28px;color:var(--kid)}.stepper{display:flex;align-items:center;gap:8px}.stepper__button{width:var(--tap);height:var(--tap);border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:30px;font-weight:800;line-height:1;cursor:pointer;touch-action:manipulation}.stepper__button:disabled{opacity:.35;cursor:default}.stepper__button:focus-visible{outline:3px solid var(--text);outline-offset:2px}.stepper__value{min-width:3ch;font-size:30px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}.section{display:flex;flex-direction:column;gap:16px}.section__title{margin:0;font-size:28px;font-weight:800}.section__emoji{margin-right:.3em;font-size:.75em;vertical-align:.08em}.card{padding:20px;border:1px solid var(--line);border-radius:var(--radius)}.card__title{margin:0;font-size:22px;font-weight:800}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.list__item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;min-height:var(--tap);padding:12px 16px 12px 20px;border:1px solid var(--line);border-radius:var(--radius)}.kid-row{border-left:10px solid var(--kid)}.kid-row__name{font-size:24px;font-weight:800;color:var(--kid)}.kid-goal{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;flex:1 1 100%}.kid-goal__read{margin:0;flex:1 1 100%;font-size:18px;font-weight:700}.kid-goal__label{font-size:18px;font-weight:700;white-space:nowrap}.kid-goal .stepper{gap:4px}.kid-goal .stepper__value{min-width:2.6ch}.kid-goal .error{grid-column:1 / -1}.link{padding:0;border:0;background:none;font:inherit;color:var(--text);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.close-moved{text-align:center}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .kid-row__name{color:var(--text)}:root:not([data-theme=light]) .hold__fill{background:var(--kid)}:root:not([data-theme=light]) .hold{color:#fff}:root:not([data-theme=light]) .shooting-star{background:color-mix(in srgb,var(--kid) 80%,var(--bg))}}:root[data-theme=dark] .kid-row__name{color:var(--text)}:root[data-theme=dark] .hold__fill{background:var(--kid)}:root[data-theme=dark] .hold{color:#fff}:root[data-theme=dark] .shooting-star{background:color-mix(in srgb,var(--kid) 80%,var(--bg))}.kid-row__code{display:flex;align-items:center;gap:12px}.kid-row__actions{display:flex;flex-wrap:wrap;gap:12px}.kid-row__edit{display:flex;flex-direction:column;gap:16px;flex:1 1 100%}.kid-row__confirm{display:flex;flex-direction:column;gap:12px;flex:1 1 100%}.code{font-size:28px;font-weight:800;letter-spacing:.2em;font-variant-numeric:tabular-nums}.parent-row__email{font-size:18px;overflow-wrap:anywhere}.swatches{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.swatches .field__label{width:100%;margin-bottom:8px}.swatch{position:relative;width:var(--tap);height:var(--tap);border-radius:50%;background:var(--kid);cursor:pointer}.swatch input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;margin:0;cursor:pointer}.swatch:has(input:checked){box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--kid)}.week__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.week__row{display:flex;align-items:center;gap:12px;min-height:var(--tap);padding:8px 16px 8px 14px;border:1px solid var(--line);border-left:10px solid var(--kid);border-radius:var(--radius)}.week__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:800}.week__level{flex:none;padding:2px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:14px;font-weight:800}.week__stars{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.week__net{flex:none;min-width:3.5ch;text-align:right;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--muted)}.install-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.install-banner__text{margin:0;flex:1 1 12rem;font-size:18px;font-weight:800}.install-banner__actions{display:flex;flex-wrap:wrap;gap:8px}.install__steps{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:10px;font-size:18px}.install__note{margin:0;padding:14px 16px;border-radius:14px;background:var(--surface);color:var(--muted);font-size:16px;font-weight:600}.notify{flex-wrap:nowrap}.appearance .segmented__option{display:flex;align-items:center;justify-content:center;gap:6px;font-size:18px}.appearance__icon{flex:none;width:20px;height:20px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.notify__label{flex:1 1 auto;min-width:0;font-size:20px;font-weight:800}.switch{position:relative;flex:none;width:72px;height:40px;padding:0;border:0;border-radius:999px;background:var(--muted);cursor:pointer;touch-action:manipulation}.switch:after{content:"";position:absolute;top:-12px;right:-4px;bottom:-12px;left:-4px}.switch[aria-checked=true]{background:var(--text)}.switch:disabled{opacity:.4;cursor:default}.switch:focus-visible{outline:3px solid var(--text);outline-offset:3px}.switch__thumb{position:absolute;top:4px;left:4px;width:32px;height:32px;border-radius:50%;background:var(--bg);transition:transform .15s ease-out}.switch[aria-checked=true] .switch__thumb{transform:translate(32px)}@media(prefers-reduced-motion:reduce){.switch__thumb{transition:none}}.pz-logo{display:block;width:auto;aspect-ratio:385 / 120;overflow:visible}.pz-logo__tile{fill:#111}.pz-logo__line{fill:none;stroke:#fff;stroke-width:11;stroke-linecap:round;stroke-linejoin:round}.pz-logo__star polygon{fill:#ffc53d;stroke:#ffc53d;stroke-width:3;stroke-linejoin:round}.pz-logo__word{fill:var(--text)}.pz-logo__star,.pz-logo__letter{transform-box:fill-box;transform-origin:center}.pz-logo--animate .pz-logo__line{stroke-dasharray:1 1;animation:pz-draw .6s ease-in-out both}.pz-logo--animate .pz-logo__star{animation:pz-pop .5s .6s ease-out both}.pz-logo--animate .pz-logo__letter{animation:pz-rise .4s calc(.64s + var(--i) * 40ms) cubic-bezier(.22,1,.36,1) both}@keyframes pz-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes pz-pop{0%{transform:rotate(-72deg) scale(0)}65%{transform:rotate(0) scale(1.18)}to{transform:rotate(0) scale(1)}}@keyframes pz-rise{0%{transform:translateY(520px);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.pz-logo--animate .pz-logo__line,.pz-logo--animate .pz-logo__star,.pz-logo--animate .pz-logo__letter{animation:none}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .pz-logo__tile{fill:var(--surface)}}:root[data-theme=dark] .pz-logo__tile{fill:var(--surface)}.brand{margin:0;line-height:0}.brand--login .pz-logo{height:72px}.brand--home .pz-logo{height:40px}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#000;color:#fff;overscroll-behavior:contain}.intro__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;background:#000}.intro__play{position:relative;align-self:end;margin-bottom:calc(15dvh + env(safe-area-inset-bottom));min-height:var(--tap);padding:0 32px;border:0;border-radius:999px;background:#fff;color:#111;font-size:22px;font-weight:800;cursor:pointer}.intro__note{position:relative;margin:0;padding:0 var(--gutter);text-align:center;font-size:20px}.intro__skip{position:absolute;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));min-height:48px;padding:0 20px;border:1px solid rgba(255,255,255,.5);border-radius:999px;background:#0000008c;color:#fff;font-size:18px;font-weight:800;cursor:pointer}.intro__play:focus-visible,.intro__skip:focus-visible{outline:3px solid #ffffff;outline-offset:3px}.avatar{--avatar: 44px;--avatar-ring: 3px;flex:none;display:inline-grid;place-items:center;width:var(--avatar);height:var(--avatar);border:var(--avatar-ring) solid var(--avatar-ring-colour, var(--kid));border-radius:50%;overflow:hidden;background:var(--kid);color:#fff;font-size:calc(var(--avatar) * .42);font-weight:800;line-height:1}.avatar--sm{--avatar: 28px;--avatar-ring: 2px}.avatar--md{--avatar: 44px;--avatar-ring: 3px}.avatar--lg{--avatar: 72px;--avatar-ring: 4px}.avatar--xl{--avatar: 120px;--avatar-ring: 5px}.avatar__img{display:block;width:100%;height:100%;object-fit:cover;background:var(--surface)}.kid-card .avatar,.kid-hero .avatar,.review-head .avatar,.reward-card__head .avatar,.segmented--kids .segmented__option[aria-selected=true] .avatar{--avatar-ring-colour: #ffffff}.kid-card__top{flex-wrap:wrap}.kid-card__who,.reward-card__who,.kid-row__who{display:flex;align-items:center;gap:14px;min-width:0}.kid-row__who{gap:12px}.kid-row__photo{position:relative;flex:none;display:grid;place-items:center;width:52px;height:52px;margin:-4px 0 -4px -4px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}.kid-row__photo:focus-visible{outline:3px solid var(--text);outline-offset:0}.kid-row__photo:disabled{opacity:.4;cursor:default}.kid-row__camera{position:absolute;right:0;bottom:0;width:22px;height:22px;padding:4px;border:2px solid var(--bg);border-radius:50%;background:var(--text);fill:none;stroke:var(--bg);stroke-width:2.2;stroke-linejoin:round}.week__row{gap:10px;padding:8px 12px;border-left-width:1px;border-left-color:var(--line)}.week__row .avatar{margin-right:-2px}.week__level{padding:2px 8px}.kid-hero .avatar{margin-bottom:8px}.review-head .avatar{margin-bottom:4px}.photo-picker__current{display:flex;justify-content:center;padding:8px 0}.photo-crop{position:relative;width:min(100%,280px);aspect-ratio:1;margin:0 auto;border-radius:16px;overflow:hidden;background:var(--surface)}.photo-crop__canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.photo-crop__canvas:active{cursor:grabbing}.photo-crop__ring{position:absolute;top:0;right:0;bottom:0;left:0;border:5px solid var(--kid);border-radius:50%;box-shadow:0 0 0 200px #00000073;pointer-events:none}.photo-picker__hint{text-align:center}.photo-picker__actions{display:flex;flex-direction:column;gap:12px}.photo-picker__file{display:flex;align-items:center;justify-content:center}.photo-picker__file:focus-within{outline:3px solid var(--text);outline-offset:2px}.photo-picker__file--busy{opacity:.4;pointer-events:none}@media(hover:hover)and (pointer:fine){.photo-picker__camera{display:none}}:root{--nav-h: 76px;--nav-gap: 12px;--nav-glass: rgba(255, 255, 255, .8);--nav-solid: rgba(255, 255, 255, .96);--nav-edge: rgba(0, 0, 0, .08);--nav-thumb: rgba(17, 17, 17, .07);--nav-shadow: 0 10px 30px rgba(0, 0, 0, .12), 0 2px 6px rgba(0, 0, 0, .06)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--nav-glass: rgba(30, 30, 33, .78);--nav-solid: rgba(26, 26, 29, .97);--nav-edge: rgba(255, 255, 255, .1);--nav-thumb: rgba(255, 255, 255, .13);--nav-shadow: 0 10px 30px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .4)}}:root[data-theme=dark]{--nav-glass: rgba(30, 30, 33, .78);--nav-solid: rgba(26, 26, 29, .97);--nav-edge: rgba(255, 255, 255, .1);--nav-thumb: rgba(255, 255, 255, .13);--nav-shadow: 0 10px 30px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .4)}.tabbar{position:fixed;z-index:4;left:0;right:0;bottom:calc(var(--nav-gap) + env(safe-area-inset-bottom));width:min(calc(100% - 2 * var(--gutter)),360px);margin:0 auto;padding:5px;border:1px solid var(--nav-edge);border-radius:999px;background:var(--nav-solid);box-shadow:var(--nav-shadow)}@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))){.tabbar{background:var(--nav-glass);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6)}}.tabbar__track{position:relative;display:grid;grid-template-columns:repeat(var(--tabs),minmax(0,1fr))}.tabbar__thumb{position:absolute;top:0;bottom:0;left:0;width:calc(100% / var(--tabs));border-radius:999px;background:var(--nav-thumb);transform:translate(calc(var(--at) * 100%));transition:transform .2s cubic-bezier(.3,1.35,.55,1)}.tabbar__tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:var(--tap);padding:0;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.01em;line-height:1;cursor:pointer;touch-action:manipulation;transition:color .15s ease}.tabbar__tab[aria-current=page]{color:var(--text);font-weight:800}.tabbar__tab:focus-visible{outline:3px solid var(--text);outline-offset:-3px}.tabbar__label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabbar__emoji{font-size:23px;line-height:1;opacity:.7;filter:grayscale(.4);transition:opacity .15s ease,filter .15s ease}.tabbar__tab[aria-current=page] .tabbar__emoji{opacity:1;filter:none}@media(prefers-reduced-motion:reduce){.tabbar__thumb,.tabbar__tab,.tabbar__emoji{transition:none}}.kid-filter{display:flex;flex-wrap:wrap;gap:8px}.kid-chip{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:52px;padding:6px 18px 6px 8px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:18px;font-weight:800;cursor:pointer;touch-action:manipulation;transition:background-color .15s ease,color .15s ease}.kid-chip[aria-pressed=true]{border-color:var(--kid);background:var(--kid);color:#fff}.kid-chip[aria-pressed=true] .avatar{--avatar-ring-colour: #ffffff}.kid-chip[aria-pressed=false] .avatar{opacity:.45;filter:grayscale(1)}.kid-chip:focus-visible{outline:3px solid var(--text);outline-offset:2px}.kid-chip__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart__legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:0 0 12px;padding:0;list-style:none;font-size:17px;font-weight:800}.chart__key,.chart__reading{display:inline-flex;align-items:center;gap:7px}.chart__reading{gap:5px}.chart__zoom{margin-left:auto;color:var(--muted);font-size:13px;font-weight:700}.chart__goal--kid{stroke:var(--kid);opacity:.5}.chart__goal-label--kid{fill:var(--kid)}.chart__break{fill:none;stroke:var(--muted);stroke-width:1.5;stroke-linecap:round}.chart__marker{stroke-width:3.5}.chart__reveal{animation:chart-sweep .9s cubic-bezier(.45,0,.2,1) both}@keyframes chart-sweep{0%{clip-path:inset(-16px 100% -16px -16px)}to{clip-path:inset(-16px -16px -16px -16px)}}@media(prefers-reduced-motion:reduce){.chart__reveal{animation:none}}.cal__date{line-height:1}.cal__marks{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;max-width:100%;min-height:12px}.cal__mark{--mark: 12px;display:grid;place-items:center;width:var(--mark);height:var(--mark);border-radius:50%;background:var(--kid);color:#fff}.cal__marks[data-many]{gap:2px}.cal__marks[data-many] .cal__mark{--mark: 8px}.cal__mark[data-state=open]{background:transparent;box-shadow:inset 0 0 0 2px var(--kid)}.cal__mark-star{width:calc(var(--mark) - 3px);height:calc(var(--mark) - 3px)}.cal-key{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 20px;margin:0;padding:0;list-style:none;color:var(--muted);font-size:14px;font-weight:700}.cal-key li{display:inline-flex;align-items:center;gap:6px}.cal-key .cal__mark{--kid: var(--muted)}.day-kid{display:flex;flex-direction:column;gap:8px;padding-top:16px;border-top:1px solid var(--line)}.day-kid__head{display:flex;align-items:center;gap:12px}.day-kid__who{flex:1;min-width:0}.day-kid__name{margin:0;font-size:22px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-kid__status{margin:0;color:var(--muted);font-size:15px;font-weight:600}.day-kid .sheet__score{font-size:30px}.day-kid .event-row:last-child{border-bottom:0}.emoji{display:inline-block;margin-right:.3em;font-size:.78em;font-weight:400;line-height:1;vertical-align:.06em}.kid-card__stat{display:inline-flex;align-items:center}.week__net .emoji{font-size:.8em;margin-right:.2em}.segmented__option[aria-pressed=true]{background:var(--bg);color:var(--text);box-shadow:0 0 0 1px var(--line)}.kid-marker{flex:none;overflow:visible;fill:var(--kid)}.chart__pill .kid-marker{stroke:var(--bg);stroke-width:1.5;stroke-linejoin:round;paint-order:stroke}.chart__today,.chart__marker{stroke-linejoin:round}.chart__svg:focus-visible:not([data-pointer]){outline:3px solid var(--text);outline-offset:4px;border-radius:8px}.kid-row__code{flex-wrap:wrap}.kid-row__copy{min-width:6.5em}.watch-intro{display:flex;align-items:center;justify-content:center;gap:14px;width:100%}.watch-intro__poster{width:36px;height:64px;object-fit:cover;border-radius:8px;margin:8px 0;background:var(--surface)}.parent-row__actions{display:flex;flex-wrap:wrap;gap:12px}.parent-row__resend{min-width:9.5em}.collapsible{display:grid}.reveal{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .22s ease,opacity .22s ease}.reveal[data-open=true]{grid-template-rows:1fr;opacity:1}.reveal{margin:-6px}.reveal__inner{min-height:0;overflow:hidden;padding:6px}@media(prefers-reduced-motion:reduce){.reveal{transition:none}}.button--wide{width:100%}.form-actions{display:flex;gap:12px}.form-actions .button--primary{flex:1}.signed-in{display:flex;flex-direction:column;gap:12px;padding:16px 16px 16px 20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.signed-in--kid{border-left:10px solid var(--kid)}.signed-in__title{margin:0;color:var(--muted);font-size:16px;font-weight:700}.signed-in__who{display:flex;align-items:center;gap:12px}.signed-in__name{font-size:22px;font-weight:800;overflow-wrap:anywhere}.signed-in__name--email{font-size:19px}.signed-in__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.signed-in__badges{display:flex;flex-wrap:wrap;gap:8px}.role-badge{padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:var(--bg);font-size:14px;font-weight:700}
