*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:#0f172a;color:#e2e8f0}button{font:inherit;padding:.6rem 1rem;border-radius:.5rem;border:0;background:#334155;color:#fff;cursor:pointer;transition:all .15s ease}button:hover:not(:disabled){background:#475569}button:disabled{opacity:.5;cursor:not-allowed}button.active{background:#2563eb;color:#fff}input,select{font:inherit;padding:.55rem .75rem;border-radius:.45rem;border:1px solid #475569;background:#1e293b;color:#fff;width:100%}.muted{color:#94a3b8;margin:0}.badge{background:#334155;padding:.2rem .65rem;border-radius:1rem;font-size:.8rem;font-weight:600}body.student canvas{display:block;position:fixed;inset:0}.overlay{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#0f172aeb;text-align:center}.overlay.hidden{display:none}.pin{font-size:4rem;font-weight:700;letter-spacing:.3rem;font-variant-numeric:tabular-nums}.enter-btn{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);font-size:1.3rem;padding:1rem 2rem;background:#2563eb;border-radius:2rem;box-shadow:0 4px 20px #0006;z-index:20}.enter-btn:focus-visible{outline:3px solid #fbbf24}.hud-badge{position:fixed;top:.8rem;left:.8rem;z-index:25;background:#0f172ad9;border:1px solid #334155;padding:.35rem .75rem;border-radius:2rem;font-size:.85rem;pointer-events:none}.yt-dome-toggle{position:fixed;top:.8rem;right:.8rem;z-index:25;background:#1d4ed8eb;border:1px solid #60a5fa;padding:.4rem .85rem;border-radius:2rem;font-size:.85rem;font-weight:600}.yt-wrap{position:fixed;inset:0;z-index:8;background:#000;transition:opacity .15s ease}.yt-wrap.hidden{opacity:0;visibility:hidden;pointer-events:none;z-index:-1}.yt-wrap iframe{width:100%;height:100%;border:0;display:block}body.auth{min-height:100vh;display:grid;place-items:center;padding:1rem;background:#f8fafc;color:#0f172a}.auth-card{background:#fff;border:1px solid #e2e8f0;border-radius:1rem;padding:2rem;width:100%;max-width:400px;display:flex;flex-direction:column;gap:.9rem;box-shadow:0 10px 30px #0f172a12}.auth-card h1{margin:0;text-align:center;color:#0f172a;font-size:1.5rem}.auth-card input{background:#fff;border:1px solid #cbd5e1;color:#0f172a}.auth-card label{color:#334155;font-weight:500}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:.3rem;background:#f1f5f9;padding:.3rem;border-radius:.6rem}.tabs button{background:transparent;color:#475569;font-weight:500}.tabs button.active{background:#fff;color:#0f172a;box-shadow:0 1px 3px #0f172a1a}.google-btn{display:flex;align-items:center;justify-content:center;gap:.6rem;background:#fff;color:#1f2937;font-weight:600;border:1px solid #cbd5e1}.google-btn:hover:not(:disabled){background:#f8fafc}.divider{display:flex;align-items:center;gap:.6rem;color:#64748b;font-size:.85rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:#e2e8f0}button.primary{background:#1d4ed8;color:#fff;font-weight:500}button.primary:hover:not(:disabled){background:#1e40af}button.link{background:none;color:#1d4ed8;padding:0;font-size:.85rem}.visor-link{text-align:center;color:#1e293b;background:#f1f5f9;border:1px solid #e2e8f0;padding:.65rem 1rem;border-radius:.5rem;text-decoration:none;font-weight:500}.visor-link:hover{background:#e2e8f0}body.teacher{background:#f8fafc;color:#0f172a;min-height:100vh}.app-shell{display:grid;grid-template-columns:265px 1fr;min-height:100vh;transition:padding-right .22s ease}body.teacher.drawer-open .app-shell{padding-right:360px}@media(max-width:1180px){body.teacher.drawer-open .app-shell{padding-right:0}}@media(max-width:960px){.app-shell{grid-template-columns:1fr}}.sidebar{background:#fff;border-right:1px solid #e2e8f0;display:flex;flex-direction:column;padding:1.25rem 1rem;position:sticky;top:0;height:100vh}@media(max-width:960px){.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid #e2e8f0}}.brand{display:flex;align-items:center;gap:.75rem;padding:.5rem .6rem 1.25rem;border-bottom:1px solid #f1f5f9;margin-bottom:1rem}.brand-logo{width:40px;height:40px;border-radius:.65rem;background:#eff6ff;color:#1d4ed8;display:grid;place-items:center;flex-shrink:0;border:1px solid #dbeafe}.brand strong{display:block;font-size:.98rem;color:#0f172a;letter-spacing:-.01em}.brand span{display:block;font-size:.78rem;color:#64748b}.side-nav{display:flex;flex-direction:column;gap:.28rem;flex:1}.nav-item{display:flex;align-items:center;gap:.7rem;width:100%;text-align:left;padding:.65rem .85rem;border-radius:.55rem;background:transparent;color:#475569;font-weight:500;font-size:.9rem}.nav-item:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.nav-item.active{background:#eff6ff;color:#1d4ed8;font-weight:600}.nav-item svg{flex-shrink:0}.nav-divider{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;padding:.75rem .85rem .25rem}.nav-pill{margin-left:auto;background:#dbeafe;color:#1e40af;padding:.1rem .45rem;border-radius:1rem;font-size:.7rem;font-weight:700}.sidebar-footer{border-top:1px solid #e2e8f0;padding-top:1rem;margin-top:1rem;display:flex;flex-direction:column;gap:.55rem}.user-box{display:flex;align-items:center;gap:.65rem}.user-box img{width:36px;height:36px;border-radius:50%;border:1px solid #e2e8f0}.user-meta{display:flex;flex-direction:column;min-width:0}.user-meta span{font-size:.88rem;font-weight:600;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta small{font-size:.75rem;color:#1d4ed8;font-weight:600}.btn-role{width:100%;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;font-size:.8rem;font-weight:600;padding:.45rem}.btn-role:hover:not(:disabled){background:#dbeafe}.btn-logout{width:100%;background:#fff;color:#475569;border:1px solid #cbd5e1;font-size:.85rem;padding:.5rem}.btn-logout:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.main-area{display:flex;flex-direction:column;min-width:0}.topbar{background:#fff;border-bottom:1px solid #e2e8f0;padding:1.1rem 2rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.topbar h1{font-size:1.35rem;font-weight:700;color:#0f172a;margin:0;letter-spacing:-.015em}.topbar .subtitle{margin:.2rem 0 0;font-size:.85rem;color:#64748b}.topbar-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}body.teacher .badge{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}body.teacher .muted{color:#64748b;font-size:.85rem}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1.25rem;padding:1.75rem 2rem;max-width:1440px;width:100%}.card{background:#fff;border:1px solid #e2e8f0;border-radius:.85rem;padding:1.35rem 1.5rem;display:flex;flex-direction:column;gap:.85rem;box-shadow:0 1px 3px #0f172a0a}.card.hidden-panel{display:none!important}.card.span-full{grid-column:1 / -1}.card-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #f1f5f9;padding-bottom:.65rem;flex-wrap:wrap;gap:.5rem}.card h2{font-size:1.05rem;font-weight:600;color:#0f172a;margin:0;display:flex;align-items:center;gap:.5rem}.card h3{font-size:.95rem;font-weight:600;color:#0f172a;margin:0 0 .35rem}body.teacher input,body.teacher select{background:#fff;border:1px solid #cbd5e1;color:#0f172a}body.teacher input:focus,body.teacher select:focus{outline:2px solid #bfdbfe;border-color:#2563eb}body.teacher label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:500;color:#334155}body.teacher button:not(.nav-item):not(.primary):not(.btn-logout):not(.btn-role):not(.pin-pick):not(.pin-danger):not(.cat-chip):not(.class-toggle-btn):not(.class-fab):not(.class-tx-btn){background:#f1f5f9;color:#1e293b;border:1px solid #cbd5e1;font-weight:500}body.teacher button:not(.nav-item):not(.primary):not(.btn-logout):not(.btn-role):not(.pin-pick):not(.pin-danger):not(.cat-chip):not(.class-toggle-btn):not(.class-fab):not(.class-tx-btn):hover:not(:disabled){background:#e2e8f0}body.teacher button.mode-btn.active{background:#1d4ed8;color:#fff;border-color:#1d4ed8}.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}form{display:flex;flex-direction:column;gap:.75rem}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:640px){.form-row-2{grid-template-columns:1fr}}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;padding:.6rem .5rem;border-bottom:2px solid #e2e8f0;color:#475569;font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}td{text-align:left;padding:.65rem .5rem;border-bottom:1px solid #f1f5f9;color:#1e293b;vertical-align:middle}tr:hover td{background:#f8fafc}.pin-pick{padding:.35rem .7rem;font-size:.8rem;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;font-weight:600}.pin-pick:hover:not(:disabled){background:#dbeafe}.pin-danger{padding:.35rem .7rem;font-size:.8rem;background:#fef2f2;color:#dc2626;border:1px solid #fecaca;font-weight:600}.pin-danger:hover:not(:disabled){background:#fee2e2}#ptt.talking{background:#dc2626!important;color:#fff!important;border-color:#dc2626!important}.library-toolbar{display:grid;grid-template-columns:1fr 270px;gap:.75rem;align-items:center}@media(max-width:720px){.library-toolbar{grid-template-columns:1fr}}.search-box input{padding:.65rem .9rem;font-size:.92rem;border-radius:.6rem}.cat-chips{display:flex;gap:.45rem;flex-wrap:wrap;padding:.2rem 0}.cat-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .85rem;border-radius:2rem;font-size:.84rem;font-weight:600;background:#f8fafc;color:#334155;border:1px solid #cbd5e1}.cat-chip:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.cat-chip.active{background:#1d4ed8;color:#fff;border-color:#1d4ed8;box-shadow:0 2px 6px #1d4ed833}.cat-chip .chip-count{background:#0f172a14;padding:.08rem .45rem;border-radius:1rem;font-size:.74rem}.cat-chip.active .chip-count{background:#ffffff38;color:#fff}.library-grouped-view{display:flex;flex-direction:column;gap:1.5rem}.category-group{display:flex;flex-direction:column;gap:.75rem}.category-group-head{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #f1f5f9;padding-bottom:.45rem}.category-group-head h3{font-size:1.02rem;font-weight:700;color:#0f172a;margin:0;display:flex;align-items:center;gap:.45rem}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.lib-card{background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column;transition:all .15s ease;box-shadow:0 1px 2px #0f172a08;cursor:grab}.lib-card:active{cursor:grabbing}.lib-card.dragging{opacity:.55;transform:scale(.98);border-color:#2563eb}.lib-card:hover{border-color:#94a3b8;transform:translateY(-1px);box-shadow:0 6px 16px #0f172a0f}.lib-card.active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb2e}.lib-thumb{position:relative;aspect-ratio:16 / 9;background:linear-gradient(135deg,#0f172a,#1e3a8a);display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:1px solid #e2e8f0}.lib-thumb img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.lib-thumb-icon{font-size:2.5rem;opacity:.9}.lib-type-badge{position:absolute;top:.55rem;left:.55rem;background:#0f172ad1;color:#fff;padding:.2rem .55rem;border-radius:.4rem;font-size:.73rem;font-weight:600;backdrop-filter:blur(4px)}.lib-drag-badge{position:absolute;top:.55rem;right:.55rem;background:#1d4ed8e6;color:#fff;padding:.18rem .5rem;border-radius:.4rem;font-size:.7rem;font-weight:600}.lib-cat-badge{position:absolute;bottom:.55rem;right:.55rem;background:#fffffff0;color:#0f172a;padding:.18rem .55rem;border-radius:.4rem;font-size:.73rem;font-weight:600}.lib-body{padding:.9rem 1rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.lib-body h4{margin:0;font-size:.94rem;font-weight:600;color:#0f172a;line-height:1.35}.lib-body p{margin:0;font-size:.82rem;color:#64748b;line-height:1.4;flex:1}.lib-actions{display:flex;justify-content:space-between;align-items:center;gap:.4rem;padding-top:.45rem;border-top:1px solid #f1f5f9;flex-wrap:wrap}.content-split{display:grid;grid-template-columns:minmax(320px,1.05fr) 1.25fr;gap:1.25rem;align-items:start}@media(max-width:960px){.content-split{grid-template-columns:1fr}}.resource-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.75rem;padding:1.15rem;display:flex;flex-direction:column;gap:.75rem}.category-form-inline{display:grid;grid-template-columns:74px 1fr auto;gap:.6rem;align-items:end}@media(max-width:640px){.category-form-inline{grid-template-columns:1fr}}.box-sep{border:0;border-top:1px solid #e2e8f0;margin:.35rem 0}.resource-list{display:flex;flex-direction:column;gap:.55rem;max-height:330px;overflow-y:auto}.resource-item{background:#fff;border:1px solid #e2e8f0;border-radius:.6rem;padding:.7rem .85rem;display:flex;justify-content:space-between;align-items:center;gap:.75rem}.resource-item.active{border-color:#2563eb;background:#eff6ff}.resource-meta{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1}.resource-meta strong{font-size:.86rem;color:#0f172a;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.resource-meta small{font-size:.74rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-toggle-btn{display:inline-flex;align-items:center;gap:.5rem;background:#1d4ed8;color:#fff;padding:.5rem .9rem;border-radius:.6rem;font-weight:600;font-size:.88rem;box-shadow:0 2px 6px #1d4ed838}.class-toggle-btn:hover:not(:disabled){background:#1e40af}.class-count{background:#ffffff38;color:#fff;padding:.08rem .45rem;border-radius:1rem;font-size:.76rem;font-weight:700}.class-fab{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:45;display:flex;flex-direction:column;align-items:center;gap:.3rem;background:#1d4ed8;color:#fff;padding:.75rem .55rem;border-radius:.75rem 0 0 .75rem;box-shadow:-4px 4px 16px #0f172a2e;font-size:.78rem;font-weight:700;letter-spacing:.02em}.class-fab:hover:not(:disabled){background:#1e40af;padding-right:.75rem}body.teacher.drawer-open .class-fab{display:none}.class-fab-count{background:#fff;color:#1d4ed8;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.74rem;font-weight:800}.class-drawer{position:fixed;top:0;right:0;bottom:0;width:360px;max-width:92vw;z-index:50;background:#fff;border-left:1px solid #cbd5e1;box-shadow:-10px 0 30px #0f172a1a;display:flex;flex-direction:column;transform:translate(100%);transition:transform .22s ease}body.teacher.drawer-open .class-drawer{transform:translate(0)}.class-drawer-head{padding:1rem 1.15rem;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center;background:#f8fafc}.class-drawer-title{display:flex;align-items:center;gap:.65rem}.class-icon-box{width:36px;height:36px;border-radius:.55rem;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;display:grid;place-items:center}.class-drawer-title strong{display:block;font-size:1rem;color:#0f172a}.class-status-pill{display:inline-block;font-size:.72rem;font-weight:700;padding:.12rem .5rem;border-radius:1rem;margin-top:.1rem}.class-status-pill.live{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0}.class-status-pill.paused{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1}.class-close-btn{padding:.3rem .6rem;font-size:.9rem;border-radius:.45rem}.class-now-playing{padding:1rem 1.15rem;border-bottom:1px solid #e2e8f0;background:#fff;display:flex;flex-direction:column;gap:.45rem}.class-np-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#1d4ed8}.class-now-playing strong{font-size:.95rem;color:#0f172a;line-height:1.3}.class-tx-btn{width:100%;padding:.7rem 1rem;font-size:.9rem;font-weight:700;border-radius:.55rem;margin-top:.25rem}.class-tx-btn.transmitting{background:#16a34a;color:#fff}.class-tx-btn.transmitting:hover:not(:disabled){background:#15803d}.class-nav-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.4rem;margin-top:.2rem}.class-nav-row button{padding:.4rem .6rem;font-size:.78rem}.class-dropzone{flex:1;padding:1rem 1.15rem;display:flex;flex-direction:column;gap:.75rem;overflow-y:auto;background:#f8fafc;transition:background .15s ease}.class-dropzone.drag-over{background:#eff6ff;box-shadow:inset 0 0 0 2px #2563eb}.dropzone-hint{border:2px dashed #93c5fd;background:#fff;color:#1e40af;border-radius:.7rem;padding:.85rem;display:flex;align-items:center;gap:.65rem;font-size:.82rem;line-height:1.35;text-align:left}.class-dropzone.drag-over .dropzone-hint{background:#dbeafe;border-color:#1d4ed8;transform:scale(1.01)}.dropzone-hint svg{flex-shrink:0;color:#2563eb}.class-playlist{display:flex;flex-direction:column;gap:.55rem}.class-item{background:#fff;border:1px solid #e2e8f0;border-radius:.65rem;padding:.65rem .75rem;display:flex;align-items:center;gap:.6rem;transition:all .15s ease}.class-item:hover{border-color:#94a3b8}.class-item.active{border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 2px #2563eb26}.class-item-index{width:24px;height:24px;border-radius:50%;background:#f1f5f9;color:#475569;font-size:.75rem;font-weight:700;display:grid;place-items:center;flex-shrink:0}.class-item.active .class-item-index{background:#1d4ed8;color:#fff}.class-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.12rem}.class-item-info strong{font-size:.84rem;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-item-info small{font-size:.73rem;color:#64748b}.class-item-actions{display:flex;align-items:center;gap:.3rem;flex-shrink:0}.supervision-layout{display:grid;grid-template-columns:minmax(320px,1.25fr) 1fr;gap:1.25rem;align-items:start}@media(max-width:960px){.supervision-layout{grid-template-columns:1fr}}.mirror-wrap{position:relative;border-radius:.75rem;overflow:hidden;border:1px solid #cbd5e1;background:#0f172a;aspect-ratio:16 / 9;box-shadow:inset 0 2px 6px #0003}.mirror-viewport{width:100%;height:100%}.mirror-viewport canvas{display:block;width:100%!important;height:100%!important}.teacher-yt-frame{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:2;background:#000}.teacher-yt-frame.hidden{display:none}.mirror-hud{position:absolute;left:.75rem;bottom:.75rem;right:.75rem;z-index:4;background:#fffffff0;color:#0f172a;border:1px solid #cbd5e1;padding:.5rem .8rem;border-radius:.5rem;font-size:.85rem;font-weight:500;pointer-events:none;box-shadow:0 2px 8px #0f172a1f}.vision-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem}.vision-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.7rem;padding:.75rem;cursor:pointer;display:flex;flex-direction:column;gap:.45rem;transition:all .15s ease}.vision-card:hover{border-color:#94a3b8;background:#fff}.vision-card.selected{background:#fff;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb33}.vision-card-head{display:flex;justify-content:space-between;align-items:center;font-size:.86rem;color:#0f172a;gap:.35rem}.vision-card-foot{display:flex;justify-content:space-between;align-items:center;gap:.35rem}.lens-screen{width:100%;aspect-ratio:16 / 9;border-radius:.45rem;border:1px solid #cbd5e1;background:#0f172a;display:block}
