:root{--bg: #1a2535;--bg-panel: #243340;--bg-card: #2d3d50;--bg-input: #36485e;--border: #4a5d76;--border-light: #63789a;--text: #f0f4f8;--text-muted: #c4d2e0;--text-dim: #9aafc4;--primary: #4a9fb8;--primary-hover: #5cb5cc;--primary-light: #9dd6e4;--accent: #5D396E;--success: #3eaf85;--success-light: #7fd8b5;--warning: #e0a84e;--warning-light: #f0cf83;--error: #e07070;--error-light: #ff9999;--radius: 10px;--radius-lg: 16px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}.app-shell{display:grid;grid-template-columns:440px 1fr;height:100vh;overflow:hidden}.desktop-panel{height:100vh;overflow-y:auto;overflow-x:hidden}.desktop-panel.mobile-show{display:block}.mobile-tabs{display:none}@media (max-width: 900px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}.mobile-tabs{display:flex;position:sticky;top:0;z-index:100;background:var(--bg-panel);border-bottom:1px solid var(--border)}.mobile-tabs button{flex:1;padding:16px;border:none;background:none;color:var(--text-muted);font-size:15px;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;transition:color .2s,border-color .2s}.mobile-tabs button.active{color:var(--primary-light);border-bottom-color:var(--primary)}.desktop-panel{display:none}.desktop-panel.mobile-show{display:block;height:calc(100vh - 54px)}}.assistant-panel{background:var(--bg-panel);padding:24px 20px;min-height:100%;border-right:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;margin-bottom:20px;font-size:15px;font-weight:700;letter-spacing:1.5px;color:var(--text)}.brand-mark{color:var(--primary)}.demo-button{display:flex;align-items:center;gap:10px;width:100%;padding:14px 18px;margin-bottom:16px;border:1px solid var(--border-light);border-radius:var(--radius);background:var(--bg-card);color:var(--text);font-size:15px;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.demo-button:hover{background:var(--bg-input);border-color:var(--primary)}.demo-button:disabled{opacity:.6;cursor:default}.accordion-section{margin-bottom:12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.accordion-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:14px 18px;border:none;background:none;color:var(--text);font-size:14px;font-weight:700;cursor:pointer;transition:background .2s}.accordion-header:hover{background:var(--bg-input)}.accordion-body{padding:16px 18px}.plan-form{display:flex;flex-direction:column;gap:14px}.section-label{font-size:12px;font-weight:700;letter-spacing:1px;color:var(--text-muted);text-transform:uppercase;padding-top:8px;border-top:1px solid var(--border)}.section-label.cargo-label{border-top:none;padding-top:0}.field-grid{display:grid;gap:12px}.field-grid.two{grid-template-columns:1fr 1fr}.field-grid.three{grid-template-columns:1fr 1fr 1fr}.field-grid.four{grid-template-columns:1fr 1fr 1fr 1fr}@media (max-width: 500px){.field-grid.three,.field-grid.four{grid-template-columns:1fr 1fr}}.field{display:flex;flex-direction:column;gap:4px}.field span{font-size:12px;color:var(--text-muted);font-weight:500}.field input,.field select{padding:10px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;font-family:var(--font);transition:border-color .2s;width:100%}.field input:focus,.field select:focus{outline:none;border-color:var(--primary)}.field input::-moz-placeholder{color:var(--text-dim)}.field input::placeholder{color:var(--text-dim)}.field em{font-size:11px;color:var(--error-light);font-style:normal}.field-hint{font-size:12px;color:var(--text-dim);line-height:1.5;display:block;margin-top:-4px}.check-field{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text);cursor:pointer}.check-field input{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.check-field.inline{font-size:13px}.check-field.muted-option{opacity:.5;cursor:default}.cargo-groups{display:flex;flex-direction:column;gap:12px}.cargo-group-card{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.cargo-group-head{display:flex;justify-content:space-between;align-items:center}.cargo-group-head strong{font-size:14px;color:var(--text)}.remove-group{background:none;border:none;color:var(--error-light);font-size:12px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background .2s}.remove-group:hover{background:#ef444426}.preset-row{display:flex;gap:6px;flex-wrap:wrap}.preset{padding:6px 12px;border:1px solid var(--border);border-radius:20px;background:var(--bg-card);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all .2s}.preset.active,.preset:hover{border-color:var(--primary);color:var(--primary-light);background:#3b82f61f}.group-options{display:flex;flex-direction:column;gap:6px}.add-group-button{padding:12px;border:1px dashed var(--border-light);border-radius:var(--radius);background:none;color:var(--text-muted);font-size:14px;cursor:pointer;transition:all .2s}.add-group-button:hover{border-color:var(--primary);color:var(--primary-light)}.primary-button{padding:14px 20px;border:none;border-radius:var(--radius);background:var(--primary);color:#fff;font-size:15px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .2s}.primary-button:hover{background:var(--primary-hover)}.primary-button span{font-size:16px}.recognized{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-input);border-radius:8px;font-size:13px;color:var(--text-muted)}.recognized b{color:var(--text);font-weight:500}.recognized button{margin-left:auto;background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:18px;padding:0 4px}.voice-actions{display:flex;gap:8px}.voice-button{flex:1;padding:12px 14px;border:1px solid var(--border-light);border-radius:var(--radius);background:var(--bg-card);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all .2s}.voice-button:hover{border-color:var(--accent);color:var(--accent)}.voice-button:disabled{opacity:.6}.voice-cancel{padding:12px 14px;border:1px solid var(--error);border-radius:var(--radius);background:none;color:var(--error-light);font-size:13px;cursor:pointer}.error-box{margin-top:16px;padding:14px 16px;background:#ef44441f;border:1px solid var(--error);border-radius:var(--radius);color:var(--error-light);font-size:13px}.visualizer-error{margin:16px 0;padding:14px 18px;background:#ef44442e;border:1px solid var(--error);border-radius:var(--radius);color:#fff;font-size:14px;font-weight:600;line-height:1.4}.stacking-panel{display:flex;flex-direction:column;gap:10px}.stacking-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--text)}.stacking-icon{color:var(--accent)}.stacking-input-row{display:flex;gap:8px}.stacking-input{flex:1;padding:10px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;font-family:var(--font)}.stacking-input:focus{outline:none;border-color:var(--accent)}.stacking-input::-moz-placeholder{color:var(--text-dim)}.stacking-input::placeholder{color:var(--text-dim)}.voice-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text-muted);cursor:pointer;transition:all .2s}.voice-btn:hover{border-color:var(--accent);color:var(--accent)}.voice-btn.listening{border-color:var(--error);color:var(--error-light);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.add-rule-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;border-radius:8px;background:var(--primary);color:#fff;cursor:pointer;transition:background .2s}.add-rule-btn:hover{background:var(--primary-hover)}.rules-list{display:flex;flex-direction:column;gap:6px}.rule-chip{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;font-size:13px}.rule-source{width:8px;height:8px;border-radius:50%;flex-shrink:0}.rule-source.text{background:var(--primary)}.rule-source.voice{background:var(--accent)}.rule-text{flex:1;color:var(--text)}.rule-remove{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px;transition:color .2s}.rule-remove:hover{color:var(--error-light)}.rules-empty{font-size:12px;color:var(--text-dim)}.axle-control-card{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:12px}.axle-control-head{display:flex;justify-content:space-between;align-items:baseline}.axle-control-head strong{font-size:14px}.axle-control-head span{font-size:11px;color:var(--text-dim)}.axle-mode-switch{display:flex;gap:8px}.axle-mode-switch button{flex:1;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text-muted);font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:all .2s;display:flex;flex-direction:column;gap:2px}.axle-mode-switch button small{font-size:10px;font-weight:400;color:var(--text-dim)}.axle-mode-switch button.active{border-color:var(--primary);color:var(--primary-light);background:#3b82f61f}.axle-mode-switch button.active small{color:var(--primary-light);opacity:.7}.axle-current-mode{display:flex;flex-direction:column;gap:2px}.axle-current-mode span{font-size:12px;color:var(--text-muted)}.axle-current-mode b{font-size:14px;color:var(--text)}.axle-capacity-block,.axle-position-block{display:flex;flex-direction:column;gap:8px}.obstacle-mode-row{align-items:end}.visualizer{padding:20px;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.visualizer.empty{align-items:center;justify-content:center;text-align:center}.visualizer.empty .empty-art{color:var(--border-light);margin-bottom:16px}.visualizer.empty h2{font-size:20px;color:var(--text);margin-bottom:8px}.visualizer.empty p{color:var(--text-muted);font-size:14px}.visual-header{display:flex;justify-content:space-between;align-items:flex-end}.visual-header .eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--primary-light);text-transform:uppercase}.visual-header h2{font-size:20px;font-weight:700;margin-top:4px}.header-stat{text-align:right;display:flex;flex-direction:column}.header-stat b{font-size:28px;font-weight:700;color:var(--primary-light)}.header-stat span{font-size:12px;color:var(--text-muted)}.view-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;align-self:flex-start}.view-toggle button{padding:10px 24px;border:none;background:var(--bg-card);color:var(--text-muted);font-size:14px;font-weight:700;cursor:pointer;transition:all .2s}.view-toggle button.active{background:var(--primary);color:#fff}.view-toggle button:first-child{border-right:1px solid var(--border)}.canvas-wrap{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:10px}.map-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.map-toolbar span{font-size:11px;font-weight:600;letter-spacing:1px;color:var(--text-muted)}.map-actions{display:flex;gap:6px;flex-wrap:wrap}.map-actions button{display:flex;align-items:center;gap:4px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all .2s}.map-actions button:hover:not(:disabled){border-color:var(--primary);color:var(--primary-light)}.map-actions button:disabled{opacity:.4;cursor:default}.variant-picker{display:flex;flex-direction:column;gap:6px}.variant-picker>span{font-size:11px;font-weight:600;letter-spacing:1px;color:var(--text-muted)}.variant-buttons{display:flex;gap:8px;flex-wrap:wrap}.variant-buttons button{flex:1;min-width:130px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text);cursor:pointer;text-align:left;transition:all .2s;display:flex;flex-direction:column;gap:2px}.variant-buttons button:hover:not(:disabled){border-color:var(--primary)}.variant-buttons button.active{border-color:var(--primary);background:#3b82f61a}.variant-buttons button strong{font-size:13px;font-weight:600}.variant-buttons button small{font-size:11px;color:var(--text-muted)}.variant-buttons button:disabled{opacity:.4;cursor:default}.svg-viewport{overflow:auto;display:flex;justify-content:center;background:#161e28;border-radius:var(--radius);padding:12px;min-height:300px;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.truck-svg{width:100%;max-width:100%;transition:transform .2s}.dimension{fill:var(--text-muted);font-size:60px;font-weight:600}.dimension-line{stroke:var(--text-dim);stroke-width:3}.truck-body{stroke:var(--border-light);stroke-width:4}.truck-grid-major{opacity:0}.cab-label{fill:var(--text-dim);font-size:60px;font-weight:700;letter-spacing:4px}.door-label{fill:var(--text-dim);font-size:55px;font-weight:600;letter-spacing:3px}.gap-zone{fill:#f59e0b1f;stroke:var(--warning);stroke-width:3;stroke-dasharray:12 8}.gap-label{fill:var(--warning-light);font-size:50px;font-weight:700;letter-spacing:2px}.obstacle{fill:#ef444426;stroke:var(--error);stroke-width:3}.obstacle-label{fill:var(--error-light);font-size:45px;font-weight:600}.ceiling-clearance-zone{fill:#f59e0b14;stroke:var(--warning);stroke-width:3;stroke-dasharray:10 6}.ceiling-clearance-label{fill:var(--warning-light);font-size:40px;font-weight:500}.unavailable-zone{fill:#8a99ab1a;stroke:var(--text-dim);stroke-width:3;stroke-dasharray:12 8}.pallet-group{cursor:grab;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pallet-group:active{cursor:grabbing}.pallet{transition:fill .15s,stroke .15s}.pallet-dragging .pallet{opacity:.9}.drag-valid{fill:#22c55e40!important;stroke:var(--success)!important}.drag-invalid{fill:#ef444440!important;stroke:var(--error)!important}.pallet-number{font-size:58px;font-weight:700;pointer-events:none}.pallet-size{fill:var(--text-muted);font-size:34px;pointer-events:none}.pallet-height-badge{font-size:30px;font-weight:600;pointer-events:none;opacity:.8}.pallet-stack-badge{font-size:18px;font-weight:700;pointer-events:none}.coord-label{fill:var(--text-muted);font-size:38px;pointer-events:none}.pallet-tooltip{fill:var(--bg-card);stroke:var(--border-light);stroke-width:2}.tooltip-title{fill:var(--text);font-size:38px;font-weight:700}.tooltip-body{fill:var(--text-muted);font-size:32px}.pallet-rotate-control{cursor:pointer}.pallet-rotate-control circle{fill:var(--bg-card);stroke:var(--primary);stroke-width:4}.pallet-rotate-control text{fill:var(--primary-light)}.cooler-fixed-body{fill:#06b6d41f;stroke:var(--accent);stroke-width:4}.cooler-fixed-inner{fill:none;stroke:var(--accent);stroke-width:3;opacity:.5}.cooler-fixed-grille{stroke:var(--accent);stroke-width:3;opacity:.4}.cooler-fixed-label{fill:var(--accent);font-size:42px;font-weight:700;letter-spacing:2px}.axle-line{stroke:var(--accent);stroke-width:5;stroke-dasharray:16 8}.axle-hit-box{touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.axle-wheel{fill:var(--bg-card);stroke:var(--text-dim);stroke-width:4}.axle-bridge{fill:var(--text-dim);opacity:.3}.axle-drag-handle{fill:var(--bg-input);stroke:var(--accent);stroke-width:3;cursor:ew-resize}.axle-drag-hint{fill:var(--accent);font-size:42px;font-weight:700}.axle-label-bg{fill:var(--bg-card);stroke:var(--accent);stroke-width:2}.axle-label{fill:var(--text);font-size:38px;font-weight:700}.axle-role-label{fill:var(--text-muted);font-size:28px}.axle-load-badge rect{fill:var(--bg-card);stroke:var(--border);stroke-width:2}.axle-load-badge.warning rect{stroke:var(--warning)}.axle-load-badge.danger rect{stroke:var(--error)}.axle-load-value{fill:var(--text);font-size:34px;font-weight:600}.axle-load-note{fill:var(--text-muted);font-size:26px}.axle-dragging .axle-line{stroke:var(--primary-light);stroke-width:6}.cg-marker{fill:var(--warning);stroke:#fff;stroke-width:4}.cg-marker-changed{fill:var(--success);stroke:#fff;stroke-width:4}.cg-cross{stroke:#fff;stroke-width:4}.cg-label-bg{fill:var(--bg-card);stroke:var(--warning);stroke-width:2}.cg-label{fill:var(--warning-light);font-size:32px;font-weight:700;letter-spacing:1px}.cg-change line{stroke:var(--success);stroke-width:4}.cg-change text{fill:var(--success-light);font-size:30px;font-weight:600}.load-model-note,.axle-total-note{fill:var(--text-dim);font-size:30px;font-weight:500}.orientation-label{fill:var(--text-muted);font-size:34px;font-weight:600}.color-legend{display:flex;gap:14px;flex-wrap:wrap;padding:10px 12px;background:var(--bg-card);border-radius:8px}.legend-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text)}.legend-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.bottom-info{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 700px){.bottom-info{grid-template-columns:1fr}}.selected-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px}.selected-card .eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--primary-light)}.selected-card b{font-size:18px;display:block;margin:4px 0 10px;color:var(--text)}.selected-card b small{font-size:14px;color:var(--text-muted);font-weight:400}.pallet-actions{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px}.pallet-actions button{display:flex;align-items:center;gap:4px;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);font-size:13px;cursor:pointer;transition:all .2s}.pallet-actions button:hover:not(:disabled){border-color:var(--primary)}.pallet-actions button:disabled{opacity:.4;cursor:default}.pallet-actions label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--text-muted)}.pallet-actions label input{padding:6px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;width:100px}.pallet-actions label input:focus{outline:none;border-color:var(--primary)}.pallet-details{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.pallet-details span{font-size:13px;color:var(--text-muted)}.pallet-details span b{display:inline;font-size:13px;color:var(--text);font-weight:600}.conflict-note{margin-top:10px;padding:12px 14px;background:#ef44441f;border:1px solid var(--error);border-radius:8px;color:var(--error-light);font-size:13px}.summary{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:10px}.summary-title{font-size:12px;font-weight:800;letter-spacing:2px;color:var(--text);text-transform:uppercase}.check{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.check:last-child{border-bottom:none}.check .dot{width:10px;height:10px;border-radius:50%}.status-ok{background:var(--success)}.status-bad{background:var(--error)}.status-idle{background:var(--text-dim)}.status-calculated{background:var(--accent)}.check b{font-size:14px;font-weight:700;color:var(--text)}.check small{font-size:12px;color:var(--text-muted);display:block;line-height:1.35}.check strong{font-size:14px;font-weight:700;color:var(--text)}.check em{font-size:11px;font-weight:800;letter-spacing:1px;font-style:normal}.check em.status-ok{color:var(--success-light)}.check em.status-bad{color:var(--error-light)}.check em.status-idle{color:var(--text-muted)}.check em.status-calculated{color:var(--accent)}.placement-alert{margin-top:8px;padding:10px;background:#ef444414;border-radius:8px}.placement-alert-top{display:flex;justify-content:space-between;font-size:12px}.placement-alert-top strong{color:var(--error-light)}.placement-alert-top span{color:var(--text-muted)}.placement-progress{margin-top:6px;height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden}.placement-progress span{display:block;height:100%;background:var(--error);border-radius:3px;transition:width .3s}.vehicle-fit-card{background:#f59e0b14;border:1px solid var(--warning);border-radius:var(--radius-lg);padding:16px 18px;display:flex;flex-direction:column;gap:8px}.vehicle-fit-title{font-size:15px;font-weight:700;color:var(--warning-light)}.vehicle-fit-main{font-size:13px;color:var(--text-muted)}.vehicle-fit-options{display:flex;gap:14px;flex-wrap:wrap}.vehicle-fit-options div{display:flex;flex-direction:column;gap:2px;padding:10px 14px;background:var(--bg-card);border-radius:8px}.vehicle-fit-options b{font-size:13px;color:var(--text)}.vehicle-fit-options span{font-size:12px;color:var(--text-muted)}.vehicle-fit-note{font-size:13px;color:var(--warning-light);font-weight:600}.chat-panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;display:flex;flex-direction:column;gap:10px;max-height:400px}.chat-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--text)}.chat-bot-icon{color:var(--accent)}.chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:100px}.chat-empty{font-size:13px;color:var(--text-dim);text-align:center;padding:20px}.chat-msg{display:flex;gap:8px;align-items:flex-start}.chat-msg.user{flex-direction:row-reverse}.chat-msg-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;flex-shrink:0}.chat-msg.ai .chat-msg-icon{background:#06b6d426;color:var(--accent)}.chat-msg.user .chat-msg-icon{background:#3b82f626;color:var(--primary-light)}.chat-msg-text{padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;max-width:80%}.chat-msg.ai .chat-msg-text{background:var(--bg-card);color:var(--text);border:1px solid var(--border)}.chat-msg.user .chat-msg-text{background:var(--primary);color:#fff}.chat-msg-text.typing{opacity:.6;font-style:italic}.chat-input-row{display:flex;gap:8px}.chat-input{flex:1;padding:10px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;font-family:var(--font)}.chat-input:focus{outline:none;border-color:var(--primary)}.chat-input::-moz-placeholder{color:var(--text-dim)}.chat-input::placeholder{color:var(--text-dim)}.chat-send-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;border-radius:8px;background:var(--primary);color:#fff;cursor:pointer;transition:background .2s}.chat-send-btn:hover:not(:disabled){background:var(--primary-hover)}.chat-send-btn:disabled{opacity:.4;cursor:default}.visualizer-3d{display:flex;flex-direction:column;gap:10px}.viewport-3d{overflow:hidden;background:#161e28;border-radius:var(--radius);padding:12px;min-height:350px;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none}.viewport-3d:active{cursor:grabbing}.svg-3d{width:100%;max-width:100%}.label-3d{font-size:48px;font-weight:700;letter-spacing:3px;fill:var(--text-dim)}.cab-label-3d,.door-label-3d{fill:var(--text-muted)}.pallet-num-3d{font-size:40px;font-weight:700;pointer-events:none;text-anchor:middle}.pallet-3d-group{cursor:pointer}.pallet-3d-group:hover{opacity:.85}.controls-3d{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.controls-3d button{display:flex;align-items:center;justify-content:center;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all .2s;min-width:38px}.controls-3d button:hover{border-color:var(--primary);color:var(--primary-light)}.hint-3d{font-size:11px;color:var(--text-dim);margin-left:8px}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.inline{display:inline}.grid{display:grid}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rounded{border-radius:.25rem}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
