@import"https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@700&family=Gowun+Dodum:wght@400;700&display=swap";@import"https://cdn.jsdelivr.net/gh/sunn-us/SUIT/fonts/variable/woff2/SUIT-Variable.css";:root{font-family:SUIT,Pretendard,Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;color:#1e293b;background-color:#f0f4fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--navy: #f0f4fa;--ocean: #e4ecf7;--sunset: #3b82f6;--mist: #bfdbfe;--glass: rgba(0, 0, 0, .04);--ink: #1e293b;--muted: #64748b;--card-bg: #f8faff;--accent: #2563eb;--border: #bfdbfe;--md-primary: #6200ee;--md-primary-variant: #3700b3;--md-secondary: #03dac6;--md-secondary-variant: #018786;--md-background: #121212;--md-surface: #1e1e1e;--md-error: #cf6679;--md-on-primary: #ffffff;--md-on-secondary: #000000;--md-on-background: #ffffff;--md-on-surface: #ffffff;--md-on-error: #000000;--md-shadow-1: 0px 2px 1px -1px rgba(0,0,0,.2), 0px 1px 1px 0px rgba(0,0,0,.14), 0px 1px 3px 0px rgba(0,0,0,.12);--md-shadow-2: 0px 3px 1px -2px rgba(0,0,0,.2), 0px 2px 2px 0px rgba(0,0,0,.14), 0px 1px 5px 0px rgba(0,0,0,.12);--md-shadow-4: 0px 2px 4px -1px rgba(0,0,0,.2), 0px 4px 5px 0px rgba(0,0,0,.14), 0px 1px 10px 0px rgba(0,0,0,.12);--md-shadow-8: 0px 5px 5px -3px rgba(0,0,0,.2), 0px 8px 10px 1px rgba(0,0,0,.14), 0px 3px 14px 2px rgba(0,0,0,.12)}*{box-sizing:border-box}*:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}select{min-height:38px;padding:0 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;transition:border-color .15s,box-shadow .15s;cursor:pointer}select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#f0f4fa,#e8eef8 55%,#e1e9f5);scrollbar-gutter:stable}.page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 20px;position:relative;overflow:hidden}.page.dashboard-page{flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:8px 16px 16px;min-height:100vh}.global-navbar{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:6px;margin-bottom:6px;min-height:32px;flex-shrink:0}.global-navbar__home{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:none;background:#1e40af;color:#fff;border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.global-navbar__home:hover{background:#1d4ed8}.global-navbar__home svg{flex-shrink:0}.global-navbar__divider{width:1px;height:18px;background:#cbd5e1;margin:0 4px;flex-shrink:0}.global-navbar__favs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;overflow:hidden}.global-navbar__fav{padding:3px 8px;border:1px solid #e2e8f0;background:#fff;color:#334155;border-radius:4px;font-size:11.5px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.global-navbar__fav:hover{background:#eff6ff;border-color:#93c5fd;color:#1e40af}.topbar{width:100%;display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-bottom:24px;position:relative;z-index:1}.dashboard-page .topbar{margin-left:auto;margin-right:0;padding:8px 16px;margin-bottom:8px;justify-content:flex-end}.dashboard-layout{width:100%;display:flex;justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:0;position:relative;z-index:1;padding:0 16px;box-sizing:border-box}.brand.brand-small{margin:0}.brand.brand-small img{width:40px;height:40px;padding:6px;border-radius:10px}.user-meta{display:flex;align-items:center;gap:10px;color:#1e293b;font-weight:500;font-size:.95rem}.user-name{font-size:1.05rem}.my-profile-btn{display:flex;align-items:center;gap:6px;background:none;border:1px solid #e2e8f0;border-radius:8px;padding:6px 12px;cursor:pointer;transition:background .15s}.my-profile-btn:hover{background:#f1f5f9}.pw-modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:9999}.pw-modal{background:#fff;border-radius:12px;padding:28px 24px;width:360px;max-width:90vw;box-shadow:0 8px 32px #00000026}.pw-modal__title{font-size:1.1rem;font-weight:600;color:#1e293b;margin:0 0 20px}.pw-modal__field{margin-bottom:14px}.pw-modal__field label{display:block;font-size:.85rem;font-weight:500;color:#475569;margin-bottom:6px}.pw-modal__field input{width:100%;padding:10px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.95rem;outline:none;box-sizing:border-box}.pw-modal__field input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.pw-modal__error{color:#dc2626;font-size:.85rem;margin:0 0 12px}.pw-modal__success{text-align:center;padding:20px 0}.pw-modal__success p{font-size:1rem;color:#166534;margin:0 0 16px}.pw-modal__actions{display:flex;gap:10px;margin-top:8px}.pw-modal__btn{flex:1;padding:10px;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;border:none}.pw-modal__btn--cancel{background:#f1f5f9;color:#475569}.pw-modal__btn--cancel:hover{background:#e2e8f0}.pw-modal__btn--primary{background:#3b82f6;color:#fff}.pw-modal__btn--primary:hover{background:#2563eb}.pw-modal__btn--primary:disabled{background:#94a3b8;cursor:not-allowed}.mobile-menu-btn{display:none;align-items:center;justify-content:center;background:transparent;border:none;padding:8px;cursor:pointer}.hamburger-icon{display:flex;flex-direction:column;gap:4px;width:20px}.hamburger-icon span{display:block;height:2px;width:100%;background:#64748b;border-radius:2px}@media(max-width:768px){.mobile-menu-btn{display:flex}}.glow{position:absolute;width:320px;height:320px;border-radius:50%;filter:blur(0px);background:radial-gradient(circle,rgba(59,130,246,.2),transparent 70%);animation:float 10s ease-in-out infinite}.glow-top{top:-120px;right:-80px}.glow-bottom{bottom:-140px;left:-100px;background:radial-gradient(circle,rgba(90,160,255,.3),transparent 70%);animation-delay:-4s}.layout{width:min(1400px,100%);display:grid;gap:32px;align-items:center;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));position:relative;z-index:1}.brand{display:flex;align-items:center;justify-content:center;margin-bottom:16px}.brand img{width:88px;height:88px;object-fit:contain;background:#fff;border-radius:18px;padding:10px;box-shadow:0 14px 30px #060c2247}.intro{justify-self:end;text-align:center}.intro .tag{font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--sunset);margin-bottom:6px}.since{font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sunset)}.intro h1{font-family:Gowun Batang,serif;font-size:clamp(2rem,3vw,3.4rem);line-height:1.2;margin:0 0 16px}.intro p{margin:0 0 24px;color:var(--mist);max-width:520px}.chips{display:flex;flex-wrap:wrap;gap:12px}.chips span{background:var(--glass);border:1px solid rgba(255,255,255,.15);padding:8px 14px;border-radius:999px;font-size:13px;color:var(--mist)}.card{background:#fffffff2;color:#1a2238;border-radius:16px;padding:24px;box-shadow:var(--md-shadow-4);display:grid;gap:20px;width:min(350px,100%);transition:box-shadow .3s cubic-bezier(.4,0,.2,1)}.card:hover{box-shadow:var(--md-shadow-8)}.card-header h2{margin:0;font-size:1.4rem}.card-header p{margin:6px 0 0;color:#5a637a;font-size:.95rem}.form{display:grid;gap:16px;justify-items:stretch}.form label{display:grid;gap:8px;font-size:.9rem;color:#3f485f}.input-row{display:flex;align-items:center;gap:6px;width:100%;padding:0 8px;border-radius:4px;border:1px solid #dadce0;background:#fff;transition:all .2s cubic-bezier(.4,0,.2,1)}.input-row:focus-within{border-color:var(--md-primary);box-shadow:0 0 0 1px var(--md-primary)}.input-icon{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;color:#374151}.input-icon svg{width:100%;height:100%;fill:currentColor}.form input:not([type=checkbox]){border:none;background:transparent;flex:1;padding:6px;font-size:.9rem;font-family:inherit}.form input:not([type=checkbox]):focus{outline:none;box-shadow:none}.input-row:focus-within{outline:2px solid rgba(26,75,122,.2);border-color:var(--ocean)}.form label.remember{display:flex;align-items:center;gap:6px;justify-content:flex-start}.form label.remember input[type=checkbox]{margin:0;width:auto;height:auto;flex:0 0 auto}.form button{padding:12px 24px;border-radius:8px;border:none;background:var(--md-primary);color:var(--md-on-primary);font-weight:500;font-size:.95rem;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;box-shadow:var(--md-shadow-2);text-transform:uppercase;letter-spacing:.5px}.form button:hover{box-shadow:var(--md-shadow-4);background:var(--md-primary-variant)}.form button:active{box-shadow:var(--md-shadow-8)}.form button:focus{outline:none;box-shadow:var(--md-shadow-4)}.form button:focus-visible{box-shadow:0 0 0 3px #6200ee4d}.message{font-size:.85rem;margin:0}.message.error{color:#b02a37}.message.success{color:#256e3d}.card-footer{font-size:.8rem;color:#5c6478;border-top:1px solid #e6ebf5;padding-top:12px}.dashboard{gap:16px;margin:0}.dashboard.card,.student-management.card{width:auto;max-width:none}.dashboard.card{padding:16px}.dashboard .card-header h2{font-size:1.1rem;margin:0 0 8px}.student-management.card{border-radius:0;max-width:none;width:100vw;margin-left:calc(50% - 50vw);padding:0 4px 4px}.legacy-shell{background:#f1f5f9;color:#1e293b;border:none;border-radius:12px;padding:0 16px 10px;display:grid;grid-template-rows:auto 1fr auto;gap:2px;box-shadow:none;flex:1;min-height:0;overflow:visible;width:100%;margin:0;zoom:.9}.legacy-header{display:flex;align-items:center;gap:12px;font-size:1.125rem;font-weight:600;color:#0f172a;padding-bottom:0;margin-top:-6px;margin-bottom:-22px;border-bottom:none}.legacy-action-bar{display:flex;gap:8px;align-items:center;padding:12px 0 4px;margin-top:4px;margin-left:0;border-top:1px solid #e8edf3}.legacy-header-text{display:flex;align-items:center;gap:12px}.refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s;margin-left:-4px}.refresh-btn:hover{background:#f3f4f6;color:#374151;border-color:#9ca3af}.refresh-btn:disabled{cursor:not-allowed}.refresh-btn.refreshing svg{animation:spin .7s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.legacy-header span{font-weight:400;font-size:.8125rem;color:#64748b}.legacy-header-button{margin-left:auto;border:none;background:#3b82f6;color:#fff;padding:8px 18px;font-size:.8125rem;font-weight:600;cursor:pointer;border-radius:8px;box-shadow:0 1px 2px #00000014;transition:all .15s ease}.legacy-header-button:hover{background:#2563eb;box-shadow:0 4px 6px -1px #0000001a;transform:translateY(-.5px)}.legacy-header-button:active{transform:scale(.98)}.legacy-header-buttons{display:flex;gap:8px;align-items:center;margin-left:24px}.legacy-header-buttons button{padding:0 16px;margin:0;font-size:.8125rem;line-height:32px;border-radius:8px;cursor:pointer;transition:all .15s;font-weight:500;height:34px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;border-width:1px;border-style:solid}.legacy-header-buttons .btn-save{background:#3b82f6;color:#fff;border:1px solid #3b82f6}.legacy-header-buttons .btn-save:hover{background:#2563eb}.legacy-header-buttons .btn-new{background:#10b981;color:#fff;border:1px solid #10b981}.legacy-header-buttons .btn-new:hover{background:#059669}.legacy-header-buttons .btn-delete{background:transparent;color:#6b7280;border:1px solid #d1d5db}.legacy-header-buttons .btn-delete:hover{background:#f3f4f6;color:#4b5563}.legacy-header-buttons .btn-app-preview{background:#fff;border:1px solid #93c5fd;color:#1e40af;font-size:.82rem;padding:5px 10px;border-radius:6px;cursor:pointer;margin-left:4px}.legacy-header-buttons .btn-app-preview:hover{background:#dbeafe}.legacy-header-buttons .btn-app-preview.student{border-color:#86efac;color:#166534}.legacy-header-buttons .btn-app-preview.student:hover{background:#dcfce7}.legacy-header-buttons .header-msg{margin-left:8px;font-size:.8125rem;font-weight:500}.legacy-header-buttons .header-msg.success{color:#16a34a}.legacy-header-buttons .header-msg.error{color:#dc2626}.legacy-top{display:grid;grid-template-columns:minmax(150px,185px) 9fr 7fr;grid-template-rows:auto auto;column-gap:12px;row-gap:4px;align-items:start;overflow:visible}.legacy-center-stack{grid-column:1 / 3;grid-row:1 / 3;display:grid;grid-template-columns:subgrid;align-content:start;row-gap:4px;align-self:start}.legacy-left,.legacy-right{display:grid;gap:8px}.legacy-left{grid-column:1;grid-row:1;gap:4px;align-content:start}.legacy-left .legacy-panel{padding:8px;gap:4px}.legacy-left .legacy-panel-title{font-size:.75rem;padding:2px 4px;text-align:center;background:#e8edf3;border-radius:6px;border-bottom:none;margin-bottom:0}.legacy-left .legacy-search-titlebar{padding:8px;gap:6px;flex-wrap:wrap;background:#f1f5f9;border-radius:8px;flex-direction:column}.legacy-left .legacy-search-titlebar .legacy-search-input{height:32px;font-size:.75rem;padding:6px 10px;width:100%;box-sizing:border-box}.legacy-left .legacy-search-titlebar>form>button{padding:6px 12px;font-size:.75rem;flex-shrink:0;width:100%}.legacy-left .legacy-search-row{display:flex;align-items:center;justify-content:space-between;width:100%}.legacy-left .legacy-search-row button{padding:6px 12px;font-size:.75rem;width:auto}.legacy-left .legacy-checkbox{font-size:.75rem;gap:4px}.legacy-left .legacy-list-row{padding:6px 8px;font-size:.75rem}.legacy-left .legacy-panel-body{min-height:40px}.legacy-left .legacy-list .legacy-panel-body{min-height:180px;flex:1}.legacy-left .legacy-list-items{padding:4px;gap:2px}.legacy-left .legacy-empty{font-size:.7rem;padding:12px 8px}.legacy-left .legacy-search-actions{padding:0}.legacy-left .legacy-search-actions button{padding:2px 8px;font-size:.75rem;width:100%}.legacy-left .legacy-search-input-row{flex-wrap:wrap;gap:4px}.legacy-checkbox-inline{display:flex;align-items:center;gap:4px;font-size:.75rem;color:#374151;cursor:pointer;white-space:nowrap}.legacy-checkbox-inline input{margin:0}.legacy-search-row{display:flex;align-items:center;gap:6px}.legacy-search-row button{padding:4px 10px;font-size:.75rem}.legacy-left .legacy-search-input-row input{flex:1;min-width:0;width:100%}.legacy-left .legacy-search-input-row button{flex-shrink:0}.legacy-form{grid-column:2;grid-row:1;min-width:0}.legacy-right{grid-column:3;grid-row:1 / 3;min-height:0;overflow:visible;align-self:start;position:relative;z-index:0}.legacy-filter{display:flex;align-items:center;gap:8px;padding:2px 12px}.legacy-panel{background:#fff;border:1px solid #cbd5e1;border-radius:12px;display:grid;gap:8px;padding:14px;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.legacy-panel-title{background:transparent;border:none;border-bottom:1px solid #e8edf3;padding:0 4px 8px;font-size:.8125rem;font-weight:600;line-height:1.4;color:#334155;height:auto;display:flex;align-items:center;justify-content:center;letter-spacing:.025em}.legacy-teacher-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:flex-start;gap:8px;text-align:left;width:100%;transition:background .15s ease}.legacy-teacher-toggle:hover{background:#f3f4f6}.legacy-students-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:flex-start;gap:8px;text-align:left;width:100%;transition:background .15s ease}.legacy-students-toggle:hover{background:#f3f4f6}.legacy-search-titlebar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px}.legacy-search-titlebar span{white-space:nowrap;font-size:.875rem;color:#374151}.legacy-search-titlebar .legacy-search-input-row{flex:1;justify-content:flex-end}.legacy-search-titlebar .legacy-search-input{height:36px;font-size:.8rem;min-width:0;flex:1}.legacy-search-titlebar button{border:none;background:#e8edf3;padding:8px 12px;font-size:.8rem;font-weight:500;cursor:pointer;white-space:nowrap;border-radius:8px;transition:all .15s ease;color:#334155}.legacy-search-titlebar button:hover{background:#e5e7eb;box-shadow:0 1px 2px #0000000d}.legacy-panel-title.compact{height:auto;padding:12px 10px;font-size:.875rem;display:flex;align-items:center;justify-content:center}.legacy-checkbox{display:inline-flex;align-items:center;gap:8px;font-size:.875rem;color:#374151}.legacy-panel-title.blue{background:#3b82f6;color:#fff;border-radius:6px;border:none}.legacy-course-list .legacy-panel-title,.legacy-assignment-panel .legacy-panel-title{padding:10px 12px;font-size:.875rem;line-height:1.6}.legacy-panel-body{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:8px;min-height:80px}.legacy-panel-body.small{min-height:50px}.legacy-list .legacy-panel-body{min-height:0;flex:1}.legacy-siblings .legacy-panel-body{min-height:30px}.legacy-left .legacy-siblings .legacy-list-items{max-height:60px;overflow-y:auto}.legacy-left .legacy-recent .legacy-list-items{max-height:150px;overflow-y:auto}.legacy-panel.legacy-search .legacy-panel-body{min-height:0}.legacy-search-row,.legacy-search-actions{display:grid;gap:8px}.legacy-search-actions button,.legacy-left-actions button,.legacy-form-actions button,.legacy-side-buttons button{border:none;background:#f3f4f6;padding:10px 18px;font-size:.875rem;font-weight:500;cursor:pointer;border-radius:8px;transition:all .15s ease;color:#374151}.legacy-search-actions button:hover,.legacy-left-actions button:hover,.legacy-form-actions button:hover,.legacy-side-buttons button:hover{background:#e5e7eb;box-shadow:0 2px 4px #0000000f;transform:translateY(-.5px)}.legacy-search-actions button:active,.legacy-left-actions button:active,.legacy-form-actions button:active,.legacy-side-buttons button:active{transform:scale(.98)}.legacy-left-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.legacy-search-panel{display:grid;gap:10px}.legacy-search-input-row{display:flex;align-items:center;gap:8px}.legacy-search-input{flex:1;border:1px solid #cbd5e1;background:#fff;height:38px;padding:8px 14px;font-size:.875rem;border-radius:8px;transition:border-color .15s ease,box-shadow .15s ease;color:#1e293b}.legacy-search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.legacy-search-input::placeholder{color:#94a3b8}.legacy-search-results{display:grid;gap:4px;max-height:144px;overflow-y:auto;grid-auto-rows:min-content;padding:4px}.legacy-list-items{display:grid;gap:2px;padding:4px;font-size:.875rem}.legacy-recent-list{max-height:140px;overflow:auto}.legacy-list-row{display:flex;justify-content:space-between;align-items:center;border:1px solid transparent;background:transparent;padding:8px 12px;width:100%;text-align:left;cursor:pointer;border-radius:6px;transition:background .12s ease,border-color .12s ease;margin-bottom:0;font:inherit;font-size:.8125rem;color:#334155}.legacy-list-row:hover{background:#e8edf3;border-color:#cbd5e1}.legacy-list-row.active{background:#eff6ff;border-color:#93c5fd;font-weight:500}.legacy-class-panel .legacy-list-items{padding:4px}.legacy-class-panel{overflow:visible;min-height:0;flex:0 0 auto}.legacy-class-panel.legacy-panel-body{min-height:0!important;padding:4px;margin:0}.legacy-class-panel .legacy-list-row{border:none;background:transparent;padding:6px 10px;border-radius:6px;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-class-panel .legacy-list-row:hover{background:#e8edf3}.legacy-class-panel .legacy-list-row.active{background:#2563eb;color:#fff;border:none}.legacy-level-group{margin-bottom:8px}.legacy-level-header{font-size:.75rem;font-weight:600;color:#334155;background:#e8edf3;padding:4px 10px;border-radius:6px;margin-bottom:2px;position:sticky;top:0}.legacy-grade-group{margin-bottom:4px}.legacy-grade-header{display:flex;align-items:center;gap:8px;width:100%;font-size:.8rem;font-weight:700;color:#334155;background:#e8edf3;padding:7px 12px;border:none;border-radius:6px;margin-bottom:2px;cursor:pointer;text-align:left;transition:background .15s}.legacy-grade-header:hover{background:#d1d5db}.legacy-grade-arrow{font-size:.65rem;color:#374151;width:12px}.legacy-grade-count{margin-left:auto;font-size:.7rem;font-weight:500;color:#475569;background:#cbd5e1;padding:2px 6px;border-radius:10px}.legacy-class-panel.expanded{flex:1 1 0;min-height:100px;overflow-y:auto}.legacy-class-students-panel .legacy-list-row.withdrawn{background:#fee2e2;border-color:#fca5a5}.legacy-class-students-panel .legacy-list-row.withdrawn.active{background:#fecaca;border-color:#f87171;color:#1f2937}.legacy-class-students-panel .legacy-list-items .legacy-list-row.withdrawn{background:#fee2e2}.legacy-student-row{border:none;background:transparent;padding:10px 12px;font-size:.9rem;text-align:left;cursor:pointer;display:block;line-height:1.5;border-bottom:1px solid #e5e7eb;transition:background .15s ease}.legacy-student-row:hover{background:#f9fafb}.legacy-student-row.active{background:#eff6ff;border-bottom-color:#bfdbfe}.legacy-student-name{font-weight:600;color:#1f2937}.legacy-student-meta{font-size:.8rem;color:#374151}.legacy-empty{font-size:.8125rem;color:#94a3b8;text-align:center;padding:20px 12px}.legacy-radio{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;color:#374151}.legacy-form{background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:18px 20px;display:grid;gap:12px;align-content:start;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.legacy-form-buttons-row{display:flex;gap:8px;align-items:center;margin-bottom:4px}.legacy-form-buttons-row button{padding:6px 14px;font-size:.8rem;border-radius:6px;cursor:pointer;transition:all .15s}.legacy-form-buttons-row .btn-save{background:#3b82f6;color:#fff;border:1px solid #3b82f6}.legacy-form-buttons-row .btn-save:hover{background:#2563eb}.legacy-form-buttons-row .btn-new{background:#10b981;color:#fff;border:1px solid #10b981}.legacy-form-buttons-row .btn-new:hover{background:#059669}.legacy-form-buttons-row .btn-delete{background:transparent;color:#6b7280;border:1px solid #d1d5db}.legacy-form-buttons-row .btn-delete:hover{background:#f3f4f6;color:#4b5563}.legacy-form-buttons-row .form-message{margin-left:12px;font-size:.8rem;font-weight:500}.legacy-form-buttons-row .form-message.success{color:#059669}.legacy-form-buttons-row .form-message.error{color:#dc2626}.legacy-attendance-panel{border:1px solid #e5e7eb;background:#f9fafb;border-radius:10px;display:grid;gap:12px;padding:16px}.legacy-modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.legacy-attendance-modal{background:#fff;border:none;border-radius:16px;width:min(1240px,94vw);box-shadow:0 25px 50px -12px #00000040;overflow:visible}.legacy-attendance-modal.attendance-modal-compact{width:min(600px,90vw);max-height:80vh}.legacy-attendance-modal-header{background:#fff;border-bottom:1px solid #e5e7eb;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;font-size:1rem;font-weight:600;color:#111827}.legacy-modal-close{border:none;background:transparent;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;border-radius:8px;transition:all .15s ease;color:#374151}.legacy-modal-close:hover{background:#f3f4f6;color:#1f2937}.legacy-utility-body{padding:20px;background:#f9fafb;min-height:260px}.legacy-search-modal-table{display:grid;gap:4px;font-size:.875rem}.legacy-search-modal-row{display:grid;grid-template-columns:80px 70px 35px 1.2fr 1.2fr 120px 120px;gap:8px;padding:12px 14px;border:1px solid #e5e7eb;background:#fff;border-radius:8px;align-items:center;text-align:left;cursor:pointer;font:inherit;transition:all .15s ease}.legacy-search-modal-row:hover{background:#f3f4f6;border-color:#d1d5db}.legacy-search-modal-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legacy-search-modal-row span.course-name-cell{white-space:normal;overflow:visible;font-size:12px;line-height:1.4}.legacy-search-modal-header{background:#f3f4f6;font-weight:600;cursor:default;color:#374151}.legacy-utility-placeholder{border:1px dashed #d1d5db;background:#fff;color:#374151;padding:32px;text-align:center;font-size:.875rem;border-radius:8px}.legacy-attendance-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:.875rem}.legacy-attendance-toolbar input{border:1px solid #d1d5db;background:#fff;height:36px;padding:6px 12px;font-size:.875rem;border-radius:6px}.legacy-attendance-toolbar button{border:1px solid #d1d5db;background:#fff;padding:8px 14px;font-size:.875rem;cursor:pointer;border-radius:6px;transition:all .15s ease}.legacy-attendance-toolbar button:hover{background:#f3f4f6}.legacy-attendance-month{display:inline-flex;align-items:center;gap:6px}.legacy-attendance-summary{display:inline-flex;flex-wrap:wrap;gap:12px;margin-left:auto}.legacy-attendance-grid{border:1px solid #e5e7eb;background:#fff;border-radius:10px;overflow:auto}.legacy-attendance-footer{display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:center;font-size:.875rem}.legacy-attendance-footer label{display:flex;align-items:center;gap:8px;color:#374151}.legacy-attendance-footer select,.legacy-attendance-note{border:1px solid #d1d5db;background:#fff;height:36px;padding:6px 12px;font-size:.875rem;border-radius:6px}.legacy-attendance-status{display:flex;flex-wrap:wrap;gap:14px}.legacy-attendance-status label{display:inline-flex;align-items:center;gap:6px;color:#374151}.legacy-attendance-actions{display:flex;gap:8px;grid-column:2 / -1}.legacy-attendance-actions button{border:1px solid #d1d5db;background:#fff;padding:8px 14px;font-size:.875rem;cursor:pointer;border-radius:6px;transition:all .15s ease}.legacy-attendance-actions button:hover{background:#f3f4f6}.att-출석{color:#16a34a}.att-결석{color:#c64242}.att-지각{color:#d39b2a}.att-조퇴{color:#ea580c}.att-보강{color:#7c3aed}.att-status{padding:2px 8px;border-radius:4px;font-weight:500}.att-status.att-출석{background:#dcfce7;color:#16a34a}.att-status.att-결석{background:#fee2e2;color:#c64242}.att-status.att-지각{background:#fef3c7;color:#d39b2a}.att-status.att-조퇴{background:#ffedd5;color:#ea580c}.att-status.att-보강{background:#ede9fe;color:#7c3aed}.attendance-modal-calendar{width:min(1400px,96vw);max-height:90vh;display:flex;flex-direction:column}.attendance-calendar-panel{padding:16px;display:flex;flex-direction:column;gap:12px;overflow:hidden}.attendance-calendar-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.attendance-month-nav{display:flex;align-items:center;gap:8px}.attendance-month-nav button{border:1px solid #d1d5db;background:#fff;padding:6px 12px;font-size:.875rem;border-radius:6px;cursor:pointer;transition:all .15s}.attendance-month-nav button:hover{background:#f3f4f6}.attendance-month-display{font-weight:600;font-size:1rem;min-width:100px;text-align:center}.attendance-summary-chips{display:flex;gap:8px;flex-wrap:wrap}.att-chip{padding:4px 10px;border-radius:12px;font-size:.8rem;font-weight:500}.att-chip-출석{background:#dcfce7;color:#166534}.att-chip-결석{background:#fee2e2;color:#991b1b}.att-chip-지각{background:#fef3c7;color:#854d0e}.att-chip-조퇴{background:#ffedd5;color:#9a3412}.att-chip-보강{background:#ede9fe;color:#5b21b6}.attendance-calendar-table-wrapper{overflow:auto;max-height:calc(90vh - 280px);border:1px solid #e5e7eb;border-radius:8px;background:#fff}.attendance-calendar-table{width:100%;border-collapse:collapse;font-size:.75rem;table-layout:fixed}.attendance-calendar-table th,.attendance-calendar-table td{border:1px solid #e5e7eb;text-align:center;vertical-align:middle}.attendance-calendar-table thead{position:sticky;top:0;z-index:10}.attendance-calendar-table th{background:#f1f5f9;padding:6px 2px;font-weight:600;color:#374151}.att-col-course{width:260px;min-width:260px;text-align:left;padding:8px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-makeup-badge{display:inline-block;margin-left:6px;padding:1px 6px;background:#7c3aed;color:#fff;border-radius:999px;font-size:.65rem;font-weight:600;vertical-align:middle}.att-col-day{min-width:28px;padding:4px 2px;white-space:nowrap}.att-day-name{font-size:.65rem;color:#6b7280;font-weight:400}.att-col-stat{width:40px;min-width:40px;font-weight:500}.att-stat-출석{color:#166534}.att-stat-결석{color:#991b1b}.att-stat-지각{color:#854d0e}.att-stat-조퇴{color:#9a3412}.att-stat-보강{color:#5b21b6}.att-cell{cursor:pointer;transition:all .1s;min-height:28px}.att-cell:hover{background:#f0f9ff}.att-cell-selected{outline:2px solid #3b82f6;outline-offset:-2px;background:#eff6ff}.att-cell-출석{background:#dcfce7}.att-cell-결석{background:#fee2e2}.att-cell-지각{background:#fef3c7}.att-cell-조퇴{background:#ffedd5}.att-cell-보강{background:#ede9fe}.att-cell-결석보강{background:#fed7d7}.att-cell-holiday{background:#e5e7eb;cursor:default}.att-cell-text{font-weight:600;font-size:.65rem;line-height:1.2}.att-cell-출석 .att-cell-text{color:#166534}.att-cell-결석 .att-cell-text{color:#991b1b}.att-cell-지각 .att-cell-text{color:#854d0e}.att-cell-조퇴 .att-cell-text{color:#9a3412}.att-cell-보강 .att-cell-text{color:#5b21b6}.att-cell-결석보강 .att-cell-text{color:#822727}.attendance-loading,.attendance-empty{padding:40px;text-align:center;color:#6b7280;font-size:.875rem}.attendance-edit-panel{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.attendance-existing-memos{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.attendance-existing-memo-item{font-size:.8rem;color:#4b5563;background:#e5e7eb;padding:4px 10px;border-radius:4px;line-height:1.4;white-space:pre-line}.attendance-edit-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.attendance-edit-row label{font-weight:500;font-size:.875rem;color:#374151}.attendance-memo-input{flex:1;min-width:200px;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem}.attendance-memo-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.attendance-status-group{display:flex;gap:8px;flex-wrap:wrap}.attendance-status-radio{display:flex;align-items:center;gap:4px;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .15s}.attendance-status-radio input{margin:0}.att-radio-출석{background:#dcfce7;color:#166534}.att-radio-결석{background:#fee2e2;color:#991b1b}.att-radio-지각{background:#fef3c7;color:#854d0e}.att-radio-조퇴{background:#ffedd5;color:#9a3412}.att-radio-보강{background:#ede9fe;color:#5b21b6}.attendance-action-buttons{display:flex;gap:8px;margin-left:auto}.att-btn{padding:8px 16px;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;border:none;transition:all .15s}.att-btn:disabled{opacity:.5;cursor:not-allowed}.att-btn-save{background:#3b82f6;color:#fff}.att-btn-save:hover:not(:disabled){background:#2563eb}.att-btn-delete{background:transparent;color:#6b7280}.att-btn-delete:hover:not(:disabled){background:#f3f4f6;color:#4b5563}.att-btn-close{background:#6b7280;color:#fff}.att-btn-close:hover{background:#4b5563}.legacy-attendance-grid{display:flex;flex-direction:column;gap:4px;max-height:400px;overflow-y:auto}.legacy-attendance-header,.legacy-attendance-row{display:grid;grid-template-columns:100px 1fr 60px 1fr;gap:8px;padding:8px 12px;align-items:center}.legacy-attendance-header{background:#f3f4f6;font-weight:600;border-radius:6px;position:sticky;top:0}.legacy-attendance-row{background:#fff;border:1px solid #e5e7eb;border-radius:6px}.legacy-attendance-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legacy-makeup-panel{display:grid;gap:12px;font-size:.8rem;background:#f8faff;border:1px solid #e6d6c5;border-radius:16px;padding:16px;box-shadow:0 12px 24px #1f1f1f1f}.legacy-makeup-row{display:grid;grid-template-columns:max-content 1fr;gap:8px 12px;align-items:center}.legacy-makeup-row input{border:1px solid #b3cde8;background:#fff;height:30px;padding:4px 10px;font-size:.8rem;border-radius:8px}.legacy-makeup-row input[type=date]{width:140px}.legacy-makeup-row select{width:260px;max-width:100%}.legacy-makeup-actions button{border:none;background:linear-gradient(135deg,#1b7f6b,#249b84);color:#fff;padding:8px 16px;font-size:.8rem;border-radius:999px;cursor:pointer;box-shadow:0 8px 16px #1b7f6b40}.legacy-makeup-message{font-size:.8rem}.legacy-makeup-message.success{color:#2d8b57}.legacy-makeup-message.error{color:#b64b4b}.legacy-makeup-history{border-top:1px solid #e6d6c5;padding-top:12px;display:grid;gap:10px}.legacy-makeup-history-title{font-weight:600;color:#1e3a5f}.legacy-makeup-history-range{display:grid;grid-template-columns:max-content 1fr max-content 1fr;gap:6px 8px;align-items:center}.legacy-makeup-history-range input{border:1px solid #b3cde8;border-radius:8px;height:30px;padding:4px 10px;font-size:.8rem;background:#fff}.legacy-makeup-history-empty{font-size:.75rem;color:#6b6157}.legacy-makeup-history-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.legacy-makeup-history-list li{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #d6e2f5}.legacy-makeup-history-info{display:grid;gap:4px;font-size:.75rem;color:#1e3a5f}.legacy-makeup-history-list button{border:none;background:#c04b4b;color:#fff;border-radius:999px;padding:6px 12px;font-size:.75rem;cursor:pointer}.legacy-textbook-sale-panel{display:grid;gap:12px;font-size:.8rem;background:#f1f8ff;border:1px solid #c5d9ed;border-radius:16px;padding:16px;box-shadow:0 12px 24px #1f1f1f1f}.legacy-textbook-sale-student{display:flex;gap:8px;align-items:center;font-weight:600;color:#1e3a5f}.legacy-textbook-sale-level{font-weight:400;color:#4a6fa5}.legacy-textbook-sale-courses{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.legacy-textbook-sale-course-tag{background:#e8f4fd;border:1px solid #b8d4ed;color:#2d5a8a;padding:3px 10px;border-radius:12px;font-size:.75rem;font-weight:500}.legacy-textbook-sale-search input{width:100%;border:1px solid #c5d9ed;background:#fff;height:36px;padding:8px 12px;font-size:.8rem;border-radius:8px}.legacy-textbook-sale-search input:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 3px #4a90d926}.legacy-textbook-sale-list{max-height:280px;overflow-y:auto;display:grid;gap:6px;padding:4px}.legacy-textbook-sale-empty{text-align:center;color:#6b7b8a;padding:24px}.legacy-textbook-sale-item{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:10px 12px;background:#fff;border:1px solid #dfe9f2;border-radius:10px;cursor:pointer;transition:all .15s ease}.legacy-textbook-sale-item:hover{background:#f7fafc;border-color:#b8cfe0}.legacy-textbook-sale-item.selected{background:#e8f4fd;border-color:#4a90d9}.legacy-textbook-sale-item input[type=checkbox]{width:18px;height:18px;accent-color:#4a90d9}.legacy-textbook-sale-name{font-weight:500;color:#1e3a5f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legacy-textbook-sale-category{font-size:.7rem;color:#6b7b8a;background:#eef4f9;padding:2px 8px;border-radius:4px}.legacy-textbook-sale-price{font-weight:600;color:#2d5a8a;white-space:nowrap}.legacy-textbook-sale-summary{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#e8f4fd;border-radius:10px;font-weight:500;color:#1e3a5f}.legacy-textbook-sale-total{font-weight:700;color:#2d5a8a;font-size:.9rem}.legacy-textbook-sale-due-date{display:flex;align-items:center;justify-content:flex-start;padding:6px 0}.legacy-textbook-sale-due-date label{display:flex;align-items:center;gap:6px;font-size:13px;color:#991b1b;font-weight:600}.legacy-textbook-sale-due-date input[type=date]{padding:4px 8px;border:1px solid #fca5a5;border-radius:4px;font-size:13px;color:#333}.legacy-textbook-sale-actions{display:flex;justify-content:center}.legacy-textbook-sale-actions button{border:none;background:linear-gradient(135deg,#2d5a8a,#4a90d9);color:#fff;padding:10px 24px;font-size:.85rem;font-weight:600;border-radius:999px;cursor:pointer;box-shadow:0 8px 16px #2d5a8a40;transition:all .15s ease}.legacy-textbook-sale-actions button:hover:not(:disabled){background:linear-gradient(135deg,#3d6a9a,#5aa0e9);box-shadow:0 10px 20px #2d5a8a4d}.legacy-textbook-sale-actions button:disabled{background:#b8c4d0;cursor:not-allowed;box-shadow:none}.legacy-textbook-sale-item.search-result{grid-template-columns:1fr auto auto auto;cursor:pointer}.legacy-textbook-sale-item.set-item{background:#f0f7ff;border-color:#a8c8e8}.legacy-textbook-sale-item.set-item:hover{background:#e0efff;border-color:#7badd4}.legacy-textbook-set-badge{display:inline-block;background:#4a90d9;color:#fff;font-size:.65rem;font-weight:700;padding:1px 6px;border-radius:4px;margin-right:6px;vertical-align:middle}.legacy-textbook-add-btn{border:1px solid #4a90d9;background:#fff;color:#4a90d9;padding:4px 10px;font-size:.75rem;border-radius:6px;cursor:pointer;transition:all .15s ease}.legacy-textbook-add-btn:hover{background:#4a90d9;color:#fff}.legacy-textbook-add-btn.added{background:#4a90d9;color:#fff;border-color:#4a90d9}.legacy-textbook-selected-section{border-top:1px solid #c5d9ed;padding-top:12px;display:grid;gap:8px}.legacy-textbook-selected-title{font-weight:600;color:#1e3a5f;font-size:.85rem}.legacy-textbook-selected-list{display:grid;gap:6px;max-height:150px;overflow-y:auto}.legacy-textbook-selected-item{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:8px 12px;background:#e8f4fd;border:1px solid #b8d4ed;border-radius:8px}.legacy-textbook-remove-btn{border:none;background:#c04b4b;color:#fff;width:22px;height:22px;border-radius:50%;font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.legacy-textbook-remove-btn:hover{background:#a03a3a}.learning-shell{--learning-bg: #f0f4fa;--learning-ink: #1f1f1f;--learning-muted: #64748b;--learning-card: #f8faff;--learning-accent: #1b7f6b;--learning-accent-2: #3b82f6;--learning-border: #bfdbfe;background:radial-gradient(circle at top,#f0f4fa,#e8eef8 55%,#e1e9f5);color:var(--learning-ink);border-radius:24px;padding:20px 48px;width:100%;margin:0 auto;font-family:SUIT,Pretendard,Noto Sans KR,sans-serif;zoom:.9}.learning-card{background:var(--learning-card);border:1px solid var(--learning-border);border-radius:22px;padding:24px;box-shadow:0 20px 40px #1f1f1f24}.learning-header{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.learning-header-title{display:flex;align-items:baseline;gap:10px}.learning-header-actions{display:contents}.learning-date{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;color:var(--learning-muted)}.learning-date input{border:1px solid var(--learning-border);border-radius:10px;padding:6px 10px;font-size:.85rem;background:#fff;color:var(--learning-ink)}.learning-refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--learning-border);border-radius:8px;background:#fff;color:var(--learning-muted);font-size:1.1rem;cursor:pointer;transition:all .15s ease}.learning-refresh-btn:hover:not(:disabled){background:var(--learning-hover);color:var(--learning-ink);border-color:var(--learning-ink)}.learning-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.learning-header h2{font-size:1.4rem;margin:0;white-space:nowrap}.learning-eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.7rem;color:var(--learning-muted);margin:0;white-space:nowrap}.learning-subtitle{margin:0;color:var(--learning-muted);font-size:1rem}.learning-category-select{border:1px solid var(--learning-border);border-radius:12px;padding:10px 36px 10px 16px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2364748b' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") no-repeat right 14px center;appearance:none;font-size:.95rem;font-weight:600;color:var(--learning-ink);cursor:pointer;min-width:200px;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}.learning-category-select:hover{border-color:var(--learning-accent)}.learning-category-select:focus{outline:none;border-color:var(--learning-accent);box-shadow:0 0 0 3px #1b7f6b26}.learning-status{margin:20px 0 24px;padding:12px 16px;border-radius:14px;background:#fff;border:1px dashed var(--learning-border);color:var(--learning-muted);font-size:.95rem}.learning-date-toolbar{display:flex;align-items:center;gap:12px;padding:14px 0 10px}.learning-class-panel{background:#fff;border:1px solid var(--learning-border);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.learning-class-panel-header{display:flex;justify-content:space-between;align-items:center}.learning-class-panel-title{font-weight:700;font-size:1.05rem;color:var(--learning-ink)}.learning-class-panel-count{font-weight:400;font-size:.85rem;color:var(--learning-muted);margin-left:6px}.learning-class-panel-actions{display:flex;align-items:center;gap:12px}.learning-class-panel-toggle{border:1px solid var(--learning-border);background:#fff;border-radius:10px;padding:6px 14px;font-size:.85rem;color:var(--learning-muted);cursor:pointer;transition:all .15s ease;font-family:inherit}.learning-class-panel-toggle:hover{background:#eef2fb;color:var(--learning-ink)}.learning-class-chips{display:flex;flex-wrap:wrap;gap:8px}.learning-class-chip{display:inline-flex;align-items:center;gap:6px;background:#e8f0fe;border:1px solid rgba(27,127,107,.25);border-radius:999px;padding:5px 8px 5px 12px;font-size:.82rem;color:#1b7f6b;white-space:nowrap}.learning-class-chip-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:none;color:#1b7f6b;font-size:1rem;cursor:pointer;padding:0 2px;line-height:1;opacity:.7;transition:opacity .15s ease}.learning-class-chip-remove:hover{opacity:1;color:#b64b4b}.learning-class-panel-body{max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .2s ease}.learning-class-panel-body.open{max-height:600px;opacity:1}.learning-filters-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.learning-filters-row .learning-filter-select{flex:1;min-width:120px}.learning-class-grid{display:flex;flex-wrap:wrap;gap:8px;max-height:300px;overflow-y:auto;padding-right:2px}.learning-class-item{border:1px solid transparent;border-radius:14px;padding:8px 12px;background:#f0f5ff;text-align:left;cursor:pointer;font:inherit;display:inline-flex;align-items:center;gap:8px;color:var(--learning-ink);font-size:.9rem;white-space:nowrap;transition:all .15s ease}.learning-class-item:hover{border-color:var(--learning-accent-2);background:#e8f0fe}.learning-class-item.active{border-color:var(--learning-accent);background:#e8f0fe;box-shadow:0 4px 12px #1b7f6b2e}.learning-panel{background:#fff;border:1px solid var(--learning-border);border-radius:18px;padding:14px;min-height:240px;display:flex;flex-direction:column;gap:10px}.learning-panel-title{font-weight:700;font-size:1.05rem;color:var(--learning-ink);display:flex;justify-content:space-between;align-items:center;padding-bottom:8px;border-bottom:1px solid var(--learning-border)}.learning-select-all{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--learning-muted)}.learning-select-all input{margin:0}.learning-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.learning-filter-select{border:1px solid var(--learning-border);background:#fff;border-radius:10px;padding:8px 12px;font-size:.85rem;min-height:36px;color:var(--learning-ink)}.learning-segmented{display:inline-flex;gap:6px;background:#eef2fb;border-radius:999px;padding:3px}.learning-segment{border:none;background:transparent;color:var(--learning-muted);font-size:.85rem;padding:6px 12px;border-radius:999px;cursor:pointer}.learning-segment.active{background:#1b7f6b;color:#fff}.learning-list{display:grid;gap:6px;max-height:480px;overflow:auto;padding-right:2px;justify-items:start}.learning-list-item{border:1px solid transparent;border-radius:14px;padding:10px 8px;background:#f0f5ff;text-align:left;cursor:pointer;font:inherit;display:flex;align-items:center;gap:8px;color:var(--learning-ink);font-size:.95rem;width:fit-content;max-width:100%}.learning-list-item.active{border-color:var(--learning-accent);box-shadow:0 8px 18px #1b7f6b2e}.learning-checkbox{margin:0}.learning-chip{background:#e8f0fe;border:1px solid rgba(27,127,107,.25);border-radius:999px;padding:4px 10px;font-size:.75rem;color:#1b7f6b}.learning-student-list{display:grid;gap:10px}.learning-course-group{display:grid;gap:8px}.learning-holiday-banner{background:#e5e7eb;color:#374151;font-weight:600;font-size:.9rem;padding:8px 14px;border-radius:8px;border:1px solid #d1d5db;text-align:center}.learning-course-title{font-weight:700;font-size:.95rem;color:var(--learning-ink);padding:8px 10px;border-radius:10px;background:#e8f0fe;border:1px solid rgba(59,130,246,.2);display:flex;align-items:center;gap:8px;justify-content:flex-start}.learning-push-btn{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:2px 6px;border-radius:6px;transition:background .15s;line-height:1}.learning-push-btn:hover{background:#3b82f626}.learning-push-btn.sent{background:#dcfce7;border:1.5px solid #16a34a;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:600;color:#15803d;letter-spacing:-.02em}.learning-push-btn.sent:hover{background:#bbf7d0}@media print{.learning-push-btn{display:none!important}}.learning-sms-reserve-print{display:none}.learning-save-message{font-size:.75rem;opacity:0;animation:fade-message 2s ease forwards}.learning-save-message.success{color:#2d8b57}.learning-save-message.error{color:#b64b4b}@keyframes fade-message{0%{opacity:0;transform:translateY(-2px)}12%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0}}.learning-att-stats{display:flex;align-items:center;gap:6px;flex-shrink:0}.learning-att-chip{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:6px;white-space:nowrap}.learning-attendance-bulk{border:1px solid rgba(27,127,107,.4);background:#f1f7f5;color:#1b7f6b;border-radius:999px;padding:4px 10px;font-size:.75rem;cursor:pointer;white-space:nowrap}.learning-attendance-tabs{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;justify-content:flex-start;margin-left:-4px}.learning-attendance-memos{display:flex;flex-wrap:nowrap;gap:12px;justify-self:start;align-items:flex-start}.learning-tab{border:1px solid var(--learning-border);background:#fff;color:var(--learning-muted);border-radius:10px;padding:6px 8px;font-size:.8rem;cursor:pointer;white-space:nowrap}.learning-tab.status-출석.active{background:#16a34a;border-color:#16a34a;color:#fff}.learning-tab.status-지각.active{background:#d39b2a;border-color:#d39b2a;color:#fff}.learning-tab.status-결석.active{background:#c64242;border-color:#c64242;color:#fff}.learning-tab.status-조퇴.active{background:#ea580c;border-color:#ea580c;color:#fff}.learning-tab.status-미정.active{background:#7b7b7b;border-color:#7b7b7b;color:#fff}.learning-tab.status-보강{border-color:#a78bfa;color:#7c3aed}.learning-tab.status-보강.active{background:#7c3aed;border-color:#7c3aed;color:#fff}.learning-tab:disabled{opacity:.5;cursor:not-allowed}.learning-makeup-sub-buttons{display:flex;gap:4px;margin-top:4px}.learning-makeup-sub-btn{padding:3px 8px;font-size:.72rem;border-radius:6px;border:1px solid #a78bfa;background:#fff;color:#7c3aed;cursor:pointer;transition:all .15s ease;font-weight:500}.learning-makeup-sub-btn:hover{background:#f3e8ff}.learning-makeup-sub-btn.active{background:#7c3aed;border-color:#7c3aed;color:#fff}.learning-student-row{display:grid;grid-template-columns:320px 1fr;gap:8px;padding:10px 12px;border-radius:12px;background:#f0f5ff;border:1px solid rgba(59,130,246,.2);font-size:.9rem;align-items:center}.learning-student-row.makeup{border-color:#8b5cf6;border-width:2px;background:#ede9fe}.learning-student-row.makeup .learning-student-name{color:#7c3aed}.learning-student-info{display:grid;gap:4px;white-space:nowrap;min-width:0}.learning-student-name{font-weight:600}.learning-student-name.clickable{background:none;border:none;padding:0;font-size:inherit;font-weight:600;color:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:transparent;transition:all .15s ease}.learning-student-name.clickable:hover{color:#2563eb;text-decoration-color:#2563eb}.learning-student-origin{font-size:.75rem;color:#5a4b73;white-space:normal;word-break:break-all}.learning-student-origin.transfer{color:#166534}.learning-makeup-badge{background:#6f4acb;color:#fff;border-radius:999px;padding:2px 8px;font-size:.7rem}.learning-new-student-badge{background:#fbbf24;color:#78350f;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:500}.learning-transfer-badge{background:#16a34a;color:#fff;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:500}.learning-student-number{color:#64748b;font-size:12px;margin-right:6px;min-width:16px}.learning-student-name-row{display:flex;align-items:center;flex-wrap:nowrap;gap:4px;white-space:nowrap}.learning-exemption-btn{background:#f59e0b;color:#78350f;border:none;border-radius:999px;padding:2px 8px;font-size:.65rem;font-weight:500;cursor:pointer;margin-left:6px;transition:all .15s ease}.learning-exemption-btn:hover{background:#fbbf24}.learning-exemption-btn.active{background:#6b7280;color:#fff}.learning-exemption-btn.active:hover{background:#4b5563}.learning-exempt-text{display:inline-block;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;padding:4px 8px;border-radius:4px;font-size:.75rem;font-weight:500;text-align:center;white-space:nowrap}.learning-exempt-text.clickable{cursor:pointer;transition:background .15s}.learning-exempt-text.clickable:hover{background:#e5e7eb;text-decoration:line-through}.learning-item-unexempt-cell{position:relative;display:flex;align-items:center;justify-content:center}.learning-item-unexempt-cell>button{position:absolute;left:calc(50% + 30px)}.learning-item-reexempt-btn{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db;border-radius:3px;padding:2px 6px;font-size:.65rem;cursor:pointer;white-space:nowrap;transition:background .15s}.learning-item-reexempt-btn:hover{background:#fef3c7;color:#92400e;border-color:#f59e0b}.learning-memo-pill{display:inline-block;max-width:240px;padding:4px 8px;border-radius:6px;border:1px dashed rgba(27,127,107,.4);background:#f1f7f5;color:#2a4d45;font-size:.75rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.learning-attendance-memo{border:1px solid rgba(27,127,107,.35);border-radius:6px;padding:6px 10px;min-width:300px;max-width:400px;min-height:56px;background:#fff;font-size:.8rem;resize:none;overflow:hidden;field-sizing:content}.learning-memo-field{display:flex;align-items:flex-start;gap:6px}.learning-memo-field .learning-memo-by{padding-top:6px}.learning-memo-by{font-size:.7rem;color:var(--learning-muted);white-space:nowrap}.learning-student-meta{color:var(--learning-muted)}.learning-empty{text-align:center;color:var(--learning-muted);padding:12px}.learning-list-item:hover{border-color:var(--learning-accent-2);background:#e8f0fe}.learning-placeholder{flex:1;display:grid;place-items:center;border-radius:14px;background:repeating-linear-gradient(-45deg,#3b82f61a,#3b82f61a 12px,#1b7f6b14 12px 24px);color:var(--learning-muted);font-size:1rem;padding:20px;text-align:center}.learning-content-tabs{display:flex;gap:0;border-bottom:2px solid var(--learning-border);margin-bottom:16px}.learning-content-tab{border:none;background:transparent;padding:12px 24px;font-size:.95rem;font-weight:600;color:var(--learning-muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s ease}.learning-content-tab:hover{color:var(--learning-ink);background:#1b7f6b0d}.learning-content-tab.active{color:var(--learning-accent);border-bottom-color:var(--learning-accent)}.learning-test-section{display:flex;flex-direction:column;gap:16px}.learning-test-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f1f5f9;border-radius:12px;border:1px solid var(--learning-border)}.learning-test-header-title{font-weight:700;font-size:1rem;color:var(--learning-ink)}.learning-test-actions{display:flex;gap:8px}.learning-test-btn{border:1px solid var(--learning-border);background:#fff;color:var(--learning-ink);padding:8px 16px;border-radius:8px;font-size:.85rem;cursor:pointer;transition:all .15s ease}.learning-test-btn:hover{background:var(--learning-hover);border-color:var(--learning-accent)}.learning-test-btn.primary{background:var(--learning-accent);border-color:var(--learning-accent);color:#fff}.learning-test-btn.primary:hover{background:#158a71}.learning-type-config{display:grid;gap:12px;padding:16px;background:#fff;border:1px solid var(--learning-border);border-radius:12px}.learning-type-config-title{font-weight:600;font-size:.9rem;color:var(--learning-ink);padding-bottom:8px;border-bottom:1px solid var(--learning-border)}.learning-type-list{display:flex;flex-wrap:wrap;gap:8px}.learning-type-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f0fdf4;border:1px solid #86efac;border-radius:8px;font-size:.85rem}.learning-type-item.assignment{background:#fef3c7;border-color:#fcd34d}.learning-type-item-name{font-weight:600;color:var(--learning-ink)}.learning-type-item-score{font-size:.75rem;color:var(--learning-muted)}.learning-type-item-edit{border:none;background:transparent;color:#374151;cursor:pointer;padding:2px;font-size:.9rem;line-height:1;margin-left:auto}.learning-type-item-edit:hover{color:#3b82f6}.learning-type-item-delete{border:none;background:transparent;color:#374151;cursor:pointer;padding:2px;font-size:1rem;line-height:1}.learning-type-item-delete:hover{color:#ef4444}.learning-type-add{display:flex;gap:8px;align-items:center}.learning-type-add input{border:1px solid var(--learning-border);border-radius:8px;padding:8px 12px;font-size:.85rem;width:120px}.learning-type-add input[type=number]{width:80px}.learning-type-add-btn{border:1px dashed var(--learning-accent);background:transparent;color:var(--learning-accent);padding:8px 12px;border-radius:8px;font-size:.85rem;cursor:pointer}.learning-type-add-btn:hover{background:#1b7f6b1a}.learning-type-delete-btn{border:1px dashed #d1d5db;background:transparent;color:#6b7280;padding:8px 12px;border-radius:8px;font-size:.85rem;cursor:pointer}.learning-type-delete-btn:hover{background:#f3f4f6;color:#4b5563}.learning-type-delete-btn:disabled{border-color:#ccc;color:#374151;cursor:not-allowed}.learning-type-delete-btn:disabled:hover{background:transparent}.learning-common-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;margin-bottom:16px}.learning-common-actions-label{font-size:.85rem;font-weight:600;color:#0369a1}.learning-course-settings{display:flex;flex-direction:column;gap:8px;padding:12px;background:#fafafa;border:1px solid var(--learning-border);border-radius:8px;margin-bottom:12px}.learning-type-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.learning-type-inline-label{font-size:.8rem;font-weight:600;color:var(--learning-muted);min-width:50px}.learning-type-chip{display:flex;align-items:center;gap:4px;padding:4px 8px;background:#f0fdf4;border:1px solid #86efac;border-radius:6px;font-size:.8rem}.learning-type-chip.assignment{background:#fef3c7;border-color:#fcd34d}.learning-type-chip span:first-child{font-weight:600;color:var(--learning-ink)}.learning-type-chip-info{font-size:.7rem;color:var(--learning-muted)}.learning-type-chip-edit,.learning-type-chip-delete{border:none;background:transparent;cursor:pointer;padding:0 2px;font-size:.75rem;line-height:1;color:#374151}.learning-type-chip-edit:hover{color:#3b82f6}.learning-type-chip-delete:hover{color:#ef4444}.learning-type-chip-add{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px dashed #9ca3af;background:transparent;border-radius:6px;font-size:.9rem;color:#374151;cursor:pointer}.learning-type-chip-add:hover{border-color:var(--learning-accent);color:var(--learning-accent)}.learning-score-table{width:auto;min-width:80%;border-collapse:collapse;font-size:.85rem;table-layout:auto;justify-self:start}.learning-score-table th{background:#f1f5f9;padding:10px 6px;text-align:center;vertical-align:top;font-weight:600;color:var(--learning-ink);border-bottom:2px solid var(--learning-border)}.learning-score-table th.test-score-col{width:200px}.learning-score-table th.assignment-combined-col,.learning-score-table td.assignment-combined-col{width:280px}.learning-score-table td.cell-highlight-yellow{background:#fef9c3}.learning-score-table th.student-col{text-align:center;width:200px;min-width:200px}.learning-score-table td{padding:6px;border-bottom:1px solid var(--learning-border);text-align:center}.learning-score-table td.student-col{text-align:left;font-weight:500;width:200px;min-width:200px}.learning-score-table tr:hover{background:#f5f5f5}.learning-score-table tr.retest-row{background:transparent}.learning-score-table tr.retest-row:hover{background:#f5f5f5}.learning-score-table tr.retest-row>td.student-col{background:#fef9c3}.retest-footer-col{display:none}.learning-student-num{color:#64748b;font-size:12px;margin-right:6px;min-width:16px}.learning-score-input{border:1px solid var(--learning-border);border-radius:6px;padding:6px 8px;width:60px;min-width:60px;max-width:60px;text-align:center;-moz-appearance:textfield;font-size:.85rem}.learning-score-input::-webkit-outer-spin-button,.learning-score-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.learning-score-input:focus{outline:none;border-color:var(--learning-accent);box-shadow:0 0 0 2px #1b7f6b26}.learning-score-input.pass{background:#dcfce7;border-color:#86efac}.learning-score-input.fail{background:#fee2e2;border-color:#fca5a5}.learning-score-input.disabled,.learning-score-input:disabled{background:#f5f5f5;border-color:#d1d5db;color:#374151;cursor:not-allowed}.learning-makeup-cell-text{display:inline-block;font-size:.7rem;white-space:nowrap;text-align:center;color:#374151;overflow:hidden;max-width:100%}.learning-score-input:disabled::placeholder{color:#374151}.learning-absent-badge{background:#fee2e2;color:#991b1b;font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:500}.learning-pending-badge{background:#fef3c7;color:#92400e;font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:500}.learning-late-badge{background:#fed7aa;color:#c2410c;font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:500}.learning-late-input-cell{display:flex;align-items:center;justify-content:center;gap:4px}.learning-late-input-cell .learning-score-input{width:50px;flex-shrink:0}.learning-late-absence-btn{background:#fed7aa;color:#c2410c;border:1px solid #fb923c;border-radius:4px;padding:2px 6px;font-size:.7rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color .15s}.learning-late-absence-btn:hover{background:#fdba74}.learning-late-absence-cell{display:flex;align-items:center;justify-content:center;gap:4px}.learning-late-absence-text{background:#fed7aa;color:#c2410c;font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:500}.learning-exempt-score-text{background:#dbeafe;color:#1e40af;font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:500}.learning-late-absence-cancel-btn{background:transparent;color:#9ca3af;border:none;border-radius:50%;width:18px;height:18px;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s,color .15s}.learning-late-absence-cancel-btn:hover{background:#fee2e2;color:#dc2626}.learning-score-header{display:flex;flex-direction:column;align-items:center;gap:2px}.learning-score-header-name{font-weight:600}.learning-score-header-info{font-size:.7rem;color:var(--learning-muted);font-weight:400}.learning-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.learning-modal{background:#fff;border-radius:16px;padding:24px;min-width:400px;max-width:90vw;max-height:90vh;overflow:auto;box-shadow:0 20px 60px #0003}.learning-modal-title{font-size:1.2rem;font-weight:700;color:var(--learning-ink);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--learning-border)}.learning-modal-body{display:flex;flex-direction:column;gap:16px}.learning-modal-field{display:flex;flex-direction:column;gap:6px}.learning-modal-field label{font-size:.85rem;font-weight:600;color:var(--learning-ink)}.learning-modal-field input{border:1px solid var(--learning-border);border-radius:8px;padding:10px 12px;font-size:.9rem}.learning-modal-field input:focus{outline:none;border-color:var(--learning-accent)}.learning-modal-hint{font-size:.75rem;color:#6b7280;margin:4px 0 8px}.learning-apply-days-checkboxes{display:flex;gap:16px;flex-wrap:wrap}.learning-apply-days-checkboxes .checkbox-label{display:flex;align-items:center;gap:6px;font-size:.875rem;cursor:pointer}.learning-apply-days-checkboxes .checkbox-label input{width:16px;height:16px;cursor:pointer}.learning-date-range{display:flex;align-items:center;gap:8px}.learning-date-range input[type=date]{padding:6px 10px;border:1px solid var(--learning-border);border-radius:6px;font-size:.875rem}.learning-date-range input[type=date]:focus{outline:none;border-color:var(--learning-accent)}.learning-date-range span{color:#6b7280;font-size:.875rem}.learning-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;padding-top:16px;border-top:1px solid var(--learning-border)}.learning-delete-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.learning-delete-item{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#fafafa;border:1px solid #e5e5e5;border-radius:8px}.learning-delete-item-name{flex:1;font-weight:500;color:#1e293b}.learning-delete-item-count{font-size:.85rem;color:#64748b}.learning-delete-item-btn{padding:6px 12px;background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:6px;font-size:.85rem;cursor:pointer;transition:background .2s}.learning-delete-item-btn:hover{background:#fecaca}@media(max-width:900px){.learning-shell{padding:12px}.learning-card{padding:16px}.learning-class-panel-header{flex-wrap:wrap;gap:8px}.learning-filters-row{flex-direction:column}.learning-filters-row .learning-filter-select{min-width:100%}.learning-class-grid{max-height:240px}.learning-content-tabs{flex-wrap:wrap}.learning-content-tab{padding:10px 16px;font-size:.85rem}}@media(max-width:768px){.learning-shell{padding:8px;zoom:1;border-radius:0}.learning-card{padding:10px;border-radius:12px}.learning-header{flex-direction:column;align-items:stretch;gap:10px}.learning-header-title{font-size:1rem}.learning-header h2{font-size:1.1rem}.learning-eyebrow{font-size:.6rem}.learning-category-select{min-width:0;width:100%;font-size:.88rem;padding:8px 32px 8px 12px}.learning-segmented{align-self:flex-start}.learning-date{width:100%;justify-content:flex-start}.learning-class-panel{padding:10px;border-radius:12px}.learning-class-panel-header{flex-direction:column;align-items:stretch;gap:8px}.learning-class-panel-actions{justify-content:space-between}.learning-class-panel-title{font-size:.95rem}.learning-class-chips{gap:6px}.learning-class-chip{font-size:.75rem;padding:3px 6px 3px 10px}.learning-filters-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.learning-filters-row .learning-filter-select{min-width:0;width:100%;font-size:.8rem;padding:6px 8px}.learning-class-grid{max-height:200px}.learning-class-item{font-size:.8rem;padding:6px 10px;border-radius:10px}.learning-panel{padding:10px;border-radius:12px;min-height:180px}.learning-panel-title{font-size:.9rem;flex-wrap:wrap;gap:6px}.learning-content-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}.learning-content-tab{padding:8px 12px;font-size:.8rem;white-space:nowrap;flex-shrink:0}.learning-attendance-bulk{flex-wrap:wrap;gap:6px}.learning-attendance-tabs{flex-wrap:wrap;gap:4px}.learning-panel>div{overflow-x:auto;-webkit-overflow-scrolling:touch}.learning-placeholder{padding:16px;font-size:.88rem}}@media(max-width:480px){.learning-shell{padding:4px}.learning-card{padding:8px}.learning-header h2{font-size:1rem}.learning-category-select{font-size:.82rem}.learning-segment{padding:5px 10px;font-size:.78rem}.learning-filters-row{grid-template-columns:1fr}.learning-class-item{font-size:.75rem;padding:5px 8px}.learning-content-tab{padding:6px 10px;font-size:.75rem}.learning-panel-title{font-size:.82rem}.learning-class-panel-toggle{padding:4px 10px;font-size:.78rem}}.learning-retest-tab{padding:16px}.retest-list{display:flex;flex-direction:column;gap:12px}.retest-student-card{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.retest-student-name{padding:8px 14px;font-weight:600;font-size:.9rem;background:#f9fafb;border-bottom:1px solid #e5e7eb}.retest-student-rows{display:flex;flex-direction:column}.retest-list-row{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #f3f4f6;flex-wrap:wrap}.retest-list-row:last-child{border-bottom:none}.retest-row-test{font-size:.8rem;font-weight:500;color:#374151;min-width:100px}.retest-row-score{font-size:.8rem;color:#dc2626;background:#fee2e2;padding:2px 8px;border-radius:6px;white-space:nowrap}.retest-row-cut{font-size:.75rem;color:#6b7280;background:#f3f4f6;padding:2px 6px;border-radius:4px;white-space:nowrap}.retest-row-buttons{display:flex;gap:4px}.learning-empty-message{text-align:center;padding:40px 20px;color:#374151;font-size:.95rem}.learning-empty-hint{font-size:.85rem;color:#374151;margin-top:8px}.learning-tab-save-msg{font-size:.75rem;margin-left:12px;opacity:0;animation:fade-message 2s ease forwards}.learning-tab-save-msg.success{color:#2d8b57}.learning-tab-save-msg.error{color:#b64b4b}.learning-retest-table-wrapper{overflow-x:auto}.learning-retest-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.learning-retest-table th,.learning-retest-table td{border:1px solid #e5e7eb;padding:10px 12px;text-align:center;vertical-align:middle}.learning-retest-th-student{background:#f9fafb;font-weight:600;color:#374151;font-size:.9rem;min-width:80px;text-align:left}.learning-retest-th-test{background:#fef2f2;min-width:120px}.learning-retest-test-header{display:flex;flex-direction:column;gap:4px;align-items:center}.learning-retest-test-name{font-weight:600;color:#991b1b;font-size:.9rem}.learning-retest-test-info{font-size:.75rem;color:#b91c1c;background:#fee2e2;padding:2px 8px;border-radius:10px}.retest-bulk-pass-btn{margin-top:4px;padding:3px 10px;font-size:.72rem;font-weight:500;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s}.retest-bulk-pass-btn:hover:not(:disabled){background:#dcfce7;border-color:#86efac;color:#166534}.retest-bulk-pass-btn.active{background:#166534;border-color:#166534;color:#fff}.retest-bulk-pass-btn.active:hover:not(:disabled){background:#14532d}.retest-bulk-pass-btn:disabled{opacity:.5;cursor:not-allowed}.learning-retest-td-student{background:#f9fafb;text-align:left}.learning-retest-student-name{font-weight:500;color:#111827;font-size:.9rem}.retest-bulk-actions{display:flex;gap:4px;margin-top:4px;justify-content:center}.retest-bulk-schedule-column-btn{padding:3px 10px;font-size:.72rem;font-weight:500;border:1px solid #c4b5fd;border-radius:6px;background:#f5f3ff;color:#6d28d9;cursor:pointer;transition:all .15s}.retest-bulk-schedule-column-btn:hover:not(:disabled){background:#ede9fe;border-color:#a78bfa}.retest-bulk-schedule-column-btn:disabled{opacity:.5;cursor:not-allowed}.retest-bulk-schedule-column-picker{display:flex;flex-direction:column;gap:6px;margin-top:6px;padding:8px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.retest-bulk-schedule-area{margin-top:6px}.retest-bulk-schedule-btn{padding:3px 10px;font-size:.72rem;font-weight:500;border:1px solid #c4b5fd;border-radius:6px;background:#f5f3ff;color:#6d28d9;cursor:pointer;transition:all .15s}.retest-bulk-schedule-btn:hover{background:#ede9fe;border-color:#a78bfa}.retest-bulk-schedule-picker{display:flex;flex-direction:column;gap:6px}.retest-bulk-schedule-actions{display:flex;gap:4px}.retest-bulk-schedule-confirm{padding:3px 10px;font-size:.72rem;font-weight:600;border:1px solid #6d28d9;border-radius:6px;background:#6d28d9;color:#fff;cursor:pointer}.retest-bulk-schedule-confirm:hover:not(:disabled){background:#5b21b6}.retest-bulk-schedule-confirm:disabled{opacity:.5;cursor:not-allowed}.retest-bulk-schedule-cancel{padding:3px 10px;font-size:.72rem;font-weight:500;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer}.retest-bulk-schedule-cancel:hover{background:#f3f4f6}.learning-retest-td-empty{color:#d1d5db;font-size:.9rem}.learning-retest-td-status{padding:8px}.learning-retest-cell{display:flex;flex-direction:column;align-items:center;gap:6px}.learning-retest-original-score{font-size:.8rem;color:#dc2626;background:#fee2e2;padding:2px 8px;border-radius:6px}.retest-status-buttons,.learning-retest-status-buttons{display:flex;gap:4px;justify-content:center}.retest-status-btn{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;background:#fff;color:#374151;transition:all .2s;white-space:nowrap}.retest-status-btn:hover{border-color:#374151}.retest-status-btn.passed{border-color:#86efac;color:#16a34a}.retest-status-btn.passed:hover{background:#f0fdf4}.retest-status-btn.passed.active{background:#10b981;border-color:#10b981;color:#fff}.retest-status-btn.failed{border-color:#fca5a5;color:#dc2626}.retest-status-btn.failed:hover{background:#fef2f2}.retest-status-btn.failed.active{background:#ef4444;border-color:#ef4444;color:#fff}.retest-status-btn.absent{border-color:#d1d5db;color:#374151}.retest-status-btn.absent:hover{background:#f3f4f6}.retest-status-btn.absent.active{background:#6b7280;border-color:#374151;color:#fff}.retest-status-btn.exempt{border-color:#c4b5fd;color:#7c3aed}.retest-status-btn.exempt:hover{background:#f5f3ff}.retest-status-btn.exempt.active{background:#8b5cf6;border-color:#8b5cf6;color:#fff}.retest-status-btn.scheduled{border-color:#93c5fd;color:#2563eb}.retest-status-btn.scheduled:hover{background:#eff6ff}.retest-status-btn.scheduled.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.retest-scheduled-picker{display:flex;align-items:center;gap:8px;margin-top:4px}.retest-scheduled-input{font-size:.75rem;padding:2px 6px;border:1px solid #d1d5db;border-radius:4px;color:#374151}.retest-scheduled-selects{display:flex;align-items:center;gap:4px}.retest-scheduled-date{font-size:.75rem;padding:2px 6px;border:1px solid #d1d5db;border-radius:4px;color:#374151}.retest-scheduled-hour,.retest-scheduled-minute{font-size:.85rem;padding:6px 8px;min-height:32px;border:1px solid #d1d5db;border-radius:4px;color:#374151;cursor:pointer}.retest-scheduled-label{font-size:.7rem;color:#2563eb;font-weight:600;white-space:nowrap}.retest-scheduled-record{font-size:11px;color:#888;margin-top:4px;white-space:nowrap}.retest-scheduled-text{color:#2563eb!important}.learning-retest-legend{display:flex;gap:16px;justify-content:center;margin-top:12px;padding:10px;background:#f9fafb;border-radius:8px}.legend-item{display:flex;align-items:center;gap:6px;font-size:.85rem;color:#374151}.legend-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:.8rem;font-weight:600}.legend-icon.passed{background:#10b981;color:#fff}.legend-icon.failed{background:#ef4444;color:#fff}.legend-icon.absent{background:#6b7280;color:#fff}@media(max-width:600px){.learning-retest-table th,.learning-retest-table td{padding:6px}.learning-retest-th-test{min-width:80px}.retest-status-btn{padding:4px 6px;font-size:.65rem}.learning-retest-status-buttons{flex-wrap:wrap;gap:2px}}.learning-assignment-cell{padding:4px}.learning-assignment-row{display:flex;align-items:center;justify-content:center;gap:6px}.learning-assignment-status-buttons{display:flex;gap:2px;justify-content:center}.assignment-status-btn{padding:4px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:.7rem;font-weight:500;cursor:pointer;background:#fff;color:#374151;transition:all .15s;white-space:nowrap}.assignment-status-btn:hover:not(:disabled){border-color:#374151}.assignment-status-btn:disabled{opacity:.5;cursor:not-allowed}.assignment-status-btn.submitted{border-color:#86efac;color:#16a34a}.assignment-status-btn.submitted:hover:not(:disabled){background:#f0fdf4}.assignment-status-btn.submitted.active{background:#10b981;border-color:#10b981;color:#fff}.assignment-status-btn.insufficient{border-color:#fcd34d;color:#d97706}.assignment-status-btn.insufficient:hover:not(:disabled){background:#fefce8}.assignment-status-btn.insufficient.active{background:#f59e0b;border-color:#f59e0b;color:#fff}.assignment-status-btn.not-submitted{border-color:#fca5a5;color:#dc2626}.assignment-status-btn.not-submitted:hover:not(:disabled){background:#fef2f2}.assignment-status-btn.not-submitted.active{background:#ef4444;border-color:#ef4444;color:#fff}.assignment-status-btn.exempt{border-color:#d1d5db;color:#374151;background:#f3f4f6}.assignment-status-btn.exempt:hover{background:#e5e7eb}.bulk-submit-btn{margin-top:4px;padding:2px 6px;align-self:center;border:1px solid #86efac;border-radius:4px;font-size:.65rem;font-weight:500;color:#16a34a;background:#f0fdf4;cursor:pointer;transition:all .15s}.bulk-submit-btn:hover{background:#dcfce7;border-color:#10b981}.bulk-submit-btn.active{background:#10b981;border-color:#10b981;color:#fff}.bulk-submit-btn.active:hover{background:#059669;border-color:#059669}.assignment-combined-row{display:flex;align-items:center;justify-content:center;gap:4px}.assignment-combined-row .learning-score-input.small{width:50px;flex-shrink:0}.assignment-note-input{width:70%;min-width:180px;margin-top:2px;padding:4px 6px;font-size:.78rem;border:1px solid #f59e0b;border-radius:3px;outline:none;box-sizing:border-box}.assignment-note-input:focus{border-color:#d97706;box-shadow:0 0 0 1px #fbbf2480}.assignment-note-print{display:none}.assignment-note-input::placeholder{color:#93b4d8}.learning-score-input.small{width:60px;padding:4px 2px;font-size:.8rem;text-align:center}.learning-score-input.small::placeholder{font-size:.7rem}.learning-score-input.small.not-submitted-text{display:inline-flex;align-items:center;justify-content:center;color:#e53e3e;font-size:.7rem;font-weight:500;background:#fff5f5;border:1px solid #feb2b2;border-radius:4px;cursor:default}@media(max-width:600px){.learning-assignment-row{flex-direction:column;gap:3px}.learning-assignment-status-buttons{gap:2px}.assignment-status-btn{padding:3px 5px;font-size:.6rem}.learning-score-input.small{width:45px;font-size:.75rem}}.learning-consultation-tab{padding:16px 0}.consultation-layout{display:grid;grid-template-columns:240px 1fr;gap:20px;min-height:400px}.consultation-student-list{background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden}.consultation-list-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f4f7fc;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem;color:#1e293b}.consultation-count{font-weight:400;color:#64748b;font-size:.85rem}.consultation-list-body{max-height:500px;overflow-y:auto}.consultation-student-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 16px;border:none;border-bottom:1px solid #f0f0f0;background:#fff;cursor:pointer;text-align:left;transition:background .15s}.consultation-student-item:hover{background:#f6f8fd}.consultation-student-item.active{background:#e4ecf7}.consultation-student-item .student-name{font-weight:500;color:#1e293b;font-size:.9rem}.consultation-student-item .student-course{font-size:.75rem;color:#6b7280}.consultation-content{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px}.consultation-placeholder{display:flex;align-items:center;justify-content:center;height:200px;color:#6b7280;font-size:.95rem}.consultation-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:16px}.consultation-student-info{display:flex;align-items:center;gap:12px}.consultation-student-info .student-name{font-size:1.1rem;font-weight:600;color:#1e293b}.consultation-student-info .student-meta{font-size:.85rem;color:#64748b}.btn-add-consultation{padding:8px 16px;border:1px solid var(--accent);background:#fff;color:var(--accent);border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-add-consultation:hover{background:var(--accent);color:#fff}.consultation-form{background:#f6f8fd;border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:20px}.consultation-form .form-row{margin-bottom:14px}.consultation-form .form-row:last-child{margin-bottom:0}.consultation-form .form-row>label{display:block;margin-bottom:6px;font-size:.85rem;font-weight:500;color:#475569}.consultation-form .radio-group{display:flex;gap:16px}.consultation-form .radio-label{display:flex;align-items:center;gap:6px;font-size:.9rem;cursor:pointer;color:#1e293b}.consultation-form .radio-label input{margin:0}.consultation-form select{width:100%;max-width:200px;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;background:#fff}.consultation-form textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;resize:vertical;font-family:inherit}.consultation-form textarea:focus,.consultation-form select:focus{outline:none;border-color:var(--accent)}.consultation-form .checkbox-row{display:flex;align-items:center;gap:20px}.consultation-form .checkbox-row .checkbox-label{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;font-weight:400;cursor:pointer;color:#475569;margin-bottom:0}.consultation-form .checkbox-label input{margin:0}.consultation-form .form-actions{display:flex;justify-content:flex-end;margin-top:16px}.consultation-form .btn-save{padding:10px 24px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s}.consultation-form .btn-save:hover{background:#156654}.consultation-form .btn-save:disabled{background:#ccc;cursor:not-allowed}.consultation-history{margin-top:16px}.history-header{font-weight:600;font-size:.95rem;color:#1e293b;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:12px}.consultation-loading,.consultation-empty{text-align:center;padding:40px;color:#6b7280;font-size:.9rem}.consultation-item{padding:14px;border:1px solid #e5e5e5;border-radius:8px;margin-bottom:10px;background:#fff}.consultation-item.important{border-left:3px solid #3b82f6;background:#f5f8ff}.consultation-item-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.consultation-type{padding:3px 10px;background:#e8f0fe;color:var(--accent);border-radius:4px;font-size:.8rem;font-weight:500}.consultation-target{padding:3px 10px;background:#f0f0f0;color:#64748b;border-radius:4px;font-size:.8rem}.important-badge{padding:3px 8px;background:#fef3c7;color:#b45309;border-radius:4px;font-size:.75rem;font-weight:600}.consultation-date{font-size:.8rem;color:#6b7280}.consultation-item-actions{margin-left:auto;display:flex;gap:4px}.btn-edit-consultation,.btn-delete-consultation{width:26px;height:26px;border:1px solid #e5e5e5;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-edit-consultation{color:#64748b}.btn-edit-consultation:hover{background:#f0f0f0;border-color:#ccc;color:#1e293b}.btn-delete-consultation{color:#6b7280}.btn-delete-consultation:hover{background:#f3f4f6;border-color:#d1d5db;color:#4b5563}.consultation-item-content{font-size:.9rem;color:#1e293b;line-height:1.6;white-space:pre-wrap}.consultation-item-footer{margin-top:10px;font-size:.8rem;color:#6b7280}.consultation-author{color:#64748b}.consultation-course{color:#6b7280;font-weight:500}@media(max-width:900px){.consultation-layout{grid-template-columns:1fr}.consultation-list-body{max-height:200px}}.result-sms-tab{padding:0}.result-sms-topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:#f4f7fc;border:1px solid var(--border);border-radius:8px 8px 0 0;gap:12px;flex-wrap:wrap}.result-sms-topbar-left{display:flex;align-items:center}.result-sms-notice{font-size:.85rem;color:#854d0e;background:#fef9c3;padding:4px 10px;border-radius:4px}.result-sms-topbar-right{display:flex;align-items:center;gap:10px}.result-sms-target-label{font-size:.85rem;color:#475569;font-weight:600;margin-right:8px}.result-sms-target-btns{display:flex;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden}.result-sms-target-btn{padding:5px 14px;border:none;background:#fff;color:#475569;font-size:.82rem;cursor:pointer;border-right:1px solid var(--border)}.result-sms-target-btn:last-child{border-right:none}.result-sms-target-btn.active{background:#1e40af;color:#fff;font-weight:600}.result-sms-btn-send-top{padding:6px 18px;border:none;border-radius:6px;background:#dc2626;color:#fff;font-size:.88rem;font-weight:600;cursor:pointer}.result-sms-btn-send-top:hover{background:#b91c1c}.result-sms-btn-send-top:disabled{opacity:.5;cursor:not-allowed}.result-sms-options{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;border:1px solid var(--border);border-top:none;background:#fff}.result-sms-options-left{display:flex;gap:6px}.result-sms-btn-outline{padding:5px 14px;border:1px solid var(--border);border-radius:6px;background:#fff;color:#475569;font-size:.82rem;cursor:pointer}.result-sms-btn-outline:hover{background:#f5f5f5}.result-sms-btn-outline:disabled{opacity:.5;cursor:not-allowed}.result-sms-date-display{font-size:.88rem;color:#1e293b;font-weight:500}.result-sms-result{padding:10px 16px;font-size:.88rem;border:1px solid var(--border);border-top:none}.result-sms-result.success{background:#dcfce7;color:#166534}.result-sms-result.error{background:#fee2e2;color:#991b1b}.result-sms-table-wrap{border:1px solid var(--border);border-top:none;border-radius:0 0 8px 8px;overflow-x:auto}.result-sms-th-check{width:60px}.result-sms-th-name{width:90px}.result-sms-th-school{width:100px}.result-sms-th-attendance{width:50px}.result-sms-th-message{min-width:320px}.result-sms-th-comment{min-width:140px}.result-sms-th-sub{font-size:.75rem;font-weight:400;color:#dc2626;margin-top:2px}.result-sms-template-select{margin-top:6px;padding:4px 6px;border:1px solid #ccc;border-radius:4px;font-size:.78rem;max-width:160px}.result-sms-check-all{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:.82rem}.result-sms-comment-all-check{display:flex;align-items:center;gap:4px;font-size:.75rem;font-weight:400;color:#475569;cursor:pointer;margin-top:4px}.result-sms-table tbody tr.selected{background:#f0f7ff}.result-sms-td-check{text-align:center;vertical-align:middle}.result-sms-td-name{font-weight:600;color:#1e293b;white-space:nowrap;vertical-align:middle}.result-sms-td-school{color:#475569;font-size:.82rem;white-space:nowrap;vertical-align:middle}.result-sms-td-attendance{text-align:center;vertical-align:middle}.result-sms-attendance-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600;white-space:nowrap}.result-sms-msg-input{width:100%;padding:8px;border:1px solid #b3cde8;border-radius:4px;font-size:.82rem;font-family:inherit;line-height:1.45;resize:vertical;background:#f8faff}.result-sms-msg-input:focus{outline:none;border-color:var(--primary)}.result-sms-msg-info{display:flex;gap:6px;margin-top:3px;font-size:.72rem;color:#64748b}.result-sms-msg-type{background:#dce5f4;color:#6b5a3e;padding:0 5px;border-radius:3px;font-weight:600}.result-sms-comment-input{width:100%;padding:8px;border:1px solid #b3cde8;border-radius:4px;font-size:.82rem;font-family:inherit;line-height:1.45;resize:vertical}.result-sms-comment-input:focus{outline:none;border-color:var(--primary)}.result-sms-comment-hint{font-size:.72rem;color:#94a3b8;margin-top:3px}.result-sms-loading{text-align:center;padding:40px;color:#64748b}.result-sms-modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.result-sms-modal{background:#fff;border-radius:12px;padding:24px;width:380px;max-width:90vw}.result-sms-modal h4{margin:0 0 16px;font-size:1.05rem;color:#1e293b}.result-sms-modal-body{display:flex;flex-direction:column;gap:12px}.result-sms-modal-body label{display:flex;flex-direction:column;gap:4px;font-size:.88rem;color:#475569}.result-sms-modal-body input[type=date]{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.9rem}.result-sms-time-row{display:flex;gap:8px}.result-sms-time-row select{flex:1;padding:8px;border:1px solid var(--border);border-radius:6px;font-size:.88rem}.result-sms-modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.result-sms-modal-footer button{padding:8px 18px;border:1px solid var(--border);border-radius:6px;background:#fff;color:#475569;cursor:pointer;font-size:.88rem}.result-sms-btn-send{padding:8px 18px;border:none;border-radius:6px;background:var(--primary);color:#fff;font-size:.88rem;font-weight:600;cursor:pointer}.result-sms-btn-send:hover{opacity:.9}.legacy-form-title{background:transparent;border:none;border-bottom:1px solid #e8edf3;padding:8px 4px 12px;font-size:.9375rem;font-weight:600;color:#334155}.legacy-form-grid{display:flex;flex-direction:column;gap:10px}.legacy-form-row{display:grid;gap:8px 10px;justify-content:start}.legacy-form-row-1{grid-template-columns:120px 100px 80px 80px 185px 185px 125px}.legacy-form-row-2{grid-template-columns:150px 100px 185px 185px 125px;align-items:start}.legacy-photo-fields-wrapper{display:flex;gap:16px;align-items:stretch}.legacy-photo-side{width:180px;min-height:100%;flex-shrink:0}.legacy-photo-fields-right{flex:1;max-width:520px;display:flex;flex-direction:column;gap:8px}.legacy-form-row-3{grid-template-columns:200px 1fr;align-items:end}.legacy-form-row-4{grid-template-columns:3fr 1fr}.legacy-form-row-4>label{min-width:0;overflow:hidden}.legacy-form-row-4 .legacy-input{box-sizing:border-box;max-width:100%;overflow:hidden;text-overflow:ellipsis}.legacy-form-grid input.legacy-input-teacher,.legacy-form-grid input.legacy-input-teacher-2{width:100%;max-width:100%}.legacy-form-grid label{display:grid;gap:6px;font-size:.8125rem;font-weight:500;width:100%;max-width:none;color:#475569}.legacy-form-grid input{border:1px solid #cbd5e1;background:#fff;height:36px;padding:8px 14px;width:100%;box-sizing:border-box;border-radius:8px;font-size:.875rem;color:#1e293b;transition:border-color .15s ease,box-shadow .15s ease}.legacy-form-grid input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.legacy-input-name{height:40px}.legacy-form-grid button{border:1px solid #cbd5e1;background:#fff;height:36px;font-size:.875rem;border-radius:8px;cursor:pointer;transition:all .15s ease}.legacy-form-grid button:hover{background:#e8edf3}.legacy-input{width:100%}.pw-reset-btn{padding:4px 8px;font-size:11px;font-weight:600;color:#dc2626;background:#fff;border:1px solid #fca5a5;border-radius:4px;cursor:pointer;white-space:nowrap;line-height:1;height:28px}.pw-reset-btn:hover{background:#fef2f2;border-color:#dc2626}.legacy-pw-display{font-size:.72rem;color:#6b7280;margin-top:2px;padding-left:2px}.legacy-pw-display span{font-weight:600;color:#374151}.legacy-gender{width:100%}.legacy-gender-box{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;height:36px;padding:0;box-sizing:border-box}.legacy-gender-box label{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:.875rem;color:#475569;cursor:pointer}.legacy-gender-box input[type=radio]{margin:0;width:16px;height:16px}.legacy-label-spacer{display:block;height:.7rem}.legacy-email-wide{grid-column:1 / -1;max-width:586px}.legacy-sibling-discount{display:flex;align-items:center;flex-shrink:0}.sibling-badge-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;font-size:.8rem;line-height:1;cursor:pointer;transition:all .15s ease;white-space:nowrap}.sibling-badge-btn.eligible{background:#dcfce7;border:1px solid #86efac}.sibling-badge-btn.eligible:hover{background:#bbf7d0;border-color:#4ade80}.sibling-badge-btn.not-eligible{background:#fee2e2;border:1px solid #fca5a5}.sibling-badge-btn.not-eligible:hover{background:#fecaca;border-color:#f87171}.sibling-badge-btn.none{background:#f5f5f5;border:1px solid #e5e5e5;cursor:default}.sibling-badge-btn .sibling-label{font-weight:600;color:#374151}.sibling-badge-btn.eligible .sibling-status{color:#166534;font-weight:600}.sibling-badge-btn.not-eligible .sibling-status{color:#991b1b;font-weight:600}.sibling-badge-btn.none .sibling-status{color:#64748b}.sibling-badge-btn .sibling-names{color:#374151;font-size:.75rem;overflow:hidden;text-overflow:ellipsis}.sibling-modal{background:#fff;border-radius:12px;width:520px;max-width:90vw;box-shadow:0 20px 40px #0000004d}.sibling-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:1rem;color:#374151}.sibling-modal-body{padding:20px}.sibling-modal-status{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#f9fafb;border-radius:8px;margin-bottom:12px}.sibling-modal-label{color:#374151;font-size:.875rem}.sibling-modal-value{font-weight:600;font-size:.95rem}.sibling-modal-value.eligible{color:#166534}.sibling-modal-value.not-eligible{color:#991b1b}.sibling-modal-reason{padding:8px 12px;background:#fee2e2;border-radius:6px;font-size:.8rem;color:#991b1b;margin-bottom:16px}.sibling-modal-list{margin-bottom:16px}.sibling-modal-list-title{font-weight:600;font-size:.875rem;color:#374151;margin-bottom:8px}.sibling-modal-list-header{display:grid;grid-template-columns:60px 1fr 90px;gap:8px;padding:8px 12px;background:#f3f4f6;border-radius:6px 6px 0 0;font-size:.75rem;color:#374151;font-weight:500}.sibling-modal-list-header.four-cols{grid-template-columns:60px 1fr 90px 60px}.sibling-modal-list-row{display:grid;grid-template-columns:60px 1fr 90px;gap:8px;padding:10px 12px;border-bottom:1px solid #e5e7eb;font-size:.85rem;color:#374151}.sibling-modal-list-row.four-cols{grid-template-columns:60px 1fr 90px 60px}.sibling-modal-list-row.full-enroll{background:#f0fdf4}.sibling-modal-list-row.mid-enroll{background:#fef2f2}.enroll-status{font-size:.75rem;font-weight:500;text-align:center}.enroll-status.full{color:#16a34a}.enroll-status.mid{color:#dc2626}.enroll-status.not-enrolled{color:#666;font-style:italic}.sibling-modal-list-row span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sibling-modal-list-row:last-child{border-bottom:none;border-radius:0 0 6px 6px}.sibling-modal-toggle{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f9fafb;border-radius:8px}.sibling-modal-toggle>span{font-size:.875rem;color:#374151}.sibling-toggle-btn{padding:8px 20px;border-radius:20px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s ease;background:#e5e7eb;border:none;color:#374151}.sibling-toggle-btn.active{background:#dcfce7;color:#166534;border:1px solid #86efac}.sibling-toggle-btn:hover{transform:scale(1.02)}.sibling-modal-empty{text-align:center;padding:24px;color:#374151}.sibling-modal-empty p{margin:0}.sibling-modal-empty-desc{font-size:.8rem;margin-top:8px;color:#374151}.sibling-modal-footer{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid #e5e7eb}.sibling-modal-footer button{padding:8px 24px;border-radius:6px;font-size:.875rem;background:#f3f4f6;border:1px solid #d1d5db;color:#374151;cursor:pointer}.sibling-modal-footer button:hover{background:#e5e7eb}.withdrawal-modal{background:#fff;border-radius:8px;width:420px;max-width:90vw;box-shadow:0 4px 20px #00000026}.withdrawal-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:1.1rem;color:#111827}.withdrawal-modal-body{padding:20px;display:flex;flex-direction:column;gap:16px}.withdrawal-student-info,.withdrawal-course-info{display:flex;gap:8px;align-items:center}.withdrawal-label{font-size:.9rem;color:#374151;font-weight:500;min-width:80px}.withdrawal-value{font-size:.95rem;color:#111827;font-weight:500}.withdrawal-form-group{display:flex;flex-direction:column;gap:6px}.withdrawal-date-input{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem;color:#111827}.withdrawal-date-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.withdrawal-reason-select{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem;min-height:42px;color:#111827;background:#fff;cursor:pointer}.withdrawal-reason-select:focus{outline:none;border-color:#3b82f6}.withdrawal-required{color:#dc2626;font-weight:600}.withdrawal-invalid{border-color:#dc2626;background-color:#fef2f2}.withdrawal-comment-input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem;color:#111827;background:#fff;resize:vertical;min-height:80px;font-family:inherit;box-sizing:border-box}.withdrawal-comment-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.withdrawal-comment-input::placeholder{color:#9ca3af}.withdrawal-refund-section{background:#f9fafb;border-radius:8px;padding:16px;margin-top:8px}.withdrawal-refund-title{font-weight:600;font-size:.95rem;color:#374151;margin-bottom:12px}.withdrawal-refund-loading{text-align:center;padding:20px;color:#374151}.withdrawal-refund-info{display:flex;flex-direction:column;gap:8px}.withdrawal-refund-row{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;color:#374151}.withdrawal-refund-row.highlight{font-weight:600;font-size:1rem;color:#111827;padding-top:8px}.withdrawal-refund-row .refund-amount,.history-col-amount.refund-amount{color:#dc2626;font-weight:600}.withdrawal-refund-row .no-refund{color:#374151}.withdrawal-refund-divider{height:1px;background:#e5e7eb;margin:4px 0}.withdrawal-refund-reason{font-size:.85rem;color:#374151;text-align:right;margin-top:4px}.withdrawal-refund-empty{text-align:center;padding:16px;color:#374151;font-size:.9rem}.withdrawal-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid #e5e7eb}.withdrawal-cancel-btn{padding:10px 20px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:.95rem;cursor:pointer}.withdrawal-cancel-btn:hover{background:#f3f4f6}.withdrawal-confirm-btn{padding:10px 20px;border:none;border-radius:6px;background:#dc2626;color:#fff;font-size:.95rem;font-weight:500;cursor:pointer}.withdrawal-confirm-btn:hover{background:#b91c1c}.withdrawal-confirm-btn:disabled{background:#9ca3af;cursor:not-allowed}.enroll-confirm-modal{background:#fff;border-radius:12px;width:440px;max-width:90vw;box-shadow:0 8px 32px #0003}.enroll-confirm-modal-header{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:1.15rem;color:#111827;background:linear-gradient(135deg,#f4f7fc,#fff);border-radius:12px 12px 0 0}.enroll-confirm-modal-body{padding:28px 24px;display:flex;flex-direction:column;gap:24px}.enroll-confirm-info{display:flex;flex-direction:column;gap:12px;background:#f9fafb;padding:16px;border-radius:8px;border:1px solid #e5e7eb}.enroll-confirm-row{display:flex;align-items:center;gap:12px}.enroll-confirm-label{font-size:.9rem;color:#6b7280;font-weight:500;min-width:80px}.enroll-confirm-value{font-size:1rem;color:#111827;font-weight:600}.enroll-confirm-value.highlight{color:#1e40af;background:#dbeafe;padding:4px 10px;border-radius:4px;font-size:.95rem}.enroll-confirm-section{margin-top:12px;padding:12px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.enroll-confirm-section-title{font-size:.85rem;font-weight:700;color:#1e40af;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #e5e7eb}.enroll-confirm-detail-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:.85rem;color:#374151}.enroll-confirm-detail-label{color:#475569}.enroll-confirm-detail-value{color:#111;text-align:right}.enroll-confirm-total{margin-top:6px;padding-top:6px;border-top:1px dashed #ccc;font-size:.9rem}.enroll-confirm-message{text-align:center;font-size:1rem;color:#374151;padding:8px 0}.enroll-confirm-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 12px 12px}.legacy-memo-short{display:grid;gap:4px}.legacy-memo-short-label{font-size:.875rem;color:#374151}.legacy-memo-short-row{display:flex;align-items:center;gap:8px}.legacy-memo-short-row .legacy-input{width:100%;height:36px}.legacy-memo-star{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:.875rem;cursor:pointer;width:32px;height:32px;justify-self:start}.legacy-memo-star input{position:absolute;opacity:0;pointer-events:none}.legacy-memo-star span{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #d1d5db;background:#fff;font-size:.875rem;line-height:1;color:#ef4444;border-radius:6px;transition:all .15s ease}.legacy-memo-star span:hover{background:#fef2f2}.legacy-memo-star input:checked+span{color:#dc2626;border-color:#fca5a5;background:#fee2e2}.legacy-memo-star-rating{display:inline-flex;align-items:center;gap:1px;margin-right:6px;flex-shrink:0}.legacy-memo-star-btn{cursor:pointer;font-size:1.1rem;color:#d1d5db;transition:color .15s;-webkit-user-select:none;user-select:none;line-height:1}.legacy-memo-star-btn:hover{color:#fbbf24}.legacy-memo-star-btn.active{color:#dc2626}.legacy-spacer{min-height:1px}.legacy-memo{display:grid;grid-template-columns:140px 1fr;gap:6px;min-width:0}.legacy-row-with-photo{display:flex;gap:16px;align-items:stretch}.legacy-photo-stack{display:grid;gap:6px;align-self:start}.legacy-photo{border:1px solid #e5e7eb;background:#f9fafb;height:180px;display:flex;align-items:center;justify-content:center;font-size:.875rem;border-radius:8px;color:#374151}.legacy-photo-inline{width:120px;height:100%;min-height:80px}.legacy-photo-side{height:auto}.legacy-action-photo-row{display:flex;gap:16px;align-items:start}.legacy-photo-tab{border:1px solid #d1d5db;background:#fff;font-size:.875rem;padding:6px 12px;text-align:center;cursor:pointer;border-radius:6px;transition:all .15s ease;white-space:nowrap}.legacy-photo-tab:hover{background:#f3f4f6}.legacy-memo-container{display:flex;flex-direction:column;gap:8px;min-width:0;overflow:visible}.legacy-memo-input-row{display:flex;gap:8px}.legacy-memo-new-input{flex:1;border:1px solid #d1d5db;background:#fff;min-height:50px;padding:8px 12px;border-radius:6px;font-size:.875rem;resize:vertical;font-family:inherit}.legacy-memo-new-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.legacy-memo-add-btn{flex-shrink:0;border:none;background:#3b82f6;color:#fff;padding:8px 16px;border-radius:6px;font-size:.875rem;cursor:pointer;transition:all .15s ease}.legacy-memo-add-btn:hover{background:#2563eb}.legacy-note{border:1px solid #fde68a;background:#fef9c3;height:100px;resize:vertical;border-radius:8px;padding:12px;font-size:.875rem}.memo-list{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;border:1px solid #e5e7eb;border-radius:8px;padding:6px;background:#fefce8}.memo-list-empty{padding:12px;text-align:center;color:#9ca3af;font-size:.825rem}.memo-entry{background:#fff;border:1px solid #fde68a;border-radius:6px;padding:6px 8px;font-size:.8rem}.memo-entry-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.memo-entry-meta{font-size:.7rem;color:#6b7280}.memo-entry-actions{display:flex;gap:3px}.memo-entry-content{color:#374151;white-space:pre-wrap;word-break:break-word}.memo-entry-edit{display:flex;flex-direction:column;gap:4px}.memo-entry-edit textarea{width:100%;border:1px solid #3b82f6;border-radius:4px;padding:4px 6px;font-size:.8rem;font-family:inherit;resize:vertical}.memo-entry-edit-actions{display:flex;gap:4px;justify-content:flex-end}.legacy-form-actions,.legacy-form-actions-top,.legacy-form-actions-bar{display:flex;gap:8px;align-items:center}.legacy-form-actions-bar{margin:8px 0;padding:8px 12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px}.legacy-form-actions button,.legacy-form-actions-top button,.legacy-form-actions-bar button{font-size:.875rem;padding:8px 16px;border:1px solid #d1d5db;background:#fff;border-radius:6px;cursor:pointer;transition:all .15s}.legacy-form-actions button:hover,.legacy-form-actions-top button:hover,.legacy-form-actions-bar button:hover{background:#f3f4f6;border-color:#9ca3af}.legacy-form-actions-bar .message{margin-left:auto;font-size:.85rem}.legacy-form-actions-bar .message.success{color:#059669}.legacy-form-actions-bar .message.error{color:#dc2626}.legacy-right{grid-template-columns:minmax(0,1.3fr) minmax(0,1.2fr) minmax(0,.9fr);grid-template-rows:auto auto auto;align-items:start}.legacy-right>.legacy-right-stack{grid-column:1;grid-row:1 / 3;align-self:start}.legacy-right>.legacy-class-wrapper{grid-column:2;grid-row:1 / 3;align-self:start;height:calc(100vh - 120px)!important}.legacy-right>.legacy-class-students-panel{grid-column:3;grid-row:1 / 3;align-self:start;height:calc(100vh - 120px)!important;overflow:hidden;display:flex;flex-direction:column}.legacy-right>.legacy-consultation-panel-bottom{grid-column:1 / -1;grid-row:3}.legacy-right .legacy-panel{gap:8px;padding:12px}.legacy-right-stack{display:grid;gap:8px;grid-template-rows:auto auto;min-height:0;overflow:visible}.legacy-right .legacy-panel-title{margin:0}.legacy-right .legacy-panel-title+.legacy-panel-body,.legacy-right .legacy-panel-title+.legacy-panel-body.small{border-top:0;margin:0}.legacy-right .legacy-panel-body:empty,.legacy-right .legacy-panel-body.small:empty{display:none}.legacy-right .legacy-panel{min-height:180px;height:100%;box-sizing:border-box}.legacy-class-students-panel{display:flex;flex-direction:column;align-content:start;position:relative;box-sizing:border-box}.legacy-class-students-panel .legacy-panel-title{flex-shrink:0}.legacy-class-students-panel .legacy-panel-body:empty{display:none}.legacy-class-students-panel .legacy-panel-body.small{box-sizing:border-box;flex:0 1 auto;min-height:0;overflow-y:auto}.legacy-class-students-body{display:flex;flex-direction:column;min-height:0;flex:1}.legacy-teacher-list-overlay{position:absolute;inset:28px 0 0;background:#fff;border-top:1px solid #e5e7eb;box-shadow:0 4px 12px #0000001a;border-radius:0 0 8px 8px;z-index:2;display:flex;flex-direction:column}.legacy-teacher-list-overlay .legacy-panel-body.small{flex:1;min-height:0;max-height:none;overflow:auto}.legacy-class-students-panel .legacy-list-row{min-height:32px}.student-row-with-info{display:flex!important;align-items:center;justify-content:space-between;padding:0!important}.student-row-with-info .student-name-btn{flex:1;background:none;border:none;text-align:left;padding:8px 10px;font-size:inherit;color:inherit;cursor:pointer}.student-row-with-info .student-info-btn{background:none;border:none;color:#9ca3af;font-size:1rem;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .15s ease}.student-row-with-info .student-info-btn:hover{background:#e0f2fe;color:#0284c7}.student-quick-modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .15s ease}.student-quick-modal{background:#fff;border-radius:16px;box-shadow:0 20px 50px #00000040;min-width:320px;max-width:400px;animation:slideUp .2s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.student-quick-modal-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:linear-gradient(135deg,#f1f5f9,#e8edf3);border-bottom:1px solid #e5e7eb;border-radius:16px 16px 0 0}.student-quick-name{font-size:1.1rem;font-weight:600;color:#1f2937}.student-quick-close{margin-left:auto;background:none;border:none;font-size:1.5rem;color:#9ca3af;cursor:pointer;padding:0;line-height:1}.student-quick-close:hover{color:#374151}.student-status-badge{padding:3px 8px;border-radius:12px;font-size:.7rem;font-weight:600}.student-status-badge.active{background:#dcfce7;color:#166534}.student-status-badge.inactive{background:#fee2e2;color:#991b1b}.student-quick-modal-body{padding:20px;display:flex;flex-direction:column;gap:12px}.student-quick-row{display:flex;align-items:flex-start;gap:12px}.student-quick-label{font-size:.85rem;color:#6b7280;min-width:80px;flex-shrink:0}.student-quick-value{font-size:.95rem;color:#1f2937;word-break:break-all}.student-quick-value.course{color:#2563eb;line-height:1.5}.student-quick-value.memo{color:#92400e;background:#fef3c7;padding:6px 10px;border-radius:6px;line-height:1.4}.student-quick-modal-footer{padding:16px 20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}.btn-select-student{padding:10px 20px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-select-student:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px)}.legacy-consultation-panel{display:flex;flex-direction:column;gap:8px;min-height:180px}.legacy-consultation-body{padding:8px;display:flex;flex-direction:column;gap:8px}.consultation-form-row{display:flex;align-items:center;gap:8px}.consultation-label{font-size:.8rem;color:#374151;min-width:40px}.consultation-radio-group{display:flex;gap:12px}.consultation-radio-group label{display:flex;align-items:center;gap:4px;font-size:.8rem;cursor:pointer}.consultation-radio-group input[type=radio]{margin:0;cursor:pointer}.consultation-date-input{padding:5px 8px;border:1px solid #cbd5e1;border-radius:8px;font-size:.8rem;background:#fff}.consultation-select{flex:1;padding:6px 8px;border:1px solid #cbd5e1;border-radius:8px;font-size:.8rem;background:#fff}.consultation-textarea{width:100%;padding:8px;border:1px solid #cbd5e1;border-radius:8px;font-size:.8rem;resize:vertical;min-height:60px}.consultation-textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #3b82f61f}.consultation-checkboxes{gap:16px}.consultation-checkbox{display:flex;align-items:center;gap:4px;font-size:.8rem;cursor:pointer}.consultation-checkbox input[type=checkbox]{margin:0;cursor:pointer}.consultation-form-actions{display:flex;gap:8px;margin-top:4px}.consultation-btn-primary{flex:1;padding:8px 16px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .2s}.consultation-btn-primary:hover{background:#1d4ed8}.consultation-btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.consultation-btn-secondary{flex:1;padding:8px 16px;background:#fff;color:#374151;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.consultation-btn-secondary:hover{background:#f3f4f6;border-color:#9ca3af}.legacy-side-history{grid-column:1;grid-row:2;display:flex;flex-direction:column;gap:4px;min-height:0;height:auto;justify-content:flex-start;flex:0 0 auto;padding:4px 0}.legacy-side-history .legacy-history-tabs.compact{display:flex;flex-wrap:wrap;gap:4px;padding:6px;background:#f1f5f9;border-radius:8px}.legacy-side-history .legacy-history-tabs.compact button{padding:6px 10px;font-size:.75rem;font-weight:500;border:1px solid #cbd5e1;background:#fff;border-radius:8px;cursor:pointer;transition:all .15s}.legacy-side-history .legacy-history-tabs.compact button:hover{background:#e8edf3}.legacy-side-history .legacy-history-tabs.compact button.active{background:#2563eb;color:#fff;border-color:#2563eb}.legacy-side-history .legacy-action-buttons.compact{display:flex;gap:4px;padding:6px}.legacy-side-history .legacy-action-buttons.compact button{padding:6px 10px;font-size:.75rem;border:1px solid #e5e7eb;background:#fff;border-radius:6px;cursor:pointer;transition:all .15s}.legacy-side-history .legacy-action-buttons.compact button:hover{background:#f3f4f6;border-color:#d1d5db}.legacy-consultation-panel-bottom{display:flex;flex-direction:column;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.legacy-consultation-panel-bottom .legacy-panel-title{padding:8px 12px;background:#f1f5f9;border-bottom:1px solid #e8edf3;font-size:.85rem;font-weight:600;border-radius:8px 8px 0 0}.legacy-consultation-body-grid{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:12px;align-items:start}.legacy-consultation-body-grid .legacy-empty{grid-column:1 / -1;text-align:center;color:#9ca3af;padding:16px 0;font-size:.82rem}.consultation-left-col{display:flex;flex-direction:column;gap:8px}.consultation-left-col .consultation-form-row{display:flex;align-items:center;gap:8px}.consultation-left-col .consultation-label{min-width:36px;font-size:.8rem}.consultation-left-col .consultation-select{flex:1;min-width:100px}.consultation-courses-row{flex-wrap:wrap}.consultation-courses-list{display:flex;flex-wrap:wrap;gap:4px 6px;flex:1}.consultation-course-checkbox{display:flex;align-items:center;gap:4px;font-size:.75rem;color:#374151;cursor:pointer;padding:2px 6px;background:#f3f4f6;border-radius:4px;white-space:nowrap}.consultation-course-checkbox:hover{background:#e5e7eb}.consultation-course-checkbox input[type=checkbox]{margin:0;width:14px;height:14px}.consultation-center-col{display:flex;align-items:stretch}.consultation-center-col .consultation-textarea{width:100%;min-height:160px;resize:vertical}.consultation-right-col{display:flex;flex-direction:column;gap:8px;justify-content:center}.consultation-right-row{display:flex;align-items:center;gap:10px}.consultation-right-row .consultation-checkbox{min-width:85px}.consultation-right-row .consultation-checkbox span{font-size:.8rem}.consultation-right-row .btn--primary,.consultation-right-row .btn--secondary{padding:7px 16px;font-size:.82rem;min-width:72px}.consultation-history-inline{padding:12px;max-height:400px;overflow-y:auto}.consultation-history-inline .consultation-history-list{display:flex;flex-direction:column;gap:10px}.consultation-history-modal{background:#fff;border-radius:14px;width:92%;max-width:780px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 24px 48px #0000002e,0 0 0 1px #0000000d;overflow:hidden}.consultation-history-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#1e40af,#3b82f6);color:#fff;font-weight:600;font-size:1rem}.consultation-history-header .legacy-modal-close{color:#fff;opacity:.8}.consultation-history-header .legacy-modal-close:hover{opacity:1}.consultation-history-body{flex:1;overflow-y:auto;padding:20px;max-height:600px;background:#f1f5f9}.consultation-history-loading,.consultation-history-empty{text-align:center;color:#6b7280;padding:40px 20px}.consultation-history-list{display:flex;flex-direction:column;gap:12px}.consultation-history-item{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 16px;box-shadow:0 1px 3px #0000000a;transition:box-shadow .15s}.consultation-history-item:hover{box-shadow:0 2px 8px #00000014}.consultation-history-item.important{border-color:#fbbf24;background:#fffdf5;border-left:3px solid #f59e0b}.consultation-history-item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px;flex-wrap:wrap;gap:8px}.consultation-history-badges{display:flex;flex-wrap:wrap;gap:4px}.consultation-badge{padding:3px 10px;border-radius:20px;font-size:.7rem;font-weight:600;letter-spacing:.01em}.consultation-badge.target{background:#dbeafe;color:#1e40af}.consultation-badge.type{background:#f3e8ff;color:#6b21a8}.consultation-badge.important{background:#fef3c7;color:#92400e}.consultation-badge.teacher{background:#dcfce7;color:#166534}.consultation-history-date{font-size:.72rem;color:#6b7280;white-space:nowrap}.consultation-history-content{font-size:.85rem;color:#1f2937;line-height:1.6;white-space:pre-wrap;margin-bottom:10px}.consultation-history-meta{display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:#6b7280;padding-top:8px;border-top:1px solid #f3f4f6}.consultation-history-course{color:#6b7280;font-weight:500;text-align:right}.consultation-history-meta-right{display:flex;align-items:center;gap:6px}.consultation-edit-form{display:flex;flex-direction:column;gap:8px;padding:4px 0}.consultation-edit-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.consultation-edit-row select{padding:4px 8px;font-size:12px;border:1px solid #d1d5db;border-radius:4px}.consultation-edit-form textarea{padding:8px;font-size:13px;border:1px solid #d1d5db;border-radius:4px;font-family:inherit}.consultation-edit-actions{display:flex;gap:6px;justify-content:flex-end}.consultation-delete-btn{padding:2px 8px;font-size:.7rem;color:#6b7280;background:transparent;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;transition:all .15s}.consultation-delete-btn:hover{background:#f3f4f6;color:#4b5563}.ch-scores-bar{display:flex;gap:6px;padding:8px 0;margin-bottom:8px;border-bottom:1px solid #e5e7eb}.ch-score-item{display:flex;align-items:center;gap:4px;background:#f0f4ff;border:1px solid #dbeafe;border-radius:6px;padding:4px 10px;font-size:.8rem}.ch-score-label{color:#6b7280;font-weight:500}.ch-score-value{color:#1e40af;font-weight:700;font-size:.85rem}.ch-test-info-accordion{margin-top:4px}.ch-test-info-accordion>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0;font-size:.82rem;color:#475569}.ch-test-info-accordion>summary::-webkit-details-marker{display:none}.ch-test-info-accordion>summary:before{content:"▶";font-size:.65rem;color:#94a3b8;transition:transform .15s}.ch-test-info-accordion[open]>summary:before{transform:rotate(90deg)}.ch-test-info-summary-title{font-weight:600;color:#1e40af;font-size:.82rem}.ch-test-info-summary-scores{color:#64748b;font-size:.78rem}.ch-test-info-summary-detail{color:#64748b;font-size:.78rem;border-left:1px solid #cbd5e1;padding-left:8px}.ch-test-info-summary-detail strong{color:#334155}.ch-test-info-card{background:linear-gradient(135deg,#f0f9ff,#f0f4ff);border:1px solid #bfdbfe;border-radius:8px;padding:12px 14px;margin-top:8px;margin-bottom:8px}.ch-test-info-title{font-size:.78rem;font-weight:600;color:#1e40af;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #bfdbfe;letter-spacing:.02em}.ch-test-info-date{font-size:.78rem;color:#6b7280;margin-bottom:8px}.ch-test-details{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;margin-top:8px}.ch-detail-row{display:flex;align-items:center;gap:6px;font-size:.8rem;padding:3px 0}.ch-detail-label{color:#6b7280;font-weight:500;min-width:52px}.ch-detail-label:after{content:""}.ch-detail-value{color:#1f2937;font-weight:600}.ch-table{width:100%;border-collapse:collapse;font-size:.8rem}.ch-table thead th{background:#f0f4ff;color:#475569;font-weight:600;font-size:.72rem;padding:6px 8px;border-bottom:2px solid #cbd5e1;text-align:left;white-space:nowrap}.ch-table tbody tr.ch-row{border-bottom:1px solid #e5e7eb;cursor:pointer;transition:background .1s}.ch-table tbody tr.ch-row:hover{background:#f8fafc}.ch-table tbody tr.ch-row-important{background:#fffdf5;border-left:3px solid #f59e0b}.ch-table tbody tr.ch-row-active{background:#eff6ff}.ch-table td{padding:5px 8px;vertical-align:middle;line-height:1.4}.ch-td-date{white-space:nowrap;color:#6b7280;font-size:.75rem;min-width:85px}.ch-td-type .consultation-badge.type{padding:2px 8px;font-size:.68rem}.ch-td-teacher{color:#16a34a;font-size:.72rem;font-weight:600;white-space:nowrap}.ch-td-writer{white-space:nowrap;font-size:.78rem;color:#1f2937}.ch-important-mark{color:#dc2626;font-weight:700;font-size:.72rem;margin-left:2px}.ch-td-content{color:#374151;font-size:.78rem;max-width:300px;position:relative}.ch-td-content-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-td-content-clickable{cursor:pointer;border-radius:4px;transition:background .15s;position:relative}.ch-td-content-clickable:hover{background:#eef2fb}.ch-tooltip-fixed{position:fixed;z-index:9999;background:#1e293b;color:#f1f5f9;font-size:.85rem;line-height:1.6;padding:10px 14px;border-radius:8px;max-width:460px;width:max-content;white-space:pre-wrap;word-break:break-word;box-shadow:0 4px 16px #00000040;pointer-events:none;transform:translateY(-100%) translateY(-8px)}.ch-tooltip-scores{display:flex;gap:8px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.15)}.ch-tooltip-score-item{display:flex;align-items:center;gap:4px}.ch-tooltip-score-label{font-size:.7rem;color:#94a3b8;font-weight:500}.ch-tooltip-score-value{font-size:.85rem;font-weight:700;color:#38bdf8}.memo-view-modal{background:#fff;border-radius:12px;width:480px;max-width:90vw;max-height:70vh;box-shadow:0 8px 32px #0000002e;overflow:hidden;display:flex;flex-direction:column}.memo-view-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #e2e8f0;font-weight:700;font-size:1rem;color:#1e293b}.memo-view-body{padding:16px 20px 20px;overflow-y:auto}.memo-view-meta{display:flex;gap:10px;font-size:.82rem;color:#64748b;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #f1f5f9}.memo-view-content{font-size:.9rem;color:#1e293b;line-height:1.7;white-space:pre-wrap;word-break:break-word}.ch-content-target{color:#1e40af;font-weight:600;margin-right:2px}.ch-td-actions{white-space:nowrap}.ch-td-actions .btn{margin-left:3px}.ch-td-actions .btn:first-child{margin-left:0}.ch-btn-view-active{background:#1e40af;color:#fff;border-color:#1e40af}.ch-expanded-row td{background:#f8fafc;border-bottom:2px solid #cbd5e1;padding:12px 16px}.ch-expanded-content{max-height:300px;overflow-y:auto}.ch-full-content{font-size:.83rem;color:#1f2937;line-height:1.6;white-space:pre-wrap;word-break:break-word}.ch-course-info{margin-top:8px;font-size:.75rem;color:#6b7280;padding-top:6px;border-top:1px solid #e5e7eb}.ch-edit-row td{background:#fff7ed;border-bottom:2px solid #fed7aa;padding:12px 16px}.legacy-course-list .legacy-panel-body{min-height:100px;overflow:auto;flex:1}.legacy-course-list{gap:8px;padding:8px;display:flex;flex-direction:column;height:100%;min-height:0}.legacy-course-list .legacy-panel-body{margin:0;padding:4px;flex:1;min-height:0;max-height:170px;overflow-y:auto}.legacy-course-list .legacy-list-row{padding:10px 12px;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-assignment-panel{overflow:visible}.legacy-assignment-body{display:grid;gap:8px;padding:8px;overflow:visible}.legacy-assignment-date{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 12px;font-size:.875rem;display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative}.legacy-calendar-toggle{border:1px solid #d1d5db;background:#fff;width:32px;height:32px;display:grid;place-items:center;cursor:pointer;font-size:.875rem;border-radius:6px;transition:all .15s ease}.legacy-calendar-toggle:hover{background:#f3f4f6}.legacy-date-input{position:relative;display:flex;align-items:center;gap:8px;overflow:visible}.legacy-date-input .legacy-calendar{left:0;right:auto}.legacy-calendar{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:12px;z-index:9999;width:260px;box-shadow:0 10px 25px #00000026}.legacy-calendar.legacy-calendar-fixed{position:fixed}.legacy-calendar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.875rem;font-weight:600;margin-bottom:8px;color:#374151}.legacy-calendar-header button{border:1px solid #d1d5db;background:#fff;width:28px;height:28px;cursor:pointer;border-radius:6px;transition:all .15s ease}.legacy-calendar-header button:hover{background:#f3f4f6}.legacy-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.legacy-calendar-day{font-size:.75rem;text-align:center;color:#374151;padding:4px 0}.legacy-calendar-date{border:1px solid #e5e7eb;background:#fff;height:32px;font-size:.8rem;cursor:pointer;border-radius:6px;transition:all .15s ease}.legacy-calendar-date:hover{background:#f3f4f6}.legacy-calendar-date.selected{background:#3b82f6;color:#fff;border-color:#3b82f6}.legacy-calendar-date.today{border-color:#ef4444;box-shadow:inset 0 0 0 1px #ef4444;color:#ef4444}.legacy-calendar-date:disabled{background:transparent;border-color:transparent;cursor:default;pointer-events:none}.legacy-assignment-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.legacy-assignment-actions button{border:1px solid #d1d5db;background:#fff;padding:8px 12px;font-size:.875rem;cursor:pointer;border-radius:6px;transition:all .15s ease}.legacy-assignment-actions button:hover{background:#f3f4f6}.legacy-assignment-actions button.action-입반{background:#dbeafe;border-color:#93c5fd;color:#2563eb}.legacy-assignment-actions button.action-입반:hover{background:#bfdbfe}.legacy-assignment-actions button.action-퇴원{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.legacy-assignment-actions button.action-퇴원:hover{background:#fecaca}.legacy-assignment-actions button.action-전반{background:#dcfce7;border-color:#86efac;color:#16a34a}.legacy-assignment-actions button.action-전반:hover{background:#bbf7d0}.legacy-assignment-actions button.action-보강{background:#ede9fe;border-color:#c4b5fd;color:#7c3aed}.legacy-assignment-actions button.action-보강:hover{background:#ddd6fe}.legacy-utility-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid #e5e7eb}.legacy-utility-buttons button{border:1px solid #d1d5db;background:#f9fafb;padding:8px 12px;font-size:.8rem;cursor:pointer;border-radius:6px;transition:all .15s ease;color:#374151}.legacy-utility-buttons button:hover{background:#f3f4f6;color:#374151}.legacy-bottom{display:flex;flex-direction:column;gap:0;margin-top:0;padding-bottom:4px;grid-column:1 / 3;grid-row:2;position:relative;z-index:1}.legacy-bottom-tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:2px solid #cbd5e1}.bottom-tab-btn{padding:8px 14px;border:none;background:transparent;color:#64748b;font-size:.8125rem;font-weight:600;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:all .15s;white-space:nowrap}.bottom-tab-btn:hover{color:#334155;background:#f1f5f9}.bottom-tab-btn:disabled{opacity:.4;cursor:not-allowed}.bottom-tab-btn.active{color:#2563eb;border-bottom-color:#2563eb;background:transparent}.bottom-tab-divider{width:1px;height:16px;background:#cbd5e1;margin:0 4px;align-self:center}.legacy-bottom-content{width:100%}.history-inline-content{padding:8px 12px}.history-inline-content .history-modal-table{max-height:none;width:fit-content}.activity-log-inline{padding:8px 12px;max-width:65%}.legacy-bottom-content>.legacy-textbook-sale-panel{max-width:50%}.legacy-empty-placeholder{padding:40px 20px;text-align:center;color:#94a3b8;font-size:.875rem;max-width:50%}.legacy-bottom-content .legacy-panel-title.compact,.legacy-bottom-content .sms-panel-title{display:none}.legacy-bottom-content .legacy-sms-panel-bottom{border-top-left-radius:0;border-top-right-radius:0;border-top:none;min-height:auto}.legacy-sms-panel-bottom{display:flex;flex-direction:column;flex:1;min-height:160px}.legacy-sms-panel-bottom .legacy-panel-title{padding:8px 12px;background:#f1f5f9;border-bottom:1px solid #e8edf3}.sms-panel-title{display:flex;align-items:center;justify-content:space-between}.sms-panel-link-btn{font-size:.75rem;color:#3b82f6;background:#eff6ff;border:1px solid #bfdbfe;padding:4px 10px;border-radius:4px;cursor:pointer;transition:all .15s;margin-left:8px}.sms-panel-link-btn:hover{background:#dbeafe;border-color:#93c5fd}.sms-panel-body-v2{padding:10px 14px;display:flex;flex-direction:column;gap:6px}.sms-panel-body-v2 .legacy-empty{color:#9ca3af;font-size:.85rem}.sms-panel-target-buttons{display:flex;gap:0;border:1px solid #d1d5db;border-radius:6px;overflow:hidden}.sms-panel-target-btn{flex:1;padding:6px 12px;border:none;background:#fff;color:#374151;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s}.sms-panel-target-btn+.sms-panel-target-btn{border-left:1px solid #d1d5db}.sms-panel-target-btn.active{background:#2563eb;color:#fff;font-weight:600}.sms-panel-target-btn:hover:not(.active){background:#f3f4f6}.sms-panel-vars-row{display:flex;gap:4px;flex-wrap:wrap}.sms-panel-tpl-btn{padding:4px 12px;font-size:13px;border-radius:4px;border:1px solid #3b82f6;background:#fff;color:#3b82f6;cursor:pointer;transition:all .15s}.sms-panel-tpl-btn.active{background:#3b82f6;color:#fff}.sms-panel-var-btn{padding:4px 10px;font-size:12.5px;border-radius:3px;border:1px solid #d1d5db;background:#f9fafb;color:#374151;cursor:pointer;white-space:nowrap;transition:all .15s}.sms-panel-var-btn:hover{background:#e5e7eb;border-color:#9ca3af}.sms-panel-tpl-list{max-height:120px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:4px;background:#fff}.sms-panel-tpl-item{display:flex;gap:8px;align-items:center;width:100%;text-align:left;padding:7px 12px;border:none;border-bottom:1px solid #f3f4f6;background:transparent;cursor:pointer;font-size:13px}.sms-panel-tpl-item:hover{background:#f0f9ff}.sms-panel-tpl-item strong{color:#1e40af;white-space:nowrap}.sms-panel-tpl-item span{color:#6b7280}.sms-panel-tpl-empty{font-size:13px;color:#9ca3af;padding:8px 12px}.sms-panel-lms-title{width:100%;padding:5px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:12px}.sms-panel-content-row{display:flex;gap:8px;flex:1;min-height:0}.sms-panel-input-col{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.sms-panel-textarea{padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;min-height:160px;flex:1}.sms-panel-textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61f}.sms-panel-textarea-info{display:flex;align-items:center;gap:8px}.sms-panel-char-count{font-size:.82rem;color:#6b7280}.sms-panel-msg-type{padding:3px 8px;border-radius:4px;font-size:.8rem;font-weight:600;white-space:nowrap}.sms-panel-msg-type.sms{background:#dcfce7;color:#166534}.sms-panel-msg-type.lms{background:#dbeafe;color:#1e40af}.sms-panel-preview-col{flex:1;min-height:160px;overflow-y:auto;padding:10px 12px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;font-size:13px;line-height:1.6;white-space:pre-wrap;color:#1e293b;min-width:0}.sms-panel-preview-col.empty{display:flex;align-items:center;justify-content:center;background:#f9fafb;border-color:#e5e7eb}.sms-panel-preview-label{font-size:12px;color:#0284c7;font-weight:600;margin-bottom:6px}.sms-panel-preview-label span{font-weight:400;margin-left:4px}.sms-panel-preview-text{font-size:13px}.sms-panel-preview-placeholder{font-size:13px;color:#9ca3af;text-align:center}.sms-panel-image-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.sms-panel-image-btn{padding:4px 10px;font-size:12px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;cursor:pointer;transition:all .15s}.sms-panel-image-btn:hover{background:#f3f4f6;border-color:#9ca3af}.sms-panel-image-info{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280}.sms-panel-mms-badge{background:#fce7f3;color:#9d174d;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600}.sms-panel-image-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sms-panel-image-size{color:#9ca3af}.sms-panel-image-remove{background:none;border:none;font-size:16px;color:#ef4444;cursor:pointer;padding:0 2px;line-height:1}.sms-panel-image-preview{margin-bottom:8px}.sms-panel-image-preview img{max-width:160px;max-height:120px;border-radius:6px;border:1px solid #e5e7eb}.sms-panel-action-row{display:flex;gap:8px;align-items:center}.sms-panel-keep-label{display:flex;align-items:center;gap:4px;font-size:.78rem;color:#6b7280;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.sms-panel-keep-label input[type=checkbox]{accent-color:#6d28d9;cursor:pointer}.sms-panel-keep-label input[type=checkbox]:checked+span{color:#6d28d9;font-weight:600}.sms-panel-send-btn{flex:1;padding:10px 0;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.sms-panel-send-btn:hover:not(:disabled){background:#2563eb}.sms-panel-send-btn:disabled{background:#9ca3af;cursor:not-allowed}.sms-panel-reserve-btn{flex:1;padding:10px 0;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .15s}.sms-panel-reserve-btn:hover:not(:disabled){background:#e5e7eb;border-color:#9ca3af}.sms-panel-reserve-btn:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.sms-panel-result{padding:6px 10px;border-radius:4px;font-size:.8rem}.sms-panel-result.success{background:#dcfce7;color:#166534}.sms-panel-result.error{background:#fee2e2;color:#991b1b}.sms-reserve-modal{background:#fff;border-radius:12px;width:360px;max-width:90vw;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.sms-reserve-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:1rem}.sms-reserve-modal-body{padding:20px;display:flex;flex-direction:column;gap:16px}.sms-reserve-info{display:flex;gap:12px;font-size:.875rem;color:#374151;padding:10px 12px;background:#f9fafb;border-radius:6px}.sms-reserve-message-preview{display:flex;flex-direction:column;gap:6px}.sms-reserve-message-preview label{font-size:.8rem;color:#6b7280;font-weight:500}.sms-reserve-message-text{padding:10px 12px;background:#fef9c3;border:1px solid #fde047;border-radius:6px;font-size:.85rem;color:#854d0e;max-height:80px;overflow:auto;white-space:pre-wrap}.sms-reserve-datetime{display:flex;flex-direction:column;gap:6px}.sms-reserve-datetime label{font-size:.8rem;color:#6b7280;font-weight:500}.sms-reserve-datetime input{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-family:inherit}.sms-reserve-datetime input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.sms-reserve-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid #e5e7eb}.sms-reserve-cancel-btn{padding:10px 20px;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;cursor:pointer;transition:all .15s}.sms-reserve-cancel-btn:hover{background:#e5e7eb}.sms-reserve-confirm-btn{padding:10px 20px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.sms-reserve-confirm-btn:hover:not(:disabled){background:#2563eb}.sms-reserve-confirm-btn:disabled{background:#9ca3af;cursor:not-allowed}.sms-reserve-date-picker-wrap{position:relative}.sms-reserve-date-btn{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-family:inherit;background:#fff;text-align:left;cursor:pointer;transition:all .15s}.sms-reserve-date-btn:hover{border-color:#9ca3af}.sms-reserve-date-btn:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.sms-reserve-calendar{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:100;margin-top:4px;padding:12px}.sms-reserve-calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sms-reserve-calendar-header span{font-weight:600;font-size:.95rem;color:#1f2937}.sms-reserve-calendar-header button{background:none;border:none;padding:4px 8px;cursor:pointer;font-size:1rem;color:#6b7280;border-radius:4px;transition:all .15s}.sms-reserve-calendar-header button:hover{background:#f3f4f6;color:#1f2937}.sms-reserve-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.sms-reserve-calendar-day{text-align:center;font-size:.75rem;color:#9ca3af;padding:4px 0}.sms-reserve-calendar-date{padding:8px 4px;border:none;background:none;cursor:pointer;border-radius:6px;font-size:.85rem;color:#374151;transition:all .15s}.sms-reserve-calendar-date:hover:not(:disabled){background:#e5e7eb}.sms-reserve-calendar-date.selected{background:#3b82f6;color:#fff}.sms-reserve-calendar-date.today{border:1px solid #3b82f6}.sms-reserve-calendar-date:disabled{color:#e5e7eb;cursor:not-allowed}.sms-reserve-time-inputs{display:flex;align-items:center;gap:8px}.sms-reserve-ampm-select{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-family:inherit;background:#fff;cursor:pointer;min-width:70px}.sms-reserve-ampm-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.sms-reserve-time-input{width:50px;padding:10px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-family:inherit;text-align:center}.sms-reserve-time-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.sms-reserve-time-colon{font-size:1rem;font-weight:600;color:#374151}.legacy-panel.wide .legacy-panel-body{min-height:180px;max-height:280px;overflow:auto}.legacy-history{display:grid;grid-template-columns:120px auto;gap:6px;align-items:start;width:fit-content}.legacy-history-panel{display:flex;flex-direction:column}.legacy-history-panel .legacy-panel-title.compact{text-align:center;justify-content:center;font-weight:600;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px 8px 0 0;margin-bottom:0}.legacy-history-panel .legacy-panel-body{border-radius:0 0 8px 8px;flex:1}.legacy-history-tabs{display:grid;gap:4px}.legacy-history-tabs button{border:1px solid #cbd5e1;background:#fff;font-size:.875rem;padding:10px 14px;border-radius:8px;transition:all .15s ease}.legacy-history-tabs button:hover{background:#e8edf3}.legacy-history-tabs button.active{background:#3b82f6;color:#fff;border-color:#3b82f6;font-weight:600}.legacy-history-table{display:flex;flex-direction:column;gap:6px;padding:8px;font-size:.875rem;width:fit-content}.legacy-history-row{display:grid;grid-template-columns:32px auto 80px 70px 50px 50px 50px;gap:6px;padding:8px 12px;border:1px solid #e8edf3;background:#fff;border-radius:8px;align-items:center;transition:background .12s ease}.legacy-history-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-history-row:hover{background:#e8edf3}.legacy-history-end{white-space:nowrap}.legacy-history-row span:nth-child(5),.legacy-history-row span:nth-child(6){text-align:right}.legacy-history-delete{padding:4px 10px;font-size:.8rem;border:1px solid #fca5a5;background:#fef2f2;color:#dc2626;border-radius:6px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.legacy-history-delete:hover{background:#fee2e2}.legacy-history-check{display:flex;align-items:center;justify-content:center}.legacy-history-check input{margin:0}.legacy-history-header{background:#e8edf3;font-weight:600;color:#334155}.legacy-history-end.withdrawn{color:#dc2626;font-weight:600}.legacy-action-panel{align-self:start;width:160px}.legacy-right .legacy-panel-title{padding:0 6px;font-size:inherit;line-height:1}.legacy-action-buttons{display:grid;gap:8px}.legacy-action-buttons button{border:1px solid #cbd5e1;background:#fff;font-size:.875rem;padding:10px 14px;text-align:center;border-radius:8px;cursor:pointer;transition:all .15s ease}.legacy-action-buttons button:hover{background:#e8edf3}.legacy-side-buttons{display:grid;gap:10px;align-content:start}.dashboard .card-header p{margin-top:8px}.dashboard-grid{display:grid;gap:8px;grid-template-columns:1fr;justify-items:start}.dashboard-card{background:#fff;border:none;border-radius:8px;padding:12px 18px;font-size:.95rem;font-weight:500;color:#1e293b;text-align:left;box-shadow:var(--md-shadow-2);transition:all .3s cubic-bezier(.4,0,.2,1);width:auto;min-width:150px}.dashboard-card:hover{box-shadow:var(--md-shadow-4);transform:translateY(-2px);background:#f8f9fa}button.dashboard-card{font:inherit;cursor:pointer;width:100%}.student-management{padding:4px;margin:0;width:100%;overflow:auto;display:flex;flex-direction:column;border-radius:0;color:#1f2937}.dashboard-page:has(.student-management) .topbar{display:none}.dashboard-page:has(.student-management) .glow{display:none}.dashboard-page:has(.student-management){padding:0;overflow:auto}.dashboard-page:has(.student-management) .dashboard-layout{padding:0;margin:0;width:100vw;max-width:100vw}.student-shell{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:12px;align-items:start}.student-search{background:#fff;border:none;border-radius:12px;padding:16px;display:grid;gap:12px;box-shadow:var(--md-shadow-2)}.student-management .legacy-shell,.student-management .legacy-shell *{font-size:.85rem;line-height:1.2}.student-search-bar{display:flex;gap:8px;align-items:center}.student-search-bar input{border:1px solid #cfd6e6;border-radius:10px;padding:8px 10px;font-family:inherit;width:130px}.student-results{display:grid;gap:8px;max-height:520px;overflow:auto}.student-card{border:1px solid #dfe6f4;background:#fff;border-radius:12px;padding:10px;text-align:left;cursor:pointer;display:grid;gap:6px}.student-card.active{border-color:var(--ocean);box-shadow:0 10px 20px #1a4b7a1f}.student-card-name{font-weight:700;color:#2b3856}.student-card-meta{display:flex;flex-direction:column;font-size:.8rem;color:#6b748a}.student-detail{border:1px solid #dfe6f4;border-radius:16px;padding:12px;display:grid;gap:12px;background:#fff;overflow:hidden}.student-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.student-detail-actions{display:flex;align-items:center;gap:12px}.student-detail-header h3{margin:0}.student-detail-header p{margin:2px 0 0;color:#6b748a;font-size:.8rem}.autosave-status{font-size:.85rem;color:#5a637a}.student-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,240px));gap:12px;justify-content:start}.student-form-grid label{display:grid;gap:6px;font-size:.8rem;color:#3f485f;max-width:240px}.student-form-grid .field-full{grid-column:1 / -1}.student-form-grid .field-spacer{border:none;background:transparent}.student-form-grid input,.student-form-grid select,.sms-send textarea{border:1px solid #cfd6e6;border-radius:8px;padding:8px 10px;font-family:inherit}.attendance-panel{display:grid;gap:12px}.attendance-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-weight:600;color:#2b3856}.attendance-summary{font-size:.85rem;color:#5a637a}.attendance-grid{border:1px solid #dfe6f4;border-radius:12px;background:#f7f8fc;overflow:auto}.attendance-header,.attendance-row{display:grid;gap:6px;padding:8px;min-width:720px;align-items:center;font-size:.78rem}.attendance-header{background:#2f3b66;color:#fff;font-weight:600}.attendance-row{background:#fff;color:#2b3856}.attendance-cell{height:24px;border-radius:4px;background:#fff;border:1px solid #e4e9f5}.sms-panel{display:grid;gap:16px}.sms-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.sms-send h4{margin:0 0 8px}.sms-send textarea{width:100%;min-height:120px;resize:vertical}.sms-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.sms-recipient{display:flex;gap:12px;align-items:center}.sms-check{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:#3f485f}.sms-log h4{margin:0 0 8px}.sms-log-row{border:1px solid #e4e9f5;border-radius:12px;padding:10px;display:grid;gap:6px;background:#f7f8fc}.sms-log-row>div{display:flex;justify-content:space-between;gap:10px;font-size:.8rem;color:#5a637a}.student-footer-tabs{display:flex;flex-wrap:wrap;gap:8px}.footer-tab.active{background:var(--ocean);border-color:var(--ocean);color:#fff}.management-tabs{display:flex;flex-wrap:wrap;gap:10px}.tab{border:1px solid #cfd6e6;background:#f2f4fa;color:#2b3856;border-radius:12px;padding:8px 14px;font-weight:600;cursor:pointer}.tab.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.tab:disabled{opacity:.5;cursor:not-allowed}.panel-placeholder{padding:20px;border:1px dashed #cfd6e6;border-radius:16px;color:#5a637a;text-align:center;background:#f7f8fc}.staff-lookup{display:grid;gap:16px}.staff-list{display:grid;gap:12px}.staff-card{border:1px solid #dfe6f4;background:#fff;border-radius:16px;padding:12px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;text-align:left;cursor:pointer}.staff-card.active{border-color:var(--ocean);box-shadow:0 12px 22px #1a4b7a1f}.staff-cell{display:grid;gap:4px}.staff-label{font-size:.72rem;color:#6b748a}.staff-value{font-weight:600;color:#2b3856;word-break:break-word}.staff-edit{margin-top:8px}.bulk-register-section{padding:16px;max-height:calc(100vh - 150px);overflow-y:auto}.bulk-info h3{margin:0 0 6px;font-size:1rem;color:#1f2937}.bulk-info p{margin:0 0 4px;color:#4b5563;font-size:.9rem}.bulk-hint{font-size:.8rem;color:#6b7280}.bulk-template{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px;margin:12px 0}.bulk-template h4{margin:0 0 6px;font-size:.85rem;color:#374151}.bulk-template code{display:block;background:#1f2937;color:#e5e7eb;padding:10px;border-radius:6px;font-size:.75rem;overflow-x:auto;white-space:nowrap;margin-bottom:8px}.bulk-upload{margin:12px 0}.bulk-upload .file-input{padding:10px;border:2px dashed #d1d5db;border-radius:8px;width:100%;cursor:pointer;background:#fff;font-size:.9rem}.bulk-upload .file-input:hover{border-color:#9ca3af;background:#f9fafb}.bulk-preview{margin-top:16px}.bulk-preview h4{margin:0 0 8px;font-size:.95rem;color:#1f2937}.bulk-register-btn{margin-top:16px;padding:12px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s}.bulk-register-btn:hover:not(:disabled){opacity:.9}.bulk-register-btn:disabled{opacity:.6;cursor:not-allowed}.bulk-results{margin-top:20px}.bulk-results h4{margin:0 0 12px;font-size:1rem;color:#1f2937}.bulk-results-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.bulk-result-item{display:flex;justify-content:space-between;padding:10px 12px;border-radius:6px;font-size:.9rem}.bulk-result-item.success{background:#dcfce7;color:#166534}.bulk-result-item.error{background:#fee2e2;color:#991b1b}.result-username{font-weight:600}.result-message{color:inherit}.message.warning{background:#fef3c7;color:#92400e;padding:12px;border-radius:8px}.staff-page{max-width:1800px;margin:0 auto;padding:20px 16px;min-height:calc(100vh - 48px);display:flex;flex-direction:column;color:#1f2937}.staff-page-header{margin-bottom:16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.staff-register-btn{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.staff-register-btn:hover{background:#2563eb}.staff-page-title{display:flex;align-items:center;gap:16px;margin-bottom:8px}.staff-page-title h1{margin:0;font-size:1.5rem;font-weight:700;color:#1a202c}.staff-count{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:6px 14px;border-radius:20px;font-size:.875rem;font-weight:600}.staff-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-shrink:0}.staff-status-filter{display:flex;gap:8px}.status-filter-btn{padding:8px 16px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#374151;font-size:.9rem;font-family:inherit;cursor:pointer;transition:all .2s}.status-filter-btn:hover{background:#f7fafc;border-color:#cbd5e0}.status-filter-btn.active{background:#3182ce;color:#fff;border-color:#3182ce}.status-filter-btn.resigned.active{background:#e53e3e;border-color:#e53e3e}.search-box{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:8px 12px;max-width:240px}.search-box svg{width:18px;height:18px;color:#374151;flex-shrink:0}.search-box input{border:none;outline:none;font-size:.9rem;font-family:inherit;width:100%;background:transparent}.search-box input::placeholder{color:#374151}.staff-table-wrapper{background:#fff;border-radius:12px;border:1px solid #cbd5e1;overflow:hidden}.staff-table{width:100%;border-collapse:collapse;font-size:.9rem}.staff-table thead{background:#f1f5f9;border-bottom:1px solid #cbd5e1}.staff-table th{padding:12px 16px;text-align:left;font-weight:600;color:#374151;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.staff-table tbody tr{border-bottom:1px solid #e8edf3;cursor:pointer;transition:background .15s ease}.staff-table tbody tr:last-child{border-bottom:none}.staff-table tbody tr:hover{background:#f1f5f9}.staff-table td{padding:12px 16px;color:#374151}.staff-table .name-cell{display:flex;align-items:center;gap:10px;font-weight:500}.staff-table .avatar{width:32px;height:32px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.8rem;font-weight:600;flex-shrink:0}.staff-table .empty-row{text-align:center;color:#374151;padding:40px 16px}.table-badge{display:inline-block;padding:4px 10px;border-radius:6px;font-size:.75rem;font-weight:600}.table-badge.badge-admin{background:#fef3c7;color:#92400e}.table-badge.badge-teacher{background:#dbeafe;color:#1e40af}.table-badge.badge-staff{background:#e8edf3;color:#475569}.staff-search-bar{margin-bottom:24px}.search-input-wrapper{position:relative;max-width:400px}.search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:#374151;pointer-events:none}.search-input{width:100%;padding:14px 48px;border:2px solid #cbd5e1;border-radius:12px;font-size:1rem;font-family:inherit;background:#fff;transition:all .2s ease}.search-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea26}.search-input::placeholder{color:#374151}.search-clear{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:none;background:#cbd5e1;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.search-clear:hover{background:#cbd5e0}.search-clear svg{width:14px;height:14px;color:#4a5568}.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.staff-card-modern{background:#fff;border:1px solid #cbd5e1;border-radius:16px;padding:20px;cursor:pointer;transition:all .3s ease;text-align:left}.staff-card-modern:hover{border-color:#667eea;box-shadow:0 10px 40px #667eea26;transform:translateY(-2px)}.staff-card-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}.staff-avatar{width:52px;height:52px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.25rem;font-weight:700;flex-shrink:0}.staff-info{flex:1;min-width:0}.staff-info .staff-name{display:block;font-size:1.1rem;font-weight:700;color:#1a202c;margin-bottom:4px}.staff-info .staff-title{display:block;font-size:.875rem;color:#4a5568}.role-badge{padding:6px 12px;border-radius:8px;font-size:.75rem;font-weight:600;flex-shrink:0}.role-badge.admin{background:#fef3c7;color:#92400e}.role-badge.teacher{background:#dbeafe;color:#1e40af}.role-badge.staff{background:#cbd5e1;color:#475569}.staff-card-bottom{display:flex;flex-direction:column;gap:10px;padding-top:16px;border-top:1px solid #e8edf3}.staff-detail{display:flex;align-items:center;gap:10px;color:#374151;font-size:.875rem}.staff-detail svg{width:16px;height:16px;flex-shrink:0}.staff-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:#4a5568;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid #cbd5e1;border-top-color:#667eea;border-radius:50%;animation:spin .8s linear infinite}.staff-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;color:#4a5568;text-align:center}.staff-empty svg{width:64px;height:64px;margin-bottom:16px;opacity:.5}.staff-empty p{margin:0;font-size:1rem}.staff-message{padding:14px 18px;border-radius:12px;margin-bottom:20px;font-size:.9rem;transition:opacity .5s ease-out}.staff-message.fading{opacity:0}.staff-message.error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.staff-message.success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.register-form-container{max-width:900px}.register-form-container.compact{max-width:800px}.register-form{background:#fff;border-radius:20px;padding:32px;border:1px solid #cbd5e1}.register-form.compact{padding:24px;display:flex;flex-direction:column;gap:20px}.form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:24px}.form-row:last-of-type{margin-bottom:0}.form-row.single-field{grid-template-columns:1fr 2fr}.form-actions{margin-top:32px;display:flex;flex-direction:column;gap:16px}@media(max-width:768px){.form-row{grid-template-columns:1fr}}.form-section{margin-bottom:32px}.form-section:last-of-type{margin-bottom:24px}.form-section-title{display:flex;align-items:center;gap:10px;margin:0 0 20px;font-size:1.1rem;font-weight:600;color:#1a202c}.form-section-title svg{width:22px;height:22px;color:#667eea}.form-grid{display:grid;gap:20px}.form-field{display:flex;flex-direction:column;gap:8px}.form-label{font-size:.9rem;font-weight:600;color:#374151}.form-label .required{color:#ef4444;margin-left:4px}.form-input{padding:14px 16px;border:2px solid #cbd5e1;border-radius:12px;font-size:1rem;font-family:inherit;transition:all .2s ease;background:#fff}.form-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea26}.form-input::placeholder{color:#374151}.title-groups{display:flex;flex-direction:column;gap:16px}.title-group{display:flex;flex-direction:column;gap:10px}.title-group-label{font-size:.75rem;font-weight:600;color:#667eea;text-transform:uppercase;letter-spacing:.5px}.title-groups-horizontal{display:flex;gap:24px;flex-wrap:wrap}.title-group-horizontal{display:flex;align-items:center;gap:12px}.title-buttons{display:flex;gap:8px;flex-wrap:wrap}.title-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:10px}.title-option{padding:10px 16px;border:2px solid #cbd5e1;border-radius:8px;background:#fff;font-size:.875rem;font-family:inherit;color:#4a5568;cursor:pointer;transition:all .2s ease;white-space:nowrap}.title-option:hover{border-color:#667eea;background:#f7f8ff}.title-option.selected{border-color:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.register-message{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:12px;margin-bottom:20px;font-size:.9rem}.register-message svg{width:20px;height:20px;flex-shrink:0}.register-message.error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.register-message.success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0;transition:opacity 1s ease-out}.register-message.fading{opacity:0}.gender-buttons{display:flex;gap:8px}.gender-option{flex:1;padding:12px 20px;border:2px solid #cbd5e1;border-radius:10px;background:#fff;font-size:.95rem;font-weight:500;font-family:inherit;color:#4a5568;cursor:pointer;transition:all .2s ease}.gender-option:hover{border-color:#667eea;background:#f7f8ff}.gender-option.selected{border-color:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.position-buttons{display:flex;gap:8px;flex-wrap:wrap}.position-option{padding:10px 18px;border:2px solid #cbd5e1;border-radius:10px;background:#fff;font-size:.9rem;font-weight:500;font-family:inherit;color:#4a5568;cursor:pointer;transition:all .2s ease}.position-option:hover{border-color:#667eea;background:#f7f8ff}.position-option.selected{border-color:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.department-buttons{display:flex;gap:8px;flex-wrap:wrap}.department-option{padding:10px 16px;border:2px solid #cbd5e1;border-radius:10px;background:#fff;font-size:.9rem;font-weight:500;font-family:inherit;color:#4a5568;cursor:pointer;transition:all .2s ease}.department-option:hover{border-color:#667eea;background:#f7f8ff}.department-option.selected{border-color:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.form-placeholder{padding:14px 16px;border:2px dashed #cbd5e1;border-radius:12px;font-size:.9rem;color:#9ca3af;background:#f9fafb}.form-auto-value{padding:14px 16px;border:2px solid #cbd5e1;border-radius:12px;font-size:1rem;color:#374151;background:#f3f4f6;font-weight:500}.email-field{grid-column:span 2}.email-input-group{display:flex;align-items:center}.email-id-input{width:140px;flex-shrink:0;margin-right:6px}.email-at{font-size:1.1rem;font-weight:600;color:#4a5568;margin-right:6px}.email-domain-select{min-width:140px;padding:10px 12px;border:2px solid #cbd5e1;border-radius:8px;background:#fff;font-size:.95rem;font-family:inherit;color:#1a202c;cursor:pointer;transition:border-color .2s ease}.email-domain-select:focus{outline:none;border-color:#667eea}.email-domain-buttons{display:flex;gap:6px;flex-wrap:wrap}.email-domain-option{padding:8px 12px;border:2px solid #cbd5e1;border-radius:8px;background:#fff;font-size:.8rem;font-family:inherit;color:#4a5568;cursor:pointer;transition:all .2s ease;white-space:nowrap}.email-domain-option:hover{border-color:#667eea;background:#f7f8ff}.email-domain-option.selected{border-color:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.register-submit{width:100%;padding:16px 24px;border:none;border-radius:12px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;transition:all .3s ease}.register-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 30px #667eea66}.register-submit:disabled{opacity:.7;cursor:not-allowed}.register-submit svg{width:20px;height:20px}.button-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.photo-upload-area{display:flex;align-items:center}.photo-select-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;border:2px dashed #cbd5e1;border-radius:10px;background:#f1f5f9;color:#64748b;font-size:.85rem;font-family:inherit;cursor:pointer;transition:all .2s}.photo-select-btn:hover{border-color:#667eea;color:#667eea;background:#f0f2ff}.photo-icon{width:20px;height:20px}.photo-preview-container{position:relative;display:inline-block}.photo-preview-img{width:80px;height:113px;border-radius:10px;object-fit:cover;border:2px solid #cbd5e1}.photo-remove-btn{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:none;background:#ef4444;color:#fff;font-size:.7rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.photo-remove-btn:hover{background:#dc2626}.crop-modal-overlay{position:fixed;inset:0;background:#0009;z-index:1000;display:flex;align-items:center;justify-content:center}.crop-modal{background:#fff;border-radius:16px;width:480px;max-width:90vw;overflow:hidden;box-shadow:0 20px 60px #0000004d}.crop-modal-header{padding:20px 24px 12px}.crop-modal-header h3{margin:0;font-size:1.1rem;font-weight:600;color:#1a1a1a}.crop-modal-header p{margin:4px 0 0;font-size:.85rem;color:#888}.crop-container{position:relative;width:100%;height:400px;background:#f0f0f0}.crop-controls{display:flex;align-items:center;gap:12px;padding:16px 24px 8px}.crop-zoom-label{display:flex;align-items:center;gap:4px;font-size:.85rem;color:#666;white-space:nowrap}.crop-zoom-slider{flex:1;height:4px;accent-color:#667eea;cursor:pointer}.crop-actions{display:flex;justify-content:flex-end;gap:10px;padding:12px 24px 20px}.crop-btn-cancel{padding:8px 20px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#666;font-size:.9rem;cursor:pointer}.crop-btn-cancel:hover{background:#f5f5f5}.crop-btn-confirm{padding:8px 24px;border:none;border-radius:8px;background:#667eea;color:#fff;font-size:.9rem;font-weight:500;cursor:pointer}.crop-btn-confirm:hover{background:#5a6fd6}@media(max-width:768px){.staff-page{padding:16px;height:auto;overflow:visible}.staff-categories{flex-direction:column;overflow:visible}.staff-category{overflow:visible}.staff-card-grid{overflow:visible;max-height:none}.staff-page-title h1{font-size:1.25rem}.staff-grid{grid-template-columns:1fr}.search-input-wrapper{max-width:100%}.register-form{padding:24px 20px}.title-select-grid{grid-template-columns:repeat(3,1fr)}}.student-lookup{display:grid;gap:16px;margin-top:8px;padding:16px;border-radius:18px;border:1px solid #dfe6f4;background:#f7f8fc;color:#2b3856}.lookup-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}.lookup-group{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.lookup-search{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.lookup-search input{border:1px solid #cfd6e6;border-radius:10px;padding:8px 10px;min-width:180px;font-family:inherit}.select{border:1px solid #cfd6e6;border-radius:10px;padding:8px 10px;background:#fff;font-family:inherit}.pill{border:1px solid #cfd6e6;background:#fff;border-radius:999px;padding:6px 12px;font-weight:600;color:#2b3856;cursor:pointer}.pill.active{background:#2f3b66;color:#fff;border-color:#2f3b66}.icon-btn{border:1px solid #cfd6e6;background:#fff;border-radius:10px;padding:6px 10px;font-weight:600;cursor:pointer}.lookup-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.action-btn{border:1px solid #cfd6e6;background:#fff;border-radius:10px;padding:6px 12px;font-weight:600;color:#2b3856;cursor:pointer}.action-btn.primary{background:#22c3c6;color:#113f41;border-color:transparent}.action-btn.dark{background:#2f3b66;color:#fff;border-color:transparent}.lookup-right-actions{display:flex;align-items:center;gap:8px}.count-chip{background:#2b74c8;color:#fff;border-radius:12px;padding:6px 12px;font-weight:700;font-size:.85rem}.lookup-body{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:16px}.photo-panel{background:#fff;border:1px solid #dfe6f4;border-radius:16px;padding:12px;display:grid;gap:12px}.photo-box{height:140px;border-radius:12px;border:1px dashed #cfd6e6;display:grid;place-items:center;color:#374151;font-size:.85rem}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.field{display:grid;gap:6px;padding:8px;background:#f7f8fc;border-radius:10px;border:1px solid #dfe6f4;font-size:.82rem}.field.full{grid-column:1 / -1}.field input,.field select{border:1px solid #cfd6e6;border-radius:8px;padding:6px 8px;font-family:inherit}.lookup-right{background:#fff;border:1px solid #dfe6f4;border-radius:16px;padding:12px;display:grid;gap:12px}.records-tabs{display:flex;flex-wrap:wrap;gap:8px}.records-summary{display:flex;gap:16px;font-weight:600;color:#2b3856}.records-table{border:1px solid #dfe6f4;border-radius:12px;overflow:hidden}.table-header,.table-row{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:12px;padding:10px 12px;font-size:.85rem}.table-header{background:#2f3b66;color:#fff;font-weight:600}.table-row{background:#fff;color:#5a637a}.table-row.empty{text-align:center;grid-template-columns:1fr}.lookup-footer-tabs{display:flex;flex-wrap:wrap;gap:8px}.footer-tab{border:1px solid #cfd6e6;background:#fff;color:#2b3856;border-radius:8px;padding:8px 20px;font-size:.8rem;font-weight:600;cursor:pointer}.logout{margin-top:4px;padding:8px 16px;border-radius:8px;border:1px solid #dadce0;background:transparent;color:#2b3856;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.logout:hover{background:#f1f3f4;box-shadow:var(--md-shadow-1)}.topbar .logout{border-color:#bfdbfe;color:#64748b}.topbar .logout:hover{background:#eef2fb;border-color:#64748b}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@media(max-width:960px){.student-shell,.student-form-grid{grid-template-columns:1fr}.student-results{max-height:260px}.sms-layout,.lookup-body{grid-template-columns:1fr}.lookup-actions{align-items:flex-start}.lookup-right-actions{width:100%;justify-content:flex-start}.staff-card{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.page{padding:24px 16px}.card{padding:24px}.staff-card{grid-template-columns:1fr}}.legacy-class-wrapper{display:flex!important;flex-direction:column;padding:0;gap:6px;overflow:hidden;height:calc(100vh - 120px)}.legacy-class-wrapper.legacy-panel{gap:0;padding:0}.legacy-class-wrapper .legacy-panel-title{margin:0;flex-shrink:0}.legacy-class-wrapper .legacy-panel-body{min-height:0;overflow:visible}.legacy-class-wrapper .legacy-panel-body.expanded{overflow:auto}.legacy-class-wrapper .legacy-panel-body.legacy-class-panel.expanded{flex:1 1 0;min-height:200px;overflow-y:auto!important}.legacy-category-list{flex:0 0 auto;max-height:270px;overflow-y:auto!important;overflow-x:hidden!important}.legacy-class-date{padding:10px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 8px 8px;flex-shrink:0;z-index:1;overflow:visible;position:relative;z-index:100}.legacy-input-class-date{width:100%;height:36px;border:1px solid #d1d5db;border-radius:6px;padding:6px 12px;font-size:.875rem}.sidebar-layout{display:flex;gap:0;align-items:flex-start;width:100%;position:relative;z-index:10}.sidebar-menu{display:flex;flex-direction:column;background:#f8faff;border-radius:8px 0 0 8px;min-width:180px;padding:8px 0;border:1px solid #bfdbfe;border-right:none}.sidebar-logo{display:flex;align-items:center;gap:12px;padding:12px 18px 14px;border-bottom:1px solid #93bbf5;background:#2563eb;border-radius:7px 0 0;margin:-8px 0 4px}.sidebar-logo-img{width:42px;height:42px;border-radius:6px;object-fit:cover;border:2px solid rgba(255,255,255,.25)}.sidebar-logo-text{display:flex;flex-direction:column;gap:2px}.sidebar-logo-title{font-size:1.1rem;font-weight:700;color:#fff;letter-spacing:.5px}.sidebar-logo-since{font-size:.75rem;color:#ffffffb3;letter-spacing:.5px}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;padding:9px 18px;background:transparent;border:none;color:#64748b;font-size:.95rem;text-align:left;cursor:pointer;transition:all .15s ease;font-family:inherit}.sidebar-menu-item:hover,.sidebar-menu-item.active{background:#eef2fb;color:#1e293b}.sidebar-menu-item.no-sub{color:#64748b}.sidebar-menu-item.no-sub:hover,.sidebar-menu-item.no-sub.active{background:#eef2fb;color:#1e293b}.sidebar-menu-icon{margin-right:10px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-menu-label{flex:1}.sidebar-menu-arrow{font-size:.75rem;color:#64748b;margin-left:8px}.sidebar-menu-item:hover .sidebar-menu-arrow,.sidebar-menu-item.active .sidebar-menu-arrow{color:#1e293b}.sidebar-menu-item-wrap{position:relative}.sidebar-submenu{position:absolute;left:100%;top:0;background:#fff;border-radius:8px;min-width:180px;padding:6px;border:1px solid #bfdbfe;box-shadow:4px 4px 12px #0000001a;z-index:20}.sidebar-menu-item-wrap:nth-last-child(-n+4) .sidebar-submenu{top:auto;bottom:0}.sidebar-submenu-content{display:flex;flex-direction:column;gap:2px}.sidebar-submenu-item{display:block;padding:10px 14px;background:transparent;border:none;color:#64748b;font-size:.92rem;text-align:left;cursor:pointer;border-radius:6px;transition:all .15s ease;font-family:inherit}.sidebar-submenu-item:hover{background:#eef2fb;color:#1e293b}.sidebar-submenu-item:before{content:"- ";color:#64748b}.sidebar-submenu-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:200px;color:#64748b;font-size:.9rem}.sidebar-overlay{position:fixed;inset:0;z-index:5}.dashboard-main-content{flex:1;padding:0 24px 16px;display:flex;flex-wrap:wrap;gap:16px;min-width:0;align-items:flex-start;zoom:.9}.dashboard-topbar{width:100%;display:flex;align-items:center;gap:12px;padding:4px 0 8px}.dashboard-topbar__right{display:flex;align-items:center;gap:12px;margin-left:auto;flex-shrink:0}.dashboard-card{background:#fff;border-radius:12px;border:1px solid #e2e8f0;overflow:hidden;box-shadow:0 1px 3px #0000000f}.dashboard-left-column{width:calc(42% - 8px);min-width:400px;display:flex;flex-direction:column;gap:16px}.dashboard-left-column .dashboard-card{width:100%}.dashboard-right-column{width:calc(58% - 8px);min-width:400px;display:flex;flex-direction:column;gap:16px}.dashboard-right-column .dashboard-card{width:100%}.dashboard-card.new-students-card .dashboard-card-header,.dashboard-card.teacher-newstudents-card .dashboard-card-header{background:#dbeafe;color:#1e40af}.dashboard-card.withdrawn-students-card .dashboard-card-header{background:#fee2e2;color:#991b1b}.dashboard-card.transfer-students-card .dashboard-card-header{background:#dcfce7;color:#166534}.dashboard-card.absence-card .dashboard-card-header{background:#fef3c7;color:#92400e}.dashboard-card.consultation-card .dashboard-card-header{background:#d1fae5;color:#065f46}.badge-blue{background:#2563eb}.badge-red{background:#dc2626}.badge-purple{background:#7c3aed}.badge-orange{background:#d97706}.badge-green{background:#059669}.working-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;background:#fef3c7;color:#92400e;animation:working-pulse 2s ease-in-out infinite}@keyframes working-pulse{0%,to{opacity:1}50%{opacity:.6}}.row-working{background:#fffbeb}.absence-type-badge{padding:2px 8px;border-radius:4px;font-size:.8rem;font-weight:600}.absence-type-badge.type-absence{background:#fee2e2;color:#991b1b}.absence-type-badge.type-late{background:#fef9c3;color:#854d0e}.status-badge.status-withdrawn{background:#fee2e2;color:#991b1b;padding:2px 8px;border-radius:4px;font-size:.8rem;font-weight:600}.status-badge.status-transfer{background:#dbeafe;color:#1e40af;padding:2px 8px;border-radius:4px;font-size:.8rem;font-weight:600}.dashboard-card-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#f0f4f8;color:#1e293b;border-bottom:1px solid #e2e8f0;font-size:.88rem}.dashboard-card-actions{display:flex;align-items:center;gap:8px}.dashboard-date-input{padding:4px 8px;border:1px solid rgba(0,0,0,.15);border-radius:4px;background:#fff9;color:inherit;font-size:.85rem;cursor:pointer}.dashboard-date-input::-webkit-calendar-picker-indicator{cursor:pointer}.dashboard-card-title{margin:0;font-size:.95rem;font-weight:600;display:flex;align-items:center;gap:8px}.dashboard-card-title .badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;background:#6b7280;color:#fff;font-size:.75rem;font-weight:700;border-radius:10px}.dashboard-card-more{background:transparent;border:none;color:inherit;font-size:1.2rem;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background .15s}.dashboard-card-more:hover{background:#00000014}.dashboard-card-body{padding:0;overflow-x:auto}.dashboard-loading,.dashboard-empty{padding:24px 14px;text-align:center;color:#6b7280;font-size:.82rem}.dashboard-table{width:100%;border-collapse:collapse;font-size:.78rem}.dashboard-table thead{background:#f4f7fc}.dashboard-table th{padding:7px 8px;font-weight:600;color:#475569;text-align:left;border-bottom:1px solid #bfdbfe;white-space:nowrap}.dashboard-table td{padding:7px 8px;color:#1e293b;border-bottom:1px solid #f0ebe4;vertical-align:middle;white-space:nowrap}.dashboard-table tbody tr:hover{background:#f0f4fa}.dashboard-table tbody tr:last-child td{border-bottom:none}.admin-delete-btn{background:none;border:none;color:#cbd5e1;font-size:14px;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1;transition:all .15s}.admin-delete-btn:hover{color:#4b5563;background:#f3f4f6}.dashboard-pagination{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid #eef2f7}.dashboard-pagination-btn{padding:4px 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:.8rem;cursor:pointer}.dashboard-pagination-btn:hover:not(:disabled){background:#f8fafc}.dashboard-pagination-btn:disabled{opacity:.45;cursor:not-allowed}.dashboard-pagination-info{min-width:52px;text-align:center;font-size:.8rem;color:#475569}.consultation-table .col-target{white-space:nowrap;width:60px}.consultation-target-badge{display:inline-block;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:10px}.consultation-target-badge.target-office{background:#dbeafe;color:#1e40af}.consultation-target-badge.target-teacher{background:#fce7f3;color:#9d174d}.clickable-row{cursor:pointer;transition:background .15s}.clickable-row:hover{background:#f0f4ff}.consultation-response-modal{background:#fff;border-radius:12px;width:480px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0003}.consultation-response-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid #e5e7eb;font-size:1.05rem;font-weight:600;color:#111}.consultation-response-modal-body{padding:20px 24px;max-height:calc(80vh - 120px);overflow-y:auto}.consultation-response-info{margin-bottom:16px}.consultation-response-row{display:flex;padding:6px 0;font-size:.9rem}.consultation-response-label{width:70px;color:#6b7280;flex-shrink:0}.consultation-response-value{color:#111;font-weight:500}.consultation-response-content-box{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:14px;margin-bottom:16px}.consultation-response-content-label{font-size:.8rem;font-weight:600;color:#6b7280;margin-bottom:8px}.consultation-response-attachments{margin-bottom:16px}.consultation-attachment-list{display:flex;flex-direction:column;gap:6px}.consultation-attachment-link{display:inline-block;font-size:.82rem;color:#2563eb;text-decoration:none;padding:6px 10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;word-break:break-all}.consultation-attachment-link:hover{background:#dbeafe}.consultation-response-content-text{font-size:.9rem;color:#1f2937;line-height:1.6;white-space:pre-wrap}.consultation-response-form label{display:block;font-size:.9rem;font-weight:600;color:#374151;margin-bottom:8px}.consultation-response-form textarea{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;font-family:inherit;resize:vertical;box-sizing:border-box}.consultation-response-form textarea:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.consultation-response-title{font-size:1rem;font-weight:600;color:#111827;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}.consultation-thread{margin-top:16px;margin-bottom:16px;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.consultation-thread-label{padding:10px 14px;font-size:13px;font-weight:600;color:#374151;background:#f9fafb;border-bottom:1px solid #e5e7eb}.consultation-thread-messages{max-height:360px;overflow-y:auto;padding:8px 0}.thread-msg{padding:12px 16px;border-bottom:1px solid #e5e7eb}.thread-msg:last-child{border-bottom:none}.thread-msg--parent{background:#fefce8}.thread-msg--staff{background:#f0fdf4}.thread-msg-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.thread-msg-sender{font-size:12px;font-weight:700;padding:1px 8px;border-radius:4px}.sender-parent{background:#fef3c7;color:#92400e}.sender-staff{background:#d1fae5;color:#065f46}.thread-msg-date{font-size:11px;color:#9ca3af}.thread-msg-content{font-size:14px;color:#1f2937;line-height:1.6;white-space:pre-wrap}.thread-msg-attachments{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px}.consultation-thread+.consultation-response-form{margin-top:4px}.status-badge.status-followup{background:#fff7ed;color:#ea580c;border:1px solid #fed7aa}.consultation-response-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 12px 12px}.consultation-btn{padding:8px 20px;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;border:none;transition:background .15s,opacity .15s}.consultation-btn:disabled{opacity:.5;cursor:not-allowed}.consultation-btn--cancel{background:#f3f4f6;color:#374151;border:1px solid #d1d5db}.consultation-btn--cancel:hover{background:#e5e7eb}.consultation-btn--submit{background:#2563eb;color:#fff}.consultation-btn--submit:hover:not(:disabled){background:#1d4ed8}.consultation-table .col-student{font-weight:600;color:#1e293b;white-space:nowrap}.consultation-table .col-type{color:#64748b;white-space:nowrap;font-size:.8rem}.consultation-table .col-content{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#444}.consultation-table .col-date{color:#6b7280;white-space:nowrap;font-size:.8rem}.consultation-table .col-status{white-space:nowrap}.status-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:.75rem;font-weight:500}.status-badge.status-waiting{background:#fef9c3;color:#854d0e}.status-badge.status-progress{background:#dbeafe;color:#1e40af}.status-badge.status-complete{background:#dcfce7;color:#166534}.teacher-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}.teacher-class-card{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;cursor:pointer;transition:all .15s;text-align:left;font:inherit;width:100%}.teacher-class-card:hover{background:#f1f5f9;border-color:#cbd5e1}.teacher-class-card.active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.teacher-class-card.today{border-left:3px solid #10b981}.teacher-class-card.today.active{border-left:3px solid #3b82f6}.class-card-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.class-card-name{font-size:.85rem;font-weight:600;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.today-badge{flex-shrink:0;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;background:#dcfce7;color:#166534;margin-left:8px}.teacher-date-info{font-size:.8rem;color:#6b7280}.teacher-stats-inline{display:flex;gap:10px;flex-wrap:wrap}.stat-inline{font-size:.78rem;font-weight:500;color:#6b7280}.stat-inline.stat-present{color:#166534}.stat-inline.stat-late{color:#92400e}.stat-inline.stat-absent{color:#991b1b}.stat-inline.stat-none{color:#6b7280}.status-badge.status-present{background:#dcfce7;color:#166534}.status-badge.status-late{background:#fef3c7;color:#92400e}.status-badge.status-absent{background:#fee2e2;color:#991b1b}.status-badge.status-makeup{background:#dbeafe;color:#1e40af}.status-badge.status-early{background:#ffedd5;color:#9a3412}.status-badge.status-none{background:#f3f4f6;color:#6b7280}.dashboard-date-input{padding:4px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem}.teacher-dashboard-grid{flex:1;padding:16px 24px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;min-width:0;align-items:start}.teacher-col{display:flex;flex-direction:column;gap:16px;min-width:0}.teacher-col .dashboard-card{width:100%}@media(max-width:1200px){.teacher-dashboard-grid{grid-template-columns:1fr 1fr}.teacher-col-3{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}}@media(max-width:768px){.sidebar-menu{display:none}.teacher-dashboard-grid{grid-template-columns:1fr;padding:12px}.teacher-col-3,.teacher-class-grid{grid-template-columns:1fr}.teacher-stats-inline{gap:6px}.stat-inline{font-size:.72rem}.dashboard-card-header{padding:10px 12px}.dashboard-card-title{font-size:.85rem}.dashboard-table{font-size:.78rem}.dashboard-table th{padding:8px;font-size:.75rem}.dashboard-table td{padding:8px}.teacher-attendance-table .col-school,.teacher-attendance-table th:nth-child(3){display:none}.consultation-table .col-content{max-width:80px;overflow:hidden;text-overflow:ellipsis}.absence-table .col-reason{max-width:60px;overflow:hidden;text-overflow:ellipsis}.teacher-class-card{padding:8px 10px}.class-card-name{font-size:.8rem}}.mobile-drawer-overlay{position:fixed;inset:0;background:#0006;z-index:1000}.mobile-drawer{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:80vw;background:#fff;box-shadow:-4px 0 16px #00000026;display:flex;flex-direction:column;z-index:1001}.mobile-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;font-size:1.05rem;font-weight:600;color:#1e293b}.mobile-drawer-close{background:transparent;border:none;font-size:1.2rem;color:#6b7280;cursor:pointer;padding:4px 8px;border-radius:4px}.mobile-drawer-close:hover{background:#f3f4f6;color:#1e293b}.mobile-drawer-content{flex:1;overflow-y:auto;padding:8px 0}.mobile-menu-group{border-bottom:1px solid #f3f4f6}.mobile-menu-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 20px;background:transparent;border:none;font-size:.95rem;color:#374151;cursor:pointer;text-align:left;font-family:inherit}.mobile-menu-item:hover,.mobile-menu-item.active{background:#f0f4ff;color:#2563eb}.mobile-menu-arrow{font-size:.7rem;color:#9ca3af;transition:transform .2s}.mobile-menu-arrow.open{transform:rotate(180deg)}.mobile-submenu{background:#f9fafb;padding:4px 0}.mobile-submenu-item{display:block;width:100%;padding:12px 20px 12px 36px;background:transparent;border:none;font-size:.88rem;color:#4b5563;cursor:pointer;text-align:left;font-family:inherit}.mobile-submenu-item:hover{background:#e0e7ff;color:#1e40af}@media(max-width:480px){.teacher-dashboard-grid{padding:8px;gap:10px}.dashboard-card-header{padding:8px 10px}.dashboard-card-title{font-size:.8rem}.dashboard-table{font-size:.72rem}.dashboard-table th{padding:6px;font-size:.7rem}.dashboard-table td{padding:6px}.teacher-class-card{padding:6px 8px}.class-card-name{font-size:.75rem}.stat-inline{font-size:.65rem}.dashboard-card-title .badge{font-size:.65rem;min-width:16px;height:16px;padding:0 4px}}.consultation-requests-page,.consultation-history-page,.consultation-page{padding:20px}.consultation-requests-page .page-header,.consultation-history-page .page-header,.consultation-page .page-header,.absence-notices-page .page-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.consultation-requests-page .page-header h2,.consultation-history-page .page-header h2,.consultation-page .page-header h2,.absence-notices-page .page-header h2{font-size:1.3rem;font-weight:700;color:#1e293b;margin:0}.page-header-count{font-size:.9rem;color:#6b7280;font-weight:500}.consultation-filters{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filter-btn{padding:6px 14px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:.85rem;cursor:pointer;transition:all .15s}.filter-btn:hover{background:#f3f4f6}.filter-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.consultation-search{margin-left:auto}.consultation-search input{padding:6px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;width:220px}.consultation-search input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.consultation-req-table .col-content,.consultation-history-table .col-content{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#374151}.requester-type{font-size:.75rem;color:#6b7280;margin-left:4px}.consultation-response-content-box.response-box{background:#f0f9ff;border-left:3px solid #2563eb}.consultation-response-meta{display:flex;justify-content:space-between;margin-top:10px;padding-top:8px;border-top:1px solid #e5e7eb;font-size:.8rem;color:#6b7280}.absence-notices-page{padding:20px;max-width:900px;margin:0 auto}.filter-btn-badge{margin-left:6px;background:#ef4444;color:#fff;border-radius:10px;padding:2px 7px;font-size:12px;font-weight:700}.absence-card-list{display:flex;flex-direction:column;gap:12px}.absence-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}.absence-card--pending{border-color:#fbbf24}.absence-card--absence{border-left:4px solid #ef4444}.absence-card--late{border-left:4px solid #f59e0b}.absence-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.absence-card-badges{display:flex;align-items:center;gap:8px}.absence-type-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600}.absence-type-badge--absence{background:#fee2e2;color:#991b1b}.absence-type-badge--late{background:#fef9c3;color:#854d0e}.absence-reason-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:500;background:#f3f4f6;color:#374151}.absence-status-badge{font-size:12px;padding:3px 10px;border-radius:6px;font-weight:600}.absence-status-badge--pending{background:#fffbeb;color:#b45309}.absence-status-badge--confirmed{background:#ecfdf5;color:#059669}.absence-card-student{font-size:15px;margin-bottom:4px}.absence-card-student-name{font-weight:600;color:#111}.absence-card-student-grade{font-weight:400;color:#64748b;margin-left:8px;font-size:13px}.absence-card-classes{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.absence-class-tag{font-size:12px;padding:2px 8px;border-radius:4px;background:#dbeafe;color:#1e40af;font-weight:500}.absence-card-date{font-size:14px;color:#374151;margin-bottom:4px}.absence-card-memo{font-size:13px;color:#6b7280;background:#f9fafb;padding:8px 12px;border-radius:8px;margin-top:6px}.absence-card-meta{font-size:12px;color:#6b7280;margin-top:8px;display:flex;flex-wrap:wrap;gap:12px}.absence-card-meta--confirmed{color:#059669}.absence-confirm-modal{background:#fff;border-radius:16px;padding:28px 24px 20px;width:400px;max-width:90vw;box-shadow:0 20px 60px #0003}.absence-confirm-icon{text-align:center;margin-bottom:16px}.absence-confirm-icon-circle{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%}.absence-confirm-icon-circle--absence{background:#fee2e2}.absence-confirm-icon-circle--late{background:#fef9c3}.absence-confirm-title{text-align:center;font-size:17px;font-weight:700;color:#111;margin-bottom:20px}.absence-confirm-summary{background:#f8fafc;border-radius:12px;padding:14px 16px;margin-bottom:20px;border:1px solid #e2e8f0}.absence-confirm-details{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#475569}.absence-confirm-detail-row{display:flex;gap:8px}.absence-confirm-detail-label{color:#94a3b8;min-width:40px}.absence-confirm-detail-value{font-weight:500}.absence-confirm-notice{font-size:13px;color:#64748b;margin-bottom:20px;padding:10px 12px;border-radius:8px;line-height:1.5}.absence-confirm-notice--absence{background:#fef2f2}.absence-confirm-notice--late{background:#fffbeb}.absence-confirm-notice-highlight--absence{font-weight:600;color:#dc2626}.absence-confirm-notice-highlight--late{font-weight:600;color:#d97706}.absence-confirm-notice-bold{font-weight:600}.absence-confirm-buttons{display:flex;gap:10px}.absence-confirm-buttons .enroll-cancel-btn,.absence-confirm-buttons .enroll-confirm-btn{flex:1}.new-students-table th:nth-child(1),.new-students-table td:nth-child(1){width:70px;text-align:left}.new-students-table th:nth-child(2),.new-students-table td:nth-child(2){width:50px;text-align:center}.new-students-table th:nth-child(3),.new-students-table td:nth-child(3){text-align:left}.new-students-table .col-name{font-weight:600;color:#1e293b;white-space:nowrap}.new-students-table .col-grade{white-space:nowrap}.new-students-table .col-course{color:#64748b;white-space:normal;font-size:.8rem;line-height:1.25}.new-students-course-lines{display:flex;flex-direction:column;gap:2px}.new-students-course-lines .course-line{white-space:nowrap}.new-students-table .col-date{white-space:nowrap;min-width:112px}@media(max-width:1100px){.sidebar-menu{min-width:150px}.dashboard-main-content{padding:12px 16px;gap:12px;zoom:.82}.dashboard-left-column,.dashboard-right-column{min-width:340px}}@media(max-width:960px){.sidebar-menu{min-width:130px;font-size:.85rem}.dashboard-main-content{padding:8px 12px;gap:10px;zoom:.72}.dashboard-left-column,.dashboard-right-column{min-width:300px}}@media(max-width:850px){.sidebar-menu{min-width:110px;font-size:.8rem}.sidebar-menu-item{padding:6px 8px}.dashboard-main-content{padding:6px 8px;gap:8px;zoom:.62}.dashboard-left-column,.dashboard-right-column{min-width:260px}}@media(max-width:768px){.sidebar-layout{flex-direction:column}.dashboard-main-content{width:100%;padding:12px;zoom:1}.dashboard-left-column,.dashboard-right-column{width:100%;min-width:0}.dashboard-card-actions{gap:4px}.dashboard-date-input{font-size:.8rem;padding:3px 6px}}.attendance-lookup-page{max-width:100%;padding:24px 32px;min-height:100vh;color:#1f2937}.attendance-lookup-header{margin-bottom:16px}.attendance-lookup-header h1{margin:0;font-size:1.5rem;font-weight:700;color:#1a202c}.attendance-lookup-filters{background:#f0f4fa;border-radius:12px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000001a}.attendance-lookup-filters .filter-row{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap}.attendance-lookup-filters .filter-group{display:flex;flex-direction:column;gap:6px}.attendance-lookup-filters .filter-group label{font-size:.8rem;font-weight:600;color:#4a5568}.attendance-lookup-filters .date-range{display:flex;align-items:center;gap:8px}.attendance-lookup-filters .date-range input,.attendance-lookup-filters select{padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;font-size:.9rem;color:#1a202c;background:#fff}.attendance-lookup-filters .date-range input:focus,.attendance-lookup-filters select:focus{outline:none;border-color:#667eea}.attendance-lookup-filters select{min-width:180px}.attendance-lookup-filters .search-btn{padding:8px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.attendance-lookup-filters .search-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.attendance-lookup-filters .search-btn:disabled{opacity:.6;cursor:not-allowed}.attendance-error{background:#fed7d7;color:#c53030;padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:.9rem}.attendance-loading{display:flex;justify-content:center;padding:64px 0}.attendance-lookup-content{display:flex;flex-direction:column;gap:24px;padding-bottom:32px}.attendance-class-group{background:#f0f4fa;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.class-group-header{background:#4a5568;color:#fff;padding:12px 16px;display:flex;align-items:center;gap:16px}.class-group-header .class-name{font-weight:600;font-size:.95rem}.class-group-header .class-info{font-size:.8rem;color:#333}.attendance-table-wrapper{overflow-x:auto}.attendance-table .col-no{width:40px;color:#4a5568}.attendance-table .col-name{min-width:70px;max-width:80px;font-weight:500;text-align:center;color:#1a202c}.attendance-table .col-info{min-width:200px;color:#4a5568;font-size:.8rem;text-align:left;padding-left:8px}.attendance-table .col-date{min-width:50px;font-size:.8rem}.attendance-table .col-date.holiday-col{background:#e5e7eb}.attendance-table .holiday-label{font-size:.65rem;color:#374151;font-weight:600}.attendance-table .holiday-cell{background:#e5e7eb;color:#374151;font-weight:600;font-size:.7rem}.attendance-table .col-stat{min-width:45px;font-weight:500}.attendance-table .status-present{background:#dcfce7;color:#16a34a}.attendance-table .status-late{background:#fef3c7;color:#d39b2a}.attendance-table .status-makeup{background:#e9d8fd;color:#44337a}.attendance-table .status-absent{background:#fed7d7;color:#822727;font-weight:600}.attendance-table .status-makeup-absent{background:#fed7d7;color:#822727;font-weight:600;font-size:.75em}.attendance-table .status-makeup-late{background:#e9d8fd;color:#44337a;font-size:.75em}.attendance-table .status-early-leave{background:#feebc8;color:#c05621}.attendance-table .status-makeup-early-leave{background:#e9d8fd;color:#44337a;font-size:.75em}.attendance-table .status-none{color:#374151}.attendance-table .not-enrolled{background:#e5e7eb;color:#111;font-size:.85em;font-weight:600}.attendance-table th.stat-present,.attendance-table td.stat-present{background:#dcfce7;color:#16a34a;border-left:2px solid #bbb}.attendance-table th.stat-late,.attendance-table td.stat-late{background:#fef3c7;color:#d39b2a}.attendance-table th.stat-makeup,.attendance-table td.stat-makeup{background:#e9d8fd;color:#44337a}.attendance-table th.stat-absent,.attendance-table td.stat-absent{background:#fed7d7;color:#822727}.attendance-table th.stat-early-leave,.attendance-table td.stat-early-leave{background:#feebc8;color:#c05621;border-right:2px solid #bbb}.attendance-table .makeup-out-label{font-size:.7em;opacity:.8;display:block;line-height:1;margin-top:1px}.attendance-table .status-makeup-next,.attendance-table th.stat-makeup-next,.attendance-table td.stat-makeup-next{background:#feebc8;color:#744210}.attendance-table .makeup-name{color:#7c3aed;font-weight:600}.attendance-table .makeup-badge{display:inline-block;margin-left:6px;padding:2px 6px;background:#7c3aed;color:#fff;border-radius:999px;font-size:.65rem;font-weight:500}.attendance-table .makeup-origin{font-size:.7rem;color:#6b46c1;margin-top:2px}.attendance-table .col-fee{min-width:80px;text-align:right;padding:8px 6px;font-size:.8rem}.attendance-table .col-payment{min-width:90px;text-align:center;padding:8px 4px}.attendance-table .col-discount{min-width:60px;text-align:center;padding:8px 4px}.attendance-table .fee-input{width:70px;padding:4px 6px;border:1px solid #cbd5e0;border-radius:4px;font-size:.8rem;text-align:right;background:#fff;color:#2d3748}.attendance-table .fee-input:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 2px #4299e133}.attendance-table .payment-select{width:80px;padding:4px 6px;border:1px solid #cbd5e0;border-radius:4px;font-size:.75rem;background:#fff;color:#2d3748;cursor:pointer}.attendance-table .payment-select:focus{outline:none;border-color:#4299e1}.attendance-table .discount-checkbox{width:16px;height:16px;cursor:pointer}.attendance-table .fee-unpaid{color:#c53030;font-weight:600}.attendance-table .fee-overpaid{color:#2f855a;font-weight:600}.attendance-table .subtotal-row{background:#f0fff4;font-weight:600}.attendance-table .subtotal-row .subtotal-label{text-align:right;padding-right:16px;color:#2d3748}.attendance-total{background:#f0f4fa;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.attendance-total .total-table{background:#f0ebe3}.attendance-total .total-row{font-weight:700;font-size:.95rem}.attendance-total .total-row .total-label{text-align:right;padding:12px 24px;color:#2d3748}.attendance-total .total-row .col-stat{padding:12px 8px}.attendance-empty{text-align:center;padding:64px;color:#4a5568;font-size:1rem;background:#f0f4fa;border-radius:12px;box-shadow:0 1px 3px #0000001a}@media(max-width:768px){.attendance-lookup-page{padding:16px;height:auto;overflow:visible}.attendance-lookup-filters .filter-row{flex-direction:column;align-items:stretch}.attendance-lookup-filters .filter-group,.attendance-lookup-filters select,.attendance-lookup-filters .search-btn{width:100%}}.detail-page{max-width:480px;margin:0 auto;padding:24px 20px}.detail-loading{display:flex;justify-content:center;padding:64px 0}.detail-error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 20px;text-align:center}.detail-header{display:flex;align-items:center;gap:16px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #cbd5e1}.detail-avatar{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;flex-shrink:0;overflow:hidden}.detail-avatar-photo{width:100%;height:100%;object-fit:cover}.detail-avatar-wrapper{position:relative;cursor:pointer;flex-shrink:0}.detail-avatar-overlay{position:absolute;inset:0;border-radius:inherit;background:#0006;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;color:#fff}.detail-avatar-wrapper:hover .detail-avatar-overlay{opacity:1}.detail-photo-remove{background:#fee2e2;color:#991b1b;border:none;border-radius:50%;width:20px;height:20px;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin-left:-8px;align-self:flex-start}.detail-photo-remove:hover{background:#dc2626;color:#fff}.detail-info h1{margin:0 0 2px;font-size:1.25rem;font-weight:700;color:#1a202c}.detail-username{font-size:.85rem;color:#4a5568}.detail-message{padding:10px 14px;border-radius:8px;margin-bottom:16px;font-size:.85rem}.detail-message.success{background:#c6f6d5;color:#22543d}.detail-message.error{background:#fed7d7;color:#c53030}.detail-form{display:flex;flex-direction:column;gap:14px}.detail-row{display:flex;flex-direction:column;gap:6px}.detail-label{font-size:.8rem;font-weight:600;color:#4a5568}.detail-input{padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:.95rem;color:#1a202c;background:#fff;transition:border-color .2s,box-shadow .2s}.detail-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.detail-input.readonly{background:#f7fafc;color:#4a5568;cursor:not-allowed}.detail-title-groups{display:flex;flex-direction:column;gap:12px}.detail-title-group{display:flex;flex-direction:column;gap:6px}.detail-title-label{font-size:.75rem;color:#4a5568;font-weight:500}.detail-title-buttons{display:flex;flex-wrap:wrap;gap:6px}.detail-title-btn{padding:6px 12px;border:1px solid #cbd5e1;border-radius:16px;background:#fff;color:#4a5568;font-size:.8rem;cursor:pointer;transition:all .2s}.detail-title-btn:hover{border-color:#667eea;color:#667eea}.detail-title-btn.selected{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.detail-submit{margin-top:8px;padding:12px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.detail-submit:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.staff-detail-page{max-width:100%;padding:16px 24px}.staff-detail-page .detail-header{margin-bottom:12px;padding-bottom:10px}.staff-detail-page .detail-avatar{width:110px;height:156px;font-size:1.6rem;border-radius:10px}.staff-detail-page .detail-info h1{font-size:1.2rem}.staff-detail-page .detail-form{gap:10px}.detail-row-group{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:10px 14px;background:#fafbfc;border-radius:10px}.detail-row{display:flex;flex-direction:column;gap:4px}.detail-label{font-size:.8rem;font-weight:600;color:#374151}.detail-label .required{color:#e53e3e;margin-left:4px}.staff-detail-page .detail-input{padding:8px 10px;border:2px solid #cbd5e1;border-radius:8px;font-size:.85rem}.detail-gender-buttons,.detail-position-buttons,.detail-title-buttons,.detail-department-buttons{display:flex;flex-wrap:wrap;gap:6px}.detail-gender-btn,.detail-position-btn,.detail-title-btn,.detail-department-btn{padding:7px 14px;border:2px solid #cbd5e1;border-radius:8px;background:#fff;color:#4a5568;font-size:.8rem;font-family:inherit;cursor:pointer;transition:all .2s}.detail-gender-btn:hover,.detail-position-btn:hover,.detail-title-btn:hover,.detail-department-btn:hover{border-color:#667eea;color:#667eea;background:#f7f8ff}.detail-gender-btn.selected,.detail-position-btn.selected,.detail-title-btn.selected,.detail-department-btn.selected{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.detail-status-buttons{display:flex;gap:6px}.detail-status-btn{padding:7px 14px;border:2px solid #cbd5e1;border-radius:8px;background:#fff;color:#4a5568;font-size:.8rem;font-family:inherit;cursor:pointer;transition:all .2s}.detail-status-btn.active:hover{border-color:#48bb78;color:#48bb78;background:#f0fff4}.detail-status-btn.active.selected{background:#48bb78;color:#fff;border-color:transparent}.detail-status-btn.resigned:hover{border-color:#e53e3e;color:#e53e3e;background:#fff5f5}.detail-status-btn.resigned.selected{background:#e53e3e;color:#fff;border-color:transparent}.detail-input:disabled{background:#f7fafc;color:#a0aec0;cursor:not-allowed}.staff-detail-page .detail-contact-row{grid-template-columns:150px 150px 1fr}.detail-email-row{grid-column:span 1}.detail-email-group{display:flex;align-items:center}.detail-email-id{flex:1 1 100px;min-width:60px;max-width:140px}.detail-email-at{margin:0 4px;font-weight:600;color:#4a5568;flex-shrink:0}.detail-email-domain{min-width:90px;max-width:120px}.detail-placeholder{padding:8px 10px;background:#fff;border:2px solid #cbd5e1;border-radius:8px;color:#a0aec0;font-size:.85rem}.detail-auto-value{padding:8px 10px;background:#f3f4f6;border:2px solid #cbd5e1;border-radius:8px;color:#374151;font-size:.85rem;font-weight:500}.staff-detail-page .detail-submit{margin-top:8px;padding:10px 20px;font-size:.9rem}.password-reset-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;border:2px solid #e53e3e;border-radius:8px;background:#fff;color:#e53e3e;font-size:.85rem;font-family:inherit;font-weight:500;cursor:pointer;transition:all .2s}.password-reset-btn:hover{background:#fff5f5}.password-reset-btn:disabled{opacity:.6;cursor:not-allowed}.password-reset-confirm{display:flex;flex-direction:column;gap:8px}.password-reset-warning{font-size:.85rem;color:#e53e3e;font-weight:500}.password-reset-actions{display:flex;gap:8px}.password-reset-yes{padding:6px 16px;border:none;border-radius:6px;background:#e53e3e;color:#fff;font-size:.8rem;font-family:inherit;font-weight:500;cursor:pointer;transition:background .2s}.password-reset-yes:hover{background:#c53030}.password-reset-no{padding:6px 16px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:.8rem;font-family:inherit;cursor:pointer;transition:background .2s}.password-reset-no:hover{background:#f9fafb}.password-reset-done{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#f0fff4;border:1px solid #c6f6d5;border-radius:8px;color:#22543d;font-size:.85rem;font-weight:500}.button-spinner.small{width:14px;height:14px;border:2px solid rgba(229,62,62,.3);border-top-color:#e53e3e}.staff-password-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.staff-password-modal{background:#fff;border-radius:16px;padding:32px 24px;width:100%;max-width:380px;box-shadow:0 20px 60px #0000004d}.staff-password-modal h2{margin:0 0 8px;font-size:1.3rem;color:#1a202c;text-align:center}.staff-password-modal-desc{margin:0 0 24px;color:#4a5568;font-size:.9rem;text-align:center;line-height:1.5}.staff-password-input-group{margin-bottom:16px}.staff-password-input-group label{display:block;margin-bottom:6px;font-size:.9rem;color:#374151;font-weight:500}.staff-password-input-group input{width:100%;padding:12px 16px;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;box-sizing:border-box;transition:border-color .2s,box-shadow .2s}.staff-password-input-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea26}.staff-password-error{color:#dc2626;font-size:.85rem;margin:12px 0 0;text-align:center}.staff-password-modal-actions{margin-top:24px}.staff-password-btn{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.staff-password-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.staff-password-btn:disabled{opacity:.7;cursor:not-allowed}@media(max-width:720px){.staff-detail-page{max-width:100%}.detail-row-group{grid-template-columns:1fr}.detail-email-row{grid-column:span 1}}.staff-categories{display:flex;flex-direction:row;gap:20px;flex:1;min-height:0;overflow:hidden}.staff-category{background:#fff;border-radius:12px;padding:16px 20px;box-shadow:0 1px 3px #0000001a;flex:1;min-width:280px;display:flex;flex-direction:column;overflow:hidden}.staff-category-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #cbd5e1;flex-shrink:0}.staff-category-badge{padding:6px 14px;border-radius:20px;font-size:.9rem;font-weight:600;color:#fff}.staff-category-badge.badge-staff{background:linear-gradient(135deg,#667eea,#764ba2)}.staff-category-badge.badge-assistant{background:linear-gradient(135deg,#38b2ac,#319795)}.staff-category-badge.badge-teacher{background:linear-gradient(135deg,#ed8936,#dd6b20)}.staff-category-count{font-size:.85rem;color:#4a5568}.staff-card-grid{display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1;min-height:0}.staff-card{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border-radius:8px;cursor:pointer;transition:all .15s;border:1px solid #cbd5e1;flex-shrink:0}.staff-card{position:relative}.staff-card:hover{background:#f7fafc;border-color:#667eea;box-shadow:0 2px 8px #00000014}.staff-card-delete{position:absolute;top:4px;right:4px;width:18px;height:18px;border:none;background:#fee2e2;color:#991b1b;border-radius:50%;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.staff-card:hover .staff-card-delete{opacity:1}.staff-card-delete:hover{background:#dc2626;color:#fff}.staff-card-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;flex-shrink:0;background:#cbd5e1;display:flex;align-items:center;justify-content:center}.staff-card-photo{width:100%;height:100%;object-fit:cover}.staff-card-initial{font-size:.85rem;font-weight:600;color:#667eea}.staff-card-info{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.staff-card-name{font-size:.85rem;font-weight:600;color:#1a202c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.staff-card-title{font-size:.7rem;color:#4a5568;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.staff-card-phone{font-size:.75rem;color:#718096;white-space:nowrap}.staff-empty{text-align:center;padding:48px;color:#4a5568;font-size:1rem}.org-chart{display:flex;flex-direction:row;flex-wrap:nowrap;gap:8px;justify-content:flex-start;align-items:stretch;width:100%}.org-section{background:#fff;border-radius:10px;padding:10px 12px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column}.org-section.org-directors{flex:0 0 120px}.org-section.org-staff{flex:1 1 auto;min-width:600px}.org-section.org-teachers{flex:0 0 auto}.org-section.org-assistants{flex:0 0 280px}.org-section.org-assistants .org-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.org-section.org-assistants .staff-card{min-width:120px}.org-section-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #cbd5e1;flex-shrink:0}.org-section-badge{padding:6px 14px;border-radius:20px;font-size:.9rem;font-weight:600;color:#fff}.org-section-badge.badge-admin{background:linear-gradient(135deg,#4a5568,#2d3748)}.org-section-badge.badge-director{background:linear-gradient(135deg,#9f7aea,#805ad5)}.org-section-badge.badge-staff{background:linear-gradient(135deg,#667eea,#764ba2)}.org-section-badge.badge-teacher{background:linear-gradient(135deg,#ed8936,#dd6b20)}.org-section-badge.badge-assistant{background:linear-gradient(135deg,#38b2ac,#319795)}.org-section-count{font-size:.85rem;color:#4a5568}.org-card-grid{display:flex;flex-direction:column;gap:8px}.org-subsections{display:flex;flex-direction:row;flex-wrap:nowrap;gap:16px;align-items:flex-start}.org-subsection{flex:1 1 120px;min-width:120px;padding:10px;background:#f1f5f9;border-radius:8px;border:1px solid #cbd5e1}.org-subsection-header{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #cbd5e1}.org-subsection-label{font-size:.8rem;font-weight:600;color:#4a5568}.org-subsection-count{font-size:.75rem;color:#718096}.org-staff .org-subsections{display:grid;grid-template-columns:auto auto 1fr;gap:16px;align-items:start}.org-staff .org-subsection .org-card-grid{display:flex;flex-direction:column;gap:8px}.org-staff .org-subsection:last-child{min-width:400px}.org-staff .org-subsection:last-child .org-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.org-subsection[data-dept=중등부]{flex:0 0 260px;min-width:260px}.org-subsection[data-dept=중등부] .org-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.org-subsection[data-dept=초등부]{flex:0 0 130px;min-width:130px}.org-subsection[data-dept=초등부] .org-card-grid{display:flex;flex-direction:column;gap:8px}@media(max-width:768px){.org-chart{flex-direction:column;overflow:visible}.org-section{overflow:visible}.org-subsections{flex-direction:column;overflow:visible}}@media(max-width:640px){.staff-card-grid{grid-template-columns:1fr}.detail-page{padding:24px 16px}.detail-header{flex-direction:column;text-align:center}.detail-avatar{width:64px;height:91px;font-size:1.5rem}}.class-management-page{width:100%;margin:0 auto;padding:24px}.class-management-header{margin-bottom:24px}.class-management-header h1{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0}.class-management-error{background:#fef2f2;color:#dc2626;padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:.9rem}.class-management-loading{display:flex;justify-content:center;align-items:center;padding:60px 20px}.class-management-content{display:grid;grid-template-columns:320px 1fr;gap:20px;background:#f6f8fd;border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000001a}.category-panel{border-right:1px solid #e5e7eb;padding-right:20px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-header h2{font-size:1rem;font-weight:600;color:#1f2937;margin:0}.category-list{display:flex;flex-direction:column;gap:8px}.category-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#fff;border-radius:8px;cursor:pointer;transition:all .15s;border:2px solid #e5e7eb;gap:8px}.category-item:hover{background:#f3f4f6;border-color:#d1d5db}.category-item.selected{background:#eff6ff;border-color:#3b82f6}.category-label{font-size:.78rem;color:#1f2937;font-weight:500;white-space:nowrap}.category-actions{display:flex;gap:6px;opacity:0;transition:opacity .15s}.category-item:hover .category-actions{opacity:1}.copy-btn{padding:4px 10px;font-size:.75rem;border-radius:4px;cursor:pointer;transition:all .15s;background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.copy-btn:hover{background:#dbeafe}.class-panel{min-width:0}.class-list{min-height:200px}.class-management-page .empty-message{text-align:center;color:#374151;font-size:.9rem;padding:40px 20px}.class-table td,.class-table th{white-space:nowrap;vertical-align:middle}.class-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.class-table th.sortable:hover{background:#e5e7eb}.class-table td.actions{vertical-align:middle;white-space:nowrap;text-align:center}.class-table td.actions>*{display:inline-block;margin-right:4px}.class-table td.actions>*:last-child{margin-right:0}.class-table td.fee-cell,.class-table th.fee-header{text-align:right;font-weight:600;color:#1976d2}.class-table td.total-fee-cell,.class-table th.total-fee-header{text-align:left;white-space:normal}.class-table td.total-sum-cell,.class-table th.total-sum-header{text-align:right;font-weight:600;white-space:nowrap}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;justify-content:center;z-index:10000;overflow-y:auto;padding:20px 0}.modal-content{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:480px;margin:auto 0;flex-shrink:0;box-sizing:border-box;box-shadow:0 20px 25px -5px #0000001a}.modal-content.class-modal{max-width:600px}.modal-content.category-modal{max-width:850px;max-height:90vh;overflow-y:auto}.modal-content.delete-confirm-modal{max-width:360px;text-align:center}.modal-content.delete-confirm-modal h3{margin-bottom:16px}.modal-content.delete-confirm-modal p{color:#374151;margin:0 0 8px}.modal-content.delete-confirm-modal .delete-warning{color:#991b1b;font-size:.85rem;margin-bottom:20px}.modal-content.delete-confirm-modal .modal-actions{display:flex;gap:12px;justify-content:center}.modal-content.delete-confirm-modal .btn-cancel{padding:10px 24px;border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:6px;cursor:pointer;font-size:.9rem}.modal-content.delete-confirm-modal .btn-cancel:hover{background:#f9fafb}.modal-content.delete-confirm-modal .btn-delete{padding:10px 24px;border:none;background:#dc2626;color:#fff;border-radius:6px;cursor:pointer;font-size:.9rem}.modal-content.delete-confirm-modal .btn-delete:hover{background:#b91c1c}.modal-content.delete-confirm-modal .btn-delete:disabled,.modal-content.delete-confirm-modal .btn-cancel:disabled{opacity:.6;cursor:not-allowed}.modal-content h3{font-size:1.15rem;font-weight:600;color:#1f2937;margin:0 0 20px}.modal-content .form-group{margin-bottom:16px}.modal-content .form-group label{display:block;font-size:.85rem;font-weight:500;color:#374151;margin-bottom:6px}.modal-content .form-group input,.modal-content .form-group select,.modal-content .form-group textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;color:#111827;transition:border-color .15s;box-sizing:border-box}.modal-content .form-group select{padding:12px 14px;line-height:1.5;min-height:46px}.modal-content .form-group textarea{resize:vertical;min-height:120px}.modal-content .form-group input:focus,.modal-content .form-group select:focus,.modal-content .form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.modal-content .form-group .form-hint{display:block;margin-top:4px;font-size:.8rem;color:#6b7280}.modal-content .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-content .form-row.three-cols{grid-template-columns:1fr 1fr 1fr}.category-preview{padding:12px 14px;background:#f3f4f6;border-radius:6px;font-size:.95rem;font-weight:500;color:#1f2937;border:1px solid #e5e7eb}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}@media(max-width:768px){.class-management-content{grid-template-columns:1fr}.category-panel{border-right:none;border-bottom:1px solid #e5e7eb;padding-right:0;padding-bottom:20px}.class-table{font-size:.8rem}.class-table th,.class-table td{padding:8px 10px}}.payments-table{overflow-x:auto}.payments-header,.payments-row{grid-template-columns:minmax(150px,1.5fr) 90px 90px 90px 90px 90px 90px 80px;min-width:770px}.payments-row{cursor:pointer}.payments-row .amount{text-align:right;font-family:Consolas,Monaco,monospace}.payments-add-btn-row{padding:12px;text-align:center}.payments-add-btn{padding:8px 20px;background:#3b82f6;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .15s ease}.payments-add-btn:hover{background:#2563eb}.payment-modal{min-width:600px;max-width:700px}.payment-form{padding:16px}.payment-form-row{display:flex;gap:12px;margin-bottom:12px}.payment-form-field{display:flex;flex-direction:column;gap:4px;flex:1}.payment-form-field.wide{flex:2}.payment-form-field span{font-size:.8rem;color:#374151;font-weight:500}.payment-form-field input,.payment-form-field select{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;background:#fff;color:#111827}.payment-form-field input:focus,.payment-form-field select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.payment-form-field input[type=number]{text-align:right}.payment-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;padding-top:16px;border-top:1px solid #e5e7eb}.payment-form-actions button{padding:10px 24px;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease}.payment-form-actions button:first-child{background:#3b82f6;color:#fff;border:none}.payment-form-actions button:first-child:hover{background:#2563eb}.payment-form-actions button:last-child{background:#fff;color:#374151;border:1px solid #d1d5db}.payment-form-actions button:last-child:hover{background:#f3f4f6}.history-expand-btn{margin-left:auto;padding:.25rem .5rem;font-size:1rem;background:transparent;border:1px solid rgba(255,255,255,.3);color:#e5e7eb;border-radius:4px;cursor:pointer}.history-expand-btn:hover{background:#ffffff1a;color:#fff}.history-modal-large{width:95vw;max-width:1280px;max-height:80vh}.history-modal-large .legacy-attendance-modal-header{display:flex;justify-content:space-between;align-items:center}.history-modal-tabs{display:flex;gap:.5rem}.history-modal-tabs button{padding:.4rem .8rem;border:none;background:#e5e7eb;color:#374151;border-radius:4px;cursor:pointer;font-size:.85rem}.history-modal-tabs button.active{background:#3b82f6;color:#fff}.history-modal-tabs button:hover:not(.active){background:#d1d5db}.history-modal-body{padding:1rem;overflow-y:auto;max-height:calc(80vh - 60px)}.history-modal-table{width:100%}.history-modal-actions-top{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem;padding:.5rem;background:#f3f4f6;border-radius:4px}.history-select-all{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:#374151;cursor:pointer}.history-select-all input[type=checkbox]{width:16px;height:16px;cursor:pointer}.history-selected-count{font-size:.85rem;color:#3b82f6;font-weight:500}.history-add-btn,.history-delete-btn{padding:.35rem .75rem;border:none;border-radius:4px;font-size:.8rem;cursor:pointer}.history-add-btn{background:#10b981;color:#fff;margin-left:auto}.history-add-btn:hover{background:#059669}.history-delete-btn{background:transparent;color:#6b7280}.history-delete-btn:hover:not(:disabled){background:#f3f4f6;color:#4b5563}.history-delete-btn:disabled{background:#6b7280;cursor:not-allowed;opacity:.6}.history-modal-header-row{display:grid;grid-template-columns:40px 1fr 100px 120px 80px 80px 110px;gap:.5rem;padding:.5rem;background:#dbeafe;border-radius:4px;font-size:.8rem;font-weight:600;color:#1e40af;margin-bottom:.25rem}.history-modal-header-row.payments{grid-template-columns:40px 1fr 90px 90px 90px 90px 80px 60px}.payments-full-scroll{overflow-x:auto}.payments-full-scroll .history-modal-header-row.payments-full,.payments-full-scroll .payments-full-row{min-width:1400px}.payments-full-scroll .history-col-name{overflow:visible;text-overflow:unset}.history-modal-header-row.payments-full{grid-template-columns:40px minmax(320px,1fr) 85px 85px 80px 80px 75px 75px 60px 140px 130px 75px}.history-modal-header-row.arrears{grid-template-columns:40px minmax(250px,1fr) 100px 100px 100px minmax(80px,150px) 60px}.history-modal-header-row.tuitions{grid-template-columns:180px 1fr 60px 80px 100px 60px}.history-modal-row{display:grid;grid-template-columns:40px 1fr 100px 120px 80px 80px 110px;gap:.5rem;padding:.5rem;border-bottom:1px solid #e5e7eb;font-size:.8rem;color:#1f2937;align-items:center}.history-modal-row:hover{background:#f9fafb}.history-modal-table .history-modal-row{grid-template-columns:40px minmax(120px,240px) 100px 120px 80px 80px 110px}.history-modal-table:has(.history-modal-header-row.payments) .history-modal-row{grid-template-columns:40px minmax(120px,220px) 90px 90px 90px 90px 80px 60px}.history-modal-table:has(.history-modal-header-row.payments-full) .history-modal-row,.payments-full-row{grid-template-columns:40px minmax(320px,1fr) 85px 85px 80px 80px 75px 75px 60px 140px 130px 75px}.history-modal-table:has(.history-modal-header-row.arrears) .history-modal-row{grid-template-columns:40px minmax(250px,1fr) 100px 100px 100px minmax(80px,150px) 60px}.history-modal-table:has(.history-modal-header-row.tuitions) .history-modal-row{grid-template-columns:180px minmax(100px,200px) 60px 80px 100px 60px}.history-modal-header-row.points{grid-template-columns:40px 90px 60px 1fr 50px 1fr 70px}.history-modal-table:has(.history-modal-header-row.points) .history-modal-row{grid-template-columns:40px 90px 60px 1fr 50px 1fr 70px}.history-col-check{display:flex;justify-content:center}.history-col-check input[type=checkbox]{width:16px;height:16px;cursor:pointer}.history-col-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;flex-direction:column;gap:2px}.history-col-name--inline{flex-direction:column;align-items:flex-start;gap:2px}.history-col-sub-info{display:flex;gap:6px;align-items:center;font-size:11px}.payment-highlight{background-color:#fef9c3!important;transition:background-color .15s}.refund-row{cursor:default;background-color:#fef2f2!important}.history-sibling-badge{color:#166534;background:#dcfce7;padding:1px 6px;border-radius:3px;font-weight:600}.history-period-label{color:#64748b}.history-original-fee{display:block;font-size:11px;color:#94a3b8;text-decoration:line-through}.history-col-date{text-align:left;white-space:nowrap}.history-col-memo{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;color:#6b7280}.history-col-date.withdrawn{color:#f87171}.history-col-date.transferred{color:#22c55e}.history-col-date.expired{color:#9ca3af}.history-col-teacher,.history-col-handler,.history-col-method{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-col-amount{text-align:left;font-family:monospace}.history-col-amount.arrears{color:#f87171;font-weight:600}.history-col-processor,.history-col-time,.history-col-approval{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem}.history-col-action{display:flex;gap:4px;justify-content:center;white-space:nowrap}.history-col-action button{padding:.2rem .5rem;font-size:.75rem;background:#3b82f6;color:#fff;border:none;border-radius:3px;cursor:pointer}.history-col-action button:hover{background:#2563eb}.history-col-action button.btn--warning{background:#f59e0b}.history-col-action button.btn--warning:hover{background:#d97706}.history-col-sessions,.history-col-fee,.history-col-status{text-align:center}.history-col-sessions{min-width:50px}.history-col-fee{min-width:80px;font-family:monospace}.history-col-status{min-width:50px}.history-modal-row.inactive{background-color:#f3f4f6;color:#374151}.history-modal-row.tuition-total{background-color:#dbeafe;border-top:2px solid #3b82f6}.history-pagination{display:flex;align-items:center;justify-content:space-between;padding:8px 4px;font-size:.8rem;color:#64748b}.history-pagination-total{font-size:.8rem}.history-pagination-buttons{display:flex;align-items:center;gap:4px}.history-pagination-buttons button{width:28px;height:28px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#475569;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.history-pagination-buttons button:hover:not(:disabled){background:#e8edf3}.history-pagination-buttons button:disabled{opacity:.35;cursor:not-allowed}.history-pagination-buttons span{padding:0 8px;font-size:.8rem}.retest-filter-row{display:flex;align-items:center;gap:12px;padding:8px 0;font-size:.8125rem;color:#334155}.retest-count{color:#64748b;font-size:.8rem}.history-table.retest-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.8125rem}.history-table.retest-table th{background:#e8edf3;color:#475569;font-weight:600;padding:8px 12px;text-align:center;border-bottom:2px solid #cbd5e1;white-space:nowrap}.history-table.retest-table td{padding:10px 12px;text-align:center;border-bottom:1px solid #e8edf3;vertical-align:middle}.history-table.retest-table tbody tr:hover{background:#f1f5f9}.score-cell.score-failed{color:#dc2626;font-weight:600;font-family:monospace}.retest-status-cell{padding:6px 8px}.retest-room-cell{padding:6px 8px;vertical-align:top}.retest-room-select{font-size:.75rem;padding:3px 6px;border:1px solid #d1d5db;border-radius:4px;color:#374151;background:#fff;cursor:pointer}.retest-room-select:focus{border-color:#3b82f6;outline:none}.retest-bulk-room-select{font-size:.78rem;padding:5px 10px;border:1px solid #93c5fd;border-radius:6px;color:#1e40af;background:#eff6ff;cursor:pointer;font-weight:500}.retest-bulk-room-select:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f626}.sibling-badge{display:inline-block;margin-left:.3rem;padding:.1rem .4rem;font-size:.65rem;font-weight:600;color:#7c3aed;background-color:#ede9fe;border-radius:10px;vertical-align:middle}.history-selected-total{font-size:.9rem;font-weight:600;color:#dc2626;margin-left:.5rem}.history-process-selected-btn{padding:.4rem 1rem;border:none;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;background:#3b82f6;color:#fff;margin-left:auto}.history-process-selected-btn:hover:not(:disabled){background:#2563eb}.history-process-selected-btn:disabled{background:#9ca3af;cursor:not-allowed;opacity:.6}.history-process-all-btn{padding:.4rem 1rem;border:none;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;background:#059669;color:#fff}.history-process-all-btn:hover:not(:disabled){background:#047857}.history-process-all-btn:disabled{background:#9ca3af;cursor:not-allowed;opacity:.6}.history-modal-large{width:95vw;max-width:1100px;max-height:85vh}.history-modal-body{max-height:calc(85vh - 70px)}.history-tabs-only{min-height:60px}.history-tabs-only .legacy-panel-body{min-height:50px}.history-click-hint{color:#374151;font-size:.85rem;padding:16px}.sms-history-filter{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.sms-history-filter-label{font-weight:600;color:#1e293b;font-size:14px}.sms-history-filter input[type=date]{padding:5px 8px;border:1px solid #ccc;border-radius:4px;font-size:13px}.sms-history-search{display:flex;align-items:center;margin-left:auto;position:relative}.sms-history-search-input{padding:5px 30px 5px 10px;border:1px solid #ccc;border-radius:4px;font-size:13px;width:260px;outline:none;transition:border-color .15s}.sms-history-search-input:focus{border-color:#3b82f6}.sms-history-search-input::placeholder{color:#94a3b8}.sms-history-search-clear{position:absolute;right:6px;background:none;border:none;color:#94a3b8;cursor:pointer;font-size:12px;padding:2px 4px;line-height:1}.sms-history-search-clear:hover{color:#1e293b}.sms-history-split{display:flex;gap:16px;min-height:400px}.sms-history-left{flex:0 0 280px;min-width:280px}.sms-history-right{flex:1;min-width:0;overflow:hidden}.sms-history-left h4,.sms-history-right h4{margin:0 0 8px;font-size:14px;font-weight:600;color:#1e293b;padding:6px 10px;background:#f0f0f0;border-radius:4px}.sms-history-summary-table tbody tr.selected{background:#dbeafe;font-weight:600}.sms-history-summary-total td{font-weight:700;background:#f5f5f5;border-top:2px solid #ccc}.sms-history-detail-table td.sms-message-cell{white-space:pre-wrap;word-break:break-all;min-width:150px;max-width:250px}.sms-message-preview{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;word-break:break-all;line-height:1.5}.sms-history-thumb{display:block;margin-top:6px;max-width:80px;max-height:80px;border-radius:4px;border:1px solid #ddd;cursor:pointer;object-fit:cover}.sms-history-thumb:hover{opacity:.8;box-shadow:0 2px 8px #00000026}.sms-history-row-clickable{cursor:pointer}@media(max-width:768px){.sms-history-split{flex-direction:column}.sms-history-left{flex:none;min-width:100%}}.learning-print-btn{padding:5px 14px;background:#fff;color:#1e293b;border:1px solid #ccc;border-radius:6px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:4px}.learning-print-btn:hover{background:#f5f5f5;border-color:#999}@media print{*{print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}body.print-test-result{background:#fff!important;min-height:0!important;height:auto!important;padding:0!important;margin:0!important}body.print-test-result .learning-header,body.print-test-result .learning-class-panel,body.print-test-result .learning-panel-title,body.print-test-result .learning-content-tabs,body.print-test-result .topbar,body.print-test-result .global-navbar,body.print-test-result .glow{display:none!important}body.print-test-result #root,body.print-test-result .page,body.print-test-result .page.dashboard-page,body.print-test-result .dashboard-layout,body.print-test-result .learning-shell,body.print-test-result .learning-card,body.print-test-result .learning-panel{display:contents!important}body.print-test-result .learning-test-section{position:static!important;width:100%!important;padding:8mm 10mm!important;margin:0!important;overflow:visible!important;box-sizing:border-box!important}body.print-test-result .learning-student-list{overflow:visible!important}body.print-test-result .learning-common-actions,body.print-test-result .learning-save-message,body.print-test-result .learning-course-settings,body.print-test-result .learning-type-chip-edit,body.print-test-result .learning-type-chip-delete,body.print-test-result .learning-type-add-btn-inline,body.print-test-result .learning-exemption-btn,body.print-test-result .learning-modal-overlay,body.print-test-result .learning-print-btn,body.print-test-result .learning-late-absence-btn,body.print-test-result .learning-late-absence-cancel-btn,body.print-test-result .learning-late-absence-cell button,body.print-test-result .learning-student-name-row button,body.print-test-result .learning-item-unexempt-cell button,body.print-test-result .learning-exempt-score-text+button,body.print-test-result .learning-score-header-submit,body.print-test-result .bulk-submit-btn,body.print-test-result .learning-student-meta,body.print-test-result .learning-push-btn,body.print-test-result .btn--xs,body.print-test-result .toast-container{display:none!important}body.print-test-result .learning-course-title{font-size:26pt!important;font-weight:700!important;border-bottom:none!important;padding:14px 0 10px!important;margin-bottom:10px!important;justify-content:center!important;text-align:center!important}body.print-test-result .learning-course-date-print{margin-left:12px;font-size:16pt;font-weight:400}body.print-test-result .learning-sms-reserve-print{display:inline!important;margin-left:16px;font-size:13pt;font-weight:600;color:#1e40af}body.print-test-result .learning-score-table{width:100%!important;border-collapse:collapse!important;table-layout:auto!important;font-size:14pt!important}body.print-test-result .learning-score-table th,body.print-test-result .learning-score-table td{border:1px solid #555!important;padding:6px 4px!important;text-align:center!important;vertical-align:middle!important;color:#000!important;background:#fff!important;line-height:1.3!important;white-space:normal!important;word-break:keep-all!important}body.print-test-result .learning-score-table th{background:#f0f0f0!important;font-weight:700!important;font-size:13pt!important;padding:6px 3px!important}body.print-test-result .learning-score-table .student-col{white-space:nowrap!important;font-weight:600!important;font-size:13pt!important;padding:4px 1px 4px 6px!important;text-align:left!important;width:150px!important;min-width:150px!important;max-width:150px!important}body.print-test-result .learning-score-table .learning-student-num{margin-right:2px!important;font-size:10pt!important}body.print-test-result .learning-score-input{border:none!important;background:transparent!important;text-align:center!important;font-size:14pt!important;color:#000!important;padding:0!important;width:100%!important;-moz-appearance:textfield!important}body.print-test-result .learning-score-input::-webkit-inner-spin-button,body.print-test-result .learning-score-input::-webkit-outer-spin-button{-webkit-appearance:none!important}body.print-test-result .assignment-combined-row{text-align:center!important;font-size:0!important}body.print-test-result .assignment-combined-row .learning-score-input.small{display:inline!important;width:auto!important;min-width:auto!important;border:none!important;background:transparent!important;font-size:14pt!important;padding:0!important;margin:0!important;text-align:right!important}body.print-test-result .assignment-combined-row .learning-score-input.small.not-submitted-text{display:none!important}body.print-test-result .assignment-combined-row .learning-assignment-status-buttons{display:inline!important;font-size:10pt!important;margin-left:1px!important}body.print-test-result .assignment-combined-row .assignment-note-input{display:block!important;width:100%!important}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn{border:none!important;background:transparent!important;padding:0!important;font-size:10pt!important;color:#ccc!important}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn.active{color:#000!important;font-weight:400!important}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn.active:before{content:"["}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn.active:after{content:"]"}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn:not(.active){display:none!important}body.print-test-result .not-submitted-text{display:none!important}body.print-test-result .assignment-status-btn.not-submitted.active:before,body.print-test-result .assignment-status-btn.not-submitted.active:after{content:""!important}body.print-test-result .assignment-note-input{display:none!important}body.print-test-result .assignment-note-print{display:block!important;font-size:9pt!important;color:#555!important;text-align:center!important;white-space:normal!important;word-break:keep-all!important;overflow-wrap:break-word!important;line-height:1.2!important}body.print-test-result .learning-exempt-text{font-size:0!important;color:#666!important;background:transparent!important;border:none!important;padding:0!important}body.print-test-result .learning-exempt-text:after{content:"면제"!important;font-size:11pt!important}body.print-test-result .learning-exempt-score-text{font-size:11pt!important;color:#666!important;background:transparent!important;border:none!important;padding:0!important}body.print-test-result .learning-late-absence-cell{display:inline!important}body.print-test-result .learning-late-absence-text{display:inline!important;font-size:11pt!important;color:#dc2626!important;background:transparent!important;border:none!important;padding:0!important;font-weight:600!important}body.print-test-result .learning-score-input.pass{color:#000!important;font-weight:600!important}body.print-test-result .learning-score-input.fail{color:#dc2626!important;font-weight:600!important}body.print-test-result .learning-makeup-cell-text{font-size:8pt!important;white-space:normal!important;word-break:keep-all!important;overflow:hidden!important;max-width:100%!important}body.print-test-result .learning-makeup-badge{font-size:10pt!important;padding:2px 5px!important;border:1px solid #666!important;background:transparent!important;color:#333!important}body.print-test-result .learning-makeup-badge--normal{background:#6f4acb!important;color:#fff!important;border-color:#6f4acb!important}body.print-test-result .learning-makeup-from{font-size:7pt!important;color:#666!important;white-space:nowrap!important;padding:0!important;margin:1px 0 0!important;text-align:left!important;display:block!important}body.print-test-result .learning-makeup-to{font-size:7pt!important;color:#6f4acb!important;white-space:nowrap!important;display:block!important;margin:1px 0 0!important}body.print-test-result .learning-absent-badge,body.print-test-result .learning-pending-badge,body.print-test-result .learning-late-badge{display:none!important}body.print-test-result .learning-attendance-badge{font-size:8px!important;padding:1px 4px!important}body.print-test-result .learning-score-table tr.retest-row>td.student-col{background:#fef9c3!important}body.print-test-result .learning-score-table td.cell-highlight-yellow{background:#fef9c3!important}body.print-test-result .learning-score-table th.assignment-combined-col,body.print-test-result .learning-score-table td.assignment-combined-col{width:auto!important;max-width:160px!important}body.print-test-result .learning-score-table td.retest-footer-col{display:table-cell!important;font-size:9pt!important;text-align:left!important;white-space:nowrap!important;overflow:hidden!important;padding:6px 4px!important;min-width:150px!important;width:20%!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body.print-test-result .learning-score-table td.retest-scheduled-text{color:#2563eb!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body.print-test-result .learning-score-table th.retest-footer-col{display:table-cell!important;font-weight:600!important;text-align:center!important}body.print-test-result .retest-summary-row td.student-col{text-align:left!important;color:#dc2626!important;font-weight:700!important}body.print-test-result .learning-course-group{page-break-after:always!important;break-after:page!important;page-break-inside:avoid!important;break-inside:avoid!important;margin-bottom:0!important;padding-top:4mm!important;overflow:visible!important}body.print-test-result .learning-course-group:last-child{page-break-after:avoid!important;break-after:avoid!important}}.entrance-test-page{padding:20px;max-width:1200px}.entrance-test-header{margin-bottom:24px}.entrance-test-title{font-size:1.6rem;font-weight:700;color:#1f2937;margin:0}.entrance-test-tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid #e5e7eb;padding-bottom:0}.entrance-test-tabs .tab-btn{padding:12px 28px;border:none;background:transparent;color:#6b7280;font-size:15px;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .2s}.entrance-test-tabs .tab-btn:hover{color:#374151;background:#f9fafb}.entrance-test-tabs .tab-btn.active{color:#2563eb;border-bottom-color:#2563eb;background:transparent}.entrance-test-content{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;border:1px solid #e5e7eb}.entrance-test-filters{display:flex;align-items:center;gap:12px;margin-bottom:24px;flex-wrap:nowrap}.entrance-test-filters .search-input{flex:1;min-width:200px;max-width:320px;padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;transition:border-color .2s,box-shadow .2s}.entrance-test-filters .search-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.entrance-test-filters .filter-select{min-width:130px;padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;background:#fff;cursor:pointer;transition:border-color .2s}.entrance-test-filters .filter-select:focus{outline:none;border-color:#2563eb}.entrance-test-filters .filter-hint{font-size:13px;color:#6b7280;margin-left:auto}.entrance-test-content .data-table{border-collapse:collapse;font-size:14px;white-space:nowrap}.entrance-test-content .data-table thead{background:#f1f5f9}.entrance-test-content .data-table th{padding:14px 12px;text-align:left;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb;white-space:nowrap}.entrance-test-content .data-table td{padding:14px 12px;color:#4b5563;border-bottom:1px solid #f3f4f6;vertical-align:middle;white-space:nowrap}.entrance-test-content .data-table tbody tr:hover{background:#f9fafb}.entrance-test-content .data-table tbody tr:last-child td{border-bottom:none}.entrance-test-content .badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.entrance-test-content .badge-teal{background:#ccfbf1;color:#0f766e}.entrance-test-content .badge-blue{background:#dbeafe;color:#1d4ed8}.entrance-test-content .status-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.entrance-test-content .status-waiting,.entrance-test-page .status-waiting{background:#fef3c7;color:#92400e}.entrance-test-content .status-completed,.entrance-test-page .status-completed{background:#dcfce7;color:#166534}.entrance-test-content .status-cancelled,.entrance-test-page .status-cancelled,.entrance-test-content .status-refunded,.entrance-test-page .status-refunded{background:#fee2e2;color:#991b1b}.entrance-test-content .status-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;background:#fff;cursor:pointer;min-width:80px}.entrance-test-content .status-select:focus{outline:none;border-color:#2563eb}.entrance-test-content .loading,.entrance-test-content .no-data{padding:48px 24px;text-align:center;color:#6b7280;font-size:15px}.schedule-management{display:flex;flex-direction:column;gap:10px}.schedule-row{display:flex;align-items:center;gap:20px;padding:14px 18px;background:#f9fafb;border-radius:10px;border:1px solid #e5e7eb;transition:background .15s}.schedule-row:hover{background:#f3f4f6}.schedule-date{min-width:100px;font-weight:600;color:#374151;font-size:14px}.schedule-slots{display:flex;gap:10px}.slot-btn{padding:10px 18px;border-radius:8px;border:none;cursor:pointer;font-weight:500;font-size:13px;display:flex;align-items:center;gap:8px;transition:all .2s}.slot-btn.available{background:#dcfce7;color:#166534}.slot-btn.available:hover{background:#bbf7d0}.slot-btn.closed{background:#fee2e2;color:#991b1b}.slot-btn.closed:hover{background:#fecaca}.slot-btn .slot-status{font-size:11px;opacity:.8}.entrance-test-summary{display:flex;gap:8px;margin-left:auto}.entrance-test-summary .summary-item{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;font-size:13px}.entrance-test-summary .summary-label{font-size:13px;color:#6b7280}.entrance-test-summary .summary-value{font-size:15px;font-weight:700;color:#1f2937}.entrance-test-split-layout{display:flex;gap:16px;width:fit-content;min-width:100%}.entrance-test-center{flex-shrink:0}.entrance-test-students{flex-shrink:0;min-width:max-content}.entrance-test-spreadsheet{flex-shrink:0}.dashboard-page:has(.entrance-test-split-layout) .dashboard-layout{max-width:none;width:fit-content;min-width:100%;padding:0 8px}.dashboard-page:has(.entrance-test-split-layout){padding:8px;overflow-x:auto}.schedule-panel{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;border:1px solid #e5e7eb;position:sticky;top:20px}.schedule-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.schedule-panel-title{font-size:1.1rem;font-weight:700;color:#1f2937;margin:0}.schedule-panel-header .filter-select{padding:6px 12px;font-size:13px;border:1px solid #d1d5db;border-radius:6px;background:#fff;cursor:pointer}.schedule-slots-grid{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto}.schedule-date-row{display:flex;align-items:center;gap:12px;padding:8px 10px;background:#f9fafb;border-radius:8px}.schedule-date-label{min-width:75px;font-size:13px;font-weight:600;color:#374151}.schedule-time-slots{display:flex;gap:6px;flex:1}.schedule-slot-btn{flex:1;padding:6px 10px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .15s;white-space:nowrap}.schedule-slot-btn:hover{border-color:#2563eb;background:#eff6ff}.schedule-slot-btn.selected{border-color:#2563eb;background:#dbeafe}.schedule-slot-btn.slot-available{background:#f0fdf4;border-color:#86efac}.schedule-slot-btn.slot-available:hover{background:#dcfce7;border-color:#4ade80}.schedule-slot-btn.slot-available.selected{background:#dcfce7;border-color:#22c55e}.schedule-slot-btn.slot-unavailable{background:#fef2f2;border-color:#fca5a5}.schedule-slot-btn.slot-unavailable:hover{background:#fee2e2;border-color:#f87171}.schedule-slot-btn.slot-unavailable.selected{background:#fee2e2;border-color:#ef4444}.schedule-slot-btn.slot-available .slot-time{color:#166534}.schedule-slot-btn.slot-unavailable .slot-time{color:#991b1b}.schedule-slot-btn.slot-available .slot-count{color:#16a34a;font-weight:600}.schedule-slot-btn.slot-unavailable .slot-count{color:#dc2626;font-weight:600}.schedule-slot-btn .slot-time{font-size:12px;font-weight:500;color:#374151}.schedule-slot-btn .slot-count{font-size:11px;color:#6b7280}.selected-slot-students{background:#fff;border-radius:12px;padding:16px 20px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;border:1px solid #e5e7eb}.selected-slot-header{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid #f3f4f6}.selected-slot-header .badge{display:inline-block;padding:5px 14px;border-radius:10px;font-size:14px;font-weight:600}.selected-slot-header .badge-teal{background:#ccfbf1;color:#0f766e}.selected-slot-header .badge-blue{background:#2563eb;color:#fff}.selected-slot-datetime{font-size:14px;font-weight:600;color:#374151}.slot-toggle-btn{padding:3px 12px;border-radius:10px;font-size:12px;font-weight:600;border:none;cursor:pointer;transition:all .15s}.slot-toggle-btn.slot-open{background:#dcfce7;color:#16a34a}.slot-toggle-btn.slot-open:hover{background:#bbf7d0}.slot-toggle-btn.slot-closed{background:#fee2e2;color:#dc2626}.slot-toggle-btn.slot-closed:hover{background:#fecaca}.selected-slot-count{font-size:13px;color:#6b7280;margin-left:auto}.slot-close-btn{background:none;border:none;font-size:18px;color:#9ca3af;cursor:pointer;padding:0 2px;line-height:1}.slot-close-btn:hover{color:#374151}.no-students{padding:20px;text-align:center;color:#9ca3af;font-size:13px}.students-list{display:flex;flex-direction:column;gap:0;max-height:400px;overflow-y:auto;min-width:max-content}.student-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.student-item:hover{background:#f3f4f6}.student-num{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#e5e7eb;border-radius:50%;font-size:11px;font-weight:600;color:#6b7280}.student-name{font-size:14px;font-weight:600;color:#1f2937}.student-info{font-size:12px;color:#6b7280;flex:1}.student-status{font-size:11px;font-weight:600;padding:3px 8px;border-radius:10px}.student-status.status-waiting{background:#fef3c7;color:#92400e}.student-status.status-completed{background:#dcfce7;color:#166534}.student-gender{font-size:12px;color:#6b7280}.slot-students-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}.slot-students-table th,.slot-students-table td{padding:8px 10px;text-align:center;border-bottom:1px solid #f3f4f6}.slot-students-table th{font-weight:600;color:#374151;font-size:12px;border-bottom:2px solid #e5e7eb;background:#f9fafb;position:sticky;top:0}.slot-students-table tbody tr{transition:background .1s}.slot-students-table tbody tr:hover{background:#eff6ff}.slot-st-name{font-weight:600;color:#1f2937}.slot-students-table input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:#2563eb}.entrance-test-content .action-buttons{display:flex;align-items:center;gap:8px}.entrance-test-content .edit-btn{padding:6px 12px;font-size:12px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;color:#374151;cursor:pointer;transition:all .15s}.entrance-test-content .edit-btn:hover{background:#e5e7eb;border-color:#9ca3af}.entrance-test-page .edit-modal{max-width:500px;max-height:90vh;overflow-y:auto}.entrance-test-page .modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.entrance-test-page .modal-header h3{font-size:1.15rem;font-weight:600;color:#1f2937;margin:0}.entrance-test-page .modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:none;border-radius:6px;font-size:20px;color:#6b7280;cursor:pointer;transition:all .15s}.entrance-test-page .modal-close:hover{background:#e5e7eb;color:#374151}.entrance-test-page .modal-body{display:flex;flex-direction:column;gap:16px}.entrance-test-page .modal-body .form-row{display:flex;flex-direction:column;gap:6px}.entrance-test-page .modal-body .form-row label{font-size:13px;font-weight:500;color:#374151}.entrance-test-page .modal-body .form-input{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;transition:border-color .15s}.entrance-test-page .modal-body .form-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.entrance-test-page .modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid #e5e7eb}.entrance-test-page .btn-cancel{padding:10px 20px;font-size:14px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;color:#374151;cursor:pointer;transition:all .15s}.entrance-test-page .btn-cancel:hover{background:#e5e7eb}.entrance-test-page .btn-save{padding:10px 20px;font-size:14px;background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;transition:all .15s}.entrance-test-page .btn-save:hover{background:#1d4ed8}.entrance-test-page .modal-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid #e5e7eb}.entrance-test-page .modal-footer-right{display:flex;gap:10px}.entrance-test-page .btn-delete{padding:10px 20px;font-size:14px;background:transparent;border:1px solid #d1d5db;border-radius:6px;color:#6b7280;cursor:pointer;transition:all .15s}.entrance-test-page .btn-delete:hover{background:#f3f4f6;color:#4b5563}.entrance-test-content .pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;padding:12px 0}.entrance-test-content .pagination-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:14px;cursor:pointer;transition:all .15s}.entrance-test-content .pagination-btn:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.entrance-test-content .pagination-btn:disabled{opacity:.4;cursor:not-allowed}.entrance-test-content .pagination-info{padding:0 12px;font-size:14px;color:#6b7280}.activity-log-modal{background:#fff;border-radius:12px;width:90vw;max-width:860px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000026;overflow:hidden}.activity-log-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb}.activity-log-header h3{margin:0;font-size:16px;font-weight:700;color:#1f2937}.activity-log-close{background:none;border:none;font-size:18px;color:#9ca3af;cursor:pointer;padding:4px 8px;border-radius:4px}.activity-log-close:hover{background:#f3f4f6;color:#374151}.activity-log-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 20px;border-bottom:1px solid #f3f4f6;background:#fafafa}.activity-log-type-filters{display:flex;gap:4px;flex-wrap:wrap}.activity-log-type-btn{padding:4px 10px;font-size:12px;border:1px solid #d1d5db;border-radius:14px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s}.activity-log-type-btn:hover{border-color:#9ca3af}.activity-log-type-btn.active{background:#374151;border-color:#374151;color:#fff}.activity-log-date-filters{display:flex;align-items:center;gap:6px;margin-left:auto}.activity-log-date-filters input[type=date]{padding:3px 8px;font-size:12px;border:1px solid #d1d5db;border-radius:6px;color:#374151}.activity-log-date-filters span{color:#6b7280;font-size:12px}.activity-log-reset-btn{padding:3px 10px;font-size:12px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer}.activity-log-reset-btn:hover{background:#f3f4f6}.activity-log-col-header{display:flex;align-items:center;gap:8px;padding:8px 20px;border-bottom:2px solid #e5e7eb;background:#f9fafb;font-size:11px;font-weight:700;color:#6b7280;flex-shrink:0}.activity-log-col-datetime{min-width:62px;text-align:center;flex-shrink:0}.activity-log-col-type{min-width:56px;text-align:center;flex-shrink:0}.activity-log-col-content{flex:1;min-width:0}.activity-log-col-actor{min-width:48px;text-align:center;flex-shrink:0}.activity-log-timeline{flex:1;overflow-y:auto;padding:0 20px;min-height:200px}.activity-log-entry{display:flex;align-items:flex-start;gap:8px;padding:10px 0;border-bottom:1px solid #f1f3f5}.activity-log-entry:first-child{padding-top:12px}.activity-log-entry:last-child{border-bottom:none}.activity-log-datetime{display:flex;flex-direction:column;align-items:center;min-width:62px;flex-shrink:0;gap:2px}.activity-log-date{font-size:11px;font-weight:600;color:#6b7280;white-space:nowrap}.activity-log-time{font-size:11px;color:#6b7280;white-space:nowrap}.activity-log-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px}.activity-log-badge{font-size:10px;font-weight:600;color:#fff;padding:1px 7px;border-radius:10px;flex-shrink:0;margin-top:1px;min-width:32px;text-align:center}.activity-log-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.activity-log-title{font-size:13px;font-weight:600;color:#1f2937}.activity-log-desc{font-size:12px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-log-actor{font-size:13px;color:#333;flex-shrink:0;min-width:48px;text-align:center;margin-top:1px}.activity-log-empty{display:flex;align-items:center;justify-content:center;min-height:200px;color:#9ca3af;font-size:14px}.activity-log-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-top:1px solid #e5e7eb;font-size:12px;color:#6b7280;background:#fafafa;flex-shrink:0}.activity-log-total{font-size:12px;color:#6b7280}.activity-log-pagination{display:flex;align-items:center;gap:4px}.activity-log-page-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:13px;cursor:pointer;padding:0;transition:all .15s}.activity-log-page-btn:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.activity-log-page-btn:disabled{opacity:.35;cursor:default}.activity-log-page-info{font-size:12px;color:#374151;font-weight:600;padding:0 8px;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;font-size:.875rem;font-weight:500;border-radius:6px;border:1px solid transparent;cursor:pointer;transition:all .15s ease;white-space:nowrap;line-height:1.4;font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.btn--primary:hover:not(:disabled){background:#2563eb}.btn--secondary{background:#f3f4f6;color:#374151;border-color:#d1d5db}.btn--secondary:hover:not(:disabled){background:#e5e7eb}.btn--danger{background:transparent;color:#6b7280;border-color:#d1d5db}.btn--danger:hover:not(:disabled){background:#f3f4f6;color:#4b5563}.btn--success{background:#10b981;color:#fff;border-color:#10b981}.btn--success:hover:not(:disabled){background:#059669}.btn--outline-danger{background:transparent;color:#6b7280;border-color:#d1d5db}.btn--outline-danger:hover:not(:disabled){background:#f3f4f6;color:#4b5563}.btn--sm{padding:6px 12px;font-size:.8rem}.btn--xs{padding:4px 10px;font-size:.75rem}.modal-content--sm{max-width:400px}.modal-content--md{max-width:560px}.modal-content--lg{max-width:800px}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.modal-title{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:none;border-radius:6px;font-size:18px;color:#6b7280;cursor:pointer;transition:all .15s}.modal-close:hover{background:#e5e7eb;color:#374151}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid #e5e7eb}.data-table{width:100%;border-collapse:collapse;font-size:.8rem}.data-table thead{background:#f1f5f9}.data-table th{padding:9px 12px;text-align:left;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb;font-size:.75rem;white-space:nowrap}.data-table td{padding:9px 12px;color:#4b5563;border-bottom:1px solid #f3f4f6;vertical-align:middle}.data-table tbody tr:hover{background:#f9fafb}.data-table tbody tr:last-child td{border-bottom:none}.filter-row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}.filter-group{display:flex;flex-direction:column;gap:5px;min-width:120px}.filter-group label{font-size:.75rem;font-weight:600;color:#475569}.filter-group input,.filter-group select{height:38px;padding:0 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:.875rem;color:#1e293b;background:#fff;transition:border-color .15s,box-shadow .15s;outline:none}.filter-group input:focus,.filter-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge--blue{background:#dbeafe;color:#1e40af}.badge--green{background:#dcfce7;color:#166534}.badge--red{background:#fee2e2;color:#991b1b}.badge--yellow{background:#fef3c7;color:#92400e}.badge--purple{background:#ede9fe;color:#5b21b6}.badge--pink{background:#fce7f3;color:#9d174d}.badge--teal{background:#ccfbf1;color:#115e59}.badge--gray{background:#f3f4f6;color:#374151}.spreadsheet-panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;border:1px solid #e5e7eb}.spreadsheet-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.sheet-date-filter{display:flex;align-items:center;gap:6px}.sheet-date-input{padding:4px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:12px;color:#374151;background:#fff;outline:none}.sheet-date-input:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.sheet-date-separator{color:#9ca3af;font-size:13px}.sheet-date-reset{padding:4px 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#6b7280;font-size:12px;cursor:pointer;transition:all .15s}.sheet-date-reset:hover{background:#f3f4f6;color:#374151}.spreadsheet-panel-title{font-size:1.1rem;font-weight:700;color:#1f2937;margin:0}.spreadsheet-saving{font-size:12px;color:#2563eb;font-weight:500}.sheet-tabs{display:flex;gap:0;padding:0 16px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.sheet-tab{padding:6px 16px;font-size:13px;font-weight:500;color:#6b7280;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s}.sheet-tab:hover{color:#374151}.sheet-tab-active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.id-rule-btn{font-size:12px;padding:2px 10px;border:1px solid #d1d5db;border-radius:4px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s}.id-rule-btn:hover{border-color:#2563eb;color:#2563eb}.id-rule-btn-active{background:#eff6ff;border-color:#2563eb;color:#2563eb}.id-rule-panel{padding:12px 16px;background:#f1f5f9;border-bottom:1px solid #e5e7eb}.id-rule-table{border-collapse:collapse;font-size:13px;margin-bottom:8px}.id-rule-table th,.id-rule-table td{padding:4px 14px;border:1px solid #e5e7eb;text-align:center}.id-rule-table th{background:#e8edf3;font-weight:600;color:#374151}.id-rule-note{margin:2px 0;font-size:12px;color:#6b7280}.spreadsheet-container{position:relative}.spreadsheet-table{border-collapse:collapse;font-size:12px;white-space:nowrap}.spreadsheet-table th{background:#e8edf3;font-weight:600;color:#374151;padding:6px 8px;border:1px solid #cbd5e1;font-size:11px;text-align:center;position:sticky;top:0;z-index:10}.spreadsheet-table td{border:1px solid #cbd5e1;padding:0;height:30px;min-width:60px;text-align:center}.spreadsheet-table tbody tr:hover{background:#f1f5f9}.spreadsheet-table tbody tr.group-divider td{border-top:2px solid #6b7280}.spreadsheet-table th:first-child,.spreadsheet-table td:first-child{position:sticky;left:0;z-index:5;background:#f1f5f9;min-width:32px;max-width:32px;text-align:center;font-size:11px;color:#6b7280}.spreadsheet-table thead th:first-child{z-index:12}.sp-cell-text{display:block;padding:4px 6px;font-size:12px;color:#6b7280;overflow:hidden;text-overflow:ellipsis}.sp-cell-readonly{background:#f9fafb}.sp-cell-input{width:100%;height:100%;border:none;outline:none;padding:4px 6px;font-size:12px;background:transparent;box-sizing:border-box;text-align:center}.sp-cell-input:focus{background:#eff6ff;box-shadow:inset 0 0 0 2px #2563eb}.sp-cell-input[type=number]::-webkit-outer-spin-button,.sp-cell-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sp-cell-input[type=number]{-moz-appearance:textfield}.sp-cell-checkbox{display:flex;align-items:center;justify-content:center;height:100%}.sp-cell-checkbox input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:#2563eb}.sp-cell-score{text-align:center;font-weight:600;padding:4px 6px;color:#1f2937}.sp-status-paid{color:#16a34a;font-weight:600}.sp-status-unpaid{color:#dc2626;font-weight:600}.spreadsheet-empty{display:flex;align-items:center;justify-content:center;height:200px;color:#9ca3af;font-size:14px}.spreadsheet-count{font-size:12px;color:#6b7280;font-weight:400}.sp-counseling-btn{padding:3px 8px;font-size:11px;border:1px solid #2563eb;background:#eff6ff;color:#2563eb;border-radius:4px;cursor:pointer;white-space:nowrap;font-weight:500}.sp-counseling-btn:hover{background:#2563eb;color:#fff}.counseling-modal{max-width:520px;width:90vw}.counseling-student-info{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;padding:12px 16px;background:#f1f5f9;border-radius:8px;margin-bottom:16px}.counseling-info-item{display:flex;flex-direction:column;gap:2px}.counseling-info-label{font-size:11px;color:#6b7280;font-weight:500}.counseling-info-value{font-size:13px;color:#111827;font-weight:500}.counseling-scores{padding:10px 16px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;margin-bottom:16px}.counseling-scores-title{font-size:12px;color:#166534;font-weight:600;margin-bottom:6px;display:block}.counseling-scores-grid{display:flex;gap:16px;font-size:13px;color:#374151}.counseling-scores-grid strong{color:#166534}.counseling-scores-divider{color:#d1d5db;margin:0 2px}.counseling-level-section{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:10px 14px;margin-bottom:14px}.counseling-level-grid{display:flex;gap:16px}.counseling-level-grid .counseling-field{flex:1}.counseling-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin-bottom:16px}.counseling-field{display:flex;flex-direction:column;gap:4px}.counseling-field-label{font-size:11px;color:#6b7280;font-weight:500}.counseling-field-input{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-family:inherit}.counseling-field-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.counseling-form-section{display:flex;flex-direction:column;gap:12px}.counseling-target-row{display:flex;align-items:center;gap:12px}.counseling-target-row label{display:flex;align-items:center;gap:4px;font-size:13px;cursor:pointer}.counseling-textarea{width:100%;min-height:100px;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:13px;resize:vertical;font-family:inherit}.counseling-textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.level-config-modal{max-width:700px}.level-config-header{display:flex;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.level-config-header label{font-size:13px;font-weight:500;color:#374151}.level-config-header input[type=date]{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-family:inherit}.level-config-select{flex:1;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-family:inherit}.level-config-grade-tabs{display:flex;gap:8px;margin-bottom:16px}.level-config-grade-tab{padding:6px 16px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer;font-size:13px;font-family:inherit;transition:all .15s}.level-config-grade-tab:hover{background:#f3f4f6}.level-config-grade-tab.active{background:#2563eb;color:#fff;border-color:#2563eb}.level-rules-section-title{font-weight:600;font-size:13px;color:#166534;margin:12px 0 8px}.level-rules-table{width:100%;border-collapse:collapse;margin-bottom:12px}.level-rules-table th{text-align:left;padding:8px;background:#f9fafb;border-bottom:2px solid #e5e7eb;font-size:13px;font-weight:600;color:#374151}.level-rules-table td{padding:6px 8px;border-bottom:1px solid #f3f4f6;font-size:13px}.level-rules-table input[type=number]{width:60px;padding:4px 6px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;font-family:inherit}.level-rules-table input[type=number]:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.level-rules-table input[type=checkbox]{cursor:pointer}.level-rules-table .level-name-cell{font-weight:600;color:#1f2937}.sp-cell-fail{color:#dc2626;font-weight:600}.toast-container{position:fixed;bottom:24px;right:24px;z-index:99999;display:flex;flex-direction:column-reverse;gap:10px;max-width:380px;pointer-events:none}.toast-item{display:flex;align-items:stretch;background:#fff;border-radius:10px;box-shadow:0 8px 24px #00000026,0 2px 8px #00000014;overflow:hidden;cursor:pointer;pointer-events:auto;animation:toast-slide-in .35s cubic-bezier(.22,1,.36,1);min-width:320px}@keyframes toast-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-accent{width:5px;flex-shrink:0}.toast-body{flex:1;padding:14px 16px;min-width:0}.toast-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.toast-icon{font-size:1rem}.toast-label{font-size:.8rem;font-weight:700;color:#1e293b}.toast-message{font-size:.85rem;color:#475569;line-height:1.4;word-break:keep-all}.toast-close{align-self:flex-start;background:transparent;border:none;color:#94a3b8;font-size:1.2rem;padding:8px 10px;cursor:pointer;line-height:1}.toast-close:hover{color:#64748b}.student-grades-tab{padding:8px 0}.grades-section{margin-bottom:16px}.grades-section-header{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:.85rem;font-weight:600}.grades-section-header.course-eval{background:#dbeafe;color:#1e40af}.grades-section-header.entrance-test{background:#fce7f3;color:#9d174d}.grades-section-count{font-size:.75rem;font-weight:500;opacity:.7}.grades-list-table{width:100%;border-collapse:collapse;font-size:.78rem}.grades-list-table th{padding:6px 8px;font-weight:600;color:#475569;text-align:center;border-bottom:1px solid #e2e8f0;white-space:nowrap;font-size:.75rem}.grades-list-table td{padding:6px 8px;color:#1e293b;border-bottom:1px solid #f1f5f9;white-space:nowrap;text-align:center;font-size:.75rem}.grades-list-table .score-cell{text-align:center;font-weight:500}.grades-list-table .score-total{font-weight:700;color:#2563eb}.grades-list-table tbody tr:hover{background:#f8fafc}.student-grades-tab .btn-view-detail{padding:4px 10px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s ease}.student-grades-tab .btn-view-detail:hover{transform:translateY(-1px);box-shadow:0 2px 8px #667eea66}.alert-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;animation:alertFadeIn .15s ease-out}@keyframes alertFadeIn{0%{opacity:0}to{opacity:1}}.alert-modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:400px;width:90%;padding:28px 24px 24px;animation:alertSlideIn .2s ease-out;text-align:center}@keyframes alertSlideIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.alert-modal-icon{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.alert-modal-icon svg{width:28px;height:28px}.alert-modal-info .alert-modal-icon{background:#dbeafe;color:#2563eb}.alert-modal-success .alert-modal-icon{background:#dcfce7;color:#16a34a}.alert-modal-warning .alert-modal-icon{background:#fef3c7;color:#d97706}.alert-modal-error .alert-modal-icon{background:#fee2e2;color:#dc2626}.alert-modal-content{margin-bottom:24px}.alert-modal-message{font-size:15px;line-height:1.6;color:#374151;margin:0;white-space:pre-line;word-break:keep-all}.alert-modal-wide{max-width:520px}.alert-modal-detail{margin-top:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px;font-size:12.5px;line-height:1.7;color:#4b5563;text-align:left;white-space:pre-line;word-break:keep-all;max-height:260px;overflow-y:auto}.alert-modal-actions{display:flex;justify-content:center}.alert-modal-btn{min-width:100px;padding:12px 32px;font-size:15px;font-weight:600;border:none;border-radius:8px;cursor:pointer;transition:all .15s ease}.alert-modal-info .alert-modal-btn{background:#2563eb;color:#fff}.alert-modal-info .alert-modal-btn:hover{background:#1d4ed8}.alert-modal-success .alert-modal-btn{background:#16a34a;color:#fff}.alert-modal-success .alert-modal-btn:hover{background:#15803d}.alert-modal-warning .alert-modal-btn{background:#d97706;color:#fff}.alert-modal-warning .alert-modal-btn:hover{background:#b45309}.alert-modal-error .alert-modal-btn{background:#dc2626;color:#fff}.alert-modal-error .alert-modal-btn:hover{background:#b91c1c}.alert-modal-btn:focus{outline:none;box-shadow:0 0 0 3px #2563eb4d}.alert-modal-actions-confirm{gap:12px}.alert-modal-btn-cancel{background:#e5e7eb;color:#374151}.alert-modal-btn-cancel:hover{background:#d1d5db}.alert-modal-btn-cancel:focus{box-shadow:0 0 0 3px #6b72804d}@media(max-width:480px){.alert-modal{max-width:320px;padding:24px 20px 20px}.alert-modal-icon{width:48px;height:48px}.alert-modal-icon svg{width:24px;height:24px}.alert-modal-message{font-size:14px}.alert-modal-btn{padding:10px 24px;font-size:14px}}.sl-page{padding:20px;width:100%;box-sizing:border-box}.sl-header{margin-bottom:16px}.sl-header__title{font-size:1.3rem;font-weight:700;color:#1e293b;margin:0 0 4px}.sl-header__desc{font-size:.875rem;color:#64748b;margin:0}.sl-filters{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000a}.sl-filters .filter-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.sl-filters .filter-item{display:flex;flex-direction:column;gap:4px;min-width:120px;flex:1}.sl-filters .filter-item:first-child{min-width:170px}.sl-filters .filter-item label{font-size:.7rem;font-weight:600;color:#475569;letter-spacing:.03em}.sl-filters .filter-item input,.sl-filters .filter-item select{height:34px;padding:0 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:.8rem;color:#1e293b;background:#fff;transition:border-color .15s,box-shadow .15s;outline:none}.sl-filters .filter-item input:focus,.sl-filters .filter-item select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sl-filters .filter-item input::placeholder{color:#94a3b8}.sl-filters .filter-actions{min-width:auto;flex:0}.sl-filters .filter-item:has(.sl-date-range){min-width:320px;flex:0 0 auto}.sl-date-range{display:flex;align-items:center;gap:8px}.sl-date-range input[type=date]{height:34px;min-width:130px;padding:0 8px;border:1px solid #cbd5e1;border-radius:6px;font-size:.8rem;color:#1e293b;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}.sl-date-range input[type=date]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sl-date-range__sep{color:#94a3b8;font-size:.875rem}.sl-stats{display:flex;flex-wrap:wrap;gap:16px;align-items:baseline;margin-bottom:12px;padding:8px 14px;background:linear-gradient(135deg,#f0fdf4,#fff);border-radius:8px;border:1px solid #bbf7d0}.sl-stats__item{display:flex;align-items:baseline;gap:5px}.sl-stats__item--total{padding-right:16px;border-right:1px solid #bbf7d0}.sl-stats__label{font-size:12px;color:#666}.sl-stats__value{font-size:14px;font-weight:700;color:#166534}.sl-stats__value small{font-size:12px;font-weight:500}.sl-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000000a;overflow-x:auto}.sl-grade{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;background:#f3f4f6;color:#374151}.sl-grade--P{background:#dbeafe;color:#1e40af}.sl-grade--M{background:#ede9fe;color:#5b21b6}.sl-grade--H{background:#fce7f3;color:#9d174d}.sl-grade--E{background:#f3f4f6;color:#374151}.sl-name{font-weight:600;color:#1e293b}.sl-phone{font-variant-numeric:tabular-nums;color:#64748b}.sl-empty-val{color:#9ca3af}.sl-id-cell{font-family:SF Mono,Consolas,monospace;font-size:.8rem;color:#64748b}.sl-days-ago{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;background:#f3f4f6;color:#6b7280}.sl-days-ago--today{background:#dcfce7;color:#166534;font-weight:600}.sl-course{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;white-space:nowrap}.sl-course-list{display:flex;flex-wrap:wrap;gap:4px}.sl-reason{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600;background:#f3f4f6;color:#374151}.sl-reason--system{background:#fee2e2;color:#991b1b}.sl-reason--grade{background:#fef3c7;color:#92400e}.sl-reason--transfer{background:#dbeafe;color:#1e40af}.sl-reason--move{background:#ede9fe;color:#5b21b6}.sl-reason--personal{background:#f3f4f6;color:#374151}.sl-reason--schedule{background:#ccfbf1;color:#115e59}.sl-reason--teacher{background:#fce7f3;color:#9d174d}.sl-reason--other{background:#f3f4f6;color:#374151}.sl-reason-detail{font-size:.75rem;color:#64748b;margin-left:6px}.wr-cell{display:flex;flex-direction:column;gap:3px;min-width:0}.wr-detail{font-size:.75rem;color:#475569;cursor:pointer;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px}.wr-detail:hover{color:#1d4ed8;text-decoration:underline}.wr-more{flex-shrink:0;font-size:.7rem;color:#6366f1;background:#eef2ff;border-radius:3px;padding:0 4px;line-height:1.4}.wr-modal-overlay{position:fixed;inset:0;background:#0006;z-index:9999;display:flex;align-items:center;justify-content:center}.wr-modal{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;padding:20px 24px;max-width:480px;width:90%}.wr-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.wr-modal-close{background:none;border:none;font-size:1rem;color:#6b7280;cursor:pointer;padding:2px 6px;border-radius:4px}.wr-modal-close:hover{background:#f3f4f6}.wr-modal-body{font-size:.9rem;color:#374151;line-height:1.6;margin:0;white-space:pre-wrap;word-break:break-word}.sl-reason-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.sl-reason-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;border:1px solid #e2e8f0;background:#fff;font-size:.8rem;color:#475569;cursor:pointer;transition:all .15s}.sl-reason-tab:hover{background:#f8fafc;border-color:#cbd5e1}.sl-reason-tab--active{background:#1e293b;color:#fff;border-color:#1e293b}.sl-reason-tab__count{font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:10px;background:#00000014}.sl-reason-tab--active .sl-reason-tab__count{background:#fff3}.sl-reason-tab__dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:#94a3b8}.sl-reason-tab__dot--system{background:#dc2626}.sl-reason-tab__dot--grade{background:#f59e0b}.sl-reason-tab__dot--transfer{background:#3b82f6}.sl-reason-tab__dot--move{background:#7c3aed}.sl-reason-tab__dot--personal{background:#6b7280}.sl-reason-tab__dot--schedule{background:#14b8a6}.sl-reason-tab__dot--teacher{background:#ec4899}.sl-phone-link{color:#64748b;text-decoration:none;font-variant-numeric:tabular-nums}.sl-phone-link:hover{color:#3b82f6;text-decoration:underline}.sl-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:12px;color:#64748b;font-size:.9rem}.sl-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:12px;color:#94a3b8}.sl-empty svg{width:48px;height:48px;color:#cbd5e1}.sl-empty p{font-size:.9rem;margin:0}.sl-tabs{display:flex;gap:4px;border-bottom:2px solid #e2e8f0;padding-bottom:0}.sl-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:none;background:none;font-size:.9rem;font-weight:500;color:#64748b;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.sl-tab:hover{color:#1e293b;background:#f8fafc}.sl-tab--active{color:#1e293b;font-weight:600;border-bottom-color:#1e293b}.sl-tab__badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:10px;background:#f1f5f9;color:#64748b}.sl-tab--active .sl-tab__badge{background:#1e293b;color:#fff}.sl-sub-tabs{display:flex;gap:4px;margin-bottom:20px}.sl-sub-tab{padding:8px 20px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;font-size:.85rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s}.sl-sub-tab:hover{background:#f8fafc;border-color:#cbd5e1}.sl-sub-tab--active{background:#1e293b;color:#fff;border-color:#1e293b}.ts-section{margin-bottom:28px}.ts-section__title{font-size:1rem;font-weight:700;color:#1e293b;margin:0 0 12px}.ts-section__period{font-size:.8rem;font-weight:400;color:#64748b;margin-left:8px}.ts-table th.num,.ts-table td.num{text-align:right;font-variant-numeric:tabular-nums;min-width:60px}.ts-teacher{font-weight:600;color:#1e293b}.ts-new{color:#059669}.ts-transfer-in{color:#2563eb}.ts-transfer-out{color:#d97706}.ts-withdrawn{color:#dc2626}.ts-final{font-weight:700}.ts-change--plus{color:#059669;font-weight:600}.ts-change--minus{color:#dc2626;font-weight:600}.ts-total-row{background:#f8fafc;font-weight:700}.ts-total-row td{border-top:2px solid #e2e8f0}.sl-page--changes .sl-table-wrap{width:fit-content}.sl-page--changes .data-table{width:auto}.sl-page--changes .data-table th,.sl-page--changes .data-table td{padding-left:8px;padding-right:8px}@media(max-width:768px){.sl-page,.sl-filters{padding:16px}.sl-filters .filter-row{flex-direction:column;align-items:stretch}.sl-filters .filter-item{min-width:100%}.sl-stats{flex-direction:column;gap:8px}.sl-stats__item--total{border-right:none;border-bottom:1px solid #bbf7d0;padding-bottom:8px;padding-right:0}.sl-tabs{gap:0}.sl-tab{padding:8px 14px;font-size:.8rem}.sl-reason-tabs{gap:6px}.sl-reason-tab{padding:4px 10px;font-size:.75rem}}.sms-page{padding:24px;max-width:1400px;margin:0;color:#1f2937}.sms-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.sms-header h1{margin:0;font-size:24px}.sms-tabs{display:flex;gap:8px}.sms-tabs button{padding:8px 16px;border:1px solid #ddd;background:#fff;cursor:pointer;border-radius:4px}.sms-tabs button.active{background:#2563eb;color:#fff;border-color:#2563eb}.sms-send-container{display:grid;grid-template-columns:340px 300px 1fr;gap:16px}.sms-class-panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px;color:#1f2937;max-height:600px;display:flex;flex-direction:column}.sms-left-panel,.sms-right-panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:20px;color:#1f2937}.sms-recipients-section h3{margin:0 0 16px;font-size:16px;color:#374151}.sms-class-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.sms-class-panel-header h3{margin:0;font-size:15px;color:#374151}.sms-class-clear{font-size:11px;color:#6b7280;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;padding:2px 8px;cursor:pointer}.sms-class-clear:hover{background:#e5e7eb}.sms-class-loading{font-size:11px;color:#6b7280}.sms-cat-list{display:flex;flex-direction:column;gap:2px;margin-bottom:8px;max-height:150px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:6px}.sms-cat-item{padding:7px 10px;border:none;background:#fff;text-align:left;font-size:12px;color:#374151;cursor:pointer;border-bottom:1px solid #f3f4f6;transition:background .1s}.sms-cat-item:last-child{border-bottom:none}.sms-cat-item:hover{background:#f0f7ff}.sms-cat-item.active{background:#2563eb;color:#fff;font-weight:600}.sms-class-scroll{flex:1;overflow-y:auto;border:1px solid #d1d5db;border-radius:6px;background:#fff}.sms-grade-group{border-bottom:1px solid #e5e7eb}.sms-grade-group:last-child{border-bottom:none}.sms-grade-header-wrap{display:flex;align-items:center;background:#f9fafb}.sms-grade-header{display:flex;align-items:center;gap:6px;flex:1;padding:8px 10px;border:none;background:transparent;cursor:pointer;font-size:13px;font-weight:600;color:#374151}.sms-grade-header:hover{background:#f3f4f6}.sms-grade-select-all{display:flex;align-items:center;gap:4px;padding:0 10px 0 0;font-size:11px;color:#6b7280;cursor:pointer;white-space:nowrap}.sms-grade-select-all input[type=checkbox]{width:14px;height:14px;accent-color:#2563eb}.sms-grade-arrow{font-size:10px;color:#6b7280}.sms-grade-count{margin-left:auto;font-size:12px;color:#9ca3af;font-weight:400}.sms-days-tabs{display:flex;gap:4px;padding:4px 8px;background:#f3f4f6}.sms-days-tabs button{padding:3px 10px;font-size:11px;border:none;border-radius:4px;cursor:pointer;background:#fff;color:#374151}.sms-days-tabs button.active{background:#2563eb;color:#fff;font-weight:600}.sms-class-item{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 20px;cursor:pointer;font-size:12px;color:#374151;border-bottom:1px solid #f9fafb;transition:background .1s}.sms-class-item:hover{background:#f0f7ff}.sms-class-item.checked{background:#eff6ff}.sms-class-item input[type=checkbox]{flex-shrink:0;width:15px;height:15px;accent-color:#2563eb}.sms-class-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sms-class-students-expand{padding:6px 10px 8px 28px;background:#f8fafc;border-bottom:1px solid #e5e7eb}.sms-class-student-all{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:11px;font-weight:600;color:#4b5563;cursor:pointer;margin-bottom:4px}.sms-class-student-all input[type=checkbox]{width:14px;height:14px;accent-color:#2563eb}.sms-class-student-grid{display:flex;flex-wrap:wrap;gap:2px 0}.sms-class-student-item{display:flex;align-items:center;gap:4px;padding:2px 8px 2px 0;font-size:11px;color:#6b7280;cursor:pointer;white-space:nowrap}.sms-class-student-item.checked{color:#1e293b}.sms-class-student-item input[type=checkbox]{width:13px;height:13px;accent-color:#2563eb}.sms-class-student-item:hover{color:#2563eb}.sms-class-empty{padding:16px;text-align:center;color:#9ca3af;font-size:13px}.sms-search input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.sms-search-results{margin-top:12px;max-height:300px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:6px}.sms-search-item{display:flex;justify-content:space-between;padding:10px 12px;cursor:pointer;border-bottom:1px solid #f3f4f6;color:#1f2937}.sms-search-item:hover{background:#f9fafb}.sms-search-item.selected{background:#eff6ff}.sms-search-item .name{font-weight:500;color:#111827}.sms-search-item .phone{color:#4b5563;font-size:13px}.sms-search-more{padding:8px 12px;text-align:center;color:#4b5563;font-size:13px}.sms-manual-toggle{margin-top:12px;padding:8px 12px;background:#f3f4f6;border:none;border-radius:4px;cursor:pointer;font-size:13px}.sms-manual-input{margin-top:8px;width:100%;padding:10px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;resize:vertical}.sms-selected{margin-top:16px}.sms-selected h4{margin:0 0 8px;font-size:14px;color:#374151}.sms-selected-grouped{max-height:400px;overflow-y:auto}.sms-selected-class-group{margin-bottom:12px;border:1px solid #e5e7eb;border-radius:6px;overflow:hidden}.sms-selected-class-header{display:flex;align-items:center;gap:6px;padding:8px 10px;background:#f0f7ff;border-bottom:1px solid #e5e7eb;font-size:12px;font-weight:600;color:#1e40af}.sms-selected-class-count{font-weight:400;color:#6b7280}.sms-selected-class-students{display:flex;flex-wrap:wrap;gap:4px;padding:8px}.sms-selected-item{display:flex;align-items:center;gap:4px;padding:4px 8px;background:#eff6ff;border-radius:4px;font-size:13px}.sms-selected-item button{background:none;border:none;cursor:pointer;font-size:16px;color:#4b5563;padding:0;line-height:1}.sms-selected-empty{padding:20px;text-align:center;color:#9ca3af;font-size:13px}.sms-msg-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sms-msg-header h3{margin:0;font-size:16px;color:#374151}.sms-save-tpl-btn{padding:5px 12px;font-size:12px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;color:#374151}.sms-save-tpl-btn:hover:not(:disabled){background:#e5e7eb}.sms-save-tpl-btn:disabled{opacity:.5;cursor:not-allowed}.sms-compose-area{display:flex;gap:16px}.sms-compose-area .sms-message-section{flex:1;min-width:0}.sms-var-panel{width:160px;flex-shrink:0;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px}.sms-var-panel h4{margin:0 0 6px;font-size:14px;color:#374151}.sms-var-panel-desc{font-size:11px;color:#94a3b8;margin:0 0 12px}.sms-var-panel-list{display:flex;flex-direction:column;gap:8px}.sms-var-panel-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;background:#fff;border:1px solid #c7d2fe;border-radius:8px;cursor:pointer;transition:all .15s}.sms-var-panel-btn:hover{background:#eef2ff;border-color:#818cf8}.sms-var-panel-btn-key{font-size:13px;font-weight:600;color:#4338ca}.sms-var-panel-btn-label{font-size:11px;color:#94a3b8}.sms-var-panel-notice{margin-top:12px;display:flex;flex-direction:column;gap:4px;font-size:11px;color:#64748b;padding:8px;background:#fffbeb;border-radius:6px;border:1px solid #fde68a}.sms-var-preview{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:10px 12px;margin-top:6px;font-size:13px}.sms-var-preview-header{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12px;color:#854d0e;margin-bottom:6px}.sms-var-preview-name{font-weight:400;color:#92400e}.sms-var-badge{background:#fef3c7;color:#b45309;border:1px solid #fcd34d;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:500;margin-left:auto}.sms-var-preview-body{white-space:pre-wrap;color:#333;line-height:1.5}.sms-tpl-panel{margin-top:16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:16px}.sms-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.sms-tpl-cards{margin-top:20px;border-top:1px solid #e5e7eb;padding-top:16px}.sms-tpl-cards h4{margin:0 0 10px;font-size:14px;color:#374151}.sms-tpl-card-list{display:flex;flex-direction:column;gap:8px}.sms-tpl-card{border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;cursor:pointer;transition:border-color .15s,background .15s}.sms-tpl-card:hover{border-color:#2563eb;background:#f0f7ff}.sms-tpl-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.sms-tpl-card-title{font-size:13px;font-weight:600;color:#1e40af}.sms-tpl-card-actions{display:flex;gap:4px}.sms-tpl-card-actions button{padding:2px 8px;font-size:11px;border:1px solid #d1d5db;border-radius:3px;background:#fff;cursor:pointer;color:#6b7280}.sms-tpl-card-actions button:hover{background:#f3f4f6;color:#374151}.sms-tpl-card-actions button.delete:hover{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.sms-tpl-card-body{font-size:12px;color:#6b7280;line-height:1.4;white-space:pre-wrap;word-break:break-all}.sms-tpl-card--personal{border-left:3px solid #8b5cf6}.sms-tpl-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}.sms-tpl-pagination button{padding:5px 14px;border:1px solid #d1d5db;border-radius:6px;background:#fff;font-size:12px;color:#374151;cursor:pointer}.sms-tpl-pagination button:hover:not(:disabled){background:#f3f4f6}.sms-tpl-pagination button:disabled{opacity:.4;cursor:not-allowed}.sms-tpl-pagination span{font-size:12px;color:#6b7280}.sms-tpl-input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.sms-tpl-textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;resize:vertical;min-height:150px}.sms-title{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;margin-bottom:12px}.sms-message{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;resize:vertical;min-height:300px}.sms-message-info{margin-top:8px;display:flex;gap:8px;font-size:13px}.sms-message-info .lms{color:#dc2626;font-weight:500}.sms-hint{color:#4b5563}.sms-result{margin-top:12px;padding:12px;border-radius:6px;font-size:14px}.sms-result.success{background:#d1fae5;color:#065f46}.sms-result.error{background:#fee2e2;color:#991b1b}.sms-btn-group{margin-top:16px;display:flex;gap:8px}.sms-send-btn{flex:1;padding:14px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:500;cursor:pointer}.sms-send-btn:hover:not(:disabled){background:#1d4ed8}.sms-send-btn:disabled{background:#93c5fd;cursor:not-allowed}.sms-reserve-btn{flex:1;padding:14px;background:#059669;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:500;cursor:pointer}.sms-reserve-btn:hover:not(:disabled){background:#047857}.sms-reserve-btn:disabled{background:#6ee7b7;cursor:not-allowed}.sms-image-section{margin-top:12px;display:flex;align-items:center;gap:12px}.sms-image-btn{padding:8px 16px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:14px}.sms-image-btn:hover{background:#e5e7eb}.sms-dedup-check{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px;color:#374151;white-space:nowrap}.sms-dedup-check input[type=checkbox]{width:16px;height:16px;accent-color:#2563eb}.sms-image-preview{position:relative;display:inline-block}.sms-image-preview img{max-width:80px;max-height:80px;border-radius:4px;border:1px solid #d1d5db}.sms-image-preview button{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:#ef4444;color:#fff;border:none;cursor:pointer;font-size:14px;line-height:1}.sms-message-info .mms{color:#7c3aed;font-weight:500}.sms-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.sms-modal{background:#fff;border-radius:12px;width:400px;max-width:90%}.sms-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb}.sms-modal-header h3{margin:0;font-size:18px;color:#1f2937}.sms-modal-header button{background:none;border:none;font-size:24px;cursor:pointer;color:#6b7280}.sms-modal-body{padding:20px}.sms-reserve-row{margin-bottom:16px}.sms-reserve-row label{display:block;margin-bottom:6px;font-weight:500;color:#374151}.sms-reserve-row input[type=date]{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.sms-reserve-time{display:flex;gap:8px}.sms-reserve-time select{flex:1;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.sms-reserve-info{margin-top:16px;padding:12px;background:#f9fafb;border-radius:6px}.sms-reserve-info p{margin:4px 0;font-size:14px;color:#4b5563}.sms-modal-footer{display:flex;gap:8px;padding:16px 20px;border-top:1px solid #e5e7eb}.sms-modal-cancel{flex:1;padding:12px;background:#f3f4f6;border:none;border-radius:6px;font-size:14px;cursor:pointer}.sms-modal-confirm{flex:1;padding:12px;background:#059669;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer}.sms-modal-confirm:hover:not(:disabled){background:#047857}.sms-modal-confirm:disabled{background:#6ee7b7;cursor:not-allowed}.sms-reserve-modal{width:420px}.sms-reserve-info-row{display:flex;justify-content:space-between;padding:12px;background:#f9fafb;border-radius:6px;margin-bottom:16px;font-size:14px;color:#374151}.sms-reserve-preview{margin-bottom:16px}.sms-reserve-preview label{display:block;margin-bottom:6px;font-weight:500;color:#374151;font-size:14px}.sms-reserve-preview-text{padding:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;color:#4b5563;max-height:100px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.sms-date-picker-wrap{position:relative}.sms-date-btn{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;background:#fff;cursor:pointer;text-align:left;color:#1f2937}.sms-date-btn:hover{border-color:#9ca3af}.sms-calendar{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:100;margin-top:4px;padding:12px}.sms-calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sms-calendar-header button{background:none;border:none;font-size:18px;cursor:pointer;padding:4px 8px;color:#374151}.sms-calendar-header button:hover{background:#f3f4f6;border-radius:4px}.sms-calendar-header span{font-weight:600;color:#1f2937}.sms-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.sms-calendar-day{text-align:center;padding:8px 0;font-size:12px;font-weight:500;color:#6b7280}.sms-calendar-date{aspect-ratio:1;border:none;background:none;font-size:14px;cursor:pointer;border-radius:6px;color:#1f2937}.sms-calendar-date:hover:not(:disabled){background:#f3f4f6}.sms-calendar-date:disabled{color:#d1d5db;cursor:not-allowed}.sms-calendar-date.today{border:1px solid #2563eb}.sms-calendar-date.selected{background:#2563eb;color:#fff}.sms-calendar-date.selected:hover{background:#1d4ed8}.sms-time-inputs{display:flex;align-items:center;gap:8px}.sms-ampm-select{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;background:#fff;color:#1f2937}.sms-time-input{width:50px;padding:10px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;text-align:center;color:#1f2937}.sms-time-colon{font-size:18px;font-weight:600;color:#374151}.sms-history-container{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:20px;color:#1f2937}.sms-history-container h3{margin:0 0 16px}.sms-loading,.sms-empty{padding:40px;text-align:center;color:#4b5563}.sms-history-table{width:100%;border-collapse:collapse}.sms-history-table th,.sms-history-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb;white-space:nowrap}.sms-history-table th{background:#f9fafb;font-weight:500;font-size:13px;color:#4b5563}.sms-message-cell{max-width:400px;white-space:pre-wrap;word-break:break-all;line-height:1.5;font-size:13px}.sms-history-row-clickable{cursor:pointer;transition:background .15s}.sms-history-row-clickable:hover{background:#f0f4ff}.sms-history-date{white-space:nowrap}.sms-history-detail-modal{max-width:560px;width:90%}.sms-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.sms-detail-row{display:flex;flex-direction:column;gap:4px}.sms-detail-label{font-size:12px;color:#6b7280;font-weight:500}.sms-detail-value{font-size:14px;color:#1f2937;font-weight:500}.sms-detail-message-section{margin-bottom:16px}.sms-detail-message-box{margin-top:6px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:14px;white-space:pre-wrap;word-break:break-all;line-height:1.6;font-size:14px;color:#1f2937;max-height:300px;overflow-y:auto}.sms-detail-receivers-section{margin-bottom:8px}.sms-detail-receivers-box{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}.sms-detail-receiver-tag{display:inline-block;background:#eff6ff;color:#1e40af;padding:4px 8px;border-radius:4px;font-size:12px;font-family:monospace}.sms-modal-footer{padding:12px 20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:8px}.sms-modal-close-btn{padding:8px 20px;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}.sms-modal-close-btn:hover{background:#e5e7eb}.sms-res-detail-modal{max-width:520px;width:90%}.sms-res-detail-body{padding:20px}.sms-res-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin-bottom:16px}.sms-res-detail-row{display:flex;flex-direction:column;gap:2px}.sms-res-detail-label{font-size:11px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.03em}.sms-res-detail-value{font-size:14px;color:#1f2937;font-weight:500}.sms-res-detail-msg-section{display:flex;flex-direction:column;gap:6px}.sms-res-detail-msg{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px;font-size:13px;color:#374151;line-height:1.6;white-space:pre-wrap;word-break:break-all;max-height:240px;overflow-y:auto}.sms-cancel-confirm-modal{max-width:420px;width:90%}.sms-cancel-confirm-body{padding:20px}.sms-cancel-confirm-text{font-size:15px;font-weight:600;color:#1f2937;margin:0 0 16px}.sms-cancel-confirm-info{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.sms-cancel-confirm-row{display:flex;gap:12px;font-size:13px}.sms-cancel-confirm-row>span:first-child{color:#6b7280;font-weight:600;min-width:56px;flex-shrink:0}.sms-cancel-confirm-row>span:last-child{color:#374151}.sms-cancel-confirm-msg{line-height:1.5;word-break:break-all}.sms-cancel-confirm-footer{justify-content:flex-end}.sms-cancel-confirm-btn{padding:8px 20px;font-weight:600;border-radius:6px}.sms-history-table .success{color:#059669}.sms-history-table .error{color:#dc2626}.status-badge.pending{background:#fef3c7;color:#854d0e}.status-badge.sent{background:#dcfce7;color:#166534}.status-badge.cancelled{background:#f3f4f6;color:#6b7280}.sms-cancel-btn{padding:6px 12px;background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:4px;cursor:pointer;font-size:13px}.sms-cancel-btn:hover:not(:disabled){background:#fecaca}.sms-cancel-btn:disabled{opacity:.6;cursor:not-allowed}.sms-reservation-pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 0 4px;border-top:1px solid #e5e7eb;margin-top:8px}.sms-reservation-total{font-size:13px;color:#6b7280}.sms-reservation-page-controls{display:flex;align-items:center;gap:4px}.sms-reservation-page-controls button{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:13px;cursor:pointer;padding:0}.sms-reservation-page-controls button:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.sms-reservation-page-controls button:disabled{opacity:.35;cursor:default}.sms-reservation-page-info{font-size:12px;color:#374151;font-weight:600;padding:0 8px;white-space:nowrap}.sms-reservation-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px;flex-wrap:wrap}.sms-reservation-header h3{margin:0;white-space:nowrap}.sms-reservation-toolbar{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end}.sms-batch-cancel-btn{white-space:nowrap;padding:6px 14px;font-size:12px}.sms-batch-cancel-list{max-height:180px;overflow-y:auto}@media(max-width:1024px){.sms-send-container{grid-template-columns:280px 1fr}.sms-right-panel{grid-column:1 / -1}}@media(max-width:768px){.sms-send-container{grid-template-columns:1fr}.sms-class-panel{max-height:250px}.sms-compose-area{flex-direction:column}.sms-var-panel{width:100%}}.notification-bell-wrapper{position:relative;display:inline-flex;align-items:center}.notification-bell-btn{position:relative;background:none;border:none;cursor:pointer;padding:4px;color:#8b7355;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:background-color .15s}.notification-bell-btn:hover{background-color:#f3ede4}.notification-badge{position:absolute;top:-2px;right:-4px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.notification-panel{width:340px;max-height:480px;background:#fff;border:1px solid #bfdbfe;border-radius:10px;box-shadow:0 8px 24px #0000001f;z-index:10000;display:flex;flex-direction:column;overflow:hidden}.notification-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #f3ede4}.notification-panel-title{font-weight:700;font-size:14px;color:#5a4a3a}.notification-mark-all{background:none;border:none;color:#8b7355;font-size:12px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:background-color .15s}.notification-mark-all:hover{background-color:#f3ede4}.notification-list{flex:1;overflow-y:auto;max-height:360px}.notification-item{display:flex;align-items:flex-start;gap:10px;padding:10px 16px;border-bottom:1px solid #f8f4ef;cursor:default;transition:background-color .15s}.notification-item.unread{background-color:#f0f5ff;cursor:pointer}.notification-item.unread:hover{background-color:#f3ede4}.notification-item.clickable{cursor:pointer}.notification-item.clickable:hover{background-color:#f3ede4}.notification-type-badge{flex-shrink:0;font-size:11px;font-weight:600;color:#fff;padding:2px 8px;border-radius:4px;margin-top:1px;white-space:nowrap}.notification-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.notification-message{font-size:13px;color:#333;line-height:1.4;word-break:break-word}.notification-time{font-size:11px;color:#aaa}.notification-empty{padding:32px 16px;text-align:center;color:#aaa;font-size:13px}.notification-panel-footer{padding:8px 16px;border-top:1px solid #f3ede4}.notification-show-read{display:flex;align-items:center;gap:6px;font-size:12px;color:#8b7355;cursor:pointer}.notification-show-read input[type=checkbox]{accent-color:#8b7355}@media(max-width:600px){.notification-panel{width:calc(100vw - 32px);right:-8px}}.grade-management-page{padding:20px;max-width:1600px;margin:0 auto}.grade-management-page .page-header{margin-bottom:20px}.grade-management-page .page-header h1{font-size:1.5rem;font-weight:600;color:#333}.grade-tabs{display:flex;gap:10px;margin-bottom:20px;border-bottom:2px solid #e5e7eb;padding-bottom:0}.grade-tab{padding:10px 20px;border:none;background:none;cursor:pointer;font-size:1rem;color:#666;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s}.grade-tab:hover{color:#3b82f6}.grade-tab.active{color:#3b82f6;border-bottom-color:#3b82f6;font-weight:600}.error-message{background-color:#fee2e2;color:#991b1b;padding:10px 15px;border-radius:6px;margin-bottom:15px}.success-message{background-color:#dcfce7;color:#166534;padding:10px 15px;border-radius:6px;margin-bottom:15px}.upload-section{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.upload-step h2{font-size:1.1rem;font-weight:600;color:#333;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #e5e7eb}.upload-type-tabs{display:flex;gap:8px;margin-bottom:16px}.upload-type-tab{display:flex;align-items:center;gap:8px;padding:10px 20px;border:2px solid #e5e7eb;background:#fff;border-radius:8px;font-size:.95rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .2s ease}.upload-type-tab:hover{border-color:#93c5fd;color:#3b82f6}.upload-type-tab.active{border-color:#3b82f6;background:#eff6ff;color:#1d4ed8}.upload-type-tab .tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;background:#e5e7eb;border-radius:12px;font-size:.75rem;font-weight:600}.upload-type-tab.active .tab-count{background:#3b82f6;color:#fff}.upload-template-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;max-height:300px;overflow-y:auto}.upload-year-group{margin-bottom:4px}.upload-year-title{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;font-size:.9rem;font-weight:600;color:#374151;cursor:pointer;transition:background .15s ease}.upload-year-title:hover{background:#f1f5f9}.upload-year-title .toggle-icon{font-size:.65rem;color:#6b7280}.upload-year-title .year-count{margin-left:auto;font-size:.75rem;font-weight:500;color:#6b7280;background:#e5e7eb;padding:2px 8px;border-radius:10px}.upload-year-items{display:flex;flex-direction:column;gap:6px;padding:8px 0 0}.upload-template-item{padding:12px 16px;background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .15s ease}.upload-template-item:hover{background:#f3f4f6;border-color:#d1d5db}.upload-template-item.selected{background:#eff6ff;border-color:#3b82f6}.upload-template-name{font-size:.95rem;font-weight:600;color:#1f2937;margin-bottom:4px}.upload-template-info{font-size:.8rem;color:#6b7280}.form-row{display:flex;align-items:center;gap:15px;margin-bottom:15px}.form-row label{width:100px;font-weight:500;color:#555}.form-row input,.form-row select{flex:1;max-width:300px;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem}.form-row input:focus,.form-row select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.template-select{max-width:400px;min-width:250px}.exam-date-display{padding:8px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;color:#374151;font-size:.95rem}.upload-info{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:15px;margin-bottom:20px}.upload-info p{font-weight:500;margin-bottom:10px;color:#333}.upload-info ul{margin:0;padding-left:20px;color:#555}.upload-info li{margin-bottom:5px;font-size:.9rem}.upload-hint{margin-top:10px;padding:8px 12px;background:#dcfce7;border-radius:6px;color:#166534;font-size:.85rem;font-weight:500}.upload-hint.course-eval{background:#dbeafe;color:#1e40af}.btn-sample{margin-top:10px;padding:8px 16px;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;cursor:pointer;font-size:.9rem;color:#475569;transition:all .2s}.btn-sample:hover{background:#e2e8f0}.file-upload{display:flex;align-items:center;gap:15px}.file-upload input[type=file]{display:none}.file-label{display:inline-block;padding:10px 20px;background:#3b82f6;color:#fff;border-radius:6px;cursor:pointer;font-weight:500;transition:background .2s}.file-label:hover{background:#2563eb}.file-name{color:#555;font-size:.95rem}.preview-summary{display:flex;gap:30px;margin-bottom:20px;padding:15px;background:#f8fafc;border-radius:8px}.preview-summary p{margin:0;color:#555}.preview-summary .success{color:#16a34a}.preview-summary .error{color:#dc2626}.preview-table-wrapper{max-height:400px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:20px}.preview-table{width:100%;border-collapse:collapse;font-size:.9rem}.preview-table th,.preview-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.preview-table th{background:#f8fafc;font-weight:600;color:#374151;position:sticky;top:0}.preview-table tr:hover{background:#f9fafb}.preview-table .error-row{background:#fef2f2}.preview-table .error-row:hover{background:#fee2e2}.badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:.8rem;font-weight:500}.badge.success{background:#dcfce7;color:#166534}.badge.error{background:#fee2e2;color:#991b1b}.preview-actions{display:flex;justify-content:flex-end;gap:10px}.btn-cancel{padding:10px 20px;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;cursor:pointer;font-size:.95rem;color:#475569;transition:all .2s}.btn-cancel:hover{background:#e2e8f0}.btn-save{padding:10px 20px;background:#3b82f6;border:none;border-radius:6px;cursor:pointer;font-size:.95rem;color:#fff;font-weight:500;transition:background .2s}.btn-save:hover:not(:disabled){background:#2563eb}.btn-save:disabled{background:#9ca3af;cursor:not-allowed}.upload-complete{text-align:center;padding:40px 20px}.complete-icon{width:60px;height:60px;line-height:60px;background:#dcfce7;color:#16a34a;border-radius:50%;font-size:2rem;margin:0 auto 20px}.upload-complete h2{border:none;padding:0}.btn-new{padding:10px 20px;background:#3b82f6;border:none;border-radius:6px;cursor:pointer;font-size:.95rem;color:#fff;font-weight:500;margin-top:20px}.btn-new:hover{background:#2563eb}.history-section{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.history-section h2{font-size:1.1rem;font-weight:600;color:#333;margin-bottom:15px}.no-data{text-align:center;color:#6b7280;padding:40px 0}.history-table{width:100%;border-collapse:collapse;font-size:.9rem}.history-table th,.history-table td{padding:12px;text-align:left;border-bottom:1px solid #e5e7eb}.history-table th{background:#f8fafc;font-weight:600;color:#374151}.history-table tr:hover{background:#f9fafb}.history-table .success{color:#16a34a}.history-table .error{color:#dc2626}.btn-delete-small{padding:4px 10px;font-size:.8rem;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;transition:all .2s}.btn-delete-small:hover{background:#f3f4f6;color:#4b5563}.template-section{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f}.template-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.template-header h2{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0}.btn-new-template{display:inline-flex;align-items:center;gap:6px;padding:10px 18px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #3b82f659}.btn-new-template:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.btn-new-template:active{transform:translateY(0)}.template-type-tabs{display:flex;gap:8px;margin-bottom:20px}.template-type-tab{display:flex;align-items:center;gap:8px;padding:10px 20px;border:2px solid #e5e7eb;background:#fff;border-radius:8px;font-size:.95rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .2s ease}.template-type-tab:hover{border-color:#93c5fd;color:#3b82f6}.template-type-tab.active{border-color:#3b82f6;background:#eff6ff;color:#1d4ed8}.template-type-tab .tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;background:#e5e7eb;border-radius:12px;font-size:.75rem;font-weight:600}.template-type-tab.active .tab-count{background:#3b82f6;color:#fff}.template-groups{display:flex;flex-direction:column;gap:20px}.template-group{background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.template-group-title{display:flex;align-items:center;gap:8px;font-size:.95rem;font-weight:600;color:#374151;padding:12px 20px;margin:0;background:#f8fafc;border-bottom:1px solid #e5e7eb}.template-group-title.clickable{cursor:pointer;transition:background .15s ease}.template-group-title.clickable:hover{background:#f1f5f9}.template-group.collapsed .template-group-title{border-bottom:none}.template-group-title .toggle-icon{font-size:.7rem;color:#6b7280;width:12px}.template-group-title .year-count{margin-left:auto;font-size:.8rem;font-weight:500;color:#6b7280;background:#e5e7eb;padding:2px 8px;border-radius:10px}.template-table-wrapper{background:#fff;overflow:hidden}.template-group .template-table-wrapper{border:none;border-radius:0}.template-table{width:100%;border-collapse:collapse}.template-table thead{background:#f8fafc;border-bottom:2px solid #e5e7eb}.template-table th{padding:14px 16px;text-align:left;font-size:.85rem;font-weight:600;color:#475569}.template-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .15s ease}.template-table tbody tr:last-child{border-bottom:none}.template-table tbody tr:hover{background:#f8fafc}.template-table td{padding:14px 16px;vertical-align:middle}.template-name-cell{display:flex;flex-direction:column;gap:4px}.template-name{font-weight:600;color:#1f2937}.school-level-badges{display:flex;gap:4px}.school-level-badge{display:inline-block;padding:2px 8px;background:#dbeafe;color:#1e40af;border-radius:4px;font-size:.7rem;font-weight:500}.template-type-badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:.75rem;font-weight:500}.template-type-badge.course_eval{background:#dbeafe;color:#1e40af}.template-type-badge.entrance_test{background:#dcfce7;color:#166534}.question-count{font-weight:500;color:#374151}.sections-cell{max-width:300px}.section-badge{display:inline-block;padding:4px 10px;background:#f1f5f9;color:#475569;border-radius:6px;font-size:.75rem;margin-right:6px;margin-bottom:4px}.actions-cell{display:flex;gap:6px;white-space:nowrap}.actions-cell button{padding:6px 12px;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s ease}.actions-cell .btn-edit{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}.actions-cell .btn-edit:hover{background:#f1f5f9;border-color:#cbd5e1}.actions-cell .btn-copy{background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb}.actions-cell .btn-copy:hover{background:#dbeafe;border-color:#93c5fd}.actions-cell .btn-delete{background:transparent;border:1px solid #d1d5db;color:#6b7280}.actions-cell .btn-delete:hover{background:#f3f4f6;color:#4b5563}.template-card{background:#fff;border:2px solid #e5e7eb;border-radius:12px;padding:18px;cursor:pointer;transition:all .2s ease}.template-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px #3b82f61a}.template-card.selected{border-color:#3b82f6;background:linear-gradient(135deg,#eff6ff,#dbeafe);box-shadow:0 4px 12px #3b82f626}.template-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.template-card-title{display:flex;flex-direction:column;gap:4px}.template-card-header h3{font-size:1.05rem;font-weight:600;color:#1f2937;margin:0}.template-type{display:inline-block;padding:4px 10px;background:#f3f4f6;color:#4b5563;border-radius:20px;font-size:.75rem;font-weight:500}.template-card.selected .template-type{background:#dbeafe;color:#1e40af}.template-card-body{margin-bottom:14px}.template-card-body p{font-size:.9rem;color:#6b7280;margin:0 0 10px}.template-card-body .template-info{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.exam-date-info{color:#3b82f6;font-weight:500}.template-card.selected .section-badge{background:#e0e7ff;color:#3730a3}.template-card-actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid #e5e7eb}.template-card-actions button{flex:1;padding:8px 14px;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.template-card-actions button:first-child{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}.template-card-actions button:first-child:hover{background:#f1f5f9;border-color:#cbd5e1}.template-card-actions .btn-delete{background:transparent;border:1px solid #d1d5db;color:#6b7280}.template-card-actions .btn-delete:hover{background:#f3f4f6;color:#4b5563}.template-card-actions .btn-copy{background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb}.template-card-actions .btn-copy:hover{background:#dbeafe;border-color:#93c5fd}.template-select-prompt{text-align:center;padding:40px 20px;background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px}.template-select-prompt p{color:#64748b;margin-bottom:16px}.template-select-prompt button{padding:10px 20px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.template-select-prompt button:hover{background:#2563eb}.selected-template-info{display:flex;align-items:center;gap:10px;padding:14px 18px;background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #93c5fd;border-radius:10px;margin-bottom:20px}.selected-template-info strong{color:#1e40af}.selected-template-info span{color:#3b82f6;font-weight:500}.selected-template-info .template-type{background:#dbeafe;color:#1e40af}.selected-template-info .template-questions{color:#64748b;font-weight:400}.btn-change{margin-left:auto;padding:6px 14px;background:#fff;border:1px solid #93c5fd;color:#3b82f6;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-change:hover{background:#eff6ff;border-color:#3b82f6}.template-sections-info{padding:14px 18px;background:#f8fafc;border-radius:10px;margin-bottom:24px}.template-sections-info p{font-weight:600;color:#374151;margin:0 0 10px}.template-sections-info ul{margin:0;padding-left:20px}.template-sections-info li{color:#4b5563;margin-bottom:4px;font-size:.9rem}.template-sections-info li strong{color:#1f2937}.template-sections-info .section-types{color:#6b7280;font-size:.85rem}.modal-overlay{position:fixed;inset:0;background:#0f172a99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{background:#fff;border-radius:16px;padding:28px;max-width:600px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 40px #0003}.modal-content h2{font-size:1.3rem;font-weight:700;color:#1f2937;margin:0 0 24px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.modal-content h3{font-size:1rem;font-weight:600;color:#374151;margin:20px 0 12px}.modal-content .form-row{margin-bottom:16px}.modal-content .form-row label{display:block;width:auto;margin-bottom:6px;font-weight:500;color:#374151}.modal-content .form-row input,.modal-content .form-row select{width:100%;max-width:none;padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:.95rem;transition:all .15s ease}.modal-content .form-row input:focus,.modal-content .form-row select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.date-range-row{flex-direction:column;align-items:flex-start}.date-range-inputs{display:flex;align-items:center;gap:12px;width:100%}.date-range-inputs input[type=date]{flex:1;padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:.95rem}.date-range-inputs input[type=date]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626;outline:none}.date-separator{color:#6b7280;font-weight:500}.school-level-row{align-items:flex-start}.school-level-checkboxes{display:flex;gap:20px}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.95rem;color:#374151;padding:8px 16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;transition:all .15s ease}.checkbox-label:hover{background:#f1f5f9;border-color:#cbd5e1}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:#3b82f6;cursor:pointer}.checkbox-label input[type=checkbox]:checked+span,.checkbox-label:has(input:checked){color:#1e40af;font-weight:500}.school-level-badge{display:inline-block;padding:3px 8px;background:#dbeafe;color:#1e40af;border-radius:4px;font-size:.75rem;font-weight:500;margin-right:4px}.sections-list{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.section-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px}.section-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.section-row span{color:#64748b;font-size:.85rem}.section-name{flex:1;min-width:100px;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem}.section-name-select{min-width:120px;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;background:#fff;cursor:pointer}.section-name-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.section-name-input{flex:1;min-width:80px;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem}.section-name-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.section-number{width:60px;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;text-align:center}.section-points{width:70px;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;text-align:center}.btn-remove-section{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#fee2e2;border:none;border-radius:8px;color:#dc2626;font-size:1.2rem;cursor:pointer;transition:all .15s ease}.btn-remove-section:hover{background:#fecaca}.btn-add-section{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;background:#f1f5f9;border:2px dashed #cbd5e1;border-radius:10px;color:#64748b;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .15s ease;width:100%}.btn-add-section:hover{background:#e2e8f0;border-color:#94a3b8;color:#475569}.section-types-container{margin-top:12px;padding-top:12px;border-top:1px dashed #e2e8f0}.section-types-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}.section-types-label{font-size:.85rem;font-weight:500;color:#64748b}.section-types-container .type-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:#fff;border:1px solid #d1d5db;border-radius:16px;font-size:.8rem;color:#374151}.section-types-container .btn-remove-type{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:#fee2e2;border:none;border-radius:50%;color:#dc2626;font-size:.75rem;cursor:pointer;line-height:1}.section-types-container .btn-remove-type:hover{background:#fecaca}.section-types-container .add-type-row{display:flex;gap:8px;margin-top:8px}.section-types-container .new-type-input{flex:1;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem}.section-types-container .new-type-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.section-types-container .new-type-category-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;background:#fff;cursor:pointer;min-width:80px}.section-types-container .new-type-category-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.section-types-container .btn-add-type{padding:6px 12px;background:#10b981;color:#fff;border:none;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer}.section-types-container .btn-add-type:hover{background:#059669}.section-types-container .btn-cancel-type{padding:6px 12px;background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0;border-radius:6px;font-size:.8rem;cursor:pointer}.section-types-container .btn-cancel-type:hover{background:#e2e8f0}.section-types-container .btn-add-type-toggle{padding:6px 12px;background:transparent;border:1px dashed #cbd5e1;border-radius:6px;color:#64748b;font-size:.8rem;cursor:pointer}.section-types-container .btn-add-type-toggle:hover{background:#fff;border-color:#94a3b8}.preset-types-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;padding:10px 12px;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:1px solid #bae6fd;border-radius:8px}.preset-label{font-size:.8rem;font-weight:600;color:#0369a1;margin-right:4px}.btn-preset-type{padding:5px 12px;background:#fff;border:1px solid #7dd3fc;border-radius:16px;font-size:.8rem;color:#0284c7;cursor:pointer;transition:all .15s ease}.btn-preset-type:hover:not(:disabled){background:#0ea5e9;border-color:#0ea5e9;color:#fff}.btn-preset-type.added{background:#dcfce7;border-color:#86efac;color:#16a34a;cursor:default}.btn-preset-type:disabled{cursor:default}.btn-preset-all{padding:5px 12px;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:16px;font-size:.8rem;font-weight:500;color:#fff;cursor:pointer;transition:all .15s ease;margin-left:4px}.btn-preset-all:hover{background:linear-gradient(135deg,#059669,#047857);transform:translateY(-1px)}.grammar-categories-container{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;padding:12px;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:1px solid #bae6fd;border-radius:8px}.grammar-category-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.category-label{font-size:.8rem;font-weight:700;padding:4px 10px;border-radius:6px;min-width:52px;text-align:center}.category-label.category-품사{background:#fef3c7;color:#d97706;border:1px solid #fcd34d}.category-label.category-준동사{background:#dbeafe;color:#2563eb;border:1px solid #93c5fd}.category-label.category-동사{background:#dcfce7;color:#16a34a;border:1px solid #86efac}.category-label.category-기타{background:#f3e8ff;color:#9333ea;border:1px solid #d8b4fe}.category-types{display:flex;flex-wrap:wrap;gap:6px}.type-tag .type-category-badge{font-size:.65rem;padding:1px 4px;border-radius:4px;margin-left:4px;font-weight:600}.type-tag.category-품사{background:#fef9e7;border-color:#fcd34d}.type-tag.category-품사 .type-category-badge{background:#fcd34d;color:#92400e}.type-tag.category-준동사{background:#eff6ff;border-color:#93c5fd}.type-tag.category-준동사 .type-category-badge{background:#93c5fd;color:#1e40af}.type-tag.category-동사{background:#f0fdf4;border-color:#86efac}.type-tag.category-동사 .type-category-badge{background:#86efac;color:#166534}.type-tag.category-기타{background:#faf5ff;border-color:#d8b4fe}.type-tag.category-기타 .type-category-badge{background:#d8b4fe;color:#6b21a8}.grammar-categories-container .btn-preset-all{align-self:flex-start;margin-top:4px}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid #e5e7eb}.modal-actions .btn-cancel{padding:10px 20px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;color:#64748b;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .15s ease}.modal-actions .btn-cancel:hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.modal-actions .btn-save{padding:10px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;color:#fff;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #3b82f659}.modal-actions .btn-save:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.modal-actions .btn-save:disabled{background:#9ca3af;box-shadow:none;cursor:not-allowed}.grade-management-page button{font-family:inherit}.file-label{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;cursor:pointer;font-weight:600;font-size:.95rem;transition:all .2s ease;box-shadow:0 2px 8px #3b82f659}.file-label:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.btn-sample{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:10px 18px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:500;color:#475569;transition:all .15s ease}.btn-sample:hover{background:#f8fafc;border-color:#cbd5e1;color:#334155}.time-slot-btns{display:flex;flex-wrap:wrap;gap:8px}.time-slot-btn{padding:8px 16px;border:1px solid #d1d5db;border-radius:8px;background:#fff;font-size:.9rem;color:#374151;cursor:pointer;transition:all .15s}.time-slot-btn:hover{background:#f3f4f6}.time-slot-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.preview-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px}.preview-actions .btn-cancel{padding:12px 24px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;font-size:.95rem;font-weight:500;color:#64748b;transition:all .15s ease}.preview-actions .btn-cancel:hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.preview-actions .btn-save{padding:12px 28px;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:10px;cursor:pointer;font-size:.95rem;color:#fff;font-weight:600;transition:all .2s ease;box-shadow:0 2px 8px #10b98159}.preview-actions .btn-save:hover:not(:disabled){background:linear-gradient(135deg,#059669,#047857);transform:translateY(-1px);box-shadow:0 4px 12px #10b98166}.preview-actions .btn-save:disabled{background:#9ca3af;box-shadow:none;cursor:not-allowed;transform:none}.btn-new{display:inline-flex;align-items:center;gap:8px;padding:12px 28px;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;cursor:pointer;font-size:.95rem;color:#fff;font-weight:600;margin-top:24px;transition:all .2s ease;box-shadow:0 2px 8px #3b82f659}.btn-new:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.complete-icon{width:72px;height:72px;line-height:72px;background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#16a34a;border-radius:50%;font-size:2.5rem;margin:0 auto 24px;box-shadow:0 4px 12px #16a34a33}.grade-tabs{display:flex;gap:4px;margin-bottom:24px;background:#f1f5f9;padding:4px;border-radius:12px;border-bottom:none}.grade-tab{flex:1;padding:12px 20px;border:none;background:transparent;cursor:pointer;font-size:.95rem;font-weight:500;color:#64748b;border-radius:10px;margin-bottom:0;transition:all .2s ease}.grade-tab:hover{color:#3b82f6;background:#3b82f614}.grade-tab.active{color:#1e40af;background:#fff;font-weight:600;box-shadow:0 1px 3px #0000001a}.upload-section,.history-section{background:#fff;border-radius:16px;padding:28px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f}.upload-step h2,.history-section h2{font-size:1.15rem;font-weight:700;color:#1f2937;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid #e5e7eb}.error-message{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#991b1b;padding:14px 18px;border-radius:10px;margin-bottom:20px;border-left:4px solid #dc2626;font-weight:500}.success-message{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#166534;padding:14px 18px;border-radius:10px;margin-bottom:20px;border-left:4px solid #16a34a;font-weight:500;opacity:1;transition:opacity .5s ease-out}.success-message.fading{opacity:0}.questions-section{background:#fff;border-radius:16px;padding:28px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f}.questions-layout{display:flex;gap:24px}.questions-sidebar{width:260px;flex-shrink:0;border-right:1px solid #e5e7eb;padding-right:24px}.questions-sidebar h3{font-size:1rem;font-weight:600;color:#374151;margin:0 0 16px}.questions-template-list{display:flex;flex-direction:column;gap:8px;max-height:500px;overflow-y:auto}.sidebar-type-tabs{display:flex;gap:4px;margin-bottom:12px}.sidebar-type-tab{flex:1;padding:8px 12px;border:1px solid #e5e7eb;background:#fff;border-radius:6px;font-size:.8rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .15s ease}.sidebar-type-tab:hover{border-color:#93c5fd;color:#3b82f6}.sidebar-type-tab.active{border-color:#3b82f6;background:#eff6ff;color:#1d4ed8}.sidebar-year-group{margin-bottom:8px}.sidebar-year-title{display:flex;align-items:center;gap:6px;padding:8px 10px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:6px;font-size:.85rem;font-weight:600;color:#374151;cursor:pointer;transition:background .15s ease}.sidebar-year-title:hover{background:#f1f5f9}.sidebar-year-title .toggle-icon{font-size:.6rem;color:#6b7280}.sidebar-year-title .year-count{margin-left:auto;font-size:.7rem;font-weight:500;color:#6b7280;background:#e5e7eb;padding:1px 6px;border-radius:8px}.sidebar-year-items{display:flex;flex-direction:column;gap:6px;padding:8px 0 0}.questions-template-item{padding:10px 12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .15s ease}.questions-template-item:hover{background:#f3f4f6;border-color:#d1d5db}.questions-template-item.selected{background:#eff6ff;border-color:#3b82f6}.template-item-name{font-size:.85rem;font-weight:500;color:#1f2937;margin-bottom:2px}.template-item-info{font-size:.75rem;color:#6b7280}.template-item-level{color:#3b82f6}.questions-main{flex:1;min-width:0}.selected-template-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.selected-template-header h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0}.template-type-badge{padding:4px 10px;background:#f3f4f6;color:#4b5563;border-radius:20px;font-size:.75rem;font-weight:500}.questions-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.questions-header h2{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0}.selected-template-badge{padding:6px 14px;background:linear-gradient(135deg,#eff6ff,#dbeafe);color:#1e40af;border-radius:20px;font-size:.85rem;font-weight:500;border:1px solid #93c5fd}.questions-controls{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px;background:#f8fafc;border-radius:12px;margin-bottom:20px}.question-range-input{display:flex;align-items:center;gap:10px}.question-range-input label{font-weight:500;color:#374151}.question-number-input{width:70px;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.95rem;text-align:center}.question-number-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.question-range-input span{color:#6b7280}.btn-generate{padding:10px 20px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #3b82f659}.btn-generate:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.btn-reset{padding:10px 20px;background:#fff;color:#6b7280;border:1px solid #d1d5db;border-radius:10px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-reset:hover{background:#f3f4f6;border-color:#9ca3af}.btn-auto-assign{padding:10px 18px;background:#fff;color:#6366f1;border:1px solid #c7d2fe;border-radius:10px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-auto-assign:hover{background:#eef2ff;border-color:#a5b4fc}.questions-summary{display:flex;align-items:center;gap:12px;font-size:.95rem;color:#4b5563}.questions-summary strong{color:#1f2937;font-size:1.1rem}.questions-summary .separator{color:#d1d5db}.range-select-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border:1px solid #3b82f6;border-radius:12px;margin-bottom:12px}.range-select-label{font-weight:600;color:#1e40af;margin-right:8px}.range-select-group{display:flex;align-items:center;gap:8px}.range-select{padding:8px 14px;border:1px solid #93c5fd;border-radius:8px;background:#fff;font-size:.9rem;color:#374151;cursor:pointer;min-width:80px}.range-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.range-separator{color:#1e40af;font-weight:600}.btn-range-check{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-range-check:hover{background:#2563eb}.btn-range-clear{padding:8px 14px;background:#fff;color:#6b7280;border:1px solid #d1d5db;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-range-clear:hover{background:#f3f4f6;border-color:#9ca3af}.bulk-edit-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fbbf24;border-radius:12px;margin-bottom:20px}.bulk-edit-label{font-weight:600;color:#92400e;margin-right:8px}.bulk-edit-group{display:flex;align-items:center;gap:6px}.bulk-edit-group select{padding:8px 14px;border:1px solid #d1d5db;border-radius:8px;background:#fff;font-size:.9rem;color:#374151;cursor:pointer;min-width:120px}.bulk-edit-group select:focus{outline:none;border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.points-group{display:flex;align-items:center;gap:4px}.bulk-points-input{width:70px;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;text-align:center}.bulk-points-input:focus{outline:none;border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.btn-apply-points{padding:8px 14px;background:#f59e0b;color:#fff;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-apply-points:hover{background:#d97706}.questions-table-wrapper{max-height:500px;overflow:auto;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:20px}.questions-table{width:100%;border-collapse:collapse;font-size:.9rem}.questions-table th,.questions-table td{padding:12px 14px;text-align:center;border-bottom:1px solid #e5e7eb}.questions-table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);font-weight:600;color:#374151;position:sticky;top:0;z-index:10}.questions-table tbody tr:hover{background:#f9fafb}.questions-table .selected-row{background:#eff6ff}.questions-table .selected-row:hover{background:#dbeafe}.th-checkbox,.td-checkbox{width:40px}.th-number,.td-number{width:60px;font-weight:600;color:#1f2937}.th-section,.td-section{width:120px}.section-display{display:inline-block;padding:4px 10px;background:#e0e7ff;color:#3730a3;border-radius:6px;font-size:.85rem;font-weight:500}.th-level,.td-level{width:120px}.th-type,.td-type{width:150px}.grammar-type-select{min-width:130px}.grammar-type-select optgroup{font-weight:700;font-style:normal;color:#1e40af;background:#f0f9ff;padding:4px 0}.grammar-type-select option{font-weight:400;color:#374151;padding-left:12px}.th-answer,.td-answer,.th-points,.td-points{width:80px}.questions-table select{width:100%;padding:8px 12px;min-height:36px;border:1px solid #d1d5db;border-radius:6px;background:#fff;font-size:.85rem;color:#374151}.questions-table select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.questions-table input[type=text],.questions-table input[type=number]{width:100%;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;text-align:center}.questions-table input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.questions-table input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}.no-questions{text-align:center;padding:60px 20px;background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px}.no-questions p{color:#64748b;margin:0 0 8px}.no-questions .hint{font-size:.9rem;color:#94a3b8}.questions-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:16px;border-top:1px solid #e5e7eb}.questions-actions .btn-cancel{padding:12px 24px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;font-size:.95rem;font-weight:500;color:#64748b;transition:all .15s ease}.questions-actions .btn-cancel:hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.questions-actions .btn-save{padding:12px 28px;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:10px;cursor:pointer;font-size:.95rem;color:#fff;font-weight:600;transition:all .2s ease;box-shadow:0 2px 8px #10b98159}.questions-actions .btn-save:hover:not(:disabled){background:linear-gradient(135deg,#059669,#047857);transform:translateY(-1px);box-shadow:0 4px 12px #10b98166}.questions-actions .btn-save:disabled{background:#9ca3af;box-shadow:none;cursor:not-allowed;transform:none}.option-management-bar{display:flex;align-items:center;gap:10px;padding:12px 18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:16px}.option-management-label{font-weight:500;color:#475569;margin-right:8px}.btn-manage-option{padding:8px 14px;background:#fff;border:1px solid #d1d5db;border-radius:8px;font-size:.85rem;color:#374151;cursor:pointer;transition:all .15s ease}.btn-manage-option:hover{background:#f1f5f9;border-color:#94a3b8;color:#1f2937}.option-modal{max-width:450px}.option-modal h2{font-size:1.2rem}.option-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto;margin-bottom:16px;padding:12px;background:#f8fafc;border-radius:10px}.option-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#fff;border:1px solid #e5e7eb;border-radius:8px}.option-value{font-size:.95rem;color:#374151}.btn-remove-option{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#fee2e2;border:none;border-radius:6px;color:#dc2626;font-size:1.1rem;cursor:pointer;transition:all .15s ease}.btn-remove-option:hover{background:#fecaca}.add-option-row{display:flex;gap:10px;margin-bottom:20px}.new-option-input{flex:1;padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:.95rem}.new-option-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.btn-add-option{padding:10px 20px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-add-option:hover{background:linear-gradient(135deg,#059669,#047857)}.option-modal.section-edit-modal{max-width:550px}.section-option-list{display:flex;flex-direction:column;gap:16px;max-height:400px;overflow-y:auto;margin-bottom:20px;padding:4px}.section-option-group{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px}.section-option-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #e5e7eb}.section-option-name{font-size:1rem;font-weight:600;color:#1f2937}.section-option-header .btn-remove-option{padding:4px 12px;font-size:.8rem;width:auto;height:auto;background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.section-option-header .btn-remove-option:hover{background:#fee2e2;border-color:#f87171}.section-types-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;min-height:32px}.type-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:#fff;border:1px solid #d1d5db;border-radius:20px;font-size:.85rem;color:#374151}.btn-remove-type{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:#fee2e2;border:none;border-radius:50%;color:#dc2626;font-size:.9rem;cursor:pointer;transition:all .15s ease;line-height:1}.btn-remove-type:hover{background:#fecaca}.add-type-row{display:flex;gap:8px;margin-top:8px}.new-type-input{flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem}.new-type-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.btn-add-type{padding:8px 14px;background:#10b981;color:#fff;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-add-type:hover{background:#059669}.btn-cancel-type{padding:8px 14px;background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0;border-radius:8px;font-size:.85rem;cursor:pointer;transition:all .15s ease}.btn-cancel-type:hover{background:#e2e8f0;color:#475569}.btn-add-type-toggle{width:100%;padding:8px 14px;background:transparent;border:1px dashed #cbd5e1;border-radius:8px;color:#64748b;font-size:.85rem;cursor:pointer;transition:all .15s ease}.btn-add-type-toggle:hover{background:#fff;border-color:#94a3b8;color:#475569}.add-section-row{display:flex;gap:10px;padding:16px;background:#f1f5f9;border:2px dashed #cbd5e1;border-radius:12px}.add-section-row .new-option-input{flex:1}.add-section-row .btn-add-option{white-space:nowrap}.questions-table select:disabled{background:#f1f5f9;color:#9ca3af;cursor:not-allowed}.grades-view-section{background:#fff;border-radius:16px;padding:28px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f}.grades-exam-selector{display:flex;align-items:center;gap:20px;padding:24px 28px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;margin-bottom:28px;box-shadow:0 4px 20px #667eea4d}.exam-selector-icon{width:56px;height:56px;background:#fff3;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.exam-selector-icon svg{width:28px;height:28px;color:#fff}.exam-selector-content{flex:1}.exam-selector-content h2{font-size:1.4rem;font-weight:700;color:#fff;margin:0 0 6px}.exam-selector-desc{font-size:.9rem;color:#ffffffd9;margin:0}.exam-selector-dropdown{flex-shrink:0}.exam-selector-dropdown select{min-width:280px;padding:14px 20px;border:2px solid rgba(255,255,255,.3);border-radius:12px;font-size:1rem;font-weight:500;color:#1f2937;background:#fff;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #0000001a}.exam-selector-dropdown select:hover{border-color:#ffffff80;box-shadow:0 6px 16px #00000026}.exam-selector-dropdown select:focus{outline:none;border-color:#fff;box-shadow:0 0 0 4px #ffffff4d}.grades-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:#64748b}.loading-spinner{width:48px;height:48px;border:4px solid #e5e7eb;border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}.grades-loading p{margin:0;font-size:1rem}.grades-stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:24px}.stats-card{display:flex;align-items:center;gap:10px;padding:14px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;transition:all .2s ease}.stats-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000014}.stats-card.primary{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-color:#7dd3fc}.stats-card.highlight{background:linear-gradient(135deg,#fef9c3,#fef08a);border-color:#fcd34d}.stats-icon{width:40px;height:40px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stats-icon svg{width:20px;height:20px;color:#fff}.stats-icon.blue{background:linear-gradient(135deg,#3b82f6,#2563eb)}.stats-icon.green{background:linear-gradient(135deg,#10b981,#059669)}.stats-icon.gold{background:linear-gradient(135deg,#f59e0b,#d97706)}.stats-icon.orange{background:linear-gradient(135deg,#f97316,#ea580c)}.stats-icon.purple{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.stats-info{display:flex;flex-direction:column}.stats-label{font-size:.75rem;color:#64748b;margin-bottom:2px}.stats-value{font-size:1.3rem;font-weight:700;color:#1f2937;line-height:1.2}.stats-value small{font-size:.9rem;font-weight:500;color:#94a3b8;margin-left:2px}.grades-section-bars{background:#f8fafc;border-radius:14px;padding:24px;margin-bottom:24px}.grades-section-bars h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0 0 20px}.section-bars-container{display:flex;flex-direction:column;gap:16px}.section-bar-item{display:flex;align-items:center;gap:12px}.section-bar-header{display:flex;align-items:center;gap:8px;width:170px;flex-shrink:0}.section-bar-name{font-size:.95rem;font-weight:600;padding:4px 8px;border-radius:6px;width:80px;text-align:center;display:flex;align-items:center;justify-content:center}.section-bar-name.listening{background:#fef3c7;color:#92400e}.section-bar-name.grammar{background:#dcfce7;color:#166534}.section-bar-name.reading{background:#dbeafe;color:#1e40af}.section-bar-score{font-size:1rem;font-weight:700;color:#1f2937;width:70px}.section-bar-score small{font-size:.8rem;font-weight:400;color:#94a3b8}.section-bar-track{flex:1;height:24px;background:#e5e7eb;border-radius:12px;overflow:hidden}.section-bar-fill{height:100%;border-radius:12px;transition:width .5s ease}.section-bar-fill.listening{background:linear-gradient(90deg,#fbbf24,#f59e0b)}.section-bar-fill.grammar{background:linear-gradient(90deg,#34d399,#10b981)}.section-bar-fill.reading{background:linear-gradient(90deg,#60a5fa,#3b82f6)}.section-bar-fill.error{background:linear-gradient(90deg,#f87171,#ef4444)}.section-bar-track.error{background:#fee2e2}.section-bar-score.error-rate{color:#dc2626}.section-bar-top10{font-size:.85rem;color:#64748b;min-width:100px;text-align:right}.grades-table-section{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden}.grades-table-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e5e7eb}.grades-table-header h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0}.table-count{font-size:.9rem;font-weight:600;color:#667eea;padding:6px 14px;background:#667eea1a;border-radius:20px}.grades-table-wrapper{overflow-x:auto}.grades-pagination{display:flex;justify-content:center;align-items:center;gap:4px;padding:16px 0}.grades-pagination button{padding:6px 12px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:13px;cursor:pointer;color:#374151}.grades-pagination button:hover:not(:disabled):not(.active){background:#f3f4f6}.grades-pagination button.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.grades-pagination button:disabled{opacity:.4;cursor:not-allowed}.grades-table{width:100%;border-collapse:collapse;font-size:.9rem}.grades-table th,.grades-table td{padding:14px 16px;text-align:center;border-bottom:1px solid #f1f5f9}.grades-table th{background:#fff;font-weight:600;color:#64748b;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;position:sticky;top:0;z-index:10;border-bottom:2px solid #e5e7eb}.grades-table th.listening{color:#f59e0b}.grades-table th.grammar{color:#10b981}.grades-table th.reading{color:#3b82f6}.grades-table th.rg{color:#8b5cf6}.grades-table tbody tr{transition:background .15s ease}.grades-table tbody tr:hover{background:#f8fafc}.grades-table tbody tr.top-1{background:linear-gradient(90deg,rgba(251,191,36,.1) 0%,transparent 100%)}.grades-table tbody tr.top-2{background:linear-gradient(90deg,rgba(156,163,175,.1) 0%,transparent 100%)}.grades-table tbody tr.top-3{background:linear-gradient(90deg,rgba(217,119,6,.1) 0%,transparent 100%)}.grades-table .td-rank{font-weight:600;color:#64748b;width:60px}.grades-table .rank-medal{font-size:1.2rem}.grades-table .td-name{font-weight:500;color:#1f2937;text-align:center;white-space:nowrap}.grades-table .td-id{font-size:.85rem;color:#64748b;font-family:monospace;white-space:nowrap}.grades-table .td-class{font-size:.8rem;color:#64748b;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grades-table .th-date{min-width:100px}.grades-table .td-date{font-size:.85rem;color:#64748b;white-space:nowrap}.grades-table .td-level .level-badge{display:inline-block;padding:4px 10px;background:linear-gradient(135deg,#e0e7ff,#c7d2fe);color:#3730a3;border-radius:6px;font-size:.85rem;font-weight:600}.grades-table .td-score{font-weight:500;color:#374151}.grades-table .td-score.rg{color:#8b5cf6;font-weight:600}.grades-table .td-total{font-size:1.05rem;font-weight:700;color:#1f2937;background:#667eea0d}.btn-view-detail{padding:8px 16px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #667eea4d}.btn-view-detail:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.grades-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 40px;text-align:center}.grades-empty-state .empty-icon{width:80px;height:80px;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:24px}.grades-empty-state .empty-icon svg{width:40px;height:40px;color:#94a3b8}.grades-empty-state.initial .empty-icon{background:linear-gradient(135deg,#e0e7ff,#c7d2fe)}.grades-empty-state.initial .empty-icon svg{color:#667eea}.grades-empty-state h3{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0 0 12px}.grades-empty-state p{font-size:.95rem;color:#64748b;margin:0;line-height:1.6}.modal-content.grade-detail-modal{max-width:1300px;width:95%;max-height:90vh;overflow-y:auto;position:relative}.grade-detail-modal h2{display:flex;align-items:center;gap:12px;font-size:1.3rem;margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid #e5e7eb}.grade-detail-modal h2 .exam-name{font-size:.95rem;font-weight:500;color:#64748b;padding:4px 12px;background:#f1f5f9;border-radius:20px}.student-info-row{display:flex;flex-wrap:wrap;gap:16px;padding:16px 20px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:12px;margin-bottom:24px}.student-info-row .info-item{font-size:.9rem;color:#64748b}.student-info-row .info-item strong{color:#374151;margin-right:4px}.student-info-header{display:flex;align-items:center;gap:20px;padding:20px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:12px;margin-bottom:24px}.student-info-header .student-avatar{width:60px;height:60px;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.5rem;font-weight:700}.student-info-header .student-details h3{font-size:1.2rem;font-weight:600;color:#1f2937;margin:0 0 8px}.student-info-header .student-details .info-row{display:flex;gap:16px;font-size:.9rem;color:#64748b}.student-info-header .student-details .info-row span{display:flex;align-items:center;gap:4px}.grade-scores-layout{margin-bottom:32px}.detail-scores-section{display:flex;justify-content:center;gap:32px;flex-wrap:wrap}.gauge-circle.large{width:160px;height:160px}.gauge-circle.large .gauge-value{font-size:2.5rem}.grade-scores-container{display:flex;justify-content:center;align-items:flex-start;gap:32px;margin-bottom:32px;flex-wrap:wrap}.score-gauge-item{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:120px}.score-gauge-item .gauge-label{font-size:.95rem;font-weight:600;color:#374151;margin-bottom:12px;height:20px;display:flex;align-items:center;justify-content:center}.score-gauge-item .gauge-max{margin-top:8px;font-size:.85rem;color:#94a3b8}.score-gauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:24px;margin-bottom:32px}.gauge-item{display:flex;flex-direction:column;align-items:center}.gauge-circle{position:relative;width:120px;height:120px}.gauge-circle svg{transform:rotate(-90deg);width:100%;height:100%}.gauge-circle .gauge-bg{fill:none;stroke:#e5e7eb;stroke-width:10}.gauge-circle .gauge-fill{fill:none;stroke:#3b82f6;stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .5s ease}.gauge-circle .gauge-fill.listening{stroke:#f59e0b}.gauge-circle .gauge-fill.grammar{stroke:#8b5cf6}.gauge-circle .gauge-fill.reading{stroke:#10b981}.gauge-circle .gauge-fill.total{stroke:#3b82f6}.gauge-circle .gauge-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.gauge-circle .gauge-score{font-size:1.5rem;font-weight:700;color:#1f2937}.gauge-circle .gauge-value{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:700;color:#1f2937}.gauge-circle.total .gauge-value{color:#3b82f6}.gauge-circle.grammar .gauge-value{color:#8b5cf6}.gauge-circle.reading .gauge-value{color:#10b981}.gauge-circle.listening .gauge-value{color:#f59e0b}.gauge-circle .gauge-max{font-size:.8rem;color:#94a3b8}.gauge-circle-pie{position:relative;width:120px;height:120px}.gauge-circle-pie svg{width:100%;height:100%}.gauge-circle-pie.large{width:192px;height:192px}.gauge-value-white{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.3)}.gauge-circle-pie.large .gauge-value-white{font-size:2rem}.gauge-item .gauge-label{margin-top:12px;font-size:.95rem;font-weight:600;color:#374151}.comparison-section{margin-bottom:32px}.comparison-section h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.comparison-table{width:100%;border-collapse:collapse;font-size:.9rem;table-layout:fixed}.comparison-table th,.comparison-table td{padding:12px 8px;text-align:center;border:1px solid #e5e7eb}.comparison-table th{background:#f8fafc;font-weight:600;color:#374151}.comparison-table th:first-child,.comparison-table td:first-child{width:130px;text-align:center;white-space:nowrap}.comparison-table th:not(:first-child),.comparison-table td:not(:first-child){width:calc((100% - 110px)/4)}.comparison-table td:first-child{font-weight:500;color:#1f2937;background:#f9fafb}.comparison-table .my-score{background:transparent;color:inherit;font-weight:700}.comparison-table .diff-positive{color:#16a34a}.comparison-table .diff-negative{color:#dc2626}.grade-comparison-section{margin-bottom:32px}.grade-comparison-section h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin-bottom:16px}.comparison-table .my-score-row{background:transparent}.comparison-table .my-score-row td{color:#2563eb;font-weight:600}.comparison-table .highlight-row{background:transparent}.comparison-table .highlight-row td{color:inherit}.analysis-section{margin-bottom:24px}.analysis-section h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.grade-analysis-section{margin-bottom:32px}.grade-analysis-section h3{font-size:1.1rem;font-weight:600;color:#1f2937;margin-bottom:16px}.analysis-section-blocks{display:flex;flex-direction:column;gap:20px}.analysis-section-block{background:#f8fafc;border-radius:12px;padding:20px}.analysis-section-block h4{font-size:1rem;font-weight:600;color:#374151;margin:0 0 16px;display:flex;align-items:center;gap:8px}.analysis-section-block h4 .section-badge{padding:4px 10px;background:#e0e7ff;color:#3730a3;border-radius:6px;font-size:.8rem;margin:0}.analysis-table-block{margin-bottom:24px}.analysis-table-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.analysis-table-header .section-dot{width:10px;height:10px;border-radius:50%;background:#3b82f6}.analysis-table-header .section-name{font-size:1rem;font-weight:600;color:#1f2937;border:none;padding:0;border-radius:0}.analysis-table-wrapper{overflow-x:auto;border-radius:8px;border:1px solid #e2e8f0}.analysis-matrix-table{width:100%;border-collapse:collapse;font-size:.75rem;table-layout:fixed}.analysis-matrix-table th,.analysis-matrix-table td{padding:8px 4px;text-align:center;border:1px solid #e5e7eb;word-break:keep-all;overflow-wrap:break-word}.analysis-matrix-table thead th{background:#334155;color:#f3f4f6;font-weight:600;border:1px solid #4b5563}.analysis-matrix-table .th-type{text-align:center}.analysis-matrix-table .th-total{font-size:.75rem;line-height:1.2}.analysis-matrix-table .th-question-type{font-size:.7rem;line-height:1.2;word-break:keep-all;padding:6px 2px}.analysis-matrix-table .total-row{font-weight:600}.analysis-matrix-table .td-type,.analysis-matrix-table .td-difficulty{text-align:left;padding-left:8px;font-weight:500;color:#374151;white-space:nowrap;font-size:.7rem;line-height:1.3}.analysis-matrix-table .td-difficulty{background:#f9fafb;text-align:center}.analysis-matrix-table .td-score-total{font-weight:600;color:#1f2937}.analysis-matrix-table .td-score-total .rate{display:block;font-size:.75rem;color:#64748b;font-weight:400}.analysis-matrix-table .td-score-diff{color:#374151;font-weight:500}.analysis-matrix-table .td-score{color:#374151}.analysis-matrix-table .td-score.empty{background:#f9fafb;color:#cbd5e1}.analysis-matrix-table .td-score.perfect{background:#e0f2fe;color:#0c4a6e;font-weight:600}.analysis-matrix-table .td-score.wrong{background:#fff;color:#9ca3af;font-weight:400}.analysis-matrix-table .td-score.partial{background:#e0f2fe;color:#0c4a6e;font-weight:500}.analysis-matrix-table .category-header-row th.th-category{padding:6px 4px;font-size:.7rem;font-weight:600;letter-spacing:.5px;border-bottom:none}.analysis-matrix-table .category-header-row .th-empty{background:transparent;border:none}.analysis-matrix-table .th-category{background:#334155;color:#f3f4f6;border:1px solid #4b5563;font-size:.7rem;padding:5px 8px}.analysis-matrix-table .th-category:first-of-type{border-left:1px solid #4b5563}.analysis-matrix-table .th-category.category-품사,.analysis-matrix-table .th-category.category-준동사,.analysis-matrix-table .th-category.category-동사,.analysis-matrix-table .th-category.category-기타,.analysis-matrix-table .th-question-type.type-category-품사,.analysis-matrix-table .th-question-type.type-category-준동사,.analysis-matrix-table .th-question-type.type-category-동사,.analysis-matrix-table .th-question-type.type-category-기타{background:#334155;color:#f3f4f6}.analysis-matrix-table .th-question-type.category-first{border-left:1px solid #4b5563}.difficulty-analysis{display:flex;gap:16px;margin-bottom:16px}.difficulty-item{flex:1;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px;text-align:center}.difficulty-item .difficulty-label{font-size:.85rem;color:#64748b;margin-bottom:8px}.difficulty-item .difficulty-score{font-size:1.2rem;font-weight:700;color:#1f2937}.difficulty-item .difficulty-detail{font-size:.8rem;color:#94a3b8;margin-top:4px}.difficulty-item.easy{border-color:#86efac;background:linear-gradient(135deg,#f0fdf4,#dcfce7)}.difficulty-item.easy .difficulty-label{color:#166534}.difficulty-item.medium{border-color:#fde68a;background:linear-gradient(135deg,#fefce8,#fef9c3)}.difficulty-item.medium .difficulty-label{color:#854d0e}.difficulty-item.hard{border-color:#fca5a5;background:linear-gradient(135deg,#fef2f2,#fee2e2)}.difficulty-item.hard .difficulty-label{color:#991b1b}.type-analysis{display:flex;flex-direction:column;gap:10px}.type-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e5e7eb;border-radius:8px}.type-item .type-name{min-width:100px;font-weight:500;color:#374151}.type-item .type-bar-container{flex:1;height:24px;background:#e5e7eb;border-radius:12px;overflow:hidden;position:relative}.type-item .type-bar{height:100%;border-radius:12px;transition:width .5s ease}.type-item .type-bar.high{background:linear-gradient(90deg,#22c55e,#16a34a)}.type-item .type-bar.medium{background:linear-gradient(90deg,#facc15,#eab308)}.type-item .type-bar.low{background:linear-gradient(90deg,#f87171,#ef4444)}.type-item .type-score{min-width:80px;text-align:right;font-weight:600;color:#1f2937}.type-item .type-detail{min-width:60px;text-align:right;font-size:.85rem;color:#64748b}.grade-detail-modal .modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;margin:0;padding:0;border-top:none}.grade-detail-modal .btn-close{padding:12px 32px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;color:#475569;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .15s ease}.grade-detail-modal .btn-close:hover{background:#e2e8f0;border-color:#cbd5e1}.grades-loading,.grades-empty{text-align:center;padding:60px 20px;color:#64748b}.grades-loading{font-size:1rem}.grades-empty{background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px}.grades-empty p{margin:0}@media(max-width:1200px){.grades-stats-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1024px){.grades-stats-grid{grid-template-columns:repeat(2,1fr)}.section-bar-item{flex-wrap:wrap}.section-bar-header{min-width:100%;margin-bottom:8px}.section-bar-top10{min-width:100%;text-align:left;margin-top:4px}}@media(max-width:768px){.grades-exam-selector{flex-direction:column;text-align:center;padding:20px}.exam-selector-dropdown select{min-width:100%}.grades-stats-grid{grid-template-columns:1fr}.stats-card{padding:12px}.grades-section-bars{padding:16px}.section-bar-item{flex-direction:column;align-items:stretch;gap:8px}.section-bar-header{min-width:auto}.section-bar-top10{text-align:left}.grades-table th,.grades-table td{padding:10px 8px;font-size:.85rem}.grades-table .td-class,.grades-table .td-id{display:none}.btn-view-detail{padding:6px 10px;font-size:.8rem}.score-gauges{grid-template-columns:repeat(2,1fr);gap:16px}.gauge-circle,.gauge-circle-pie{width:100px;height:100px}.gauge-circle .gauge-score{font-size:1.2rem}.difficulty-analysis{flex-direction:column}.student-info-header{flex-direction:column;text-align:center}.student-info-header .info-row{flex-direction:column;gap:8px}}.exam-history-section{margin-top:30px;padding-top:20px}.exam-history-section h3{background:linear-gradient(135deg,#1e6ebf,#2980c6);color:#fff;font-size:.95rem;font-weight:700;padding:12px 24px;border-radius:999px;text-align:center;margin:0 0 16px;letter-spacing:.05em}.history-charts-container{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-items:start}.history-chart{background:#fff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.chart-title{font-size:.9rem;font-weight:600;color:#fff;background:#334155;padding:8px 0;text-align:center;display:flex;align-items:center;justify-content:center}.chart-bars{display:flex;align-items:flex-end;gap:5px;padding:12px 15px 25px}.chart-y-axis{display:flex;flex-direction:column;justify-content:space-between;font-size:.65rem;color:#999;padding-right:5px;text-align:right;width:25px;flex-shrink:0;height:120px;margin-bottom:1px}.chart-bar-area{flex:1;display:flex;justify-content:space-around;align-items:flex-end;border-left:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;padding:0 10px;position:relative;height:120px}.bar-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1;max-width:50px;height:100%;position:relative}.bar{width:30px;border-radius:4px 4px 0 0;position:relative;min-height:5px;transition:height .3s ease}.bar.total{background:linear-gradient(180deg,#3b82f6,#2563eb)}.bar.grammar{background:linear-gradient(180deg,#8b5cf6,#7c3aed)}.bar.reading{background:linear-gradient(180deg,#10b981,#059669)}.bar.listening{background:linear-gradient(180deg,#f59e0b,#d97706)}.bar-value{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.7rem;font-weight:600;color:#fff;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.5)}.bar-label{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);font-size:.65rem;color:#666;white-space:nowrap;text-align:center}@media(max-width:900px){.history-charts-container{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.history-charts-container{grid-template-columns:1fr}}.error-rate-toggle-section{margin-top:20px;padding-top:16px;border-top:1px solid #e5e7eb}.error-rate-toggle-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;font-size:.9rem;font-weight:500;color:#475569;cursor:pointer;transition:all .2s}.error-rate-toggle-btn svg{width:18px;height:18px}.error-rate-toggle-btn .toggle-arrow{margin-left:4px;font-size:.7rem}.analysis-buttons-section{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid #e5e7eb}.analysis-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;font-size:.9rem;font-weight:500;color:#475569;cursor:pointer;transition:all .2s}.analysis-btn svg{width:18px;height:18px;flex-shrink:0}.analysis-btn:hover{background:#f1f5f9;border-color:#cbd5e1}.analysis-btn.error-rate{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#f59e0b;color:#92400e}.analysis-btn.error-rate:hover{background:linear-gradient(135deg,#fde68a,#fcd34d)}.analysis-btn.grade-avg{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-color:#3b82f6;color:#1e40af}.analysis-btn.grade-avg:hover{background:linear-gradient(135deg,#bfdbfe,#93c5fd)}.analysis-btn.level-avg{background:linear-gradient(135deg,#ede9fe,#ddd6fe);border-color:#7c3aed;color:#5b21b6}.analysis-btn.level-avg:hover{background:linear-gradient(135deg,#ddd6fe,#c4b5fd)}.analysis-btn.school-avg{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#059669;color:#065f46}.analysis-btn.school-avg:hover{background:linear-gradient(135deg,#a7f3d0,#6ee7b7)}.error-rate-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.error-rate-modal{background:#fff;border-radius:16px;width:100%;max-width:900px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d;animation:slideUp .25s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.error-rate-modal-header{display:flex;align-items:center;gap:16px;padding:16px 24px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px 16px 0 0}.modal-view-tabs{display:flex;gap:4px;background:#ffffff26;padding:4px;border-radius:8px}.modal-view-tab{padding:8px 16px;background:transparent;border:none;border-radius:6px;font-size:.9rem;font-weight:500;color:#ffffffb3;cursor:pointer;transition:all .15s}.modal-view-tab:hover{color:#fff;background:#ffffff1a}.modal-view-tab.active{background:#fff;color:#7c3aed;font-weight:600}.error-rate-modal-header .modal-exam-name{font-size:.85rem;color:#ffffffd9;background:#ffffff26;padding:4px 12px;border-radius:20px;margin-left:auto}.modal-close-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#fff3;border:none;border-radius:50%;cursor:pointer;font-size:1.5rem;color:#fff;transition:all .15s}.modal-close-btn:hover{background:#ffffff4d;transform:scale(1.1)}.error-rate-modal .error-rate-section-tabs{display:flex;gap:0;border-bottom:1px solid #e5e7eb;background:#fafafa}.error-rate-section-tab,.error-rate-section-tabs .section-tab{flex:1;padding:12px 16px;background:transparent;border:none;border-bottom:2px solid transparent;font-size:.9rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .15s}.error-rate-section-tab:hover,.error-rate-section-tabs .section-tab:hover{color:#3b82f6;background:#3b82f60d}.error-rate-section-tab.active,.error-rate-section-tabs .section-tab.active{color:#2563eb;border-bottom-color:#3b82f6;background:#fff}.error-rate-section-tabs .section-tab.grammar.active{color:#7c3aed;border-bottom-color:#7c3aed}.error-rate-section-tabs .section-tab.reading.active{color:#059669;border-bottom-color:#059669}.error-rate-section-tabs .section-tab.listening.active{color:#0284c7;border-bottom-color:#0284c7}.error-rate-section-tabs .section-tab .question-count{margin-left:6px;font-size:.8rem;color:#9ca3af}.error-rate-modal-body{padding:20px 24px;overflow-y:auto;flex:1}.error-rate-questions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.top5-view-body{padding:20px 24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:24px}.top5-overall-section{background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:12px;padding:20px;border:1px solid #f59e0b}.top5-overall-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid rgba(245,158,11,.3)}.top5-overall-header h4{margin:0;font-size:1.1rem;font-weight:700;color:#92400e}.top5-subtitle{font-size:.85rem;color:#b45309}.top5-overall-list{display:flex;flex-direction:column;gap:10px}.top5-overall-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border-radius:10px;box-shadow:0 2px 6px #00000014}.top5-overall-item.rank-1{background:linear-gradient(135deg,#fef3c7,#fff);border:2px solid #f59e0b}.top5-overall-item.rank-2{border:1px solid #d1d5db}.top5-overall-item.rank-3{border:1px solid #fb923c}.top5-overall-rank{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#f59e0b;color:#fff;font-size:.9rem;font-weight:700;border-radius:50%;flex-shrink:0}.top5-overall-item.rank-1 .top5-overall-rank{background:linear-gradient(135deg,#f59e0b,#d97706)}.top5-overall-item.rank-2 .top5-overall-rank{background:#9ca3af}.top5-overall-item.rank-3 .top5-overall-rank{background:#fb923c}.top5-overall-item.rank-4 .top5-overall-rank,.top5-overall-item.rank-5 .top5-overall-rank{background:#d1d5db;color:#4b5563}.top5-overall-info{display:flex;align-items:center;gap:8px;min-width:120px}.top5-section-badge{font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:10px}.top5-section-badge.grammar{background:#ede9fe;color:#7c3aed}.top5-section-badge.reading{background:#d1fae5;color:#059669}.top5-section-badge.listening{background:#e0f2fe;color:#0284c7}.top5-overall-question{font-size:.95rem;font-weight:600;color:#374151}.top5-overall-bar-wrap{flex:1;height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}.top5-overall-bar{height:100%;border-radius:4px;transition:width .3s ease}.top5-overall-bar.grammar{background:linear-gradient(90deg,#c4b5fd,#7c3aed)}.top5-overall-bar.reading{background:linear-gradient(90deg,#6ee7b7,#059669)}.top5-overall-bar.listening{background:linear-gradient(90deg,#7dd3fc,#0284c7)}.top5-overall-rate{font-size:.95rem;font-weight:700;color:#374151;min-width:55px;text-align:right}.top5-overall-rate.high{color:#dc2626}.top5-by-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.top5-section-card{background:#fff;border-radius:12px;padding:16px;border:2px solid #e5e7eb}.top5-section-card.grammar{border-color:#c4b5fd;background:linear-gradient(180deg,#f5f3ff,#fff)}.top5-section-card.reading{border-color:#6ee7b7;background:linear-gradient(180deg,#ecfdf5,#fff)}.top5-section-card.listening{border-color:#7dd3fc;background:linear-gradient(180deg,#f0f9ff,#fff)}.top5-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #e5e7eb}.top5-section-header h5{margin:0;font-size:1rem;font-weight:700}.top5-section-card.grammar .top5-section-header h5{color:#7c3aed}.top5-section-card.reading .top5-section-header h5{color:#059669}.top5-section-card.listening .top5-section-header h5{color:#0284c7}.section-question-count{font-size:.8rem;color:#6b7280}.top5-section-list{display:flex;flex-direction:column;gap:8px}.top5-section-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#fffc;border-radius:6px}.section-rank{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:#e5e7eb;color:#4b5563;font-size:.75rem;font-weight:700;border-radius:50%}.top5-section-item:first-child .section-rank{background:#f59e0b;color:#fff}.section-qnum{font-size:.85rem;font-weight:600;color:#374151;min-width:36px}.section-bar-wrap{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.section-bar{height:100%;border-radius:3px}.section-bar.grammar{background:linear-gradient(90deg,#c4b5fd,#7c3aed)}.section-bar.reading{background:linear-gradient(90deg,#6ee7b7,#059669)}.section-bar.listening{background:linear-gradient(90deg,#7dd3fc,#0284c7)}.section-rate{font-size:.8rem;font-weight:600;color:#374151;min-width:42px;text-align:right}.section-rate.high{color:#dc2626}.question-error-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;transition:all .15s}.question-error-item:hover{background:#f3f4f6;border-color:#d1d5db}.question-number{min-width:38px;font-size:.9rem;font-weight:600;color:#374151}.error-bar-container{flex:1;height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}.error-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.error-bar-fill.low{background:linear-gradient(90deg,#86efac,#22c55e)}.error-bar-fill.medium{background:linear-gradient(90deg,#fde047,#eab308)}.error-bar-fill.high{background:linear-gradient(90deg,#fca5a5,#ef4444)}.error-bar-fill.grammar{background:linear-gradient(90deg,#c4b5fd,#7c3aed)}.error-bar-fill.reading{background:linear-gradient(90deg,#6ee7b7,#059669)}.error-bar-fill.listening{background:linear-gradient(90deg,#7dd3fc,#0284c7)}.error-rate-value{min-width:42px;font-size:.8rem;font-weight:600;text-align:right}.error-rate-value.low{color:#16a34a}.error-rate-value.medium{color:#ca8a04}.error-rate-value.high{color:#dc2626}.error-rate-grammar-grouped{display:flex;flex-direction:column;gap:20px}.grammar-category-group{background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.grammar-category-group .category-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;font-weight:600;font-size:.9rem}.grammar-category-group .category-header.category-품사{background:linear-gradient(90deg,#fef3c7,#fde68a);color:#92400e}.grammar-category-group .category-header.category-준동사{background:linear-gradient(90deg,#d1fae5,#6ee7b7);color:#065f46}.grammar-category-group .category-header.category-동사{background:linear-gradient(90deg,#dbeafe,#93c5fd);color:#1e40af}.grammar-category-group .category-header.category-기타{background:linear-gradient(90deg,#f3e8ff,#d8b4fe);color:#6b21a8}.grammar-category-group .category-header.category-미분류{background:#f3f4f6;color:#6b7280}.grammar-category-group .category-avg{font-size:.8rem;font-weight:500;opacity:.9}.grammar-category-group .category-questions{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;padding:12px;background:#fafafa}.question-error-item.with-type{flex-direction:column;align-items:stretch;gap:8px}.question-error-item.with-type .question-info{display:flex;align-items:center;gap:8px}.question-error-item.with-type .question-number{font-size:.85rem}.question-error-item .question-type{font-size:.75rem;padding:2px 8px;background:#e5e7eb;border-radius:10px;color:#4b5563}.question-error-item.with-type .error-bar-container{width:100%}.question-error-item.with-type .error-rate-value{text-align:left;font-size:.85rem}.error-rate-modal-footer{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#f8fafc;border-top:1px solid #e5e7eb;border-radius:0 0 16px 16px}.footer-stats{display:flex;gap:24px}.stat-item{display:flex;align-items:center;gap:6px}.stat-label{font-size:.9rem;color:#64748b}.stat-value{font-size:.95rem;font-weight:600;color:#1f2937}.stat-value.highlight{color:#7c3aed;font-size:1rem}.btn-close-modal{padding:10px 24px;background:#6b7280;color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-close-modal:hover{background:#4b5563}.no-error-data{padding:40px 20px;text-align:center;color:#6b7280;font-size:.95rem}.stats-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .2s ease}.stats-modal{background:#fff;border-radius:16px;width:100%;max-width:800px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d;animation:slideUp .25s ease}.stats-modal-header{display:flex;align-items:center;gap:16px;padding:20px 24px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:16px 16px 0 0}.stats-modal-header h3{margin:0;font-size:1.25rem;font-weight:700;color:#fff}.stats-modal-header .modal-exam-name{font-size:.85rem;color:#ffffffd9;background:#ffffff26;padding:4px 12px;border-radius:20px;margin-left:auto}.stats-modal-body{padding:20px 24px;overflow-y:auto;flex:1}.stats-empty{padding:40px 20px;text-align:center;color:#6b7280;font-size:.95rem}.stats-table{width:100%;border-collapse:collapse;font-size:.9rem}.stats-table th,.stats-table td{padding:12px 14px;text-align:center;border-bottom:1px solid #e5e7eb}.stats-table th{background:#f8fafc;font-weight:600;color:#374151}.stats-table th.th-group{text-align:left;width:120px}.stats-table th.th-count{width:80px}.stats-table th.th-score{width:100px}.stats-table th.th-score.grammar{color:#7c3aed}.stats-table th.th-score.reading{color:#059669}.stats-table th.th-score.listening{color:#0284c7}.stats-table th.th-total{width:130px;color:#dc2626}.stats-table tbody tr:hover{background:#f9fafb}.stats-table tbody tr.top-row{background:linear-gradient(135deg,#fef3c7,#fde68a)}.stats-table tbody tr.top-row:hover{background:linear-gradient(135deg,#fde68a,#fcd34d)}.stats-table .td-group{text-align:left}.stats-table .group-name{font-weight:600;color:#1f2937}.stats-table .td-count{color:#6b7280}.stats-table .td-score{font-weight:500;color:#374151}.stats-table .td-total{font-weight:700;color:#dc2626;font-size:1rem}.stats-modal-footer{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#f8fafc;border-top:1px solid #e5e7eb;border-radius:0 0 16px 16px}.entrance-test-filter-section{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:12px;padding:16px 20px;margin-bottom:20px}.entrance-test-info{display:flex;align-items:center;gap:12px;margin-bottom:14px}.entrance-info-icon{width:36px;height:36px;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.1rem;flex-shrink:0}.entrance-info-text{flex:1}.entrance-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#fff;border:1px solid #f59e0b;border-radius:6px;font-size:.85rem;font-weight:600;color:#92400e;margin-bottom:4px}.entrance-badge svg{color:#f59e0b}.entrance-desc{font-size:.85rem;color:#78350f;margin:0}.entrance-date-filter{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.entrance-date-filter .filter-label{font-size:.9rem;font-weight:600;color:#92400e}.filter-buttons{display:flex;gap:6px}.filter-btn{padding:6px 12px;background:#fff;border:1px solid #d97706;border-radius:6px;font-size:.85rem;color:#92400e;cursor:pointer;transition:all .2s ease}.filter-btn:hover{background:#fffbeb;border-color:#f59e0b}.filter-btn.active{background:linear-gradient(135deg,#f59e0b,#d97706);border-color:#d97706;color:#fff;font-weight:500}.custom-date-inputs{display:flex;align-items:center;gap:8px}.custom-date-inputs input[type=date]{padding:6px 10px;border:1px solid #d97706;border-radius:6px;font-size:.85rem;background:#fff;color:#374151}.custom-date-inputs input[type=date]:focus{outline:none;border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b33}.custom-date-inputs span{color:#92400e;font-size:.85rem}.cumulative-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:4px;font-size:.7rem;font-weight:600;color:#92400e;margin-left:4px}.grade-detail-modal .btn-print{position:absolute;top:16px;right:56px;display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s;z-index:10}.grade-detail-modal .btn-print:hover{background:#2563eb}.grade-detail-modal .btn-print svg{width:16px;height:16px}@media print{*{print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}html,body{background:#fff!important;margin:0!important;padding:0!important}.glow,.glow-top,.glow-bottom,.topbar,.no-print,.modal-close,.btn-print,.btn-close{display:none!important}#root,.page,.page.dashboard-page,.dashboard-layout,.grade-management-page{display:block!important;position:static!important;overflow:visible!important;padding:0!important;margin:0!important;background:#fff!important;max-height:none!important;min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important}.grade-management-page>*:not(.modal-overlay){display:none!important}.modal-overlay{position:static!important;background:#fff!important;display:block!important;padding:0!important;overflow:visible!important;z-index:auto!important}.grade-detail-modal,.modal-content.grade-detail-modal{position:static!important;max-width:100%!important;width:100%!important;max-height:none!important;overflow:visible!important;box-shadow:none!important;border:none!important;background:#fff!important;padding:10px!important;margin:0!important}.grade-scores-layout{margin-bottom:16px!important}.detail-scores-section{gap:16px!important}.gauge-circle,.gauge-circle-pie{width:120px!important;height:120px!important}.gauge-circle-pie svg{width:100%!important;height:100%!important}.comparison-table th,.comparison-table td{border:1px solid #d1d5db!important;padding:6px!important}.my-score-row,.highlight-row{background:transparent!important}.analysis-matrix-table .td-score.perfect{background:#e0f2fe!important;color:#0c4a6e!important}.analysis-matrix-table .td-score.wrong{background:#fff!important;color:#9ca3af!important}.analysis-matrix-table .td-score.partial{background:#e0f2fe!important;color:#0c4a6e!important}.student-info-row{background:#f8fafc!important}.grade-detail-modal,.modal-content.grade-detail-modal{padding:10mm!important}}.sop-page{padding:24px 32px;background:#f5f7fa;min-height:100vh}.sop-page .page-header{margin-bottom:24px}.sop-page .page-title{font-size:24px;font-weight:700;color:#111827}.sop-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.sop-toolbar-left{display:flex;align-items:center;gap:12px}.sop-level-filter{display:flex;gap:0;border:1px solid #d1d5db;border-radius:6px;overflow:hidden}.sop-level-btn{padding:6px 14px;font-size:13px;font-weight:500;color:#374151;background:#fff;border:none;border-right:1px solid #d1d5db;cursor:pointer;transition:all .15s}.sop-level-btn:last-child{border-right:none}.sop-level-btn:hover{background:#f3f4f6}.sop-level-btn.active{background:#2563eb;color:#fff;font-weight:600}.sop-summary{display:flex;gap:8px}.sop-badge{padding:5px 14px;border-radius:6px;font-size:13px;font-weight:600}.sop-badge--blue{background:#dbeafe;color:#1e40af}.sop-badge--green{background:#dcfce7;color:#166534}.sop-badge--orange{background:#fff7ed;color:#9a3412}.sop-actions{display:flex;gap:6px;align-items:center}.sop-sort-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;color:#374151;background:#fff;cursor:pointer}.sop-sort-select:focus{outline:none;border-color:#3b82f6}.sop-card{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a}.sop-empty{padding:60px 20px;text-align:center;color:#6b7280;font-size:14px}.sop-columns{display:flex;gap:0;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden;min-height:500px}.sop-col{display:flex;flex-direction:column;border-right:1px solid #e5e7eb}.sop-col:last-child{border-right:none}.sop-col--school{width:220px;flex-shrink:0}.sop-col--grade{width:160px;flex-shrink:0}.sop-col--student{flex:1;min-width:300px}.sop-col-header{padding:12px 16px;font-size:13px;font-weight:700;color:#374151;background:#f9fafb;border-bottom:1px solid #e5e7eb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sop-col-header-count{font-weight:600;color:#3b82f6;margin-left:6px}.sop-col-list{flex:1;overflow-y:auto}.sop-col-list--table{overflow-x:auto}.sop-col-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:#9ca3af;font-size:13px}.sop-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;transition:background .12s;border-bottom:1px solid #f3f4f6}.sop-item:last-child{border-bottom:none}.sop-item:hover{background:#f9fafb}.sop-item.active{background:#eff6ff;border-left:3px solid #3b82f6;padding-left:13px}.sop-rank{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border-radius:50%;font-size:11px;font-weight:600;color:#6b7280;flex-shrink:0}.sop-item.active .sop-rank{background:#3b82f6;color:#fff}.sop-item-name{flex:1;font-size:13px;font-weight:500;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sop-item-count{font-size:12px;font-weight:700;color:#3b82f6;background:#eff6ff;padding:2px 8px;border-radius:10px;flex-shrink:0}.sop-item.active .sop-item-count{background:#3b82f6;color:#fff}.sop-grade-item .sop-item-count{color:#6366f1;background:#eef2ff}.sop-grade-item.active .sop-item-count{background:#6366f1;color:#fff}.sop-grade-item.active{border-left-color:#6366f1}.sop-student-table{width:100%;border-collapse:collapse;font-size:13px}.sop-student-table thead th{padding:10px 12px;text-align:left;font-weight:600;font-size:12px;color:#6b7280;background:#f9fafb;border-bottom:1px solid #e5e7eb;position:sticky;top:0}.sop-student-table tbody tr{border-bottom:1px solid #f3f4f6}.sop-student-table tbody tr:last-child{border-bottom:none}.sop-student-table tbody tr:hover{background:#f9fafb}.sop-student-table td{padding:8px 12px;color:#374151}.sop-student-table .col-no{width:40px;text-align:center;color:#9ca3af}.sop-student-table .col-name{width:70px;min-width:70px;font-weight:500;white-space:nowrap}.sop-student-table .col-course{color:#6b7280;font-size:12px;white-space:nowrap}.sop-student-table .col-phone{width:130px;color:#6b7280;font-family:monospace;font-size:12px}@media(max-width:900px){.sop-page{padding:16px}.sop-toolbar{flex-direction:column;align-items:flex-start}.sop-columns{flex-direction:column;min-height:auto}.sop-col--school,.sop-col--grade{width:100%}.sop-col{border-right:none;border-bottom:1px solid #e5e7eb}.sop-col:last-child{border-bottom:none}.sop-col-list{max-height:250px}.sop-student-table .col-course{display:none}}.video-management-page{padding:24px;max-width:1400px;margin:0 auto}.video-management-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.video-management-page .page-header h1{font-size:24px;font-weight:600;color:#111827;margin:0}.video-management-page .loading-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;animation:spin 1s linear infinite;margin:100px auto}.video-management-page .error-message{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:8px;margin-bottom:16px}.video-management-page .filters{display:flex;gap:12px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.video-management-page .filters select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;background:#fff;min-width:120px}.video-management-page .filter-count{color:#6b7280;font-size:14px;margin-left:auto}.video-management-page .video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.video-management-page .empty-message{grid-column:1 / -1;text-align:center;padding:60px 20px;color:#6b7280;background:#f9fafb;border-radius:12px}.video-management-page .video-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;transition:box-shadow .2s}.video-management-page .video-card:hover{box-shadow:0 4px 12px #0000001a}.video-management-page .video-thumbnail{position:relative;aspect-ratio:16 / 9;background:#1f2937}.video-management-page .video-thumbnail img{width:100%;height:100%;object-fit:cover}.video-management-page .video-thumbnail .no-thumbnail{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.video-management-page .date-badge{position:absolute;top:8px;right:8px;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:500}.video-management-page .date-badge.status-none{background:#6b7280e6;color:#fff}.video-management-page .date-badge.status-pending{background:#eab308e6;color:#fff}.video-management-page .date-badge.status-active{background:#22c55ee6;color:#fff}.video-management-page .date-badge.status-expired{background:#ef4444e6;color:#fff}.video-management-page .video-info{padding:16px}.video-management-page .video-title{font-size:16px;font-weight:600;color:#111827;margin:0 0 8px;line-height:1.4}.video-management-page .video-meta{display:flex;gap:6px;margin-bottom:8px}.video-management-page .tag{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.video-management-page .tag.level{background:#dbeafe;color:#1e40af}.video-management-page .tag.category{background:#f3e8ff;color:#7c3aed}.video-management-page .video-description{font-size:13px;color:#6b7280;margin:0 0 8px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.video-management-page .video-dates{display:flex;gap:12px;font-size:12px;color:#9ca3af}.video-management-page .video-actions{display:flex;gap:8px;padding:12px 16px;border-top:1px solid #f3f4f6;flex-wrap:wrap}.video-management-page .btn-primary{background:#2563eb;color:#fff;border:none;padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.video-management-page .btn-primary:hover{background:#1d4ed8}.video-management-page .btn-secondary{background:#f3f4f6;color:#374151;border:1px solid #d1d5db;padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.video-management-page .btn-secondary:hover{background:#e5e7eb}.video-management-page .btn-sm{padding:6px 12px;font-size:12px;border-radius:4px;border:none;cursor:pointer;transition:background .2s}.video-management-page .btn-permission{background:#dbeafe;color:#1e40af}.video-management-page .btn-permission:hover{background:#bfdbfe}.video-management-page .btn-logs{background:#f3e8ff;color:#7c3aed}.video-management-page .btn-logs:hover{background:#e9d5ff}.video-management-page .btn-edit{background:#fef3c7;color:#92400e}.video-management-page .btn-edit:hover{background:#fde68a}.video-management-page .btn-delete{background:transparent;color:#6b7280}.video-management-page .btn-delete:hover{background:#f3f4f6;color:#4b5563}.video-management-page .modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.video-management-page .modal-content{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto}.video-management-page .modal-content.modal-large{max-width:700px}.video-management-page .modal-content h2{font-size:20px;font-weight:600;color:#111827;margin:0 0 20px}.video-management-page .form-group{margin-bottom:16px}.video-management-page .form-group label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.video-management-page .form-group input,.video-management-page .form-group select,.video-management-page .form-group textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;box-sizing:border-box}.video-management-page .form-group textarea{resize:vertical}.video-management-page .form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.video-management-page .preview-thumbnail{margin-top:8px}.video-management-page .preview-thumbnail img{width:100%;max-width:200px;border-radius:6px}.video-management-page .modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid #e5e7eb}.video-management-page .permission-add-section{background:#f9fafb;padding:16px;border-radius:8px;margin-bottom:20px}.video-management-page .permission-type-toggle{display:flex;gap:8px;margin-bottom:16px}.video-management-page .permission-type-toggle button{flex:1;padding:10px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.video-management-page .permission-type-toggle button.active{background:#2563eb;color:#fff;border-color:#2563eb}.video-management-page .permission-select{margin-bottom:16px}.video-management-page .permission-select label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:8px}.video-management-page .checkbox-list{max-height:200px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:6px;background:#fff;padding:8px}.video-management-page .checkbox-item{display:flex;align-items:center;gap:8px;padding:8px;cursor:pointer;border-radius:4px;transition:background .2s}.video-management-page .checkbox-item:hover{background:#f3f4f6}.video-management-page .checkbox-item input{width:auto}.video-management-page .checkbox-item span{font-size:14px;color:#374151}.video-management-page .existing-permissions h3{font-size:16px;font-weight:600;color:#111827;margin:0 0 12px}.video-management-page .empty-text{color:#9ca3af;font-size:14px;text-align:center;padding:20px}.video-management-page .permission-list{list-style:none;padding:0;margin:0;max-height:200px;overflow-y:auto}.video-management-page .permission-list li{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:6px;margin-bottom:8px}.video-management-page .permission-target{font-size:14px}.video-management-page .permission-target.class{color:#1e40af}.video-management-page .permission-target.student{color:#7c3aed}.video-management-page .btn-remove{background:#fee2e2;color:#991b1b;border:none;padding:4px 10px;border-radius:4px;font-size:12px;cursor:pointer}.video-management-page .btn-remove:hover{background:#fecaca}.video-management-page .upload-type-toggle{display:flex;gap:8px}.video-management-page .upload-type-toggle button{flex:1;padding:10px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.video-management-page .upload-type-toggle button.active{background:#2563eb;color:#fff;border-color:#2563eb}.video-management-page .file-info{margin-top:8px;font-size:13px;color:#6b7280}.video-management-page .upload-progress{margin-top:12px;background:#f3f4f6;border-radius:6px;padding:12px}.video-management-page .upload-progress .progress-bar{height:8px;background:#2563eb;border-radius:4px;transition:width .3s;margin-bottom:8px}.video-management-page .upload-progress span{font-size:13px;color:#374151}@media(max-width:640px){.video-management-page{padding:16px}.video-management-page .page-header{flex-direction:column;gap:12px;align-items:flex-start}.video-management-page .form-row,.video-management-page .video-grid{grid-template-columns:1fr}.video-management-page .video-actions{justify-content:center}}.syllabus-management-page{padding:24px;max-width:1400px;margin:0 auto}.syllabus-management-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.syllabus-management-page .page-header h1{font-size:24px;font-weight:600;color:#111827;margin:0}.syllabus-management-page .loading-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;animation:spin 1s linear infinite;margin:100px auto}.syllabus-management-page .error-message{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:8px;margin-bottom:16px}.syllabus-management-page .filters{display:flex;gap:12px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.syllabus-management-page .filters select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;background:#fff;min-width:120px}.syllabus-management-page .filter-count{color:#6b7280;font-size:14px;margin-left:auto}.syllabus-management-page .syllabus-list{background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.syllabus-management-page .syllabus-table{width:100%;border-collapse:collapse}.syllabus-management-page .syllabus-table th,.syllabus-management-page .syllabus-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e5e7eb}.syllabus-management-page .syllabus-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}.syllabus-management-page .syllabus-table td{color:#111827;font-size:14px}.syllabus-management-page .syllabus-table tr:last-child td{border-bottom:none}.syllabus-management-page .syllabus-table tr:hover td{background:#f9fafb}.syllabus-management-page .syllabus-title-link{display:flex;align-items:center;gap:8px;color:#2563eb;text-decoration:none;font-weight:500}.syllabus-management-page .syllabus-title-link:hover{text-decoration:underline}.syllabus-management-page .pdf-icon{font-size:18px}.syllabus-management-page .empty-message{text-align:center;padding:60px 20px;color:#6b7280}.syllabus-management-page .empty-message p{margin:4px 0}.syllabus-management-page .btn-primary{background:#2563eb;color:#fff;border:none;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.syllabus-management-page .btn-primary:hover{background:#1d4ed8}.syllabus-management-page .btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.syllabus-management-page .btn-secondary{background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.syllabus-management-page .btn-secondary:hover{background:#f3f4f6}.syllabus-management-page .action-buttons{display:flex;gap:8px}.syllabus-management-page .btn-small{padding:6px 12px;font-size:13px;border-radius:6px;border:1px solid #d1d5db;background:#fff;color:#374151;cursor:pointer;transition:background .2s}.syllabus-management-page .btn-small:hover{background:#f3f4f6}.syllabus-management-page .btn-small.btn-danger{border-color:#fca5a5;color:#dc2626}.syllabus-management-page .btn-small.btn-danger:hover{background:#fef2f2}.syllabus-management-page .modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.syllabus-management-page .modal-content{background:#fff;border-radius:12px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.syllabus-management-page .modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .modal-header h2{margin:0;font-size:18px;font-weight:600;color:#111827}.syllabus-management-page .modal-close{background:none;border:none;font-size:24px;color:#6b7280;cursor:pointer;padding:0;line-height:1}.syllabus-management-page .modal-close:hover{color:#111827}.syllabus-management-page .modal-body{padding:20px}.syllabus-management-page .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.syllabus-management-page .form-group{margin-bottom:16px}.syllabus-management-page .form-group label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.syllabus-management-page .form-group input[type=text],.syllabus-management-page .form-group select,.syllabus-management-page .form-group textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;box-sizing:border-box}.syllabus-management-page .form-group input:focus,.syllabus-management-page .form-group select:focus,.syllabus-management-page .form-group textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.syllabus-management-page .form-group textarea{resize:vertical;font-family:Malgun Gothic,맑은 고딕,sans-serif}.syllabus-management-page .form-hint{display:block;font-size:12px;color:#6b7280;margin-top:4px}.syllabus-management-page .form-group select:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.syllabus-management-page .form-group input[type=file]{padding:8px;border:1px dashed #d1d5db;border-radius:6px;width:100%;box-sizing:border-box}.syllabus-management-page .form-row{display:flex;gap:16px}.syllabus-management-page .form-row .form-group{flex:1}.syllabus-management-page .current-file{margin-top:8px;font-size:13px}.syllabus-management-page .current-file a{color:#2563eb}.syllabus-management-page .level-badge{display:inline-block;padding:4px 10px;background:#dbeafe;color:#1e40af;border-radius:12px;font-size:13px;font-weight:600}.syllabus-management-page .btn-back{background:none;border:none;color:#6b7280;font-size:14px;cursor:pointer;padding:8px 12px;border-radius:6px;transition:all .2s}.syllabus-management-page .btn-back:hover{background:#f3f4f6;color:#111827}.syllabus-management-page .edit-tabs{display:flex;gap:4px;background:#f3f4f6;padding:4px;border-radius:10px;margin-bottom:24px}.syllabus-management-page .edit-tabs button{flex:1;padding:10px 16px;border:none;background:transparent;color:#6b7280;font-size:14px;font-weight:500;cursor:pointer;border-radius:8px;transition:all .2s}.syllabus-management-page .edit-tabs button:hover{color:#374151}.syllabus-management-page .edit-tabs button.active{background:#fff;color:#111827;box-shadow:0 1px 3px #0000001a}.syllabus-management-page .edit-section{background:#fff;border-radius:12px;border:1px solid #e5e7eb;padding:16px}.syllabus-management-page .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.syllabus-management-page .section-header h3{margin:0;font-size:16px;font-weight:600;color:#111827}.syllabus-management-page .schedule-table{width:100%;border-collapse:collapse}.syllabus-management-page .schedule-table th,.syllabus-management-page .schedule-table td{padding:10px 12px;border:1px solid #e5e7eb;text-align:left}.syllabus-management-page .schedule-table th{background:#f9fafb;font-weight:600;font-size:13px;color:#374151}.syllabus-management-page .schedule-table input{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:14px}.syllabus-management-page .schedule-table input:focus{outline:none;border-color:#2563eb}.syllabus-management-page .btn-delete-small{background:transparent;border:1px solid #d1d5db;color:#6b7280;padding:4px 10px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}.syllabus-management-page .btn-delete-small:hover{background:#f3f4f6;color:#4b5563}.syllabus-management-page .weekly-section{padding:12px}.syllabus-management-page .week-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px;margin-bottom:10px}.syllabus-management-page .week-card:last-child{margin-bottom:0}.syllabus-management-page .week-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:2px solid #e5e7eb}.syllabus-management-page .week-number{font-size:15px;font-weight:700;color:#2563eb}.syllabus-management-page .week-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.syllabus-management-page .day-column{background:#fff;border-radius:6px;padding:8px 10px;border:1px solid #e5e7eb}.syllabus-management-page .day-column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .day-column-header h4{margin:0;font-size:13px;font-weight:600;color:#374151}.syllabus-management-page .day-date-input{display:flex;align-items:center;gap:6px}.syllabus-management-page .day-date-input label{font-size:11px;font-weight:500;color:#6b7280;white-space:nowrap}.syllabus-management-page .day-date-input input{padding:3px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:12px;width:120px}.syllabus-management-page .day-column h4{margin:0 0 6px;font-size:13px;font-weight:600;color:#374151;padding-bottom:4px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .syllabus-week-table{width:100%;border-collapse:collapse;font-size:12px}.syllabus-management-page .syllabus-week-table td{border:1px solid #e5e7eb;padding:4px 6px;vertical-align:middle}.syllabus-management-page .syllabus-week-table .td-area{text-align:center;font-weight:600;font-size:11px;color:#374151;background:#f9fafb;white-space:nowrap;width:70px}.syllabus-management-page .syllabus-week-table .td-area.area-gr{color:#1e40af;background:#eff6ff}.syllabus-management-page .syllabus-week-table .td-area.area-rc{color:#166534;background:#f0fdf4}.syllabus-management-page .syllabus-week-table .td-area.area-voca{color:#854d0e;background:#fefce8}.syllabus-management-page .syllabus-week-table .td-area.area-ld{color:#6b21a8;background:#faf5ff}.syllabus-management-page .syllabus-week-table .td-type{text-align:center;font-weight:500;font-size:11px;color:#6b7280;white-space:nowrap;width:60px}.syllabus-management-page .syllabus-week-table .td-content{padding:2px 4px}.syllabus-management-page .syllabus-week-table .td-content input{width:100%;border:none;outline:none;font-size:12px;padding:2px 4px;background:transparent;font-family:inherit}.syllabus-management-page .syllabus-week-table .td-content input::placeholder{color:#ccc;font-style:italic}.syllabus-management-page .syllabus-week-table .td-content input:focus{background:#f0f9ff;border-radius:4px}.syllabus-management-page .syllabus-week-table .td-action{text-align:center;padding:2px}.syllabus-management-page .syllabus-week-table .td-action .btn-remove-item{background:#fee2e2;color:#dc2626;border:none;width:18px;height:18px;border-radius:3px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.syllabus-management-page .day-column .form-group{margin-bottom:6px}.syllabus-management-page .day-column .form-group:last-child{margin-bottom:0}.syllabus-management-page .day-column .form-group label{font-size:11px;color:#6b7280;margin-bottom:2px}.syllabus-management-page .day-column .form-group input,.syllabus-management-page .day-column .form-group textarea{padding:4px 8px;font-size:12px}.syllabus-management-page .loaded-textbook{background:#f0fdf4;border:1px solid #86efac;border-radius:6px;padding:8px 12px;margin-bottom:8px;font-size:13px;color:#166534;white-space:pre-wrap}.syllabus-management-page .loaded-textbook .loaded-label{font-weight:600;color:#15803d}.syllabus-management-page .textbook-notice{background:#fef9c3;border:1px solid #fde047;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:14px;color:#854d0e;text-align:center}.syllabus-management-page .header-buttons{display:flex;gap:12px}.syllabus-management-page .items-form-section{background:#fff;border-radius:12px;border:1px solid #e5e7eb;padding:24px;margin-bottom:24px}.syllabus-management-page .items-form-section h3{margin:0 0 16px;font-size:16px;font-weight:600;color:#111827}.syllabus-management-page .items-form{display:flex;flex-direction:column;gap:12px}.syllabus-management-page .items-form .form-row{display:flex;gap:16px;align-items:flex-end}.syllabus-management-page .items-form .form-row .form-group{flex:1;margin-bottom:0}.syllabus-management-page .items-form .checkbox-group{flex:0 0 auto;display:flex;align-items:center}.syllabus-management-page .items-form .checkbox-group label{display:flex;align-items:center;gap:6px;cursor:pointer;margin-bottom:0}.syllabus-management-page .items-form .checkbox-group input[type=checkbox]{width:16px;height:16px;cursor:pointer}.syllabus-management-page .items-form .form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.syllabus-management-page .items-list-section{background:#fff;border-radius:12px;border:1px solid #e5e7eb;padding:24px}.syllabus-management-page .items-list-section h3{margin:0 0 16px;font-size:16px;font-weight:600;color:#111827}.syllabus-management-page .items-table{width:100%;border-collapse:collapse}.syllabus-management-page .items-table th,.syllabus-management-page .items-table td{padding:12px 14px;text-align:left;border-bottom:1px solid #e5e7eb;font-size:14px}.syllabus-management-page .items-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}.syllabus-management-page .items-table tr:hover td{background:#f9fafb}.syllabus-management-page .items-table tr.inactive-row td{background:#f5f5f5;color:#9ca3af}.syllabus-management-page .items-table .content-cell{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.syllabus-management-page .order-cell{text-align:center}.syllabus-management-page .order-buttons{display:flex;flex-direction:column;align-items:center;gap:2px}.syllabus-management-page .btn-order{background:#fff;border:1px solid #d1d5db;width:24px;height:20px;font-size:10px;cursor:pointer;border-radius:3px;color:#6b7280;display:flex;align-items:center;justify-content:center}.syllabus-management-page .btn-order:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.syllabus-management-page .btn-order:disabled{opacity:.3;cursor:not-allowed}.syllabus-management-page .category-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.syllabus-management-page .category-badge.cat1-gr{background:#dbeafe;color:#1e40af}.syllabus-management-page .category-badge.cat1-rc{background:#dcfce7;color:#166534}.syllabus-management-page .category-badge.cat1-voca{background:#fef9c3;color:#854d0e}.syllabus-management-page .category-badge.cat1-ld{background:#f3e8ff;color:#6b21a8}.syllabus-management-page .btn-toggle{padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;cursor:pointer;border:none;transition:all .2s}.syllabus-management-page .btn-toggle.active{background:#dcfce7;color:#166534}.syllabus-management-page .btn-toggle.inactive{background:#f5f5f5;color:#9ca3af}.syllabus-management-page .btn-toggle:hover{opacity:.8}.syllabus-management-page .template-weeks{margin-top:20px;border-top:1px solid #e5e7eb;padding-top:16px}.syllabus-management-page .template-weeks h4{margin:0;font-size:14px;font-weight:600;color:#374151}.syllabus-management-page .template-week-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:16px;margin-top:12px}.syllabus-management-page .template-day-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}.syllabus-management-page .template-day-column{background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:12px}.syllabus-management-page .template-day-column .day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:13px;color:#374151}.syllabus-management-page .btn-add-item{background:#dbeafe;color:#1e40af;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer}.syllabus-management-page .btn-add-item:hover{background:#bfdbfe}.syllabus-management-page .template-item-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}.syllabus-management-page .template-item-row select{flex:1;padding:6px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:12px}.syllabus-management-page .btn-remove-item{background:#fee2e2;color:#dc2626;border:none;width:24px;height:24px;border-radius:4px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.syllabus-management-page .btn-remove-item:hover{background:#fecaca}.syllabus-management-page .no-items{color:#9ca3af;font-size:12px;text-align:center;padding:8px}.syllabus-management-page .section-header-buttons{display:flex;gap:8px}.syllabus-management-page .template-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.syllabus-management-page .template-modal{background:#fff;border-radius:12px;width:90%;max-width:400px;box-shadow:0 10px 40px #0003}.syllabus-management-page .template-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .template-modal-header h3{margin:0;font-size:16px;font-weight:600}.syllabus-management-page .template-modal-body{padding:20px}.syllabus-management-page .template-modal-body select{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.syllabus-management-page .template-warning{margin-top:12px;padding:10px;background:#fef9c3;border-radius:6px;font-size:13px;color:#854d0e}.syllabus-management-page .template-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.syllabus-management-page .dynamic-items{border:1px dashed #d1d5db;border-radius:8px;padding:12px;background:#fafafa}.syllabus-management-page .dynamic-item-row{background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:10px 12px;margin-bottom:10px}.syllabus-management-page .dynamic-item-row.inline{display:flex;align-items:center;gap:10px}.syllabus-management-page .dynamic-item-row.inline input{flex:1;padding:8px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;font-family:inherit}.syllabus-management-page .dynamic-item-row.inline input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.syllabus-management-page .dynamic-item-row:last-of-type{margin-bottom:0}.syllabus-management-page .dynamic-item-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.syllabus-management-page .dynamic-item-header .btn-remove-item{margin-left:auto}.syllabus-management-page .area-badge{display:inline-block;padding:3px 8px;border-radius:10px;font-size:11px;font-weight:600}.syllabus-management-page .area-badge.area-gr{background:#dbeafe;color:#1e40af}.syllabus-management-page .area-badge.area-rc{background:#dcfce7;color:#166534}.syllabus-management-page .area-badge.area-voca{background:#fef9c3;color:#854d0e}.syllabus-management-page .area-badge.area-ld{background:#f3e8ff;color:#6b21a8}.syllabus-management-page .item-type-label{font-size:13px;font-weight:500;color:#374151}.syllabus-management-page .dynamic-item-row textarea{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;resize:vertical;min-height:40px;font-family:inherit}.syllabus-management-page .dynamic-item-row textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.syllabus-management-page .btn-add-dynamic-item{display:block;width:100%;padding:10px;margin-top:10px;background:#f3f4f6;border:1px dashed #d1d5db;border-radius:6px;color:#6b7280;font-size:13px;cursor:pointer;transition:all .2s}.syllabus-management-page .btn-add-dynamic-item:hover{background:#e5e7eb;border-color:#9ca3af;color:#374151}.syllabus-management-page .btn-view{background:#dbeafe;color:#1e40af;border-color:#93c5fd}.syllabus-management-page .btn-view:hover{background:#bfdbfe}.syllabus-management-page .view-section{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px 24px;margin-bottom:20px}.syllabus-management-page .view-section h3{font-size:16px;font-weight:600;color:#1f2937;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .view-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.syllabus-management-page .view-info-item{display:flex;flex-direction:column;gap:4px}.syllabus-management-page .view-info-item.full-width{grid-column:1 / -1}.syllabus-management-page .view-label{font-size:12px;color:#6b7280;font-weight:500}.syllabus-management-page .view-value{font-size:15px;color:#1f2937;font-weight:500}.syllabus-management-page .view-value--periods{display:flex;flex-direction:column;gap:4px}.syllabus-management-page .view-value--periods .period-line{font-size:14px}.syllabus-management-page .view-textbooks{display:flex;flex-direction:column;gap:12px}.syllabus-management-page .view-textbook-item{display:flex;gap:12px;padding:10px 12px;background:#f9fafb;border-radius:6px}.syllabus-management-page .textbook-label{min-width:80px;font-size:13px;font-weight:600;color:#4b5563}.syllabus-management-page .textbook-value{font-size:13px;color:#1f2937;flex:1}.syllabus-management-page .view-schedule-table{width:100%;border-collapse:collapse}.syllabus-management-page .view-schedule-table th,.syllabus-management-page .view-schedule-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.syllabus-management-page .view-schedule-table th{background:#f9fafb;font-size:13px;font-weight:600;color:#4b5563}.syllabus-management-page .view-schedule-table td{font-size:14px;color:#1f2937}.syllabus-management-page .view-weekly-content{display:flex;flex-direction:column;gap:16px}.syllabus-management-page .view-week-card{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.syllabus-management-page .view-week-header{background:#f3f4f6;padding:10px 16px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .view-week-number{font-size:15px;font-weight:600;color:#2563eb}.syllabus-management-page .view-week-content{display:grid;grid-template-columns:1fr 1fr;gap:0}.syllabus-management-page .view-day-column{padding:16px}.syllabus-management-page .view-day-column:first-child{border-right:1px solid #e5e7eb}.syllabus-management-page .view-day-title{display:flex;align-items:center;gap:12px;margin-bottom:12px;font-size:14px;font-weight:600;color:#374151}.syllabus-management-page .view-dates{font-size:13px;font-weight:400;color:#6b7280;background:#f3f4f6;padding:2px 8px;border-radius:4px}.syllabus-management-page .view-note{font-size:12px;color:#dc2626;background:#fef2f2;padding:6px 10px;border-radius:4px;margin-bottom:12px}.syllabus-management-page .view-items{display:flex;flex-direction:column;gap:8px}.syllabus-management-page .view-item-row{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;background:#f9fafb;border-radius:6px}.syllabus-management-page .view-item-row .item-type{font-size:12px;color:#6b7280;min-width:80px}.syllabus-management-page .view-item-row .item-content{font-size:13px;color:#1f2937;flex:1}.syllabus-management-page .view-fixed-items{display:flex;flex-direction:column;gap:8px}.syllabus-management-page .view-fixed-item{display:flex;gap:12px;padding:6px 0;border-bottom:1px dashed #e5e7eb}.syllabus-management-page .view-fixed-item:last-child{border-bottom:none}.syllabus-management-page .fixed-label{min-width:70px;font-size:12px;font-weight:600;color:#6b7280}.syllabus-management-page .fixed-value{font-size:13px;color:#1f2937;flex:1}.syllabus-management-page .category-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.syllabus-management-page .category-tab{display:flex;align-items:center;gap:8px;padding:10px 20px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;color:#6b7280;font-size:15px;font-weight:600;cursor:pointer;transition:all .15s}.syllabus-management-page .category-tab:hover{border-color:#93c5fd;color:#374151}.syllabus-management-page .category-tab.active{background:#2563eb;border-color:#2563eb;color:#fff}.syllabus-management-page .category-tab-count{font-size:12px;font-weight:700;padding:1px 8px;border-radius:10px;background:#00000014}.syllabus-management-page .category-tab.active .category-tab-count{background:#ffffff40}.syllabus-management-page .syllabus-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.syllabus-management-page .syllabus-card{background:#fff;border-radius:14px;padding:18px 20px;border:1px solid #e5e7eb;cursor:pointer;transition:all .15s;box-shadow:0 1px 3px #0000000a;display:flex;flex-direction:column;gap:10px}.syllabus-management-page .syllabus-card:hover{border-color:#93c5fd;box-shadow:0 6px 20px #2563eb1f;transform:translateY(-2px)}.syllabus-management-page .syllabus-card-header{display:flex;justify-content:space-between;align-items:center}.syllabus-management-page .syllabus-card-level{display:inline-block;padding:4px 14px;border-radius:8px;font-size:15px;font-weight:800;letter-spacing:.5px}.syllabus-management-page .syllabus-card-level.level-g{background:#dbeafe;color:#1e40af}.syllabus-management-page .syllabus-card-level.level-r{background:#fce7f3;color:#9d174d}.syllabus-management-page .syllabus-card-level.level-e{background:#d1fae5;color:#065f46}.syllabus-management-page .syllabus-card-level.level-p{background:#ede9fe;color:#5b21b6}.syllabus-management-page .syllabus-card-level.level-m{background:#fef3c7;color:#92400e}.syllabus-management-page .syllabus-card-level.level-h{background:#fee2e2;color:#991b1b}.syllabus-management-page .syllabus-card-weeks{font-size:13px;font-weight:600;color:#6b7280;background:#f3f4f6;padding:3px 10px;border-radius:8px}.syllabus-management-page .syllabus-card-title{font-size:13px;color:#4b5563;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.syllabus-management-page .syllabus-card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:8px;border-top:1px solid #f3f4f6}.syllabus-management-page .syllabus-card-date{font-size:12px;color:#9ca3af}.syllabus-management-page .syllabus-card-actions{display:flex;gap:6px;opacity:0;transition:opacity .15s}.syllabus-management-page .syllabus-card:hover .syllabus-card-actions{opacity:1}.syllabus-management-page .card-action-btn{padding:3px 10px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid #d1d5db;background:#fff;color:#374151;transition:all .15s}.syllabus-management-page .card-action-btn:hover{background:#f3f4f6}.syllabus-management-page .card-action-delete{border-color:#fca5a5;color:#dc2626}.syllabus-management-page .card-action-delete:hover{background:#fef2f2}@media(max-width:768px){.syllabus-management-page{padding:16px}.syllabus-management-page .page-header{flex-wrap:wrap;gap:12px}.syllabus-management-page .page-header h1{width:100%;order:2;font-size:20px}.syllabus-management-page .btn-back{order:1}.syllabus-management-page .btn-primary{order:3;margin-left:auto}.syllabus-management-page .edit-tabs{flex-wrap:wrap}.syllabus-management-page .edit-tabs button{flex:1 1 45%}.syllabus-management-page .week-content-grid{grid-template-columns:1fr}.syllabus-management-page .form-row{flex-direction:column;gap:0}.syllabus-management-page .syllabus-table{font-size:13px}.syllabus-management-page .syllabus-table th,.syllabus-management-page .syllabus-table td{padding:10px 8px}.syllabus-management-page .syllabus-card-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.syllabus-management-page .syllabus-card-actions{opacity:1}}.textbook-management-page{padding:24px;max-width:1400px;margin:0 auto}.textbook-header{display:flex;align-items:center;gap:24px;margin-bottom:24px}.textbook-header h1{font-size:24px;font-weight:700;color:#1e293b;margin:0;white-space:nowrap}.textbook-tabs{display:flex;gap:4px;background:#f3ede4;padding:4px;border-radius:10px;width:fit-content}.textbook-tab{padding:10px 24px;border:none;background:transparent;color:#64748b;font-size:14px;font-weight:500;cursor:pointer;border-radius:8px;transition:all .2s}.textbook-tab:hover{color:#1e293b}.textbook-tab.active{background:#f0f5ff;color:#1e293b;box-shadow:0 1px 3px #0000001a}.textbook-content{background:#f0f5ff;border:1px solid #bfdbfe;border-radius:12px;min-height:500px}.tab-content{padding:24px}.filter-section{margin-bottom:20px}.filter-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.filter-select{height:auto;padding:12px 38px 12px 14px;border:1px solid #bfdbfe;border-radius:8px;font-size:14px;font-weight:500;color:#0f172a;background:#fff;min-width:140px;line-height:1.5}.filter-input{padding:10px 14px;border:1px solid #bfdbfe;border-radius:8px;font-size:14px;color:#1e293b;flex:1;min-width:200px}.filter-input-sm{min-width:180px;max-width:280px}.filter-select:focus,.filter-input:focus{outline:none;border-color:#1b7f6b;box-shadow:0 0 0 3px #1b7f6b1a}.filter-select option{color:#111827;background:#fff}.btn-primary{padding:10px 20px;background:#2563eb;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.btn-primary:hover{background:#1d4ed8}.btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.btn-secondary{padding:10px 20px;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#e5e7eb}.btn-sm{padding:6px 12px;font-size:13px}.btn-danger{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.btn-danger:hover{background:#fecaca}.btn-full{width:100%}.assign-buttons{display:flex;flex-direction:column;gap:8px}.table-container{overflow-x:auto}.textbook-table{width:100%;border-collapse:collapse}.textbook-table thead{background:#f9fafb;border-bottom:1px solid #e5e7eb}.textbook-table th{padding:12px 16px;text-align:left;font-size:13px;font-weight:600;color:#374151}.textbook-table td{padding:12px 16px;border-bottom:1px solid #e5e7eb;font-size:14px;color:#111827}.textbook-table tbody tr:hover{background:#f9fafb}.textbook-name{font-weight:500}.price{font-weight:500;color:#374151}.stock-low{color:#dc2626;font-weight:600}.grade-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.grade-P{background:#dbeafe;color:#1e40af}.grade-M{background:#dcfce7;color:#166534}.grade-H{background:#fef9c3;color:#854d0e}.status-badge{display:inline-block;padding:4px 10px;white-space:nowrap;border-radius:12px;font-size:12px;font-weight:600}.status-badge.active{background:#dcfce7;color:#166534}.status-badge.inactive{background:#f3f4f6;color:#4b5563}.empty-message{text-align:center;padding:60px 20px;color:#4b5563}.modal-content{background:#fff;border-radius:12px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-content.modal-large{max-width:600px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;border-bottom:1px solid #e5e7eb}.modal-header h2{font-size:18px;font-weight:600;color:#111827;margin:0}.modal-close{background:none;border:none;font-size:24px;color:#4b5563;cursor:pointer;padding:0;line-height:1}.modal-close:hover{color:#111827}.modal-body{padding:16px 24px}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb}.form-group label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:#374151}.form-group-inline{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px}.form-group-inline label{min-width:90px;padding-top:10px;font-size:14px;font-weight:500;color:#374151;white-space:nowrap;flex-shrink:0}.form-group-inline input,.form-group-inline textarea{flex:1;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.form-group-inline input:focus,.form-group-inline textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.form-row{display:flex;gap:16px}.form-help{font-size:12px;color:#4b5563;margin-top:4px}.input-disabled{background:#f3f4f6;color:#4b5563}.set-list{display:grid;gap:16px}.set-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.set-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.set-header h3{font-size:16px;font-weight:600;color:#111827;margin:0}.set-price{font-size:18px;font-weight:700;color:#2563eb}.set-textbooks h4,.set-classes h4{font-size:13px;font-weight:600;color:#4b5563;margin:0 0 8px}.set-textbooks ul{list-style:none;padding:0;margin:0 0 16px}.set-textbooks li{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #f3f4f6}.textbook-item-name{color:#374151}.textbook-item-price{color:#4b5563}.class-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.class-tag{background:#f3f4f6;color:#374151;padding:4px 10px;border-radius:6px;font-size:13px}.set-actions{display:flex;gap:8px;justify-content:flex-end}.textbook-search-input{width:100%;padding:8px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;margin-bottom:8px;box-sizing:border-box}.textbook-search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.textbook-select-list{border:1px solid #e5e7eb;border-radius:8px;max-height:280px;overflow-y:auto;background:#fff}.textbook-checkbox{display:flex;align-items:center;padding:6px 12px;cursor:pointer;border-bottom:1px solid #f3f4f6;gap:8px}.textbook-checkbox:last-child{border-bottom:none}.textbook-checkbox:hover{background:#f0f9ff}.textbook-checkbox.selected{background:#eff6ff}.textbook-checkbox input[type=checkbox]{width:16px;height:16px;margin:0 8px 0 0;cursor:pointer;accent-color:#3b82f6}.textbook-check-name{flex:1;font-size:13px;color:#374151;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.textbook-check-price{font-size:12px;color:#6b7280;white-space:nowrap}.class-multi-select{height:120px}.assign-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media(max-width:900px){.assign-layout{grid-template-columns:1fr}}.assign-mode-toggle{display:flex;gap:4px;background:#e5e7eb;padding:3px;border-radius:8px;margin-bottom:16px}.mode-btn{flex:1;padding:8px 16px;border:none;background:transparent;color:#6b7280;font-size:13px;font-weight:500;cursor:pointer;border-radius:6px;transition:all .2s}.mode-btn:hover{color:#374151}.mode-btn.active{background:#fff;color:#1e293b;font-weight:600;box-shadow:0 1px 2px #0000001a}.assign-left,.assign-right{background:#f9fafb;border-radius:12px;padding:20px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-header h3{font-size:15px;font-weight:600;color:#111827;margin:0}.student-count{font-size:13px;color:#4b5563;background:#e5e7eb;padding:2px 8px;border-radius:10px}.class-select{width:100%;height:auto;padding:12px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;line-height:1.5;margin-bottom:20px}.student-list{background:#fff;border:1px solid #e5e7eb;border-radius:8px;max-height:400px;overflow-y:auto}.student-list hr{margin:0;border:none;border-top:1px solid #e5e7eb}.student-checkbox{display:flex;align-items:center;padding:10px 12px;cursor:pointer;border-bottom:1px solid #f3f4f6}.student-checkbox:last-child{border-bottom:none}.student-checkbox:hover{background:#f9fafb}.student-checkbox input{margin-right:12px}.student-checkbox span:first-of-type{flex:1}.assigned-badge{font-size:11px;padding:2px 8px;border-radius:10px;background:#dcfce7;color:#166534}.not-assigned-badge{font-size:11px;padding:2px 8px;border-radius:10px;background:#fee2e2;color:#991b1b}.assign-options{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:16px;max-height:300px;overflow-y:auto}.option-group{padding:12px;border-bottom:1px solid #e5e7eb}.option-group:last-child{border-bottom:none}.option-group h4{font-size:13px;font-weight:600;color:#4b5563;margin:0 0 8px}.option-radio,.option-checkbox{display:flex;align-items:center;padding:8px 0;cursor:pointer}.option-radio input,.option-checkbox input{margin-right:12px}.option-content{flex:1;display:flex;justify-content:space-between}.option-name{font-size:14px;color:#374151}.option-price{font-size:13px;color:#4b5563}.assign-summary{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px;margin-bottom:16px}.summary-row{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;color:#374151}.summary-row.total{border-top:1px solid #e5e7eb;margin-top:8px;padding-top:12px;font-weight:600;color:#111827}.summary-row.total span:last-child{color:#2563eb;font-size:16px}.student-checkbox.selected{background:#eff6ff}.student-checkbox.select-all{background:#f9fafb;font-weight:500}.student-name{flex:1}.option-checkbox.selected{background:#eff6ff;border-radius:6px}.option-checkbox.disabled{opacity:.5;cursor:not-allowed}.set-option{background:#f0fdf4;border-radius:6px;padding:8px;margin-bottom:8px}.set-option.selected{background:#dcfce7;border:1px solid #86efac}.textbook-options-list{max-height:200px;overflow-y:auto}.textbook-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:14px;color:#6b7280}.textbook-list-table .col-no{width:50px;color:#9ca3af;font-size:13px}.textbook-list-table .col-thumb{width:60px;padding:6px 10px}.textbook-list-table .col-name{text-align:left;font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.textbook-list-table .col-category{width:60px}.textbook-list-table .col-publisher{width:100px;color:#6b7280;font-size:13px}.textbook-list-table .col-price{width:100px;font-weight:600;color:#374151}.textbook-list-table .col-status{width:80px}.textbook-list-table .col-action{width:130px}.thumb-img{width:40px;height:50px;object-fit:contain;border-radius:4px;border:1px solid #e5e7eb}.thumb-clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}.thumb-clickable:hover{transform:scale(1.1);box-shadow:0 2px 8px #00000026}.thumb-empty{font-size:24px;color:#d1d5db}.textbook-pagination{display:flex;justify-content:center;gap:4px;margin-top:20px}.textbook-pagination .page-btn{padding:6px 12px;border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:6px;font-size:13px;cursor:pointer;transition:all .15s}.textbook-pagination .page-btn:hover:not(:disabled){background:#f3f4f6}.textbook-pagination .page-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.textbook-pagination .page-btn:disabled{color:#d1d5db;cursor:not-allowed}.category-badge{font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;white-space:nowrap;width:fit-content}.category-GR{background:#dbeafe;color:#1e40af}.category-RC{background:#dcfce7;color:#166534}.category-VO{background:#fef3c7;color:#92400e}.category-LC{background:#f3e8ff;color:#7c3aed}.textbook-info h4{font-size:15px;font-weight:600;color:#111827;margin:0 0 6px;line-height:1.4}.textbook-info .publisher{font-size:13px;color:#6b7280;margin:0 0 8px}.textbook-info .price{font-size:16px;font-weight:700;color:#2563eb;margin:0 0 12px}.card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}.card-actions{display:flex;gap:6px;flex-wrap:nowrap;white-space:nowrap}.btn-warning{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.btn-warning:hover{background:#fde68a}.btn-success{background:#dcfce7;color:#166534;border:1px solid #86efac}.btn-success:hover{background:#bbf7d0}.image-upload-area{border:2px dashed #d1d5db;border-radius:8px;padding:20px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;min-height:150px;display:flex;align-items:center;justify-content:center}.image-upload-area:hover{border-color:#2563eb;background:#f8fafc}.image-preview{position:relative;display:inline-block}.image-preview img{max-width:100%;max-height:200px;border-radius:8px;object-fit:contain}.remove-image-btn{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;background:#ef4444;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;box-shadow:0 2px 4px #0003}.remove-image-btn:hover{background:#dc2626}.image-placeholder{color:#9ca3af}.image-placeholder p{margin:8px 0 0;font-size:14px}.image-placeholder span{font-size:12px;color:#b0b0b0}.loading-message{text-align:center;padding:60px 20px;color:#6b7280;font-size:15px}.current-image-preview{margin-bottom:12px}.current-image-preview img{max-width:100%;max-height:150px;border-radius:8px;object-fit:contain;border:1px solid #e5e7eb}.current-image-preview p{font-size:12px;color:#6b7280;margin:8px 0 0}.input-with-button{display:flex;gap:8px}.input-with-button input{flex:1}.publisher-list{border:1px solid #e5e7eb;border-radius:8px;max-height:250px;overflow-y:auto}.publisher-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #f3f4f6}.publisher-item:last-child{border-bottom:none}.publisher-item span{font-size:14px;color:#374151}.empty-text{padding:20px;text-align:center;color:#9ca3af;font-size:14px}.set-class-list{display:flex;flex-direction:column;gap:12px}.set-class-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;transition:box-shadow .15s}.set-class-card.expanded{box-shadow:0 2px 8px #00000014}.set-class-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;-webkit-user-select:none;user-select:none;transition:background .15s}.set-class-header:hover{background:#f9fafb}.set-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.set-total-price-badge{font-size:14px;font-weight:700;color:#2563eb}.set-expand-icon{display:inline-block;font-size:10px;margin-right:8px;color:#9ca3af;transition:transform .2s}.set-expand-icon.rotated{transform:rotate(90deg)}.set-class-info h3{font-size:15px;font-weight:600;color:#111827;margin:0 0 4px;display:flex;align-items:center}.set-class-meta{font-size:13px;color:#6b7280}.set-status-badge{font-size:12px;font-weight:500;padding:4px 10px;border-radius:12px;white-space:nowrap}.set-status-badge.has-set{background:#dcfce7;color:#166534}.set-status-badge.no-set{background:#f3f4f6;color:#6b7280}.set-detail{background:#f9fafb;border-top:1px solid #e5e7eb;padding:12px 16px}.set-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.set-name{font-size:14px;font-weight:600;color:#374151}.set-total-price{font-size:15px;font-weight:700;color:#2563eb}.set-textbook-list{margin-bottom:12px}.set-textbook-item{display:flex;justify-content:space-between;padding:6px 0;font-size:13px;border-bottom:1px solid #e5e7eb}.set-textbook-item:last-child{border-bottom:none}.set-textbook-item .textbook-name{color:#374151}.set-textbook-item .textbook-price{color:#6b7280}.set-card-actions{display:flex;gap:8px;justify-content:flex-end}.set-empty{padding:8px 16px;text-align:right}.class-info-box{background:#f3f4f6;padding:12px;border-radius:8px;font-size:14px;color:#374151;font-weight:500}.selected-textbooks-box{border:1px solid #bae6fd;border-radius:8px;background:#f0f9ff;padding:6px;display:flex;flex-direction:column;gap:4px;max-height:150px;overflow-y:auto}.selected-textbook-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#fff;border:1px solid #e0f2fe;border-radius:6px;font-size:13px}.selected-textbook-name{flex:1;color:#1e293b;font-weight:500}.selected-textbook-price{color:#1e40af;font-weight:600;white-space:nowrap}.selected-textbook-remove{width:22px;height:22px;border:none;background:#fee2e2;color:#dc2626;border-radius:50%;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.selected-textbook-remove:hover{background:#fca5a5}.total-price-box{background:#dbeafe;padding:12px;border-radius:8px;font-size:18px;font-weight:700;color:#1e40af;text-align:center}.category-badge-sm{font-size:9px;font-weight:600;padding:2px 5px;border-radius:4px;margin-right:6px}.category-badge-sm.category-GR{background:#dbeafe;color:#1e40af}.category-badge-sm.category-RC{background:#dcfce7;color:#166534}.category-badge-sm.category-LC{background:#f3e8ff;color:#7c3aed}.category-badge-sm.category-VO{background:#fef3c7;color:#92400e}.filter-info{font-size:13px;color:#6b7280;padding:8px 12px;background:#f9fafb;border-radius:6px}.class-info-box strong{display:block;margin-bottom:4px}.class-info-box .apply-info{display:block;font-size:12px;color:#6b7280;font-weight:400;margin-top:4px}.class-group{border-bottom:1px solid #e5e7eb}.class-group:last-child{border-bottom:none}.class-group-header{background:#f3f4f6;padding:8px 12px;font-size:13px;font-weight:600;color:#374151;position:sticky;top:0;z-index:1}.select-buttons{display:flex;gap:12px;align-items:center;padding:10px 12px;background:#f9fafb;border-bottom:1px solid #e5e7eb}.select-buttons .student-checkbox{border-bottom:none;padding:0}.set-info-box{background:#f9fafb;border-radius:8px;padding:12px;margin-bottom:12px}.set-info-row{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #e5e7eb}.set-info-row:last-child{border-bottom:none}.set-info-row span:first-child{color:#6b7280}.set-info-row span:last-child{color:#374151;font-weight:500}.textbook-item-row{display:flex;justify-content:space-between;padding:8px 0;font-size:14px;border-bottom:1px solid #f3f4f6}.textbook-item-row:last-child{border-bottom:none}.textbook-item-row .option-name{color:#374151}.textbook-item-row .option-price{color:#6b7280}.textbook-item-check{display:flex;align-items:center;gap:8px;padding:8px 4px;font-size:14px;border-bottom:1px solid #f3f4f6;cursor:pointer;border-radius:4px;transition:background .15s}.textbook-item-check:hover{background:#f8fafc}.textbook-item-check.checked{background:#eff6ff}.textbook-item-check.select-all-check{font-weight:600;color:#1e40af;border-bottom:none}.textbook-item-check input[type=checkbox]{width:16px;height:16px;accent-color:#1e40af;cursor:pointer;flex-shrink:0}.textbook-item-check .option-name{flex:1;color:#374151}.textbook-item-check .option-price{color:#6b7280;white-space:nowrap}.lightbox-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;cursor:pointer}.lightbox-content{position:relative;max-width:90vw;max-height:90vh;cursor:default}.lightbox-content img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 32px #0000004d;background:#fff;padding:20px}.lightbox-close{position:absolute;top:-12px;right:-12px;width:32px;height:32px;border-radius:50%;background:#fff;color:#374151;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;box-shadow:0 2px 8px #0003;transition:background .15s}.lightbox-close:hover{background:#f3f4f6}.inventory-summary{display:flex;gap:12px;margin-bottom:20px}.inventory-summary-card{flex:1;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px;text-align:center}.inventory-summary-card.summary-warning{border-color:#fcd34d;background:#fffbeb}.inventory-summary-card.summary-danger{border-color:#fca5a5;background:#fef2f2}.summary-label{display:block;font-size:13px;color:#6b7280;margin-bottom:4px}.summary-value{display:block;font-size:22px;font-weight:700;color:#111827}.summary-warning .summary-value{color:#92400e}.summary-danger .summary-value{color:#991b1b}.stock-badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:13px;font-weight:600}.stock-normal{background:#dcfce7;color:#166534}.stock-warning{background:#fef3c7;color:#92400e}.stock-danger{background:#fee2e2;color:#991b1b}.inventory-table .col-stock{width:80px;text-align:center}.inventory-table .col-inventory-action{width:180px}.log-type-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.log-incoming{background:#dcfce7;color:#166534}.log-assigned{background:#dbeafe;color:#1e40af}.log-returned{background:#fef3c7;color:#92400e}.log-adjust{background:#f3f4f6;color:#4b5563}@media(max-width:640px){.inventory-summary{flex-direction:column}}.tuition-management-page{padding:24px;max-width:1400px;margin:0 auto;color:#333}.tuition-management-page *{color:inherit}.tuition-management-header{margin-bottom:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.tuition-management-header h1{margin:0;font-size:24px;font-weight:600}.tab-buttons{display:flex;gap:8px;flex-wrap:wrap}.tab-btn{padding:8px 16px;border:1px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.tab-btn:hover{background:#f5f5f5}.tab-btn.active{background:#1976d2;color:#fff;border-color:#1976d2}.tuition-error{background:#fee;color:#c00;padding:12px;border-radius:8px;margin-bottom:16px}.tuition-loading{display:flex;justify-content:center;padding:48px}.tuition-content,.tuition-view-section{display:flex;flex-direction:column;gap:20px}.tuition-filters{display:flex;gap:20px;padding:20px;background:#f8f9fa;border-radius:12px;flex-wrap:wrap}.tuition-grand-total{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:linear-gradient(135deg,#1976d2,#1565c0);border-radius:12px;color:#fff}.grand-total-label{font-size:16px;font-weight:500}.grand-total-value{font-size:28px;font-weight:700}.period-tuition-card{background:#fff;border:1px solid #e0e0e0;border-radius:12px;overflow:hidden}.period-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.period-title h3{margin:0;font-size:16px;font-weight:600;color:#333}.period-dates{font-size:13px;color:#555;margin-top:2px;display:block}.period-header-right{display:flex;align-items:center;gap:16px}.period-total{text-align:right}.period-total-label{font-size:12px;color:#555;display:block}.period-total-value{font-size:18px;font-weight:600;color:#1976d2}.cancel-period-btn{padding:6px 12px;background:#fff;color:#dc2626;border:1px solid #dc2626;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}.cancel-period-btn:hover{background:#dc2626;color:#fff}.filter-group{display:flex;flex-direction:column;gap:8px}.filter-group label{font-size:14px;font-weight:500;color:#555}.filter-group select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;min-width:250px;color:#333;background:#fff}.tuition-summary{display:flex;gap:16px;flex-wrap:wrap}.summary-item{background:#fff;padding:16px 24px;border-radius:8px;border:1px solid #e0e0e0;display:flex;flex-direction:column;gap:4px}.summary-item.total{background:#e3f2fd;border-color:#1976d2}.summary-label{font-size:13px;color:#555}.summary-value{font-size:18px;font-weight:600}.tuition-table-container{background:#fff;border-radius:8px;overflow:hidden;border:1px solid #e0e0e0}.tuition-table{width:100%;border-collapse:collapse}.tuition-table th,.tuition-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e0e0e0}.tuition-table th{background:#f5f5f5;font-weight:500;font-size:13px;color:#555}.tuition-table td{font-size:14px;color:#333}.tuition-table td.total-fee{font-weight:600;color:#1976d2}.info-message{background:#fff3e0;color:#e65100;padding:16px;border-radius:8px;line-height:1.6}.empty-message{padding:48px;text-align:center;color:#555}.billing-periods-section,.fee-rules-section,.eval-periods-section{display:flex;flex-direction:column;gap:20px}.section-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px}.section-header h2{margin:0;font-size:18px;font-weight:600}.section-desc{margin:4px 0 0;font-size:14px;color:#555;line-height:1.5;flex-basis:100%}.add-btn{background:#1976d2;color:#fff;border:none;padding:8px 16px;border-radius:6px;font-size:14px;cursor:pointer}.add-btn:hover{background:#1565c0}.category-billing-card,.category-fee-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px}.category-billing-card h3,.category-fee-card h3{margin:0 0 8px;font-size:16px;font-weight:600;color:#333}.period-info-text{margin:0 0 12px;font-size:13px;color:#555}.billing-table,.fee-rules-table,.eval-table{width:100%;border-collapse:collapse}.billing-table th,.billing-table td,.fee-rules-table th,.fee-rules-table td,.eval-table th,.eval-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e0e0e0}.billing-table th,.fee-rules-table th,.eval-table th{background:#f5f5f5;font-weight:500;font-size:13px;color:#555}.billing-table td,.fee-rules-table td,.eval-table td{font-size:14px;color:#333}.status-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.status-badge.active{background:#e8f5e9;color:#2e7d32}.status-badge.inactive{background:#f5f5f5;color:#555}.actions{display:flex;gap:4px}.actions .edit-btn{padding:4px 8px;background:#1976d2;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer}.actions .edit-btn:hover{background:#1565c0}.delete-btn{padding:4px 8px;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:4px;font-size:12px;cursor:pointer}.delete-btn:hover{background:#f3f4f6;color:#4b5563}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:24px;border-radius:12px;min-width:400px;max-width:500px;color:#333}.modal-content h3{margin:0 0 20px;font-size:18px;font-weight:600}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:#333}.form-group input,.form-group select{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;color:#333;background:#fff}.form-row{display:flex;gap:12px}.form-row .form-group{flex:1}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.cancel-btn{padding:8px 16px;background:#f5f5f5;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer}.cancel-btn:hover{background:#e0e0e0}.save-btn{padding:8px 16px;background:#1976d2;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer}.save-btn:hover{background:#1565c0}.loading-spinner{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#1976d2;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.holidays-section{display:flex;flex-direction:column;gap:20px}.holidays-table-container{background:#fff;border-radius:8px;overflow:hidden;border:1px solid #e0e0e0}.holidays-table{width:100%;border-collapse:collapse}.holidays-table th,.holidays-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e0e0e0}.holidays-table th{background:#f5f5f5;font-weight:500;font-size:13px;color:#555}.holidays-table td{font-size:14px;color:#333}.category-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;background:#e3f2fd;color:#1976d2}.category-badge.all{background:#fff3e0;color:#e65100}.period-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;background:#e8f5e9;color:#2e7d32}.period-badge.default{background:#f5f5f5;color:#555}.excluded-info{display:inline-block;margin-left:4px;font-size:12px;color:#e65100}.form-help{margin:4px 0 0;font-size:12px;color:#4b5563}.header-buttons{display:flex;gap:8px}.add-btn.secondary{background:#43a047}.add-btn.secondary:hover{background:#388e3c}.add-btn.small{padding:4px 10px;font-size:12px}.billing-period-item{border:1px solid #e0e0e0;border-radius:8px;margin-bottom:12px;overflow:hidden}.billing-period-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.billing-period-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.billing-period-name{font-weight:600;font-size:15px}.billing-period-dates{font-size:13px;color:#555}.billing-period-actions{display:flex;gap:6px}.class-periods-list{padding:12px 16px;background:#fafafa}.class-periods-table{width:100%;border-collapse:collapse;font-size:13px}.class-periods-table th,.class-periods-table td{padding:8px 12px;text-align:left;border-bottom:1px solid #e8e8e8}.class-periods-table th{background:#f0f0f0;font-weight:500;color:#555}.no-class-periods{padding:16px;margin:0;font-size:13px;color:#4b5563;background:#fafafa}.class-periods-info{display:flex;gap:12px;padding:12px 20px;background:#fafafa;border-bottom:1px solid #e0e0e0;flex-wrap:wrap}.class-period-badge{display:inline-block;padding:6px 12px;background:#e8f5e9;color:#2e7d32;border-radius:6px;font-size:13px;font-weight:500}.period-column-header{text-align:center;background:#e3f2fd;border-left:2px solid #1976d2}.sub-header th{font-size:11px;padding:6px 8px;background:#f0f7ff;color:#555}.period-cell{text-align:center;font-size:13px;border-left:1px solid #e8e8e8}.excluded-info-small{display:inline-block;font-size:10px;color:#e65100;margin-left:2px}.period-type-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:500}.period-type-badge.regular{background:#e3f2fd;color:#1976d2}.period-type-badge.evaluation{background:#fff3e0;color:#e65100}.period-column-header.evaluation{background:#fff3e0;border-left:2px solid #e65100}.class-period-badge.evaluation{background:#fff3e0;color:#e65100}.eval-duplicate{background:#f5f5f5;color:#4b5563}.eval-duplicate-text{font-size:11px;color:#4b5563;font-style:italic}.tuition-issue-section{display:flex;flex-direction:column;gap:20px}.issue-btn{padding:8px 16px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.issue-btn.primary{background:#1976d2;color:#fff}.issue-btn.primary:hover:not(:disabled){background:#1565c0}.issue-btn:disabled{opacity:.5;cursor:not-allowed}.repair-btn{background:#fff3e0;color:#e65100;border-color:#ffcc80;font-size:13px}.repair-btn:hover{background:#ffe0b2}.issue-table-container{background:#fff;border-radius:8px;overflow-x:auto;border:1px solid #e0e0e0}.issue-table{width:100%;border-collapse:collapse;font-size:14px}.issue-table th,.issue-table td{padding:10px 14px;text-align:left;border-bottom:1px solid #e0e0e0}.issue-table th{background:#f5f5f5;font-weight:500;font-size:13px;color:#555;white-space:nowrap}.issue-table tbody tr:hover{background:#fafafa}.checkbox-col{width:40px;text-align:center}.class-col{min-width:200px}.period-col{min-width:180px;text-align:center}th.period-col .period-header{display:flex;justify-content:center;align-items:center;gap:6px;padding:0;background:none;border-bottom:none}th.period-col .period-dates{text-align:center}.period-col.issued{background:#f0fdf4}.total-col{min-width:100px;font-weight:600}thead .total-col{text-align:center}tbody .total-col{text-align:right}.class-cell{display:flex;align-items:center;gap:2px}.class-name{font-weight:500;font-size:13px}.class-info{font-size:12px;color:#888;margin-left:4px}.fee-cell{display:flex;align-items:center;gap:8px;justify-content:center}.fee-info{display:flex;flex-direction:column;align-items:center;gap:1px}.fee-amount{font-weight:600;font-size:14px;color:#333}.fee-detail{font-size:11px;color:#888;white-space:nowrap}.issued-fee .fee-amount{color:#2e7d32}.total-amount{font-weight:600;font-size:14px;color:#1976d2}.issued-badge{display:flex;flex-direction:column;align-items:center;gap:4px}.issued-status{display:flex;align-items:center;gap:4px;font-size:12px;color:#2e7d32;font-weight:500}.issued-icon{color:#2e7d32;font-weight:700}.detail-btn{padding:2px 8px;background:#e3f2fd;color:#1976d2;border:1px solid #bbdefb;border-radius:4px;font-size:11px;cursor:pointer;margin-left:4px}.detail-btn:hover{background:#bbdefb}.modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.issue-modal{background:#fff;border-radius:12px;max-width:560px;width:90%;max-height:85vh;display:flex;flex-direction:column;color:#333}.issue-modal-wide{max-width:800px}.issue-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #e0e0e0}.issue-modal-header h2{margin:0;font-size:18px;font-weight:600}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:none;border-radius:6px;font-size:18px;color:#6b7280;cursor:pointer}.close-btn:hover{background:#e5e7eb;color:#374151}.issue-modal-body{padding:20px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.issue-summary{display:flex;gap:12px;flex-wrap:wrap}.issue-summary-large .summary-item{flex:1;min-width:120px;text-align:center;padding:12px 16px}.summary-item .label{font-size:12px;color:#888;display:block}.summary-item .value{font-size:18px;font-weight:600;display:block;margin-top:4px}.summary-item-highlight{background:#e3f2fd;border-color:#1976d2}.summary-item-highlight .value{color:#1976d2}.issue-items-table{max-height:300px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:8px}.issue-items-table table{width:100%;border-collapse:collapse}.issue-items-table th,.issue-items-table td{padding:8px 12px;text-align:left;border-bottom:1px solid #e0e0e0;font-size:13px}.issue-items-table th{background:#f5f5f5;font-weight:500;position:sticky;top:0}.issue-items-table td.fee,.issue-items-table tfoot td.fee{text-align:right;font-weight:500}.issue-items-table tfoot{background:#f9fafb}.issue-items-table tfoot td{border-top:2px solid #e0e0e0;border-bottom:none}.sibling-info-compact{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff3e0;border-radius:6px;font-size:13px}.sibling-label{font-weight:600;color:#e65100;white-space:nowrap}.sibling-names{color:#555}.issue-confirm-text{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#f0f7ff;border-radius:8px;font-size:14px;flex-wrap:wrap}.issue-date-picker{padding:6px 10px;border:1px solid #ddd;border-radius:6px;font-size:14px}.issue-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid #e0e0e0}.confirm-btn{padding:8px 20px;background:#1976d2;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer;font-weight:500}.confirm-btn:hover:not(:disabled){background:#1565c0}.confirm-btn:disabled{opacity:.5;cursor:not-allowed}.issue-modal.single-detail{max-width:700px}.issue-modal.single-detail .modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #e0e0e0;margin-bottom:0}.issue-modal.single-detail .modal-header h2{margin:0;font-size:18px;font-weight:600}.issue-modal.single-detail .modal-body{padding:20px 24px;overflow-y:auto}.issue-modal.single-detail .modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid #e0e0e0;margin-top:0}.detail-summary{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.detail-summary .summary-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f9fafb;border-radius:6px}.detail-summary .summary-item.highlight{background:#e3f2fd}.detail-summary .summary-item.highlight .value{color:#1976d2;font-size:20px}.detail-table-wrapper{max-height:400px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:8px}.detail-student-table{width:100%;border-collapse:collapse}.detail-student-table th,.detail-student-table td{padding:8px 12px;text-align:left;border-bottom:1px solid #e0e0e0;font-size:13px}.detail-student-table th{background:#f5f5f5;font-weight:500;position:sticky;top:0}.detail-student-table td.fee{text-align:right;font-weight:600;color:#1976d2}.empty-tuition-message{padding:32px;text-align:center;color:#888;font-size:14px}.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:"•"}.ql-editor li[data-list=checked]>.ql-ui:before{content:"☑"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:"☐"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) ". "}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media(pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.ql-cell-selected-after,.ql-cell-selected:after,.ql-cell-focused:after{content:"";pointer-events:none;position:absolute;inset:0;background-color:#9ecffa4d}.ql-table-border-shadow,.ql-table-select-container,.ql-table-dropdown-list,.ql-table-dropdown-properties-list,.ql-table-menus-container{border-radius:2px;border:1px solid #ccced1;background:#fff;box-shadow:0 1px 2px 1px #00000026}.ql-table-triangle-common,.ql-table-tooltip-error:before,.label-field-view-status:before,.ql-table-tooltip:before,.ql-table-triangle-down:not(.ql-table-triangle-none):after,.ql-table-triangle-down:not(.ql-table-triangle-none):before,.ql-table-triangle-up:not(.ql-table-triangle-none):after,.ql-table-triangle-up:not(.ql-table-triangle-none):before{position:absolute;left:50%;transform:translate(-50%);content:"";border:10px solid rgba(0,0,0,0)}.ql-table-input-focus,.ql-table-color-container .color-picker .color-picker-select>.erase-container,.ql-table-selected,.ql-table-properties-form .ql-table-dropdown-selected,.ql-table-properties-form .ql-table-color-selected,.ql-table-input:focus,.ql-table-color-container .label-field-view-color .property-input:focus,.ql-table-properties-form .property-input:focus{border:1px solid #3779eb;box-shadow:0 0 0 3px #cae1fc}.ql-table-input,.ql-table-color-container .label-field-view-color .property-input,.ql-table-properties-form .property-input{width:80px;height:30px;border:1px solid #ccced1;outline:none;padding-left:6px;background:inherit}.ql-table-input:focus::placeholder,.ql-table-color-container .label-field-view-color .property-input:focus::placeholder,.ql-table-properties-form .property-input:focus::placeholder{color:#0000}.ql-table-input:focus+label,.ql-table-color-container .label-field-view-color .property-input:focus+label,.ql-table-properties-form .property-input:focus+label{display:block}.ql-table-input:not(:placeholder-shown)+label,.ql-table-color-container .label-field-view-color .property-input:not(:placeholder-shown)+label,.ql-table-properties-form .property-input:not(:placeholder-shown)+label{display:block}.ql-table-temporary{display:none}.ql-table-center,.ql-table-select-container .ql-table-select-list,.ql-table-select-container,.ql-table-color-container .color-picker .color-picker-palette .color-picker-wrap .iro-container,.ql-table-color-container .color-picker,.ql-table-properties-form .properties-form-action-row>button,.ql-table-dropdown-list .ql-table-header-row,.ql-table-dropdown-properties-list .ql-table-header-row,.ql-operate-line-container{display:flex;justify-content:center;align-items:center}.ql-table-selected,.ql-table-properties-form .ql-table-dropdown-selected,.ql-table-properties-form .ql-table-color-selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAM1BMVEUAAAAyMjIyMjIiIiIyMjIyMjIyMjIyMjIxMTEyMjIyMjIyMjIwMDAzMzMxMTEwMDAzMzOYbpUsAAAAEXRSTlMA/XgF8HRua2fm2rI3rzk1Lf2cC1oAAAA8SURBVBjTY6AUsHKh8RnZ8PKZoHwBZhifHcLg5GVG4TPwsXAzQ/gwwAMUYWLkALIQIlxgPgLwc3JQ4h0Ae0ABBy2kuXoAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:16px;box-sizing:border-box}.ql-operate-line-container{position:absolute;z-index:10}.ql-operate-line-container .ql-operate-line{background-color:#0589f3}.ql-operate-block{position:absolute;z-index:10;border:1px solid #979797;cursor:nwse-resize}.ql-operate-block-move{cursor:crosshair;border:none}.ql-operate-drag-table{border:1px dashed #000;position:absolute}.ql-cell-focused{position:relative}.ql-cell-focused:after{border:1px solid #3779eb}.ql-cell-selected{position:relative}.ql-table-menus-container{position:absolute;display:flex;align-items:center;height:40px;width:fit-content;padding:4px;box-sizing:border-box;z-index:1}.ql-table-triangle-up:not(.ql-table-triangle-none):before{bottom:-20px;border-top-color:#00000026!important}.ql-table-triangle-up:not(.ql-table-triangle-none):after{bottom:-19px;border-top-color:#fff!important}.ql-table-triangle-down:not(.ql-table-triangle-none):before{top:-20px;border-bottom-color:#00000026!important}.ql-table-triangle-down:not(.ql-table-triangle-none):after{top:-19px;border-bottom-color:#fff!important}.label-field-view{position:relative}.label-field-view-input-wrapper{position:relative;height:100%}.label-field-view-input-wrapper>label{position:absolute;left:0;top:-50%;transform:translateY(50%) scale(.75);color:#999;background:#fff;display:none}.label-field-view-status{max-width:160px;width:max-content}.label-field-view-error>input{border-color:#db3700!important;animation:ql-table-input-shake .3s ease both}.label-field-view-error>input:focus{box-shadow:0 0 0 3px #ff401f4d!important}.label-field-view-error>label{color:#db3700}.ql-table-dropdown,.ql-table-dropdown-properties{display:flex;height:100%;align-items:center;position:relative;padding:0 4px;cursor:pointer}.ql-table-dropdown:hover,.ql-table-dropdown-properties:hover{background:#f0f0f0}.ql-table-dropdown-text,.ql-table-dropdown-properties-text{flex:1;height:100%;margin-right:7px;display:flex;align-items:center}.ql-table-dropdown-list,.ql-table-dropdown-properties-list{position:absolute;left:0;bottom:0;transform:translateY(100%);margin:0;padding:0;width:170px;z-index:10}.ql-table-dropdown-list li,.ql-table-dropdown-properties-list li{list-style:none;line-height:30px;padding:0 10px;cursor:pointer}.ql-table-dropdown-list li:hover,.ql-table-dropdown-properties-list li:hover{background-color:#f0f0f0}.ql-table-dropdown-list .ql-table-header-row,.ql-table-dropdown-properties-list .ql-table-header-row{justify-content:space-between}.ql-table-dropdown-label,.ql-table-dropdown-properties-label{width:100%;min-width:100%;line-height:24px;font-weight:700;margin-bottom:6px;display:block}.ql-table-tooltip-hover{display:flex;position:relative}.ql-table-tooltip-hover:hover .ql-table-tooltip{display:block}.ql-table-tooltip-hover:hover+.ql-table-tooltip{display:block}.ql-table-tooltip{font-size:12px;min-width:32px;line-height:20px;padding:6px;white-space:nowrap;color:#fff;text-align:center;word-wrap:break-word;background:#000000d9;border-radius:6px;position:absolute;z-index:11;left:50%;bottom:-10px;transform:translate(-50%,100%)}.ql-table-tooltip:before{border-bottom-color:#000000d9!important;top:-20px}.ql-table-tooltip:hover{display:block}.ql-table-tooltip-hidden{display:none!important}.ql-table-tooltip-error,.label-field-view-status{font-size:12px;min-width:32px;line-height:20px;padding:6px;white-space:nowrap;color:#fff;text-align:center;word-wrap:break-word;background:#db3700;border-radius:6px;position:absolute;z-index:11;left:50%;bottom:-10px;transform:translate(-50%,100%);white-space:pre-wrap;z-index:9}.ql-table-tooltip-error:before,.label-field-view-status:before{border-bottom-color:#db3700!important;top:-20px}.ql-table-tooltip-error:hover,.label-field-view-status:hover{display:block}.ql-table-tooltip-error-hidden{display:none!important}.ql-table-dropdown-properties{width:80px;height:30px;border:1px solid #ccced1;box-sizing:border-box}.ql-table-dropdown-properties:hover{background:none}.ql-table-properties-form{width:320px;position:absolute;left:50%;padding-bottom:8px;background:#fff;z-index:1;box-shadow:0 1px 2px 1px #ccced1}.ql-table-properties-form .properties-form-header{height:40px;line-height:40px;padding:0 12px;border-bottom:1px solid #ccced1;margin:0;box-sizing:border-box;color:#333;font-size:14px}.ql-table-properties-form .properties-form-row{display:flex;flex-wrap:wrap;padding:8px 12px;justify-content:space-between}.ql-table-properties-form .properties-form-row .ql-table-check-container{display:flex;border:1px solid #ccced1;align-items:center}.ql-table-properties-form .properties-form-row .ql-table-check-container .ql-table-tooltip-hover{padding:6px 10px;cursor:pointer}.ql-table-properties-form .properties-form-row .ql-table-check-container .ql-table-tooltip-hover:hover{background:#f0f0f0}.ql-table-properties-form .properties-form-row .ql-table-check-container .ql-table-btns-checked{background:#f0f7ff}.ql-table-properties-form .properties-form-row .ql-table-check-container .ql-table-btns-checked>svg path{stroke:#2977ff}.ql-table-properties-form .properties-form-row-full .ql-table-color-container,.ql-table-properties-form .properties-form-row-full .ql-table-color-container .property-input{width:100%}.ql-table-properties-form .properties-form-action-row{display:flex;justify-content:space-around;padding:0 12px}.ql-table-properties-form .properties-form-action-row>button{background:#fff;outline:none;border:none;height:30px;cursor:pointer;flex:1}.ql-table-properties-form .properties-form-action-row>button>span{margin:0 2px;display:flex}.ql-table-properties-form .properties-form-action-row>button:hover{background:#f0f0f0}.ql-table-properties-form .properties-form-action-row>button[disabled]{background-color:#0000}.ql-table-properties-form .ql-table-color-selected{background-position:center}.ql-table-properties-form .ql-table-dropdown-selected{background-position:calc(100% - 10px) center}.ql-table-color-container{border:1px solid #ccced1;height:30px;box-sizing:border-box;display:flex}.ql-table-color-container .label-field-view-color{flex:1}.ql-table-color-container .label-field-view-color .property-input{border:1px solid rgba(0,0,0,0);height:100%}.ql-table-color-container .color-picker{width:30px;border-left:1px solid #ccced1;box-sizing:border-box;position:relative}.ql-table-color-container .color-picker .color-button{width:20px;height:20px;border:1px solid #ccced1;box-sizing:border-box;cursor:pointer;position:relative}.ql-table-color-container .color-picker .color-unselected{position:relative}.ql-table-color-container .color-picker .color-unselected:after{content:"";position:absolute;width:1px;height:26px;background:red;transform-origin:50%;transform:rotate(45deg);left:50%;top:-4px}.ql-table-color-container .color-picker .color-picker-select{position:absolute;right:0;bottom:0;width:156px;transform:translateY(100%);background:#fff;z-index:10;box-shadow:0 1px 2px 1px #ccced1}.ql-table-color-container .color-picker .color-picker-select .erase-container{display:flex;height:30px;align-items:center;padding:0 12px;cursor:pointer}.ql-table-color-container .color-picker .color-picker-select .erase-container:hover{background:#f0f0f0}.ql-table-color-container .color-picker .color-picker-select .erase-container>button{border:none;outline:none;background:inherit;height:100%;cursor:pointer}.ql-table-color-container .color-picker .color-picker-select>.erase-container{margin-bottom:4px}.ql-table-color-container .color-picker .color-picker-select .color-list{display:flex;flex-wrap:wrap;padding:0 12px;margin:0;justify-content:space-between}.ql-table-color-container .color-picker .color-picker-select .color-list>li{list-style:none;width:24px;height:24px;margin:2px 0;position:relative;cursor:pointer}.ql-table-color-container .color-picker .color-picker-select .color-list>li[data-color="#ffffff"]{border:1px solid #ccced1;box-sizing:border-box}.ql-table-color-container .color-picker .color-picker-palette{width:100%;height:100%;position:absolute;left:0;top:0;z-index:1;background:#fff}.ql-table-color-container .color-picker .color-picker-palette .color-picker-wrap{width:100%;height:100%;display:flex;flex-direction:column}.ql-table-color-container .color-picker .color-picker-palette .color-picker-wrap .iro-container{flex:1}.ql-table-disabled{background:#f2f2f2;pointer-events:none}.ql-table-button-disabled{background:#f2f2f2!important;pointer-events:none}.ql-table-button-disabled svg .ql-fill{fill:#999!important}.ql-table-button-disabled svg .ql-stroke{stroke:#999!important}button.ql-table-better{position:relative}.ql-table-select-container{flex-direction:column;width:190px;padding:2px;position:absolute;top:24px;z-index:10;box-sizing:border-box}.ql-table-select-container .ql-table-select-list{flex-wrap:wrap}.ql-table-select-container .ql-table-select-label{width:100%;line-height:16px;text-align:center;color:#222f3eb3;margin-top:2px}.ql-table-select-container span{width:16px;height:16px;border:1px solid #000;box-sizing:border-box;margin:1px}ol.table-list-container{counter-reset:list-0}.ql-editor th{border:1px solid #000;padding:2px 5px;background:#0000000d}.ql-table-divider{background:#ccced1;height:1px;width:100%}.ql-table-switch{position:relative;display:inline-block;width:28px;height:16px}.ql-table-switch .ql-table-switch-inner{position:absolute;cursor:pointer;inset:0;background:#ccc;transition:.4s;border-radius:8px}.ql-table-switch .ql-table-switch-inner:before{content:"";position:absolute;height:12px;width:12px;left:2px;top:50%;transform:translateY(-50%);background:#fff;transition:.4s;border-radius:50%}.ql-table-switch .ql-table-switch-inner[aria-checked=true]{background:#2196f3}.ql-table-switch .ql-table-switch-inner[aria-checked=true]:before{transform:translate(12px,-50%)}@keyframes ql-table-input-shake{20%{transform:translate(-2px)}40%{transform:translate(2px)}60%{transform:translate(-1px)}80%{transform:translate(1px)}}.school-analysis-page{padding:20px}.school-analysis-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.school-analysis-page .page-header h2{margin:0;font-size:1.5rem;color:#333}.school-analysis-page .btn-add{padding:10px 20px;background:#3b82f6;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500}.school-analysis-page .btn-add:hover{background:#2563eb}.school-analysis-page .period-filter-row{display:flex;align-items:center;gap:16px;margin-bottom:16px}.school-analysis-page .year-select{padding:7px 32px 7px 12px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#1e293b;font-size:14px;font-weight:600;cursor:pointer;appearance:auto}.school-analysis-page .exam-tabs{display:flex;gap:6px}.school-analysis-page .exam-tab{padding:7px 16px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.school-analysis-page .exam-tab:hover:not(.disabled){background:#f3f4f6;border-color:#9ca3af}.school-analysis-page .exam-tab.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.school-analysis-page .exam-tab.disabled{opacity:.4;cursor:default}.school-analysis-page .loading,.school-analysis-page .empty-state{text-align:center;padding:40px;color:#666}.school-analysis-page .analysis-table th{background:#f9fafb;font-weight:600;color:#374151}.school-analysis-page .btn-publish{padding:4px 12px;border-radius:20px;border:none;font-size:12px;cursor:pointer;background:#e5e7eb;color:#6b7280}.school-analysis-page .btn-publish.published{background:#10b981;color:#fff}.school-analysis-page .action-buttons{display:flex;gap:8px}.school-analysis-page .btn-edit,.school-analysis-page .btn-delete{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px}.school-analysis-page .btn-edit{background:#e0e7ff;color:#4f46e5}.school-analysis-page .btn-delete{background:transparent;color:#6b7280}.school-analysis-page .btn-delete:hover{background:#f3f4f6;color:#4b5563}.school-analysis-page .modal-overlay{position:fixed;inset:0;background:#00000080;overflow-y:auto;z-index:1000;padding:40px 20px;display:block}.school-analysis-page .analysis-modal{background:#fff;border-radius:12px;width:100%;max-width:1100px;margin:0 auto;box-shadow:0 20px 25px -5px #0000001a}.school-analysis-page .modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb}.school-analysis-page .modal-header h3{margin:0;font-size:1.25rem}.school-analysis-page .modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#6b7280}.school-analysis-page .modal-body{padding:20px;overflow:visible!important;max-height:none!important}.school-analysis-page .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.school-analysis-page .btn-cancel,.school-analysis-page .btn-save{padding:10px 24px;border-radius:6px;border:none;cursor:pointer;font-weight:500}.school-analysis-page .btn-cancel{background:#f3f4f6;color:#374151}.school-analysis-page .btn-save{background:#3b82f6;color:#fff}.school-analysis-page .btn-save:hover{background:#2563eb}.school-analysis-page .form-section{margin-bottom:24px;overflow:visible!important;max-height:none!important}.school-analysis-page .form-section h4{margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid #3b82f6;color:#1e40af;font-size:1rem}.school-analysis-page .form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.school-analysis-page .form-grid.form-grid--5col{grid-template-columns:repeat(5,1fr)}.school-analysis-page .form-group{display:flex;flex-direction:column;gap:4px}.school-analysis-page .form-group.full-width{grid-column:span 4}.school-analysis-page .form-group label{font-size:13px;color:#6b7280;font-weight:500}.school-analysis-page .form-group input,.school-analysis-page .form-group select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.school-analysis-page .form-section textarea{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;resize:vertical;font-family:inherit}.school-analysis-page .ratio-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.school-analysis-page .ratio-item{display:flex;flex-direction:column;gap:4px}.school-analysis-page .ratio-item label{font-size:13px;color:#6b7280}.school-analysis-page .ratio-input{display:flex;align-items:center;gap:4px}.school-analysis-page .ratio-input input{width:70px;padding:8px;border:1px solid #d1d5db;border-radius:6px;text-align:center}.school-analysis-page .ratio-input span{color:#6b7280}.school-analysis-page .checkbox-group{margin-bottom:12px}.school-analysis-page .checkbox-group label,.school-analysis-page .publish-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.school-analysis-page .checkbox-group input,.school-analysis-page .publish-checkbox input{width:18px;height:18px}.school-analysis-page .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid #3b82f6}.school-analysis-page .section-header h4{margin:0;padding:0;border:none}.school-analysis-page .btn-add-question{padding:6px 14px;background:#10b981;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}.school-analysis-page .btn-add-question:hover{background:#059669}.school-analysis-page .empty-questions{padding:30px;text-align:center;color:#6b7280;background:#f9fafb;border-radius:8px;border:2px dashed #d1d5db}.school-analysis-page .empty-questions p{margin:0}.school-analysis-page .add-question-bottom{margin-top:12px;text-align:center}.school-analysis-page .questions-table-wrapper{border:1px solid #e5e7eb;border-radius:8px;overflow:visible!important;max-height:none!important}.school-analysis-page .questions-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.school-analysis-page .questions-table th,.school-analysis-page .questions-table td{padding:6px 3px;text-align:center;border-bottom:1px solid #e5e7eb;white-space:nowrap;overflow:visible}.school-analysis-page .questions-table th{background:#f3f4f6;font-weight:600;color:#374151}.school-analysis-page .questions-table td.q-number{font-weight:600;color:#3b82f6;width:60px;padding:6px 2px;font-size:13px}.school-analysis-page .q-number-row{display:flex;align-items:center;gap:4px}.school-analysis-page .btn-insert-question{width:18px;height:18px;padding:0;border:1px solid #d1d5db;border-radius:50%;background:#fff;color:#9ca3af;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,background .15s,color .15s}.school-analysis-page .questions-table tr:hover .btn-insert-question{opacity:1}.school-analysis-page .btn-insert-question:hover{background:#3b82f6;border-color:#3b82f6;color:#fff}.school-analysis-page .questions-table .col-num{width:60px}.school-analysis-page .questions-table .col-format{width:70px}.school-analysis-page .questions-table .col-diff,.school-analysis-page .questions-table .col-score{width:52px}.school-analysis-page .questions-table .col-del{width:36px}.school-analysis-page .questions-table select{padding:5px 2px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;background:#fff;cursor:pointer;min-width:0}.school-analysis-page .questions-table .col-format select,.school-analysis-page .questions-table .col-diff select{width:100%;font-size:13px;padding:5px 0}.school-analysis-page .questions-table select:focus{outline:none;border-color:#3b82f6}.school-analysis-page .btn-remove-question{padding:4px 10px;background:#fee2e2;color:#dc2626;border:none;border-radius:4px;cursor:pointer;font-size:16px;font-weight:700}.school-analysis-page .btn-remove-question:hover{background:#fecaca}.school-analysis-page .select-with-custom{display:flex;flex-direction:row;gap:3px;align-items:center;min-width:0;overflow:hidden}.school-analysis-page .select-with-custom select{flex:0 0 auto;width:110px;min-width:0;font-size:13px;padding:5px 2px}.school-analysis-page .select-with-custom select.source-select{width:140px}.school-analysis-page .detail-input{padding:5px 4px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;flex:1 1 0;min-width:20px;box-sizing:border-box}.school-analysis-page .detail-input-sm{padding:5px 3px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;flex:1 1 0;min-width:16px;box-sizing:border-box}.school-analysis-page .lesson-input{padding:5px 2px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;width:36px;min-width:36px;flex:0 0 36px;text-align:center;box-sizing:border-box}.school-analysis-page .lesson-input::placeholder{color:#b0b0b0;font-size:12px}.school-analysis-page .detail-input::placeholder{color:#9ca3af}.school-analysis-page .detail-input-sm::placeholder{color:#b0b0b0;font-size:12px}.school-analysis-page .preview-section{background:#f0f9ff;padding:16px;border-radius:8px;border:1px solid #bae6fd}.school-analysis-page .preview-section h4{color:#0369a1;border-bottom-color:#0ea5e9}.school-analysis-page .preview-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.school-analysis-page .preview-grid-simple{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.school-analysis-page .preview-card{background:#fff;padding:12px;border-radius:6px;box-shadow:0 1px 2px #0000000d}.school-analysis-page .preview-card h5{margin:0 0 8px;font-size:12px;color:#374151;padding-bottom:6px;border-bottom:1px solid #e5e7eb}.school-analysis-page .preview-card ul{margin:0;padding:0;list-style:none}.school-analysis-page .preview-card li{font-size:12px;color:#4b5563;padding:2px 0}.school-analysis-page .preview-card .no-subjective{font-size:12px;color:#10b981;margin:0;font-weight:500}.school-analysis-page .total-count{margin:12px 0 0;text-align:center;font-weight:600;color:#0369a1}.school-analysis-page .chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.school-analysis-page .chart-card{background:#fff;padding:16px;border-radius:8px;box-shadow:0 1px 3px #00000014;border:1px solid #e2e8f0}.school-analysis-page .chart-card h5{margin:0 0 12px;font-size:13px;font-weight:700;color:#1e293b;padding-bottom:8px;border-bottom:2px solid #e2e8f0}.school-analysis-page .no-subjective-notice{display:flex;align-items:center;justify-content:center;height:180px;background:#f0fdf4;border-radius:6px;border:2px dashed #86efac}.school-analysis-page .no-subjective-notice span{font-size:18px;font-weight:700;color:#16a34a}.school-analysis-page .analysis-detail-table-wrapper{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.school-analysis-page .analysis-detail-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.school-analysis-page .analysis-detail-table thead tr{background:#0ea5e9;color:#fff}.school-analysis-page .analysis-detail-table th{padding:10px 12px;font-weight:600;text-align:center;border:1px solid #38bdf8}.school-analysis-page .analysis-detail-table th:nth-child(1),.school-analysis-page .analysis-detail-table td:nth-child(1){width:80px}.school-analysis-page .analysis-detail-table th:nth-child(3),.school-analysis-page .analysis-detail-table td:nth-child(3){width:72px}.school-analysis-page .analysis-detail-table th:nth-child(4),.school-analysis-page .analysis-detail-table td:nth-child(4){width:64px}.school-analysis-page .analysis-detail-table td{padding:8px 12px;border:1px solid #e5e7eb;color:#374151}.school-analysis-page .analysis-detail-table td.text-center{text-align:center}.school-analysis-page .analysis-detail-table tbody tr:hover{background:#f0f9ff}.school-analysis-page .analysis-detail-table tbody tr:nth-child(2n){background:#f8fafc}.school-analysis-page .analysis-detail-table tbody tr:nth-child(2n):hover{background:#f0f9ff}.school-analysis-page .difficulty-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;font-size:12px;font-weight:700;color:#fff}.school-analysis-page .difficulty-badge.difficulty-상{background:#f87171}.school-analysis-page .difficulty-badge.difficulty-중상{background:#fb923c}.school-analysis-page .difficulty-badge.difficulty-중{background:#fbbf24}.school-analysis-page .difficulty-badge.difficulty-중하{background:#a3e635;color:#333}.school-analysis-page .difficulty-badge.difficulty-하{background:#34d399}.school-analysis-page .analysis-table th.col-no,.school-analysis-page .analysis-table td.col-no{width:50px;min-width:50px;text-align:center;color:#6b7280;padding:12px 8px}.school-analysis-page .analysis-pagination{display:flex;justify-content:center;align-items:center;gap:4px;margin-top:16px;padding:12px 0}.school-analysis-page .page-btn{padding:6px 12px;border:1px solid #d1d5db;border-radius:4px;background:#fff;color:#374151;font-size:13px;cursor:pointer}.school-analysis-page .page-btn:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.school-analysis-page .page-btn.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.school-analysis-page .page-btn:disabled{opacity:.4;cursor:default}@media(max-width:1024px){.school-analysis-page .preview-grid{grid-template-columns:repeat(3,1fr)}.school-analysis-page .preview-grid-simple{grid-template-columns:repeat(2,1fr)}.school-analysis-page .chart-grid{grid-template-columns:1fr}}@media(max-width:768px){.school-analysis-page .form-grid,.school-analysis-page .form-grid.form-grid--5col,.school-analysis-page .ratio-grid,.school-analysis-page .preview-grid{grid-template-columns:repeat(2,1fr)}}.school-analysis-page .rich-editor-wrapper{border:1px solid #d1d5db;border-radius:8px;overflow:hidden}.school-analysis-page .rich-editor-wrapper .ql-toolbar{border:none;border-bottom:1px solid #e5e7eb;background:#f9fafb}.school-analysis-page .rich-editor-wrapper .ql-container{border:none;min-height:200px;font-size:14px}.school-analysis-page .rich-editor-wrapper .ql-editor{min-height:200px;line-height:1.8}.school-analysis-page .rich-editor-wrapper .ql-editor.ql-blank:before{color:#9ca3af;font-style:normal}.ql-toolbar button.ql-red-box,.ql-toolbar button.ql-tip-box{width:auto!important;padding:0 8px!important;font-size:11px;font-weight:600;border:1px solid #d1d5db!important;border-radius:4px!important;margin:0 2px}.ql-toolbar button.ql-red-box:after{content:"빨간테두리";color:#ef4444}.ql-toolbar button.ql-red-box.ql-active{background:#fef2f2!important;border-color:#ef4444!important}.ql-toolbar button.ql-tip-box:after{content:"TIP박스";color:#3b82f6}.ql-toolbar button.ql-tip-box.ql-active{background:#eff6ff!important;border-color:#3b82f6!important}.ql-editor .ql-red-box{border-left:2px solid #ef4444;border-right:2px solid #ef4444;padding:2px 16px;margin:0}.ql-editor .ql-red-box:not(.ql-red-box+.ql-red-box){border-top:2px solid #ef4444;border-top-left-radius:6px;border-top-right-radius:6px;padding-top:8px;margin-top:8px}.ql-editor .ql-red-box:not(:has(+.ql-red-box)){border-bottom:2px solid #ef4444;border-bottom-left-radius:6px;border-bottom-right-radius:6px;padding-bottom:8px;margin-bottom:8px}.ql-editor .ql-tip-box{border-left:2px solid #3b82f6;border-right:2px solid #3b82f6;background:#eff6ff;padding:2px 16px;margin:0}.ql-editor .ql-tip-box:not(.ql-tip-box+.ql-tip-box){border-top:2px solid #3b82f6;border-top-left-radius:6px;border-top-right-radius:6px;padding-top:8px;margin-top:8px}.ql-editor .ql-tip-box:not(:has(+.ql-tip-box)){border-bottom:2px solid #3b82f6;border-bottom-left-radius:6px;border-bottom-right-radius:6px;padding-bottom:8px;margin-bottom:8px}.school-analysis-page .btn.btn--outline{background:#fff;color:#6b7280;border:1px solid #d1d5db}.school-analysis-page .btn.btn--outline:hover{background:#f3f4f6;color:#374151;border-color:#9ca3af}.rich-content-view{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:16px 20px;min-height:60px;font-size:14px;line-height:1.7;color:#374151}.analysis-modal input:disabled,.analysis-modal select:disabled{background:#f3f4f6;color:#374151;cursor:default;opacity:1;-webkit-text-fill-color:#374151}.ql-editor table{width:100%;border-collapse:collapse;margin:12px 0}.ql-editor table td,.ql-editor table th{border:1.5px solid #9ca3af;padding:8px 12px;font-size:14px;line-height:1.6;min-height:36px}.ql-editor table th{background:#f3f4f6;font-weight:600;text-align:center}.rich-content-view table{width:100%;border-collapse:collapse;margin:12px 0}.rich-content-view table td,.rich-content-view table th{border:1.5px solid #9ca3af;padding:8px 12px;font-size:14px;line-height:1.6}.rich-content-view table th{background:#f3f4f6;font-weight:600;text-align:center}.point-management-page{max-width:1200px;margin:0 auto;padding:32px 24px}.point-management-page h1{font-size:1.5rem;font-weight:700;margin:0}.point-tab-content{padding:24px 0}.point-register-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.point-student-search{background:#f8fafc;border-radius:12px;padding:20px}.point-student-search h3{font-size:.95rem;font-weight:600;margin-bottom:12px}.point-search-bar{display:flex;gap:8px;margin-bottom:12px}.point-search-bar input{flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.875rem}.point-search-bar button{padding:8px 16px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;white-space:nowrap}.point-search-bar button:hover{background:#4338ca}.point-search-results{max-height:240px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.point-search-results.empty{display:flex;align-items:center;justify-content:center;padding:20px;color:#9ca3af;font-size:.875rem}.point-search-result-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid #f3f4f6;font-size:.875rem;transition:background .15s}.point-search-result-item:last-child{border-bottom:none}.point-search-result-item:hover{background:#f1f5f9}.point-search-result-item.selected{background:#dbeafe;font-weight:600}.point-search-result-item .student-info{color:#6b7280;font-size:.8rem;margin-left:6px}.point-form-section{background:#f8fafc;border-radius:12px;padding:20px}.point-form-section h3{font-size:.95rem;font-weight:600;margin-bottom:12px}.point-selected-student{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:12px 16px;margin-bottom:16px;font-size:.9rem;font-weight:600;color:#1e40af}.point-no-student{color:#9ca3af;font-size:.875rem;margin-bottom:16px}.point-type-toggle{display:flex;gap:8px;margin-bottom:16px}.toggle-btn{flex:1;padding:10px 20px;border-radius:8px;border:1px solid #d1d5db;background:#f9fafb;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s}.toggle-btn.active.merit{background:#3b82f6;color:#fff;border-color:#3b82f6}.toggle-btn.active.demerit{background:#ef4444;color:#fff;border-color:#ef4444}.point-form{display:flex;flex-direction:column;gap:14px}.point-form-field label{display:block;font-size:.825rem;font-weight:600;color:#374151;margin-bottom:4px}.point-form-field select,.point-form-field input,.point-form-field textarea{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.875rem;box-sizing:border-box}.point-form-field textarea{resize:vertical;min-height:60px}.point-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.point-form-actions button{padding:8px 24px;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;border:1px solid #d1d5db;background:#f9fafb;transition:all .15s}.point-form-actions .btn-submit{background:#4f46e5;color:#fff;border-color:#4f46e5}.point-form-actions .btn-submit:hover{background:#4338ca}.point-form-actions .btn-submit:disabled{opacity:.5;cursor:not-allowed}.point-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:20px}.point-filter-field{display:flex;flex-direction:column;gap:4px}.point-filter-field label{font-size:.75rem;font-weight:600;color:#6b7280}.point-filter-field input,.point-filter-field select{padding:7px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem}.point-filter-field .search-input{width:200px}.point-filters .btn-search{padding:7px 16px;background:#4f46e5;color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer}.point-filters .btn-search:hover{background:#4338ca}.point-summary{display:flex;gap:16px;margin-bottom:20px}.point-summary-card{flex:1;padding:16px;border-radius:12px;text-align:center}.point-summary-card .label{font-size:.8rem;font-weight:600;color:#6b7280;margin-bottom:4px}.point-summary-card .value{font-size:1.5rem;font-weight:700}.point-summary-card.merit{background:#eff6ff;border:1px solid #bfdbfe}.point-summary-card.merit .value{color:#2563eb}.point-summary-card.demerit{background:#fef2f2;border:1px solid #fecaca}.point-summary-card.demerit .value{color:#dc2626}.point-summary-card.net{background:#f0fdf4;border:1px solid #bbf7d0}.point-summary-card.net .value{color:#16a34a}.point-type-badge{display:inline-block;padding:2px 10px;border-radius:4px;font-size:.78rem;font-weight:600}.point-type-badge.merit{background:#dbeafe;color:#1d4ed8}.point-type-badge.demerit{background:#fee2e2;color:#dc2626}.point-merit{color:#2563eb;font-weight:600}.point-demerit{color:#dc2626;font-weight:600}.delete-btn-small{font-size:.78rem;color:#6b7280;background:transparent;border:1px solid #d1d5db;border-radius:4px;padding:3px 10px;cursor:pointer;transition:all .15s}.delete-btn-small:hover{background:#f3f4f6;color:#4b5563}.point-history-empty{text-align:center;padding:40px 0;color:#9ca3af;font-size:.9rem}.category-sections{display:grid;grid-template-columns:1fr 1fr;gap:24px}.category-section{background:#f8fafc;border-radius:12px;padding:20px}.category-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.category-section-header h3{font-size:1rem;font-weight:600}.category-section-header .btn-add-cat{padding:5px 14px;background:#4f46e5;color:#fff;border:none;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer}.category-section-header .btn-add-cat:hover{background:#4338ca}.category-list{display:flex;flex-direction:column;gap:6px}.category-item{display:flex;align-items:center;justify-content:space-between;background:#fff;padding:10px 14px;border-radius:8px;border:1px solid #e5e7eb;font-size:.875rem}.category-item-info{display:flex;align-items:center;gap:8px}.category-item-info .cat-name{font-weight:500}.category-item-info .cat-points{font-size:.78rem;color:#6b7280;background:#f3f4f6;padding:1px 8px;border-radius:4px}.category-item-actions{display:flex;gap:6px}.category-item-actions button{padding:3px 10px;border-radius:4px;font-size:.78rem;cursor:pointer;border:1px solid #d1d5db;background:#fff;transition:all .15s}.category-item-actions button.btn--danger{background:#dc2626;color:#fff;border-color:#dc2626}.category-item-actions button.btn--danger:hover{background:#b91c1c}.category-empty{color:#9ca3af;font-size:.85rem;padding:16px 0;text-align:center}.category-form{display:flex;flex-direction:column;gap:14px}.category-form label{display:block;font-size:.825rem;font-weight:600;color:#374151;margin-bottom:4px}.category-form select,.category-form input{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.875rem;box-sizing:border-box}.point-loading{text-align:center;padding:40px 0;color:#9ca3af}@media(max-width:768px){.point-register-layout,.category-sections{grid-template-columns:1fr}.point-summary{flex-direction:column}.point-filters{flex-direction:column;align-items:stretch}.point-filter-field .search-input{width:100%}}
