.danger{background:#8f2430;border-color:#c84555;color:#fff;font-weight:700}
.danger:hover{background:#ad2c3a;border-color:#ff6b7a}
.cutout{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.layer button{background:#76202a;border-color:#b33b48;color:#fff;padding:4px 8px;font-size:12px}
.layer button:hover{background:#a12836;border-color:#ff6b7a}
@media(max-width:760px){.top-actions{flex-wrap:wrap}.top-actions .button,.top-actions button{font-size:12px}}
@media(display-mode:standalone){header{padding-top:max(10px,env(safe-area-inset-top))}#installApp{display:none}}
canvas.picking{cursor:crosshair;outline:3px solid #7c9cff}
html,body{overscroll-behavior:none}body{overflow:hidden}main{width:100vw;height:calc(100dvh - 76px)}.workspace{min-width:0;min-height:0;overflow:hidden}#stageWrap{min-width:0;min-height:0;overflow:hidden;padding:14px!important}#stageWrap canvas{max-width:none!important;max-height:none!important;object-fit:contain;touch-action:none;user-select:none;-webkit-user-select:none}.controls input[type=range]{touch-action:none}.nudge-row{margin-top:8px}.nudge-row button{flex:1}
.color-pick{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}.color-pick input[type=color]{min-width:0}.color-pick button{padding:7px 8px;font-size:12px;white-space:nowrap}.color-pick button.active{background:#7c9cff;border-color:#aebeff;color:#090b10}
.palette-block{margin-top:11px}.palette-block>span{display:block;margin-bottom:7px;color:#c6cad4;font-size:13px}.dominant-palette{display:grid;grid-template-columns:repeat(8,minmax(22px,1fr));gap:6px;min-height:30px}.palette-swatch{min-width:0;height:30px;padding:0;border:2px solid #ffffff40;border-radius:8px;box-shadow:inset 0 0 0 1px #0005}.palette-swatch:hover{transform:translateY(-1px);border-color:#fff}.palette-empty{grid-column:1/-1;display:grid;place-items:center;min-height:30px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:12px}
.template-transfer{margin-top:10px}.template-transfer>*{flex:1;text-align:center}.template-transfer .button{display:grid;place-items:center}
.library-upload{display:grid;place-items:center}.material-library{display:grid;gap:8px;margin-top:10px;max-height:300px;overflow:auto}.material-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:center;padding:7px;border:1px solid var(--line);border-radius:9px;background:#11131a}.material-card>img{width:42px;height:42px;object-fit:contain;border-radius:6px;background:#0b0d12}.material-card>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.material-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:5px}.material-actions button{padding:5px 4px;font-size:11px}.material-actions .material-delete{background:#76202a;border-color:#b33b48}.adjust-target{margin:0 0 10px;color:#aebeff;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mask-panel{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#11131a}.mask-panel>strong{display:block;margin-bottom:9px;font-size:12px;color:#c6cad4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stack-layout{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.stack-layout h2{margin-top:0}.stack-layout select{width:100%}.layer-order-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.layer-order-grid button{min-width:0}
.tool-module{border-bottom:1px solid var(--line);background:#151821}.tool-module>summary{position:sticky;top:0;z-index:2;padding:15px 20px;cursor:pointer;list-style:none;background:#1b1f2a;color:#eef1f7;font-size:17px;font-weight:800;letter-spacing:.08em}.tool-module>summary::-webkit-details-marker{display:none}.tool-module>summary::after{content:'＋';float:right;color:#8fa8ff;font-size:20px;line-height:1}.tool-module[open]>summary::after{content:'－'}.tool-module-body>section{border-top:1px solid #ffffff0a}.tool-module-body>section:first-child{border-top:0}.scheme-section{margin-top:10px;border-top:2px solid #708cff55!important}
.palette-target{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px;align-items:center;margin-top:10px}.palette-target span{color:#c6cad4;font-size:13px}.palette-target button{padding:7px 8px;font-size:12px}.palette-target button.active{background:#7c9cff;border-color:#aebeff;color:#090b10;font-weight:800}.asset-outline-panel{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.layer-actions{margin-bottom:8px}.layer-actions button{padding:6px 8px;font-size:12px}.layer-hint{margin:0 0 12px}.layer{display:grid!important;grid-template-columns:auto minmax(0,1fr);gap:7px!important}.layer>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer .mini{padding:3px 6px}.layer-tools{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.layer-tools button{padding:4px 6px!important}.layer.locked{border-color:#785f3d}.layer.locked>span::after{content:' · 已锁定';color:#f0b45a}
#stageWrap canvas.bw-check{filter:grayscale(1) contrast(1.08)}#toggleBW.active{background:#eef1f7;border-color:#fff;color:#10131d;font-weight:700}
#undoButton:disabled{opacity:.45;cursor:not-allowed}#colorLoupe{position:fixed;z-index:20;width:160px;padding:7px;border:2px solid #aebeff;border-radius:14px;background:#11131af2;box-shadow:0 12px 38px #000b;pointer-events:none}#colorLoupe canvas{display:block;width:144px;height:144px;box-shadow:none;border-radius:8px;image-rendering:pixelated}#colorLoupe span{display:block;margin-top:6px;color:#eef1f7;text-align:center;font-size:12px;line-height:1.3}#colorLoupe::after{content:'';position:absolute;left:79px;top:79px;width:12px;height:12px;border:1px solid #fff;box-shadow:0 0 0 1px #000;transform:translate(-50%,-50%)}
#redoButton:disabled{opacity:.45;cursor:not-allowed}.compact-switch{margin:8px 0}.control-disabled{opacity:.45}.control-disabled *{cursor:not-allowed}
@media(max-width:900px){main{height:calc(100dvh - 72px)}}@media(max-width:650px){body{overflow:auto}main{width:100%;height:auto}}

/* Material library above foreground; compact layer sidebar. */
#libraryPanel{padding:16px;border-bottom:1px solid #353b4a;outline:none}
#libraryPanel:focus{box-shadow:inset 0 0 0 2px #7c9cff}
#libraryPanel section{padding:0;border:0}.material-library{max-height:260px;overflow:auto}
.layers{padding:10px!important}.layers .notice{padding:8px}
@media(min-width:901px){main{grid-template-columns:280px minmax(0,1fr) 160px}.layer-actions{flex-wrap:wrap}.layer-actions button{flex:1}}

.layer>span{touch-action:none;cursor:grab;min-height:32px;display:flex;align-items:center}.layer.sorting{opacity:.6}.layer.drop-above{box-shadow:0 -3px #7c9cff}.layer.drop-below{box-shadow:0 3px #7c9cff}
.layer.hidden-layer>span{opacity:.45;text-decoration:line-through}.layer.hidden-layer{border-style:dashed}

/* v31 simplified control groups */
.material-actions{grid-template-columns:repeat(auto-fit,minmax(56px,1fr))}
.tool-module-body>section h2{font-size:13px;color:#aebeff}
#libraryPanel{padding:0;border:0}
.layer>span{cursor:text}

/* v38: keep checkbox labels readable in narrow control panels. */
.controls input[type=checkbox]{width:auto!important;min-width:16px;padding:0!important;flex:0 0 auto}.switch{justify-content:flex-start!important;min-width:0}.switch span{white-space:nowrap;word-break:keep-all;writing-mode:horizontal-tb}
