@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:#1f1f1f;background-color:#f6f1e8;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--navy: #f6f1e8;--ocean: #efe6d9;--sunset: #e39b2f;--mist: #e2d6c7;--glass: rgba(0, 0, 0, .04);--ink: #1f1f1f;--muted: #5e5a54;--card-bg: #fff9f1;--accent: #1b7f6b;--border: #e2d6c7;--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}body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#fff7e5,#f0e8dd 55%,#efe1d0)}.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:16px;min-height:100vh}.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:16px;position:relative;z-index:1;padding:8px 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:#1f1f1f;font-weight:500;font-size:.95rem}.user-name{font-size:1.05rem}.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:#5e5a54;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(244,178,77,.35),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:4px}.legacy-shell{background:#faf8f5;color:#1f2937;border:none;border-radius:8px;padding:12px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-shadow:none;flex:1;min-height:0;overflow:visible;width:100%;margin:0}.legacy-header{display:flex;align-items:center;gap:12px;font-size:1rem;font-weight:600;color:#111827}.legacy-action-bar{display:flex;gap:8px;align-items:center;padding:10px 0 4px;margin-top:8px;margin-left:0}.legacy-header-text{display:flex;align-items:baseline;gap:12px}.legacy-header span{font-weight:400;font-size:.875rem;color:#374151}.legacy-header-button{margin-left:auto;border:none;background:#3b82f6;color:#fff;padding:8px 20px;font-size:.875rem;font-weight:500;cursor:pointer;border-radius:8px;box-shadow:0 1px 2px #0000000d;transition:all .15s ease}.legacy-header-button:hover{background:#2563eb;box-shadow:0 4px 6px -1px #0000001a;transform:translateY(-1px)}.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:.85rem;line-height:34px;border-radius:6px;cursor:pointer;transition:all .15s;font-weight:500;height:36px;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:#fff;color:#dc2626;border:1px solid #fca5a5}.legacy-header-buttons .btn-delete:hover{background:#fee2e2}.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:.85rem;font-weight:500}.legacy-header-buttons .header-msg.success{color:#059669}.legacy-header-buttons .header-msg.error{color:#dc2626}.legacy-top{display:flex;gap:8px;align-items:start;overflow:visible}.legacy-left,.legacy-right{display:grid;gap:8px}.legacy-left{flex:0 0 auto;width:210px;gap:4px;align-content:start}.legacy-left .legacy-panel{padding:6px;gap:4px}.legacy-left .legacy-panel-title{font-size:.75rem;padding:2px 4px;text-align:center;background:#f3f4f6;border-radius:4px;border-bottom:none;margin-bottom:0}.legacy-left .legacy-search-titlebar{padding:8px;gap:6px;flex-wrap:wrap;background:#f8f9fa;border-radius:6px;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{flex:8 1 0;align-self:start}.legacy-right{flex:10 1 0;min-height:0;overflow:visible;align-self:start}.legacy-filter{display:flex;align-items:center;gap:8px;padding:2px 12px}.legacy-panel{background:#fff;border:1px solid #e5e7eb;border-radius:10px;display:grid;gap:8px;padding:12px;box-shadow:0 1px 2px #0000000a}.legacy-panel-title{background:transparent;border:none;border-bottom:1px solid #e5e7eb;padding:0 4px 10px;font-size:.875rem;font-weight:600;line-height:1.4;color:#374151;height:auto;display:flex;align-items:center;justify-content:center;letter-spacing:.01em}.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:#f3f4f6;padding:8px 12px;font-size:.8rem;font-weight:500;cursor:pointer;white-space:nowrap;border-radius:6px;transition:all .15s ease;color:#374151}.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{padding:8px 12px;font-size:.875rem;line-height:1.4}.legacy-panel-body{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;min-height:80px}.legacy-panel-body.small{min-height:50px}.legacy-list .legacy-panel-body{min-height:150px;flex:1}.legacy-siblings .legacy-panel-body{min-height:30px}.legacy-left .legacy-siblings .legacy-list-items{max-height:64px;overflow-y:auto}.legacy-left .legacy-recent .legacy-list-items{max-height:155px;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(-1px)}.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 #d1d5db;background:#fff;height:40px;padding:8px 14px;font-size:.875rem;border-radius:8px;transition:all .15s ease;color:#1f2937}.legacy-search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.legacy-search-input::placeholder{color:#374151}.legacy-search-results{display:grid;gap:4px;max-height:180px;overflow:auto;grid-auto-rows:min-content;padding:4px}.legacy-list-items{display:grid;gap:6px;padding:8px;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 #e5e7eb;background:#fff;padding:10px 14px;width:100%;text-align:left;cursor:pointer;border-radius:8px;transition:all .15s ease;margin-bottom:0;font:inherit;font-size:.875rem;color:#374151}.legacy-list-row:hover{background:#f3f4f6;border-color:#d1d5db}.legacy-list-row.active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f633}.legacy-class-panel .legacy-list-items{padding:4px}.legacy-class-panel{overflow:auto;min-height:0;flex:0 0 auto;max-height:120px}.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:#f3f4f6}.legacy-class-panel .legacy-list-row.active{background:#3b82f6;color:#fff;border:none}.legacy-level-group{margin-bottom:8px}.legacy-level-header{font-size:.75rem;font-weight:600;color:#374151;background:#f3f4f6;padding:4px 10px;border-radius:4px;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:#374151;background:#e5e7eb;padding:8px 12px;border:none;border-radius:4px;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:#374151;background:#fff;padding:2px 6px;border-radius:10px}.legacy-class-panel.expanded{flex:1;max-height:none;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:.875rem;color:#374151;text-align:center;padding:20px 12px}.legacy-radio{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;color:#374151}.legacy-form{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:16px;display:grid;gap:12px;align-content:start}.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:#fff;color:#dc2626;border:1px solid #fca5a5}.legacy-form-buttons-row .btn-delete:hover{background:#fee2e2}.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;max-height:400px;overflow:auto;font-size:.875rem}.legacy-search-modal-row{display:grid;grid-template-columns:1.1fr 1fr .6fr 1.2fr 1.2fr;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-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:#2f6fb2}.att-결석{color:#c64242}.att-지각{color:#d39b2a}.att-조퇴{color:#2d8b57}.att-보강{color:#7c3aed}.att-status{padding:2px 8px;border-radius:4px;font-weight:500}.att-status.att-출석{background:#dbeafe;color:#2f6fb2}.att-status.att-결석{background:#fee2e2;color:#c64242}.att-status.att-지각{background:#fef3c7;color:#d39b2a}.att-status.att-조퇴{background:#d1fae5;color:#2d8b57}.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:#dbeafe;color:#1e40af}.att-chip-결석{background:#fee2e2;color:#991b1b}.att-chip-지각{background:#fef3c7;color:#854d0e}.att-chip-조퇴{background:#d1fae5;color:#166534}.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:#f8fafc;padding:6px 2px;font-weight:600;color:#374151}.att-col-course{width:260px;min-width:260px;text-align:left!important;padding:8px!important;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-col-day{width:28px;min-width:28px;padding:4px 2px}.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:#1e40af}.att-stat-결석{color:#991b1b}.att-stat-지각{color:#854d0e}.att-stat-조퇴{color:#166534}.att-stat-보강{color:#5b21b6}.att-cell{cursor:pointer;transition:all .1s;height:28px}.att-cell:hover{background:#f0f9ff}.att-cell-selected{outline:2px solid #3b82f6;outline-offset:-2px;background:#eff6ff!important}.att-cell-출석{background:#dbeafe}.att-cell-결석{background:#fee2e2}.att-cell-지각{background:#fef3c7}.att-cell-조퇴{background:#d1fae5}.att-cell-보강{background:#ede9fe}.att-cell-text{font-weight:600;font-size:.7rem}.att-cell-출석 .att-cell-text{color:#1e40af}.att-cell-결석 .att-cell-text{color:#991b1b}.att-cell-지각 .att-cell-text{color:#854d0e}.att-cell-조퇴 .att-cell-text{color:#166534}.att-cell-보강 .att-cell-text{color:#5b21b6}.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-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:#dbeafe;color:#1e40af}.att-radio-결석{background:#fee2e2;color:#991b1b}.att-radio-지각{background:#fef3c7;color:#854d0e}.att-radio-조퇴{background:#d1fae5;color:#166534}.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:#ef4444;color:#fff}.att-btn-delete:hover:not(:disabled){background:#dc2626}.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:#fff9f1;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 #d4c4b3;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:#3e3a34}.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 #d4c4b3;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 #eadccf}.legacy-makeup-history-info{display:grid;gap:4px;font-size:.75rem;color:#3e3a34}.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-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-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: #f6f1e8;--learning-ink: #1f1f1f;--learning-muted: #5e5a54;--learning-card: #fff9f1;--learning-accent: #1b7f6b;--learning-accent-2: #e39b2f;--learning-border: #e2d6c7;background:radial-gradient(circle at top,#fff7e5,#f0e8dd 55%,#efe1d0);color:var(--learning-ink);border-radius:24px;padding:20px;width:min(1900px,100%);margin:0 auto;font-family:SUIT,Pretendard,Noto Sans KR,sans-serif}.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;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}.learning-header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.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:2rem;margin:6px 0 8px}.learning-eyebrow{text-transform:uppercase;letter-spacing:.28em;font-size:.75rem;color:var(--learning-muted);margin:0}.learning-subtitle{margin:0;color:var(--learning-muted);font-size:1rem}.learning-grade-toggle{background:#fff;border:1px solid var(--learning-border);border-radius:999px;padding:6px;display:inline-flex;gap:8px;box-shadow:inset 0 0 0 1px #e39b2f14}.learning-grade-button{border:none;border-radius:999px;padding:10px 22px;background:transparent;color:var(--learning-muted);font-weight:600;cursor:pointer;font-size:.95rem}.learning-grade-button.active{background:linear-gradient(135deg,var(--learning-accent),#249b84);color:#fff;box-shadow:0 8px 16px #1b7f6b40}.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-layout{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:20px}.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:6px 10px;font-size:.85rem;color:var(--learning-ink)}.learning-segmented{display:inline-flex;gap:6px;background:#f3ede4;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:#fff7ee;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:#eaf4f1;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-course-title{font-weight:700;font-size:.95rem;color:var(--learning-ink);padding:8px 10px;border-radius:10px;background:#fff1dc;border:1px solid rgba(227,155,47,.25);display:flex;align-items:center;gap:8px;justify-content:flex-start}.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-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:#2f6fb2;border-color:#2f6fb2;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:#2d8b57;border-color:#2d8b57;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-student-row{display:grid;grid-template-columns:220px 1fr;gap:8px;padding:10px 12px;border-radius:12px;background:#fff7ee;border:1px solid rgba(227,155,47,.25);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}.learning-student-name-row{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.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}.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-name-row{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.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:#fef3c7;color:#92400e;padding:4px 8px;border-radius:4px;font-size:.75rem;font-weight:500;text-align:center;white-space:nowrap}.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:220px;max-width:400px;min-height:60px;background:#fff;font-size:.8rem;resize:vertical}.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:#fff1dc}.learning-placeholder{flex:1;display:grid;place-items:center;border-radius:14px;background:repeating-linear-gradient(-45deg,#e39b2f1a,#e39b2f1a 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:#f8fafc;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 #dc2626;background:transparent;color:#dc2626;padding:8px 12px;border-radius:8px;font-size:.85rem;cursor:pointer}.learning-type-delete-btn:hover{background:#dc26261a}.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:100%;border-collapse:collapse;font-size:.85rem}.learning-score-table th{background:#f8fafc;padding:10px 8px;text-align:center;font-weight:600;color:var(--learning-ink);border-bottom:2px solid var(--learning-border)}.learning-score-table th.student-col{text-align:left;width:180px}.learning-score-table td{padding:8px;border-bottom:1px solid var(--learning-border);text-align:center}.learning-score-table td.student-col{text-align:left;font-weight:500}.learning-score-table tr:hover{background:#f5f5f5}.learning-score-table tr.retest-row{background:#fef9c3}.learning-score-table tr.retest-row:hover{background:#fef08a}.learning-student-num{color:#888;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;text-align:center;font-size:.85rem}.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-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;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-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;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:#333}.learning-delete-item-count{font-size:.85rem;color:#666}.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-layout{grid-template-columns:1fr}.learning-list{max-height:280px}.learning-content-tabs{flex-wrap:wrap}.learning-content-tab{padding:10px 16px;font-size:.85rem}}.learning-retest-tab{padding:16px}.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-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!important}.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}.learning-retest-td-student{background:#f9fafb;text-align:left!important}.learning-retest-student-name{font-weight:500;color:#111827;font-size:.9rem}.learning-retest-td-empty{color:#d1d5db;font-size:.9rem}.learning-retest-td-status{padding:8px!important}.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}.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}.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!important}.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}.learning-score-input.small{width:50px;padding:4px 6px;font-size:.8rem;text-align:center}@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:#f8f6f3;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem;color:#333}.consultation-count{font-weight:400;color:#666;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:#faf8f5}.consultation-student-item.active{background:#efe6d9}.consultation-student-item .student-name{font-weight:500;color:#333;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:#333}.consultation-student-info .student-meta{font-size:.85rem;color:#666}.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:#faf8f5;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:#555}.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:#333}.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:#555;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:#333;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 #e39b2f;background:#fffbf5}.consultation-item-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.consultation-type{padding:3px 10px;background:#e8f4f1;color:var(--accent);border-radius:4px;font-size:.8rem;font-weight:500}.consultation-target{padding:3px 10px;background:#f0f0f0;color:#666;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:#666}.btn-edit-consultation:hover{background:#f0f0f0;border-color:#ccc;color:#333}.btn-delete-consultation{color:#6b7280}.btn-delete-consultation:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.consultation-item-content{font-size:.9rem;color:#333;line-height:1.6;white-space:pre-wrap}.consultation-item-footer{margin-top:10px;font-size:.8rem;color:#6b7280}.consultation-author{color:#666}.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:#f8f6f3;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:#555;font-weight:600}.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:#555;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:#555;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:#333;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-table{width:100%;border-collapse:collapse;font-size:.88rem}.result-sms-table thead th{background:#f5f3ef;padding:10px;text-align:center;font-weight:600;color:#333;border-bottom:2px solid var(--border);white-space:nowrap;vertical-align:top}.result-sms-th-check{width:60px}.result-sms-th-name{width:90px}.result-sms-th-school{width:100px}.result-sms-th-attendance{width:70px}.result-sms-th-message{min-width:320px}.result-sms-th-comment{min-width:220px}.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:#555;cursor:pointer;margin-top:4px}.result-sms-table tbody td{padding:8px 10px;border-bottom:1px solid #eee;vertical-align:top}.result-sms-table tbody tr:hover{background:#faf8f5}.result-sms-table tbody tr.selected{background:#f0f7ff}.result-sms-td-check{text-align:center;vertical-align:middle!important}.result-sms-td-name{font-weight:600;color:#333;white-space:nowrap;vertical-align:middle!important}.result-sms-td-school{color:#555;font-size:.82rem;white-space:nowrap;vertical-align:middle!important}.result-sms-td-attendance{text-align:center;vertical-align:middle!important}.result-sms-attendance-badge{display:inline-block;padding:3px 10px;border-radius:4px;font-size:.8rem;font-weight:600}.result-sms-msg-input{width:100%;padding:8px;border:1px solid #d4c9b8;border-radius:4px;font-size:.82rem;font-family:inherit;line-height:1.45;resize:vertical;background:#fffff5}.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:#888}.result-sms-msg-type{background:#e8e0d4;color:#6b5a3e;padding:0 5px;border-radius:3px;font-weight:600}.result-sms-comment-input{width:100%;padding:8px;border:1px solid #d4c9b8;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:#999;margin-top:3px}.result-sms-loading{text-align:center;padding:40px;color:#888}.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:#333}.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:#555}.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:#555;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 #e5e7eb;padding:8px 4px 12px;font-size:.875rem;font-weight:600;color:#374151}.legacy-form-grid{display:flex;flex-direction:column;gap:8px}.legacy-form-row{display:grid;gap:8px 16px;justify-content:start}.legacy-form-row-1{grid-template-columns:80px 80px 140px 140px 140px}.legacy-form-row-2{grid-template-columns:100px 50px 100px 180px 180px}.legacy-form-row-3,.legacy-form-row-4{grid-template-columns:repeat(5,1fr)}.legacy-form-grid input.legacy-input-teacher{width:120px;max-width:100%}.legacy-form-grid label{display:grid;gap:6px;font-size:.875rem;width:100%;max-width:none;color:#374151}.legacy-form-grid input{border:1px solid #d1d5db;background:#fff;height:36px;padding:8px 12px;width:100%;box-sizing:border-box;border-radius:6px;font-size:.875rem;transition:all .15s ease}.legacy-form-grid input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.legacy-input-name{height:40px}.legacy-form-grid button{border:1px solid #d1d5db;background:#fff;height:36px;font-size:.875rem;border-radius:6px;cursor:pointer;transition:all .15s ease}.legacy-form-grid button:hover{background:#f3f4f6}.legacy-wide{grid-column:1 / -1;max-width:none}.legacy-span-2{grid-column:span 2}.legacy-span-3{grid-column:span 3}.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-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:#374151;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{grid-column:span 2;display:flex;align-items:flex-end;padding-bottom:4px}.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:#666}.sibling-badge-btn .sibling-names{color:#374151;font-size:.75rem}.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!important;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;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!important;background-color:#fef2f2!important}.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:400px;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,#f8f6f3,#fff);border-radius:12px 12px 0 0}.enroll-confirm-modal-body{padding:24px;display:flex;flex-direction:column;gap:20px}.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:#555}.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}.enroll-cancel-btn{padding:10px 24px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .15s}.enroll-cancel-btn:hover{background:#f3f4f6;border-color:#9ca3af}.enroll-confirm-btn{padding:10px 24px;border:none;border-radius:6px;background:linear-gradient(135deg,#7c5d3e,#5c4a3a);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .15s}.enroll-confirm-btn:hover{background:linear-gradient(135deg,#6b4e35,#4a3a2e);transform:translateY(-1px);box-shadow:0 2px 8px #7c5d3e4d}.legacy-memo-short{display:grid;gap:4px}.legacy-memo-short-label{font-size:.875rem;color:#374151}.legacy-memo-short-row{display:grid;grid-template-columns:32px 1fr;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-spacer{min-height:1px}.legacy-memo{display:grid;grid-template-columns:140px 1fr;gap:6px;min-width:0}.legacy-photo-stack{display:grid;gap:6px}.legacy-photo{border:1px solid #e5e7eb;background:#f9fafb;height:140px;display:flex;align-items:center;justify-content:center;font-size:.875rem;border-radius:8px;color:#374151}.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}.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:200px;resize:vertical;border-radius:8px;padding:12px;font-size:.875rem}.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.4fr) minmax(0,1.6fr) minmax(0,1.1fr);grid-template-rows:auto auto;align-items:start}.legacy-right>.legacy-class-wrapper{grid-row:1 / 3;align-self:stretch}.legacy-right>.legacy-class-students-panel{grid-row:1 / 3;align-self:stretch}.legacy-right .legacy-panel{gap:8px;padding:12px}.legacy-right-stack{display:grid;gap:8px;grid-template-rows:1fr 1fr;min-height:320px;overflow:visible;align-self:start}.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{min-height:0!important;display:flex;flex-direction:column;align-content:start;position:relative;height:100%!important;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:1;min-height:0;max-height:none;overflow: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,#f8fafc,#f1f5f9);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-select{flex:1;padding:6px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;background:#fff}.consultation-textarea{width:100%;padding:8px;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;resize:vertical;min-height:60px}.consultation-textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb33}.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:#f9fafb;border-radius:8px}.legacy-side-history .legacy-history-tabs.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-history-tabs.compact button:hover{background:#f3f4f6}.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;gap:8px}.legacy-consultation-panel-bottom .legacy-panel-title{padding:8px 12px;background:#f9fafb;border-bottom:1px solid #e5e7eb}.legacy-consultation-body-grid{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:10px 14px;align-items:center}.legacy-consultation-body-grid .legacy-empty{grid-column:1 / -1}.consultation-left-col{display:flex;flex-direction:column;gap:10px;justify-content:center}.consultation-left-col .consultation-form-row{display:flex;align-items:center;gap:8px}.consultation-left-col .consultation-label{min-width:36px}.consultation-left-col .consultation-select{min-width:100px}.consultation-courses-row{flex-wrap:wrap}.consultation-courses-list{display:flex;flex-wrap:wrap;gap:4px 8px;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;min-width:500px}.consultation-center-col .consultation-textarea{width:100%;min-height:80px;resize:vertical}.consultation-right-col{display:flex;flex-direction:column;gap:8px;justify-content:center}.consultation-right-row{display:flex;align-items:center;gap:12px}.consultation-right-row .consultation-checkbox{min-width:85px}.consultation-right-row .consultation-btn-primary,.consultation-right-row .consultation-btn-secondary{padding:8px 16px;min-width:80px}.consultation-history-modal{background:#fff;border-radius:12px;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 40px #0003}.consultation-history-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:1rem}.consultation-history-body{flex:1;overflow-y:auto;padding:16px;max-height:450px}.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:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:12px}.consultation-history-item.important{border-color:#fbbf24;background:#fffbeb}.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:2px 8px;border-radius:12px;font-size:.7rem;font-weight:500}.consultation-badge.target{background:#dbeafe;color:#1e40af}.consultation-badge.type{background:#e5e7eb;color:#374151}.consultation-badge.important{background:#fef3c7;color:#92400e}.consultation-badge.teacher{background:#dcfce7;color:#166534}.consultation-history-date{font-size:.75rem;color:#6b7280}.consultation-history-content{font-size:.875rem;color:#1f2937;line-height:1.5;white-space:pre-wrap;margin-bottom:8px}.consultation-history-meta{display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:#9ca3af}.consultation-history-course{color:#6b7280;font-weight:500;text-align:right}.consultation-history-meta-right{display:flex;align-items:center;gap:12px}.consultation-delete-btn{padding:2px 8px;font-size:.7rem;color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-radius:4px;cursor:pointer;transition:all .15s}.consultation-delete-btn:hover{background:#fecaca;border-color:#f87171}.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}.legacy-course-list .legacy-list-row{padding:10px 12px;font-size:.875rem}.legacy-assignment-panel{overflow:visible!important}.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;gap:12px;align-items:start;margin-top:12px;padding-bottom:8px;width:100%}.legacy-sms-panel-bottom{display:flex;flex-direction:column;flex:1}.legacy-sms-panel-bottom .legacy-panel-title{padding:8px 12px;background:#f9fafb;border-bottom:1px solid #e5e7eb}.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-horizontal{padding:10px 14px;display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}.sms-panel-body-horizontal .legacy-empty{color:#9ca3af;font-size:.85rem}.sms-panel-receiver-select{display:flex;flex-direction:column;gap:4px}.sms-panel-receiver-select label{display:flex;align-items:center;gap:4px;padding:8px 12px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;color:#374151;cursor:pointer;transition:all .15s;white-space:nowrap}.sms-panel-receiver-select label:hover{background:#e5e7eb}.sms-panel-receiver-select label.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.sms-panel-receiver-select label input{display:none}.sms-panel-textarea-wrap{display:flex;flex-direction:column;gap:4px;flex:2;min-width:400px}.sms-panel-textarea{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.85rem;font-family:inherit;resize:none;min-height:50px}.sms-panel-textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.sms-panel-textarea-info{display:flex;align-items:center;gap:8px}.sms-panel-char-count{font-size:.75rem;color:#6b7280}.sms-panel-msg-type{padding:3px 8px;border-radius:4px;font-size:.7rem;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-send-btn{padding:12px 24px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s;white-space:nowrap;height:fit-content}.sms-panel-send-btn:hover:not(:disabled){background:#2563eb}.sms-panel-send-btn:disabled{background:#9ca3af;cursor:not-allowed}.sms-panel-result{padding:6px 10px;border-radius:4px;font-size:.8rem;white-space:nowrap}.sms-panel-result.success{background:#dcfce7;color:#166534}.sms-panel-result.error{background:#fee2e2;color:#991b1b}.sms-panel-buttons{display:flex;flex-direction:column;gap:6px}.sms-panel-reserve-btn{padding:8px 16px;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;cursor:pointer;transition:all .15s;white-space:nowrap}.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-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 #d1d5db;background:#fff;font-size:.875rem;padding:10px 14px;border-radius:8px;transition:all .15s ease}.legacy-history-tabs button:hover{background:#f3f4f6}.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:10px 14px;border:1px solid #e5e7eb;background:#fff;border-radius:8px;align-items:center;transition:all .15s ease}.legacy-history-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legacy-history-row:hover{background:#f9fafb}.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:#f3f4f6;font-weight:600;color:#374151}.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 #d1d5db;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:#f3f4f6}.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:#1f1f1f;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: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}.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:var(--ocean);border-color:var(--ocean);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-preview-table-wrapper{overflow:auto;max-height:350px;border:1px solid #e5e7eb;border-radius:8px}.bulk-preview-table{width:100%;border-collapse:collapse;font-size:.8rem}.bulk-preview-table th,.bulk-preview-table td{padding:8px 10px;text-align:left;border-bottom:1px solid #e5e7eb;white-space:nowrap}.bulk-preview-table th{background:#f3f4f6;font-weight:600;color:#374151;position:sticky;top:0;z-index:1}.bulk-preview-table td{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}.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-page-desc{margin:0;color:#4a5568;font-size:1rem}.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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;overflow:hidden}.staff-table{width:100%;border-collapse:collapse;font-size:.9rem}.staff-table thead{background:#f8fafc;border-bottom:1px solid #e2e8f0}.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 #f1f5f9;cursor:pointer;transition:background .15s ease}.staff-table tbody tr:last-child{border-bottom:none}.staff-table tbody tr:hover{background:#f8fafc}.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:#f1f5f9;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 #e2e8f0;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:#e2e8f0;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 #e2e8f0;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:#e2e8f0;color:#475569}.staff-card-bottom{display:flex;flex-direction:column;gap:10px;padding-top:16px;border-top:1px solid #f1f5f9}.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 #e2e8f0;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 #e2e8f0}.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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;border-radius:12px;font-size:.9rem;color:#9ca3af;background:#f9fafb}.form-auto-value{padding:14px 16px;border:2px solid #e2e8f0;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 #e2e8f0;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 #e2e8f0;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:#f8fafc;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:80px;border-radius:10px;object-fit:cover;border:2px solid #e2e8f0}.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}@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:#e2d6c7;color:#5e5a54}.topbar .logout:hover{background:#f3ede4;border-color:#5e5a54}@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;flex-direction:column;padding:0;gap:6px;height:540px;max-height:540px;overflow:hidden}.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:auto}.legacy-class-wrapper .legacy-panel-body.legacy-class-panel.expanded{flex:1}.legacy-class-date{padding:10px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 8px 8px;flex-shrink:0;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:#fff9f1;border-radius:8px 0 0 8px;min-width:180px;padding:8px 0;border:1px solid #e2d6c7;border-right:none}.sidebar-logo{display:flex;align-items:center;gap:12px;padding:20px 18px;border-bottom:1px solid #d4c4b0;background:#5c4a3d;border-radius:7px 0 0;margin:-8px 0 8px}.sidebar-logo-img{width:48px;height:48px;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:12px 18px;background:transparent;border:none;color:#5e5a54;font-size:.95rem;text-align:left;cursor:pointer;transition:all .15s ease;font-family:inherit}.sidebar-menu-item:hover,.sidebar-menu-item.active{background:#f3ede4;color:#1f1f1f}.sidebar-menu-item.no-sub{color:#5e5a54}.sidebar-menu-item.no-sub:hover,.sidebar-menu-item.no-sub.active{background:#f3ede4;color:#1f1f1f}.sidebar-menu-icon{font-size:1.2rem;margin-right:10px;width:24px;text-align:center;flex-shrink:0}.sidebar-menu-label{flex:1}.sidebar-menu-arrow{font-size:.75rem;color:#5e5a54;margin-left:8px}.sidebar-menu-item:hover .sidebar-menu-arrow,.sidebar-menu-item.active .sidebar-menu-arrow{color:#1f1f1f}.sidebar-submenu{background:#fff9f1;border-radius:0 8px 8px 0;min-width:200px;min-height:400px;padding:8px;border:1px solid #e2d6c7;border-left:none}.sidebar-submenu-content{display:flex;flex-direction:column;gap:2px}.sidebar-submenu-item{display:block;padding:10px 14px;background:transparent;border:none;color:#5e5a54;font-size:.92rem;text-align:left;cursor:pointer;border-radius:6px;transition:all .15s ease;font-family:inherit}.sidebar-submenu-item:hover{background:#f3ede4;color:#1f1f1f}.sidebar-submenu-item:before{content:"- ";color:#5e5a54}.sidebar-submenu-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:200px;color:#5e5a54;font-size:.9rem}.sidebar-overlay{position:fixed;inset:0;z-index:5}.dashboard-main-content{flex:1;padding:16px 24px;display:flex;flex-wrap:wrap;gap:16px;min-width:0;align-items:flex-start}.dashboard-card{background:#fff;border-radius:8px;border:1px solid #e8e4dd;overflow:hidden}.dashboard-left-column{width:calc(50% - 8px);min-width:400px;display:flex;flex-direction:column;gap:16px}.dashboard-left-column .dashboard-card{width:100%}.dashboard-right-column{width:calc(50% - 8px);min-width:400px;display:flex;flex-direction:column;gap:16px}.dashboard-right-column .dashboard-card{width:100%}.dashboard-card.withdrawn-students-card .dashboard-card-header{background:#7c3a2e}.badge-red{background:#dc2626!important}.badge-orange{background:#f59e0b!important}.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!important}.dashboard-card.absence-card .dashboard-card-header{background:#92400e}.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:12px 16px;background:#5c4a3d;color:#fff}.dashboard-card-actions{display:flex;align-items:center;gap:8px}.dashboard-date-input{padding:4px 8px;border:1px solid rgba(255,255,255,.3);border-radius:4px;background:#ffffff1a;color:#fff;font-size:.85rem;cursor:pointer}.dashboard-date-input::-webkit-calendar-picker-indicator{filter:invert(1);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:#dc2626;color:#fff;font-size:.75rem;font-weight:700;border-radius:10px}.dashboard-card-more{background:transparent;border:none;color:#fff;font-size:1.2rem;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background .15s}.dashboard-card-more:hover{background:#ffffff26}.dashboard-card-body{padding:0}.dashboard-loading,.dashboard-empty{padding:32px 16px;text-align:center;color:#6b7280;font-size:.9rem}.dashboard-table{width:100%;border-collapse:collapse;font-size:.85rem}.dashboard-table thead{background:#f8f6f3}.dashboard-table th{padding:10px 12px;font-weight:600;color:#555;text-align:left;border-bottom:1px solid #e8e4dd}.dashboard-table td{padding:10px 12px;color:#333;border-bottom:1px solid #f0ebe4;vertical-align:middle}.dashboard-table tbody tr:hover{background:#faf7f2}.dashboard-table tbody tr:last-child td{border-bottom:none}.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!important}.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}.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-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-table .col-student{font-weight:600;color:#1f1f1f;white-space:nowrap}.consultation-table .col-type{color:#666;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}.consultation-requests-page,.consultation-history-page{padding:20px}.consultation-requests-page .page-header,.consultation-history-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{font-size:1.3rem;font-weight:700;color:#1f1f1f;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:#9ca3af;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}.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:#1f1f1f;white-space:nowrap}.new-students-table .col-grade{white-space:nowrap}.new-students-table .col-course{color:#666;white-space:nowrap;font-size:.8rem}@media(max-width:900px){.dashboard-main-content{padding:12px 16px}.dashboard-table{font-size:.8rem}.dashboard-table th,.dashboard-table td{padding:8px 10px}.consultation-table .col-content{max-width:150px}}@media(max-width:768px){.sidebar-layout{flex-direction:column}.dashboard-main-content{width:100%;padding:12px}.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:#faf6f0;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 #e2e8f0;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:#faf6f0;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:#e2e8f0}.attendance-table-wrapper{overflow-x:auto}.attendance-table{width:100%;border-collapse:collapse;font-size:.85rem}.attendance-table thead{background:#f5f0e8;position:sticky;top:0}.attendance-table th{padding:10px 8px;text-align:center;font-weight:600;color:#4a5568;border-bottom:1px solid #e2e8f0;white-space:nowrap}.attendance-table td{padding:8px;text-align:center;border-bottom:1px solid #f0f0f0;white-space:nowrap;color:#1a202c}.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-stat{min-width:45px;font-weight:500}.attendance-table .status-present{background:#dbeafe;color:#2f6fb2}.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-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:#dbeafe;color:#2f6fb2}.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 .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:#faf6f0;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:#faf6f0;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 #e2e8f0}.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 #e2e8f0;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 #e2e8f0;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:110px;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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;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 #e2e8f0;border-radius:8px;color:#a0aec0;font-size:.85rem}.detail-auto-value{padding:8px 10px;background:#f3f4f6;border:2px solid #e2e8f0;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 #e2e8f0;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 #e2e8f0;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:#e2e8f0;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 #e2e8f0;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:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.org-subsection-header{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #e2e8f0}.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:64px;font-size:1.5rem}}.class-management-page{width:100%;max-width:1800px;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:380px 1fr;gap:24px;background:#faf8f5;border-radius:12px;padding:24px;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}.add-btn{background:#3b82f6;color:#fff;border:none;padding:6px 14px;font-size:.8rem;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s}.add-btn:hover{background:#2563eb}.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:.9rem;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}.edit-btn,.copy-btn,.delete-btn{padding:4px 10px;font-size:.75rem;border-radius:4px;cursor:pointer;transition:all .15s}.edit-btn{background:#e5e7eb;color:#374151;border:none}.edit-btn:hover{background:#d1d5db}.copy-btn{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.copy-btn:hover{background:#dbeafe}.delete-btn{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.delete-btn:hover{background:#fee2e2}.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{width:100%;border-collapse:collapse;font-size:.875rem;background:#fff}.class-table th,.class-table td{padding:12px 14px;text-align:center;border-bottom:1px solid #e5e7eb;color:#1f2937;vertical-align:middle;white-space:nowrap}.class-table th{background:#f3f4f6;font-weight:600;color:#374151;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.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 tbody tr:hover{background:#f9fafb}.class-table td.actions{vertical-align:middle;white-space:nowrap}.class-table td.actions>*{display:inline-block;margin-right:8px}.class-table td.actions>*:last-child{margin-right:0}.class-table td.fee-cell{font-weight:600;color:#1976d2;text-align:right}.class-table td.total-fee-cell{text-align:left;padding:8px 12px}.class-table td.total-sum-cell{text-align:right;font-weight:600;white-space:nowrap}.modal-content{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:480px;box-shadow:0 20px 25px -5px #0000001a}.modal-content.category-modal{max-width:750px;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;transition:border-color .15s;box-sizing:border-box}.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}.cancel-btn{padding:10px 18px;background:#f3f4f6;color:#374151;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s}.cancel-btn:hover{background:#e5e7eb}.save-btn{padding:10px 18px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s}.save-btn:hover{background:#2563eb}@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!important;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:90vw;max-width:1000px;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:#ef4444;color:#fff}.history-delete-btn:hover:not(:disabled){background:#dc2626}.history-delete-btn:disabled{background:#6b7280;cursor:not-allowed;opacity:.6}.history-modal-header-row{display:grid;grid-template-columns:40px 1fr 100px 100px 80px 80px 60px;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}.history-modal-header-row.payments-full{grid-template-columns:40px 1fr 90px 90px 80px 80px 80px 70px 80px 50px}.history-modal-header-row.arrears{grid-template-columns:40px 1fr 100px 100px 100px 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 100px 80px 80px 60px;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 1fr 100px 100px 80px 80px 60px}.history-modal-table:has(.history-modal-header-row.payments) .history-modal-row{grid-template-columns:40px 1fr 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 1fr 90px 90px 80px 80px 80px 70px 80px 50px}.history-modal-table:has(.history-modal-header-row.arrears) .history-modal-row{grid-template-columns:40px 1fr 100px 100px 100px 60px}.history-modal-table:has(.history-modal-header-row.tuitions) .history-modal-row{grid-template-columns:180px 1fr 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-sub-info{display:flex;gap:6px;align-items:center;font-size:11px}.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:#999;text-decoration:line-through}.history-col-date{text-align:center;white-space:nowrap}.history-col-date.withdrawn{color:#f87171}.history-col-date.transferred{color:#22c55e}.history-col-teacher,.history-col-handler,.history-col-method{text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-col-amount{text-align:right;font-family:monospace}.history-col-amount.arrears{color:#f87171;font-weight:600}.history-col-processor,.history-col-approval{text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem}.history-col-action{text-align:center}.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-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}.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}.app-login-page{min-height:100vh;background:linear-gradient(180deg,#f5f7ff,#e8ecf5);display:flex;flex-direction:column}.app-login-header{background:linear-gradient(135deg,#4a6cf7,#6366f1);color:#fff;text-align:center;padding:16px;font-size:1.1rem;font-weight:600}.app-login-content{flex:1;display:flex;flex-direction:column;align-items:center;padding:40px 24px}.app-login-logo{display:flex;flex-direction:column;align-items:center;margin-bottom:32px}.app-login-logo img{width:80px;height:80px;border-radius:16px;object-fit:cover;margin-bottom:16px;box-shadow:0 4px 12px #00000026}.app-login-logo-text{display:flex;flex-direction:column;align-items:center}.app-login-name{font-size:1.5rem;font-weight:700;color:#1f2937}.app-login-since{font-size:.9rem;color:#374151;margin-top:4px}.app-login-form{width:100%;max-width:360px;background:#fff;border-radius:16px;padding:24px;box-shadow:0 4px 20px #00000014}.app-login-input-group{display:flex;align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:12px 16px;margin-bottom:12px;transition:border-color .2s,box-shadow .2s}.app-login-input-group:focus-within{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.app-login-icon{color:#374151;margin-right:12px;display:flex;align-items:center}.app-login-input-group input{flex:1;border:none;background:transparent;font-size:1rem;color:#1f2937;outline:none}.app-login-input-group input::placeholder{color:#d1d5db}.app-login-actions{display:flex;align-items:center;gap:16px;margin-top:20px}.app-login-remember{display:flex;align-items:center;gap:8px;cursor:pointer;color:#374151;font-size:.9rem}.app-login-remember input[type=checkbox]{width:18px;height:18px;accent-color:#6366f1}.app-login-btn{flex:1;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:12px;padding:14px 24px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.app-login-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.app-login-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.app-login-error{color:#dc2626;font-size:.9rem;text-align:center;margin-top:16px;padding:12px;background:#fef2f2;border-radius:8px}.app-login-notice{width:100%;max-width:360px;margin-top:24px;padding:16px;background:#eff6ff;border-radius:12px;border:1px solid #bfdbfe}.app-login-notice p{color:#1e40af;font-size:.85rem;margin:0 0 8px;line-height:1.5}.app-login-notice p:last-child{margin-bottom:0}.app-password-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.app-password-modal{background:#fff;border-radius:16px;padding:32px 24px;width:100%;max-width:360px;box-shadow:0 20px 60px #0000004d}.app-password-modal h2{margin:0 0 8px;font-size:1.4rem;color:#1e40af;text-align:center}.app-password-modal-desc{margin:0 0 24px;color:#666;font-size:.9rem;text-align:center;line-height:1.5}.app-password-input-group{margin-bottom:16px}.app-password-input-group label{display:block;margin-bottom:6px;font-size:.9rem;color:#333;font-weight:500}.app-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}.app-password-input-group input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.app-password-error{color:#dc2626;font-size:.85rem;margin:12px 0 0;text-align:center}.app-password-modal-actions{margin-top:24px}.app-password-btn{width:100%;padding:14px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.app-password-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.app-password-btn:disabled{opacity:.7;cursor:not-allowed}.app-dashboard,.app-videos-page,.app-attendance-page,.app-schedule-page,.app-syllabus-page,.app-daily-test-page,.app-retest-page,.app-grades-page,.app-consultation-page{min-height:100vh;background:#f5f7ff;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#fff;border-bottom:1px solid #e5e7eb;white-space:nowrap}.app-header-logo{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden}.app-header-logo img{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.app-header-logo span{font-size:.95rem;font-weight:600;color:#1f2937;white-space:nowrap}.app-header-user{font-size:.75rem;font-weight:500;color:#6b7280;padding-left:8px;border-left:1px solid #e5e7eb;white-space:nowrap}.app-back-btn{background:none;border:none;padding:8px;cursor:pointer;color:#374151;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .2s}.app-back-btn:hover{background:#f3f4f6}.app-header-spacer{width:40px}.app-logout-btn{background:#f3f4f6;border:none;padding:6px 12px;border-radius:8px;color:#374151;font-size:.8rem;cursor:pointer;transition:background .2s;white-space:nowrap;flex-shrink:0}.app-logout-btn:hover{background:#e5e7eb}.app-child-tabs{display:flex;gap:8px;padding:12px 20px;background:#fff;border-bottom:1px solid #e5e7eb}.app-child-tab{padding:8px 16px;border:1px solid #e5e7eb;border-radius:20px;background:#fff;color:#374151;font-size:.9rem;cursor:pointer;transition:all .2s}.app-child-tab.active{background:#6366f1;border-color:#6366f1;color:#fff}.app-student-info{display:flex;align-items:center;gap:6px;padding:12px 16px;background:#fff;border-bottom:1px solid #e5e7eb;flex-wrap:wrap}.app-student-name{font-size:1rem;font-weight:600;color:#1f2937;flex-shrink:0}.app-student-school,.app-student-grade,.app-student-course{font-size:.8rem;color:#374151;background:#f3f4f6;padding:3px 8px;border-radius:12px;white-space:nowrap;flex-shrink:0}.app-menu{padding:20px;display:flex;flex-direction:column;gap:12px}.app-menu-item{display:flex;align-items:center;gap:16px;padding:20px;background:#fff;border:1px solid #e5e7eb;border-radius:16px;cursor:pointer;transition:all .2s;text-align:left}.app-menu-item:hover{border-color:#6366f1;box-shadow:0 4px 12px #6366f11a}.app-menu-item.disabled{opacity:.5;cursor:not-allowed}.app-menu-item.disabled:hover{border-color:#e5e7eb;box-shadow:none}.app-menu-icon{width:48px;height:48px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff}.app-menu-text{flex:1;display:flex;flex-direction:column;gap:4px}.app-menu-label{font-size:1rem;font-weight:600;color:#1f2937}.app-menu-desc{font-size:.85rem;color:#374151}.app-menu-arrow{color:#374151;font-size:1.2rem}.app-loading,.app-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:#374151;text-align:center}.app-empty svg{color:#d1d5db;margin-bottom:16px}.app-empty p{margin:0;font-size:1rem}.app-videos-content{flex:1;padding:20px}.app-video-list{display:flex;flex-direction:column;gap:16px}.app-video-card{display:flex;gap:16px;padding:0;background:#fff;border:1px solid #e5e7eb;border-radius:16px;overflow:hidden;cursor:pointer;transition:all .2s;text-align:left}.app-video-card:hover{border-color:#6366f1;box-shadow:0 4px 12px #6366f11a}.app-video-thumbnail{width:140px;height:100px;flex-shrink:0;background:#1f2937;position:relative;display:flex;align-items:center;justify-content:center}.app-video-thumbnail img{width:100%;height:100%;object-fit:cover}.app-video-placeholder{color:#374151}.app-video-duration{position:absolute;bottom:8px;right:8px;background:#000c;color:#fff;font-size:.75rem;padding:2px 6px;border-radius:4px}.app-video-info{flex:1;padding:12px 16px 12px 0;display:flex;flex-direction:column;justify-content:center}.app-video-title{font-size:1rem;font-weight:600;color:#1f2937;margin:0 0 4px;line-height:1.3}.app-video-desc{font-size:.85rem;color:#374151;margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.app-video-meta{display:flex;gap:8px}.app-video-level,.app-video-category{font-size:.75rem;padding:2px 8px;border-radius:8px;background:#f3f4f6;color:#374151}.app-video-modal{position:fixed;inset:0;background:#000000e6;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.app-video-modal-content{width:100%;max-width:800px;background:#1f2937;border-radius:16px;overflow:hidden}.app-video-close{position:absolute;top:16px;right:16px;background:#ffffff1a;border:none;padding:8px;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.app-video-close:hover{background:#fff3}.app-video-player{width:100%;aspect-ratio:16 / 9;background:#000;position:relative}.app-video-player iframe{width:100%;height:100%}.app-video-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.35;color:#fff;font-size:1.2rem;font-weight:600;text-shadow:1px 1px 3px rgba(0,0,0,.8)}.app-video-watermark-warning{font-size:.9rem;color:#ef4444;font-weight:700}.app-video-warning-overlay{position:fixed;inset:0;background:#000000d9;z-index:1100;display:flex;align-items:center;justify-content:center;padding:20px}.app-video-warning-modal{background:#fff;border-radius:16px;padding:32px 24px;max-width:400px;width:100%;text-align:center}.app-video-warning-icon{margin-bottom:16px}.app-video-warning-title{font-size:1.3rem;font-weight:700;color:#1f2937;margin:0 0 20px}.app-video-warning-content{margin-bottom:24px}.app-video-warning-content p{color:#374151;font-size:.95rem;line-height:1.6;margin:0 0 16px}.app-video-warning-highlight{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:16px;color:#991b1b}.app-video-warning-highlight strong{color:#dc2626}.app-video-warning-notice{font-size:.85rem!important;color:#6b7280!important;margin-top:16px!important}.app-video-warning-buttons{display:flex;gap:12px}.app-video-warning-cancel{flex:1;padding:14px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#374151;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.app-video-warning-cancel:hover{background:#f3f4f6}.app-video-warning-agree{flex:2;padding:14px;border:none;border-radius:10px;background:#2563eb;color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.app-video-warning-agree:hover{background:#1d4ed8}.app-video-error{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#374151}.app-video-modal-info{padding:16px 20px}.app-video-modal-info h3{color:#fff;font-size:1.1rem;margin:0 0 8px}.app-video-modal-info p{color:#374151;font-size:.9rem;margin:0}.app-attendance-content{flex:1;padding:20px}.app-month-selector{display:flex;align-items:center;justify-content:center;gap:24px;padding:16px;background:#fff;border-radius:12px;margin-bottom:16px}.app-month-selector button{width:36px;height:36px;border:1px solid #e5e7eb;border-radius:50%;background:#fff;color:#374151;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.app-month-selector button:hover{background:#f3f4f6}.app-month-selector span{font-size:1.1rem;font-weight:600;color:#1f2937;min-width:120px;text-align:center}.app-attendance-stats{display:flex;flex-direction:column;gap:12px;margin:16px}.app-stats-row{display:flex;gap:12px}.app-stat-item{flex:1;background:#fff;border-radius:16px;padding:20px 16px;text-align:center}.app-stat-item.stat-success{background:#f0fdf4}.app-stat-item.stat-warning{background:#fffbeb}.app-stat-item.stat-error{background:#fef2f2}.app-stat-item.stat-purple{background:#f5f3ff}.app-stat-value{font-size:2rem;font-weight:700;display:block}.app-stat-label{font-size:.875rem;color:#6b7280;margin-top:6px;display:block}.app-attendance-list{display:flex;flex-direction:column;gap:8px}.app-attendance-item{display:flex;align-items:center;padding:12px 14px;background:#fff;border-radius:12px;gap:8px}.app-attendance-date{font-size:.82rem;color:#1f2937;white-space:nowrap;flex-shrink:0}.app-attendance-right{display:flex;align-items:center;gap:8px;flex:1;min-width:0;justify-content:flex-end}.app-attendance-course{font-size:.78rem;color:#374151;line-height:1.3}.app-attendance-status{font-size:.82rem;font-weight:600;padding:4px 12px;border-radius:8px;white-space:nowrap;flex-shrink:0}.app-schedule-content{flex:1;padding:20px}.app-schedule-list{display:flex;flex-direction:column;gap:16px}.app-schedule-item{background:#fff;border-radius:16px;padding:20px;border:1px solid #e5e7eb}.app-schedule-main{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #f3f4f6}.app-schedule-name{font-size:1.1rem;font-weight:600;color:#1f2937;margin-bottom:4px}.app-schedule-category{font-size:.85rem;color:#374151}.app-schedule-details{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.app-schedule-detail{display:flex;flex-direction:column;gap:4px}.app-schedule-detail-label{font-size:.75rem;color:#374151}.app-schedule-detail-value{font-size:.95rem;color:#1f2937;font-weight:500}.app-schedule-periods{margin-top:16px;padding-top:16px;border-top:1px solid #f3f4f6}.app-schedule-periods-title{font-size:.8rem;font-weight:600;color:#6b7280;margin-bottom:8px}.app-schedule-period-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;margin-bottom:4px;font-size:.88rem;color:#4b5563;background:#f9fafb}.app-schedule-period-row.current{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;font-weight:600}.app-schedule-period-name{min-width:50px;display:flex;align-items:center;gap:6px}.app-schedule-period-badge{font-size:.7rem;background:#3b82f6;color:#fff;padding:1px 6px;border-radius:10px;font-weight:600}.app-schedule-period-badge.upcoming{background:#f59e0b}.app-schedule-period-date{flex:1;font-size:.82rem;color:#6b7280}.app-schedule-period-row.current .app-schedule-period-date{color:#3b82f6}.app-schedule-period-time{font-weight:600;white-space:nowrap}.app-schedule-dates{margin-top:16px;padding-top:16px;border-top:1px solid #f3f4f6;font-size:.85rem;color:#374151}@media(max-width:480px){.app-video-thumbnail{width:120px;height:80px}.app-attendance-stats{grid-template-columns:repeat(2,1fr)}.app-video-modal{padding:0}.app-video-modal-content{border-radius:0;max-width:100%;height:100%;display:flex;flex-direction:column}.app-video-player{flex:1}}.tuition-management-page{background-color:#fef7ed;min-height:100vh;padding:20px}.tuition-management-header{margin-bottom:20px}.tuition-management-header .tab-btn{padding:10px 20px;border:none;background:#f5f0e8;cursor:pointer;font-size:14px;font-weight:500;color:#78716c;border-radius:6px 6px 0 0;margin-right:4px}.tuition-management-header .tab-btn.active{background:#fff;color:#292524;border-bottom:2px solid #d97706}.tuition-management-header .tab-btn:hover:not(.active){background:#fef3c7}.tuition-management-header .tab-btn.repair-btn{margin-left:auto;background:#fee2e2;color:#991b1b;font-size:12px;padding:8px 12px}.tuition-management-header .tab-btn.repair-btn:hover{background:#fecaca}.tuition-content{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.tuition-issue-section{padding:20px}.tuition-issue-section .tuition-filters{display:flex;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}.tuition-issue-section .filter-group{display:flex;align-items:center;gap:8px}.tuition-issue-section .filter-group label{font-weight:500;color:#57534e}.tuition-issue-section .filter-group select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;min-width:200px}.issue-btn{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.issue-btn.primary{background:#2563eb;color:#fff}.issue-btn.primary:hover:not(:disabled){background:#1d4ed8}.issue-btn.primary:disabled{background:#9ca3af;cursor:not-allowed}.issue-table-container{overflow-x:auto;border:1px solid #e5e7eb;border-radius:8px}.issue-table{width:100%;border-collapse:collapse;font-size:14px}.issue-table th,.issue-table td{padding:12px;text-align:center;border-bottom:1px solid #e5e7eb}.issue-table th{background:#f9fafb;font-weight:600;color:#374151}.issue-table .checkbox-col{width:40px}.issue-table .class-col{min-width:300px;text-align:left;white-space:nowrap}.issue-table .class-cell{display:flex;align-items:center;gap:8px}.issue-table .class-name{font-weight:600;color:#1e3a5f}.issue-table .class-info{font-size:12px;color:#374151}.issue-table .period-col{min-width:140px}.issue-table .period-header{display:flex;align-items:center;justify-content:center;gap:6px}.issue-table .period-dates{font-size:11px;color:#374151;margin-top:4px}.issue-table .total-col{width:120px;font-weight:600}.issue-table .total-amount{color:#059669}.fee-cell{display:flex;align-items:center;justify-content:center;gap:8px}.fee-info{display:flex;flex-direction:column;align-items:flex-start}.fee-amount{font-weight:600;color:#111827}.fee-detail{font-size:11px;color:#374151}.issued-badge{display:flex;flex-direction:column;align-items:center;gap:4px}.issued-badge .issued-status{display:flex;align-items:center;gap:4px;color:#059669}.issued-badge .issued-icon{font-size:14px}.issued-badge .detail-btn{font-size:10px;padding:1px 6px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;margin-left:4px}.issued-badge .detail-btn:hover{background:#e5e7eb}.issued-badge .issued-fee{color:#374151}.issued-badge .issued-fee .fee-amount{font-weight:600;color:#059669}.issued-badge .issued-fee .fee-detail{font-size:10px;color:#374151}.period-col.issued{background:#f0fdf4}.modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.issue-modal{background:#fff;border-radius:12px;width:90%;max-width:700px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.issue-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e5e7eb}.issue-modal-header h2{font-size:18px;font-weight:600;color:#111827;margin:0}.issue-modal-header .close-btn{background:none;border:none;font-size:24px;color:#374151;cursor:pointer;padding:0;line-height:1}.issue-modal-body{padding:20px 24px;overflow-y:auto;flex:1}.issue-summary{display:flex;gap:24px;margin-bottom:20px;padding:16px;background:#f9fafb;border-radius:8px}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-item .label{font-size:12px;color:#374151}.summary-item .value{font-size:18px;font-weight:700;color:#111827}.issue-students-table{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.issue-students-table table{width:100%;border-collapse:collapse;font-size:14px}.issue-students-table th,.issue-students-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.issue-students-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}.issue-students-table tr:last-child td{border-bottom:none}.issue-students-table tr.sibling-discount{background:#fef3c7}.issue-students-table .fee{font-weight:600;text-align:right}.discount-badge{display:inline-block;padding:2px 6px;background:#fbbf24;color:#92400e;font-size:11px;font-weight:500;border-radius:4px;margin-right:4px}.mid-badge{display:inline-block;padding:2px 6px;background:#93c5fd;color:#1e40af;font-size:11px;font-weight:500;border-radius:4px}.sibling-info{display:flex;align-items:center;gap:8px;margin-top:16px;padding:12px 16px;background:#fef3c7;border-radius:8px;font-size:14px}.sibling-icon{font-size:18px}.sibling-label{font-weight:600;color:#92400e}.sibling-names{color:#78350f}.issue-modal.single-detail{max-width:700px}.issue-modal.single-detail .detail-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px;padding:16px;background:#f9fafb;border-radius:8px}.issue-modal.single-detail .summary-item.highlight{background:#dbeafe;padding:8px 12px;border-radius:6px}.issue-modal.single-detail .summary-item.highlight .value{color:#1d4ed8;font-size:20px}.detail-table-wrapper{max-height:300px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px}.detail-student-table{width:100%;border-collapse:collapse;font-size:13px}.detail-student-table th{position:sticky;top:0;background:#f3f4f6;padding:10px 12px;text-align:left;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.detail-student-table td{padding:10px 12px;border-bottom:1px solid #f3f4f6}.detail-student-table td.fee{font-weight:600;color:#059669}.detail-student-table tr:last-child td{border-bottom:none}.issue-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb;background:#f9fafb}.issue-modal-footer .cancel-btn{padding:10px 20px;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer}.issue-modal-footer .cancel-btn:hover:not(:disabled){background:#f3f4f6}.issue-modal-footer .confirm-btn{padding:10px 24px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer}.issue-modal-footer .confirm-btn:hover:not(:disabled){background:#1d4ed8}.issue-modal-footer .confirm-btn:disabled,.issue-modal-footer .cancel-btn:disabled{opacity:.6;cursor:not-allowed}.issue-modal.issue-modal-wide{max-width:900px}.issue-summary.issue-summary-large{gap:32px;padding:20px 24px;background:linear-gradient(135deg,#f0f9ff,#e0f2fe)}.issue-summary-large .summary-item .value{font-size:22px}.issue-summary-large .summary-item-highlight{padding:8px 16px;background:#2563eb;border-radius:8px}.issue-summary-large .summary-item-highlight .label{color:#bfdbfe}.issue-summary-large .summary-item-highlight .value{color:#fff}.issue-items-table{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;max-height:400px;overflow-y:auto}.issue-items-table table{width:100%;border-collapse:collapse;font-size:14px}.issue-items-table th,.issue-items-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e5e7eb;color:#374151}.issue-items-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px;position:sticky;top:0}.issue-items-table tbody tr:hover{background:#f3f4f6}.issue-items-table tbody tr:last-child td{border-bottom:none}.issue-items-table .fee{font-weight:600;text-align:right;color:#111827}.issue-items-table tfoot{background:#f0f9ff}.issue-items-table tfoot td{border-top:2px solid #2563eb;border-bottom:none}.issue-items-table tfoot .fee{color:#2563eb}.sibling-info-compact{display:flex;align-items:center;gap:12px;margin-top:16px;padding:10px 16px;background:#fef3c7;border-radius:8px;border-left:4px solid #f59e0b;font-size:14px}.sibling-info-compact .sibling-label{font-weight:600;color:#92400e;white-space:nowrap}.sibling-info-compact .sibling-names{color:#78350f;line-height:1.5}.issue-confirm-text{margin-top:20px;padding:16px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;font-size:14px;font-weight:500;color:#374151;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.issue-date-picker{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:600;color:#1f2937;background:#fff;cursor:pointer}.issue-date-picker:hover{border-color:#9ca3af}.issue-date-picker:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.empty-tuition-message{padding:32px 24px;text-align:center;color:#374151;font-size:14px;background:#f9fafb;border-radius:8px;margin-top:12px}.tuition-table tfoot{background:#f0f9ff}.tuition-table tfoot td{padding:12px 16px;border-top:2px solid #2563eb;font-weight:600}.tuition-table tfoot .fee{color:#2563eb}.evaluation-page{padding:24px;max-width:1200px;margin:0 auto}.evaluation-page h1{font-size:24px;font-weight:700;color:#111827;margin-bottom:24px}.eval-tabs{display:flex;gap:8px;margin-bottom:24px;border-bottom:1px solid #e5e7eb;padding-bottom:12px}.eval-tabs button{padding:10px 20px;border:none;background:#f3f4f6;color:#374151;font-size:14px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .2s}.eval-tabs button:hover{background:#e5e7eb}.eval-tabs button.active{background:#2563eb;color:#fff}.evaluation-page .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.evaluation-page .section-header h2{font-size:18px;font-weight:600;color:#111827}.evaluation-page .add-btn{padding:8px 16px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer}.evaluation-page .add-btn:hover{background:#1d4ed8}.eval-table,.issued-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.eval-table th,.eval-table td,.issued-table th,.issued-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e5e7eb}.eval-table th,.issued-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}.eval-table tbody tr{cursor:pointer;transition:background .2s}.eval-table tbody tr:hover{background:#f9fafb}.eval-table tbody tr.selected{background:#dbeafe}.eval-table .edit-btn,.eval-table .delete-btn{padding:4px 10px;margin-right:4px;border:none;border-radius:4px;font-size:12px;cursor:pointer}.eval-table .edit-btn{background:#f3f4f6;color:#374151}.eval-table .delete-btn{background:#fee2e2;color:#991b1b}.selected-period-info{display:flex;align-items:center;gap:16px;padding:16px;background:#f0f9ff;border-radius:8px;margin-bottom:24px}.selected-period-info strong{font-size:16px;color:#1e40af}.selected-period-info .fee,.selected-period-info .total-fee{margin-left:auto;font-weight:600;color:#2563eb}.category-selection{margin-bottom:24px}.category-selection h3{font-size:16px;font-weight:600;color:#111827;margin-bottom:8px}.category-selection .help-text{font-size:13px;color:#374151;margin-bottom:12px}.category-list{display:flex;flex-wrap:wrap;gap:12px}.category-item{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s}.category-item:hover{border-color:#2563eb}.category-item input[type=checkbox]{width:18px;height:18px}.category-item .cat-name{font-weight:500;color:#111827}.category-item .cat-count{font-size:13px;color:#374151}.optional-students h3{font-size:16px;font-weight:600;color:#111827;margin-bottom:8px}.optional-students .help-text{font-size:13px;color:#374151;margin-bottom:12px}.optional-class-list{display:flex;flex-direction:column;gap:12px}.optional-class-item{background:#fff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.optional-class-item .class-header{display:flex;justify-content:space-between;padding:12px 16px;background:#f9fafb;cursor:pointer}.optional-class-item .class-name{font-weight:500;color:#111827}.optional-class-item .selected-count{font-size:13px;color:#2563eb;font-weight:500}.optional-class-item .student-list{display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px}.optional-class-item .student-item{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#f3f4f6;border-radius:6px;cursor:pointer}.optional-class-item .student-item:hover{background:#e5e7eb}.optional-class-item .load-students-btn{margin:12px 16px;padding:8px 16px;background:#f3f4f6;border:none;border-radius:6px;font-size:13px;color:#374151;cursor:pointer}.issue-section{margin-top:24px;padding-top:24px;border-top:1px solid #e5e7eb}.issue-btn{padding:14px 32px;background:#2563eb;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:background .2s}.issue-btn:hover{background:#1d4ed8}.issue-btn:disabled{background:#9ca3af;cursor:not-allowed}.status-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.status-badge.pending{background:#fee2e2;color:#991b1b}.status-badge.paid{background:#dcfce7;color:#166534}.eval-modal{background:#fff;border-radius:12px;width:90%;max-width:500px;box-shadow:0 20px 60px #0000004d}.eval-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e5e7eb}.eval-modal .modal-header h2{font-size:18px;font-weight:600;color:#111827}.eval-modal .close-btn{background:none;border:none;font-size:24px;color:#374151;cursor:pointer}.eval-modal .modal-body{padding:24px}.eval-modal .form-group{margin-bottom:16px}.eval-modal .form-group label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.eval-modal .form-group input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.eval-modal .form-row{display:flex;gap:16px}.eval-modal .form-row .form-group{flex:1}.eval-modal .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb}.eval-modal .cancel-btn{padding:10px 20px;background:#f3f4f6;color:#374151;border:none;border-radius:6px;cursor:pointer}.eval-modal .save-btn{padding:10px 20px;background:#2563eb;color:#fff;border:none;border-radius:6px;cursor:pointer}.eval-modal .save-btn:disabled{background:#9ca3af}.evaluation-page .empty-message{padding:40px;text-align:center;color:#374151;background:#f9fafb;border-radius:8px}.evaluation-page .loading{padding:40px;text-align:center;color:#374151}.app-syllabus-content{flex:1;padding:20px}.app-syllabus-list{display:flex;flex-direction:column;gap:12px}.app-syllabus-item{display:flex;align-items:center;gap:16px;padding:16px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;text-decoration:none;transition:all .2s}.app-syllabus-item:hover{border-color:#6366f1;box-shadow:0 4px 12px #6366f11a}.app-syllabus-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#fef2f2;border-radius:10px;flex-shrink:0}.app-syllabus-info{flex:1;min-width:0}.app-syllabus-title{font-size:1rem;font-weight:600;color:#1f2937;margin-bottom:4px}.app-syllabus-meta{display:flex;gap:8px;font-size:.8rem;color:#374151}.app-syllabus-meta span{background:#f3f4f6;padding:2px 8px;border-radius:6px}.app-syllabus-desc{font-size:.85rem;color:#374151;margin-top:4px}.app-syllabus-arrow{color:#374151;flex-shrink:0}.app-daily-test-content{flex:1;padding:20px}.app-test-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}.app-test-list{display:flex;flex-direction:column;gap:12px}.app-test-item{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border:1px solid #e5e7eb;border-radius:12px}.app-test-date-header{font-size:.85rem;font-weight:600;color:#374151;padding:4px 0;margin-top:8px}.app-test-date-header:first-child{margin-top:0}.app-test-name{flex:1;font-weight:500;color:#1f2937;display:flex;align-items:center;gap:6px}.app-test-score{font-weight:600;font-size:.9rem;padding:6px 12px;border-radius:8px;white-space:nowrap}.app-test-badge{font-size:.7rem;font-weight:600;color:#0369a1;background:#e0f2fe;padding:2px 6px;border-radius:4px;white-space:nowrap}.app-assignment-badge{font-size:.7rem;font-weight:600;color:#7c3aed;background:#ede9fe;padding:2px 6px;border-radius:4px;white-space:nowrap}.app-assignment-score-group{display:flex;align-items:center;gap:6px}.app-dt-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;margin-bottom:16px}.app-dt-card-title{font-size:.95rem;font-weight:700;color:#1f2937;padding:14px 16px 10px;border-bottom:2px solid #3b82f6}.app-dt-table{width:100%;border-collapse:collapse;font-size:.82rem}.app-dt-table thead th{background:#f8fafc;color:#64748b;font-weight:600;font-size:.75rem;padding:8px 6px;text-align:center;border-bottom:1px solid #e5e7eb;white-space:pre-line}.app-dt-table thead th:first-child{text-align:left;padding-left:16px}.app-dt-table tbody tr{border-bottom:1px solid #f1f5f9}.app-dt-table tbody tr:last-child{border-bottom:none}.app-dt-name{padding:10px 6px 10px 16px;font-weight:500;color:#1f2937;white-space:nowrap}.app-dt-center{padding:10px 6px;text-align:center;color:#374151}.app-dt-type-test{font-size:.65rem;font-weight:600;color:#0369a1;background:#e0f2fe;padding:1px 4px;border-radius:3px;vertical-align:middle}.app-dt-type-assign{font-size:.65rem;font-weight:600;color:#7c3aed;background:#ede9fe;padding:1px 4px;border-radius:3px;vertical-align:middle}.app-dt-score-pass{color:#059669;font-weight:700}.app-dt-score-fail{color:#dc2626;font-weight:700}.app-dt-pf-pass{color:#0369a1;font-weight:700}.app-dt-pf-fail{color:#dc2626;font-weight:700}.app-dt-submitted{color:#059669;font-weight:600}.app-dt-not-submitted{color:#dc2626;font-weight:600}.app-dt-insufficient{color:#d97706;font-weight:600}.app-dt-status-badge{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.7rem;font-weight:600;margin-left:4px;vertical-align:middle}.app-dt-status-badge.submitted{background:#dcfce7;color:#166534}.app-dt-status-badge.insufficient{background:#fef9c3;color:#854d0e}.app-dt-status-badge.not-submitted{background:#fee2e2;color:#991b1b}.app-stats-card{margin-bottom:20px;border-color:#c7d2fe}.app-stats-card .app-dt-card-title{border-bottom-color:#6366f1;color:#312e81}.app-stats-table thead th{font-size:.7rem;padding:8px 4px}.app-stats-table .app-dt-name{padding:10px 4px 10px 12px;font-size:.8rem}.app-stats-table .app-dt-center{padding:10px 2px;font-size:.82rem}.app-stats-my{color:#2563eb!important;font-weight:700}.app-stats-top{color:#059669!important;font-weight:600}.app-dt-name-clickable{cursor:pointer;transition:all .15s}.app-dt-name-clickable:hover{color:#2563eb;background:#eff6ff}.app-dt-name-clickable.active{color:#2563eb;font-weight:700;background:#dbeafe}.app-stats-chart{padding:12px 8px 8px;border-top:1px solid #e5e7eb}.app-stats-chart-title{font-size:14px;font-weight:600;color:#1f2937;margin-bottom:2px}.app-stats-chart-hint{font-size:11px;color:#9ca3af;margin-bottom:8px}.app-retest-content{flex:1;padding:20px}.app-retest-notice{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#fef3c7;border:1px solid #fcd34d;border-radius:10px;margin-bottom:16px;font-size:.9rem;color:#92400e}.app-retest-list{display:flex;flex-direction:column;gap:12px}.app-retest-count{background:#fee2e2;padding:16px;border-radius:12px;text-align:center;margin-bottom:16px}.app-retest-count .count-number{font-size:2rem;font-weight:700;color:#dc2626;margin-right:4px}.app-retest-count .count-label{font-size:1rem;color:#7f1d1d}.app-retest-count.app-retest-all-passed{background:#dcfce7}.app-retest-count.app-retest-all-passed .count-label{color:#166534;font-weight:600}.app-retest-item{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#fff;border:1px solid #fecaca;border-radius:12px}.app-retest-left{display:flex;flex-direction:column;gap:4px}.app-retest-date-header{font-size:.9rem;font-weight:600;color:#374151;padding:8px 0 4px;margin-top:8px;border-bottom:1px solid #e5e7eb}.app-retest-date-header:first-child{margin-top:0}.app-retest-name{font-weight:500;color:#1f2937}.app-retest-right{text-align:right}.app-retest-score{font-weight:600}.app-retest-score .score-value{font-size:1.2rem;color:#dc2626}.app-retest-score .score-max{font-size:.9rem;color:#374151}.app-retest-cut{font-size:.8rem;color:#374151;margin-top:4px}.app-retest-result{margin-top:6px;padding:3px 10px;border-radius:12px;font-size:.75rem;font-weight:600;display:inline-block;text-align:center}.app-retest-result.passed{background:#dcfce7;color:#166534}.app-retest-result.failed{background:#fee2e2;color:#991b1b}.app-retest-result.absent{background:#f5f5f5;color:#666}.app-empty-success svg{color:#10b981!important}.app-empty-sub{font-size:.85rem;color:#374151;margin-top:4px}.app-grades-content{flex:1;padding:16px 16px 40px}.app-grades-info{padding:12px;background:#eef2ff;border-radius:10px;margin-bottom:16px;display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.app-grades-info p{margin:0;font-size:13px;color:#4f46e5;flex:1}.app-grades-list{display:flex;flex-direction:column;gap:16px}.app-grade-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.app-grade-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f9fafb;border-bottom:1px solid #e5e7eb}.app-grade-type{font-weight:600;color:#1f2937}.app-grade-date{font-size:.85rem;color:#374151}.app-grade-body{padding:16px}.app-grade-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f3f4f6}.app-grade-row:last-child{border-bottom:none}.app-grade-label{color:#374151;font-size:.9rem}.app-grade-value{font-weight:500;color:#1f2937}.app-grade-result{font-weight:600}.app-grade-comment{margin-top:12px;padding:12px;background:#f9fafb;border-radius:8px;font-size:.9rem;color:#374151}.app-grade-item-clickable{cursor:pointer;transition:box-shadow .2s,transform .15s}.app-grade-item-clickable:active{transform:scale(.98)}.app-grade-header-left{display:flex;flex-direction:column;gap:2px}.app-grade-name{font-size:.82rem;color:#6b7280}.app-grade-score-row{display:flex;justify-content:space-around;text-align:center;padding:4px 0}.app-grade-score-item{display:flex;flex-direction:column;gap:2px}.app-grade-score-label{font-size:.75rem;color:#6b7280}.app-grade-score-value{font-weight:600;font-size:1.05rem;color:#1f2937}.app-grade-score-value small{font-weight:400;font-size:.75rem;color:#9ca3af}.app-grade-level-tag{display:inline-block;margin-top:8px;padding:2px 10px;background:#eff6ff;color:#1e40af;border-radius:12px;font-size:.8rem;font-weight:500}.app-grade-footer{padding:8px 16px;border-top:1px solid #f3f4f6;text-align:right}.app-grade-detail-link{font-size:.85rem;color:#3b82f6;font-weight:500}.app-grade-detail-info{background:#f8fafc;border-radius:12px;padding:20px;margin-bottom:16px}.app-grade-detail-info h3{margin:0 0 12px;font-size:18px;font-weight:700;color:#1f2937}.app-grade-detail-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:13px;color:#64748b}.app-score-gauges{background:#fff;border-radius:16px;padding:16px;margin-bottom:16px}.app-gauges-top-row{display:flex;justify-content:center;margin-bottom:16px}.app-gauges-bottom-row{display:flex;justify-content:space-around}.app-gauge-item{display:flex;flex-direction:column;align-items:center;gap:4px}.app-gauge-large{margin-bottom:8px}.app-gauge-label{font-size:14px;font-weight:600;color:#374151;margin-bottom:10px}.app-gauge-large .app-gauge-label{font-size:.875rem}.app-gauge-circle{position:relative;width:84px;height:84px}.app-gauge-circle-large{width:120px;height:120px}.app-gauge-circle svg{transform:rotate(-90deg);width:100%;height:100%}.app-gauge-bg{fill:none;stroke:#e5e7eb;stroke-width:10}.app-gauge-fill{fill:none;stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .6s ease}.app-gauge-circle-large .app-gauge-bg,.app-gauge-circle-large .app-gauge-fill{stroke-width:10}.app-gauge-fill-total{stroke:#3b82f6}.app-gauge-fill-grammar{stroke:#8b5cf6}.app-gauge-fill-reading{stroke:#10b981}.app-gauge-fill-listening{stroke:#f59e0b}.app-gauge-value{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:20px;font-weight:700}.app-gauge-value-large{font-size:1.75rem}.app-gauge-max{font-size:13px;color:#94a3b8;margin-top:6px}.app-gauge-large .app-gauge-max{font-size:.8rem}.app-gauge-circle-pie{position:relative;width:84px;height:84px}.app-gauge-circle-pie.app-gauge-circle-large{width:144px;height:144px}.app-gauge-circle-pie svg{width:100%;height:100%}.app-gauge-value-white{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.3)}.app-gauge-value-white.app-gauge-value-large{font-size:1.5rem}.app-score-summary{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;margin-bottom:16px}.app-score-summary table{width:100%;border-collapse:collapse}.app-score-summary th{background:#f9fafb;padding:10px 16px;font-size:.85rem;color:#374151;text-align:left;border-bottom:1px solid #e5e7eb}.app-score-summary td{padding:10px 16px;font-size:.9rem;color:#1f2937;border-bottom:1px solid #f3f4f6}.app-score-summary tr:last-child td{border-bottom:none}.app-grade-comment-box{background:#fff;border-radius:16px;padding:16px;margin-bottom:16px}.app-grade-comment-box h4{margin:0 0 8px;font-size:14px;font-weight:600;color:#374151}.app-grade-comment-box p{margin:0;font-size:14px;color:#6b7280;line-height:22px}.app-analysis-section{background:#fff;border-radius:16px;padding:16px;margin-bottom:16px}.app-analysis-section h3{font-size:1rem;color:#1f2937;margin:0 0 12px}.app-analysis-block{background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:12px;overflow:hidden}.app-analysis-header{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#f9fafb;border-bottom:1px solid #e5e7eb}.app-analysis-dot{width:10px;height:10px;border-radius:50%;background:#3b82f6}.app-analysis-name{font-weight:600;color:#1f2937;font-size:.95rem}.app-analysis-rate{margin-left:auto;font-weight:600;color:#3b82f6;font-size:.9rem}.app-analysis-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.app-analysis-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.75rem;min-width:320px;border:none;border-radius:8px;overflow:hidden}.app-analysis-table th{padding:8px;background:#334155;color:#f3f4f6;font-weight:600;text-align:center;border-bottom:none;border-right:1px solid #4b5563;white-space:nowrap}.app-analysis-table th:last-child{border-right:none}.app-th-type{text-align:left!important;padding-left:12px!important;width:140px;min-width:140px}.app-th-total{width:100px;min-width:100px;font-size:.75rem;line-height:1.2}.app-th-qtype{width:58px;font-size:.75rem;line-height:1.2;word-break:keep-all;padding:6px 4px!important}.app-analysis-table td{padding:8px;text-align:center;border:none;color:#1f2937;white-space:nowrap}.app-analysis-table td:last-child{border-right:none}.app-analysis-table tr:last-child td{border-bottom:none}.app-td-type,.app-td-difficulty{text-align:left;padding-left:12px;font-weight:500;color:#374151;white-space:nowrap}.app-td-difficulty{background:#f9fafb;text-align:center}.app-td-score-total{font-weight:600;color:#1f2937}.app-td-score-total .app-rate{display:block;font-size:.75rem;color:#64748b;font-weight:400}.app-td-score-diff{font-weight:500;color:#374151}.app-total-row td{font-weight:600}.app-td-perfect{background:#e0f2fe;color:#0c4a6e;font-weight:600}.app-td-wrong{background:#fff;color:#9ca3af;font-weight:400}.app-td-partial{background:#e0f2fe;color:#0c4a6e;font-weight:500}.app-td-empty{background:#f9fafb}.app-category-header-row th.app-th-category{background:#475569;color:#e2e8f0;font-size:.7rem;font-weight:600;text-align:center;padding:5px 4px;border-right:1px solid #64748b;border-bottom:1px solid #64748b;letter-spacing:.03em}.app-category-header-row th.app-th-category:last-child{border-right:none}.app-comparison-section{background:#fff;border-radius:16px;padding:16px;margin-bottom:16px}.app-comparison-section h4{font-size:1rem;font-weight:700;margin:0 0 10px;color:#1f2937}.app-comparison-table{width:100%;border-collapse:collapse;font-size:12px;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.app-comparison-table th{padding:10px 6px;background:#f8fafc;color:#374151;font-weight:600;text-align:center;border-bottom:1px solid #e5e7eb}.app-comparison-table td{padding:10px 6px;text-align:center;border-bottom:1px solid #e5e7eb;color:#374151}.app-comparison-table td:first-child{font-weight:500;text-align:center;color:#1f2937;background:#f9fafb}.app-my-score-row{background:transparent}.app-my-score-row td{font-weight:600;color:#2563eb}.app-highlight-row{background:#eff6ff}.app-highlight-row td{font-weight:600}.app-history-section{background:#fff;border-radius:16px;padding:16px;margin-bottom:16px}.app-history-section h3{font-size:1rem;color:#1f2937;margin:0 0 12px}.app-history-charts{display:flex;gap:10px;overflow-x:auto;padding-right:4px;padding-bottom:4px}.app-history-chart{background:#fff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;min-width:200px;width:200px;flex-shrink:0}.app-chart-title{font-size:13px;font-weight:700;color:#fff;background:#334155;padding:8px 0;text-align:center}.app-chart-bars{display:flex;align-items:flex-end;gap:5px;padding:10px 12px 16px}.app-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}.app-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}.app-bar-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1;max-width:50px;height:100%;position:relative}.app-bar{width:30px;border-radius:4px 4px 0 0;position:relative;min-height:5px;transition:height .3s ease}.app-bar-total{background:linear-gradient(180deg,#3b82f6,#2563eb)}.app-bar-grammar{background:linear-gradient(180deg,#8b5cf6,#7c3aed)}.app-bar-reading{background:linear-gradient(180deg,#10b981,#059669)}.app-bar-listening{background:linear-gradient(180deg,#f59e0b,#d97706)}.app-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)}.app-bar-label{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);font-size:.65rem;color:#666;white-space:nowrap;text-align:center}.app-consultation-content{flex:1;padding:20px}.app-consultation-new-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:12px;color:#fff;font-size:1rem;font-weight:500;cursor:pointer;margin-bottom:20px;transition:transform .2s,box-shadow .2s}.app-consultation-new-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #6366f14d}.app-consultation-list{display:flex;flex-direction:column;gap:12px}.app-consultation-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}.app-consultation-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.app-consultation-header-left{display:flex;align-items:center;gap:8px}.app-consultation-target{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:10px}.app-consultation-target.target-office{background:#dbeafe;color:#1e40af}.app-consultation-target.target-teacher{background:#fce7f3;color:#9d174d}.app-consultation-type{font-weight:500;color:#1f2937}.app-consultation-status{font-size:.8rem;padding:4px 10px;border-radius:12px;font-weight:500}.app-consultation-content-text{font-size:.9rem;color:#374151;line-height:1.5;margin-bottom:12px}.app-consultation-date{font-size:.8rem;color:#374151}.app-consultation-response{margin-top:12px;padding:12px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px}.app-consultation-response .response-label{font-size:.8rem;font-weight:500;color:#166534;margin-bottom:6px}.app-consultation-response .response-content{font-size:.9rem;color:#14532d;line-height:1.5}.app-consultation-actions{display:flex;gap:8px;margin-top:10px;justify-content:flex-end}.app-consultation-edit-btn,.app-consultation-delete-btn{padding:5px 14px;border-radius:6px;font-size:.8rem;font-weight:500;border:1px solid #d1d5db;cursor:pointer}.app-consultation-edit-btn{background:#fff;color:#374151}.app-consultation-delete-btn{background:#fff;color:#991b1b;border-color:#fca5a5}.app-consultation-form{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.app-target-buttons{display:flex;gap:12px}.app-target-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;color:#6b7280;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s}.app-target-btn:hover{border-color:#a5b4fc;background:#f5f7ff}.app-target-btn.active{border-color:#6366f1;background:#eef2ff;color:#4338ca}.app-form-title{font-size:1.1rem;font-weight:600;color:#1f2937;margin-bottom:20px}.app-form-group{margin-bottom:16px}.app-form-group label{display:block;font-size:.9rem;font-weight:500;color:#374151;margin-bottom:8px}.app-form-group select,.app-form-group textarea{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;box-sizing:border-box}.app-form-group select:focus,.app-form-group textarea:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.app-form-group textarea{resize:vertical;min-height:120px}.app-form-actions{display:flex;gap:12px;margin-top:20px}.app-btn-secondary{flex:1;padding:14px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:10px;color:#374151;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}.app-btn-secondary:hover{background:#e5e7eb}.app-btn-secondary:disabled{opacity:.5;cursor:not-allowed}.app-btn-primary{flex:1;padding:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:10px;color:#fff;font-size:1rem;font-weight:500;cursor:pointer;transition:transform .2s,box-shadow .2s}.app-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6366f14d}.app-btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}:root{--color-success: #10b981;--color-success-bg: #e8f5e9;--color-success-text: #2e7d32;--color-error: #ef4444;--color-error-bg: #ffebee;--color-error-text: #c62828;--color-warning: #f59e0b;--color-warning-bg: #fff3e0;--color-warning-text: #e65100;--color-info: #3b82f6;--color-info-bg: #e0f2fe;--color-info-text: #0369a1;--color-muted: #6b7280;--color-purple: #8b5cf6;--color-unpaid: #d32f2f;--color-paid: #2e7d32}.status-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.status-badge--paid,.status-badge--success{background-color:var(--color-success-bg);color:var(--color-success-text)}.status-badge--unpaid,.status-badge--error{background-color:var(--color-error-bg);color:var(--color-error-text)}.status-badge--partial,.status-badge--warning{background-color:var(--color-warning-bg);color:var(--color-warning-text)}.status-badge--info{background-color:var(--color-info-bg);color:var(--color-info-text)}.text-right{text-align:right}.text-center{text-align:center}.text-left{text-align:left}.amount-cell{text-align:right;font-variant-numeric:tabular-nums}.amount-cell--unpaid{color:var(--color-unpaid);font-weight:700}.amount-cell--paid{color:var(--color-paid)}.stat-value{font-size:24px;font-weight:700;display:block}.stat-value--success{color:var(--color-success)}.stat-value--error{color:var(--color-error)}.stat-value--warning{color:var(--color-warning)}.stat-value--muted{color:var(--color-muted)}.stat-value--purple{color:var(--color-purple)}.flex-row{display:flex;gap:24px;margin-bottom:16px}.flex-row--wrap{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.flex-row--tight{display:flex;gap:12px}.filter-group{display:flex;align-items:center;gap:8px}.filter-group select,.filter-group input{padding:4px 8px;margin-left:8px}.modal-content--sm{max-width:360px}.modal-content--md{max-width:480px}.modal-content--lg{max-width:720px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.modal-title{font-size:1.15rem;font-weight:600;color:#1f2937;margin:0}.modal-close{background:none;border:none;font-size:1.5rem;color:#6b7280;cursor:pointer;padding:0;line-height:1}.modal-close:hover{color:#1f2937}.modal-body{margin-bottom:16px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding-top:12px;border-top:1px solid #e5e7eb}.btn{padding:8px 16px;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .15s,border-color .15s}.btn--primary{background:#3b82f6;color:#fff;border:1px solid #3b82f6}.btn--primary:hover{background:#2563eb;border-color:#2563eb}.btn--secondary{background:#f3f4f6;color:#374151;border:1px solid #d1d5db}.btn--secondary:hover{background:#e5e7eb}.btn--danger{background:#ef4444;color:#fff;border:1px solid #ef4444}.btn--danger:hover{background:#dc2626;border-color:#dc2626}.sms-send-modal{background:#fff;border-radius:12px;width:480px;max-width:90vw;box-shadow:0 20px 40px #0000004d}.sms-send-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}.sms-send-modal-body{padding:20px;display:flex;flex-direction:column;gap:16px}.sms-send-recipient{display:flex;flex-direction:column;gap:6px}.sms-send-recipient>label{font-size:.85rem;color:#374151;font-weight:500}.sms-send-recipient-info{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#f3f4f6;border-radius:8px}.sms-send-recipient-name{font-weight:600;color:#1f2937}.sms-send-recipient-phone{color:#6b7280;font-size:.9rem}.sms-send-manual-toggle{align-self:flex-start;padding:6px 12px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;font-size:.8rem;color:#374151;cursor:pointer;transition:background .15s}.sms-send-manual-toggle:hover{background:#e5e7eb}.sms-send-manual-input{padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;resize:none;font-family:inherit}.sms-send-manual-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sms-send-title{display:flex;flex-direction:column;gap:6px}.sms-send-title>label{font-size:.85rem;color:#374151;font-weight:500}.sms-send-title>input{padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem}.sms-send-title>input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sms-send-message{display:flex;flex-direction:column;gap:6px}.sms-send-message>label{font-size:.85rem;color:#374151;font-weight:500}.sms-send-message>textarea{padding:12px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;resize:none;font-family:inherit;min-height:120px}.sms-send-message>textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sms-send-message-info{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.sms-send-msg-type{padding:4px 10px;border-radius:4px;font-size:.75rem;font-weight:600}.sms-send-msg-type.sms{background:#dcfce7;color:#166534}.sms-send-msg-type.lms{background:#dbeafe;color:#1e40af}.sms-send-char-count{font-size:.8rem;color:#6b7280}.sms-send-result{padding:12px 16px;border-radius:8px;font-size:.9rem}.sms-send-result.success{background:#dcfce7;color:#166534}.sms-send-result.error{background:#fee2e2;color:#991b1b}.sms-send-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid #e5e7eb}.sms-send-cancel-btn{padding:10px 20px;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;cursor:pointer;transition:background .15s}.sms-send-cancel-btn:hover{background:#e5e7eb}.sms-send-confirm-btn{padding:10px 24px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s}.sms-send-confirm-btn:hover:not(:disabled){background:#2563eb}.sms-send-confirm-btn:disabled{background:#9ca3af;cursor:not-allowed}.retest-filter-row{display:flex;align-items:center;gap:1rem;padding:.5rem;margin-bottom:.75rem;background:#f3f4f6;border-radius:4px}.retest-filter-row label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#374151}.retest-filter-row select{padding:.25rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.875rem}.retest-count{font-size:.875rem;color:#6b7280;margin-left:auto}.retest-table{width:100%;border-collapse:collapse;font-size:.875rem}.retest-table th,.retest-table td{padding:.5rem .75rem;text-align:center;border-bottom:1px solid #e5e7eb}.retest-table th{background:#f9fafb;font-weight:600;color:#374151}.retest-table td{vertical-align:middle}.retest-table .score-cell{font-weight:600}.retest-table .score-failed{color:#dc2626}.retest-status-cell{min-width:180px}.retest-status-buttons{display:flex;gap:.25rem;justify-content:center}.retest-btn{padding:.25rem .5rem;font-size:.75rem;border:1px solid #d1d5db;border-radius:4px;background:#fff;cursor:pointer;transition:all .15s}.retest-btn:hover{background:#f3f4f6}.retest-btn.passed{border-color:#10b981;color:#059669}.retest-btn.passed:hover,.retest-btn.passed.active{background:#10b981;color:#fff}.retest-btn.failed{border-color:#ef4444;color:#dc2626}.retest-btn.failed:hover,.retest-btn.failed.active{background:#ef4444;color:#fff}.retest-btn.absent{border-color:#6b7280;color:#6b7280}.retest-btn.absent:hover,.retest-btn.absent.active{background:#6b7280;color:#fff}.discount-page{width:100%}.discount-layout{display:grid;grid-template-columns:280px 1fr;gap:24px;align-items:start}.discount-sidebar{display:flex;flex-direction:column;gap:16px;position:sticky;top:16px}.discount-filters{display:flex;flex-direction:column;gap:12px}.discount-filters .filter-group{display:flex;flex-direction:column;gap:4px}.discount-filters .filter-label{font-size:.85rem;color:#666;font-weight:500}.discount-filters select,.discount-filters input[type=month]{padding:8px 12px;border:1px solid #e2d6c7;border-radius:6px;font-size:.95rem;background:#fff}.discount-summary-box{background:#f8f5f0;border:1px solid #e2d6c7;border-radius:8px;padding:14px}.discount-summary-box .summary-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:.9rem}.discount-summary-box .summary-row span{color:#666}.discount-summary-box .summary-row strong{color:#333}.discount-summary-box .summary-row.highlight{border-top:1px solid #e2d6c7;margin-top:6px;padding-top:10px}.discount-summary-box .summary-row strong.eligible{color:#166534}.discount-summary-box .summary-row strong.ineligible{color:#991b1b}.discount-info-box{background:#fffbeb;border:1px solid #fbbf24;border-radius:8px;padding:14px}.discount-info-box h4{margin:0 0 8px;color:#854d0e;font-size:.9rem}.discount-info-box ul{margin:0;padding-left:18px;color:#713f12;font-size:.85rem}.discount-info-box li{margin-bottom:2px}.discount-content{flex:1;min-width:0}.discount-section{margin-bottom:24px}.discount-section:last-child{margin-bottom:0}.section-title{display:flex;align-items:center;gap:10px;font-size:1rem;font-weight:600;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid}.section-title.eligible{color:#166534;border-color:#166534}.section-title.ineligible{color:#991b1b;border-color:#991b1b}.section-count{font-size:.85rem;font-weight:400;opacity:.8}.sibling-groups-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.sibling-card{background:#fff;border:1px solid #e2d6c7;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000000d;transition:box-shadow .2s}.sibling-card:hover{box-shadow:0 3px 8px #0000001a}.sibling-card.eligible{border-color:#86efac}.sibling-card.eligible .sibling-card-header{background:linear-gradient(135deg,#166534,#15803d)}.sibling-card.ineligible{border-color:#fecaca}.sibling-card.ineligible .sibling-card-header{background:linear-gradient(135deg,#991b1b,#b91c1c)}.sibling-card-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;color:#fff}.sibling-card-phone{font-size:.85rem;font-weight:500}.sibling-card-badge,.sibling-card-reason{font-size:.75rem;background:#ffffff40;padding:2px 8px;border-radius:10px}.sibling-card-students{padding:8px 12px}.sibling-student-row{display:flex;align-items:center;padding:4px 0;border-bottom:1px solid #f5f0eb}.sibling-student-row:last-child{border-bottom:none}.sibling-student-row.problem{background:#fef2f2;margin:0 -12px;padding:4px 12px}.sibling-student-name{font-weight:600;color:#1f1f1f;font-size:.9rem;width:70px;flex-shrink:0}.sibling-student-grade{font-size:.8rem;color:#1b7f6b;font-weight:500;width:24px;text-align:center;flex-shrink:0}.student-tag{font-size:.7rem;background:#fecaca;color:#991b1b;padding:1px 6px;border-radius:4px;width:50px;text-align:center;flex-shrink:0;margin-left:auto}@media(max-width:900px){.discount-layout{grid-template-columns:1fr}.discount-sidebar{position:static;flex-direction:row;flex-wrap:wrap}.discount-filters{flex-direction:row;gap:16px}.discount-summary-box,.discount-info-box{flex:1;min-width:200px}}@media(max-width:600px){.discount-sidebar,.discount-filters{flex-direction:column}.sibling-groups-grid{grid-template-columns:1fr}}.student-name-link{background:none;border:none;padding:0;margin:0;font:inherit;color:#1b7f6b;cursor:pointer;text-decoration:none;transition:color .15s ease}.student-name-link:hover{color:#145c4e;text-decoration:underline}.student-name-link:focus{outline:2px solid #1b7f6b;outline-offset:2px;border-radius:2px}.teacher-dashboard{display:flex;flex-direction:column;gap:20px;min-height:100vh;background:#f5f5f5}.teacher-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 3px #0000000d}.teacher-logo{display:flex;align-items:center;gap:12px}.teacher-logo-img{width:48px;height:48px;object-fit:cover;border-radius:8px}.teacher-logo-text{display:flex;flex-direction:column}.teacher-logo-title{font-size:1.1rem;font-weight:700;color:#1f2937}.teacher-logo-subtitle{font-size:.85rem;color:#6b7280}.teacher-date{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#f0f9ff;border-radius:8px}.teacher-date .date-label{font-size:.85rem;color:#0369a1}.teacher-date .date-value{font-size:.95rem;font-weight:600;color:#0c4a6e}.teacher-content{display:grid;grid-template-columns:280px 1fr;gap:20px;padding:0 24px 24px;flex:1}.teacher-sidebar{display:flex;flex-direction:column}.teacher-panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;overflow:hidden}.teacher-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e5e7eb;font-weight:600;font-size:.95rem;color:#1f2937}.teacher-panel-count{font-size:.8rem;color:#6b7280;font-weight:500}.teacher-panel-body{padding:8px;max-height:calc(100vh - 300px);overflow-y:auto}.teacher-loading,.teacher-empty{padding:20px;text-align:center;color:#6b7280;font-size:.9rem}.teacher-class-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 14px;margin-bottom:4px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left}.teacher-class-item:hover{background:#f9fafb;border-color:#d1d5db}.teacher-class-item.active{background:#eff6ff;border-color:#3b82f6}.teacher-class-item.today{border-left:3px solid #10b981}.teacher-class-item.today.active{border-left-color:#10b981}.teacher-class-item .class-info{display:flex;flex-direction:column;gap:2px}.teacher-class-item .class-name{font-weight:600;font-size:.95rem;color:#1f2937}.teacher-class-item .class-time{font-size:.8rem;color:#6b7280}.teacher-class-item .today-badge{padding:3px 8px;background:#dcfce7;color:#166534;font-size:.7rem;font-weight:600;border-radius:10px}.teacher-main{display:flex;flex-direction:column;gap:16px}.teacher-placeholder{display:flex;align-items:center;justify-content:center;padding:60px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;color:#6b7280;font-size:.95rem}.teacher-class-info{padding:16px 20px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014}.teacher-class-info h2{font-size:1.1rem;font-weight:600;color:#1f2937;margin:0 0 8px}.teacher-class-info .class-meta{display:flex;gap:16px;font-size:.9rem;color:#6b7280}.teacher-stats{display:flex;gap:12px}.teacher-stats .stat-item{flex:1;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #00000014;text-align:center}.teacher-stats .stat-item .stat-label{display:block;font-size:.8rem;color:#6b7280;margin-bottom:4px}.teacher-stats .stat-item .stat-value{font-size:1.2rem;font-weight:700;color:#1f2937}.teacher-stats .stat-present{background:#dcfce7}.teacher-stats .stat-present .stat-label,.teacher-stats .stat-present .stat-value{color:#166534}.teacher-stats .stat-late{background:#fef9c3}.teacher-stats .stat-late .stat-label,.teacher-stats .stat-late .stat-value{color:#854d0e}.teacher-stats .stat-absent{background:#fee2e2}.teacher-stats .stat-absent .stat-label,.teacher-stats .stat-absent .stat-value{color:#991b1b}.teacher-stats .stat-none{background:#f3f4f6}.teacher-stats .stat-none .stat-label,.teacher-stats .stat-none .stat-value{color:#6b7280}.teacher-attendance-list{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;overflow:hidden}.teacher-attendance-list .attendance-header{padding:14px 20px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e5e7eb;font-weight:600;font-size:.95rem;color:#1f2937}.teacher-table{width:100%;border-collapse:collapse}.teacher-table th,.teacher-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #f3f4f6}.teacher-table th{background:#f9fafb;font-weight:600;font-size:.85rem;color:#6b7280}.teacher-table td{font-size:.9rem;color:#1f2937}.teacher-table .col-name{font-weight:500}.teacher-table .col-grade,.teacher-table .col-school{color:#6b7280}.teacher-table .attendance-badge{display:inline-block;padding:4px 10px;font-size:.8rem;font-weight:600;border-radius:12px}.teacher-table .attendance-badge.status-present{background:#dcfce7;color:#166534}.teacher-table .attendance-badge.status-late{background:#fef9c3;color:#854d0e}.teacher-table .attendance-badge.status-absent{background:#fee2e2;color:#991b1b}.teacher-table .attendance-badge.status-makeup{background:#dbeafe;color:#1e40af}.teacher-table .attendance-badge.status-early{background:#fef3c7;color:#92400e}.teacher-table .attendance-badge.status-none{background:#f3f4f6;color:#6b7280}.teacher-date-info{font-size:.85rem;color:#0369a1;background:#f0f9ff;padding:4px 10px;border-radius:6px}.teacher-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.teacher-class-card{display:flex;flex-direction:column;align-items:flex-start;padding:12px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left}.teacher-class-card:hover{background:#f9fafb;border-color:#d1d5db}.teacher-class-card.active{background:#eff6ff;border-color:#3b82f6}.teacher-class-card.today{border-left:3px solid #10b981}.teacher-class-card .class-card-info{display:flex;flex-direction:column;gap:4px;width:100%}.teacher-class-card .class-card-name{font-weight:600;font-size:.9rem;color:#1f2937}.teacher-class-card .class-card-time{font-size:.8rem;color:#6b7280}.teacher-class-card .today-badge{margin-top:6px;padding:2px 8px;background:#dcfce7;color:#166534;font-size:.7rem;font-weight:600;border-radius:10px}.teacher-stats-inline{display:flex;gap:8px;flex-wrap:wrap;margin-left:20px}.teacher-stats-inline .stat-inline{font-size:.8rem;padding:3px 8px;border-radius:4px;background:#f3f4f6;color:#374151}.teacher-stats-inline .stat-inline.stat-present{background:#dcfce7;color:#166534}.teacher-stats-inline .stat-inline.stat-late{background:#fef9c3;color:#854d0e}.teacher-stats-inline .stat-inline.stat-absent{background:#fee2e2;color:#991b1b}.teacher-stats-inline .stat-inline.stat-none{background:#f3f4f6;color:#6b7280}.teacher-attendance-table .status-badge{display:inline-block;padding:3px 8px;font-size:.75rem;font-weight:600;border-radius:10px}.teacher-attendance-table .status-badge.status-present{background:#dcfce7;color:#166534}.teacher-attendance-table .status-badge.status-late{background:#fef9c3;color:#854d0e}.teacher-attendance-table .status-badge.status-absent{background:#fee2e2;color:#991b1b}.teacher-attendance-table .status-badge.status-makeup{background:#dbeafe;color:#1e40af}.teacher-attendance-table .status-badge.status-early{background:#fef3c7;color:#92400e}.teacher-attendance-table .status-badge.status-none{background:#f3f4f6;color:#6b7280}.student-operation-page{padding:24px;max-width:1400px;margin:0 auto}.operation-header{margin-bottom:24px}.operation-header h2{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0}.operation-tabs{display:flex;gap:8px;margin-bottom:24px;border-bottom:1px solid #e5e7eb;padding-bottom:8px}.operation-tab{padding:10px 20px;border:none;background:transparent;color:#6b7280;font-size:.95rem;font-weight:500;cursor:pointer;border-radius:8px 8px 0 0;transition:all .2s}.operation-tab:hover{background:#f3f4f6;color:#374151}.operation-tab.active{background:#2563eb;color:#fff}.withdrawn-page{max-width:1400px;margin:0 auto;padding:24px}.withdrawn-header{display:flex;align-items:center;gap:16px;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid #e5e7eb}.withdrawn-header-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;background:linear-gradient(135deg,#fee2e2,#fecaca);border-radius:16px;color:#dc2626}.withdrawn-header-text h1{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0 0 4px}.withdrawn-header-text p{font-size:.9rem;color:#6b7280;margin:0}.withdrawn-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:28px}.withdrawn-stats .stat-card{display:flex;align-items:center;gap:16px;padding:20px 24px;background:#fff;border-radius:16px;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a;transition:transform .2s,box-shadow .2s}.withdrawn-stats .stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a,0 8px 24px #0000000f}.withdrawn-stats .stat-card .stat-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;flex-shrink:0}.withdrawn-stats .stat-card.total .stat-icon{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#dc2626}.withdrawn-stats .stat-card.year .stat-icon{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#2563eb}.withdrawn-stats .stat-card.month .stat-icon{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#d97706}.withdrawn-stats .stat-card .stat-content{display:flex;flex-direction:column;gap:4px}.withdrawn-stats .stat-card .stat-label{font-size:.85rem;color:#6b7280;font-weight:500}.withdrawn-stats .stat-card .stat-value{font-size:1.75rem;font-weight:700;color:#1f2937;line-height:1}.withdrawn-stats .stat-card .stat-value small{font-size:.9rem;font-weight:500;color:#6b7280;margin-left:2px}.withdrawn-stats .stat-card.total .stat-value{color:#dc2626}.withdrawn-reason-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:16px 20px;background:#fff;border-radius:12px;border:1px solid #e5e7eb;margin-bottom:16px}.reason-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:20px;font-size:.88rem;color:#4b5563;cursor:pointer;transition:all .2s}.reason-tab:hover{background:#f3f4f6;border-color:#d1d5db}.reason-tab.active{background:#1f2937;border-color:#1f2937;color:#fff;font-weight:600}.reason-tab-badge{width:8px;height:8px;border-radius:50%;flex-shrink:0}.reason-tab-badge.system{background:#f472b6}.reason-tab-badge.grade{background:#a78bfa}.reason-tab-badge.transfer{background:#fb923c}.reason-tab-badge.move{background:#34d399}.reason-tab-badge.personal{background:#60a5fa}.reason-tab-badge.schedule{background:#fbbf24}.reason-tab-badge.teacher{background:#f87171}.reason-tab-badge.other{background:#9ca3af}.reason-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;background:#e5e7eb;border-radius:10px;font-size:.75rem;font-weight:600;color:#6b7280}.reason-tab.active .reason-tab-count{background:#fff3;color:#fff}.withdrawn-filters{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap;align-items:center}.withdrawn-filters .search-box{position:relative;flex:1;min-width:280px;max-width:400px}.withdrawn-filters .search-box svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#9ca3af;pointer-events:none}.withdrawn-filters .search-box input{width:100%;padding:12px 40px 12px 44px;border:1px solid #e5e7eb;border-radius:12px;font-size:.95rem;color:#1f2937;background:#fff;transition:border-color .2s,box-shadow .2s}.withdrawn-filters .search-box input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.withdrawn-filters .search-box input::placeholder{color:#9ca3af}.withdrawn-filters .search-box .clear-btn{position:absolute;right:12px;top:50%;transform:translateY(-50%);padding:4px;border:none;background:transparent;color:#9ca3af;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s}.withdrawn-filters .search-box .clear-btn:hover{background:#f3f4f6;color:#6b7280}.withdrawn-filters .date-range-filter{display:flex;align-items:center;gap:12px}.withdrawn-filters .date-input-group{display:flex;flex-direction:column;gap:6px}.withdrawn-filters .date-input-group label{font-size:.8rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.02em}.withdrawn-filters .date-inputs{display:flex;align-items:center;gap:8px}.withdrawn-filters .date-inputs input[type=date]{padding:10px 14px;border:1px solid #e5e7eb;border-radius:10px;font-size:.9rem;color:#1f2937;background:#fff;cursor:pointer;transition:border-color .2s,box-shadow .2s;min-width:140px}.withdrawn-filters .date-inputs input[type=date]:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.withdrawn-filters .date-inputs input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;transition:opacity .2s}.withdrawn-filters .date-inputs input[type=date]:hover::-webkit-calendar-picker-indicator{opacity:1}.withdrawn-filters .date-separator{color:#9ca3af;font-weight:500}.withdrawn-result-info{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding:12px 16px;background:#f9fafb;border-radius:10px}.withdrawn-result-info .result-count{font-size:.9rem;color:#6b7280}.withdrawn-result-info .result-count strong{color:#1f2937;font-weight:600}.withdrawn-result-info .reset-filters{padding:6px 12px;border:none;background:#fff;color:#2563eb;font-size:.85rem;font-weight:500;border-radius:6px;cursor:pointer;transition:background .2s}.withdrawn-result-info .reset-filters:hover{background:#eff6ff}.withdrawn-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:#6b7280;gap:16px}.withdrawn-loading .loading-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;animation:spin .8s linear infinite}.withdrawn-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:#9ca3af;gap:16px}.withdrawn-empty svg{color:#d1d5db}.withdrawn-empty p{font-size:1rem;margin:0}.withdrawn-table-wrapper{background:#fff;border-radius:16px;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a;overflow:hidden}.withdrawn-table{width:100%;border-collapse:collapse}.withdrawn-table th{background:#f9fafb;padding:14px 16px;text-align:left;font-size:.85rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.02em;border-bottom:1px solid #e5e7eb;white-space:nowrap}.withdrawn-table td{padding:16px;border-bottom:1px solid #f3f4f6;font-size:.95rem;color:#374151;vertical-align:middle}.withdrawn-table tbody tr{transition:background .15s}.withdrawn-table tbody tr:hover{background:#f9fafb}.withdrawn-table tbody tr:last-child td{border-bottom:none}.withdrawn-table .col-name,.withdrawn-table .col-school,.withdrawn-table .col-phone{white-space:nowrap}.withdrawn-table .student-name{font-weight:600;color:#1f2937}.withdrawn-table .grade-badge{display:inline-block;padding:4px 10px;background:#eff6ff;color:#2563eb;border-radius:6px;font-size:.85rem;font-weight:500}.withdrawn-table .course-name{display:inline-block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6b7280;font-size:.9rem}.withdrawn-table .date-text{color:#6b7280;font-size:.9rem;white-space:nowrap}.withdrawn-table .reason-content{display:flex;flex-direction:column;gap:6px}.withdrawn-table .reason-content-inline{display:flex;flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap}.withdrawn-table .reason-detail-inline{font-size:.85rem;color:#374151;line-height:1.4}.withdrawn-table .reason-badge{display:inline-block;padding:5px 12px;border-radius:20px;font-size:.8rem;font-weight:600;width:fit-content}.withdrawn-table .reason-badge.personal{background:#dbeafe;color:#1e40af}.withdrawn-table .reason-badge.schedule{background:#fef3c7;color:#92400e}.withdrawn-table .reason-badge.teacher{background:#fee2e2;color:#991b1b}.withdrawn-table .reason-badge.system{background:#fce7f3;color:#9d174d}.withdrawn-table .reason-badge.grade{background:#ede9fe;color:#5b21b6}.withdrawn-table .reason-badge.transfer{background:#ffedd5;color:#c2410c}.withdrawn-table .reason-badge.move{background:#d1fae5;color:#065f46}.withdrawn-table .reason-badge.other{background:#f3f4f6;color:#6b7280}.withdrawn-table .reason-detail{font-size:.85rem;color:#6b7280;line-height:1.4;max-width:200px}.withdrawn-table .no-reason{color:#d1d5db}.withdrawn-table .phone-link{color:#2563eb;text-decoration:none;font-size:.9rem;transition:color .2s}.withdrawn-table .phone-link:hover{color:#1d4ed8;text-decoration:underline}@media(max-width:1024px){.withdrawn-page{padding:16px}.withdrawn-stats{grid-template-columns:repeat(3,1fr)}.withdrawn-filters .search-box{min-width:200px}}@media(max-width:768px){.withdrawn-header{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px;padding-bottom:20px}.withdrawn-header-icon{width:48px;height:48px}.withdrawn-header-icon svg{width:24px;height:24px}.withdrawn-stats{grid-template-columns:1fr;gap:12px}.withdrawn-stats .stat-card{padding:16px 20px}.withdrawn-stats .stat-card .stat-value{font-size:1.5rem}.withdrawn-filters{flex-direction:column;align-items:stretch}.withdrawn-filters .search-box{max-width:none;min-width:auto}.withdrawn-filters .date-range-filter,.withdrawn-filters .date-input-group,.withdrawn-filters .date-inputs{width:100%}.withdrawn-filters .date-inputs input[type=date]{flex:1;min-width:auto}.withdrawn-result-info{flex-direction:column;gap:12px;align-items:flex-start}.withdrawn-table-wrapper{border-radius:12px;margin:0 -8px}.withdrawn-table{font-size:.85rem}.withdrawn-table th,.withdrawn-table td{padding:12px}.withdrawn-table th:nth-child(3),.withdrawn-table td:nth-child(3),.withdrawn-table th:nth-child(4),.withdrawn-table td:nth-child(4){display:none}.withdrawn-table .course-name,.withdrawn-table .reason-detail{max-width:120px}}.app-payment-content{padding:16px 16px 100px}.app-payment-summary{background:linear-gradient(135deg,#1e40af,#3b82f6);color:#fff;border-radius:16px;padding:24px 20px;text-align:center;margin-bottom:20px}.app-payment-summary-label{font-size:13px;opacity:.85;margin-bottom:8px}.app-payment-summary-amount{font-size:28px;font-weight:800;margin-bottom:4px}.app-payment-summary-name{font-size:13px;opacity:.75}.app-payment-list{margin-bottom:16px}.app-payment-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.app-payment-list-title{font-size:15px;font-weight:700;color:#333;margin:0}.app-payment-select-all{background:none;border:1px solid #d1d5db;border-radius:8px;padding:6px 12px;font-size:13px;color:#374151;cursor:pointer}.app-payment-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:#999;font-size:14px;text-align:center}.app-payment-empty p{margin:0}.app-payment-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px;margin-bottom:10px;display:flex;align-items:flex-start;gap:12px;cursor:pointer;transition:border-color .15s}.app-payment-item.selected{border-color:#3b82f6}.app-payment-item-check{flex-shrink:0;padding-top:2px}.app-checkbox{width:22px;height:22px;border:2px solid #d1d5db;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .15s}.app-checkbox.checked{background:#3b82f6;border-color:#3b82f6}.app-payment-item-body{flex:1;min-width:0}.app-payment-item-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.app-payment-item-type{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px}.app-payment-item-partial{font-size:11px;font-weight:600;color:#854d0e;background:#fef9c3;padding:2px 8px;border-radius:4px}.app-payment-item-discount{font-size:11px;font-weight:600;color:#166534;background:#dcfce7;padding:2px 8px;border-radius:4px}.app-payment-item-period{font-size:12px;color:#64748b;margin-bottom:4px}.app-payment-item-original{font-size:13px;color:#999;text-decoration:line-through}.app-payment-item-name{font-size:14px;font-weight:500;color:#333;margin-bottom:6px;word-break:break-all}.app-payment-item-amounts{text-align:right}.app-payment-item-billed{font-size:12px;color:#888;margin-bottom:2px}.app-payment-item-remaining{font-size:18px;font-weight:700;color:#dc2626}.app-payment-footer{position:fixed;bottom:0;left:0;right:0;padding:12px 16px;background:#fff;border-top:1px solid #e5e7eb;box-shadow:0 -4px 12px #00000014;z-index:100}.app-payment-btn{width:100%;padding:16px;background:#1e40af;color:#fff;border:none;border-radius:12px;font-size:17px;font-weight:700;cursor:pointer;transition:background .2s}.app-payment-btn:hover{background:#1d4ed8}.app-payment-btn:disabled{background:#93c5fd;cursor:not-allowed}.app-payment-tabs{display:flex;gap:0;padding:0 20px;margin-bottom:4px;border-bottom:1px solid #e5e7eb}.app-payment-tab{flex:1;padding:12px 0;background:none;border:none;border-bottom:2px solid transparent;font-size:15px;font-weight:600;color:#999;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}.app-payment-tab.active{color:#1e40af;border-bottom-color:#1e40af}.app-payment-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#ef4444;color:#fff;font-size:12px;font-weight:700}.app-payment-paid-section{padding:0 0 20px}.app-payment-paid-summary{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;margin-bottom:12px;background:#f0f9ff;border-radius:12px}.app-payment-paid-summary-label{font-size:14px;color:#64748b;font-weight:500}.app-payment-paid-summary-amount{font-size:18px;font-weight:700;color:#1e40af}.app-payment-paid-item{padding:16px 20px;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:10px}.app-payment-paid-item-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}.app-payment-paid-method{font-size:12px;color:#64748b;background:#f1f5f9;padding:2px 8px;border-radius:4px}.app-payment-paid-item-name{font-size:14px;color:#333;margin-bottom:8px}.app-payment-paid-item-bottom{display:flex;justify-content:space-between;align-items:center}.app-payment-paid-date{font-size:13px;color:#94a3b8}.app-payment-paid-amount{font-size:16px;font-weight:700;color:#166534}.app-payment-result{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;padding:40px 20px;text-align:center}.app-payment-result-icon{margin-bottom:16px}.app-payment-result-icon.processing{color:#3b82f6;animation:pulse 1.5s infinite}.app-payment-result-icon.success{color:#16a34a}.app-payment-result-icon.error{color:#dc2626}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.app-payment-result h2{font-size:22px;font-weight:700;color:#333;margin:0 0 12px}.app-payment-result-msg{font-size:14px;color:#666;margin:0 0 8px;line-height:1.5}.app-payment-result-code{font-size:12px;color:#999;margin:0 0 24px}.app-payment-result-btn{padding:12px 32px;background:#1e40af;color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;margin-top:16px}.app-payment-result-btn:hover{background:#1d4ed8}.app-payment-widget-info{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#f8fafc;border-radius:12px;margin-bottom:16px;font-size:15px;font-weight:600;color:#333}.app-payment-widget-amount{color:#1e40af;font-size:18px;font-weight:800}.app-absence-page{min-height:100vh;background:#f8f9fa}.app-absence-content{padding:16px}.app-absence-list{display:flex;flex-direction:column;gap:10px}.app-absence-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px}.app-absence-item-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.app-absence-type-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600}.app-absence-type-badge.absence{background:#fee2e2;color:#991b1b}.app-absence-type-badge.late{background:#fef9c3;color:#854d0e}.app-absence-reason-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:500;background:#f3f4f6;color:#374151}.app-absence-status{margin-left:auto;font-size:12px;font-weight:600;padding:3px 10px;border-radius:6px}.app-absence-status.pending{background:#fffbeb;color:#b45309}.app-absence-status.confirmed{background:#ecfdf5;color:#059669}.app-absence-date-range{font-size:14px;color:#374151;font-weight:500;margin-bottom:4px}.app-absence-memo{font-size:13px;color:#6b7280;background:#f9fafb;padding:8px 12px;border-radius:8px;margin-bottom:4px}.app-absence-created{font-size:12px;color:#9ca3af}.app-absence-class-badges{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.app-absence-class-badge{font-size:11px;padding:2px 8px;border-radius:4px;background:#dbeafe;color:#1e40af;font-weight:500}.app-absence-edit-btn{padding:4px 14px;border-radius:6px;border:1px solid #3b82f6;background:#fff;color:#3b82f6;font-size:13px;font-weight:500;cursor:pointer}.app-absence-actions{display:flex;gap:8px;margin-top:8px}.app-absence-form{background:#fff;border-radius:12px;padding:20px 16px}.app-absence-type-toggle{display:flex;gap:8px}.app-toggle-btn{flex:1;padding:10px;border:2px solid #e5e7eb;border-radius:10px;background:#fff;font-size:15px;font-weight:600;color:#6b7280;cursor:pointer;transition:all .15s}.app-toggle-btn.active{border-color:#3b82f6;background:#eff6ff;color:#1e40af}.app-absence-date-inputs{display:flex;align-items:center;gap:8px}.app-absence-date-inputs input[type=date]{flex:1;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;color:#333}.app-date-separator{font-size:16px;color:#9ca3af}.app-form-label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.app-form-label-row label{margin-bottom:0}.app-form-link-btn{background:none;border:none;color:#3b82f6;font-size:13px;cursor:pointer;padding:0;font-weight:500}.app-absence-class-list{display:flex;flex-direction:column;gap:8px}.app-absence-class-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e5e7eb;border-radius:10px;cursor:pointer;transition:border-color .15s}.app-absence-class-item.selected{border-color:#3b82f6;background:#f0f7ff}.app-absence-class-name{font-size:14px;color:#333;font-weight:500}.app-absence-no-class{padding:20px;text-align:center;color:#999;font-size:14px}.app-absence-reason-options{display:flex;flex-wrap:wrap;gap:8px}.app-reason-btn{padding:8px 16px;border:1px solid #d1d5db;border-radius:20px;background:#fff;font-size:14px;color:#374151;cursor:pointer;transition:all .15s}.app-reason-btn.active{border-color:#3b82f6;background:#3b82f6;color:#fff}.sms-history-filter{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.sms-history-filter-label{font-weight:600;color:#333;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:220px;outline:none;transition:border-color .15s}.sms-history-search-input:focus{border-color:#3b82f6}.sms-history-search-input::placeholder{color:#aaa}.sms-history-search-clear{position:absolute;right:6px;background:none;border:none;color:#999;cursor:pointer;font-size:12px;padding:2px 4px;line-height:1}.sms-history-search-clear:hover{color:#333}.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:#333;padding:6px 10px;background:#f0f0f0;border-radius:4px}.sms-history-summary-table{width:100%}.sms-history-summary-table th,.sms-history-summary-table td{padding:6px 10px;text-align:center;font-size:13px;border-bottom:1px solid #e5e5e5}.sms-history-summary-table th{background:#f8f8f8;font-weight:600;color:#444}.sms-history-summary-table tbody tr:hover{background:#eef4ff}.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-wrap{overflow-x:auto;max-height:500px;overflow-y:auto}.sms-history-detail-table{width:100%;min-width:700px}.sms-history-detail-table th,.sms-history-detail-table td{padding:5px 8px;font-size:13px;border-bottom:1px solid #e5e5e5;white-space:nowrap}.sms-history-detail-table th{background:#f8f8f8;font-weight:600;color:#444;position:sticky;top:0;z-index:1}.sms-history-detail-table td.sms-message-cell{white-space:pre-wrap;word-break:break-all;min-width:200px}.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-detail-table tbody tr:hover{background:#f5f8ff}.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:#333;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{body.print-test-result{background:#fff!important}body.print-test-result *{visibility:hidden!important}body.print-test-result .learning-test-section,body.print-test-result .learning-test-section *{visibility:visible!important}body.print-test-result .learning-test-section{position:absolute;left:0;top:0;width:100%;padding:0;margin:0}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{display:none!important}@page{margin:10mm}body.print-test-result .learning-course-title{font-size:16px!important;font-weight:700!important;border-bottom:2px solid #333!important;padding:8px 0 4px!important;margin-bottom:8px!important;text-align:center!important;page-break-before:auto}body.print-test-result .learning-score-table{width:100%!important;border-collapse:collapse!important;font-size:11px!important;page-break-inside:avoid}body.print-test-result .learning-score-table th,body.print-test-result .learning-score-table td{border:1px solid #333!important;padding:4px 6px!important;text-align:center!important;background:#fff!important;color:#000!important}body.print-test-result .learning-score-table th{background:#eee!important;font-weight:700!important}body.print-test-result .learning-score-input{border:none!important;background:transparent!important;text-align:center!important;font-size:11px!important;color:#000!important;padding:0!important;width:auto!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 .learning-assignment-status-buttons .assignment-status-btn{border:none!important;background:transparent!important;padding:0!important;font-size:10px!important;color:#999!important}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn.active{color:#000!important;font-weight:700!important}body.print-test-result .learning-assignment-status-buttons .assignment-status-btn:not(.active){display:none!important}body.print-test-result .learning-score-input.pass{color:#166534!important}body.print-test-result .learning-score-input.fail{color:#991b1b!important}body.print-test-result .learning-makeup-badge,body.print-test-result .learning-absent-badge,body.print-test-result .learning-pending-badge{font-size:9px!important;padding:1px 4px!important;border:1px solid #333!important}body.print-test-result .learning-score-table tr.retest-row td{background:#fef9c3!important}body.print-test-result .learning-course-group{margin-bottom:20px!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:wrap}.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{width:100%;border-collapse:collapse;font-size:14px}.entrance-test-content .data-table thead{background:#f8fafc}.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}.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{background:#fef3c7;color:#92400e}.entrance-test-content .status-completed{background:#dcfce7;color:#166534}.entrance-test-content .status-cancelled{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:12px;margin-top:24px;padding-top:20px;border-top:1px solid #e5e7eb}.entrance-test-summary .summary-item{display:flex;align-items:center;gap:10px;padding:10px 18px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.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:24px;max-width:1800px}.entrance-test-left{flex:1;min-width:0}.entrance-test-right{width:360px;flex-shrink:0}.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:8px 6px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .15s}.schedule-slot-btn:hover{border-color:#2563eb;background:#eff6ff}.schedule-slot-btn.selected{border-color:#2563eb;background:#dbeafe}.schedule-slot-btn.has-students{background:#f0fdf4;border-color:#86efac}.schedule-slot-btn.has-students.selected{background:#dcfce7;border-color:#22c55e}.schedule-slot-btn .slot-time{font-size:12px;font-weight:500;color:#374151}.schedule-slot-btn .slot-count{font-size:11px;color:#6b7280}.schedule-slot-btn.has-students .slot-count{color:#166534;font-weight:600}.selected-slot-students{margin-top:16px;padding-top:16px;border-top:1px solid #e5e7eb}.selected-slot-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.selected-slot-header .badge{display:inline-block;padding:3px 8px;border-radius:10px;font-size:11px;font-weight:600}.selected-slot-header .badge-teal{background:#ccfbf1;color:#0f766e}.selected-slot-header .badge-blue{background:#dbeafe;color:#1d4ed8}.selected-slot-datetime{font-size:14px;font-weight:600;color:#374151}.selected-slot-count{font-size:13px;color:#6b7280;margin-left:auto}.no-students{padding:20px;text-align:center;color:#9ca3af;font-size:13px}.students-list{display:flex;flex-direction:column;gap:6px;max-height:250px;overflow-y:auto}.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}.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:#fff;border:1px solid #dc2626;border-radius:6px;color:#dc2626;cursor:pointer;transition:all .15s}.entrance-test-page .btn-delete:hover{background:#fef2f2}.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:#9ca3af;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:10px;color:#9ca3af;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:11px;color:#9ca3af;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}.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-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}}.student-operation-page{max-width:900px;margin:0 auto;padding:24px}.page-header{margin-bottom:24px}.page-header h1{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0 0 16px}.header-controls{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.summary-badges{display:flex;gap:12px}.badge{display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:.9rem}.badge-school{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af}.badge-student{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#166534}.badge-icon{font-size:1.1rem}.badge-value{font-weight:700;font-size:1.1rem}.badge-label{color:inherit;opacity:.8}.action-controls{display:flex;gap:8px}.sort-select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;color:#374151;background:#fff;cursor:pointer}.sort-select:focus{outline:none;border-color:#3b82f6}.refresh-btn{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s}.refresh-btn:hover:not(:disabled){background:#2563eb}.refresh-btn:disabled{background:#9ca3af;cursor:not-allowed}.operation-content{display:flex;flex-direction:column;gap:24px}.loading-message,.empty-message{text-align:center;padding:60px 20px;color:#6b7280;font-size:1rem;background:#f9fafb;border-radius:12px}.school-grid{display:flex;flex-direction:column;gap:8px}.school-card{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;cursor:pointer;transition:all .2s}.school-card:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f61a}.school-card.selected{border-color:#3b82f6;background:#eff6ff;box-shadow:0 2px 8px #3b82f626}.school-rank{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border-radius:50%;font-size:.8rem;font-weight:600;color:#6b7280;flex-shrink:0}.school-card.selected .school-rank{background:#3b82f6;color:#fff}.school-info{display:flex;align-items:center;gap:8px;min-width:180px}.school-name{font-weight:500;color:#1f2937}.school-count{font-weight:600;color:#3b82f6;background:#eff6ff;padding:2px 8px;border-radius:4px;font-size:.85rem}.school-card.selected .school-count{background:#3b82f6;color:#fff}.school-bar{flex:1;height:8px;background:#f3f4f6;border-radius:4px;overflow:hidden}.school-bar-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:4px;transition:width .3s ease}.school-card.selected .school-bar-fill{background:linear-gradient(90deg,#2563eb,#3b82f6)}.school-students-detail{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #0000000d}.detail-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e5e7eb}.detail-header h3{display:flex;align-items:center;gap:12px;margin:0;font-size:1rem;font-weight:600}.detail-school-name{color:#1f2937}.detail-count{background:#3b82f6;color:#fff;padding:4px 10px;border-radius:6px;font-size:.85rem}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:1rem;color:#6b7280;cursor:pointer;transition:all .2s}.close-btn:hover{background:#f3f4f6;color:#1f2937}.students-detail-table{width:100%;border-collapse:collapse;font-size:.9rem}.students-detail-table th,.students-detail-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #f3f4f6}.students-detail-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:.85rem}.students-detail-table tbody tr:last-child td{border-bottom:none}.students-detail-table tbody tr:hover{background:#f9fafb}.students-detail-table .col-no{width:50px;text-align:center;color:#9ca3af}.students-detail-table .col-name{width:100px;font-weight:500;color:#1f2937}.students-detail-table .col-grade{width:80px;color:#6b7280}.students-detail-table .col-course{color:#6b7280}.students-detail-table .col-phone{width:140px;color:#6b7280;font-family:monospace}@media(max-width:768px){.student-operation-page{padding:16px}.header-controls{flex-direction:column;align-items:flex-start}.summary-badges{width:100%}.badge{flex:1;justify-content:center}.action-controls{width:100%}.sort-select,.refresh-btn{flex:1}.school-info{min-width:auto;flex:1}.school-bar,.students-detail-table .col-course{display:none}.students-detail-table .col-phone{width:auto}}.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:#fee2e2;color:#991b1b}.video-management-page .btn-delete:hover{background:#fecaca}.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 .watch-log-table{width:100%;border-collapse:collapse}.video-management-page .watch-log-table th,.video-management-page .watch-log-table td{padding:12px;text-align:left;border-bottom:1px solid #e5e7eb;font-size:14px}.video-management-page .watch-log-table th{background:#f9fafb;font-weight:600;color:#374151}.video-management-page .watch-log-table td{color:#111827}.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:1200px;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:24px}.syllabus-management-page .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.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:none;border:1px solid #fca5a5;color:#dc2626;padding:4px 10px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}.syllabus-management-page .btn-delete-small:hover{background:#fef2f2}.syllabus-management-page .weekly-section{padding:16px}.syllabus-management-page .week-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:20px}.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:16px;padding-bottom:12px;border-bottom:2px solid #e5e7eb}.syllabus-management-page .week-number{font-size:18px;font-weight:700;color:#2563eb}.syllabus-management-page .week-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.syllabus-management-page .day-column{background:#fff;border-radius:8px;padding:16px;border:1px solid #e5e7eb}.syllabus-management-page .day-column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .day-column-header h4{margin:0;font-size:14px;font-weight:600;color:#374151}.syllabus-management-page .day-date-input{display:flex;align-items:center;gap:8px}.syllabus-management-page .day-date-input label{font-size:12px;font-weight:500;color:#6b7280;white-space:nowrap}.syllabus-management-page .day-date-input input{padding:5px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;width:140px}.syllabus-management-page .day-column h4{margin:0 0 16px;font-size:14px;font-weight:600;color:#374151;padding-bottom:8px;border-bottom:1px solid #e5e7eb}.syllabus-management-page .syllabus-week-table{width:100%;border-collapse:collapse;font-size:13px}.syllabus-management-page .syllabus-week-table td{border:1px solid #e5e7eb;padding:8px 10px;vertical-align:middle}.syllabus-management-page .syllabus-week-table .td-area{text-align:center;font-weight:600;font-size:12px;color:#374151;background:#f9fafb;white-space:nowrap}.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:12px;color:#6b7280;white-space:nowrap}.syllabus-management-page .syllabus-week-table .td-content{padding:4px 6px}.syllabus-management-page .syllabus-week-table .td-content input{width:100%;border:none;outline:none;font-size:13px;padding:4px 6px;background:transparent;font-family:inherit}.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:4px}.syllabus-management-page .syllabus-week-table .td-action .btn-remove-item{background:#fee2e2;color:#dc2626;border:none;width:22px;height:22px;border-radius:4px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}.syllabus-management-page .day-column .form-group{margin-bottom:12px}.syllabus-management-page .day-column .form-group:last-child{margin-bottom:0}.syllabus-management-page .day-column .form-group label{font-size:12px;color:#6b7280;margin-bottom:4px}.syllabus-management-page .day-column .form-group input,.syllabus-management-page .day-column .form-group textarea{padding:8px 10px;font-size:13px}.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-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}@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}}.textbook-management-page{padding:24px;max-width:1400px;margin:0 auto}.textbook-header{margin-bottom:24px}.textbook-header h1{font-size:24px;font-weight:700;color:#1f1f1f;margin:0}.textbook-tabs{display:flex;gap:4px;background:#f3ede4;padding:4px;border-radius:10px;margin-bottom:24px;width:fit-content}.textbook-tab{padding:10px 24px;border:none;background:transparent;color:#5e5a54;font-size:14px;font-weight:500;cursor:pointer;border-radius:8px;transition:all .2s}.textbook-tab:hover{color:#1f1f1f}.textbook-tab.active{background:#fff9f1;color:#1f1f1f;box-shadow:0 1px 3px #0000001a}.textbook-content{background:#fff9f1;border:1px solid #e2d6c7;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{padding:10px 14px;border:1px solid #e2d6c7;border-radius:8px;font-size:14px;color:#1f1f1f;background:#fff;min-width:140px}.filter-input{padding:10px 14px;border:1px solid #e2d6c7;border-radius:8px;font-size:14px;color:#1f1f1f;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}.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;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-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.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:20px 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:24px}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb}.form-group{margin-bottom:16px}.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-row .form-group{flex:1}.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:400px;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-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%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;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{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;border:1px solid #e5e7eb}.textbook-list-table thead{background:#f9fafb}.textbook-list-table th{padding:12px 14px;text-align:center;font-size:13px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb;white-space:nowrap}.textbook-list-table td{padding:10px 14px;text-align:center;font-size:14px;color:#111827;border-bottom:1px solid #f3f4f6;vertical-align:middle}.textbook-list-table tbody tr:hover{background:#f9fafb}.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}.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;padding:16px}.set-class-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.set-class-info h3{font-size:15px;font-weight:600;color:#111827;margin:0 0 4px}.set-class-meta{font-size:13px;color:#6b7280}.set-status-badge{font-size:12px;font-weight:500;padding:4px 10px;border-radius:12px}.set-status-badge.has-set{background:#dcfce7;color:#166534}.set-status-badge.no-set{background:#f3f4f6;color:#6b7280}.set-detail{background:#f9fafb;border-radius:8px;padding:12px}.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:12px;text-align:center}.class-info-box{background:#f3f4f6;padding:12px;border-radius:8px;font-size:14px;color:#374151;font-weight:500}.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}.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}.grade-management-page{padding:20px;max-width:1200px;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!important;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:#fee2e2;color:#dc2626;border:1px solid #fca5a5;border-radius:4px;cursor:pointer;transition:all .2s}.btn-delete-small:hover{background:#fecaca;border-color:#f87171}.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:#fef2f2;border:1px solid #fecaca;color:#dc2626}.actions-cell .btn-delete:hover{background:#fee2e2;border-color:#f87171}.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:#fef2f2;border:1px solid #fecaca;color:#dc2626}.template-card-actions .btn-delete:hover{background:#fee2e2;border-color:#f87171}.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!important}.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!important}.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!important;border:1px solid #d1d5db!important;border-radius:6px!important;font-size:.9rem!important}.section-name-select{min-width:120px;padding:8px 12px!important;border:1px solid #d1d5db!important;border-radius:6px!important;font-size:.9rem!important;background:#fff;cursor:pointer}.section-name-select:focus{outline:none;border-color:#3b82f6!important;box-shadow:0 0 0 2px #3b82f626}.section-name-input{flex:1;min-width:80px;padding:8px 12px!important;border:1px solid #d1d5db!important;border-radius:6px!important;font-size:.9rem!important}.section-name-input:focus{outline:none;border-color:#3b82f6!important;box-shadow:0 0 0 2px #3b82f626}.section-number{width:60px!important;padding:8px 10px!important;border:1px solid #d1d5db!important;border-radius:6px!important;font-size:.9rem!important;text-align:center}.section-points{width:70px!important;padding:8px 10px!important;border:1px solid #d1d5db!important;border-radius:6px!important;font-size:.9rem!important;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}.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:6px 10px;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}@keyframes spin{to{transform:rotate(360deg)}}.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}.grades-table .td-id{font-size:.85rem;color:#64748b;font-family:monospace}.grades-table .td-class{font-size:.85rem;color:#64748b;max-width:200px;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}.grade-detail-modal{max-width:1100px;width:95%;max-height:90vh;overflow-y:auto}.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!important;padding:0!important;border-radius:0!important}.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!important;font-size:.7rem;padding:5px 8px}.analysis-matrix-table .th-category:first-of-type{border-left:1px solid #4b5563!important}.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!important}.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{display:flex;justify-content:center;margin-top:24px;padding-top:20px;border-top:1px solid #e5e7eb}.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!important}}.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}@page{margin:0;size:A4 portrait}.grade-detail-modal,.modal-content.grade-detail-modal{padding:10mm!important}}.student-list-page{padding:24px;max-width:1400px;margin:0 auto}.student-list-header{margin-bottom:24px}.student-list-header h2{font-size:1.5rem;font-weight:700;color:#1e293b;margin:0 0 4px}.student-list-header span{font-size:.875rem;color:#64748b}.student-list-filters{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.student-list-filters .filter-row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}.student-list-filters .filter-item{display:flex;flex-direction:column;gap:5px;min-width:140px;flex:1}.student-list-filters .filter-item label{font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.03em}.student-list-filters .filter-item input,.student-list-filters .filter-item 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}.student-list-filters .filter-item input:focus,.student-list-filters .filter-item select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.student-list-filters .filter-item input::placeholder{color:#94a3b8}.student-list-filters .filter-actions{min-width:auto;flex:0}.student-list-filters .btn-reset{height:38px;padding:0 18px;background:#f1f5f9;color:#475569;border:1px solid #cbd5e1;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.student-list-filters .btn-reset:hover{background:#e2e8f0;color:#1e293b}.student-list-summary{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding:0 4px}.student-list-summary span{font-size:.875rem;color:#64748b;font-weight:500}.student-list-summary .count{font-weight:700;color:#3b82f6}.student-list-table-wrapper{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000000a}.student-list-loading{padding:60px 0;text-align:center;color:#64748b;font-size:.9rem}.student-list-table{width:100%;border-collapse:collapse}.student-list-table thead{background:#f8fafc;border-bottom:1px solid #e2e8f0}.student-list-table thead th{padding:12px 16px;text-align:left;font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.student-list-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background-color .1s}.student-list-table tbody tr:last-child{border-bottom:none}.student-list-table tbody tr:hover{background:#f8fafc}.student-list-table tbody td{padding:12px 16px;font-size:.875rem;color:#334155;white-space:nowrap}.student-list-table .name-cell{font-weight:600;color:#1e293b}.student-list-table .grade-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;background:#ede9fe;color:#5b21b6}.student-list-table .grade-badge.grade-P{background:#dbeafe;color:#1e40af}.student-list-table .grade-badge.grade-M{background:#ede9fe;color:#5b21b6}.student-list-table .grade-badge.grade-H{background:#fce7f3;color:#9d174d}.student-list-table .phone-cell{font-variant-numeric:tabular-nums;color:#64748b}.student-list-table .id-cell{font-family:SF Mono,Consolas,monospace;font-size:.8rem;color:#64748b}.student-list-table .enrollment-badges{display:flex;flex-wrap:wrap;gap:4px}.student-list-table .enrollment-badge{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}.student-list-table .no-data{padding:60px 16px;text-align:center;color:#94a3b8;font-size:.9rem}.notice-management-page{padding:24px;max-width:1200px;margin:0 auto}.notice-management-page .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.notice-management-page .page-header h1{font-size:24px;font-weight:600;color:#111827;margin:0}.notice-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}.notice-management-page .btn-primary:hover{background:#1d4ed8}.notice-management-page .btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.notice-management-page .notice-list{background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.notice-management-page .notice-table{width:100%;border-collapse:collapse}.notice-management-page .notice-table th,.notice-management-page .notice-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e5e7eb}.notice-management-page .notice-table th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}.notice-management-page .notice-table td{color:#111827;font-size:14px}.notice-management-page .notice-table tr:last-child td{border-bottom:none}.notice-management-page .notice-table tr:hover td{background:#f9fafb}.notice-management-page .text-center{text-align:center}.notice-management-page .text-muted{color:#6b7280}.notice-management-page .action-buttons{display:flex;gap:8px;justify-content:center}.notice-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}.notice-management-page .btn-small:hover{background:#f3f4f6}.notice-management-page .btn-small.btn-danger{border-color:#fca5a5;color:#dc2626}.notice-management-page .btn-small.btn-danger:hover{background:#fef2f2}.notice-management-page .empty-message{text-align:center;padding:60px 20px;color:#6b7280}.notice-management-page .empty-message p{margin:4px 0}@media(max-width:768px){.notice-management-page{padding:16px}.notice-management-page .page-header{flex-wrap:wrap;gap:12px}.notice-management-page .notice-table{font-size:13px}.notice-management-page .notice-table th,.notice-management-page .notice-table td{padding:10px 8px}}.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}.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-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.school-analysis-page .period-tab{padding:8px 16px;border:1px solid #d1d5db;border-radius:20px;background:#fff;color:#374151;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.school-analysis-page .period-tab:hover{background:#f3f4f6;border-color:#9ca3af}.school-analysis-page .period-tab.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.school-analysis-page .loading,.school-analysis-page .empty-state{text-align:center;padding:40px;color:#666}.school-analysis-page .analysis-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.school-analysis-page .analysis-table th,.school-analysis-page .analysis-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e5e7eb}.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:#fee2e2;color:#dc2626}.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-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 .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:#fbbf24}.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 .ratio-grid{grid-template-columns:repeat(2,1fr)}.school-analysis-page .form-group.full-width{grid-column:span 2}.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}.point-management-page{max-width:1200px;margin:0 auto;padding:32px 24px}.point-management-page h1{font-size:1.5rem;font-weight:700;margin-bottom:20px}.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:160px}.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:#ef4444;background:none;border:1px solid #fecaca;border-radius:4px;padding:3px 10px;cursor:pointer;transition:background .15s}.delete-btn-small:hover{background:#fef2f2}.point-history-table{width:100%;border-collapse:collapse;font-size:.85rem}.point-history-table th{background:#f8fafc;padding:10px 12px;text-align:left;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb;white-space:nowrap}.point-history-table td{padding:10px 12px;border-bottom:1px solid #f3f4f6;color:#4b5563}.point-history-table tr:hover td{background:#f9fafb}.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 .btn-edit:hover{background:#f0f9ff;border-color:#93c5fd;color:#2563eb}.category-item-actions .btn-del{color:#ef4444;border-color:#fecaca}.category-item-actions .btn-del:hover{background:#fef2f2}.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%}}
