@import "https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&display=swap";:root{--font-sans:"Be Vietnam Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--bg-app:#f5f7fa;--bg-card:#fff;--bg-sidebar:#fff;--bg-subtle:#f0f3f7;--border-color:#e4e9f0;--border-light:#eef1f6;--accent:#bb2126;--accent-dark:#9e1c22;--accent-light:#fde8e9;--accent-hover:#a01d22;--accent-glow:#bb21261f;--text-primary:#1a2332;--text-secondary:#5a6a7e;--text-muted:#8b99a8;--success:#0d9f6e;--success-light:#e6f7f1;--success-glow:#0d9f6e1a;--warning:#e6a817;--danger:#d63031;--danger-light:#fdeaea;--shadow-sm:0 1px 3px #1a23320d;--shadow-md:0 4px 16px #1a233212;--shadow-lg:0 8px 32px #1a233217;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--transition:all .2s ease}*{box-sizing:border-box;margin:0;padding:0}html{height:100%;overflow:hidden}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;height:100%;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-subtle)}::-webkit-scrollbar-thumb{background:#c5cdd8;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}#root{height:100vh;max-height:100vh;display:flex;overflow:hidden}.sidebar{background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);z-index:10;width:264px;height:100vh;max-height:100vh;box-shadow:none;flex-direction:column;padding:.9rem .75rem .85rem;transition:transform .28s cubic-bezier(.4,0,.2,1),width .28s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;overflow:visible}.sidebar--collapsed{pointer-events:none;transform:translate(-100%)}.sidebar-edge-toggle{z-index:11;background:var(--bg-sidebar);border:1px solid var(--border-color);cursor:pointer;width:15px;height:44px;color:var(--text-muted);pointer-events:auto;border-left:none;border-radius:0 6px 6px 0;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;right:-15px;transform:translateY(-50%);box-shadow:2px 0 6px #0000000d}.sidebar-edge-toggle:hover{background:var(--accent-light);color:var(--accent)}.sidebar>nav,.sidebar-nav{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent;flex:1;min-height:0;margin:0;padding:0 .15rem .35rem;overflow:hidden auto}.brand{border-bottom:1px solid var(--border-light);flex-shrink:0;align-items:center;gap:.7rem;margin-bottom:.65rem;padding:.35rem .55rem .75rem;display:flex}.brand-logo-img{object-fit:cover;width:36px;height:36px;box-shadow:none;border:1px solid var(--border-light);border-radius:8px;flex-shrink:0}.brand-logo{background:var(--accent);color:#fff;letter-spacing:-.5px;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.85rem;font-weight:800;display:flex}.brand-text{flex-direction:column;gap:.05rem;min-width:0;display:flex}.brand-name{color:var(--text-primary);letter-spacing:-.02em;font-size:.98rem;font-weight:700;line-height:1.2}.brand-sub{color:var(--accent);letter-spacing:.01em;font-size:.68rem;font-weight:500}.nav-links{flex-direction:column;gap:.1rem;margin:0;padding:0;list-style:none;display:flex}.nav-section{margin:0;padding:0;list-style:none}.nav-header{text-transform:uppercase;color:var(--text-muted);letter-spacing:.06em;margin:.85rem .55rem .3rem;font-size:.65rem;font-weight:700;line-height:1.2;display:block}.nav-section:first-child .nav-header{margin-top:.35rem}.nav-item{width:100%;list-style:none}.nav-btn{width:100%;color:var(--text-secondary);font-size:.84rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:.6rem;min-width:0;padding:.52rem .7rem;transition:background .14s,color .14s;display:flex;position:relative}.nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-btn:hover{background-color:var(--bg-subtle);color:var(--text-primary)}.nav-btn.active{color:var(--accent);background-color:#bb212614;font-weight:600}.nav-btn.active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:2.5px;height:52%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.nav-btn--class{padding:.42rem .7rem;font-size:.8rem}.nav-icon{opacity:.88;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.nav-btn.active .nav-icon{opacity:1}.nav-icon svg{width:17px;height:17px}.nav-item--sub{margin-top:.1rem}.nav-sub{border-left:1px solid var(--border-color);flex-direction:column;gap:.08rem;margin:0 0 .2rem .85rem;padding:.15rem 0 .15rem .7rem;list-style:none;display:flex}.nav-sub .nav-btn{min-height:auto;color:var(--text-muted);padding:.38rem .6rem;font-size:.78rem;font-weight:500}.nav-sub .nav-btn:hover{color:var(--text-primary)}.nav-sub .nav-btn:before{display:none}.nav-sub .nav-btn.active{color:var(--accent);background:#bb212614;font-weight:600}.sidebar-footer{border-top:1px solid var(--border-light);flex-direction:column;flex-shrink:0;gap:.4rem;margin-top:auto;padding:.75rem .35rem .15rem;display:flex}.sidebar-user-btn{text-align:left;background:var(--bg-subtle);cursor:pointer;border:1px solid #0000;border-radius:10px;align-items:center;gap:.55rem;width:100%;min-width:0;padding:.5rem .55rem;transition:background .15s,border-color .15s;display:flex}.sidebar-user-btn:hover{border-color:var(--border-color);background:#e8edf3}.sidebar-user-btn.active{background:#bb212614;border-color:#bb21262e}.sidebar-user-btn.active .sidebar-user-name,.sidebar-user-btn.active .sidebar-user-email{color:var(--accent)}.sidebar-user-avatar{border:1px solid var(--border-color);width:32px;height:32px;color:var(--accent);letter-spacing:-.02em;background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:.68rem;font-weight:700;display:inline-flex}.sidebar-user-meta{flex-direction:column;flex:1;gap:.05rem;min-width:0;display:flex}.sidebar-user-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;font-weight:600;overflow:hidden}.sidebar-user-email{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.sidebar-logout{width:100%;color:var(--accent);font-size:.78rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.42rem .6rem;transition:background .14s,border-color .14s;display:inline-flex}.sidebar-logout:hover{background:#bb21260f;border-color:#bb212629}.sidebar-logout svg{flex-shrink:0;width:14px;height:14px}.token-badge{background-color:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:.4rem;padding:.5rem .75rem;font-size:.75rem;display:flex;overflow:hidden}.token-badge:before{content:"";background:var(--success);border-radius:50%;flex-shrink:0;width:6px;height:6px}.main-content{flex-direction:column;flex:1;min-width:0;height:100vh;max-height:100vh;margin-left:264px;padding:1rem 1.5rem;transition:margin-left .28s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden}.main-content--full{margin-left:0}.page-viewport{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.tab-page{flex-direction:column;gap:.75rem;height:100%;min-height:0;display:flex;overflow:hidden}.tab-page-toolbar{flex-direction:column;flex-shrink:0;gap:.75rem;display:flex}.tab-page-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.tab-page-scroll{flex-direction:column;flex:1;gap:1rem;min-height:0;padding-right:.15rem;display:flex;overflow:hidden auto}.tab-page-footer{flex-shrink:0;padding-right:4.75rem}.table-fill{flex:1;min-height:0;overflow:auto}.table-fill .data-table thead{z-index:2;position:sticky;top:0}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.page-title h1{letter-spacing:-.4px;color:var(--text-primary);margin-bottom:.3rem;font-size:1.65rem;font-weight:800}.page-title p{color:var(--text-secondary);font-size:.9rem;line-height:1.5}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;display:grid}.stat-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:var(--transition);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;padding:1.35rem 1.5rem;display:flex}.stat-card:hover{box-shadow:var(--shadow-md);border-color:#d0d8e4;transform:translateY(-2px)}.stat-label{color:var(--text-muted);margin-bottom:.4rem;font-size:.8rem;font-weight:500}.stat-value{color:var(--text-primary);letter-spacing:-.5px;font-size:2rem;font-weight:800}.stat-icon{border-radius:var(--radius-md);background-color:var(--accent-light);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.35rem;display:flex}.stat-icon.success{background-color:var(--success-light)}.content-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.75rem}.content-card h2{color:var(--text-primary);align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:1.05rem;font-weight:700;display:flex}.content-card p{color:var(--text-secondary);margin-bottom:1.25rem;font-size:.9rem;line-height:1.65}.content-grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1.25rem;display:grid}.control-bar{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.search-input-wrapper{flex:1;max-width:300px;position:relative}.search-input{background-color:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition);padding:.65rem 1rem .65rem 2.35rem;font-size:.875rem}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background-color:#fff;outline:none}.search-icon{color:var(--text-muted);pointer-events:none;font-size:.9rem;position:absolute;top:50%;left:.8rem;transform:translateY(-50%)}.filters-wrapper{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.select-filter{background-color:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;transition:var(--transition);outline:none;padding:.65rem 1rem;font-size:.875rem}.select-filter:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.btn{border-radius:var(--radius-sm);font-family:var(--font-sans);cursor:pointer;transition:var(--transition);white-space:nowrap;border:none;align-items:center;gap:.45rem;padding:.65rem 1.15rem;font-size:.875rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 8px var(--accent-glow)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 14px #bb212640}.btn-secondary{border:1px solid var(--border-color);color:var(--text-primary);background-color:#fff}.btn-secondary:hover:not(:disabled){background-color:var(--bg-subtle);border-color:#c5cdd8}.btn:disabled{opacity:.55;cursor:not-allowed}.sync-progress-banner{border:1px solid var(--border-color);border-left:4px solid var(--accent);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;flex-direction:column;gap:.65rem;padding:1.15rem 1.35rem;display:flex}.sync-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.sync-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;display:flex}.sync-spinner{border:2px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.8s linear infinite spin}.sync-bar-container{background-color:var(--bg-subtle);border-radius:99px;height:6px;overflow:hidden}.sync-bar{background:var(--accent);border-radius:99px;height:100%;transition:width .3s}.sync-meta{color:var(--text-muted);justify-content:space-between;font-size:.8rem;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.table-wrapper{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.data-table{border-collapse:collapse;text-align:left;width:100%}.data-table th{background-color:var(--bg-subtle);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);padding:.9rem 1.25rem;font-size:.75rem;font-weight:700}.data-table td{border-bottom:1px solid var(--border-light);color:var(--text-primary);padding:.9rem 1.25rem;font-size:.875rem}.data-table tbody tr{transition:var(--transition)}.data-table tbody tr:hover{background-color:#fafbfc}.data-table tbody tr:last-child td{border-bottom:none}.switch-container{align-items:center;gap:.5rem;display:inline-flex}.switch{width:44px;height:24px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background-color:#d0d8e4;border-radius:34px;transition:all .2s;position:absolute;inset:0}.slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 3px #00000026}input:checked+.slider{background-color:var(--success)}input:checked+.slider:before{transform:translate(20px)}.badge{border-radius:6px;align-items:center;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-success{background-color:var(--success-light);color:var(--success);border:1px solid #0d9f6e33}.badge-muted{background-color:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color)}.badge-info{background-color:var(--accent-light);color:var(--accent);border:1px solid #bb212633}.badge-warning{color:#b45309;background-color:#fff8e6;border:1px solid #b4530940}.badge-danger{color:#b91c1c;background-color:#fef2f2;border:1px solid #b91c1c40}.courses-tag-list{flex-wrap:wrap;gap:.3rem;max-width:320px;display:flex}.course-tag{background-color:var(--bg-subtle);border:1px solid var(--border-color);color:var(--text-secondary);border-radius:4px;padding:.15rem .45rem;font-size:.75rem}.pagination-row{color:var(--text-muted);justify-content:space-between;align-items:center;margin-top:1rem;font-size:.85rem;display:flex}.pagination-btn-group{align-items:center;gap:.4rem;display:flex}.pagination-btn{background-color:var(--bg-card);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-sm);cursor:pointer;width:34px;height:34px;transition:var(--transition);flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:.85rem;line-height:1;display:inline-flex}.pagination-current{height:34px;color:var(--text-primary);white-space:nowrap;justify-content:center;align-items:center;padding:0 .75rem;font-weight:700;line-height:1;display:inline-flex}.pagination-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background-color:var(--accent-light)}.pagination-btn:disabled{opacity:.35;cursor:not-allowed}.empty-state{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:3.5rem 2rem;display:flex}.empty-state-icon{opacity:.5;font-size:2.5rem}.empty-state h2{color:var(--text-primary);font-size:1rem;font-weight:700}.empty-state p{color:var(--text-muted);max-width:360px;font-size:.875rem}.loading-screen{background:var(--bg-app);height:100%;min-height:0;color:var(--text-primary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.modal-overlay{z-index:100;background-color:#1a233273;justify-content:center;align-items:center;width:100vw;height:100vh;padding:1.5rem;display:flex;position:fixed;top:0;left:0}.modal-container{border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:800px;max-height:85vh;box-shadow:var(--shadow-lg);background-color:#fff;flex-direction:column;animation:.25s modalScaleUp;display:flex;overflow:hidden}@keyframes modalScaleUp{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 1.75rem;display:flex}.modal-title{color:var(--text-primary);font-size:1.1rem;font-weight:700}.modal-close-btn{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);justify-content:center;align-items:center;font-size:1rem;display:flex}.modal-close-btn:hover{background:var(--accent-light);color:var(--accent);border-color:#bb21264d}.modal-body{flex:1;padding:1.75rem;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-color);justify-content:flex-end;gap:.75rem;padding:1rem 1.75rem;display:flex}.detail-grid{background-color:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem;padding:1.15rem;display:grid}.detail-item-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.detail-item-value{color:var(--text-primary);margin-top:.2rem;font-size:.95rem;font-weight:600}.proctor-container{flex-direction:column;width:min(98vw,1280px);max-width:min(98vw,1280px);max-height:96vh;display:flex;overflow:hidden}.proctor-content{flex:1;min-height:0;padding:1rem 1.25rem 1.25rem;overflow-y:auto}.proctor-panel{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);overflow:hidden}.panel-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-color);background:#fff;padding:.65rem 1rem;font-size:.8rem;font-weight:700}.panel-title-row{border-bottom:1px solid var(--border-color);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .65rem;display:flex}.panel-title-text{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-size:.78rem;font-weight:700}.panel-toolbar{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.proctor-tool-btn{border:1px solid var(--border-color);background:var(--bg-subtle);min-width:28px;height:28px;color:var(--text-primary);cursor:pointer;font-size:.82rem;font-weight:700;font-family:var(--font-sans);transition:var(--transition);border-radius:6px;justify-content:center;align-items:center;padding:0 .4rem;line-height:1;display:inline-flex}.proctor-tool-btn:hover{border-color:var(--accent);color:var(--accent);background:#fff}.proctor-tool-btn-wide{gap:.28rem;min-width:auto;padding:0 .55rem;font-size:.72rem;font-weight:600}.proctor-tool-btn-label{letter-spacing:.02em;font-size:.7rem;font-weight:700}.proctor-zoom-label{color:var(--text-muted);text-align:center;min-width:2.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.72rem;font-weight:700}.proctor-stream-toolbar{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.proctor-stream-actions{flex-wrap:wrap;gap:.5rem;display:flex}.proctor-action-btn{align-items:center;gap:.35rem;padding:.35rem .7rem!important;font-size:.76rem!important;display:inline-flex!important}.proctor-action-btn.active{border-color:var(--accent);color:var(--accent);background:#fff5f5}.proctor-zoom-viewport{width:100%;height:100%;min-height:inherit;background:#1a2332;justify-content:center;align-items:center;display:flex;overflow:auto}.proctor-zoom-viewport .live-frame{transform-origin:50%;object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100%;transition:transform .15s}.proctor-zoom-viewport--webcam{flex:1;min-height:0}.screen-panel--fullscreen{background:#000}.screen-panel--fullscreen .screen-body{height:100vh;min-height:100vh}.screen-panel--fullscreen .proctor-zoom-viewport{min-height:calc(100vh - 44px)}.screen-panel--fullscreen .panel-title-row{color:#eee;background:#111;border-color:#333}.screen-panel--fullscreen .panel-title-text{color:#ccc}.screen-panel--fullscreen .proctor-tool-btn{color:#eee;background:#222;border-color:#444}.panel-body{background:#1a2332;flex-direction:column;flex:1;justify-content:center;align-items:stretch;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.screen-body{cursor:zoom-in;min-height:min(52vh,560px)}.screen-panel--fullscreen .screen-body{cursor:default}.webcam-body{flex:1;min-height:0}.proctor-grid-focus{flex:1;grid-template-columns:minmax(0,1fr) minmax(240px,30%);align-items:stretch;gap:.85rem;min-height:0;display:grid}.proctor-grid-focus .screen-panel,.proctor-grid-focus .webcam-panel{flex-direction:column;height:100%;min-height:0;display:flex}.proctor-grid-focus .screen-body{flex:1;min-height:min(56vh,640px)}.proctor-grid-focus.proctor-grid--no-webcam{grid-template-columns:1fr}.proctor-grid-focus.proctor-grid--no-webcam .screen-body{min-height:min(64vh,720px)}.proctor-grid-default{grid-template-columns:1fr 280px;align-items:stretch;gap:1rem;display:grid}@media (width<=900px){.proctor-grid-focus,.proctor-grid-default{grid-template-columns:1fr}.proctor-grid-focus .screen-body{min-height:min(46vh,440px)}.proctor-grid-focus .webcam-body{min-height:220px}}.proctor-actions{align-items:center;gap:.75rem;display:flex}.status-pill{border-radius:99px;align-items:center;gap:.4rem;padding:.28rem .7rem;font-size:.76rem;font-weight:600;display:inline-flex}.status-pill-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.status-pill.connecting{color:#b8860b;background:#fff8e6;border:1px solid #e6a8174d}.status-pill.connected{background:var(--success-light);color:var(--success);border:1px solid #0d9f6e40}.status-pill.disconnected{background:var(--danger-light);color:var(--danger);border:1px solid #d6303140}.live-frame{object-fit:contain;width:100%;height:100%;display:block}.no-stream-placeholder{color:#8b99a8;text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:2rem;display:flex}.no-stream-placeholder p{font-size:.85rem}.placeholder-icon{opacity:.4;font-size:2rem}.alert-error{background:var(--danger-light);color:var(--danger);border-radius:var(--radius-sm);border:1px solid #d6303133;padding:.75rem 1rem;font-size:.875rem}.proctor-stream-wrap{flex-direction:column;flex:1;gap:.55rem;min-height:0;display:flex}.proctor-stream-status{justify-content:flex-end;display:flex}.proctor-stream-error{margin:0;padding:.5rem .75rem;font-size:.82rem}.proctor-grid-compact .screen-body{min-height:min(50vh,480px)}.student-detail-overlay{z-index:1050}.student-detail-overlay--proctor{align-items:stretch;padding:.65rem}.student-detail-modal{flex-direction:column;width:min(96vw,960px);max-width:960px;max-height:92vh;display:flex;overflow:hidden}.student-detail-modal--proctor{border-radius:12px;width:min(100%,100vw - 1.3rem);max-width:none;height:calc(100vh - 1.3rem);max-height:calc(100vh - 1.3rem)}.student-detail-modal-header{flex-shrink:0;padding:.75rem 1rem!important}.student-detail-modal--proctor .student-detail-modal-header{padding:.6rem .9rem!important}.student-detail-title-block{min-width:0}.student-detail-name{line-height:1.25;margin:0!important;font-size:1.05rem!important}.student-detail-modal--proctor .student-detail-name{font-size:.98rem!important}.student-detail-sub{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.35rem .55rem;margin:.2rem 0 0;font-size:.8rem;display:flex}.student-detail-code{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-weight:700}.student-detail-email{color:var(--text-muted)}.student-detail-close{flex-shrink:0;align-items:center;gap:.35rem;padding:.35rem .7rem!important;font-size:.8rem!important;display:inline-flex!important}.student-detail-modal--proctor .student-detail-body{flex:1;gap:.65rem;min-height:0;padding:.65rem .9rem .85rem;overflow:hidden}.student-detail-modal--proctor .student-detail-info{flex-shrink:0;gap:.55rem}.student-detail-modal--proctor .student-detail-meta{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}.student-detail-modal--proctor .student-meta-item{padding:.4rem .55rem}.student-detail-modal--proctor .student-detail-proctor{border-top:1px solid var(--border-color);flex-direction:column;flex:1;min-height:0;padding-top:.55rem;display:flex;overflow:hidden}.student-detail-modal--proctor .proctor-stream-wrap{flex:1;min-height:0;overflow:hidden}.student-detail-modal--proctor .proctor-grid-focus{flex:1;min-height:0}.student-detail-modal--proctor .screen-panel,.student-detail-modal--proctor .webcam-panel{flex-direction:column;height:auto;min-height:0;display:flex}.student-detail-modal--proctor .screen-body,.student-detail-modal--proctor .webcam-body{flex:1;min-height:0}.student-detail-header{align-items:center;gap:.75rem;min-width:0;display:flex}.student-detail-body{flex-direction:column;gap:1rem;min-height:0;padding:1rem 1.25rem 1.25rem;display:flex;overflow-y:auto}.student-detail-info{flex-direction:column;gap:.85rem;display:flex}.student-detail-meta{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.65rem;display:grid}.student-meta-item{background:var(--bg-subtle);border:1px solid var(--border-light);border-radius:8px;flex-direction:column;gap:.2rem;padding:.55rem .7rem;display:flex}.student-meta-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.68rem;font-weight:600}.student-meta-value{color:var(--text-primary);font-size:.88rem;font-weight:600}.student-meta-value--online{color:var(--success);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.student-meta-value--offline{color:var(--danger);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.student-meta-value--mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.8rem}.student-meta-value.online{color:var(--success)}.student-detail-proctor-toggle{justify-content:center;align-items:center;gap:.4rem;width:100%;display:inline-flex!important}.student-detail-hint{color:var(--text-muted);margin:0;font-size:.78rem;line-height:1.4}.student-detail-proctor{border-top:1px solid var(--border-color);padding-top:1rem}@media (width<=900px){.student-detail-modal--proctor .student-detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}.workspace-layout{color:var(--text-primary);flex-direction:column;gap:.75rem;width:100%;height:100%;min-height:0;display:flex;overflow:hidden}.workspace-header{border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:#fff;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:.65rem;padding:.7rem 1.1rem;display:flex}.class-badge-container{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.workspace-grid{flex:1;grid-template-columns:minmax(280px,360px) 1fr;gap:1rem;min-height:0;display:grid;overflow:hidden}.workspace-main{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.workspace-content-panel{flex:1;min-width:0}.workspace-config-toggle.active{border-color:var(--accent);color:var(--accent);background:var(--accent-light,#fff5f5)}.workspace-drawer-backdrop{z-index:20;background:#0f172a59;position:absolute;inset:0}.workspace-config-drawer{z-index:30;border-right:1px solid var(--border-color);width:min(460px,100vw - 1.5rem);box-shadow:var(--shadow-lg);pointer-events:none;background:#fff;flex-direction:column;transition:transform .28s;display:flex;position:absolute;top:0;bottom:0;left:0;overflow:hidden;transform:translate(-105%)}.workspace-config-drawer.open{pointer-events:auto;transform:translate(0)}.workspace-drawer-header{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.workspace-drawer-close{line-height:1;padding:.25rem .55rem!important;font-size:1.1rem!important}.workspace-drawer-tabs{border-bottom:1px solid var(--border-color);flex-shrink:0;gap:0;padding:.6rem 1rem 0;display:flex}.workspace-drawer-tab{color:var(--text-secondary);cursor:pointer;font-size:.8rem;font-weight:600;font-family:var(--font-sans);transition:var(--transition);background:0 0;border:1px solid #0000;border-bottom:none;border-radius:8px 8px 0 0;flex:1;margin-bottom:-1px;padding:.42rem .75rem}.workspace-drawer-tab:hover{color:var(--text-primary)}.workspace-drawer-tab.active{border-color:var(--border-color);color:var(--accent);background:#fff;border-bottom-color:#fff}.workspace-drawer-body{flex:1;min-height:0;padding:0 1rem 1rem;overflow:hidden auto}.config-card-flat{box-shadow:none;border:none;gap:.75rem;min-width:0;padding:.75rem 0 0;overflow:hidden}.config-card-desc{color:var(--text-secondary);margin:0;font-size:.8rem}.config-suggestions{flex-direction:column;gap:.45rem;display:flex}.config-suggestions-label{color:var(--text-muted);font-size:.75rem;font-weight:600}.config-suggestions-list{flex-wrap:wrap;gap:6px;display:flex}@media (width<=1100px){.workspace-grid{grid-template-columns:1fr;overflow-y:auto}}.left-panel{flex-direction:column;gap:1rem;min-height:0;padding-right:.15rem;display:flex;overflow-y:auto}.right-panel{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:0;min-height:0;padding:.65rem .85rem .85rem;display:flex;overflow:hidden}.workspace-panel-toolbar{flex-shrink:0}.workspace-panel-body{flex:1;min-height:0;padding-right:.15rem;overflow:hidden auto}.config-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.card-header-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.95rem;font-weight:700;display:flex}.app-textarea{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;min-height:80px;color:var(--text-primary);resize:vertical;transition:var(--transition);padding:.75rem;font-family:Consolas,Courier New,monospace;font-size:.85rem}.app-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:#fff;outline:none}.schedule-table{flex-direction:column;gap:.5rem;width:100%;display:flex}.schedule-row-item{background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border-light);grid-template-columns:80px 1fr 1fr;align-items:center;gap:.65rem;padding:.45rem .65rem;display:grid}.day-label{color:var(--text-secondary);font-size:.8rem;font-weight:600}.time-input{border:1px solid var(--border-color);color:var(--text-primary);font-size:.82rem;font-family:var(--font-sans);text-align:center;transition:var(--transition);background:#fff;border-radius:6px;outline:none;padding:.4rem .55rem}.time-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.schedule-editor{flex-direction:column;gap:.75rem;width:100%;min-width:0;display:flex;overflow:hidden}.schedule-editor .schedule-input,.schedule-editor .time-input{box-sizing:border-box;width:100%;min-width:0;max-width:100%}.schedule-editor .schedule-input{border:1px solid var(--border-color);color:var(--text-primary);font-size:.85rem;font-family:var(--font-sans);transition:var(--transition);background:#fff;border-radius:6px;outline:none;padding:.5rem .65rem}.schedule-editor .schedule-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.schedule-editor-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.schedule-editor-toolbar .btn{padding:.45rem .7rem;font-size:.78rem}.schedule-hint{color:var(--text-muted);font-size:.78rem}.schedule-hint-warn{color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;margin:0;padding:.45rem .6rem}.schedule-hint-error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:6px;margin:0;padding:.45rem .6rem}.schedule-day-tabs{grid-template-columns:repeat(4,1fr);gap:.35rem;display:grid}.schedule-day-tab{border:1px solid var(--border-color);background:var(--bg-subtle);color:var(--text-secondary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:.25rem;min-width:0;padding:.4rem .35rem;font-size:.72rem;font-weight:600;display:inline-flex}.schedule-day-tab.active{border-color:var(--accent);color:var(--accent);background:#fff}.schedule-day-count{background:var(--accent);color:#fff;text-align:center;border-radius:999px;min-width:.9rem;padding:.05rem .3rem;font-size:.62rem;line-height:1.2}.schedule-day-panel{background:var(--bg-subtle);border:1px solid var(--border-light);border-radius:var(--radius-sm);min-width:0;padding:.75rem;overflow:hidden}.schedule-day-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.schedule-day-header .btn{white-space:nowrap;flex-shrink:0}.schedule-shift-card{border:1px solid var(--border-color);background:#fff;border-radius:8px;flex-direction:column;gap:.55rem;min-width:0;margin-bottom:.55rem;padding:.75rem;display:flex}.schedule-shift-card:last-child{margin-bottom:0}.schedule-shift-card.inactive{opacity:.6}.schedule-shift-head{align-items:flex-end;gap:.5rem;min-width:0;display:flex}.schedule-field-ca{flex:1;min-width:0}.schedule-time-row{grid-template-columns:1fr 1fr;gap:.5rem;min-width:0;display:grid}.schedule-field{color:var(--text-muted);flex-direction:column;gap:.25rem;min-width:0;font-size:.72rem;font-weight:600;display:flex}.schedule-active-toggle{color:var(--text-secondary);white-space:nowrap;flex-shrink:0;align-items:center;gap:.3rem;padding-bottom:.45rem;font-size:.75rem;display:flex}.schedule-remove-btn{flex-shrink:0;margin-bottom:.1rem;line-height:1;padding:.35rem .55rem!important;font-size:1rem!important}.attendance-panel,.session-logs-panel{flex-direction:column;flex:1;gap:.75rem;min-height:0;display:flex;overflow:hidden}.workspace-panel-fill{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.attendance-table-scroll{flex:1;min-height:0;overflow:auto}.attendance-table-scroll .data-table thead{z-index:2;background:#fff;position:sticky;top:0}.attendance-panel{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.attendance-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:1.5rem;display:flex;z-index:150!important;background-color:#0f172a99!important}.attendance-modal-container{border-radius:var(--radius-lg);background-color:var(--bg-app);box-shadow:var(--shadow-2xl);border:1px solid var(--border-color);flex-direction:column;animation:.2s ease-out modalScaleUp;display:flex;width:98vw!important;max-width:1440px!important;height:96vh!important;max-height:96vh!important}.attendance-modal-body{flex-direction:column;flex:1;gap:.75rem;min-height:0;padding:1.25rem;display:flex;overflow-y:auto}.attendance-toolbar{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.attendance-field{color:var(--text-muted);flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:600;display:flex}.attendance-shift-info{color:var(--text-secondary);background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border-light);flex-wrap:wrap;gap:.75rem;padding:.5rem .75rem;font-size:.82rem;display:flex}.attendance-field--grow{flex:1;min-width:180px}.attendance-search{width:100%}.attendance-qldt-banner{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-subtle);color:var(--text-secondary);flex-direction:column;gap:.15rem;padding:.65rem .85rem;font-size:.8rem;display:flex}.attendance-qldt-banner strong{color:var(--text-primary);font-size:.85rem}.attendance-qldt-banner--synced{background:#2e7d3214;border-color:#2e7d3273}.attendance-qldt-banner--synced strong{color:#2e7d32}.attendance-qldt-banner--stale{background:#ef6c0014;border-color:#ef6c0080}.attendance-qldt-banner--stale strong{color:#ef6c00}.attendance-status-summary{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.attendance-summary-chip{cursor:default;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .55rem;font-size:.72rem;font-weight:700;display:inline-flex}.attendance-summary-chip-label{opacity:.9}.attendance-summary-chip-count{text-align:center;background:#0000001f;border-radius:999px;min-width:1.1rem;padding:.05rem .3rem}.attendance-summary-total{color:var(--text-muted);margin-left:auto;font-size:.75rem;font-weight:600}.attendance-bulk-actions{background:var(--bg-card,#fff);border:1px solid var(--border-color,#dee2e6);border-radius:8px;align-items:center;gap:1rem;margin-bottom:1rem;padding:.75rem 1.25rem;animation:.2s ease-out attendanceSlideDown;display:flex;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.attendance-bulk-title{color:var(--text-color,#212529);font-size:.9rem;font-weight:600}.attendance-bulk-btns{flex-wrap:wrap;gap:.5rem;display:flex}.attendance-bulk-btn-close{margin-left:auto}@keyframes attendanceSlideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.attendance-status--0,.attendance-summary-chip.attendance-status--0{--att-fg:#b71c1c;--att-bg:#b71c1c1f;--att-border:#b71c1c73}.attendance-status--1,.attendance-summary-chip.attendance-status--1{--att-fg:#1565c0;--att-bg:#1565c01f;--att-border:#1565c066}.attendance-status--2,.attendance-summary-chip.attendance-status--2{--att-fg:#e65100;--att-bg:#e651001f;--att-border:#e6510073}.attendance-status--3,.attendance-summary-chip.attendance-status--3{--att-fg:#f9a825;--att-bg:#f9a82526;--att-border:#f9a82580}.attendance-status--4,.attendance-summary-chip.attendance-status--4{--att-fg:#2e7d32;--att-bg:#2e7d321f;--att-border:#2e7d3273}.attendance-summary-chip.attendance-status--0,.attendance-summary-chip.attendance-status--1,.attendance-summary-chip.attendance-status--2,.attendance-summary-chip.attendance-status--3,.attendance-summary-chip.attendance-status--4{color:var(--att-fg);background:var(--att-bg);border-color:var(--att-border)}.attendance-table tbody tr.attendance-status--0,.attendance-table tbody tr.attendance-status--1,.attendance-table tbody tr.attendance-status--2,.attendance-table tbody tr.attendance-status--3,.attendance-table tbody tr.attendance-status--4{background:var(--att-bg)}.attendance-table tbody tr:hover{filter:brightness(.97)}.attendance-table td{padding:.5rem 1rem!important}.attendance-student-name{font-size:.88rem;font-weight:700}.attendance-student-meta{color:var(--text-muted);flex-wrap:wrap;gap:.35rem .6rem;margin-top:.2rem;font-size:.72rem;display:flex}.attendance-student-meta code{color:var(--text-secondary);font-size:.72rem}.attendance-online-mins{font-family:monospace;font-size:1rem;font-weight:800}.attendance-online-unit{color:var(--text-muted);margin-left:3px;font-size:.72rem;display:inline}.attendance-status-cell{flex-direction:column;align-items:flex-start;gap:.35rem;display:flex}.attendance-status-badge{color:var(--att-fg);background:var(--att-bg);border:1px solid var(--att-border);border-radius:4px;padding:.2rem .5rem;font-size:.72rem;font-weight:700;display:inline-block}.attendance-status-select{border-radius:var(--radius-sm);border:1px solid var(--att-border);background:var(--att-bg);width:100%;max-width:200px;color:var(--att-fg);cursor:pointer;padding:.35rem .5rem;font-size:.78rem;font-weight:600}.attendance-notes{flex-wrap:wrap;gap:.35rem;display:flex}.attendance-qldt-tag{border:1px solid var(--border-color);border-radius:4px;padding:.15rem .4rem;font-size:.68rem;font-weight:700}.attendance-qldt-tag--ok{color:#2e7d32;background:#2e7d321a;border-color:#2e7d3259}.attendance-qldt-tag--pending{color:var(--text-muted);background:var(--bg-subtle)}.attendance-lock-tag{color:#1565c0;background:#1565c01a;border:1px solid #1565c04d;border-radius:4px;padding:.15rem .4rem;font-size:.68rem;font-weight:700}.tab-btn-group{background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border-color);width:fit-content;padding:.3rem;display:flex}.tab-sub-btn{color:var(--text-secondary);font-size:.85rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:6px;padding:.45rem 1rem}.tab-sub-btn.active{color:var(--accent);box-shadow:var(--shadow-sm);background:#fff}.student-status-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.85rem;display:grid}.student-status-card{border:1px solid var(--border-color);border-radius:var(--radius-md);transition:var(--transition);background:#fff;align-items:center;gap:.75rem;padding:1rem;display:flex}.student-status-card.online{background:linear-gradient(135deg, #fff, var(--success-light));border-color:#0d9f6e4d}.student-status-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.student-status-card-clickable{cursor:pointer}.student-status-card-clickable:hover{border-color:var(--accent);box-shadow:0 4px 14px #bb21261f}.student-status-card-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pulse-dot-online{background:var(--success);border-radius:50%;width:7px;height:7px;animation:1.8s ease-in-out infinite pulse-online}@keyframes pulse-online{0%{box-shadow:0 0 #0d9f6e80}70%{box-shadow:0 0 0 6px #0d9f6e00}to{box-shadow:0 0 #0d9f6e00}}.status-badge-offline{background:var(--text-muted);border-radius:50%;width:7px;height:7px}.student-workspace-avatar{background:var(--bg-subtle);border:2px solid var(--border-color);width:48px;height:48px;color:var(--text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;font-weight:700;display:flex;position:relative;overflow:hidden}.student-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.student-workspace-avatar.has-image{border-color:var(--border-color);background:#fff}.student-workspace-avatar.offline.has-image{filter:grayscale(.15);border-color:#cbd5e1}.student-workspace-avatar.offline:not(.has-image){color:#94a3b8;background:#f1f5f9;border-color:#e2e8f0}.student-workspace-avatar.online.has-image,.student-status-card.online .student-workspace-avatar.has-image{border-color:var(--success);box-shadow:0 0 0 2px #0d9f6e33}.student-workspace-avatar.online:not(.has-image),.student-status-card.online .student-workspace-avatar:not(.has-image){background:var(--accent);color:#fff;border-color:var(--accent)}.student-avatar-wrap{flex-shrink:0;display:inline-flex;position:relative}.student-avatar-status-ring{z-index:2;border:2px solid #fff;border-radius:50%;width:11px;height:11px;position:absolute;bottom:-1px;right:-1px;box-shadow:0 1px 4px #0f172a2e}.student-avatar-status-ring.online{background:var(--success);animation:1.8s ease-in-out infinite pulse-online}.student-avatar-status-ring.offline{background:#94a3b8}.student-online-badge{letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;font-weight:700;line-height:1;display:inline-flex}.student-online-badge--sm{padding:.24rem .5rem;font-size:.6rem}.student-online-badge--md{padding:.28rem .6rem;font-size:.68rem}.student-online-badge.online{color:#0d9f6e;background:#0d9f6e1f;border:1px solid #0d9f6e38}.student-online-badge.offline{color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0}.student-online-badge-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.student-online-badge.online .student-online-badge-dot{background:var(--success);box-shadow:0 0 0 2px #0d9f6e33}.student-online-badge.offline .student-online-badge-dot{background:#94a3b8}.seating-grid-cell.occupied-online{background:linear-gradient(#ecfdf5 0%,#fff 55%)!important;border-color:#0d9f6e61!important;box-shadow:0 2px 8px #0d9f6e1a!important}.seating-grid-cell.occupied-offline{box-shadow:var(--shadow-sm)!important;background:linear-gradient(#f8fafc 0%,#fff 55%)!important;border-color:#e2e8f0!important}.seating-grid-board{--seating-cell-min-width:148px;--seating-cell-min-height:176px;background-color:var(--bg-app);border-radius:var(--radius-md);border:1px solid var(--border-color);flex:1;align-content:start;gap:10px;min-height:0;padding:10px;display:grid;overflow:auto}.seating-grid-cell{min-height:var(--seating-cell-min-height);border:1px solid var(--border-color);transition:var(--transition);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;padding:.55rem .45rem .5rem;display:flex;position:relative}.seating-grid-cell.locked{color:#9ca3af;background:#e5e7eb}.seating-grid-cell.dragover{border-color:var(--accent)!important;background:#dbeafe!important}.seating-grid-cell:not(.locked):not(.occupied-online):not(.occupied-offline):not(.dragover){background:#f9fafb}.seating-grid-cell:not(.locked){cursor:default}.seating-grid-cell.occupied-online,.seating-grid-cell.occupied-offline{cursor:grab}.seating-seat-card{text-align:center;flex-direction:column;align-items:center;gap:.28rem;width:100%;display:flex}.seating-seat-card--clickable{cursor:pointer}.seating-seat-name{white-space:normal;-webkit-line-clamp:3;word-break:break-word;-webkit-box-orient:vertical;width:100%;max-height:3.75em;margin-top:2px;padding:0 2px;font-size:.72rem;font-weight:700;line-height:1.25;display:-webkit-box;overflow:hidden}.seating-seat-code{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;width:100%;font-family:monospace;font-size:.68rem;line-height:1.2;overflow:hidden}.seating-seat-paper{background:var(--accent-light);color:var(--accent);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;max-width:100%;margin-top:1px;padding:2px 6px;font-size:.64rem;font-weight:600;line-height:1.25;overflow:hidden}.seating-seat-empty-label{color:var(--text-muted);font-size:.75rem;font-weight:600}.seating-seat-empty-seat{color:var(--text-muted);font-size:.68rem}.seating-seat-unseat-btn{color:var(--danger);cursor:pointer;background:#fee2e2;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;font-weight:700;display:flex;position:absolute;top:4px;right:4px}.seating-unseated-card{border:1px solid var(--border-color);cursor:grab;transition:var(--transition);-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-sm);background:#fff;border-radius:10px;align-items:center;gap:.5rem;padding:.55rem .6rem;display:flex}.seating-unseated-card.online{background:linear-gradient(135deg,#f0fdf4 0%,#fff 70%);border-color:#0d9f6e47}.seating-unseated-card.offline{background:#f8fafc;border-color:#e2e8f0}.seating-unseated-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md)}.seating-unseated-card--clickable{cursor:pointer}.app-suggestion-badge{background:var(--bg-subtle);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;transition:var(--transition);border-radius:6px;padding:.2rem .5rem;font-size:.72rem}.app-suggestion-badge:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.discovered-apps-pool{background:#fffbf0;border:1px solid #f0c674;border-radius:8px;margin-top:.75rem;padding:.75rem}.discovered-apps-pool-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.discovered-apps-refresh{min-height:auto!important;padding:.2rem .55rem!important;font-size:.72rem!important}.discovered-apps-hint{color:var(--text-muted);margin:0 0 .5rem;font-size:.72rem;line-height:1.4}.discovered-apps-empty{color:var(--text-secondary);background:#ffffffa6;border:1px dashed #e0c878;border-radius:6px;padding:.55rem .65rem;font-size:.78rem;line-height:1.45}.discovered-apps-error{color:#a33;background:#fff5f5;border-color:#e8a0a0}.app-suggestion-badge--discovered{background:#fffbf0;border-color:#f0c674}.app-suggestion-badge--discovered em{opacity:.75;font-size:.65rem;font-style:normal}.app-pool-open-row{background:#fffbf0;border:1px solid #f0c674;border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.85rem;padding:.75rem;display:flex}.app-pool-open-btn{white-space:nowrap;flex-shrink:0}.app-pool-overlay{z-index:1200}.app-pool-modal{width:100%;max-width:920px}.app-picker-modal{max-height:min(88vh,720px)}.app-picker-header{gap:1rem;align-items:flex-start!important;padding:1.1rem 1.35rem!important}.app-picker-header-text{flex:1;min-width:0}.app-picker-title{align-items:center;gap:.5rem;margin:0!important;font-size:1.05rem!important;display:flex!important}.app-picker-title-icon{color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.app-pool-modal-sub{color:var(--text-muted);max-width:52ch;margin:.35rem 0 0;font-size:.78rem;line-height:1.4}.app-picker-close{flex-shrink:0;padding:.35rem .75rem!important;font-size:.78rem!important}.app-pool-toolbar{border-bottom:1px solid var(--border-color);align-items:center;gap:.55rem;padding:.85rem 1.35rem;display:flex}.app-picker-search-wrap{flex:1;min-width:0;position:relative}.app-picker-search-icon{color:var(--text-muted);pointer-events:none;display:flex;position:absolute;top:50%;left:.7rem;transform:translateY(-50%)}.app-pool-search{box-sizing:border-box;border:1px solid var(--border-color);width:100%;color:var(--text-primary);background:#fff;border-radius:8px;outline:none;padding:.48rem .75rem .48rem 2.15rem;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.app-pool-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px #bb21261a}.app-picker-refresh{white-space:nowrap;flex-shrink:0;align-items:center;gap:.35rem;padding:.45rem .75rem!important;font-size:.78rem!important;display:inline-flex!important}.app-pool-body{flex:1;min-height:260px;max-height:min(52vh,480px);padding:0;overflow:auto}.app-picker-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.55rem;padding:2.5rem 1.35rem;display:flex}.app-picker-state p{color:var(--text-secondary);max-width:36ch;margin:0;font-size:.85rem;font-weight:500;line-height:1.45}.app-picker-state--error{color:var(--danger);font-size:.85rem;font-weight:500}.app-pool-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.8rem}.app-pool-table th{z-index:2;background:var(--bg-subtle);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-color);box-shadow:0 1px 0 var(--border-color);white-space:nowrap;text-align:left;background-clip:padding-box;padding:.55rem .75rem;font-size:.68rem;font-weight:700;position:sticky;top:0}.app-pool-table th:first-child,.app-pool-table td:first-child{padding-left:1.35rem}.app-pool-table th:last-child,.app-pool-table td:last-child{padding-right:1.35rem}.app-pool-table td{border-bottom:1px solid var(--border-light);vertical-align:middle;background:#fff;padding:.5rem .75rem}.app-pool-table tbody tr:hover td{background:var(--bg-subtle)}.app-pool-kw{color:var(--accent);background:#bb21260f;border:1px solid #bb21261f;border-radius:5px;padding:.12rem .4rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;font-weight:700;display:inline-block}.app-pool-muted{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:.78rem;overflow:hidden}.app-pool-title{max-width:200px}.app-pool-when{font-variant-numeric:tabular-nums;white-space:nowrap}.app-pool-hit{color:#92400e;white-space:nowrap;background:#f59e0b1a;border:1px solid #f59e0b38;border-radius:999px;padding:.1rem .4rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.78rem;font-weight:700}.app-pool-add-btn{justify-content:center;align-items:center;gap:.25rem;height:28px;line-height:1;border-radius:6px!important;min-height:28px!important;padding:.28rem .6rem!important;font-size:.72rem!important;display:inline-flex!important}.app-pool-added-tag{color:#0b7a55;white-space:nowrap;background:#0d9f6e1a;border:1px solid #0d9f6e40;border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:.7rem;font-weight:700;display:inline-flex}.app-pool-row--added{opacity:.78}.app-pool-status{text-align:center;color:var(--text-muted);padding:2rem 1rem;font-size:.9rem}.app-pool-footer{border-top:1px solid var(--border-color);color:var(--text-muted);background:var(--bg-subtle);padding:.65rem 1.35rem;font-size:.72rem}.app-pool-footer strong{color:var(--text-secondary);font-weight:700}@media (width<=720px){.app-pool-toolbar{flex-direction:column;align-items:stretch}.app-picker-refresh{justify-content:center}.app-pool-muted,.app-pool-title{max-width:110px}}.workspace-class-title{color:var(--text-primary);letter-spacing:-.4px;font-size:1.5rem;font-weight:800}.workspace-stat-value{color:var(--text-primary);font-size:1.25rem;font-weight:800}.status-panel{background:var(--bg-subtle);border-radius:var(--radius-md);border:1px solid var(--border-color);align-items:center;gap:1rem;padding:.6rem 1.15rem;display:flex}.divider{background:var(--border-color);width:100%;height:1px}.nav-history-bar{flex-direction:column;flex-shrink:0;gap:.65rem;display:flex}.breadcrumb-row{flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.85rem;display:flex}.breadcrumb-back{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;transition:var(--transition);align-items:center;gap:.3rem;padding:.35rem .65rem;font-size:.82rem;font-weight:600;display:inline-flex}.breadcrumb-back:hover{background:var(--accent-light);color:var(--accent);border-color:#bb212640}.breadcrumb-sep{color:var(--text-muted);-webkit-user-select:none;user-select:none}.breadcrumb-link{color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:0;font-size:.85rem;font-weight:500}.breadcrumb-link:hover{color:var(--accent);text-decoration:underline}.breadcrumb-current{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:280px;font-weight:700;overflow:hidden}.history-pills-row{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.history-pills-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;font-size:.72rem;font-weight:700}.history-pills{flex-wrap:wrap;gap:.4rem;display:flex}.history-pill{background:var(--bg-card);border:1px solid var(--border-color);font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;transition:var(--transition);border-radius:99px;align-items:center;gap:.35rem;max-width:200px;padding:.3rem .65rem;font-size:.78rem;display:inline-flex}.history-pill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.history-pill.active{background:var(--accent);border-color:var(--accent);color:#fff}.history-pill-index{opacity:.75;flex-shrink:0;font-size:.65rem;font-weight:800}.history-pill-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.workspace-embedded{gap:.5rem;max-width:none;height:100%;min-height:0;padding:0}.page-container{max-width:1100px;padding:1.5rem 2rem}.page-header{margin-bottom:1.25rem}.page-title{color:var(--text-primary);margin:0;font-size:1.5rem;font-weight:800}.page-subtitle{color:var(--text-muted);margin:.35rem 0 0;font-size:.88rem;line-height:1.45}.network-grid{grid-template-columns:1.2fr .8fr;align-items:start;gap:1.25rem;display:grid}.network-actions{flex-wrap:wrap;gap:.65rem;margin-top:1rem;display:flex}.network-manual-form{grid-template-columns:1fr 1fr auto;align-items:start;gap:.55rem;margin-bottom:.85rem;display:grid}.network-manual-form .app-pool-search{width:100%;min-width:0}.network-manual-error{color:var(--danger,#c0392b);grid-column:1/-1;margin:0;font-size:.82rem}.network-manual-hint{color:var(--text-muted);grid-column:1/-1;margin:0 0 .15rem;font-size:.8rem}@media (width<=720px){.network-manual-form{grid-template-columns:1fr}}.network-info-list{color:var(--text-secondary);margin:0;padding-left:1.1rem;font-size:.85rem;line-height:1.55}.network-info-list li+li{margin-top:.45rem}@media (width<=900px){.network-grid{grid-template-columns:1fr}}.learning-stats-row{flex-shrink:0;grid-template-columns:repeat(4,1fr);gap:.55rem;margin-bottom:.75rem;display:grid}.learning-stat{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);flex-direction:column;gap:.15rem;padding:.65rem .85rem;display:flex}.learning-stat--accent{background:#c628280f;border-color:#c6282859}.learning-stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:800;line-height:1.1}.learning-stat-label{color:var(--text-muted);font-size:.72rem}.learning-toolbar-card{flex-shrink:0;margin-bottom:.75rem;padding:.85rem!important}.learning-toolbar{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.learning-search{flex:1;min-width:180px}.learning-seg,.learning-view-toggle{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:9px;flex-shrink:0;align-items:center;gap:2px;padding:3px;display:inline-flex;overflow:hidden}.learning-seg-btn,.learning-view-btn{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;gap:.35rem;padding:.38rem .7rem;font-size:.75rem;font-weight:600;line-height:1;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.learning-seg-btn svg,.learning-view-btn svg{opacity:.85;flex-shrink:0}.learning-seg-btn:hover:not(.learning-seg-btn--active),.learning-view-btn:hover:not(.learning-view-btn--active){color:var(--text-primary);background:#ffffffa6}.learning-seg-btn--active,.learning-view-btn--active{color:var(--accent,var(--primary-color));background:#fff;box-shadow:0 1px 2px #1a233214,0 0 0 1px #bb21261f}.learning-seg-btn--active svg,.learning-view-btn--active svg{opacity:1}.learning-day-filters{flex-wrap:wrap;gap:.3rem;margin-top:.7rem;display:flex}.learning-day-chip{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:.28rem .55rem;font-size:.72rem;font-weight:600;transition:background .15s,color .15s,border-color .15s}.learning-day-chip:hover:not(.learning-day-chip--active){background:var(--bg-subtle);color:var(--text-primary)}.learning-day-chip--active{color:var(--accent,var(--primary-color));background:#bb212614;border-color:#bb212633}.learning-empty{text-align:center;color:var(--text-muted);padding:2rem 1rem}.learning-empty-icon{margin-bottom:.5rem;font-size:2.2rem;display:block}.learning-class-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem;display:grid}.learning-class-card{border:1px solid var(--border-color);background:var(--bg-card);border-radius:10px;flex-direction:column;gap:.55rem;min-height:0;padding:.85rem;transition:border-color .15s,box-shadow .15s;display:flex}.learning-class-card:hover{border-color:#c6282859;box-shadow:0 3px 12px #00000014}.learning-class-card--today{background:#fffcf0;border-left:3px solid #eab308}.learning-class-card-head{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.learning-class-code{color:var(--primary-color);font-size:.78rem;font-weight:700}.learning-class-name{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.12rem 0 0;font-size:.84rem;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.learning-class-meta{flex-direction:column;gap:.15rem;min-width:0;margin:.15rem 0 0;display:flex}.learning-meta-major{color:var(--text-secondary);word-break:break-word;overflow-wrap:anywhere;font-size:.68rem;font-weight:500;line-height:1.4}.learning-meta-major--empty{color:var(--text-muted);font-style:italic;font-weight:400}.learning-meta-system{color:var(--text-muted);word-break:break-word;font-size:.62rem;font-weight:600;line-height:1.3}.learning-class-badges{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.25rem;display:flex}.learning-badge{background:var(--bg-subtle);border:1px solid var(--border-color);color:var(--text-secondary);white-space:nowrap;border-radius:999px;padding:.15rem .4rem;font-size:.65rem;font-weight:700}.learning-badge--today{color:#92400e;background:#fef3c7;border-color:#f59e0b}.learning-class-schedule{flex-direction:column;gap:.45rem;max-height:140px;display:flex;overflow-y:auto}.learning-schedule-day{align-items:flex-start;gap:.5rem;display:flex}.learning-schedule-day-label{color:var(--text-muted);flex-shrink:0;min-width:3.2rem;padding-top:.15rem;font-size:.72rem;font-weight:700}.learning-schedule-shifts{flex-wrap:wrap;gap:.3rem;display:flex}.learning-class-no-sched{color:var(--text-muted);margin:0;font-size:.8rem}.learning-class-apps{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.72rem;overflow:hidden}.learning-class-apps code{font-size:.7rem}.learning-class-actions{border-top:1px solid var(--border-color);flex-wrap:wrap;gap:.45rem;margin-top:auto;padding-top:.35rem;display:flex}.learning-btn-danger{color:#ff8a80!important;border-color:#c6282840!important}.learning-add-list{margin:0;padding:0;list-style:none}.learning-add-item{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem 0;display:flex}.learning-tkb-wrap{margin:-.25rem 0 0}.learning-tkb-scroll{padding-bottom:.5rem;overflow-x:auto}.learning-tkb{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:720px}.learning-tkb-corner{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm) 0 0 0;width:64px;color:var(--text-muted);padding:.6rem;font-size:.75rem}.learning-tkb-dayhead{background:var(--bg-subtle);border:1px solid var(--border-color);text-align:center;color:var(--text-secondary);border-left:none;padding:.55rem .4rem;font-size:.78rem;font-weight:700}.learning-tkb-dayhead span{display:block}.learning-tkb-dayhead em{color:var(--primary-color);margin-top:.15rem;font-size:.65rem;font-style:normal;font-weight:700;display:block}.learning-tkb-dayhead--today{color:var(--primary-color);background:#c628281a}.learning-tkb-period{background:var(--bg-subtle);border:1px solid var(--border-color);text-align:center;vertical-align:top;border-top:none;padding:.5rem}.learning-tkb-period-num{color:var(--text-muted);font-size:.75rem;font-weight:700}.learning-tkb-cell{border:1px solid var(--border-color);vertical-align:top;background:var(--bg-card);border-top:none;border-left:none;min-height:72px;padding:.35rem}.learning-tkb-cell--today{background:#c628280a}.learning-tkb-cell--filled{background:#ffffff05}.learning-tkb-empty{text-align:center;color:var(--text-muted);opacity:.4;padding:1rem 0;font-size:.8rem;display:block}.learning-tkb-blocks{flex-direction:column;gap:.3rem;display:flex}.learning-tkb-block{text-align:left;border:none;border-left:3px solid var(--tkb-accent,var(--primary-color));cursor:pointer;background:#ffffff0a;border-radius:4px;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;padding:.35rem .45rem;transition:transform .12s,background .12s;display:flex}.learning-tkb-block:hover{background:#ffffff14;transform:translateY(-1px)}.learning-tkb-block-code{color:var(--tkb-accent,var(--primary-color));font-size:.72rem;font-weight:800}.learning-tkb-block-course{color:var(--text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.68rem;line-height:1.25;display:-webkit-box;overflow:hidden}.learning-tkb-block--inactive{opacity:.55;border-left-style:dashed}.learning-tkb-block-time{color:var(--text-muted);font-family:monospace;font-size:.62rem}@media (width<=900px){.learning-stats-row{grid-template-columns:repeat(2,1fr);gap:.5rem}.learning-toolbar{flex-direction:column;align-items:stretch}.learning-view-toggle,.learning-seg{width:100%}.learning-view-btn,.learning-seg-btn{flex:1}.learning-search{width:100%!important;min-width:0!important}.learning-toolbar-card{margin-bottom:.75rem;padding:.85rem!important}.learning-class-grid{gap:.65rem;grid-template-columns:1fr!important}.learning-class-card{min-height:0;padding:.75rem}.learning-class-card-head{gap:.45rem}.learning-day-filters{gap:.3rem}.learning-day-chip{padding:.2rem .45rem;font-size:.7rem}.learning-stat{padding:.55rem .65rem}.learning-stat-value{font-size:1.05rem}.learning-stat-label{font-size:.66rem}.learning-tkb-wrap{margin:0 -.5rem}.learning-tkb-block{gap:.15rem!important;padding:.4rem!important}.learning-tkb-block-code{font-size:.65rem!important}.learning-tkb-block-course{font-size:.6rem!important}.learning-tkb-block-time{font-size:.55rem!important}}.auth-shell{background:var(--bg-app);justify-content:center;align-items:center;width:100%;min-height:100vh;padding:1.5rem;display:flex}.login-screen{width:100%;max-width:440px;margin:0 auto}.login-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);padding:1.75rem}.login-brand{align-items:center;gap:.85rem;margin-bottom:1.25rem;display:flex}.login-brand-title{font-size:1.1rem;font-weight:800}.login-brand-sub{color:var(--text-muted);font-size:.75rem}.login-heading{margin:0 0 .35rem;font-size:1.35rem}.login-hint{color:var(--text-muted);margin:0 0 1rem;font-size:.85rem}.login-form{flex-direction:column;gap:.75rem;display:flex}.login-field{color:var(--text-muted);flex-direction:column;gap:.3rem;font-size:.8rem;display:flex}.login-field input{border:1px solid var(--border-color);background:var(--bg-elevated);color:var(--text-primary);border-radius:8px;padding:.55rem .65rem}.login-submit{width:100%;margin-top:.25rem}.login-error{color:#ef4444;font-size:.82rem}.login-success{color:#22c55e;font-size:.82rem}.login-links{flex-wrap:wrap;gap:.75rem;margin-top:1rem;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:.82rem}.domain-list{margin:0;padding:0;list-style:none}.domain-item{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.domain-empty{color:var(--text-muted);padding:.5rem 0;font-size:.85rem}.chat-dock{z-index:10000;font-family:var(--font-sans);position:fixed;bottom:20px;right:20px}.chat-toast{color:#fff;background:#1e293b;border-radius:10px;flex-direction:column;gap:.25rem;width:280px;padding:.7rem .85rem;font-size:.82rem;animation:.25s chat-toast-in;display:flex;position:absolute;bottom:72px;right:0;box-shadow:0 8px 28px #00000040}.chat-toast strong{color:#93c5fd;font-size:.78rem}.chat-toast-alert{background:#7f1d1d;border:1px solid #f87171}.chat-toast-alert strong{color:#fecaca}@keyframes chat-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-fab{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;width:56px;height:56px;font-size:1.4rem;position:relative;box-shadow:0 8px 28px #00000038}.chat-fab-badge{color:#fff;background:#ef4444;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:.65rem;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-4px}.chat-messenger{border:1px solid var(--border-color);background:#fff;border-radius:14px;flex-direction:column;width:min(720px,100vw - 40px);height:min(520px,100vh - 100px);display:flex;overflow:hidden;box-shadow:0 16px 48px #0003}.chat-messenger-head{border-bottom:1px solid var(--border-color);background:#fff;flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.chat-messenger-body{background:#fff;flex:1;min-height:0;display:flex}.chat-sidebar{border-right:1px solid var(--border-color);background:#f8fafc;flex-direction:column;flex-shrink:0;width:260px;min-height:0;display:flex}.chat-sidebar-search{border-bottom:1px solid var(--border-color);background:#fff;padding:.6rem}.chat-sidebar-search input{border:1px solid var(--border-color);border-radius:8px;width:100%;padding:.5rem .65rem;font-size:.82rem}.chat-picker-list,.chat-conv-list{margin:0;padding:0;list-style:none;overflow-y:auto}.chat-picker-list{border-bottom:1px solid var(--border-color);background:#fff;max-height:160px}.chat-conv-list{flex:1}.chat-picker-list button,.chat-conv-list button{text-align:left;cursor:pointer;border:none;border-bottom:1px solid var(--border-light);width:100%;color:var(--text-primary);background:0 0;padding:.65rem .75rem}.chat-conv-list button:hover,.chat-picker-list button:hover{background:#eef2f7}.chat-conv-list button.active{background:var(--accent-light);border-left:3px solid var(--accent)}.chat-conv-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.chat-conv-name{font-size:.84rem;font-weight:600;display:block}.chat-conv-preview{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.15rem;font-size:.75rem;display:block;overflow:hidden}.chat-conv-meta{color:var(--text-muted);font-size:.68rem}.chat-conv-unread{background:var(--accent);color:#fff;text-align:center;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:.62rem;font-weight:700;line-height:18px}.chat-empty-hint{color:var(--text-muted);text-align:center;padding:1rem .75rem;font-size:.78rem}.chat-thread{background:#fff;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.chat-thread-empty{color:var(--text-muted);text-align:center;flex:1;justify-content:center;align-items:center;padding:1.5rem;font-size:.85rem;display:flex}.chat-thread-head{border-bottom:1px solid var(--border-color);background:#fff;flex-shrink:0;padding:.65rem 1rem}.chat-sub{color:var(--text-muted);font-size:.72rem}.chat-head-actions{gap:.25rem;display:flex}.chat-icon-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;width:30px;height:30px;font-size:1rem}.chat-icon-btn:hover{background:var(--bg-subtle)}.chat-messages{background:#f5f7fa;flex-direction:column;flex:1;gap:.5rem;padding:.75rem 1rem;display:flex;overflow-y:auto}.chat-bubble{flex-direction:column;gap:.15rem;max-width:78%;display:flex}.chat-bubble--staff{align-self:flex-start}.chat-bubble--student{align-self:flex-end}.chat-bubble-body{word-break:break-word;border-radius:14px;padding:.5rem .7rem;font-size:.84rem;line-height:1.4}.chat-bubble--staff .chat-bubble-body{border:1px solid var(--border-color);background:#fff}.chat-bubble--student .chat-bubble-body{background:var(--accent);color:#fff}.chat-bubble-time{color:var(--text-muted);padding:0 .25rem;font-size:.62rem}.chat-compose{border-top:1px solid var(--border-color);background:#fff;flex-shrink:0;gap:.5rem;padding:.65rem .85rem;display:flex}.chat-compose input{border:1px solid var(--border-color);border-radius:8px;flex:1;padding:.55rem .7rem;font-size:.84rem}.exam-workspace{flex:1;height:100%;min-height:0}.exam-workspace-header{flex-shrink:0}.exam-workspace-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.exam-workspace-alert{flex-shrink:0;margin:0}.exam-workspace-scroll{flex:1;min-height:0;padding-bottom:1rem}.exam-section-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.exam-section-grid--bottom{margin-top:0}@media (width<=960px){.exam-section-grid{grid-template-columns:1fr}}.exam-section{flex-direction:column;gap:.85rem;min-width:0;padding:1.15rem 1.25rem;display:flex}.exam-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.exam-section-title{color:var(--text-primary);margin:0;font-size:1rem;font-weight:700}.exam-section-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.exam-section-toolbar .search-input{width:auto;min-width:140px}.exam-form-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}@media (width<=640px){.exam-form-grid{grid-template-columns:1fr}}.exam-section-students{min-height:280px}.exam-students-panel{padding:0;overflow:hidden}.exam-students-head{border-bottom:1px solid var(--border-light);background:#fff;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.15rem 1.25rem .85rem;display:flex}.exam-online-stat{color:var(--text-muted);margin:.35rem 0 0;font-size:.8rem;font-weight:600}.exam-online-count{color:var(--success);font-size:1rem;font-weight:800}.exam-online-sep{color:var(--text-muted);margin:0 .2rem}.exam-students-toolbar{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.exam-students-search{min-width:200px}.exam-students-search .search-input{width:100%;min-width:180px}.exam-students-body{max-height:min(52vh,520px);padding:1rem 1.25rem 1.15rem;overflow:hidden auto}.exam-student-grid{padding-right:.15rem}.exam-student-card{align-items:flex-start;position:relative}.exam-student-card-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.exam-student-card-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.exam-student-card-code{color:var(--accent);font-family:monospace;font-size:.78rem;font-weight:600}.exam-student-card-status{align-items:center;gap:.35rem;margin-top:.4rem;display:flex}.exam-student-online-label{color:var(--success);font-size:.75rem;font-weight:700}.exam-student-offline-label{color:var(--text-muted);font-size:.75rem;font-weight:700}.exam-student-card-tags{flex-wrap:wrap;gap:.35rem;margin-top:.5rem;display:flex}.exam-student-tag{background:var(--bg-subtle);border:1px solid var(--border-light);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:100%;padding:.15rem .45rem;font-size:.7rem;font-weight:600;overflow:hidden}.exam-student-tag--muted{color:var(--text-muted)}.exam-student-tag--ok{background:var(--success-light);color:var(--success);border-color:#0d9f6e40}.exam-student-tag--sent{background:var(--accent-light);color:var(--accent);border-color:#bb212633}.exam-student-card-actions{flex-direction:column;flex-shrink:0;gap:.25rem;display:flex}.exam-student-chat-btn{line-height:1;font-size:1rem!important}.exam-students-table-scroll{border:1px solid var(--border-light);border-radius:var(--radius-md);max-height:min(46vh,460px);overflow:auto}.exam-students-table-scroll .data-table thead{z-index:2;box-shadow:0 1px 0 var(--border-light);background:#fff;position:sticky;top:0}.exam-students-table-scroll .data-table th{background:#fff}.exam-submissions-scroll .data-table thead{z-index:2;background:#fff;position:sticky;top:0}.exam-student-row-clickable{cursor:pointer}.exam-student-row-clickable:hover td{background:var(--bg-subtle)}.exam-row-status{align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;display:inline-flex}.exam-row-status.online{color:var(--success)}.exam-row-status.offline{color:var(--text-muted)}.exam-student-row-actions{white-space:nowrap}.exam-table-wrap{border:1px solid var(--border-light);border-radius:var(--radius-md);flex:1;min-height:0;max-height:320px;overflow:auto}.exam-table-wrap--short{max-height:240px}.exam-table-empty{text-align:center;color:var(--text-muted);padding:2rem 1rem!important}.exam-cell-muted{color:var(--text-muted);font-size:.78rem}.exam-empty-state{text-align:center;color:var(--text-muted);background:var(--bg-subtle);border-radius:var(--radius-md);border:1px dashed var(--border-color);padding:1.5rem 1rem}.exam-empty-state span{margin-bottom:.35rem;font-size:1.75rem;display:block}.exam-empty-state--compact{padding:1rem}.exam-paper-list{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.exam-paper-item{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-subtle);padding:.75rem .85rem}.exam-paper-item-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.exam-paper-meta{color:var(--text-muted);margin-top:.25rem;font-size:.78rem}.exam-paper-add-res{cursor:pointer;margin-top:.5rem}.exam-papers-view-modal{flex-direction:column;width:min(560px,94vw);max-height:85vh;display:flex}.exam-papers-view-body{flex-direction:column;gap:.75rem;padding:0 1.25rem 1.25rem;display:flex;overflow-y:auto}.exam-paper-view-card{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-subtle);padding:.85rem 1rem}.exam-paper-view-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.exam-paper-view-resources{color:var(--text-secondary);margin:.65rem 0 0;padding-left:1.1rem;font-size:.88rem}.exam-paper-view-resources li{margin-bottom:.35rem}.exam-paper-view-actions{gap:.5rem;margin-left:.5rem;display:inline-flex}.exam-pdf-viewer-overlay{z-index:2000}.exam-pdf-viewer-modal{background:var(--bg-card);border-radius:var(--radius-lg);width:min(960px,96vw);height:min(90vh,900px);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.exam-pdf-viewer-header{border-bottom:1px solid var(--border-light);flex-shrink:0;padding:.85rem 1rem}.exam-pdf-viewer-scroll{background:#525659;flex:1;min-height:0;padding:1rem 0;overflow:hidden auto}.exam-pdf-viewer-status{text-align:center;color:#fff;margin:0;padding:2rem 1rem}.exam-pdf-page-wrap{justify-content:center;margin-bottom:12px;padding:0 12px;display:flex}.exam-pdf-page{background:#fff;max-width:100%;display:block;box-shadow:0 2px 12px #00000059}.exam-pdf-viewer-frame{background:#525659;border:none;flex:1;width:100%}.exam-inline-resource-modal{height:min(85vh,800px)}.exam-inline-resource-body{background:var(--bg-subtle);flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.exam-inline-resource-image{object-fit:contain;max-width:100%;max-height:100%}.exam-send-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.exam-send-row .search-input{width:auto;min-width:180px}.exam-student-overlay{padding:1.5rem}.exam-student-modal{flex-direction:column;width:100%;max-width:min(920px,96vw);max-height:min(88vh,760px);display:flex}.exam-student-modal-header{flex-shrink:0}.exam-student-modal-desc{color:var(--text-muted);margin:.35rem 0 0;font-size:.88rem}.exam-student-modal-body{flex-direction:column;flex:1;gap:.85rem;min-height:0;padding:0 1.5rem 1.5rem;display:flex;overflow:hidden}.exam-student-modal-search .search-input{width:100%;padding:.7rem 2.5rem .7rem .85rem;font-size:.95rem}.exam-student-hits{flex-direction:column;flex:1;gap:.65rem;min-height:280px;max-height:min(62vh,560px);padding-right:.2rem;display:flex;overflow-y:auto}.exam-student-hits-empty{text-align:center;color:var(--text-muted);padding:2.5rem 1rem}.exam-student-hits-empty span{margin-bottom:.5rem;font-size:2rem;display:block}.exam-student-hit{border:1px solid var(--border-light);border-radius:var(--radius-md);transition:var(--transition);background:#fff;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.85rem;padding:.85rem 1rem;display:grid}.exam-student-hit--added{opacity:.85}.exam-student-hit--selected{border-color:var(--accent);background-color:var(--accent-light,#fff5f5)}.exam-student-hit:hover{border-color:var(--accent);box-shadow:0 2px 10px #bb212614}.exam-student-hit-avatar{width:42px;height:42px;color:var(--accent);background:linear-gradient(135deg,#fff5f5 0%,#fee2e2 100%);border:1px solid #bb21261f;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.82rem;font-weight:700;display:flex}.exam-student-hit-info{min-width:0}.exam-student-hit-info strong{margin-bottom:.2rem;font-size:.95rem;display:block}.exam-student-hit-meta{color:var(--text-muted);word-break:break-word;font-size:.8rem;line-height:1.45}.exam-student-hit-meta code{color:var(--accent);font-size:.78rem;font-weight:700}@media (width<=640px){.exam-student-hit{text-align:left;grid-template-columns:1fr}.exam-student-hit .btn{justify-content:center;width:100%}}.exam-submissions-toolbar{border-bottom:1px solid var(--border-light);background:#fafafa;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.exam-submissions-toolbar-hint{color:var(--text-muted);flex:1;min-width:200px;font-size:.78rem}.exam-git-settings{border-top:1px dashed var(--border-light);margin-top:.5rem;padding-top:.75rem}.exam-git-oauth-row{flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:.65rem;display:flex}.exam-git-connected{color:var(--text-secondary);font-size:.85rem}.exam-git-connected strong{color:var(--text-primary)}.exam-git-status-line{color:var(--text-secondary);margin:0 0 .65rem;font-size:.85rem}.exam-git-not-connected{color:var(--danger)}.github-repos-panel{margin-top:.75rem}.github-repos-toolbar{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;display:flex}.github-repos-table-wrap{max-height:360px;overflow:auto}.github-repo-link{color:var(--accent);word-break:break-all;font-weight:500}.section-subtitle{margin:0;font-size:.95rem;font-weight:600}.exam-git-branch-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.45rem;display:flex}.exam-git-branch-label{color:var(--text-secondary);margin:0;font-size:.8rem}.exam-git-branch-input{width:120px;padding:.4rem .55rem;font-size:.85rem}.exam-git-hint{color:var(--text-muted);margin:.5rem 0 0;font-size:.75rem;line-height:1.45}.exam-git-hint code{font-size:.72rem}.exam-git-last{word-break:break-all;margin:.45rem 0 0;font-size:.78rem}.exam-git-last a{color:var(--accent)}.mobile-menu-btn{z-index:30;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-card);width:42px;height:42px;color:var(--text-primary);box-shadow:var(--shadow-sm);cursor:pointer;justify-content:center;align-items:center;display:none;position:fixed;top:.75rem;left:.75rem}.mobile-menu-btn svg{width:22px;height:22px}.sidebar-backdrop{z-index:19;cursor:pointer;background:#0f172a73;border:none;display:none;position:fixed;inset:0}@media (width<=900px){.mobile-menu-btn{display:inline-flex}.sidebar-backdrop{display:block}.sidebar{z-index:25;box-shadow:var(--shadow-md);transition:transform .28s;transform:translate(-110%)}.sidebar.sidebar--open{transform:translate(0)}.sidebar.sidebar--collapsed{pointer-events:none;transform:translate(-110%)}.sidebar.sidebar--collapsed.sidebar--open{pointer-events:auto;transform:translate(0)}.sidebar-edge-toggle{z-index:26;display:none}.sidebar.sidebar--open .sidebar-edge-toggle{display:flex}.main-content,.main-content.main-content--full{margin-left:0;padding:3.75rem .85rem 1rem}}.system-page{flex-direction:column;flex:1;min-height:0;padding-bottom:1rem;display:flex;overflow:hidden}.system-subnav{grid-template-columns:repeat(3,1fr);gap:.65rem;margin-bottom:1.25rem;display:grid}.system-subnav-btn{text-align:left;border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-card);cursor:pointer;align-items:flex-start;gap:.65rem;padding:.85rem 1rem;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.system-subnav-btn:hover{border-color:#c6282859}.system-subnav-btn.active{border-color:var(--accent);background:var(--accent-light);box-shadow:0 0 0 1px #c628281f}.system-subnav-icon{border-radius:var(--radius-sm);background:var(--bg-subtle);width:36px;height:36px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.system-subnav-btn.active .system-subnav-icon{background:#c628281f}.system-subnav-icon svg{width:18px;height:18px}.system-subnav-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.system-subnav-text strong{color:var(--text-primary);font-size:.88rem}.system-subnav-text small{color:var(--text-muted);font-size:.72rem}.system-panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.system-section{flex-direction:column;flex:1;gap:1rem;min-height:0;display:flex;overflow:hidden}.system-section--grid{flex:1;grid-template-columns:1fr 280px;align-items:stretch;gap:1rem;min-height:0;display:grid;overflow:hidden}.system-block{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;min-height:0;padding:1.15rem 1.25rem;display:flex}.system-block--info{background:var(--bg-subtle)}.system-block-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.system-block-title{margin:0 0 .35rem;font-size:1.05rem;font-weight:700}.system-block-desc{color:var(--text-muted);max-width:52rem;margin:0;font-size:.84rem;line-height:1.5}.system-stat-pill{background:var(--bg-subtle);border:1px solid var(--border-color);color:var(--text-muted);border-radius:99px;flex-shrink:0;padding:.25rem .65rem;font-size:.75rem;font-weight:700}.system-inline-form{gap:.5rem;margin-bottom:1rem;display:flex}.system-inline-form input{flex:1;min-width:0}.system-inline-form--stack{flex-direction:column}.system-empty{text-align:center;color:var(--text-muted);border:1px dashed var(--border-color);border-radius:var(--radius-sm);background:var(--bg-subtle);padding:1.25rem;font-size:.88rem}.system-empty--muted{background:0 0}.system-domain-list{flex-direction:column;flex:1;gap:.45rem;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.system-domain-item{border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-subtle);justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem .85rem;display:flex}.system-domain-label{font-family:ui-monospace,monospace;font-size:.88rem;font-weight:600}.system-info-title{margin:0 0 .65rem;font-size:.92rem;font-weight:700}.system-form-card{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);margin-bottom:1rem;padding:1rem 1.15rem}.system-form-title{margin:0 0 .85rem;font-size:.95rem;font-weight:700}.system-form-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.system-form-full{grid-column:1/-1}.system-form-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.85rem;display:flex}.system-form-actions-right{gap:.5rem;display:flex}.system-table-wrap{flex:1;min-height:0;margin-bottom:.75rem;overflow:auto}.template-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.template-card{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);flex-direction:column;gap:.45rem;padding:.9rem 1rem;display:flex}.template-card-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.template-card-head h3{margin:0;font-size:.95rem}.template-card-badge{background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted);border-radius:99px;padding:.15rem .45rem;font-size:.7rem;font-weight:700}.template-card-desc{color:var(--text-muted);margin:0;font-size:.8rem}.template-card-kw{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border-light);word-break:break-word;max-height:4.5rem;padding:.45rem .55rem;font-size:.72rem;line-height:1.45;display:block;overflow:hidden}.template-card-actions{gap:.35rem;margin-top:.25rem;display:flex}.template-picker-list{flex-direction:column;gap:.55rem;display:flex}.template-picker-card{border:1px solid var(--border-color);background:#fff;border-radius:10px;justify-content:space-between;align-items:flex-start;gap:.85rem;padding:.75rem .9rem;transition:border-color .15s,box-shadow .15s;display:flex}.template-picker-card:hover{border-color:#c5cdd8;box-shadow:0 2px 8px #1a23320f}.template-picker-card-main{flex:1;min-width:0}.template-picker-card-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.2rem;display:flex}.template-picker-name{color:var(--text-primary);font-size:.88rem;font-weight:700;line-height:1.3}.template-picker-count{color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border-color);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:.12rem .4rem;font-size:.65rem;font-weight:700}.template-picker-desc{color:var(--text-muted);margin:0 0 .4rem;font-size:.72rem;line-height:1.4}.template-picker-chips{flex-wrap:wrap;gap:.25rem;display:flex}.template-picker-chip{color:var(--text-secondary);background:var(--bg-subtle);border:1px solid var(--border-light);word-break:break-all;border-radius:4px;max-width:100%;padding:.1rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.65rem;font-weight:600;line-height:1.3;display:inline-block}.template-picker-kw{word-break:break-word;margin-bottom:.65rem;font-size:.72rem;display:block}.template-picker-apply{flex-shrink:0;justify-content:center;align-items:center;gap:.3rem;min-width:88px;height:30px;margin-top:.1rem;line-height:1;border-radius:7px!important;width:auto!important;padding:0 .7rem!important;font-size:.72rem!important;display:inline-flex!important}@media (width<=560px){.template-picker-card{flex-direction:column;align-items:stretch}.template-picker-apply{width:100%!important}}.app-pool-open-actions{flex-wrap:wrap;justify-content:flex-end;gap:.45rem;display:flex}.exams-page{overflow:hidden}.exams-stats-row{flex-shrink:0;grid-template-columns:repeat(3,1fr);gap:.55rem;margin-bottom:0;display:grid}.exams-toolbar{margin-bottom:0}.exams-search{max-width:none}.exams-create-card{margin-bottom:1rem}.exams-card-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.75rem;display:grid}.exam-list-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;gap:.75rem;padding:1rem 1.1rem;transition:border-color .15s,box-shadow .15s;display:flex}.exam-list-card:hover{box-shadow:var(--shadow-md);border-color:#c628284d}.exam-list-card-head{justify-content:space-between;align-items:flex-start;gap:.65rem;display:flex}.exam-list-card-head h3{margin:0;font-size:1rem;line-height:1.35}.exam-list-card-meta{color:var(--text-secondary);flex-direction:column;gap:.45rem;font-size:.8rem;display:flex}.exam-list-card-meta>div{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.exam-list-card-label{color:var(--text-muted);margin-right:.25rem;font-weight:700}.exam-list-card-sep{color:var(--text-muted)}.exam-list-card-open{justify-content:center;width:100%}@media (width<=900px){.system-subnav,.system-section--grid,.system-form-grid,.exams-stats-row{grid-template-columns:1fr}}.grid-proctor-container{width:100%;height:100%;min-height:0;box-shadow:none;background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;padding:0;display:flex;overflow:hidden}:is(.grid-proctor-container:fullscreen,.grid-proctor-container.fullscreen-active){background:#121214;padding:1rem 1.25rem 1.25rem;overflow:hidden}.grid-proctor-toolbar{border-bottom:1px solid var(--border-light);background:var(--bg-card);z-index:2;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:.55rem .85rem;margin:0;padding:.55rem 0 .7rem;display:flex}:is(.grid-proctor-container:fullscreen .grid-proctor-toolbar,.grid-proctor-container.fullscreen-active .grid-proctor-toolbar){background:#121214;border-bottom-color:#2e2e38;padding-top:0}.grid-proctor-scroll{flex:1;min-height:0;padding-bottom:.5rem;overflow:hidden auto}.grid-proctor-toolbar-left,.grid-proctor-toolbar-right{flex-wrap:wrap;align-items:center;gap:.55rem .85rem;display:flex}.gp-search{align-items:center;display:flex;position:relative}.gp-search-icon{color:var(--text-muted);pointer-events:none;display:flex;position:absolute;left:.65rem}.gp-search-input{width:200px;min-width:180px;padding:.4rem .7rem .4rem 2rem!important;font-size:.82rem!important}.gp-check{cursor:pointer;color:var(--text-primary);-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:.35rem;font-size:.8rem;font-weight:500;display:inline-flex}.gp-check input{accent-color:var(--accent)}.gp-page-size{color:var(--text-muted);align-items:center;gap:.4rem;font-size:.78rem;font-weight:500;display:inline-flex}.gp-page-size select{border:1px solid var(--border-color);background:var(--bg-card);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:.28rem .45rem;font-size:.75rem;font-weight:600}.gp-cols-label{color:var(--text-muted);padding:0 .15rem 0 .35rem;font-size:.75rem;font-weight:600}.grid-cols-selector{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:7px;align-items:center;gap:.15rem;padding:.18rem;display:flex}.grid-cols-selector button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:5px;padding:.28rem .55rem;font-size:.75rem;font-weight:700;transition:background .15s,color .15s}.grid-cols-selector button:hover{color:var(--text-primary);background:#0000000a}.grid-cols-selector button.active{background:var(--accent);color:#fff}.gp-fs-btn{align-items:center;gap:.35rem;padding:.35rem .7rem!important;font-size:.78rem!important;display:inline-flex!important}.grid-proctor-layout{gap:.85rem;width:100%;padding:.75rem 0 .35rem;display:grid}.grid-proctor-card{background:var(--bg-card,#fff);border:1px solid var(--border-color);cursor:pointer;border-radius:10px;flex-direction:column;min-width:0;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden;box-shadow:0 1px 2px #1018280a}.grid-proctor-card:hover{border-color:#bb212659;box-shadow:0 4px 14px #10182814}.grid-proctor-card.online{border-color:#0d9f6e47}.grid-proctor-card.online:hover{border-color:var(--success)}.grid-proctor-card.offline{opacity:1}.grid-proctor-card.submitted{border-left:3px solid var(--success)}.grid-proctor-card-header{background:var(--bg-subtle);border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:.5rem;min-height:38px;padding:.5rem .7rem;display:flex}.student-info-left{align-items:center;gap:.4rem;min-width:0;display:flex;overflow:hidden}.student-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:650;overflow:hidden}.student-code{color:var(--accent);letter-spacing:-.01em;flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.72rem;font-weight:600}.status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.status-dot.online{background:var(--success);animation:1.8s ease-in-out infinite pulse-online;box-shadow:0 0 0 2px #0d9f6e33}.status-dot.offline{background:#94a3b8}.grid-proctor-card-body{aspect-ratio:16/9;background:#141416;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.proctor-frame-container{cursor:zoom-in;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .15s;display:flex;position:relative}.proctor-frame-container:hover{opacity:.96}.proctor-screen-image{object-fit:contain;-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%}.proctor-webcam-overlay{aspect-ratio:4/3;z-index:10;background:#000;border:1.5px solid #fff;border-radius:5px;width:28%;position:absolute;bottom:6px;right:6px;overflow:hidden;box-shadow:0 2px 8px #0006}.proctor-webcam-image{object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:100%}.proctor-placeholder{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;width:100%;height:100%;padding:1rem;display:flex}.proctor-placeholder.offline{color:#94a3b8;background:linear-gradient(160deg,#1c1c20 0%,#25252b 100%)}.gp-offline-icon{color:#64748b;opacity:.85;margin-bottom:.35rem;display:flex}.gp-offline-label{color:#cbd5e1;font-size:.8rem;font-weight:650}.gp-offline-sub{color:#64748b;letter-spacing:.04em;text-transform:uppercase;font-size:.68rem;font-weight:500}.grid-proctor-card-footer{background:var(--bg-subtle);border-top:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:.5rem;min-height:40px;padding:.4rem .55rem .4rem .7rem;display:flex}.assigned-paper{white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:42%;color:var(--text-muted);align-items:center;gap:.3rem;font-size:.72rem;font-style:normal;font-weight:500;display:inline-flex;overflow:hidden}.assigned-paper svg{opacity:.7;flex-shrink:0}.footer-actions{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.gp-action-btn{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:.28rem;padding:.28rem .5rem;font-family:inherit;font-size:.72rem;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.gp-action-btn:hover{border-color:var(--border-color);color:var(--text-primary);background:#fff}.gp-action-btn--primary{color:var(--accent)}.gp-action-btn--primary:hover{color:var(--accent);background:#bb21260f;border-color:#bb212633}.grid-proctor-empty{min-height:220px;color:var(--text-muted);text-align:center;flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;gap:.55rem;display:flex}.gp-empty-icon{color:var(--text-muted);opacity:.55;display:flex}.grid-proctor-empty p{color:var(--text-secondary);margin:0;font-size:.85rem;font-weight:500}.grid-proctor-pagination{border-top:1px solid var(--border-light);flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem 1rem;margin-top:.5rem;padding:.85rem 0 4.5rem;display:flex}.gp-page-btn{align-items:center;gap:.3rem;font-weight:600!important;display:inline-flex!important}.gp-page-info{color:var(--text-secondary);font-size:.8rem;font-weight:600}.gp-page-total{color:var(--text-muted);font-weight:500}.zoomed-proctor-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;background:#0a0f1ee6;justify-content:center;align-items:center;padding:1.5rem;animation:.18s ease-out gp-fade-in;display:flex;position:absolute;inset:0}@keyframes gp-fade-in{0%{opacity:0}to{opacity:1}}.zoomed-proctor-modal{background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;flex-direction:column;width:100%;max-width:1000px;max-height:90%;display:flex;overflow:hidden;box-shadow:0 20px 40px #0006}.zoomed-proctor-header{border-bottom:1px solid var(--border-color);background:var(--bg-subtle);justify-content:space-between;align-items:center;padding:.85rem 1.15rem;display:flex}.zoomed-proctor-title{align-items:center;gap:.65rem;min-width:0;display:flex}.zoomed-proctor-title h3{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1rem;font-weight:650;overflow:hidden}.zoomed-proctor-close{width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.zoomed-proctor-close:hover{background:var(--border-light);color:var(--text-primary)}.zoomed-proctor-body{background:#000;flex:1;justify-content:center;align-items:center;min-height:360px;padding:1.25rem;display:flex;position:relative;overflow:hidden}.zoomed-proctor-frame{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.zoomed-proctor-screen{object-fit:contain;border-radius:8px;max-width:100%;max-height:65vh}.zoomed-proctor-webcam{aspect-ratio:4/3;background:#000;border:2px solid #fff;border-radius:8px;width:220px;position:absolute;bottom:16px;right:16px;overflow:hidden;box-shadow:0 8px 16px #0006}.attendance-collapsible-wrapper{opacity:1;flex-direction:column;gap:.5rem;max-height:500px;transition:max-height .3s ease-in-out,opacity .25s ease-in-out,margin .3s ease-in-out;display:flex;overflow:hidden}.attendance-collapsible-wrapper.collapsed{opacity:0;pointer-events:none;max-height:0;margin:0!important;padding:0!important}.seating-workspace-grid{flex:1;grid-template-columns:1fr 300px;gap:1.5rem;min-height:0;display:grid;overflow:hidden}.seating-workspace-main{flex-direction:column;flex:1;gap:1rem;min-height:0;display:flex;overflow:hidden}.seating-workspace-sidebar{border-left:1px solid var(--border-color);flex-direction:column;flex:1;gap:1rem;min-height:0;padding-left:1.5rem;display:flex;overflow:hidden}@media (width<=768px){.seating-workspace-grid{grid-template-columns:1fr!important;overflow-y:auto!important}.seating-workspace-sidebar{border-left:none!important;border-top:1px solid var(--border-color)!important;min-height:350px!important;margin-top:1rem!important;padding-top:1.5rem!important;padding-left:0!important;overflow:visible!important}.seating-workspace-main{overflow:visible!important}.control-bar{flex-direction:column;align-items:stretch!important;gap:.85rem!important;padding:.85rem 1rem!important}.search-input-wrapper{width:100%!important;max-width:100%!important}.filters-wrapper{flex-direction:column;align-items:stretch!important;gap:.75rem!important;width:100%!important}.select-filter{width:100%!important}.table-wrapper{box-shadow:none!important;background:0 0!important;border:none!important;overflow:visible!important}.data-table{width:100%;display:block}.data-table thead{display:none}.data-table tbody,.data-table tr,.data-table td{box-sizing:border-box;width:100%;display:block}.data-table tr{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:1.25rem;display:flex}.data-table tr:hover{background-color:var(--bg-card)!important}.data-table td{flex-direction:column;align-items:flex-start;gap:.2rem;font-size:.875rem;display:flex;text-align:left!important;border:none!important;padding:0!important}.data-table td:last-child{flex-direction:row;width:100%;margin-top:.5rem;display:flex;border-top:1px dashed var(--border-color)!important;padding-top:.5rem!important}.data-table td .btn{justify-content:center!important;width:100%!important}.tab-page-footer{padding-bottom:4.75rem;padding-right:0}.pagination-row{padding:1rem 0;text-align:center!important;flex-direction:column!important;align-items:center!important;gap:.85rem!important}.page-header{flex-direction:column;align-items:stretch;gap:.75rem}.page-header .btn{justify-content:center;width:100%}.content-card{padding:1rem!important}.page-title h1{font-size:1.3rem!important}.page-title p{font-size:.82rem!important}.stats-grid{grid-template-columns:repeat(2,1fr)!important;gap:.65rem!important}.stat-card{padding:.85rem 1rem!important}.stat-value{font-size:1.4rem!important}.system-subnav{grid-template-columns:1fr!important;gap:.5rem!important}.tab-page,.tab-page-body,.tab-page-toolbar,.tab-page-scroll{max-width:100vw;overflow-x:hidden}.exams-card-grid{grid-template-columns:1fr!important}.tab-page>div[style*=padding],.tab-page>.tab-page-body{padding-left:.85rem!important;padding-right:.85rem!important}.modal-overlay{padding:.75rem!important}.modal-container{max-height:90vh!important}}:is(.grid-proctor-container.fullscreen-active,.grid-proctor-container:fullscreen){color:#e4e4eb!important;background:#121214!important;padding:1rem 1.25rem 1.25rem!important}:is(.grid-proctor-container.fullscreen-active .grid-proctor-toolbar,.grid-proctor-container:fullscreen .grid-proctor-toolbar){background:#121214!important;border-bottom-color:#2e2e38!important}:is(.grid-proctor-container.fullscreen-active .gp-check,.grid-proctor-container:fullscreen .gp-check,.grid-proctor-container.fullscreen-active .gp-page-size,.grid-proctor-container:fullscreen .gp-page-size,.grid-proctor-container.fullscreen-active .gp-cols-label,.grid-proctor-container:fullscreen .gp-cols-label){color:#a0a0b0!important}.grid-proctor-container.fullscreen-active .gp-page-size select,.grid-proctor-container.fullscreen-active .gp-search-input{color:#e4e4eb!important;background-color:#1e1e24!important;border-color:#2e2e38!important}.grid-proctor-container:fullscreen .gp-page-size select{color:#e4e4eb!important;background-color:#1e1e24!important;border-color:#2e2e38!important}.grid-proctor-container:fullscreen .gp-search-input{color:#e4e4eb!important;background-color:#1e1e24!important;border-color:#2e2e38!important}:is(.grid-proctor-container.fullscreen-active .grid-cols-selector,.grid-proctor-container:fullscreen .grid-cols-selector),:is(.grid-proctor-container.fullscreen-active .grid-proctor-card,.grid-proctor-container:fullscreen .grid-proctor-card){background:#1e1e24!important;border-color:#2e2e38!important}:is(.grid-proctor-container.fullscreen-active .grid-proctor-card-header,.grid-proctor-container:fullscreen .grid-proctor-card-header,.grid-proctor-container.fullscreen-active .grid-proctor-card-footer,.grid-proctor-container:fullscreen .grid-proctor-card-footer){background:#242b3b!important;border-color:#2e2e38!important}:is(.grid-proctor-container.fullscreen-active .student-name,.grid-proctor-container:fullscreen .student-name){color:#e4e4eb!important}:is(.grid-proctor-container.fullscreen-active .student-code,.grid-proctor-container:fullscreen .student-code){color:#ff7875!important}:is(.grid-proctor-container.fullscreen-active .assigned-paper,.grid-proctor-container:fullscreen .assigned-paper,.grid-proctor-container.fullscreen-active .gp-action-btn,.grid-proctor-container:fullscreen .gp-action-btn){color:#a0a0b0!important}:is(.grid-proctor-container.fullscreen-active .gp-action-btn:hover,.grid-proctor-container:fullscreen .gp-action-btn:hover){color:#e4e4eb!important;background:#1e1e24!important;border-color:#3e3e4a!important}:is(.grid-proctor-container.fullscreen-active .gp-action-btn--primary,.grid-proctor-container:fullscreen .gp-action-btn--primary){color:#ff7875!important}:is(.grid-proctor-container.fullscreen-active .grid-proctor-pagination,.grid-proctor-container:fullscreen .grid-proctor-pagination){border-top-color:#2e2e38!important}:is(.grid-proctor-container.fullscreen-active .gp-page-info,.grid-proctor-container:fullscreen .gp-page-info){color:#e4e4eb!important}:is(.grid-proctor-container.fullscreen-active .gp-fs-btn,.grid-proctor-container:fullscreen .gp-fs-btn){color:#e4e4eb!important;background:#1e1e24!important;border-color:#3e3e4a!important}:is(.grid-proctor-container.fullscreen-active .grid-proctor-scroll,.grid-proctor-container:fullscreen .grid-proctor-scroll){padding-bottom:1rem}
