:root{color:#1d1714;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--paper:#fffbf5f0;--paper-strong:#fffdf9fb;--ink:#261a14;--muted:#6f6157;--line:#644a361f;--accent:#cf5a2e;--accent-deep:#9f3d1e;--teal:#1f5a62;--good:#2d8666;--warn:#b97612;--bad:#a74432;--calm:#375d8c;--shadow:0 14px 32px #4f2f1814, 0 4px 12px #4f2f180d;background:radial-gradient(circle at 0 0,#d35c2a2e,#0000 32%),radial-gradient(circle at 100%,#16525a24,#0000 26%),linear-gradient(#f7f0e6 0%,#efe2cf 100%);font-family:IBM Plex Sans SC,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0}.page-shell{min-height:100dvh;padding:24px}.page-shell.admin-mode{overscroll-behavior:none;height:100dvh;overflow:hidden}html.global-scroll-lock,body.global-scroll-lock{overscroll-behavior:none;overflow:hidden}.splash-card,.login-panel,.setup-panel,.feature-panel,.workspace-card,.topbar{border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(#fffdf8fa,#fdf7eff2);position:relative;overflow:hidden}.splash-card,.login-panel,.setup-panel,.feature-panel{border-radius:28px;padding:28px}.workspace-card{border-radius:24px;padding:24px}.workspace-card:before,.topbar:before,.feature-panel:before,.login-panel:before,.setup-panel:before,.splash-card:before{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 1px #ffffff8c}.login-layout,.setup-layout{justify-content:center;align-items:center;min-height:calc(100vh - 48px);display:flex}.login-layout{max-width:680px;margin:0 auto}.setup-panel{width:min(560px,100%)}.login-panel{text-align:center;width:min(520px,100%)}.splash-card{max-width:560px;margin:12vh auto 0}.boot-screen{min-height:calc(100vh - 48px)}.topbar{border-radius:24px;justify-content:space-between;align-items:flex-start;gap:18px;padding:22px 24px;display:flex}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.section-heading strong,.section-heading h2,.section-heading h3{margin:0;line-height:1.1}.section-heading-titleless{justify-content:flex-start}.dual-grid,.student-layout{gap:24px;display:grid}.dual-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.list-grid,.course-stack,.student-list{gap:14px;display:grid}.page-fade-enter-active,.page-fade-leave-active{transition:opacity .14s}.page-fade-enter-from,.page-fade-leave-to{opacity:0}.dense-grid{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=1120px){.page-shell{padding:16px}.login-layout,.dual-grid{grid-template-columns:1fr}.topbar{flex-direction:column}.topbar-actions{justify-content:flex-start}}@media (width<=760px){.page-shell.admin-mode{overflow:auto}.admin-mobile-guard{display:block}.admin-shell{display:none}.dense-grid{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:flex-start}.pagination-bar{flex-direction:column;align-items:stretch}.course-button,.student-button{flex-direction:column;align-items:flex-start}}button,input,select{font:inherit}button{cursor:pointer;border:0}input:not([type=checkbox]):not([type=radio]):not(.el-select__input):not(.el-input__inner),select{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffe6;border-radius:14px;padding:12px 14px}.readonly-field-input{cursor:default;box-shadow:inset 0 1px #ffffff4d;color:#2d241fbd!important;background:#5c524b1a!important;border-color:#5c524b29!important}.readonly-field-input:focus{outline:none;box-shadow:inset 0 1px #ffffff4d,0 0 0 3px #5c524b14;border-color:#5c524b38!important}.ghost-button,.primary-button,.quick-button,.mini-select{transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s,transform .18s,opacity .18s}.ghost-button,.primary-button,.quick-button{border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:12px 16px;display:inline-flex}.ghost-button{color:var(--ink);border:1px solid var(--line);background:#ffffffdb}.ghost-button.selected{color:var(--accent-deep);background:#cf5a2e24}.primary-button{color:#fff9f5;background:linear-gradient(145deg,#cf5a2e,#a5431f)}.button-spinner{border:2px solid;border-right-color:#0000;border-radius:999px;flex:none;width:1em;height:1em;animation:.7s linear infinite button-spin}.ghost-button:hover,.primary-button:hover,.quick-button:hover{transform:translateY(-1px)}.form-grid{gap:14px;display:grid}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.field{gap:8px;display:grid}.field span{color:var(--muted);font-size:.9rem}.field.wide{grid-column:1/-1}.compact-button{padding:10px 14px}.mini-select{border:1px solid var(--line);border-radius:12px;min-width:110px;padding:8px 10px}.narrow-form{max-width:560px}.ghost-button:disabled,.success-button:disabled,.danger-button:disabled{opacity:.5;cursor:not-allowed}@keyframes button-spin{to{transform:rotate(360deg)}}@media (width<=760px){.form-grid.compact,.quick-actions,.table-filters{grid-template-columns:1fr}}.pill,.status-badge{border-radius:999px;justify-content:center;align-items:center;padding:6px 10px;font-size:.78rem;font-weight:700;display:inline-flex}.attendance-status-badge-unrecorded{color:#6b6056;background:#d7d1c9}.attendance-status-badge-present{color:#0a9448;background:#97d47f}.attendance-status-badge-late{color:#f5a000;background:#fff162}.attendance-status-badge-absent{color:#d72626;background:#f8cbce}.attendance-status-badge-leave{color:#167fbc;background:#9bd5ef}.pill,.tag-muted{color:var(--muted);background:#5c524b1f}.tag-good{color:var(--good);background:#2d866624}.tag-warn{color:var(--warn);background:#b9761224}.tag-bad{color:var(--bad);background:#a7443224}.tag-calm{color:var(--calm);background:#375d8c24}.empty-hint,.error-text,.error-banner,.toast-banner{border-radius:16px;margin:0;padding:12px 14px}.empty-hint{color:var(--muted);background:#5c524b14}.error-text,.error-banner{color:var(--bad);background:#a744321f}.toast-banner{color:var(--good);background:#2d866624}.error-banner,.toast-banner{width:min(360px,100vw - 32px);box-shadow:var(--shadow);pointer-events:none}.danger-button{color:var(--bad)}.success-button{color:var(--good)}.empty-cell{color:var(--muted);text-align:center!important}.login-panel .form-grid,.login-panel .field,.login-panel .error-text,.setup-panel .form-grid,.setup-panel .field,.setup-panel .error-text{text-align:left}.login-panel .eyebrow,.login-panel h1,.login-panel .hero-text,.setup-panel .eyebrow,.setup-panel h1,.setup-panel .hero-text{text-align:center}.login-panel h1,.setup-panel h1{white-space:nowrap;font-size:clamp(2rem,3vw,3.4rem)}.eyebrow,.section-kicker{color:var(--accent-deep);letter-spacing:.18em;text-transform:uppercase;margin:0 0 10px;font-size:12px;font-weight:700}h1,h2,h3,strong{color:var(--ink)}h1,h2{margin:0;font-family:Source Han Serif SC,Noto Serif SC,Songti SC,serif}h1{font-size:clamp(2.2rem,4vw,4.2rem);line-height:1.02}.hero-text,.hint,.detail-line,.feature-card p,.record-card p,.record-card small,.course-button p,.course-button small,.student-button p{color:var(--muted)}.feature-panel{gap:16px;display:grid}.feature-card,.record-card{background:var(--paper-strong);border:1px solid var(--line);border-radius:20px;padding:18px}.record-card strong,.course-button strong,.student-button strong{margin-bottom:4px;display:block}.inline-actions{flex-wrap:wrap;gap:10px;display:flex}.admin-shell{grid-template-columns:268px minmax(0,1fr);align-items:stretch;gap:24px;height:calc(100vh - 48px);min-height:calc(100vh - 48px);display:grid;overflow:hidden}.admin-sidebar{color:#f8efe6;box-shadow:var(--shadow);background:#2d1c14e6;border-radius:28px;grid-template-rows:auto minmax(0,1fr) auto;gap:22px;height:calc(100vh - 48px);padding:20px;display:grid;position:sticky;top:24px;overflow:hidden}.sidebar-about-button{color:#f8efe6;background:#fff9f31f;border:1px solid #fff4ee2e;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;transition:transform .12s,background-color .12s,border-color .12s;display:inline-flex;position:absolute;top:18px;right:18px}.sidebar-about-button:hover{background:#fff9f333;border-color:#fff4ee47;transform:translateY(-1px)}.sidebar-about-button-icon{width:16px;height:16px}.admin-sidebar .eyebrow,.admin-sidebar h2,.admin-sidebar strong,.admin-sidebar span{color:inherit}.sidebar-brand{justify-items:start;gap:8px;display:grid}.sidebar-brand .eyebrow{color:#f8efe6b3;margin-bottom:2px}.sidebar-emoji{background:#ffffff14;border-radius:24px;place-items:center;width:88px;height:88px;font-size:2.8rem;line-height:1;display:grid;box-shadow:inset 0 1px #ffffff14,0 10px 24px #180c0829}.sidebar-nav{scrollbar-width:none;-ms-overflow-style:none;align-content:start;justify-items:center;gap:10px;width:100%;min-height:0;display:grid;overflow:hidden auto}.sidebar-nav::-webkit-scrollbar{width:0;height:0;display:none}.sidebar-link{text-align:center;color:#f8efe6eb;background-color:#fff9f32e;border:1px solid #fff4ee2e;border-radius:18px;justify-content:center;width:min(100%,220px);padding:16px 18px;transition:transform .16s,background-color .12s,color .12s,border-color .12s,opacity .12s,box-shadow .16s;display:flex}.sidebar-link:hover{background-color:#fff9f33d;border-color:#fff4ee47;transform:translateY(-2px);box-shadow:inset 0 1px #ffffff14,0 10px 24px #140a0624}.sidebar-link strong,.sidebar-link span{display:block}.sidebar-link-label{text-align:center}.sidebar-link.active{color:#fff8f1;background-color:#cf5a2eeb;border-color:#edad8e80}.sidebar-footer{gap:14px;display:grid}.sidebar-logout{color:#fff5ed;background:#ffffff1a;border-color:#ffffff1f;width:100%}.admin-content{flex-direction:column;min-width:0;height:calc(100vh - 48px);min-height:calc(100vh - 48px);display:flex;overflow:hidden}.layout{flex-direction:column;flex:auto;gap:24px;min-height:0;display:flex;overflow:hidden}.admin-path-bar{border:1px solid var(--line);min-height:56px;color:var(--text);background:linear-gradient(#fffaf5f5,#faf1e8d1),radial-gradient(circle at 0,#cf5a2e14,#0000 32%);border-radius:20px;align-items:center;gap:10px;padding:0 18px;font-size:1.02rem;display:flex;box-shadow:0 10px 24px #2917100f}.admin-path-home{color:var(--accent);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.admin-path-home:hover{color:color-mix(in srgb, var(--accent) 78%, black)}.admin-path-home-icon{width:1.05rem;height:1.05rem}.admin-path-link{color:var(--accent);background:0 0;border:0;padding:0;font-weight:700}.admin-path-link:disabled{color:var(--muted);cursor:default}.admin-path-separator{color:var(--muted)}.admin-path-current{color:var(--text);font-size:1.06em;font-weight:700}.notice-stack{z-index:70;pointer-events:none;justify-items:center;gap:12px;display:grid;position:fixed;top:24px;left:50%;transform:translate(-50%)}.admin-panel-slot{flex:auto;min-height:0;display:grid}.admin-panel-slot>*{height:100%;min-height:0}.admin-mobile-guard{display:none}.admin-mobile-card{text-align:center;align-content:center;gap:24px;min-height:calc(100vh - 48px);display:grid}.admin-mobile-card .ghost-button{justify-self:center;min-width:180px}.about-placeholder-modal{text-align:center;align-content:center;justify-items:center;width:min(960px,100%);min-height:420px;display:grid}.about-placeholder-body{background:linear-gradient(#fffaf5e6,#faf1e8c7),radial-gradient(circle at 0 0,#cf5a2e14,#0000 42%);border:1px solid #72544229;border-radius:20px;align-content:center;justify-items:center;gap:12px;width:100%;min-height:280px;padding:36px 28px;display:grid}.about-placeholder-header{text-align:center;justify-items:center}.about-project-title{color:#3d2418;margin:0;font-size:1.5rem;font-weight:700}.about-project-name{letter-spacing:.18em;text-transform:uppercase;color:#663e2db8;margin:0;font-size:.98rem;font-weight:600}.about-project-description{color:#6a4637;max-width:560px;margin:8px 0 0;font-size:1rem;line-height:1.7}.about-github-button{color:#fffaf5;background:linear-gradient(135deg,#2f221c,#5a3a2a);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin-top:18px;text-decoration:none;transition:transform .2s,box-shadow .2s,opacity .2s;display:inline-flex;position:relative;box-shadow:0 14px 28px #4126182e}.about-github-button:hover{opacity:.96;transform:translateY(-1px);box-shadow:0 18px 32px #4126183d}.about-github-icon{width:36px;height:36px}.about-github-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=760px){.about-placeholder-body{padding:28px 20px}.about-project-title{font-size:1.28rem}.admin-mobile-guard{display:block}.admin-shell{display:none}}.stats-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:24px;display:grid}.overview-panel{grid-template-rows:auto minmax(0,1fr);gap:18px;height:100%;min-height:0;display:grid}.overview-summary{border:1px solid var(--line);background:linear-gradient(135deg, #2d86661f, #375d8c14), var(--paper-strong);border-radius:18px;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.overview-summary strong{color:var(--muted);letter-spacing:.08em;font-size:.85rem;display:block}.overview-summary p{color:var(--text);margin:6px 0 0;font-size:1.2rem;font-weight:700}.overview-summary small{color:var(--muted);text-align:right}.overview-grid{grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-columns:repeat(6,minmax(0,1fr));gap:18px;height:100%;min-height:0;display:grid}.overview-card{border:1px solid var(--line);background:var(--paper-strong);border-radius:20px;grid-column:span 2;grid-template-rows:auto minmax(0,1fr);gap:14px;height:100%;min-height:0;padding:18px;display:grid}.overview-card-half{grid-column:span 3}.overview-card-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.overview-card-header strong{color:var(--text);font-size:1rem}.overview-rank-list,.overview-session-list{align-content:start;gap:12px;height:100%;min-height:0;padding-right:4px;display:grid;overflow:auto}.overview-rank-item,.overview-session-item{background:#5c524b0f;border-radius:16px;padding:14px 16px;transition:background-color .18s,box-shadow .18s,transform .18s}.overview-entry-with-rate,.overview-entry-with-status{transition:background .24s,box-shadow .18s,transform .18s;box-shadow:inset 0 1px #ffffff42,0 1px 2px #29171008}.overview-entry-with-rate{background:linear-gradient(0deg, var(--overview-rate-fill-color,transparent), var(--overview-rate-fill-color,transparent)) left / var(--overview-rate-width,0%) 100% no-repeat, #5c524b0f}.overview-entry-with-status{background:var(--overview-entry-bg,#5c524b0f);box-shadow:inset 0 0 0 999px var(--overview-entry-status-tint,transparent), inset 0 1px 0 #ffffff42, 0 1px 2px #29171008}.overview-session-item-button,.overview-rank-item-button{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;border:0}.overview-rank-item-button:hover,.overview-session-item-button:hover{background:#cf5a2e1a}.overview-rank-item-button.overview-entry-with-rate:hover,.overview-session-item-button.overview-entry-with-rate:hover,.overview-session-item-button.overview-entry-with-status:hover{background:var(--overview-entry-hover-bg,#cf5a2e1a)}.overview-session-item-button.overview-entry-with-status:hover{box-shadow:inset 0 0 0 999px var(--overview-entry-status-hover-tint,transparent), inset 0 1px 0 #ffffff42, 0 1px 2px #29171008}.overview-rank-item-button.overview-entry-with-rate:hover,.overview-session-item-button.overview-entry-with-rate:hover{background:linear-gradient(0deg, var(--overview-rate-hover-fill-color,var(--overview-rate-fill-color,transparent)), var(--overview-rate-hover-fill-color,var(--overview-rate-fill-color,transparent))) left / var(--overview-rate-width,0%) 100% no-repeat, #5c524b17}.overview-rank-item-button:focus-visible,.overview-session-item-button:focus-visible{outline-offset:2px;outline:2px solid #cf5a2e59}.overview-rank-index{background:var(--overview-entry-lead-bg,#2d866624);width:30px;height:30px;color:var(--overview-entry-lead-text,var(--text));border-radius:999px;flex:none;place-items:center;font-size:.92rem;font-weight:700;display:inline-grid;box-shadow:inset 0 1px #ffffff57}.overview-entry{grid-template-rows:auto auto;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:4px 12px;display:grid}.overview-entry-two-column{grid-template-columns:minmax(0,1fr) auto}.overview-entry-lead{grid-area:1/1/span 2;align-self:center}.overview-entry-title,.overview-entry-subtitle{min-width:0}.overview-entry-title{color:var(--text);white-space:normal;line-height:1.4;display:block}.overview-entry-title-left,.overview-entry-subtitle-left{grid-column:2}.overview-entry-title-right,.overview-entry-subtitle-right{text-align:right;grid-column:3;justify-self:end}.overview-entry-two-column>.overview-entry-title-left,.overview-entry-two-column>.overview-entry-subtitle-left{grid-column:1}.overview-entry-two-column>.overview-entry-title-right,.overview-entry-two-column>.overview-entry-subtitle-right{grid-column:2}.overview-entry-title-left,.overview-entry-title-right{grid-row:1}.overview-session-summary-title{justify-content:flex-end;align-self:start}.overview-session-summary-rate{white-space:nowrap;font-variant-numeric:tabular-nums;width:3rem;color:var(--text);flex:0 0 3rem;justify-content:flex-end;align-items:center;font-weight:700;display:inline-flex}.overview-session-summary-rate-spaced{margin-left:10px}.overview-entry-subtitle-left,.overview-entry-subtitle-right{color:var(--muted);white-space:normal;grid-row:2;margin:0;font-size:.9rem;line-height:1.4;display:block}.overview-abnormal-status .status-badge{justify-content:center;align-items:center;min-width:56px;display:inline-flex}.stat-card{border:1px solid var(--line);background:var(--paper-strong);border-radius:20px;padding:18px}.stat-card span{color:var(--muted);margin-bottom:8px;display:block}.stat-card strong{font-size:2rem}.tone-good{background:#2d86661f}.tone-warn{background:#b976121f}.tone-bad{background:#a744321f}.tone-calm{background:#375d8c1f}.tone-muted{background:#5c524b14}.table-wrap,.user-table-wrap{background:var(--paper-strong);scrollbar-gutter:stable both-edges;overflow:auto}.admin-data-list{--admin-list-col-unit:11px;background:var(--paper-strong);border-radius:20px;grid-template-rows:minmax(0,1fr) 44px;height:100%;min-height:0;display:grid;position:relative;overflow:hidden}.admin-data-list-with-pagination{grid-template-rows:minmax(0,1fr) 44px auto}.admin-data-list:focus,.admin-data-list:focus-visible{box-shadow:none;outline:none}.admin-data-list>.table-wrap,.admin-data-list>.user-table-wrap{background:0 0;height:100%;min-height:0;overflow:auto}.workspace-card>.admin-data-list:only-child,.course-subpage-main>.admin-data-list:only-child,.class-student-list-card>.admin-data-list:only-child,.course-lesson-list-card>.admin-data-list:only-child,.course-group-current-students-card>.admin-data-list:only-child,.course-group-candidates-card>.admin-data-list:only-child{grid-row:1/-1}.admin-data-list-empty>.table-wrap,.admin-data-list-empty>.user-table-wrap{display:flex}.admin-data-list-empty .data-table,.admin-data-list-empty .data-table tbody,.admin-data-list-empty .data-table tbody tr{height:100%}.admin-data-list-empty .empty-cell{vertical-align:middle;height:100%}.data-table{--table-header-row-height:64px;width:max(100%, var(--admin-data-list-min-width,0px));min-width:var(--admin-data-list-min-width,0px);border-collapse:separate;border-spacing:0;table-layout:auto}.data-table th,.data-table td{box-sizing:border-box;text-align:left;border-bottom:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none;padding:16px 18px;transition:background-color .18s;overflow:hidden}.actions-column-col{width:1%}.data-table tbody tr:hover td{background:#5c524b0f}.data-table tbody tr.data-row-highlighted td{animation:1.8s ease-in-out admin-row-breathe}.data-table th{color:var(--muted);z-index:2;background:var(--paper-strong);background-clip:padding-box;font-size:.9rem;position:sticky}@keyframes admin-row-breathe{0%{background:#5c524b0f}45%{background:#cf5a2e3d}to{background:#5c524b0f}}.data-table thead tr:first-child th{height:var(--table-header-row-height);z-index:4;top:0}.data-table thead tr.table-filter-row th{top:var(--table-header-row-height);z-index:3;background:var(--paper-strong)}.user-manage-table,.student-manage-table,.class-manage-table,.course-manage-table{table-layout:auto}.selection-column{width:44px;min-width:44px;max-width:44px;text-overflow:clip!important;text-align:center!important;overflow:visible!important}.selection-column input[type=checkbox]{width:16px;height:16px;margin:0}.data-table input,.data-table select,.data-table button,.data-table textarea{-webkit-user-select:auto;user-select:auto}.data-list-copy-cell{text-overflow:ellipsis;text-align:left;min-width:0;display:block;overflow:hidden}.admin-data-list-copy-toast{z-index:80;position:fixed;top:18px;left:50%;transform:translate(-50%)}.copyable-inline-button{text-overflow:ellipsis;text-align:left;vertical-align:top;width:auto;min-width:0;max-width:100%;color:inherit;font:inherit;line-height:inherit;cursor:copy;background:0 0;border:0;padding:0;display:inline-block;overflow:hidden}.actions-column{text-align:right!important;white-space:nowrap!important;text-overflow:clip!important;overflow:hidden!important}.user-actions{flex-wrap:nowrap;justify-content:flex-end;width:auto;max-width:100%;display:inline-flex}.user-actions-placeholder{visibility:hidden}.settings-card{max-width:640px}.admin-settings-card{max-width:760px}.admin-settings-panel{height:100%;min-height:0}.settings-two-column{grid-template-columns:minmax(280px,.72fr) minmax(0,1.6fr);gap:24px;height:100%;min-height:0;display:grid}.settings-profile-column,.settings-terms-column{min-height:0}.settings-profile-card,.settings-terms-card{border:1px solid var(--line);background:var(--paper-strong);border-radius:20px;grid-template-rows:auto minmax(0,1fr);gap:18px;min-height:0;padding:18px;display:grid}.term-segment-field{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.term-segment-field>input,.term-segment-field>select{min-width:0}.term-segment-field>input{flex:1 1 0}.term-segment-field>select{flex:0 0 88px}.term-segment-separator{color:var(--muted);flex:none}.term-segment-static-input{text-align:center;flex:0 0 96px;min-width:96px}.settings-layout-grid{grid-template-columns:minmax(320px,560px) minmax(0,1fr);gap:24px;height:100%;min-height:0;display:grid}.account-settings-card{max-width:560px}.account-summary{gap:12px;display:grid}.student-bind-modal{max-width:min(1080px,100vw - 48px)}.student-bind-layout{grid-template-columns:minmax(0,1.3fr) minmax(320px,.9fr);gap:24px;min-height:0;display:grid}.student-bind-class-panel,.student-bind-form{min-height:0}.student-bind-panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.student-bind-class-filter{margin-bottom:12px}.student-bind-class-list{gap:12px;max-height:520px;padding-right:4px;display:grid;overflow:auto}.student-bind-class-item{border:1px solid var(--line);background:#5c524b0d;border-radius:16px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.student-bind-class-item-selected{background:#a14c221a;border-color:#a14c2247}.student-bind-class-main{min-width:0}.student-bind-class-main strong{color:var(--text);display:block}.student-bind-class-main p{color:var(--muted);margin:4px 0 0;font-size:.92rem}.student-bind-loadmore{justify-content:flex-start;margin-top:14px;display:flex}.student-bind-current{gap:4px;margin-bottom:6px;display:grid}.class-display-text{white-space:pre-wrap}.student-bind-empty{text-align:center;padding:28px 16px}.filter-action-push{margin-left:0}.attendance-manage-panel{gap:18px;height:100%;min-height:0;display:grid}.attendance-panel-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.attendance-panel-heading-main h3{margin:0;font-size:1.08rem}.attendance-panel-heading-main p{margin:6px 0 0}.attendance-toolbar-actions{margin-left:auto}.attendance-detail-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.attendance-summary-card{border:1px solid var(--line);background:#5c524b0d;border-radius:18px;padding:16px 18px}.attendance-summary-card span{color:var(--muted);font-size:.85rem;display:block}.attendance-summary-card strong{color:var(--text);margin-top:8px;font-size:1rem;display:block}.attendance-summary-card p{color:var(--muted);margin:6px 0 0}.attendance-export-form{gap:14px;display:grid}.attendance-export-range-field{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.attendance-export-range-field>input{flex:1 1 0;min-width:0}.attendance-record-panel,.attendance-page,.attendance-detail-layout{height:100%;min-height:0}.attendance-detail-view{grid-template-rows:minmax(0,1fr);height:100%;min-height:0;display:grid}.attendance-detail-view>.course-subpage-grid{height:100%;min-height:0}.attendance-page{grid-template-rows:minmax(0,1fr);display:grid}.attendance-session-summary{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.attendance-session-summary-chip{justify-content:space-between;gap:8px;min-width:0;padding:5px 6px 5px 11px;box-shadow:inset 0 1px #ffffff6b,0 1px 2px #2917100f}.attendance-session-summary-label{white-space:nowrap}.attendance-session-summary-count{min-width:1.75rem;color:inherit;background:#ffffff6b;border-radius:999px;justify-content:center;align-items:center;padding:2px 8px;font-size:.76rem;line-height:1.2;display:inline-flex;box-shadow:inset 0 1px #ffffff47}.attendance-session-summary-empty{color:var(--muted)}.attendance-page>.admin-data-list,.attendance-detail-layout>.course-subpage-main>.admin-data-list,.attendance-detail-view>.course-subpage-grid>.course-subpage-main>.admin-data-list{height:100%;min-height:0}.attendance-page-toolbar{width:100%}.attendance-path-bar{align-items:center;gap:10px;min-height:32px;display:inline-flex}.attendance-path-bar strong{color:var(--text);font-size:1rem}.attendance-path-link{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}.attendance-path-link:hover{color:var(--accent)}.attendance-path-separator{color:var(--muted)}.attendance-pagination-term{width:min(260px,100%)}.attendance-pagination-term-plain{display:block}.attendance-detail-layout{grid-template-columns:320px minmax(0,1fr);gap:18px;display:grid}.copy-token-group{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.copy-token-button{color:inherit;font:inherit;cursor:copy;background:0 0;border:0;padding:0;display:inline}.copy-token-separator{color:var(--muted)}.account-line{border:1px solid var(--line);background:var(--paper-strong);border-radius:18px;gap:4px;padding:16px 18px;display:grid}.account-line span{color:var(--muted);font-size:.9rem}.form-error-text{color:#b84f32;margin:-4px 0 0}.system-setting-row{justify-content:flex-start;margin-top:8px;display:flex}.system-setting-row input,.system-setting-row select{width:min(240px,100%)}.user-manage-panel{grid-template-rows:auto minmax(0,1fr) auto;height:100%;min-height:0;display:grid;overflow:hidden}.user-manage-panel>.table-wrap,.user-manage-panel>.user-table-wrap{overscroll-behavior:contain;height:100%;min-height:0;position:relative;overflow:auto}.user-manage-panel>.admin-data-list:first-child:last-child,.user-manage-panel>.class-student-subpage-grid,.user-manage-panel>.attendance-page,.user-manage-panel>.attendance-detail-view,.user-manage-panel>.attendance-detail-layout{grid-row:1/span 3;height:100%;min-height:0}.modal-section-heading{margin-bottom:16px}.pagination-bar{box-sizing:border-box;z-index:6;background:var(--paper-strong);border-top:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;min-height:72px;margin-top:0;padding:12px;display:flex;position:relative}.pagination-pages{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pagination-button{min-width:44px}.pagination-ellipsis{min-width:20px;color:var(--muted);text-align:center}.pagination-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:20px;display:flex}.pagination-jump{width:auto;color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:8px;display:inline-flex}.pagination-jump input{text-align:center;flex:0 0 56px;width:56px;min-width:56px;max-width:56px;min-height:40px;padding-left:8px;padding-right:8px}.pagination-size{width:auto;color:var(--muted);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.pagination-size select{width:112px;min-width:0}.pagination-trailing{align-items:center;gap:20px;display:inline-flex}.pagination-trailing>*{min-width:0}.data-list-summary-bar{background:#fffdf8b8;border-top:1px solid #5c524b14;justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:0 12px;display:flex}.data-list-summary-left,.data-list-summary-right{min-width:0}.data-list-summary-left{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.data-list-summary-right{text-align:right;white-space:nowrap;margin-left:auto}.table-filters{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.table-filter-row th{background:var(--paper-strong);vertical-align:middle;white-space:normal;height:72px;padding-top:0;padding-bottom:0}.table-filter-cell input,.table-filter-cell select{width:100%;min-width:0;min-height:42px;display:block}.table-filter-cell-active{background:#c4803f14!important}.table-filter-cell-active input,.table-filter-cell-active select,.table-filter-cell-active textarea{background:#c4803f14;border-color:#c4803f47;box-shadow:inset 0 0 0 1px #c4803f0a}.table-filter-spacer{background:var(--paper-strong)}.table-filter-actions-cell{text-align:right!important}.table-filter-actions{white-space:nowrap;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:8px;min-height:42px;display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.log-filters{grid-template-columns:repeat(6,minmax(0,1fr))}.course-filters{grid-template-columns:repeat(4,minmax(0,1fr))}.course-manage-modal{grid-template-rows:auto minmax(0,1fr);max-height:100%;display:grid;position:relative;overflow:hidden}.course-form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.course-section-heading h4{color:#8e5d42;letter-spacing:.04em;margin:0;font-size:1rem}.course-quick-editor{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.course-quick-editor-side{grid-template-columns:1fr}.course-quick-editor-paired{grid-template-columns:repeat(2,minmax(0,1fr))}.course-week-picker{gap:10px;display:grid}.course-week-shortcuts{flex-wrap:wrap}.course-week-row{grid-template-columns:repeat(8,minmax(0,1fr));gap:10px;display:grid}.course-week-button{min-height:44px}.course-week-button.selected{color:#9a471f;background:#ca592829;border-color:#ca59283d}.course-week-button,.course-calendar-week-button,.user-free-time-week-button{-webkit-user-select:none;user-select:none}.course-quick-actions{justify-content:flex-start;display:flex}.course-week-shortcut-button.selected{color:#9a471f;background:#ca592829;border-color:#ca59283d}.course-session-table-wrap{height:100%;min-height:0;overflow-y:auto}.course-session-location-editor{grid-template-columns:minmax(40px,.5fr) auto minmax(40px,.5fr);align-items:center;gap:8px;min-width:112px;display:grid}.course-session-location-editor input,.course-session-table-wrap td select{width:100%;min-width:0}.course-session-location-separator{color:var(--muted)}.course-calendar-panel{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0;display:grid}.course-calendar-heading{margin-bottom:6px}.course-calendar-heading h2{margin:0}.course-calendar-toolbar{grid-template-columns:220px minmax(0,1fr) max-content;align-items:center;gap:14px;margin-bottom:18px;display:grid}.course-calendar-toolbar-primary{align-items:center;margin-bottom:14px}.segmented-toggle{gap:8px;display:flex}.course-calendar-switch{white-space:nowrap;border-radius:0;width:100%;height:100%;padding:0 12px}.course-calendar-switch-text{width:100%;height:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:12px;padding:10px 14px;font-weight:600;transition:background-color .14s,color .14s,box-shadow .14s,transform .14s}.course-calendar-switch-text:hover,.course-calendar-switch-text-active{color:#7b3418}.course-calendar-term-field{width:220px}.course-calendar-toolbar-term{flex:0 0 220px}.course-calendar-weeks{grid-template-columns:repeat(16,minmax(40px,54px));justify-content:center;gap:8px;min-width:0;display:grid}.course-calendar-week-button{border-radius:999px;place-items:center;width:100%;min-width:40px;max-width:54px;height:40px;padding:0 10px;display:grid}.course-calendar-week-button.current{border-color:#ca592885;box-shadow:inset 0 0 0 1px #ca592842,inset 0 1px #ffffff4d}.course-calendar-weekend-toggle{justify-self:end}.course-calendar-grid-wrap{border:1px solid var(--line);background:var(--paper-strong);scrollbar-width:none;-ms-overflow-style:none;border-radius:22px;height:100%;min-height:0;overflow:auto}.course-calendar-grid-wrap::-webkit-scrollbar{display:none}.course-calendar-grid{width:100%;min-width:100%;height:100%;min-height:100%;display:grid}.course-calendar-corner-top{z-index:4;background:#fffdf9;justify-content:center;align-items:center;padding:0;transition:background-color .18s;display:flex;position:sticky;top:0}.course-calendar-corner-top:hover{background:#ca592814}.course-calendar-corner-top-active{background:#ca592824}.course-calendar-corner,.course-calendar-day,.course-calendar-section,.course-calendar-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.course-calendar-day,.course-calendar-section{background:#5c524b0f;padding:6px 12px}.course-calendar-day{text-align:center;z-index:4;background:#f6f1ea;justify-content:center;align-items:center;height:42px;min-height:42px;font-weight:600;display:flex;position:sticky;top:0}.course-calendar-day-active{background:#edd8cf}.course-calendar-section strong{margin-bottom:8px;font-size:.95rem;display:block}.course-calendar-section{text-align:center;align-content:center;justify-items:center;gap:4px;height:100%;display:grid}.course-calendar-section-active{background:#ca592824}.course-calendar-section small{color:var(--muted);font-size:.82rem}.course-calendar-cell{isolation:isolate;flex-wrap:wrap;align-content:flex-start;gap:8px;height:100%;min-height:0;padding:12px;transition:background-color .18s;display:flex;position:relative}.course-calendar-cell:before{content:"";background:var(--course-calendar-free-highlight-bg,transparent);opacity:0;pointer-events:none;z-index:0;transition:background-color .18s,opacity .18s;position:absolute;inset:0}.course-calendar-cell>*{z-index:1;position:relative}.course-calendar-cell-active-column{background:#ca59280f}.course-calendar-cell-active-current{background:#ca592824}.course-calendar-cell-free-highlight:before{opacity:.82}.course-tag{--course-tag-bg:#ca592829;--course-tag-hover-bg:#ca592838;--course-tag-text:#7b3418;background:var(--course-tag-bg,#ca592829);color:var(--course-tag-text,#7b3418);border-radius:14px;flex:none;width:fit-content;max-width:100%;padding:8px 10px;font-size:.92rem;font-weight:500;line-height:1.35;transition:background-color .18s,color .18s,box-shadow .18s,transform .18s,opacity .18s}.course-tag-button{cursor:pointer;text-align:left;font:inherit;border:0}.course-tag-button:disabled{cursor:default}.course-tag-button:not(:disabled):hover{background:var(--course-tag-hover-bg,var(--course-tag-bg,#ca592833));box-shadow:inset 0 1px #ffffff61,0 2px 6px #29171014}.course-tag-button:focus-visible{outline-offset:2px;outline:2px solid #ca592852}.course-tag-muted{--course-tag-bg:#5c524b0f;--course-tag-hover-bg:#5c524b1a;--course-tag-text:#847a72f5;--course-tag-border:#847a7247;background:var(--course-tag-bg);color:var(--course-tag-text)}.course-tag-current-week{box-shadow:inset 0 0 0 2px var(--course-tag-border,#7b34188f), inset 0 1px 0 #ffffff61;font-weight:700}.course-tag-current-week.course-tag-button:not(:disabled):hover{box-shadow:inset 0 0 0 2px var(--course-tag-border,#7b34188f), inset 0 1px 0 #ffffff61, 0 2px 6px #29171014}.course-tag-free{--course-tag-bg:#2d866624;--course-tag-hover-bg:#2d866633;--course-tag-text:#235843;background:var(--course-tag-bg);color:var(--course-tag-text)}.course-tag-free-dimmed{--course-tag-bg:#5c524b14;--course-tag-hover-bg:#5c524b1f;--course-tag-text:#6b6056c7;background:var(--course-tag-bg);color:var(--course-tag-text)}.course-tag-free-highlighted{box-shadow:inset 0 0 0 2px var(--course-tag-border,#2358436b), inset 0 1px 0 #ffffff61}.course-tag-free-highlighted.course-tag-button:not(:disabled):hover{box-shadow:inset 0 0 0 2px var(--course-tag-border,#2358436b), inset 0 1px 0 #ffffff61, 0 2px 6px #29171014}.course-floating-tooltip{z-index:160;border:1px solid var(--line);max-width:320px;box-shadow:var(--shadow);pointer-events:none;background:#fffcf7fa;border-radius:16px;padding:12px 14px;position:fixed}.course-floating-tooltip strong{margin-bottom:6px;display:block}.course-floating-tooltip p{color:var(--muted);margin:0;line-height:1.4}.course-floating-tooltip-summary{margin-top:10px}.split-modal-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;height:100%;min-height:0;display:grid;overflow:hidden}.split-modal-main,.split-modal-side{overscroll-behavior:contain;grid-template-rows:auto minmax(0,1fr);gap:18px;min-height:0;max-height:100%;display:grid;overflow:hidden}.nested-modal-backdrop{z-index:12;position:absolute;inset:0}.class-student-modal{grid-template-rows:auto minmax(0,1fr);max-height:100%;display:grid;overflow:hidden}.class-student-modal-header{display:block}.class-student-header-content{gap:10px;width:100%;display:grid}.class-student-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.class-student-header-actions{flex-wrap:nowrap;margin-left:auto}.class-student-target-line,.class-student-pending-line{margin:0}.class-student-table-wrap{height:100%;min-height:360px;overflow:hidden auto}.class-student-table-wrap .data-table{min-width:0}.class-student-manage-table{table-layout:auto}.class-student-col-id,.class-student-col-name{width:36%}.class-student-col-action{width:28%}.class-student-table-wrap .actions-column{min-width:0}.file-import-modal{gap:20px;display:grid}.file-import-body{align-content:center;justify-items:center;gap:16px;min-height:220px;padding:12px 0;display:grid}.file-import-input{display:none}.file-import-select-button{min-width:148px}.file-import-file-name{text-align:center;word-break:break-all;max-width:100%;margin:0}.file-import-footer{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.wide-action-button{justify-content:center;min-width:140px}.course-student-editor-modal{grid-template-rows:auto minmax(0,1fr);max-height:100%;display:grid;overflow:hidden}.course-student-editor-layout{grid-template-columns:minmax(0,1.45fr) minmax(480px,.95fr)}.course-student-editor-main{gap:0}.course-student-selected-list,.course-student-search-list{gap:14px;display:grid}.course-student-selected-list{align-content:start}.course-student-class-card{border:1px solid var(--line);background:#ca592814;border-radius:20px;align-self:start;gap:10px;padding:18px;display:grid}.course-student-class-row,.course-student-loose-row,.course-student-search-row{align-items:center;gap:12px;display:flex}.course-student-class-row{grid-template-columns:auto minmax(0,1fr) auto;display:grid}.course-student-class-row strong{min-width:0}.course-student-class-toggle{text-align:left;min-width:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;padding:0;display:grid}.course-student-class-label{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.course-student-class-row .ghost-button,.course-student-loose-row .ghost-button,.course-student-search-row .ghost-button{margin-left:auto}.course-student-class-collapse{border:1px solid var(--line);color:#8f6a39;width:22px;height:22px;font:inherit;cursor:pointer;background:#fffaf4;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.course-student-check-input{accent-color:#a57f3e;width:16px;height:16px;margin:0}.course-student-member-list{border-top:1px solid #5c524b1f;gap:0;display:grid}.course-student-member-row{border-bottom:1px solid #5c524b1f;grid-template-columns:auto 160px minmax(0,1fr);align-items:center;column-gap:14px;padding:12px 0;display:grid}.course-student-member-id,.course-student-member-name{min-width:0}.course-student-loose-block{gap:12px;padding-top:8px;display:grid}.course-student-loose-text{grid-template-columns:160px minmax(0,1fr);align-items:center;column-gap:14px;min-width:0;display:grid}.course-student-editor-side{grid-template-rows:minmax(280px,.95fr) minmax(420px,1.25fr) auto;gap:16px}.course-student-side-block{min-height:0}.course-student-side-table-wrap{height:100%;min-height:0;overflow:hidden auto}.course-student-side-table{table-layout:auto}.course-student-side-col-id{width:42%}.course-student-side-col-name{width:30%}.course-student-side-col-action{width:28%}.course-student-search-panel{align-content:start;max-height:100%;padding-right:6px;overflow-y:auto}.course-student-search-row{border-bottom:1px solid #5c524b1f;align-items:center;column-gap:14px;padding:12px 0;display:grid}.user-free-time-modal{grid-template-rows:auto auto minmax(0,1fr) auto;max-height:100%;display:grid;overflow:hidden}.user-free-time-toolbar{align-items:flex-end;gap:18px;margin-bottom:18px;display:flex}.user-free-time-term-field{width:240px}.user-free-time-loading{min-height:320px;color:var(--muted);place-items:center;display:grid}.user-free-time-grid-wrap{overscroll-behavior:contain;touch-action:pan-y pinch-zoom;border:1px solid var(--line);background:var(--paper-strong);border-radius:22px;min-height:0;overflow:auto}.user-free-time-grid{min-height:100%;display:grid}.user-free-time-corner,.user-free-time-day,.user-free-time-section,.user-free-time-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.user-free-time-corner,.user-free-time-day,.user-free-time-section{text-align:center;background:#5c524b0f;justify-content:center;align-items:center;padding:10px 12px;font-weight:600;display:flex}.user-free-time-corner,.user-free-time-day{z-index:4;background:#f6f1ea;position:sticky;top:0}.user-free-time-day{background:#f6f1ea}.user-free-time-cell{align-content:center;gap:0;padding:12px;display:grid}.user-free-time-week-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;display:grid}.user-free-time-week-button{color:#4c3328;min-width:0;min-height:48px;box-shadow:none;background:#fffaf4d1;border:1px solid #532a1329;border-radius:0;padding:0;font-weight:600;transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s,transform .18s}.user-free-time-week-row .user-free-time-week-button:not(:first-child){border-left-width:0}.user-free-time-week-row+.user-free-time-week-row .user-free-time-week-button{border-top-width:0}.user-free-time-week-button:hover{color:#8f4220;background:#cf5a2e1a;transform:none}.user-free-time-week-button.selected{color:#614031;background:linear-gradient(#eccdb6ad,#e2bc9dd1);border-color:#a676584d;box-shadow:inset 0 1px #fffaf56b}.user-free-time-week-button.selected:hover{color:#5d3c2e;background:linear-gradient(#f1d4bec7,#e7c2a4e0)}.user-free-time-footer{justify-content:center;padding-top:18px;display:flex}.compact-log-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-log-filters{grid-template-columns:minmax(160px,1.15fr) minmax(160px,1fr) minmax(160px,1fr) minmax(140px,.9fr) minmax(160px,.95fr)}.wide-log-filters{grid-template-columns:repeat(6,minmax(0,1fr))}.compact-table th,.compact-table td{padding:10px 14px}.class-student-footer{justify-content:flex-end;align-items:center;display:flex}.narrow-button{min-width:160px}.hidden-input{display:none}.course-manage-panel{grid-template-rows:minmax(0,1fr);gap:0;height:100%;min-height:0;display:grid;overflow:hidden}.course-manage-page{grid-template-rows:minmax(0,1fr);gap:0;height:100%;min-height:0;display:grid}.course-manage-page>.admin-data-list{height:100%;min-height:0}.class-manage-page{grid-row:1/span 3;grid-template-rows:minmax(0,1fr);height:100%;min-height:0;display:grid}.class-manage-page>.admin-data-list{height:100%;min-height:0}.course-page-toolbar{justify-content:space-between;align-items:center;gap:16px;display:flex}.course-manage-term-filter{width:min(260px,100%)}.course-manage-term-filter select{width:100%}.course-manage-subpage-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.subpage-fade-enter-active,.subpage-fade-leave-active{transition:opacity .22s,transform .22s}.subpage-fade-enter-from,.subpage-fade-leave-to{opacity:0;transform:translateY(10px)}.course-subpage-grid{grid-template-columns:320px minmax(0,1fr);align-items:stretch;gap:18px;height:100%;min-height:0;display:grid}.course-student-manage-layout,.class-student-subpage-grid{grid-template-columns:320px minmax(0,1fr);gap:18px;height:100%;min-height:0;display:grid}.course-student-main-column{grid-template-columns:minmax(280px,1fr) minmax(420px,1fr);gap:18px;height:100%;min-height:0;display:grid}.class-student-subpage-main{grid-template-rows:minmax(0,1fr);gap:18px;height:100%;min-height:0;display:grid}.course-context-card,.class-student-context-card,.course-subpage-main,.course-group-current-students-card,.course-group-candidates-card,.class-student-list-card,.course-student-main-column{height:100%;min-height:0}.course-context-card,.class-student-context-card,.course-subpage-main,.course-group-current-students-card,.course-group-candidates-card,.class-student-list-card{grid-template-rows:auto minmax(0,1fr);gap:16px;display:grid}.course-context-card,.class-student-context-card{overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;background:radial-gradient(circle at 0 0,#cf5a2e14,#0000 38%),linear-gradient(#fffcf7fa,#faf2e9eb);border:1px solid #a0775429;border-radius:22px;padding:18px;overflow-y:auto;box-shadow:inset 0 1px #ffffff8c,0 12px 28px #2917100d}.course-context-card::-webkit-scrollbar{display:none}.class-student-context-card::-webkit-scrollbar{display:none}.nested-context-card{background:linear-gradient(#ffffffeb,#fff9f2db);border:1px solid #a077541f;border-radius:18px;align-self:start;min-height:max-content;padding:16px;box-shadow:inset 0 1px #ffffff7a,0 8px 18px #2917100a}.section-heading-compact{min-height:0;padding-bottom:8px}.course-context-card>.settings-profile-summary-list,.class-student-context-card>.settings-profile-summary-list{grid-auto-rows:max-content;align-content:start;gap:16px;height:auto;min-height:max-content;display:grid}.course-subpage-grid>.course-context-card>.settings-profile-summary-list>.nested-context-card:only-child{grid-template-rows:auto minmax(0,1fr);align-self:start;height:auto;min-height:max-content;display:grid}.course-subpage-grid>.course-context-card>.settings-profile-summary-list>.nested-context-card:only-child>.settings-profile-summary-list{align-content:start;height:auto;min-height:max-content}.course-context-card .section-heading strong{font-size:1.02rem}.settings-profile-summary-list{gap:10px;display:grid}.settings-profile-summary-item{background:#ffffffb8;border:1px solid #a077541a;border-radius:14px;align-self:start;gap:5px;padding:12px 14px;display:grid}.settings-profile-summary-item span{color:var(--muted);letter-spacing:.03em;font-size:.84rem}.settings-profile-summary-item strong{color:var(--text);white-space:pre-line;font-size:.98rem;line-height:1.4}.course-lessons-main{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:18px;display:grid}.course-groups-main,.course-group-current-students-card,.course-group-candidates-card,.course-lesson-list-card,.course-group-editor-block{grid-template-rows:minmax(0,1fr)}.course-subpage-grid>.course-context-card,.course-subpage-grid>.course-subpage-main,.class-student-subpage-grid>.course-context-card,.class-student-subpage-grid>.class-student-subpage-main,.course-subpage-grid>.course-subpage-main>.admin-data-list,.class-student-list-card>.admin-data-list{height:100%;min-height:0}.class-student-list-card{overflow:hidden}.course-lesson-create-card,.course-lesson-list-card{gap:14px;min-height:0;display:grid}.course-lesson-create-card{overscroll-behavior:contain;background:radial-gradient(circle at 0 0,#cf5a2e14,#0000 38%),linear-gradient(#fffcf7fa,#faf2e9eb);border:1px solid #a0775429;border-radius:22px;align-content:start;place-self:stretch end;width:min(100%,320px);height:100%;min-height:340px;padding:18px;overflow:hidden auto;box-shadow:inset 0 1px #ffffff8c,0 12px 28px #2917100d}.course-lesson-list-card{min-width:0}.course-lesson-list-card>.admin-data-list{height:100%;min-height:0}.course-lesson-create-form{grid-template-columns:1fr;gap:12px;display:grid}.course-session-form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.course-lesson-week-picker{gap:12px;display:grid}.course-lesson-week-shortcuts{justify-content:center}.course-lesson-week-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:100%;display:grid}.course-lesson-week-grid>.ghost-button.compact-button{border-radius:999px;width:100%;min-width:0;height:52px;padding:0}.course-context-summary,.course-subpage-main>.admin-data-list,.course-group-candidates-card>.course-group-editor-grid,.course-group-current-students-card>.course-group-student-groups{height:100%;min-height:0}.course-group-table,.course-group-candidate-table{table-layout:auto}.course-group-student-block-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.course-group-student-groups{gap:12px;height:100%;min-height:0;display:grid;overflow:auto}.course-group-student-block-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.course-group-student-block{border:1px solid var(--panel-border,#0f172a14);background:#f8fafccc;border-radius:14px;padding:12px}.course-group-student-block-expanded{background:#fff9f2eb;border-color:#a14c222e}.course-group-student-summary{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:12px;padding:0;display:flex}.course-group-student-caret{color:var(--muted);transition:transform .2s}.course-group-student-caret-expanded{transform:rotate(90deg)}.course-group-student-list{gap:8px;margin-top:10px;display:grid}.course-group-student-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.course-group-student-row-standalone{min-height:44px}.course-group-student-row-main{align-items:center;gap:12px;min-width:0;display:flex}.course-group-student-standalone-meta{gap:4px;display:grid}.course-group-editor-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:1fr;gap:12px;height:100%;min-height:0;display:grid}.course-group-editor-block{gap:10px;height:100%;min-height:0;display:grid}.course-group-editor-block>.admin-data-list{height:100%;min-height:0}@media (width<=1120px){.stats-grid{grid-template-columns:1fr}.overview-grid{grid-template-rows:none;grid-template-columns:1fr}.overview-card,.overview-card-half{grid-column:span 1}.overview-summary{flex-direction:column;align-items:flex-start}.overview-summary small{text-align:left}.course-filters,.attendance-log-filters,.course-form-grid,.course-quick-editor,.course-quick-editor-paired,.course-lesson-create-form,.settings-layout-grid,.log-filters{grid-template-columns:1fr}.course-calendar-toolbar{grid-template-columns:1fr;align-items:stretch}.course-calendar-term-field{width:100%}.course-calendar-toolbar-term{flex-basis:100%}.course-calendar-weeks{flex-basis:100%;justify-content:flex-start}.split-modal-layout,.user-free-time-week-row,.course-group-editor-grid,.course-subpage-grid,.class-student-subpage-grid,.course-student-manage-layout{grid-template-columns:1fr}.course-student-manage-layout,.class-student-subpage-main,.course-student-main-column{grid-template-rows:auto minmax(0,1fr)}.course-lessons-main,.course-student-main-column{grid-template-columns:1fr}.course-lesson-create-card{justify-self:stretch;width:100%}.course-group-editor-grid{grid-template-rows:none}.course-lesson-week-grid,.course-week-row{grid-template-columns:repeat(4,minmax(0,1fr))}.course-student-search-row-student{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.class-student-title-row{flex-wrap:wrap;align-items:flex-start}.class-student-header-actions{margin-left:0}.user-free-time-toolbar{flex-direction:column;align-items:stretch}.user-free-time-term-field{width:100%}.course-calendar-grid{grid-template-columns:120px repeat(7,minmax(160px,1fr))}}.student-mobile-shell{background:radial-gradient(circle at 100% 0,#fffbf5eb,#0000 34%),linear-gradient(#efe0d2 0%,#ecd8c8 100%);border:1px solid #5b331d1a;border-radius:40px;width:min(100%,440px);min-height:calc(100dvh - 48px);margin:0 auto;padding:18px 18px 124px;box-shadow:0 28px 60px #63351f1f}.student-hero-card,.student-section-card,.student-summary-card{border:1px solid #532a1314;position:relative;overflow:hidden;box-shadow:0 14px 28px #6e3c2314}.student-summary-card,.student-section-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffbf7d1;border-radius:28px}.student-brand,.student-hero-brand{color:#f8efe6bd;margin:0}.student-page-meta .student-brand{color:#5c4539e0}.student-notice-stack{margin-top:4px}.student-mobile-main{margin-top:12px}.student-mobile-page{gap:18px;display:grid}.student-hero-card{box-shadow:var(--shadow);color:#fff8f1;background:#2d1c14e6;border:0;border-radius:40px;padding:28px 34px 34px}.student-hero-brand{color:#f8efe6b3;margin-bottom:18px}.student-hero-about-button{color:#f8efe6;background:#fff9f31f;border:1px solid #fff4ee2e;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;transition:transform .12s,background-color .12s,border-color .12s;display:inline-flex;position:absolute;top:18px;right:18px}.student-hero-about-button:hover{background:#fff9f333;border-color:#fff4ee47;transform:translateY(-1px)}.student-hero-about-button-icon{width:16px;height:16px}.student-hero-body{grid-template-columns:88px minmax(0,1fr);align-items:center;gap:16px;display:grid}.student-hero-icon{background:#ffffff14;border-radius:24px;grid-row:1/span 2;place-items:center;width:88px;height:88px;font-size:2.35rem;display:grid;box-shadow:inset 0 1px #ffffff14,0 10px 24px #180c0829}.student-hero-body h2{color:#fff8f1;margin:0;font-size:clamp(2.3rem,6vw,3.1rem);line-height:.98}.student-home-page{gap:22px}.student-check-page{align-content:start}.student-summary-card,.student-section-card{padding:20px 18px}.student-mobile-section-heading{align-items:flex-start;margin-bottom:14px}.student-settings-page .student-mobile-section-heading{margin-bottom:4px}.student-settings-page .student-mobile-section-heading h3{line-height:1.08}.student-page-meta{gap:6px;padding:2px 2px 0;display:grid}.student-page-meta h2,.student-page-meta .section-kicker{margin-bottom:0}.student-page-meta h2{font-size:clamp(2.2rem,9vw,3.2rem)}.student-stat-card{background:#fffcf8e6;border:1px solid #532a130f;border-radius:20px;padding:16px}.student-stat-card span{color:var(--muted);margin-bottom:8px;display:block}.student-stat-card strong{font-size:1.05rem;line-height:1.35}.student-schedule-times{gap:8px;margin-top:14px;display:grid}.student-schedule-times p{gap:2px;margin:0;display:grid}.student-schedule-times span{color:#5c4539d1;margin:0;font-size:.88rem}.student-schedule-label{justify-content:flex-start;align-items:center;gap:8px;width:fit-content;max-width:100%;display:inline-flex}.student-schedule-label>span{align-items:center;margin-bottom:0;display:inline-flex}.student-schedule-live-badge{white-space:nowrap;flex:none;justify-content:center;align-items:center;padding:4px 10px;font-size:.72rem;line-height:1;display:inline-flex}.student-schedule-times strong{font-size:.96rem;line-height:1.4}.student-stat-card-strong{background:linear-gradient(#eddccdd6,#faf5f0f0)}.student-entry-button,.student-course-action,.student-complete-button{justify-content:center;width:100%}.student-home-action{margin-top:16px}.student-course-list,.student-check-student-list{gap:14px;display:grid}.student-course-card{color:#3f2a20;background:linear-gradient(#f6ede4f5,#f1e7ddf5);border:1px solid #532a1314;border-radius:26px;gap:14px;padding:18px;display:grid}.student-active-check-card{margin-top:4px}.student-course-info strong,.student-course-info p,.student-course-info small{color:inherit}.student-course-info p,.student-course-info small{opacity:.8;margin:6px 0 0}.student-check-meta{margin-bottom:14px}.student-check-student{flex-direction:row;align-items:center}.student-check-student.selected{outline:2px solid #cf5a2e61}.student-quick-panel{margin-top:16px}.student-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.student-settings-summary,.student-settings-form{gap:14px;display:grid}.student-settings-actions{flex-wrap:wrap;gap:10px;display:flex}.student-managed-class-modal{grid-template-rows:auto auto minmax(0,1fr);gap:12px;max-height:min(720px,100dvh - 120px);display:grid}.student-managed-class-meta{margin:0}.student-managed-class-student-list{gap:10px;min-height:0;display:grid;overflow:auto}.student-managed-class-student-item{background:#fffcf8e0;border:1px solid #532a1314;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.student-managed-class-student-item strong,.student-managed-class-student-item span{margin:0}.student-managed-class-student-item span{color:var(--muted);font-size:.92rem}.student-settings-inline-actions{justify-content:flex-end;margin-bottom:12px;display:flex}.student-free-time-card{gap:12px;display:grid}.student-logout-button{justify-content:center;width:100%;margin-top:4px}.student-free-time-modal{width:min(100%,960px);max-width:min(100%,960px);max-height:min(860px,100dvh - 124px);margin:12px 0 calc(78px + env(safe-area-inset-bottom,0px));background:radial-gradient(circle at 100% 0,#fff7efeb,#0000 34%),linear-gradient(#fffaf5fa,#f5ebe1fa);border-radius:30px;grid-template-rows:auto auto minmax(0,1fr) auto;gap:14px;padding:22px;display:grid}.student-free-time-modal-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.student-free-time-modal-header h3,.student-free-time-modal-hint{margin:0}.student-free-time-grid-scroll{overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;background:#fffcf8cc;border:1px solid #532a131a;border-radius:24px;min-height:0;overflow:auto}.student-free-time-grid{display:grid}.student-free-time-corner,.student-free-time-day,.student-free-time-section,.student-free-time-cell{border-bottom:2px solid #532a1324;border-right:2px solid #532a1324}.student-free-time-corner,.student-free-time-day{position:sticky;top:0}.student-free-time-corner,.student-free-time-section{left:0}.student-free-time-corner{z-index:4;text-align:center;white-space:pre-line;color:#473126;background:#e7d6c8;justify-content:center;align-items:center;padding:10px 4px;font-size:.92rem;font-weight:600;line-height:1.18;display:flex}.student-free-time-day{z-index:3;background:#e7d6c8}.student-free-time-section{z-index:2;position:sticky}.student-free-time-day,.student-free-time-section{text-align:center;color:#473126;background:#e7d6c8;justify-content:center;align-items:center;padding:10px 4px;font-weight:600;display:flex}.student-free-time-section{white-space:pre-line;font-size:.92rem;line-height:1.18}.student-free-time-cell{background:#fffcf8e6;align-content:center;gap:0;padding:0;display:grid}.student-free-time-week-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;display:grid}.student-free-time-week-button{color:#3f2a20;min-width:0;min-height:44px;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:#fffcf8eb;border:1px solid #532a1324;border-top:0;border-left:0;border-radius:0;padding:0}.student-free-time-week-button.selected{color:#8f421d;background:linear-gradient(#ce5c2e38,#ce5c2e24)}.student-free-time-modal-footer{justify-content:center;display:flex}.student-free-time-save{justify-content:center;width:min(220px,100%)}.student-empty-hint{background:#fffcf8b8;border-radius:20px;margin:0;padding:18px}.student-bottom-nav{--nav-gap:12px;--nav-pad:12px;z-index:30;gap:var(--nav-gap);width:min(100vw - 28px,404px);padding:var(--nav-pad);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overscroll-behavior:none;touch-action:none;background:#fff9f3e0;border:1px solid #532a1314;border-radius:26px;grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:fixed;bottom:18px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 18px 34px #381f141f}.student-bottom-nav-indicator{top:var(--nav-pad);bottom:var(--nav-pad);left:var(--nav-pad);width:calc((100% - (var(--nav-pad) * 2) - (var(--nav-gap) * 2)) / 3);transform:translateX(calc(var(--nav-active-index,0) * (100% + var(--nav-gap))));background:linear-gradient(145deg,#57382bf0,#3f281ff0);border:1px solid #532a131a;border-radius:18px;transition:transform .18s;position:absolute;box-shadow:0 12px 20px #381f142e}.student-bottom-nav-button{z-index:1;color:#4b3328d1;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #0000;border-radius:18px;justify-items:center;gap:6px;padding:10px 8px 8px;font-size:1rem;display:grid;position:relative}.student-bottom-nav-icon{width:20px;height:20px;display:block}.student-bottom-nav-button:hover{color:#37241cf0}.student-bottom-nav-button.selected{color:#fff8f1}.student-bottom-nav-button:not(.selected){filter:saturate(.88)}.student-inline-notice{color:#7d4c2b;margin:0;font-size:.92rem}.student-course-list{gap:14px;display:grid}.student-course-card{background:#fffbf7db;border:1px solid #532a1314;border-radius:26px;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:18px;display:grid;box-shadow:0 14px 30px #6e3c2314}.student-course-info{gap:6px;display:grid}.student-course-info p,.student-course-info small{color:#5c4539d1;margin:0}.student-course-check-button{align-self:center;min-width:88px}.student-attendance-modal{border-radius:32px;gap:18px;width:min(100%,380px);padding:22px;display:grid}.student-attendance-modal-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.student-attendance-modal-meta{gap:6px;min-width:0;display:grid}.student-attendance-modal-head h3,.student-attendance-modal-head p{margin:0}.student-attendance-modal-head h3{font-size:1.95rem;line-height:1.05}.student-attendance-modal-head p{color:#38271fd1;font-size:.98rem;line-height:1.35}.student-selection-hint{color:#6f4221;background:#ffdab97a;border-radius:18px;margin:0;padding:12px 14px;font-size:.92rem;line-height:1.4}.student-selection-class-list{gap:10px;display:grid}.student-selection-empty{color:#5c4539b8;margin:0;padding:10px 2px 0}.student-selection-class-item{background:#532a130f;border-radius:18px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 14px;display:grid}.student-selection-class-item span,.student-selection-class-item strong{color:#2f261f}.student-selection-summary{color:#5c4539e0;justify-content:space-between;gap:12px;font-weight:600;display:flex}.student-random-range{color:#2f261f;gap:10px;display:grid}.student-random-range-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.student-random-range span,.student-random-range strong{margin:0}.student-random-range-value{color:#3d2e26d6;font-weight:600}.student-random-range input{--student-random-range-progress:100%;appearance:none;width:100%;height:8px;box-shadow:none;background:0 0;border:0;border-radius:999px;outline:none;padding:0}.student-random-range input::-webkit-slider-runnable-track{background:linear-gradient(90deg, #c86135f5 0%, #c86135f5 var(--student-random-range-progress), #a2907d8c var(--student-random-range-progress), #a2907d8c 100%);border-radius:999px;height:8px}.student-random-range input::-webkit-slider-thumb{appearance:none;background:#f3e6c8;border:2px solid #a78345;border-radius:50%;width:24px;height:24px;margin-top:-8px;box-shadow:0 2px 6px #3726152e}.student-random-range input::-moz-range-track{background:linear-gradient(90deg, #c86135f5 0%, #c86135f5 var(--student-random-range-progress), #a2907d8c var(--student-random-range-progress), #a2907d8c 100%);border-radius:999px;height:8px}.student-random-range input::-moz-range-thumb{background:#f3e6c8;border:2px solid #a78345;border-radius:50%;width:24px;height:24px;box-shadow:0 2px 6px #3726152e}.student-selection-start{border-radius:999px;min-height:56px}.student-attendance-check-shell{background:#fffbf7e0;border:1px solid #532a1314;border-radius:30px;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:14px;padding:16px;display:grid;box-shadow:0 14px 30px #6e3c2314}.student-attendance-screen{z-index:80;background:radial-gradient(circle at 100% 0,#fffbf5eb,#0000 34%),linear-gradient(#efe0d2 0%,#ecd8c8 100%);justify-content:center;align-items:stretch;padding:18px;display:flex;position:fixed;inset:0}.student-attendance-screen .student-attendance-check-shell{border-radius:40px;width:min(100%,440px);height:100%;min-height:0}.student-attendance-check-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.student-attendance-check-header h3,.student-attendance-check-header p{margin:0}.student-search-box{align-items:center;display:flex;position:relative}.student-search-box input{background:#ffffffb8;border:2px solid #34241c29;border-radius:999px;width:100%;min-height:46px;padding:10px 14px 10px 42px}.student-search-icon{color:#5c45399e;pointer-events:none;width:18px;height:18px;position:absolute;left:14px}.student-attendance-list{box-sizing:border-box;background:#f8f5f1d9;border:1px solid #34241c2e;border-radius:24px;height:auto;min-height:0;overflow-y:auto}.student-attendance-empty-state{place-items:center;height:100%;min-height:100%;padding:20px;display:grid}.student-attendance-empty-state .empty-hint{color:#5c4539c7;margin:0}.student-attendance-group-header{z-index:2;text-align:center;background:#cbc4bc;border-bottom:1px solid #34241c47;padding:5px 14px 6px;font-weight:700;line-height:1.15;position:sticky;top:0}.student-attendance-row{text-align:left;box-sizing:border-box;background:0 0;border:0;border-bottom:1px solid #34241c2e;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 14px;display:grid}.student-attendance-row-main{grid-template-columns:minmax(92px,auto) minmax(0,auto);justify-content:start;align-items:center;gap:10px;display:grid}.student-attendance-student-id,.student-attendance-student-name{margin:0}.student-attendance-student-id{color:#46342bc2;font-variant-numeric:tabular-nums;font-size:.86rem}.student-attendance-student-name{font-size:1.08rem;line-height:1.1}.student-attendance-row.is-focused{background:#ffecc59e;box-shadow:inset 0 0 0 2px #dda32b57}.student-attendance-row.is-submitted{opacity:.72}.student-attendance-status{text-align:center;white-space:nowrap;box-sizing:border-box;border-radius:999px;justify-content:center;align-items:center;min-height:34px;padding:0 12px;font-weight:700;display:inline-flex}.student-attendance-status.is-present{color:#0a9448;background:#97d47ff2}.student-attendance-status.is-late{color:#f5a000;background:#fff162eb}.student-attendance-status.is-absent{color:#d72626;background:#f8cbcef2}.student-attendance-status.is-leave{color:#167fbc;background:#9bd5eff2}.student-attendance-status.is-skip{color:#555;background:#b7b7b7e6}.student-attendance-status.is-unset{color:#6b6056;background:#d7d1c9cc}.student-attendance-actions{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);grid-template-areas:"late present""absent present""leave present";gap:12px;display:grid}.student-attendance-action-button{border:3px solid #0000;border-radius:22px;width:100%;min-height:0;padding:0 12px;font-size:1.05rem;font-weight:800}.student-attendance-action-late{grid-area:late;min-height:50px}.student-attendance-action-absent{grid-area:absent;min-height:50px}.student-attendance-action-leave{grid-area:leave;min-height:50px}.student-attendance-action-present{grid-area:present;min-height:100%}.student-attendance-action-button.is-present{color:#0ba94d;background:#a6d294eb;border-color:#0ba94d}.student-attendance-action-button.is-late{color:#e0af00;background:#fffa80f2;border-color:#ffc400}.student-attendance-action-button.is-absent{color:#d51818;background:#ffdbdef2;border-color:#ff1d1d}.student-attendance-action-button.is-leave{color:#0078c8;background:#9bd5eff2;border-color:#0078c8}.student-submit-check-button{width:100%}@media (width<=760px){.page-shell{padding:12px}.student-mobile-shell{border-radius:28px;width:100%;min-height:calc(100dvh - 24px);padding:16px 16px 124px}.student-hero-card{border-radius:34px;padding:20px 24px 26px}.student-hero-brand{margin-bottom:14px}.student-hero-about-button{top:16px;right:16px}.student-hero-body{grid-template-columns:72px minmax(0,1fr);column-gap:14px}.student-hero-icon{border-radius:20px;width:72px;height:72px;font-size:2rem}.student-hero-body h2{font-size:clamp(1.95rem,8vw,2.6rem)}.student-quick-actions{grid-template-columns:1fr}.student-check-student{flex-direction:column;align-items:flex-start}.student-course-card{grid-template-columns:1fr}.student-course-check-button{width:100%}.student-attendance-modal{width:100%;margin:10px 0 calc(70px + env(safe-area-inset-bottom,0px))}.student-attendance-row-main strong{font-size:1.45rem}.student-bottom-nav{width:calc(100vw - 24px);bottom:12px}.student-free-time-modal{width:100%;max-height:calc(100dvh - 112px);margin:10px 0 calc(70px + env(safe-area-inset-bottom,0px));border-radius:26px;padding:18px}.student-free-time-modal-header{align-items:center}.student-free-time-modal-header h3{font-size:1.8rem}.student-free-time-grid{min-width:max-content}.student-free-time-grid-scroll{margin-inline:-2px}.student-attendance-screen{padding:12px}.student-attendance-screen .student-attendance-check-shell{border-radius:28px;width:100%}.student-attendance-actions{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:10px}.student-attendance-action-button{font-size:1rem}}:root{--modal-safe-gap:24px}.modal-backdrop{padding:var(--modal-safe-gap);z-index:120;overscroll-behavior:none;background:#1e16125c;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.modal-backdrop-contained{padding:var(--modal-safe-gap);position:absolute;inset:0}.modal-card{background:var(--paper-strong);border:1px solid var(--line);width:min(720px,100%);max-width:min(720px,100%);box-shadow:var(--shadow);box-sizing:border-box;touch-action:pan-y pinch-zoom;border-radius:24px;margin:auto;padding:24px;position:relative;overflow:hidden}.modal-float-enter-active,.modal-float-leave-active{transition:opacity .15s}.modal-float-enter-active .modal-card,.modal-float-leave-active .modal-card{transition:transform .15s,opacity .15s}.modal-float-enter-from,.modal-float-leave-to{opacity:0}.modal-float-enter-from .modal-card{opacity:0;transform:translateY(12px)}.modal-float-leave-to .modal-card{opacity:0;transform:translateY(10px)}.modal-card-narrow{width:min(480px,100%);max-width:min(480px,100%)}.modal-card-wide{width:min(1480px,100%);max-width:min(1480px,100%);max-height:100%}.modal-header{align-items:center;gap:12px;margin-bottom:20px;display:flex}.modal-header h3{margin:0}.modal-close{flex:none;margin-left:auto}.single-column-form{grid-template-columns:1fr;width:100%}.wide-modal-header{gap:10px;margin-bottom:20px;display:grid}.wide-modal-header-top{align-items:center;gap:12px;display:flex}.wide-modal-header-title{margin:0}.wide-modal-header-actions{flex-wrap:nowrap;align-items:center;gap:12px;margin-left:auto;display:flex}.wide-modal-header-meta{margin:0}:where(a,button,input,select,textarea,label,summary,[role=button]){-webkit-tap-highlight-color:transparent}:where(a,button,select,summary,[role=button]):focus,:where(a,button,select,summary,[role=button]):focus-visible{box-shadow:none;outline:none}
