:root{--bg: #1a1c20;--bg-panel: #23262c;--bg-elev: #2b2f36;--border: #3a3f47;--text: #e6e8ea;--text-dim: #9aa0a8;--accent: #4ea1ff;--accent-green: #2d5a2d;--danger: #c0504d;font-family:system-ui,-apple-system,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text)}#root{display:flex;flex-direction:column;overflow:hidden}button{font:inherit;color:var(--text);background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent-green);border-color:#3c7a3c;font-weight:600}select,input[type=number]{font:inherit;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:5px 8px;width:100%}.toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex:0 0 auto}.toolbar .brand{font-weight:700;font-size:16px;letter-spacing:.3px}.toolbar .brand small{color:var(--text-dim);font-weight:400;margin-left:8px}.toolbar .spacer{flex:1}.toolbar .file-info{color:var(--text-dim);font-size:13px}.workspace{flex:1 1 auto;display:grid;grid-template-columns:minmax(0,4fr) minmax(300px,1fr) minmax(0,3fr);min-height:0}@media(min-width:1280px){.workspace{grid-template-columns:minmax(0,4fr) minmax(300px,520px) minmax(0,3fr)}}.pane{min-width:0;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--border)}.pane:last-child{border-right:none}.pane-title{padding:8px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);border-bottom:1px solid var(--border);flex:0 0 auto}.pane-title-row{display:flex;align-items:center;gap:12px;min-height:48px;padding-top:6px;padding-bottom:6px}.shell{flex:1 1 auto;display:flex;min-height:0;min-width:0}.shell-left{flex:0 0 auto;min-width:320px;max-width:calc(100% - 360px);display:flex;flex-direction:column;min-height:0;min-width:0}.shell-left>.pane,.shell-left>.stage-stack,.shell-left>.main-stage{flex:1 1 auto;min-height:0;border-right:none}.shell-divider{flex:0 0 5px;cursor:ew-resize;background:var(--border);position:relative;touch-action:none}.shell-divider:after{content:"";position:absolute;top:0;right:-4px;bottom:0;left:-4px}.shell-divider:hover,.shell-divider.dragging{background:var(--accent)}.shell-right{flex:1 1 0;min-width:0;display:flex;flex-direction:column;min-height:0}.shell-right-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;container-type:inline-size}.main-stage{display:flex;min-height:0;min-width:0}.main-stage-preview{flex:1 1 0;min-height:0;min-width:0;display:flex}.main-stage-preview>.pane{flex:1;min-height:0;min-width:0;border-right:none}.main-stage-layers{min-height:0;min-width:0;display:flex;container-type:inline-size}.main-stage-layers>.pane{flex:1;min-height:0;min-width:0;border-right:none}.main-divider{flex:0 0 5px;position:relative;background:var(--border);touch-action:none}.main-divider.h{cursor:ns-resize}.main-divider.v{cursor:ew-resize}.main-divider:after{content:"";position:absolute}.main-divider.h:after{top:-4px;right:0;bottom:-4px;left:0}.main-divider.v:after{top:0;right:-4px;bottom:0;left:-4px}.main-divider:hover,.main-divider.dragging{background:var(--accent)}.params-wrap{flex:1 1 auto;min-height:0;overflow-y:auto;container-type:inline-size}.params-grid{display:grid;grid-template-columns:1fr;gap:12px;padding:12px;align-content:start}@container (min-width: 760px){.params-grid{grid-template-columns:1fr 1fr}}@container (min-width: 1180px){.params-grid{grid-template-columns:1fr 1fr 1fr}}.params-grid .group{margin:0}.params-grid .span-all{grid-column:1 / -1}.preview-host{flex:1;min-height:0;display:flex}.preview-area{flex:1;position:relative;background:repeating-conic-gradient(#202327,#202327 25%,#25282d 0%,#25282d 50%) 50% / 24px 24px;overflow:hidden;display:flex;align-items:center;justify-content:center}.preview-stage{position:relative;box-shadow:0 0 0 1px var(--border)}.stage-canvas{display:block;width:100%;height:100%;image-rendering:auto}.led-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.led-overlay circle{pointer-events:auto}.preview-empty{color:var(--text-dim);text-align:center;padding:24px;line-height:1.7}.control-panel{flex:1;overflow-y:auto;padding:12px;display:grid;grid-template-columns:1fr;grid-auto-rows:min-content;align-content:start;gap:12px}@container (min-width: 520px){.control-panel{grid-template-columns:1fr 1fr}}@container (min-width: 880px){.control-panel{grid-template-columns:1fr 1fr 1fr}}.group{border:1px solid var(--border);border-radius:8px;padding:10px 12px 12px;margin-bottom:0;background:var(--bg-panel)}.group>legend,.group>.group-title{font-size:13px;font-weight:600;color:var(--accent);padding:0 4px;margin-bottom:6px}.field{margin:8px 0}.field>label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:4px}.slider-row{display:flex;align-items:center;gap:8px}.slider-row input[type=range]{flex:1;accent-color:var(--accent)}.slider-row .val{width:42px;text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.check-row{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:14px}.check-row input{accent-color:var(--accent)}.radio-row{display:flex;gap:16px;margin:6px 0;font-size:13px}.disabled-block{opacity:.4;pointer-events:none}.partition-group{grid-column:1 / -1}.pbucket{border:1px solid var(--border);border-radius:6px;padding:6px 8px;margin:6px 0;background:var(--bg)}.pbucket.pool{background:var(--bg-elev);border-style:dashed}.pbucket-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.pbucket-desc{font-size:11px;color:var(--text-dim);margin:2px 0 4px}.pswatch{width:16px;height:16px;border-radius:4px;border:1px solid rgba(255,255,255,.25);flex:0 0 auto}.pchips{display:flex;flex-wrap:wrap;gap:6px;min-height:26px;align-items:center}.pbucket-empty{font-size:11px;color:var(--text-dim);font-style:italic}.pchip{position:relative;width:30px;height:26px;border-radius:5px;cursor:grab}.pchip:active{cursor:grabbing}.pchip input[type=color]{width:100%;height:100%;padding:0;border:1px solid var(--border);border-radius:5px;background:none;cursor:pointer}.pchip input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.pchip input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}.pchip-x{position:absolute;top:-7px;right:-7px;width:16px;height:16px;padding:0;font-size:10px;line-height:1;border-radius:50%;background:var(--danger);border:1px solid #00000040;color:#fff;display:none;align-items:center;justify-content:center}.pchip:hover .pchip-x{display:inline-flex}.pchip-cluster{width:auto;height:auto;display:flex;flex-direction:row;align-items:center;gap:4px;padding:2px 5px;border-radius:5px;background:var(--bg-elev)}.pchip-cluster .cluster-swatch{width:16px;height:16px;border-radius:4px;border:1px solid rgba(255,255,255,.25)}.pchip-cluster .cluster-pct{font-size:10px;line-height:1;color:var(--text-dim)}button.mini{padding:2px 8px;font-size:12px;border-radius:5px}.stylize-workspace{grid-template-columns:minmax(0,3fr) minmax(380px,1.3fr)}@media(min-width:1280px){.stylize-workspace{grid-template-columns:minmax(0,3fr) minmax(420px,560px)}}.stylize-panel{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.ta{width:100%;font:inherit;font-size:13px;line-height:1.5;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:6px 8px;resize:vertical}.btn-row{display:flex;gap:8px;margin-top:8px}.btn-row>button{flex:1}.incremental-toggles{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:4px 0 6px;border-bottom:1px solid var(--border);margin-bottom:6px}.incremental-toggles .inc-label{font-size:12px;color:var(--text-dim)}.incremental-toggles .check-row{font-size:13px;margin:0}.toggle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:4px 14px;margin-top:4px}.toggle-grid .check-row{margin:0;font-size:13px}.style-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.style-group-head{grid-column:1 / -1;font-size:12px;font-weight:600;color:var(--text-dim);padding:6px 2px 2px;border-top:1px solid var(--border)}.style-group-head:first-child{border-top:none;padding-top:0}.style-gallery.collapsed{max-height:22rem;overflow-y:auto;padding-right:4px}.style-gallery.expanded{max-height:none;overflow-y:visible}.style-card{display:flex;flex-direction:column;gap:4px;padding:6px;background:var(--bg);border:1px solid var(--border);border-radius:8px;cursor:pointer;text-align:center}.style-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.style-card-thumb{aspect-ratio:4 / 3;border-radius:5px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,#0f2240,#3a1a4a 45%,#08323a);color:#cdd3da;font-size:11px}.style-card-thumb.custom{background:var(--bg-elev);font-size:22px;color:var(--text-dim)}.style-card-thumb img{width:100%;height:100%;object-fit:cover}.style-card-title{font-size:12px;color:var(--text)}.gallery-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:#141418eb;color:#fff;padding:7px 14px;border-radius:6px;font-size:12.5px;box-shadow:0 4px 16px #0000004d;pointer-events:none;z-index:1000;animation:galleryToastFade 2.6s ease forwards}@keyframes galleryToastFade{0%{opacity:0;transform:translate(-50%,8px)}12%{opacity:1;transform:translate(-50%)}82%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-4px)}}.color-control{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.cc-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-dim);margin-bottom:6px}.cc-list{display:flex;flex-direction:column;gap:6px}.cc-row{display:flex;align-items:center;gap:8px}.cc-row input[type=color]{width:34px;height:28px;flex:0 0 auto;padding:0;border:1px solid var(--border);border-radius:5px;background:none;cursor:pointer}.cc-row .cc-desc{flex:1;font:inherit;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:5px 8px}.edited-badge{margin-left:8px;font-size:11px;font-weight:600;color:#ffb454;background:#3a2e16;border:1px solid #5a4a24;border-radius:4px;padding:1px 6px}.gen-status{margin-top:8px;font-size:12px;color:var(--text-dim);white-space:pre-line}.check-list,.advisory-list{list-style:none;margin:4px 0 8px;padding:0;font-size:13px}.check-list li{display:flex;align-items:center;gap:8px;margin:4px 0}.check-list li>span{width:14px;text-align:center;font-weight:700}.check-ok>span{color:#3ec46d}.check-fail{color:#ff6b6b}.check-fail>span{color:#ff6b6b}.advisory-list li{display:flex;justify-content:space-between;gap:12px;margin:3px 0;color:var(--text-dim)}.advisory-list .advisory-value{font-variant-numeric:tabular-nums;color:var(--text)}.advisory-list li.advisory-warn .advisory-value{color:#ffb454}.layers-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:minmax(120px,1fr);gap:8px;padding:8px;overflow:auto}@container (min-width: 520px){.layers-grid{grid-template-columns:repeat(4,1fr)}}.layer-cell{display:flex;flex-direction:column;min-height:0}.layer-cell .layer-name{font-size:12px;color:var(--text-dim);margin-bottom:4px}.layer-cell .layer-view{position:relative;flex:1;border:1px dashed var(--border);background:#000;display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:0}.layer-cell canvas{max-width:100%;max-height:100%;object-fit:contain}.layer-cell .layer-view span{color:#555;font-size:12px}.download-btn{position:absolute;top:6px;right:6px;z-index:6;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:#f0f2f5;background:#14161a73;border:1px solid rgba(255,255,255,.15);border-radius:6px;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.layer-cell .layer-view:hover .download-btn,.preview-stage:hover .download-btn,.download-btn:focus-visible{opacity:1}.download-btn:hover{background:#2e343ed9}.download-btn:active{transform:scale(.94)}.tabs{display:flex;gap:4px;padding:6px 12px 0;background:var(--bg-panel);border-bottom:1px solid var(--border);flex:0 0 auto}.tabs .tab{background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;padding:8px 18px;color:var(--text-dim);font-weight:600}.tabs .tab:hover:not(.active){color:var(--text);border-color:transparent}.tabs .tab.active{background:var(--bg);border-color:var(--border);color:var(--accent);margin-bottom:-1px}.outline-workspace{grid-template-columns:minmax(0,3fr) minmax(320px,1fr)}.view-switch{position:absolute;bottom:10px;left:50%;transform:translate(-50%);z-index:7;display:flex;background:#14161ab3;border:1px solid rgba(255,255,255,.15);border-radius:8px;overflow:hidden;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.view-switch-inline{position:static;transform:none;bottom:auto;left:auto}.view-hint{font-size:11px;text-transform:none;letter-spacing:0;color:#f0d9a0;font-weight:400}.view-switch button{border:none;border-radius:0;background:transparent;padding:6px 14px;font-size:13px;color:#d6dae0}.view-switch button.active{background:var(--accent);color:#06121f;font-weight:600}.view-switch button:hover:not(.active){background:#ffffff14}.compare-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4}.compare-divider{position:absolute;top:0;bottom:0;width:0;border-left:2px solid #fff;box-shadow:0 0 6px #0009;z-index:5;pointer-events:none}.compare-handle{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;background:#fff;border:2px solid var(--accent);cursor:ew-resize;pointer-events:auto;box-shadow:0 1px 4px #00000080}.compare-tag{position:absolute;top:8px;z-index:6;font-size:12px;color:#fff;background:#14161a99;border-radius:4px;padding:2px 7px;pointer-events:none}.compare-tag-left{left:8px}.compare-tag-right{right:8px}.outline-hint{position:absolute;bottom:46px;left:50%;transform:translate(-50%);z-index:7;font-size:12px;color:#f0d9a0;background:#282010cc;border:1px solid #4a4024;border-radius:6px;padding:4px 10px;pointer-events:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:24px}.modal{width:min(560px,100%);max-height:86vh;display:flex;flex-direction:column;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px #00000080}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:700}.modal-body{padding:12px 16px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.conn-row{display:flex;align-items:center;gap:10px;margin-top:6px;font-size:12px}.conn-ok{color:#3ec46d}.conn-fail{color:#ff6b6b}.llm-log{list-style:none;margin:0;padding:0;font-size:12px;max-height:160px;overflow-y:auto}.llm-log li{display:flex;gap:8px;padding:3px 0;border-bottom:1px solid var(--border)}.llm-log-phase{flex:0 0 auto;color:var(--text-dim);font-variant-numeric:tabular-nums}.llm-log-msg{word-break:break-word}.llm-log-ok .llm-log-msg{color:#3ec46d}.llm-log-error .llm-log-msg{color:#ff6b6b}.notice{white-space:pre-line;background:#2a2e22;border:1px solid #4a5234;color:#d9e0c0;border-radius:6px;padding:8px 10px;margin:8px 12px 0;font-size:12px}
