textarea{font:inherit;width:100%;resize:vertical;padding:12px;background:#101620;color:white;border:1px solid #354052;border-radius:6px;line-height:1.6}input[type=checkbox]{width:auto}button:disabled{opacity:.5;cursor:wait}.connection{position:sticky;top:0;z-index:6;padding:12px 20px;background:#263923;color:#daf4b8;font-size:12px}.connection.error{background:#4c2428;color:#ffd6d6}.connection.pending{background:#3e3520;color:#ffe8ad}.scene-host{position:relative;width:100%;height:100%;overflow:hidden}.scene{position:absolute;left:0;top:0;width:1920px;height:1080px;transform-origin:top left;color:white;font-family:Arial,sans-serif;transition:opacity .3s}.scene.off{opacity:0}.scene .bug{font-size:28px;max-width:300px}.scene .lower strong{font-size:50px}.scene .lower span{font-size:23px}.scene .score{font-size:43px}.scene .full strong{font-size:95px}.scene .full span{font-size:36px}.scene iframe{width:100%;height:100%;border:0;background:transparent}.cleanbar{position:absolute;left:0;bottom:0;width:100%;height:var(--bar-height);display:flex;align-items:stretch;overflow:hidden;color:var(--text2);background:var(--bg);font-size:var(--font-size)}.cleanbar .cleanlabel{width:var(--label-width);flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--label-bg);color:var(--text1);font-weight:700;z-index:2;overflow:hidden;white-space:nowrap}.cleanwindow{overflow:hidden;flex:1;position:relative;display:flex;align-items:center}.cleantrack{display:flex;flex:none;width:max-content;align-items:center;white-space:nowrap;will-change:transform;animation:cleanmove var(--duration,60s) linear infinite}.cleantrack.reverse{animation-direction:reverse}.cleancopy{display:flex;align-items:center;gap:var(--spacing);padding-right:var(--spacing)}.cleanmsg{display:flex;align-items:center;gap:var(--spacing)}.separator{height:var(--separator-height);width:auto;max-width:100px;object-fit:contain}.cleandot{width:8px;height:8px;border-radius:50%;background:var(--accent)}@keyframes cleanmove{from{transform:translateX(0)}to{transform:translateX(-50%)}}.swatches{display:flex;gap:8px;flex-wrap:wrap}.swatch{width:30px;height:30px;border-radius:50%;padding:0;border:2px solid white}.messagebox{margin:14px 0}.messagebox textarea{min-height:80px}.messagebox .row{align-items:center}.messagebox button{padding:5px 12px;font-size:12px}.fieldnote{font-size:11px;color:#96a6bb}.output #app{position:fixed;inset:0}.output .connection{position:fixed;top:0;left:0;right:0}.output .connection:not(.error){display:none}.scene-host.external-placeholder{background:#1c2231;display:flex;align-items:center;justify-content:center;color:#aebed4;text-align:center}.editor .preview{aspect-ratio:16/9}.preview:before{z-index:1;pointer-events:none}.preview .scene-host{z-index:2}.card .thumb{aspect-ratio:16/9;height:auto}.notice a{color:inherit}.linkbox{word-break:break-all;padding:12px;background:#101620;border:1px solid #344053;border-radius:7px;font-size:12px;user-select:all}.messagebox textarea:focus{border-color:#baf36b}.controls h3{margin-top:28px}.controls .row label{min-width:0}.help a{color:#c2f765}.output .scene-host{background:transparent}.palette{margin:15px 0}.mini{font-size:11px;color:#a4b3c8}.toolbar .count{margin-left:auto;color:#92a1b6;font-size:12px}.panel h2{font-size:19px}dialog{background:#151c28;color:white;border:1px solid #354052;border-radius:12px;padding:25px;max-width:400px}dialog::backdrop{background:#0009}@media(max-width:700px){.editor .panel{padding:15px}.toolbar{gap:8px}.controls{width:100%}.row button{padding:10px 6px}.scene .cleanbar{font-family:Arial,sans-serif}}
html.output-root{background:transparent!important}html.output-root body{background:transparent!important}
input[type=color]{height:44px;padding:4px;cursor:pointer}
/* Keep the scene mounted while visibility changes, so OBS can finish the exit. */
.scene{transition:opacity .48s cubic-bezier(.22,1,.36,1)}
.scene>.cleanbar,.scene>.lower,.scene>.score,.scene>.bug,.scene>.full{translate:0 0;transition:translate .65s cubic-bezier(.16,1,.3,1);will-change:translate}
.scene.off{transition:opacity .3s ease-in}
.scene.off>.cleanbar,.scene.off>.lower,.scene.off>.score,.scene.off>.bug,.scene.off>.full{translate:-90px 12px;transition:translate .35s cubic-bezier(.55,0,1,.45)}
/* Explicit Web Animations also work in OBS browser sources without CSS translate. */
.scene,.scene.off{transition:none}
.scene>.cleanbar,.scene>.lower,.scene>.score,.scene>.bug,.scene>.full,.scene.off>.cleanbar,.scene.off>.lower,.scene.off>.score,.scene.off>.bug,.scene.off>.full{translate:none;transition:none}
