:root{--color-primary:#ea5401;--color-primary-dark:#c24401;--color-danger:#e0433d;--color-success:#2e9e5b;--color-bg:#f5f6f8;--color-surface:#fff;--color-border:#e2e4e9;--color-text:#1a1d23;--color-text-muted:#6b7280;--radius:8px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:40px}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0}a{color:var(--color-primary);text-decoration:none}input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=submit]):not([type=button]):not([type=range]):not([type=color]),select{font-size:1rem;height:38px}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--color-surface);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='m1 1 4 4 4-4' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right var(--spacing-sm) center;background-repeat:no-repeat;background-size:10px 6px;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);cursor:pointer;font:inherit;padding:0 calc(var(--spacing-md) + var(--spacing-sm)) 0 var(--spacing-sm)}select:focus{border-color:var(--color-primary);outline:none}.page{padding:var(--spacing-lg);width:100%}.page-loading{align-items:center;color:var(--color-text-muted);display:flex;height:100vh;justify-content:center}h1{font-size:1.6rem;margin-bottom:var(--spacing-lg)}h2{font-size:1.1rem;margin:0}.list{list-style:none;margin:var(--spacing-md) 0 0;padding:0}.list li{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:var(--spacing-sm) 0}.table-wrap{margin-top:var(--spacing-md);overflow-x:auto}.table{border-collapse:collapse;font-size:.9rem;width:100%}.table th{color:var(--color-text-muted);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-align:left;text-transform:uppercase}.table td,.table th{border-bottom:1px solid var(--color-border);padding:var(--spacing-sm) var(--spacing-md);white-space:nowrap}.table td{vertical-align:middle}.table tbody tr{transition:background-color .15s ease}.table tbody tr:hover{background:var(--color-bg)}.table tbody tr:last-child td{border-bottom:none}.split{grid-gap:var(--spacing-lg);grid-template-columns:1fr 1fr}.split,.stats-grid{display:grid;gap:var(--spacing-lg)}.stats-grid{grid-gap:var(--spacing-lg);align-items:stretch;grid-template-columns:repeat(auto-fill,minmax(200px,280px))}.stat-card{align-items:flex-start;display:flex;flex-direction:column}.stat-card .btn-primary{margin-top:auto}.navbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg)}.navbar,.navbar-brand{align-items:center;display:flex}.navbar-brand{gap:var(--spacing-lg)}.navbar-brand>a{align-items:center;color:var(--color-text);display:flex;font-weight:600;transition:transform .2s ease}.navbar-brand>a:hover{transform:scale(1.03)}.navbar-logo{height:56px;width:auto}.navbar-product-tag{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);font-size:.7rem;font-weight:700;letter-spacing:.06em;margin-left:var(--spacing-sm);padding:2px 8px;text-transform:uppercase}.auth-logo{align-self:center;height:auto;max-width:380px;width:100%}.navbar-toggle{background:none;border:none;cursor:pointer;display:none;flex:0 0 auto;flex-direction:column;gap:4px;height:36px;justify-content:center;margin-left:auto;padding:8px;width:36px}.navbar-toggle-bar{background:var(--color-text);border-radius:1px;display:block;height:2px;width:100%}.navbar-links{align-items:center;animation:navlinks-in .4s ease both;display:flex;gap:var(--spacing-sm)}.nav-link{border-radius:var(--radius);color:var(--color-text-muted);padding:var(--spacing-xs) var(--spacing-sm);position:relative;text-decoration:none;transition:color .2s ease,background-color .2s ease}.nav-link:after{background:var(--color-primary);border-radius:2px;bottom:2px;content:"";height:2px;left:var(--spacing-sm);position:absolute;right:var(--spacing-sm);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.nav-link:hover{background-color:var(--color-bg);color:var(--color-text)}.nav-link:hover:after{transform:scaleX(1)}.nav-link.active{color:var(--color-primary);font-weight:600}.nav-link.active:after{transform:scaleX(1)}.navbar-actions{align-items:center;animation:navlinks-in .4s ease both;display:flex;gap:var(--spacing-md)}.navbar-user{color:var(--color-text-muted)}@keyframes navlinks-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.nav-link,.nav-link:after,.navbar-actions,.navbar-brand>a,.navbar-links{animation:none;transition:none}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:var(--spacing-lg);padding:var(--spacing-lg)}.card-header{align-items:center;display:flex;justify-content:space-between}.btn-primary{background:var(--color-primary);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-size:.9rem;padding:var(--spacing-sm) var(--spacing-md);transition:background-color .2s ease,transform .15s ease}.btn-primary:hover{background:var(--color-primary-dark);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{cursor:not-allowed;opacity:.6;transform:none}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);cursor:pointer;font-size:.85rem;padding:var(--spacing-xs) var(--spacing-sm);transition:background-color .15s ease,border-color .15s ease;white-space:nowrap}.btn-secondary:hover{background:var(--color-bg);border-color:var(--color-primary)}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:inherit;padding:0;transition:color .2s ease}.btn-link:hover{color:var(--color-primary-dark)}.btn-danger{color:var(--color-danger)}.btn-secondary.btn-danger{border-color:#e0433d66}.btn-secondary.btn-danger:hover{background:#e0433d14;border-color:var(--color-danger)}.btn-group{display:flex;gap:var(--spacing-sm)}.actions-group{justify-content:flex-end;width:100%}.table th.actions-col{text-align:right}.table.attendance-grid{width:auto}.attendance-grid td,.attendance-grid th{text-align:center}.attendance-grid td:first-child,.attendance-grid th:first-child{min-width:240px;padding-right:var(--spacing-lg);text-align:left;white-space:nowrap}.attendance-name-cell{grid-column-gap:var(--spacing-sm);grid-row-gap:2px;align-items:start;column-gap:var(--spacing-sm);display:grid;grid-template-columns:190px 100px auto;row-gap:2px}.attendance-name-cell>span:first-child{overflow-wrap:break-word;white-space:normal}.attendance-stat{font-size:.8rem}.attendance-note-btn,.attendance-stat{color:var(--color-text-muted);font-weight:400;white-space:nowrap}.attendance-note-btn{background:none;border:none;cursor:pointer;font-size:.75rem;padding:0}.attendance-note-btn:hover{color:var(--color-primary)}.attendance-note-btn.has-note{color:#7c5cff;font-weight:600}.student-note-form{display:flex;flex-direction:column;gap:var(--spacing-xs)}.student-note-form textarea{border:1px solid var(--color-border);border-radius:var(--radius);font:inherit;font-size:.85rem;padding:var(--spacing-xs);resize:vertical;width:220px}.attendance-grid td:not(:first-child),.attendance-grid th:not(:first-child){padding-left:var(--spacing-xs);padding-right:var(--spacing-xs);width:48px}.attendance-grid td input[type=checkbox]{cursor:pointer;height:18px;width:18px}.attendance-grid td input[type=checkbox]:disabled{cursor:not-allowed;opacity:.35}.attendance-cell-controls{align-items:center;display:flex;flex-direction:column;gap:4px}.attendance-recording-btn{background:none;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-muted);cursor:pointer;font-size:.65rem;font-weight:700;height:18px;line-height:16px;padding:0;width:18px}.attendance-recording-btn:disabled{cursor:not-allowed;opacity:.35}.attendance-recording-btn.is-active{background:#7c5cff;border-color:#7c5cff;color:#fff}.attendance-absent-btn{background:none;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-muted);cursor:pointer;font-size:.65rem;font-weight:700;height:18px;line-height:16px;padding:0;width:18px}.attendance-absent-btn:disabled{cursor:not-allowed;opacity:.35}.attendance-absent-btn.is-active{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.attendance-present-btn{background:none;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-muted);cursor:pointer;font-size:.65rem;font-weight:700;height:18px;line-height:16px;padding:0;width:18px}.attendance-present-btn:disabled{cursor:not-allowed;opacity:.35}.attendance-present-btn.is-active{background:var(--color-success);border-color:var(--color-success);color:#fff}.attendance-grid th{position:relative}.attendance-hide-btn{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.7rem;height:12px;line-height:10px;opacity:0;padding:0;position:absolute;right:2px;top:2px;transition:opacity .15s ease;width:12px}.attendance-grid th:hover .attendance-hide-btn{opacity:1}.attendance-hide-btn:hover{color:var(--color-danger)}.attendance-cell-present{background:#2e9e5b1a}.attendance-cell-recording{background:#7c5cff1a}.attendance-week-start{border-left:2px solid var(--color-border)}.attendance-date-btn{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font:inherit;font-size:.75rem;gap:4px;padding:0}.attendance-date-btn:hover{color:var(--color-primary)}.attendance-cell-unavailable{background:#e0433d26}th.attendance-cell-unavailable .attendance-date-btn{color:var(--color-danger)}.attendance-name-paying{font-weight:700}.attendance-summary-row td{border-top:2px solid var(--color-border);color:var(--color-text-muted);font-size:.75rem;font-weight:600;white-space:nowrap}.attendance-mobile-today{display:none}.attendance-today-list{list-style:none;margin:var(--spacing-md) 0 0;padding:0}.attendance-today-list li{align-items:center;border-bottom:1px solid var(--color-border);display:flex;gap:var(--spacing-md);justify-content:space-between;padding:12px 0}.attendance-today-list li:last-child{border-bottom:none}.attendance-today-list input[type=checkbox]{cursor:pointer;flex:0 0 auto;height:26px;width:26px}.attendance-today-list input[type=checkbox]:disabled{cursor:not-allowed;opacity:.35}.inline-form{align-items:center;display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.inline-form input:not([type=checkbox]){border:1px solid var(--color-border);border-radius:var(--radius);flex:1 1;padding:var(--spacing-sm)}.checkbox-label{gap:var(--spacing-xs);white-space:nowrap}.checkbox-label,.language-checkboxes{align-items:center;display:flex;flex:0 0 auto}.language-checkboxes{gap:var(--spacing-md)}.inline-form select{flex:1 1}.enroll-form select{flex:0 0 auto;width:280px}.batch-select{flex:0 0 auto;max-width:360px;width:100%}.time-input{align-items:center;display:flex;gap:var(--spacing-xs)}.time-input,.time-input select{flex:0 0 auto}.search-input{border:1px solid var(--color-border);border-radius:var(--radius);max-width:320px;padding:var(--spacing-sm);width:100%}.filter-row,.search-input{margin-bottom:var(--spacing-sm)}.filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.filter-row .search-input{margin-bottom:0}.search-input:focus{border-color:var(--color-primary);outline:none}.attendance-row{align-items:center;display:flex;justify-content:space-between}.calendar-grid{grid-gap:4px;display:grid;gap:4px;grid-template-columns:repeat(7,1fr);margin-top:var(--spacing-md)}.calendar-weekday{color:var(--color-text-muted);font-size:.75rem;font-weight:600;padding-bottom:var(--spacing-xs);text-align:center}.calendar-weekday-weekend{color:#b7bcc7}.calendar-cell{border:1px solid var(--color-border);border-radius:4px;border-radius:var(--radius-sm,4px);display:flex;flex-direction:column;gap:4px;min-height:64px;padding:4px}.calendar-cell-empty{border-color:#0000}.calendar-cell-weekend{background:repeating-linear-gradient(135deg,var(--color-bg),var(--color-bg) 6px,var(--color-surface) 6px,var(--color-surface) 12px)}.calendar-cell-weekend .calendar-date-num{color:#b7bcc7}.calendar-cell-present{background:#e8f5ea}.calendar-cell-recording{background:#efebff}.calendar-cell-absent{background:#fbeae9}.calendar-cell-unavailable{background:#eef1f5}.calendar-cell-today{border-color:var(--color-primary);border-width:2px}.calendar-date-num{color:var(--color-text-muted);font-size:.75rem}.calendar-day-marks{display:flex;flex-wrap:wrap;gap:3px}.calendar-mark{align-items:center;border-radius:4px;color:#fff;display:inline-flex;font-size:.7rem;font-weight:700;height:20px;justify-content:center;min-width:20px;padding:0 4px}.calendar-mark-present{background:var(--color-success)}.calendar-mark-recording{background:#7c5cff}.calendar-mark-absent{background:var(--color-danger)}.calendar-mark-unavailable{background:#9aa5b5}.calendar-legend{align-items:center;color:var(--color-text-muted);display:flex;font-size:.85rem;gap:var(--spacing-md);margin-top:var(--spacing-md)}.calendar-legend span{align-items:center;display:inline-flex;gap:4px}.material-grid{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.material-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md);transition:border-color .15s ease,box-shadow .15s ease}.material-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #0000000f}.material-card-icon{align-items:center;background:#fdece3;border-radius:4px;border-radius:var(--radius-sm,4px);color:var(--color-primary-dark);display:flex;font-size:.65rem;font-weight:700;height:40px;justify-content:center;letter-spacing:.02em;width:40px}.material-card-body{display:flex;flex:1 1;flex-direction:column;gap:4px}.material-card-title{font-size:1rem;margin:0}.material-card-meta{color:var(--color-text-muted);font-size:.85rem;margin:0}.material-card-view{align-self:flex-start}.batch-meta{color:var(--color-text-muted);font-size:.85rem;margin-left:var(--spacing-sm)}.stat{font-size:2rem;font-weight:700;margin:var(--spacing-sm) 0}.stat-note{color:var(--color-text-muted);font-size:.85rem;margin:0 0 var(--spacing-md)}.badge{background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;font-size:.75rem;padding:2px var(--spacing-sm);text-transform:capitalize}.badge-active{background:#e8f5ea;border-color:#bfe3c5;color:var(--color-success)}.badge-ended{background:var(--color-bg);border-color:var(--color-border);color:var(--color-text-muted)}.badge-danger{background:#fbeae9;border-color:#f3c8c6;color:var(--color-danger)}.badge-recording{background:#efebff;border-color:#d3c7ff;color:#7c5cff}.badge-paying{background:#e8f5ea;border-color:#bfe3c5;color:var(--color-success)}.badge-free{background:#dbeafe;border-color:#bfdbfe;color:#1e40af}.cell-truncate{display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.notification{align-items:flex-start;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffffbf;border:1px solid var(--color-border);border-radius:var(--radius);bottom:var(--spacing-lg);box-shadow:0 8px 24px #0000001f;color:var(--color-text);display:flex;gap:var(--spacing-md);left:50%;max-width:calc(100vw - var(--spacing-lg)*2);padding:var(--spacing-sm) var(--spacing-xl) var(--spacing-sm) var(--spacing-md);position:fixed;transform:translateX(-50%);z-index:1000}.notification-error{border-color:var(--color-danger);color:var(--color-danger)}.notification-success{border-color:var(--color-success);color:var(--color-success)}.notification-close{background:none;border:none;color:inherit;cursor:pointer;font-size:1.1rem;line-height:1;opacity:.6;padding:var(--spacing-xs);position:absolute;right:var(--spacing-sm);top:2px}.notification-close:hover{opacity:1}.auth-page{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:var(--spacing-lg)}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);display:flex;flex-direction:column;gap:var(--spacing-md);max-width:380px;padding:var(--spacing-xl);width:100%}.auth-subtitle{color:var(--color-text-muted);margin-top:calc(var(--spacing-sm)*-1)}.auth-card form{gap:var(--spacing-md)}.auth-card form,.auth-card label{display:flex;flex-direction:column}.auth-card label{font-size:.9rem;gap:var(--spacing-xs)}.auth-card input{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing-sm)}.google-signin{align-items:center;display:flex;flex-direction:column;gap:var(--spacing-md)}.google-signin-divider{align-items:center;color:var(--color-text-muted);display:flex;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;width:100%}.google-signin-divider:after,.google-signin-divider:before{background:var(--color-border);content:"";flex:1 1;height:1px}.google-signin-divider span{padding:0 var(--spacing-sm)}.modal-overlay{align-items:center;background:#11141a73;display:flex;inset:0;justify-content:center;padding:var(--spacing-lg);position:fixed;z-index:100}.modal{background:var(--color-surface);border-radius:var(--radius);box-shadow:0 20px 50px #11141a40;display:flex;flex-direction:column;max-height:calc(100vh - var(--spacing-xl));max-width:440px;width:100%}.modal-header{align-items:flex-start;border-bottom:1px solid var(--color-border);display:flex;gap:var(--spacing-md);justify-content:space-between;padding:var(--spacing-lg) var(--spacing-lg) var(--spacing-md)}.modal-header h2{overflow-wrap:anywhere}.modal-close{background:none;border:none;color:var(--color-text-muted);cursor:pointer;flex:0 0 auto;font-size:1.4rem;line-height:1;padding:0}.modal-close:hover{color:var(--color-text)}.modal-body{overflow-y:auto;padding:var(--spacing-md) var(--spacing-lg) var(--spacing-lg)}.modal-section{border-top:1px solid var(--color-border);margin-top:var(--spacing-lg);padding-top:var(--spacing-md)}.modal-section h4{color:var(--color-text-muted);font-size:.75rem;letter-spacing:.03em;margin:0 0 var(--spacing-sm);text-transform:uppercase}.modal-actions{display:flex;justify-content:flex-end;margin-top:var(--spacing-md)}.impersonation-banner{align-items:center;background:#78350f;color:#fef3c7;display:flex;font-size:.85rem;gap:var(--spacing-md);justify-content:center;padding:7px var(--spacing-md)}.impersonation-banner-label{font-size:.7rem;font-weight:600;letter-spacing:.08em;opacity:.6}.impersonation-banner-exit{background:#ffffff26;border:1px solid #ffffff4d;border-radius:var(--radius);color:#fef3c7;cursor:pointer;font-size:.75rem;font-weight:600;letter-spacing:.03em;padding:2px 10px}.impersonation-banner-exit:hover{background:#ffffff40}.restore-card{border-color:#e0433d59}.btn-danger-solid{background:var(--color-danger)}.btn-danger-solid:hover{background:#c0322d}.restore-result-success{color:var(--color-success)}.restore-result-error{color:var(--color-danger)}.exam-duration-input{max-width:90px}.exam-duration-label{align-self:center;margin:0}.exam-question-list{margin:0 0 var(--spacing-lg);padding-left:var(--spacing-lg)}.exam-question-list>li{margin-bottom:var(--spacing-md)}.exam-question-row{align-items:flex-start;display:flex;gap:var(--spacing-md);justify-content:space-between}.exam-question-text{margin:0 0 var(--spacing-xs)}.exam-question-options{color:var(--color-text-muted);font-size:.9rem;list-style:lower-alpha;margin:0;padding-left:var(--spacing-md)}.exam-question-options .is-correct{color:var(--color-success);font-weight:600}.exam-question-form{border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--spacing-sm);max-width:560px;padding-top:var(--spacing-md)}.exam-question-form h3{margin:0}.exam-question-form textarea{border:1px solid var(--color-border);border-radius:var(--radius);font:inherit;padding:var(--spacing-sm);resize:vertical}.exam-option-input{align-items:center;display:flex;gap:var(--spacing-sm)}.exam-option-input input:not([type=radio]),.exam-option-input input[type=text]{border:1px solid var(--color-border);border-radius:var(--radius);flex:1 1;font:inherit;padding:var(--spacing-sm)}.exam-publish-row{margin-top:var(--spacing-md)}.exam-taking-header{align-items:center;display:flex;gap:var(--spacing-md);justify-content:space-between}.exam-timer{font-feature-settings:"tnum";background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:1.4rem;font-variant-numeric:tabular-nums;font-weight:700;padding:var(--spacing-xs) var(--spacing-md)}.exam-timer.is-critical{border-color:var(--color-danger);color:var(--color-danger)}.exam-taking-question{margin-bottom:var(--spacing-md)}.exam-taking-options{display:flex;flex-direction:column;gap:var(--spacing-xs)}.exam-taking-option{align-items:center;border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm)}.exam-taking-option:hover{background:var(--color-bg)}.exam-taking-option.is-selected{background:var(--color-bg);border-color:var(--color-primary)}.exam-student-row{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-md);justify-content:space-between}.exam-result-card h2,.exam-student-row h2{margin:0 0 var(--spacing-xs)}.exam-type-badge{margin-left:var(--spacing-sm)}.exam-answer-note{list-style:none;padding-left:0}.exam-blank-input{border:1px solid var(--color-border);border-radius:var(--radius);font:inherit;max-width:320px;padding:var(--spacing-sm)}.exam-word-bank,.exam-word-sequence{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.exam-word-sequence{border:1px dashed var(--color-border);border-radius:var(--radius);margin-bottom:var(--spacing-sm);min-height:42px;padding:var(--spacing-xs)}.exam-word-hint{margin:0}.exam-word-chip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;cursor:pointer;font:inherit;padding:var(--spacing-xs) var(--spacing-md)}.exam-word-chip.is-chosen,.exam-word-chip:hover{border-color:var(--color-primary)}.exam-word-chip.is-chosen{background:var(--color-primary);color:#fff}.exam-tf-choice{display:flex;flex-direction:column;gap:var(--spacing-xs)}.exam-audio-player{display:block;margin:var(--spacing-sm) 0;max-width:420px;width:100%}.exam-maxpoints-input{align-items:center;display:flex;gap:var(--spacing-sm)}.exam-maxpoints-input input{padding:var(--spacing-xs) var(--spacing-sm);width:80px}.exam-maxpoints-input input,.exam-writing-textarea{border:1px solid var(--color-border);border-radius:var(--radius);font:inherit}.exam-writing-textarea{max-width:560px;padding:var(--spacing-sm);resize:vertical;width:100%}.exam-grading-panel{background:var(--color-bg);border-radius:var(--radius);display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md)}.exam-grading-item{border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-sm)}.exam-grading-item:last-of-type{border-bottom:none}.exam-writing-answer{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin:var(--spacing-xs) 0;padding:var(--spacing-sm);white-space:pre-wrap}.exam-grade-input{width:80px}.student-id-cell{font-feature-settings:"tnum";color:var(--color-text-muted);font-variant-numeric:tabular-nums}.student-id-tag{color:var(--color-text-muted);font-size:.75em;font-weight:400}.page h1{color:var(--color-text)}@media (max-width:900px){.navbar{flex-wrap:wrap;padding:var(--spacing-sm) var(--spacing-md)}.navbar-brand{flex-wrap:wrap;gap:var(--spacing-sm);width:100%}.navbar-logo{height:44px}.navbar-toggle{display:flex}.navbar-links{display:none;width:100%}.navbar-links.is-open{align-items:stretch;display:flex;flex-direction:column;margin-top:var(--spacing-sm)}.nav-link{padding:12px var(--spacing-sm);width:100%}.navbar-actions{display:none;width:100%}.navbar-actions.is-open{align-items:flex-start;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-sm);padding-top:var(--spacing-sm)}}@media (max-width:640px){.page{padding:var(--spacing-md)}h1{font-size:1.35rem;margin-bottom:var(--spacing-md)}.card{padding:var(--spacing-md)}.split,.stats-grid{grid-template-columns:1fr}.card-header{align-items:stretch;flex-direction:column;gap:var(--spacing-sm)}.card-header .btn-primary{text-align:center}.inline-form{align-items:stretch;flex-direction:column}.enroll-form select,.inline-form>*{width:100%}.filter-row{align-items:stretch;flex-direction:column}.search-input{max-width:none}.attendance-row,.list li{align-items:flex-start;flex-direction:column;gap:var(--spacing-xs)}.attendance-row .btn-primary{width:100%}.btn-group{flex-wrap:wrap}.btn-primary,.btn-secondary{padding:10px var(--spacing-md)}.auth-card{padding:var(--spacing-lg)}.modal-overlay{padding:var(--spacing-sm)}.modal-body,.modal-header{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.attendance-grid td input[type=checkbox]{height:24px;width:24px}.attendance-grid-wrap{display:none}.attendance-mobile-today{display:block}}
/*# sourceMappingURL=main.e5656698.css.map*/