.prefab-dialog{width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:24px;border:0;border-radius:24px;background:var(--panel);color:var(--text);box-shadow:0 24px 80px #192d2133}.prefab-dialog::backdrop{background:#19281f52;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.prefab-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.prefab-heading h2{margin:0;font-size:20px;font-weight:600}.prefab-heading .icon-btn{font-size:24px}.prefab-hint{margin:10px 0;color:var(--text-2);font-size:12px;line-height:1.6}.prefab-form{display:flex;gap:8px;align-items:flex-end;margin:20px 0}.prefab-form .field{flex:1;min-width:0}.prefab-form .btn{flex-shrink:0}.prefab-status p{font-size:12px;line-height:1.6;color:var(--text-2)}.prefab-status .prefab-error{color:var(--danger)}.prefab-empty{margin:30px 0;color:var(--text-3);text-align:center;line-height:1.6}.prefab-result{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}.prefab-preview{display:grid;place-items:center;min-height:240px;aspect-ratio:1;overflow:hidden;border-radius:16px;background-color:var(--checker-light);background-image:conic-gradient(var(--checker-dark) 25%,transparent 0 50%,var(--checker-dark) 0 75%,transparent 0);background-size:20px 20px}.prefab-preview img{display:block;width:100%;height:100%;object-fit:contain}.prefab-preview p{padding:20px;text-align:center;line-height:1.6;color:var(--text-2)}.prefab-information{min-width:0}.prefab-information h3{margin:0 0 16px;font-size:18px;overflow-wrap:anywhere}.prefab-properties{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 16px;margin:12px 0;font-size:12px}.prefab-properties dt{color:var(--text-2)}.prefab-properties dd{margin:0;overflow-wrap:anywhere}.prefab-categories{display:flex;flex-wrap:wrap;gap:6px}.prefab-categories span{padding:3px 8px;margin-top:-3px;border-radius:8px;color:var(--accent-strong);background:var(--accent-soft)}.prefab-description{font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.prefab-related{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}.prefab-related summary{cursor:pointer;color:var(--text-2);font-size:12px}@media (max-width: 600px){.prefab-dialog{padding:20px}.prefab-result{grid-template-columns:1fr;gap:20px}.prefab-preview{width:min(240px,100%);justify-self:center;min-height:0}.prefab-form{flex-wrap:wrap}.prefab-form .field{flex-basis:100%}}.prefab-library-panel{padding:0 12px 12px}.prefab-library-actions{display:flex;gap:6px;margin:8px 0}.prefab-library-result{display:grid;gap:6px;margin-top:12px}.prefab-library-result .prefab-preview{width:100%;height:180px;cursor:grab;border:1px solid var(--border);border-radius:8px}.prefab-library-result .prefab-preview img{width:100%;height:100%;object-fit:contain}.prefab-library-result .prefab-hint{margin:0}.prefab-placeholder{display:grid;width:100%;height:100%;place-items:center;font-size:11px;color:#64748b}.prefab-history{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}.prefab-history .section-head{margin-bottom:8px}.prefab-history .section-head em{margin-left:6px}.prefab-history-list{display:grid;gap:6px;max-height:264px;overflow-y:auto}.prefab-history-row{display:flex;gap:2px;align-items:center;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.prefab-history-item{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:6px;color:inherit;background:transparent;border:0;cursor:grab;text-align:left}.prefab-history-item:disabled{opacity:.6;cursor:default}.prefab-history-thumb{display:grid;place-items:center;flex:0 0 38px;height:38px}.prefab-history-thumb img{width:100%;height:100%;object-fit:contain}.prefab-history-label{display:grid;gap:3px;min-width:0}.prefab-history-label strong{font-size:12px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.prefab-history-label code{color:var(--text-2);font-size:10px}.prefab-history-remove{flex:0 0 24px;margin-right:4px;font-size:18px}:root{--surface: #f5f8f4;--surface-low: #edf2ec;--surface-high: #e4ece5;--accent: #356859;--accent-strong: #245143;--accent-soft: #ccebdc;--accent-ring: rgba(53, 104, 89, .18);--panel: #fbfdf9;--line: #dfe6de;--line-strong: #bdcbc1;--text: #202d26;--text-2: #54645b;--text-3: #65766b;--canvas-bg: #e7eee6;--checker-light: #ffffff;--checker-dark: #e3e8ea;--danger: #dc2626;--mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Courier New", monospace;--ui-font: "HYWenHei-85W", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--textbox-font: var(--ui-font);font-family:var(--ui-font);font-size:13px;color:var(--text);background:var(--surface)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0}button,input,textarea,select{font:inherit}code{font-family:var(--mono)}kbd{display:inline-block;font-family:inherit;font-size:10.5px;line-height:1;color:var(--text);background:#fff;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;padding:3px 5px}*{scrollbar-width:thin;scrollbar-color:#cbd0d6 transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:#cbd0d6;border-radius:999px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#b4bac2;background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}input[type=checkbox]{accent-color:var(--accent)}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.icon{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.app-shell{height:100%;display:grid;grid-template-rows:64px minmax(0,1fr) 32px;background:var(--surface)}.topbar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px;background:var(--surface);border-bottom:0;z-index:40}.topbar-group{display:flex;align-items:center;gap:4px}.topbar-center{flex:1;justify-content:center;min-width:100px}.brand{display:flex;align-items:center;gap:7px;padding-right:4px}.brand-mark{width:34px;height:34px;border-radius:12px;background:var(--accent);color:#fff;display:grid;place-items:center;box-shadow:none}.brand-name{font-size:14px;font-weight:650;letter-spacing:.01em;white-space:nowrap}.divider{width:1px;height:18px;background:var(--line);margin:0 4px;flex-shrink:0}.doc-name{display:flex;max-width:100%;min-width:0;align-items:center;gap:6px;height:36px;padding:0 10px;border-radius:12px;border:1px solid transparent;color:var(--text-3);cursor:text;transition:background .15s,border-color .15s}.doc-name:hover{background:var(--surface)}.doc-name:focus-within{background:#fff;border-color:var(--line-strong);box-shadow:0 0 0 3px var(--accent-ring);color:var(--accent)}.doc-name input{width:132px;min-width:0;border:0;outline:none;background:transparent;font-size:12.5px;font-weight:600;color:var(--text);text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:36px;padding:0 16px;border-radius:999px;border:1px solid transparent;font-size:12.5px;font-weight:550;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;text-decoration:none}.btn:active{transform:translateY(.5px)}.btn-primary{background:var(--accent);color:#fff;box-shadow:none}.btn-primary:hover{background:var(--accent-strong)}.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--text-2)}.btn-ghost:hover{background:var(--surface);color:var(--text)}.btn-danger-ghost{background:transparent;border-color:#dc262659;color:var(--danger)}.btn-danger-ghost:hover{background:#dc262612}.btn-block{width:100%}.btn-kbd{margin-left:3px;padding:2px 5px;border:0;border-radius:4px;background:#fff3;color:#fff;font-size:10px;line-height:1;font-family:inherit}.btn-text-icon{padding:0 10px}.tool-toggle{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 8px;border:0;border-radius:999px;background:transparent;color:var(--text-2);font-size:12px;font-weight:550;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .15s,color .15s}.tool-toggle:hover{background:var(--surface-high);color:var(--text)}.tool-toggle.active{background:var(--accent-soft);color:var(--accent-strong)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text-2);cursor:pointer;transition:background .15s,color .15s}.icon-btn:hover{background:var(--surface-high);color:var(--text)}.icon-btn.active{background:var(--accent-soft);color:var(--accent-strong)}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn:disabled:hover{background:transparent;color:var(--text-2)}.lang-toggle{width:auto;min-width:28px;padding:0 8px;font-size:12px;font-weight:600;letter-spacing:.02em}.lang-toggle-text{line-height:1}.link-btn{border:0;background:none;padding:0;color:var(--accent-strong);font-size:12px;font-weight:550;cursor:pointer}.link-btn:hover{text-decoration:underline}.menu-wrap{position:relative}.menu{position:absolute;top:calc(100% + 6px);right:0;z-index:70;width:216px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 12px 36px #11182724,0 2px 8px #11182714;padding:8px}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:12px;background:none;cursor:pointer;text-align:left;color:var(--text-2);transition:background .12s}.menu-item:hover{background:var(--surface)}.menu-item strong{display:block;font-size:12.5px;font-weight:600;color:var(--text)}.menu-item span{display:block;font-size:11px;color:var(--text-3)}.workspace{min-height:0;display:grid;grid-template-columns:256px minmax(0,1fr) 280px;gap:12px;padding:0 12px}.sidebar{min-height:0;display:flex;flex-direction:column;background:var(--panel);border-radius:24px;overflow:hidden;border:1px solid var(--line)}.sidebar-tabs{padding:14px 12px 12px;border-bottom:0;flex-shrink:0}.seg{display:flex;gap:2px;background:var(--surface-low);padding:3px;border-radius:999px}.seg button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:34px;border:0;border-radius:999px;background:transparent;color:var(--text-2);font-size:12px;font-weight:550;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.seg button:hover{color:var(--text)}.seg button.active{background:var(--accent-soft);color:var(--accent-strong);font-weight:650;box-shadow:none}.seg button:disabled{opacity:.4;cursor:default}.seg button:disabled:hover{color:var(--text-2)}.props-switch{padding:8px 10px 0;flex-shrink:0}.panel-scroll{min-height:0;flex:1;overflow:auto;padding:12px 16px}.stack{display:flex;flex-direction:column;gap:14px}.sidebar-footer{padding:10px 12px;border-top:1px solid var(--line);flex-shrink:0}.sidebar-footer-row{display:flex;gap:8px}.sidebar-footer-row .btn{flex:1}.field{display:grid;gap:5px}.field>span{font-size:11px;font-weight:550;color:var(--text-2)}.field>input:not([type=range]):not([type=checkbox]),.field select,.field textarea,.row>input[type=number],.layer-controls>input{width:100%;height:36px;border:1px solid var(--line-strong);border-radius:10px;padding:0 9px;background:var(--surface-low);color:var(--text);font-size:12.5px;outline:none;transition:border-color .15s,box-shadow .15s}.field textarea{padding:8px 9px;resize:none;line-height:1.55}.field input:focus,.field select:focus,.field textarea:focus,.row>input[type=number]:focus,.layer-controls>input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.field-grow{flex:1;min-height:110px;display:flex;flex-direction:column}.field-grow textarea{flex:1;min-height:0}.row{display:flex;align-items:center;gap:6px}.scale-preset-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.num-field{display:flex;align-items:center;gap:6px;height:36px;padding:0 8px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-low);transition:border-color .15s,box-shadow .15s}.num-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.num-field span{font-size:11px;color:var(--text-3);flex-shrink:0}.num-field input{flex:1;min-width:0;height:100%;border:0;outline:none;background:transparent;font-size:12.5px;color:var(--text);font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1;min-width:0;height:22px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:999px;background:#dfe3e8}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;border:1.5px solid var(--accent);margin-top:-4.5px;box-shadow:0 1px 3px #11182733}input[type=range]::-moz-range-track{height:3px;border-radius:999px;background:#dfe3e8}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fff;border:1.5px solid var(--accent)}.pct-input{width:54px!important;flex-shrink:0;text-align:center}.color-field{display:flex;gap:6px}.swatch{position:relative;width:36px;height:36px;border-radius:10px;border:1px solid rgba(17,24,39,.14);overflow:hidden;cursor:pointer;flex-shrink:0}.swatch input{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;width:calc(100% + 12px);height:calc(100% + 12px);opacity:0;cursor:pointer}.hex-wrap{flex:1;display:flex;align-items:center;gap:3px;height:36px;padding:0 8px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-low);transition:border-color .15s,box-shadow .15s}.hex-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.hex-wrap span{font-size:12px;color:var(--text-3)}.hex-wrap input{flex:1;min-width:0;border:0;outline:none;background:transparent;font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;color:var(--text)}.check-row{display:flex;align-items:flex-start;gap:8px;cursor:pointer}.check-row input{width:14px;height:14px;margin:1px 0 0;cursor:pointer;flex-shrink:0}.check-row span{font-size:12.5px;color:var(--text);line-height:1.4}.check-row em{display:block;font-style:normal;font-size:11px;color:var(--text-3)}.section-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:4px;border-bottom:1px solid var(--line)}.section-head span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}.section-head em{font-style:normal;font-size:11px;color:var(--text-3)}.section-spacer{flex:1 1 4px}.tip-box{font-size:12px;line-height:1.55;color:var(--text-2);background:var(--surface-low);border:1px solid var(--line);border-radius:8px;padding:9px 11px}.tip-box code{font-size:11px;background:#eceef1;border-radius:4px;padding:0 4px}.stat-row{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--text-2)}.stat-row strong{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.message-box{border-radius:8px;padding:9px 11px;font-size:12px;line-height:1.5}.message-box p{margin:0 0 4px}.message-box p:last-child{margin-bottom:0}.message-box.warning{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.empty-box{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:26px 16px;border:0;border-radius:20px;background:var(--surface-low)}.empty-box-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-soft);color:var(--accent-strong);display:grid;place-items:center}.empty-box strong{font-size:13px;color:var(--text)}.empty-box p{margin:0;font-size:12px;color:var(--text-2);line-height:1.5}.empty-box-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:4px}.layer-list{display:flex;flex-direction:column;gap:2px}.layer-row-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px;border:0;border-radius:12px;background:transparent;cursor:pointer;text-align:left;color:var(--text);transition:background .12s}.layer-row-item:hover{background:var(--surface)}.layer-row-item.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.layer-info{flex:1;min-width:0}.layer-info strong{display:block;font-size:12.5px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-info span{display:block;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.layer-badge{font-size:10px;color:var(--text-3);background:var(--surface-high);border-radius:4px;padding:2px 5px;font-variant-numeric:tabular-nums;flex-shrink:0}.layer-row-item.selected .layer-badge{background:#fff;color:var(--accent-strong)}.library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.library-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 4px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surface-low);cursor:grab;transition:border-color .15s,box-shadow .15s,transform .15s;-webkit-user-select:none;user-select:none}.library-card:hover{border-color:var(--accent);box-shadow:0 3px 10px #1118271a;transform:translateY(-1px)}.library-card strong{font-size:11px;font-weight:550;color:var(--text-2)}.asset-sprite{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none}.asset-id-row{display:flex;align-items:center;gap:8px}.asset-category-heading{display:flex;align-items:center;justify-content:space-between}.asset-description{margin:0;font-size:12px;line-height:1.6;color:var(--text-2)}.asset-use-tags{display:flex;flex-wrap:wrap;gap:4px}.asset-use-tags span{border-radius:4px;padding:2px 5px;font-size:10px;color:var(--accent);background:var(--accent-soft)}.asset-id-row code{font-family:var(--mono);font-size:12px;color:var(--text)}.asset-id-row em{font-style:normal;font-size:10px;color:var(--text-3)}.asset-tones{display:flex;flex-wrap:wrap;gap:6px}.asset-tone{padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--text-2);font-size:11px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.asset-tone:hover{border-color:var(--accent);color:var(--text)}.asset-tone.is-active{background:var(--accent-soft, rgba(59, 130, 246, .12));border-color:var(--accent);color:var(--accent)}.asset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:320px;min-height:200px;flex:0 0 auto;overflow-y:auto;padding:2px}.asset-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px 4px;border:1px solid transparent;border-radius:10px;background:var(--surface-low);cursor:pointer;transition:border-color .15s,background .15s}.asset-thumb{display:flex;align-items:center;justify-content:center;width:100%;height:46px;border-radius:6px;background:var(--line-strong);overflow:hidden}.asset-thumb img{max-width:100%;max-height:100%;object-fit:contain;pointer-events:none}.asset-card .asset-id{font-size:10px;font-variant-numeric:tabular-nums;color:var(--text-3)}.asset-card.is-stretchable .asset-id{color:var(--accent-strong);font-weight:600}.asset-card:hover{border-color:var(--accent);background:var(--surface)}.asset-card.is-selected{border-color:var(--accent);background:var(--accent-soft, rgba(59, 130, 246, .12))}.asset-card.is-mono:before{content:"";position:absolute;top:4px;left:4px;width:6px;height:6px;border-radius:50%;background:var(--accent-strong);box-shadow:0 0 0 1.5px var(--panel)}.asset-empty{grid-column:1 / -1}.asset-error{display:flex;align-items:center;justify-content:space-between;gap:8px}.asset-error button{flex:none;padding:2px 8px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--text-2);font-size:11px;cursor:pointer}.asset-detail{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-low)}.asset-detail-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.asset-detail-head strong{font-size:12px;font-variant-numeric:tabular-nums}.asset-detail-head span{font-size:11px;color:var(--text-2)}.asset-detail-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:var(--text-2)}.asset-meta-error{display:inline-flex;align-items:center;gap:6px}.asset-retry{border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--accent);font-size:10px;padding:1px 6px;cursor:pointer}.saved-list{display:flex;flex-direction:column;gap:2px}.saved-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:0;border-radius:6px;background:transparent;cursor:grab;text-align:left;color:var(--text);transition:background .12s;-webkit-user-select:none;user-select:none}.saved-item:hover{background:var(--surface)}.upload-box{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:18px 12px;border:1.5px dashed var(--line-strong);border-radius:20px;background:#fafbfc;color:var(--text-2);cursor:pointer;text-align:center;transition:border-color .15s,background .15s,color .15s}.upload-box:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.upload-box strong{font-size:12.5px}.upload-box>span{font-size:11px;color:var(--text-3)}.upload-box input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.canvas-area{position:relative;min-width:0;min-height:0;display:flex;border-radius:24px;overflow:hidden}.canvas-toolbar{position:absolute;top:16px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:3px;padding:6px;background:#fffffff0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:999px;box-shadow:0 2px 8px #202d2614;white-space:nowrap;max-width:calc(100% - 24px);overflow-x:auto;scrollbar-width:none}.canvas-toolbar::-webkit-scrollbar{display:none}.canvas-toolbar .divider{height:16px;margin:0 2px}.zoom-display{height:28px;min-width:52px;padding:0 4px;border:0;background:transparent;border-radius:6px;font-size:12px;font-weight:600;color:var(--text);cursor:pointer;font-variant-numeric:tabular-nums;transition:background .12s}.zoom-display:hover{background:var(--surface-high)}.tool-field{display:flex;align-items:center;gap:4px;height:28px;padding:0 7px;border-radius:6px;cursor:text;transition:background .12s}.tool-field:hover,.tool-field:focus-within{background:var(--surface-high)}.tool-field span{font-size:11px;color:var(--text-2);flex-shrink:0}.tool-field em{font-style:normal;font-size:10px;color:var(--text-3);flex-shrink:0}.tool-field input{width:28px;border:0;outline:none;background:transparent;font-size:12px;color:var(--text);text-align:center;font-variant-numeric:tabular-nums}.canvas-stage{flex:1;min-height:0;overflow:auto;background-color:var(--canvas-bg);background-image:radial-gradient(circle,#c7d3c9 .8px,transparent .8px);background-size:20px 20px;cursor:grab;-webkit-user-select:none;user-select:none}.canvas-stage:active{cursor:grabbing}.canvas-sizer{position:relative;min-width:100%;min-height:100%;display:flex;justify-content:center;align-items:center;padding:48px}.canvas.is-transparent{background-color:var(--checker-light);background-image:linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%,transparent 75%,var(--checker-dark) 75%),linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%,transparent 75%,var(--checker-dark) 75%)}.canvas{position:relative;flex:0 0 auto;border-radius:3px;border:1px solid var(--line-strong);overflow:visible;box-shadow:0 8px 32px #11182724}.canvas-mask-preview{position:absolute;top:0;left:0;pointer-events:none;z-index:9999}.canvas-meta-chip{position:absolute;right:12px;bottom:10px;z-index:15;font-size:11px;color:var(--text-2);background:#ffffffeb;border:1px solid var(--line);border-radius:999px;padding:4px 9px;font-variant-numeric:tabular-nums;cursor:pointer;transition:border-color .15s,color .15s,box-shadow .15s}.canvas-meta-chip:hover{border-color:var(--accent);color:var(--accent-strong);box-shadow:0 2px 8px #1118271f}.canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;z-index:15}.canvas-empty-card{pointer-events:auto;width:min(360px,calc(100% - 32px));background:#fffffff7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:28px;box-shadow:0 8px 32px #202d2614;padding:28px 20px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.canvas-empty-card h3{margin:2px 0 0;font-size:20px;font-weight:600}.canvas-empty-card p{margin:0;font-size:12.5px;color:var(--text-2);line-height:1.5}.canvas-empty-card .link-btn{margin-top:2px}.canvas-quick-setup{display:flex;align-items:center;gap:6px;margin-top:4px;padding:8px 12px;background:var(--surface-low);border:1px solid var(--line);border-radius:8px}.canvas-quick-setup>span{font-size:12px;color:var(--text-2);flex-shrink:0}.canvas-quick-setup input{width:58px;height:28px;border:1px solid var(--line-strong);border-radius:6px;padding:0 6px;background:#fff;color:var(--text);font-size:12.5px;text-align:center;outline:none;font-variant-numeric:tabular-nums;transition:border-color .15s,box-shadow .15s}.canvas-quick-setup input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.canvas-quick-setup em{font-style:normal;font-size:11px;color:var(--text-3);flex-shrink:0}.shape{position:absolute;cursor:move}.shape.is-selected{outline:2px solid var(--accent);outline-offset:1px}.transform-handle{position:absolute;box-sizing:border-box}.rotate-stem{position:absolute;left:50%;top:-16px;width:1.5px;height:16px;transform:translate(-50%);background:var(--accent);pointer-events:none}.rotate-handle{left:50%;top:-27px;width:12px;height:12px;transform:translate(-50%);border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 1px 4px #11182740;cursor:grab}.scale-handle{right:-6px;bottom:-6px;width:11px;height:11px;border-radius:3px;background:#fff;border:2px solid var(--accent);box-shadow:0 1px 4px #11182740;cursor:nwse-resize}.snap-guide{position:absolute;pointer-events:none;z-index:9999;background:#e91e8c}.snap-guide-vertical{top:0;bottom:0;width:1px}.snap-guide-horizontal{left:0;right:0;height:1px}.triangle-fill{width:100%;height:100%;clip-path:polygon(50% 0%,0% 100%,100% 100%)}.star{width:100%;height:100%}.star-four{clip-path:polygon(50% 0%,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0% 50%,38% 38%)}.star-five{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 92%,50% 71%,21% 92%,32% 57%,2% 35%,39% 35%)}.glyph{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center}.glyph-fill{width:100%;height:100%}.glyph-fill.ellipse{border-radius:50%}.glyph-fill.rectangle{border-radius:2px}.glyph-fill.textbox{display:grid;place-items:center;border:1px solid #9ca3af;border-radius:3px;background:#111827;color:#fff;font-size:12px;font-weight:700;line-height:1}.textbox-preview{width:100%;height:100%;display:flex;overflow:hidden;padding:4px 6px;white-space:pre-wrap;word-break:break-word;line-height:1.2;pointer-events:none;font-family:var(--textbox-font);font-weight:400}.textbox-input{width:100%;min-height:84px;resize:vertical;border:1px solid var(--line-strong);border-radius:6px;padding:8px;background:#fff;color:var(--text);font-family:var(--textbox-font);font-weight:400}.field-hint{display:block;margin-top:6px;font-size:11px;font-style:normal;color:var(--text-3);line-height:1.4}.view-bg-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.view-bg-swatch{width:22px;height:22px;border-radius:50%;border:1px solid var(--line-strong);cursor:pointer;padding:0}.view-bg-swatch:hover{border-color:var(--accent, #4f46e5)}.view-bg-checker{background-color:var(--checker-light);background-image:linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%,transparent 75%,var(--checker-dark) 75%),linear-gradient(45deg,var(--checker-dark) 25%,transparent 25%,transparent 75%,var(--checker-dark) 75%);background-size:8px 8px;background-position:0 0,4px 4px}.color-opacity-field{display:flex;align-items:center;gap:6px}.pct-suffix{color:var(--text-3);font-size:12px}.inspector-head{display:flex;align-items:center;gap:9px;padding:8px 10px;background:#f8f9fb;border:1px solid var(--line);border-radius:10px}.inspector-head .glyph{width:26px;height:26px}.inspector-image-preview img{display:block;width:100%;height:100%;object-fit:contain}.layer-controls{display:flex;align-items:center;gap:6px}.layer-controls>input{width:58px;flex-shrink:0;text-align:center}.icon-row{display:flex;gap:2px;flex:1;justify-content:flex-end}.code-panel{min-height:0;flex:1;display:flex;flex-direction:column}.code-panel .seg{margin:10px 10px 8px}.code-panel textarea{flex:1;min-height:0;margin:0 10px 10px;border:1px solid var(--line-strong);border-radius:8px;padding:10px;font-family:var(--mono);font-size:11px;line-height:1.55;color:#0f172a;background:#f8f9fb;resize:none;outline:none}.code-panel textarea:focus{border-color:var(--accent)}.lua-script-dialog{width:min(960px,calc(100vw - 32px));height:min(760px,calc(100dvh - 32px));max-width:none;max-height:none;padding:24px;border:0;border-radius:24px;background:var(--panel);color:var(--text);box-shadow:0 24px 80px #192d2133}.lua-script-dialog[open]{display:flex;flex-direction:column;gap:12px}.lua-script-dialog::backdrop{background:#19281f52;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.lua-script-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.lua-script-heading h2{margin:0;font-size:20px;font-weight:600}.lua-script-hint{margin:0;color:var(--text-2);font-size:12px;line-height:1.6}.lua-script-status{color:var(--text-2);font-size:12px;line-height:1.5}.lua-script-status.is-error{color:var(--danger)}.lua-script-status:empty{display:none}.lua-script-dialog textarea{flex:1;min-height:0;width:100%;padding:14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-low);color:var(--text);font-family:var(--mono);font-size:12px;line-height:1.6;-moz-tab-size:4;tab-size:4;resize:none}.lua-script-dialog textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.lua-script-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.lua-script-copy-status{flex:1;min-width:0;color:var(--text-2);font-size:12px;line-height:1.5}.statusbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px;background:var(--surface);border-top:0;font-size:11px;color:var(--text-2)}.status-left{display:flex;align-items:center;gap:6px;min-width:0}.status-left .icon{color:var(--accent);flex-shrink:0}.status-left span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-right{display:flex;align-items:center;gap:8px;flex-shrink:0;font-variant-numeric:tabular-nums;white-space:nowrap}.status-right i{width:1px;height:10px;background:var(--line-strong)}.quick-edit-menu{position:fixed;z-index:60;width:240px;padding:12px;border-radius:12px;background:#fffffff7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);box-shadow:0 18px 48px #11182733;display:flex;flex-direction:column;gap:10px}.quick-scale-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.quick-delete{grid-column:1 / -1;justify-self:end;gap:4px;height:28px;padding:0 10px;font-size:11px;color:var(--text-3)}.quick-delete:hover{color:var(--danger);border-color:var(--danger)}.btn-tonal{color:var(--accent-strong);background:var(--accent-soft)}.btn-tonal:hover{background:#b9deca}.resource-link{display:flex;align-items:center;gap:10px;padding:14px 12px;border-radius:16px;background:var(--accent-soft);color:var(--accent-strong);text-decoration:none}.resource-link>span:first-of-type{flex:1}.resource-link strong,.resource-link small{display:block}.resource-link strong{font-size:12px}.resource-link small{margin-top:4px;font-size:11px;line-height:1.5}.resource-link:hover{background:#b9deca}.welcome-dialog{width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:28px;border:0;border-radius:28px;background:var(--panel);color:var(--text);box-shadow:0 24px 80px #192d2133}.welcome-dialog::backdrop{background:#19281f52;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.welcome-head{display:flex;justify-content:space-between;align-items:center}.welcome-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:18px;color:var(--accent-strong);background:var(--accent-soft)}.welcome-dialog h2{margin:20px 0 8px;font-size:26px;font-weight:600}.welcome-subtitle{margin:0;color:var(--text-2);line-height:1.6}.welcome-steps{list-style:none;padding:20px 0;margin:0;display:grid;gap:18px}.welcome-steps li{display:flex;gap:12px;align-items:center}.welcome-steps li>span{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border-radius:50%;background:var(--surface-high);color:var(--accent-strong);font-size:12px}.welcome-steps strong{font-weight:600}.welcome-steps p{margin:4px 0 0;color:var(--text-2);font-size:12px;line-height:1.6}.welcome-footer{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding-top:12px}.welcome-footer a{color:var(--accent-strong);font-size:12px;text-underline-offset:4px}.welcome-actions{display:flex;gap:8px;margin-left:auto}@media (max-width: 1200px){.workspace{grid-template-columns:224px minmax(0,1fr) 248px;gap:8px;padding:0 8px}}@media (max-width: 960px){.app-shell{height:auto;grid-template-rows:auto minmax(0,1fr) auto}.workspace{grid-template-columns:1fr}.canvas-area{grid-row:1}.topbar-actions{flex-wrap:wrap}.sidebar-left,.sidebar-right{border:0;border-bottom:1px solid var(--line);max-height:320px}.canvas-area{min-height:480px}.topbar-center{position:static;transform:none}.topbar{flex-wrap:wrap;height:auto;padding:6px 10px}.status-right span:last-child,.status-right i:last-of-type{display:none}}@media (min-width: 961px) and (max-width: 1200px){.brand-name{max-width:150px;overflow:hidden;text-overflow:ellipsis}.topbar{padding:0 12px;gap:8px}.topbar-actions{gap:2px}.topbar-actions .btn{padding:0 10px}.btn-kbd{display:none}.doc-name input{width:100px}}@media (max-width: 480px){.topbar{gap:8px;padding:12px}.topbar-actions{width:100%}.topbar-actions .btn{padding:0 12px}.topbar-actions .divider{display:none}.topbar-actions .menu-wrap{position:static}.topbar-actions .menu{right:12px;max-width:calc(100% - 24px)}.btn-kbd{display:none}.welcome-dialog{padding:24px}.welcome-dialog h2{font-size:23px}.status-right{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important}}
