:root{--blue:#0b5cff;--blue-hover:#0047d6;--orange:#ff742e;--orange-hover:#f0621a;--red:#e02828;--red-hover:#c41f1f;--green:#1fb25a;--speaker:#23d959;--l-bg:#fff;--l-surface:#f7f7fa;--l-border:#dfe3e8;--l-text:#232333;--l-muted:#747487;--m-bg:#1a1a1a;--m-tile:#232323;--m-surface:#2b2b2b;--m-hover:#3a3a3a;--m-border:#3d3d3d;--m-text:#fff;--m-muted:#a6a6a6;--radius:10px}*{box-sizing:border-box}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background:#8c8c9673 padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:#a0a0aab3}::-webkit-scrollbar-thumb:active{background-color:#b4b4bed9}html,body,#root{height:100%}body{background:var(--l-bg);color:var(--l-text);margin:0;font-family:Segoe UI,Lato,system-ui,-apple-system,sans-serif;font-size:14px}h1,h2,p{margin:0}button{font:inherit}.error{color:var(--red);font-size:13px}.warning{color:#b76e00;font-size:13px}.shell{background:var(--l-bg);min-height:100%;color:var(--l-text);flex-direction:column;display:flex}.shell-header{align-items:center;gap:24px;height:64px;padding:0 20px;display:flex}.brand{color:var(--blue);align-items:center;gap:10px;font-size:20px;font-weight:700;display:flex}.brand-mark{--mark-bg:var(--blue);background:var(--mark-bg);color:#fff;border-radius:10px;place-items:center;width:40px;height:40px;display:grid}.shell-main{flex:1;place-items:center;padding:24px 16px;display:grid}.vivid{isolation:isolate;background:linear-gradient(135deg, var(--blue) 0%, #6d4dff 50%, var(--orange) 100%);position:relative;overflow:hidden}.vivid:before,.vivid:after,.vivid>.vivid-blob{content:"";z-index:-1;pointer-events:none;will-change:transform;border-radius:50%;width:90vmax;height:90vmax;animation:none;position:absolute}.vivid:before{background:radial-gradient(circle,#ff742ecc 0%,#ff742e00 62%);animation-name:vivid-blob-a;animation-duration:31s;top:-45vmax;left:-35vmax}.vivid:after{background:radial-gradient(circle,#0b5cffd9 0%,#0b5cff00 62%);animation-name:vivid-blob-b;animation-duration:43s;bottom:-45vmax;right:-35vmax}.vivid>.vivid-blob{background:radial-gradient(circle,#d64dffa6 0%,#d64dff00 60%);animation-name:vivid-blob-c;animation-duration:53s;top:-10vmax;right:-50vmax}@keyframes vivid-blob-a{0%{transform:translate(12vw,14vh)scale(1.6)}20%{transform:translate(55vw,25vh)scale(1.25)}40%{transform:translate(15vw,70vh)scale(.85)}60%{transform:translate(70vw,85vh)scale(1.1)}80%{transform:translate(35vw,10vh)scale(.95)}to{transform:translate(80vw,50vh)scale(1.2)}}@keyframes vivid-blob-b{0%{transform:translate(0)scale(1.1)}25%{transform:translate(-60vw,-20vh)scale(.9)}50%{transform:translate(-20vw,-75vh)scale(1.25)}75%{transform:translate(-75vw,-55vh)scale(1)}to{transform:translate(-35vw,-5vh)scale(.85)}}@keyframes vivid-blob-c{0%{transform:translate(0)scale(.9)}30%{transform:translate(-70vw,45vh)scale(1.2)}55%{transform:translate(-30vw,10vh)scale(.8)}80%{transform:translate(-85vw,-15vh)scale(1.1)}to{transform:translate(-45vw,65vh)scale(1)}}@media (prefers-reduced-motion:reduce){.vivid:before,.vivid:after,.vivid>.vivid-blob{animation:none}}.shell.vivid .brand{color:#fff}.shell.vivid .brand-mark{--mark-bg:white;color:var(--blue)}.shell.vivid .shell-footer{color:#fffc}.home{flex-direction:column;align-self:stretch;align-items:center;gap:28px;width:min(760px,100%);display:flex}.home:after{content:"";flex:1 1 0}.home-hero{text-align:center;text-wrap:balance;color:#fff;text-shadow:0 2px 16px #140a3c40;flex-direction:column;flex:1 1 0;justify-content:flex-end;display:flex}.home-hero h1{letter-spacing:-.02em;font-size:clamp(28px,5vw,40px);font-weight:700;line-height:1.15}.home-hero p{color:#ffffffe0;margin-top:10px;font-size:16px}.home-panel{background:var(--l-bg);border-radius:20px;width:min(560px,100%);padding:36px 32px 28px;box-shadow:0 24px 60px #140a3c47}@media (width<=520px){.home-panel{padding:28px 16px 20px}}.shell-footer{color:var(--l-muted);pointer-events:none;font-size:12px;position:absolute;bottom:10px;right:20px}.home-start{background:var(--orange);color:#fff;width:100%;height:52px;font:inherit;cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:10px;font-size:16px;font-weight:600;transition:background .15s;display:flex}.home-start:hover{background:var(--orange-hover)}.home-or{color:var(--l-muted);align-items:center;gap:12px;margin:16px 0;font-size:13px;display:flex}.home-or:before,.home-or:after{content:"";background:var(--l-border);flex:1;height:1px;transform:translateY(.12em)}.home-join{flex-direction:column;gap:6px;display:flex}.home-join-row{gap:8px;display:flex}.home-join-field{border:1px solid var(--l-border);background:var(--l-bg);min-width:0;height:48px;color:var(--l-muted);cursor:text;border-radius:12px;flex:1;align-items:center;gap:8px;padding:0 16px;display:flex}.home-join-field:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #0b5cff26}.home-join-field input{width:0;font:inherit;color:var(--l-text);background:0 0;border:none;outline:none;flex:1;font-size:15px}.home-join-btn{background:color-mix(in srgb, var(--blue) 12%, white);height:48px;color:var(--blue);font:inherit;cursor:pointer;border:none;border-radius:12px;flex:none;padding:0 20px;font-size:15px;font-weight:600;transition:background .15s,color .15s}.home-join-btn:hover:not(:disabled){background:var(--blue);color:#fff}.home-join-btn:disabled{opacity:.55;cursor:default}@media (width<=440px){.home-join-row{flex-direction:column}.home-join-field{flex:none}}.home-join .error{padding-left:16px}.card{background:var(--l-bg);border:1px solid var(--l-border);width:min(420px,100%);color:var(--l-text);border-radius:12px;flex-direction:column;gap:14px;padding:24px;display:flex;box-shadow:0 8px 28px #0000001a}.card h1{font-size:18px;font-weight:600}.field{color:var(--l-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.field input,.field select{font:inherit;color:var(--l-text);background:var(--l-bg);border:1px solid var(--l-border);border-radius:8px;width:100%;padding:10px 12px;font-size:15px}.masked{-webkit-text-security:disc}.field input:focus,.field select:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #0b5cff26}.row{gap:10px;display:flex}.row.end{justify-content:flex-end}.grow{flex:1;min-width:0}.btn{border:1px solid var(--l-border);background:var(--l-bg);color:var(--l-text);cursor:pointer;white-space:nowrap;border-radius:8px;padding:9px 18px}.btn:hover:not(:disabled){background:var(--l-surface)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover:not(:disabled){background:var(--blue-hover)}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover:not(:disabled){background:var(--red-hover)}.centered{place-items:center;min-height:100%;padding:16px;display:grid}.card.not-found{text-align:center;align-items:center;width:min(440px,100%);padding:36px 32px 32px}.card.not-found h1{font-size:22px}.card.not-found .btn{margin-top:6px}.not-found-owl{border-radius:26px;width:104px;height:104px;animation:3.2s ease-in-out infinite owl-puzzled;box-shadow:0 10px 24px #0b5cff4d}@keyframes owl-puzzled{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}60%{transform:rotate(8deg)}}.not-found-code{letter-spacing:-2px;background:linear-gradient(135deg, var(--blue) 0%, #6d4dff 50%, var(--orange) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:72px;font-weight:800;line-height:1}@media (prefers-reduced-motion:reduce){.not-found-owl{animation:none}}.lobby{width:min(560px,100%)}.lobby-code{color:var(--l-muted);font-size:13px}.preview{aspect-ratio:16/9;border-radius:var(--radius);background:var(--m-tile);position:relative;overflow:hidden}.preview-placeholder{color:#fff;place-items:center;font-size:26px;font-weight:600;display:grid;position:absolute;inset:0}.preview-controls{justify-content:center;gap:12px;display:flex;position:absolute;bottom:12px;left:0;right:0}.preview-btn{cursor:pointer;width:44px;height:44px;color:var(--l-text);background:#ffffffeb;border:none;border-radius:50%;place-items:center;display:grid}.preview-btn.off{background:var(--red);color:#fff}.preview-btn:disabled{opacity:.5;cursor:default}.level-meter{background:var(--l-surface);border-radius:2px;height:4px;overflow:hidden}.level-meter-fill{background:var(--green);height:100%;transition:width .1s linear}.dialog-backdrop{z-index:50;background:#00000073;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog-header{justify-content:space-between;align-items:center;display:flex}.icon-btn{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;padding:4px;display:grid}.icon-btn:hover{opacity:1}.invite-code{letter-spacing:2px;text-align:center;font-size:26px;font-weight:600}.invite-qr{border:1px solid var(--l-border);border-radius:8px;align-self:center}.meeting{background:var(--m-bg);height:100%;color:var(--m-text);flex-direction:column;display:flex}.meeting-top{flex:none;justify-content:space-between;align-items:center;height:40px;padding:0 10px;display:flex;position:relative}.top-anchor{position:relative}.top-right{align-items:center;gap:2px;display:flex}.top-btn{color:var(--m-text);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:5px 8px;display:flex}.top-btn:hover{background:var(--m-hover)}.top-btn .shield{color:var(--speaker)}.share-banner{background:var(--green);color:#fff;white-space:nowrap;z-index:5;border-radius:8px;align-items:center;gap:12px;padding:3px 4px 3px 14px;font-size:13px;display:flex;position:absolute;top:6px;left:50%;transform:translate(-50%)}.share-banner.viewing{background:var(--m-surface);padding:5px 14px}.share-banner button{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:4px 10px}.banner{color:#fc6;background:#f5a5242e;border-radius:8px;margin:0 10px 6px;padding:8px 12px;font-size:13px}.meeting-body{flex:1;min-height:0;display:flex}.meeting-content{flex-direction:column;flex:1;min-width:0;display:flex}.gallery{flex-wrap:wrap;flex:1;place-content:center;gap:6px;min-height:0;padding:6px;display:flex}.thumb-strip{flex:none;justify-content:center;gap:6px;height:112px;padding:6px 6px 0;display:flex}.thumb-strip .tile{aspect-ratio:16/9;height:100%}.main-view{flex:1;justify-content:center;align-items:center;min-height:0;padding:6px;display:flex}.main-view>*{width:100%;height:100%}.stage{background:#000;border-radius:6px;position:relative;overflow:hidden}.video{background:0 0;width:100%;height:100%;display:block}.video.mirrored{transform:scaleX(-1)}.tile{background:var(--m-tile);border-radius:6px;position:relative;overflow:hidden;container-type:size}.tile-avatar{background:var(--m-tile);text-align:center;overflow-wrap:anywhere;place-items:center;padding:8px;font-size:clamp(13px,7cqh,36px);font-weight:600;display:grid;position:absolute;inset:0}.tile-label{white-space:nowrap;background:#0009;border-radius:4px;align-items:center;gap:4px;max-width:calc(100% - 12px);padding:3px 6px;font-size:12px;display:flex;position:absolute;bottom:6px;left:6px}.tile-label span{text-overflow:ellipsis;overflow:hidden}.tile-label .muted-icon{color:var(--red);flex:none}.tile-rtt{color:var(--speaker);background:#0009;border-radius:4px;padding:2px 6px;font-size:11px;position:absolute;top:6px;right:6px}.tile-rtt.fair{color:#ffc53d}.tile-rtt.bad{color:#ff6b6b}.toolbar{background:var(--m-bg);border-top:1px solid #262626;flex:none;align-items:center;gap:8px;height:64px;padding:0 8px;display:flex}.toolbar-scroll-wrap{flex:1;min-width:0;height:100%;position:relative}.toolbar-scroll{scrollbar-width:none;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;height:100%;display:grid;overflow:auto hidden}.toolbar-scroll::-webkit-scrollbar{display:none}.toolbar-edge{z-index:1;width:56px;color:var(--m-text);cursor:pointer;border:none;align-items:center;padding:0 4px;display:flex;position:absolute;top:0;bottom:0}.toolbar-edge.left{background:linear-gradient(to right, var(--m-bg) 30%, transparent);justify-content:flex-start;left:0}.toolbar-edge.right{background:linear-gradient(to left, var(--m-bg) 30%, transparent);justify-content:flex-end;right:0}.toolbar-edge svg{background:var(--m-surface);border-radius:50%;box-shadow:0 0 8px #0009}.toolbar-edge:hover svg{background:var(--m-hover)}.toolbar-group.right{flex:none}.toolbar-group{align-items:center;gap:2px;display:flex}.tool-wrap{border-radius:6px;align-items:flex-start;padding-right:2px;display:flex;position:relative}.tool-wrap:hover{background:var(--m-hover)}.tool-wrap .tool:hover:not(:disabled){background:0 0}.tool-wrap .tool-caret:hover:not(:disabled){background:#ffffff1a}.tool{min-width:76px;height:56px;color:var(--m-text);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:4px 6px;font-size:11px;display:flex;position:relative}.tool:hover:not(:disabled),.tool-caret:hover:not(:disabled){background:var(--m-hover)}.tool:disabled{opacity:.4;cursor:default}.tool .off-icon{color:var(--red)}.tool.share .share-icon{color:var(--green)}.tool.share.active .share-icon{color:var(--red)}.tool-badge{font-size:11px;font-weight:600;position:absolute;top:3px;left:calc(50% + 10px)}.tool-caret{width:18px;height:28px;color:var(--m-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;margin:4px 0 0 -10px;padding:0;display:grid}.leave-btn{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-right:8px;padding:8px 18px;font-weight:600}.leave-btn:hover{background:var(--red-hover)}.menu{z-index:40;background:var(--m-surface);border:1px solid var(--m-border);min-width:260px;max-width:360px;color:var(--m-text);border-radius:8px;padding:6px 0;position:absolute;box-shadow:0 8px 24px #00000073}.menu.up{bottom:calc(100% + 6px);left:0}.menu.up-right{bottom:calc(100% + 6px);right:0}.menu.down{top:calc(100% + 4px);left:0}.menu.down-right{top:calc(100% + 4px);right:0}.menu-title{color:var(--m-muted);padding:6px 14px;font-size:12px}.menu-item{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:7px 14px;display:flex}.menu-item:hover{background:var(--m-hover)}.menu-item .check{width:16px;color:var(--blue);flex:none}.menu-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menu-divider{background:var(--m-border);height:1px;margin:6px 0}.menu-info{min-width:260px;max-width:340px;margin:0;padding:8px 14px;font-size:14px}.menu-info dt{color:var(--m-muted);font-size:12px}.menu-info dd{align-items:center;gap:6px;margin:2px 0 10px;display:flex}.menu-info-value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu-copy{color:var(--m-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;padding:4px;display:inline-flex}.menu-copy:hover{background:var(--m-border);color:inherit}.menu-copy .copied{color:var(--green)}.menu-info dd:last-child{margin-bottom:0}.menu-actions{gap:8px;padding:6px 14px;display:flex}.menu-danger{flex-direction:column;gap:6px;min-width:200px;padding:6px 10px;display:flex}.side-panel{background:var(--m-surface);border-left:1px solid var(--m-border);flex-direction:column;flex:none;width:300px;display:flex}.side-panel-header{border-bottom:1px solid var(--m-border);justify-content:space-between;align-items:center;height:44px;padding:0 8px 0 14px;font-weight:600;display:flex}.side-panel-body{flex:1;padding:6px 0;overflow-y:auto}.side-panel-footer{border-top:1px solid var(--m-border);justify-content:center;padding:10px;display:flex}.dark-btn{background:var(--m-hover);color:var(--m-text);border:1px solid var(--m-border);cursor:pointer;border-radius:8px;padding:7px 16px}.dark-btn:hover{background:#474747}.participant-row{align-items:center;gap:10px;padding:6px 14px;display:flex}.participant-row:hover{background:var(--m-hover)}.participant-avatar{color:#fff;border-radius:6px;flex:none;place-items:center;width:30px;height:30px;font-weight:600;display:grid}.participant-icons{color:var(--m-muted);gap:8px;display:flex}.participant-icons .off-icon{color:var(--red)}.tool.pressed{background:var(--m-surface)}.lobby{gap:12px;padding:20px 24px}.lobby .preview{align-self:center;width:min(100%,420px)}.pdf-view{background:#2a2a2a;border-radius:6px;flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.pdf-stage{flex:1;place-items:center;min-height:0;padding:8px;display:grid;overflow:hidden}.pdf-loading{color:var(--m-muted)}.pdf-page{background:#fff;position:relative;box-shadow:0 2px 10px #00000080}.pdf-page canvas{display:block}.pdf-nav{height:36px;color:var(--m-text);border-top:1px solid var(--m-border);flex:none;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.pdf-nav .icon-btn:disabled{opacity:.25;cursor:default}.pdf-name{color:var(--m-muted);text-overflow:ellipsis;white-space:nowrap;max-width:30%;position:absolute;left:12px;overflow:hidden}.annot-toolbar{background:var(--m-surface);border-bottom:1px solid var(--m-border);flex:none;grid-template-columns:minmax(0,1fr) auto minmax(auto,1fr);align-items:center;padding:4px 8px;display:grid}.annot-tool{min-width:56px;color:var(--m-text);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:4px 6px;font-size:11px;display:flex}.annot-tool:hover{background:var(--m-hover)}.annot-tool:disabled{opacity:.4;cursor:default;background:0 0}.annot-tool.selected{color:#8fb3ff;background:#0b5cff4d}.annot-main{flex-wrap:wrap;grid-column:2;justify-content:center;align-items:center;gap:4px 2px;min-width:0;display:flex}.annot-actions{border-left:1px solid var(--m-border);grid-column:3;justify-self:end;align-items:center;gap:2px;padding-left:8px;display:flex}.annot-sep{background:var(--m-border);width:1px;height:28px;margin:0 8px}.annot-swatches,.annot-widths{align-items:center;gap:6px;display:flex}.annot-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;outline:1px solid #ffffff40;width:20px;height:20px;padding:0}.annot-swatch.selected{border-color:#fff}.annot-width{cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.annot-width span{border-radius:50%}.annot-width.selected,.annot-width:hover{background:var(--m-hover)}.annot-layer{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.annot-layer.tool-select{pointer-events:none}.annot-grab{stroke:#0000;fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke;cursor:move;touch-action:none}.annot-grab.filled{pointer-events:all}.annot-text.movable{pointer-events:auto;cursor:move;touch-action:none}.annot-layer.tool-pen,.annot-layer.tool-marker{cursor:crosshair}.annot-layer.tool-text{cursor:text}.annot-layer.tool-eraser{cursor:cell}.annot-svg{pointer-events:none;position:absolute;inset:0}.annot-text{white-space:pre;font-family:Segoe UI,system-ui,sans-serif;font-weight:600;line-height:1.3;position:absolute;transform:translateY(-50%)}.annot-text.editing{font:inherit;font-weight:600;font-size:inherit;border:1px dashed var(--blue);background:#ffffffd9;outline:none;min-width:3ch;margin-left:-3px;padding:0 2px}.author-label{color:#fff;white-space:nowrap;pointer-events:none;background:#232333d9;border-radius:4px;padding:1px 6px;font-size:11px;animation:3s ease-in forwards author-fade;position:absolute}@keyframes author-fade{0%,75%{opacity:1}to{opacity:0}}.thumb-strip.compact{height:84px}.pdf-stage{padding:12px}.pdf-stage-wrap{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.pdf-stage.fit-width{place-items:start;overflow:auto}.pdf-stage.fit-width .pdf-spread{margin-inline:auto}.pdf-stage.pannable{cursor:grab}.pdf-stage.panning{cursor:grabbing}.pdf-zoom{align-items:center;gap:2px;display:flex}.pdf-fit{border:1px solid var(--m-border);color:var(--m-text);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:flex;position:absolute;right:10px}.pdf-fit:hover{background:var(--m-hover)}.pdf-image{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;display:block}.pdf-stage.follower{overflow:hidden}.lesson-card{border:1px solid var(--l-border);background:var(--l-surface);width:min(500px,100%);color:var(--l-text);border-radius:12px;flex-direction:column;gap:12px;margin:32px auto 0;padding:16px 20px;display:flex}.lesson-card header{justify-content:space-between;align-items:center;display:flex}.lesson-card h2{font-size:15px;font-weight:600}.lesson-label{color:var(--l-muted);font-size:13px}.lesson-code{flex-direction:column;gap:4px;display:flex}.lesson-code+.lesson-code{border-top:1px solid var(--l-border);padding-top:12px}.lesson-toggle{color:var(--l-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;gap:4px;padding:0;font-size:13px;display:inline-flex}.lesson-toggle:hover{color:var(--blue)}.lesson-toggle .chevron{transition:transform .15s}.lesson-toggle[aria-expanded=true] .chevron{transform:rotate(90deg)}.collapse{opacity:0;visibility:hidden;grid-template-rows:0fr;transition:grid-template-rows .2s,opacity .2s,visibility .2s;display:grid}.collapse[data-open=true]{opacity:1;visibility:visible;grid-template-rows:1fr}.collapse>div{min-height:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapse,.lesson-toggle .chevron{transition:none}}.lesson-code .hint{margin-top:4px}.lesson-code-row{align-items:center;gap:4px;min-height:36px;display:flex}.lesson-code-row strong{letter-spacing:.06em;margin-right:8px;font-size:22px;font-weight:600}.lesson-card .icon-btn{width:30px;height:30px;color:var(--l-muted);opacity:1}.lesson-card .icon-btn:hover{color:var(--blue);background:var(--l-border)}.lesson-card .copied{color:var(--green)}.hint{color:var(--l-muted);font-size:12px}.waiting-card{text-align:center;align-items:center}.waiting-card .spinner{border:3px solid var(--l-border);border-top-color:var(--blue);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.knock-stack{z-index:60;flex-direction:column;gap:8px;width:300px;display:flex;position:fixed;top:56px;right:16px}.knock{background:var(--m-surface);border:1px solid var(--m-border);color:var(--m-text);border-radius:10px;flex-direction:column;gap:10px;padding:12px 14px;display:flex;box-shadow:0 8px 24px #0006}.knock-actions{justify-content:flex-end;gap:8px;display:flex}.knock-note,.host-badge{color:var(--m-muted);font-size:12px}.dark-btn.primary{background:var(--blue);border-color:var(--blue)}.dark-btn.primary:hover:not(:disabled){background:var(--blue-hover)}.dark-btn:disabled{opacity:.5;cursor:default}.strip-layout{flex:1;min-height:0;display:flex}.strip-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.strip-side{flex-direction:column;flex:none;width:206px;min-height:0;display:flex}.strip-side>.thumb-strip{flex-direction:column;flex:1;justify-content:flex-start;height:auto;min-height:0;padding:6px 0 6px 6px;overflow-y:auto}.strip-side>.thumb-strip .tile{flex:none;width:100%;height:auto}.tool-badge.unread{background:var(--red);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;padding:0 4px;line-height:16px}.chat-list{flex-direction:column;gap:10px;padding:8px 12px;display:flex}.chat-empty{color:var(--m-muted);text-align:center;margin:auto 0;font-size:13px}.chat-meta{align-items:baseline;gap:8px;font-size:12px;display:flex}.chat-author{font-weight:600}.chat-time{color:var(--m-muted)}.chat-text{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px;font-size:14px}.chat-text a{color:#8fb3ff}.chat-form{border-top:1px solid var(--m-border);align-items:flex-end;gap:6px;padding:10px;display:flex}.chat-input{resize:none;border:1px solid var(--m-border);background:var(--m-bg);color:var(--m-text);font:inherit;border-radius:6px;flex:1;padding:6px 8px;font-size:14px}.chat-input:focus{border-color:var(--blue);outline:none}.chat-send:disabled{opacity:.3;cursor:default}.library-menu{width:340px}.library-search{border:1px solid var(--m-border);color:var(--m-muted);border-radius:6px;align-items:center;gap:6px;margin:2px 10px 6px;padding:5px 8px;display:flex}.library-search:focus-within{border-color:var(--blue)}.library-search input{min-width:0;color:var(--m-text);font:inherit;background:0 0;border:none;outline:none;flex:1}.library-list{max-height:320px;overflow-y:auto}.library-item{align-items:center;display:flex;position:relative}.library-item .menu-item{padding-right:34px}.library-icon{color:var(--m-muted);flex:none}.library-text{flex-direction:column;min-width:0;display:flex}.menu-item .library-meta{color:var(--m-muted);font-size:12px}.library-remove{width:22px;height:22px;color:var(--m-muted);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:4px;place-items:center;display:grid;position:absolute;right:8px}.library-item:hover .library-remove,.library-remove:focus-visible{opacity:1}.library-remove:hover{background:var(--m-hover);color:var(--m-text)}.library-error{color:var(--red)}.player-stage{justify-content:center;align-items:center;display:flex}.player-host{width:100%;height:100%}.player-host .player-media,.player-remote{object-fit:contain;background:#000;width:100%;height:100%;display:block}.player-caption{pointer-events:none;align-items:center;gap:12px;display:flex;position:absolute;top:8px;left:8px;right:8px}.player-caption>*{pointer-events:auto;background:#0000008c;border-radius:4px;padding:4px 8px}.player-stage .player-volume{background:#0000008c;border-radius:4px;padding:4px 8px;position:absolute;bottom:8px;right:8px}.player-bar{background:var(--m-surface);border:1px solid var(--m-border);color:var(--m-text);border-radius:6px;flex:none;align-items:center;gap:12px;margin:0 6px 6px;padding:6px 12px;display:flex}.player-title{min-width:0;max-width:40%;color:var(--m-text);align-items:center;gap:6px;font-size:13px;display:flex}.player-title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-host.compact{flex:1;height:40px}.player-host.compact .player-media{background:0 0;height:40px}.player-remote.audio-only{display:none}.player-volume{color:var(--m-muted);align-items:center;gap:6px;display:flex}.player-bar .player-volume{margin-left:auto}.player-x{color:var(--m-text);flex:none}.player-caption>.player-x{color:#fff;margin-left:auto;padding:4px}.player-float-bar .player-x{margin-left:auto;padding:2px}.player-volume input{width:110px;accent-color:var(--blue)}.pdf-spread{align-items:flex-start;display:flex;box-shadow:0 2px 10px #00000080}.pdf-spread .pdf-page{box-shadow:none}.pdf-spread.two .pdf-page:first-child:after{content:"";pointer-events:none;background:#0000002e;width:1px;position:absolute;top:0;bottom:0;right:0}.pdf-view .pdf-nav{grid-template-columns:minmax(0,1fr) auto minmax(max-content,1fr);gap:10px;padding:0 10px;display:grid}.pdf-view .pdf-name{min-width:0;max-width:none;position:static}.pdf-nav-center{white-space:nowrap;align-items:center;gap:10px;display:flex}.pdf-nav-right{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.pdf-nav-right>*{flex:none}.pdf-nav-right .pdf-fit{position:static}.pdf-fit.pressed{background:var(--m-hover);border-color:var(--blue)}.shape-menu{min-width:190px}.shape-menu .menu-item.current{color:#8fb3ff}.annot-layer.tool-shape{cursor:crosshair}.pdf-cover{color:var(--m-text);cursor:pointer;align-items:center;gap:4px;font-size:12px;display:flex}.pdf-cover input{accent-color:var(--blue)}.pdf-jump{align-items:center;gap:4px;display:inline-flex}.pdf-jump-input{border:1px solid var(--m-border);height:24px;color:var(--m-text);font:inherit;text-align:center;background:0 0;border-radius:4px;padding:0 4px}.pdf-jump-input:focus{border-color:var(--blue);outline:none}.participant-actions{gap:2px;display:flex}.participant-actions .icon-btn.danger:hover{color:var(--red)}.toast{z-index:70;background:var(--m-surface);border:1px solid var(--m-border);max-width:min(480px,100vw - 32px);color:var(--m-text);border-radius:8px;padding:10px 16px;font-size:13px;position:fixed;bottom:84px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0006}.annot-note{color:#3b3200;background:#fff59d;border-radius:3px;flex-direction:column;line-height:1.3;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 8px #00000040}.annot-note.interactive{cursor:text}.annot-note.editing{outline:2px solid var(--blue)}.annot-note-bar{background:#fbe96a;flex:none;justify-content:flex-end;align-items:center;height:1.3em;display:flex}.annot-note.interactive .annot-note-bar{cursor:move}.annot-note-delete{color:#6b5c00;cursor:pointer;opacity:0;background:0 0;border:0;border-radius:3px;place-items:center;width:1.2em;height:1.2em;padding:0;display:grid}.annot-note:hover .annot-note-delete,.annot-note.editing .annot-note-delete{opacity:1}.annot-note-delete:hover{background:#0000001a}.annot-note-text{white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;font:inherit;color:inherit;flex:1;padding:.25em .45em .4em;overflow:auto}textarea.annot-note-text{resize:none;background:0 0;border:0;outline:none}.annot-note-resize{cursor:nwse-resize;touch-action:none;opacity:.6;background:linear-gradient(135deg,#0000 45%,#b8a400 45% 52%,#0000 52% 68%,#b8a400 68% 75%,#0000 75%);width:1.1em;height:1.1em;position:absolute;bottom:0;right:0}.annot-note-resize:hover{opacity:1}.annot-layer.tool-select .annot-note{pointer-events:auto}.remote-cursor{z-index:5;pointer-events:none;flex-direction:column;align-items:flex-start;transition:left 60ms linear,top 60ms linear;display:flex;position:absolute}.remote-cursor svg{filter:drop-shadow(0 1px 1px #00000059);margin:-1px 0 0 -1px;display:block}.remote-cursor-label{color:#fff;white-space:nowrap;border-radius:4px;margin:0 0 0 10px;padding:1px 6px;font-size:11px;line-height:16px}.annot-layer.tool-note{cursor:copy}textarea.annot-note-text{-webkit-user-select:text;user-select:text}.board-stage{flex:1;place-items:center;min-height:0;display:grid;overflow:hidden}.board-sheet{background:#fff;border-radius:4px;position:relative;box-shadow:0 2px 12px #00000059}.float-host{min-width:0;min-height:0;position:relative}.float-host>.pdf-view{width:100%;height:100%}.player-float{z-index:20;border:1px solid var(--m-border);background:#000;border-radius:8px;flex-direction:column;display:flex;position:absolute;overflow:hidden;box-shadow:0 8px 28px #00000080}.player-float-bar{background:var(--m-surface);-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:8px;height:28px;padding:0 8px;display:flex}.player-float.movable .player-float-bar{cursor:move}.player-float-bar .player-title{max-width:100%;font-size:12px}.player-float-video{flex:none;position:relative}.player-float-video .player-volume{background:#0000008c;border-radius:4px;padding:2px 6px;position:absolute;top:6px;right:6px}.player-float-video .player-volume input{width:70px}.player-float-resize{cursor:nwse-resize;background:linear-gradient(135deg, transparent 50%, var(--m-muted) 50% 60%, transparent 60% 70%, var(--m-muted) 70% 80%, transparent 80%);width:16px;height:16px;position:absolute;bottom:0;right:0}.live-video{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.top-left{align-items:center;gap:4px;display:flex}.top-clock{border-left:1px solid var(--m-border);color:var(--m-text);font-variant-numeric:tabular-nums;padding:5px 8px;font-size:14px}
