:root{--app-height:100vh;--app-width:100vw;color:#e9ece7;font-synthesis:none;letter-spacing:0;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#151817;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:var(--app-height,100vh);overscroll-behavior:none;overflow:hidden}@supports (height:100dvh){body{min-height:100dvh}}.boot-screen,.app-shell{min-height:var(--app-height,100vh)}.boot-screen{color:#d9ded8;background:#151817;justify-content:center;align-items:center;gap:10px;display:flex}.app-shell{--table-overlay-limit:calc(var(--app-height,100vh) * .6);--sidebar-width:min(320px, 34vw);--sidebar-space:0px;width:100vw;height:var(--app-height,100vh);max-height:var(--app-height,100vh);color:#e9ece7;background:#151817;display:block;position:relative;overflow:hidden}.app-shell.drawer-open{--sidebar-space:var(--sidebar-width)}.copy-toast{z-index:40;top:calc(12px + env(safe-area-inset-top));color:#171611;pointer-events:none;background:#ddc16a;border:1px solid #eeebd62e;border-radius:999px;padding:8px 12px;font-size:13px;font-weight:900;line-height:1;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #00000052}.floating-chrome{z-index:10;top:calc(8px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));right:calc(10px + env(safe-area-inset-right) + var(--sidebar-space));pointer-events:none;justify-content:flex-end;align-items:center;gap:12px;transition:right .22s cubic-bezier(.22,1,.36,1);display:flex;position:absolute}h1{color:#f2f4ef;white-space:nowrap;align-items:center;margin:0;font-size:17px;font-weight:700;line-height:1.1;display:inline-flex}.app-icon{letter-spacing:0;text-shadow:0 2px 8px #00000073;background:0 0;border:0;justify-content:center;align-items:center;gap:1px;padding:0;font-size:25px;font-weight:900;line-height:1;display:inline-flex}.logo-four{color:#f4f0df}.logo-nine{color:#e3c33c}.logo-s{color:#c71f2d}.floating-actions{pointer-events:auto;align-items:center;gap:8px;display:inline-flex}.fpv-toggle,.drawer-toggle{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#252b27c7}.fpv-toggle{min-width:66px;padding:0 10px}.fpv-toggle.active{color:#191814;background:#ddc16aeb;border-color:#ddc16a}.segmented,.action-row,.history-row,.nudge-row,.drawer-controls{gap:8px;display:flex}.drawer-toggle{min-width:36px;padding:0;transition:opacity .14s,transform .18s;display:inline-flex}.app-shell.drawer-open .drawer-toggle{opacity:0;pointer-events:none;transform:translate(6px)}.drawer-title{pointer-events:none;justify-content:center;align-items:center;gap:10px;min-width:0;display:flex;position:absolute;inset:0 42px}button{color:#e7ebe5;min-height:34px;font:inherit;cursor:pointer;background:#252b27;border:1px solid #3a423d;border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:0 10px;font-size:14px;line-height:1;display:inline-flex}button:hover:not(:disabled){background:#2d352f;border-color:#748078}button:focus-visible,input:focus-visible,.spin-pad:focus-visible{outline-offset:2px;outline:2px solid #ddc16a}button:disabled{cursor:not-allowed;opacity:.62}button.active{color:#191814;background:#ddc16a;border-color:#ddc16a}button.primary{color:#111410;background:#ebd47e;border-color:#ebd47e;font-weight:700}.speed-select{color:#e7ebe5;background:#252b27;border:1px solid #3a423d;border-radius:6px;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:0 8px;font-size:13px;display:inline-flex}.speed-select select{color:inherit;font:inherit;background:0 0;border:0;outline:0}.speed-select option{color:#e7ebe5;background:#252b27}.speed-select option:checked{color:#111410;background:#ddc16a}.cue-selector{min-width:0}.drawer-controls .cue-selector{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;display:grid}.cue-selector button{border-radius:0;min-width:0;padding:0 9px;position:relative}.cue-selector button:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.cue-selector button:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;margin-left:-1px}.cue-selector button.active{z-index:1;background:#30372f;border-color:#ddc16a}.cue-selector button.active .cue-ball-chip{transform:scale(1.08)}.cue-ball-chip{border-radius:999px;width:22px;height:22px;display:block;box-shadow:inset -5px -6px 9px #0f100c2e,inset 3px 3px 5px #ffffffb8,0 1px 4px #00000047}.cue-ball-chip.white{background:#f4f0df;border:1px solid #ffffffc7}.cue-ball-chip.yellow{background:#e3c33c;border:1px solid #f8e05bd1}.workbench{width:calc(100% - var(--sidebar-space));min-width:0;height:100%;min-height:0;transition:width .22s cubic-bezier(.22,1,.36,1);overflow:hidden}.viewports,.viewport{background:#101312;width:100%;min-width:0;height:100%;min-height:0;position:relative;overflow:hidden}.viewport canvas{display:block;width:100%!important;height:100%!important}.viewport.interactive{cursor:grab;touch-action:none}.viewport.interactive:active{cursor:grabbing}.scan-viewport{padding:52px 12px 12px}.scan-layout{grid-template-rows:minmax(0,1fr);gap:10px;width:100%;height:100%;min-height:0;display:grid}.scan-layout.has-scan{grid-template-rows:minmax(118px,24vh) minmax(0,1fr)}.scan-table-zone,.scan-photo-zone{min-width:0;min-height:0}.scan-table-zone{place-items:center;display:grid}.scan-photo-zone{place-items:center;display:grid;overflow:hidden}.play-layout{width:100%;height:100%;min-height:0;position:relative}.play-zone{min-width:0;min-height:0;position:relative;overflow:hidden}.play-zone-3d{position:absolute;inset:0}.floating-table-overlay{z-index:8;top:var(--floating-table-y);left:var(--floating-table-x);width:max(160px, var(--floating-table-width));aspect-ratio:1.752;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);touch-action:none;cursor:grab;background:#0d100f94;border:1px solid #eeebd629;border-radius:8px;position:absolute;box-shadow:0 12px 36px #00000047}.floating-table-overlay:active{cursor:grabbing}.floating-table-overlay .play-table-editor{width:100%;max-width:none;height:100%}.floating-table-resize{z-index:8;color:#f2f4efe0;touch-action:none;cursor:nwse-resize;background:0 0;border:0;width:42px;min-width:42px;height:42px;min-height:42px;padding:0;position:absolute;bottom:-12px;right:-12px}.floating-table-resize:hover:not(:disabled),.floating-table-resize:focus-visible{background:0 0}.resize-corner{filter:drop-shadow(0 1px 4px #00000094);pointer-events:none;border-bottom:2px solid #f2f4efd1;border-right:2px solid #f2f4efd1;border-bottom-right-radius:4px;width:16px;height:16px;position:absolute;bottom:2px;right:2px}.resize-corner:before,.resize-corner:after{content:"";border-bottom:1.5px solid #f2f4ef94;border-right:1.5px solid #f2f4ef94;width:7px;height:7px;position:absolute;bottom:3px;right:3px}.resize-corner:after{opacity:.72;width:4px;height:4px;bottom:8px;right:8px}.play-table-editor{background:0 0;max-width:calc(100% - 24px);height:100%;min-height:0;position:relative;overflow:hidden}.play-table-editor .viewport{background:0 0;position:absolute;inset:0}.play-ball-handle{z-index:5;width:max(28px, var(--play-ball-size,18px));height:max(28px, var(--play-ball-size,18px));cursor:grab;touch-action:none;background:0 0;border:0;border-radius:999px;min-width:0;padding:0;position:absolute;transform:translate(-50%,-50%)}.play-ball-handle:active{cursor:grabbing}.play-ball-handle.active,.play-ball-handle:hover:not(:disabled){color:inherit;background:0 0;border-color:#0000}.play-ball-handle:before,.play-ball-handle:after{opacity:0;content:"";pointer-events:none;border-radius:999px;margin:auto;position:absolute;inset:0}.play-ball-handle.cue-candidate:after{width:max(28px, calc(var(--play-ball-size,18px) + 10px));height:max(28px, calc(var(--play-ball-size,18px) + 10px));border:1px solid color-mix(in srgb, var(--marker-color) 70%, transparent);opacity:0;background:0 0}.play-ball-handle.active:before{width:max(24px, calc(var(--play-ball-size,18px) + 6px));height:max(24px, calc(var(--play-ball-size,18px) + 6px));opacity:1;border:2px solid #ddc16a;box-shadow:0 0 12px #ddc16a7a}.play-table-editor:hover .play-ball-handle.cue-candidate:after{opacity:.32}.control-zone{z-index:7;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));cursor:crosshair;opacity:.88;touch-action:none;-webkit-user-select:none;user-select:none;height:clamp(104px,17vh,142px);min-height:0;padding:0;position:absolute;left:10px}.control-zone-panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d100fb8;border:1px solid #eeebd624;border-radius:8px;grid-template-columns:minmax(160px,204px) minmax(0,1fr);align-items:center;gap:12px;width:100%;height:100%;padding:8px;display:grid;box-shadow:inset 0 0 0 1px #ffffff05}.control-spin-panel{align-self:stretch;place-items:center;min-height:0;padding:0 2px;display:grid}.control-zone .spin-pad{width:auto;height:min(100%,118px)}.control-hints{pointer-events:none;border-radius:6px;align-self:stretch;min-width:0;height:100%;position:relative;overflow:hidden}.control-hints:before{content:"";border-top:1px dashed #eeebd638;position:absolute;top:50%;left:0;right:122px}.aim-guide{justify-content:center;align-items:center;display:flex;position:absolute;left:0;right:122px}.aim-guide.coarse{height:50%;top:0}.aim-guide.fine{height:50%;bottom:0}.aim-guide>span,.gesture-hints>span{color:#f1f3ede0;white-space:nowrap;background:#ffffff0d;border:1px solid #eeebd61f;border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.gesture-hints>span{background:0 0;border:0;border-radius:0;justify-content:flex-start;gap:8px;padding:2px 0}.mouse-gesture-icon{background:0 0;border:0;flex:0 0 28px;width:28px;height:22px;padding:0;display:inline-block;position:relative}.mouse-gesture-svg{width:17px;height:22px;position:absolute;top:0;left:10px;overflow:visible}.mouse-shell{fill:#080a0a57;stroke:#f1f3edeb;stroke-width:2px}.mouse-seam{fill:none;stroke:#f1f3ed73;stroke-linecap:round;stroke-width:1.4px}.mouse-button-shape{fill:#0000}.mouse-button-shape.active{fill:#ffffffeb;filter:drop-shadow(0 0 3px #ffffffb8)}.mouse-wheel-shape{fill:#f1f3edad}.mouse-gesture-arrow{fill:none;stroke:#fffffff0;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;filter:drop-shadow(0 0 3px #ffffff73);width:10px;height:22px;position:absolute;top:0;left:0}.mouse-click-effect{fill:none;stroke:#fffffff0;stroke-linecap:round;stroke-width:2px;filter:drop-shadow(0 0 3px #ffffff8c);width:18px;height:18px;position:absolute;top:-2px;left:5px}.touch-gesture-icon{background:0 0;border:0;flex:0 0 29px;width:29px;height:22px;padding:0;display:none;position:relative}.touch-gesture-svg{width:18px;height:22px;position:absolute;top:0;left:9px;overflow:visible}.touch-palm,.touch-thumb,.touch-finger{fill:#080a0a57;stroke:#f1f3edeb;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.touch-finger.primary{fill:#ffffffe6;filter:drop-shadow(0 0 3px #ffffff8c)}.touch-finger.secondary{fill:#ffffff7a}.touch-gesture-arrow{fill:none;stroke:#fffffff0;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;filter:drop-shadow(0 0 3px #ffffff73);width:10px;height:22px;position:absolute;top:0;left:0}.touch-click-effect{fill:none;stroke:#fffffff0;stroke-linecap:round;stroke-width:2px;filter:drop-shadow(0 0 3px #ffffff8c);width:18px;height:18px;position:absolute;top:-2px;left:13px}.aim-guide.fine>span{color:#e8d793f0;border-color:#ddc16a38}.gesture-hints{align-content:center;gap:6px;width:108px;display:grid;position:absolute;top:0;bottom:0;right:0}@media (hover:none) and (pointer:coarse){.mouse-gesture-icon{display:none}.touch-gesture-icon{display:inline-block}}.drawer-backdrop{width:var(--sidebar-width);z-index:18;opacity:1;pointer-events:none;background:0 0;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}.drawer-backdrop.open{pointer-events:auto}.controls-drawer{width:100%;height:var(--app-height,100vh);padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));color:#e9ece7;overscroll-behavior:contain;will-change:transform;background:#1b1f1d;border-left:1px solid #3a423d;transition:transform .22s cubic-bezier(.22,1,.36,1);overflow-y:auto;transform:translate(105%);box-shadow:-10px 0 28px #0000003d}.drawer-backdrop.open .controls-drawer{transform:translate(0)}.drawer-header{color:#f2f4ef;justify-content:flex-end;align-items:center;gap:10px;min-height:34px;margin-bottom:12px;font-size:15px;font-weight:800;display:flex;position:relative}.drawer-close{z-index:1;min-width:34px;padding:0;position:relative}.drawer-controls{gap:10px;display:grid}.drawer-controls button,.drawer-controls .speed-select{justify-content:center;width:100%}.drawer-controls .cue-selector button{justify-content:center;min-height:42px}.drawer-controls .button-label{display:inline}.control-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;display:grid}.control-row>button,.control-row>.speed-select{border-radius:0;position:relative}.control-row>:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.control-row>:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;margin-left:-1px}.control-row>button:hover:not(:disabled),.control-row>button:focus-visible,.control-row>.speed-select:focus-within{z-index:1}.control-section{gap:10px;display:grid}.section-title,.control-section label{color:#dfe4dd;justify-content:space-between;align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex}.control-section label output{color:#aeb8b0;font-size:12px;font-weight:500}input[type=range]{accent-color:#ddc16a;width:100%}.segmented button,.nudge-row button,.action-row button,.history-row button{flex:1 1 0}.spin-pad{aspect-ratio:1.62;cursor:crosshair;touch-action:none;background:0 0;border:0;border-radius:10px;width:min(196px,100%);margin:0 auto;position:relative;overflow:hidden}.spin-cue-ball,.spin-object-ball{width:var(--cue-diameter,51%);aspect-ratio:1;border-radius:999px;position:absolute;left:50%;transform:translate(-50%,-50%)}.spin-cue-ball{z-index:2;border:2px solid var(--cue-border,#edf0df);background:radial-gradient(circle at 38% 28%, #ffffffb8, transparent 22%), radial-gradient(circle at 50% 50%, #edf0df2e 0 2px, transparent 3px), var(--cue-color,#f3f1e4bd);top:50%;box-shadow:inset -18px -24px 38px #14151214}.spin-object-ball{z-index:1;top:50%;left:calc(50% + var(--object-offset));border:2px solid color-mix(in srgb, var(--object-color) 88%, #111410);background:color-mix(in srgb, var(--object-color) 16%, transparent);opacity:var(--object-opacity);box-shadow:none}.spin-clock-guides{z-index:3;width:var(--cue-diameter,51%);aspect-ratio:1;pointer-events:none;border-radius:999px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.spin-clock-guides span{transform-origin:50%;background:#1f221c29;width:100%;height:1px;position:absolute;top:50%;left:50%}.spin-crosshair{z-index:4;background:#1f221c47;position:absolute}.spin-crosshair.horizontal{top:50%;left:calc(50% - var(--cue-radius,25.5%));width:var(--cue-diameter,51%);height:1px}.spin-crosshair.vertical{top:calc(50% - var(--cue-radius,25.5%));width:1px;height:var(--cue-diameter,51%);left:50%}.spin-dot{z-index:5;background:#d43232;border:2px solid #101312;border-radius:999px;width:18px;height:18px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 3px 8px #00000047}.spin{animation:.9s linear infinite spin}.help-backdrop{z-index:20;background:#0406059e;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.scanner-backdrop{z-index:21;background:#040605b8;place-items:center;padding:14px;display:grid;position:fixed;inset:0}.scanner-dialog{width:min(1180px,100%);max-height:min(760px, calc(var(--app-height,100vh) - 28px));color:#eef1ec;background:#1b211e;border:1px solid #3b453f;border-radius:8px;grid-template-rows:auto auto minmax(0,1fr) auto;gap:12px;padding:14px;display:grid;position:relative;box-shadow:0 22px 70px #00000075}.scanner-header{justify-content:space-between;align-items:flex-start;gap:14px;padding-right:38px;display:flex}.scanner-header h2{margin:0 0 5px;font-size:18px}.scanner-header p{color:#b8c1b9;margin:0;font-size:13px;line-height:1.35}.scanner-actions,.scanner-footer{gap:8px;display:flex}.scanner-actions button,.scanner-footer button{flex:1 1 0}.hidden-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.scanner-workspace{grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);align-items:center;gap:12px;min-height:0;display:grid}.scanner-preview{width:min(100%, calc((var(--app-height,100vh) - 230px) * var(--preview-aspect,1.333)));max-height:calc(var(--app-height,100vh) - 210px);background:#0f1412;border:1px solid #eeebd61f;border-radius:6px;place-self:center;min-height:0;position:relative;overflow:visible}.embedded-scan-preview{width:min(100%, calc((var(--app-height,100vh) - 210px) * var(--preview-aspect,1.333)));max-height:100%}.scanner-photo{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.scan-image-frame{fill:#ffffff08;stroke:#eeebd642;stroke-width:2px;vector-effect:non-scaling-stroke}.scanner-photo image{opacity:.96}.scanner-photo polygon{fill:#ffdd5c1a;stroke:#ffea80fa;stroke-width:6px;vector-effect:non-scaling-stroke}.scanner-photo polyline{fill:none;stroke:#fff8b6fa;stroke-dasharray:14 7;stroke-linecap:round;stroke-width:4px;vector-effect:non-scaling-stroke}.scan-photo-marker-visual{pointer-events:none}.scan-corner,.scan-marker{touch-action:none;position:absolute;transform:translate(-50%,-50%)}.scan-corner{background:#ebd47e;border:2px solid #101312;border-radius:999px;width:18px;min-width:18px;height:18px;padding:0;box-shadow:0 2px 7px #00000057}.scan-marker{color:#111410;background:#ffffff03;border:0;border-radius:999px;width:34px;min-width:34px;height:34px;padding:0;font-size:10px;font-weight:900;overflow:visible}.scan-marker:before,.scan-marker:after{content:"";pointer-events:none;border-radius:999px;margin:auto;position:absolute;inset:0}.scan-marker:before{width:var(--scan-ball-size,22px);height:var(--scan-ball-size,22px);border:3px solid var(--marker-color);box-shadow:0 0 0 1px #000000b8, 0 0 12px color-mix(in srgb, var(--marker-color) 82%, transparent);background:0 0}.scan-marker:after{border:1px solid color-mix(in srgb, var(--marker-color) 74%, transparent);background:color-mix(in srgb, var(--marker-color) 18%, transparent);width:34px;height:34px;box-shadow:0 5px 12px #0000005c}.scan-marker span{z-index:1;text-shadow:0 1px 2px #ffffff8c;place-items:center;width:100%;height:100%;display:grid;position:relative}.scanner-preview .scan-marker span{opacity:0}.embedded-scan-preview>.scan-marker:before,.embedded-scan-preview>.scan-marker:after{display:none}.scan-progress-overlay{z-index:3;color:#eef1ec;pointer-events:none;background:#0c100ec7;border:1px solid #eeebd633;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 20px);padding:8px 10px;font-size:12px;line-height:1;display:inline-flex;position:absolute;bottom:10px;right:10px;box-shadow:0 8px 24px #00000057}.scan-progress-overlay span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.scanner-ortho{width:100%;max-height:calc(var(--app-height,100vh) - 230px);background:#111613;border:8px solid #6f4829;border-radius:6px;min-height:180px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 5px #1d7bc1}.scanner-ortho-cloth{background:linear-gradient(90deg,#ffffff14,#0000 22% 78%,#0000001f),#1584d1;border-radius:3px;position:absolute;inset:10px}.ortho-marker{z-index:2}.embedded-scan-ortho .ortho-marker{box-shadow:none;border-color:#0000;background:0 0!important}.embedded-scan-ortho .ortho-marker:hover:not(:disabled),.embedded-scan-ortho .ortho-marker:active{border-color:#0000;background:0 0!important}.ortho-marker:before{width:var(--scan-ball-size,28px);height:var(--scan-ball-size,28px);background:0 0;border-width:2px}.embedded-scan-ortho{background:0 0;width:min(100%,42.048vh);height:min(100%,24vh);min-height:0;max-height:none;position:relative;overflow:hidden}.embedded-scan-ortho .viewport{background:0 0;position:absolute;inset:0}.ortho-marker:after{width:max(28px, var(--scan-ball-size,28px));height:max(28px, var(--scan-ball-size,28px));background:color-mix(in srgb, var(--marker-color) 12%, transparent)}.embedded-scan-ortho .ortho-marker:before,.embedded-scan-ortho .ortho-marker:after{opacity:0}.ortho-marker span{opacity:1}.scanner-empty{color:#b8c1b9;text-align:center;border:1px dashed #eeebd633;border-radius:6px;place-items:center;gap:12px;min-height:260px;padding:30px;display:grid}.scan-empty-main{width:min(620px,100% - 28px);min-height:min(360px, calc(var(--app-height,100vh) - 120px));color:#cbd4cc;text-align:center;background:#171d1a;border:1px dashed #eeebd647;border-radius:8px;place-items:center;gap:12px;padding:28px;display:grid}@media (width<=760px){.scanner-dialog{max-height:calc(var(--app-height,100vh) - 16px);padding:10px}.scanner-workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr}.scanner-preview{max-height:calc((var(--app-height,100vh) - 265px) * .58)}.scanner-ortho{max-height:calc((var(--app-height,100vh) - 265px) * .42);min-height:128px}}.scanner-footer{justify-content:flex-end}.help-dialog{color:#eef1ec;background:#1b211e;border:1px solid #3b453f;border-radius:8px;width:min(420px,100%);padding:20px;position:relative;box-shadow:0 22px 70px #0000006b}.help-dialog h2{margin:0 0 14px;font-size:18px}.help-dialog ul{color:#cdd5ce;gap:10px;margin:0;padding-left:18px;font-size:14px;line-height:1.45;display:grid}.dialog-close{min-width:34px;padding:0;position:absolute;top:10px;right:10px}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=980px){.viewport{min-height:0}}@media (width<=720px),(hover:none) and (pointer:coarse){.app-shell{--table-overlay-limit:calc(var(--app-height,100vh) * .92)}h1{font-size:16px}.app-icon{font-size:22px}button{min-width:34px;padding:0 8px}.viewport{min-height:0}.control-zone{height:clamp(96px,18vh,126px)}.floating-table-overlay{width:max(132px, var(--floating-table-width))}.control-zone-panel{grid-template-columns:minmax(138px,164px) minmax(0,1fr);gap:8px;padding:6px}.control-zone .spin-pad{width:auto;height:min(100%,98px)}.control-hints:before,.aim-guide{right:82px}.gesture-hints{gap:4px;width:76px}.aim-guide>span,.gesture-hints>span{gap:4px;padding:4px 6px;font-size:10px}.gesture-hints>span{gap:6px;padding:2px 0}.mouse-gesture-icon{flex-basis:27px;width:27px}.mouse-gesture-svg{width:16px;height:21px;left:9px}.mouse-gesture-arrow{width:10px;height:21px}.mouse-click-effect{left:4px}.touch-gesture-icon{flex-basis:27px;width:27px}.touch-gesture-svg{width:16px;height:21px;left:8px}.touch-gesture-arrow{width:10px;height:21px}.touch-click-effect{left:11px}}@media (width<=720px) and (orientation:portrait),(hover:none) and (pointer:coarse) and (orientation:portrait){.app-shell.drawer-open{--sidebar-space:0px}.drawer-backdrop{opacity:0;background:#0507067a;width:auto;transition:opacity .18s;position:fixed;inset:0}.drawer-backdrop.open{opacity:1;pointer-events:auto}.controls-drawer{width:min(320px,100vw - 28px);box-shadow:-18px 0 50px #0000006b}.drawer-backdrop.open .controls-drawer{transform:translate(0)}.app-shell.drawer-open .drawer-toggle{opacity:0;pointer-events:none;transform:translate(6px)}}@media (height<=520px){.app-shell{--table-overlay-limit:calc(var(--app-height,100vh) * .6)}.control-zone{height:clamp(86px,24vh,112px)}}@media (height<=520px) and (hover:none) and (pointer:coarse){.app-shell{--table-overlay-limit:calc(var(--app-height,100vh) * .44)}}@supports (height:100dvh){.boot-screen,.app-shell{min-height:100dvh}.app-shell{--table-overlay-limit:60dvh;height:100dvh;max-height:100dvh}.controls-drawer{height:100dvh}@media (width<=720px),(hover:none) and (pointer:coarse){.app-shell{--table-overlay-limit:92dvh}}@media (height<=520px){.app-shell{--table-overlay-limit:60dvh}}@media (height<=520px) and (hover:none) and (pointer:coarse){.app-shell{--table-overlay-limit:44dvh}}}
