.theme--light.v-alert .v-alert--prominent .v-alert__icon:after{background:rgba(0,0,0,.12)}.theme--dark.v-alert .v-alert--prominent .v-alert__icon:after{background:hsla(0,0%,100%,.12)}.v-sheet.v-alert{border-radius:4px}.v-sheet.v-alert:not(.v-sheet--outlined){box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-sheet.v-alert.v-sheet--shaped{border-radius:16px 4px}.v-alert{display:block;font-size:16px;margin-bottom:16px;padding:16px;position:relative;transition:.3s cubic-bezier(.25,.8,.5,1)}.v-alert:not(.v-sheet--tile){border-radius:4px}.v-application--is-ltr .v-alert>.v-alert__content,.v-application--is-ltr .v-alert>.v-icon{margin-right:16px}.v-application--is-rtl .v-alert>.v-alert__content,.v-application--is-rtl .v-alert>.v-icon{margin-left:16px}.v-application--is-ltr .v-alert>.v-icon+.v-alert__content{margin-right:0}.v-application--is-rtl .v-alert>.v-icon+.v-alert__content{margin-left:0}.v-application--is-ltr .v-alert>.v-alert__content+.v-icon{margin-right:0}.v-application--is-rtl .v-alert>.v-alert__content+.v-icon{margin-left:0}.v-alert__border{border-style:solid;border-width:4px;content:"";position:absolute}.v-alert__border:not(.v-alert__border--has-color){opacity:.26}.v-alert__border--left,.v-alert__border--right{bottom:0;top:0}.v-alert__border--bottom,.v-alert__border--top{left:0;right:0}.v-alert__border--bottom{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0}.v-application--is-ltr .v-alert__border--left{border-top-left-radius:inherit;border-bottom-left-radius:inherit;left:0}.v-application--is-ltr .v-alert__border--right,.v-application--is-rtl .v-alert__border--left{border-top-right-radius:inherit;border-bottom-right-radius:inherit;right:0}.v-application--is-rtl .v-alert__border--right{border-top-left-radius:inherit;border-bottom-left-radius:inherit;left:0}.v-alert__border--top{border-top-left-radius:inherit;border-top-right-radius:inherit;top:0}.v-alert__content{flex:1 1 auto}.v-application--is-ltr .v-alert__dismissible{margin:-16px -8px -16px 8px}.v-application--is-rtl .v-alert__dismissible{margin:-16px 8px -16px -8px}.v-alert__icon{align-self:flex-start;border-radius:50%;height:24px;min-width:24px;position:relative}.v-application--is-ltr .v-alert__icon{margin-right:16px}.v-application--is-rtl .v-alert__icon{margin-left:16px}.v-alert__icon.v-icon{font-size:24px}.v-alert__wrapper{align-items:center;border-radius:inherit;display:flex}.v-application--is-ltr .v-alert--border.v-alert--prominent .v-alert__icon{margin-left:8px}.v-application--is-rtl .v-alert--border.v-alert--prominent .v-alert__icon{margin-right:8px}.v-alert--dense{padding-top:8px;padding-bottom:8px}.v-alert--dense .v-alert__border{border-width:medium}.v-alert--outlined{background:transparent!important;border:thin solid currentColor!important}.v-alert--outlined .v-alert__icon{color:inherit!important}.v-alert--prominent .v-alert__icon{align-self:center;height:48px;min-width:48px}.v-alert--prominent .v-alert__icon.v-icon{font-size:32px}.v-alert--prominent .v-alert__icon.v-icon:after{background:currentColor!important;border-radius:50%;bottom:0;content:"";left:0;opacity:.16;position:absolute;right:0;top:0}.v-alert--prominent.v-alert--dense .v-alert__icon.v-icon:after{-webkit-transform:scale(1);transform:scale(1)}.v-alert--text{background:transparent!important}.v-alert--text:before{background-color:currentColor;border-radius:inherit;bottom:0;content:"";left:0;opacity:.12;position:absolute;pointer-events:none;right:0;top:0}.class-roster-page[data-v-1ecdb53a]{padding:16px}.class-cover-header[data-v-1ecdb53a]{background:#fff;border:1px solid #dfe3ea;border-radius:6px;box-shadow:0 4px 14px rgba(21,34,50,.06);margin-bottom:10px;padding:10px 12px}.compact-class-header[data-v-1ecdb53a]{align-items:center;display:flex;gap:14px;min-height:54px}.class-cover-title[data-v-1ecdb53a]{color:#1f2937;font-size:18px;font-weight:700;line-height:1.2}.class-cover-subtitle[data-v-1ecdb53a]{color:#64748b;font-size:12px;line-height:1.2;margin-top:2px}.class-summary-line[data-v-1ecdb53a]{align-items:center;color:#64748b;display:flex;flex:1;flex-wrap:wrap;font-size:12px;gap:6px 14px;line-height:1.25;min-width:0}.class-summary-line strong[data-v-1ecdb53a]{color:#111827;font-weight:600}.summary-note[data-v-1ecdb53a]{min-width:min(420px,100%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-toolbar[data-v-1ecdb53a]{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.roster-toolbar-actions[data-v-1ecdb53a]{align-items:center;display:flex;gap:8px}.roster-toolbar h2[data-v-1ecdb53a]{color:#111827;font-size:20px;margin:0 0 4px}.roster-toolbar span[data-v-1ecdb53a]{color:#64748b;font-size:13px}.roster-loading[data-v-1ecdb53a]{align-items:center;display:flex;height:240px;justify-content:center}.roster-table-wrap[data-v-1ecdb53a]{background:#fff;border:1px solid #cbd5e1;border-radius:6px;max-height:calc(100vh - 190px);overflow:auto}.roster-table[data-v-1ecdb53a]{border-collapse:separate;border-spacing:0;color:#1f2937;font-size:13px;min-width:1100px;table-layout:fixed;width:-webkit-max-content;width:max-content}.roster-table td[data-v-1ecdb53a],.roster-table th[data-v-1ecdb53a]{border-bottom:1px solid #cbd5e1;border-right:1px solid #cbd5e1;height:28px;padding:3px 5px;text-align:center;white-space:nowrap}.roster-table th[data-v-1ecdb53a]{background:#f8fafc;font-weight:600;position:sticky;top:0;z-index:4}.roster-table thead tr:nth-child(2) th[data-v-1ecdb53a]{top:28px}.roster-table thead tr:nth-child(3) th[data-v-1ecdb53a]{top:56px}.roster-table thead tr:nth-child(4) th[data-v-1ecdb53a]{top:84px}.sticky-left[data-v-1ecdb53a]{left:0;position:sticky;z-index:3}th.sticky-left[data-v-1ecdb53a]{z-index:5}.no-col[data-v-1ecdb53a]{background:#fff;min-width:54px;width:54px}.name-col[data-v-1ecdb53a]{background:#fff;left:54px;min-width:96px;text-align:left;width:96px}.birthday-col[data-v-1ecdb53a]{background:#fff;left:150px;min-width:58px;width:58px}.student-note-col[data-v-1ecdb53a]{min-width:180px;text-align:left;width:180px}.student-name-stack[data-v-1ecdb53a]{align-items:flex-start;display:flex;gap:2px;line-height:1.2}.student-gender-icon[data-v-1ecdb53a]{flex:0 0 auto;margin-top:2px}.student-name-text[data-v-1ecdb53a]{min-width:0;overflow:hidden}.student-name-primary[data-v-1ecdb53a]{color:#111827;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-name-secondary[data-v-1ecdb53a]{color:#64748b;font-size:11px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.period-head[data-v-1ecdb53a],.session-head[data-v-1ecdb53a]{min-width:30px;width:30px}.today-period-head[data-v-1ecdb53a],.today-session-head[data-v-1ecdb53a]{background:#fff3c4!important;color:#7c4a03}.today-session-head[data-v-1ecdb53a]{box-shadow:inset 2px 0 0 #f59e0b}.today-badge[data-v-1ecdb53a]{background:#f59e0b;border-radius:999px;color:#fff;display:inline-block;font-size:10px;font-weight:700;line-height:1;margin-left:2px;padding:2px 4px;vertical-align:middle}.attendance-cell[data-v-1ecdb53a]{min-width:30px;width:30px}.today-attendance-cell[data-v-1ecdb53a]{background-color:#fff8db;box-shadow:inset 2px 0 0 rgba(245,158,11,.45)}.not-enrolled-attendance-cell[data-v-1ecdb53a]{background:repeating-linear-gradient(135deg,#f1f5f9,#f1f5f9 5px,#e2e8f0 0,#e2e8f0 6px)}.attendance-mark[data-v-1ecdb53a]{align-items:center;background:#fff;border:1px solid #d1d5db;border-radius:50%;color:#94a3b8;cursor:pointer;display:inline-flex;font-size:13px;font-weight:700;height:20px;justify-content:center;line-height:1;padding:0;width:20px}.attendance-mark.is-present[data-v-1ecdb53a]{border-color:#16a34a;color:#15803d}.attendance-mark.is-absent[data-v-1ecdb53a]{border-color:#dc2626;color:#b91c1c}.attendance-mark.is-partial[data-v-1ecdb53a]{border-color:#d97706;color:#b45309}.attendance-mark.is-not-enrolled[data-v-1ecdb53a]{background:hsla(0,0%,100%,.56);border-color:transparent;color:#94a3b8;cursor:not-allowed}.period-label[data-v-1ecdb53a]{cursor:help;display:inline-block;min-width:20px}.empty-cell[data-v-1ecdb53a]{color:#64748b;height:120px}@media (max-width:960px){.class-roster-page[data-v-1ecdb53a]{padding:12px}.compact-class-header[data-v-1ecdb53a]{align-items:flex-start;flex-direction:column;gap:8px}}