:root{--color-primary: #1a73e8;--color-primary-hover: #1557b0;--color-primary-weak: #e8f0fe;--color-success: #2e7d32;--color-success-hover: #256628;--color-success-weak: #e8f5e9;--color-danger: #d32f2f;--color-danger-hover: #b71c1c;--color-danger-weak: #fff5f5;--color-warning: #b45309;--color-warning-hover: #92400e;--color-warning-weak: #fff7ed;--color-warning-weak-raised: #ffedd5;--color-text: #262626;--color-text-muted: #5f6368;--color-text-subtle: #8a8a8a;--color-border: #e0e0e0;--color-border-strong: #b8b8b8;--color-on-action: #fff;--surface: #fff;--surface-sunken: #f3f4f6;--bg: #fafafa;--surface-inverse: #1f2733;--surface-inverse-raised: #2b3543;--surface-inverse-hover: #333f50;--color-border-inverse: #3a4757;--color-text-inverse-muted: #cdd6e2;--overlay: rgba(0, 0, 0, .5);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .2);--shadow-md: 0 12px 40px rgba(0, 0, 0, .3);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-pill: 999px;--radius-circle: 50%;--space-0-5: 2px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 48px;--space-10: 64px;--font-family-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-mono: "SFMono-Regular", Consolas, Menlo, "Courier New", monospace;--font-size-2xs: 10px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-icon: 1;--line-height-heading: 1.25;--line-height-ui: 1.4;--line-height-body: 1.6;--z-dropdown: 1000;--z-modal: 1100;--z-dialog: 1200;--z-toast: 1300;--transition-fast: .12s;--transition-normal: .2s;--easing-standard: cubic-bezier(.2, 0, 0, 1);--focus-ring: 0 0 0 3px rgba(26, 115, 232, .4)}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;font-family:var(--font-family-sans);line-height:var(--line-height-ui)}#root{width:100%;height:100%}:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--focus-ring)}.gamepad-display{--gamepad-body-face: #2a2a2a;--gamepad-body-border: #444;--gamepad-control-face: #3a3a3a;--gamepad-control-border: #555;--gamepad-control-detail: #666;--gamepad-btn-active: #2196f3;--gamepad-btn-active-border: #1976d2;--gamepad-btn-active-glow: rgba(33, 150, 243, .6);--gamepad-btn-active-glow-strong: rgba(33, 150, 243, .8);--gamepad-stick-base: #1a1a1a;--gamepad-stick-face: #4a4a4a;--gamepad-xbox-border: #888;--gamepad-xbox-active: #4caf50;--gamepad-xbox-active-border: #66bb6a;--gamepad-xbox-active-glow: rgba(76, 175, 80, .8);--gamepad-a-face: #1b5e20;--gamepad-b-border: #c62828;--gamepad-b-active: #f44336;--gamepad-b-active-border: #ef5350;--gamepad-x-face: #0d47a1;--gamepad-x-border: #1565c0;--gamepad-x-active-border: #42a5f5;--gamepad-y-face: #f57f17;--gamepad-y-border: #f9a825;--gamepad-y-active: #ffeb3b;--gamepad-y-active-border: #fff176;--gamepad-label: #aaa;--gamepad-label-shadow: rgba(0, 0, 0, .5);width:100%;max-width:100%;margin:0 auto}.gamepad-svg{width:100%;height:auto}.gamepad-body{fill:var(--gamepad-body-face);stroke:var(--gamepad-body-border);stroke-width:2}.trigger-base{fill:var(--gamepad-control-face);stroke:var(--gamepad-control-border);stroke-width:1}.trigger-fill{fill:var(--gamepad-control-detail);transition:fill .1s ease}.trigger-fill.pressed{fill:var(--gamepad-btn-active);filter:drop-shadow(0 0 4px var(--gamepad-btn-active-glow))}.bumper{fill:var(--gamepad-control-face);stroke:var(--gamepad-control-border);stroke-width:1;transition:all .1s ease}.bumper.pressed{fill:var(--gamepad-btn-active);filter:drop-shadow(0 0 4px var(--gamepad-btn-active-glow))}.stick-base{fill:var(--gamepad-stick-base);stroke:var(--gamepad-body-border);stroke-width:2}.stick-knob{fill:var(--gamepad-stick-face);stroke:var(--gamepad-control-detail);stroke-width:2;transition:all .05s ease}.stick-knob.pressed{fill:var(--gamepad-btn-active);stroke:var(--gamepad-btn-active-border);filter:drop-shadow(0 0 4px var(--gamepad-btn-active-glow-strong))}.stick-line{stroke:var(--gamepad-control-detail);stroke-width:1.5;stroke-dasharray:2,2}.dpad-button{fill:var(--gamepad-control-face);stroke:var(--gamepad-control-border);stroke-width:1;transition:all .1s ease}.dpad-button.pressed{fill:var(--gamepad-btn-active);filter:drop-shadow(0 0 3px var(--gamepad-btn-active-glow))}.center-button{fill:var(--gamepad-control-face);stroke:var(--gamepad-control-border);stroke-width:1;transition:all .1s ease}.center-button.pressed{fill:var(--gamepad-btn-active);filter:drop-shadow(0 0 3px var(--gamepad-btn-active-glow))}.xbox-button{fill:var(--gamepad-stick-base);stroke:var(--gamepad-xbox-border);stroke-width:2;transition:all .1s ease}.xbox-button.pressed{fill:var(--gamepad-xbox-active);stroke:var(--gamepad-xbox-active-border);filter:drop-shadow(0 0 6px var(--gamepad-xbox-active-glow))}.action-button{stroke-width:2;transition:all .1s ease;opacity:.6}.action-button.pressed{opacity:1;filter:drop-shadow(0 0 6px currentColor)}.a-button{fill:var(--gamepad-a-face);stroke:var(--color-success)}.a-button.pressed{fill:var(--gamepad-xbox-active);stroke:var(--gamepad-xbox-active-border)}.b-button{fill:var(--color-danger-hover);stroke:var(--gamepad-b-border)}.b-button.pressed{fill:var(--gamepad-b-active);stroke:var(--gamepad-b-active-border)}.x-button{fill:var(--gamepad-x-face);stroke:var(--gamepad-x-border)}.x-button.pressed{fill:var(--gamepad-btn-active);stroke:var(--gamepad-x-active-border)}.y-button{fill:var(--gamepad-y-face);stroke:var(--gamepad-y-border)}.y-button.pressed{fill:var(--gamepad-y-active);stroke:var(--gamepad-y-active-border)}.button-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);fill:var(--gamepad-label);text-anchor:middle;dominant-baseline:middle;pointer-events:none}.button-label-small{font-size:var(--font-size-2xs);font-weight:var(--font-weight-semibold);fill:var(--gamepad-label);text-anchor:middle;dominant-baseline:middle;pointer-events:none}.button-label-tiny{font-size:7px;font-weight:var(--font-weight-semibold);fill:var(--gamepad-label);text-anchor:middle;dominant-baseline:middle;pointer-events:none}.action-label{font-size:var(--font-size-md);font-weight:var(--font-weight-bold);fill:var(--color-on-action);text-anchor:middle;dominant-baseline:middle;pointer-events:none;text-shadow:0 1px 2px var(--gamepad-label-shadow)}.xbox-label{font-size:var(--font-size-md);fill:var(--gamepad-xbox-border);text-anchor:middle;dominant-baseline:middle;pointer-events:none;transition:fill .1s ease}.xbox-button.pressed+text.xbox-label{fill:var(--color-on-action)}.poco-pad-display{--gamepad-body-face: #2a2a2a;--gamepad-body-border: #444;--gamepad-control-face: #e0801c;--gamepad-control-border: #b5651a;--gamepad-control-active: #ffb24d;--gamepad-control-active-border: #ffcc80;--gamepad-control-active-glow: rgba(255, 152, 0, .85);--gamepad-label-shadow: rgba(0, 0, 0, .5);width:100%;max-width:100%;margin:0 auto}.poco-pad-svg{width:100%;height:auto}.poco-pad-body{fill:var(--gamepad-body-face);stroke:var(--gamepad-body-border);stroke-width:2}.poco-dpad,.poco-action{fill:var(--gamepad-control-face);stroke:var(--gamepad-control-border);stroke-width:2;transition:all .1s ease}.poco-dpad.pressed,.poco-action.pressed{fill:var(--gamepad-control-active);stroke:var(--gamepad-control-active-border);filter:drop-shadow(0 0 6px var(--gamepad-control-active-glow))}.poco-glyph{font-size:var(--font-size-lg);fill:var(--color-on-action);text-anchor:middle;dominant-baseline:central;pointer-events:none}.poco-action-label{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);fill:var(--color-on-action);text-anchor:middle;dominant-baseline:central;pointer-events:none;text-shadow:0 1px 2px var(--gamepad-label-shadow)}.ui-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);color:var(--color-text);font-family:inherit;font-weight:var(--font-weight-semibold);line-height:var(--line-height-ui);text-decoration:none;cursor:pointer;transition:background-color var(--transition-fast) var(--easing-standard),border-color var(--transition-fast) var(--easing-standard),color var(--transition-fast) var(--easing-standard),opacity var(--transition-fast) var(--easing-standard)}.ui-button:disabled{opacity:.5;pointer-events:none}.ui-button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ui-button--primary{background:var(--color-primary);color:var(--color-on-action)}.ui-button--primary:hover{background:var(--color-primary-hover)}.ui-button--success{background:var(--color-success);color:var(--color-on-action)}.ui-button--success:hover{background:var(--color-success-hover)}.ui-button--danger{background:var(--color-danger);color:var(--color-on-action)}.ui-button--danger:hover{background:var(--color-danger-hover)}.ui-button--warning{background:var(--color-warning);color:var(--color-on-action)}.ui-button--warning:hover{background:var(--color-warning-hover)}.ui-button--secondary{background:var(--surface-sunken);color:var(--color-text)}.ui-button--secondary:hover{background:var(--color-border)}.ui-button--outline{border-color:var(--color-border);background:var(--surface);color:var(--color-text)}.ui-button--outline:hover{border-color:var(--color-border-strong);background:var(--surface-sunken)}.ui-button--ghost{background:transparent;color:var(--color-text)}.ui-button--ghost:hover{background:var(--surface-sunken)}.ui-button--sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.ui-button--md{padding:var(--space-2) var(--space-4);font-size:var(--font-size-md)}.ui-button--lg{padding:var(--space-2) var(--space-6);font-size:var(--font-size-md)}.ui-button--icon-sm,.ui-button--icon-md,.ui-button--icon-lg{flex:0 0 auto;padding:0;border-radius:var(--radius-circle);line-height:var(--line-height-icon)}.ui-button--icon-sm{width:28px;height:28px;font-size:var(--font-size-sm)}.ui-button--icon-md{width:32px;height:32px;font-size:var(--font-size-md)}.ui-button--icon-lg{width:48px;height:48px;font-size:var(--font-size-lg)}.ui-button--block{width:100%}.control-panel{padding:var(--space-4)}.control-section{margin-bottom:var(--space-5)}.control-section h2{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-3);color:var(--color-text)}.button-group{display:flex;flex-direction:row;gap:var(--space-2);margin-bottom:var(--space-2)}.control-action{flex:1;min-width:0}.status-dot{width:12px;height:12px;border-radius:var(--radius-circle);background-color:var(--color-text-subtle)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.error-section{background-color:var(--color-danger-weak);border:2px solid var(--color-danger);border-radius:var(--radius-lg);padding:var(--space-4)}.error-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.error-header h2{margin:0;color:var(--color-danger)}.error-dismiss{font-size:var(--font-size-xl);color:var(--color-text-subtle)}.error-dismiss:hover{color:var(--color-danger)}.error-message{background-color:var(--surface);padding:var(--space-3);border-radius:var(--radius-sm);border-left:4px solid var(--color-danger);font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-danger);word-break:break-word}.hardware-group{margin-bottom:0}.hardware-group h3{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-2)}.hardware-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.hardware-item{display:flex;justify-content:space-between;padding:var(--space-1) var(--space-2);background-color:var(--surface);border-radius:var(--radius-sm);font-size:var(--font-size-xs);border:1px solid var(--color-border)}.hardware-label{font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.hardware-value{font-weight:var(--font-weight-semibold);color:var(--color-text);font-family:var(--font-family-mono)}.led-display{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);background-color:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.led-preview{width:32px;height:32px;border-radius:var(--radius-circle);border:2px solid var(--color-border);box-shadow:var(--shadow-sm)}.led-values{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-xs)}.led-value{font-weight:var(--font-weight-semibold);color:var(--color-text);font-family:var(--font-family-mono)}.gamepad-status{color:var(--color-success);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2);font-size:var(--font-size-xs)}.gamepad-status.disconnected{color:var(--color-text-subtle)}.status-compact{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.status-badge{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background-color:var(--surface);border-radius:var(--radius-sm);border:2px solid var(--color-border);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);flex:1}.status-badge.connected{border-color:var(--color-primary)}.status-badge.disconnected{border-color:var(--color-warning)}.status-badge.connecting{border-color:var(--color-warning);background-color:var(--color-warning-weak)}.status-badge.error{border-color:var(--color-danger);background-color:var(--color-danger-weak)}.status-badge.running{border-color:var(--color-success)}.status-badge.stopped,.status-badge.vm-state{border-color:var(--color-text-subtle)}.status-badge .status-dot{width:8px;height:8px;border-radius:var(--radius-circle);background-color:var(--color-text-subtle)}.status-badge.connected .status-dot{background-color:var(--color-primary);animation:pulse 1.5s ease-in-out infinite}.status-badge.disconnected .status-dot{background-color:var(--color-warning)}.status-badge.connecting .status-dot{background-color:var(--color-warning);animation:pulse 1.5s ease-in-out infinite}.status-badge.error .status-dot{background-color:var(--color-danger)}.status-badge.running .status-dot{background-color:var(--color-success);animation:pulse 1.5s ease-in-out infinite}.vm-error-compact{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background-color:var(--color-danger-weak);border-left:3px solid var(--color-danger);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.vm-error-compact .error-icon{color:var(--color-danger);font-size:var(--font-size-md)}.vm-error-compact .error-text{color:var(--color-danger);font-family:var(--font-family-mono)}.info-compact{display:flex;gap:var(--space-3);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background-color:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--color-border);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.variables-compact{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background-color:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.variables-header{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-2)}.variables-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.variable-item{display:flex;justify-content:space-between;font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);background-color:var(--surface-sunken);border-radius:var(--radius-sm)}.variable-name{font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.variable-value{font-weight:var(--font-weight-semibold);color:var(--color-text);font-family:var(--font-family-mono)}.hardware-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-3)}.hardware-row:last-child{margin-bottom:0}@media (max-width: 480px){.hardware-grid,.variables-list,.hardware-row{grid-template-columns:minmax(0,1fr)}}.operation-notice{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background-color:var(--color-primary-weak);border:1px solid var(--color-primary-weak);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-primary-hover);line-height:var(--line-height-body)}.ui-modal-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--overlay)}.ui-modal-overlay--modal{z-index:var(--z-modal)}.ui-modal-overlay--dialog{z-index:var(--z-dialog)}.ui-modal{display:flex;flex-direction:column;width:min(600px,calc(100vw - 2 * var(--space-4)));max-height:calc(100dvh - 2 * var(--space-4));border-radius:var(--radius-lg);background:var(--surface);color:var(--color-text);box-shadow:var(--shadow-md)}.ui-modal__header,.ui-modal__body,.ui-modal__footer{padding:var(--space-4)}.ui-modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);border-bottom:1px solid var(--color-border);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-heading)}.ui-modal__body{min-height:0;overflow:auto;line-height:var(--line-height-body)}.ui-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);border-top:1px solid var(--color-border)}.variable-modal{width:min(440px,calc(100vw - var(--space-4) - var(--space-4)));animation:slideIn var(--transition-normal) var(--easing-standard)}.variable-modal-header{padding:var(--space-6) var(--space-6) 0;border-bottom:none}.variable-modal-title{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text)}.variable-modal-body{padding:var(--space-5) var(--space-6) var(--space-6)}.variable-modal-label{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.variable-modal-input{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);border:2px solid var(--color-border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition-normal) var(--easing-standard);box-sizing:border-box}.variable-modal-input:focus{border-color:var(--color-primary)}.variable-modal-input:focus-visible{box-shadow:var(--focus-ring);outline:none}.variable-modal-input.error{border-color:var(--color-danger)}.variable-modal-input::placeholder{color:var(--color-text-subtle)}.variable-modal-error{margin-top:var(--space-2);font-size:var(--font-size-sm);color:var(--color-danger)}.variable-modal-actions{gap:var(--space-3);padding:0 var(--space-6) var(--space-6);border-top:none}.settings-panel{width:min(600px,calc(100vw - var(--space-4) - var(--space-4)));animation:slideIn var(--transition-normal) var(--easing-standard)}@keyframes slideIn{0%{transform:translateY(calc(-1 * var(--space-5)));opacity:0}to{transform:translateY(0);opacity:1}}.settings-header{padding:var(--space-5) var(--space-6)}.settings-header h2{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text)}.settings-content{padding:var(--space-6);overflow-y:auto;flex:1}.settings-loading{text-align:center;padding:var(--space-8);color:var(--color-text-muted);font-size:var(--font-size-md)}.settings-error,.settings-success{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);margin-bottom:var(--space-5);font-size:var(--font-size-sm)}.settings-error{background-color:var(--color-danger-weak);color:var(--color-danger);border:1px solid var(--color-danger)}.settings-success{background-color:var(--color-success-weak);color:var(--color-success);border:1px solid var(--color-success-weak)}.settings-section{margin-bottom:28px}.settings-content>.settings-section:last-child{margin-bottom:0}.settings-section h3{margin:0 0 var(--space-4) 0;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text);border-bottom:2px solid var(--color-primary);padding-bottom:var(--space-2)}.settings-item{margin-bottom:var(--space-4)}.settings-item:last-child{margin-bottom:0}.settings-item label{display:block;font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:var(--font-weight-medium)}.settings-item input[type=checkbox],.settings-item input[type=radio]{margin-right:var(--space-2);cursor:pointer}.help-text{display:block;margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:var(--font-weight-regular)}.warning-text{color:var(--color-warning);font-size:var(--font-size-sm);font-weight:var(--font-weight-regular)}.pairing-actions{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0}.pairing-actions button{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--surface);color:var(--color-text);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer}.pairing-actions button:hover:not(:disabled){background-color:var(--surface-sunken)}.pairing-actions button:disabled{opacity:.55;cursor:not-allowed}.pairing-actions .pairing-primary{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-action)}.pairing-actions .pairing-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.pairing-message{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--font-size-sm);line-height:var(--line-height-ui);margin:var(--space-2) 0}.pairing-message-muted{background-color:var(--surface-sunken);border:1px solid var(--color-border);color:var(--color-text)}.pairing-message-success{background-color:var(--color-success-weak);border:1px solid var(--color-success);color:var(--color-success)}.pairing-message-error{background-color:var(--color-danger-weak);border:1px solid var(--color-danger);color:var(--color-danger)}.settings-footer{gap:var(--space-3);padding:var(--space-4) var(--space-6)}.settings-panel button:focus-visible,.settings-panel input:focus-visible{box-shadow:var(--focus-ring);outline:none}.settings-footer button:active{transform:scale(.98)}.version-info{font-size:var(--font-size-xs);color:var(--color-text-subtle);font-family:var(--font-family-mono);white-space:nowrap}.version-info-disconnected{opacity:.75}.ui-banner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid;color:var(--color-text);font-size:var(--font-size-sm);line-height:var(--line-height-body)}.ui-banner--info{border-color:var(--color-primary);background:var(--color-primary-weak)}.ui-banner--success{border-color:var(--color-success);background:var(--color-success-weak)}.ui-banner--warning{border-color:var(--color-warning);background:var(--color-warning-weak)}.ui-banner--error{border-color:var(--color-danger);background:var(--color-danger-weak)}.ui-banner__content{flex:1 1 auto;min-width:0}.ui-banner__title{font-weight:var(--font-weight-semibold)}.ui-banner__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.connect-banner .ui-banner__content{display:flex;flex-direction:column;gap:var(--space-0-5);color:var(--color-warning-hover)}.connect-banner-reload{padding:var(--space-2) var(--space-3);background-color:var(--surface);color:var(--color-warning-hover);border:1px solid var(--color-warning);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap}.connect-banner-reload:hover{background-color:var(--color-warning-weak)}.connect-banner-reload:focus-visible,.connect-setup-close:focus-visible,.connect-setup-actions>a:focus-visible,.connect-setup-mac-link:focus-visible,.connect-setup-download-button:focus-visible,.connect-setup-reload:focus-visible,.connect-permission-install-link:focus-visible,.connect-permission-button:focus-visible{box-shadow:var(--focus-ring);outline:none}.connect-setup-panel{position:relative;padding:var(--space-5) var(--space-8) var(--space-5) var(--space-6);background:linear-gradient(180deg,var(--color-warning-weak) 0%,var(--color-warning-weak-raised) 100%);border-bottom:2px solid var(--color-warning)}.connect-setup-close{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-md);color:var(--color-warning-hover);cursor:pointer;line-height:var(--line-height-icon)}.connect-setup-close:hover{background-color:var(--color-warning-weak)}.connect-setup-main{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4) var(--space-7);max-width:1100px;margin:0 auto}.connect-setup-text{flex:1 1 420px}.connect-setup-text h2{margin:0 0 var(--space-2);font-size:var(--font-size-lg);color:var(--color-warning-hover)}.connect-setup-text p{margin:0 0 var(--space-2);font-size:var(--font-size-sm);color:var(--color-warning-hover);line-height:var(--line-height-body)}.connect-setup-editor-note{color:var(--color-text-muted);font-size:var(--font-size-sm)}.connect-setup-actions{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);flex-shrink:0}.connect-setup-store-badge{height:56px;display:block}.connect-setup-mac-link{font-size:var(--font-size-sm);color:var(--color-primary-hover);text-decoration:underline}.connect-setup-download-button{padding:var(--space-3) var(--space-5);background-color:var(--color-warning);color:var(--color-on-action);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);text-decoration:none;white-space:nowrap}.connect-setup-download-button:hover{background-color:var(--color-warning-hover)}.connect-setup-windows-note{font-size:var(--font-size-xs);color:var(--color-text-muted)}.connect-setup-reload{padding:var(--space-2) var(--space-4);background-color:var(--surface);color:var(--color-warning-hover);border:1px solid var(--color-warning);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap}.connect-setup-reload:hover{background-color:var(--color-warning-weak)}.connect-permission-panel{padding:var(--space-5) var(--space-6);background:linear-gradient(180deg,var(--color-warning-weak) 0%,var(--color-warning-weak-raised) 100%);border-bottom:2px solid var(--color-warning)}.connect-permission-main{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4) var(--space-7);max-width:1100px;margin:0 auto}.connect-permission-mock{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1)}.connect-mock-dialog{width:min(300px,100%);padding:var(--space-4);background:var(--surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);font-size:var(--font-size-sm);color:var(--color-text)}.connect-mock-domain{white-space:nowrap}.connect-mock-site{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2);font-weight:var(--font-weight-bold);margin-bottom:var(--space-2);line-height:var(--line-height-ui)}.connect-mock-close{flex-shrink:0;color:var(--color-text-subtle);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs)}.connect-mock-perm{display:flex;align-items:flex-start;gap:var(--space-2);color:var(--color-text-muted);margin-bottom:var(--space-3);line-height:var(--line-height-ui)}.connect-mock-perm-icon{flex-shrink:0;margin-top:var(--space-0-5)}.connect-mock-buttons{display:flex;justify-content:flex-end;gap:var(--space-2)}.connect-mock-btn{padding:var(--space-1) var(--space-4);background-color:var(--color-primary);border-radius:var(--radius-pill);color:var(--color-on-action);font-size:var(--font-size-xs);white-space:nowrap}.connect-mock-btn-allow{font-weight:var(--font-weight-bold);outline:3px solid var(--color-warning);outline-offset:var(--space-0-5)}.connect-mock-callout{margin-right:calc(var(--space-10) + var(--space-4) - var(--space-0-5));color:var(--color-warning);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.connect-mock-callout:before{content:"↑ "}.connect-permission-install-link{color:var(--color-primary-hover);text-decoration:underline}.connect-permission-steps{display:flex;flex-wrap:wrap;align-items:stretch;gap:var(--space-3);margin:0;padding:0;list-style:none}.connect-permission-steps li{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--color-warning);border-radius:var(--radius-lg);max-width:240px}.connect-step-num{flex-shrink:0;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background-color:var(--color-warning);color:var(--color-on-action);border-radius:var(--radius-circle);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.connect-step-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-warning-hover);line-height:var(--line-height-ui)}.connect-step-body>div{display:flex;align-items:center;gap:var(--space-2)}.connect-mock-addressbar{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--surface-sunken);border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);font-size:var(--font-size-xs);color:var(--color-text-muted)}.connect-mock-tune{color:var(--color-text);outline:2px solid var(--color-warning);outline-offset:var(--space-0-5);border-radius:var(--radius-sm)}.connect-mock-toggle-row{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-xs);color:var(--color-text)}.connect-mock-toggle{position:relative;width:28px;height:16px;background-color:var(--color-primary);border-radius:var(--radius-pill)}.connect-mock-toggle:after{content:"";position:absolute;top:var(--space-0-5);right:var(--space-0-5);width:12px;height:12px;background:var(--surface);border-radius:var(--radius-circle)}.connect-permission-button{padding:var(--space-3) var(--space-5);background-color:var(--color-warning);color:var(--color-on-action);border:none;border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);cursor:pointer;white-space:nowrap}.connect-permission-button:hover:not(:disabled){background-color:var(--color-warning-hover)}.connect-permission-button:disabled{opacity:.65;cursor:wait}.connect-permission-note{padding:var(--space-2) var(--space-3);background-color:var(--color-danger-weak);border-left:3px solid var(--color-danger);color:var(--color-danger-hover);font-weight:var(--font-weight-bold);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.device-program-banner .ui-banner__content{display:flex;flex-direction:column;gap:var(--space-0-5);color:var(--color-primary-hover)}.device-program-banner-primary{padding:var(--space-2) var(--space-3);background-color:var(--color-primary);color:var(--color-on-action);border:1px solid var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);cursor:pointer;white-space:nowrap}.device-program-banner-primary:hover{background-color:var(--color-primary-hover)}.device-program-banner-primary:focus-visible{box-shadow:var(--focus-ring);outline:none}.checkout-confirm-modal{width:420px;max-width:100%}.checkout-confirm-modal-title{padding:var(--space-5) var(--space-5) var(--space-2);border-bottom:0;font-size:var(--font-size-md);color:var(--color-primary-hover)}.checkout-confirm-modal-text{padding:0 var(--space-5);font-size:var(--font-size-sm);color:var(--color-text)}.checkout-confirm-modal-actions{padding:var(--space-5);border-top:0}.checkout-confirm-modal-continue,.checkout-confirm-modal-open-robot{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);cursor:pointer;white-space:nowrap}.checkout-confirm-modal-continue:focus-visible,.checkout-confirm-modal-open-robot:focus-visible{box-shadow:var(--focus-ring);outline:none}.checkout-confirm-modal-continue{background-color:var(--color-primary);color:var(--color-on-action);border:1px solid var(--color-primary)}.checkout-confirm-modal-continue:hover{background-color:var(--color-primary-hover)}.checkout-confirm-modal-open-robot{background-color:var(--surface);color:var(--color-primary-hover);border:1px solid var(--color-primary)}.checkout-confirm-modal-open-robot:hover{background-color:var(--color-primary-weak)}.mode-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-pill);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body);white-space:nowrap;-webkit-user-select:none;user-select:none}.mode-badge-embedded{background-color:var(--color-success-weak);color:var(--color-success);border:1px solid var(--color-success)}.mode-badge-cloud{background-color:var(--color-primary-weak);color:var(--color-primary);border:1px solid var(--color-primary-weak)}.cloud-appbar{grid-row:2;grid-column:1 / -1;display:flex;align-items:center;gap:var(--space-3);height:48px;padding:0 var(--space-3);background:var(--surface-inverse);color:var(--color-on-action)}.cab-brand{font-weight:var(--font-weight-bold);font-size:var(--font-size-md);white-space:nowrap}.cab-filemenu,.cab-acct-wrap{position:relative}.cab-title-btn{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-inverse-raised);border:1px solid var(--color-border-inverse);color:var(--color-on-action);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);max-width:360px}.cab-title-btn:hover{background:var(--surface-inverse-hover)}.cab-title-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.cab-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cab-caret{opacity:.7;font-size:var(--font-size-xs)}.cab-dirty{color:var(--color-warning-weak);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);white-space:nowrap}.cab-chip{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);border-radius:var(--radius-lg);padding:var(--space-0-5) var(--space-2);white-space:nowrap}.cab-chip-ro{color:var(--color-warning-hover);background:var(--color-warning-weak)}.cab-chip-admin{color:var(--color-on-action);background:var(--color-warning-hover)}.cab-save{padding:var(--space-2) var(--space-4);font-weight:var(--font-weight-bold);white-space:nowrap}.cab-spacer{flex:1}.cab-right{display:flex;align-items:center}.cab-login-links{display:flex;align-items:center;gap:var(--space-3);font-size:var(--font-size-sm)}.cab-link{padding:0;background:transparent;color:var(--color-text-inverse-muted)}.cab-link:hover{background:transparent;color:var(--color-on-action);text-decoration:underline}.cab-link-primary{color:var(--color-primary-weak);font-weight:var(--font-weight-bold)}.cab-acct{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-inverse-raised);border:1px solid var(--color-border-inverse);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-2) var(--space-1) var(--space-1);cursor:pointer;color:var(--color-on-action);max-width:280px}.cab-acct:focus-visible{box-shadow:var(--focus-ring);outline:none}.cab-avatar{width:26px;height:26px;border-radius:var(--radius-circle);background:var(--color-primary);color:var(--color-on-action);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex:none}.cab-avatar.admin{background:var(--color-warning-hover)}.cab-acct-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cab-admin-pill{font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);color:var(--color-warning-weak);background:var(--color-warning-hover);border-radius:var(--radius-lg);padding:var(--space-0-5) var(--space-1);white-space:nowrap}.cab-menu{position:absolute;top:42px;left:0;min-width:230px;max-width:calc(100vw - var(--space-2) - var(--space-2));background:var(--surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-2);z-index:var(--z-dropdown)}.cab-menu-right{left:auto;right:0}.cab-mi{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;padding:var(--space-2);border:none;background:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text);text-decoration:none}.cab-mi:hover{background:var(--surface-sunken)}.cab-mi:focus-visible{box-shadow:var(--focus-ring);outline:none}.cab-k{width:18px;text-align:center}.cab-locked{color:var(--color-text-subtle)}.cab-admin{color:var(--color-warning-hover)}.cab-sep{height:1px;background:var(--color-border);margin:var(--space-1)}.cab-cap{font-size:var(--font-size-xs);color:var(--color-text-subtle);padding:var(--space-1) var(--space-2) var(--space-0-5);font-weight:var(--font-weight-bold)}.cab-logout-form{margin:0}.dlg{width:380px;max-width:92vw}.dlg-body{padding:var(--space-5) var(--space-5) 0}.dlg-msg{font-size:var(--font-size-sm);color:var(--color-text);line-height:var(--line-height-body);white-space:pre-wrap}.dlg-input{width:100%;margin-top:var(--space-3);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.dlg-input:focus-visible{box-shadow:var(--focus-ring);outline:none}.dlg-actions{padding:var(--space-5);border-top:0}.dlg-btn{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);background:var(--bg);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;color:var(--color-text)}.dlg-btn:hover{background:var(--color-border)}.dlg-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.dlg-primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-action)}.dlg-primary:hover{background:var(--color-primary-hover)}.om-modal{width:540px;max-width:92vw;max-height:80vh;overflow:hidden}.om-head{padding:var(--space-4) var(--space-5)}.om-head h3{margin:0;font-size:var(--font-size-lg)}.om-content{padding:0}.om-tabs{display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-5) 0;border-bottom:1px solid var(--color-border)}.om-tab{font-size:var(--font-size-sm);color:var(--color-text-subtle);padding:var(--space-2) var(--space-3);border-radius:0;border-bottom:2px solid transparent;margin-bottom:-1px}.om-tab.on{color:var(--color-primary);border-bottom-color:var(--color-primary)}.om-error{margin:var(--space-2) var(--space-5) 0;padding:var(--space-2) var(--space-3);background:var(--color-danger-weak);border:1px solid var(--color-danger);border-radius:var(--radius-md);color:var(--color-danger);font-size:var(--font-size-sm)}.om-body{overflow-y:auto;padding:var(--space-3) var(--space-5) var(--space-5)}.om-empty{font-size:var(--font-size-sm);color:var(--color-text-subtle);text-align:center;padding:var(--space-6)}.om-list{display:flex;flex-direction:column;gap:var(--space-2)}.om-item{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-2) 0 0;background:var(--surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.om-item:hover{border-color:var(--color-border-strong);background:var(--surface-sunken)}.om-item-main{flex:1;min-width:0;text-align:left;border:none;background:none;cursor:pointer;padding:var(--space-2)}.om-item-main:focus-visible{box-shadow:var(--focus-ring);outline:none}.om-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.om-date{font-size:var(--font-size-xs);color:var(--color-text-subtle);margin-top:var(--space-0-5)}.om-icon{font-size:var(--font-size-md);color:var(--color-text-subtle);border-radius:var(--radius-sm)}.om-icon:hover{background:var(--color-border);color:var(--color-text)}.version-gate-dialog{width:min(680px,100%);max-height:90vh}.version-gate-header{padding:calc(var(--space-7) - var(--space-1)) var(--space-7) 0;border-bottom:0}.version-gate-body{padding:0 var(--space-7) calc(var(--space-7) - var(--space-1))}.version-gate-header h2{margin:0 0 var(--space-4);font-size:var(--font-size-xl);color:var(--color-warning)}.version-gate-versions{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background-color:var(--color-warning-weak);border:1px solid var(--color-warning);border-radius:var(--radius-lg);width:fit-content}.version-gate-versions>div{display:flex;flex-direction:column}.version-gate-version-label{font-size:var(--font-size-xs);color:var(--color-warning-hover)}.version-gate-version-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-warning-hover)}.version-gate-versions-divider{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-warning)}.version-gate-lead{margin:0 0 var(--space-5);font-size:var(--font-size-md);color:var(--color-text);line-height:var(--line-height-body)}.version-gate-options{display:flex;flex-direction:column;gap:var(--space-3)}.version-gate-option{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.version-gate-option h3{margin:0 0 var(--space-2);font-size:var(--font-size-md);color:var(--color-text)}.version-gate-option p{margin:0 0 var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:var(--line-height-body)}.version-gate-note{margin:var(--space-2) 0 0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.version-gate-steps{margin:0 0 var(--space-1);padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.version-gate-steps li{font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:var(--line-height-body)}.version-gate-steps li>span{display:block}.version-gate-steps li>.version-gate-secondary-button{margin-top:var(--space-2);margin-right:var(--space-2)}.version-gate-steps li>.version-gate-note{display:block;margin:var(--space-0-5) 0 var(--space-1)}.version-gate-primary-button,.version-gate-secondary-button{display:inline-block;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);cursor:pointer;text-decoration:none;white-space:nowrap}.version-gate-primary-button{background-color:var(--color-primary);color:var(--color-on-action);border:1px solid var(--color-primary)}.version-gate-primary-button:hover{background-color:var(--color-primary-hover)}.version-gate-secondary-button{background-color:var(--surface);color:var(--color-text);border:1px solid var(--color-text-subtle)}.version-gate-secondary-button:hover{background-color:var(--surface-sunken)}.version-gate-primary-button:focus-visible,.version-gate-secondary-button:focus-visible,.version-gate-warning a:focus-visible{box-shadow:var(--focus-ring);outline:none}.version-gate-header h2.version-gate-title-done{color:var(--color-success)}.version-gate-usb-warning,.version-gate-stage,.version-gate-error,.version-gate-warning{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:var(--line-height-body);margin:var(--space-3) 0}.version-gate-usb-warning{background-color:var(--color-danger-weak);border:1px solid var(--color-danger)}.version-gate-usb-warning strong{color:var(--color-danger);font-size:var(--font-size-md)}.version-gate-stage{background-color:var(--surface-sunken);border:1px solid var(--color-border);color:var(--color-text)}.version-gate-error{background-color:var(--color-danger-weak);border:1px solid var(--color-danger);color:var(--color-danger)}.version-gate-warning{background-color:var(--color-warning-weak);border:1px solid var(--color-warning);color:var(--color-warning-hover)}.version-gate-warning a{color:var(--color-primary-hover);font-weight:var(--font-weight-semibold)}.version-gate-actions{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3)}.version-gate-actions .version-gate-primary-button,.version-gate-actions .version-gate-secondary-button{border-style:solid}.version-gate-progress{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.version-gate-progress-label{display:flex;justify-content:space-between;gap:var(--space-3);color:var(--color-text);font-size:var(--font-size-sm)}.version-gate-progress-track{position:relative;width:100%;height:8px;overflow:hidden;background-color:var(--surface-sunken);border-radius:var(--radius-sm)}.version-gate-progress-bar{height:100%;background-color:var(--color-primary);border-radius:var(--radius-sm);transition:width var(--transition-fast) var(--easing-standard)}.version-gate-progress-track-indeterminate .version-gate-progress-bar{position:absolute;width:38%;animation:versionGateIndeterminate 1.1s ease-in-out infinite}@keyframes versionGateIndeterminate{0%{left:-40%}to{left:100%}}.version-gate-editor-only-banner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-4);background-color:var(--color-primary-weak);border-bottom:1px solid var(--color-primary)}.version-gate-editor-only-text{display:flex;flex-direction:column;gap:var(--space-0-5);font-size:var(--font-size-sm);color:var(--color-primary-hover)}.version-gate-editor-only-banner button{padding:var(--space-2) var(--space-3);background-color:var(--surface);color:var(--color-primary-hover);border:1px solid var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;flex-shrink:0}.version-gate-editor-only-banner button:hover{background-color:var(--color-primary-weak)}.version-gate-editor-only-banner button:focus-visible{box-shadow:var(--focus-ring);outline:none}#app{width:100%;height:100vh;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,500px);grid-template-rows:auto auto minmax(0,1fr) auto;gap:0}.app-banner-stack{grid-column:1 / -1;grid-row:1;min-width:0}.version-footer{grid-column:1 / -1;grid-row:4;padding:.25rem .5rem;background-color:var(--bg);border-top:1px solid var(--color-border);text-align:center}.editor-panel{grid-row:3;width:100%;height:100%;overflow:hidden}.control-panel{grid-row:3;width:100%;height:100%;background-color:var(--surface-sunken);border-left:1px solid var(--color-border);display:flex;flex-direction:column;overflow-y:auto}.blockly-workspace-wrapper{position:relative;width:100%;height:100%}.blockly-container{width:100%;height:100%}.blockly-readonly-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--overlay);color:var(--color-on-action);padding:20px 40px;border-radius:var(--radius-lg);font-size:18px;font-weight:700;pointer-events:none;z-index:var(--z-dropdown)}.settings-button{position:fixed;bottom:16px;right:16px;width:48px;height:48px;background-color:var(--color-primary);color:var(--color-on-action);border:none;border-radius:50%;font-size:24px;cursor:pointer;box-shadow:var(--shadow-sm);transition:background-color .2s,transform .1s,box-shadow .2s;z-index:var(--z-dropdown);display:flex;align-items:center;justify-content:center}.settings-button:hover{background-color:var(--color-primary-hover);box-shadow:var(--shadow-md)}.settings-button:active{transform:scale(.95)}.blocklyDropDownContent{overflow-y:auto}@media (max-width: 768px){#app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) minmax(240px,40vh) auto}.editor-panel{grid-row:3;min-width:0;min-height:0}.control-panel{grid-row:4;min-width:0;min-height:0;border-top:1px solid var(--color-border);border-left:0;overflow-y:auto}.version-footer{grid-row:5}}
