:root{--bg-color: #ffffff;--text-color: #1a1a1a;--border-color: #ccc;--nav-bg: #f0f0f0;--active-bg: #e0e0e0;--highlight: #e8f4f8;--card-bg: #ffffff;--subtext-color: #666666;--modal-overlay: rgba(0,0,0,.5);--substitution-bg: #fff3cd;--substitution-text: #856404;--room-substitution-bg: #e1f5fe;--room-substitution-text: #0277bd;--cancelled-bg: #f8d7da;--cancelled-text: #721c24}[data-theme=dark]{--bg-color: #121212;--text-color: #e0e0e0;--border-color: #333333;--nav-bg: #1e1e1e;--active-bg: #333333;--highlight: #1a2a3a;--card-bg: #1e1e1e;--subtext-color: #aaa;--modal-overlay: rgba(0,0,0,.75);--substitution-bg: #3d3314;--substitution-text: #ffe082;--room-substitution-bg: #0d2b3a;--room-substitution-text: #81d4fa;--cancelled-bg: #3a1c1e;--cancelled-text: #ff8a80}*{box-sizing:border-box;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-tap-highlight-color:transparent}html,body{min-height:100%;margin:0;padding:0;background-color:var(--bg-color);color:var(--text-color)}body{background-color:var(--bg-color);color:var(--text-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-tap-highlight-color:transparent}.login-wall{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg-color)}.login-wall-card{width:min(100%,480px);padding:28px;border:1px solid var(--border-color);border-radius:8px;background:var(--card-bg);color:var(--text-color);text-align:center;box-shadow:0 8px 24px #00000014}.login-wall-icon{font-size:2.25rem;margin-bottom:10px}.login-wall-card h1{font-size:1.35rem;margin-bottom:10px}.login-wall-card p{color:var(--subtext-color);line-height:1.5;font-size:.9rem}.login-wall-actions{display:flex;flex-direction:column;gap:8px;margin:20px 0 14px}.login-wall-card small{display:block;color:var(--subtext-color);line-height:1.4}app-root{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}app-navbar{display:block;position:sticky;top:0;z-index:100}app-timetable,app-classes,app-courses,app-settings,app-documentation,app-manual{display:block;width:100%}nav{display:flex;background-color:var(--nav-bg);border-bottom:1px solid var(--border-color);overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.submenu-nav{display:flex;gap:8px;margin-bottom:12px;border-bottom:2px solid var(--border-color);padding-bottom:4px}.submenu-nav button{padding:8px 14px;background:none;border:none;border-bottom:3px solid transparent;color:var(--text-color);font-size:.9rem;font-weight:500;cursor:pointer}.submenu-nav button.active{border-bottom-color:#007acc;font-weight:700;color:#007acc}nav button{flex:1;min-width:80px;padding:12px 10px;background:none;border:none;border-right:1px solid var(--border-color);color:var(--text-color);font-size:.9rem;cursor:pointer}nav button.active{background-color:var(--active-bg);font-weight:700}.view-container{flex:1;padding:8px;width:100%}.view{display:none;width:100%}.view.active{display:block;width:100%}.timetable-controls{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap;background-color:var(--card-bg);padding:8px;border:1px solid var(--border-color);border-radius:6px}.timetable-controls label{font-size:.85rem;font-weight:500}.timetable-controls input[type=date]{width:auto;padding:6px 8px}.timetable-controls .action-btn{width:auto;margin-top:0;padding:6px 12px}.week-badge{background-color:var(--nav-bg);border:1px solid var(--border-color);padding:6px 10px;border-radius:4px;font-size:.85rem;white-space:nowrap}.week-header-cell{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.week-header-cell:hover{background-color:var(--active-bg)}@media(max-width:600px){.timetable-controls-bar{display:none!important}}.timetable-wrapper{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}table.timetable{width:100%;border-collapse:collapse;table-layout:fixed;min-width:320px}table.timetable th,table.timetable td{border:1px solid var(--border-color);text-align:center;padding:4px;font-size:.85rem;word-wrap:break-word}table.timetable th{background-color:var(--nav-bg);color:var(--text-color);position:sticky;top:0;z-index:2}table.timetable tr.break-row{height:1px}table.timetable tr.break-row td{background-color:var(--nav-bg);font-style:italic;font-size:.75rem;color:var(--subtext-color);padding:4px 8px;height:22px;line-height:1.1;border-top:2px solid var(--border-color);border-bottom:2px solid var(--border-color);opacity:.9}td.cell-editable{cursor:pointer}td.cell-editable:hover{background-color:var(--highlight)}td.cell-interactive{cursor:pointer}td.cell-interactive:hover{filter:brightness(.95)}[data-theme=dark] td.cell-interactive:hover{filter:brightness(1.2)}.cell-substitution{background-color:var(--substitution-bg)!important;color:var(--substitution-text)!important;font-weight:700}.cell-room-substitution{background-color:var(--room-substitution-bg)!important;color:var(--room-substitution-text)!important;font-weight:700}.cell-cancelled{background-color:var(--cancelled-bg)!important;color:var(--cancelled-text)!important}.cell-badge{font-size:.7rem;display:block;margin-top:2px;opacity:.85}.message-badge{background-color:#007acc26!important;color:#007acc!important;font-weight:700;border-radius:3px;padding:1px 4px;display:inline-block}.lesson-detail-card{background-color:var(--bg-color);border:1px solid var(--border-color);border-radius:6px;padding:12px;margin-bottom:10px}.status-regular{background-color:var(--nav-bg);color:var(--text-color)}.status-substitution{background-color:var(--substitution-bg);color:var(--substitution-text)}.status-room-substitution{background-color:var(--room-substitution-bg);color:var(--room-substitution-text)}.status-cancelled{background-color:var(--cancelled-bg);color:var(--cancelled-text)}.section{background-color:var(--card-bg);border:1px solid var(--border-color);padding:12px;margin-bottom:12px;border-radius:6px}.section h3{margin-bottom:8px;font-size:1rem}.form-group{margin-bottom:8px;display:flex;flex-direction:column;flex:1}.form-group label{font-size:.8rem;margin-bottom:2px;color:var(--subtext-color)}input,select,textarea,button.action-btn{padding:8px;border:1px solid var(--border-color);border-radius:4px;font-size:.9rem;width:100%;background-color:var(--bg-color);color:var(--text-color)}.side-by-side-row{display:flex;gap:6px;align-items:flex-end;width:100%}.side-by-side-row .form-group{margin-bottom:0}.side-by-side-row input,.side-by-side-row select{padding:6px 4px;font-size:.85rem}.side-by-side-row button.action-btn{margin-top:0;padding:6px 12px;white-space:nowrap;width:auto}button.action-btn{background-color:var(--nav-bg);color:var(--text-color);cursor:pointer;margin-top:4px;border:1px solid var(--border-color)}button.action-btn:active{background-color:var(--active-bg)}ul.list-group{list-style:none;margin-top:8px}ul.list-group li{padding:8px;border:1px solid var(--border-color);margin-bottom:4px;display:flex;justify-content:space-between;align-items:center;border-radius:4px;background-color:var(--card-bg)}.btn-group{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.empty-state-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 12px;border:1px dashed var(--border-color)!important;border-radius:6px;background-color:transparent!important;text-align:center;color:var(--subtext-color);margin-top:4px}.empty-state-icon{font-size:1.5rem;margin-bottom:6px;opacity:.7}.empty-state-text{font-size:.9rem;font-weight:600;color:var(--text-color);margin-bottom:2px}.empty-state-subtext{font-size:.8rem;color:var(--subtext-color)}.btn-group button{flex:1;min-width:120px}.classes-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;max-height:320px;overflow-y:auto;padding:8px;border:1px solid var(--border-color);border-radius:6px;background-color:var(--nav-bg)}.class-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border-color);border-radius:20px;background-color:var(--card-bg);color:var(--text-color);font-size:.85rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .15s ease}.class-chip:hover{background-color:var(--highlight);border-color:#007acc}.class-chip.selected{background-color:#007acc;color:#fff;border-color:#005999;font-weight:700}textarea.script-editor{font-family:monospace;font-size:.85rem;min-height:120px;resize:vertical}.modal{display:none;position:fixed;z-index:100;left:0;top:0;width:100%;height:100%;background-color:var(--modal-overlay);justify-content:center;align-items:center;padding:12px}.modal.active{display:flex}.modal-content{background-color:var(--card-bg);color:var(--text-color);padding:16px;border-radius:8px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border-color);box-shadow:0 4px 12px #00000026}.modal-content h3{margin-bottom:12px}.modal-content img{max-width:100%;height:auto;margin:12px 0;border-radius:4px}.checkbox-group{display:flex;flex-direction:column;gap:6px;margin:10px 0;text-align:left}.checkbox-item{display:flex;align-items:center;gap:8px;font-size:.9rem}.checkbox-item input[type=checkbox]{width:auto}.switch-item{display:flex;align-items:center;gap:10px;font-size:.9rem;-webkit-user-select:none;user-select:none;cursor:pointer}.switch-control{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.switch-control input{opacity:0;width:0;height:0;margin:0;padding:0}.slider-track{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.25s ease;border-radius:24px;border:1px solid var(--border-color)}.slider-track:before{position:absolute;content:"";height:18px;width:18px;left:2px;bottom:2px;background-color:#fff;transition:.25s ease;border-radius:50%;box-shadow:0 1px 3px #0000004d}.switch-control input:checked+.slider-track{background-color:#007acc;border-color:#005999}.switch-control input:focus+.slider-track{box-shadow:0 0 1px #007acc}.switch-control input:checked+.slider-track:before{transform:translate(20px)}[data-theme=dark] .slider-track{background-color:#333}.url-box{word-break:break-all;background:var(--nav-bg);padding:8px;border-radius:4px;font-size:.8rem;margin:8px 0;border:1px solid var(--border-color)}.status-badge{padding:4px 8px;border-radius:4px;font-size:.8rem;margin-top:6px;display:inline-block}.status-success{background-color:#d4edda;color:#155724}.status-error{background-color:#f8d7da;color:#721c24}
