:root{--bg:#f7f5f0;--surface:#fff;--surface-2:#f0ede6;--text:#1d232b;--muted:#5f6873;--border:#e2ddd3;--brand:#1f4e79;--brand-text:#fff;--accent:#f7c948;--danger:#b42318;--focus:#2f6fb3;--t-regular:#e8f3ec;--t-regular-ink:#1d6b3a;--t-late:#e3eefb;--t-late-ink:#1d4f8f;--t-early:#fdf0d8;--t-early-ink:#8a5300;--t-min:#f1e8fb;--t-min-ink:#6b2fa3;--t-off:#ecebe8;--t-off-ink:#5f6873;--radius:14px;--shadow:0 1px 2px #0000000d, 0 2px 8px #0000000a;--summary-bg:#1f4e79;--summary-ink:#fff;--star:#b7791f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12161b;--surface:#1b2128;--surface-2:#232a33;--text:#e8ecf1;--muted:#9aa5b1;--border:#2e3740;--brand:#7fb2e5;--brand-text:#0d1b2a;--danger:#f97066;--focus:#7fb2e5;--t-regular:#17301f;--t-regular-ink:#8fd4a7;--t-late:#172a42;--t-late-ink:#9cc4f2;--t-early:#3a2a10;--t-early-ink:#f4c46b;--t-min:#2c1d3d;--t-min-ink:#cfa8f5;--t-off:#262b31;--t-off-ink:#9aa5b1;--shadow:none;--summary-bg:#1d3550;--summary-ink:#e8ecf1;--star:#f7c948;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#12161b;--surface:#1b2128;--surface-2:#232a33;--text:#e8ecf1;--muted:#9aa5b1;--border:#2e3740;--brand:#7fb2e5;--brand-text:#0d1b2a;--danger:#f97066;--focus:#7fb2e5;--t-regular:#17301f;--t-regular-ink:#8fd4a7;--t-late:#172a42;--t-late-ink:#9cc4f2;--t-early:#3a2a10;--t-early-ink:#f4c46b;--t-min:#2c1d3d;--t-min-ink:#cfa8f5;--t-off:#262b31;--t-off-ink:#9aa5b1;--shadow:none;--summary-bg:#1d3550;--summary-ink:#e8ecf1;--star:#f7c948;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3,h4{margin:0;line-height:1.2}h2{font-size:1.2rem}h3{margin-top:8px;font-size:1.05rem}p{margin:0}a{color:var(--brand)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.page{flex-direction:column;gap:16px;max-width:760px;margin:0 auto;padding:12px 16px 96px;display:flex}.page.narrow{max-width:460px}.topbar{justify-content:space-between;align-items:center;gap:8px;min-height:44px;display:flex}.topbar h1{flex:1;font-size:1.35rem}.muted{color:var(--muted)}.small{font-size:.85rem}.block{display:block}.center{text-align:center}.grow{flex:1;min-width:0}.stack{flex-direction:column;gap:12px;display:flex}.stack.tight{gap:8px}.row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.row>.field{flex:160px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.center-note{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:12px;padding:48px 16px;display:flex}.btn{min-height:44px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--brand);color:var(--brand-text)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn-ghost{color:var(--brand);background:0 0;padding:0 10px}.btn-danger{background:var(--danger);color:#fff}.icon-btn{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;font-size:1.3rem;text-decoration:none;display:inline-flex}.icon-btn.danger{font-size:.95rem}.icon-btn.danger:hover{color:var(--danger)}.link-btn{color:var(--brand);font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:4px 0;font-size:.9rem}.sticky-actions{background:linear-gradient(transparent, var(--bg) 30%);padding:16px 0 calc(8px + env(safe-area-inset-bottom));z-index:2;position:sticky;bottom:0}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-size:.9rem;font-weight:600}.field-hint{color:var(--muted);font-size:.82rem}input[type=text],input[type=url],input[type=password],input[type=number],input[type=date],input[type=time],select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;min-width:0;min-height:44px;padding:0 12px}input[type=file]{font:inherit}input.short{max-width:120px}.check{align-items:flex-start;gap:10px;display:flex}.check input{width:20px;height:20px;margin-top:2px}.radio-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;display:flex}.radio-card:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}.radio-card input{width:20px;height:20px}.error-note{color:var(--danger);font-size:.92rem;font-weight:600}.warnings{background:var(--t-early);color:var(--t-early-ink);border-radius:12px;padding:12px 14px;font-size:.92rem}.warnings ul{margin:6px 0 0;padding-left:18px}.segmented{background:var(--surface-2);border-radius:12px;gap:4px;padding:4px;display:flex}.segmented button{min-height:38px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;flex:1;font-weight:600}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chips.tight{gap:4px}.chip{border:1px solid var(--border);background:var(--surface);min-width:40px;min-height:34px;color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:0 12px;font-size:.88rem}.chip.cap{text-transform:capitalize}.chip.on{background:var(--brand);border-color:var(--brand);color:var(--brand-text)}.swatch{cursor:pointer;border:3px solid #0000;border-radius:50%;width:36px;height:36px}.swatch.on{border-color:var(--text)}.badge{white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-block}.badge-regular{background:var(--t-regular);color:var(--t-regular-ink)}.badge-late-start{background:var(--t-late);color:var(--t-late-ink)}.badge-early-out{background:var(--t-early);color:var(--t-early-ink)}.badge-minimum-day{background:var(--t-min);color:var(--t-min-ink)}.badge-no-school{background:var(--t-off);color:var(--t-off-ink)}.badge-rot{background:var(--surface-2);color:var(--text)}.type-late-start{background:var(--t-late);color:var(--t-late-ink)}.type-early-out{background:var(--t-early);color:var(--t-early-ink)}.type-minimum-day{background:var(--t-min);color:var(--t-min-ink)}.type-no-school{background:var(--t-off);color:var(--t-off-ink)}.legend{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.section-title{margin:6px 0 10px;font-size:1.05rem}.section-title .muted{font-weight:500}.no-school-day{background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted);padding:14px 16px}.day-view{flex-direction:column;gap:12px;display:flex}.summary{background:var(--summary-bg);color:var(--summary-ink);border-radius:var(--radius);grid-template-columns:1fr;gap:10px;padding:12px 16px;display:grid}@media (width>=560px){.summary{grid-template-columns:3fr 2fr}}.summary-label{text-transform:uppercase;letter-spacing:.06em;opacity:.75;margin:0 0 4px;font-size:.75rem}.tl{gap:3px;margin:0;padding:0;list-style:none;display:grid}.tl li{grid-template-columns:64px auto 1fr;align-items:center;gap:8px;display:grid}.tl-time{font-variant-numeric:tabular-nums;text-align:right;font-weight:700}.tl-dots{gap:3px;display:inline-flex}.tl-start,.tl-done{opacity:1}.tl-wake-up .tl-text,.tl-leave .tl-text{font-weight:600}.tl-start{opacity:.8}.tl-act .tl-text{color:var(--accent);font-weight:600}.dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.summary .dot{box-shadow:0 0 0 1.5px #ffffffb3}.dot.big{width:14px;height:14px}.kid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px;display:grid}.kid-card{background:var(--surface);border:1px solid var(--border);border-left:6px solid var(--kid);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.kid-card.off{opacity:.8}.kid-card header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.kid-card h3{margin:0;font-size:1.15rem}.kid-badges{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.times{grid-template-columns:repeat(4,1fr);gap:4px;margin:0;display:grid}.times div{background:var(--surface-2);text-align:center;border-radius:10px;padding:8px 6px}.times dt{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.72rem}.times dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:1rem;font-weight:700}.off-note{color:var(--muted)}.periods{gap:2px;margin:0;padding:0;font-size:.92rem;list-style:none;display:grid}.periods li{border-bottom:1px solid var(--border);gap:8px;padding:4px 0;display:flex}.periods li:last-child{border-bottom:0}.periods .p-name{flex:1}.periods .p-time{color:var(--muted);font-variant-numeric:tabular-nums}.periods li.free{color:var(--muted);text-decoration:line-through}.p-free{background:var(--surface-2);border-radius:6px;padding:0 6px;font-size:.75rem;text-decoration:none;display:inline-block}.offline-note{background:var(--t-early);color:var(--t-early-ink);border-radius:10px;padding:8px 12px;font-size:.9rem}.empty{flex-direction:column;align-items:flex-start;gap:12px;padding:24px 0;display:flex}.week-nav,.date-nav{align-items:center;gap:8px;display:flex}.week-nav h2{text-align:center;flex:1;margin:0}.date-nav input{flex:1}.week-grid{grid-template-columns:minmax(64px, auto) repeat(var(--cols), minmax(0, 1fr));gap:4px;margin-top:8px;display:grid}.week-head{text-align:center;color:var(--muted);border-radius:8px;padding:4px 0;font-size:.8rem;text-decoration:none}.week-head span{color:var(--text);font-size:1.05rem;font-weight:700;display:block}.week-head.is-today{background:var(--brand);color:var(--brand-text)}.week-head.is-today span{color:var(--brand-text)}.week-kid{align-items:center;gap:6px;min-width:0;font-size:.9rem;font-weight:600;display:flex}.week-kid-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.week-cell{background:var(--surface);border:1px solid var(--border);min-height:58px;color:var(--text);font-variant-numeric:tabular-nums;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;min-height:112px;padding:8px 2px;font-size:.78rem;line-height:1.25;text-decoration:none;display:flex}.week-cell.type-no-school{justify-content:center}.week-cell .rot{background:var(--surface-2);color:var(--text);border-radius:5px;margin-bottom:2px;padding:0 6px;font-size:.7rem;font-weight:700;line-height:1.5}.week-cell .cell-line{align-items:center;gap:3px;display:inline-flex}.week-cell .soft{opacity:.85;font-size:.74rem}.week-cell .first-bell{margin-top:2px;font-size:.9rem;font-weight:700}.week-cell .t{white-space:nowrap}.alarm{vertical-align:-1px;flex:none}.week-grid{row-gap:6px}@media (width<=560px){.week-cell .ampm{display:none}.week-grid{grid-template-columns:minmax(52px, auto) repeat(var(--cols), minmax(0, 1fr));gap:6px 3px}.week-cell{gap:5px;min-height:124px;padding:10px 2px}.week-cell .soft{font-size:.78rem}.week-cell .first-bell{font-size:.95rem}.week-kid{font-size:.82rem}}.week-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.week-key{align-items:center;gap:4px;display:inline-flex}.week-foot .legend{justify-content:flex-end;margin-top:0;margin-left:auto}.hero{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:24px 0 4px;display:flex}.hero h1{font-size:2rem}.hero p{color:var(--muted)}.steps{gap:4px;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.steps li{text-align:center;min-width:max-content;color:var(--muted);border-bottom:3px solid var(--border);flex:1;padding:4px 6px;font-size:.8rem}.steps li.on{color:var(--text);border-color:var(--brand);font-weight:700}.steps li.done{border-color:var(--t-regular-ink)}.steps button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}.plain-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.month-grids{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.month-title{margin-bottom:4px;font-size:.85rem;font-weight:700}.month-cells{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;font-size:.72rem;display:grid}.month-cells .mh{color:var(--muted)}.month-cells .mc{font-variant-numeric:tabular-nums;border-radius:4px;padding:3px 0}.month-cells .mc.we{color:var(--muted);opacity:.5}.month-label{color:var(--muted);margin:10px 0 6px;font-size:.9rem}.date-row{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:8px;padding:10px;display:flex}.date-row-main,.date-row-sub,.weekly-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.date-row-main input[type=date]{flex:130px}.date-row-main select{flex:140px}.date-row-sub input[type=text]{flex:180px}.weekly-row select{flex:140px}.bell{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:10px;margin:0;padding:12px;display:flex}.bell-head{gap:6px;display:flex}.bell-name{font-weight:700}.period-row{grid-template-columns:minmax(70px,1.2fr) minmax(110px,1fr) minmax(110px,1fr) auto auto;align-items:center;gap:6px;display:grid}@media (width<=520px){.period-row{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr 40px;grid-template-areas:"name name del""start end.""days days days";padding-bottom:8px}.period-row .p-name-input{grid-area:name}.period-row [aria-label=Start]{grid-area:start}.period-row [aria-label=End]{grid-area:end}.period-row .chips{grid-area:days}.period-row .icon-btn{grid-area:del}}.bell-hint{margin:0}.free-grid{flex-direction:column;gap:10px;display:flex}.free-row{flex-direction:column;gap:6px;display:flex}.free-label{font-size:.85rem;font-weight:600}.preview{background:var(--surface-2);border-radius:10px;padding:10px 12px;font-size:.92rem}.anchor{flex-direction:column;gap:10px;display:flex}.kid-list li,.settings-list li{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:10px;min-height:52px;padding:8px 8px 8px 14px;display:flex}.settings-section{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:8px;display:flex}.share{flex-direction:column;gap:6px;display:flex}.share-row{gap:8px;display:flex}.importer{flex-direction:column;gap:12px;display:flex}.week-cell.type-late-start{background:var(--t-late);color:var(--t-late-ink);border-color:#0000}.week-cell.type-early-out{background:var(--t-early);color:var(--t-early-ink);border-color:#0000}.week-cell.type-minimum-day{background:var(--t-min);color:var(--t-min-ink);border-color:#0000}.week-cell.type-no-school{border:1px dashed var(--border);color:var(--muted);background:0 0}.week-cell .muted{color:inherit;opacity:.75}.preset-card{text-align:left;background:var(--surface);border:1px solid var(--border);font:inherit;color:var(--text);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.preset-card:hover{border-color:var(--brand)}.notice{background:var(--t-regular);color:var(--t-regular-ink);border-radius:12px;padding:10px 14px;font-size:.92rem}.pw-wrap{display:block;position:relative}.pw-wrap input{padding-right:52px}.pw-toggle{width:44px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.pw-toggle:hover,.pw-toggle[aria-pressed=true]{color:var(--text)}.p-variant{color:var(--muted);font-size:.85em}.p-variant-row{grid-column:1/-1;margin-top:-2px}.activity-row{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:8px;padding:8px 8px 8px 14px;display:flex}.activity-editor{border:1px solid var(--brand);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:10px;min-width:0;margin:0;padding:12px;display:flex}.upcoming{flex-direction:column;gap:6px;display:flex}.occ{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 0;display:flex}.occ:last-child{border-bottom:0}.occ-date{min-width:92px;font-weight:600}.occ-status{flex:1}.occ-actions{display:inline-flex}.occ-actions .btn{min-height:34px;padding:0 8px}.occ-move{align-items:center;gap:6px;width:100%;display:flex}.occ-move input{flex:1}.occ-skipped .occ-date,.occ-moved .occ-date{color:var(--muted);text-decoration:line-through}.occ-no-school .occ-status{color:var(--t-early-ink)}.kid-acts{flex-direction:column;gap:2px;margin:0;padding:0;font-size:.92rem;list-style:none;display:flex}.kid-acts li{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.star{color:var(--star);flex:none}.week-cell .cell-act{max-width:100%;color:var(--star);flex-direction:column;align-items:center;font-size:.74rem;line-height:1.2;display:flex}.week-cell .cell-act .star{width:11px;height:11px}.week-cell .act-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:0 3px;font-weight:600;overflow:hidden}.heads-up-row{background:var(--t-early);color:var(--t-early-ink);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 12px;display:flex}.heads-up-row .muted{color:inherit;opacity:.8}.heads-up-row .btn-ghost{color:inherit;text-decoration:underline}.row.align-top{align-items:flex-start}.home-logo{border-radius:10px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;margin-left:-6px;display:inline-flex}.home-logo:hover{background:var(--surface-2)}.switcher{flex:1;min-width:0;position:relative}.switcher-btn{max-width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:4px;padding:4px 6px 4px 2px;display:inline-flex}.switcher-btn:hover{background:var(--surface-2)}.switcher h1{min-width:0;margin:0}.switcher-btn{font-size:1.35rem;font-weight:700}.switcher-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.switcher-btn svg{color:var(--muted);flex:none}.switcher-menu{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;min-width:240px;max-width:calc(100vw - 32px);padding:6px;display:flex;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 28px #0000002e}.switcher-menu hr{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}.menu-item{min-height:44px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:0 12px;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-item.current{cursor:default;font-weight:700}.menu-item.current:hover{background:0 0}.menu-item.danger{color:var(--danger)}.family-link{color:var(--text);padding:8px 0;text-decoration:none}.family-link:hover strong{text-decoration:underline}.passcode-hint{margin:-4px 0 0}.family-section .row,.family-section .share-row{flex-wrap:nowrap;gap:8px}.family-section .row>.field,.family-section .share-row>input{flex:1 1 0;min-width:0}.family-section .row>.btn,.family-section .share-row>.btn{flex:0 0 108px;padding:0 8px}@media (width<=400px){.family-section .row>.btn,.family-section .share-row>.btn{flex-basis:96px}}.family-section-row{flex-wrap:nowrap;gap:8px}.family-section-row>.field{flex:1 1 0;min-width:0}.family-section-row>.btn{flex:0 0 108px;padding:0 8px}@media (width<=400px){.family-section-row>.btn{flex-basis:96px}}
