@import "https://fonts.googleapis.com/css2?family=Pretendard:wght@300;400;500;600;700&display=swap";
:root{--bg-color:#0f172a;--panel-bg:#1e293bb3;--text-main:#f8fafc;--text-muted:#94a3b8;--primary:#3b82f6;--primary-hover:#2563eb;--success:#10b981;--danger:#ef4444;--border:#ffffff1a}:root[data-theme=light]{--bg-color:#f8fafc;--panel-bg:#ffffffe6;--text-main:#1e293b;--text-muted:#64748b;--primary:#2563eb;--primary-hover:#1d4ed8;--success:#059669;--danger:#dc2626;--border:#0000001a}:root[data-theme=blue]{--bg-color:#e0f2fe;--panel-bg:#ffffffe6;--text-main:#0c4a6e;--text-muted:#0284c7;--primary:#0284c7;--primary-hover:#0369a1;--success:#059669;--danger:#dc2626;--border:#0284c733}:root[data-theme=green]{--bg-color:#ecfdf5;--panel-bg:#ffffffe6;--text-main:#064e3b;--text-muted:#059669;--primary:#059669;--primary-hover:#047857;--success:#16a34a;--danger:#dc2626;--border:#05966933}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);background-image:radial-gradient(circle at 15%,#3b82f626 0%,#0000 50%),radial-gradient(circle at 85% 30%,#10b98126 0%,#0000 50%);background-attachment:fixed;flex-direction:column;min-height:100vh;font-family:Pretendard,sans-serif;line-height:1.6;display:flex}:root[data-theme=light] body,:root[data-theme=blue] body,:root[data-theme=green] body{background-image:none}.container{flex:1;max-width:1200px;margin:0 auto;padding:2rem}.header{text-align:center;margin-bottom:2rem}.header h1{background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:.5rem;font-size:2.5rem;font-weight:700}.header p{color:var(--text-muted);font-size:1.1rem}.step-indicator{justify-content:center;align-items:center;gap:0;margin-bottom:2.5rem;display:flex}.step-item{cursor:default;flex-direction:column;align-items:center;gap:.5rem;transition:all .3s;display:flex}.step-item.completed{cursor:pointer}.step-circle{border:2px solid var(--border);width:44px;height:44px;color:var(--text-muted);background:#0000004d;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;font-weight:700;transition:all .3s;display:flex}.step-item.active .step-circle{border-color:var(--primary);background:linear-gradient(135deg, var(--primary), #8b5cf6);color:#fff;box-shadow:0 0 20px #3b82f666}.step-item.completed .step-circle{border-color:var(--success);background:var(--success);color:#fff}.step-label{color:var(--text-muted);white-space:nowrap;font-size:.85rem;font-weight:500}.step-item.active .step-label{color:var(--primary);font-weight:600}.step-item.completed .step-label{color:var(--success)}.step-line{background:var(--border);width:60px;height:2px;margin:0 .75rem 1.5rem;transition:background .3s}.step-line.completed{background:var(--success)}.glass-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:1rem;padding:2rem;transition:transform .3s,box-shadow .3s;box-shadow:0 8px 32px #0000004d}.step-content{animation:.4s fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.form-group{margin-bottom:1.5rem}.form-group label{color:#e2e8f0;margin-bottom:.25rem;font-size:1.05rem;font-weight:600;display:block}.file-input-wrapper{background:#ffffff08;border:2px dashed #fff3;border-radius:.75rem;width:100%;transition:all .3s;display:inline-block;position:relative;overflow:hidden}.file-input-wrapper.drag-active{border-color:var(--primary);background:#3b82f626;transform:scale(1.02);box-shadow:0 0 15px #3b82f64d}.file-input-wrapper input[type=file]{opacity:0;cursor:pointer;height:100%;font-size:100px;position:absolute;top:0;left:0}.file-btn{width:100%;color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;padding:1rem;transition:all .2s;display:flex}.fixed-grid{grid-template-columns:70px repeat(5,1fr);gap:4px;display:grid}.fixed-grid-header{text-align:center;color:#e2e8f0;padding:.5rem;font-weight:600}.fixed-grid-label{text-align:right;color:var(--text-muted);align-self:center;padding-right:8px;font-size:.9rem}.fixed-grid-cell{text-align:center;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:6px;min-height:38px;padding:.6rem;transition:all .2s}.fixed-grid-cell:hover:not(.disabled){background:#3b82f626;border-color:#3b82f64d}.fixed-grid-cell.locked{color:#cbd5e1;background:#475569;border-color:#94a3b8}.fixed-grid-cell.disabled{cursor:default;background:0 0;border:none}.periods-grid{grid-template-columns:repeat(5,1fr);gap:1rem;display:grid}.period-item{text-align:center}.period-item label{color:var(--text-muted);margin-bottom:.5rem;font-size:.9rem;display:block}.period-item input{border:1px solid var(--border);color:#fff;text-align:center;background:#0003;border-radius:.5rem;width:100%;padding:.5rem;font-size:1.1rem}.period-item input:focus{border-color:var(--primary);outline:none}.btn-primary{background:linear-gradient(135deg, var(--primary), #8b5cf6);color:#fff;cursor:pointer;border:none;border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem;font-size:1.1rem;font-weight:600;transition:transform .2s,opacity .2s;display:inline-flex}.btn-primary:hover{opacity:.9;transform:translateY(-2px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:#ffffff1a;border-radius:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;transition:all .2s}.btn-secondary:hover{color:#fff;background:#ffffff26}.btn-download{color:#fff;border:1px solid var(--border);cursor:pointer;background:#ffffff1a;border-radius:.5rem;padding:.5rem 1rem;font-weight:500;transition:background .2s}.btn-download:hover{background:#fff3}.summary-cards{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.summary-card{background:var(--panel-bg);border:1px solid var(--border);text-align:center;border-radius:.75rem;padding:1.25rem;transition:transform .2s}.summary-card:hover{transform:translateY(-2px)}.summary-number{color:var(--primary);margin-bottom:.25rem;font-size:2rem;font-weight:700;line-height:1}.summary-label{color:var(--text-muted);font-size:.85rem}.group-table-wrapper{overflow-x:auto}.group-table{border-collapse:collapse;width:100%;font-size:.95rem}.group-table th{text-align:left;color:#e2e8f0;border-bottom:2px solid var(--border);white-space:nowrap;background:#0000004d;padding:.75rem 1rem;font-weight:600}.group-table td{border-bottom:1px solid var(--border);color:#e2e8f0;padding:.6rem 1rem}.group-table tr:hover{background:#ffffff08}.group-badge{background:linear-gradient(135deg, var(--primary), #8b5cf6);color:#fff;border-radius:1rem;padding:.15rem .6rem;font-size:.85rem;font-weight:600;display:inline-block}.group-badge.warning{background:linear-gradient(135deg,#f59e0b,#ef4444)}.status-badge{border-radius:.25rem;padding:.15rem .5rem;font-size:.8rem;font-weight:600;display:inline-block}.status-badge.success{color:#34d399;background:#10b98133}.status-badge.danger{color:#f87171;background:#ef444433}.teacher-grid{grid-template-columns:repeat(4,1fr);gap:.75rem;display:grid}.teacher-card{border:1px solid var(--border);background:#0003;border-radius:.5rem;padding:.75rem;transition:transform .2s}.teacher-card:hover{transform:translateY(-2px)}.teacher-name{color:#e2e8f0;margin-bottom:.25rem;font-weight:600}.teacher-hours{color:var(--primary);font-size:1.2rem;font-weight:700}.teacher-subjects{color:var(--text-muted);margin-top:.25rem;font-size:.8rem}.error-card{border-left:4px solid var(--danger);background:#ef44441a;border-radius:.5rem;margin-top:1rem;padding:1.5rem}.error-card h3{color:#f87171;margin-bottom:.5rem}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.modal-content{border:1px solid var(--border);background:#1e293b;border-radius:1rem;width:100%;max-width:700px;max-height:80vh;padding:2rem;overflow-y:auto;box-shadow:0 25px 50px #00000080}.loader{vertical-align:middle;border:3px solid #ffffff1a;border-top-color:#fff;border-radius:50%;width:24px;height:24px;animation:1s linear infinite spin;display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.footer{text-align:center;border-top:1px solid var(--border);color:var(--text-muted);margin-top:auto;padding:2rem;font-size:.9rem}.footer a{color:var(--primary);text-decoration:none;transition:color .2s}.footer a:hover{color:#60a5fa;text-decoration:underline}.timetable-editor{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:1rem;margin-top:1rem;padding:1.5rem;box-shadow:0 8px 32px #0000004d}.editor-header{flex-direction:column;gap:1rem;margin-bottom:1.5rem;display:flex}.controls-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.view-toggles{background:#0003;border-radius:.5rem;gap:.5rem;padding:.25rem;display:flex}.toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:.375rem;padding:.5rem 1rem;font-weight:500;transition:all .2s}.toggle-btn.active{background:var(--primary);color:#fff}.selector select{color:#fff;border:1px solid var(--border);background:#0000004d;border-radius:.5rem;outline:none;padding:.5rem 1rem;font-size:1rem}.selector select:focus{border-color:var(--primary)}.actions-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.status-indicator{background:#0003;border-radius:.5rem;padding:.5rem 1rem;font-weight:600}.text-danger{color:#f87171}.text-success{color:#34d399}.timetable-grid{border:1px solid var(--border);border-radius:.5rem;flex-direction:column;display:flex;overflow:hidden}.grid-header-row,.grid-row{border-bottom:1px solid var(--border);grid-template-columns:80px repeat(5,1fr);display:grid}.grid-row:last-child{border-bottom:none}.grid-header-cell,.grid-corner{text-align:center;border-right:1px solid var(--border);background:#0006;padding:.75rem;font-weight:600}.grid-time-cell{text-align:center;border-right:1px solid var(--border);background:#0003;flex-direction:column;justify-content:center;align-items:center;padding:1rem .5rem;font-weight:500;display:flex}.grid-cell{border-right:1px solid var(--border);background:#ffffff05;min-height:80px;padding:.5rem;transition:all .2s}.grid-cell:last-child{border-right:none}.grid-cell.disabled{background:#0000004d;position:relative}.grid-cell.disabled:after{content:"";background:repeating-linear-gradient(45deg,#0000,#0000 10px,#ffffff05 10px 20px);position:absolute;inset:0}.grid-cell.drag-over{box-shadow:inset 0 0 0 2px var(--primary);background:#3b82f633}.cell-blocks{flex-direction:column;gap:.5rem;height:100%;display:flex}.schedule-block{cursor:grab;background:#3b82f626;border:1px solid #3b82f64d;border-radius:.375rem;padding:.5rem;font-size:.85rem;transition:transform .2s}.schedule-block:active{cursor:grabbing}.schedule-block:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0003}.schedule-block.moving{background:#8b5cf626;border-color:#8b5cf64d}.schedule-block.conflict{background:#ef444426;border-color:#ef444480;animation:2s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #ef444466}70%{box-shadow:0 0 0 6px #ef444400}to{box-shadow:0 0 #ef444400}}.conflict-badge{color:#fff;background:#ef4444;border-radius:.25rem;margin-top:.25rem;padding:.1rem .3rem;font-size:.7rem;font-weight:700;display:inline-block}.timetable-editor.all-teachers-mode .timetable-grid-container{padding-bottom:1rem;overflow-x:auto}.all-teachers-grid{flex-direction:column;min-width:max-content;display:inline-flex}.all-teachers-grid .grid-header-row,.all-teachers-grid .grid-row{width:100%;display:flex}.all-teachers-grid .grid-header-cell-group,.all-teachers-grid .grid-cell-group{border-right:2px solid var(--primary);flex-direction:row;display:flex}.all-teachers-grid .grid-cell-group:last-child,.all-teachers-grid .grid-header-cell-group:last-child{border-right:none}.all-teachers-grid .grid-header-cell-group{background:#0006;flex-direction:column;padding:0}.all-teachers-grid .day-label{text-align:center;border-bottom:1px solid var(--border);padding:.5rem;font-weight:600}.all-teachers-grid .period-labels{flex:1;display:flex}.all-teachers-grid .period-label{text-align:center;border-right:1px solid var(--border);flex:1;min-width:120px;padding:.5rem}.all-teachers-grid .period-label:last-child{border-right:none}.all-teachers-grid .grid-cell{flex:1;min-width:120px}.all-teachers-grid .grid-time-cell,.all-teachers-grid .grid-corner{background:var(--bg-color);z-index:10;border-right:2px solid var(--border);min-width:120px;position:sticky;left:0}.all-teachers-grid .grid-header-row .grid-corner{z-index:20}.timetable-grid-container.fit-to-screen{overflow-x:hidden}.all-teachers-grid.fit-to-screen{width:100%;min-width:100%}.all-teachers-grid.fit-to-screen .grid-time-cell,.all-teachers-grid.fit-to-screen .grid-corner{min-width:50px;padding:.5rem .2rem;font-size:.8rem}.all-teachers-grid.fit-to-screen .grid-cell,.all-teachers-grid.fit-to-screen .period-label{min-width:0;padding:.2rem;font-size:.75rem}.all-teachers-grid.fit-to-screen .schedule-block{padding:.2rem}.all-teachers-grid.fit-to-screen .block-title{word-break:keep-all;white-space:pre-wrap;font-size:.65rem;line-height:1.1}@media (max-width:768px){.container{padding:1rem}.header h1{font-size:1.8rem}.step-indicator{gap:0}.step-line{width:30px}.step-label{font-size:.75rem}.summary-cards{grid-template-columns:repeat(3,1fr)}.teacher-grid{grid-template-columns:repeat(2,1fr)}.periods-grid{grid-template-columns:repeat(3,1fr)}}
