:root{--bg:#f6f8fb;--panel:#fff;--text:#1f2937;--muted:#6b7280;--blue:#1d4ed8;--green:#166534;--orange:#c2410c;--purple:#6d28d9;--red:#b91c1c;--border:#dbe3ef;--shadow:0 8px 24px rgba(31,41,55,.08)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}header{padding:1rem;background:linear-gradient(135deg,#e0f2fe,#fef3c7);border-bottom:1px solid var(--border)}header h1{margin:0 0 .25rem;font-size:clamp(1.4rem,3vw,2.2rem)}header p{margin:0;color:var(--muted);font-size:1rem}main{display:grid;grid-template-columns:260px minmax(280px,1fr) 390px;gap:1rem;padding:1rem}section{background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:1rem;min-height:420px}h2{margin:0 0 .75rem;font-size:1.15rem}h3{margin:1rem 0 .5rem;font-size:1rem}.palette{display:grid;gap:.75rem}.block,.program-block{border:0;border-radius:14px;padding:.9rem 1rem;color:#fff;font-weight:700;font-size:1rem;cursor:grab;box-shadow:0 4px #00000029;text-align:left;width:100%}.block:active,.program-block:active{cursor:grabbing;transform:translateY(2px);box-shadow:0 2px #00000029}.move{background:var(--blue)}.turn{background:var(--green)}.sound{background:var(--orange)}.wait{background:var(--purple)}.stop{background:var(--red)}.workspace{display:flex;flex-direction:column;gap:.75rem;min-height:260px;padding:.75rem;border:2px dashed #b6c4d8;border-radius:16px;background:#f8fafc}.workspace.empty:before{content:"Drag blocks here or click blocks to add them";color:var(--muted);font-weight:600;text-align:center;padding:2rem 1rem}.program-block{position:relative;padding-right:3rem}.remove-block{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);width:1.8rem;height:1.8rem;border:0;border-radius:50%;background:#ffffff4d;color:#fff;font-size:1rem;font-weight:900;cursor:pointer}.controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.control-button{border:0;border-radius:12px;padding:.75rem 1rem;font-weight:800;cursor:pointer;background:#111827;color:#fff}.control-button.secondary{background:#e5e7eb;color:#111827}.control-button.usb{background:#1d4ed8}.control-button.bluetooth{background:#6d28d9}.control-button.danger{background:#b91c1c}.control-button.warning{background:#c2410c}.control-button:disabled{opacity:.55;cursor:not-allowed}.robot-stage{height:220px;border-radius:18px;background:linear-gradient(#dbeafe,#f0fdf4);border:1px solid var(--border);display:grid;place-items:center;overflow:hidden;position:relative;margin-bottom:1rem}.robot{width:88px;height:88px;border-radius:28px;background:#fff;border:5px solid #111827;position:absolute;display:grid;place-items:center;font-size:2rem;transition:transform .45s ease}.robot:before,.robot:after{content:"";position:absolute;width:20px;height:32px;border-radius:12px;background:#111827;bottom:-20px}.robot:before{left:12px}.robot:after{right:12px}.status,.connection-panel,.diagnostic-panel{padding:.75rem;border-radius:12px;background:#f8fafc;border:1px solid var(--border);color:var(--muted);font-weight:600}.status{min-height:48px}.connection-panel strong,.diagnostic-panel strong{color:var(--text)}pre,.log-output{white-space:pre-wrap;background:#111827;color:#e5e7eb;padding:1rem;border-radius:14px;overflow:auto;font-size:.9rem}pre{min-height:130px}.log-output{height:260px;margin-top:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}label{display:block;margin:.5rem 0 .25rem;color:var(--text);font-weight:700;font-size:.9rem}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:.65rem;font:inherit;background:#fff}textarea{min-height:84px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.small-note{margin-top:.5rem;color:var(--muted);font-size:.85rem;line-height:1.35}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}details{margin-top:1rem;border:1px solid var(--border);border-radius:14px;padding:.75rem;background:#fff}summary{cursor:pointer;font-weight:900;color:var(--text)}.device-info{display:grid;gap:.35rem;margin-top:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;color:var(--text)}.status-readout{margin-top:.5rem;min-height:0;font-size:.8rem;line-height:1.5}.status-info{display:grid;gap:.3rem;margin-top:.6rem;padding:.6rem .75rem;background:#fff;border:1px solid var(--border);border-radius:12px;font-size:.9rem;color:var(--text)}.status-info strong{color:var(--text)}#techToolsLog{margin-top:1rem}.battery-indicator{display:inline-block;margin:.25rem 0 0;padding:.2rem .6rem;border-radius:999px;font-weight:700;font-size:.9rem;background:#eef2f7;color:var(--text);border:1px solid var(--border)}.battery-indicator[data-level=high],.battery-indicator[data-level=medium]{background:#e7f6ec;color:#166534;border-color:#a7e0ba}.battery-indicator[data-level=low]{background:#fff4e5;color:#b45309;border-color:#fcd9a1}.battery-indicator[data-level=empty]{background:#fdeaea;color:#b91c1c;border-color:#f5b5b5}@media (max-width:980px){main{grid-template-columns:1fr}section{min-height:auto}}.program-block{list-style-position:inside}.block-main{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.block-label{font-weight:800}.step-controls{margin-top:.75rem;padding:.75rem;border-radius:12px;background:#ffffff2e}.step-controls label{color:#fff;margin:0 0 .4rem;font-size:.95rem}.step-input-row{display:flex;align-items:center;gap:.5rem}.step-input-row input{max-width:8rem;color:#111827}.step-unit{color:#fff;font-weight:800}.step-list-label{display:block;margin:.75rem 0 .35rem;color:#fff;font-size:.9rem;font-weight:800}.step-list{display:flex;gap:.35rem;overflow-x:auto;max-width:100%;padding:.25rem .15rem .45rem;scrollbar-width:thin}.step-option{flex:0 0 auto;min-width:2.75rem;border:2px solid rgba(255,255,255,.75);border-radius:999px;background:#fff;color:#111827;font-weight:900;padding:.45rem .65rem;cursor:pointer}.step-option[aria-pressed=true]{outline:3px solid #fff;outline-offset:2px;background:#111827;color:#fff}.step-option:focus-visible,.block:focus-visible,.control-button:focus-visible,.remove-block:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #111827;outline-offset:3px}.skip-link{position:absolute;left:.5rem;top:.5rem;transform:translateY(-200%);background:#111827;color:#fff;padding:.75rem 1rem;border-radius:.5rem;z-index:1000}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.step-controls{overflow:visible}.step-picker{position:relative;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.step-picker input{width:7rem;max-width:7rem;background:#fff;color:#111827;border:2px solid rgba(255,255,255,.9);border-radius:999px;text-align:center;font-weight:900}.step-picker-toggle{border:2px solid rgba(255,255,255,.85);border-radius:999px;padding:.55rem .8rem;background:#fff;color:#111827;font-weight:900;cursor:pointer}.step-picker-toggle:hover,.step-picker-toggle:focus-visible{background:#111827;color:#fff}.step-help{margin:.5rem 0 0;color:#fff;font-size:.85rem;font-weight:700}.step-list{position:absolute;z-index:20;top:calc(100% + .45rem);left:0;width:min(14rem,100%);max-height:13.5rem;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:0;padding:.35rem;border:2px solid rgba(17,24,39,.35);border-radius:.25rem;background:#1d4ed8;box-shadow:0 10px 24px #11182759;scrollbar-width:thin}.step-list[hidden]{display:none}.step-option{width:100%;min-width:0;border:0;border-radius:.2rem;background:transparent;color:#fff;font-weight:900;font-size:1.05rem;text-align:center;padding:.75rem .5rem;cursor:pointer}.step-option:hover,.step-option:focus-visible,.step-option[aria-pressed=true]{outline:3px solid #ffffff;outline-offset:-3px;background:#111827;color:#fff}.step-picker-toggle:focus-visible,.step-option:focus-visible{outline:3px solid #ffffff;outline-offset:2px}main{grid-template-columns:minmax(420px,2fr) minmax(300px,1fr)}.blockly-area{height:560px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#fff}.editor-section{min-height:640px}@media (max-width:980px){main{grid-template-columns:1fr}.blockly-area{height:420px}}html,body.app-body{height:100%;overflow:hidden}body.app-body{display:flex;flex-direction:column;background:#fff}header.topbar{display:flex;align-items:center;gap:1rem;padding:.6rem 1.25rem;background:#fff;border-bottom:1px solid var(--border)}.app-title{margin:0;font-size:1.35rem;font-weight:800}.status-pill{flex:1;min-width:0;background:#f6f8fb;border:1px solid var(--border);border-radius:999px;padding:.45rem .9rem;font-size:.85rem;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:0}.topbar-actions{display:flex;align-items:center;gap:.55rem}.topbar-divider{width:1px;height:28px;background:var(--border)}.icon-button{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:1.05rem;font-weight:800;cursor:pointer;display:grid;place-items:center;color:#374151;box-shadow:0 1px 2px #1f293714;padding:0}.icon-button:hover{background:#f3f4f6}.icon-button:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.icon-button.run{background:#16a34a;border-color:#15803d;color:#fff;font-size:1.15rem}.icon-button.run:hover{background:#15803d}.icon-button.stop{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.icon-button.help{background:#2563eb;border-color:#1d4ed8;color:#fff}.icon-button:disabled{opacity:.5;cursor:not-allowed}main.app-layout{display:flex;flex:1;min-height:0;padding:0;gap:0}.category-rail{display:flex;flex-direction:column;gap:.4rem;padding:.75rem .5rem;width:96px;overflow-y:auto;background:#fff;border-right:1px solid var(--border);flex:none}.category-button{display:flex;flex-direction:column;align-items:center;gap:.18rem;border:2px solid transparent;background:#fff;border-radius:14px;padding:.5rem .25rem;cursor:pointer;width:100%}.category-button .category-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:1.25rem;background:#fff;border:2px solid var(--cat-colour);box-shadow:inset 0 0 0 100px color-mix(in srgb,var(--cat-colour) 14%,#fff)}.category-button .category-label{font-size:.62rem;font-weight:800;color:#374151;text-align:center;line-height:1.1}.category-button.active{border-color:var(--cat-colour)}.category-button:hover{background:#f8fafc}.category-button:focus-visible{outline:3px solid var(--cat-colour,#2563eb);outline-offset:2px}.blockly-area{flex:1;min-width:0;height:auto;border:0;border-radius:0;min-height:0}.drawer{position:fixed;top:70px;right:12px;bottom:12px;width:min(430px,calc(100vw - 24px));overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:0 18px 50px #1f293740;padding:1rem;z-index:60}.drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.drawer-header h2{margin:0;font-size:1.1rem}.drawer-close{width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:#f3f4f6;font-size:1.1rem;font-weight:900;cursor:pointer;line-height:1}.drawer-close:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.help-dialog{border:0;border-radius:18px;box-shadow:0 18px 50px #1f29374d;padding:1.25rem;max-width:480px}.help-dialog::backdrop{background:#11182759}.help-steps{padding-left:1.2rem;line-height:1.55}.choice-group{border:1px solid var(--border);border-radius:12px;padding:.5rem .75rem;margin:.5rem 0}.choice-group label{display:inline-flex;align-items:center;gap:.3rem;margin:.25rem .6rem .25rem 0;font-weight:600}.choice-group input{width:auto}@media (max-width:760px){.category-rail{width:72px}.category-button .category-label{font-size:.55rem}.app-title{font-size:1.05rem}.status-pill{display:none}.icon-button{width:40px;height:40px}}@media (max-width:520px){.topbar-actions{gap:.3rem}.topbar-divider{display:none}.icon-button{width:36px;height:36px;font-size:.95rem}.tile-button{width:38px;height:38px}.app-title{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}}.tile-button{width:54px;height:54px;border-radius:16px;border:1px solid var(--border);background:#fff;cursor:pointer;display:grid;place-items:center;box-shadow:0 1px 2px #1f293714;padding:0}.tile-button:hover{background:#f8fafc}.tile-button:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.help-badge{width:32px;height:32px;border-radius:50%;background:#2f80ed;color:#fff;font-weight:900;font-size:1.05rem;display:grid;place-items:center;line-height:1}.avatar-icon{width:30px;height:30px}@media (max-width:760px){.tile-button{width:46px;height:46px}.help-badge{width:28px;height:28px}.avatar-icon{width:26px;height:26px}}main.app-layout.sim-active .blockly-area{flex:0 0 46%}.pane-splitter{flex:0 0 10px;align-self:stretch;position:relative;cursor:col-resize;background:transparent;touch-action:none;z-index:6}main.app-layout:not(.sim-active) .pane-splitter{display:none}.pane-splitter:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translate(-50%);background:var(--border);transition:background .12s,width .12s}.pane-splitter:after{content:"\22ee\22ee";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scaleX(.6);letter-spacing:-2px;color:#9aa6b6;font-size:15px;font-weight:900;line-height:.7;white-space:pre;pointer-events:none}.pane-splitter:hover:before,.pane-splitter:focus-visible:before,body.pane-resizing .pane-splitter:before{background:#2563eb;width:4px}.pane-splitter:focus-visible{outline:none}body.pane-resizing{cursor:col-resize;user-select:none}.sim-stage{flex:1;min-width:0;display:flex;flex-direction:column;background:#f6f8fb;border-left:1px solid var(--border);position:relative}.sim-stage[hidden],.sim-close{display:none}.sim-field{flex:1;position:relative;overflow:hidden;background-image:linear-gradient(#b9bdc2 1px,transparent 1px),linear-gradient(90deg,#b9bdc2 1px,transparent 1px);background-size:40px 40px}.sim-robot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:72px;height:72px;border-radius:50%;border:3px solid #1d4ed8;background:#fff;color:#1d4ed8;cursor:pointer;display:grid;place-items:center;box-shadow:0 6px 18px #1d4ed840;padding:0}.sim-robot svg{width:40px;height:40px}.sim-robot.waiting{animation:sim-pulse 1.4s ease-in-out infinite}.sim-robot.running{cursor:default;animation:none}.sim-robot{touch-action:none}.sim-robot:not(.running){cursor:grab}.sim-robot.dragging{cursor:grabbing;animation:none;transition:none;box-shadow:0 10px 26px #1d4ed866;z-index:5}@keyframes sim-pulse{0%,to{box-shadow:0 0 #1d4ed859}50%{box-shadow:0 0 0 16px #1d4ed800}}.sim-bubble{position:absolute;left:50%;top:50%;transform:translate(-50%,-110px);background:#111827;color:#fff;border-radius:999px;padding:.4rem .8rem;font-weight:800;font-size:1rem;white-space:nowrap;z-index:4;pointer-events:none}.sim-bubble.sim-face-bubble{font-size:3.75rem;line-height:1;padding:.25rem .5rem;border-radius:22px;background:#fff;color:#111827;border:3px solid #111827;box-shadow:0 8px 22px #11182747}.sim-bubble.sim-picture-bubble{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.62rem;line-height:.78;letter-spacing:.06em;white-space:pre;padding:.5rem .6rem;border-radius:12px;background:#10202e;color:#4ee0f0;border:3px solid #111827;box-shadow:0 8px 22px #11182747}.sim-hint{margin:0;padding:.6rem 1rem;font-size:.85rem;color:var(--muted);font-weight:600;border-top:1px solid var(--border);background:#fff}.run-choice .run-choices{display:flex;gap:1rem;margin:.75rem 0 .25rem}.run-choice-button{flex:1;display:flex;flex-direction:column;align-items:center;gap:.3rem;border:2px solid var(--border);border-radius:18px;background:#fff;padding:1.1rem .75rem;cursor:pointer;min-width:140px}.run-choice-button:hover{border-color:#2563eb;background:#eff6ff}.run-choice-button:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.run-choice-icon{font-size:2.4rem;line-height:1}.run-choice-label{font-weight:900;font-size:1.05rem}.run-choice-sub{font-size:.78rem;color:var(--muted);font-weight:600}.sim-ink{position:absolute;pointer-events:none;visibility:hidden}.sim-tools{height:104px;flex:none;background:#fff;border-top:1px solid var(--border);display:grid;place-items:center}.sim-pen{width:56px;height:56px;border-radius:16px;border:2px solid #111827;background:#fff;color:#111827;cursor:pointer;display:grid;place-items:center;padding:0;box-shadow:0 2px 6px #11182740;transition:background .15s,color .15s}.sim-grid-group{display:flex;align-items:center;gap:2px;background:#f3f4f6;border:2px solid #111827;border-radius:14px;padding:3px 6px;box-shadow:0 2px 6px #1118272e}.sim-grid-label{font-size:.85rem;font-weight:900;color:#374151;user-select:none}.sim-grid-input{width:3.2rem;border:0;background:transparent;font-size:.9rem;font-weight:800;color:#111827;text-align:center;padding:.2rem 0;outline:none}.sim-grid-unit{border:0;background:transparent;font-size:.85rem;font-weight:800;color:#111827;cursor:pointer;outline:none;padding:.2rem 0}.sim-grid-input:focus-visible,.sim-grid-unit:focus-visible{outline:2px solid #2563eb;outline-offset:1px;border-radius:6px}#simSoundButton[aria-pressed=true] .slash,#simSoundButton[aria-pressed=false] .wave{display:none}#simSoundButton[aria-pressed=false],#simGridToggle[aria-pressed=false]{opacity:.5}#simGridToggle[aria-pressed=false]:after{content:"";position:absolute;left:8px;right:8px;top:50%;height:2px;background:currentColor;transform:rotate(-45deg)}#simGridToggle{position:relative}.sim-grid-group[aria-disabled] .sim-grid-input:disabled,.sim-grid-input:disabled,.sim-grid-unit:disabled{opacity:.45;cursor:not-allowed}.sim-pen svg{width:28px;height:28px}.sim-pen.active{background:#111827;color:#fff}.sim-pen:focus-visible{outline:3px solid #2563eb;outline-offset:3px}.sim-tools{display:flex;justify-content:center;align-items:center;gap:.75rem}.sim-toggle{width:56px;height:56px;border-radius:16px;border:2px solid #111827;background:#fff;color:#111827;cursor:pointer;display:grid;place-items:center;padding:0;box-shadow:0 2px 6px #11182740;transition:background .15s,color .15s}.sim-toggle svg{width:30px;height:30px}.sim-toggle .slash{display:none}.sim-toggle.hidden-state{background:#111827;color:#fff}.sim-toggle.hidden-state .slash{display:block}.sim-toggle:focus-visible{outline:3px solid #2563eb;outline-offset:3px}.sim-robot.ghost{opacity:0;pointer-events:none}.sim-robot .robot-skin-pubbo{display:none;width:56px;height:50px}.sim-robot.pubbo-skin .robot-skin-pubbo{display:block}.sim-robot.pubbo-skin .robot-skin-triangle{display:none}.sim-robot.pubbo-skin{border-color:#6b7280;box-shadow:0 6px 18px #11182740}#simPubboLeftRing,#simPubboRightRing{transition:stroke .2s ease}#simPubboBody{transition:fill .2s ease}.sim-toggle .icon-pubbo{display:none}.sim-toggle.pubbo-state .icon-pubbo{display:block}.sim-toggle.pubbo-state .icon-triangle,.sim-toggle.hidden-state .icon-pubbo{display:none}.sim-toggle.hidden-state .icon-triangle{display:block}.sim-sensors.active{background:#16a34a;border-color:#15803d;color:#fff}.sim-sensor-view{position:absolute;top:.6rem;left:.6rem;z-index:5;width:110px;border-radius:12px;overflow:hidden;background:#111827;box-shadow:0 4px 12px #11182759}.sim-sensor-view video{display:block;width:110px;height:82px;object-fit:cover}.sim-sensor-readout{display:flex;align-items:center;gap:.35rem;padding:.25rem .4rem;background:#111827;color:#fff;font-size:.72rem;font-weight:800}.sensor-chip{width:14px;height:14px;border-radius:4px;background:#9ca3af;box-shadow:inset 0 0 0 1px #ffffff59;flex:0 0 auto}.sim-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none;opacity:.92}.sim-toggle.active{background:#1d4ed8;border-color:#1e3a8a;color:#fff}.sim-toggle.active:hover{background:#1e3a8a}.sim-field.backdrop-dragover{outline:3px dashed #2563eb;outline-offset:-3px}.sim-field.backdrop-dragover:after{content:"Drop SVG to use as backdrop";position:absolute;inset:0;z-index:20;display:grid;place-items:center;background:#2563eb12;color:#2563eb;font-weight:900;font-size:1.1rem;pointer-events:none}.sim-viewport{position:absolute;inset:0;will-change:transform;transform-origin:center center}.sim-zoom-group{display:flex;align-items:center;gap:2px;background:#f3f4f6;border:2px solid #111827;border-radius:14px;padding:3px;box-shadow:0 2px 6px #1118272e}.sim-zoom-btn{width:36px;height:36px;border:0;border-radius:10px;background:transparent;color:#111827;font-size:1.2rem;font-weight:900;cursor:pointer;display:grid;place-items:center;padding:0;line-height:1;transition:background .12s,color .12s}.sim-zoom-btn:hover{background:#111827;color:#fff}.sim-zoom-btn:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.sim-zoom-reset{font-size:.8rem}.sim-zoom-level{min-width:38px;text-align:center;font-size:.8rem;font-weight:900;color:#374151;padding:0 2px;user-select:none;pointer-events:none}.cal-details{margin-top:1rem;border:1px solid var(--border);border-radius:14px;padding:.75rem;background:#fff}.cal-details summary{cursor:pointer;font-weight:900;color:var(--text);padding:.25rem 0}.cal-content{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem}.cal-intro{margin:0;color:var(--muted);font-size:.9rem}.cal-current{display:flex;gap:1rem;flex-wrap:wrap;font-size:.9rem;padding:.5rem;background:#f6f8fb;border-radius:8px;border:1px solid var(--border)}.cal-section{display:flex;flex-direction:column;gap:.5rem}.cal-section h4{margin:0;font-size:.95rem}.cal-section p{margin:0;font-size:.85rem;color:var(--muted)}.cal-input-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.cal-input-row label{margin:0;font-size:.9rem}.cal-input-row input{width:7rem}.cal-unit{font-weight:700;color:var(--text)}.cal-status{margin:0;font-size:.85rem;font-weight:600;color:var(--text);min-height:1.2em}.cal-angle-btn{background:var(--purple)}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}#simPubboFaceText{display:none}.code-view-switch{display:flex;flex-wrap:wrap;gap:0;margin:.25rem 1rem .5rem;border:2px solid var(--border);border-radius:999px;width:fit-content;max-width:calc(100% - 2rem)}.code-view-switch button{border:0;background:#fff;color:#111827;font-weight:800;font-size:.85rem;padding:.4rem .9rem;cursor:pointer;min-height:36px}.code-view-switch button:first-child{border-radius:999px 0 0 999px}.code-view-switch button:last-child{border-radius:0 999px 999px 0}.code-view-switch button[aria-pressed=true]{background:#111827;color:#fff}.code-view-switch button:focus-visible{outline:3px solid #2563eb;outline-offset:2px;position:relative;z-index:1}.robots-menu{position:relative;display:inline-block}.robots-button{position:relative}.robots-button .robots-icon{width:24px;height:24px}.robots-count{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;border-radius:999px;background:#2563eb;color:#fff;font-size:.72rem;font-weight:800;display:grid;place-items:center;padding:0 4px;box-shadow:0 1px 2px #1f293740}.robots-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:260px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 32px #1f29372e;padding:10px}.robots-heading{font-size:.82rem;font-weight:700;color:#6b7280;padding:2px 4px 8px}.robots-row{display:flex;align-items:center;gap:6px;padding:4px 2px;border-radius:8px}.robots-row:hover{background:#f3f4f6}.robots-row-label{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer;font-weight:700;color:#111827;min-width:0}.robots-row-label input[type=checkbox]{width:18px;height:18px;accent-color:#2563eb;cursor:pointer;flex:none}.robots-dot{width:12px;height:12px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1px #00000026}.robots-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.robots-mini-btn{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:#fff;cursor:pointer;color:#374151;display:grid;place-items:center;font-size:.9rem;padding:0;flex:none}.robots-mini-btn:hover{background:#f3f4f6}.robots-mini-btn:disabled{opacity:.4;cursor:default}.robots-mini-btn:focus-visible,.robots-add input:focus-visible,.robots-add-btn:focus-visible,.robots-row-label input:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.robots-remove:hover{background:#fee2e2;color:#b91c1c;border-color:#fecaca}.robots-add{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.robots-add input{flex:1;min-width:0;border:1px solid var(--border);border-radius:8px;padding:6px 8px;font:inherit}.robots-add-btn{border:1px solid #2563eb;background:#2563eb;color:#fff;border-radius:8px;font-weight:700;cursor:pointer;padding:6px 10px;white-space:nowrap}.robots-add-btn:hover{background:#1d4ed8}.sim-robot .sim-robot-name{position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);background:#2563eb;color:#fff;font-size:.68rem;font-weight:800;line-height:1;padding:3px 8px;border-radius:999px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis;pointer-events:none;box-shadow:0 1px 3px #1f29374d}.robots-link{color:#6b7280}.robots-link-connecting{color:#2563eb;animation:robots-link-pulse 1s ease-in-out infinite}.robots-link-connected{color:#fff;background:#2563eb;border-color:#2563eb}.robots-link-connected:hover{background:#1d4ed8;color:#fff}@keyframes robots-link-pulse{0%,to{opacity:1}50%{opacity:.35}}.pe-editor{display:flex;flex-direction:column;height:100%;overflow:hidden;background:#f0f4fa;font-family:var(--font-ui, system-ui, sans-serif)}.pe-workspace{flex:1;overflow-y:auto;padding:16px 20px 24px;display:flex;flex-direction:column;gap:4px}.pe-block{position:relative;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001f,0 0 0 1px #0000000f;cursor:grab;user-select:none;transition:box-shadow .12s,transform .1s;outline:none}.pe-block:focus-visible{box-shadow:0 0 0 3px var(--block-colour, #4a90d9),0 1px 6px #00000026}.pe-block:hover{box-shadow:0 2px 8px #00000026,0 0 0 1px #00000014}.pe-block.pe-dragging{opacity:.4;transform:scale(.97);cursor:grabbing}.pe-drag-ghost{position:fixed;left:0;top:0;z-index:2000;pointer-events:none;opacity:.92;transform:rotate(1.5deg) scale(1.02);box-shadow:0 8px 24px #0000004d;will-change:left,top}.pe-block{touch-action:none;-webkit-touch-callout:none}.pe-touch-dragging,.pe-touch-dragging *{touch-action:none!important;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}@media (prefers-reduced-motion: reduce){.pe-drag-ghost{transform:none}}.pe-drop-placeholder{height:40px;margin:4px 0;border:2px dashed #4a90d9;border-radius:8px;background:repeating-linear-gradient(-45deg,#4a90d91a,#4a90d91a 8px,#4a90d92e 8px 16px);box-shadow:0 0 0 3px #4a90d926;animation:pe-drop-pulse .9s ease-in-out infinite;pointer-events:auto}@keyframes pe-drop-pulse{0%,to{opacity:.65}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.pe-drop-placeholder{animation:none}}.pe-block.pe-selected{box-shadow:0 0 0 3px var(--block-colour, #4a90d9)}.pe-block-hat{cursor:default;background:var(--block-colour);color:var(--block-text, #fff)}.pe-block-hat .pe-sash{display:none}.pe-block-hat .pe-label{color:var(--block-text, #fff)}.pe-block-hat .pe-field,.pe-block-hat .pe-dropdown{color:#fff;background:#fff3;border-color:#fff6}.pe-block-row{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;padding:7px 10px;min-height:36px}.pe-sash{position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:8px 0 0 8px;background:var(--block-colour, #888);pointer-events:none}.pe-label{font-size:15px;font-weight:500;color:#1e2a38;white-space:nowrap}.pe-block-hat .pe-block-row{padding-left:12px}.pe-field,.pe-dropdown,.pe-number,.pe-text{font-size:15px;font-weight:500;color:#1e2a38;background:#f0f4fa;border:1.5px solid #c8d4e8;border-radius:5px;padding:4px 8px;outline:none;cursor:pointer;max-width:180px;min-height:24px;box-sizing:border-box}.pe-field:focus,.pe-dropdown:focus,.pe-number:focus,.pe-text:focus{border-color:var(--block-colour, #4a90d9);background:#fff;box-shadow:0 0 0 2px color-mix(in srgb,var(--block-colour, #4a90d9) 25%,transparent)}.pe-number{width:64px;text-align:center}.pe-text{width:120px}.pe-name-input{font-size:14px;font-weight:600;font-style:italic;color:var(--block-text, #fff);background:#ffffff24;border:1.5px dashed rgba(255,255,255,.55);border-radius:10px;padding:2px 8px;outline:none;margin-left:2px}.pe-name-input::placeholder{color:var(--block-text, #fff);opacity:.55}.pe-name-input.pe-name-filled{font-style:normal;background:#ffffffeb;border:1.5px solid rgba(0,0,0,.25);color:#1e2a38}.pe-name-input:focus{font-style:normal;background:#fff;color:#1e2a38;border:1.5px solid #c8d4e8;box-shadow:0 0 0 2px color-mix(in srgb,var(--block-colour, #4a90d9) 25%,transparent)}.pe-colour-wrap{display:inline-flex;align-items:center;gap:4px;background:#f0f4fa;border:1.5px solid #c8d4e8;border-radius:5px;padding:2px 4px;cursor:pointer}.pe-colour-swatch{display:inline-block;width:18px;height:18px;border-radius:3px;border:1px solid rgba(0,0,0,.2);flex-shrink:0}.pe-colour-select{border:none;background:transparent;font-size:15px;font-weight:500;color:#1e2a38;outline:none;cursor:pointer;max-width:120px}.pe-value-slot{display:inline-flex;align-items:center;background:#0000000a;border:1.5px dashed #b0bfcf;border-radius:12px;padding:2px 6px;min-width:40px;min-height:26px;font-size:15px;color:#555;cursor:pointer}.pe-value-slot.pe-slot-bool{min-width:54px;min-height:24px;background:#ffffff8c;border-style:dashed;border-color:#8aa0b6;border-radius:13px;position:relative}.pe-value-slot.pe-slot-bool:after{content:"+ add a block";font-size:12px;font-style:italic;color:#7387a0;white-space:nowrap;padding:0 2px}.pe-value-slot.pe-value-drop{background:#dcfce7;border-color:#16a34a;border-style:solid;box-shadow:0 0 0 2px #16a34a59}.pe-value-slot.pe-value-target{background:#fef9c3;border-color:#ca8a04;border-style:solid;box-shadow:0 0 0 2px #ca8a0466}.pe-slot-blockbtn{margin-left:3px;width:18px;height:18px;flex:0 0 auto;border:1px solid #b0bfcf;border-radius:6px;background:#fff;color:#2563eb;font-size:12.5px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.pe-slot-blockbtn:hover{background:#2563eb;color:#fff;border-color:#2563eb}.pe-slot-blockbtn:focus-visible{outline:2px solid #2563eb;outline-offset:1px}.pe-value-slot:focus-visible{outline:3px solid #2563eb;outline-offset:2px}@media (prefers-reduced-motion: no-preference){.pe-value-slot.pe-value-target{animation:pe-slot-pulse 1.1s ease-in-out infinite}}@keyframes pe-slot-pulse{0%,to{box-shadow:0 0 0 2px #ca8a0466}50%{box-shadow:0 0 0 4px #ca8a042e}}.pe-inline-number{width:64px;text-align:center;font-size:15px;font-weight:600;color:#1e2a38;background:transparent;border:none;outline:none;cursor:text}.pe-inline-text{width:120px;font-size:15px;font-weight:500;color:#1e2a38;background:transparent;border:none;outline:none;cursor:text}.pe-inline-block{display:inline-flex;align-items:center;gap:3px;background:var(--block-colour, #888);color:var(--block-text, #fff);border-radius:12px;padding:2px 8px;font-size:14px;font-weight:500;cursor:default;flex-wrap:wrap}.pe-inline-block .pe-field,.pe-inline-block .pe-dropdown,.pe-inline-block .pe-number{background:#ffffffb3;border-color:#00000040;color:#1e2a38;font-size:14px;padding:2px 4px;min-height:24px;box-sizing:border-box}.pe-mini-remove{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;box-sizing:border-box;background:#fff3;border:none;border-radius:50%;color:var(--block-text, #fff);cursor:pointer;font-size:14px;line-height:1;padding:0;margin-left:2px}.pe-mini-remove:hover{background:#ffffff59}.pe-mini-remove:focus-visible{outline:2px solid var(--block-text, #fff);outline-offset:1px}.pe-block-controls{margin-left:auto;display:inline-flex;align-items:center;gap:1px;flex-shrink:0}.pe-ctrl-btn{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;box-sizing:border-box;background:none;border:none;color:#3f4e5c;cursor:pointer;font-size:15px;line-height:1;padding:0;border-radius:5px}.pe-ctrl-btn:hover{background:#eef2f7;color:#1e2a38}.pe-ctrl-btn:focus-visible{outline:2px solid #2c6aa8;outline-offset:1px}.pe-ctrl-btn:disabled{color:#b6c1cd;cursor:default}.pe-ctrl-btn:disabled:hover{background:none}.pe-ctrl-btn.pe-delete{font-size:18px;color:#5b6e82}.pe-ctrl-btn.pe-delete:hover{color:#c72020;background:#fff0f0}.pe-ctrl-btn.pe-delete:focus-visible{outline-color:#c72020}@media (hover: none) and (pointer: coarse){.pe-ctrl-btn{min-width:34px;min-height:34px}.pe-block-controls{gap:3px}}.pe-substack{margin:0 6px 6px 18px;padding:6px 8px 6px 10px;display:flex;flex-direction:column;gap:5px;background:color-mix(in srgb,var(--block-colour, #888) 9%,transparent);border-radius:0 0 0 6px;min-height:40px;transition:background .1s,box-shadow .1s}.pe-substack>.pe-block{box-shadow:0 1px 2px #00000014,0 0 0 1px #0000000f}.pe-substack.pe-substack-drop{background:#4a90d91f;box-shadow:inset 0 0 0 2px #4a90d9}.pe-else-label{font-size:15px;font-weight:600;color:#555;padding:4px 10px 0;letter-spacing:.02em}.pe-end-cap{height:9px;margin:0 6px 6px 18px;background:var(--block-colour, #ccc);border-radius:0 0 6px 6px;opacity:.5}.pe-add-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;background:none;border:1.5px dashed #8a9bad;border-radius:6px;color:#566472;cursor:pointer;font-size:14px;font-weight:500;padding:5px 12px;transition:border-color .12s,color .12s,background .12s;margin:2px 0}.pe-add-btn:hover,.pe-add-btn.pe-add-active{border-color:#2c6aa8;color:#2c6aa8;background:#4a90d90f}.pe-add-btn:focus-visible{outline:2px solid #4a90d9;outline-offset:2px}.pe-palette{display:flex;flex-direction:row;flex-wrap:nowrap;gap:10px;padding:14px 16px;overflow-x:auto;overflow-y:hidden;border-top:1px solid #dde5f0;background:#fff;min-height:104px;align-items:center;flex-shrink:0;scrollbar-width:thin}.pe-palette::-webkit-scrollbar{height:5px}.pe-palette::-webkit-scrollbar-thumb{background:#c0cddf;border-radius:3px}.pe-palette-card{display:inline-flex;align-items:center;flex-shrink:0;gap:5px;padding:10px 16px;border-radius:20px;background:var(--block-colour, #888);color:var(--block-text, #fff);font-size:15px;font-weight:600;cursor:pointer;border:2px solid transparent;transition:transform .1s,box-shadow .1s,border-color .1s;user-select:none;white-space:nowrap;box-shadow:0 1px 3px #0000002e}.pe-palette-card:hover{transform:translateY(-2px);box-shadow:0 4px 10px #0003}.pe-palette-card:focus-visible{outline:none;border-color:#fff;box-shadow:0 0 0 3px #ffffff80,0 2px 8px #0003}.pe-palette-card:active{transform:translateY(0);box-shadow:0 1px 3px #00000026}.pe-palette-var-btn{flex-shrink:0;padding:6px 12px;border-radius:20px;background:none;border:2px dashed #c8a800;color:#c8a800;font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}.pe-palette-var-btn:hover{background:#fff9e0;border-color:#f0c800}.pe-palette-var-btn:focus-visible{outline:2px solid #c8a800;outline-offset:2px}.pe-var-list{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:4px}.pe-var-list-title{font-size:12px;font-weight:700;color:#7a6a00;text-transform:uppercase;letter-spacing:.03em}.pe-var-row{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff9e0;border:1.5px solid #ead06a;border-radius:8px;padding:4px 6px 4px 10px}.pe-var-name{font-size:14px;font-weight:600;color:#5c4d00;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pe-var-delete{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;box-sizing:border-box;border:none;border-radius:6px;background:#0000000f;color:#8a2020;font-size:16px;line-height:1;cursor:pointer}.pe-var-delete:hover{background:#f6d0d0;color:#8a2020}.pe-var-delete:focus-visible{outline:2px solid #b91c1c;outline-offset:2px}@media (prefers-reduced-motion: reduce){.pe-block,.pe-palette-card,.pe-add-btn{transition:none}}@media (prefers-contrast: more){.pe-block{border:2px solid #000}.pe-block:focus-visible{outline:3px solid #000;outline-offset:2px}.pe-sash{width:8px}.pe-palette-card{border:2px solid #fff}.pe-label{color:#000;font-weight:700}.pe-ctrl-btn{color:#000}.pe-ctrl-btn:focus-visible{outline:3px solid #000}.pe-ctrl-btn:disabled{color:#767676}}.pe-sr-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pe-robot-section{margin:0 0 14px;padding-bottom:6px;border-radius:12px}.pe-robot-title{display:flex;align-items:center;gap:8px;margin:16px 2px 8px;padding:7px 14px;border-radius:10px;border-left:6px solid var(--robot-colour, #667eea);background:#fff;box-shadow:0 1px 3px #0000001a,0 0 0 1px #0000000d;font-weight:800;font-size:14px;color:#1e2a38;user-select:none}.pe-robot-title:first-child{margin-top:2px}.pe-robot-title-dot{width:12px;height:12px;border-radius:50%;background:var(--robot-colour, #667eea);flex-shrink:0}.pe-robot-name{font-weight:800}.pe-robot-badge{background:var(--robot-colour, rgba(255,255,255,.25));color:#fff;padding:2px 10px;border-radius:999px;box-shadow:inset 0 0 0 1px #ffffff59}.pe-picture-btn{display:inline-flex;align-items:center;padding:3px 5px;background:#10202e;border:1.5px solid #c8d4e8;border-radius:5px;cursor:pointer;line-height:0}.pe-picture-btn svg{width:60px;height:24px}.pe-picture-btn svg rect{fill:#4ee0f0}.pe-picture-btn:hover{border-color:#2c6aa8}.pe-picture-btn:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.pe-picture-dialog{border:none;border-radius:16px;padding:20px 22px 18px;box-shadow:0 24px 60px #10202e59;max-width:min(96vw,880px)}.pe-picture-dialog::backdrop{background:#10202e8c}.pe-pic-head h2{margin:0 0 4px;font-size:20px;color:#10202e}.pe-pic-head p{margin:0 0 14px;font-size:14px;color:#4b5563}.pe-pic-grid{display:flex;flex-direction:column;gap:2px;background:#10202e;padding:8px;border-radius:10px;overflow-x:auto}.pe-pic-row{display:flex;gap:2px}.pe-pic-cell{width:26px;height:26px;flex:none;border:1px solid #23394d;border-radius:3px;background:#16283a;cursor:pointer;padding:0;touch-action:none}.pe-pic-cell:hover{background:#22415c}.pe-pic-cell.on{background:#4ee0f0;border-color:#4ee0f0}.pe-pic-cell:focus-visible{outline:3px solid #ffd166;outline-offset:-1px;z-index:1}.pe-pic-actions{display:flex;align-items:center;gap:10px;margin-top:16px}.pe-pic-spacer{flex:1}.pe-pic-btn{font:600 15px system-ui,sans-serif;padding:9px 18px;border-radius:9px;border:2px solid #c8d4e8;background:#fff;color:#1e2a38;cursor:pointer;min-height:40px}.pe-pic-btn:hover{background:#eef2f7}.pe-pic-btn:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.pe-pic-done{background:#12b5c9;border-color:#12b5c9;color:#06232a}.pe-pic-done:hover{background:#0fa2b4}@media (max-width: 700px){.pe-pic-cell{width:20px;height:20px}}#tool-tip-card{position:fixed;z-index:var(--z-tooltip, 4000);background:#1b1f2e;color:#e2e6f0;border-radius:10px;padding:13px 16px;min-width:200px;max-width:280px;pointer-events:none;opacity:0;transform:translateY(-6px);transition:opacity .13s ease,transform .13s ease;box-shadow:0 6px 24px #0000006b,0 1px 5px #00000047;font-size:13px;line-height:1.5;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#tool-tip-card.ttc-visible{opacity:1;transform:translateY(0)}.ttc-title{font-weight:700;font-size:14px;color:#fff;line-height:1.3;margin:0}.ttc-hr{border:none;border-top:1px solid rgba(255,255,255,.1);margin:10px 0}.ttc-body{color:#a8afc4;font-size:12.5px;line-height:1.65;margin:0}.ttc-body strong{color:#e2e6f0;font-weight:600}@media (prefers-reduced-motion: reduce){#tool-tip-card{transition:opacity .13s ease}#tool-tip-card,#tool-tip-card.ttc-visible{transform:none}}.topbar-actions [data-tip-title]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}:root{--focus: #ffbf47;--success: #0b6e4f;--min-touch-target: 44px;--transition-fast: .15s ease;--transition-normal: .25s ease}.sysmsg{justify-self:center;color:var(--success);font-size:16px;min-height:1.2em;opacity:0;transform:translateY(-10px);transition:opacity var(--transition-normal),transform var(--transition-normal);text-align:center;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sysmsg.show,#sysmsg.show{opacity:1;transform:translateY(0)}.sd-dialog{padding:0;border:none;border-radius:24px;background:#fff0;max-width:min(560px,95vw);width:90vw;overflow:visible;max-height:90vh;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);animation:modalSlideIn var(--transition-normal)}.sd-dialog::backdrop{background:#00000080;backdrop-filter:blur(4px);pointer-events:auto}@keyframes modalSlideIn{0%{opacity:0;transform:translate(-50%,-60%)}to{opacity:1;transform:translate(-50%,-50%)}}.sd-modal-header{background:linear-gradient(135deg,#7c3aed 0,#a78bfa,#c4b5fd);padding:32px 24px 24px;border-radius:24px 24px 0 0;position:relative;color:#fff;text-align:center;text-shadow:0 2px 4px rgb(0 0 0 / .3)}.sd-modal-icon{font-size:48px;margin-bottom:16px;display:inline-block;filter:drop-shadow(0 4px 6px rgb(0 0 0 / .2));user-select:none}.sd-modal-title{font-size:clamp(24px,5vw,32px);font-weight:700;margin:0 0 8px;color:#fff;text-shadow:0 2px 4px rgb(0 0 0 / .3)}.sd-modal-subtitle{font-size:clamp(14px,3vw,18px);font-weight:400;color:#fffffff2;margin:0}.sd-modal-close{position:absolute;top:20px;right:20px;width:var(--min-touch-target);height:var(--min-touch-target);border-radius:50%;background:#ffffff4d;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);z-index:1}.sd-modal-close:focus-visible,.sd-modal-close:hover{background:#fff6;transform:scale(1.1);outline:2px solid var(--focus);outline-offset:2px}.sd-modal-close svg{width:24px;height:24px;stroke:#fff;stroke-width:3}.sd-modal-body{background:#f8f9fa;padding:32px 24px;border-radius:0 0 24px 24px;max-height:60vh;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;overscroll-behavior:contain}.sd-modal-body::-webkit-scrollbar{width:8px}.sd-modal-body::-webkit-scrollbar-track{background:#f1f5f9}.sd-modal-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.sd-modal-body::-webkit-scrollbar-thumb:hover{background:#94a3b8}.sd-btn,.sd-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 40px;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;border:none;min-width:160px}.sd-btn-primary,.sd-button-primary{background:linear-gradient(135deg,#3b82f6 0,#1d4ed8);color:#fff;border:2px solid #fff0}.sd-btn-primary:hover,.sd-button-primary:hover{background:linear-gradient(135deg,#1d4ed8 0,#1e40af);transform:translateY(-2px);box-shadow:0 6px 16px #3b82f64d}.sd-btn-primary:active,.sd-button-primary:active{transform:translateY(0);box-shadow:0 2px 8px #3b82f64d}.sd-btn:focus-visible,.sd-button:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}.sd-btn.loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:20px;border:2px solid #fff0;border-top:2px solid currentColor;border-radius:50%;animation:sdBtnSpin 1s linear infinite}@keyframes sdBtnSpin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.login-wrap{position:relative;display:inline-flex}#loginBtn svg{width:30px;height:30px}@media (max-width: 760px){#loginBtn svg{width:26px;height:26px}}.pb-swatch-panel{padding:8px;max-width:min(92vw,460px)}.pb-swatch-grid{--cols: 9;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:6px;-webkit-user-select:none;user-select:none}.pb-swatch{position:relative;width:100%;aspect-ratio:1 / 1;min-width:24px;min-height:24px;border:0;border-radius:6px;padding:0;box-shadow:inset 0 0 0 1px #00000040;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:#fff0}.pb-swatch:hover{transform:scale(1.15);box-shadow:0 4px 8px #00000026;z-index:1}.pb-swatch:active{transform:scale(1.05)}.pb-swatch:focus-visible{outline:2px solid #06f;outline-offset:2px}.pb-swatch.is-selected{box-shadow:inset 0 0 0 1px #00000014,0 0 0 3px #06f}.pb-swatch-firmware .pb-swatch{min-width:30px}.pb-swatch-random{display:block;width:100%;margin-top:8px;padding:8px 12px;border:0;border-radius:8px;font-weight:700;font-size:14px;color:#111827;cursor:pointer;background:linear-gradient(#ffffffd1,#ffffffd1),linear-gradient(90deg,red,#ff8000,#ff0,#0f0,#0ff,#00f,#f0f);box-shadow:inset 0 0 0 1px #0000001a;transition:all .15s ease;touch-action:manipulation}.pb-swatch-random:hover{transform:scale(1.03);box-shadow:0 4px 8px #00000026}.pb-swatch-random:focus-visible{outline:2px solid #06f;outline-offset:2px}.pb-swatch-random.is-selected{box-shadow:inset 0 0 0 1px #0000001a,0 0 0 3px #06f}@media (any-pointer: coarse){.pb-swatch-panel{max-width:94vw}.pb-swatch-grid{gap:8px}.pb-swatch{min-width:28px}.pb-swatch-firmware .pb-swatch{min-width:44px;min-height:44px}.pb-swatch-random{min-height:44px}}#loginBtn{cursor:pointer}.login-modal-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility 0s linear .3s}.login-modal-overlay.show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .3s ease,visibility 0s linear 0s}.login-modal-overlay:before{content:"";position:absolute;inset:0;background:#00000080;backdrop-filter:blur(4px)}.login-modal{position:relative;background:#fff;border-radius:24px;box-shadow:0 20px 60px #0000004d;max-width:440px;width:90%;overflow:hidden;display:flex;flex-direction:column;transform:translateY(20px);transition:transform .3s ease}.login-modal-overlay.show .login-modal{transform:translateY(0)}.login-modal-header{display:flex;align-items:center;justify-content:space-between;padding:24px 24px 16px;border-bottom:1px solid #e5e7eb}.login-modal-title{margin:0;font-size:1.5rem;font-weight:600;color:#1f2937}.login-modal-close{background:#fff0;border:none;padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#6b7280;transition:all .2s ease}.login-modal-close:hover{background:#f3f4f6;color:#1f2937}.login-modal-close:focus{outline:2px solid #3b82f6;outline-offset:2px}.login-modal-content{padding:24px;overflow-y:auto}.login-modal-description{margin:0 0 24px;color:#4a5568;font-size:.95rem;line-height:1.5;text-align:center}.login-modal-buttons{display:flex;flex-direction:column;gap:12px}.login-provider-btn{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 24px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer;font-size:1rem;font-weight:500;transition:all .2s ease;width:100%}.login-provider-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.login-provider-btn:active{transform:translateY(0)}.login-provider-btn:focus{box-shadow:0 0 0 3px #3b82f64d}.google-btn{border-color:#e5e7eb;color:#1f2937}.google-btn:hover{border-color:#4285f4;background:#f8faff}.microsoft-btn{border-color:#e5e7eb;color:#1f2937}.microsoft-btn:hover{border-color:#00a4ef;background:#f8fcff}.provider-logo{flex-shrink:0;width:24px;height:24px}.provider-text{font-weight:500}@media (max-width: 480px){.login-modal{width:95%;max-width:none;border-radius:12px}.login-modal-header{padding:20px 20px 12px}.login-modal-title{font-size:1.25rem}.login-modal-content{padding:20px}.login-provider-btn{padding:12px 20px;font-size:.95rem}.provider-logo{width:22px;height:22px}}@media (prefers-reduced-motion: reduce){.login-modal,.login-modal-close,.login-modal-overlay,.login-provider-btn{transition:none}.login-provider-btn:hover{transform:none}}.login-provider-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.login-provider-btn.loading{opacity:.6;cursor:not-allowed;pointer-events:none}@media (prefers-color-scheme: dark){.login-modal{background:#1f2937}.login-modal-header{border-bottom-color:#374151}.login-modal-title{color:#f9fafb}.login-modal-description,.login-modal-close{color:#9ca3af}.login-modal-close:hover{background:#374151;color:#f9fafb}.login-provider-btn{background:#111827;border-color:#374151;color:#f9fafb}.google-btn:hover{background:#1e3a5f;border-color:#4285f4}.microsoft-btn:hover{background:#1e3851;border-color:#00a4ef}}.sd-registration-dialog{padding:0;border:none;border-radius:24px;background:#fff0;max-width:520px;width:90vw;overflow:visible}.sd-registration-dialog::backdrop{background:#0009;backdrop-filter:blur(6px)}.sd-registration-header{background:linear-gradient(135deg,#3b82f6 0,#1d4ed8,#1e40af);padding:32px 24px 24px;border-radius:24px 24px 0 0;position:relative;color:#fff;text-align:center}.sd-registration-header .sd-modal-icon{font-size:48px;margin-bottom:16px;display:inline-block;filter:drop-shadow(0 4px 6px rgb(0 0 0 / .1));animation:bounce .6s ease-in-out}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.sd-registration-header .sd-modal-title{font-size:32px;font-weight:700;margin:0 0 8px;color:#fff;text-shadow:0 2px 4px rgb(0 0 0 / .1)}.sd-registration-header .sd-modal-subtitle{font-size:18px;font-weight:400;color:#fffffff2;margin:0;line-height:1.4}.sd-registration-body{background:#f8f9fa;padding:32px 24px;border-radius:0 0 24px 24px}.sd-registration-info{background:#fff;border-radius:16px;padding:24px;margin-bottom:24px;border:2px solid #dbeafe;display:flex;gap:16px;align-items:flex-start}.sd-info-icon{font-size:28px;flex-shrink:0;margin-top:4px}.sd-info-content{flex:1}.sd-info-title{font-size:20px;font-weight:600;color:#111827;margin:0 0 12px}.sd-info-text{font-size:16px;color:#374151;margin:0 0 12px;line-height:1.5}.sd-info-text strong{color:#1f2937;font-weight:600;background:#f3f4f6;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace}.sd-info-note{font-size:14px;color:#6b7280;margin:0;padding-top:12px;border-top:1px solid #e5e7eb;line-height:1.4}.sd-registration-actions{display:flex;justify-content:center}.sd-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 40px;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;border:none;min-width:160px}.sd-btn-icon{font-size:18px}.sd-btn-primary{background:linear-gradient(135deg,#3b82f6 0,#1d4ed8);color:#fff;border:2px solid #fff0}.sd-btn-primary:hover{background:linear-gradient(135deg,#1d4ed8 0,#1e40af);transform:translateY(-2px);box-shadow:0 6px 16px #3b82f64d}.sd-btn-primary:active{transform:translateY(0);box-shadow:0 2px 8px #3b82f64d}.sd-btn:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}.sd-btn.loading{position:relative;color:#fff0}.sd-btn.loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:20px;border:2px solid #fff0;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@media (max-width: 480px){.sd-registration-dialog{width:95vw;max-width:100%}.sd-registration-header{padding:24px 20px 20px}.sd-registration-header .sd-modal-title{font-size:28px}.sd-registration-header .sd-modal-subtitle{font-size:16px}.sd-registration-body{padding:24px 20px}.sd-registration-info{padding:20px;flex-direction:column;text-align:center}.sd-info-icon{margin-top:0}.sd-btn{width:100%;padding:18px 24px}}@media (prefers-color-scheme: dark){.sd-registration-body{background:#1f2937}.sd-registration-info{background:#374151;border-color:#4b5563}.sd-info-title{color:#f9fafb}.sd-info-text{color:#d1d5db}.sd-info-text strong{color:#f9fafb;background:#4b5563}.sd-info-note{color:#9ca3af;border-color:#4b5563}}.cloud-modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;opacity:0;transition:opacity .3s ease}.cloud-modal.cloud-active{display:block;opacity:1}.cloud-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080}.cloud-container{position:relative;background:#fff;border-radius:16px;max-width:800px;max-height:90vh;margin:5vh auto;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.cloud-header{padding:24px 24px 16px;border-bottom:1px solid #E5E7EB;text-align:center;position:relative}.cloud-close{position:absolute;top:16px;right:16px;background:#f3f4f6;border:1px solid #E5E7EB;cursor:pointer;padding:8px 16px;border-radius:8px;color:#374151;transition:all .2s;font-size:14px;font-weight:600;z-index:10}.cloud-close:hover{background:#e5e7eb;color:#1f2937;border-color:#d1d5db}.cloud-close:active{background:#d1d5db;transform:scale(.95)}.cloud-title{font-size:24px;font-weight:700;color:#1f2937;margin:0 0 8px}.cloud-subtitle{font-size:14px;color:#6b7280;margin:0}.cloud-user-info{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;padding:8px 16px;background:#f3f4f6;border-radius:8px}.cloud-user-avatar{width:32px;height:32px;border-radius:50%}.cloud-user-email{font-size:14px;color:#4b5563}.cloud-auth-section{margin-top:12px}.cloud-signin-btn{padding:10px 20px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s}.cloud-signin-btn:hover{background:#2563eb}.cloud-body{flex:1;overflow:hidden;display:flex;flex-direction:column}.cloud-controls{padding:16px 24px;border-bottom:1px solid #E5E7EB}.cloud-search{margin-bottom:12px}.cloud-search-input{width:100%;padding:10px 16px;border:2px solid #E5E7EB;border-radius:8px;font-size:14px;transition:border-color .2s}.cloud-search-input:focus{outline:none;border-color:#3b82f6}.cloud-status-bar{display:flex;justify-content:space-between;align-items:center}.cloud-count{font-size:14px;color:#6b7280}.cloud-count-number{font-weight:700;color:#1f2937}.cloud-sort-controls{display:flex;gap:8px}.cloud-sort-btn{padding:6px 12px;border:1px solid #E5E7EB;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;color:#6b7280;transition:all .2s}.cloud-sort-btn:hover{background:#f3f4f6}.cloud-sort-btn.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.cloud-list{flex:1;overflow-y:auto;padding:16px 24px;display:flex;flex-direction:column;gap:12px}.cloud-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border:2px solid #E5E7EB;border-radius:12px;cursor:pointer;transition:all .2s}.cloud-item:hover{border-color:#3b82f6;background:#f9fafb}.cloud-item-info{display:flex;align-items:center;gap:12px;flex:1}.cloud-item-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cloud-item-icon svg{width:24px;height:24px}.cloud-item-details{flex:1;min-width:0}.cloud-item-name{font-size:15px;font-weight:600;color:#1f2937;margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloud-item-date{font-size:13px;color:#6b7280;margin:0}.cloud-item-actions{display:flex;gap:8px}.cloud-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;position:relative;z-index:1}.cloud-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.cloud-btn svg{width:16px;height:16px;fill:currentColor}.cloud-btn-danger{background:#fee2e2;color:#dc2626}.cloud-btn-danger:hover{background:#fca5a5}.cloud-btn-primary{background:#3b82f6;color:#fff}.cloud-btn-primary:hover{background:#2563eb}.cloud-empty,.cloud-loading,.cloud-error-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.cloud-empty-icon,.cloud-error-icon{width:80px;height:80px;margin-bottom:16px}.cloud-empty-title,.cloud-error-title{font-size:20px;font-weight:700;color:#1f2937;margin:0 0 8px}.cloud-empty-text,.cloud-error-text{font-size:14px;color:#6b7280;margin:0}.cloud-spinner{width:40px;height:40px;border:4px solid #E5E7EB;border-top-color:#3b82f6;border-radius:50%;animation:cloud-spin .8s linear infinite;margin-bottom:16px}@keyframes cloud-spin{to{transform:rotate(360deg)}}.cloud-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(100px);padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;color:#fff;z-index:10002;box-shadow:0 4px 12px #0003;opacity:0;transition:all .3s ease}.cloud-toast.cloud-toast-show{transform:translate(-50%) translateY(0);opacity:1}.cloud-toast-success{background:#10b981}.cloud-toast-error{background:#ef4444}.cloud-toast-warning{background:#f59e0b}.cloud-toast-info{background:#3b82f6}@media (hover: none) and (pointer: coarse){.cloud-item{min-height:80px;padding:16px}.cloud-btn{min-height:48px;min-width:48px;padding:10px 18px}.cloud-close{min-width:48px;min-height:48px;padding:14px}.cloud-provider-btn{min-height:48px;padding:12px 20px}.cloud-sort-btn{min-height:44px;padding:10px 16px}.cloud-signin-btn{min-height:48px;padding:14px 24px}.cloud-search-input{font-size:16px!important;min-height:48px;padding:14px 16px}.cloud-item:hover,.cloud-close:hover,.cloud-sort-btn:hover,.cloud-signin-btn:hover,.cloud-btn-danger:hover,.cloud-btn-primary:hover{background:inherit;border-color:inherit}.cloud-item:active,.cloud-item.cloud-item-active{background:#f3f4f6;border-color:#3b82f6;transform:scale(.98)}.cloud-btn:active{transform:scale(.96);opacity:.9}.cloud-close:active{background:#e5e7eb;transform:scale(.9)}.cloud-sort-btn:active{transform:scale(.96)}.cloud-signin-btn:active{transform:scale(.96);background:#1e40af}.cloud-item,.cloud-btn,.cloud-sort-btn,.cloud-signin-btn{-webkit-tap-highlight-color:rgba(59,130,246,.2);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.cloud-list{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.cloud-body{-webkit-overflow-scrolling:touch}}@media (hover: none) and (pointer: coarse) and (min-width: 768px){.cloud-container{max-width:700px}.cloud-item{min-height:88px}}@media (max-width: 640px){.cloud-container{max-width:95vw;margin:2vh auto}.cloud-item{flex-direction:column;align-items:flex-start;gap:12px}.cloud-item-actions{width:100%}.cloud-btn{flex:1}}.unified-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.unified-modal.active{opacity:1;pointer-events:auto}.unified-backdrop{position:absolute;inset:0;background:#00000080;backdrop-filter:blur(4px)}.unified-container{position:relative;background:#fff;border-radius:24px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:90%;max-height:90vh;overflow:hidden;transform:translateY(20px);transition:transform .3s ease;display:flex;flex-direction:column}.unified-modal.active .unified-container{transform:translateY(0)}.unified-close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;background:#ffffffe6;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:10}.unified-close:hover,.unified-close:focus-visible{background:#fff;box-shadow:0 2px 8px #0000001a;transform:scale(1.1);outline:2px solid #667eea;outline-offset:2px}.unified-close svg{width:20px;height:20px;stroke:#6b7280}.unified-header{background:linear-gradient(135deg,#667eea 0,#764ba2);padding:40px 30px 30px;text-align:center;color:#fff;flex-shrink:0}.unified-icon{width:80px;height:80px;margin:0 auto 20px;background:#fff3;border-radius:20px;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(10px);font-size:42px;line-height:1;user-select:none}.unified-icon svg{width:50px;height:50px}.unified-title{font-size:28px;font-weight:700;margin:0 0 10px;letter-spacing:-.5px;color:#fff}.unified-subtitle{font-size:16px;opacity:.95;margin:0;font-weight:500;color:#fff}.unified-body{padding:30px;background:#fff;flex:1;overflow-y:auto;min-height:0}.unified-name{margin-bottom:20px}.unified-name-label{display:block;font-size:14px;font-weight:600;color:#374151;margin-bottom:8px}.unified-name-input{width:100%;box-sizing:border-box;padding:12px 14px;border:2px solid #e5e7eb;border-radius:12px;font-size:16px;color:#1f2937;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}.unified-name-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea26}.unified-options{display:flex;flex-direction:column;gap:12px}.unified-option{display:flex;align-items:center;padding:16px;background:#fff;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;transition:all .2s ease;position:relative;text-align:left;width:100%;animation:unified-fade-in .3s ease forwards}.unified-option:first-child{animation-delay:50ms}.unified-option:nth-child(2){animation-delay:.1s}.unified-option:hover:not(.disabled),.unified-option:focus-visible:not(.disabled){border-color:#667eea;box-shadow:0 4px 12px #667eea26;transform:translateY(-2px);outline:none}.unified-option:focus-visible:not(.disabled){outline:3px solid #a5b4fc;outline-offset:2px}.unified-option.disabled{opacity:.5;cursor:not-allowed;background:#f9fafb}.unified-option-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-right:16px;flex-shrink:0;font-size:26px;line-height:1;background:#eef2ff;user-select:none}.unified-option-icon svg{width:24px;height:24px}.unified-option-content{flex:1}.unified-option-title{font-size:16px;font-weight:600;color:#1f2937;margin:0 0 4px}.unified-option-subtitle{font-size:14px;color:#6b7280;margin:0}.unified-badge{position:absolute;top:12px;right:12px;padding:4px 8px;background:#e5e7eb;color:#4b5563;font-size:11px;font-weight:600;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.drag-hint{border:2px dashed #d1d5db;border-radius:12px;padding:20px;text-align:center;color:#6b7280;margin-top:16px;font-size:14px;transition:all .2s ease}.drag-hint.drag-over{border-color:#667eea;background:#eef2ff;color:#3730a3}.drag-hint-icon{font-size:24px;margin-bottom:8px}.unified-modal.unified-import .unified-header{background:linear-gradient(135deg,#10b981 0,#059669)}.unified-modal.unified-import .unified-option:hover:not(.disabled),.unified-modal.unified-import .unified-option:focus-visible:not(.disabled){border-color:#10b981;box-shadow:0 4px 12px #10b98126}.unified-modal.unified-import .drag-hint.drag-over{border-color:#10b981;background:#f0fdf4;color:#166534}@keyframes unified-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.unified-modal,.unified-container,.unified-option{transition:none;animation:none}}@media (max-width: 640px){.unified-container{width:95%;max-height:95vh;margin:10px}.unified-header{padding:30px 20px 20px}.unified-title{font-size:24px}.unified-subtitle{font-size:14px}.unified-body{padding:20px}.unified-option{padding:12px}.unified-option-icon{width:40px;height:40px;margin-right:12px;font-size:22px}.unified-option-title{font-size:15px}.unified-option-subtitle{font-size:13px}}@media (max-height: 700px){.unified-header{padding:30px 25px 20px}.unified-icon{width:60px;height:60px;margin-bottom:15px;font-size:34px}.unified-icon svg{width:40px;height:40px}.unified-title{font-size:24px}}
