.theater{position:relative;display:flex;height:100%;min-height:0;background:#000}.viewer-canvas{position:absolute;inset:0;z-index:0;display:block;pointer-events:none}.theater-sidebar,.theater-mpr,.theater-center{position:relative;z-index:1}.labels-layer,.compass,.quick-bar,.frame-bar,.mpr-overlay,.mpr-pane-head,.mpr-strip,.quad-exit,.loading-overlay,.mpr-collapse{z-index:6}.labels-layer{position:absolute;inset:0;pointer-events:none}.theater-sidebar{display:flex;flex:0 0 auto;background:var(--chrome);border-right:1px solid var(--line)}.sidebar-rail{width:44px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0;border-right:1px solid var(--line)}.rail-btn{width:30px;height:30px;padding:0;display:grid;place-items:center;background:var(--raised);border:1px solid var(--line);border-radius:var(--r-control);color:var(--gray);font-size:14px;line-height:1}a.rail-btn{background:transparent;border-color:transparent;font-size:18px}.rail-btn:hover:not(:disabled),a.rail-btn:hover{background:var(--raised);border-color:var(--faint);color:var(--text)}.rail-btn.on,.rail-btn.on:hover:not(:disabled){background:var(--tint-red);border-color:var(--red);color:var(--red-text)}.sidebar-body{width:320px;overflow:auto;min-height:0}.panel{padding:12px 14px 28px;display:flex;flex-direction:column;gap:8px}.panel h3{margin:14px 0 4px;font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label)}.panel h3:first-child{margin-top:2px}.panel select{height:30px}.preset-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.preset-tile{height:auto;background:var(--surface);border-color:var(--line);color:var(--gray);padding:10px 6px;text-align:center;white-space:normal}.preset-tile:hover:not(:disabled){background:var(--raised);border-color:var(--faint);color:var(--text)}.preset-tile.on,.preset-tile.on:hover:not(:disabled){background:var(--tint-red);border-color:var(--red);color:var(--red-text)}label.slider{display:flex;flex-direction:column;gap:2px}label.slider>span{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-variant-numeric:tabular-nums}label.slider input{width:100%;padding:0}input[type=range]{-webkit-appearance:none;appearance:none;height:4px;margin:7px 0;padding:0;border:none;border-radius:2px;background:var(--line-strong);outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--chrome);border:2px solid var(--red);cursor:pointer;transition:border-color .12s ease}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--chrome);border:2px solid var(--red);cursor:pointer}input[type=range]:hover::-webkit-slider-thumb{border-color:var(--red-hi)}input[type=range]:hover::-moz-range-thumb{border-color:var(--red-hi)}input[type=range]:focus-visible{outline:2px solid var(--orange);outline-offset:3px}input[type=range]:disabled::-webkit-slider-thumb{border-color:var(--faint)}label.check{flex-direction:row;align-items:center;gap:8px;font-family:var(--font-body);font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--gray);cursor:pointer}label.check input[type=checkbox]{-webkit-appearance:none;appearance:none;width:32px;height:18px;border-radius:9px;background:var(--well);border:1px solid var(--faint);position:relative;margin:0;flex:none;cursor:pointer;transition:background .12s ease,border-color .12s ease}label.check input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--faint);transition:transform .12s ease,background .12s ease}label.check input[type=checkbox]:checked{background:var(--red);border-color:var(--red)}label.check input[type=checkbox]:checked:after{transform:translate(14px);background:#fff}label.check input[type=checkbox]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}button.on{border-color:var(--red);color:var(--text)}button.secondary.on,button.secondary.on:hover:not(:disabled){background:var(--tint-red);border-color:var(--red);color:var(--red-text)}button.small,.link.small{font-size:11.5px;height:26px;padding:0 10px}.link.small{height:auto;padding:2px 4px}button.primary-green{background:var(--red)}.modal.wide{max-width:760px}.kv.guide td:first-child{white-space:nowrap;color:var(--orange-hi)}.row.right{justify-content:flex-end}.ru-headline{color:var(--orange-hi);font-weight:600}.ru-conditions{margin:4px 0 8px;padding-left:18px;color:var(--gray)}.ru-conditions li{margin:4px 0}.ru-agree{flex-direction:row;align-items:center;gap:10px;font-family:var(--font-body);font-size:13px;letter-spacing:0;text-transform:none;color:var(--text);cursor:pointer}.ru-scrim{background:#09080aeb}.ru-modal{max-width:620px}hr{border:0;border-top:1px solid var(--line);margin:14px 0}.theater-center{position:relative;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}.cell{z-index:1;min-width:0;min-height:0}.main-view{position:absolute;inset:0;z-index:1;touch-action:none;cursor:grab}.main-view.quad-top-right{inset:0 0 50% 50%;border:2px solid var(--line)}.main-view.hidden-view{inset:auto auto 0 0;width:1px;height:1px;opacity:0;pointer-events:none}.cell.quad-top-left{position:absolute;inset:0 50% 50% 0}.cell.quad-bottom-left{position:absolute;inset:50% 50% 0 0}.cell.quad-bottom-right{position:absolute;inset:50% 0 0 50%}.cell.cell-full{position:absolute;inset:0}.main-view:active{cursor:grabbing}.labels-layer .label3d{color:#fff;background:#09080a99;font-family:var(--font-mono);font-size:10.5px;line-height:1.25;padding:1px 5px;border-radius:var(--r-chip);white-space:pre;text-align:center;transform:translateY(-100%)}.quick-bar{position:absolute;top:10px;left:10px;cursor:default;display:flex;gap:4px;flex-wrap:wrap}.quick-bar button,.frame-bar button,.quad-exit{height:28px;padding:0 10px;background:#0c0a0ed1;border:1px solid var(--line);border-radius:var(--r-chip);color:var(--gray);font-size:12px;backdrop-filter:blur(4px)}.quick-bar button:hover:not(:disabled),.frame-bar button:hover:not(:disabled),.quad-exit:hover:not(:disabled){background:var(--raised);border-color:var(--faint);color:var(--text)}.quick-bar button.on,.quick-bar button.on:hover:not(:disabled){background:var(--red);border-color:var(--red);color:#fff}.frame-bar{position:absolute;bottom:12px;left:10px;display:flex;gap:3px;flex-wrap:wrap;max-width:660px}.frame-bar button{min-width:34px;padding:0 7px;font-family:var(--font-mono);font-weight:500;font-size:11px;font-variant-numeric:tabular-nums}.frame-bar button.selected,.frame-bar button.selected:hover:not(:disabled){background:var(--red);border-color:var(--red);color:#fff}.frame-bar button.primary{box-shadow:inset 0 -2px 0 var(--orange)}.frame-bar button.unloaded{color:var(--dim);border-style:dashed}.frame-bar button.pending,.frame-bar button.pending:hover:not(:disabled){border-color:var(--red);color:var(--text);animation:pulse 1s ease-in-out infinite}.frame-status{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;background:#0c0a0ed1;border:1px solid var(--line);border-radius:var(--r-chip);color:var(--text);font-family:var(--font-mono);font-size:11px;backdrop-filter:blur(4px)}.frame-status.error{color:var(--red-text)}.frame-spinner{width:11px;height:11px;border-radius:50%;border:2px solid rgba(255,255,255,.14);border-top-color:var(--red);animation:viewer-spin .8s linear infinite}.quad-exit{position:absolute;top:10px;right:10px;z-index:4;width:28px;padding:0}.loading-overlay{position:absolute;inset:0;display:grid;place-items:center;place-content:center;gap:8px;background:var(--veil);color:var(--text);font-size:14px;pointer-events:none}.loading-overlay:before{content:"";width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.14);border-top-color:var(--red);animation:viewer-spin .8s linear infinite;margin-bottom:6px}.loading-overlay.error:before{display:none}.loading-overlay .muted.small{font-family:var(--font-mono);font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}@keyframes viewer-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.loading-overlay:before{animation-duration:2.4s}.chev,button,input,label.check input[type=checkbox]:after{transition:none}}.compass{position:absolute;right:28px;bottom:28px;user-select:none}.compass-label{font-family:var(--font-display);font-size:10px;font-weight:700;text-anchor:middle;dominant-baseline:middle;cursor:pointer}.compass-label:hover{font-size:12px}.compass-ring:hover{stroke:#ebf2ff8c}.theater-mpr{position:relative;flex:0 0 auto;width:400px;background:transparent;border-left:1px solid var(--line);overflow:auto}.theater-mpr.collapsed{width:40px;overflow:hidden}.mpr-collapse{position:absolute;top:8px;left:8px;width:24px;height:24px;padding:0;background:var(--surface);border-color:var(--line);border-radius:var(--r-chip);color:var(--dim);font-size:14px}.mpr-collapse:hover:not(:disabled){background:var(--raised);border-color:var(--faint);color:var(--text)}.mpr-panel{padding:40px 12px 16px;background:transparent;display:flex;flex-direction:column;gap:10px}.mpr-head,.mpr-settings{background:var(--chrome);border:1px solid var(--line);border-radius:var(--r-control);padding:4px 8px}.mpr-head h3{margin:0;font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label)}.mpr-settings{display:flex;flex-direction:column;gap:6px;background:var(--surface);padding:10px}.mpr-settings .muted.small{font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}.mpr-pane{display:flex;flex-direction:column;border:2px solid;border-radius:6px;overflow:hidden;background:transparent}.mpr-pane.docked .mpr-view{aspect-ratio:1 / 1}.cell .mpr-pane{position:absolute;inset:0;border-radius:0}.cell .mpr-pane .mpr-view{flex:1 1 auto}.mpr-pane-head{position:relative;display:flex;align-items:center;gap:4px;padding:3px 6px 3px 8px;background:#0c0a0ee0;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.04em}.mpr-view{position:relative;min-height:0;touch-action:none;background:transparent}.mpr-pane.cell .mpr-view{flex:1 1 auto}.mpr-view.cursor-move{cursor:move}.mpr-view.cursor-rotate{cursor:crosshair}.mpr-overlay{position:absolute;inset:0;pointer-events:none}.mpr-strip{position:relative;display:flex;align-items:center;gap:8px;padding:4px 8px;background:#09080ae0}.mpr-strip .small{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.mpr-strip .small.mono{text-transform:none;letter-spacing:0;font-size:11px;min-width:42px;text-align:right;color:var(--gray)}.mpr-strip input[type=range]{flex:1 1 auto;padding:0;min-width:0;margin:0}button.icon{height:22px;min-width:22px;padding:0 4px;background:transparent;border-color:transparent;border-radius:var(--r-chip);color:var(--dim);font-size:13px;line-height:1}button.icon:hover:not(:disabled){background:var(--raised);color:var(--text)}button.icon.on{color:var(--text)}button.icon.tiny{height:18px;min-width:16px;padding:0 3px;font-size:11px}.inventory .chip{height:22px;padding:0 8px;background:transparent;border:1px solid var(--line-strong);border-radius:var(--r-chip);color:var(--dim);font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.inventory .chip:hover:not(:disabled){background:var(--raised);border-color:var(--faint);color:var(--text)}.inventory .chip.on,.inventory .chip.on:hover:not(:disabled){background:var(--tint-red);border-color:var(--red);color:var(--red-text)}.inv-toolbar h3{margin:2px 0}.inv-section-head{display:flex;align-items:center;margin-top:10px;font-size:12px}.inv-section-head .link{color:var(--text);font-family:var(--font-display);font-weight:600;font-size:12.5px;padding-left:0}.inv-section-head .link:hover:not(:disabled){text-decoration:none;color:var(--orange-hi)}.chev{display:inline-block;color:var(--dim);transition:transform .12s ease}.chev.open{transform:rotate(90deg)}.inv-row{border-top:1px solid var(--line);padding:3px 0}.inv-row.off .title{color:var(--dim)}.inv-row-main{display:flex;align-items:center;gap:4px}.inv-row .title{flex:1 1 auto;text-align:left;padding:2px 4px;color:var(--text);font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.inv-row .title:hover:not(:disabled){text-decoration:none;color:var(--orange-hi)}.inv-row .value{color:var(--dim);white-space:nowrap}.swatch{width:18px;height:18px;padding:0;border:1px solid var(--line);border-radius:var(--r-chip);cursor:pointer;flex:none}.swatch::-webkit-color-swatch-wrapper{padding:0}.swatch::-webkit-color-swatch{border:none;border-radius:2px}.opacity{display:inline-flex;align-items:center;gap:1px}.opacity .bar{width:36px;height:6px;border-radius:3px;overflow:hidden;display:block}.opacity .bar span{display:block;height:100%}.inv-info{margin:2px 0 6px 24px;font-size:12px;border-collapse:collapse}.inv-info td{padding:1px 8px 1px 0;color:var(--dim)}.inv-info td.mono{color:var(--text)}@media (max-width: 1280px){.sidebar-body{width:280px}.theater-mpr{width:320px}}@media (max-width: 900px){.theater{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.theater-sidebar{grid-row:1 / 3;grid-column:1;position:relative;z-index:7}.sidebar-rail{border-right:0}.sidebar-body{position:absolute;top:0;bottom:0;left:44px;width:min(320px,calc(100vw - 44px));background:var(--chrome);border-right:1px solid var(--line);box-shadow:var(--shadow)}.theater-center{grid-row:1;grid-column:2}.theater-mpr{grid-row:2;grid-column:2;width:auto;max-height:40vh;max-height:40dvh;border-left:0;border-top:1px solid var(--line)}.theater-mpr.collapsed{width:auto;height:40px}.mpr-collapse{transform:rotate(90deg)}.mpr-panel{padding:8px 12px 12px 44px}.mpr-pane.docked .mpr-view{aspect-ratio:4 / 3}.quick-bar{max-width:calc(100% - 20px);gap:3px}.quick-bar button,.frame-bar button,.quad-exit{height:30px;padding:0 8px;font-size:11.5px}.frame-bar{max-width:calc(100% - 110px);bottom:10px}.compass{right:10px;bottom:10px}.rail-btn{width:34px;height:34px}.modal.wide{max-width:none}}.tf-editor{display:flex;flex-direction:column;gap:4px;position:relative;width:100%}.tf-title{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.tf-canvas{display:block;width:100%;border-radius:4px;border:1px solid var(--line-strong);cursor:crosshair;touch-action:none;user-select:none}.tf-editor.disabled .tf-canvas{cursor:not-allowed}.tf-colour-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none;bottom:0;left:0}.tf-caption{min-height:1.4em;font-variant-numeric:tabular-nums}.tf-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.tf-row .label{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.tf-row .spacer{flex:1}.badge{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.06em;text-transform:uppercase;padding:1px 6px;border-radius:9px;border:1px solid var(--orange);color:var(--orange)}.hu-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px}.hu-fields label{display:flex;flex-direction:column;gap:2px;font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.hu-fields input{width:100%;height:28px;font-variant-numeric:tabular-nums}.readout{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.06em;color:var(--dim);font-variant-numeric:tabular-nums}.saves{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:6px;margin-bottom:6px}.saves .row{flex-wrap:wrap}.saves select{flex:1;min-width:120px;height:28px}.badge.dirty{border-color:var(--orange);color:var(--orange)}.badge.muted{border-color:var(--faint);color:var(--dim)}.inv-row .icon.edit.on{color:var(--orange);border-color:var(--orange)}.inv-row .icon.reset{color:var(--orange)}.quick-bar select{height:26px;font-size:11px}.main-view.editing{cursor:crosshair}:root{color-scheme:dark;--ground: #09080a;--chrome: #0c0a0e;--well: #0e0c11;--surface: #131116;--raised: #1b181f;--line: #332e39;--line-strong: #453f4d;--red-deep: #4e0a12;--red: #a31423;--red-hi: #c61e30;--red-text: #e79aa2;--orange: #ff8a2b;--orange-hi: #ffa65c;--green-text: #8fd19e;--green-line: #3b7a4a;--text: #eceef2;--gray: #cfd3d9;--dim: #a0a6b1;--label: #959ba7;--faint: #848a96;--ghost: #4a4552;--tint-red: #1a0b0e;--tint-amber: #201305;--tint-amber-line: #3a2208;--tint-alarm: #2a0508;--veil: rgba(12, 10, 14, .86);--shadow: 0 18px 40px rgba(0, 0, 0, .55);--font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-body: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--fs-micro: 11px;--fs-small: 12px;--fs-body: 13px;--fs-lead: 14px;--fs-h2: 15px;--fs-h1: 24px;--track-micro: .14em;--r-chip: 3px;--r-control: 5px;--r-panel: 8px;--gutter: max(28px, env(safe-area-inset-left, 0px));--gutter-r: max(28px, env(safe-area-inset-right, 0px));--bg: var(--ground);--bg-2: var(--chrome);--bg-3: var(--surface);--fg: var(--text);--muted: var(--dim);--accent: var(--red);--accent-2: var(--red);--danger: var(--red-hi);--warn: var(--orange);--radius: var(--r-control);--font: var(--font-body);--mono: var(--font-mono)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);font-size:var(--fs-body);line-height:1.45;background:var(--ground);color:var(--text);overflow:hidden;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}::selection{background:var(--red-deep);color:#fff}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px;border:3px solid var(--chrome)}::-webkit-scrollbar-thumb:hover{background:var(--ghost)}a{color:var(--orange);text-decoration:none}a:hover{color:var(--orange-hi);text-decoration:none}h1{font-family:var(--font-display);font-size:var(--fs-h1);font-weight:600;letter-spacing:-.015em;line-height:1.2;margin:0;text-wrap:balance}h2{font-family:var(--font-display);font-size:var(--fs-h2);font-weight:600;margin:24px 0 8px}h3{font-family:var(--font-display);font-weight:600}code{font-family:var(--font-mono);font-size:.92em;color:var(--gray)}:focus-visible{outline:2px solid var(--orange);outline-offset:1px}button,.button{font:inherit;font-family:var(--font-display);font-size:12.5px;font-weight:600;line-height:1;height:30px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--red);color:#fff;border:1px solid transparent;border-radius:var(--r-control);cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease}button:hover:not(:disabled),.button:hover{background:var(--red-hi);color:#fff}button:disabled{background:var(--raised);color:var(--faint);cursor:not-allowed}button.secondary{background:var(--surface);border-color:var(--line);color:var(--text)}button.secondary:hover:not(:disabled){background:var(--raised);border-color:var(--faint);color:var(--text)}button.link{background:none;border:none;height:auto;padding:2px 4px;font-family:var(--font-body);font-size:12px;font-weight:400;color:var(--dim);text-underline-offset:3px}button.link:hover:not(:disabled){background:none;color:var(--text);text-decoration:underline}button.link:disabled{background:none;color:var(--faint)}input,select,textarea{font:inherit;font-size:12.5px;background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-control);padding:0 10px;height:34px;transition:border-color .12s ease}textarea{height:auto;padding:8px 10px;line-height:1.5;resize:vertical}input::placeholder,textarea::placeholder{color:var(--faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--orange)}input:disabled,select:disabled{color:var(--faint)}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}input[type=checkbox]{accent-color:var(--red);width:15px;height:15px;padding:0;margin:0}label{display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label)}label>input,label>select,label>textarea{font-family:var(--font-body);letter-spacing:0;text-transform:none}.muted{color:var(--dim)}.small{font-size:var(--fs-small)}.mono{font-family:var(--font-mono);font-size:11.5px;color:var(--gray);font-variant-numeric:tabular-nums}.error{color:var(--red-hi)}.centered{display:grid;place-items:center;height:100%}.row{display:flex;gap:8px;align-items:center}.spacer{flex:1}.ru-banner{background:var(--tint-amber);color:var(--orange-hi);border-top:1px solid var(--tint-amber-line);text-align:center;font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:var(--track-micro);text-transform:uppercase;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));flex:0 0 auto}.modal-backdrop{position:fixed;inset:0;background:var(--veil);display:grid;place-items:center;z-index:100}.modal{background:var(--well);border:1px solid var(--line);border-radius:var(--r-panel);box-shadow:var(--shadow);padding:22px 24px;max-width:560px;width:calc(100% - 32px);max-height:min(90vh,90dvh);overflow:auto;overscroll-behavior:contain;line-height:1.55}.modal h2{margin:0 0 12px;font-size:18px}.modal h3{font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label);margin:18px 0 6px}.modal p{margin:8px 0;color:var(--gray)}.kv{border-collapse:collapse}.kv td{padding:3px 14px 3px 0;vertical-align:top}.kv td:first-child{color:var(--dim);white-space:nowrap}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:14px;height:48px;padding:0 max(20px,env(safe-area-inset-right,0px)) 0 max(20px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);background:var(--chrome);flex:0 0 auto;min-width:0}.topbar-user{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand{display:flex;align-items:center;flex:none;height:100%}.brand img{display:block;height:22px;width:auto}.topbar .version{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.04em;color:var(--faint)}.topbar button.link{font-family:var(--font-display);font-size:12.5px;font-weight:600;padding:0 10px;height:32px;border-radius:var(--r-control)}.topbar button.link:hover:not(:disabled){text-decoration:none;background:var(--surface)}.app-main{flex:1 1 auto;min-height:0;overflow:auto}.app-theater .app-main{overflow:hidden}.page{padding-block:24px 48px;padding-left:var(--gutter);padding-right:var(--gutter-r);max-width:1240px;margin:0 auto}.toolbar{display:flex;gap:12px;align-items:flex-end;margin-bottom:18px;flex-wrap:wrap}.toolbar h1{margin-right:8px}.toolbar input[type=search]{min-width:280px}.segmented{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-control);overflow:hidden;height:34px}.segmented button{height:100%;background:var(--surface);color:var(--dim);border:0;border-radius:0}.segmented button+button{border-left:1px solid var(--line-strong)}.segmented button:hover:not(:disabled){background:var(--raised);color:var(--text)}.segmented button.on{background:var(--raised);color:var(--text)}.breadcrumb{margin-bottom:14px;font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.04em;color:var(--dim);overflow-wrap:anywhere}.empty{border:1px dashed var(--line);border-radius:var(--r-panel);padding:28px 20px;text-align:center;color:var(--dim);font-size:12.5px;line-height:1.6}.login-page{display:grid;place-items:center;flex:1 1 auto;min-height:0;overflow:auto;padding:32px 20px}.login-card{background:var(--well);border:1px solid var(--line);border-radius:var(--r-panel);padding:28px;width:360px;max-width:100%;display:flex;flex-direction:column;gap:14px}.login-brand{display:flex;justify-content:center;padding:6px 0 4px}.login-brand img{display:block;height:44px;width:auto;max-width:100%}.login-card>p{margin:0;line-height:1.5}.login-card input{height:44px;padding:0 14px;font-size:13.5px}.login-card button[type=submit]{height:44px;font-size:14px;margin-top:4px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.card{display:flex;flex-direction:column;background:var(--well);border:1px solid var(--line);border-radius:6px;overflow:hidden;color:var(--text);transition:border-color .12s ease}.card:hover{border-color:var(--faint);color:var(--text)}.thumb{aspect-ratio:4 / 3;background:#000;display:grid;place-items:center;border-bottom:1px solid var(--line)}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb.large{width:320px;flex:0 0 auto;border:1px solid var(--line);border-radius:6px;overflow:hidden}.thumb-empty{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--faint)}.card-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:3px}.card-head{display:flex;align-items:center;gap:8px;min-width:0}.card-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-load{flex:0 0 auto;height:24px;padding:0 10px;font-size:11.5px}.card .muted.small{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--dim)}.badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.badge{display:inline-block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:var(--r-chip);border:1px solid var(--line-strong);color:var(--dim);margin-right:4px;line-height:1.2}.badges .badge{margin-right:0}.badge.notes{background:var(--tint-amber);border-color:var(--tint-amber-line);color:var(--orange-hi)}.table-wrap{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;border-radius:var(--r-panel)}.table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:var(--r-panel);overflow:hidden;background:var(--well)}.table th,.table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table th{background:var(--chrome);font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label);white-space:nowrap}.table td{color:var(--gray);font-variant-numeric:tabular-nums}.table td a{color:var(--text);font-weight:500}.table td a:hover{color:var(--orange-hi)}.table tbody tr:hover td{background:var(--surface)}.table tr.current td{background:var(--tint-red)}.table tr.current td:first-child{box-shadow:inset 2px 0 0 var(--red)}.table .button{height:26px;padding:0 10px;font-size:11.5px;background:var(--surface);border-color:var(--line);color:var(--text)}.table .button:hover{background:var(--raised);border-color:var(--faint);color:var(--text)}.project-head{display:flex;gap:24px;align-items:stretch}.project-head .thumb.large{align-self:flex-start}.project-meta{flex:1 1 320px;display:flex;flex-direction:column;gap:8px}.project-meta .muted.small{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--dim)}.project-metrics{flex:1 1 360px;min-width:0;display:flex;flex-direction:column;min-height:240px;max-height:min(440px,70vh);background:var(--well);border:1px solid var(--line);border-radius:var(--r-panel);overflow:hidden;font-size:12.5px}.metrics-note{padding:14px 16px}.metrics{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.metrics-bar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}.metrics-bar h3{flex:1;margin:0}.metrics-bar .muted{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--dim);font-variant-numeric:tabular-nums}.metrics-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 10px}.metrics-section+.metrics-section{border-top:1px solid var(--line)}.metrics-section .metrics-head{position:sticky;top:0;z-index:1;background:var(--well);border:none;color:var(--text);padding:6px 0;height:auto;text-align:left;justify-content:flex-start;width:100%;font-size:12.5px}.metrics-section .metrics-head:hover:not(:disabled){background:var(--well);color:var(--orange-hi)}.metrics-section .metrics-head .muted{font-family:var(--font-mono);font-size:11px;font-weight:400}.metrics-section table{margin-bottom:6px}.metrics tr.group-title td{color:var(--label);padding-top:6px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}.metrics tr.indent td:first-child{padding-left:14px}.title-input{font-family:var(--font-display);font-size:18px;font-weight:600;height:40px}.notes{white-space:pre-wrap;color:var(--gray);line-height:1.55;margin:4px 0}.metrics h3{margin:0;font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;color:var(--label);text-transform:uppercase;letter-spacing:var(--track-micro)}.metrics table{border-collapse:collapse;width:100%}.metrics td{padding:2px 4px;color:var(--gray)}.metrics td:last-child{text-align:right;font-family:var(--font-mono);font-size:11.5px;color:var(--text);font-variant-numeric:tabular-nums}button.danger,.button.danger{background:var(--red-deep);border-color:var(--red);color:var(--red-text)}button.danger:hover:not(:disabled){background:var(--red);color:#fff}button.link.danger{background:none;border:none;color:var(--red-text)}button.link.danger:hover:not(:disabled){color:var(--red-hi);background:none}.row.end{justify-content:flex-end;margin-top:16px}.row.wrap{flex-wrap:wrap}.modal-body{color:var(--gray);line-height:1.55}.modal.run-dialog{max-width:640px}.field{display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--label);margin:6px 0;min-width:140px}.field input,.field select,.field textarea{font-family:var(--font-body);font-size:12.5px;letter-spacing:0;text-transform:none}.check{display:flex;align-items:center;gap:8px;color:var(--gray);font-size:12.5px;margin:4px 0}.check input{accent-color:var(--red)}.switches{margin-top:6px}.notice{border:1px solid var(--line);background:var(--tint-amber);color:var(--orange-hi);border-radius:var(--r-control);padding:8px 10px;font-size:12.5px;margin:8px 0}.dropzone{border:1px dashed var(--line);border-radius:var(--r-panel);padding:22px 16px;text-align:center;color:var(--gray);cursor:pointer;font-size:12.5px;line-height:1.6;transition:border-color .12s,background .12s}.dropzone:hover{border-color:var(--faint);background:var(--surface)}.dropzone.has-file{border-style:solid;border-color:var(--red);background:var(--tint-red)}.progress-block{margin-top:14px}.progress{height:6px;background:var(--ghost);border-radius:3px;overflow:hidden;margin-top:6px}.progress.small{height:4px;margin-top:0;width:160px}.progress .bar{height:100%;background:var(--red-hi);border-radius:3px;transition:width .3s}.progress .bar.indeterminate{width:35%;animation:progress-slide 1.4s ease-in-out infinite}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.jobs{margin:8px 0 24px}.jobs-table td{vertical-align:top}.progress-cell{min-width:170px}.badge.state{text-transform:uppercase;letter-spacing:.08em}.badge.state.running,.badge.state.preparing{color:var(--orange-hi);border-color:var(--orange)}.badge.state.succeeded{color:var(--green-text);border-color:var(--green-line)}.badge.state.failed,.badge.state.lost{color:var(--red-text);border-color:var(--red);background:var(--tint-alarm)}.badge.state.cancelled{color:var(--dim)}td.actions{white-space:nowrap}td.actions>*+*{margin-left:8px}tr.job-detail td{background:var(--well);padding:10px 14px 14px}.ingest-hint{color:var(--gray);font-size:12.5px;line-height:1.55}.ingest-hint pre{margin:8px 0;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-control);white-space:pre-wrap;word-break:break-all;font-size:11.5px;user-select:all}.job-log .log{margin:6px 0 0;max-height:320px;overflow:auto;background:var(--ground);border:1px solid var(--line);border-radius:var(--r-control);padding:10px 12px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--gray);white-space:pre-wrap;word-break:break-word}.check.small{font-size:11.5px;margin:0}@media (max-width: 900px){:root{--gutter: max(16px, env(safe-area-inset-left, 0px));--gutter-r: max(16px, env(safe-area-inset-right, 0px))}.page{padding-block:16px 40px}.topbar{gap:10px;padding-left:max(14px,env(safe-area-inset-left,0px));padding-right:max(10px,env(safe-area-inset-right,0px))}.topbar .version,.topbar .topbar-user{display:none}.toolbar{gap:8px;margin-bottom:14px}.toolbar h1{flex-basis:100%;margin-right:0}.toolbar input[type=search]{min-width:0;flex:1 1 160px}.project-head{flex-wrap:wrap;gap:16px}.thumb.large{width:100%;max-width:420px}.project-meta,.project-metrics{flex-basis:100%}.modal{padding:18px 16px;width:calc(100% - 24px);max-height:calc(100dvh - 24px)}.modal.run-dialog,.modal.wide{max-width:none}.row.end{flex-wrap:wrap}.row.end button{flex:1 1 auto}.kv td:first-child{white-space:normal}.ingest-hint pre{font-size:11px}}@media (max-width: 520px){h1{font-size:21px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.card-body{padding:10px 11px 12px}.login-card{padding:22px 18px}.ru-banner{font-size:10px;letter-spacing:.1em}.empty{padding:22px 14px}}@media (pointer: coarse){.page button,.page .button,.modal button,.login-card button{min-height:36px}.page button.link,.table .button,.modal button.link{min-height:32px}.page input:not([type=checkbox]):not([type=range]),.page select,.modal input:not([type=checkbox]):not([type=range]),.modal select{min-height:40px;font-size:16px}input[type=checkbox]{width:18px;height:18px}}@media (max-width: 640px){.table-wrap{overflow-x:visible}.table thead{display:none}.table,.table tbody,.table tr,.table td{display:block}.table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 14px;padding:12px 14px;border-bottom:1px solid var(--line)}.table tr:last-child{border-bottom:0}.table td,.table tr:last-child td{padding:0;border-bottom:0;min-width:0;overflow-wrap:anywhere}.table td[data-label]:before{content:attr(data-label);display:block;margin-bottom:3px;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--label)}.table td.actions,.table td.span,.table td[colspan]{grid-column:1 / -1}.table td.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding-top:2px}.table td.actions>*+*{margin-left:0}.table tbody tr:hover td{background:transparent}.table tr.current{background:var(--tint-red);box-shadow:inset 2px 0 0 var(--red)}.table tr.current td,.table tr.current td:first-child{background:transparent;box-shadow:none}tr.job-detail{display:block}tr.job-detail td{background:var(--well);padding:0}.progress-cell{min-width:0}.progress.small{width:100%}}.converting{color:var(--orange-hi);display:inline-flex;align-items:center;gap:8px}.pulse{width:8px;height:8px;border-radius:50%;background:var(--orange);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.error-text{color:var(--red-text)}.job-log+.job-log{margin-top:14px}
