@keyframes spin{to{transform:rotate(360deg)}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{color:#e6e9f0;background:#0d1118;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;overflow:hidden}button{font-family:inherit}.app{flex-direction:column;height:100vh;display:flex}
.menubar{z-index:30;background:#11161f;border-bottom:1px solid #222a3a;flex-shrink:0;align-items:center;gap:2px;height:42px;padding:0 12px;display:flex;position:relative}.brand{letter-spacing:.3px;align-items:center;gap:8px;margin-right:14px;font-size:16px;font-weight:700;display:flex}.brand img{border-radius:6px;width:24px;height:24px}.menu{position:relative}.menu-btn{color:#c8cfdd;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.menu-btn:hover,.menu-btn.open{background:#1f2738}.menu-drop{z-index:40;background:#161c29;border:1px solid #2a3245;border-radius:9px;flex-direction:column;min-width:168px;padding:5px;display:flex;position:absolute;top:34px;left:0;box-shadow:0 8px 24px #00000073}.menu-drop button{color:#e6e9f0;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:7px 10px;font-size:13px;display:flex}.menu-drop button:hover{background:#2c4a8a}.menu-drop button:disabled{opacity:.4;cursor:default}.menu-drop .check{color:#7fd1ff;width:14px;font-size:9px}.menu-status{color:#f0b9a4;background:#2a1812;border-radius:999px;margin-left:auto;padding:2px 6px;font-size:11px}.menu-toggle-row{color:#e6e9f0;cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.menu-toggle-row:hover{background:#2c4a8a}.menu-toggle-row input{accent-color:#4a6cb3;width:14px;height:14px}.menu-toggle-row span{flex:1}.menu-toggle-row i{color:#7f8aa3;font-size:11px;font-style:normal}.menu-backdrop{z-index:25;position:fixed;inset:0}.menu-drop.wide{min-width:232px}.menu-input-row{gap:6px;padding:3px;display:flex}.menu-input-row .name-input{color:#e6e9f0;background:#0d1118;border:1px solid #2a3245;border-radius:7px;outline:none;flex:1;min-width:0;padding:6px 10px;font-size:12px}.menu-input-row .name-input:focus{border-color:#4a6cb3}.menu-input-row>button{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;flex-shrink:0;padding:6px 12px;font-size:12px}.menu-input-row>button:hover{border-color:#3d4a66}.menu-sep{background:#222a3a;height:1px;margin:4px 6px}.menu-sub{position:relative}.menu-sub-btn{width:100%}.menu-arrow{opacity:.6;margin-left:auto;font-size:11px}.menu-fly{z-index:41;background:#161c29;border:1px solid #2a3245;border-radius:9px;max-height:62vh;padding:6px;position:absolute;top:-4px;left:calc(100% + 4px);overflow-y:auto;box-shadow:0 8px 24px #00000073}.menu-fly .type-head{color:#7f8aa3;padding:4px 4px 5px;font-size:11px}.menu-fly .type-grid{grid-template-columns:repeat(4,64px);gap:4px;margin-bottom:4px;display:grid}.menu-fly .type-tile{color:#d4dae6;cursor:pointer;background:#1a2030;border:1px solid #0000;border-radius:7px;flex-direction:column;align-items:center;gap:4px;padding:6px 3px;font-size:11px;display:flex;overflow:hidden}.menu-fly .type-tile:hover{background:#2c4a8a;border-color:#3d4a66}.menu-fly .type-tile i{border:1px solid #ffffff40;border-radius:3px;flex:none;width:22px;height:14px}.menu-fly .type-tile span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.menu-color-row{color:#e6e9f0;align-items:center;gap:5px;padding:7px 10px;font-size:13px;display:flex}.menu-color-row>span{margin-right:3px}.menu-color-row .color-dot{cursor:pointer;border:1px solid #ffffff4d;border-radius:50%;flex:none;width:16px;height:16px;padding:0}.menu-color-row .color-dot:hover{transform:scale(1.2)}.menu-color-row .color-dot.active{border:2px solid #fff}.menu-color-row input[type=color]{cursor:pointer;background:0 0;border:1px solid #ffffff4d;border-radius:4px;flex:none;width:22px;height:20px;padding:0}.menu-color-row .color-reset{color:#aeb6c6;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:4px;flex:none;padding:1px 6px;font-size:11px}.menu-color-row .color-reset:hover{color:#fff;background:#2c4a8a}.menu-empty{color:#6b7488;padding:8px 10px;font-size:12px}.menu-scheme-row{align-items:stretch;gap:3px;display:flex}.menu-scheme-row>button:first-child{color:#e6e9f0;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:7px 10px;font-size:13px;display:flex}.menu-scheme-row>button:first-child:hover{background:#2c4a8a}.menu-scheme-row em{color:#6b7488;font-size:10px;font-style:normal}.menu-scheme-row .mini-del,.menu-scheme-row .mini-copy,.menu-scheme-row .mini-edit{color:#6b7488;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;width:24px;font-size:14px}.menu-scheme-row .mini-del:hover{color:#f0b9a4;background:#2a1812}.menu-scheme-row .mini-copy:hover,.menu-scheme-row .mini-edit:hover{color:#cfe0ff;background:#2c4a8a}
.optionsbar.bgbar{background:#0d1320}.menubar-right{align-items:center;gap:8px;margin-left:auto;display:flex}.sim-status{color:#6fcf8f;margin-right:6px;font-size:12px}.sim-status.paused{color:#e2b34a}.rec-dot{color:#e2603f;font-size:12px;animation:1s steps(2,end) infinite rec-blink}@keyframes rec-blink{50%{opacity:.3}}.menubar-right button{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;padding:5px 12px;font-size:12px}.menubar-right button:hover{border-color:#3d4a66}.menubar-right .save-btn{color:#eaf1ff;background:#2c4a8a;border-color:#4a6cb3;font-weight:600}.menubar-right .save-btn:hover{background:#345699}.menubar-right .save-btn:disabled{opacity:.6;cursor:default}.link-btn{color:#e6e9f0;background:#1a2030;border:1px solid #2a3245;border-radius:7px;padding:5px 12px;font-size:12px;text-decoration:none}.link-btn:hover{border-color:#3d4a66}.vec-row{color:#9aa3b5;align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.vec-row span{flex-shrink:0;width:32px}.vec-row input{color:#e6e9f0;background:#0d1118;border:1px solid #2a3245;border-radius:6px;outline:none;flex:1;width:0;min-width:0;padding:5px 6px;font-size:12px}.vec-row input:focus{border-color:#4a6cb3}.prim-list{flex-direction:column;gap:5px;display:flex}.prim-list .custom-comp>button:first-child{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;flex:1;justify-content:space-between;align-items:center;padding:7px 10px;font-size:12px;display:flex}.prim-list .custom-comp>button:first-child.active{background:#2c4a8a;border-color:#4a6cb3}.prim-list em{color:#6b7488;font-size:10px;font-style:normal}
.optionsbar{color:#9aa3b5;background:#0f141d;border-bottom:1px solid #222a3a;flex-shrink:0;align-items:center;gap:14px;height:40px;padding:0 14px;font-size:12px;display:flex}.opt-label{color:#c8cfdd;font-size:12px;font-weight:600}.seg{background:#0d1118;border:1px solid #222a3a;border-radius:7px;gap:2px;padding:2px;display:flex}.seg button{color:#9aa3b5;cursor:pointer;background:0 0;border:none;border-radius:5px;padding:4px 11px;font-size:12px}.seg button.active{color:#fff;background:#2c4a8a}.opt-row{white-space:nowrap;flex-shrink:0;align-items:center;gap:7px;display:flex}.opt-row input[type=range]{accent-color:#4a6cb3;width:100px}.opt-row em{color:#6b7488;min-width:26px;font-size:11px;font-style:normal}.opt-note{color:#6b7488;align-items:center;gap:5px;display:flex}.opt-note .swatch{border-radius:3px;width:10px;height:10px;display:inline-block}.opt-btn{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:6px;padding:4px 11px;font-size:12px}.viz-tabs{background:#0d1118;border:1px solid #222a3a;border-radius:7px;gap:2px;margin-left:auto;padding:2px;display:flex}.viz-tabs button{color:#9aa3b5;cursor:pointer;background:0 0;border:none;border-radius:5px;padding:4px 10px;font-size:12px}.viz-tabs button.active{color:#fff;background:#2c4a8a}.viz-group{align-items:center;gap:2px;display:flex}.viz-sep{background:#2a3245;width:1px;height:16px;margin:0 4px}.optionsbar .opt-num{color:#e6e9f0;background:#0d1118;border:1px solid #2a3245;border-radius:6px;outline:none;width:56px;padding:2px 6px;font-size:12px}.optionsbar .opt-num:focus{border-color:#4a6cb3}
.workspace{flex:1;min-height:0;display:flex}.toolbar{overscroll-behavior:contain;background:#11161f;border-right:1px solid #222a3a;flex-direction:column;flex-shrink:0;gap:6px;width:150px;min-height:0;padding:10px 8px;display:flex;overflow-y:auto}.toolbar button{color:#c8cfdd;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:9px 0;font-size:12px}.toolbar button:hover{background:#1a2030}.toolbar button.active{color:#fff;background:#2c4a8a;border-color:#4a6cb3}.toolbar button:disabled{opacity:.35;cursor:default}.tool-sep{background:#222a3a;height:1px;margin:4px 2px}.resizer{cursor:col-resize;touch-action:none;background:#11161f;flex:none;width:6px;transition:background .15s}.resizer:hover{background:#2c4a8a}.stage{background:#0d1118;flex:1;justify-content:center;align-items:center;min-width:0;padding:18px;display:flex;position:relative;overflow:hidden}.canvas-wrap{will-change:transform;background:#fff;border:1px solid #2a3245;border-radius:10px;width:100%;max-width:1200px;line-height:0;position:relative;overflow:hidden}.canvas-wrap.pan-ready,.canvas-wrap.pan-ready canvas{cursor:grab}.canvas-wrap .fp-layer{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;position:absolute}.canvas-wrap canvas{cursor:crosshair;touch-action:none;width:100%;height:auto;position:relative}.canvas-wrap .preview{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.canvas-wrap .preview line,.canvas-wrap .preview rect,.canvas-wrap .preview path{fill:none;stroke:#fff;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.canvas-wrap .preview.erase line,.canvas-wrap .preview.erase rect,.canvas-wrap .preview.erase path{stroke:#f06a5a}.canvas-wrap .preview.draft line{stroke:#7fd1ff;stroke-width:1.5px;stroke-dasharray:none}.canvas-wrap .preview.ruler line{stroke:#e2b34a;stroke-width:1.5px;stroke-dasharray:none}.canvas-wrap .measure-label{color:#ffe7b0;white-space:nowrap;pointer-events:none;transform-origin:50%;background:#0d111ad9;border:1px solid #4a6cb3;border-radius:6px;padding:1px 6px;font-size:12px;font-weight:600;position:absolute}.canvas-wrap .comp-flash{pointer-events:none;z-index:8;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.canvas-wrap .comp-flash rect{fill:#7fd1ff47;stroke:#7fd1ff;stroke-width:2px;vector-effect:non-scaling-stroke;animation:1s ease-in-out forwards comp-flash-pulse}@keyframes comp-flash-pulse{0%,to{opacity:0}15%,45%,75%{opacity:1}30%,60%{opacity:.15}}.canvas-wrap .fp-overlay{z-index:6;position:absolute;inset:0}.canvas-wrap.pan-ready .fp-overlay{pointer-events:none}.canvas-wrap .fp-select{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.canvas-wrap .fp-select polygon,.canvas-wrap .fp-select line{fill:none;stroke:#7fd1ff;stroke-width:1.5px;vector-effect:non-scaling-stroke}.canvas-wrap .fp-select.pick polygon{fill:#7fd1ff38}.canvas-wrap .fp-group{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.canvas-wrap .fp-group rect{fill:#7fd1ff1a;stroke:#7fd1ff;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.canvas-wrap .fp-handle{pointer-events:auto;z-index:7;touch-action:none;background:#fff;border:1.5px solid #2b6cb0;border-radius:2px;width:12px;height:12px;position:absolute}.canvas-wrap .fp-handle.scale{cursor:nwse-resize}.canvas-wrap .fp-handle.rotate{cursor:grab;background:#7fd1ff;border-radius:50%}.canvas-wrap .fp-handle.rotate:active{cursor:grabbing}.menu-scheme-row>button:first-child.active{color:#7fd1ff;background:#4a6cb32e}.canvas-wrap .line-handle{cursor:grab;touch-action:none;pointer-events:auto;z-index:12;background:#7fd1ff;border:2px solid #0d1118;border-radius:50%;width:14px;height:14px;position:absolute;box-shadow:0 1px 3px #0000008c}.canvas-wrap .line-handle:active{cursor:grabbing}.sel-box{pointer-events:none;z-index:4;background:#7fd1ff24;border:2px solid #7fd1ff;border-radius:2px;position:absolute;box-shadow:0 0 0 1px #0d111a99}.comp-label{color:#c8cfdd;pointer-events:auto;cursor:context-menu;white-space:nowrap;z-index:5;background:#0d111ab8;border-radius:6px;padding:2px 7px;font-size:10px;line-height:1.5;position:absolute;transform:translate(-50%,-50%)}.comp-label-input{text-align:center;z-index:12;border:1px solid #4a6cb3;outline:none;width:72px;font-family:inherit}.figure{cursor:grab;z-index:10;touch-action:none;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;display:flex;position:absolute;transform:translate(-50%,-100%)}.figure:active{cursor:grabbing}.figure svg{filter:drop-shadow(0 2px 4px #00000080);animation:2.4s ease-in-out infinite figure-bob}@keyframes figure-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5px)}}.bubble{color:#e6e9f0;pointer-events:none;white-space:normal;background:#11161feb;border:1px solid #3d4a66;border-radius:11px 11px 11px 3px;width:max-content;max-width:200px;margin-bottom:5px;padding:7px 11px;font-size:12px;line-height:1.55}.canvas-wrap .compass{pointer-events:none;width:72px;height:72px;position:absolute;top:12px;right:12px}
.fp-list{flex-direction:column;gap:6px;margin-top:8px;display:flex}.fp-row{cursor:pointer;background:#ffffff08;border:1px solid #0000;border-radius:6px;flex-direction:column;align-items:stretch;gap:5px;padding:6px;display:flex}.fp-head{align-items:center;gap:6px;min-width:0;display:flex}.fp-actions{flex-wrap:wrap;gap:4px;display:flex}.fp-row:hover{background:#ffffff0f}.fp-row.active{background:#4a6cb326;border-color:#4a6cb3}.fp-thumb{object-fit:cover;background:#fff;border-radius:4px;flex:none;width:30px;height:30px}.fp-name{color:#c8cfdd;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:11px;overflow:hidden}.fp-op{flex:none;width:100%}.fp-ic{color:#c8cfdd;cursor:pointer;background:#161b26;border:1px solid #2a3245;border-radius:4px;flex:none;width:22px;height:22px;padding:0;font-size:11px;line-height:1}.fp-ic:hover{background:#1f2738}.fp-ic.del:hover{background:#5a2b2b;border-color:#7a3a3a}
.view-controls{z-index:20;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:stretch;gap:8px;display:flex;position:absolute;bottom:14px;right:14px}.vc-zoom{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d111adb;border:1px solid #2a3245;border-radius:10px;align-items:center;gap:2px;padding:4px;display:flex}.vc-zoom button{color:#c8cfdd;cursor:pointer;background:0 0;border:none;border-radius:7px;min-width:26px;height:26px;padding:0 6px;font-size:14px}.vc-zoom button:hover{background:#1f2740}.vc-pct{text-align:center;color:#8b94a8;font-variant-numeric:tabular-nums;min-width:46px;font-size:12px}.vc-expand{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d111adb;border:1px solid #2a3245;border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:8px;display:flex}.vc-res{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d111adb;border:1px solid #2a3245;border-radius:10px;padding:4px;display:flex}.vc-res-btn{color:#c8cfdd;cursor:pointer;white-space:nowrap;font-variant-numeric:tabular-nums;background:0 0;border:none;border-radius:7px;width:100%;padding:4px 8px;font-size:12px}.vc-res-btn:hover{background:#1f2740}.vc-res-edit{align-items:center;gap:3px;display:flex}.vc-res-edit input{color:#e6e9f0;font-variant-numeric:tabular-nums;background:#0d1118;border:1px solid #2f3850;border-radius:6px;outline:none;width:52px;padding:4px 6px;font-size:12px}.vc-res-edit input:focus{border-color:#4a6cb3}.vc-res-edit span{color:#6f7a92;font-size:12px}.vc-res-edit button{color:#c8cfdd;cursor:pointer;background:#161c2a;border:1px solid #2f3850;border-radius:6px;min-width:24px;height:26px;font-size:12px}.vc-res-edit button[type=submit]{color:#fff;background:#2c4a8a;border-color:#4a6cb3}.vc-label{letter-spacing:1px;color:#8b94a8;font-size:11px}.expand-pad{grid-template-rows:repeat(3,22px);grid-template-columns:repeat(3,28px);place-items:center;gap:3px;display:grid}.expand-pad .ep{color:#c8cfdd;cursor:pointer;background:#161c2a;border:1px solid #2f3850;border-radius:6px;width:100%;height:100%;padding:0;font-size:13px;line-height:1}.expand-pad .ep:hover:not(:disabled){color:#fff;background:#2c4a8a;border-color:#4a6cb3}.expand-pad .ep:disabled{opacity:.3;cursor:default}.expand-pad .ep.up{grid-area:1/2}.expand-pad .ep.left{grid-area:2/1}.expand-pad .ep.size{color:#6f7a92;cursor:default;white-space:nowrap;font-variant-numeric:tabular-nums;background:0 0;border:none;grid-area:2/2;font-size:9px}.expand-pad .ep.right{grid-area:2/3}.expand-pad .ep.down{grid-area:3/2}.vc-reset{color:#c8cfdd;cursor:pointer;background:#161c2a;border:1px solid #2f3850;border-radius:6px;width:100%;padding:4px 0;font-size:11px}.vc-reset:hover:not(:disabled){background:#1f2740}.vc-reset:disabled{opacity:.35;cursor:default}
.panel{background:#11161f;border-left:1px solid #222a3a;flex-direction:column;flex-shrink:0;gap:18px;width:248px;padding:14px;display:flex;overflow-y:auto}.panel h3{color:#8b94a8;letter-spacing:1px;margin-bottom:10px;font-size:12px;font-weight:600}.panel section{border-bottom:1px solid #1b2231;padding-bottom:16px}.panel section:last-child{border-bottom:none}.mat-grid{grid-template-columns:repeat(2,1fr);gap:5px;display:grid}.mat-grid button{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;align-items:center;gap:7px;padding:7px 10px;font-size:12px;display:flex}.mat-grid button:hover{border-color:#3d4a66}.mat-grid button.active{background:#2c4a8a;border-color:#4a6cb3}.mat-grid button i{border-radius:3px;flex-shrink:0;width:10px;height:10px}.fan-dirs{gap:4px;margin-top:8px;display:flex}.door-opts{margin-top:8px}.door-opts .row,.door-opts .fan-dirs{flex-wrap:wrap}.mat-grid.custom{margin-top:8px}.custom-comp{gap:3px;min-width:0;display:flex}.custom-comp>button:first-child{flex:1;min-width:0}.custom-comp .del{color:#8b94a8;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:6px;flex-shrink:0;width:22px;padding:0;font-size:13px}.custom-comp .del:hover{color:#f0b9a4;border-color:#b3563a}.custom-comp .del.edit:hover{color:#7fd1ff;border-color:#3d6a96}.scheme-list{flex-direction:column;gap:5px;margin-top:10px;display:flex}.scheme-list .custom-comp>button:first-child{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.scheme-list .custom-comp>button:first-child:hover{border-color:#3d4a66}.scheme-list .custom-comp em{color:#6b7488;font-size:10px;font-style:normal}.panel .name-input{color:#e6e9f0;background:#0d1118;border:1px solid #2a3245;border-radius:7px;outline:none;flex:1;min-width:0;padding:6px 10px;font-size:12px}.panel .name-input:focus{border-color:#4a6cb3}
.modal-overlay{z-index:50;background:#05080e99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#11161f;border:1px solid #2a3245;border-radius:12px;width:720px;max-width:calc(100vw - 40px);max-height:calc(100vh - 60px);padding:18px 20px;overflow-y:auto}.modal h2{margin-bottom:14px;font-size:15px;font-weight:600}.modal.recipe-modal{width:380px}.modal.scale-modal{width:420px}.scale-modal .scale-row{color:#c8cfdd;align-items:center;gap:8px;margin:12px 0;font-size:13px;display:flex}.scale-modal .scale-row .name-input{flex:0 0 120px}.editor-body{flex-wrap:wrap;gap:18px;display:flex}.editor-left{flex-shrink:0}.editor-left canvas{cursor:crosshair;touch-action:none;border:1px solid #2a3245;border-radius:8px;display:block}.editor-left .btn-row{margin-top:10px}.editor-left .hint{max-width:336px}.editor-right{flex-direction:column;flex:1;gap:2px;min-width:240px;display:flex}.editor-right .row{color:#9aa3b5;align-items:center;gap:8px;margin-top:6px;font-size:12px;display:flex}.editor-right .row input[type=range]{accent-color:#4a6cb3;flex:1;min-width:0}.editor-right .row em{color:#6b7488;text-align:right;width:34px;font-size:11px;font-style:normal}.editor-right .fan-dirs{flex:1;margin-top:0}.name-input{color:#e6e9f0;background:#0d1118;border:1px solid #2a3245;border-radius:7px;outline:none;flex:1;padding:6px 10px;font-size:13px}.name-input:focus{border-color:#4a6cb3}.modal .btn-row button:disabled{opacity:.4;cursor:default}.modal .btn-row button.active{background:#2c4a8a;border-color:#4a6cb3}.fan-dirs button{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:6px;flex:1;padding:5px 0;font-size:12px}.fan-dirs button.active{background:#2c4a8a;border-color:#4a6cb3}.dial-wrap{justify-content:center;margin-bottom:8px;display:flex}.wind-dial{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:132px;height:132px}.wind-dial:active{cursor:grabbing}.panel .row{color:#9aa3b5;align-items:center;gap:8px;margin-top:8px;font-size:12px;display:flex}.panel .row input[type=range]{accent-color:#4a6cb3;flex:1;min-width:0}.panel .row em{color:#6b7488;text-align:right;width:30px;font-size:11px;font-style:normal}.btn-row{gap:6px;display:flex}.btn-row button{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:7px;flex:1;padding:7px 0;font-size:12px}.btn-row button:hover{border-color:#3d4a66}.hint{color:#6b7488;margin-top:8px;font-size:11px;line-height:1.6}.hint.air-warn{color:#e2b34a}.action-picker{flex-direction:column;gap:2px;display:flex}.mode-toggle{align-self:flex-end;margin-bottom:2px}.action-list{flex-direction:column;gap:6px;margin:4px 0;display:flex}.action-card{color:#e6e9f0;cursor:pointer;text-align:left;background:#1a2030;border:1px solid #2a3245;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.action-card:hover{border-color:#3d4a66}.action-card.active{background:#2c4a8a;border-color:#4a6cb3}.action-name{font-size:13px;font-weight:600}.action-desc{color:#9aa3b5;font-size:11px}.action-card.active .action-desc{color:#c8d2e6}.adv-toggle{color:#8b94a8;text-align:left;cursor:pointer;background:0 0;border:none;margin-top:8px;padding:5px 2px;font-size:12px}.adv-toggle:hover{color:#c8d2e6}.adv-panel{border-left:2px solid #2a3245;flex-direction:column;gap:2px;padding:4px 0 2px 8px;display:flex}.edge-picker{grid-template-rows:repeat(3,48px);grid-template-columns:repeat(3,64px);gap:8px;display:grid}.edge-btn{color:#e6e9f0;cursor:pointer;background:#1a2030;border:1px solid #2a3245;border-radius:8px;font-size:14px}.edge-btn:hover{border-color:#3d4a66}.edge-btn.active{background:#2c4a8a;border-color:#4a6cb3}.edge-btn.up{grid-area:1/2}.edge-btn.left{grid-area:2/1}.edge-btn.right{grid-area:2/3}.edge-btn.down{grid-area:3/2}.edge-center{color:#9aa3b5;text-align:center;border:1px dashed #2a3245;border-radius:8px;grid-area:2/2;justify-content:center;align-items:center;padding:2px;font-size:12px;display:flex;overflow:hidden}
.statusbar{color:#6b7488;background:#11161f;border-top:1px solid #222a3a;flex-shrink:0;justify-content:space-between;align-items:center;height:26px;padding:0 14px;font-size:11px;display:flex}.warn{color:#f0b9a4;background:#2a1812;border:1px solid #b3563a;border-radius:8px;margin:10px 16px 0;padding:10px 14px;font-size:13px}

