.oa-dialog[data-v-4802460b]{width:min(100%,540px)}.oa-dialog-heading[data-v-4802460b]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.oa-dialog-heading h2[data-v-4802460b]{margin:0}.oa-dialog-heading p[data-v-4802460b]{margin:6px 0 0;color:#667386;font-size:14px;line-height:1.55}.oa-dialog-heading>button[data-v-4802460b]{width:34px;height:34px;display:grid;flex:0 0 auto;place-items:center;padding:0;color:#536073;border:0;border-radius:7px;background:transparent;cursor:pointer}.oa-dialog-heading>button[data-v-4802460b]:hover{background:#eef2f7}.oa-error[data-v-4802460b]{margin:16px 0 0;padding:10px 12px;color:#9b2c2c;border:1px solid #efc3c0;border-radius:7px;background:#fff7f7;font-size:14px}.oa-loading[data-v-4802460b],.oa-empty[data-v-4802460b]{margin:20px 0 0;padding:22px;color:#667386;border:1px solid #dfe6ef;border-radius:9px;text-align:center}.oa-loading[data-v-4802460b]{display:flex;align-items:center;justify-content:center;gap:8px}.oa-empty p[data-v-4802460b]{margin:0 0 16px}.oa-empty .oa-credential-state.invalid[data-v-4802460b]{color:#9b2c2c}.oa-login-methods[data-v-4802460b]{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.oa-login-methods button[data-v-4802460b]{display:inline-flex;align-items:center;gap:6px}.oa-empty .oa-credential-form[data-v-4802460b]{margin-top:16px;text-align:left}.oa-account[data-v-4802460b]{margin-top:20px;overflow:hidden;border:1px solid #8bb0e8;border-radius:9px;background:#f4f8ff}.oa-account-summary[data-v-4802460b]{min-height:72px;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 13px}.oa-account-icon[data-v-4802460b]{width:38px;height:38px;display:grid;place-items:center;color:#2467d1;border-radius:50%;background:#e1ecfd}.oa-account-summary>span[data-v-4802460b]:nth-child(2){min-width:0;display:grid;gap:4px}.oa-account-summary strong[data-v-4802460b],.oa-account-summary small[data-v-4802460b]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oa-account-summary small[data-v-4802460b]{color:#68758a;font-size:12px}.oa-current[data-v-4802460b]{color:#2467d1;font-size:13px;font-weight:600;white-space:nowrap}.oa-account-info[data-v-4802460b]{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;margin:0;padding:12px 13px;border-top:1px solid #d7e3f5;background:#ffffffad;font-size:13px}.oa-account-info dt[data-v-4802460b]{color:#68758a}.oa-account-info dd[data-v-4802460b]{margin:0;color:#263348}.oa-account-actions[data-v-4802460b]{display:flex;flex-wrap:wrap;gap:8px;padding:11px 13px;border-top:1px solid #d7e3f5}.oa-account-actions button[data-v-4802460b]{min-height:33px;padding:5px 9px;font-size:13px}.oa-logout[data-v-4802460b]{display:inline-flex;align-items:center;justify-content:center;gap:5px;color:#9b2c2c;border:1px solid #efc3c0;border-radius:7px;background:#fff;cursor:pointer}.oa-logout[data-v-4802460b]:hover:not(:disabled){background:#fff4f3}.oa-logout[data-v-4802460b]:disabled{opacity:.45;cursor:wait}.oa-credential[data-v-4802460b]{margin-top:16px;padding:13px;border:1px solid #dfe6ef;border-radius:9px}.oa-credential h3[data-v-4802460b]{display:flex;align-items:center;gap:6px;margin:0;font-size:15px}.oa-credential p[data-v-4802460b]{margin:8px 0 0;color:#667386;font-size:13px;line-height:1.55}.oa-credential .oa-credential-state[data-v-4802460b]{color:#2467d1}.oa-credential .oa-credential-state.invalid[data-v-4802460b]{color:#9b2c2c}.oa-credential .oa-credential-state.muted[data-v-4802460b]{color:#667386}.oa-credential-form[data-v-4802460b]{display:grid;gap:10px;margin-top:12px}.oa-credential-form label[data-v-4802460b]{display:grid;gap:5px;color:#536073;font-size:13px}.oa-credential-form input[data-v-4802460b]{min-height:36px;padding:6px 10px;border:1px solid #cfd8e3;border-radius:7px;font-size:14px}.oa-credential-form .oa-account-actions[data-v-4802460b]{padding:0;border-top:0}.oa-credential-actions[data-v-4802460b]{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.oa-credential-actions button[data-v-4802460b]{display:inline-flex;align-items:center;gap:5px;min-height:33px;padding:5px 11px;font-size:13px}.spin[data-v-4802460b]{animation:oa-spin-4802460b .8s linear infinite}@keyframes oa-spin-4802460b{to{transform:rotate(360deg)}}@media(max-width:520px){.oa-account-summary[data-v-4802460b]{grid-template-columns:38px minmax(0,1fr)}.oa-current[data-v-4802460b]{grid-column:2}.oa-account-actions[data-v-4802460b]{display:grid}}.confirmation-page[data-v-a441c3e0]{padding:1.5rem}h1[data-v-a441c3e0]{font-size:1.6rem;margin:0 0 1.5rem}.confirmation-filters[data-v-a441c3e0]{display:flex;flex-wrap:wrap;align-items:end;gap:1rem;margin:1rem 0}label[data-v-a441c3e0]{display:grid;gap:.4rem}select[data-v-a441c3e0]{max-width:100%;min-height:2.6rem;padding:.4rem}.confirmation-table-wrap[data-v-a441c3e0]{overflow-x:auto}table[data-v-a441c3e0]{width:100%;border-collapse:collapse}th[data-v-a441c3e0],td[data-v-a441c3e0]{padding:.75rem;text-align:left;border-bottom:1px solid #dce3ed;white-space:nowrap}.morning-confirmation[data-v-a4dc6bbd]{padding:1rem 0;border-bottom:1px solid var(--border-color, #dce3ed);margin-bottom:1rem}.morning-confirmation p[data-v-a4dc6bbd]{margin:.5rem 0}.confirmation-actions[data-v-a4dc6bbd]{display:flex;flex-wrap:wrap;gap:.75rem}.morning-dialog[data-v-a4dc6bbd]{display:flex;flex-direction:column;width:min(36rem,100%);max-height:min(90vh,calc(100dvh - 2rem));overflow:hidden}.morning-dialog>h2[data-v-a4dc6bbd],.morning-dialog>.dialog-actions[data-v-a4dc6bbd]{flex:none}.morning-dialog-body[data-v-a4dc6bbd]{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:.5rem}.morning-dialog>.dialog-actions[data-v-a4dc6bbd]{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.75rem}.morning-dialog>.dialog-actions button[data-v-a4dc6bbd]{white-space:normal}.morning-dialog>.dialog-actions .primary-button[data-v-a4dc6bbd]{flex:1;min-width:12rem}@media(max-width:480px){.morning-dialog[data-v-a4dc6bbd]{padding:1rem}}.morning-dialog p[data-v-a4dc6bbd]{line-height:1.6}.clickable-student-row[data-v-7dd6e6b1]{cursor:pointer}.clickable-student-row[data-v-7dd6e6b1]:hover{background:var(--surface-hover, #f5f7fa)}.clickable-student-row[data-v-7dd6e6b1]:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}.clickable-student-row[aria-disabled=true][data-v-7dd6e6b1]{cursor:wait}.day-route{--dialog: #f7f9fc;--surface: #ffffff;--ink: #172236;--text: #445267;--muted: #69768a;--faint: #7b8798;--line: #dfe6ef;--line-soft: #edf1f5;--hover: #eef2f7;--accent: #2563eb;--accent-soft: #e5edfd;--on-strong: #ffffff;--dorm: #b7791f;--rec: #2f5fd0;--rec-soft: #cfdcfa;--manual: #0f766e;--other: #7c3aed;--outside: #e8ecf2;--unknown: #8a95a6;--unknown-soft: #dde2ea;--conflict: #c2410c;--future: rgb(23 34 54 / 7%);--ok: #166534;--warnc: #8a4b08;--bad: #9b2c2c;--leave: #2467d1;display:grid;gap:22px;color:var(--ink);font-size:14px;line-height:1.5}.day-route section+section{margin-top:0}.day-route .num{font-variant-numeric:tabular-nums}.day-route h3{margin:0 0 10px;font-size:15px;display:flex;justify-content:space-between;align-items:baseline;gap:8px}.day-route .box{border:1px solid var(--line);background:var(--surface)}.day-route .row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 13px;border-bottom:1px solid var(--line-soft)}.day-route .row:last-child{border-bottom:0}.day-route .row small{margin-left:8px;color:var(--faint)}.day-route .row .deduction-tag{color:#4f5d70}.day-route .text-button{border:0;background:none;padding:0;color:var(--accent);cursor:pointer;font:inherit}.day-route .text-button.bad{color:var(--bad)}.day-route .status{white-space:nowrap}.day-route .status[data-status=truancy]{color:var(--bad)}.day-route .status[data-status=late],.day-route .status[data-status=early_leave]{color:var(--warnc)}.day-route .status[data-status=present]{color:var(--ok)}.day-route .status[data-status=leave]{color:var(--leave)}.day-route .status[data-status=unknown],.day-route .status[data-status=pending]{color:var(--faint)}.day-route .arrive-note{font-size:13px;font-weight:500}.day-route .muted{color:var(--muted);font-size:12px}.day-route .arrive-note .muted{font-size:13px}.day-route .overview{padding:12px 13px 10px;display:grid;gap:4px;-webkit-user-select:none;user-select:none}.day-route .bar{position:relative}.day-route .bar.axis{height:16px}.day-route .bar.sess{height:22px;z-index:3}.day-route .bar.route{height:30px;cursor:crosshair;touch-action:none;border-radius:5px;background:var(--line-soft)}.day-route .tick{position:absolute;top:0;transform:translate(-50%);font-size:11px;color:var(--faint);white-space:nowrap}.day-route .sblk{position:absolute;top:1px;bottom:1px;border-radius:4px;display:grid;place-items:center;overflow:hidden;font-size:11px;font-weight:600;line-height:1;color:var(--c);white-space:nowrap;padding-inline:3px;background:color-mix(in srgb,var(--c) 20%,var(--surface));border:1px solid color-mix(in srgb,var(--c) 55%,transparent)}.day-route .sblk.guess{border-style:dashed}.day-route .legend .sw{display:inline-block;width:14px;height:10px;margin-right:4px;border-radius:3px;vertical-align:-1px;background:color-mix(in srgb,var(--c) 20%,var(--surface));border:1px solid color-mix(in srgb,var(--c) 55%,transparent)}.day-route .legend-title{color:var(--faint)}.day-route .seg{position:absolute;top:3px;bottom:3px;border-radius:4px;pointer-events:none;overflow:hidden}.day-route .k-record{background:var(--rec)}.day-route .k-leave{background:color-mix(in srgb,var(--leave) 35%,var(--surface));box-shadow:inset 0 0 0 1px var(--leave)}.day-route .k-presumed{background:repeating-linear-gradient(135deg,var(--rec-soft) 0 5px,var(--surface) 5px 9px);box-shadow:inset 0 0 0 1.5px var(--rec)}.day-route .k-other{background:var(--other)}.day-route .k-outside{background:var(--outside);box-shadow:inset 0 0 0 1px var(--line)}.day-route .k-unknown{background:repeating-linear-gradient(135deg,var(--unknown-soft) 0 3px,transparent 3px 7px);box-shadow:inset 0 0 0 1px var(--unknown)}.day-route .seg.open{outline:2px solid var(--ink);outline-offset:1px}.day-route .axis-break{position:absolute;top:23px;height:36px;z-index:5;pointer-events:none;background:linear-gradient(90deg,transparent,var(--surface) 35%,var(--surface) 65%,transparent)}.day-route .axis-break:before{content:"";position:absolute;top:2px;bottom:2px;left:50%;width:12px;transform:translate(-50%);background:var(--faint);opacity:.75;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='16'%3E%3Cpath d='M4 0q3.5 4 0 8t0 8M8.5 0q3.5 4 0 8t0 8' fill='none' stroke='%23000' stroke-width='1.2'/%3E%3C/svg%3E") center top / 12px 16px repeat-y;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='16'%3E%3Cpath d='M4 0q3.5 4 0 8t0 8M8.5 0q3.5 4 0 8t0 8' fill='none' stroke='%23000' stroke-width='1.2'/%3E%3C/svg%3E") center top / 12px 16px repeat-y}.day-route .future{position:absolute;top:-2px;bottom:-2px;right:0;background:var(--future);border-left:2px solid var(--accent);pointer-events:none}.day-route .draft{position:absolute;top:-3px;bottom:-3px;border:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 20%,transparent);border-radius:5px;pointer-events:none}.day-route .legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted);padding-top:4px}.day-route .legend-route{padding-top:0}.day-route .legend i{display:inline-block;width:16px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px}.day-route .row.pickable{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.day-route .row.pickable:hover{background:var(--hover)}.day-route .row.boarding{background:color-mix(in srgb,var(--dorm) 8%,var(--surface))}.day-route .row.picking{background:color-mix(in srgb,var(--accent) 12%,var(--surface))}.day-route .row.picked,.day-route .row.picked:hover{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.day-route .row .src{font-size:11px;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--dorm) 18%,var(--surface));color:var(--text)}.day-route .event-head{position:relative;min-height:42px;display:flex;align-items:flex-start;gap:6px;width:100%;padding:8px 11px 8px 13px;border:0;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.day-route .event-time{width:56px;flex:0 0 56px;padding-top:3px}.day-route .event-node.terminal{padding-bottom:16px}.day-route .event-head:hover{background:var(--hover)}.day-route .event-dot{position:relative;z-index:2;margin-top:4px;width:18px;height:18px;flex:0 0 18px;border-radius:50%}.day-route .event-actions{display:flex;flex-wrap:wrap;gap:8px;padding:0 13px 8px 99px}.day-route .rlist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}.day-route .ritem,.day-route .event-node{position:relative}.day-route .ritem{border-bottom:0}.day-route .state-rail,.day-route .node-rail{position:absolute;left:81px;width:6px;pointer-events:none;z-index:1}.day-route .state-rail{top:0;bottom:0}.day-route .node-rail.before{top:0;height:21px}.day-route .node-rail.after{top:21px;bottom:0}.day-route .state-rail.k-leave,.day-route .node-rail.k-leave{box-shadow:inset 1px 0 var(--leave),inset -1px 0 var(--leave)}.day-route .state-rail.k-outside,.day-route .node-rail.k-outside{box-shadow:inset 1px 0 var(--line),inset -1px 0 var(--line)}.day-route .event-actions{position:relative}.day-route .ritem .rail{visibility:hidden}.day-route .ritem:last-child{border-bottom:0}.day-route .rhead{width:100%;border:0;background:none;text-align:left;display:grid;grid-template-columns:58px 6px minmax(0,1fr) auto;gap:10px;padding:10px 13px;align-items:stretch;font:inherit;color:inherit;cursor:pointer}.day-route .rhead:hover{background:var(--hover)}.day-route .ritem.open .rhead{background:var(--accent-soft)}.day-route .rtime{white-space:nowrap;font-size:12px;color:var(--muted);line-height:1.35;display:flex;flex-direction:column;justify-content:space-between}.day-route .rtime>span{display:flex;flex-direction:column}.day-route .rtime .day{font-size:11px;color:var(--faint)}.day-route .rail{border-radius:3px;min-height:36px}.day-route .rmain{min-width:0;display:grid;gap:2px}.day-route .rmain strong{font-size:14px}.day-route .why{display:block;margin-top:4px;padding:5px 9px;border-radius:6px;font-size:12px;line-height:1.5;color:var(--text);background:var(--line-soft)}.day-route .why.gap{background:color-mix(in srgb,var(--warnc) 11%,var(--surface));border:1px solid color-mix(in srgb,var(--warnc) 22%,transparent)}.day-route .why.man{background:color-mix(in srgb,var(--manual) 10%,var(--surface))}.day-route .why.leave{color:var(--leave);background:color-mix(in srgb,var(--leave) 10%,var(--surface))}.day-route .rdetail .why{margin-top:0;font-size:13px}.day-route .tag{font-size:12px;color:var(--muted);white-space:nowrap;align-self:start;padding:1px 7px;border-radius:999px;background:var(--line-soft)}.day-route .tag.gap{color:var(--warnc);background:color-mix(in srgb,var(--warnc) 12%,var(--surface))}.day-route .tag.man{color:var(--manual);background:color-mix(in srgb,var(--manual) 12%,var(--surface))}.day-route .tag.leave{color:var(--leave);background:color-mix(in srgb,var(--leave) 12%,var(--surface))}.day-route .sesschips{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12px}.day-route .rdetail{padding:0 13px 12px 97px;display:grid;gap:8px;font-size:13px;color:var(--text)}.day-route .rdetail ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}.day-route .rdetail li{display:flex;justify-content:space-between;gap:10px}.day-route .warn{border:1px solid color-mix(in srgb,var(--conflict) 45%,transparent);background:color-mix(in srgb,var(--conflict) 8%,var(--surface));border-radius:7px;padding:8px 10px;font-size:13px;color:var(--text);display:grid;gap:6px}.day-route .warn ul{margin:0;padding-left:18px}.day-route .actions{display:flex;gap:8px;flex-wrap:wrap}.day-route .btn{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:6px 12px;font:inherit;color:inherit;cursor:pointer}.day-route .btn.primary{border-color:var(--accent);background:var(--accent);color:var(--on-strong)}.day-route .btn:disabled{cursor:default;opacity:.55}.day-route .fixbtn{display:inline-flex;gap:6px;align-items:center}.day-route .fixbtn.in{color:var(--ok)}.day-route .fixbtn.out{color:var(--bad)}.day-route .fixer{border:1px solid var(--accent);background:var(--surface);padding:13px;display:grid;gap:12px}.day-route .fixer-title{font-weight:600}.day-route .mode{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden}.day-route .mode button{border:0;border-right:1px solid var(--line);background:var(--surface);padding:7px 6px;font:inherit;font-size:13px;color:inherit;cursor:pointer}.day-route .mode button:last-child{border-right:0}.day-route .mode button[aria-pressed=true]{background:var(--accent);color:var(--on-strong)}.day-route .fields{display:flex;flex-wrap:wrap;gap:10px 14px}.day-route .fields label{display:grid;gap:2px;font-size:12px;color:var(--muted)}.day-route .fields input,.day-route .fields select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:5px 8px}.day-route .changes{display:grid;gap:3px;font-size:13px}.day-route .declare{padding:13px;border-top:1px solid var(--line-soft);display:grid;gap:10px;color:var(--muted);font-size:13px}.day-route .fact{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.day-route .route-toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--dialog);padding:8px 16px;border-radius:8px;font-size:13px;z-index:60}@media(max-width:520px){.day-route .mode{grid-template-columns:repeat(2,1fr)}}.unknown-student-cards[data-v-47e64b77]{display:grid;gap:1rem}.unknown-student-card[data-v-47e64b77]{border:1px solid #dce3ed;background:#fff;min-width:0}.unknown-student-heading[data-v-47e64b77],.unknown-student-state[data-v-47e64b77],.unknown-student-actions[data-v-47e64b77]{padding:.8rem 1rem}.unknown-student-heading strong[data-v-47e64b77]{display:block}.unknown-student-state[data-v-47e64b77],.unknown-student-actions[data-v-47e64b77]{border-top:1px solid #edf0f5}.unknown-student-state .source-state[data-v-47e64b77]{display:inline-block;padding:.25rem .5rem;border-radius:.35rem;background:#fff3dc;color:#950}.unknown-student-actions[data-v-47e64b77]{display:grid;grid-template-columns:4fr 4fr 3fr;gap:.5rem}.unknown-student-actions button[data-v-47e64b77]{width:100%;min-width:0;padding:.6rem .2rem}.attendance-filters .statistics-exclude-evening[data-v-58846785]{flex:0 0 auto;min-width:0;display:flex;flex-direction:row;align-items:center;gap:8px;align-self:flex-end;min-height:40px}.attendance-filters .statistics-exclude-evening input[data-v-58846785]{width:18px;height:18px;min-height:0;margin:0;padding:0}.student-statistics-table th[data-v-58846785]:nth-child(n+3),.student-statistics-table td[data-v-58846785]:nth-child(n+3){text-align:center}.statistics-sort[data-v-58846785]{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer}.statistic-count[data-v-58846785]{min-width:58px;padding:6px 9px;border:0;border-radius:5px;background:#edf4ff;color:#174f91;font:inherit;cursor:pointer}.statistic-count[data-v-58846785]:disabled{background:transparent;color:#647084;cursor:default}.statistics-pagination[data-v-58846785]{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:16px;color:#647084;font-size:14px}.student-statistics-dialog[data-v-58846785]{width:min(900px,calc(100% - 32px))}.statistics-dialog-heading[data-v-58846785]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.statistics-dialog-heading h2[data-v-58846785]{margin:0 0 5px}.statistics-dialog-heading p[data-v-58846785]{margin:0;color:#647084;font-size:13px}.student-statistics-dialog[data-v-58846785]{display:flex;flex-direction:column;overflow:hidden}.student-statistics-dialog .attendance-table-wrap[data-v-58846785]{flex:1 1 auto;min-height:0;overflow:auto}.student-statistics-dialog .attendance-table th[data-v-58846785]{position:sticky;top:0;z-index:1}.period-row[data-v-58846785]{cursor:pointer}.period-row:hover td[data-v-58846785],.period-row:focus-visible td[data-v-58846785]{background:#f3f7fd}.period-row[data-v-58846785]:focus-visible{outline:2px solid #174f91;outline-offset:-2px}.period-row.is-loading td[data-v-58846785]{color:#647084}.statistics-dialog-heading>button[data-v-58846785]{border:0;background:none;color:#566477;cursor:pointer}@media(max-width:640px){.statistics-pagination[data-v-58846785]{justify-content:space-between}.statistics-pagination span[data-v-58846785]{text-align:center}.student-statistics-dialog[data-v-58846785]{width:min(100%,calc(100% - 20px))}}.conduct-click-row[data-v-8dc5e54a]{cursor:pointer}.conduct-click-row[data-v-8dc5e54a]:hover,.conduct-click-row[data-v-8dc5e54a]:focus-visible{background:#edf3fb}.conduct-click-row[data-v-8dc5e54a]:focus-visible{outline:2px solid #285b9c;outline-offset:-2px}.conduct-detail-body[data-v-8dc5e54a]{background:#f6f8fb}.conduct-timeline[data-v-8dc5e54a]{list-style:none;margin:0;padding:24px 24px 24px 32px;background:#fff;border:1px solid #dce4ef}.conduct-timeline>li[data-v-8dc5e54a]{position:relative;border-left:1px solid #dfe7f1;padding:0 0 26px 24px}.conduct-timeline>li[data-v-8dc5e54a]:last-child{border-color:transparent;padding-bottom:0}.conduct-stage-marker[data-v-8dc5e54a]{position:absolute;left:-9px;top:3px;width:17px;height:17px;display:flex;align-items:center;justify-content:center;background:#fff;color:#19713a;font-weight:700;line-height:1}[data-state=pending]>.conduct-stage-marker[data-v-8dc5e54a]:after{content:"";width:9px;height:9px;border-radius:50%;background:#416c9c}[data-state=overdue]>.conduct-stage-marker[data-v-8dc5e54a]{border-radius:50%;color:#fff;background:#c13b38;font-size:13px}[data-state=void]>.conduct-stage-marker[data-v-8dc5e54a]{border-radius:50%;color:#8490a1;background:#edf0f4}.conduct-stage-heading[data-v-8dc5e54a]{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px 18px}.conduct-stage-heading time[data-v-8dc5e54a]{font-size:13px;color:#77869d}.conduct-stage-evidence[data-v-8dc5e54a]{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;margin-top:12px;color:#697a91}.conduct-timeline .manage-hint[data-v-8dc5e54a]{margin:10px 0 0}@media(max-width:600px){.conduct-timeline[data-v-8dc5e54a]{padding:18px 14px 18px 24px}}.dialog-header[data-v-a59ea3c9]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-a59ea3c9]{margin:0}.dialog-header button[data-v-a59ea3c9]{border:0;background:none;color:#566477;cursor:pointer}.dialog-field-row[data-v-a59ea3c9]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.weekday-field[data-v-a59ea3c9]{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 14px}.weekday-field legend[data-v-a59ea3c9]{padding:0;margin-bottom:6px}.weekday-field label[data-v-a59ea3c9]{display:inline-flex;align-items:center;gap:4px;font-weight:400}.override-hint[data-v-d26429d8]{margin:0 0 12px;color:#566477;font-size:14px}.override-note[data-v-d26429d8]{margin:0 0 8px;color:#566477;font-size:13px}.override-actions[data-v-d26429d8]{display:flex;align-items:center;gap:12px;white-space:nowrap}.override-priority[data-v-d26429d8]{display:flex;align-items:center;gap:4px;white-space:nowrap}.override-priority span[data-v-d26429d8]{min-width:1.5em}.override-move[data-v-d26429d8]{display:inline-grid;place-items:center;width:28px;height:28px;border:1px solid #d6dde8;border-radius:6px;background:#fff;color:#334155;cursor:pointer;padding:0}.override-move[data-v-d26429d8]:disabled{opacity:.35;cursor:default}.override-history-toggle[data-v-d26429d8]{margin-top:12px}.dialog-header[data-v-d26429d8]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-d26429d8]{margin:0}.dialog-header button[data-v-d26429d8]{border:0;background:none;color:#566477;cursor:pointer}.override-dialog[data-v-d26429d8]{width:min(100%,920px);max-height:calc(100dvh - 40px);overflow:hidden;display:flex;flex-direction:column}.override-dialog>.dialog-header[data-v-d26429d8],.override-dialog>.dialog-actions[data-v-d26429d8]{flex:none}.override-dialog>.dialog-actions[data-v-d26429d8]{margin-top:12px}.override-body[data-v-d26429d8]{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:0 -24px;padding:0 24px}.override-cell-dialog[data-v-d26429d8]{width:min(100%,520px)}.override-meta[data-v-d26429d8]{border:0;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.override-wide[data-v-d26429d8]{grid-column:1/-1}.override-first[data-v-d26429d8]{grid-column:1}.override-meta .dialog-field[data-v-d26429d8],.override-range .dialog-field[data-v-d26429d8]{margin-top:0}.override-meta[data-v-d26429d8]>*,.override-range[data-v-d26429d8]>*{min-width:0}.override-meta select[data-v-d26429d8],.override-meta input[data-v-d26429d8],.override-range select[data-v-d26429d8]{width:100%;min-width:0;box-sizing:border-box}.override-grid-wrap[data-v-d26429d8]{overflow-x:auto;margin:8px 0}.override-grid[data-v-d26429d8]{border-collapse:collapse;width:100%;min-width:560px;table-layout:fixed}.override-grid th[data-v-d26429d8]{font-size:13px;color:#566477;padding:4px;font-weight:600}.override-grid tbody th[data-v-d26429d8]{width:60px;text-align:left}.override-grid td[data-v-d26429d8]{padding:2px}.override-cell[data-v-d26429d8]{width:100%;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border:1px dashed #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:12px;line-height:1.3;cursor:pointer;padding:4px;overflow:hidden}.override-cell span[data-v-d26429d8]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.override-cell.filled[data-v-d26429d8]{border-style:solid;border-color:#93c5fd;background:#eff6ff}.override-cell.away[data-v-d26429d8]{border-style:solid;border-color:#cbd5e1;background:#f1f5f9;color:#64748b}.override-cell.active[data-v-d26429d8]{outline:2px solid #2563eb}.override-cell[data-v-d26429d8]:disabled{cursor:default}.override-empty[data-v-d26429d8]{color:#94a3b8;font-size:16px}.override-cell-backdrop[data-v-d26429d8]{z-index:30}.override-days[data-v-d26429d8]{border:0;padding:0;margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px 14px}.override-days legend[data-v-d26429d8]{padding:0;margin-bottom:6px}.override-days label[data-v-d26429d8]{display:inline-flex;align-items:center;gap:4px;font-weight:400}.override-range[data-v-d26429d8]{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.override-cell[data-v-d26429d8]{-webkit-user-select:none;user-select:none}.override-cell-actions[data-v-d26429d8]{flex-wrap:wrap}.override-kind[data-v-d26429d8]{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:8px}.override-kind label[data-v-d26429d8]{display:inline-flex;align-items:center;gap:4px}.override-conflicts[data-v-d26429d8]{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:10px 12px;margin:8px 0;font-size:13px}.override-conflicts ul[data-v-d26429d8]{margin:6px 0 0;padding-left:18px}@media(max-width:640px){.modal-backdrop[data-v-d26429d8]:has(>.override-dialog){padding:0}.override-dialog[data-v-d26429d8]{width:100%;height:100dvh;max-height:100dvh;border-radius:0;padding:16px}.override-body[data-v-d26429d8]{margin:0 -16px;padding:0 16px}.override-grid[data-v-d26429d8]{min-width:0}.override-grid tbody th[data-v-d26429d8]{width:40px;font-size:12px}.override-grid th[data-v-d26429d8]{padding:2px}.override-cell[data-v-d26429d8]{min-height:44px;font-size:11px;padding:2px}}.expression[data-v-03c6bcaa]{font-size:12px;white-space:pre-wrap;word-break:break-all}.activity-heading[data-v-03c6bcaa]{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:18px}.activity-heading h3[data-v-03c6bcaa],.teacher-title[data-v-03c6bcaa]{margin:22px 0 10px;font-size:15px}.activity-filters[data-v-03c6bcaa]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.activity-filters label[data-v-03c6bcaa]{display:grid;gap:5px;color:#5d697b;font-size:13px}.activity-filters input[data-v-03c6bcaa]{min-height:38px;padding:6px 9px;color:#162033;border:1px solid #cfd6e1;border-radius:6px}.teacher-row[data-v-03c6bcaa]{cursor:pointer}.teacher-row.active[data-v-03c6bcaa]{background:#eef4ff}.muted[data-v-03c6bcaa]{color:#6b7686}.hint[data-v-03c6bcaa]{margin:12px 0;font-size:13px}.error-cell[data-v-03c6bcaa]{color:#a8321f}.day-block[data-v-03c6bcaa]{margin-bottom:18px}.day-block h4[data-v-03c6bcaa]{margin:14px 0 8px;font-size:14px;color:#33415c}.message[data-v-03c6bcaa]{margin-bottom:10px;padding:10px 12px;border:1px solid #e1e6ee;border-radius:8px;background:#fbfcfe}.message-meta[data-v-03c6bcaa]{display:flex;flex-wrap:wrap;gap:12px;color:#5d697b;font-size:12px}.message-text[data-v-03c6bcaa]{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.carried[data-v-03c6bcaa]{margin:6px 0 0;font-size:12px}.chat-inbox[data-v-a43a1490]{margin-bottom:16px}.chat-inbox summary[data-v-a43a1490]{cursor:pointer}.chat-inbox td[data-v-a43a1490]{vertical-align:top;overflow-wrap:anywhere}.chat-inbox .table-scroll[data-v-a43a1490]{overflow-x:auto}.chat-layout[data-v-a43a1490]{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px;align-items:start}.chat-sessions[data-v-a43a1490]{padding:14px;background:#fff;border:1px solid #dfe6ef}.chat-session-list[data-v-a43a1490]{display:grid;gap:6px;margin:12px 0 0;padding:0;list-style:none}.chat-session[data-v-a43a1490]{width:100%;display:grid;gap:4px;padding:10px 12px;color:#28313f;text-align:left;background:#f8fafc;border:1px solid transparent;cursor:pointer}.chat-session[data-v-a43a1490]:hover{background:#eef3fa}.chat-session.active[data-v-a43a1490]{background:#eef4ff;border-color:#b7cdf0}.chat-session strong[data-v-a43a1490]{font-size:15px;font-weight:650}.chat-session-id[data-v-a43a1490]{color:#7a8697;font-size:12px}.chat-session-meta[data-v-a43a1490]{color:#68758a;font-size:12px;line-height:1.5}.chat-session-error[data-v-a43a1490]{color:#a8321f;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.chat-timeline[data-v-a43a1490]{min-width:0;padding:16px 18px;background:#fff;border:1px solid #dfe6ef}.chat-timeline-heading[data-v-a43a1490]{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.chat-timeline-heading h2[data-v-a43a1490]{margin:0;font-size:18px}.chat-turn[data-v-a43a1490]{padding:14px 0;border-top:1px solid #e7ecf2}.chat-turn-stale[data-v-a43a1490]{opacity:.55}.chat-turn-head[data-v-a43a1490]{display:flex;align-items:center;gap:10px;margin-bottom:10px;color:#7a8697;font-size:12px}.chat-turn-tag[data-v-a43a1490]{padding:2px 7px;color:#6b7075;background:#eef1f4;border-radius:3px}.chat-bubble[data-v-a43a1490]{max-width:78%;margin:0 0 8px;padding:9px 12px;font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.chat-bubble-user[data-v-a43a1490]{margin-left:auto;color:#10305e;background:#e8f1ff}.chat-bubble-assistant[data-v-a43a1490]{margin-right:auto;background:#f4f7fb}.chat-reasoning[data-v-a43a1490]{max-width:78%;margin:0 0 6px;padding-left:12px;border-left:2px dashed #d7e0eb}.chat-reasoning-summary[data-v-a43a1490]{padding:3px 0;color:#7a8697;font-size:12.5px;text-align:left;background:transparent;border:0;cursor:pointer}.chat-reasoning-summary[data-v-a43a1490]:hover{color:#33506f}.chat-reasoning-text[data-v-a43a1490]{margin:4px 0 8px;padding:8px 10px;color:#5d697b;font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;background:#fafbfd;border:1px solid #eef1f5}.chat-tool[data-v-a43a1490]{margin:0 0 8px;padding-left:12px;border-left:2px solid #d7e0eb}.chat-tool-summary[data-v-a43a1490]{display:block;width:100%;padding:5px 0;color:#33506f;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;text-align:left;background:transparent;border:0;cursor:pointer}.chat-tool-summary[data-v-a43a1490]:hover{color:#1f5db8}.chat-tool-detail[data-v-a43a1490]{margin:4px 0 10px;padding:10px 12px;background:#f8fafc;border:1px solid #e7ecf2}.chat-tool-detail dt[data-v-a43a1490]{margin-top:8px;color:#68758a;font-size:12px}.chat-tool-detail dt[data-v-a43a1490]:first-child{margin-top:0}.chat-tool-detail dd[data-v-a43a1490]{margin:4px 0 0}.chat-tool-detail code[data-v-a43a1490]{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.chat-turn-tokens[data-v-a43a1490]{margin-top:10px;color:#7a8697;font-size:12px}.chat-turns[data-v-a43a1490]{max-height:calc(100vh - 260px);min-height:320px;overflow-y:auto;overscroll-behavior:contain}.chat-turns>.chat-turn[data-v-a43a1490]:first-of-type{border-top:0}.chat-load-earlier[data-v-a43a1490]{display:block;margin:0 auto 8px}.chat-usage-summary[data-v-a43a1490]{padding:0;color:inherit;text-align:left;background:none;border:0;font:inherit;cursor:pointer}.chat-usage-summary[data-v-a43a1490]:hover{color:#1f5db8}.chat-usage-table[data-v-a43a1490]{margin-top:6px;border-collapse:collapse;font-size:12px}.chat-usage-table th[data-v-a43a1490],.chat-usage-table td[data-v-a43a1490]{padding:3px 10px 3px 0;text-align:left;white-space:nowrap}.chat-turn-call-error[data-v-a43a1490]{margin-left:8px;color:#a8321f}.chat-block-title[data-v-a43a1490]{margin:22px 0 10px;font-size:15px}.chat-day-field[data-v-a43a1490]{display:flex;align-items:flex-end;gap:10px}.chat-day-field label[data-v-a43a1490]{display:grid;gap:5px;color:#5d697b;font-size:13px}.beta-add[data-v-a43a1490]{flex:none}.assistant-settings[data-v-a43a1490]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 18px}.assistant-settings label[data-v-a43a1490]{display:grid;gap:5px;color:#5d697b;font-size:13px}.assistant-settings input[type=number][data-v-a43a1490]{width:120px}.assistant-settings .assistant-check[data-v-a43a1490]{display:inline-flex;align-items:center;gap:6px}.assistant-settings .assistant-check input[data-v-a43a1490]{min-height:auto}.beta-add button[data-v-a43a1490]{white-space:nowrap}.chat-day-field input[data-v-a43a1490]{min-height:38px;padding:6px 9px;color:#162033;border:1px solid #cfd9e6;background:#fff}.chat-summary[data-v-a43a1490]{margin:0 0 14px;color:#4b5768;font-size:14px}.chat-error-cell[data-v-a43a1490]{color:#a8321f;overflow-wrap:anywhere}@media(max-width:900px){.chat-layout[data-v-a43a1490]{grid-template-columns:1fr}.chat-bubble[data-v-a43a1490],.chat-reasoning[data-v-a43a1490]{max-width:100%}}.model-mono[data-v-d97cca23]{max-width:320px;overflow-wrap:anywhere;font-size:12px}.model-tag[data-v-d97cca23]{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;color:#1f5db8;background:#e8f0fc;font-size:12px}.model-note[data-v-d97cca23]{margin-top:4px;color:#7a8697;font-size:12px}.model-dialog[data-v-d97cca23]{width:min(100%,620px)}.model-toolbar[data-v-d97cca23]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.model-toolbar .manage-hint[data-v-d97cca23]{margin:0}.model-provider+.model-provider[data-v-d97cca23]{margin-top:32px}.model-provider-state[data-v-d97cca23]{margin-left:8px;font-size:13px;font-weight:400}.model-dialog-grid[data-v-d97cca23]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-top:16px}.model-dialog-grid .dialog-field+.dialog-field[data-v-d97cca23]{margin-top:0}.model-check[data-v-d97cca23]{display:flex;align-items:center;gap:8px;margin-top:14px;color:#4f5d70;font-size:14px}.model-check input[data-v-d97cca23]{min-height:auto}.model-usage-total[data-v-d97cca23]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:16px}.model-usage-total div[data-v-d97cca23]{display:grid;gap:4px;padding:12px 14px;border:1px solid #e7ecf2;border-radius:8px}.model-usage-total span[data-v-d97cca23]{color:#7a8697;font-size:13px}.model-usage-total strong[data-v-d97cca23]{font-size:18px}.oauth-consent[data-v-3560e4f7]{max-width:560px;margin:0 auto;padding:24px 20px;border:1px solid #dbe3ee;border-radius:12px;background:#fff}.oauth-consent-head[data-v-3560e4f7]{display:flex;align-items:center;gap:10px;color:#2467d1}.oauth-consent-head h1[data-v-3560e4f7]{margin:0;color:#1f2937;font-size:19px}.oauth-consent-note[data-v-3560e4f7]{margin:14px 0;color:#536073;font-size:14px;line-height:1.6}.oauth-consent-scopes[data-v-3560e4f7]{display:grid;gap:10px;margin:0;padding:0;list-style:none}.oauth-consent-scopes label[data-v-3560e4f7]{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer}.oauth-consent-scopes input[data-v-3560e4f7]{margin-top:3px}.oauth-consent-scopes span[data-v-3560e4f7]{display:grid;gap:4px}.oauth-consent-scopes small[data-v-3560e4f7]{color:#64748b;font-size:13px;line-height:1.5}.oauth-consent-actions[data-v-3560e4f7]{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.skills-section[data-v-6c839412]{padding:22px 0;border-top:1px solid #dfe6ef}.skills-section[data-v-6c839412]:first-of-type{border-top:0}.skills-section-heading[data-v-6c839412]{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.skills-section h2[data-v-6c839412]{margin:0;font-size:19px}.skills-section p[data-v-6c839412]{margin:7px 0 0;color:#68758a;line-height:1.55}.skills-section ul[data-v-6c839412]{margin:14px 0 0;padding-left:22px;color:#334155;line-height:1.8}.skills-section .archive-meta[data-v-6c839412]{font-size:12px;overflow-wrap:anywhere}.skills-value[data-v-6c839412]{display:block;margin-top:14px;padding:12px 14px;overflow-wrap:anywhere;border:1px solid #dfe6ef;background:#f8fafc}.skills-prompt[data-v-6c839412]{width:100%;margin-top:14px;line-height:1.6;background:#f8fafc}@media(max-width:640px){.skills-section-heading[data-v-6c839412]{align-items:stretch;flex-direction:column}.skills-section-heading .primary-button[data-v-6c839412],.skills-section-heading .secondary-button[data-v-6c839412]{align-self:flex-start}}.assistant-badge[data-v-778f0d80]{margin-left:4px;color:#2467d1;font-size:13px;font-weight:600}.assistant-section[data-v-778f0d80]{padding:22px 0;border-top:1px solid #dfe6ef}.assistant-section[data-v-778f0d80]:first-of-type{border-top:0}.assistant-section-heading[data-v-778f0d80]{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.assistant-section h2[data-v-778f0d80]{margin:0;font-size:19px}.assistant-section p[data-v-778f0d80]{margin:7px 0 0;color:#68758a;line-height:1.55}.assistant-section .assistant-warning[data-v-778f0d80]{color:#b45309}.assistant-quiet[data-v-778f0d80]{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:14px}.assistant-quiet input[type=checkbox][data-v-778f0d80]{min-height:auto}.assistant-quiet label[data-v-778f0d80]{display:inline-flex;align-items:center;gap:8px}@media(max-width:640px){.assistant-section-heading[data-v-778f0d80]{align-items:stretch;flex-direction:column}.assistant-section-heading button[data-v-778f0d80]{align-self:flex-start}}.mcp-call-args[data-v-5d9cad12],.sso-client-mono[data-v-8eb2fe47]{max-width:320px;overflow-wrap:anywhere;font-size:12px}.leave-unavailable[data-v-e3953cb5]{margin-top:20px;padding:24px;border:1px solid #dce3ec;border-radius:9px;text-align:center}.leave-unavailable p[data-v-e3953cb5]{margin:0 0 16px;color:#59677a}.leave-identity[data-v-e3953cb5]{display:flex;align-items:baseline;gap:12px;margin-top:18px;padding-bottom:14px;border-bottom:1px solid #dfe5ed}.leave-identity span[data-v-e3953cb5]{color:#667386;font-size:14px}.student-leave-form[data-v-e3953cb5]{display:grid;gap:18px;max-width:760px;margin-top:20px}.student-leave-form label[data-v-e3953cb5]{display:grid;gap:7px;color:#344157;font-size:14px;font-weight:600}.student-leave-form input[data-v-e3953cb5],.student-leave-form select[data-v-e3953cb5],.student-leave-form textarea[data-v-e3953cb5]{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#1d2939;font:inherit;font-weight:400}.student-leave-form input[data-v-e3953cb5],.student-leave-form select[data-v-e3953cb5]{min-height:42px;padding:8px 10px}.student-leave-form textarea[data-v-e3953cb5]{padding:10px;resize:vertical}.leave-attachment-field small[data-v-e3953cb5]{color:#718096;font-size:12px;font-weight:400}.leave-attachment-progress[data-v-e3953cb5]{display:flex;align-items:center;gap:7px;margin:-7px 0 0;color:#526177;font-size:13px}.leave-attachment-list[data-v-e3953cb5]{display:grid;gap:7px;margin:-7px 0 0;padding:0;list-style:none}.leave-attachment-list li[data-v-e3953cb5]{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:9px 10px;border:1px solid #dce3ec;border-radius:7px;background:#fff}.leave-attachment-list li>span[data-v-e3953cb5]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leave-attachment-list li>small[data-v-e3953cb5]{color:#718096;font-size:12px}.leave-attachment-list button[data-v-e3953cb5]{width:30px;height:30px;display:grid;place-items:center;padding:0;color:#657286;border:0;border-radius:6px;background:transparent;cursor:pointer}.leave-attachment-list button[data-v-e3953cb5]:hover:not(:disabled){color:#9b2c2c;background:#fff0ef}.leave-time-grid[data-v-e3953cb5]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.leave-time-preview[data-v-e3953cb5]{margin:-4px 0 0;color:#315f9f;font-size:14px}.leave-submit[data-v-e3953cb5]{display:flex;justify-content:flex-end}@media(max-width:640px){.leave-time-grid[data-v-e3953cb5]{grid-template-columns:1fr}.leave-submit .primary-button[data-v-e3953cb5]{width:100%}}.dialog-header[data-v-76d5e867]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-76d5e867]{margin:0}.dialog-header button[data-v-76d5e867]{border:0;background:none;color:#566477;cursor:pointer}td .link-button+.link-button[data-v-76d5e867]{margin-left:12px}.dialog-header[data-v-c03ba650]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-c03ba650]{margin:0}.dialog-header button[data-v-c03ba650]{border:0;background:none;color:#566477;cursor:pointer}.cadre-hint[data-v-c03ba650]{color:#566477;margin:0 0 12px}.cadre-review[data-v-c03ba650]{margin-bottom:24px}.cadre-review-heading[data-v-c03ba650]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.cadre-review-heading h2[data-v-c03ba650]{margin:0;font-size:17px}.cadre-stale[data-v-c03ba650]{display:block;color:#b45309;font-size:13px}.dialog-header[data-v-92864a51]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-92864a51]{margin:0}.dialog-header button[data-v-92864a51]{border:0;background:none;color:#566477;cursor:pointer}.conduct-hint[data-v-92864a51]{color:#566477;margin:0 0 12px}.score-direction[data-v-92864a51]{display:flex;gap:16px}.dialog-header[data-v-f0881245]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-f0881245]{margin:0}.dialog-header button[data-v-f0881245]{border:0;background:none;color:#566477;cursor:pointer}.dialog-field-row[data-v-f0881245]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.leave-ineffective[data-v-cc08648c]{color:#a33}.mobile-leaves-list[data-v-cc08648c]{display:none}@media(max-width:640px){.desktop-leaves-table[data-v-cc08648c]{display:none}.mobile-leaves-list[data-v-cc08648c]{display:block;border:1px solid #dbe3ee;background:#fff}.mobile-leave-row[data-v-cc08648c]{padding:16px;border-bottom:1px solid #e2e8f0}.mobile-leave-row[data-v-cc08648c]:last-child{border-bottom:0}.mobile-leave-heading[data-v-cc08648c]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.mobile-leave-student[data-v-cc08648c]{min-width:0}.mobile-leave-student strong[data-v-cc08648c],.mobile-leave-student span[data-v-cc08648c],.mobile-leave-status strong[data-v-cc08648c],.mobile-leave-status span[data-v-cc08648c]{display:block}.mobile-leave-student span[data-v-cc08648c]{margin-top:3px;color:#718096;font-size:13px}.mobile-leave-status[data-v-cc08648c]{flex:none;text-align:right}.mobile-leave-status strong[data-v-cc08648c]{color:#1769d2;font-size:15px}.mobile-leave-status span[data-v-cc08648c]{margin-top:5px;color:#4b6851;font-size:14px}.mobile-leave-status .leave-ineffective[data-v-cc08648c]{color:#a33}.mobile-leave-time[data-v-cc08648c],.mobile-leave-reason[data-v-cc08648c]{margin:12px 0 0;color:#566477;font-size:14px}.mobile-leave-reason span[data-v-cc08648c]{display:block;margin-top:4px;color:#718096}.mobile-leave-actions[data-v-cc08648c]{display:flex;justify-content:flex-end;margin-top:10px}.mobile-leaves-list>.table-empty[data-v-cc08648c]{margin:0;padding:24px 16px}}.dialog-header[data-v-d96ed556]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-d96ed556]{margin:0}.dialog-header button[data-v-d96ed556]{border:0;background:none;color:#566477;cursor:pointer}.dialog-header[data-v-8b87cee5]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.dialog-header h2[data-v-8b87cee5]{margin:0}.dialog-header button[data-v-8b87cee5]{border:0;background:none;color:#566477;cursor:pointer}.stay-over-all[data-v-8b87cee5]{margin-left:12px}.attendance-filters label.stay-over-toggle[data-v-8b87cee5]{display:flex;flex:0 0 auto;min-width:0;align-items:center;gap:8px;min-height:40px;white-space:nowrap}.attendance-filters .stay-over-toggle input[data-v-8b87cee5]{width:16px;height:16px;min-height:0;margin:0;padding:0}.stay-over-nights[data-v-8b87cee5]{border:0;padding:0;margin:0 0 12px;display:flex;flex-wrap:wrap;gap:8px 16px}.stay-over-nights legend[data-v-8b87cee5]{margin-bottom:6px}.stay-over-nights label[data-v-8b87cee5]{display:flex;align-items:center;gap:6px}.pass-tabs[data-v-ae92e652]{display:flex;gap:8px;margin-bottom:20px}.pass-tabs button[data-v-ae92e652]{padding:8px 16px;border:1px solid #d9dfe7;background:#fff;border-radius:6px;cursor:pointer}.pass-tabs button[aria-pressed=true][data-v-ae92e652]{background:#edf3ff;border-color:#3064b0;color:#174786}.pass-dialog-heading[data-v-ae92e652]{display:flex;justify-content:space-between;align-items:center;gap:12px}.pass-dialog-heading h2[data-v-ae92e652]{margin:0 0 12px}.pass-dialog-heading button[data-v-ae92e652]{border:0;background:none;cursor:pointer}.pass-fields[data-v-ae92e652]{border:0;margin:0;padding:0}.pass-help[data-v-ae92e652]{color:#596777;font-size:13px}.pass-qr[data-v-ae92e652]{display:block;margin:16px auto;max-width:100%;height:auto}.pass-camera[data-v-ae92e652]{width:100%;max-height:50vh;background:#111}.pass-detail dl[data-v-ae92e652]{display:grid;grid-template-columns:auto 1fr;gap:10px 16px}.pass-detail dt[data-v-ae92e652]{color:#596777}.pass-detail dd[data-v-ae92e652]{margin:0;overflow-wrap:anywhere}.pass-detail p[data-v-ae92e652]{overflow-wrap:anywhere}:root{font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#162033;background:#f4f7fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{min-width:320px;min-height:100%;margin:0}body{min-height:100vh}body.manage-drawer-open{overflow:hidden}button,a{font:inherit}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid rgb(37 99 235 / 25%);outline-offset:3px}.workbench-shell{min-height:100vh;display:flex;flex-direction:column}.workbench-shell .workspace{flex:1}.home-success-toast{position:fixed;top:82px;left:50%;z-index:15;width:max-content;max-width:calc(100vw - 32px);display:flex;align-items:center;gap:9px;padding:12px 16px;color:#237a35;border:1px solid #cde8c8;border-radius:8px;background:#f0faeb;box-shadow:0 10px 28px #1f442829;transform:translate(-50%);font-size:14px;font-weight:600}.home-toast-enter-active,.home-toast-leave-active{transition:opacity .18s ease,transform .18s ease}.home-toast-enter-from,.home-toast-leave-to{opacity:0;transform:translate(-50%,-14px)}.manage-shell{min-height:100vh;background:#f4f7fb}.manage-header{position:sticky;top:0;z-index:20;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 26px;color:#202938;background:#fff;border-bottom:1px solid #dfe6ef}.manage-header-brand{display:flex;align-items:center;gap:10px}.manage-header-brand>strong{font-size:19px;font-weight:650}.brand-icon{width:32px;height:32px;flex:0 0 auto;object-fit:contain}.manage-menu-button,.manage-drawer-heading,.manage-drawer-backdrop{display:none}.manage-header .account-name{color:#5f6c7f}.manage-header .icon-button{color:#68758a;background:#f3f6fa}.manage-header .icon-button:hover:not(:disabled){background:#e8edf4}.manage-header .account-menu-trigger{color:#5f6c7f}.manage-header .account-menu-trigger:hover,.manage-header .account-menu-trigger[aria-expanded=true]{background:#f3f6fa}.manage-body{min-height:calc(100vh - 64px);display:flex}.manage-sidebar{width:220px;flex:0 0 220px;position:sticky;top:64px;align-self:flex-start;height:calc(100vh - 64px);display:flex;flex-direction:column;overflow-y:auto;padding:20px 12px;background:#fff;border-right:1px solid #dfe6ef}.manage-sidebar nav{display:grid;gap:5px}.manage-sidebar a{min-height:44px;display:flex;align-items:center;gap:10px;padding:9px 12px;color:#536073;border-radius:7px;text-decoration:none}.manage-sidebar a:hover{background:#f3f6fa}.manage-sidebar a.active{color:#1f5db8;background:#edf4ff;font-weight:600}.manage-nav-group{margin-top:6px;padding-top:6px;border-top:1px solid #edf1f5}.manage-nav-group:first-child{margin-top:0;padding-top:0;border-top:0}.manage-nav-group>div{min-height:42px;display:flex;align-items:center;gap:10px;padding:8px 12px;color:#3f4c60;font-weight:600}.manage-nav-group>a{padding-left:40px}.manage-workspace{min-width:0;width:100%;padding:32px clamp(22px,4vw,52px) 60px}.manage-workspace .page-heading{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}.page-heading-hint{margin:6px 0 0;color:#68758a;font-size:14px;line-height:1.55}.table-pager{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;color:#68758a;font-size:14px}.table-pager>div{display:flex;align-items:center;gap:14px}.table-pager button{min-height:36px;padding:7px 14px;color:#455469;border:1px solid #cbd5e1;border-radius:7px;background:#fff;cursor:pointer}.table-pager button:hover:not(:disabled){background:#f3f6fa}.table-pager button:disabled{cursor:not-allowed;opacity:.5}.manage-muted-cell{color:#7b8798}.dialog-error{margin:16px 0 0}.schedule-page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-picker-toggle{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid #cbd5e1;border-radius:8px;color:#315f9e;background:#fff;cursor:pointer}.schedule-picker-toggle:hover{background:#f3f6fa}.schedule-picker{display:grid;justify-items:center;gap:14px;max-width:760px;margin:0 auto}.schedule-picker-title{margin:0;color:#172236;font-size:20px}.schedule-picker-field{width:min(100%,420px)}.schedule-picker-field select,.schedule-picker-field input{width:100%;min-height:42px;padding:8px 11px;border:1px solid #cbd5e1;border-radius:8px;color:#334155;background:#fff;font-size:14px}.schedule-picker-field select:disabled{color:#647084;background:#f8fafc}.schedule-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;width:100%}.schedule-picker-option{min-height:44px;padding:9px 11px;border:1px solid #dfe6ef;border-radius:8px;color:#334155;background:#fff;font-size:14px;cursor:pointer}.schedule-picker-option:hover{border-color:#9ab9e9;background:#f8fbff}.schedule-picker-option.is-mine{border-color:#2467d1;color:#1d4ed8;font-weight:600}.schedule-view-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.schedule-view-bar>strong{color:#172236;font-size:17px}.schedule-week-field{display:grid;gap:7px;color:#4f5d70;font-size:14px}.schedule-query-table-wrap{overflow:auto;max-height:70vh;-webkit-overflow-scrolling:touch;border:1px solid #dfe6ef;background:#fff}.schedule-query-table{width:100%;height:1px;border-collapse:separate;border-spacing:0;table-layout:fixed}.schedule-query-table th,.schedule-query-table td{padding:5px 3px;border-right:1px solid #e7ecf2;border-bottom:1px solid #e7ecf2;vertical-align:top}.schedule-query-table tr:last-child>*{border-bottom:0}.schedule-query-table tr>*:last-child{border-right:0}.schedule-query-table thead th{position:sticky;top:0;z-index:2;padding:7px 2px;color:#5d697b;background:#f8fafc;font-size:12px;line-height:1.3}.schedule-query-table thead th:first-child{left:0;z-index:3;width:40px}.schedule-query-table thead th small{display:block;margin-top:2px;color:#8b98a9;font-size:10px;font-weight:400}.schedule-query-table tbody th{position:sticky;left:0;z-index:1;color:#3f4c60;background:#f8fafc;text-align:center;font-size:11px;line-height:1.3}.schedule-query-table tbody th strong{display:block}.schedule-query-table tbody tr{height:76px}.schedule-query-table tbody td.has-lesson{height:100%;padding:2px;vertical-align:top}.schedule-query-stack{height:100%;display:flex;flex-direction:column;gap:4px}.schedule-query-lesson{flex:1 1 auto;box-sizing:border-box;padding:5px 4px;border-radius:6px;background:#edf4ff;overflow-wrap:anywhere;display:flex;flex-direction:column;justify-content:flex-start}.schedule-query-lesson>*{flex-shrink:0}.schedule-query-lesson.is-changed{background:#fdf3e2}.schedule-query-lesson strong,.schedule-query-lesson span{display:block}.schedule-query-lesson strong{color:#172236;font-size:12px;line-height:1.25}.schedule-query-lesson span{margin-top:2px;color:#647084;font-size:11px;line-height:1.25}.schedule-query-lesson span+span{margin-top:1px}.schedule-query-link{display:block;margin-top:2px;padding:4px 0;border-radius:6px;color:#1f5db8;font-size:11px;line-height:1.4;text-decoration:none}.schedule-query-link+.schedule-query-link{margin-top:0}.schedule-query-link:hover{background:#dce9ff}.schedule-query-change{display:block;margin-top:4px;color:#b26a00;font-size:11px;font-style:normal;font-weight:600;line-height:1.4}.app-header{position:sticky;top:0;z-index:10;height:68px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 max(24px,calc((100vw - 1180px)/2));color:#fff;background:#2467d1;box-shadow:0 1px #08234e24}.header-brand{display:flex;align-items:center;gap:12px;min-width:0}.back-button{flex:0 0 auto;text-decoration:none}.brand{display:inline-flex;align-items:center;gap:10px;color:#fff;font-size:19px;font-weight:650;text-decoration:none}.account-actions,.account-name{display:flex;align-items:center}.account-actions{gap:12px}.account-name{gap:7px;max-width:280px;overflow:hidden;color:#ffffffe0;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.account-menu{position:relative}.account-menu-trigger{min-height:40px;display:flex;align-items:center;gap:8px;max-width:280px;padding:0 10px;color:#ffffffeb;border:0;border-radius:8px;background:transparent;cursor:pointer}.account-menu-trigger:hover,.account-menu-trigger[aria-expanded=true]{background:#ffffff1f}.account-menu-trigger>span{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.account-menu-trigger[aria-expanded=true]>svg:last-child{transform:rotate(180deg)}.account-menu-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:12;width:168px;overflow:hidden;padding:6px;color:#202938;background:#fff;border:1px solid #dfe6ef;border-radius:10px;box-shadow:0 12px 30px #1023402e}.account-menu-item{width:100%;min-height:42px;display:flex;align-items:center;gap:10px;padding:0 12px;color:#29364a;border:0;border-radius:7px;background:transparent;font-size:14px;text-align:left;text-decoration:none;cursor:pointer}.account-menu-item:hover:not(:disabled){background:#f1f5fa}.account-menu-item:disabled{cursor:wait;opacity:.55}.account-menu-item+.account-menu-item{border-top:1px solid #edf1f6;border-radius:0 0 7px 7px}.icon-button{width:38px;height:38px;display:grid;place-items:center;padding:0;color:#fff;border:0;border-radius:8px;background:#ffffff1f;cursor:pointer}.icon-button:hover:not(:disabled){background:#fff3}.icon-button:disabled{cursor:wait;opacity:.55}.global-error{margin:0;padding:10px 24px;color:#8c1d18;background:#fff0ef;text-align:center}.workspace{width:min(100%,1180px);margin:0 auto;padding:44px 24px 64px}.copyright{display:flex;flex-direction:column;gap:2px;margin:0;color:#b9b9b9;font-size:10px;line-height:1.6;white-space:nowrap;-webkit-user-select:none;user-select:none;touch-action:manipulation}.env-badge{position:fixed;z-index:30;bottom:calc(10px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);padding:4px 12px;border-radius:999px;background:#d97706;color:#fff;font-size:12px;font-weight:600;pointer-events:none;box-shadow:0 4px 12px #d977064d}.debug-env-current{color:#162033}.app-footer{width:min(100%,1180px);margin:0 auto;padding:0 24px 30px}.app-footer .copyright{align-items:center}.manage-sidebar .copyright{margin-top:auto;padding:18px 0 0;font-size:9px}.login-panel .copyright{margin-top:26px}.page-heading{margin-bottom:24px;padding-bottom:15px;border-bottom:1px solid #dfe6ef}.page-heading h1{margin:0;color:#172236;font-size:25px;line-height:1.3}.app-grid{display:grid;grid-template-columns:minmax(0,520px);gap:12px}.app-sections{display:grid;gap:30px}.app-section{min-width:0}.section-heading{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #dfe6ef}.section-heading h1,.section-heading h2{margin:0;color:#172236;font-size:20px;line-height:1.35}.app-entry{min-height:86px;display:flex;align-items:center;gap:14px;padding:15px 16px;border:1px solid #dfe6ef;border-radius:12px;background:#fff;box-shadow:0 3px 12px #142d500a;text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.app-entry:hover{border-color:#9ab9e9;box-shadow:0 8px 22px #143d7a17;transform:translateY(-1px)}.app-icon{width:52px;height:52px;flex:0 0 auto;display:grid;place-items:center;border-radius:12px}.app-icon-blue{color:#2467d1;background:#edf4ff}.app-entry-copy{min-width:0;display:grid;gap:0}.app-entry-copy strong{font-size:17px}.app-entry-copy span{overflow:hidden;color:#68758a;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.app-entry:has(.app-badge){position:relative}.app-badge{position:absolute;top:8px;right:8px;padding:1px 6px;border-radius:999px;color:#2467d1;background:#edf4ff;font-size:11px;font-weight:600;line-height:1.6;white-space:nowrap}@media(max-width:640px){.app-badge{top:3px;right:3px;padding:0 4px;font-size:10px}}.entry-arrow{flex:0 0 auto;margin-left:auto;color:#8b98a9}@media(min-width:641px){.app-grid{grid-template-columns:repeat(auto-fill,150px);gap:14px}.app-entry{aspect-ratio:1;min-height:0;flex-direction:column;justify-content:center;gap:12px;padding:14px 10px;text-align:center}.app-icon{width:48px;height:48px;border-radius:12px}.app-entry-copy strong{font-size:15px}.app-entry-copy span{overflow:visible;text-overflow:clip;white-space:normal}.entry-arrow{display:none}}.empty-state{min-height:250px;display:grid;place-content:center;justify-items:center;padding:40px 20px;color:#758195;border:1px dashed #ccd6e3;border-radius:12px;background:#fff;text-align:center}.empty-state h2{margin:16px 0 6px;color:#3b4658;font-size:17px}.empty-state p{margin:0;font-size:14px}.empty-state button{margin-top:16px}.home-error{margin-top:10px;color:#8c1d18}.attendance-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}.attendance-tabs{display:grid;grid-template-columns:repeat(2,1fr);margin-bottom:20px;border-bottom:1px solid #ccd6e3}.attendance-tabs button{min-height:44px;padding:9px 12px;color:#68758a;border:0;border-bottom:3px solid transparent;background:transparent;font-weight:600;cursor:pointer}.attendance-tabs button.active{color:#1f5db8;border-bottom-color:#2467d1}.attendance-filters{display:flex;flex-wrap:wrap;align-items:end;gap:16px;margin-bottom:20px}.attendance-filters label,.dialog-field{display:grid;gap:7px;color:#4f5d70;font-size:14px}.attendance-filters label{flex:1 1 200px;min-width:min(100%,200px);grid-template-columns:minmax(0,1fr)}.attendance-filters>button{flex:0 0 auto;white-space:nowrap}select,input,textarea{min-height:40px;padding:8px 10px;color:#172236;border:1px solid #cbd5e1;border-radius:7px;background:#fff;font:inherit}textarea{resize:vertical}.attendance-filters select,.attendance-filters input{width:100%;min-width:0}.attendance-error,.attendance-status-line,.attendance-loading,.attendance-empty{margin:0 0 18px;font-size:14px}.attendance-error{display:flex;align-items:center;gap:8px;padding:11px 13px;color:#8c1d18;background:#fff0ef}.attendance-status-line{color:#647084}.gate-outage-banner{display:flex;align-items:flex-start;gap:8px;margin:0}.gate-outage-banner svg{flex:none;margin-top:3px}.attendance-counts{margin-bottom:18px}.attendance-loading,.attendance-empty{padding:34px 18px;color:#68758a;border:1px solid #dfe6ef;background:#fff;text-align:center}.overview-section+.overview-section{margin-top:30px}.overview-section h2{margin:0 0 12px;font-size:18px}.overview-summary,.overview-status-grid,.overview-campus-grid{display:grid;gap:12px}.overview-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-status-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.attendance-class-overview-table{min-width:980px}.attendance-class-overview-table th:not(:first-child),.attendance-class-overview-table td:not(:first-child){text-align:center}.attendance-class-sort{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer}.overview-campus-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.overview-item{min-height:126px;display:flex;flex-direction:column;justify-content:space-between;gap:10px;padding:18px;border:1px solid #dfe6ef;border-radius:10px;background:#fff}.overview-item>span{color:#5f6c7f;font-size:14px}.overview-item strong{font-size:32px;line-height:1}.attendance-counts .overview-item[data-status=late],.attendance-counts .overview-item[data-status=early_leave]{border-color:#f2cf77;background:#fffaf0}.attendance-counts .overview-item[data-status=late]>span,.attendance-counts .overview-item[data-status=late] strong,.attendance-counts .overview-item[data-status=early_leave]>span,.attendance-counts .overview-item[data-status=early_leave] strong,.student-summary[data-status=late],.student-summary[data-status=early_leave]{color:#a15c06}.attendance-counts .overview-item[data-status=truancy]{border-color:#efb4ad;background:#fff5f4}.attendance-counts .overview-item[data-status=truancy]>span,.attendance-counts .overview-item[data-status=truancy] strong,.student-summary[data-status=truancy]{color:#b42318}.attendance-counts .overview-item[data-status=leave]{border-color:#b8cff3;background:#f4f8ff}.attendance-counts .overview-item[data-status=leave]>span,.attendance-counts .overview-item[data-status=leave] strong,.student-summary[data-status=leave],.period-status[data-status=leave]{color:#2467d1}.attendance-count-button{width:100%;color:#172236;font:inherit;text-align:left;cursor:pointer}.attendance-count-button:hover{border-color:#9ab9e9}.attendance-count-button.selected{box-shadow:inset 0 0 0 2px #2467d1}.attendance-count-button:focus-visible{outline:3px solid rgb(36 103 209 / 22%);outline-offset:2px}.overview-item small{color:#7a8697}.overview-in-school{grid-column:span 2}.overview-in-school-formula{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px}.overview-in-school-formula>strong{margin-right:4px}.overview-in-school-part{min-width:30px;display:flex;flex-direction:column;align-items:center;gap:4px}.overview-in-school-part small{font-size:12px;line-height:1.25;text-align:center}.overview-in-school-part b{color:#3b475a;font-size:20px;line-height:1}.overview-in-school-part[data-status=late] b{color:#a15c06}.overview-in-school-part[data-status=leave] b{color:#2467d1}.overview-in-school-part[data-status=truancy] b{color:#b42318}.overview-in-school-op{padding-bottom:2px;color:#a3adbb;font-size:16px;line-height:1}.overview-group{grid-column:span 2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;border:1px solid #cfdbea;border-radius:12px;background:#eef3f9}.overview-group-head{grid-column:1 / -1;display:flex;align-items:baseline;gap:8px;padding:2px 6px}.overview-group-head>span{color:#5f6c7f;font-size:14px}.overview-group-head strong{font-size:22px;line-height:1}.overview-group .overview-item{min-height:0}.overview-campus-item{min-height:132px;display:grid;align-content:center;justify-items:center;gap:10px;padding:18px;color:#172236;border:1px solid #dfe6ef;border-radius:10px;background:#fff;text-align:center;text-decoration:none}.overview-campus-item:hover{border-color:#9ab9e9;background:#f8fbff}.overview-campus-item span{color:#536073}.overview-campus-item strong{color:#166534;font-size:30px;line-height:1}.overview-campus-item small{color:#315f9e}.attendance-table-wrap{overflow-x:auto;border:1px solid #dfe6ef;background:#fff}.attendance-table{width:100%;border-collapse:collapse}.attendance-table th,.attendance-table td{padding:14px 16px;border-bottom:1px solid #e7ecf2;text-align:left;vertical-align:middle}.attendance-table tr:last-child td{border-bottom:0}.attendance-table th{color:#5d697b;background:#f8fafc;font-size:13px;font-weight:600}.student-code,.submission-info span{display:block;margin-top:4px;color:#7a8697;font-size:12px}.source-state{display:inline-flex;padding:4px 8px;color:#8a4b08;border-radius:5px;background:#fff3dc;font-size:13px}.leave-hint{display:block;margin-top:6px;color:#7b8798;font-size:12px}.night-source{color:#445267;font-size:13px}.night-source small{display:block;margin-top:2px;color:#7b8798;font-size:12px}.night-source.muted{color:#7b8798}.night-fact{margin-top:10px}.attention-help{margin:-6px 0 12px;color:#667386;font-size:13px}.decision-actions{display:flex;flex-wrap:wrap;gap:8px}.decision-button,.secondary-button,.primary-button,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:7px 11px;border-radius:7px;cursor:pointer}.decision-button{border:1px solid #cbd5e1;background:#fff}.decision-button.normal{color:#166534}.decision-button.late{color:#8a4b08}.decision-button.absent{color:#9b2c2c}.decision-button:hover,.secondary-button:hover:not(:disabled){background:#f3f6fa}.primary-button{color:#fff;border:1px solid #2467d1;background:#2467d1;font-weight:600}.secondary-button{color:#334155;border:1px solid #cbd5e1;background:#fff}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55}.handled-section{margin-top:30px}.handled-section h2{margin:0 0 12px;font-size:18px}.submission-info{color:#536073;font-size:13px}.row-action{width:78px}.attention-section h2{margin:0 0 12px;font-size:18px}.class-status-section{margin-top:30px}.class-status-section h2{margin:0 0 12px;font-size:18px}.boarding-tabs{margin-top:4px}.boarding-status-filter{margin:22px 0 16px}.boarding-status-filter label{flex:0 1 280px}.boarding-status-section{margin-top:0}.student-status-list{border:1px solid #dfe6ef;background:#fff}.student-status-row{width:100%;display:grid;grid-template-columns:minmax(130px,1fr) minmax(150px,auto) auto;align-items:center;gap:16px;padding:14px 16px;color:#172236;border:0;border-bottom:1px solid #e7ecf2;background:transparent;text-align:left;cursor:pointer}.student-status-row:last-child{border-bottom:0}.student-status-row:hover{background:#f8fafc}.student-status-row small{display:block;margin-top:3px;color:#7a8697}.student-summary{color:#3f5f46;font-size:14px}.student-summary.attention{color:#9b2c2c}.detail-link{color:#315f9e;font-size:13px}.text-button{padding:5px 7px;color:#8c1d18;border:0;background:transparent}.text-button:hover{background:#fff0ef}.modal-backdrop{position:fixed;z-index:20;inset:0;display:grid;place-items:center;padding:20px;background:#0f172a73}.decision-dialog{width:min(100%,460px);max-height:90vh;overflow-y:auto;padding:24px;border-radius:12px;background:#fff;box-shadow:0 22px 60px #0f172a3d}.student-selection-dialog{width:min(100%,600px)}.student-score-import-dialog{width:min(100%,1120px);overflow-x:hidden}.student-score-import-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0}.student-score-import-actions .secondary-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.student-score-import-file{cursor:pointer}.student-score-import-file input{display:none}.student-score-import-preview{max-width:100%;max-height:50vh;overflow-x:auto;overscroll-behavior-inline:contain}.student-score-import-actions .student-code{min-width:0;max-width:100%;overflow-wrap:anywhere}.student-score-import-error-row{background:#fff7f7}.student-score-import-errors{color:#b42318}.student-detail-dialog{width:min(100%,620px);max-height:min(88vh,760px);display:flex;flex-direction:column;border-radius:12px;background:#f7f9fc;box-shadow:0 22px 60px #0f172a3d}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid #dfe6ef;background:#fff}.detail-header h2{margin:0;font-size:21px}.detail-header p{margin:5px 0 0;color:#69768a;font-size:13px}.detail-close{width:36px;height:36px;display:grid;flex:0 0 auto;place-items:center;padding:0;color:#526073;border:0;border-radius:7px;background:transparent;cursor:pointer}.detail-close:hover{background:#eef2f7}.detail-body{min-height:0;overflow-y:auto;padding:18px 20px 24px}.detail-body section+section{margin-top:22px}.detail-body h3{margin:0 0 10px;font-size:15px}.period-list,.event-list,.detail-fact{border:1px solid #dfe6ef;background:#fff}.period-row,.event-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 13px;border-bottom:1px solid #edf1f5;font-size:14px}.period-row:last-child,.event-row:last-child{border-bottom:0}.period-row small{margin-left:8px;color:#7b8798}.period-status{color:#445267}.period-status[data-status=truancy],.period-status[data-status=night_absent],.period-status[data-status=absent]{color:#9b2c2c}.period-status[data-status=late],.period-status[data-status=early_leave],.period-status[data-status=late_return]{color:#8a4b08}.period-status[data-status=present],.period-status[data-status=in_school]{color:#166534}.period-status[data-status=out_of_school]{color:#8a4b08}.period-status[data-status=unknown]{color:#7b8798}.detail-fact{display:grid;gap:6px;padding:13px;color:#657286;font-size:13px}.detail-fact strong{color:#172236;font-size:14px}.detail-fact .text-button{justify-self:start;margin-top:3px}.detail-fact .absent-link{color:#9b2c2c}.event-row span:last-child{color:#657286;text-align:right}.event-row .day-tag{margin-right:6px;padding:1px 7px;border-radius:999px;font-size:12px;color:#4f5d70;background:#eef1f5}.event-row span:nth-child(2){margin-left:auto;color:#657286;text-align:right}.event-row span:first-child .day-tag{margin:0 0 0 6px}.event-row .text-button{flex:none}.detail-empty{margin:0;padding:20px;color:#7a8697;border:1px solid #dfe6ef;background:#fff;text-align:center}.decision-dialog h2{margin:0 0 10px;font-size:20px}.decision-help{margin:0 0 18px;color:#667386;font-size:14px;line-height:1.6}.dialog-field+.dialog-field{margin-top:16px}.student-picker-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:244px;overflow-y:auto;padding:8px;border:1px solid #cbd5e1;border-radius:7px;background:#f8fafc}.student-picker-item{display:flex;align-items:center;gap:10px;min-width:0;min-height:50px;padding:6px 9px;border:1px solid transparent;border-radius:6px;color:#172236;background:#fff;font-size:14px;cursor:pointer}.student-picker-item:hover{border-color:#b9c9df}.student-picker-item:has(input:checked){border-color:#8bb0e8;background:#f1f6ff}.student-picker-item input{flex:0 0 auto;min-height:0;margin:0}.student-picker-text{display:grid;min-width:0;gap:2px}.student-picker-text strong{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.student-picker-text small{overflow:hidden;color:#7a8697;font-size:12px;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.student-picker-empty{grid-column:1 / -1;margin:0;color:#8a96a8;font-size:13px}.student-picker-summary{margin:0;color:#4f5d70;font-size:13px}.student-picker-summary .link-button{margin-left:8px}.arrival-mode{display:grid;gap:8px;margin:0 0 16px;padding:0;border:0}.arrival-mode legend{margin-bottom:8px;color:#4f5d70;font-size:14px}.arrival-mode label{display:flex;align-items:center;gap:8px;font-size:14px}.arrival-mode input{min-height:auto;margin:0}.arrival-mode+.dialog-field{margin-bottom:14px}.preview-summary{display:grid;gap:6px;margin:0 0 18px;padding:12px 14px;border:1px solid #dfe6ef;background:#f7f9fc;font-size:14px}.preview-summary p{margin:0}.preview-summary .period-status{display:inline-block;min-width:3em;margin-right:6px;font-weight:600}.preview-summary small{color:#7b8798;font-size:12px;line-height:1.5}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.login-page{min-height:100vh;display:grid;place-items:center;padding:28px 20px;background:#f4f7fb}.login-panel{width:min(100%,400px);padding:34px;border:1px solid #dde5ef;border-radius:14px;background:#fff;box-shadow:0 16px 42px #1d385c17}.login-mark{width:48px;height:48px;display:grid;place-items:center;margin-bottom:22px;color:#2467d1;border-radius:12px;background:#edf4ff}.login-panel h1{margin:0;font-size:25px;line-height:1.3}.login-description{margin:9px 0 24px;color:#68758a;line-height:1.6}.notice{margin-bottom:18px;padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.6}.notice-error{color:#8c1d18;background:#fff0ef}.manage-tabs{display:flex;gap:24px;margin-bottom:26px;border-bottom:1px solid #d7e0eb}.manage-tabs button{min-height:44px;padding:8px 2px;color:#667386;border:0;border-bottom:3px solid transparent;background:transparent;font-weight:600;cursor:pointer}.manage-tabs button.active{color:#1f5db8;border-bottom-color:#2467d1}.manage-notice,.manage-warning{margin:0 0 18px;padding:11px 13px;font-size:14px}.manage-notice{color:#166534;background:#eef9f0}.manage-warning{color:#8a4b08;background:#fff3dc}.manage-section{min-width:0}.manage-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.manage-section-heading h2{margin:0;font-size:19px}.manage-section-heading p{margin:6px 0 0;color:#68758a;font-size:14px;line-height:1.55}.manage-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}.manage-toolbar .primary-button,.manage-toolbar .secondary-button{flex:0 0 auto;white-space:nowrap}.manage-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.manage-actions .primary-button,.manage-actions .secondary-button{flex:0 0 auto;white-space:nowrap}.policy-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),280px));gap:16px}.policy-fields label{display:grid;gap:7px;color:#4f5d70;font-size:14px}.manage-check-list{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:12px}label.manage-check{display:flex;align-items:center;gap:8px;min-height:40px;color:#4f5d70;font-size:14px}.manage-check input{width:auto;min-height:auto;margin:0}.manage-hint{margin:0;color:#68758a;font-size:14px}.notify-switch-toolbar{flex-direction:column;align-items:flex-start;gap:12px}.notify-hint{line-height:1.8}.notify-hint+.notify-hint{margin-top:10px}.manage-period-table input,.evening-assignment-table select{width:100%;min-width:110px}.manage-period-table td:nth-child(1){width:36%}.region-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.region-tabs button{min-height:38px;padding:7px 12px;color:#455469;border:1px solid #cbd5e1;border-radius:7px;background:#fff;cursor:pointer}.region-tabs button.active{color:#1f5db8;border-color:#8fb2e7;background:#edf4ff}.region-tabs span{margin-left:5px;color:#7b8798;font-size:12px}.role-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.role-toolbar .manage-hint{flex:1 1 320px}.role-search input{min-width:260px}.role-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;max-height:260px;overflow:auto;margin-top:10px}.role-picker-option{display:grid;gap:2px;min-height:44px;padding:9px 11px;color:#334155;border:1px solid #dfe6ef;border-radius:8px;background:#fff;font-size:14px;text-align:left;cursor:pointer}.role-picker-option small{color:#7b8798;font-size:12px}.role-picker-option:hover{border-color:#9ab9e9;background:#f8fbff}.role-picker-option.active{color:#1d4ed8;border-color:#2467d1;background:#edf4ff}.role-picker .inline-empty{grid-column:1 / -1}.venue-list{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.venue-item{display:grid;grid-template-columns:auto auto auto;align-items:center;gap:10px;padding:10px 10px 10px 13px;border:1px solid #dfe6ef;border-radius:8px;background:#fff}.venue-item span{color:#748196;font-size:12px}.venue-item button,.manage-dialog-heading button{width:30px;height:30px;display:grid;place-items:center;padding:0;color:#7a8697;border:0;border-radius:6px;background:transparent;cursor:pointer}.venue-item button:hover{color:#9b2c2c;background:#fff0ef}.inline-empty{margin:0;color:#7a8697;font-size:14px}.table-empty{color:#7a8697;text-align:center!important}.dorm-source-list{border-top:1px solid #dfe6ef}.dorm-source-list>div{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 4px;border-bottom:1px solid #dfe6ef}.dorm-source-list span{color:#68758a;font-size:14px}.manage-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.manage-dialog-heading h2{margin:0}@media(max-width:640px){.student-picker-list{grid-template-columns:1fr}.manage-header{min-height:58px;padding:0 16px}.manage-header-brand>strong{font-size:17px}.manage-menu-button{width:38px;height:38px;display:grid;place-items:center;padding:0;color:#536073;border:0;border-radius:8px;background:#f3f6fa;cursor:pointer}.manage-menu-button:hover{background:#e8edf4}.manage-header .account-name{display:none}.manage-body{min-height:calc(100vh - 58px)}.manage-drawer-backdrop{position:fixed;inset:0;z-index:29;display:block;padding:0;border:0;background:#0f172a7a;cursor:pointer}.manage-sidebar{width:min(82vw,320px);max-width:100%;position:fixed;inset:0 auto 0 0;z-index:30;height:100dvh;padding:12px 14px 16px;border-right:1px solid #dfe6ef;box-shadow:12px 0 30px #0f172a2e;transform:translate(-105%);transition:transform .18s ease}.manage-sidebar.open{transform:translate(0)}.manage-drawer-heading{min-height:50px;display:flex;align-items:center;justify-content:flex-end;padding:0 4px 8px 12px;border-bottom:1px solid #edf1f5}.manage-drawer-heading button{width:38px;height:38px;display:grid;place-items:center;padding:0;color:#536073;border:0;border-radius:8px;background:transparent;cursor:pointer}.manage-drawer-heading button:hover{background:#f3f6fa}.manage-sidebar nav{display:grid;overflow:visible}.manage-sidebar a{min-height:44px;white-space:normal}.manage-nav-group{display:block;margin-top:6px;padding-top:6px;border-top:1px solid #edf1f5}.manage-nav-group:first-child{margin-top:0;padding-top:0;border-top:0}.manage-nav-group>div{display:flex}.manage-nav-group>a{padding-left:40px}.manage-sidebar .copyright{margin-top:auto;padding:18px 0 0;font-size:9px}.manage-workspace{padding:24px 16px 50px}.schedule-picker-field{width:100%}.schedule-picker-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.manage-tabs{gap:16px;overflow-x:auto}.manage-tabs button{white-space:nowrap}.manage-section-heading{align-items:stretch;flex-direction:column}.manage-section-heading .primary-button{align-self:flex-start}.policy-fields{grid-template-columns:1fr}.role-toolbar{align-items:stretch;flex-direction:column}.role-search input{width:100%;min-width:0}.dorm-source-list>div{align-items:flex-start;flex-direction:column;gap:5px}}.notice-warning{color:#765200;background:#fff7db}.missing-fields{display:block;margin-top:4px;overflow-wrap:anywhere}.login-button,.account-login-button,.retry-button{width:100%;min-height:46px;border-radius:8px;cursor:pointer}.account-login-button{width:100%;min-height:46px;display:flex;align-items:center;justify-content:center;gap:9px;padding:10px 16px;color:#315f9e;border:1px solid #b8c9df;border-radius:8px;background:#fff;font-weight:600;cursor:pointer}.account-login-button:hover:not(:disabled){border-color:#7096c8;background:#f6f9fd}.account-login-button:disabled{cursor:not-allowed;opacity:.58}.login-separator{display:flex;align-items:center;gap:12px;margin:18px 0;color:#8a96a8;font-size:13px}.login-separator:before,.login-separator:after{content:"";flex:1;height:1px;background:#e1e7ef}.password-login-form{display:grid;gap:14px}.password-login-form>label:not(.remember-login){display:grid;gap:7px;color:#4f5d70;font-size:14px}.password-login-form input[type=text],.password-login-form input[type=password]{width:100%}.remember-login{display:flex;align-items:center;gap:8px;color:#56657a;font-size:14px}.remember-login input{width:auto;min-height:auto;margin:0}.login-text-button{justify-self:center;padding:6px 10px;color:#68758a;border:0;background:transparent;cursor:pointer}.login-text-button:hover:not(:disabled){color:#315f9e}.login-button{display:flex;align-items:center;justify-content:center;gap:9px;padding:10px 16px;color:#fff;border:1px solid #2467d1;background:#2467d1;font-weight:600}.login-button:hover:not(:disabled){border-color:#1d56af;background:#1d56af}.login-button:disabled{cursor:not-allowed;opacity:.58}.retry-button{margin-top:10px;color:#315f9e;border:0;background:transparent}.retry-button:hover{background:#f4f7fb}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.home-success-toast{top:72px}.app-header{height:60px;padding:0 16px}.brand{font-size:17px}.account-name{max-width:120px}.workspace{padding:28px 16px 48px}.app-footer{padding:0 16px 24px}.page-heading h1{font-size:22px}.app-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.app-entry{min-height:104px;flex-direction:column;justify-content:center;gap:8px;padding:10px 4px;text-align:center}.app-icon{width:42px;height:42px;border-radius:10px}.app-entry-copy{width:100%}.app-entry-copy strong{font-size:12px;line-height:1.35}.entry-arrow{display:none}.attendance-heading{align-items:stretch}.attendance-filters label{flex:1 1 100%;min-width:0}.overview-item{min-height:112px;padding:13px}.overview-item strong{font-size:28px}.overview-group{gap:6px;padding:6px}.overview-group .overview-item{padding:10px}.overview-campus-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-campus-item{min-height:118px;padding:13px 8px}.attendance-table-wrap{overflow:visible;border:0;background:transparent}.attendance-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.attendance-table,.attendance-table tbody,.attendance-table tr,.attendance-table td{display:block;width:100%}.attendance-table tr{margin-bottom:12px;border:1px solid #dfe6ef;background:#fff}.attendance-table td{padding:11px 14px;border-bottom:1px solid #edf1f5}.decision-actions .decision-button{flex:1 1 120px}.row-action{width:auto}.student-status-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px}.detail-link{display:none}.student-summary{text-align:right}.detail-backdrop{align-items:stretch;padding:0}.student-detail-dialog{width:100%;max-height:none;min-height:100vh;border-radius:0}.detail-header{padding:17px 16px}.detail-body{padding:16px}.login-page{align-items:start;padding:20px 12px}.login-panel{margin-top:8vh;padding:28px 22px}}@media(max-width:430px){.account-name{display:none}.account-menu-trigger>span{display:none}.account-menu-trigger{padding:0 8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.roll-call-session{margin:0 0 16px;color:#536073;font-size:13px}.roll-call-warning{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px;padding:10px 12px;color:#8a4b08;border:1px solid #f0d6a8;border-radius:8px;background:#fff8ec;font-size:13px}.roll-call-warning a{color:#2467d1}.roll-call-group{margin-bottom:24px}.roll-call-sheet .attention-section{margin-bottom:26px}.attention-done{margin:0;color:#166534;font-size:13px}.roll-call-group-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.roll-call-group-head h2{margin:0;font-size:17px}.roll-call-table td{vertical-align:top}.roll-call-table .decision-actions{gap:6px}.roll-call-student{min-width:150px}.roll-call-status-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px}.roll-call-status-hints{text-align:right}.roll-call-status-hints .leave-hint{display:block;margin-top:2px}.roll-call-remark{display:block;width:min(100%,260px);margin-top:8px}.roll-call-actions{white-space:nowrap}.decision-button.active{color:#1f5db8;border-color:#2467d1;background:#eef4fd}.decision-button.normal.active{color:#166534;border-color:#86c39a;background:#eaf7ef}.decision-button.absent.active{color:#9b2c2c;border-color:#d38b8b;background:#fdeeee}.roll-call-remark{width:min(100%,260px);min-height:36px;margin-top:8px}.gate-hint{color:#667386}.roll-call-footer{position:sticky;bottom:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,320px) minmax(360px,auto);align-items:end;gap:16px;margin-top:24px;padding:14px 16px;border:1px solid #dfe6ef;border-radius:10px;background:#fff;box-shadow:0 -6px 20px #0f172a0f;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.roll-call-footer.is-success{border-color:#86c39a;background:#eef9f0;box-shadow:0 -6px 24px #16653424}.roll-call-footer.is-error{border-color:#d38b8b;background:#fff4f4;box-shadow:0 -6px 24px #9b2c2c1f}.roll-call-submit-feedback{grid-column:1 / -1;display:flex;align-items:center;gap:8px;margin:0;color:#166534;font-weight:650}.roll-call-footer.is-error .roll-call-submit-feedback{color:#9b2c2c}.roll-call-footer.is-success .primary-button{border-color:#218447;background:#218447}.roll-call-totals{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;color:#4f5d70}.roll-call-totals strong{font-size:16px;color:#172236}.roll-call-note textarea{min-height:60px}.roll-call-footer-actions{display:grid;align-self:stretch}.roll-call-footer-actions.has-quick-action{grid-template-columns:minmax(96px,1fr) minmax(220px,3fr);gap:10px}.roll-call-footer-actions>button{height:100%}.quick-attendance-dialog{display:flex;flex-direction:column;width:min(100%,660px);overflow:hidden}.quick-attendance-dialog>h2,.quick-attendance-dialog>.dialog-actions{flex:none}.quick-attendance-help{flex:none;margin:0 0 16px;color:#536073;line-height:1.65}.quick-attendance-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0}.quick-attendance-list .quick-attendance-row:last-child{border-bottom:0}.quick-attendance-page .quick-attendance-list{overflow:visible}.quick-attendance-row{display:grid;gap:10px;padding:14px 0;border-bottom:1px solid #e2e8f0}.quick-attendance-class{min-width:0}.quick-attendance-class strong{display:block;overflow-wrap:anywhere}.quick-attendance-class small{display:block;margin-top:4px;color:#667386;font-variant-numeric:tabular-nums}.quick-attendance-absent{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px}.quick-attendance-absent-label{padding-top:9px;color:#536073;font-size:14px;font-weight:600}.student-picker{position:relative;min-width:0}.student-picker-field{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:40px;padding:5px 36px 5px 6px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;cursor:text}.student-picker-field:focus-within{border-color:#3b6fd8;box-shadow:0 0 0 3px #3b6fd826}.student-picker-field.is-disabled{background:#f1f5f9;cursor:not-allowed}.student-picker-field input{flex:1 1 96px;min-width:96px;min-height:28px;padding:2px 4px;border:0;outline:none;background:transparent;box-shadow:none}.student-picker-chip{display:inline-flex;align-items:center;gap:2px;max-width:100%;padding:3px 4px 3px 9px;border-radius:999px;color:#1e3a6b;background:#e8f0fe;font-size:13px;line-height:1.4}.student-picker-chip button,.student-picker-clear{display:inline-grid;place-items:center;min-height:0;padding:2px;border:0;border-radius:999px;color:#5b6b82;background:none;cursor:pointer}.student-picker-chip button:hover,.student-picker-clear:hover{color:#9b2c2c;background:#9b2c2c14}.student-picker-clear{position:absolute;top:8px;right:8px;padding:3px}.student-picker .student-picker-list{position:absolute;z-index:3;top:calc(100% + 4px);right:0;left:0;box-shadow:0 12px 28px #1f2d4424}@media(max-width:900px){.roll-call-footer{grid-template-columns:minmax(0,1fr);align-items:stretch}.roll-call-footer-actions,.roll-call-footer .primary-button{width:100%}}.overview-block{margin-top:22px}.overview-block h3{margin:0 0 10px;font-size:16px}.overview-missing{color:#9b2c2c;font-weight:600}.overview-exceptions{max-width:320px;line-height:1.7}.overview-exceptions span{display:block}.overview-none{color:#9aa5b4}.overview-select-cell{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}.overview-select-cell input{width:16px;height:16px;margin:0}.attendance-table .overview-selected-row td{background:#f1f6ff}.overview-detail-card:disabled{cursor:default}.overview-late-card:not(:disabled) small{color:#a15c06}.overview-leave-card:not(:disabled) small{color:#2467d1}.overview-truancy-card:not(:disabled) small{color:#8c1d18}.overview-selection-detail-button{padding:0;color:#8c1d18;border:0;background:transparent;font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.overview-selection-detail-button[data-status=late]{color:#a15c06}.overview-selection-detail-button[data-status=leave]{color:#2467d1}.overview-selection-detail-button[data-status=truancy]{color:#8c1d18}.overview-exception-dialog{width:min(100%,760px)}.overview-exception-dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.overview-exception-dialog-heading h2{margin:0 0 5px}.overview-exception-dialog-heading p{margin:0;color:#647084;font-size:13px}.overview-exception-dialog-heading>button{border:0;background:none;color:#566477;cursor:pointer}.overview-report-dialog{width:min(100%,560px)}.overview-report-text{box-sizing:border-box;width:100%;padding:12px;border:1px solid #d5dce6;border-radius:8px;font:inherit;line-height:1.7;resize:vertical}.overview-report-asof{margin:8px 0 0;color:#647084;font-size:13px}.overview-report-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:14px;color:#647084;font-size:13px}.overview-exception-name small{display:block;margin-top:3px;color:#7a8697;font-size:12px}.has-overview-selection{padding-bottom:96px}.overview-selection-footer{width:min(calc(100% - 48px),1132px);position:fixed;z-index:10;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border:1px solid #dfe6ef;border-radius:10px;background:#fff;box-shadow:0 -6px 24px #0f172a1f}.overview-selection-summary{min-width:0;display:grid;gap:8px}.overview-selection-summary>strong{font-size:14px}@media(max-width:640px){.has-overview-selection{padding-bottom:150px}.overview-selection-footer{width:calc(100% - 24px);align-items:stretch;flex-direction:column;gap:12px}.overview-selection-footer .secondary-button{width:100%}}@media(max-width:640px){.roll-call-footer{grid-template-columns:1fr;align-items:stretch}.roll-call-footer .primary-button{width:100%}.roll-call-footer-actions.has-quick-action{grid-template-columns:minmax(88px,1fr) minmax(0,3fr)}.roll-call-group-head{align-items:flex-start}.roll-call-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"student actions" "status  status";align-items:center;column-gap:10px;row-gap:2px;padding:10px 12px;margin-bottom:8px}.roll-call-table td{display:block;width:auto;padding:0;border:0}.roll-call-student{grid-area:student}.roll-call-status{grid-area:status;white-space:normal}.roll-call-actions{grid-area:actions;white-space:normal}.roll-call-table .decision-actions{flex-wrap:nowrap;gap:6px}.roll-call-table .decision-actions .decision-button{flex:0 0 auto;min-height:32px;padding:5px 10px}.roll-call-student .student-code{display:inline;margin:0 0 0 6px}.roll-call-status .roll-call-status-hints .leave-hint{display:inline;margin:0 0 0 8px}.roll-call-remark{width:100%;margin-top:6px}}.roll-call-pending{color:#8a4b08}@media(max-width:640px){.overview-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.attendance-table.overview-table{display:table;width:auto;min-width:100%;border:1px solid #dfe6ef;background:#fff}.attendance-table.overview-table thead{position:static;width:auto;height:auto;overflow:visible;clip:auto}.attendance-table.overview-table tr{display:table-row;margin-bottom:0;border:0}.attendance-table.overview-table tbody{display:table-row-group}.attendance-table.overview-table td,.attendance-table.overview-table th{display:table-cell;width:auto;padding:9px 11px;font-size:13px;white-space:nowrap}.attendance-table.overview-table th:first-child,.attendance-table.overview-table td:first-child{position:sticky;left:0;z-index:1;background:#fff;box-shadow:1px 0 #e7ecf2}.attendance-table.overview-table thead th:first-child{z-index:2;background:#f8fafc}.attendance-table.overview-table .overview-total-row td{background:#f8fafc}.attendance-table.overview-table .overview-selected-row td:first-child{background:#f1f6ff}.attendance-table.overview-table .overview-exceptions{max-width:220px;white-space:normal}}.truancy-hint{color:#9b2c2c}.roll-call-system{white-space:nowrap}.roll-call-system .period-status{font-weight:600}.overview-total-row td{background:#f8fafc;font-weight:600}.page-heading-actions{display:flex;align-items:center;gap:10px}.quantification-status{display:inline-flex;padding:4px 8px;border-radius:5px;background:#eef1f5;color:#536073;font-size:13px;white-space:nowrap}.quantification-status[data-status=synced]{color:#166534;background:#e8f5ec}.quantification-status[data-status=pending]{color:#1f5db8;background:#edf4ff}.quantification-status[data-status=failed]{color:#9b2c2c;background:#fdeceb}.quantification-status[data-status=success]{color:#166534;background:#e8f5ec}.quantification-status[data-status=skipped]{color:#4f5d70;background:#eef1f5}.quantification-status[data-status=unknown],.quantification-status[data-status=revoke_unknown]{color:#8a4b08;background:#fff3dc}.quantification-row-actions{width:96px}.quantification-revoked-row td{color:#8b98a9}.quantification-revoked-row .quantification-status{color:#6b7684;background:#eef1f5}.score-rule-table{min-width:760px}.score-rule-table th,.score-rule-table td{padding:10px 16px;vertical-align:middle}.score-rule-table th:nth-child(1),.score-rule-table td:nth-child(1){width:150px}.score-rule-table th:nth-child(2),.score-rule-table td:nth-child(2){width:150px}.score-rule-table th:nth-child(5),.score-rule-table td:nth-child(5){width:110px}.score-rule-table input,.score-rule-table select{width:100%;min-width:0}.score-rules-message{margin:10px 0 0}.score-rule-error{margin:0;color:#9b2c2c;font-size:13px}.score-rule-invalid td{background:#fff8f7}.score-rule-error-row td{padding-top:0}label.score-rule-toggle{display:flex;align-items:center;gap:8px;min-height:40px;color:#3f4c60;font-size:14px;white-space:nowrap}.score-rule-toggle input{width:auto;min-height:auto;margin:0}.settlement-switch-row{display:flex;flex-wrap:wrap;align-items:end;gap:20px}.settlement-buffer{display:grid;gap:7px;max-width:220px;color:#4f5d70;font-size:14px}.sync-overview{margin-top:12px}.sync-table{width:100%;border-collapse:collapse;font-size:14px}.sync-table th,.sync-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #e6ebf2;vertical-align:top}.sync-table th{color:#68758a;font-weight:500}.sync-error{color:#9b2c2c}.sync-hint{color:#68758a}.deduction-tag{margin-left:8px;padding:1px 7px;border-radius:999px;font-size:12px;color:#4f5d70;background:#eef1f5}.deduction-tag[data-status=synced]{color:#166534;background:#e8f5ec}.deduction-tag[data-status=pending]{color:#1f5db8;background:#edf4ff}.deduction-tag[data-status=failed]{color:#9b2c2c;background:#fdeceb}.deduction-tag[data-status=unknown],.deduction-tag[data-status=revoke_unknown]{color:#8a4b08;background:#fff3dc}.quantification-pager{align-items:center;justify-content:center;margin-top:16px}.score-plus{color:#166534}.score-minus{color:#9b2c2c}.score-direction{display:flex;gap:20px}.score-direction label{display:inline-flex;align-items:center;gap:6px;color:#3f4c60}.score-direction input{width:auto;min-height:auto;margin:0}.source-tag{margin-left:6px;padding:1px 7px;border-radius:999px;font-size:12px;color:#1f5db8;background:#edf4ff;vertical-align:middle}.conduct-filters label{flex:1 1 170px;min-width:min(100%,170px)}.conduct-counts{margin-bottom:18px}.conduct-overdue-count{color:#9b2c2c}.conduct-table td small{color:#7a8697;font-size:12px}.conduct-level{display:inline-flex;min-width:34px;justify-content:center;padding:2px 8px;border-radius:999px;font-size:13px;font-weight:700;color:#1f5db8;background:#edf4ff}.conduct-level[data-level="2"]{color:#8a4b08;background:#fff3dc}.conduct-level[data-level="3"]{color:#9b2c2c;background:#fdeceb}.conduct-escalated{display:block;margin-top:3px}.conduct-summary{max-width:280px}.conduct-status[data-status=open]{color:#1f5db8;background:#edf4ff}.conduct-status[data-status=overdue]{color:#9b2c2c;background:#fdeceb}.conduct-status[data-status=closed]{color:#166534;background:#e8f5ec}.conduct-status[data-status=void]{color:#6b7684;background:#eef1f5}.conduct-row-closed td,.conduct-row-closed>span{color:#8b98a9}.conduct-exemptions .page-heading{margin-top:8px}.conduct-exemptions h2{display:flex;align-items:center;gap:10px;margin:0;font-size:18px}.link-button{padding:0;border:0;background:transparent;color:#1f5db8;font-size:14px;font-weight:500;cursor:pointer}.conduct-detail-body{padding:20px;overflow-y:auto}.conduct-detail-body h3{margin:18px 0 10px;font-size:15px;color:#4f5d70}.conduct-detail-body h3:first-of-type{margin-top:0}.conduct-trigger-list,.conduct-day-list{margin:0;padding:0;list-style:none}.conduct-trigger-list li,.conduct-day-list li{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;background:#fff;font-size:14px}.conduct-trigger-list li+li,.conduct-day-list li+li{margin-top:6px}.conduct-trigger-list small,.conduct-day-list small{margin-left:auto;color:#7a8697}.conduct-day-list .conduct-day-open{margin-left:auto}.conduct-handle-actions{margin-top:20px}.conduct-handle-form{margin-top:20px;padding:16px;border-radius:10px;background:#fff}.conduct-handle-form textarea{width:100%;resize:vertical}.conduct-manage-subtitle{margin:22px 0 8px;font-size:14px;color:#4f5d70}.conduct-keyword-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.conduct-keyword-list li{padding:4px 10px;border-radius:999px;background:#eef1f5;color:#536073;font-size:13px}.conduct-keyword-list li.active{color:#166534;background:#e8f5ec}.conduct-keyword-list small{margin-left:4px;color:#8b98a9}.conduct-level-block h2{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 10px;font-size:17px}.conduct-level-block h2 small{color:#68758a;font-size:13px;font-weight:500}.conduct-remark{display:grid;gap:3px;min-width:200px;max-width:360px;color:#4f5d70;font-size:13px}.conduct-table .conduct-summary{min-width:160px}.conduct-weekly-filters,.conduct-weekly-counts{margin-bottom:18px}.back-link{display:inline-flex;align-items:center;gap:4px;margin-bottom:8px;color:#536073;font-size:13px}@media(max-width:640px){.attendance-table.conduct-table .conduct-summary,.attendance-table.conduct-table .conduct-remark{white-space:normal}.attendance-table.conduct-table .conduct-remark{min-width:220px}}.teaching-hours-toggle{display:inline-flex;align-items:center;gap:4px}.teaching-hours-toggle svg{transition:transform .15s}.teaching-hours-toggle[aria-expanded=true] svg{transform:rotate(90deg)}.attendance-table .teaching-hours-detail-row>td{padding:10px 16px 16px;background:#f8fafc}.teaching-hours-detail{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #dfe6ef;background:#fff}.teaching-hours-detail table{width:100%;border-collapse:collapse;font-size:13px}.teaching-hours-detail th,.teaching-hours-detail td{padding:8px 12px;border-bottom:1px solid #edf1f5;text-align:left;white-space:nowrap}.teaching-hours-detail th{color:#5d697b;background:#f8fafc;font-weight:600}.teaching-hours-detail tr:last-child td{border-bottom:0}@media(max-width:640px){.attendance-table.overview-table .teaching-hours-detail-row>td{position:static;max-width:calc(100vw - 32px);white-space:normal;background:#f8fafc;box-shadow:none}}.overview-item strong small,.overview-group-head strong small,.roll-call-totals strong small,.attendance-class-overview-table td small{margin-left:2px;font-size:.7em;font-weight:500;color:#7b8798}.attendance-also-note{margin:6px 0 0;font-size:13px;color:#7b8798}ol.attendance-also-note{padding-left:20px}.attendance-decisions{display:grid;grid-template-columns:4fr 4fr 3fr;flex-wrap:nowrap}.attendance-decisions>button{min-width:0;padding-inline:4px}
