:root{--green: #53fc18;--green-soft: #9cff70;--green-pale: #c7ffaf;--ink: #060906;--ink-2: #0b100c;--ink-3: #111710;--line: rgba(83, 252, 24, .22);--line-soft: rgba(156, 255, 112, .12);--text: #dfeeda;--text-dim: #8fa385;--orange: #ff9a32;--radius: 4px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--ink);color:var(--text);font:13px/1.5 JetBrains Mono,Consolas,monospace;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(80% 60% at 12% 0%,rgba(83,252,24,.07),transparent 60%),radial-gradient(60% 50% at 100% 100%,rgba(83,252,24,.045),transparent 60%)}a{color:var(--green-soft)}.shell{position:relative;z-index:1;max-width:1560px;margin:0 auto;padding:22px 24px 40px}@media(min-width:1181px){html,body{height:100%;overflow:hidden}#app{height:100%;min-height:0}.shell{height:100%;display:flex;flex-direction:column;padding-bottom:14px}.layout{flex:1;min-height:0}.preview-wrap,.controls{height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:6px}.foot{flex:none;margin-top:14px}}.preview-wrap::-webkit-scrollbar,.controls::-webkit-scrollbar{width:9px}.preview-wrap::-webkit-scrollbar-track,.controls::-webkit-scrollbar-track{background:#ffffff05}.preview-wrap::-webkit-scrollbar-thumb,.controls::-webkit-scrollbar-thumb{background:#53fc1838;border-radius:5px}.preview-wrap::-webkit-scrollbar-thumb:hover,.controls::-webkit-scrollbar-thumb:hover{background:#53fc1866}.preview-wrap,.controls{scrollbar-width:thin;scrollbar-color:rgba(83,252,24,.3) transparent}.top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:20px}.brand{display:flex;align-items:center;gap:12px}.brand h1{margin:0;font-size:19px;font-weight:800;letter-spacing:.14em;color:var(--green)}.brand .sub{color:var(--text-dim);font-size:11px;letter-spacing:.1em;padding-bottom:2px}.brand svg{display:block}.top .meta{font-size:11px;color:var(--text-dim);text-align:right;letter-spacing:.04em}.layout{display:grid;grid-template-columns:minmax(0,1fr) 430px;gap:22px;align-items:start}@media(max-width:1180px){.layout{grid-template-columns:minmax(0,1fr)}}.panel{background:linear-gradient(180deg,var(--ink-2),var(--ink));border:1px solid var(--line);border-radius:var(--radius)}.preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.preview-head h2{margin:0;font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--green-soft)}.stage{position:relative;overflow:hidden;background:linear-gradient(0deg,#0a0d0a,#050705),repeating-linear-gradient(0deg,rgba(255,255,255,.02) 0 1px,transparent 1px 3px);aspect-ratio:16 / 9}.stage.zoom-plaque{aspect-ratio:16 / 6}.stage-inner{position:absolute;top:0;left:0;width:1920px;height:1080px;transform-origin:top left}.stage-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(156,255,112,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(156,255,112,.045) 1px,transparent 1px);background-size:120px 120px}.cam{position:absolute;display:flex;align-items:flex-end;justify-content:flex-start;border:2px dashed rgba(120,170,255,.4);background:radial-gradient(120% 120% at 30% 20%,#24313f,#10161c 70%);color:#a0c8ff9e;font-size:22px;letter-spacing:.24em;padding:14px}.stage iframe{position:absolute;top:0;left:0;width:1920px;height:1080px;border:0;background:transparent;display:block}.preview-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--line)}.head-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.head-tools .seg{min-width:210px}.tabs{display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center}.tab{display:flex;align-items:center;gap:6px;background:#53fc180d;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-dim);font:700 10px/1 JetBrains Mono,monospace;letter-spacing:.08em;padding:6px 9px;cursor:pointer}.tab:hover{background:#53fc1824;color:var(--text)}.tab.on{border-color:var(--green);background:#53fc1838;color:#eaffdf}.tab .ic{display:flex}.tab .ic svg{display:block}.tab .slot{border:1px solid var(--line);border-radius:999px;padding:1px 5px;font-size:9px;color:var(--green-soft)}.tab.add,.tab.kill{font-size:13px;padding:5px 10px}.tab.kill{color:#ff8a8a;border-color:#ff8a8a4d}.tab.kill:hover{background:#ff8a8a24;color:#ffb3b3}.tab.wide-tab{padding:6px 11px}.tab.wide-tab .slot{border-color:var(--line-soft)}.tab-sep{width:1px;align-self:stretch;background:var(--line);margin:0 2px}.picker{position:absolute;box-sizing:border-box;border:calc(1px * var(--pk, 1)) dashed rgba(83,252,24,.5);cursor:move;touch-action:none}.picker:hover{border-color:#53fc18d9}.picker.dim{border-color:#9cff7038}.picker.dim:hover{border-color:#9cff7099}.picker.dim .picker-h{display:none}.picker.dim .picker-badge{opacity:0}.picker.dim:hover .picker-badge{opacity:.7}.picker.overview{border-color:#9cff7021}.picker.overview:hover{border-color:#9cff708c}.picker.active{border-style:solid;border-color:var(--green);background:#53fc180d}.picker-badge{position:absolute;left:0;bottom:100%;transform-origin:bottom left;transform:scale(var(--pk, 1));margin-bottom:3px;padding:3px 6px;background:#060906ee;border:1px solid var(--line);border-radius:3px;color:var(--green-pale);font:700 10px/1 JetBrains Mono,monospace;letter-spacing:.06em;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s}.picker:hover .picker-badge,.picker.active .picker-badge{opacity:1}.picker-h{position:absolute;width:calc(12px * var(--pk, 1));height:calc(12px * var(--pk, 1));background:#060906;border:calc(2px * var(--pk, 1)) solid var(--green);box-sizing:border-box}.picker-h:before{content:"";position:absolute;inset:calc(-6px * var(--pk, 1))}.picker-nw{left:calc(-7px * var(--pk, 1));top:calc(-7px * var(--pk, 1));cursor:nwse-resize}.picker-ne{right:calc(-7px * var(--pk, 1));top:calc(-7px * var(--pk, 1));cursor:nesw-resize}.picker-sw{left:calc(-7px * var(--pk, 1));bottom:calc(-7px * var(--pk, 1));cursor:nesw-resize}.picker-se{right:calc(-7px * var(--pk, 1));bottom:calc(-7px * var(--pk, 1));cursor:nwse-resize}.picker-n{left:50%;top:calc(-7px * var(--pk, 1));margin-left:calc(-6px * var(--pk, 1));cursor:ns-resize}.picker-s{left:50%;bottom:calc(-7px * var(--pk, 1));margin-left:calc(-6px * var(--pk, 1));cursor:ns-resize}.picker-w{top:50%;left:calc(-7px * var(--pk, 1));margin-top:calc(-6px * var(--pk, 1));cursor:ew-resize}.picker-e{top:50%;right:calc(-7px * var(--pk, 1));margin-top:calc(-6px * var(--pk, 1));cursor:ew-resize}.picker-guides{position:absolute;left:0;top:0;transform-origin:top left;transform:scale(var(--pk, 1));padding:4px 8px;color:var(--green);font:700 11px/1 JetBrains Mono,monospace;letter-spacing:.08em;pointer-events:none;opacity:0;transition:opacity .12s}.out{margin-top:18px;padding:14px}.out h2{margin:0 0 10px;font-size:11px;letter-spacing:.16em;color:var(--green-soft);font-weight:700}.url-row{display:flex;gap:8px}.url-actions{display:flex;flex-direction:column;gap:8px}.url{flex:1;min-width:0;background:#04060499;border:1px solid var(--line);border-radius:var(--radius);color:var(--green-pale);font:12px/1.45 JetBrains Mono,monospace;padding:9px 10px;resize:vertical;min-height:62px;word-break:break-all}.obs-help{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.obs-help div{border:1px solid var(--line-soft);border-radius:var(--radius);padding:8px 10px}.obs-help span{display:block;font-size:10px;letter-spacing:.12em;color:var(--text-dim);margin-bottom:3px}.obs-help b{color:var(--green-pale);font-weight:700}.controls{display:flex;flex-direction:column;gap:14px}.group{padding:0 0 4px}.group>h3{display:flex;align-items:center;gap:9px;margin:0;padding:11px 13px;font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--green);border-bottom:1px solid var(--line);cursor:pointer;user-select:none}.group>h3:hover{background:#53fc180d}.group>h3 .caret{margin-left:auto;flex:none;color:var(--text-dim);font-size:9px;transition:transform .15s}.group.open>h3 .caret{transform:rotate(90deg);color:var(--green)}.group>h3 .count{flex:none;min-width:16px;text-align:center;padding:1px 4px;border-radius:999px;background:var(--green);color:#04120a;font-size:9px;letter-spacing:0}.group>h3 .count.zero{display:none}.group:not(.open)>h3{border-bottom-color:transparent}.group:not(.open) .fields{display:none}.group>h3 .n{font-size:10px;color:var(--text-dim);letter-spacing:.06em}.fields{padding:11px 13px 4px}.field{margin-bottom:13px}.field:last-child{margin-bottom:6px}.field>label,.field>.flabel{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:11px;letter-spacing:.04em;color:var(--text);margin-bottom:6px}.field .val{color:var(--green-pale);font-weight:700}.hint{font-size:10px;line-height:1.45;color:var(--text-dim)}.field .hint{margin-top:5px}.panel>.pad{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:11px 13px 13px}.seg{display:flex;gap:6px}.seg button{flex:1;background:#53fc180f;border:1px solid var(--line);border-radius:var(--radius);color:var(--green-soft);font:700 11px/1 JetBrains Mono,monospace;letter-spacing:.08em;padding:8px 4px;cursor:pointer;transition:background .12s,color .12s}.seg button:hover{background:#53fc1829;color:var(--text)}.seg button.on{background:var(--green);border-color:var(--green);color:#04120a}input[type=text],input[type=number]{width:100%;background:#04060499;border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:12px/1 JetBrains Mono,monospace;padding:8px 9px}input[type=text]:focus,input[type=number]:focus,.url:focus{outline:none;border-color:var(--green)}input[type=range]{width:100%;accent-color:var(--green);margin:2px 0 0}.num-row{display:flex;gap:8px}.num-row>div{flex:1;min-width:0}.num-row label{display:block;font-size:10px;color:var(--text-dim);letter-spacing:.08em;margin-bottom:4px}.tgl{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;background:transparent;border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:11px/1 JetBrains Mono,monospace;letter-spacing:.06em;padding:9px 10px;cursor:pointer;text-align:left}.tgl:hover{border-color:var(--green-soft)}.tgl .dot{width:26px;height:12px;border-radius:7px;border:1px solid var(--line);position:relative;flex:none}.tgl .dot:after{content:"";position:absolute;top:1px;left:1px;width:8px;height:8px;border-radius:50%;background:var(--text-dim);transition:transform .14s,background .14s}.tgl.on{border-color:#53fc1880;color:var(--green-pale)}.tgl.on .dot{border-color:var(--green);background:#53fc182e}.tgl.on .dot:after{transform:translate(13px);background:var(--green)}.tgl-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.msg-list{display:flex;flex-direction:column;gap:7px}.msg{display:flex;gap:6px;align-items:center}.msg .idx{font-size:10px;color:var(--text-dim);width:14px;flex:none;text-align:right}.msg input{flex:1;min-width:0}.msg .mini{flex:none;width:24px;height:30px;background:transparent;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-dim);font:700 12px/1 JetBrains Mono,monospace;cursor:pointer}.msg .mini:hover{color:var(--green);border-color:var(--green-soft)}.msg .mini:disabled{opacity:.25;cursor:default}.msg.over input{border-color:var(--orange);color:#ffcf9a}.msg-warn{font-size:10px;color:var(--orange);margin-top:6px;line-height:1.45}.btn{background:#53fc1814;border:1px solid rgba(83,252,24,.45);border-radius:var(--radius);color:var(--green-soft);font:700 11px/1 JetBrains Mono,monospace;letter-spacing:.1em;padding:9px 13px;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.btn:hover{background:#53fc1838;color:#f1f4ef}.btn.primary{background:var(--green);border-color:var(--green);color:#04120a}.btn.primary:hover{background:var(--green-soft)}.btn.ghost{background:transparent;border-color:var(--line);color:var(--text-dim)}.btn.ghost:hover{color:var(--green-soft);border-color:var(--green-soft)}.btn.copied{background:var(--green-pale);border-color:var(--green-pale);color:#04120a}.chip{font-size:10px;letter-spacing:.1em;color:var(--text-dim);border:1px solid var(--line);border-radius:999px;padding:4px 9px}.chip b{color:var(--green-soft);font-weight:700}.color-row{display:flex;gap:8px;align-items:center}.swatch{flex:none;width:46px;height:32px;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:transparent;cursor:pointer}.swatch::-webkit-color-swatch-wrapper{padding:3px}.swatch::-webkit-color-swatch{border:0;border-radius:2px}.hex{flex:1;min-width:0;text-transform:lowercase}.mark-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.mark{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px 7px;background:#53fc180d;border:1px solid var(--line);border-radius:var(--radius);color:var(--green-soft);font:700 9px/1 JetBrains Mono,monospace;letter-spacing:.08em;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.mark svg{display:block}.mark:hover{background:#53fc1829;color:var(--text)}.mark.on{background:#53fc184d;border-color:var(--green);color:#eaffdf}.mark.preset{color:var(--brand, var(--green-soft));border-color:#ffffff17}.mark.preset:hover{background:#ffffff12;border-color:var(--brand, var(--green))}.foot{margin-top:26px;padding-top:14px;border-top:1px solid var(--line);font-size:10px;color:var(--text-dim);display:flex;gap:16px;flex-wrap:wrap;letter-spacing:.04em}h3.plain{display:flex;align-items:baseline;gap:9px;margin:0;padding:11px 13px;font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--green);border-bottom:1px solid var(--line)}h3.plain .n{font-size:10px;font-weight:400;letter-spacing:.06em;color:var(--text-dim)}.controls>.panel+.panel{margin-top:11px}.btn.back{width:100%;text-align:left;margin-bottom:11px}.plist{display:flex;flex-direction:column;gap:8px;padding:11px 13px 0}.prow{display:flex;align-items:flex-start;gap:10px;text-align:left;background:#53fc180a;border:1px solid var(--line-soft);border-radius:var(--radius);padding:10px 11px;color:var(--text);font-family:JetBrains Mono,monospace;cursor:pointer;transition:border-color .12s,background .12s}.prow:hover{border-color:var(--green-soft);background:#53fc1817}.prow .ic{flex:none;display:flex;padding-top:1px}.prow .ic svg{display:block}.prow .body{display:flex;flex-direction:column;gap:3px;min-width:0}.prow .t{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.12em;color:var(--green-pale)}.prow .t em{font-style:normal;font-size:9px;letter-spacing:.06em;color:var(--green-soft);border:1px solid var(--line);border-radius:999px;padding:1px 6px}.prow .t em.bad{color:var(--orange);border-color:#ff9a3266}.prow .m{font-size:11px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prow .s{font-size:10px;line-height:1.45;color:var(--text-dim)}.prow .go{margin-left:auto;align-self:center;flex:none;font-size:9px;letter-spacing:.1em;color:var(--text-dim)}.prow:hover .go{color:var(--green)}.set-add{display:flex;gap:7px;padding:11px 13px 0}.set-add input{flex:1;min-width:0}.set-add .btn{flex:none}.set-list{display:flex;flex-direction:column;gap:6px;padding:9px 13px 0}.set{display:flex;align-items:center;gap:8px;border:1px solid var(--line-soft);border-radius:var(--radius);padding:6px 8px}.set:hover{border-color:var(--line)}.set .name{flex:1;min-width:0;text-align:left;background:none;border:0;padding:0;color:var(--green-soft);font:700 11px/1.3 JetBrains Mono,monospace;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.set .name:hover{color:var(--green);text-decoration:underline}.set .when{flex:none;font-size:9px;color:var(--text-dim)}.set .mini{flex:none;width:22px;height:22px;background:transparent;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-dim);font:700 12px/1 JetBrains Mono,monospace;cursor:pointer}.set .mini:hover{color:#ffb3b3;border-color:#ff8a8a73}.set-list .hint{padding:0}.import-status{padding:8px 13px 0}.import-status:empty{display:none}.import-status.bad{color:var(--orange)}.field.advice{border:1px solid var(--line-soft);border-left:2px solid var(--green);border-radius:var(--radius);background:#53fc180d;padding:9px 11px}.field.advice.warn{border-left-color:var(--orange);background:#ff9a3212}.advice-text{font-size:10px;line-height:1.55;color:var(--green-pale)}.field.advice.warn .advice-text{color:#ffd9b0}.mini-fix{margin-top:8px;padding:6px 9px;font-size:10px;border-color:#ff9a3280;color:var(--orange)}.mini-fix:hover{color:#ffd9b0;border-color:var(--orange);background:#ff9a3224}
