:root{--accent: #ffffff;--accent-r: 255;--accent-g: 255;--accent-b: 255;--accent-glow: rgba(255, 255, 255, .6);--bg: #141416;--bg-soft: #1c1c20;--glass-bg: rgba(28, 28, 32, .72);--glass-border: rgba(255, 255, 255, .1);--text: rgba(255, 255, 255, .55);--text-h: #f4f4f5;--pill-bg: rgba(255, 255, 255, .06);--pill-active-bg: #f4f4f5;--pill-active-text: #111;--card-shadow: 0 24px 48px rgba(0, 0, 0, .35);--stage-bg: #2a7e43;--radius-xl: 28px;--radius-lg: 22px;--radius-md: 14px;--radius-pill: 999px;--blur: blur(18px)}*{box-sizing:border-box;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;outline:none;margin:0;padding:0}body{font-family:Outfit,Inter,system-ui,sans-serif;background:var(--bg);overflow:hidden;width:100vw;height:100vh;color:var(--text-h)}button,input,select,textarea{font-family:inherit}#root{width:100vw;height:100vh}.tactical-app{width:100vw;height:100vh;display:grid;grid-template-columns:280px 1fr;grid-template-rows:auto 1fr auto;gap:10px;padding:10px 12px;background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.35),transparent 35%),radial-gradient(circle at 80% 90%,rgba(0,0,0,.04),transparent 30%),var(--bg)}.top-nav{grid-column:1 / -1;display:grid;grid-template-columns:minmax(max-content,1fr) minmax(0,auto) minmax(max-content,1fr);align-items:center;gap:10px;position:relative;min-height:36px;pointer-events:auto;z-index:1000}.app-logo{justify-self:start;display:inline-flex;align-items:center;justify-content:center;height:34px;padding:4px 10px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--card-shadow);cursor:pointer;text-decoration:none;transition:transform .15s ease}.app-logo:hover{transform:scale(1.03)}.app-logo img{display:block;height:22px;width:auto;object-fit:contain}.top-nav-actions{justify-self:end;display:inline-flex;align-items:center;gap:6px}.lang-toggle-pill,.theme-toggle-pill{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--card-shadow)}.theme-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--text);cursor:pointer;transition:all .15s ease}.lang-btn{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 6px;border:none;border-radius:999px;background:transparent;color:var(--text);font-size:11px;font-weight:600;letter-spacing:.04em;cursor:pointer;transition:all .15s ease}.lang-btn:hover{color:var(--text-h);background:var(--pill-bg)}.lang-btn.active{color:var(--pill-active-text);background:var(--pill-active-bg);box-shadow:0 2px 8px #0000001f}.theme-icon-btn svg{width:16px;height:16px}.theme-icon-btn:hover{color:var(--text-h);background:var(--pill-bg)}.theme-icon-btn.active{color:var(--pill-active-text);background:var(--pill-active-bg);box-shadow:0 2px 8px #0000001f}.theme-icon-btn:first-child.active{color:#111;background:#fbbf24}.theme-icon-btn:last-child.active{color:#e0e7ff;background:#312e81}.ui-left{grid-row:2;min-height:0;overflow:hidden;pointer-events:auto;z-index:999}.stage-frame{grid-row:2;position:relative;min-width:0;min-height:0;border-radius:var(--radius-xl);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--card-shadow);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);overflow:hidden;pointer-events:auto}.stage-viewport{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--stage-bg);border-radius:calc(var(--radius-xl) - 2px)}.stage-viewport canvas{cursor:default}.view-pan-pad{position:absolute;right:14px;bottom:14px;z-index:24;display:grid;grid-template-columns:36px 36px 36px;grid-template-rows:36px 36px 36px;gap:4px;padding:8px;border-radius:16px;background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--card-shadow);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);pointer-events:auto;-webkit-user-select:none;user-select:none;touch-action:none}.view-pan-btn{width:36px;height:36px;border:1px solid transparent;border-radius:10px;background:var(--pill-bg);color:var(--text-h);font-size:12px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:background .15s ease,opacity .15s ease,transform .1s ease}.view-pan-btn:hover:not(:disabled){background:rgba(var(--accent-r),var(--accent-g),var(--accent-b),.18)}.view-pan-btn:active:not(:disabled){transform:scale(.94)}.view-pan-btn:disabled{opacity:.28;cursor:default}.view-pan-up{grid-column:2;grid-row:1}.view-pan-left{grid-column:1;grid-row:2}.view-pan-right{grid-column:3;grid-row:2}.view-pan-down{grid-column:2;grid-row:3}.export-frame{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.82);border-radius:6px;box-shadow:0 0 0 9999px #00000029,0 0 0 1px #00000047,inset 0 0 0 1px #0000003d;pointer-events:none;z-index:20}.export-frame.square{height:92%;max-width:92%}.export-frame.wide{width:92%;max-height:92%}[data-theme=light] .export-frame{border-color:#111111b8;box-shadow:0 0 0 9999px #fff3,0 0 0 1px #ffffffb3,inset 0 0 0 1px #ffffffb3}.bottom-dock{grid-column:1 / -1;display:flex;justify-content:center;pointer-events:auto;z-index:1000}.dock-pill{width:100%;max-width:100%;padding:5px 8px;align-items:center;flex-wrap:wrap;gap:2px 4px}.dock-group{display:inline-flex;align-items:center;gap:4px}.dock-view-controls{gap:10px;flex-wrap:wrap;row-gap:4px}.dock-control{display:inline-flex;align-items:center;gap:5px}.dock-control label{font-size:11px;font-weight:500;color:var(--text);white-space:nowrap}.dock-control input[type=range]{width:64px;height:3px;accent-color:var(--pill-active-bg);cursor:pointer}.goal-size-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 2px 2px}.goal-size-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px 6px;border:1px solid rgba(128,128,128,.12);border-radius:12px;background:var(--pill-bg);color:var(--text-h);font-family:inherit;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .12s}.goal-size-option:hover{border-color:#80808038;transform:translateY(-1px)}.goal-size-option.active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent}.goal-size-option.active .goal-size-icon{opacity:1}.goal-size-icon{display:flex;align-items:center;justify-content:center;height:28px;opacity:.85}.goal-size-label{font-size:10px;font-weight:600;letter-spacing:.02em}.goal-add-btn{width:100%;margin-top:8px;justify-content:center}.goal-add-icon{background:var(--pill-active-bg);color:var(--pill-active-text);font-size:17px;font-weight:600}.dock-color-control,.color-picker-wrap{position:relative}.color-picker-trigger{width:22px;height:22px;padding:0;border:1px solid rgba(128,128,128,.2);border-radius:50%;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff26;transition:transform .12s ease}.color-picker-trigger:hover{transform:scale(1.06)}.color-picker-popover{z-index:1200;padding:10px;border-radius:12px;background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--card-shadow);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur)}.color-picker-panel{width:232px;display:flex;flex-direction:column;gap:8px}.color-picker-top{display:flex;align-items:center;gap:8px}.color-picker-eyedropper{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:var(--text-h);cursor:pointer;flex-shrink:0}.color-picker-eyedropper:hover{background:var(--pill-bg)}.color-picker-preview{width:28px;height:28px;border-radius:50%;border:1px solid rgba(128,128,128,.2);flex-shrink:0;box-shadow:inset 0 0 0 1px #ffffff1f}.color-picker-hue{position:relative;flex:1;height:14px;border-radius:7px;overflow:hidden}.color-picker-hue-track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.color-picker-hue input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.color-picker-hue-thumb{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000026;transform:translate(-50%,-50%);pointer-events:none}.color-picker-inputs{display:flex;align-items:flex-end;gap:6px}.color-picker-channel{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.color-picker-channel-hex{flex:1.6}.color-picker-channel input{width:100%;height:26px;border:1px solid rgba(128,128,128,.2);border-radius:6px;background:var(--pill-bg);color:var(--text-h);font-family:inherit;font-size:11px;font-weight:600;text-align:center;padding:0 4px}.color-picker-channel span{font-size:10px;font-weight:600;color:var(--text);letter-spacing:.04em}.color-picker-mode{width:22px;height:26px;border:none;border-radius:6px;background:transparent;color:var(--text);font-family:inherit;font-size:11px;cursor:pointer;flex-shrink:0;margin-bottom:1px}.color-picker-mode:hover{background:var(--pill-bg);color:var(--text-h)}.dock-value{font-size:11px;font-weight:600;color:var(--text-h);min-width:30px;text-align:right}.dock-angle-field{display:inline-flex;align-items:center;gap:1px;min-width:42px;color:var(--text-h);font-size:11px;font-weight:600}.dock-angle-input{width:38px;height:22px;margin:0;padding:0 2px;border:1px solid rgba(128,128,128,.22);border-radius:6px;background:var(--pill-bg);color:var(--text-h);font-family:inherit;font-size:11px;font-weight:600;text-align:right;-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.dock-angle-input::-webkit-outer-spin-button,.dock-angle-input::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.dock-angle-input:focus{outline:1px solid var(--pill-active-bg);outline-offset:1px}.dock-segment{display:inline-flex;gap:2px;padding:2px;border-radius:999px;background:var(--pill-bg)}.dock-segment-btn{border:none;border-radius:999px;background:transparent;color:var(--text);font-size:11px;font-weight:600;padding:4px 8px;cursor:pointer;font-family:inherit}.dock-segment-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text)}.dock-divider{width:1px;height:22px;background:#80808033;margin:0 6px;flex-shrink:0}.dock-btn{border:1px solid color-mix(in srgb,var(--text-h) 12%,transparent);background:var(--pill-bg);color:var(--text-h);font-family:inherit;font-size:12px;font-weight:600;padding:7px 12px;border-radius:var(--radius-pill);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;white-space:nowrap;line-height:1.1}.dock-btn:hover{background:color-mix(in srgb,var(--pill-bg) 65%,var(--text-h) 8%);border-color:color-mix(in srgb,var(--text-h) 22%,transparent);color:var(--text-h)}.dock-btn:disabled{opacity:.55;cursor:default}.dock-btn.icon-btn{min-width:28px;padding:6px 8px;font-size:14px;font-weight:600}.dock-btn-soft{background:color-mix(in srgb,var(--pill-bg) 85%,transparent)}.dock-btn-soft.is-active{background:color-mix(in srgb,var(--accent, #3b9eff) 22%,var(--pill-bg));border-color:color-mix(in srgb,var(--accent, #3b9eff) 45%,transparent)}.dock-btn-primary{background:var(--pill-active-bg);border-color:transparent;color:var(--pill-active-text);box-shadow:0 1px 2px #0000001f}.dock-btn-primary:hover{opacity:.92;background:var(--pill-active-bg);color:var(--pill-active-text)}.dock-btn-accent{background:color-mix(in srgb,var(--accent, #3b9eff) 18%,var(--pill-bg));border-color:color-mix(in srgb,var(--accent, #3b9eff) 42%,transparent)}.dock-btn-accent:hover{background:color-mix(in srgb,var(--accent, #3b9eff) 28%,var(--pill-bg))}.dock-btn-save{background:color-mix(in srgb,#2a8a58 18%,var(--pill-bg));border-color:color-mix(in srgb,#2a8a58 40%,transparent);color:#1f7a4d}[data-theme=dark] .dock-btn-save{color:#6dcea0}.dock-btn-save:hover{background:color-mix(in srgb,#2a8a58 28%,var(--pill-bg))}.dock-btn-danger{background:color-mix(in srgb,#e55 14%,var(--pill-bg));border-color:color-mix(in srgb,#e55 35%,transparent);color:#c44}[data-theme=dark] .dock-btn-danger{color:#f08888}.dock-btn-danger:hover{background:color-mix(in srgb,#e55 24%,var(--pill-bg))}.dock-btn.primary{background:var(--pill-active-bg);border-color:transparent;color:var(--pill-active-text)}.dock-btn.primary:hover{opacity:.9}.dock-btn.action-save{color:#2a8}.dock-btn.danger-text{color:#e66}.dock-btn.ghost-text{color:var(--text);opacity:.7}.dock-label{font-size:12px;font-weight:600;color:var(--text-h);min-width:38px;text-align:center}.dock-chip{font-size:11px;font-weight:500;color:var(--text-h);padding:4px 10px;border-radius:var(--radius-pill);background:var(--pill-bg)}.dock-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:28px;border:1px solid color-mix(in srgb,var(--text-h) 12%,transparent);background-color:color-mix(in srgb,var(--pill-bg) 85%,transparent);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;color:var(--text-h)}.dock-select:hover,.dock-select:focus{background:var(--pill-bg);color:var(--text-h)}.dock-select option{background:var(--bg-soft);color:var(--text-h)}.dock-actions{margin-left:auto}.glass-card,.glass-pill,.glass-chip{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--card-shadow);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur)}.glass-card{border-radius:var(--radius-lg);padding:16px}.glass-pill{border-radius:var(--radius-pill);padding:3px;display:inline-flex;gap:2px;flex-wrap:wrap;justify-content:center}.nav-pill{justify-self:center;padding:2px 3px}.glass-chip{border-radius:var(--radius-pill);padding:8px 16px;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--text-h)}.pill-btn{border:none;background:transparent;color:var(--text);font-family:inherit;font-size:12px;font-weight:500;padding:6px 14px;border-radius:var(--radius-pill);cursor:pointer;transition:all .2s ease;white-space:nowrap}.pill-btn:hover{background:var(--pill-bg);color:var(--text-h)}.pill-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text);box-shadow:0 8px 20px #0000001f}.drawer-rail{display:flex;flex-direction:column;gap:12px;height:100%;overflow-y:auto;overflow-x:hidden;padding-right:4px;scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.3) transparent}.drawer-rail::-webkit-scrollbar{width:4px}.drawer-rail::-webkit-scrollbar-thumb{background:#8080804d;border-radius:4px}.card-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.card-head.compact{flex-direction:column;gap:2px;margin-bottom:10px}.card-head h2{font-size:15px;font-weight:600;letter-spacing:-.02em;color:var(--text-h);margin:0}.card-head p{font-size:11px;color:var(--text);margin-top:0}.entity-card,.tool-card{padding:12px}.tool-panel{display:flex;flex-direction:column;gap:6px}.tool-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tool-divider{width:1px;height:14px;background:#80808033;margin:0 2px;flex-shrink:0}.tool-chip{flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:3px;border:1px solid rgba(128,128,128,.12);border-radius:8px;padding:5px 6px;font-family:inherit;font-size:10px;font-weight:600;color:var(--text-h);background:var(--pill-bg);cursor:pointer;white-space:nowrap;transition:background .12s,color .12s,border-color .12s}.tool-chip:hover:not(:disabled){border-color:#80808038}.tool-chip.active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent}.tool-chip:disabled{opacity:.4;cursor:not-allowed}.tool-chip-muted{flex:.7;color:var(--text);font-weight:500}.tool-chip-muted:not(:disabled):hover{color:var(--text-h)}.tool-chip-zone .tool-chip-icon{color:#ffc107;font-size:11px;line-height:1}.tool-chip-zone.active .tool-chip-icon{color:inherit}.tool-chip-glyph{font-size:11px;font-weight:700;color:var(--chip-accent, #3b9eff);line-height:1}.tool-chip.active .tool-chip-glyph{color:inherit}.tool-chip-glyph.dashed{opacity:.75}.tool-chip-glyph.line{font-size:10px}.tool-range{flex:1;min-width:60px;height:3px;accent-color:var(--pill-active-bg);cursor:pointer}.tool-range-val{font-size:10px;font-weight:600;color:var(--text);min-width:28px;text-align:right;flex-shrink:0}.draw-hint.compact{margin-top:0;font-size:10px;line-height:1.3;text-align:left;padding:0 2px}.zone-list{list-style:none;display:flex;flex-direction:column;gap:4px}.zone-list.compact{gap:3px;margin-top:2px}.zone-list-item{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border:1px solid transparent;border-radius:6px;background:var(--pill-bg);font-family:inherit;cursor:pointer;text-align:left;transition:background .12s,border-color .12s}.zone-list-item:hover{border-color:#8080802e}.zone-list-item.active{background:var(--pill-active-bg);border-color:transparent}.zone-list-item.active .zone-list-name{color:var(--pill-active-text)}.zone-list-item.active .zone-list-remove{color:var(--pill-active-text);opacity:.7}.zone-editor{display:flex;flex-direction:column;gap:8px;padding-top:6px;margin-top:4px;border-top:1px solid rgba(128,128,128,.12)}.zone-editor-block{display:flex;flex-direction:column;gap:5px}.zone-draw-options{padding:6px 0;border-top:1px solid rgba(128,128,128,.12);border-bottom:1px solid rgba(128,128,128,.12)}.zone-editor-head{font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text)}.zone-editor-row{display:flex;align-items:center;gap:6px}.zone-editor-mini-label{font-size:10px;font-weight:500;color:var(--text);white-space:nowrap;min-width:32px}.zone-list-swatch{width:12px;height:12px;border-radius:3px;background:#ffc10773;border:1px solid #ffc107;flex-shrink:0}.zone-list-swatch.is-none{background:linear-gradient(45deg,#bbb 25%,transparent 25%),linear-gradient(-45deg,#bbb 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#bbb 75%),linear-gradient(-45deg,transparent 75%,#bbb 75%);background-size:5px 5px;background-position:0 0,0 2.5px,2.5px -2.5px,-2.5px 0;background-color:#eee}.zone-list-name{flex:1;font-size:11px;font-weight:600;color:var(--text-h)}.zone-list-remove{color:var(--text);font-size:12px;cursor:pointer;padding:2px 4px;border-radius:4px;flex-shrink:0}.zone-list-remove:hover{opacity:1}.entity-add-list{display:flex;flex-direction:column;gap:6px}.entity-add-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid rgba(128,128,128,.12);border-radius:12px;background:var(--pill-bg)}.entity-add-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.entity-add-label{font-size:11px;font-weight:600;color:var(--text-h)}.entity-add-btn{flex-shrink:0;width:28px;height:28px;border:1px solid color-mix(in srgb,var(--chip-accent) 35%,transparent);border-radius:8px;background:color-mix(in srgb,var(--chip-accent) 12%,var(--pill-bg));color:var(--text-h);font-size:16px;font-weight:500;line-height:1;cursor:pointer;font-family:inherit;transition:all .15s ease}.entity-add-btn:hover{background:color-mix(in srgb,var(--chip-accent) 22%,var(--pill-bg));transform:scale(1.05)}.entity-simple-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.entity-simple-btn{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid rgba(128,128,128,.12);border-radius:12px;background:var(--pill-bg);cursor:pointer;font-family:inherit;font-size:11px;font-weight:500;color:var(--text-h);transition:all .15s ease}.entity-simple-btn:hover{border-color:color-mix(in srgb,var(--chip-accent) 35%,transparent);background:color-mix(in srgb,var(--chip-accent) 10%,var(--pill-bg))}.item-color-bar{display:flex;align-items:center;gap:8px;padding:6px 8px;margin-bottom:8px;border:1px solid rgba(128,128,128,.12);border-radius:12px;background:var(--pill-bg)}.item-picker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.item-picker-chip{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;border:1px solid rgba(128,128,128,.12);border-radius:12px;background:var(--pill-bg);cursor:pointer;font-family:inherit;transition:all .15s ease}.item-picker-chip:hover{background:color-mix(in srgb,var(--chip-accent) 12%,var(--pill-bg));border-color:color-mix(in srgb,var(--chip-accent) 30%,transparent);transform:translateY(-1px)}.item-picker-label{font-size:10px;font-weight:600;color:var(--text-h);text-align:center;line-height:1.2}.entity-thumb{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;background:radial-gradient(circle at 50% 80%,color-mix(in srgb,var(--chip-accent) 18%,transparent),transparent 70%),#0000001f;border:1px solid color-mix(in srgb,var(--chip-accent) 30%,transparent)}.entity-thumb-sm{width:30px;height:30px;border-radius:8px}.entity-thumb img,.entity-thumb svg{width:100%;height:100%;object-fit:contain;object-position:center bottom;pointer-events:none}.entity-thumb img{transform:scale(1.15)}.entity-thumb-svg svg{transform:none;object-position:center}.color-swatches{display:flex;gap:5px;flex-wrap:wrap}.color-field{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.color-swatch{width:16px;height:16px;padding:0;border:2px solid transparent;border-radius:50%;background:var(--swatch-color);cursor:pointer;transition:all .12s ease;box-shadow:inset 0 0 0 1px #00000026}.color-swatch:hover{transform:scale(1.12)}.color-swatch.active{border-color:var(--text-h);box-shadow:0 0 0 2px color-mix(in srgb,var(--swatch-color) 40%,transparent)}.color-swatch-none{background:linear-gradient(45deg,#bbb 25%,transparent 25%),linear-gradient(-45deg,#bbb 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#bbb 75%),linear-gradient(-45deg,transparent 75%,#bbb 75%);background-size:6px 6px;background-position:0 0,0 3px,3px -3px,-3px 0;background-color:#eee;box-shadow:inset 0 0 0 1px #0003}.color-swatch-none.active{box-shadow:inset 0 0 0 1px #0003,0 0 0 2px color-mix(in srgb,var(--text-h) 35%,transparent)}.color-field.is-none{opacity:1}.panel-color{display:flex;align-items:center;gap:8px;justify-content:space-between}.glass-btn{flex:1;border:1px solid rgba(128,128,128,.15);background:var(--pill-bg);color:var(--text-h);border-radius:var(--radius-md);padding:10px 14px;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:all .2s ease;white-space:nowrap}.glass-btn:hover{transform:translateY(-1px);box-shadow:0 10px 20px #00000014}.glass-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.glass-btn.primary{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent;font-weight:600}.glass-btn.ghost{background:transparent}.glass-btn.danger{color:#e55;border-color:#e5555540;background:#e5555514}.glass-btn.action-save{color:#2a8;border-color:#2a886633;background:#2a886614}.glass-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.control-group{display:flex;flex-direction:column;gap:10px}.control-row{display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:8px}.control-row label{font-size:12px;color:var(--text);white-space:nowrap}.control-row input[type=range]{width:100%;height:4px;accent-color:var(--pill-active-bg);cursor:pointer}.color-input{width:100%;height:28px;padding:2px;border:1px solid rgba(128,128,128,.15);border-radius:10px;cursor:pointer;background:var(--pill-bg);grid-column:2 / span 2}.value-tag{font-size:11px;font-weight:600;color:var(--text-h);min-width:32px;text-align:right}.draw-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.draw-btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 6px;background:var(--pill-bg);border:1px solid rgba(128,128,128,.12);border-radius:var(--radius-md);cursor:pointer;font-size:12px;color:var(--text);font-family:inherit;transition:all .2s ease}.draw-btn:hover{color:var(--text-h);box-shadow:0 8px 18px #0000000f}.draw-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent}.arrow-icon{font-size:14px;font-weight:700}.arrow-icon.blue-solid,.arrow-icon.blue-dash{color:#0af}.arrow-icon.red-solid,.arrow-icon.red-dash{color:#f55}.draw-btn.active .arrow-icon{color:inherit}.draw-hint{font-size:11px;color:var(--text);text-align:center;margin-top:4px}.arrow-style-row,.panel-style-row{display:flex;gap:4px}.panel-style-row{padding:6px 10px;gap:6px}.goal-dir-row{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:6px}.layer-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}.layer-row .style-chip,.goal-dir-row .style-chip{width:100%;border-radius:8px;padding:6px 8px}.style-chip{border:1px solid rgba(128,128,128,.15);background:var(--pill-bg);color:var(--text);font-family:inherit;font-size:10px;font-weight:500;padding:4px 10px;border-radius:999px;cursor:pointer;transition:all .12s ease}.style-chip.active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent}.entity-add-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text)}.arrow-thumb-preview{display:flex;align-items:center;justify-content:center}.arrow-preview-icon{font-size:18px;font-weight:700;line-height:1}.stroke-tool-row{display:flex;gap:4px;padding:0 10px 8px}.stroke-chip{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(128,128,128,.12);border-radius:999px;background:var(--pill-bg);color:var(--text);font-family:inherit;font-size:10px;font-weight:600;padding:5px 8px;cursor:pointer;transition:all .12s ease}.stroke-chip:hover{color:var(--text-h);border-color:color-mix(in srgb,var(--chip-accent, #3b9eff) 30%,transparent)}.stroke-chip.active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent}.stroke-chip-icon{font-size:13px;font-weight:700;color:var(--chip-accent, #3b9eff);line-height:1}.stroke-chip.active .stroke-chip-icon{color:inherit}.stroke-chip-icon.dashed{opacity:.8;letter-spacing:-1px}.stroke-chip-icon.line{font-size:11px;letter-spacing:0}.player-selection-ring{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2.5px solid var(--accent, #fff);box-shadow:0 0 10px var(--accent-glow, rgba(255, 255, 255, .5));pointer-events:none}.arrow-preview-icon.dashed{opacity:.75;letter-spacing:-2px}.selection-panel{position:absolute;left:12px;top:12px;transform:none;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);z-index:30;min-width:200px;max-width:min(260px,calc(100% - 24px));max-height:min(70%,calc(100% - 24px));overflow-y:auto;pointer-events:auto;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--card-shadow)}.action-selector{display:flex;border-bottom:1px solid rgba(128,128,128,.12);padding:8px;gap:4px}.action-btn{flex:1;text-align:center;padding:7px 4px;border-radius:10px;font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;color:var(--text);transition:all .15s;background:transparent;border:1px solid transparent}.action-btn:hover{background:var(--pill-bg);color:var(--text-h)}.action-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text)}.pass-dir-row{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px 8px 8px}.dir-btn{text-align:center;padding:4px;border-radius:8px;font-family:inherit;font-size:12px;font-weight:600;line-height:1;cursor:pointer;color:var(--text);transition:all .15s;background:var(--pill-bg);border:1px solid rgba(128,128,128,.1)}.dir-btn:hover{color:var(--text-h)}.dir-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text)}.arrow-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:8px}.arrow-grid-pass .arrow-btn{font-size:11px;padding:5px 2px}.arrow-btn{text-align:center;padding:6px 4px;border-radius:8px;font-family:inherit;font-size:12px;font-weight:600;line-height:1;cursor:pointer;color:var(--text);transition:all .15s;background:var(--pill-bg);border:1px solid rgba(128,128,128,.1)}.arrow-btn:hover{color:var(--text-h)}.arrow-btn.active{background:var(--pill-active-bg);color:var(--pill-active-text)}.arrow-btn-empty{visibility:hidden;pointer-events:none}.arrow-btn:disabled{opacity:.35;cursor:default}.delete-btn{width:100%;padding:10px;background:#e555551f;color:#e55;border:1px solid rgba(229,85,85,.2);border-radius:var(--radius-md);cursor:pointer;font-size:12px;font-weight:600;font-family:inherit}.delete-btn:hover{background:#e5555533}.panel-close-btn{background:var(--pill-bg);border:none;color:var(--text);font-size:13px;line-height:1;cursor:pointer;padding:6px 8px;border-radius:10px;font-family:inherit}.panel-close-btn:hover{color:var(--text-h)}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px}.panel-header-end{justify-content:flex-end}.panel-section{padding:6px 10px}.panel-scale{display:flex;align-items:center;gap:8px}.panel-scale-block{display:flex;flex-direction:column;gap:6px}.panel-apply-all{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.panel-apply-all input{accent-color:var(--accent, #3b9eff);cursor:pointer}.panel-label{font-size:11px;color:var(--text)}@media(max-width:1100px){.tactical-app{grid-template-columns:240px 1fr;padding:10px;gap:10px}.dock-actions{margin-left:0;width:100%;justify-content:flex-end;flex-wrap:wrap}}@media(max-width:860px){html,body{overflow-x:hidden;overflow-y:auto;height:auto;min-height:100dvh;-webkit-overflow-scrolling:touch}#root{height:auto;min-height:100dvh;overflow:visible}.tactical-app{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;overflow:visible;height:auto;min-height:100dvh;width:100%;max-width:100vw;padding-bottom:max(12px,env(safe-area-inset-bottom))}.ui-left{grid-row:2;max-height:none;overflow:visible}.drawer-rail{overflow:visible;max-height:none}.stage-frame{grid-row:3;height:min(52vh,420px);min-height:280px;flex-shrink:0;touch-action:pan-y}.stage-viewport,.stage-viewport canvas{touch-action:pan-y}.bottom-dock{grid-row:4;position:sticky;bottom:0;z-index:1001;padding-top:6px;background:linear-gradient(to top,var(--bg) 72%,transparent)}.top-nav{grid-template-columns:auto 1fr auto;grid-template-areas:"logo . actions" "nav nav nav";row-gap:8px}.app-logo{grid-area:logo}.top-nav-actions{grid-area:actions}.nav-pill{grid-area:nav;max-width:100%}}
