:root{color-scheme:light dark;--brand: #224466;--brand-strong: #0b427a;--brand-surface: #224466;--brand-surface-strong: #0b427a;--go-surface: #2f8f3a;--go-surface-strong: #396e29;--brand-soft: #429ee4;--brand-tint: #e7f1fa;--device: #00a9b5;--device-strong: #007a83;--device-tint: #e2f6f8;--go: #2f8f3a;--go-strong: #396e29;--danger: #993232;--danger-tint: #fbe9e9;--warning: #9a5b00;--warning-tint: #fdf1dc;--info: var(--brand-strong);--info-tint: var(--brand-tint);--bg: #ffffff;--bg-sunken: #eef2f6;--surface: #ffffff;--surface-raised: #ffffff;--surface-muted: #f4f7fa;--text: #16232e;--text-muted: #4d5f6d;--text-inverse: #ffffff;--border: #c6d2dd;--border-strong: #93a5b4;--focus: #0a6cff;--overlay: rgba(10, 20, 30, .55);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--radius-sm: .5rem;--radius-md: .875rem;--radius-lg: 1.25rem;--radius-pill: 999px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--leading-tight: 1.2;--leading-normal: 1.5;--weight-normal: 400;--weight-medium: 600;--weight-bold: 800;--shadow-1: 0 1px 2px rgba(16, 32, 48, .14);--shadow-2: 0 4px 12px rgba(16, 32, 48, .18);--shadow-3: 0 12px 32px rgba(16, 32, 48, .26);--tap-min: 2.75rem;--control-height: 2.75rem;--control-height-lg: 3.5rem;--focus-ring: 0 0 0 3px var(--bg), 0 0 0 6px var(--focus);--z-panel: 10;--z-window: 100;--z-banner: 500;--z-modal: 1000;--z-toast: 1500;--ease: cubic-bezier(.2, .7, .3, 1);--duration-fast: .12s;--duration: .22s}:root[data-theme=dark]{--brand: #7fb4e4;--brand-strong: #a8cef2;--brand-soft: #3d7fb8;--brand-tint: #17293a;--device: #33c5cf;--device-strong: #7ee0e7;--device-tint: #103336;--go: #5cc06a;--go-strong: #7fd08a;--danger: #f08a8a;--danger-tint: #3a1e1e;--warning: #e8b563;--warning-tint: #38290f;--info: var(--brand-strong);--info-tint: var(--brand-tint);--bg: #10181f;--bg-sunken: #0a1116;--surface: #182430;--surface-raised: #1f2d3a;--surface-muted: #16212b;--text: #eef4f9;--text-muted: #a9bccb;--text-inverse: #10181f;--border: #35485a;--border-strong: #55697c;--focus: #7bb2ff;--overlay: rgba(0, 0, 0, .68);--shadow-1: 0 1px 2px rgba(0, 0, 0, .5);--shadow-2: 0 4px 12px rgba(0, 0, 0, .55);--shadow-3: 0 12px 32px rgba(0, 0, 0, .65)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,figure,blockquote,dl,dd,ol,ul{margin:0}h1,h2,h3,h4{line-height:var(--leading-tight);font-weight:var(--weight-bold)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}ol,ul{padding-left:var(--space-5)}a{color:var(--brand-strong);text-decoration-thickness:.08em;text-underline-offset:.15em}img,svg,video,canvas,iframe{display:block;max-width:100%}iframe{border:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}[hidden]{display:none!important}::selection{background:var(--brand-soft);color:#fff}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.ptj-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-min);min-width:var(--tap-min);padding:0 var(--space-4);border:2px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text);font-size:var(--text-base);font-weight:var(--weight-medium);line-height:1;text-decoration:none;transition:background var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.ptj-button:hover:not(:disabled){background:var(--surface-muted)}.ptj-button:active:not(:disabled){transform:translateY(1px)}.ptj-button:disabled,.ptj-button[aria-disabled=true]{opacity:.5;cursor:not-allowed}.ptj-button-primary{background:var(--brand-surface-strong);border-color:var(--brand-surface-strong);color:#fff}.ptj-button-primary:hover:not(:disabled){background:var(--brand-surface)}.ptj-button-secondary{background:var(--surface-raised);border-color:var(--border-strong);color:var(--text)}.ptj-button-go{background:var(--go-surface);border-color:var(--go-surface);color:#fff}.ptj-button-go:hover:not(:disabled){background:var(--go-surface-strong)}.ptj-button-danger{background:var(--danger);border-color:var(--danger);color:var(--text-inverse)}.ptj-button-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 80%,var(--text));border-color:color-mix(in srgb,var(--danger) 80%,var(--text));color:var(--text-inverse)}.ptj-button-ghost{background:transparent;border-color:transparent}.ptj-button-ghost:hover:not(:disabled){background:var(--surface-muted)}.ptj-button-icon{width:var(--tap-min);padding:0;border-radius:var(--radius-md)}.ptj-button-icon svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.ptj-button-lg{min-height:var(--control-height-lg);padding:0 var(--space-5);font-size:var(--text-lg)}.ptj-input,.ptj-select,.ptj-textarea{width:100%;min-height:var(--tap-min);padding:var(--space-2) var(--space-3);border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--text-base)}.ptj-textarea{resize:vertical}.ptj-input:focus,.ptj-select:focus,.ptj-textarea:focus{border-color:var(--focus)}.ptj-label{display:block;margin-bottom:var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted)}.ptj-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-1)}.ptj-card-title{font-size:var(--text-lg);font-weight:var(--weight-bold)}.ptj-card-text{color:var(--text-muted);font-size:var(--text-sm)}.ptj-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.ptj-list-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--control-height-lg);padding:var(--space-3) var(--space-4);border:0;border-bottom:1px solid var(--border);background:transparent;color:inherit;text-align:left;text-decoration:none}.ptj-list-item:last-child{border-bottom:0}.ptj-list-item:hover{background:var(--surface-muted)}.ptj-list-item[aria-selected=true]{background:var(--brand-tint);box-shadow:inset 4px 0 0 var(--brand-strong)}.ptj-list-item-title{font-weight:var(--weight-medium)}.ptj-list-item-desc{color:var(--text-muted);font-size:var(--text-sm)}.ptj-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:.15em .6em;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--text-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap}.ptj-badge-device{background:var(--device-tint);color:var(--device-strong)}.ptj-badge-go{background:color-mix(in srgb,var(--go) 18%,transparent);color:var(--go-strong)}.ptj-badge-danger{background:var(--danger-tint);color:var(--danger)}.ptj-badge-android,.ptj-badge-ios,.ptj-badge-pc,.ptj-badge-input,.ptj-badge-output{border:1px solid var(--border);background:transparent;color:var(--text-muted);opacity:.55}.ptj-badge-android.is-active,.ptj-badge-ios.is-active,.ptj-badge-pc.is-active{border-color:transparent;background:var(--device-tint);color:var(--device-strong);opacity:1}.ptj-badge-input.is-active{border-color:transparent;background:var(--brand-tint);color:var(--brand-strong);opacity:1}.ptj-badge-output.is-active{border-color:transparent;background:color-mix(in srgb,var(--go) 18%,transparent);color:var(--go-strong);opacity:1}.ptj-modal-backdrop{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--overlay)}.ptj-modal{display:flex;flex-direction:column;width:min(40rem,100%);max-height:min(90vh,100%);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-3);overflow:hidden}.ptj-modal-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border)}.ptj-modal-title{flex:1;font-size:var(--text-lg);font-weight:var(--weight-bold)}.ptj-modal-body{padding:var(--space-4);overflow:auto}.ptj-modal-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4);border-top:1px solid var(--border)}@media(max-width:32rem){.ptj-modal-backdrop{padding:0}.ptj-modal{width:100%;height:100%;max-height:100%;border-radius:0}}.ptj-dialog{width:min(32rem,calc(100vw - 2 * var(--space-4)));max-width:none;max-height:calc(100dvh - 2 * var(--space-4));padding:var(--space-4);border:0;border-radius:var(--radius-lg);background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-3);overflow:hidden}.ptj-dialog[open]{display:flex;flex-direction:column;gap:var(--space-4)}.ptj-dialog::backdrop{background:var(--overlay)}.ptj-dialog-title{font-size:var(--text-xl)}.ptj-dialog-body{min-height:0;overflow:auto}.ptj-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3)}.ptj-dialog-actions>.ptj-button-secondary:first-child:not(:only-child){margin-right:auto}.ptj-dialog-wide{width:min(56rem,calc(100vw - 2 * var(--space-4)))}.ptj-dialog-connect{width:min(28rem,calc(100vw - 2 * var(--space-4)));text-align:center}.ptj-dialog-prompt{width:min(24rem,calc(100vw - 2 * var(--space-4)))}.ptj-prompt-message{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-base)}.ptj-config-frame{width:100%;height:min(41rem,70dvh);border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff}@media(max-width:32rem){.ptj-dialog,.ptj-dialog-wide,.ptj-dialog-connect{width:100vw;height:100dvh;max-height:100dvh;border-radius:0}}.ptj-toast{position:fixed;left:50%;bottom:max(var(--space-5),env(safe-area-inset-bottom));z-index:var(--z-toast);max-width:min(28rem,calc(100vw - 2 * var(--space-4)));padding:var(--space-3) var(--space-4);border-radius:var(--radius-pill);background:var(--text);color:var(--bg);font-size:var(--text-sm);text-align:center;opacity:0;transform:translate(-50%,.75rem);pointer-events:none;transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.ptj-toast.is-visible{opacity:1;transform:translate(-50%)}.ptj-spinner{display:inline-block;width:1.15em;height:1.15em;border:.18em solid currentColor;border-top-color:transparent;border-radius:50%;vertical-align:-.2em;animation:ptj-spin .9s linear infinite}@keyframes ptj-spin{to{transform:rotate(360deg)}}.ptj-window{position:fixed;z-index:var(--z-window);display:flex;flex-direction:column;min-width:12rem;min-height:8rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-3);overflow:hidden}.ptj-window[hidden]{display:none}.ptj-window-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3);background:var(--brand-surface);color:#fff;cursor:move;touch-action:none;user-select:none}.ptj-window-title{flex:1;min-width:0;font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptj-window-buttons{display:flex;align-items:center;gap:var(--space-1)}.ptj-window-button{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 var(--space-2);border:0;border-radius:var(--radius-sm);background:#ffffff29;color:#fff;font-size:var(--text-sm);line-height:1}.ptj-window-button:hover{background:#ffffff52}.ptj-window-body{flex:1;min-height:0;background:var(--surface);overflow:auto}.ptj-window-body>iframe{width:100%;height:100%}.ptj-window-resize{position:absolute;right:0;bottom:0;width:var(--tap-min);height:var(--tap-min);cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 0 55%,var(--border-strong) 55% 62%,transparent 62% 72%,var(--border-strong) 72% 79%,transparent 79%) no-repeat right bottom / 1.1rem 1.1rem}.ptj-window-overlay{position:fixed;inset:0;z-index:calc(var(--z-window) + 50);cursor:inherit}.ptj-window-bar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3);background:var(--brand-surface);color:#fff;cursor:move;touch-action:none;user-select:none}.ptj-window:fullscreen .ptj-window-bar,.ptj-window-panel:fullscreen .ptj-window-bar{display:none}.ptj-window:fullscreen .ptj-window-frame,.ptj-window-panel:fullscreen .ptj-window-frame{width:100%;height:100%;border-radius:0}.ptj-window-close,.ptj-window-fullscreen{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;border:0;border-radius:var(--radius-sm);background:#ffffff29;color:#fff;line-height:1}.ptj-window-close:hover,.ptj-window-fullscreen:hover{background:#ffffff52}.ptj-window-frame{flex:1;min-height:0;width:100%;background:#fff}.ptj-qr-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);min-height:3.5rem;padding:var(--space-3) var(--space-6);border:0;border-radius:var(--radius-pill);background:#fff;color:#002853;font-size:var(--text-lg);font-weight:var(--weight-bold);text-decoration:none;box-shadow:0 8px 20px -8px #0000008c;transition:transform var(--duration-fast) var(--ease)}.ptj-qr-button svg{width:1.6rem;height:1.6rem;flex:none;fill:currentColor}.ptj-qr-button:active{transform:translateY(1px)}.ptj-consent-cover{position:fixed;inset:0;z-index:calc(var(--z-modal) + 10);background:#0009}.ptj-consent{position:fixed;left:0;right:0;bottom:0;z-index:calc(var(--z-modal) + 20);display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-4);border-top:1px solid var(--border-strong);background:var(--surface-raised);color:var(--text);text-align:center}.ptj-consent-actions{display:flex;gap:var(--space-3)}.ptj-consent-text{margin:0;max-width:46rem;font-size:var(--text-sm)}.ptj-consent-accepted{position:fixed;left:50%;bottom:var(--space-3);transform:translate(-50%);z-index:var(--z-panel);max-width:min(44rem,calc(100vw - 2 * var(--space-3)));padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text-muted);text-align:center;font-size:var(--text-xs);box-shadow:var(--shadow-2);opacity:.92}.ptj-consent-accepted:hover{opacity:1}@media(max-width:40rem){.ptj-consent-accepted{left:var(--space-2);right:var(--space-2);bottom:var(--space-2);transform:none;max-width:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);font-size:.7rem;line-height:var(--leading-tight)}}.ptj-consent-accepted a,.ptj-consent-accepted .ptj-linkbutton{color:var(--brand-strong)}.ptj-linkbutton{border:0;padding:0;background:none;color:var(--brand-strong);font:inherit;text-decoration:underline;cursor:pointer}.blocklyCommentText,.blocklyCommentTextarea{color:#202124;caret-color:#202124}.ptj-comment-langs,.ptj-comment-langs-row{pointer-events:none}.ptj-comment-langs{overflow:visible}.ptj-comment-langs-row{display:flex;gap:2px;align-items:flex-start;height:26px;padding:1px 6px 0;box-sizing:border-box}.ptj-comment-lang{pointer-events:auto;min-width:30px;padding:2px 7px;border:1px solid #b9b9ae;border-top:none;border-radius:0 0 5px 5px;background:#dcdcd6;color:#4a4a44;font:600 11px/1.4 system-ui,sans-serif;letter-spacing:.04em;cursor:pointer}.ptj-comment-lang:hover{background:#ebebe4}.ptj-comment-lang.is-open{background:#ffffc7;border-color:#c6c68d;color:#333}.ptj-comment-lang.is-empty{border-style:dashed;border-top:none;color:#7a7a72}.ptj-comment-lang.is-empty.is-open{color:#5a5a52}.editor-body{height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;background:var(--bg-sunken);overscroll-behavior:none}.editor-toolbar{display:flex;align-items:center;gap:var(--space-2);min-height:3.75rem;padding:var(--space-2) var(--space-3);background:var(--brand-surface);color:#fff;box-shadow:var(--shadow-2);z-index:var(--z-panel)}.editor-logo{display:inline-flex;align-items:center;height:var(--tap-min);padding:0 var(--space-2);border:0;background:transparent}.editor-logo img{height:1.9rem;width:auto}.editor-toolbar-spacer{flex:1}@media(max-width:40rem){.editor-toolbar{min-height:3.25rem;gap:var(--space-1);padding:var(--space-1) var(--space-2)}.editor-logo{display:none}.editor-toolbar .ptj-button-icon{width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem}.editor-toolbar .ptj-button-icon svg{width:1.35rem;height:1.35rem}.editor-toolbar #runButton{height:2.5rem;min-height:2.5rem;padding-inline:var(--space-3)}.blocklyToolboxCategoryLabel,.blocklyTreeLabel{font-size:var(--text-xs)}.blocklyToolboxCategory{padding-block:var(--space-1)}}.editor-toolbar .ptj-button{background:#ffffff1f;border-color:transparent;color:#fff}.editor-toolbar .ptj-button:hover:not(:disabled){background:#ffffff42}.editor-toolbar .ptj-button.is-active{background:#fff;color:var(--brand)}.editor-toolbar .ptj-button.has-unread,.editor-toolbar .ptj-button.has-notification{position:relative}.editor-toolbar .ptj-button.has-unread:after,.editor-toolbar .ptj-button.has-notification:after{content:"";position:absolute;top:.35rem;right:.35rem;width:.65rem;height:.65rem;border-radius:50%;background:#ffd23f}#runButton{gap:var(--space-2);padding:0 var(--space-5);background:var(--go-surface);border-color:var(--go-surface);font-weight:var(--weight-bold);letter-spacing:.04em}#runButton:hover:not(:disabled){background:var(--go-surface-strong)}#runButton svg{fill:currentColor;stroke:none}.editor-main{display:flex;min-height:0;min-width:0}.editor-workspace{position:relative;flex:1 1 auto;min-width:0;background:var(--bg)}#blocklyDiv{position:absolute;inset:0}.editor-toolbox-tab{display:none}@media(max-width:40rem){.editor-toolbox-tab{position:absolute;top:50%;left:0;transform:translateY(-50%);z-index:var(--z-window);display:grid;place-items:center;width:1.6rem;height:4rem;padding:0;border:1px solid var(--border-strong);border-left:0;border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--surface-raised);color:var(--text-muted);box-shadow:var(--shadow-1);transition:left var(--duration) var(--ease)}.editor-workspace:not(.is-toolbox-folded) .editor-toolbox-tab{left:var(--toolbox-width, 7.5rem)}.editor-workspace.is-toolbox-folded .editor-toolbox-tab svg{transform:rotate(180deg)}.editor-workspace.is-toolbox-folded .blocklyToolbox,.editor-workspace.is-toolbox-folded .blocklyFlyout,.editor-workspace.is-toolbox-folded .blocklyFlyoutScrollbar{transform:translate(-101%);visibility:hidden}.blocklyToolbox{transition:transform var(--duration) var(--ease)}}.injectionDiv [display=none]{display:none}.blocklyToolbox{background:var(--surface-muted);border-right:1px solid var(--border)}.blocklyToolboxCategoryLabel,.blocklyTreeLabel{color:var(--text);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600}.blocklyToolboxCategoryContainer:focus-visible,.blocklyToolboxCategory:focus-visible,.blocklyTreeRow:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.blocklyToolbox .blocklyToolboxCategory:not(.blocklyToolboxSelected):hover{background-color:color-mix(in srgb,var(--text) 12%,transparent)}.blocklyToolboxCategory.blocklyToolboxSelected{background:color-mix(in srgb,var(--brand, #224466) 18%,transparent)}.blocklyToolboxCategory.blocklyToolboxSelected .blocklyToolboxCategoryLabel,.blocklyToolboxCategory.blocklyToolboxSelected .blocklyTreeLabel{color:var(--text)}:root[data-theme=light] .blocklyToolboxCategory.blocklyToolboxSelected .blocklyToolboxCategoryLabel,:root[data-theme=light] .blocklyToolboxCategory.blocklyToolboxSelected .blocklyTreeLabel{color:#fff}.blocklyFlyoutBackground{fill:var(--bg-sunken)}.editor-code{position:absolute;inset:0;margin:0;padding:var(--space-4);background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre;overflow:auto}.editor-code[hidden]{display:none}.editor-splitter{flex:none;width:.75rem;background:var(--bg-sunken);border-left:1px solid var(--border);border-right:1px solid var(--border);cursor:col-resize;touch-action:none;background-image:radial-gradient(var(--border-strong) 1px,transparent 1px);background-size:4px 8px;background-position:center;background-repeat:repeat-y}.editor-side{flex:none;width:clamp(18rem,28vw,30rem);min-width:0;display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border)}.editor-side[hidden],.editor-splitter[hidden]{display:none}.editor-side-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--surface-muted)}.editor-side-title{flex:1;font-size:var(--text-sm);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.editor-side-body{flex:1;min-height:0;padding:var(--space-4);overflow:auto}.editor-side-body:has(>iframe){padding:0}.editor-side-body>iframe{display:block;width:100%;height:100%;border:0}.editor-side-body .timeline{display:flex;flex-direction:column;gap:var(--space-5);margin:0;padding:0;list-style:none}.editor-side-body .timeline>li{padding-left:var(--space-4);border-left:3px solid var(--brand-soft)}.editor-side-body img{border-radius:var(--radius-sm)}.editor-side-body .sideButtonsTutorial{display:inline-block;padding:1px 16px 3px;border-left:8px solid rgb(90 90 90);background-color:#ddd;color:#000}.editor-side-body .addDeviceTutorial{display:inline-block;padding:1px 4px;border:2px solid #478383;border-radius:5px;background-color:#478383;color:#fff}.editor-side-body .addDeviceTutorial:before{content:"✙ "}.editor-side-body .selectDeviceTutorial{display:inline-block;padding:0 10px;border:2px solid #e9ebec;border-radius:1px;background-color:#e9ebec;color:#000;font-weight:var(--weight-bold)}.editor-side-body .qrCodeTutorial{display:inline-block;padding:0 8px;border:1px solid #e9ebec;border-radius:3px;background-color:#e9ebec;color:#000}.editor-side-body .qrCodeTutorial:before{content:"▣ "}.editor-side-body .openInThisWindowTutorial{display:inline-block;padding:0 6px 1px;border:1px solid #17a2b8;border-radius:3px;background-color:#17a2b8;color:#fff}.editor-side-body .confirmDeviceTutorial{display:inline-block;padding:0 5px;border:4px solid #007bff;border-radius:3px;background-color:#007bff;color:#fff}.editor-side-body .playButtonTutorial{padding:6px 16px 8px 17px;border-radius:20px;background:#dd4b39;color:#fff;font-family:sans-serif;font-size:inherit}.editor-side-body .playButtonTutorial:before{content:"▶"}.editor-side-body .iFrameTutorial{max-width:100%;border:0}.editor-side-body .tutorialImgMargin{display:inline-block;max-width:100%;padding:5px;border:1px solid var(--border)}@media(max-width:48rem){.editor-main{flex-direction:column}.editor-splitter{display:none}.editor-side{width:auto;height:45%;border-left:0;border-top:1px solid var(--border)}}#running{position:fixed;top:0;left:0;right:0;z-index:var(--z-banner);display:flex;justify-content:center;padding-top:var(--space-6);pointer-events:none}#running>*{pointer-events:auto}#running[hidden]{display:none}#messageRunning{display:inline-flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--danger);color:#fff;box-shadow:var(--shadow-3)}.editor-running-gear{width:1.4rem;height:1.4rem;fill:currentColor;animation:editor-rotating 2s linear infinite}@keyframes editor-rotating{to{transform:rotate(360deg)}}#stopButton{min-height:2.5rem;padding:0 var(--space-4);border:0;border-radius:var(--radius-pill);background:#fff;color:var(--danger);font-size:var(--text-sm);font-weight:var(--weight-bold);text-transform:uppercase}#stopButton:hover{background:#e6e6e6}.editor-log{display:flex;flex-direction:column;min-height:12rem;flex:1 1 40%;border-top:1px solid var(--border);background:var(--surface)}.editor-log[hidden]{display:none}.editor-log-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--surface-muted)}.editor-log-title{flex:1;font-size:var(--text-sm);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.editor-log-header .ptj-button{min-height:2rem;padding:0 var(--space-3);font-size:var(--text-xs)}#logText{flex:1;min-height:0;width:100%;margin:0;padding:var(--space-2) var(--space-3);border:0;background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre;tab-size:4;resize:none}.editor-windows.is-dimmed .ptj-window{opacity:0;pointer-events:none}.editor-windows.is-locked .ptj-window-buttons,.editor-windows.is-locked .ptj-window-close,.editor-windows.is-locked .ptj-window-resize{display:none}.ptj-devices-category .blocklyToolboxCategory{position:relative}.ptj-devices-category .blocklyToolboxCategory:has(.ptj-category-buttons){padding-right:1.75rem}.ptj-devices-category .blocklyToolboxCategory:has(.ptj-category-configure){padding-right:3.1rem}.ptj-devices-category .blocklyToolboxCategoryLabel{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.ptj-category-buttons{position:absolute;top:50%;right:.15rem;transform:translateY(-50%);display:inline-flex;gap:.15rem}.ptj-category-button{display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text) 10%,transparent);color:var(--text);font-size:.8rem;line-height:1;cursor:pointer}.ptj-category-button svg{width:1.15rem;height:1.15rem}.ptj-category-button:hover{background:color-mix(in srgb,var(--text) 22%,transparent)}.blocklyToolboxSelected .ptj-category-button{background:#ffffff3d;color:#fff}.ptj-running .ptj-category-buttons{display:none}.ptj-picker-body{display:flex;flex-direction:column;gap:var(--space-4)}.ptj-picker-header{position:sticky;top:0;z-index:2;padding-bottom:var(--space-4);background:linear-gradient(to bottom,var(--surface-raised) 0%,var(--surface-raised) 62%,color-mix(in srgb,var(--surface-raised) 0%,transparent) 100%)}.ptj-picker-search{width:100%;min-height:var(--control-height);padding:var(--space-2) var(--space-4);border:2px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text);font-size:var(--text-base)}.ptj-picker-search:focus-visible{border-color:var(--brand-strong);outline:none}.ptj-picker-group{display:flex;flex-direction:column;gap:var(--space-2)}.ptj-picker-group[hidden]{display:none}.ptj-picker-group-title{color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.06em}.ptj-picker-empty{padding:var(--space-5) 0;color:var(--text-muted);text-align:center}.ptj-picker-empty[hidden]{display:none}.ptj-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.ptj-picker-item[hidden]{display:none}.ptj-picker-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border:2px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:inherit;text-align:left}.ptj-picker-item:hover{border-color:var(--brand-strong);background:var(--surface-muted)}.ptj-picker-icon{width:3.5rem;height:3.5rem;flex:none;object-fit:contain}.ptj-picker-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.ptj-picker-name{font-size:var(--text-base);overflow-wrap:anywhere}.ptj-picker-desc{color:var(--text-muted);font-size:var(--text-sm)}.ptj-picker-badges{display:flex;flex-wrap:wrap;gap:var(--space-1)}.ptj-picker-item.is-remote-only{border-style:dashed}@media(max-width:40rem){.ptj-picker{grid-template-columns:1fr}.ptj-picker-item{gap:var(--space-3);padding:var(--space-2) var(--space-3)}.ptj-picker-icon{width:2.75rem;height:2.75rem}.ptj-picker-item:not(.is-remote-only) .ptj-badge-android,.ptj-picker-item:not(.is-remote-only) .ptj-badge-ios,.ptj-picker-item:not(.is-remote-only) .ptj-badge-pc{display:none}}.ptj-picker-item.is-remote-only .ptj-picker-icon{opacity:.55}.ptj-connect{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.ptj-connect-instructions{font-size:var(--text-lg);font-weight:var(--weight-medium);text-align:center;overflow-wrap:anywhere}.ptj-connect-qr{display:flex;align-items:center;justify-content:center;min-height:12rem;padding:var(--space-3);border-radius:var(--radius-md);background:#fff;color:#16232e}.ptj-connect-qr-canvas{width:min(20rem,60vmin);height:auto;image-rendering:pixelated}.ptj-connect-waiting{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);padding:var(--space-8) var(--space-4);text-align:center}.ptj-connect-waiting-text{font-size:var(--text-lg);font-weight:var(--weight-medium);color:var(--text)}.ptj-connect-dots{display:flex;gap:.5rem}.ptj-connect-dots span{width:.75rem;height:.75rem;border-radius:50%;background:var(--brand-strong);animation:ptj-connect-bounce 1.2s infinite ease-in-out}.ptj-connect-dots span:nth-child(2){animation-delay:.16s}.ptj-connect-dots span:nth-child(3){animation-delay:.32s}@keyframes ptj-connect-bounce{0%,70%,to{transform:translateY(0);opacity:.35}35%{transform:translateY(-.5rem);opacity:1}}@media(prefers-reduced-motion:reduce){.ptj-connect-dots span{animation:none;opacity:.8}}.ptj-connect-link[hidden],.ptj-connect-waiting[hidden],.ptj-connect-qr[hidden],.ptj-connect-instructions[hidden]{display:none}.ptj-connect-link{max-width:100%;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.ptj-fatal{padding:var(--space-4);background:var(--danger);color:#fff;font-weight:var(--weight-medium);text-align:center}.editor-disconnected{position:fixed;top:calc(var(--toolbar-height, 3.5rem) + var(--space-3));right:var(--space-3);z-index:calc(var(--z-window) + 10);width:min(22rem,calc(100vw - 2 * var(--space-3)));padding:var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-3)}.editor-disconnected[hidden]{display:none}.editor-disconnected-title{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:700;color:var(--danger, #b3261e)}.editor-disconnected-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.editor-disconnected-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap}.editor-disconnected-name{font-weight:600;overflow-wrap:anywhere}.editor-disconnected-actions{display:flex;gap:var(--space-2)}.editor-disconnected-actions .ptj-button{padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.ptj-devices-category .blocklyToolboxCategoryIcon,.ptj-devices-category .blocklyTreeIcon,.ptj-devices-category .blocklyToolboxControl{display:none!important}.blocklyToolboxCategoryGroup .blocklyToolboxCategoryGroup .blocklyToolboxCategory{margin-left:var(--space-4);padding-left:var(--space-2);border-left-width:14px!important}.blocklyToolboxCategoryGroup .blocklyToolboxCategoryGroup .blocklyToolboxCategoryLabel{font-weight:500}#themeBtn[data-preference=system]{opacity:.85}#themeBtn[data-preference=dark],#themeBtn[data-preference=light]{background:#ffffff42}.editor-monitor{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--surface-muted)}.editor-monitor[hidden]{display:none}.editor-monitor-device{margin:0;font-size:var(--text-xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.editor-monitor-note{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.editor-monitor-row{display:grid;grid-template-columns:minmax(0,5rem) minmax(0,1fr) 2.75rem;align-items:center;gap:var(--space-2)}.editor-monitor-row{cursor:zoom-in}.editor-monitor-row.is-expanded{cursor:zoom-out}.editor-monitor-row.is-expanded .editor-monitor-chart{height:6rem}.editor-monitor-key{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--text-sm);color:var(--text-muted)}.editor-monitor-chart{display:block;height:1.75rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text-muted) 10%,transparent)}.ptj-trace{pointer-events:none;display:block;width:100%;height:100%;overflow:visible}.ptj-trace-line{fill:none;stroke:var(--device, #00a9b5);stroke-width:1.5;stroke-linejoin:round;vector-effect:non-scaling-stroke}.ptj-trace-band{fill:color-mix(in srgb,var(--text-muted) 25%,transparent)}.ptj-trace-band.is-high{fill:var(--device, #00a9b5)}.ptj-trace-label{fill:var(--text);font-size:9px;font-family:var(--font-sans)}.editor-monitor-value{font-variant-numeric:tabular-nums;font-weight:var(--weight-bold);font-size:var(--text-sm);text-align:right;color:var(--text)}.editor-monitor-row.is-highlighted .editor-monitor-key,.editor-monitor-row.is-highlighted .editor-monitor-value{color:var(--device, #00a9b5)}.editor-side-restore{position:absolute;top:var(--space-2);right:0;z-index:calc(var(--z-panel) + 20);display:flex;align-items:center;justify-content:center;width:1.75rem;min-height:var(--tap-min);padding:0;border:1px solid var(--border-strong);border-right:0;border-radius:var(--radius-md) 0 0 var(--radius-md);background:var(--brand-surface);color:#fff;font-size:var(--text-sm);cursor:pointer;box-shadow:var(--shadow-2)}.editor-side-restore:hover,.editor-side-restore:focus-visible{background:var(--brand-strong);width:2.25rem}.editor-side-activity{display:flex;flex-direction:column;flex:1 1 60%;min-height:0}.editor-side-activity[hidden],.editor-log[hidden]{display:none}.editor-log textarea{flex:1;min-height:0;width:100%;resize:none;border:0;padding:var(--space-3);background:transparent;color:var(--text);font-family:var(--font-mono);font-size:var(--text-xs)}.editor-side-splitter{flex:none;height:.75rem;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-sunken);cursor:row-resize;touch-action:none;background-image:radial-gradient(var(--border-strong) 1px,transparent 1px);background-size:8px 4px;background-position:center;background-repeat:repeat-x}.editor-side-splitter[hidden]{display:none}.ptj-dock{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-window);display:grid;grid-template-columns:1fr;grid-auto-rows:1fr;gap:2px;padding-top:1.25rem;background:var(--border);border-top:1px solid var(--border-strong);box-shadow:0 -6px 18px -8px #00000073;transition:height var(--duration) var(--ease)}.ptj-dock.is-resizing{transition:none}.ptj-dock.is-lent{grid-template-columns:1fr;overflow-y:auto}.ptj-dock.is-lent>.ptj-window{display:none}.ptj-dock.is-lent>.editor-monitor{padding:var(--space-2) var(--space-3) var(--space-3);background:var(--surface);overflow-y:auto}.ptj-dock[data-devices="2"],.ptj-dock[data-devices="3"],.ptj-dock[data-devices="4"]{grid-template-columns:1fr 1fr}.ptj-dock[data-devices="5"],.ptj-dock[data-devices="6"],.ptj-dock[data-devices="7"],.ptj-dock[data-devices="8"]{grid-template-columns:1fr 1fr;grid-auto-rows:minmax(9rem,1fr);overflow-y:auto}.ptj-dock-grip{position:absolute;top:0;left:0;right:0;height:1.25rem;display:grid;place-items:center;padding:0;border:0;background:var(--surface-muted);cursor:ns-resize;touch-action:none}.ptj-dock-grip:before{content:"";width:2.5rem;height:4px;border-radius:var(--radius-pill);background:var(--border-strong)}.ptj-window.is-tile{position:static;width:auto;height:auto;min-width:0;min-height:0;border-radius:0;box-shadow:none}.editor-side-grip{display:none}@media(max-width:40rem){.editor-side{position:fixed;left:0;right:0;top:3.25rem;width:auto;height:var(--tutorial-height, 58dvh);max-height:calc(100dvh - 3.25rem);z-index:var(--z-window);border-left:0;border-bottom:1px solid var(--border-strong);box-shadow:0 8px 20px -10px #00000080;transition:height var(--duration) var(--ease);overflow:hidden}.editor-side.is-resizing{transition:none}.editor-side.is-folded{height:3.9rem}.editor-side.is-folded .editor-side-body,.editor-side.is-folded .editor-log{display:none}.editor-side-activity{min-height:0}.editor-side-content{font-size:var(--text-base)}.editor-main:has(>.editor-side:not([hidden])) .editor-workspace{margin-top:3.9rem}.editor-side-grip{position:absolute;left:0;right:0;bottom:0;height:1.25rem;display:grid;place-items:center;padding:0;border:0;border-top:1px solid var(--border);background:var(--surface-muted);cursor:ns-resize;touch-action:none}.editor-side-grip:before{content:"";width:2.5rem;height:4px;border-radius:var(--radius-pill);background:var(--border-strong)}.editor-side-activity{padding-bottom:1.25rem}.editor-log{min-height:0}}.ptj-piano{max-width:min(70vw,34rem);overflow-x:auto;overflow-y:hidden;padding:2px;touch-action:pan-x;overscroll-behavior-x:contain}.ptj-piano-keys{position:relative;height:116px}.ptj-piano-key{position:absolute;top:0;display:flex;align-items:flex-end;justify-content:center;padding:0 0 4px;border:1px solid #2b3640;cursor:pointer;font-family:var(--font-sans);line-height:1}.ptj-piano-key.is-white{width:38px;height:116px;border-radius:0 0 4px 4px;background:#fdfdfb;color:#26313a;font-size:11px}.ptj-piano-key.is-black{width:26px;height:72px;z-index:1;border-radius:0 0 3px 3px;background:#1d262e;color:#f2f6f9;font-size:9px;letter-spacing:-.02em}.ptj-piano-key:hover{filter:brightness(.92)}.ptj-piano-key.is-black:hover{filter:brightness(1.35)}.ptj-piano-key.is-current{box-shadow:inset 0 0 0 3px var(--brand-surface-strong, #0b427a)}.ptj-piano-key.is-current.is-black{box-shadow:inset 0 0 0 3px #6fd0ff}.ptj-piano-name{pointer-events:none}
