.site{min-height:100dvh;display:flex;flex-direction:column}.shell{flex:1;width:100%;max-width:80rem;margin:0 auto;padding:0 2rem 2.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 1rem;border:1.5px solid transparent;border-radius:.625rem;background:none;color:var(--ink);font:inherit;font-size:.9375rem;font-weight:700;text-decoration:none;cursor:pointer}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-secondary{border-color:var(--rule-strong);background:var(--paper)}.btn-outline{border-color:var(--accent);color:var(--accent-ink)}.btn-danger{background:var(--cancel);color:var(--paper)}.btn-danger-outline{border-color:var(--cancel);color:var(--cancel)}.btn-small{min-height:40px;padding:0 .6875rem;border-color:var(--rule-strong);border-radius:.5625rem;background:var(--paper);font-size:.84375rem}.icon-button{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;padding:0;border:1.5px solid var(--rule-strong);border-radius:.75rem;background:var(--paper);color:var(--ink);cursor:pointer}.icon-button:hover{border-color:var(--accent)}.quiet-button{border-color:transparent;background:none}.card{background:var(--paper);border:1px solid var(--rule);border-radius:.875rem;overflow:hidden;box-shadow:var(--shadow)}.link{border:0;background:none;padding:0;cursor:pointer;color:var(--accent-ink);font-weight:700;text-decoration:underline;text-underline-offset:3px}.quiet{color:var(--ink-soft)}.notice-error{padding:.75rem .875rem;border-radius:.75rem;background:var(--cancel-wash);color:var(--cancel);font-weight:700}.today-pill{padding:.0625rem .5rem;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:.75rem;font-weight:700;line-height:1.125rem}.masthead{display:flex;align-items:center;min-height:72px;padding:0 max(2rem,calc((100% - 76rem)/2));background:var(--paper);border-bottom:1px solid var(--rule)}.brand{display:flex;align-items:center;gap:.625rem;min-height:44px;text-decoration:none;color:var(--ink)}.brand-box{display:flex;flex:none;width:46px;height:46px;overflow:hidden;border:1px solid var(--rule);border-radius:.625rem;background:#fff}.brand-mark{width:100%;height:100%;object-fit:contain}.brand-text{display:flex;flex-direction:column;gap:1px}.brand-zh{font:400 1.375rem/1.15 var(--hand);letter-spacing:.02em;color:var(--coral)}.brand-zh b{font-weight:inherit;color:var(--brand)}.brand-ms{font-size:.6875rem;line-height:.875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--coral-ink)}.brand-ms b{font-weight:800;color:var(--brand-ink)}@media(prefers-color-scheme:dark){.brand-box,.login-box{border-color:transparent}}.colophon{background:var(--paper);border-top:1px solid var(--rule);color:var(--ink-soft);font-size:.8125rem;line-height:1.25rem}.colophon>div{display:flex;flex-wrap:wrap;gap:.375rem 2rem;max-width:80rem;margin:0 auto;padding:1.375rem 2rem 1.75rem}.colophon p{margin:0}.colophon-strong{font-weight:700;color:var(--ink)}.colophon-info{display:flex;align-items:flex-start;gap:.375rem}.colophon-info svg{flex:none;margin-top:2px}.notices-slot,.announcements{padding-top:1.5rem}.notices{display:flex;overflow:hidden;background:var(--paper);border:1px solid var(--rule);border-radius:.875rem;box-shadow:var(--shadow)}.notices-margin{display:flex;justify-content:center;flex:none;width:64px;padding-top:.875rem;border-right:2px solid var(--margin);color:var(--coral)}.notices-body{flex:1;min-width:0;padding:.75rem 1.25rem .25rem}.notices-body h2{margin:0 0 .25rem;font:400 1.3125rem/1.75rem var(--hand)}.notices-empty{margin:0;padding:.25rem 0 .375rem;font-size:.875rem;line-height:1.375rem;color:var(--ink-soft)}.notices details{border-top:1px solid var(--rule)}.notices summary{display:flex;align-items:center;gap:.625rem;min-height:44px;padding:.25rem 0;cursor:pointer}.notices time{flex:none;width:4.5rem;font-size:.8125rem;line-height:1.125rem;font-weight:800;color:var(--accent-ink)}.notices-title{flex:1;min-width:0;font-size:.9375rem;line-height:1.3125rem;font-weight:700}.notices-new{flex:none;padding:.0625rem .4375rem;border-radius:999px;background:var(--cancel-wash);color:var(--coral-ink);font-size:.6875rem;font-weight:700;line-height:1rem}.notices details p{margin:0;padding:0 0 .75rem 5.125rem;font-size:.875rem;line-height:1.375rem;white-space:pre-wrap}.notices-date{display:block;margin-top:.25rem;font-size:.75rem;color:var(--ink-soft)}.filters{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1rem 2.5rem;padding:1.5rem 0 1rem}.filters-group{display:flex;flex-direction:column;gap:.5rem;flex:1 1 21rem;min-width:0}.filters-group h2{margin:0;font-size:.875rem;line-height:1.25rem;font-weight:700;color:var(--ink-soft)}.filters-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:24px}.filters-clear{min-height:44px;margin:-10px -4px;padding:0 4px;font-size:.875rem}.filters-chips{display:flex;flex-wrap:wrap;gap:.5rem}.dropdown{position:relative;min-width:0;max-width:100%}.dropdown-button{display:inline-flex;align-items:center;gap:.375rem;min-height:44px;max-width:100%;padding:0 .75rem;border:1.5px solid var(--rule-strong);border-radius:.75rem;background:var(--paper);color:var(--ink);font-size:.9375rem;font-weight:500;text-align:left;cursor:pointer}.dropdown-button:hover{border-color:var(--accent)}.dropdown[data-active] .dropdown-button{border-color:var(--accent);background:var(--accent-wash);color:var(--accent-ink);font-weight:700}.dropdown-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-caret{flex:none;width:.4375rem;height:.4375rem;margin:-.1875rem .125rem 0;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(45deg)}.dropdown-button[aria-expanded=true] .dropdown-caret{transform:rotate(-135deg);margin-top:.1875rem}.dropdown-list{position:absolute;z-index:10;top:calc(100% + .375rem);left:0;min-width:100%;width:max-content;max-width:min(22.5rem,90vw);max-height:20rem;overflow:auto;margin:0;padding:.375rem;list-style:none;border-radius:.875rem;background:var(--paper);border:1px solid var(--rule-strong);box-shadow:0 8px 24px #0e467324}.dropdown-list[data-align=end]{left:auto;right:0}.dropdown-options{margin:0;padding:0;list-style:none}.dropdown-options:focus{outline:none}.dropdown-options:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.dropdown-search{position:sticky;top:-.375rem;z-index:1;display:block;width:100%;min-width:12rem;min-height:40px;margin:-.375rem 0 .375rem;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;font-size:.9375rem;box-sizing:border-box;box-shadow:0 -.375rem 0 var(--paper)}.dropdown-search:focus{outline:2px solid var(--focus);outline-offset:0}.dropdown-list:focus{outline:none}.dropdown-list:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.dropdown-hint{padding:.5rem .625rem .25rem;font-size:.75rem;line-height:1rem;color:var(--ink-soft)}.dropdown-list [role=option]{display:flex;align-items:center;gap:.75rem;min-height:44px;padding:0 .625rem;border-radius:.625rem;color:var(--ink);font-size:.9375rem;cursor:pointer;white-space:nowrap}.dropdown-list [role=option][data-focus],.dropdown-list [role=option][aria-selected=true]{background:var(--accent-wash)}.dropdown-list [data-all]{color:var(--ink-soft)}.dropdown-tick{flex:none;width:1.25rem;height:1.25rem}[aria-selected=true]>.dropdown-tick:after{content:"";display:block;width:.375rem;height:.6875rem;margin:.125rem 0 0 .4375rem;border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);transform:rotate(45deg)}.dropdown-check{flex:none;position:relative;width:1.25rem;height:1.25rem;border-radius:.25rem;border:2px solid var(--rule-strong);background:var(--paper)}[aria-selected=true]>.dropdown-check{border-color:var(--accent);background:var(--accent)}[aria-selected=true]>.dropdown-check:after{content:"";position:absolute;left:.3125rem;top:.0625rem;width:.3125rem;height:.5625rem;border-right:2px solid var(--on-accent);border-bottom:2px solid var(--on-accent);transform:rotate(45deg)}.presets ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.presets li{display:inline-flex;align-items:center;border:1.5px solid var(--rule-strong);border-radius:999px;background:var(--paper);color:var(--ink)}.presets li[data-current]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.presets li.presets-add{border:0;background:none}.preset{min-height:44px;padding:0 .25rem 0 1rem;border:0;background:none;color:inherit;font-size:.9375rem;font-weight:700;cursor:pointer}.preset-remove{width:2.5rem;min-height:44px;padding:0 .25rem 0 0;border:0;background:none;color:inherit;opacity:.85;font-size:.75rem;cursor:pointer}.filters-save{min-height:44px;padding:0 1rem;border:1.5px dashed var(--accent);border-radius:999px;background:none;color:var(--accent-ink);font-size:.9375rem;font-weight:700;cursor:pointer}.presets-note{margin:0;font-size:.8125rem;line-height:1.125rem;font-weight:700;color:var(--accent-ink)}.preset-form{display:flex;flex-direction:column;gap:.625rem;max-width:22.5rem;padding:.875rem;border:1px solid var(--rule-strong);border-radius:.875rem;background:var(--paper);box-shadow:0 8px 24px #0e467324}.preset-form label{font-size:.9375rem;font-weight:700}.preset-form input{width:100%;min-height:48px;padding:0 .75rem;border:2px solid var(--accent);border-radius:.625rem;background:var(--bg);color:var(--ink);font:inherit}.preset-form p{margin:0;font-size:.75rem;line-height:1.0625rem;color:var(--ink-soft)}.preset-actions{display:flex;justify-content:flex-end;gap:.5rem}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem}.timetable-toolbar{padding:.875rem 0 1rem;border-top:1px solid var(--rule)}.pager{display:flex;align-items:center;gap:.25rem}.pager-title{margin:0;min-width:8.5rem;font:400 1.375rem/1.875rem var(--hand);text-align:center}.picker-anchor{position:relative}.picker-anchor h1{margin:0;font-weight:400}.pager-title-button{display:flex;align-items:center;justify-content:center;gap:.4375rem;min-width:13.75rem;min-height:44px;padding:0 .625rem;border:1.5px solid var(--rule-strong);border-radius:.75rem;background:var(--paper);color:var(--ink);font:400 1.3125rem/1.75rem var(--hand);cursor:pointer}.pager-title-button>svg:first-child{color:var(--accent)}.pager-title-button[aria-expanded=true]{border-color:var(--accent);background:var(--accent-wash)}.views{display:flex;margin-left:auto;padding:3px;border:1px solid var(--rule-strong);border-radius:.75rem;background:var(--paper)}.views button{flex:1;min-width:4rem;min-height:42px;border:0;border-radius:.5625rem;background:none;color:var(--ink);font-size:.9375rem;font-weight:700;cursor:pointer}.views button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.picker{position:absolute;z-index:20;top:calc(100% + .5rem);left:50%;width:min(22.5rem,calc(100vw - 1.5rem));transform:translate(-50%);display:flex;flex-direction:column;gap:.5rem;padding:.625rem .75rem .75rem;border:1px solid var(--rule-strong);border-radius:1rem;background:var(--paper);box-shadow:0 8px 24px #0e467324}.picker-head{display:flex;align-items:center;gap:.25rem}.picker-head h3{flex:1;margin:0;text-align:center;font:400 1.25rem/1.75rem var(--hand)}.picker-week-head,.picker-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.picker-week-head span{text-align:center;font-size:.75rem;line-height:1.125rem;font-weight:700;color:var(--ink-soft)}.picker-week{border-radius:.625rem}.picker-week[data-chosen]{background:var(--accent)}.picker-week button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:44px;padding:0;border:2px solid transparent;border-radius:.625rem;background:none;color:var(--ink);font-size:.9375rem;font-weight:600;line-height:1.125rem;cursor:pointer}.picker-week button[data-off]{color:var(--ink-soft)}.picker-week button[data-today]{border-color:var(--accent);font-weight:800}.picker-week button[aria-pressed=true]{background:var(--accent);color:var(--on-accent);font-weight:800}.picker-week button[data-today][aria-pressed=true]{border-color:var(--on-accent)}.picker-dot{width:4px;height:4px;border-radius:2px;background:transparent}.picker-dot[data-on]{background:var(--accent)}[aria-pressed=true]>.picker-dot[data-on]{background:var(--on-accent)}.picker-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.375rem}.picker-months button{min-height:48px;border:2px solid var(--rule-strong);border-radius:.625rem;background:none;color:var(--ink);font-size:.9375rem;font-weight:700;cursor:pointer}.picker-months button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.picker-hint{margin:0;font-size:.75rem;line-height:1.0625rem;color:var(--ink-soft)}.picker-actions{display:flex;justify-content:flex-end;gap:.5rem}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .875rem;list-style:none;margin:0 0 1rem;padding:0;font-size:.8125rem;line-height:1.25rem;color:var(--ink-soft)}.legend-cancel,.legend-change{display:inline-block;padding:0 .4375rem;border-radius:4px;font-weight:700}.legend-cancel{background:var(--cancel-wash);color:var(--cancel)}.legend-change{background:var(--highlight);color:var(--highlight-ink)}.legend-public,.legend-school{display:inline-block;padding:0 .5rem;border:1.5px solid var(--accent);border-radius:999px;font-size:.75rem;font-weight:700}.legend-public{background:var(--accent);color:var(--on-accent)}.legend-school{border-style:dashed;color:var(--accent-ink)}.page{overflow:hidden;background:var(--paper);border:1px solid var(--rule);border-radius:.875rem;box-shadow:var(--shadow)}.day{display:flex;border-bottom:1px solid var(--rule)}.day:last-child{border-bottom:0}.margin{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none;width:58px;margin:0;padding:.75rem 0 .625rem;border-right:2px solid var(--margin);font-weight:500}.margin-date{font:400 1.6875rem/1.875rem var(--hand)}.margin-weekday{font-size:.75rem;line-height:1rem;color:var(--ink-soft)}.margin .today-pill{margin-top:.25rem;font-size:.6875rem;line-height:1rem}.day[aria-current=date] .margin{background:var(--accent-wash)}.day[aria-current=date] .margin-date{color:var(--accent-ink)}.day-body{flex:1;min-width:0;padding:.25rem .75rem}.day-hint{margin:0;padding:.875rem 0 .375rem;font-size:.8125rem;line-height:1.125rem;color:var(--ink-soft)}.holiday{list-style:none;margin:.375rem 0 .125rem;padding:0;display:grid;gap:.25rem}.holiday li{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.375rem .5rem;border-radius:.5rem;background:var(--holiday-wash);color:var(--holiday-ink);font-size:.8125rem;line-height:1.125rem}.holiday li[data-kind=school]{border:1px dashed var(--accent);background:var(--accent-wash);color:var(--accent-ink)}.holiday-chip{padding:0 .4375rem;border:1.5px solid var(--accent);border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:.75rem;font-weight:700;line-height:1.125rem}[data-kind=school]>.holiday-chip{border-style:dashed;background:none;color:var(--accent-ink)}.holiday-name{font-weight:600}.holiday-inline{display:contents}.holiday-inline li{display:inline-flex;padding:0;border:0!important;background:none!important}.lessons{list-style:none;margin:0;padding:0}.lessons-none{margin:0;padding:.875rem 0;font-size:.875rem;line-height:1.25rem;color:var(--ink-soft)}.lesson{border-bottom:1px solid var(--rule)}.lesson:last-child{border-bottom:0}.lesson-row{display:flex;align-items:flex-start;gap:.625rem;min-height:44px;padding:.6875rem 0;color:var(--ink);text-decoration:none}.lesson-time{display:flex;flex-direction:column;flex:none;width:62px;font-variant-numeric:tabular-nums}.lesson-time b{font-size:.9375rem;line-height:1.3125rem;font-weight:800}.lesson-time span{font-size:.75rem;line-height:1rem;font-weight:700}.lesson-body{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.lesson-name{font-size:1rem;line-height:1.375rem;font-weight:700}a.lesson-row:hover .lesson-name{text-decoration:underline;text-underline-offset:3px}.lesson-note{font-size:.8125rem;line-height:1.25rem}.lesson-badge{display:inline-block;padding:0 .375rem;border-radius:4px;background:var(--highlight);color:var(--highlight-ink);font-weight:700}.lesson-meta{font-size:.8125rem;line-height:1.125rem;color:var(--ink-soft)}.lesson-meta span{white-space:nowrap}.lesson-meta span+span:before{content:" · "}.lesson-chevron{flex:none;margin-top:3px;color:var(--ink-soft)}.lesson[data-state=cancelled] .lesson-time{color:var(--cancel);text-decoration:line-through}.lesson[data-state=cancelled] .lesson-name,.lesson[data-state=cancelled] .lesson-note{color:var(--cancel)}[data-state=cancelled] .lesson-badge{background:var(--cancel-wash);color:var(--cancel)}.page-day .day-body{padding:.25rem .75rem}@media(min-width:60rem){.page-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto 1fr}.page-week .day{display:grid;grid-row:span 2;grid-template-rows:subgrid;min-width:0;border-bottom:0;border-right:1px solid var(--rule)}.page-week .day:last-child{border-right:0}.page-week .margin{flex-direction:row;align-items:baseline;gap:.5rem;width:auto;padding:.75rem .75rem .5rem;border-right:0;border-bottom:2px solid var(--margin)}.page-week .margin-date{font-size:1.875rem;line-height:2.125rem}.page-week .margin-weekday{font-size:.875rem}.page-week .margin .today-pill{margin:0 0 0 auto;padding:.125rem .5625rem;font-size:.75rem;line-height:1.125rem}.page-week .day[aria-current=date] .margin{background:none}.page-week .day[aria-current=date]{background:var(--accent-wash)}.page-week .day-body{padding:.375rem .625rem .875rem}.page-week .lesson-row{flex-direction:column;gap:3px;padding:.625rem .25rem}.page-week .lesson-time{flex-direction:row;width:auto;font-size:.8125rem;line-height:1.125rem}.page-week .lesson-time b,.page-week .lesson-time span{font-size:.8125rem;line-height:1.125rem;font-weight:800}.page-week .lesson-name{font-size:.9375rem;line-height:1.3125rem}.page-week .lesson-meta{font-size:.75rem}.page-week .lesson-chevron{display:none}.page-day{max-width:60rem}.page-day .margin{width:96px;padding:.875rem 0;background:var(--accent-wash)}.page-day .margin-date{font-size:2.5rem;line-height:2.75rem;color:var(--accent-ink)}.page-day .margin-weekday{font-size:.8125rem;line-height:1.125rem}.page-day .day-body{padding:.375rem 1.5rem .625rem}.page-day .lesson-row{gap:.875rem;padding:1rem 0}.page-day .lesson-time{flex-direction:row;width:10.625rem}.page-day .lesson-time b,.page-day .lesson-time span{font-size:1.0625rem;line-height:1.375rem;font-weight:800}.page-day .lesson-body{flex-direction:column}.page-day .lesson-name{font-size:1.125rem;line-height:1.5rem}.page-day .lesson-note{font-size:.875rem}}.margin-card{display:flex;overflow:hidden;background:var(--paper);border:1px solid var(--rule);border-radius:.875rem;box-shadow:var(--shadow)}.margin-card-line{flex:none;width:44px;border-right:2px solid var(--margin)}.margin-card>div{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.75rem;flex:1;min-width:0;padding:1.75rem 1.125rem 1.5rem}.margin-card-row{display:flex}.empty p{flex-basis:100%;margin:0;font:400 1.25rem/1.75rem var(--hand)}.month-hint{margin:0 0 .625rem;font-size:.8125rem;line-height:1.125rem;color:var(--ink-soft)}.month{overflow:hidden;background:var(--paper);border:1px solid var(--rule);border-radius:.875rem;box-shadow:var(--shadow)}.month-head,.month-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-head{border-bottom:2px solid var(--margin)}.month-head span{padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:700;color:var(--ink-soft)}.month-week{border-bottom:1px solid var(--rule)}.month-week:last-child{border-bottom:0}.month-cell{display:flex;flex-direction:column;gap:3px;min-width:0;min-height:150px;padding:.25rem .375rem .5rem;border-right:1px solid var(--rule)}.month-cell:last-child{border-right:0}.month-cell[data-off]{background:var(--bg);opacity:.5}.month-cell[data-holiday=public]{background:var(--holiday-wash)}.month-cell[data-holiday=school]{background:var(--accent-wash)}.month-cell[aria-current=date]{background:var(--accent-wash);outline:2px solid var(--accent);outline-offset:-2px}.month-cell-head{display:flex;align-items:center;gap:.375rem}.month-date{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin-left:-.375rem;border:0;background:none;color:inherit;font:400 1.375rem/1 var(--hand);cursor:pointer}[aria-current=date] .month-date{color:var(--accent-ink)}.month-cell .holiday{margin:0}.month-cell .holiday li{padding:0;border:0;background:none;font-size:.75rem;line-height:1.0625rem;color:inherit}.month-cell .holiday-chip{padding:0 .375rem;line-height:1.0625rem}.month-lessons{list-style:none;margin:0;padding:0;display:grid;gap:3px}.month-lesson{display:flex;flex-direction:column;justify-content:center;min-height:44px;padding:3px 5px;border-radius:.375rem;color:var(--ink);font-size:.8125rem;line-height:1.125rem;text-decoration:none}.month-lessons [data-state=changed] .month-lesson{background:var(--highlight-wash)}.month-lessons [data-state=cancelled] .month-lesson{color:var(--cancel)}.month-lessons [data-state=cancelled] .month-time{text-decoration:line-through}.month-time{font-size:.75rem;font-weight:800;font-variant-numeric:tabular-nums}.month-name{font-weight:700;overflow-wrap:anywhere}.month-lesson small{font-size:.75rem;color:var(--ink-soft)}.month-note{font-size:.75rem;line-height:1.0625rem}.month[data-phone]{padding:.5rem .25rem .75rem}.month[data-phone] .month-head{gap:2px;margin-bottom:.25rem;padding-bottom:.375rem}.month[data-phone] .month-head span{padding:0;text-align:center;font-size:.75rem;line-height:1.125rem}.month[data-phone] .month-week{gap:2px;margin-bottom:2px;border:0}.month[data-phone] .month-cell{gap:1.5px;min-height:60px;padding:2px 1px 3px;overflow:hidden;border:1.5px solid var(--rule);border-radius:.375rem;background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.month[data-phone] .month-cell[data-off]{border:0;background:var(--bg);opacity:1;cursor:default}.month[data-phone] .month-cell[data-holiday=public]{border-color:var(--holiday-wash);background:var(--holiday-wash)}.month[data-phone] .month-cell[data-holiday=school]{border:1.5px dashed var(--accent);background:var(--accent-wash)}.month[data-phone] .month-cell[aria-current=date]{border-color:var(--accent);background:var(--accent-wash);outline:0}.month[data-phone] .month-date{display:block;min-width:0;min-height:0;margin:0;text-align:center;font:800 .75rem/.9375rem var(--body)}.month-holiday-name{overflow:hidden;text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:8px;line-height:10px;font-weight:700;color:var(--holiday-ink)}.month-chip{display:flex;flex-direction:column;padding:1px 1px 2px;border:1px solid var(--rule-strong);border-radius:3px;background:var(--paper);font-size:8.5px;line-height:10.5px}.month-chip b{font-weight:700;overflow-wrap:anywhere}.month-chip .month-chip-time{font-variant-numeric:tabular-nums}.month-chip>span{color:var(--ink-soft)}.month-chip[data-state=changed]{border-color:var(--highlight);background:var(--highlight);color:var(--highlight-ink)}.month-chip[data-state=changed]>span{color:inherit}.month-chip[data-state=cancelled]{border-color:var(--cancel-wash);background:var(--cancel-wash);color:var(--cancel)}.month-chip[data-state=cancelled]>span{color:inherit}.month-chip[data-state=cancelled] .month-chip-time{text-decoration:line-through}.sheet{width:100%;max-width:32rem;max-height:80dvh;margin:auto auto 0;padding:.5rem 1rem 1.375rem;border:0;border-radius:1.25rem 1.25rem 0 0;background:var(--paper);color:var(--ink);box-shadow:0 -8px 30px #00000040;overflow:auto}.sheet[open]{display:flex;flex-direction:column;gap:.5rem}.sheet::backdrop{background:#0a1e3273}.sheet-grip{align-self:center;flex:none;width:40px;height:4px;border-radius:2px;background:var(--rule)}.sheet-head{display:flex;align-items:center;gap:.5rem;padding-bottom:.5rem;border-bottom:2px solid var(--margin)}.sheet-head h2{display:flex;align-items:baseline;gap:.625rem;flex:1;margin:0;font-size:1rem;font-weight:500}.sheet-head .margin-date{font-size:2.125rem;line-height:2.375rem}.sheet-close{border-radius:50%;background:none}.sheet .holiday{margin:0}.sheet-more{flex:none;width:100%;min-height:48px;margin-top:.375rem;font-size:1rem;border-radius:.75rem}@media(prefers-reduced-motion:no-preference){.sheet[open]{animation:sheet-up .18s ease-out}@keyframes sheet-up{0%{transform:translateY(1.5rem);opacity:0}}}.course{display:flex;flex-direction:column;gap:.875rem;max-width:57.5rem;margin:0 auto;padding-top:1.5rem}.back{align-self:flex-start;display:inline-flex;align-items:center;gap:.25rem;min-height:44px;margin-left:-4px;padding:0 4px;color:var(--accent-ink);font-size:.9375rem;font-weight:700;text-decoration:none}.course-name{margin:0;font:400 2.5rem/1.2 var(--hand)}.facts{display:flex;flex-wrap:wrap;gap:.5rem;margin:0}.facts div{display:flex;align-items:baseline;gap:.375rem;padding:.375rem .75rem;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper)}.facts dt{font-size:.75rem;line-height:1.125rem;color:var(--ink-soft)}.facts dd{margin:0;font-size:.9375rem;line-height:1.25rem;font-weight:700}.course-pager{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem;padding-top:.375rem}.course-count{margin:0 0 0 auto;padding:.25rem .75rem;border-radius:999px;background:var(--accent-wash);color:var(--accent-ink);font-size:.9375rem;font-weight:700}.course-none{margin:0;padding:1.625rem 1rem;font:400 1.25rem/1.75rem var(--hand);color:var(--ink-soft)}.course-foot{margin:0;font-size:.8125rem;line-height:1.1875rem;color:var(--ink-soft)}.course-missing h1{flex-basis:100%;margin:0;font:400 1.5rem/2rem var(--hand)}.course-missing .btn{min-height:48px;padding:0 1.25rem;border-radius:.75rem;font-size:1rem}.month-list{list-style:none;margin:0;padding:0}.month-list>li{display:flex;border-bottom:1px solid var(--rule)}.month-list>li:last-child{border-bottom:0}.month-list-n{flex:none;width:44px;padding-top:.75rem;text-align:center;border-right:2px solid var(--margin);font:400 1.375rem/1.625rem var(--hand);color:var(--ink-soft)}.month-list-body{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .875rem;flex:1;min-width:0;padding:.75rem .875rem}.month-list-date{display:flex;align-items:baseline;gap:.375rem;width:5.75rem}.month-list-date b{font-size:1rem;line-height:1.375rem;font-weight:800;font-variant-numeric:tabular-nums}.month-list-date small{font-size:.875rem;color:var(--ink-soft)}.month-list-time{width:9.375rem;font-size:.9375rem;line-height:1.375rem;font-weight:700;font-variant-numeric:tabular-nums}.month-list-room{width:4.375rem;font-size:.875rem;line-height:1.375rem;color:var(--ink-soft)}.month-list-tags{display:flex;flex-wrap:wrap;gap:.375rem;flex:1 1 12.5rem;min-width:0}.month-list-tags:empty{display:none}.month-list-note{display:inline-block;padding:1px .5rem;border-radius:4px;background:var(--highlight);color:var(--highlight-ink);font-size:.8125rem;line-height:1.1875rem;font-weight:700}.month-list [data-state=cancelled] .month-list-n,.month-list [data-state=cancelled] .month-list-date b{color:var(--cancel)}.month-list [data-state=cancelled] .month-list-note{background:var(--cancel-wash);color:var(--cancel)}.month-list-today-mark{display:flex;align-items:center;gap:.5rem;flex:1;padding:.375rem .875rem;color:var(--accent-ink);font-size:.75rem;font-weight:700}.month-list-today .month-list-n{padding:0}.month-list-today-mark b{padding:1px .5rem;border-radius:999px;background:var(--accent);color:var(--on-accent)}.month-list-today-mark i{flex:1;height:0;border-top:1.5px dashed var(--accent)}.login{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;min-height:100dvh;padding:0 1.5rem;text-align:center}.login-box{display:flex;width:112px;height:112px;overflow:hidden;border:1px solid var(--rule);border-radius:1.625rem;background:#fff}.login-mark{width:100%;height:100%;object-fit:contain}.login-ms{margin:2px 0 0;font-size:.8125rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--coral-ink)}.login-ms b{color:var(--brand-ink)}.login-purpose{margin:.25rem 0 .5rem;font-size:1.0625rem;font-weight:800}.login-hint{max-width:18.75rem;margin:0;font-size:.8125rem;line-height:1.25rem;color:var(--ink-soft)}.google-button{min-height:44px}.login .error-note{width:100%;max-width:21.25rem;font-weight:800}@media(max-width:59.99rem){.shell{padding:0 .625rem 1.5rem}.masthead{min-height:64px;padding:0 .875rem}.brand-box{width:40px;height:40px}.brand-zh{font-size:1.1875rem}.colophon>div{padding:1.125rem 1rem 1.75rem}.notices-slot,.announcements{padding-top:.75rem}.notices-margin{width:44px}.notices-body{padding:.625rem .75rem .125rem}.notices time{width:3.625rem}.notices details p{padding-left:0}.filters{padding:1rem .125rem .875rem}.timetable-toolbar{padding:.875rem .125rem}.pager-title-button{min-width:10.625rem}.pager{position:relative}.picker-anchor{position:static}.picker{left:0;transform:none}.views{flex:1 1 100%;margin-left:0}.legend{padding:0 .125rem}.course{padding-top:.5rem}.course-name{font-size:2rem}.month-list-date{width:5.25rem}.month-list-time{width:8rem}.month-list-tags{flex-basis:100%}}:root{--bg: #EEF4F8;--paper: #FFFFFF;--ink: #14304A;--ink-soft: #4D6478;--accent: #1B6E9C;--accent-ink: #1B6E9C;--on-accent: #FFFFFF;--accent-wash: #EEF7FC;--rule: #D3E6F2;--rule-strong: #C3D8E6;--margin: #F59AAB;--brand: #1F7FB3;--coral: #D63F5E;--brand-ink: #1B6E9C;--coral-ink: #C2304F;--cancel: #C0185A;--cancel-wash: #FDE8F0;--highlight: #FFE45C;--highlight-ink: #14304A;--highlight-edge: #E2B200;--highlight-wash: #FFF8CC;--holiday-wash: #D2E8F7;--holiday-ink: #0E4673;--warn: #8A4B00;--warn-soft: #FFF3D9;--ok: #16613B;--ok-soft: #E3F3E9;--mute-soft: #EDF1F4;--shadow: 0 1px 3px rgba(14, 70, 115, .08);--focus: #1B6E9C;--hand: "ZCOOL KuaiLe", "Yuanti SC", "YouYuan", var(--body);--body: Nunito, "Noto Sans SC", system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--margin-w: 4.75rem;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0A1520;--paper: #101E2C;--ink: #E8EFF6;--ink-soft: #A3B6C7;--accent: #6CC3EE;--accent-ink: #6CC3EE;--on-accent: #0A1520;--accent-wash: #14304A;--rule: #22384D;--rule-strong: #2C455C;--margin: #9B4256;--brand: #6CC3EE;--coral: #FF8FA6;--brand-ink: #6CC3EE;--coral-ink: #FF8FA6;--cancel: #FF8FB0;--cancel-wash: #3B1726;--highlight: #F2DE4B;--highlight-ink: #1D1A00;--highlight-edge: #F2DE4B;--highlight-wash: #2E2A0E;--holiday-wash: #16405F;--holiday-ink: #D9EEFB;--warn: #F6C37F;--warn-soft: #33240E;--ok: #8FE0B5;--ok-soft: #12301F;--mute-soft: #182A3B;--shadow: none;--focus: #6CC3EE;color-scheme:dark}}:root:has(.staff){--bg: #F3F6F9;--ink: #152B3F;--ink-soft: #526679;--rule: #E1E8EE;--rule-strong: #C5D3DE;--accent-wash: #E7F2FA;--cancel: #B4233C;--cancel-wash: #FCEBEE}@media(prefers-color-scheme:dark){:root:has(.staff){--bg: #0B1621;--paper: #111F2D;--ink: #E6EEF5;--ink-soft: #A6B8C8;--rule: #1F3346;--rule-strong: #33506A;--accent-wash: #14324A;--cancel: #FF8FA3;--cancel-wash: #3A1620;--on-accent: #08141E}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 var(--body);-webkit-text-size-adjust:100%}a{color:inherit}button,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.login{max-width:22rem;margin:12vh auto 2rem;padding:0 1rem;text-align:center;display:grid;justify-items:center;gap:.5rem}.login-mark{width:4rem;height:auto}.login-title{margin:0;font:1.875rem/2.375rem var(--hand);color:var(--coral)}.login-title b{font-weight:inherit;color:var(--brand)}.login-purpose{margin:.5rem 0 1rem;color:var(--ink)}.login-hint{font-size:.875rem}.google-button{min-height:44px;font-weight:700}.error-note{color:var(--cancel);background:var(--cancel-wash);border-radius:.5rem;padding:.5rem .75rem}.staff{max-width:74rem;margin:0 auto;padding:0 1rem 2rem}.staff-loading{padding:2rem 1rem}.staff-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.75rem 0;border-bottom:1px solid var(--rule)}.staff-brand{font:1.25rem/1.2 var(--hand);color:var(--ink)}.staff-brand b{font-weight:inherit;color:var(--brand);margin-right:.25rem}.staff-account{display:flex;gap:.75rem;align-items:center;color:var(--ink-soft)}.staff-nav{display:flex;flex-wrap:wrap;gap:.25rem;margin:.75rem 0 1.25rem}.staff-nav a{text-decoration:none;padding:.35rem .8rem;border-radius:999px;color:var(--ink-soft)}.staff-nav a.active{color:var(--ink);background:var(--accent-wash)}.soon-tag{margin-left:.35rem;font-size:.7rem;color:var(--ink-soft)}.staff-title{font-size:1.4rem;margin:.5rem 0;color:var(--ink)}.soon{padding:2rem 0;color:var(--ink-soft)}.account-table{width:100%;border-collapse:collapse}.account-table th,.account-table td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--rule)}.account-table th{font-size:.8rem;color:var(--ink-soft);font-weight:400}.account-table tr.inactive td{color:var(--ink-soft);text-decoration:line-through}.account-table tr.inactive td:last-child{text-decoration:none}@media(max-width:40rem){.account-table thead{display:none}.account-table tr{display:grid;grid-template-columns:1fr auto;padding:.5rem 0;border-bottom:1px solid var(--rule)}.account-table td{border:0;padding:.15rem .25rem}}.admin-attendance-list,.admin-corrections{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}.admin-attendance-list li{display:grid;grid-template-columns:1fr auto auto;gap:.75rem;align-items:center;padding:.7rem;border:1px solid var(--rule);border-radius:.65rem}.admin-attendance-list li>span{display:grid}.admin-attendance-list small{color:var(--ink-soft)}.admin-attendance-list em{font-style:normal;font-size:.8rem;color:var(--accent-ink)}.admin-attendance-list li[data-state=overdue]{border-color:var(--cancel)}.admin-attendance-detail{max-width:48rem}.admin-corrections li{display:grid;gap:.6rem;padding:.85rem;border:1px solid var(--rule);border-radius:.7rem}.admin-corrections header{display:flex;flex-wrap:wrap;gap:.4rem 1rem}.admin-corrections header small{margin-left:auto;color:var(--ink-soft)}.correction-change{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem;border-radius:.5rem;background:var(--accent-wash)}.admin-corrections p{margin:0}.admin-corrections button{min-height:44px;padding:0 1rem;border:1px solid var(--accent);border-radius:.625rem;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:700}.admin-corrections button.danger{background:var(--paper);border-color:var(--cancel);color:var(--cancel)}@media(max-width:40rem){.admin-attendance-list li{grid-template-columns:1fr auto}.admin-attendance-list li .button{grid-column:1 / -1;justify-content:center}.admin-corrections header small{width:100%;margin-left:0}}.account-table select{min-height:44px;padding:0 .4rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit}.area-switch{text-decoration:none;color:var(--accent-ink);background:var(--accent-wash);border-radius:999px;padding:.25rem .75rem}.staff-teacher{max-width:52rem}.teacher-nav{display:flex;gap:.25rem;margin:.75rem 0 1.25rem;overflow-x:auto}.teacher-nav a{min-height:44px;display:inline-flex;align-items:center;padding:0 .9rem;border-radius:999px;text-decoration:none;white-space:nowrap;color:var(--ink-soft)}.teacher-nav a.active{color:var(--ink);background:var(--accent-wash)}.teacher-section-title{margin:1.2rem 0 .4rem;font-size:.9rem;color:var(--ink-soft);font-weight:500}.teacher-session-list{display:grid;gap:.65rem}.teacher-session-card{display:grid;grid-template-columns:3.4rem 1fr auto;align-items:center;gap:.75rem;padding:.85rem;border:1px solid var(--rule);border-radius:.85rem;background:var(--paper)}.teacher-session-card[data-state=open],.teacher-session-card[data-state=submitted_open]{border-color:var(--accent);box-shadow:inset 4px 0 0 var(--accent)}.teacher-session-card[data-state=cancelled]{opacity:.65;background:var(--cancel-wash)}.teacher-session-date{display:grid;text-align:center}.teacher-session-date b{font-size:1.1rem}.teacher-session-date span,.teacher-session-main p{color:var(--ink-soft);font-size:.8rem}.teacher-session-main h2,.teacher-session-main p{margin:0}.teacher-session-main h2{font-size:1rem}.attendance-state{display:inline-block;margin-top:.25rem;font-size:.75rem;color:var(--accent-ink)}.teacher-action{min-height:44px;display:inline-flex;align-items:center;padding:0 .9rem;border-radius:.625rem;background:var(--accent);color:var(--on-accent);text-decoration:none;white-space:nowrap;font-weight:700}.teacher-action.secondary{background:var(--accent-wash);color:var(--accent-ink)}.teacher-empty{padding:2rem 1rem;border-radius:.8rem;background:var(--accent-wash);color:var(--ink-soft);text-align:center}.attendance-head{display:flex;justify-content:space-between;align-items:end;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--rule)}.attendance-head h1,.attendance-head p{margin:0}.attendance-head p{color:var(--ink-soft)}.attendance-head>strong{white-space:nowrap;color:var(--accent-ink)}.success-note{padding:.6rem .75rem;border-radius:.625rem;background:var(--ok-soft);color:var(--ok)}.mark-all{min-height:44px;margin:.8rem 0;padding:0 1rem;border:1px solid var(--accent);border-radius:.625rem;background:var(--accent-wash);color:var(--accent-ink);font:inherit;font-weight:700}.attendance-roster{display:grid;gap:.75rem;padding-bottom:6rem}.attendance-student{position:relative;display:grid;gap:.7rem;padding:.9rem;border:1px solid var(--rule);border-radius:.8rem}.student-name{display:flex;align-items:center;gap:.6rem}.student-name>span{width:1.8rem;height:1.8rem;display:grid;place-items:center;border-radius:50%;background:var(--accent-wash);color:var(--accent-ink)}.status-options,.mode-options{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem}.mode-options{grid-template-columns:auto 1fr 1fr;align-items:center}.status-options button,.mode-options button,.correction-link{min-height:44px;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;font-weight:700}.status-options button[aria-pressed=true],.mode-options button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--accent-ink);font-weight:600}.remarks{display:grid;gap:.25rem;color:var(--ink-soft);font-size:.8rem}.remarks textarea{min-height:3.2rem;resize:vertical;padding:.5rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;font:inherit}.correction-link{justify-self:start;padding:0 .85rem;color:var(--accent-ink)}.correction-state{font-size:.8rem;color:var(--ink-soft)}.correction-state[data-decision=pending]{color:var(--warn)}.correction-state[data-decision=approved]{color:var(--ok)}.correction-state[data-decision=rejected]{color:var(--cancel)}.correction-form textarea{min-height:5rem;padding:.5rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;font:inherit}.attendance-submit{position:sticky;bottom:0;z-index:5;display:flex;align-items:end;justify-content:flex-end;gap:.75rem;padding:.75rem;background:color-mix(in srgb,var(--paper) 94%,transparent);border-top:1px solid var(--rule);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.attendance-submit label{flex:1;display:grid;gap:.2rem;font-size:.8rem;color:var(--ink-soft)}.attendance-submit input{min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;font:inherit}.attendance-submit button{min-height:44px;padding:0 1.1rem;border:0;border-radius:.625rem;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:700}.correction-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.correction-list li{display:grid;grid-template-columns:1fr auto;gap:.3rem 1rem;padding:.8rem;border:1px solid var(--rule);border-radius:.7rem}.correction-list li div{display:flex;gap:.75rem}.correction-list li p,.correction-list li small{grid-column:1 / -1;margin:0}.correction-list [data-decision=pending]{color:var(--warn)}.correction-list [data-decision=approved]{color:var(--ok)}.correction-list [data-decision=rejected]{color:var(--cancel)}@media(max-width:40rem){.staff{padding-inline:.75rem}.staff-account{gap:.4rem;font-size:.8rem}.teacher-session-card{grid-template-columns:3rem 1fr}.teacher-action{grid-column:1 / -1;justify-content:center}.status-options{grid-template-columns:1fr 1fr}.attendance-submit{margin-inline:-.75rem;flex-wrap:wrap}.attendance-submit label{flex-basis:100%}}.sub-tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin:0 0 1rem;border-bottom:1px solid var(--rule)}.sub-tabs a{text-decoration:none;padding:.45rem .9rem;color:var(--ink-soft);border-bottom:2px solid transparent;margin-bottom:-1px}.sub-tabs a.active{color:var(--ink);border-bottom-color:var(--accent)}.timetable-admin select,.timetable-admin input,.modal input,.modal select,.modal textarea{min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit}.timetable-admin button:where(:not(.picker button,.pager-title-button)),.modal button{min-height:44px;padding:0 .9rem;border:1px solid var(--accent);border-radius:.625rem;background:none;color:var(--accent-ink);font:inherit;cursor:pointer;font-weight:700}.timetable-admin button.primary,.modal button[type=submit],.modal-actions button:last-child{background:var(--accent);color:var(--on-accent)}.modal button.secondary{background:none;color:var(--accent-ink)}.timetable-admin button:disabled,.modal button:disabled{opacity:.6;cursor:default}.modal-backdrop{position:fixed;inset:0;background:#0e467359;display:grid;place-items:center;padding:1rem;z-index:50}.modal{width:min(32rem,100%);max-height:90vh;overflow:auto;background:var(--paper);border-radius:.9rem;padding:1.25rem;display:grid;gap:.75rem;box-shadow:0 12px 40px #0003}.modal h2{font-size:1.1rem;margin:0;color:var(--ink)}.modal label{display:grid;gap:.25rem;font-size:.875rem;color:var(--ink-soft)}.modal ul{margin:0;padding-left:1.2rem}.modal.save-errors h2{color:var(--cancel)}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.modal.modal-wide{width:min(56rem,100%)}.modal button.modal-close{position:sticky;top:-.75rem;z-index:2;justify-self:end;display:grid;place-items:center;width:2.75rem;min-height:2.75rem;height:2.75rem;margin:-.75rem -.5rem -3rem 0;padding:0;border:0;border-radius:.625rem;background:var(--paper);color:var(--ink-soft);cursor:pointer}.modal button.modal-close:hover{background:var(--accent-wash);color:var(--ink)}.modal-close+h2{margin-top:-.75rem;padding-right:2.5rem}.room-grid-panel{display:grid;gap:.5rem;min-width:0}.room-grid-panel h4{margin:0;font-size:.9rem;color:var(--ink);display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem}.room-grid-panel h4 small{font-weight:400;color:var(--ink-soft)}.room-grid-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper)}.room-grid{display:grid;position:relative}.room-grid-corner,.room-grid-room{position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--rule-strong)}.room-grid-room{grid-row:1;padding:.4rem .5rem;font-size:.8rem;color:var(--ink);text-align:center;white-space:nowrap}.room-grid-corner{grid-column:1;grid-row:1;position:sticky;left:0;z-index:3}.room-grid-time{grid-column:1;position:sticky;left:0;z-index:2;background:var(--paper);font-size:.72rem;color:var(--ink-soft);padding:0 .35rem;transform:translateY(-.5em);font-variant-numeric:tabular-nums}.room-grid-time[data-first]{transform:none}.room-grid .room-grid-free{justify-self:stretch;align-self:stretch;width:auto;min-width:0;min-height:0;padding:0;border:0;border-radius:0;border-top:1px dashed var(--rule);border-left:1px solid var(--rule);background:none;cursor:pointer}.room-grid .room-grid-free:hover,.room-grid .room-grid-free:focus-visible{background:var(--accent-wash);outline:none}.room-grid-booking,.room-grid-draft{margin:1px 2px;padding:.15rem .35rem;border-radius:.4rem;display:flex;flex-direction:column;overflow:hidden;font-size:.72rem;line-height:1.25;z-index:1;min-width:0}.room-grid-booking{background:var(--mute-soft, var(--accent-wash));color:var(--ink);border-left:3px solid var(--rule-strong)}.room-grid-booking b,.room-grid-draft b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-grid-booking small,.room-grid-draft small{color:var(--ink-soft)}.room-grid-booking[data-same-teacher]{border-left-color:var(--warn);background:var(--warn-soft)}.room-grid-draft{z-index:2;pointer-events:none;background:var(--accent-wash);border:2px solid var(--accent);color:var(--accent-ink)}.room-grid-draft[data-clash]{background:var(--cancel-wash);border-color:var(--cancel);color:var(--cancel)}.room-grid-ok{margin:0;font-size:.85rem;color:var(--ok);font-weight:700}.room-grid-unroomed{margin:0;font-size:.8rem}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.admin-list{list-style:none;margin:.5rem 0;padding:0}.admin-list li{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--rule)}.admin-list li>span{display:grid;gap:.15rem}.course-count{margin-left:.5rem;padding:.05rem .45rem;border-radius:999px;background:var(--accent-wash);color:var(--accent-ink);font-size:.75rem;font-weight:700}.admin-list small{color:var(--ink-soft)}.timetable-admin a.button{display:inline-flex;align-items:center;min-height:44px;padding:0 .9rem;border:1px solid var(--accent);border-radius:.625rem;color:var(--accent-ink);text-decoration:none;white-space:nowrap;font-weight:700}.timetable-admin a.button.primary{background:var(--accent);color:var(--on-accent)}.admin-form{display:grid;gap:.8rem;max-width:40rem;margin:.75rem 0 1.5rem}.admin-form label{display:grid;gap:.25rem;font-size:.875rem;color:var(--ink-soft)}.admin-form fieldset{border:1px solid var(--rule);border-radius:.6rem;padding:.6rem .8rem;display:grid;gap:.6rem}.admin-form legend{font-size:.875rem;color:var(--ink-soft);padding:0 .3rem}.check-grid{display:flex;flex-wrap:wrap;gap:.4rem 1rem}.admin-form label.check,.check-grid label.check{display:flex;align-items:center;gap:.35rem;color:var(--ink)}.admin-form .check input{min-height:0;width:1.05rem;height:1.05rem}.admin-form button{justify-self:start}.course-editor h2{font-size:1.2rem;margin:.5rem 0;color:var(--ink)}.weekly-times h3{font-size:1rem;color:var(--ink)}@media(max-width:40rem){.field-row{grid-template-columns:1fr}.admin-list li{flex-direction:column;align-items:flex-start}}.pill-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.pill-tabs button[aria-selected=true]{background:var(--accent-wash);color:var(--ink);border-color:var(--accent-wash)}.row-actions{display:flex;flex-wrap:wrap;gap:.4rem}.admin-form textarea{min-height:7rem;padding:.5rem .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit}.admin-form.inline{max-width:28rem}.toolbar .check{display:flex;align-items:center;gap:.35rem;color:var(--ink-soft)}.student-editor>h2{font-size:1.2rem;margin:.5rem 0;color:var(--ink)}.student-editor h3{font-size:1rem;color:var(--ink);margin-top:1.5rem}.danger-zone{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--rule)}.danger-zone button{border-color:var(--cancel);color:var(--cancel)}.class-list{margin:.5rem 0;padding-left:1.5rem}.class-list li{padding:.35rem 0;border-bottom:1px solid var(--rule)}.toolbar-date{display:inline-flex;align-items:center;gap:.5rem;color:var(--ink-soft);font-size:.875rem;white-space:nowrap}.student-import>h2{margin:.5rem 0;color:var(--ink);font-size:1.2rem}.student-editor>h2{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem}.section-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:1.5rem}.section-head h3{margin:0}.student-import h3{font-size:1rem;color:var(--ink);margin-top:1.5rem}.import-rows{list-style:none;margin:.5rem 0;padding:0}.import-rows li{display:grid;gap:.4rem;padding:.75rem 0;border-bottom:1px solid var(--rule)}.import-rows li.inactive{opacity:.55}.import-row-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.import-rows .check{display:flex;align-items:center;gap:.35rem;color:var(--ink-soft)}.student-import label.upload{display:inline-flex;align-items:center;min-height:44px;padding:0 .9rem;border:1px solid var(--accent);border-radius:.625rem;color:var(--accent-ink);cursor:pointer;font-weight:700}.import-rows li>*{margin:0}.import-rows select{justify-self:start;width:auto;max-width:100%}.import-course{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.error-note.problems{margin:.5rem 0;padding-left:1.75rem}.import-phone{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.makeup-tag{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;background:var(--highlight-wash);border:1px solid var(--highlight-edge);color:var(--ink);font-size:.75rem;font-weight:500}.teacher-session-card[data-state=covered]{opacity:.7}.teacher-session-main .makeup-tag{margin-left:.4rem}.coverage-list{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}.coverage-list>li{display:grid;gap:.5rem;padding:.7rem;border:1px solid var(--rule);border-radius:.65rem}.coverage-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem}.coverage-row>span{display:grid;min-width:0}.coverage-row small{color:var(--ink-soft)}.coverage-actions{display:flex;flex-wrap:wrap;gap:.4rem}.coverage-list button,.inline-action button,.issue-makeup{min-height:44px;padding:0 .85rem;border:1px solid var(--accent);border-radius:.625rem;background:var(--accent);color:var(--on-accent);font:inherit;cursor:pointer;font-weight:700}.coverage-list button.secondary,.inline-action button.secondary,.issue-makeup{background:var(--paper);color:var(--accent-ink)}.coverage-list button:disabled,.inline-action button:disabled{opacity:.5;cursor:not-allowed}.issue-makeup{justify-self:start;margin-top:.4rem}.inline-action{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end;margin-top:.4rem}.inline-action label{display:grid;flex:1 1 14rem;gap:.2rem;font-size:.8rem;color:var(--ink-soft)}.inline-action input:not([type=radio]),.inline-action select{min-height:44px;padding:0 .55rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;width:100%;box-sizing:border-box}.inline-action fieldset{display:flex;flex-wrap:wrap;gap:.75rem;flex:1 1 100%;margin:0;padding:0;border:0}.inline-action fieldset label{display:flex;flex:0 0 auto;align-items:center;gap:.3rem;min-height:44px;font-size:.9rem;color:var(--ink);white-space:nowrap}.inline-action fieldset input[type=radio]{width:1.1rem;height:1.1rem;margin:0}.makeup-flag{margin:0;padding:.4rem .6rem;border-radius:.5rem;background:var(--highlight-wash);color:var(--ink);font-size:.85rem}.makeup-targets{list-style:none;margin:.6rem 0;padding:0;display:grid;gap:.4rem}.makeup-targets label{display:flex;gap:.5rem;align-items:start;padding:.5rem .6rem;border:1px solid var(--rule);border-radius:.5rem;cursor:pointer}.makeup-targets input{margin-top:.25rem}.makeup-targets small{display:block;color:var(--ink-soft)}.student-name .makeup-tag{flex:0 0 auto;width:auto;height:auto;min-width:0;display:inline-block;place-items:initial;border-radius:999px;margin-left:.25rem;padding:.05rem .45rem;background:var(--highlight-wash);border:1px solid var(--highlight-edge);color:var(--ink);font-size:.75rem;font-weight:500;line-height:1.4;white-space:nowrap}.notice-heading{margin:1.25rem 0 .5rem;font-size:1rem}.notice-sessions{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:1.25rem}.notice-sessions h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:0 0 .5rem;font-size:1rem}.notice-sessions h2 small{color:var(--ink-soft);font-weight:400}.notice-card{display:grid;gap:.6rem;margin-bottom:.75rem;padding:.75rem;border:1px solid var(--rule);border-radius:.5rem;background:var(--paper);min-width:0}.notice-card[data-status=changed]{border-color:var(--highlight-edge)}.notice-card header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.notice-card header small{color:var(--ink-soft)}.notice-status{padding:.05rem .5rem;border:1px solid var(--rule);border-radius:999px;color:var(--ink-soft);font-size:.75rem}.notice-card[data-status=sent] .notice-status{border-color:var(--accent);color:var(--accent-ink)}.notice-card[data-status=changed] .notice-status{border-color:var(--highlight-edge);background:var(--highlight-wash);color:var(--ink)}.notice-text{margin:0;padding:.6rem;max-height:22rem;overflow:auto;border-radius:.5rem;background:var(--highlight-wash);color:var(--ink);font:inherit;font-size:.875rem;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.notice-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.notice-actions button,.notice-actions .button{min-height:44px;padding:0 1rem;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;text-decoration:none;display:inline-flex;align-items:center;cursor:pointer;font-weight:700}.notice-actions button.primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.notice-actions button:disabled{opacity:.55;cursor:default}.notice-pending{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.notice-pending button{width:100%;min-height:44px;padding:.5rem .75rem;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer;font-weight:700}.notice-pending small{display:block;color:var(--ink-soft)}.notice-picker fieldset{margin:0;padding:0;border:0;min-width:0}.notice-picker legend{padding:0;margin-bottom:.25rem}.notice-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.25rem .75rem}.notice-months label{display:flex;align-items:center;gap:.35rem;min-height:2.25rem}.notice-previews{margin-top:1rem}.notice-reason{display:grid;gap:.25rem;margin-bottom:.75rem}.notice-reason input{min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;min-width:0}.notice-groups{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}.notice-groups li{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem}.notice-groups label{flex:1 1 16rem;display:grid;gap:.25rem;min-width:0}.notice-groups input{min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;min-width:0}.notice-groups button{min-height:44px;padding:0 1rem;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;font-weight:700}.notice-groups button:disabled{opacity:.55;cursor:default}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.staff{display:flex;min-height:100dvh;max-width:none;margin:0;padding:0;font-size:.875rem;line-height:1.45}.staff-column{display:flex;flex-direction:column;flex:1;min-width:0}.staff-main{flex:1;width:100%;max-width:77.5rem;padding:1.25rem 1.5rem 2.5rem}.staff-side{flex:none;width:220px;padding:.875rem .625rem;background:var(--paper);border-right:1px solid var(--rule)}.staff-side-brand{display:flex;align-items:center;gap:.625rem;min-height:44px;padding:0 .375rem;color:var(--ink);text-decoration:none}.staff-logo{display:flex;flex:none;width:34px;height:34px;overflow:hidden;border:1px solid var(--rule);border-radius:.5625rem;background:#fff}.staff-logo img{width:100%;height:100%;object-fit:contain}.staff-brand{font:400 1.3125rem/1.2 var(--hand);color:var(--ink);letter-spacing:0}.staff-nav{display:flex;flex-direction:column;flex-wrap:nowrap;gap:2px;margin:.875rem 0 0}.staff-nav a{display:flex;align-items:center;min-height:44px;padding:0 .75rem;border-radius:.625rem;color:var(--ink);font-size:.9375rem;font-weight:700;text-decoration:none}.staff-nav a.active{background:var(--accent-wash);color:var(--accent-ink);font-weight:800}.staff-header{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem;padding:.5rem 1.5rem;border-bottom:1px solid var(--rule);background:var(--paper)}.staff-header-brand{display:flex;align-items:center;gap:.5rem}.staff-admin .staff-header-brand,.staff-menu-button{display:none}.staff-account{display:flex;align-items:center;gap:.625rem;margin-left:auto;color:var(--ink)}.staff-name small{font-size:inherit;font-weight:500;color:var(--ink-soft)}.staff-name b{font-weight:800}.staff-title{margin:0 0 .75rem;font-size:1.25rem;font-weight:800;color:var(--ink)}.staff-hand-title{margin:0;font:400 1.5rem/1.875rem var(--hand)}.staff-sub{margin:0 0 .75rem;font-size:.8125rem;color:var(--ink-soft)}.sub-tabs{gap:2px;margin:-1.25rem -1.5rem 1.25rem;padding:0 1.25rem}.sub-tabs a{display:flex;align-items:center;min-height:44px;padding:0 .75rem;border-bottom-width:3px;margin-bottom:-1px;font-size:.90625rem;font-weight:700}.sub-tabs a.active{border-bottom-color:var(--accent);color:var(--accent-ink);font-weight:800}.back{color:var(--accent-ink)}.status-tag{display:inline-flex;align-items:center;gap:.25rem;padding:1px .5rem;border:1px solid transparent;border-radius:.375rem;font-size:.78125rem;font-weight:800;line-height:1.25rem;white-space:nowrap}.status-tag[data-tone=danger]{background:var(--cancel);color:var(--paper)}.status-tag[data-tone=danger-soft]{background:var(--cancel-wash);color:var(--cancel)}.status-tag[data-tone=warn]{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.status-tag[data-tone=ok]{background:var(--ok-soft);color:var(--ok)}.status-tag[data-tone=accent]{background:var(--accent-wash);border-color:var(--accent);color:var(--accent-ink)}.status-tag[data-tone=mute]{background:var(--mute-soft);color:var(--ink-soft)}.status-tag[data-tone=line]{border-color:var(--rule-strong);color:var(--ink-soft)}.admin-attendance-list li,.admin-corrections li,.coverage-list>li,.correction-list li,.notice-card,.teacher-session-card,.attendance-student,.makeup-targets label{background:var(--paper);border-radius:.75rem}.account-table,.admin-list,.class-list,.import-rows{background:var(--paper);border-radius:.75rem}.admin-list li,.import-rows li,.class-list li{padding-inline:.875rem}.account-table th{font-weight:800}.admin-attendance-list li[data-state=overdue]{border-left:4px solid var(--cancel);background:var(--cancel-wash)}.only-overdue{min-height:44px;padding:0 1rem;border:1.5px solid var(--cancel);border-radius:.625rem;background:var(--paper);color:var(--cancel);font:inherit;font-weight:800;cursor:pointer}.error-note{border-radius:.625rem;font-weight:700}.teacher-empty{background:var(--paper);border:1px dashed var(--rule-strong)}.danger-zone button{border:1.5px solid var(--cancel);background:none}.notice-status{border-radius:.375rem;font-weight:800}.notice-card[data-status=not_sent] .notice-status{border-color:var(--warn);background:var(--warn-soft);color:var(--warn)}.notice-card[data-status=sent] .notice-status{border-color:transparent;background:var(--ok-soft);color:var(--ok)}.notice-card[data-status=changed]{border-color:var(--cancel)}.notice-card[data-status=changed] .notice-status{border-color:var(--cancel);background:var(--cancel);color:var(--paper)}.notice-text{background:var(--bg)}.notice-actions button.primary{color:var(--on-accent)}.modal{border-radius:.75rem;border-top:6px solid transparent}.modal[data-tone=danger]{border-top-color:var(--cancel)}.modal[data-tone=danger] h2{color:var(--cancel)}.modal[data-tone=warn]{border-top-color:var(--warn)}.modal[data-tone=warn] h2{color:var(--warn)}.modal:not([data-tone]){border-top-width:0}.correction-form{display:grid;gap:.75rem}.correction-form p{margin:0;font-weight:800}.correction-form small{font-weight:500;color:var(--ink-soft)}.correction-form .correction-note{font-size:.75rem;font-weight:500;color:var(--ink-soft)}.correction-status{display:flex;flex-wrap:wrap;gap:.375rem}.modal .correction-status button{flex:1 1 4rem;border-color:var(--rule-strong);background:var(--paper);color:var(--ink)}.modal .correction-status button[aria-checked=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--accent-ink)}.modal .btn-primary{background:var(--accent);color:var(--on-accent)}.overview{display:flex;flex-direction:column;gap:1rem}.overview .staff-title{margin:0}.overview-now{margin:-.75rem 0 0;font-size:.8125rem;color:var(--ink-soft)}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.kpi{display:flex;flex-direction:column;gap:.375rem;min-width:0;padding:.875rem 1rem;border:1.5px solid var(--rule);border-radius:.875rem;background:var(--paper);color:var(--ink);font-size:.8125rem;line-height:1.1875rem;text-decoration:none}.kpi-head{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:800}.kpi-head b{margin-left:auto;font-size:1.875rem;line-height:1;font-weight:800;font-variant-numeric:tabular-nums}.kpi-cta{margin-top:auto;padding-top:.25rem;font-size:.84375rem;font-weight:800;color:var(--accent-ink)}.kpi[data-tone=danger]{border-color:var(--cancel);background:var(--cancel-wash)}.kpi[data-tone=danger] .kpi-head{color:var(--cancel)}.kpi[data-tone=warn]{border-color:var(--warn);background:var(--warn-soft)}.kpi[data-tone=warn] .kpi-head{color:var(--warn)}.kpi[data-tone=accent]{border-color:var(--accent);background:var(--accent-wash)}.kpi[data-tone=accent] .kpi-head{color:var(--accent-ink)}.overview-card{padding:.875rem 1rem;border:1px solid var(--rule);border-radius:.875rem;background:var(--paper)}.overview-card h2{margin:0;font-size:.9375rem;font-weight:800}.overview-card h2 small{font-size:.78125rem;font-weight:600;color:var(--ink-soft)}.overview-card p{margin:.125rem 0 0}.overview-mine{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem 1rem}.overview-mine>div{flex:1 1 16rem;min-width:0}.overview-card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.625rem}.overview-card-head a{display:flex;align-items:center;min-height:44px;color:var(--accent-ink);font-weight:800;text-decoration:none}.data-table{overflow-x:auto;border:1px solid var(--rule);border-radius:.75rem}.data-row{display:grid;grid-template-columns:1.4fr 1.3fr 1.1fr 4rem 10rem;gap:.75rem;align-items:center;min-width:40rem;padding:.625rem .875rem;border-bottom:1px solid var(--rule)}.data-row:last-child{border-bottom:0}.data-head{padding-block:.5625rem;font-size:.78125rem;font-weight:800;color:var(--ink-soft)}.data-row[data-state=overdue]{border-left:4px solid var(--cancel);background:var(--cancel-wash)}.staff-teacher{flex-direction:column;max-width:none}.staff-teacher .staff-main{flex:1;max-width:52rem;margin:0 auto;padding:.875rem .75rem 6rem}.teacher-nav{position:fixed;z-index:15;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:.25rem .25rem .625rem;overflow:visible;background:var(--paper);border-top:1px solid var(--rule)}.teacher-nav a{justify-content:center;min-height:58px;padding:0;border-radius:.75rem;color:var(--ink-soft);font-size:.8125rem;font-weight:800}.teacher-nav a.active{background:var(--accent-wash);color:var(--accent-ink)}.teacher-section-title{margin:1rem 0 .5rem;font-size:.9375rem;font-weight:800}.teacher-session-card{grid-template-columns:3rem 1fr auto;padding:.75rem;border:1.5px solid var(--rule);border-radius:.875rem}.teacher-session-card[data-state=open],.teacher-session-card[data-state=submitted_open]{box-shadow:none}.teacher-session-card[data-state=open]{grid-template-columns:3rem 1fr;padding:.875rem;border:2px solid var(--accent);border-radius:1rem;box-shadow:var(--shadow)}.teacher-session-card[data-state=open] .teacher-action{grid-column:1 / -1;justify-content:center;min-height:54px;border-radius:.875rem;font-size:1.125rem;font-weight:800}.teacher-session-card[data-state=overdue]{border-color:var(--cancel)}.teacher-session-card[data-state=overdue] .attendance-state{color:var(--cancel)}.teacher-session-card[data-state=covered]{border-style:dashed;background:none}.teacher-session-main h2{font-size:1rem;font-weight:800}.attendance-state{font-size:.8125rem;font-weight:800}.teacher-action{font-weight:800}.teacher-action.secondary{border:1.5px solid var(--rule-strong);background:var(--paper)}.teacher-attendance{margin:-.875rem -.75rem -6rem}.staff-teacher:has(.teacher-attendance)>.teacher-nav{display:none}.roll-head{position:sticky;top:0;z-index:6;background:var(--paper);border-bottom:1px solid var(--rule)}.roll-title{display:flex;align-items:center;gap:2px;padding:.25rem .5rem .25rem .25rem}.roll-title>div{flex:1;min-width:0}.roll-title h1{margin:0;font-size:1.0625rem;font-weight:800;line-height:1.25}.roll-title div p{margin:0;font-size:.75rem;line-height:1rem;color:var(--ink-soft)}.roll-back{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;color:var(--ink)}.roll-progress{flex:none;margin:0 .25rem 0 0;text-align:right;font-variant-numeric:tabular-nums;line-height:1.1}.roll-progress b{font-size:1.1875rem;font-weight:800}.roll-progress span,.roll-progress small{font-size:.8125rem;font-weight:700;color:var(--ink-soft)}.roll-progress small{font-size:.6875rem}.roll-tools{display:flex;align-items:center;gap:.375rem;padding:0 .5rem .375rem}.roll-all{flex:none;min-height:44px;padding:0 .625rem;border:2px solid #1E7A4C;border-radius:.6875rem;background:#e3f4ea;color:#155c38;font:inherit;font-size:.9375rem;font-weight:800;cursor:pointer}.roll-find{flex:1;min-width:0}.roll-find input{width:100%;min-height:44px;padding:0 .625rem;border:1.5px solid var(--rule-strong);border-radius:.6875rem;background:var(--bg);color:var(--ink);font:inherit;font-size:1rem}.roll-filters{display:grid;grid-template-columns:1.25fr 1.25fr repeat(5,minmax(0,1fr));gap:.25rem;padding:0 .5rem .5rem}.roll-filters button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:44px;padding:0 2px;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;cursor:pointer}.roll-filters b{font-size:.875rem;font-weight:800;line-height:1rem}.roll-filters span{font-size:.6875rem;font-weight:700;line-height:.8125rem;font-variant-numeric:tabular-nums}.roll-filters button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.roll-bar{display:flex;height:4px;background:var(--mute-soft)}.roll-bar span{background:var(--accent)}.roll-info{margin:.375rem .5rem;padding:.4375rem .625rem;border-radius:.625rem;background:var(--accent-wash);font-size:.78125rem;line-height:1.125rem}.roll-info-locked{background:var(--mute-soft)}.roll-list>.error-note,.roll-list>.success-note{margin:.375rem .5rem}.roll-key{display:flex;flex-wrap:wrap;gap:2px .625rem;margin:0;padding:.3125rem .625rem;font-size:.71875rem;line-height:1rem;color:var(--ink-soft)}.roll-rows{display:grid;list-style:none;margin:0;padding:0;background:var(--paper);border-top:1px solid var(--rule)}.roll-row{display:flex;flex-direction:column;min-width:0;border-bottom:1px solid var(--rule);border-left:3px solid transparent}.roll-main{display:flex;align-items:center;gap:.3125rem;min-height:48px;padding:2px .375rem 2px 2px}.roll-n{flex:none;width:22px;text-align:right;font-size:.71875rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums}.roll-name{flex:1;min-width:0;min-height:44px;padding:2px 0;border:0;background:none;color:var(--ink);font:inherit;font-size:.875rem;line-height:1.0625rem;text-align:left;overflow-wrap:anywhere;cursor:pointer}.roll-name b{font-weight:800}.roll-name .makeup-tag{margin-left:.25rem}.roll-noted{margin-left:.25rem;font-size:.6875rem;font-weight:800;color:var(--ink-soft)}.roll-problem{margin-left:.25rem;padding:0 .25rem;border-radius:4px;background:var(--cancel-wash);color:var(--cancel);font-size:.6875rem;font-weight:800}.roll-options{display:flex;flex:none;gap:3px}.roll-options button,.roll-status{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;padding:0;border:2px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;font-size:1.0625rem;font-weight:800;cursor:pointer}.roll-status{cursor:default}.roll-locked{display:flex;align-items:center;flex:none;gap:.375rem}.roll-locked .correction-state{max-width:92px;font-size:.71875rem;line-height:.9375rem;font-weight:800}.roll-mode{display:flex;align-items:center;justify-content:flex-end;gap:.25rem;padding:0 .375rem .25rem 1.875rem}.roll-mode>span{margin-right:2px;font-size:.75rem;font-weight:800;color:var(--ink-soft)}.roll-mode button{min-width:64px;min-height:40px;padding:0 .625rem;border:2px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;font-size:.875rem;font-weight:800;cursor:pointer}.roll-mode button[aria-checked=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.roll-note{display:flex;flex-direction:column;gap:3px;padding:0 .5rem .5rem 1.875rem}.roll-note label{font-size:.75rem;font-weight:700;color:var(--ink-soft)}.roll-note textarea{width:100%;padding:.375rem .5rem;border:1.5px solid var(--rule-strong);border-radius:.5rem;background:var(--bg);color:var(--ink);font:inherit;font-size:.9375rem;line-height:1.25rem;resize:vertical}.roll-note>span{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;font-weight:700;color:var(--ink-soft)}.roll-done{display:flex;align-items:center;min-height:48px;padding:0 .875rem;border-bottom:1px solid var(--rule);background:#e3f4ea;color:#155c38;font-size:.9375rem;font-weight:800}.roll-group{grid-column:1 / -1}.roll-group button{display:flex;align-items:center;gap:.5rem;width:100%;min-height:50px;padding:0 .75rem;border:0;border-bottom:2px solid var(--rule-strong);background:var(--bg);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.roll-group b{font-size:.9375rem;font-weight:800}.roll-group span{flex:1;min-width:0;font-size:.78125rem;font-weight:700;color:var(--ink-soft)}.roll-group em{font-size:.8125rem;font-style:normal;font-weight:800;color:var(--accent-ink)}.roll-none{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:0;padding:1.25rem 1rem;text-align:center;color:var(--ink-soft)}.roll-none p{margin:0;font-size:.9375rem;font-weight:800;color:var(--ink)}.roll-side{display:none}.attendance-submit{display:block;margin:0;padding:.5rem .625rem .75rem;background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none}.attendance-submit .problems{margin:0 0 .5rem}.attendance-submit label{display:grid;gap:.2rem;margin-bottom:.375rem;font-size:.8125rem;font-weight:800;color:var(--ink)}.attendance-submit input{width:100%;background:var(--bg);color:var(--ink)}.attendance-submit-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.875rem;font-weight:800}.attendance-submit .btn{min-height:52px;padding:0 1.5rem;border-radius:.875rem;font-size:1.0625rem;font-weight:800}.roll-key b[data-status=present],.roll-filters [data-status=present]:not([aria-pressed=true]) b,.roll-row[data-status=present] .roll-status{color:var(--roll-p-ink)}.roll-key b[data-status=late],.roll-filters [data-status=late]:not([aria-pressed=true]) b,.roll-row[data-status=late] .roll-status{color:var(--roll-l-ink)}.roll-key b[data-status=leave],.roll-filters [data-status=leave]:not([aria-pressed=true]) b,.roll-row[data-status=leave] .roll-status{color:var(--roll-e-ink)}.roll-key b[data-status=absent],.roll-filters [data-status=absent]:not([aria-pressed=true]) b,.roll-row[data-status=absent] .roll-status{color:var(--roll-a-ink)}.roll-key b[data-status=left_early],.roll-filters [data-status=left_early]:not([aria-pressed=true]) b,.roll-row[data-status=left_early] .roll-status{color:var(--roll-d-ink)}.roll-options button[data-status=present][aria-checked=true],.roll-side [data-status=present]{--on: var(--roll-p);--on-ink: var(--roll-on);--soft: var(--roll-p-soft);--soft-ink: var(--roll-p-ink)}.roll-options button[data-status=late][aria-checked=true],.roll-side [data-status=late]{--on: var(--roll-l);--on-ink: var(--roll-on);--soft: var(--roll-l-soft);--soft-ink: var(--roll-l-ink)}.roll-options button[data-status=leave][aria-checked=true],.roll-side [data-status=leave]{--on: var(--roll-e);--on-ink: var(--roll-on);--soft: var(--roll-e-soft);--soft-ink: var(--roll-e-ink)}.roll-options button[data-status=absent][aria-checked=true],.roll-side [data-status=absent]{--on: var(--roll-a);--on-ink: var(--roll-on);--soft: var(--roll-a-soft);--soft-ink: var(--roll-a-ink)}.roll-options button[data-status=left_early][aria-checked=true],.roll-side [data-status=left_early]{--on: var(--roll-d);--on-ink: var(--roll-on);--soft: var(--roll-d-soft);--soft-ink: var(--roll-d-ink)}.roll-options button[aria-checked=true]{border-color:var(--on);background:var(--on);color:var(--on-ink)}.roll-row[data-status=present]{border-left-color:var(--roll-p)}.roll-row[data-status=late]{border-left-color:var(--roll-l)}.roll-row[data-status=leave]{border-left-color:var(--roll-e)}.roll-row[data-status=absent]{border-left-color:var(--roll-a)}.roll-row[data-status=left_early]{border-left-color:var(--roll-d)}.staff{--roll-on: #FFFFFF;--roll-p: #1E7A4C;--roll-p-soft: #E3F4EA;--roll-p-ink: #155C38;--roll-l: #A65400;--roll-l-soft: #FFF1DC;--roll-l-ink: #7A4100;--roll-e: #5546B0;--roll-e-soft: #ECEAFB;--roll-e-ink: #3D2F94;--roll-a: #C0185A;--roll-a-soft: #FDE8F0;--roll-a-ink: #A3104A;--roll-d: #0F6E7A;--roll-d-soft: #DFF3F4;--roll-d-ink: #0B5560}@media(prefers-color-scheme:dark){.staff{--roll-on: #08141E;--roll-p: #4CC38A;--roll-p-soft: #12301F;--roll-p-ink: #8FE0B5;--roll-l: #F0A04B;--roll-l-soft: #33240E;--roll-l-ink: #F6C37F;--roll-e: #A99BFF;--roll-e-soft: #231D45;--roll-e-ink: #C6BDFF;--roll-a: #FF8FB0;--roll-a-soft: #3B1726;--roll-a-ink: #FF9FBD;--roll-d: #5CCFD9;--roll-d-soft: #0F2E33;--roll-d-ink: #8FE3EA}.roll-all{border-color:var(--roll-p);background:var(--roll-p-soft);color:var(--roll-p-ink)}.roll-done{background:var(--roll-p-soft);color:var(--roll-p-ink)}}@media(max-width:59.99rem){.staff-admin{flex-direction:column}.staff-side{display:none;width:100%;border-right:0;border-bottom:1px solid var(--rule)}.staff-admin[data-menu] .staff-side{display:block;order:1}.staff-admin .staff-column{order:2}.staff-admin[data-menu]{flex-direction:column}.staff-admin .staff-side-brand{display:none}.staff-admin .staff-nav{margin:0}.staff-admin .staff-header-brand,.staff-menu-button{display:flex}.staff-header{padding:.5rem .5rem .5rem .875rem}.staff-admin .staff-header{padding-left:.5rem}.staff-name small,.staff-admin .staff-account .btn-secondary{display:none}.staff-admin[data-menu] .staff-account .btn-secondary{display:inline-flex}.staff-main{padding:.75rem .75rem 2rem}.sub-tabs{margin:-.75rem -.75rem .875rem;padding:0 .25rem;overflow-x:auto;flex-wrap:nowrap}.sub-tabs a{white-space:nowrap}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-submit{position:sticky;bottom:0;z-index:5}}@media(max-width:30rem){.kpis{grid-template-columns:1fr}}@media(min-width:60rem){.staff-teacher{display:grid;grid-template-columns:200px minmax(0,1fr);grid-template-rows:auto 1fr}.staff-teacher>.staff-header{grid-column:1 / -1}.teacher-nav{position:static;display:flex;flex-direction:column;gap:2px;padding:.75rem .625rem;border-top:0;border-right:1px solid var(--rule)}.teacher-nav a{justify-content:flex-start;min-height:44px;padding:0 .75rem;border-radius:.625rem;font-size:.9375rem;color:var(--ink)}.staff-teacher .staff-main{width:100%;padding:1.25rem 1.5rem 2.5rem;margin:0}.staff-teacher:has(.teacher-attendance) .staff-main{max-width:none;padding:0}.staff-teacher:has(.teacher-attendance)>.teacher-nav{display:flex}.teacher-attendance{display:grid;grid-template-columns:minmax(0,1fr) 320px;margin:0}.roll-head{grid-column:1 / -1;position:static}.roll-title{padding:.5rem .75rem .5rem .5rem}.roll-title h1{font-size:1.25rem}.roll-tools,.roll-filters{padding-inline:.75rem}.roll-body{display:contents}.roll-list{grid-column:1;grid-row:2 / span 2;min-width:0;border-right:1px solid var(--rule)}.roll-rows{grid-template-columns:repeat(2,minmax(0,1fr))}.roll-row{border-right:1px solid var(--rule)}.roll-side{display:flex;flex-direction:column;gap:.375rem;grid-column:2;padding:1rem;background:var(--paper)}.roll-side h2{margin:0;font-size:.9375rem;font-weight:800;color:var(--ink-soft)}.roll-side ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.375rem;list-style:none;margin:0;padding:0}.roll-side li{display:flex;align-items:center;justify-content:space-between;padding:.5rem .625rem;border-radius:.625rem;background:var(--soft, var(--mute-soft));color:var(--soft-ink, var(--ink));font-size:.875rem;font-weight:800;font-variant-numeric:tabular-nums}.roll-side-note{margin:.25rem 0 0;font-size:.8125rem;color:var(--ink-soft)}.attendance-submit{grid-column:2;align-self:start;padding:0 1rem 1rem}}.inline-action button.danger{border-color:var(--cancel);background:var(--paper);color:var(--cancel)}.admin-list{border:1px solid var(--rule)}.admin-list li>span b{font-weight:800}.timetable-admin .pager>button{width:44px;min-height:44px;padding:0;border-color:var(--rule-strong);border-radius:.75rem;background:var(--paper);color:var(--ink);font-size:1.25rem;line-height:1}.timetable-admin .pager-title{min-width:11rem}.timetable-admin .pager-title-button{width:100%}.timetable-admin .picker{z-index:10}.account-table{border:1px solid var(--rule);border-collapse:separate;border-spacing:0;overflow:hidden}.account-table tr:last-child td{border-bottom:0}@media(max-width:26rem){.staff-header{flex-wrap:nowrap}.staff-account{gap:.375rem;min-width:0}.staff-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staff-account:has(.btn-outline) .staff-name{display:none}.staff-account .btn{padding:0 .625rem;white-space:nowrap;font-size:.875rem}}.staff-nav a{gap:.625rem}.staff-nav a>span:first-of-type{flex:1}.staff-badge{padding:0 .4375rem;border-radius:999px;background:var(--warn-soft);color:var(--warn);font-size:.75rem;font-weight:800;line-height:1.25rem;font-variant-numeric:tabular-nums}.staff-badge[data-urgent]{background:var(--cancel);color:var(--paper)}.info-note{display:flex;align-items:center;gap:.5rem;margin:0 0 .75rem;padding:.625rem .75rem;border-radius:.625rem;background:var(--accent-wash);color:var(--ink)}.info-note svg{flex:none;color:var(--accent-ink)}.toolbar select{min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit}.search-field{display:flex;align-items:center;gap:.375rem;flex:1 1 15rem;min-height:44px;padding:0 .625rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink-soft)}.search-field input{flex:1;min-width:0;min-height:0!important;padding:0!important;border:0!important;outline:0;background:none;color:var(--ink);font:inherit;font-size:.9375rem}.search-field:focus-within{outline:2px solid var(--focus);outline-offset:2px}.list-count{margin:.5rem 0;font-size:.8125rem;color:var(--ink-soft)}.student-table{overflow:hidden;border:1px solid var(--rule);border-radius:.75rem;background:var(--paper)}.student-row{display:grid;grid-template-columns:1.6fr 1fr .8fr 1.3fr .8fr 1.1fr 5rem;gap:2px .75rem;align-items:center;padding:.5rem .875rem;border-bottom:1px solid var(--rule)}.student-row:last-child{border-bottom:0}.student-row b{font-weight:800;overflow-wrap:anywhere}.student-row[data-inactive]{opacity:.7}.student-phone{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.student-edit{justify-self:end}.student-edit .button,.student-table .button{display:inline-flex;align-items:center;min-height:40px;padding:0 .75rem;border:1.5px solid var(--rule-strong);border-radius:.5625rem;background:none;color:var(--accent-ink);font-weight:800;text-decoration:none}.hostel-mark{display:inline-flex;align-items:center;gap:.25rem;font-size:.78125rem;font-weight:800;color:var(--accent-ink)}.list-pager{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:.75rem;font-weight:700}.list-pager .icon-button:disabled{opacity:.4;cursor:default}.account-email b{font-weight:800;overflow-wrap:anywhere}.account-email small{font-size:.75rem;font-weight:800;color:var(--accent-ink)}.account-stop{border-color:var(--cancel);color:var(--cancel)}.sessions-admin .toolbar-end{display:flex;flex-wrap:wrap;gap:.5rem;margin-left:auto}.board-options{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.375rem 1rem;margin:.625rem 0}.board-options .check{display:flex;align-items:center;gap:.375rem;min-height:44px;font-weight:700;color:var(--ink)}.board-legend{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin:0;padding:0;list-style:none;font-size:.78125rem;color:var(--ink-soft)}.board-legend li{display:flex;align-items:center;gap:.3125rem}.board-legend li:before{content:"";width:.875rem;height:.875rem;border-radius:.1875rem}.board-legend [data-key=class]:before{background:var(--accent-wash);border:1px solid var(--accent)}.board-legend [data-key=free]:before{background:var(--paper);border:1px dashed var(--rule-strong)}.board-legend [data-key=changed]:before{background:var(--warn-soft);border:1px solid var(--warn)}.board-legend [data-key=cancelled]:before{background:var(--cancel-wash);border:1px dashed var(--cancel)}.board-hint{margin:0 0 .625rem}.board-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:.75rem;background:var(--paper)}.board{--room-col: 4.75rem;--lane-h: 2.75rem;min-width:54rem}.board-day+.board-day{border-top:2px solid var(--rule-strong)}.board-day-head{background:var(--mute-soft)}.board-day-head[data-today]{background:var(--accent-wash)}.board-day-head h3{position:sticky;left:0;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .625rem;width:fit-content;margin:0;padding:.4375rem .75rem 0;font-size:.90625rem;font-weight:800;color:var(--ink)}.admin-day-holiday{padding:0 .5rem;border-radius:.375rem;background:var(--accent-wash);color:var(--accent-ink);font-size:.75rem;font-weight:700}.board-ruler{position:relative;height:1.125rem;margin-left:var(--room-col);font-size:.6875rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.board-ruler span{position:absolute;bottom:0;padding-left:.1875rem;border-left:1px solid var(--rule-strong);line-height:1.125rem}.board-row{display:grid;grid-template-columns:var(--room-col) minmax(0,1fr);border-top:1px solid var(--rule)}.board-room{position:sticky;left:0;z-index:3;display:flex;align-items:center;padding:0 .5rem 0 .75rem;border-right:1px solid var(--rule-strong);background:var(--paper);font-size:.8125rem;font-weight:800;color:var(--ink);overflow-wrap:anywhere;line-height:1.2}.board-tracks{min-width:0}.board-track{position:relative;height:calc(var(--lanes) * var(--lane-h));background-image:linear-gradient(to right,var(--rule) 1px,transparent 1px);background-size:calc(100% / var(--hours)) 100%}.board-track[data-cancelled]{--lane-h: 2.375rem;border-top:1px dashed var(--rule)}.board .board-free,.board .board-class{position:absolute;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;min-width:0;min-height:0;margin:0;overflow:hidden;font:inherit;font-size:.71875rem;line-height:1.2;text-align:left;white-space:nowrap}.board .board-free{top:0;bottom:0;padding:0 .3125rem;border:0;border-radius:0;background:none;color:var(--ink-soft)}.board button.board-free{cursor:pointer}.board button.board-free:hover,.board button.board-free:focus-visible{background:var(--accent-wash);color:var(--accent-ink);outline:none}.board-free b{font-weight:800;color:var(--ok)}.board-free small{font-size:inherit;font-variant-numeric:tabular-nums}.board .board-class{z-index:1;top:calc(var(--lane) * var(--lane-h) + 2px);height:calc(var(--lane-h) - 4px);padding:0 .375rem;border:1px solid var(--accent);border-left-width:3px;border-radius:.375rem;background:var(--accent-wash);color:var(--ink)}.board button.board-class{cursor:pointer}.board button.board-class:hover,.board button.board-class:focus-visible{z-index:2;outline:2px solid var(--focus);outline-offset:0}.board-class b,.board-class small{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.board-class b{font-weight:800}.board-class small{font-size:inherit;color:var(--ink-soft);font-variant-numeric:tabular-nums}.board-class em{display:inline-block;margin-right:.25rem;font-style:normal;color:var(--warn)}.board .board-class[data-kind=moved],.board .board-class[data-kind=replacement],.board .board-class[data-kind=extra]{border-color:var(--warn);background:var(--warn-soft)}.board .board-class[data-kind=completed]{border-color:var(--rule-strong);background:var(--mute-soft)}.board-class[data-kind=completed] em{color:var(--ok)}.board .board-class[data-kind=cancelled]{border:1px dashed var(--cancel);background:var(--cancel-wash)}.board-class[data-kind=cancelled] b{color:var(--cancel);text-decoration:line-through}.board-class[data-kind=cancelled] em{color:var(--cancel)}.board .board-class[data-dim]{opacity:.35}.board-detail-when{margin:0;font-weight:800;font-variant-numeric:tabular-nums}.board-detail-who{margin:.25rem 0 .5rem}.import-steps{display:flex;gap:.5rem;list-style:none;margin:0 0 .875rem;padding:0}.import-steps li{padding:.25rem .75rem;border-radius:999px;background:var(--mute-soft);color:var(--ink-soft);font-weight:800}.import-steps li[data-state=now]{background:var(--accent);color:var(--on-accent)}.import-steps li[data-state=done]{background:var(--ok-soft);color:var(--ok)}.import-summary{margin:.75rem 0 .5rem;color:var(--ink-soft)}.import-row-n{margin-right:.25rem;font-weight:700;color:var(--ink-soft)}.import-left{margin:.75rem 0 .25rem;font-weight:800;color:var(--cancel)}@media(max-width:40rem){.data-head,.student-table .data-head{display:none}.student-row{grid-template-columns:1fr auto}.student-row>:nth-child(n+2):nth-child(-n+6){grid-column:1;font-size:.8125rem}.student-row>:nth-child(2):empty,.student-row>:nth-child(5):empty,.student-row>:nth-child(6):empty{display:none}.student-edit{grid-column:2;grid-row:1 / span 6;align-self:center}}@media(max-width:40rem){.modal-backdrop[data-sheet]{align-items:end;place-items:end stretch;padding:0}.modal-backdrop[data-sheet] .modal{width:100%;max-height:92dvh;border-radius:1.25rem 1.25rem 0 0}}.admin-attendance-detail .status-options{grid-template-columns:repeat(5,minmax(0,1fr))}.admin-attendance-detail .makeup-tag{justify-self:start}@media(max-width:59.99rem){.staff-admin[data-menu] .staff-side{position:fixed;z-index:30;top:61px;left:0;right:0;max-height:calc(100dvh - 61px);overflow:auto;box-shadow:0 8px 24px #0e467324}}.import-term{display:grid;gap:.25rem;max-width:26rem;margin-bottom:.75rem;font-size:.875rem;color:var(--ink-soft)}.import-match{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem}.import-match small{color:var(--ink-soft)}.match-tag{padding:.05rem .5rem;border-radius:999px;font-size:.75rem;font-weight:800;background:var(--mute-soft);color:var(--ink)}.match-tag[data-match=ic]{background:var(--ok-soft);color:var(--ok)}.match-tag[data-match=name]{background:var(--warn-soft);color:var(--warn)}.import-same{display:flex;flex-wrap:wrap;gap:.25rem 1rem}.error-text{color:var(--cancel)}.ic-field{display:grid;gap:.35rem}.ic-stored{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;font-size:.875rem;color:var(--ink-soft)}.ic-value{font-variant-numeric:tabular-nums;letter-spacing:.04em;color:var(--ink);font-weight:700}.enrollment-term h4{margin:.75rem 0 0;font-size:.95rem;color:var(--ink);display:flex;gap:.6rem;align-items:baseline}.enrollment-term h4 small{font-weight:400;color:var(--ink-soft)}.student-row.not-renewed-row{grid-template-columns:1.4fr 1fr .8fr 1.6fr 1.1fr 5rem}.student-kpis{margin-bottom:.5rem}.student-kpi-terms{margin:0 0 1rem;font-size:.85rem}@media(max-width:40rem){.student-row.not-renewed-row{grid-template-columns:1fr auto}.student-row.not-renewed-row>.student-edit{grid-column:2;grid-row:1 / span 5}}.toolbar .search-field{min-width:12rem}.timetable-admin .list-pager .icon-button{width:44px;padding:0;display:inline-flex;align-items:center;justify-content:center}.download-button,.toolbar>button:has(>svg){display:inline-flex;align-items:center;gap:.375rem}.day-picker{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.75rem}.timetable-admin .day-picker button{min-width:3.5rem;border-color:var(--rule-strong);background:var(--paper);color:var(--ink)}.timetable-admin .day-picker button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.weekly-day{padding:.5rem .75rem;margin-bottom:.5rem;border:1px solid var(--rule);border-radius:.625rem}.weekly-day[data-planning]{border-color:var(--accent)}.weekly-day .weekly-day-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}@media(max-width:34rem){.weekly-day .weekly-day-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.weekly-day .weekly-day-fields>:first-child{grid-column:1 / -1}}.grade-order{padding-inline-start:0;counter-reset:grade}.grade-order li{counter-increment:grade}.grade-order li b:before{content:counter(grade) ". ";color:var(--ink-soft);font-weight:700}.grade-order .row-actions{display:flex;flex-direction:row;gap:.375rem}.grade-order li{flex-direction:row!important;align-items:center!important;padding-block:.25rem}.timetable-admin .grade-order button{width:44px;padding:0}.timetable-admin .grade-order button:disabled{opacity:.35;cursor:default}.modal .import-preview{max-height:45dvh;overflow-y:auto;padding-left:0}.danger-zone small{flex-basis:100%}.warn-note{margin:0;padding:.5rem .75rem;border-radius:.625rem;background:var(--warn-soft);color:var(--warn);font-size:.875rem}.import-course .warn-note{flex-basis:100%}.student-import>.toolbar .quiet{align-self:center}.import-dialog label.upload{display:inline-flex;align-items:center;min-height:44px;padding:0 .9rem;border:1px solid var(--accent);border-radius:.625rem;color:var(--accent-ink);cursor:pointer;font-weight:700}.import-grid-wrap{max-height:16rem;margin-bottom:.625rem;overflow:auto;border:1px solid var(--rule-strong);border-radius:.625rem}.import-grid{min-width:100%;border-collapse:separate;border-spacing:0;font-size:.8125rem}.import-grid th{position:sticky;top:0;z-index:1;padding:.375rem .5rem;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule-strong);background:var(--accent-wash);color:var(--ink);font-weight:700;text-align:left;white-space:nowrap}.import-grid .row-number{position:sticky;left:0;z-index:1;width:2.5rem;min-width:2.5rem;padding:0 .375rem;border-right:1px solid var(--rule-strong);border-bottom:1px solid var(--rule);background:var(--accent-wash);color:var(--ink-soft);text-align:center}.import-grid thead .row-number{z-index:2}.import-grid td{min-width:6.5rem;padding:0;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--paper)}.import-grid td input{display:block;width:100%;min-height:2.25rem;padding:0 .5rem;border:0;border-radius:0;background:transparent;font-size:inherit;box-shadow:none}.import-grid td input:focus{outline:2px solid var(--accent);outline-offset:-2px}.import-grid td.has-list{position:relative}.import-grid td.has-list:after{content:"";position:absolute;top:50%;right:.5rem;width:.4rem;height:.4rem;margin-top:-.3rem;border-right:1.5px solid var(--ink-soft);border-bottom:1.5px solid var(--ink-soft);transform:rotate(45deg);pointer-events:none}.import-grid td.has-list input{padding-right:1.4rem}.import-grid-list,.modal .import-grid-list{z-index:40;margin:0;padding:.25rem;overflow-y:auto;border:1px solid var(--rule-strong);border-radius:.5rem;background:var(--paper);box-shadow:0 6px 18px #14304a2e;font-size:.8125rem;list-style:none}.import-grid-list li{padding:.4rem .5rem;border-radius:.375rem;color:var(--ink);cursor:pointer;white-space:nowrap}.import-grid-list li:hover,.import-grid-list li[data-active]{background:var(--accent-wash)}.import-grid-list li[data-multiple]{position:relative;padding-left:1.75rem}.import-grid-list li[data-multiple]:before{content:"";position:absolute;top:50%;left:.5rem;width:.875rem;height:.875rem;border:1.5px solid var(--rule-strong);border-radius:.25rem;background:var(--paper);transform:translateY(-50%)}.import-grid-list li[data-multiple][aria-selected=true]:before{border-color:var(--accent);background:var(--accent)}.import-grid-list li[data-multiple][aria-selected=true]:after{content:"";position:absolute;top:50%;left:.8rem;width:.25rem;height:.5rem;border:solid var(--on-accent);border-width:0 1.5px 1.5px 0;transform:translateY(-60%) rotate(45deg)}.import-grid abbr{margin-left:.125rem;color:var(--cancel);text-decoration:none}.import-dialog .toolbar .quiet{align-self:center}.holiday-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.75rem;align-items:start;margin-top:.5rem}.holiday-months[data-single]{grid-template-columns:minmax(0,40rem)}.holiday-month{padding:.75rem;border:1px solid var(--rule);border-radius:.75rem;background:var(--paper)}.holiday-month h3{display:flex;align-items:center;justify-content:space-between;margin:0 0 .5rem;font-size:1rem;font-weight:800;color:var(--ink)}.holiday-month h3 small{min-width:1.5rem;padding:0 .4rem;border-radius:999px;background:var(--accent-wash);color:var(--accent-ink);font-size:.75rem;text-align:center}.holiday-month>.quiet{margin:0;font-size:.8125rem}.holiday-month ul{display:grid;gap:.375rem;margin:0;padding:0;list-style:none}.timetable-admin .holiday-item{display:grid;grid-template-columns:1fr auto;gap:.125rem .5rem;width:100%;min-height:44px;padding:.4rem .6rem;border:1px solid var(--rule);border-left:4px solid var(--accent);border-radius:.5rem;background:none;color:var(--ink);text-align:left;font-weight:400}.timetable-admin .holiday-item:hover{background:var(--accent-wash)}.timetable-admin .holiday-item[data-kind=school]{border-left-style:dashed;border-left-color:var(--ink-soft)}.holiday-item b{grid-column:1 / -1;font-weight:700;overflow-wrap:anywhere}.holiday-item .holiday-item-dates{font-size:.8125rem;font-weight:700;color:var(--accent-ink)}.holiday-item small{grid-column:1;color:var(--ink-soft);font-size:.75rem}.holiday-item .status-tag{grid-column:2;grid-row:1;justify-self:end}.modal button.danger-action{margin-right:auto;border-color:var(--cancel);color:var(--cancel)}.timetable-admin .toolbar button.danger-action{border-color:var(--cancel);color:var(--cancel)}.modal label.check{display:flex;align-items:center;gap:.5rem}.modal label.check input{width:18px;height:18px;min-height:0;flex:none}.reference-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.5rem;margin:.5rem 0;padding:0;list-style:none}.timetable-admin .reference-tile{display:grid;gap:.125rem;width:100%;min-height:60px;padding:.5rem .75rem;border:1px solid var(--rule);border-radius:.625rem;background:var(--paper);color:var(--ink);text-align:left;font-weight:400}.timetable-admin .reference-tile:hover{background:var(--accent-wash);border-color:var(--accent)}.reference-tile b{font-weight:800;overflow-wrap:anywhere}.reference-tile small{color:var(--ink-soft);font-size:.75rem}.reference-tile[data-inactive] b{color:var(--ink-soft)}.modal .category-list{margin:.75rem 0 0;padding-left:0}.stream-add{display:flex;gap:.5rem;align-items:center;margin-top:.5rem}.stream-add input{flex:1;min-width:0}.reference-group h3{display:flex;align-items:center;gap:.5rem;margin:.75rem 0 0;font-size:.875rem;font-weight:800;color:var(--ink-soft)}.grade-order-grid{columns:3 16rem;column-gap:.75rem}.grade-order-grid li{break-inside:avoid}.filter-chips{display:flex;flex-wrap:wrap;gap:.375rem;margin:.75rem 0 .625rem}.filter-chips button,.timetable-admin .filter-chips button{min-height:44px;padding:0 .75rem;border:1.5px solid var(--rule-strong);border-radius:999px;background:var(--paper);color:var(--ink);font-weight:800;cursor:pointer}.filter-chips button[aria-pressed=true],.timetable-admin .filter-chips button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.filter-chips button[data-tone=problem]:not([aria-pressed=true]),.timetable-admin .filter-chips button[data-tone=problem]:not([aria-pressed=true]){border-color:var(--cancel);color:var(--cancel)}.day-stepper{display:inline-flex;align-items:center;gap:.375rem}.makeup-range{display:flex;flex-wrap:wrap;gap:.5rem}.modal .makeup-targets{max-height:45dvh;overflow-y:auto;padding-left:0}.modal fieldset{display:flex;flex-wrap:wrap;gap:.75rem;margin:0;padding:0;border:0}.modal fieldset legend{margin-bottom:.25rem}.modal fieldset label{display:inline-flex;align-items:center;gap:.375rem}.correction-actions{display:flex;flex-wrap:wrap;gap:.4rem}.timetable-admin button.account-stop{border-color:var(--cancel);color:var(--cancel)}.select{position:relative;display:grid;min-width:0}.toolbar .select,.row-actions .select{width:auto}.select>.select-button{display:flex;align-items:center;justify-content:space-between;gap:.5rem;justify-self:stretch;width:100%;min-height:44px;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;font-weight:400;text-align:left;cursor:pointer}.select>.select-button:hover:not(:disabled){border-color:var(--accent)}.select>.select-button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.select>.select-button:disabled{opacity:.6;cursor:not-allowed}.select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select[data-placeholder] .select-value{color:var(--ink-soft)}.select-required{position:absolute;left:50%;bottom:0;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.select-pop{position:fixed;z-index:60;display:flex;flex-direction:column;max-width:calc(100vw - 16px);padding:.375rem;border:1px solid var(--rule-strong);border-radius:.875rem;background:var(--paper);box-shadow:0 8px 24px #0e46732e;box-sizing:border-box}.select-search{flex:none;width:100%;min-height:40px;margin:0 0 .375rem;padding:0 .6rem;border:1.5px solid var(--rule-strong);border-radius:.625rem;background:var(--paper);color:var(--ink);font:inherit;box-sizing:border-box}.select-search:focus{outline:2px solid var(--focus);outline-offset:0}.select-list{flex:1;min-height:0;margin:0;padding:0;overflow-y:auto;list-style:none}.select-list [role=option]{display:flex;align-items:center;gap:.5rem;min-height:44px;padding:0 .625rem;border-radius:.625rem;color:var(--ink);cursor:pointer;overflow-wrap:anywhere}.select-list [role=option][data-focus]{background:var(--accent-wash)}.select-list [role=option][data-empty]{color:var(--ink-soft)}.select-list [role=option][aria-disabled]{color:var(--ink-soft);cursor:default}.select-none{padding:.75rem .625rem;color:var(--ink-soft);font-size:.875rem}.select-list [role=option][data-new]{color:var(--accent-ink);font-weight:700}.import-rows .select{justify-self:start;width:auto;max-width:100%}.new-student-courses{display:grid;gap:.6rem}.new-student-courses>.select{justify-self:start}
