:root{--bg: #f6f6f4;--panel: #ffffff;--ink: #1b1b1a;--muted: #6a6a66;--line: #e2e2dd;--accent: #8a3324;--accent-soft: #f3e7e4;--radius: 10px;--shadow: 0 1px 2px rgb(0 0 0 / 6%);color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #17171a;--panel: #1f1f23;--ink: #ececea;--muted: #9a9a95;--line: #32323a;--accent: #e08b7a;--accent-soft: #33241f;--shadow: none}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}a{color:inherit}.shell{display:grid;grid-template-columns:200px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{font-weight:650;letter-spacing:-.01em;padding:0 10px 18px}.brand small{display:block;font-weight:400;color:var(--muted);font-size:12px}.nav{display:block;padding:7px 10px;border-radius:7px;text-decoration:none;color:var(--muted)}.nav:hover{background:var(--line);color:var(--ink)}.nav.active{background:var(--accent-soft);color:var(--accent);font-weight:550}.sidebar-foot{margin-top:auto;padding:10px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}.main{padding:26px 30px 60px;min-width:0}h1{font-size:21px;margin:0 0 4px;letter-spacing:-.01em}h2{font-size:15px;margin:26px 0 10px}.lede{color:var(--muted);margin:0 0 22px;max-width:70ch}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.tutor-student-list{display:grid;gap:8px}.tutor-student-row{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;text-align:left;color:var(--text);background:transparent;border:1px solid var(--line);border-radius:8px;padding:11px 13px;cursor:pointer}.tutor-student-row:hover,.tutor-student-row.is-selected{border-color:var(--accent);background:var(--accent-soft)}.tutor-student-row>span:first-child{display:grid;gap:3px}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:550;padding:0 10px 8px}td{padding:9px 10px;border-top:1px solid var(--line);vertical-align:top}tbody tr:hover td{background:var(--bg)}.tabular{font-variant-numeric:tabular-nums}input,select,button{font:inherit;color:inherit}input,select{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:7px 9px}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{background:var(--accent);color:#fff;border:1px solid transparent;border-radius:7px;padding:7px 13px;cursor:pointer}button:disabled{opacity:.55;cursor:default}button.quiet{background:transparent;color:var(--muted);border-color:var(--line)}button.quiet:hover:not(:disabled){color:var(--ink)}button.link{background:transparent;border:0;border-radius:0;padding:0;color:inherit;font:inherit;text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:3px}button.link:hover:not(:disabled){color:var(--accent)}.panel.session{display:flex;flex-direction:column;gap:10px}.attachments{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.attachment{margin:0;max-width:220px}.attachment img,.attachment video,.attachment iframe{display:block;width:220px;max-width:100%;max-height:165px;border:1px solid var(--line);border-radius:7px;background:#000;object-fit:cover}.attachment iframe{height:124px;border:0}.attachment figcaption{margin-top:4px;overflow-wrap:anywhere}.muted{color:var(--muted)}.small{font-size:13px}.tag{display:inline-block;font-size:11px;padding:2px 7px;border-radius:20px;background:var(--line);color:var(--muted)}.tag.warn{background:var(--accent-soft);color:var(--accent)}.error{background:var(--accent-soft);color:var(--accent);border-radius:7px;padding:9px 12px;margin-bottom:12px}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px 14px;max-width:940px}.fields label{display:flex;flex-direction:column;gap:3px}.fields input,.fields select{width:100%}.notice{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:11px 13px;margin-bottom:12px}.fold>summary{cursor:pointer;padding:8px 2px;font-weight:600;list-style-position:inside}.fold>summary::marker{color:var(--muted)}.fold>summary:hover{color:var(--accent)}.fold>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.datefield{display:flex;flex-direction:column;gap:3px;position:relative}.datefield-box{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:7px;background:var(--panel);overflow:hidden}.datefield-box:focus-within{border-color:var(--accent)}.datefield-input{font:inherit;flex:1;min-width:0;padding:7px 10px;border:0;background:none;color:var(--ink)}.datefield-input:focus{outline:none}.datefield-open{display:flex;align-items:center;padding:0 9px;border:0;border-left:1px solid var(--line);border-radius:0;background:none;color:var(--muted);cursor:pointer}.datefield-open:hover,.datefield-open[aria-expanded=true]{color:var(--accent);background:var(--accent-soft)}.datepicker{position:absolute;top:100%;left:0;z-index:20;margin-top:6px;min-width:330px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow)}.datepicker-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:8px}.datepicker-bar.is-footer{justify-content:flex-start;padding:8px 0 0;border-top:1px solid var(--line)}.datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.datepicker-weekday{padding-bottom:4px;font-size:11px;color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.04em}.datepicker-day{font:inherit;font-size:15px;aspect-ratio:1;min-width:40px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:7px;background:none;color:var(--ink);cursor:pointer}.datepicker-day:hover{background:var(--accent-soft)}.datepicker-day.is-outside{color:var(--muted)}.datepicker-day.is-today{border-color:var(--accent)}.datepicker-day.is-chosen{background:var(--accent);color:var(--panel);font-weight:600}.empty{color:var(--muted);padding:26px 0;text-align:center}.family{max-width:680px;margin:0 auto;padding:22px 18px 60px}.family-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:16px;margin-bottom:20px;border-bottom:1px solid var(--line)}.notes{white-space:pre-wrap;margin:8px 0 0}.sync{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}.sync button{margin-top:6px}.sync-error{color:var(--accent);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signin{min-height:100vh;display:grid;place-items:center;padding:20px}.signin form{width:320px;display:flex;flex-direction:column;gap:10px}.signin input{width:100%}.day-heading{margin:22px 0 8px;font-size:13px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.slot{border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin-bottom:6px;background:var(--panel);display:flex;gap:14px;align-items:baseline}.slot time{font-variant-numeric:tabular-nums;font-weight:550;min-width:46px}.notes-link{color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:6px;padding:3px 9px;white-space:nowrap}.notes-link:hover{color:var(--accent);border-color:var(--accent)}textarea{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:9px;resize:vertical}textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (max-width: 720px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;flex-wrap:wrap;align-items:center;position:static;height:auto}.brand,.sidebar-foot{padding:0 10px;border:0;margin:0}.main{padding:18px 16px 50px}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:14px}.stat-value{font-size:26px;font-weight:600;line-height:1.2}.slot-grid{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.stack{display:flex;flex-direction:column;gap:3px;max-width:420px}.reasons{margin:6px 0 0;padding-left:18px}.change-lesson{border-left:3px solid var(--accent);margin:4px 0 14px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.cal-bar{flex-wrap:wrap}.cal-views{display:flex;gap:0;border:1px solid var(--line);border-radius:7px;overflow:hidden}.cal-view{font:inherit;color:var(--muted);background:var(--panel);border:0;border-right:1px solid var(--line);padding:5px 12px;cursor:pointer}.cal-view:last-child{border-right:0}.cal-view.is-on{color:var(--panel);background:var(--accent)}.cal-period{min-width:190px;text-align:center}.cal-week,.cal-month{overflow-x:auto}.cal-week-head,.cal-week-body{display:grid;grid-template-columns:54px repeat(var(--columns, 7),minmax(116px,1fr));min-width:calc(54px + var(--columns, 7) * 116px)}.cal-week.is-whole-day{max-height:72vh;overflow-y:auto}.cal-week.is-whole-day .cal-week-head{position:sticky;top:0;z-index:1;background:var(--bg)}.cal-day-head{padding:6px 8px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}.cal-gutter-head{border-bottom:1px solid var(--line)}.cal-daynum{color:var(--ink);font-weight:600}.cal-day-head.is-today{color:var(--accent);background:var(--accent-soft)}.cal-day-head.is-today .cal-daynum{color:var(--accent)}.cal-week-body{--slot-h: 20px}.cal-gutter{display:grid}.cal-hour{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;padding-right:6px;transform:translateY(-6px)}.cal-day{display:grid;grid-template-columns:1fr;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px calc(var(--slot-h) * 4))}.cal-day.is-today{background-color:var(--accent-soft)}.rota{display:grid;gap:12px;padding:12px 0 4px;min-width:460px}.rota-week{display:grid;gap:5px}.rota-day{display:grid;grid-template-columns:84px 1fr auto;gap:10px;align-items:center;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.rota-day-head{display:flex;flex-direction:column;line-height:1.3}.rota-periods{display:flex;flex-wrap:wrap;gap:6px 14px}.rota-period{display:flex;align-items:center;gap:5px}.rota-period input{width:112px;padding:4px 6px;font-size:13px}@media (max-width: 620px){.rota{min-width:0}.rota-day{grid-template-columns:1fr;justify-items:start}}.cal-closed{grid-column:1;background:color-mix(in srgb,var(--muted) 13%,transparent);z-index:0}.cal-session{position:relative;z-index:1;display:block;grid-column:1;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:6px;background:var(--panel);padding:1px 5px;font-size:11px;line-height:1.45;text-decoration:none;overflow:hidden}.cal-session:hover{border-color:var(--accent);border-left-color:var(--accent);box-shadow:var(--shadow)}.cal-session.is-done{border-left-color:var(--line)}.cal-session.is-draft{border-left-style:dashed}.cal-session-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-session-line time{font-variant-numeric:tabular-nums;color:var(--muted)}.cal-session-who{font-weight:600}.cal-session.is-unmatched .cal-session-who{font-weight:400;font-style:italic;color:var(--muted)}.cal-session-detail{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-session-detail a{color:var(--ink)}.cal-month{display:grid;grid-template-columns:repeat(7,minmax(88px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);min-width:640px}.cal-month-head{padding:5px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.cal-cell{display:flex;flex-direction:column;align-items:stretch;gap:2px;min-height:92px;padding:4px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel)}.cal-cell.is-outside{background:var(--bg)}.cal-cell.is-outside .cal-cell-day{color:var(--muted)}.cal-cell.is-today{background:var(--accent-soft)}.cal-cell-day{font:inherit;font-size:12px;font-weight:600;color:inherit;background:none;border:0;padding:0;text-align:left;cursor:pointer}.cal-cell.is-today .cal-cell-day{color:var(--accent)}.cal-entry,.cal-more{font:inherit;font-size:11px;line-height:1.4;color:inherit;background:var(--bg);border:0;border-left:2px solid var(--accent);border-radius:3px;padding:1px 4px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cal-entry time{font-variant-numeric:tabular-nums;color:var(--muted)}.cal-more{border-left:0;background:none;color:var(--muted)}.cal-entry:hover,.cal-more:hover,.cal-cell-day:hover{color:var(--accent)}.cal-session.is-other{border-left-color:var(--line);background:var(--bg);color:var(--muted);cursor:default}.cal-session.is-other .cal-session-who{font-weight:500;color:var(--muted)}.cal-entry.is-other{border-left-color:var(--line);color:var(--muted)}.slot.is-other{border-style:dashed;background:none}.cal-whose{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:4px;padding-top:11px;border-top:1px solid var(--line)}.cal-tick{display:flex;align-items:center;gap:5px;font-size:13px;cursor:pointer;white-space:nowrap}.cal-tick input{margin:0;accent-color:var(--accent);cursor:pointer}.swatches{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.swatch{width:20px;height:20px;padding:0;border:2px solid transparent;border-radius:5px;cursor:pointer}.swatch.is-on{border-color:var(--ink)}.swatch.is-none{background:var(--panel);border:1px dashed var(--line)}.swatch.is-none.is-on{border:2px solid var(--ink)}.cal-session.has-colour,.cal-entry.has-colour,.slot.has-colour{border-left-color:hsl(var(--hue) var(--sat) calc(38% + var(--shade) * 8%))}.cal-session.has-colour{background:hsl(var(--hue) calc(var(--sat) * .55) calc(96% - var(--shade) * 2%))}.cal-entry.has-colour{background:hsl(var(--hue) calc(var(--sat) * .4) calc(96% - var(--shade) * 2%))}@media (prefers-color-scheme: dark){.cal-session.has-colour,.cal-entry.has-colour,.slot.has-colour{border-left-color:hsl(var(--hue) var(--sat) calc(60% + var(--shade) * 6%))}.cal-session.has-colour{background:hsl(var(--hue) calc(var(--sat) * .35) calc(19% + var(--shade) * 2%))}.cal-entry.has-colour{background:hsl(var(--hue) calc(var(--sat) * .3) calc(19% + var(--shade) * 2%))}}.cal-session.is-other.has-colour{background:hsl(var(--hue) calc(var(--sat) * .25) calc(97% - var(--shade) * 1%))}@media (prefers-color-scheme: dark){.cal-session.is-other.has-colour{background:hsl(var(--hue) calc(var(--sat) * .2) calc(17% + var(--shade) * 1%))}}.slot.has-colour{border-left-width:3px;border-left-style:solid}.tabs{display:flex;gap:2px;margin-bottom:18px;border-bottom:1px solid var(--line)}.tab{padding:8px 14px;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--ink)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:550}.swatch.is-taken{opacity:.3;cursor:not-allowed}.filters{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);gap:6px 14px}.filters select.is-on{border-color:var(--accent);color:var(--accent)}
