:root{--bg:#101418;--surface:#1a2027;--surface-2:#232b34;--text:#e8edf2;--muted:#8a96a3;--accent:#7aa2ff;--danger:#ff6b6b;--good:#4cd38a;--ok:#f2c14e;--status-good:#0ca30c;--status-warning:#fab219;--status-critical:#d03b3b;--radius:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0}#app{min-height:100%}h1{margin:0 0 .5rem;font-size:1.4rem}h2{margin:0 0 .5rem;font-size:1.1rem}.muted{color:var(--muted)}.error{color:var(--danger)}.hidden{display:none!important}input,select,textarea,button,.button{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid #2f3944;border-radius:8px;padding:.5rem .75rem}button,.button{cursor:pointer;white-space:nowrap;text-decoration:none}button:hover,.button:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#0b1020;border-color:var(--accent);font-weight:600}button.danger{color:var(--danger)}button.link{color:var(--accent);background:0 0;border:none;padding:0}.card{background:var(--surface);border-radius:var(--radius);padding:1rem}.center-card{background:var(--surface);border-radius:var(--radius);text-align:center;flex-direction:column;gap:.75rem;max-width:360px;margin:12vh auto 0;padding:1.5rem;display:flex}.join .poster{border-radius:8px;width:160px;margin:0 auto}.skeleton{background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;border-radius:8px;animation:1.2s infinite shimmer}.title-skeleton{height:1.6rem}.row-skeleton{height:3rem}.item-skeleton{height:64px;list-style:none}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.admin{flex-direction:column;gap:1.25rem;max-width:760px;margin:0 auto;padding:1rem 16px 3rem;display:flex}.admin .search{width:100%;font-size:1.05rem}.crumbs{color:var(--muted);margin:.5rem 0}.items,.rooms{flex-direction:column;gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.item{text-align:left;background:var(--surface);align-items:center;gap:.75rem;width:100%;padding:.4rem;display:flex}.thumb{object-fit:cover;background:var(--surface-2);border-radius:4px;flex:none;width:40px;height:60px}.item-text{flex-direction:column;min-width:0;display:flex}.item-text span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.create .buttons{gap:.5rem;margin-top:.75rem;display:flex}.link-row{gap:.4rem;margin:.5rem 0;display:flex}.link-row input{flex:1;min-width:0}.room{flex-direction:column;gap:.25rem;display:flex}.room .buttons{gap:.5rem;display:flex}:root{--chart-bar:#3987e5;--chart-grid:#2f3944;--chart-band:#ffffff0a}.details{border-top:1px solid var(--surface-2);flex-direction:column;gap:1rem;margin-top:.5rem;padding-top:.75rem;display:flex}.details p{margin:0}.details .buttons{flex-wrap:wrap;gap:.5rem;display:flex}.progress-table{border-collapse:collapse;width:100%;font-size:.9rem}.progress-table th{text-align:left;color:var(--muted);font-weight:400}.progress-table td,.progress-table th{border-bottom:1px solid var(--surface-2);vertical-align:middle;padding:.3rem .75rem .3rem 0}.progress-table td:nth-child(2),.progress-table td:nth-child(3){white-space:nowrap;font-variant-numeric:tabular-nums}.progress-table tr.synced td:nth-child(2),.progress-table tr.synced td:nth-child(3){color:var(--muted)}.progress-table .row-buttons{text-align:right}.progress-table .row-actions{flex-wrap:wrap;justify-content:flex-end;gap:.35rem;display:flex}.progress-table .row-actions button{padding:.3rem .6rem;font-size:.85rem}@media (pointer:coarse){.progress-table .row-actions button{min-height:2.75rem}}.viewer-stats h3{align-items:center;gap:.4rem;margin:0 0 .5rem;font-size:1rem;display:flex}.viewer-stats h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.75rem 0 .4rem;font-size:.8rem;font-weight:600}.viewer-stats{border-top:1px solid var(--surface-2);padding-top:.75rem}.engine h2{margin-bottom:.75rem}.live{margin:0}.legend{flex-wrap:wrap;gap:1rem;margin:.25rem 0;font-size:.85rem;display:flex}.legend-item{align-items:center;gap:.35rem;display:inline-flex}.live-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.live-dot{stroke:var(--surface);stroke-width:2px}.live-label{fill:var(--text);font-variant-numeric:tabular-nums;font-size:11px}.live-crosshair{stroke:var(--muted);stroke-width:1px}.tooltip-row{align-items:center;gap:.35rem;display:inline-flex}.stat-row{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem 1rem;margin:0 0 .75rem;display:grid}.stat-row dt{color:var(--muted);font-size:.75rem}.stat-row dd{overflow-wrap:anywhere;margin:0;font-weight:600}.hist-grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.hist{margin:0}.hist figcaption{margin-bottom:.25rem;font-size:.85rem}.hist-title{font-weight:600}.hist-plot{position:relative}.hist svg{width:100%;height:auto;display:block;overflow:visible}.hist-bar{fill:var(--chart-bar)}.hist-bar.active{fill:#5c9cf0}.hist-grid,.hist-axis{stroke:var(--chart-grid);stroke-width:1px}.hist-ref{stroke:var(--muted);stroke-width:1px}.hist-band{fill:var(--chart-band)}.hist-band-label{fill:var(--muted);font-size:9px}.hist-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.hist-hit{fill:#0000}.hist-tooltip{pointer-events:none;white-space:nowrap;z-index:1;background:var(--surface-2);border:1px solid var(--chart-grid);border-radius:6px;flex-direction:column;padding:.3rem .5rem;font-size:.8rem;display:flex;position:absolute;top:4px;transform:translate(-50%)}.hist-table{margin-top:.25rem;font-size:.8rem}.hist-table summary{cursor:pointer;color:var(--muted)}.hist-table table{border-collapse:collapse;margin-top:.25rem}.hist-table td,.hist-table th{text-align:left;font-variant-numeric:tabular-nums;padding:.1rem .75rem .1rem 0}.created{border:1px solid var(--accent)}.monitor,.monitor-body{flex-direction:column;gap:.75rem;display:flex}.monitor-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.monitor-head h2{margin:0}.segmented{display:inline-flex}.segmented button{border-radius:0;padding:.35rem .8rem}.segmented button:first-child{border-radius:8px 0 0 8px}.segmented button:last-child{border-radius:0 8px 8px 0;margin-left:-1px}.segmented button.on{background:var(--accent);color:#0b1020;border-color:var(--accent);font-weight:600}.issue-dot{fill:#3987e5;stroke:var(--surface);stroke-width:2px}.issue-dot.active{fill:var(--text)}.table-scroll{overflow-x:auto}.small{margin:0;font-size:.8rem}@media (pointer:coarse){.segmented button{min-width:3.5rem;min-height:2.75rem}}.card.inline{margin-top:.4rem}.browser{scroll-margin-top:1rem}.player-page{height:100dvh}.stage{background:#000;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.screen{flex:1;min-width:0;min-height:0;position:relative}.stage video{object-fit:contain;width:100%;height:100%;display:block}.stage.hide-ui .screen{cursor:none}.stage.hide-ui .controls,.stage.hide-ui .top-bar{opacity:0;pointer-events:none}.top-bar,.controls{padding:.75rem 16px;transition:opacity .3s;position:absolute;left:0;right:0}.top-bar{background:linear-gradient(#000000b3,#0000);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex;top:0}.top-bar .title{text-shadow:0 1px 2px #000;font-weight:600}.viewers{flex-wrap:wrap;gap:.35rem;display:flex}.chip{background:#ffffff1f;border-radius:99px;padding:.15rem .55rem;font-size:.8rem}.chip.good{box-shadow:inset 0 0 0 1px var(--good)}.chip.ok{box-shadow:inset 0 0 0 1px var(--ok)}.chip.bad{box-shadow:inset 0 0 0 1px var(--danger)}.status{pointer-events:none;border-radius:var(--radius);text-align:center;background:#000000a6;max-width:calc(100% - 32px);padding:.6rem 1rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.controls{padding-bottom:max(.75rem, env(safe-area-inset-bottom));background:linear-gradient(#0000,#000c);bottom:0}.controls .row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.controls button,.controls select{background:#ffffff1a;border-color:#0000;padding:.35rem .6rem}.controls select{max-width:11rem}select{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.controls select{background-color:#2a3139}select option,select optgroup{background-color:var(--surface-2);color:var(--text)}.controls .icon{justify-content:center;align-items:center;min-width:2.4rem;height:2.25rem;display:inline-flex}.controls .icon.play{width:2.75rem;min-width:2.75rem;padding:0}.controls .icon svg{fill:currentColor;width:1.25rem;height:1.25rem;display:block}.controls .time{font-variant-numeric:tabular-nums;font-size:.9rem}.controls .spacer{flex:1}.seek{width:100%;accent-color:var(--accent);background:0 0;border:none;margin:0 0 .5rem;padding:0}.volume{width:80px;accent-color:var(--accent);background:0 0;border:none;padding:0}.info{color:var(--muted);flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.5rem;font-size:.8rem;display:flex}.info input{width:5rem;margin:0 .25rem;padding:.15rem .4rem}.info .delay-step{font-variant-numeric:tabular-nums;margin-left:.25rem;padding:.15rem .45rem;font-size:.8rem}.info .report{padding:.15rem .6rem;font-size:.8rem}@media (pointer:coarse){.info .report{min-height:2.75rem;padding:0 .9rem;font-size:1rem}.info .delay{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:.4rem;font-size:.95rem;display:flex}.info .delay input{width:5.5rem;min-height:2.75rem;margin:0;font-size:1rem}.info .delay-step{min-width:2.75rem;min-height:2.75rem;margin:0;padding:0 .6rem;font-size:1rem}}.menus{display:contents}.controls .menu-toggle,.controls .menu-only{display:none}.controls .icon.active{box-shadow:inset 0 0 0 1px var(--accent)}@media (pointer:coarse){.volume{display:none}}@media (max-width:560px){.volume,.controls .icon[title^=Back],.controls .icon[title^=Forward],.controls .info-toggle{display:none}.menus.open .menu-only{display:block}}@media (max-width:700px),(max-height:500px){.top-bar,.controls{padding-left:12px;padding-right:12px}.top-bar{padding-top:max(.5rem, env(safe-area-inset-top))}.controls{padding-top:.5rem}.controls .row{flex-wrap:nowrap;gap:.3rem}.controls .icon,.controls .icon.play{width:2.75rem;min-width:2.75rem;height:2.75rem;padding:0}.controls .icon svg{width:1.5rem;height:1.5rem}.controls .icon:not(:has(svg)){width:auto;padding:0 .5rem;font-size:1.05rem}.controls .time{white-space:nowrap;font-size:.8rem}.seek{margin-bottom:.35rem}.controls .menu-toggle{display:inline-flex}.menus{display:none}.menus.open{border-radius:var(--radius);background:#101418f2;flex-direction:column;align-items:stretch;gap:.5rem;width:min(18rem,100% - 24px);max-height:60dvh;padding:.75rem;display:flex;position:absolute;bottom:100%;right:12px;overflow-y:auto}.menus.open select{width:100%;max-width:none}.menus.open button{width:100%}.chat-toasts{bottom:5.5rem;left:12px}}::cue{background:#0009;font-size:1.05em}.speed{margin-top:.25rem}.speed-zone{fill:var(--status-critical);fill-opacity:.14}.speed-step{stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 4}.speed-step-current{stroke:var(--text);stroke-dasharray:none}.speed-label-current{font-weight:600}.speed-status{background:var(--surface-2);border-left:3px solid var(--muted);border-radius:8px;flex-wrap:wrap;align-items:baseline;gap:.35rem;margin:.25rem 0 .5rem;padding:.45rem .6rem;display:flex}.speed-icon{color:#101418;background:var(--muted);border-radius:50%;align-self:center;place-items:center;width:1.2rem;height:1.2rem;font-size:.75rem;font-weight:700;display:inline-grid}.speed-good{border-left-color:var(--status-good)}.speed-good .speed-icon{background:var(--status-good)}.speed-warning{border-left-color:var(--status-warning)}.speed-warning .speed-icon{background:var(--status-warning)}.speed-critical{border-left-color:var(--status-critical)}.speed-critical .speed-icon{background:var(--status-critical);color:#fff}.loading{text-align:center;border-radius:var(--radius);background:#000000b8;flex-direction:column;align-items:center;gap:.5rem;max-width:min(520px,100% - 32px);padding:.9rem 1.1rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{border:3px solid #ffffff40;border-top-color:var(--text);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.loading-why{border-left:3px solid var(--muted);text-align:left;padding-left:.5rem;font-size:.85rem}.loading-why.speed-warning{border-left-color:var(--status-warning)}.loading-why.speed-critical{border-left-color:var(--status-critical)}.info{border-radius:var(--radius);background:#101418e0;max-height:60vh;padding:.5rem .75rem;overflow-y:auto}.info .speed{color:var(--text);flex-basis:100%}.info .speed .speed-status{font-size:.85rem}.chat{background:var(--surface);border-left:1px solid #2f3944;flex-direction:column;flex:none;width:min(340px,40%);min-height:0;display:flex}@media (max-aspect-ratio:1){.stage{flex-direction:column}.chat{border-top:1px solid #2f3944;border-left:none;width:100%;height:42%}}.chat header{border-bottom:1px solid var(--surface-2);justify-content:space-between;align-items:center;padding:.4rem .5rem .4rem .75rem;font-weight:600;display:flex}.chat header button{background:0 0;border-color:#0000;padding:.25rem .5rem}.chat-list{overscroll-behavior:contain;flex-direction:column;flex:1;gap:.15rem;min-height:0;margin:0;padding:.5rem .75rem;list-style:none;display:flex;overflow-y:auto}.chat-empty{margin:auto;font-size:.9rem}.chat-msg.first:not(:first-child){margin-top:.6rem}.chat-meta{font-variant-numeric:tabular-nums;align-items:baseline;gap:.5rem;font-size:.75rem;display:flex}.chat-name{font-size:.85rem;font-weight:600}.chat-msg.mine .chat-name{color:var(--accent)}.chat-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.35}.chat-form{padding:.5rem .75rem;padding-bottom:max(.5rem, env(safe-area-inset-bottom));border-top:1px solid var(--surface-2);align-items:flex-end;gap:.4rem;display:flex}.chat-form textarea{resize:none;field-sizing:content;flex:1;min-width:0;min-height:2.4rem;max-height:6.5rem}.controls .chat-toggle{position:relative}.controls .chat-toggle.active{box-shadow:inset 0 0 0 1px var(--accent)}.badge{background:var(--accent);color:#0b1020;border-radius:99px;place-items:center;min-width:1.15rem;height:1.15rem;padding:0 .25rem;font-size:.7rem;font-weight:700;display:grid;position:absolute;top:-5px;right:-5px}.chat-toasts{pointer-events:none;flex-direction:column;align-items:flex-start;gap:.35rem;max-width:min(380px,100% - 32px);display:flex;position:absolute;bottom:7.5rem;left:16px}.chat-toast{pointer-events:auto;white-space:normal;text-align:left;border-radius:var(--radius);overflow-wrap:anywhere;-webkit-line-clamp:3;background:#101418d9;border:none;-webkit-box-orient:vertical;padding:.4rem .7rem;animation:.2s ease-out toast-in;display:-webkit-box;overflow:hidden}.chat-toast b{margin-right:.4rem}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.chat-toast{animation:none}}.end-card{z-index:4;text-align:center;border-radius:var(--radius);background:#101418e6;flex-direction:column;align-items:center;gap:.35rem;width:min(24rem,100% - 32px);padding:1rem 1.25rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.end-card strong{font-size:1.15rem}.end-buttons{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.5rem;display:flex}.end-buttons button{min-height:2.75rem;padding:0 1.1rem}.action-note{z-index:3;pointer-events:none;background:#000000b8;border-radius:99px;align-items:center;gap:.5rem;max-width:calc(100% - 32px);padding:.5rem 1rem;font-size:1rem;animation:.2s ease-out action-in,.4s ease-in 4.1s forwards action-out;display:inline-flex;position:absolute;top:max(4.5rem,14%);left:50%;transform:translate(-50%)}.action-icon{font-size:1.1rem;line-height:1}@keyframes action-in{0%{opacity:0;transform:translate(-50%,-6px)}}@keyframes action-out{to{opacity:0}}@media (prefers-reduced-motion:reduce){.action-note{animation:none}}.stage.companion video{display:none}.companion-card{z-index:2;text-align:center;background:var(--surface);border-radius:var(--radius);flex-direction:column;align-items:center;gap:.5rem;width:min(24rem,100% - 32px);padding:1.25rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.companion-time{font-variant-numeric:tabular-nums;font-size:2rem}.companion-time .muted{font-size:1rem;font-weight:400}.companion-viewers{width:100%;margin:.25rem 0;padding:0;list-style:none}.companion-viewers li{border-top:1px solid var(--surface-2);justify-content:space-between;gap:1rem;padding:.4rem 0;display:flex}.companion-card button{min-height:2.75rem;padding:0 1.1rem}.chip.remote{box-shadow:inset 0 0 0 1px var(--muted)}.ctx-backdrop{z-index:5;position:absolute;inset:0}.ctx-menu{z-index:6;background:var(--surface-2);border-radius:var(--radius);border:1px solid #2f3944;flex-direction:column;gap:1px;width:16rem;max-height:calc(100% - 16px);padding:.35rem;display:flex;position:absolute;overflow-y:auto;box-shadow:0 8px 24px #00000080}.ctx-menu button{text-align:left;white-space:normal;background:0 0;border:none;border-radius:6px;padding:.45rem .6rem}.ctx-menu button:hover,.ctx-menu button:focus-visible{background:#ffffff14}.ctx-menu hr{border:none;border-top:1px solid #2f3944;width:100%;margin:.25rem 0}.ctx-row{gap:2px;display:flex}.ctx-row button{text-align:center;flex:1}.ctx-transport button{white-space:nowrap;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:.2rem;padding:.45rem .2rem;font-size:.8rem;display:flex}.ctx-transport svg{fill:currentColor;width:1.4rem;height:1.4rem;display:block}.ctx-label{padding:.35rem .6rem .1rem;font-size:.75rem}.ctx-bookmark{gap:.35rem;padding:.25rem .2rem;display:flex}.ctx-bookmark input{flex:1;min-width:0;padding:.35rem .5rem;font-size:.85rem}.ctx-bookmark button.primary{background:var(--accent);text-align:center;padding:.35rem .7rem}.ctx-bm{grid-template-columns:auto 1fr;column-gap:.5rem;display:grid!important}.ctx-bm .muted{grid-column:2;font-size:.75rem}.ctx-time{font-variant-numeric:tabular-nums;color:var(--accent)}.ctx-bm-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (pointer:coarse){.ctx-menu button{min-height:2.75rem}}.chat-text.bookmark{border-left:3px solid var(--accent);padding-left:.5rem}.chat-text .jump{margin-top:.2rem;font-size:.85rem;display:block}.game-canvas{z-index:5;cursor:none;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.game-chip{cursor:pointer;border:none}.game-hide{z-index:6;background:#0009;border-color:#0000;position:absolute;top:12px;right:12px}@media (pointer:coarse){.game-hide{min-height:2.75rem}}
