*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--black: #000000;--white: #FFFFFF;--gray-50: #F9FAFB;--gray-100: #F3F4F6;--gray-200: #E5E7EB;--gray-300: #D1D5DB;--gray-400: #9CA3AF;--gray-500: #6B7280;--gray-700: #374151;--gray-800: #1F2937;--gray-900: #111827;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased}body{background:var(--gray-50);color:var(--gray-900);line-height:1.5}button{font-family:inherit;cursor:pointer}input,select{font-family:inherit;outline:none}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .25s ease-out}@keyframes active-glow{0%,to{box-shadow:0 2px 8px var(--glow, rgba(0,0,0,.25))}50%{box-shadow:0 5px 24px var(--glow, rgba(0,0,0,.45))}}@keyframes dot-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.6}}.class-active{animation:active-glow 2.2s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:18px;height:18px;border:2px solid var(--gray-200);border-top-color:var(--black);border-radius:50%;animation:spin .6s linear infinite;display:inline-block}.schedule-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;width:100%;max-width:100%}.schedule-grid{display:grid;min-width:720px}.schedule-grid-inner{display:grid;grid-template-columns:72px repeat(var(--day-count, 5),1fr);border-left:1px solid var(--gray-200);border-top:1px solid var(--gray-200)}.grid-header-cell{border-right:1px solid var(--gray-200);border-bottom:1px solid var(--gray-200);padding:12px 8px;text-align:center;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--gray-500);background:var(--gray-50)}.grid-header-cell.day-header{color:var(--gray-900);font-size:13px}.grid-time-cell{border-right:1px solid var(--gray-200);border-bottom:1px solid var(--gray-200);padding:10px 6px 8px;display:flex;align-items:flex-start;justify-content:center;font-size:12px;font-weight:600;color:var(--gray-400);background:var(--gray-50);min-height:52px}.grid-cell{border-right:1px solid var(--gray-200);border-bottom:1px solid var(--gray-200);padding:4px;min-height:52px;display:flex;flex-direction:column;gap:3px;background:var(--white);vertical-align:top;transition:background .15s}.grid-cell.drag-over{background:#eff6ff;outline:2px dashed #3B82F6;outline-offset:-2px}.class-block{border-radius:6px;padding:4px 8px;font-size:11.5px;font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;transition:transform .1s,box-shadow .1s,opacity .1s}.class-block:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001f}.class-block.dragging{opacity:.4}.class-block-admin{cursor:grab;display:flex;align-items:center;justify-content:space-between;gap:4px}.class-block-admin:active{cursor:grabbing}.class-block-admin .delete-btn{flex-shrink:0;width:16px;height:16px;border-radius:50%;background:#00000026;color:inherit;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;opacity:0;transition:opacity .15s;border:none;cursor:pointer;line-height:1}.class-block-admin:hover .delete-btn{opacity:1}.admin-layout{display:flex;min-height:100vh}.admin-sidebar{width:220px;flex-shrink:0;background:var(--white);border-right:1px solid var(--gray-200);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.admin-main{flex:1;overflow:hidden;min-width:0}.panel-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--gray-400);padding:12px 14px 6px}.panel-chip{display:block;width:calc(100% - 28px);margin:2px 14px;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600;cursor:grab;border:none;text-align:left;transition:transform .1s,box-shadow .1s}.panel-chip:hover{transform:translate(2px);box-shadow:0 2px 8px #0000001f}.panel-chip:active{cursor:grabbing}.cell-add-btn{width:100%;border:1.5px dashed var(--gray-300);border-radius:5px;background:transparent;color:var(--gray-400);font-size:16px;height:22px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,border-color .15s,color .15s;cursor:pointer;margin-top:2px}.grid-cell:hover .cell-add-btn{opacity:1}.cell-add-btn:hover{border-color:var(--gray-500);color:var(--gray-700)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease-out}.modal-box{background:var(--white);border-radius:16px;padding:28px;width:100%;max-width:360px;box-shadow:0 20px 60px #0003}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:600;border:none;cursor:pointer;transition:all .15s}.btn-primary{background:var(--black);color:var(--white)}.btn-primary:hover{background:var(--gray-800)}.btn-secondary{background:var(--gray-100);color:var(--gray-700)}.btn-secondary:hover{background:var(--gray-200)}.btn-danger{background:#fee2e2;color:#991b1b}.btn-danger:hover{background:#fecaca}.btn:disabled{opacity:.5;cursor:not-allowed}
