:root{--bg: #07080c;--bg-2: #0c0e14;--panel: #10131b;--panel-2: #151925;--panel-3: #1b2030;--line: #232838;--line-2: #2e3448;--text: #e8eaf2;--muted: #9097ad;--faint: #5f6680;--accent: #8b5cf6;--accent-2: #a78bfa;--accent-soft: rgba(139, 92, 246, .14);--cyan: #22d3ee;--live: #22c55e;--live-soft: rgba(34, 197, 94, .14);--fail: #f97316;--fail-soft: rgba(249, 115, 22, .14);--danger: #f43f5e;--danger-soft: rgba(244, 63, 94, .14);--warn: #eab308;--warn-soft: rgba(234, 179, 8, .14);--radius: 12px;--radius-sm: 8px;--shadow: 0 20px 50px -20px rgba(0, 0, 0, .8);--font: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;letter-spacing:-.01em}h1{font-size:26px;font-weight:750}h2{font-size:18px;font-weight:700}h3{font-size:14px;font-weight:700}code,.mono{font-family:var(--mono);font-size:12.5px}::selection{background:#8b5cf659}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:10px;border:2px solid transparent;background-clip:padding-box}.app{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:16px;height:56px;padding:0 20px;border-bottom:1px solid var(--line);background:#0c0e14d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:50}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;color:var(--text);letter-spacing:-.01em}.brand img{width:26px;height:26px}.topbar .spacer{flex:1}.user-chip{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);color:var(--muted)}.user-chip img{width:26px;height:26px;border-radius:50%}.page{max-width:1240px;width:100%;margin:0 auto;padding:28px 20px 60px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head p{margin:6px 0 0;color:var(--muted)}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:10px}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12.5px}.right{margin-left:auto}.grid{display:grid;gap:16px}.grid.cards{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}.grid.two{grid-template-columns:1fr 1fr}@media(max-width:860px){.grid.two{grid-template-columns:1fr}}.card{background:linear-gradient(180deg,var(--panel) 0%,var(--bg-2) 100%);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.card.hover{transition:border-color .15s,transform .15s;cursor:pointer}.card.hover:hover{border-color:var(--line-2);transform:translateY(-1px)}.section{display:flex;flex-direction:column;gap:14px}.section+.section{margin-top:22px}.divider{height:1px;background:var(--line);margin:14px 0;border:0}.callout{border:1px solid var(--line-2);background:var(--panel-2);border-radius:var(--radius-sm);padding:12px 14px;color:var(--muted)}.callout.warn{border-color:#eab30859;background:var(--warn-soft);color:#f5e3a3}.callout.danger{border-color:#f43f5e59;background:var(--danger-soft);color:#fecdd3}.callout.ok{border-color:#22c55e59;background:var(--live-soft);color:#bbf7d0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--panel-2);color:var(--text);font:600 13px var(--font);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,opacity .12s;-webkit-user-select:none;user-select:none}.btn:hover:not(:disabled){background:var(--panel-3);border-color:#3a4160}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,#9a6cff,#7c4dff);border-color:#8b5cf6;color:#fff;box-shadow:0 6px 18px -8px #8b5cf6cc}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#a77dff,#8a5cff)}.btn.danger{color:#fda4af;border-color:#f43f5e66;background:var(--danger-soft)}.btn.danger:hover:not(:disabled){background:#f43f5e38}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover:not(:disabled){background:var(--panel-2);color:var(--text)}.btn.sm{height:28px;padding:0 10px;font-size:12.5px}.btn.icon{width:32px;padding:0}.btn.sm.icon{width:28px}.btn.active{background:var(--accent-soft);border-color:#8b5cf680;color:#ddd6fe}.btn-group{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden}.btn-group .btn{border:0;border-radius:0;height:32px}.btn-group .btn+.btn{border-left:1px solid var(--line-2)}.twitch-btn{background:#9146ff;border-color:#9146ff;color:#fff;height:44px;padding:0 20px;font-size:15px}.twitch-btn:hover:not(:disabled){background:#a970ff!important}label.field{display:flex;flex-direction:column;gap:6px}label.field>span,.field-label{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.01em}.help{font-size:12px;color:var(--faint)}.error-text{font-size:12px;color:#fda4af}input[type=text],input[type=number],input[type=password],input[type=url],input:not([type]),select,textarea{width:100%;height:34px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--bg-2);color:var(--text);font:13px var(--font);transition:border-color .12s}textarea{height:auto;padding:8px 10px;resize:vertical;line-height:1.45}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #8b5cf62e}input[type=color]{width:34px;height:34px;padding:2px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--bg-2);cursor:pointer}input[type=range]{width:100%;accent-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-weight:500}.switch input{appearance:none;width:34px;height:20px;border-radius:999px;background:var(--line-2);position:relative;cursor:pointer;transition:background .15s;margin:0;flex:0 0 auto}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s}.switch input:checked{background:var(--accent)}.switch input:checked:after{transform:translate(14px)}.input-group{display:flex;gap:6px;align-items:center}.input-suffix{color:var(--faint);font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;background:var(--panel-3);color:var(--muted);border:1px solid var(--line-2);white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.badge.live{background:var(--live-soft);color:#4ade80;border-color:#22c55e59}.badge.fail{background:var(--fail-soft);color:#fb923c;border-color:#f9731659}.badge.warn{background:var(--warn-soft);color:#facc15;border-color:#eab30859}.badge.danger{background:var(--danger-soft);color:#fb7185;border-color:#f43f5e59}.badge.accent{background:var(--accent-soft);color:#c4b5fd;border-color:#8b5cf666}.badge.pulse .dot{animation:pulse 1.6s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 currentColor}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}.tab{padding:10px 14px;color:var(--muted);font-weight:600;cursor:pointer;border:0;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;font:600 13.5px var(--font);white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.modal-backdrop{position:fixed;inset:0;background:#030408b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px;animation:fade .12s ease-out}.modal{width:100%;max-width:520px;max-height:calc(100vh - 40px);overflow:auto;background:var(--panel);border:1px solid var(--line-2);border-radius:16px;box-shadow:var(--shadow);padding:22px;animation:pop .14s ease-out}.modal.wide{max-width:960px}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(6px) scale(.98)}}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:300}.toast{min-width:260px;max-width:420px;padding:12px 14px;border-radius:10px;background:var(--panel-3);border:1px solid var(--line-2);box-shadow:var(--shadow);animation:pop .15s ease-out}.toast.error{border-color:#f43f5e80}.toast.ok{border-color:#22c55e80}.ov-card{display:flex;flex-direction:column;gap:14px}.ov-thumb{position:relative;aspect-ratio:16 / 9;border-radius:10px;overflow:hidden;background:repeating-conic-gradient(#151925 0% 25%,#11141d 0% 50%) 50% / 24px 24px;border:1px solid var(--line)}.ov-thumb .state-tag{position:absolute;top:10px;left:10px}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px}.kv dt{color:var(--faint)}.kv dd{margin:0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty{text-align:center;padding:60px 20px;border:1px dashed var(--line-2);border-radius:var(--radius);color:var(--muted)}.limit-meter{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.limit-meter .bar{width:120px;height:6px;border-radius:6px;background:var(--line);overflow:hidden}.limit-meter .bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--cyan))}.login-wrap{min-height:100%;display:grid;place-items:center;padding:40px 20px;background:radial-gradient(900px 500px at 20% 0%,rgba(139,92,246,.18),transparent 60%),radial-gradient(700px 400px at 100% 100%,rgba(34,211,238,.1),transparent 60%),var(--bg)}.login-card{max-width:460px;width:100%;text-align:center;padding:40px 32px}.login-card h1{font-size:30px;margin:14px 0 8px}.login-card ul{text-align:left;color:var(--muted);padding-left:18px;margin:20px 0 26px}.editor{display:grid;grid-template-columns:240px 1fr 320px;height:calc(100vh - 105px);min-height:560px;border-top:1px solid var(--line)}.editor-left,.editor-right{background:var(--bg-2);overflow:auto}.editor-left{border-right:1px solid var(--line)}.editor-right{border-left:1px solid var(--line)}.editor-center{display:flex;flex-direction:column;min-width:0;background:#05060a}.editor-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--bg-2);flex-wrap:wrap}.canvas-wrap{flex:1;position:relative;overflow:hidden;isolation:isolate}.canvas-wrap.drop-over{outline:2px dashed var(--accent, #9b7bff);outline-offset:-8px}.canvas-drop-hint{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:20;pointer-events:none;padding:8px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line-2);font-size:13px;box-shadow:var(--shadow);max-width:calc(100% - 32px);text-align:center}.canvas-frame{position:absolute;background:repeating-conic-gradient(#11131b 0% 25%,#0d0f16 0% 50%) 50% / 32px 32px;box-shadow:0 0 0 1px var(--line-2),var(--shadow);overflow:hidden}.canvas-frame.failover{box-shadow:0 0 0 2px #f973168c,var(--shadow)}.canvas-frame.live{box-shadow:0 0 0 2px #22c55e73,var(--shadow)}.sel-layer{position:absolute;inset:0}.sel-box{position:absolute;outline:1px solid rgba(139,92,246,0);cursor:move}.sel-box:hover{outline-color:#a78bfa99}.sel-box.selected{outline:2px solid var(--accent-2)}.sel-box.locked{cursor:default}.sel-box .handle{position:absolute;width:12px;height:12px;background:#fff;border:2px solid var(--accent);border-radius:3px}.sel-box .label{position:absolute;top:-24px;left:-2px;font:700 11px var(--font);background:var(--accent);color:#fff;padding:3px 7px;border-radius:5px 5px 5px 0;white-space:nowrap;pointer-events:none}.guide{position:absolute;background:#f472b6;pointer-events:none;z-index:5}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px;font-size:11.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}.layer{display:flex;align-items:center;gap:6px;padding:6px 8px 6px 12px;margin:1px 6px;border-radius:7px;cursor:pointer;color:var(--muted);font-weight:500}.layer:hover{background:var(--panel-2);color:var(--text)}.layer.selected{background:var(--accent-soft);color:#e9e3ff}.layer.hidden-l{opacity:.5}.layer[draggable=true]{cursor:grab}.layer.dragging{opacity:.4}.layer.drop-before{box-shadow:inset 0 2px 0 var(--accent)}.layer.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}.layer .drag-handle{color:var(--faint);display:inline-flex;margin-left:-6px}.layer .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer .btn{opacity:.6}.layer:hover .btn,.layer .btn.on{opacity:1}.lib-item{display:flex;gap:10px;align-items:center;padding:8px 10px;margin:4px 8px;border:1px solid var(--line);border-radius:9px;cursor:pointer;background:var(--panel)}.lib-item:hover{border-color:var(--accent)}.lib-item .ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);color:#c4b5fd;flex:0 0 auto}.props{padding:4px 14px 30px}.props-group{border-top:1px solid var(--line);padding:14px 0;display:flex;flex-direction:column;gap:12px}.props-group:first-child{border-top:0}.props-group h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:700}.prop-row{display:grid;grid-template-columns:1fr;gap:6px}.prop-row.inline{grid-template-columns:1fr auto;align-items:center}.prop-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--muted)}.override-dot{font-size:10px;font-weight:700;padding:1px 6px;border-radius:5px;background:var(--fail-soft);color:#fdba74;cursor:pointer;border:0}.override-dot.live{background:var(--live-soft);color:#86efac}.xywh{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.xywh label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--faint);font-weight:700}.xywh input{height:30px;padding:0 6px;font-size:12.5px}.list-editor{display:flex;flex-direction:column;gap:6px}.list-item{border:1px solid var(--line);border-radius:9px;background:var(--panel);padding:8px;display:flex;flex-direction:column;gap:8px}.list-item.dragging{opacity:.4}.list-item-head{display:flex;align-items:center;gap:6px}.drag-handle{cursor:grab;color:var(--faint);padding:0 2px}.thumb{width:48px;height:28px;border-radius:5px;object-fit:cover;background:#000;flex:0 0 auto}.state-switch{display:inline-flex;padding:3px;border-radius:10px;background:var(--bg);border:1px solid var(--line-2)}.state-switch button{border:0;background:none;color:var(--muted);font:700 12px var(--font);padding:6px 12px;border-radius:7px;cursor:pointer;letter-spacing:.04em}.state-switch button.on.live{background:var(--live-soft);color:#4ade80}.state-switch button.on.failover{background:var(--fail-soft);color:#fb923c}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.media-tile{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel);cursor:pointer;display:flex;flex-direction:column}.media-tile:hover{border-color:var(--line-2)}.media-tile.selected{border-color:var(--accent);box-shadow:0 0 0 2px #8b5cf659}.media-tile .preview{aspect-ratio:16 / 10;background:repeating-conic-gradient(#151925 0% 25%,#11141d 0% 50%) 50% / 16px 16px;display:grid;place-items:center;overflow:hidden}.media-tile .preview img,.media-tile .preview video{width:100%;height:100%;object-fit:contain}.media-tile .meta{padding:8px 10px;font-size:12px}.media-tile .meta .n{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropzone{border:1.5px dashed var(--line-2);border-radius:12px;padding:22px;text-align:center;color:var(--muted);transition:border-color .15s,background .15s}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.progress{height:6px;border-radius:6px;background:var(--line);overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--cyan));transition:width .2s}.status-hero{display:flex;align-items:center;gap:16px}.status-orb{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.status-orb.live{background:var(--live-soft);color:#4ade80}.status-orb.fail{background:var(--fail-soft);color:#fb923c}.status-orb.warn{background:var(--warn-soft);color:#facc15}.status-orb.danger{background:var(--danger-soft);color:#fb7185}.status-orb.idle{background:var(--panel-3);color:var(--muted)}.diag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.diag{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.diag .k{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.diag .v{margin-top:3px;font-weight:600;overflow-wrap:anywhere}.events{display:flex;flex-direction:column}.event{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}.event:last-child{border-bottom:0}.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:9px;padding:3px;gap:3px;background:var(--bg-2)}.seg button{border:0;background:none;color:var(--muted);font:600 13px var(--font);padding:6px 12px;border-radius:6px;cursor:pointer}.seg button.on{background:var(--panel-3);color:var(--text)}.copy-field{display:flex;gap:6px}.copy-field input{font-family:var(--mono);font-size:12px}.code-editor{border:1px solid var(--line-2);border-radius:9px;overflow:hidden}.code-editor .cm-editor{height:220px;font-size:12.5px}.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.steps li{counter-increment:s;display:flex;gap:12px;color:var(--muted)}.steps li:before{content:counter(s);flex:0 0 24px;height:24px;border-radius:50%;background:var(--accent-soft);color:#c4b5fd;display:grid;place-items:center;font-weight:700;font-size:12px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.2);border-top-color:currentColor;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--panel) 0%,var(--panel-2) 50%,var(--panel) 100%);background-size:200% 100%;animation:sh 1.2s infinite;border-radius:10px}@keyframes sh{to{background-position:-200% 0}}.clip-status{display:flex;flex-direction:column;gap:4px}.help.error{color:var(--danger, #f87171)}.clip-list{margin:6px 0 0;padding-left:20px;max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:3px}.clip-cat{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:0 4px;border-radius:3px;background:#ffffff14}.clip-cat.fresh{color:#4ade80}.clip-cat.recent{color:#60a5fa}.clip-cat.older{color:#c4b5fd}
