:root{--ui-fs: 1.25;--ink: #23263a;--muted: #5d6378;--faint: #9aa1b8;--line: #e3e5f0;--line-strong: #d0d3e4;--card: #ffffff;--well: #f6f7fb;--accent: #6a5ae0;--accent-soft: #f2f0fd;--accent-2: #e8508d;--grad: linear-gradient(135deg, #6a5ae0, #e8508d);--grad-btn: linear-gradient(135deg, #6a5ae0, #d0397e);--page-max: 1280px;--page-pad: 24px;--ok: #2a9d4a;--danger: #d94848;font-family:system-ui,Segoe UI,Hiragino Sans,Yu Gothic UI,sans-serif;color:var(--ink);background:radial-gradient(900px 420px at 85% -10%,rgba(232,80,141,.07),transparent 60%),radial-gradient(900px 480px at 0% -10%,rgba(106,90,224,.09),transparent 60%),#f4f5fa;background-attachment:fixed}*{box-sizing:border-box}body{margin:0;line-height:1.5}button,input,select,textarea{line-height:inherit}.app{max-width:var(--page-max);margin:0 auto;padding:22px var(--page-pad) 40px}header{background:linear-gradient(135deg,#d9d2fb,#f5d8ec);border-bottom:1px solid #c9bff0}.header-inner{max-width:var(--page-max);margin:0 auto;padding:12px var(--page-pad);display:flex;align-items:center;gap:12px;flex-wrap:wrap}header h1{margin:0;font-size:calc(24px * var(--ui-fs));letter-spacing:.01em}header h1 .brand{height:32px;width:auto;display:block}.header-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.header-actions>.auth-error{flex-basis:100%;margin:0;text-align:right}.lang-switch,.account-login,.account-chip{border-radius:999px;line-height:1.5;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease}.lang-switch:hover,.account-chip:hover{transform:translateY(-1px)}.lang-switch:active,.account-login:active,.account-chip:active{transform:translateY(0)}@media (prefers-reduced-motion: reduce){.lang-switch,.account-login,.account-chip{transition:none}.lang-switch:hover,.account-login:hover,.account-chip:hover{transform:none}}.lang-switch-wrap{position:relative;display:inline-flex}.lang-switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;font:inherit;line-height:1.5;font-size:calc(12px * var(--ui-fs));font-weight:600;color:var(--accent);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236a5ae0' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center / 10px 6px,#ffffffb8;border:1px solid rgba(255,255,255,.9);padding:6px 30px 6px 14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 1px 2px #23263a0f;cursor:pointer}.lang-switch:hover{background-color:#fff;box-shadow:0 4px 10px #6a5ae029}.lang-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lang-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:100%;margin:0;padding:4px;list-style:none;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.9);border-radius:14px;box-shadow:0 10px 28px #342e6e29}.lang-menu:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lang-opt{display:flex;align-items:center;white-space:nowrap;padding:8px 14px;border-radius:999px;font-size:calc(12px * var(--ui-fs));line-height:1.5;font-weight:600;color:var(--muted);cursor:pointer}.lang-opt.on{background:var(--accent-soft)}.lang-opt[aria-selected=true]{color:var(--accent)}.layout{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}.stage{width:540px;height:720px;background:linear-gradient(165deg,#fff,#eceef7);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 10px 34px #342e6e1a;cursor:grab;touch-action:none;position:relative}.stage canvas{display:block;width:100%;height:100%}.stage-wrap{display:flex;flex-direction:column;gap:8px}.stage-zoom{display:flex;align-items:center;gap:10px;font-size:calc(12px * var(--ui-fs));color:var(--muted)}.stage-zoom label,.stage-zoom .link{white-space:nowrap;flex:none}.stage-zoom input[type=range]{flex:1;accent-color:var(--accent)}.stage-zoom .zoom-val{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600}.stage-toast,.panel-toggle,.sheet-handle{display:none}.panel{flex:1;min-width:260px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px 20px;box-shadow:0 6px 24px #342e6e0f;position:sticky;top:16px;max-height:calc(100vh - 32px);display:flex;flex-direction:column}.panel>*{flex:none}.panel>.panel-body{flex:1 1 auto;overflow-y:auto;min-height:0;margin-right:-10px;padding-right:10px}.panel-body{padding-top:12px}.panel-body>*:first-child{margin-top:0}@media (max-height: 820px) and (min-width: 1000px){.stage{height:clamp(400px,calc(100vh - 200px),720px);width:auto;aspect-ratio:3 / 4}.panel{max-height:calc(100vh - 140px)}}.panel-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin:10px 0 2px;padding:3px;background:var(--well);border:1px solid var(--line);border-radius:11px;flex:none}.ptab{padding:7px 4px;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;font-size:calc(12.5px * var(--ui-fs));font-weight:600;transition:background .15s,color .15s,box-shadow .15s}.ptab:hover{color:var(--ink)}.ptab.on{background:var(--grad-btn);color:#fff;box-shadow:0 2px 8px #6a5ae047}.panel h2{display:flex;align-items:baseline;gap:7px;margin:22px 0 10px;font-size:calc(13.5px * var(--ui-fs));font-weight:700;color:var(--ink)}.panel h2:before{content:"";align-self:center;flex:none;width:4px;height:14px;border-radius:2px;background:var(--grad)}.panel h2 small{color:var(--faint);font-weight:500;font-size:calc(11px * var(--ui-fs))}.row{display:flex;gap:8px;align-items:center;padding:5px 0;font-size:calc(13.5px * var(--ui-fs));color:var(--ink)}.row input[type=checkbox]{accent-color:var(--accent)}.hint{color:var(--faint);font-size:calc(12px * var(--ui-fs));line-height:1.6;margin-top:14px}code{background:var(--well);padding:1px 5px;border-radius:4px;font-size:calc(12px * var(--ui-fs))}.upload{display:block;margin-bottom:8px;font-size:calc(13px * var(--ui-fs))}.link{background:none;border:none;color:var(--accent);cursor:pointer;padding:0 0 6px;font-size:calc(13px * var(--ui-fs))}.link:disabled{color:var(--faint);cursor:default}.warn{margin:6px 0;padding:12px 0 0 18px;color:var(--danger);font-size:calc(11px * var(--ui-fs));line-height:1.5}h2{margin:14px 0 8px;font-size:calc(14px * var(--ui-fs))}.exports{display:flex;flex-direction:column;gap:4px;margin:6px 0}.exports a{font-size:calc(13px * var(--ui-fs));color:var(--accent)}.type-cards{display:grid;grid-template-columns:repeat(2,88px);gap:10px;margin-bottom:4px}.type-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 8px 5px;border:1.5px solid var(--line);border-radius:14px;background:var(--well);cursor:pointer;color:#b7bcd2;transition:border-color .15s,background .15s,color .15s,box-shadow .15s}.type-card svg{width:32px;height:32px}.type-card:hover:not(.soon):not(.on){border-color:var(--line-strong);background:#fff}.type-card.on{border-color:transparent;background:var(--grad-btn);box-shadow:0 4px 14px #6a5ae047;color:#fff}.type-card.soon{cursor:default}.type-card.soon svg{opacity:.35}.type-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:0 1.7em;color:var(--ink);font-size:calc(9.5px * var(--ui-fs));font-weight:700;letter-spacing:.01em;line-height:1.2;text-align:center}.cat-tabs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}.skin-tints{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.skin-tint{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 7px 4px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;font-size:calc(11px * var(--ui-fs));color:var(--muted);transition:border-color .15s,box-shadow .15s}.skin-tint:hover{border-color:var(--line-strong)}.skin-tint.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;color:var(--accent)}.skin-tint .swatch{width:26px;height:26px;border-radius:50%;border:1px solid rgba(0,0,0,.1);box-shadow:inset 0 1px 2px #00000014}.skin-tint.custom{position:relative}.skin-tint.custom input[type=color]{width:26px;height:26px;padding:0;border:1px solid rgba(0,0,0,.1);border-radius:50%;background:none;cursor:pointer}.skin-tint.custom input[type=color]::-webkit-color-swatch-wrapper{padding:0}.skin-tint.custom input[type=color]::-webkit-color-swatch{border:none;border-radius:50%}.skin-tint.custom input[type=color]::-moz-color-swatch{border:none;border-radius:50%}.skin-tint.custom .custom-badge{position:absolute;right:1px;bottom:0;width:13px;height:13px;line-height:12px;text-align:center;font-size:calc(10px * var(--ui-fs));font-weight:700;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:50%;pointer-events:none}.tab{padding:5px 11px;border:1px solid var(--line);border-radius:15px;background:var(--well);color:var(--muted);cursor:pointer;font-size:calc(12px * var(--ui-fs));transition:border-color .15s,background .15s,color .15s}.tab:hover{border-color:var(--line-strong);color:var(--ink)}.tab.on{background:var(--grad-btn);color:#fff;border-color:transparent}.tab.dot:after{content:"";display:inline-block;vertical-align:middle;width:6px;height:6px;margin-left:6px;border-radius:50%;background:var(--accent)}.tab.on.dot:after{background:#fff}.switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;flex:none;width:38px;height:22px;margin:0;border-radius:999px;background:var(--line-strong);cursor:pointer;transition:background .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #23263a4d;transition:transform .15s}.switch:checked{background:var(--grad-btn)}.switch:checked:after{transform:translate(16px)}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.switch,.switch:after{transition:none}}.variants{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.variant{display:flex;flex-direction:column;align-items:center;gap:4px;padding:5px;border:1px solid transparent;border-radius:11px;background:none;cursor:pointer;font-size:calc(12px * var(--ui-fs));transition:border-color .15s,box-shadow .15s}.variant.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.variant .thumb{width:100%;aspect-ratio:1 / 1;border-radius:8px;display:grid;place-items:center;overflow:hidden}.variant .thumb img{width:100%;height:100%;object-fit:contain;display:block}.variant .thumb.morph{position:relative}.variant .thumb.morph img{position:absolute;top:0;right:0;bottom:0;left:0}.variant .thumb.morph .f1{opacity:0}.variant.on .thumb.morph .f0{animation:morphA 1.8s step-end infinite}.variant.on .thumb.morph .f1{animation:morphB 1.8s step-end infinite}@keyframes morphA{0%{opacity:1}50%{opacity:0}to{opacity:1}}@keyframes morphB{0%{opacity:0}50%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.variant.on .thumb.morph .f0,.variant.on .thumb.morph .f1{animation:none}.variant.on .thumb.morph .f1{opacity:0}}.variant .thumb{position:relative}.variant .lock{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:8px;background:#ffffff80}.variant .tile-busy{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:8px;background:#ffffff8c;display:grid;place-items:center}.variant .tile-busy:after{content:"";width:20px;height:20px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:tileSpin .7s linear infinite}@keyframes tileSpin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.variant .tile-busy:after{animation:none}}.premium{margin:6px 0 2px}.premium-state{color:#a07800;font-weight:600;font-size:calc(12px * var(--ui-fs));flex:1}.premium-join{width:100%}.variant.locked .thumb img{opacity:.55}.variant .thumb-none{color:var(--faint);font-size:calc(11px * var(--ui-fs));place-self:stretch;display:grid;place-items:center;background:var(--card);border-radius:8px}.variant .thumb-none-mark{width:34%;max-width:46px;height:auto}.variant .thumb-name{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.variant.on .thumb-name{color:var(--accent)}.fav-view{display:flex;justify-content:center;margin-bottom:4px}.fav-slot{position:relative;width:min(100%,320px);aspect-ratio:320 / 620}.fav-slot .variant{width:100%;height:100%}.fav-slot .variant .thumb{flex:1 1 auto;min-height:0;aspect-ratio:auto;display:flex;align-items:center;justify-content:center}.fav-slot .variant .thumb img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.fav-slot .thumb-name{flex:none;font-size:calc(11.5px * var(--ui-fs))}.fav-del{position:absolute;top:-7px;right:-7px;z-index:1;width:22px;height:22px;padding:0;line-height:20px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);cursor:pointer;font-size:calc(11px * var(--ui-fs));box-shadow:0 1px 4px #0000001f;transition:color .15s,border-color .15s}.fav-del:hover{color:#c23a3a;border-color:#c23a3a}.fav-slot.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 4px;border:1.5px dashed var(--line-strong);border-radius:11px;background:var(--well);color:var(--muted);cursor:pointer;font-size:calc(11.5px * var(--ui-fs));font-weight:600;line-height:1.4;transition:border-color .15s,color .15s,background .15s}.fav-slot.empty:hover{border-color:var(--accent);color:var(--accent);background:#fff}.fav-plus{font-size:calc(20px * var(--ui-fs));font-weight:700;line-height:1}.fav-lock-wrap{position:relative}.fav-lock-inner[inert]{visibility:hidden}.fav-login-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.fav-login-hint{margin:0;color:var(--muted);font-size:calc(11.5px * var(--ui-fs))}.bg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.bg-tile{position:relative;padding:0;aspect-ratio:16 / 9;border:2px solid transparent;border-radius:11px;overflow:hidden;background:var(--well);cursor:pointer;transition:border-color .15s,box-shadow .15s}.bg-tile:hover{border-color:var(--line-strong)}.bg-tile.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.bg-tile img{display:block;width:100%;height:100%;object-fit:cover}.bg-none{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(165deg,#fff,#eceef7);color:var(--muted);font-size:calc(12px * var(--ui-fs));font-weight:600}.cam-toggle{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;margin-bottom:8px;border-radius:999px;border:1px solid rgba(255,255,255,.9);background:#ffffffb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 14px #342e6e1a;color:var(--accent);cursor:pointer;font-size:calc(13px * var(--ui-fs));font-weight:700;transition:background-color .12s ease,box-shadow .12s ease}.cam-toggle:hover{background-color:#fff;box-shadow:0 6px 18px #6a5ae029}.cam-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cam-toggle.on{background:linear-gradient(135deg,#d94848,#c23a68);border-color:transparent;color:#fff;box-shadow:0 4px 14px #d9484847}.cam-toggle.on:hover{box-shadow:0 6px 18px #d948485c}.obs-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.9);background:#ffffffb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 14px #342e6e1a;color:var(--accent);cursor:pointer;font-size:calc(13px * var(--ui-fs));font-weight:700;transition:background-color .12s ease,box-shadow .12s ease}.obs-toggle:hover{background-color:#fff;box-shadow:0 6px 18px #6a5ae029}.obs-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stage-controls{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:8px}html.obs-mode .stage-controls{display:none}.primary{display:block;width:100%;margin-bottom:8px;padding:10px 12px;border:none;border-radius:10px;cursor:pointer;font-size:calc(14px * var(--ui-fs));font-weight:700;background:var(--grad-btn);color:#fff;box-shadow:0 4px 14px #6a5ae047}.primary.on{background:linear-gradient(135deg,#d94848,#c23a68);box-shadow:0 4px 14px #d9484847}.primary:hover:not(:disabled){filter:brightness(1.06)}.primary:disabled{opacity:.45;box-shadow:none;cursor:default}.primary.ghost{background:#ffffffb8;border:1px solid rgba(255,255,255,.9);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--accent);box-shadow:0 1px 2px #23263a0f}.primary.ghost:hover:not(:disabled){background-color:#fff;box-shadow:0 4px 10px #6a5ae029;filter:none}html.obs-mode,html.obs-mode body{background:transparent;height:100%}html.obs-mode body{overflow:hidden}html.obs-mode #root{height:100%}html.obs-mode header,html.obs-mode .panel{display:none}html.obs-mode .stage-zoom{display:none}html.obs-mode .app{max-width:none;margin:0;padding:0;position:relative;height:100%}html.obs-mode .stage{position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;aspect-ratio:auto;background:transparent;border:none;border-radius:0;box-shadow:none;cursor:default}.obs-exit{position:fixed;top:8px;right:8px;z-index:10;padding:6px 10px;border:none;border-radius:6px;cursor:pointer;font-size:calc(12px * var(--ui-fs));background:#1414288c;color:#fff;opacity:0;pointer-events:none;transition:opacity .15s ease}.obs-exit.on{opacity:1;pointer-events:auto}html.overlay-mode .stage-toast{display:none}html.overlay-interactive body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;pointer-events:none;border:2px dashed rgba(106,90,224,.55);border-radius:6px}html.overlay-interactive .stage{cursor:move}.calib-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:calc(13px * var(--ui-fs))}.mini{padding:3px 10px;border:1px solid #cfc9f2;border-radius:7px;cursor:pointer;background:var(--card);font-size:calc(12px * var(--ui-fs));font-weight:600;min-width:64px;color:var(--accent)}.mini:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.mini:disabled{color:var(--faint);cursor:default}.bar{flex:1;height:9px;background:#eceef6;border-radius:5px;overflow:hidden}.calib-box{border:1px solid var(--line);border-radius:11px;padding:8px 10px;margin:18px 0 6px;background:#fbfbfe}.calib-box>summary{cursor:pointer;font-size:calc(14px * var(--ui-fs));font-weight:700;color:var(--ink)}.calib-box[open]>summary{margin-bottom:4px}.calib{display:flex;flex-wrap:wrap;gap:5px;margin:4px 0 6px}.calib-btn{display:flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;font-size:calc(12px * var(--ui-fs));color:var(--ink)}.calib-btn:hover:not(:disabled){border-color:var(--line-strong)}.calib-btn .state{color:var(--faint);font-size:calc(11px * var(--ui-fs))}.calib-btn.done{border-color:var(--ok);background:#f1faf3}.calib-btn.done .state{color:var(--ok)}.calib-btn.rec{border-color:var(--danger);background:#fdf1f1}.calib-btn.rec .state{color:var(--danger)}.calib-btn:disabled{opacity:.55;cursor:default}.calib-item{display:flex;align-items:stretch}.calib-item .calib-btn:not(:only-child){border-radius:9px 0 0 9px}.calib-del{padding:0 8px;border:1px solid var(--line);border-left:0;border-radius:0 9px 9px 0;background:#fff;cursor:pointer;color:var(--faint);font-size:calc(13px * var(--ui-fs));line-height:1}.calib-item .calib-btn.done+.calib-del{border-color:var(--ok)}.calib-del:hover:not(:disabled),.calib-item .calib-btn.done+.calib-del:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}.calib-del:disabled{opacity:.55;cursor:default}.calib-btn.calib-start{border-color:var(--accent);color:var(--accent);font-weight:700;padding:6px 14px}.calib-btn.calib-start.rec{border-color:var(--danger);color:var(--danger)}.exprState{margin-left:auto;margin-right:8px;font-size:calc(11px * var(--ui-fs));color:var(--faint)}.exprState.on{color:var(--ok);font-weight:600}.expr-tab{min-height:100%}.expr-help-row{display:flex;justify-content:flex-end}.help-btn{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 13px 0 9px;border:1px solid var(--line-strong);border-radius:999px;background:#fff;cursor:pointer;color:var(--accent);font-family:inherit;font-size:calc(12px * var(--ui-fs));font-weight:600}.help-btn svg{width:17px;height:17px;flex:none}.help-btn:hover{border-color:var(--accent);background:#fafbff}.help-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trig{border:1px solid var(--line);border-radius:11px;padding:8px 10px;margin:6px 0;background:#fbfbfe}.trig.off{opacity:.5}.trig.pick{cursor:pointer}.trig.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:#fff}.trig-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.trig-head .bar{flex:1 1 auto;min-width:60px;margin:0}.trig .fx-strip{display:flex;gap:6px;margin-top:6px;overflow-x:auto;scrollbar-width:none}.trig .fx-strip::-webkit-scrollbar{display:none}.trig .fx-strip .variant{flex:0 0 auto;width:60px;padding:4px;border-color:var(--line);background:#fff}.row.tight{padding:2px 0;gap:6px}.row.small{font-size:calc(12px * var(--ui-fs));gap:6px;padding:4px 0;color:var(--muted)}.row.small input[type=range]{flex:1;accent-color:var(--accent)}.row.small select{flex:1;padding:2px 4px;font-size:calc(12px * var(--ui-fs))}.mono{font-variant-numeric:tabular-nums;color:var(--faint);width:30px;text-align:right}.trig .bar{position:relative;height:10px;background:#eceef6;border-radius:5px;overflow:visible;margin:6px 0}.trig .bar .fill{position:absolute;left:0;top:0;height:100%;border-radius:5px;background:var(--grad);transition:width .06s linear}.trig .bar .fill.on{background:linear-gradient(90deg,#f0a35b,#f05b5b)}.trig .bar i{position:absolute;top:-2px;width:2px;height:14px;background:var(--danger);transform:translate(-1px)}.account-row{display:flex;align-items:center}.account-loading{color:var(--faint);font-size:calc(13px * var(--ui-fs))}.account-login{padding:6px 15px;border:1px solid rgba(255,255,255,.9);background:#ffffffb8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--accent);cursor:pointer;font-size:calc(12px * var(--ui-fs));font-weight:700;letter-spacing:.01em;box-shadow:0 1px 2px #23263a0f}.account-login:hover{background-color:#fff;box-shadow:0 4px 10px #6a5ae029;transform:translateY(-1px)}.account-login:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.account-chip{display:flex;align-items:center;gap:7px;max-width:100%;padding:5px 14px;border:1px solid rgba(255,255,255,.9);background:#ffffffb8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 1px 2px #23263a0f;cursor:pointer;font-size:calc(12px * var(--ui-fs));font-weight:600;color:var(--ink)}.account-chip:hover{background-color:#fff;box-shadow:0 4px 10px #6a5ae029}.account-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.account-chip .account-name{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#18182c73;display:grid;place-items:center}.modal{width:min(360px,calc(100vw - 32px));max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);overflow-y:auto;background:linear-gradient(150deg,#d9d2fb8c,#f5d8ec80),#fff;border:1px solid #c9bff0;border-radius:16px;padding:18px 20px 20px;box-shadow:0 14px 44px #1e1e4647}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h3{margin:0;font-size:calc(16px * var(--ui-fs))}.modal-x{background:none;border:none;font-size:calc(20px * var(--ui-fs));line-height:1;cursor:pointer;color:var(--faint);padding:2px 4px}.modal-x:hover{color:var(--ink)}.modal-lead{margin:8px 0 12px;font-size:calc(12px * var(--ui-fs));color:var(--muted);line-height:1.6}.modal-wide{width:min(560px,calc(100vw - 32px))}.help-modal .modal-head{justify-content:flex-end}.help-modal h4{margin:18px 0 6px;font-size:calc(14px * var(--ui-fs));color:var(--ink)}.help-modal h4:first-of-type{margin-top:12px}.help-modal p{margin:6px 0;font-size:calc(13px * var(--ui-fs));color:var(--muted);line-height:1.7}.help-pages{display:grid}.help-pages>.help-page{grid-area:1 / 1}.help-page.off{visibility:hidden}.help-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-top:14px}.help-nav-btn:not(.next){grid-column:1}.help-dots{grid-column:2}.help-nav-btn.next{grid-column:3}.help-nav-btn{justify-self:start;padding:7px 16px;border-radius:999px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font-family:inherit;font-size:calc(13px * var(--ui-fs));font-weight:600;cursor:pointer}.help-nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.help-nav-btn:disabled{opacity:.4;cursor:default}.help-nav-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.help-nav-btn.next{justify-self:end;border-color:transparent;background:var(--grad-btn);color:#fff;box-shadow:0 4px 14px #6a5ae047}.help-nav-btn.next:hover:not(:disabled){filter:brightness(1.06);color:#fff}.help-dots{display:flex;justify-content:center;gap:4px}.help-dot{width:24px;height:24px;padding:0;border:0;background:none;display:grid;place-items:center;cursor:pointer}.help-dot:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--line-strong);transition:background .15s,transform .15s}.help-dot.on:before{background:var(--accent);transform:scale(1.25)}.help-dot:hover:before{background:var(--muted)}.help-dot.on:hover:before{background:var(--accent)}.help-dot:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:50%}@media (prefers-reduced-motion: reduce){.help-dot:before{transition:none}}.help-rules{margin:8px 0;padding:0;list-style:none}.help-rules li{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:calc(13px * var(--ui-fs));color:var(--muted);line-height:1.7}.help-rules b{color:var(--ink)}.help-sample{flex:0 0 auto;width:80px;height:80px;border-radius:10px;border:1px solid var(--line-strong);background:#fff;object-fit:cover}.help-sample.is-placeholder{border-style:dashed;display:grid;place-items:center;color:var(--faint)}.help-sample .ph-mark{width:46%;height:auto}.help-demo{display:block;width:100%;aspect-ratio:16 / 10;margin:10px 0;border:1px solid var(--line-strong);border-radius:10px;background:#fff;object-fit:contain}.help-demo.is-placeholder{border-style:dashed;display:grid;place-items:center;color:var(--faint)}.help-demo .ph-mark{width:14%;min-width:36px;max-width:64px;height:auto}.auth-google{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:9px 12px;margin-bottom:4px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;cursor:pointer;font-size:calc(14px * var(--ui-fs));font-weight:600;color:var(--ink)}.auth-google:hover:not(:disabled){border-color:var(--accent);background:#fafbff}.auth-google:disabled{opacity:.6;cursor:default}.field{display:flex;flex-direction:column;gap:4px;margin:8px 0;font-size:calc(12px * var(--ui-fs));color:var(--muted)}.field small{color:var(--faint)}.field input{padding:8px 10px;border:1px solid var(--line-strong);border-radius:8px;font-size:calc(14px * var(--ui-fs));font-family:inherit}.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.field-row{display:flex;gap:6px;align-items:center}.field-row input{flex:1;min-width:0}.auth-error{color:var(--danger);font-size:calc(12px * var(--ui-fs));margin:8px 0;line-height:1.5;white-space:pre-line}.auth-notice{color:var(--ok);font-size:calc(12px * var(--ui-fs));margin:8px 0;line-height:1.6}.auth-links{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-top:10px}.auth-consent{display:flex;align-items:flex-start;gap:8px;cursor:pointer;margin:2px 0 12px;font-size:calc(12px * var(--ui-fs));color:var(--muted);line-height:1.5}.auth-consent input{accent-color:var(--accent);margin:1px 0 0;flex:none}.auth-consent a{color:var(--accent)}.legal-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:14px;padding-top:10px;border-top:1px solid var(--line);font-size:calc(11px * var(--ui-fs))}.legal-links a{color:var(--muted);text-decoration:none}.legal-links a:hover{color:var(--accent);text-decoration:underline}.legal-links .app-version{margin-left:auto;color:var(--muted)}.danger-zone{margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}.delete-survey{margin:8px 0;font-size:calc(12px * var(--ui-fs));color:var(--muted)}.delete-survey .survey-lead{margin:0 0 4px}.delete-survey .choice{display:flex;align-items:center;gap:8px;padding:3px 0;cursor:pointer}.delete-survey .choice input{accent-color:var(--accent);flex:none;margin:0}.delete-survey textarea{width:100%;margin-top:6px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:8px;font-size:calc(12px * var(--ui-fs));font-family:inherit;resize:vertical}.delete-survey textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.link.danger{color:var(--danger)}.mini.danger{border-color:var(--danger);background:var(--danger);color:#fff}.mini.danger:hover:not(:disabled){border-color:#c73d3d;background:#c73d3d}.mini.danger:disabled{opacity:.5;color:#fff}.vowels{display:flex;gap:4px;flex-wrap:wrap}.vowel{min-width:30px;height:30px;padding:0 6px;white-space:nowrap;border:1px solid var(--line-strong);border-radius:8px;background:#fff;cursor:pointer;font-size:calc(15px * var(--ui-fs));line-height:1;color:var(--ink)}.vowel:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.vowel:disabled{opacity:.5;cursor:default}.vowel.on{background:var(--grad-btn);color:#fff;border-color:transparent}.vowel.off{width:auto;padding:0 8px;font-size:calc(12px * var(--ui-fs));color:var(--muted)}.vowel.txt{padding:0 8px;font-size:calc(12px * var(--ui-fs))}.file-vol{display:flex;align-items:center;gap:4px}.file-vol input{width:80px}.file-vol small{color:var(--muted);font-variant-numeric:tabular-nums;min-width:34px}.mono-hint{font-variant-numeric:tabular-nums;font-size:calc(11px * var(--ui-fs));color:var(--faint);margin:4px 0 0}.calib-row{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.calib-row button{flex:1 1 auto;min-width:56px;padding:5px 4px;font-size:calc(12px * var(--ui-fs))}.calib-row button.done{border-color:var(--accent);color:var(--accent)}.vowel-meter{display:grid;grid-template-columns:16px 1fr 34px;gap:2px 6px;align-items:center;margin-top:4px}.vowel-meter-row{display:contents}.vowel-meter-name{font-size:calc(11px * var(--ui-fs));color:var(--muted);line-height:1}.vowel-meter-track{height:8px;border-radius:4px;background:var(--accent-soft);overflow:hidden}.vowel-meter-fill{height:100%;border-radius:4px;background:var(--accent);opacity:.45;transition:width .15s linear}.vowel-meter-row.on .vowel-meter-fill{opacity:1}.vowel-meter-row.on .vowel-meter-name{color:var(--ink);font-weight:600}.vowel-meter-val{font-size:calc(11px * var(--ui-fs));text-align:right;color:var(--faint);font-variant-numeric:tabular-nums}.tune-grid{display:grid;grid-template-columns:88px 1fr 48px;gap:3px 8px;align-items:center}.tune-grid .tune-head{grid-column:1 / -1;margin-top:10px;padding-bottom:2px;border-bottom:1px solid var(--line-strong);font-size:calc(12.5px * var(--ui-fs));font-weight:600;color:var(--ink)}.tune-grid .tune-head small{color:var(--faint);font-weight:500;font-size:calc(10.5px * var(--ui-fs))}.tune-grid .tune-name{font-size:calc(12px * var(--ui-fs));color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tune-grid input[type=range]{width:100%;margin:0;accent-color:var(--accent)}.tune-grid .tune-val{font-size:calc(12px * var(--ui-fs));text-align:right;color:var(--accent);font-variant-numeric:tabular-nums}html:not(.ui-desktop):not(.obs-mode),html:not(.ui-desktop):not(.obs-mode) body{height:100%;overflow:hidden}html:not(.ui-desktop):not(.obs-mode) #root{height:100dvh;display:flex;flex-direction:column}html:not(.ui-desktop):not(.obs-mode) header{flex:none}html:not(.ui-desktop):not(.obs-mode) .header-inner{max-width:none}html:not(.ui-desktop):not(.obs-mode) .app{flex:1 1 auto;min-height:0;max-width:none;margin:0;padding:0;position:relative;overflow:hidden;background:linear-gradient(165deg,#fff,#eceef7);--panel-w: clamp(360px, calc(100vw - 620px) , 840px);--panel-grip: 28px;--ui-inset-x: var(--panel-w);--ui-inset-y: 0px}html:not(.ui-desktop):not(.obs-mode) .app.wide{--ui-inset-x: 0px}html:not(.ui-desktop):not(.obs-mode) .stage{position:absolute;top:0;left:0;right:var(--ui-inset-x, 0px);bottom:var(--ui-inset-y, 0px);width:auto;height:auto;aspect-ratio:auto;border:0;border-radius:0;box-shadow:none;background:none;transition:right .22s ease}html:not(.ui-desktop):not(.obs-mode) .stage-toast{display:block;position:absolute;top:12px;left:calc((100% - var(--ui-inset-x)) / 2);transform:translate(-50%);z-index:4;margin:0;max-width:min(560px,calc(100% - var(--ui-inset-x) - 32px));padding:8px 16px;border-radius:999px;background:#ffffffdb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.9);box-shadow:0 6px 20px #342e6e24;font-size:calc(12.5px * var(--ui-fs));color:var(--ink);text-align:center}.stage-toast .toast-progress{display:block;margin-top:6px;height:4px;border-radius:999px;background:#6a5ae02e;overflow:hidden}.stage-toast .toast-progress-fill{display:block;height:100%;width:0;border-radius:inherit;background:var(--accent);animation:toast-progress-fill linear forwards}@keyframes toast-progress-fill{0%{width:0}to{width:100%}}html:not(.ui-desktop):not(.obs-mode) .stage-controls{position:absolute;left:16px;top:16px;z-index:3;margin:0}html:not(.ui-desktop):not(.obs-mode) .cam-toggle{margin:0}html:not(.ui-desktop):not(.obs-mode) .stage-zoom{position:absolute;left:16px;bottom:16px;z-index:2;width:min(420px,calc(100% - 32px));padding:6px 14px;border-radius:999px;background:#ffffffb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.9);box-shadow:0 4px 14px #342e6e1a}html:not(.ui-desktop):not(.obs-mode) .panel{position:absolute;top:0;right:0;bottom:0;width:var(--panel-w);z-index:3;max-height:none;padding:16px 20px 14px;background:linear-gradient(150deg,#d9d2fb8c,#f5d8ec80),#ffffffdb;-webkit-backdrop-filter:blur(16px) saturate(1.05);backdrop-filter:blur(16px) saturate(1.05);border:0;border-left:1px solid rgba(255,255,255,.9);border-radius:0;box-shadow:-12px 0 40px #342e6e29;transition:transform .24s ease}html:not(.ui-desktop):not(.obs-mode) .panel.closed{transform:translate(100%)}html:not(.ui-desktop):not(.obs-mode) .panel-toggle{display:grid;position:absolute;top:0;left:calc(var(--panel-grip) * -1);width:var(--panel-grip);height:56px;place-items:center;border:0;border-radius:0 0 0 12px;background:linear-gradient(#d9d2fb8c,#d9d2fb8c),#fff;box-shadow:-10px 0 14px -6px #342e6e1f;color:var(--accent);cursor:pointer;font-size:calc(18px * var(--ui-fs));font-weight:700;line-height:1}html:not(.ui-desktop):not(.obs-mode) .panel-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}html:not(.ui-desktop):not(.obs-mode) .sheet-handle{display:none}@media (max-width: 860px){html:not(.ui-desktop):not(.obs-mode) .app{--ui-inset-x: 0px;--ui-inset-y: 32dvh}html:not(.ui-desktop):not(.obs-mode) .header-inner{padding:10px 12px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));gap:8px}html:not(.ui-desktop):not(.obs-mode){--ui-fs: 1}html:not(.ui-desktop):not(.obs-mode) .header-actions{gap:8px}html:not(.ui-desktop):not(.obs-mode) .account-login{padding:6px 14px}html:not(.ui-desktop):not(.obs-mode) .lang-switch{padding:6px 26px 6px 12px;background-position:right 10px center}html:not(.ui-desktop):not(.obs-mode) header h1 .brand{height:24px}html:not(.ui-desktop):not(.obs-mode) .stage-zoom{display:none}html:not(.ui-desktop):not(.obs-mode) .panel-toggle{display:none}html:not(.ui-desktop):not(.obs-mode) .panel{position:fixed;top:auto;right:0;bottom:0;left:0;width:auto;height:var(--sheet-drag, var(--sheet-h, 60dvh));max-height:none;padding:0 12px calc(10px + env(safe-area-inset-bottom));padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));border-radius:22px 22px 0 0;border-bottom:0;box-shadow:0 -10px 34px #342e6e29;transition:height .18s ease}html:not(.ui-desktop):not(.obs-mode) .panel[data-snap="0"]{--sheet-h: 32dvh}html:not(.ui-desktop):not(.obs-mode) .panel[data-snap="1"]{--sheet-h: 60dvh}html:not(.ui-desktop):not(.obs-mode) .panel[data-snap="2"]{--sheet-h: 88dvh}html:not(.ui-desktop):not(.obs-mode) .sheet-handle{display:block;order:-1;flex:none;width:100%;height:44px;margin:0;padding:0;border:0;background:none;cursor:grab;touch-action:none}html:not(.ui-desktop):not(.obs-mode) .sheet-handle:before{content:"";display:block;width:40px;height:4px;margin:20px auto;border-radius:999px;background:var(--line-strong)}html:not(.ui-desktop):not(.obs-mode) .sheet-handle:active{cursor:grabbing}html:not(.ui-desktop):not(.obs-mode) .obs-toggle{display:none}html:not(.ui-desktop):not(.obs-mode) .panel>.primary{order:3}html:not(.ui-desktop):not(.obs-mode) .panel>.panel-tabs{order:1}html:not(.ui-desktop):not(.obs-mode) .panel>.panel-body{order:2}html:not(.ui-desktop):not(.obs-mode) .panel>.legal-links{order:4}html:not(.ui-desktop):not(.obs-mode) .panel>.primary{margin-top:14px;min-height:44px;background:#fff;color:var(--accent);border:1px solid var(--line-strong);box-shadow:none;font-size:calc(13.5px * var(--ui-fs))}html:not(.ui-desktop):not(.obs-mode) .panel>.primary.on{background:var(--danger);color:#fff;border-color:var(--danger)}html:not(.ui-desktop):not(.obs-mode) .panel-tabs{margin:0 0 2px}html:not(.ui-desktop):not(.obs-mode) .ptab{min-height:44px;padding:6px 2px;font-size:calc(12px * var(--ui-fs));white-space:nowrap}html:not(.ui-desktop):not(.obs-mode) .panel h2{margin:6px 0 8px}html:not(.ui-desktop):not(.obs-mode) .variants{grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:6px}html:not(.ui-desktop):not(.obs-mode) .variant{padding:3px;gap:2px}html:not(.ui-desktop):not(.obs-mode) .variant .thumb-none{font-size:calc(10px * var(--ui-fs))}html:not(.ui-desktop):not(.obs-mode) .cat-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-bottom:6px;padding-right:22px;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);touch-action:pan-x}html:not(.ui-desktop):not(.obs-mode) .cat-tabs::-webkit-scrollbar{display:none}html:not(.ui-desktop):not(.obs-mode) .cat-tabs .tab{flex:none}html:not(.ui-desktop):not(.obs-mode) .tab{min-width:44px;min-height:44px;padding:5px 14px;font-size:calc(13px * var(--ui-fs));display:inline-flex;align-items:center;justify-content:center}html:not(.ui-desktop):not(.obs-mode) .lang-switch,html:not(.ui-desktop):not(.obs-mode) .account-login,html:not(.ui-desktop):not(.obs-mode) .account-chip{min-height:33px;position:relative}html:not(.ui-desktop):not(.obs-mode) .lang-switch:before,html:not(.ui-desktop):not(.obs-mode) .account-login:before,html:not(.ui-desktop):not(.obs-mode) .account-chip:before{content:"";position:absolute;top:-6px;right:0;bottom:-6px;left:0}html:not(.ui-desktop):not(.obs-mode) .skin-tint{min-width:44px;min-height:44px;justify-content:center}html:not(.ui-desktop):not(.obs-mode) .link{min-height:44px;min-width:44px;padding:0 6px}html:not(.ui-desktop):not(.obs-mode) .row{min-height:44px}html:not(.ui-desktop):not(.obs-mode) .row input[type=checkbox]:not(.switch){width:22px;height:22px;flex:none}html:not(.ui-desktop):not(.obs-mode) .cam-toggle{min-height:44px}html:not(.ui-desktop):not(.obs-mode) .stage-zoom input[type=range]{height:44px}html:not(.ui-desktop):not(.obs-mode) .stage-zoom{gap:8px}html:not(.ui-desktop):not(.obs-mode) .fav-slot{flex:none;width:auto;height:min(245px,38dvh);aspect-ratio:3 / 4}html:not(.ui-desktop):not(.obs-mode) .fav-view{margin-top:20px}html:not(.ui-desktop):not(.obs-mode) .fav-del{width:32px;height:32px;line-height:30px;font-size:calc(14px * var(--ui-fs))}html:not(.ui-desktop):not(.obs-mode) .fav-del:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}html:not(.ui-desktop):not(.obs-mode) .legal-links{gap:0 18px;font-size:calc(12px * var(--ui-fs))}html:not(.ui-desktop):not(.obs-mode) .legal-links a,html:not(.ui-desktop):not(.obs-mode) .legal-links .app-version{display:inline-flex;align-items:center;min-height:44px}html:not(.ui-desktop):not(.obs-mode){background-attachment:scroll}html:not(.ui-desktop):not(.obs-mode) .obs-exit{top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right))}}@media (pointer: coarse){.field input,.delete-survey textarea,.row.small select{font-size:calc(16px * var(--ui-fs))}.lang-opt{min-height:44px}}
