.hb{--hb-max: 1180px;--hb-nav: 256px;--hb-gap: 32px;--hb-pad: 20px;min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.help-render-host{position:fixed;left:-30000px;top:0;width:2000px;height:1600px;overflow:hidden;opacity:0;pointer-events:none}.hb .hb-band{display:block;position:sticky;top:0;z-index:100;padding:12px 0}.hb-band-in{width:100%;max-width:var(--hb-max);margin:0 auto;padding:0 var(--hb-pad);display:grid;grid-template-columns:var(--hb-nav) minmax(0,1fr);gap:var(--hb-gap);align-items:center;min-height:46px}.hb-band .brand{text-decoration:none;margin-right:0}.hb-band-main{display:flex;align-items:center;gap:10px;min-width:0}.hb-band-main .hb-editor-link{margin-left:auto}.hb-search-wrap{flex:1 1 240px;min-width:160px;max-width:560px}.hb-search{width:100%;min-height:46px;padding:0 18px;font-size:1.05rem;font-weight:700;border:2px solid var(--input-line);border-radius:var(--radius-btn);background:var(--input-bg);color:var(--ink)}.hb-search:focus{background:#fff8e6;border-color:var(--accent-deep);outline:none;box-shadow:none}.hb-band .btn.hb-menu-btn{display:none}.hb-band .btn.ghost{text-decoration:none}.hb-body{width:100%;max-width:var(--hb-max);margin:0 auto;display:grid;grid-template-columns:var(--hb-nav) minmax(0,1fr);gap:var(--hb-gap);padding:24px var(--hb-pad) 64px}.hb-nav{position:sticky;top:97px;align-self:start;max-height:calc(100vh - 113px);overflow-y:auto;padding:10px;border-radius:var(--radius);background:var(--sidebar);border:2px solid var(--line)}.hb-nav-inner{display:flex;flex-direction:column;gap:14px}.hb-nav-group{display:flex;flex-direction:column;gap:2px}.hb-nav-title{padding:6px 12px 4px;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-text)}.hb-nav-link{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 12px;border-radius:var(--radius-sm);color:var(--ink);font-weight:700;text-decoration:none;transition:background-color .12s ease}.hb-nav-link:hover{background:#fff9}.hb-nav-link.on{background:#fff;color:var(--accent-text);box-shadow:var(--shadow-sm)}.hb-nav-cat .cc-cat-tile{width:28px;height:28px;border-radius:8px;flex:none}.hb-nav-cat-title{flex:1}.hb-nav-count{font-size:.8rem;font-weight:800;color:var(--muted);padding:2px 8px;border-radius:var(--pill);background:#ffffffb3}.hb-main{min-width:0;overflow-x:clip}.hb-foot{margin-top:40px;padding-top:16px;border-top:2px solid var(--line);font-size:.9rem}.hb-page{display:flex;flex-direction:column;gap:14px;line-height:1.55}.hb-page h1{margin:0;font-family:var(--font-display);font-size:2rem;font-weight:800;line-height:1.15}.hb-page h2{margin:18px 0 0;font-family:var(--font-display);font-size:1.4rem;font-weight:800}.hb-page h3{margin:0;font-family:var(--font-display);font-size:1.25rem;font-weight:800}.hb-page h4{margin:0;font-size:1rem;font-weight:800}.hb-page p{margin:0}.hb-page ul,.hb-page ol{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:6px}.hb-lead{font-size:1.12rem;color:var(--muted)}.hb-page code,.hb-sig{padding:1px 6px;border-radius:6px;background:var(--accent-tint);font-family:var(--font-mono);font-size:.92em}.hb-note{padding:12px 16px;border-radius:var(--radius-sm);background:var(--info-tint);color:var(--info);font-weight:700}.hb-note-box{padding:16px 20px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);display:flex;flex-direction:column;gap:10px}.hb-note-box h2{margin:0}.hb-steps li::marker{font-weight:800;color:var(--accent-text)}.hb-empty{padding:24px 0;color:var(--muted);font-size:1.1rem}.hb-cat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:8px}.hb-cat-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);text-decoration:none;box-shadow:0 3px 0 var(--line-strong);transition:transform .08s ease,border-color .12s ease}.hb-cat-card:hover{border-color:var(--accent);transform:translateY(-1px)}.hb-cat-card .cc-cat-tile{width:44px;height:44px;border-radius:12px}.hb-cat-card-title{font-weight:800}.hb-cat-card-count{font-size:.85rem;color:var(--muted)}.hb-cat-head{display:flex;align-items:center;gap:14px}.hb-cat-head .cc-cat-tile{width:52px;height:52px;border-radius:14px;flex:none}.hb-cube-link{color:var(--accent-text);font-weight:800}.hb-toc{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--panel);border:2px solid var(--line);font-size:.95rem}.hb-toc a{color:var(--accent-text);font-weight:800;text-decoration:none}.hb-toc a:hover{text-decoration:underline}.hb-block{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:2px solid var(--line);border-left:8px solid var(--cat, var(--line-strong));border-radius:var(--radius);background:var(--panel);scroll-margin-top:96px}.hb-block-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.hb-badge{padding:3px 10px;border-radius:var(--pill);font-size:.78rem;font-weight:800;background:var(--bg);color:var(--muted);border:1px solid var(--line)}.hb-badge-hat{background:var(--accent-tint);color:var(--accent-text);border-color:var(--input-line)}.hb-badge-value,.hb-badge-bool{background:var(--info-tint);color:var(--info);border-color:transparent}.hb-badge-role{background:var(--warn-tint);color:var(--warn);border-color:transparent}.hb-variants{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:flex-start}.hb-variant{display:flex;flex-direction:column;gap:6px;max-width:100%}.hb-desc{font-size:1.02rem}.hb-slots dl,.hb-params{margin:6px 0 0;display:flex;flex-direction:column;gap:4px}.hb-slots dl>div,.hb-params>div{display:grid;grid-template-columns:minmax(90px,auto) 1fr;gap:12px;align-items:baseline}.hb-slots dt{font-weight:800;color:var(--accent-text)}.hb-slots dd,.hb-params dd{margin:0}.hb-tips ul{margin-top:6px}.hb-example{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--line)}.hb-others{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.95rem}.hb-others a{color:var(--accent-text);font-weight:800}.hb-fig{max-width:100%;overflow:visible}.hb-fig svg{display:block;width:100%;height:auto;overflow:visible}.hb-fig-loading{min-height:48px;min-width:160px;display:flex;align-items:center;padding:0 14px;border-radius:var(--radius-sm);border:2px dashed var(--line-strong);color:var(--muted);font-weight:700;font-size:.9rem}.hb-fig-fail{color:var(--danger);font-weight:700}.hb-program{margin:0;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.hb-program figcaption{font-size:.98rem}.hb-program-fig{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px 14px;max-width:100%}.hb-open{opacity:0;transition:opacity .12s ease;white-space:nowrap;text-decoration:none}.hb-program-fig:hover .hb-open,.hb-program-fig:focus-within .hb-open{opacity:1}@media(hover:none){.hb-open{opacity:1}}.hb-cube{display:flex;flex-direction:column;gap:12px;padding:22px 0 26px;border-top:2px solid var(--line);scroll-margin-top:96px}.hb-cube-head{display:flex;align-items:center;gap:14px}.hb-cube-head h2{margin:0;font-size:1.5rem}.hb-cube-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.hb-cube-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);text-decoration:none;box-shadow:0 3px 0 var(--line-strong);transition:transform .08s ease,border-color .12s ease}.hb-cube-card:hover{border-color:var(--accent);transform:translateY(-1px)}.hb-cube-card-name{font-family:var(--font-display);font-weight:800;font-size:1.05rem;text-align:center}.hb-cube-swatch{width:64px;height:64px;display:block;flex:none}.hb-project{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);scroll-margin-top:96px}.hb-project h2{margin:0}.hb-cube-chips{display:flex;flex-wrap:wrap;gap:6px}.hb-chip{display:inline-block;padding:3px 10px;border-radius:var(--pill);background:var(--second-tint);color:var(--second-text);font-size:.85rem;font-weight:800;text-decoration:none}.hb-hits{display:flex;flex-direction:column;gap:10px}.hb-hit{display:grid;grid-template-columns:minmax(120px,260px) 1fr;gap:16px;align-items:center;padding:12px 16px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);text-decoration:none}.hb-hit:hover{border-color:var(--accent)}.hb-hit-page{grid-template-columns:1fr}.hb-hit p{margin:4px 0 0;font-size:.95rem;color:var(--muted)}.hb-prevnext{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px}.hb-prevnext .btn{text-decoration:none}@media(max-width:1000px){.hb{--hb-pad: 16px}.hb-body{grid-template-columns:minmax(0,1fr);gap:0}.hb .hb-band{position:relative}.hb-band-in{grid-template-columns:auto minmax(0,1fr);gap:12px}.hb-cat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.hb-band .btn.hb-menu-btn{display:inline-flex}.hb-band .btn.hb-editor-link{display:none}.hb-nav{position:fixed;top:0;bottom:0;left:0;width:min(340px,88vw);max-height:none;border-radius:0 var(--radius) var(--radius) 0;transform:translate(-105%);transition:transform .16s ease;z-index:120;box-shadow:var(--shadow)}.hb-nav.open{transform:none}.hb-backdrop{position:fixed;inset:0;background:#2b2a2459;z-index:110}.hb-page h1{font-size:1.6rem}.hb-hit{grid-template-columns:1fr}}@media(max-width:600px){.hb-cat-grid,.hb-cube-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hb-block,.hb-project{padding:14px 12px}.hb-slots dl>div,.hb-params>div{grid-template-columns:1fr;gap:2px}}@media(prefers-reduced-motion:reduce){.hb-nav,.hb-cat-card{transition:none}}.ls-led{display:block}.ls-led-panel{fill:#2b2a24}.ls-led-on{fill:#ff5a4a}.ls-led-off{fill:#433532}.ls-chain{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:0}.ls-chain-item{display:flex;align-items:flex-start}.ls-cube-wrap{display:flex;flex-direction:column;align-items:center;gap:calc(var(--cube) * .1);width:calc(var(--cube) * 1.25)}.ls-cube-name{font-size:calc(var(--cube) * .17);font-weight:800;text-align:center;line-height:1.15}.ls-chain-link{display:block;width:calc(var(--cube) * .22);height:calc(var(--cube) * .12);margin:calc(var(--cube) * .44) calc(var(--cube) * -.12) 0;border-radius:999px;background:var(--line-strong);position:relative;z-index:1}.ls-cubelist{display:inline-flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.ls-cubelist-item{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:.95rem}.ls-concept{display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:var(--pill);background:var(--panel);border:2px solid var(--cat, var(--line-strong));color:var(--ink);font-weight:800;font-size:.92rem;white-space:nowrap}.ls-concept .cc-cat-tile{width:26px;height:26px;border-radius:8px}.ls-concept.big{font-size:1.05rem;padding:5px 16px 5px 5px}.ls-concept.big .cc-cat-tile{width:32px;height:32px;border-radius:10px}.cc-glyph-debug{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><circle cx='10' cy='10' r='6'/><path d='M14.5 14.5 21 21M7.5 10h5M10 7.5v5'/></svg>")}.ls-age{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:var(--pill);background:var(--second-tint);color:var(--second-text);font-weight:800;font-size:.9rem;white-space:nowrap}.ls-age small{font-weight:700;font-size:.85em}.ls-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:var(--pill);background:var(--accent-tint);color:var(--accent-text);font-weight:800;font-size:.9rem;white-space:nowrap}.ls-card-no{display:inline-flex;align-items:center;padding:3px 10px;border-radius:8px;background:var(--ink);color:#fff;font-family:var(--font-display);font-weight:800;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.ls-site{min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.ls-site .ls-band{position:sticky;top:0;z-index:100}.ls-band-title{font-family:var(--font-display);font-weight:800;font-size:1.3rem;color:var(--ink);margin-left:2px}.ls-site .ls-band .btn.ghost{text-decoration:none}.ls-main{flex:1}.ls-page{width:100%;max-width:1180px;margin:0 auto;padding:28px 20px 72px;display:flex;flex-direction:column;gap:20px;line-height:1.5}.ls-page h1{margin:0;font-family:var(--font-display);font-size:2.2rem;font-weight:800;line-height:1.12}.ls-page h2{margin:0;font-family:var(--font-display);font-size:1.35rem;font-weight:800}.ls-page h3{margin:0;font-family:var(--font-display);font-size:1.15rem;font-weight:800}.ls-page p{margin:0}.ls-page ul,.ls-page ol{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:6px}.ls-page code{padding:1px 6px;border-radius:6px;background:var(--accent-tint);font-family:var(--font-mono);font-size:.92em}.ls-lead{font-size:1.12rem;color:var(--muted)}.ls-empty{padding:32px 0;color:var(--muted);font-size:1.1rem;text-align:center}.ls-back{margin:0}.ls-hero{display:flex;flex-direction:column;gap:16px}.ls-hero-text{display:flex;flex-direction:column;gap:8px;max-width:760px}.ls-filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius);background:var(--panel);border:2px solid var(--line)}.ls-filter-label{font-weight:800;color:var(--muted);margin-right:4px}.ls-filter-count{margin-left:auto;font-size:.95rem;font-weight:700;color:var(--muted)}.ls-chip{display:inline-flex;flex-direction:column;align-items:flex-start;min-height:44px;padding:4px 14px;border:2px solid var(--line-strong);border-radius:var(--radius-btn);background:var(--panel);font-weight:800;line-height:1.15;cursor:pointer}.ls-chip small{font-size:.75rem;font-weight:700;color:var(--muted)}.ls-chip:hover{border-color:var(--accent);background:var(--accent-tint)}.ls-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 3px 0 var(--accent-deep)}.ls-chip.on small{color:var(--accent-ink)}.ls-page .ls-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.ls-card{border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 3px 0 var(--line-strong);overflow:hidden;transition:transform .1s ease,border-color .12s ease,box-shadow .12s ease}.ls-card:hover{border-color:var(--cat, var(--accent));transform:translateY(-2px);box-shadow:0 6px 0 var(--cat, var(--line-strong))}.ls-card:focus-within{border-color:var(--cat, var(--accent))}.ls-card-link{display:flex;flex-direction:column;height:100%;color:var(--ink);text-decoration:none}.ls-card-link:focus-visible{outline:none;box-shadow:none}.ls-card-top{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 16px 14px;background:var(--cat, var(--accent));box-shadow:inset 0 -4px #0000001a}.ls-card-top:before{content:"";position:absolute;inset:0;background:#ffffffd6}.ls-card-top>*{position:relative}.ls-card-top .ls-card-no{align-self:flex-start}.ls-card-led{width:120px;height:120px;filter:drop-shadow(0 6px 0 rgba(43,42,36,.14))}.ls-card-body{display:flex;flex-direction:column;gap:8px;padding:14px 16px 16px;min-width:0}.ls-card-title{font-family:var(--font-display);font-size:1.3rem;font-weight:800;line-height:1.15}.ls-card-tag{color:var(--muted)}.ls-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:2px}.ls-card .ls-cubelist{margin-top:4px;padding-top:10px;border-top:1px solid var(--line)}.ls-hero-card{display:grid;grid-template-columns:168px minmax(0,1fr) auto;gap:24px;align-items:center;padding:20px 24px;border:2px solid var(--line);border-left:10px solid var(--cat, var(--line-strong));border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-sm)}.ls-hero-led{width:168px;height:168px;padding:14px;border-radius:24px;background:var(--cat, var(--accent));position:relative;box-shadow:inset 0 -5px #0000001f}.ls-hero-led:before{content:"";position:absolute;inset:0;border-radius:24px;background:#ffffffd6}.ls-hero-led .ls-led{position:relative;width:100%;height:100%}.ls-hero-body{display:flex;flex-direction:column;gap:10px;min-width:0}.ls-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.ls-hero-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:240px}.ls-hero-actions .btn{justify-content:center;text-decoration:none}.ls-hero-actions .ls-start{min-height:60px;font-size:1.2rem;padding:0 24px}.ls-start-hint{font-size:.85rem;color:var(--muted);text-align:center;margin-bottom:4px}.ls-facts{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;padding:16px 24px;border:2px solid var(--line);border-radius:var(--radius);background:var(--sidebar)}.ls-facts>div{display:flex;flex-direction:column;gap:6px;min-width:0}.ls-facts-wide{grid-column:1 / -1;padding-top:10px;border-top:1px solid var(--input-line)}.ls-facts dt{font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-text)}.ls-facts dd{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-weight:800;font-size:1.05rem}.ls-facts dd small{flex-basis:100%;font-weight:600;font-size:.92rem;color:var(--muted)}.ls-section{display:flex;flex-direction:column;gap:10px;padding:18px 24px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel)}.ls-vocab{margin:0;display:flex;flex-direction:column;gap:6px}.ls-vocab>div{display:grid;grid-template-columns:minmax(130px,auto) 1fr;gap:12px;align-items:baseline}.ls-vocab dt{font-weight:800;color:var(--accent-text)}.ls-vocab dd{margin:0}.ls-page .ls-flow{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:14px;counter-reset:step}.ls-flow>li{position:relative;padding:12px 16px 12px 56px;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.ls-flow>li:before{counter-increment:step;content:counter(step);position:absolute;left:12px;top:12px;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:#fff;color:var(--ink);border:3px solid var(--cat, var(--accent));font-family:var(--font-display);font-weight:800}.ls-page .ls-slides{padding-left:28px;gap:8px}.ls-slides li{display:flex;flex-direction:column;gap:2px}.ls-slide-kind{font-weight:800}.ls-slide-note{color:var(--muted);font-size:.95rem}.ls-flow-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.ls-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.ls-two>div{display:flex;flex-direction:column;gap:10px}.ls-plan .hb-prevnext .btn{text-decoration:none}.ls-show{position:fixed;inset:0;background:var(--bg);overflow:hidden;cursor:default;-webkit-user-select:none;user-select:none}.ls-show.idle{cursor:none}.ls-stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform:translate(-50%,-50%) scale(var(--s, 1));transform-origin:center;background:var(--bg);color:var(--ink);overflow:hidden}.ls-stage:before,.ls-stage:after{content:"";position:absolute;border-radius:180px;pointer-events:none}.ls-stage:before{right:-220px;top:-260px;width:760px;height:760px;background:var(--cat, var(--accent));opacity:.09;transform:rotate(14deg)}.ls-stage:after{left:-260px;bottom:-300px;width:640px;height:640px;background:var(--second);opacity:.1;transform:rotate(-10deg)}.ls-slide{position:absolute;inset:0;padding:100px 120px 150px;display:flex;flex-direction:column;gap:36px;font-size:48px;line-height:1.3;z-index:1}.ls-slide-top{position:absolute;top:0;left:0;right:0;height:18px;background:var(--cat, var(--accent))}.ls-slide h1{margin:0;font-family:var(--font-display);font-size:112px;line-height:1.04;font-weight:800}.ls-slide h2{margin:0;font-family:var(--font-display);font-size:84px;line-height:1.08;font-weight:800}.ls-slide p{margin:0}.ls-slide code{padding:2px 14px;border-radius:14px;background:var(--accent-tint);font-family:inherit;font-weight:800}.ls-slide-foot{position:absolute;left:120px;right:120px;bottom:44px;display:flex;justify-content:space-between;align-items:center;font-size:30px;font-weight:800;color:var(--muted)}.ls-foot-brand{display:flex;align-items:center;gap:20px}.ls-foot-brand img{height:44px;width:auto}.ls-text{display:flex;flex-direction:column;gap:24px;font-size:50px}.ls-text.center{text-align:center;align-items:center}.ls-hint{font-size:40px;color:var(--muted);font-weight:700}.ls-coin{flex:none;width:72px;height:72px;border-radius:22px;display:grid;place-items:center;background:#fff;color:var(--ink);border:6px solid var(--cat, var(--accent));font-family:var(--font-display);font-size:38px;font-weight:800;box-shadow:0 5px #2b2a2424}.ls-quiz.revealed .ls-option.correct:after{content:"✓";margin-left:auto;color:var(--second-text);font-size:52px;font-weight:900}.ls-slide .ls-pill.big{font-size:40px;padding:8px 28px;border-radius:999px}.ls-slide .ls-concept.big{font-size:40px;padding:10px 32px 10px 10px;border-width:4px;gap:18px;align-self:flex-start}.ls-slide .ls-concept.big .cc-cat-tile{width:72px;height:72px;border-radius:22px}.ls-slide .ls-concept.big .cc-cat-tile:after{inset:14px}.ls-title-grid{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 560px;gap:80px;align-items:center}.ls-title-text{display:flex;flex-direction:column;align-items:flex-start;gap:36px}.ls-title-text .ls-chain{justify-content:flex-start}.ls-sub{font-size:52px;color:var(--muted);font-weight:700}.ls-title-led{width:560px;height:560px;filter:drop-shadow(0 24px 0 rgba(43,42,36,.12))}.ls-goal,.ls-task,.ls-end,.ls-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:34px;font-size:54px}.ls-goal li,.ls-task li,.ls-end li,.ls-steps li{display:flex;align-items:flex-start;gap:32px}.ls-steps{font-size:44px;gap:26px}.ls-steps .ls-coin{width:60px;height:60px;border-radius:18px;font-size:34px}.ls-box{flex:none;width:60px;height:60px;margin-top:6px;border-radius:16px;border:5px solid var(--cat, var(--accent));background:#fff}.ls-check{flex:none;width:72px;height:72px;border-radius:22px;display:grid;place-items:center;background:var(--second);color:var(--second-text);font-weight:900;font-size:48px}.ls-task-head{display:flex;align-items:center;flex-wrap:wrap;gap:32px}.ls-ask{flex:1;display:grid;grid-template-columns:440px minmax(0,1fr);gap:90px;align-items:center}.ls-ask>div{display:flex;flex-direction:column;gap:36px}.ls-ask-led{width:440px;height:440px}.ls-question{font-size:80px}.ls-concept-grid{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,860px);gap:70px;align-items:center}.ls-concept-grid.solo{grid-template-columns:minmax(0,1fr)}.ls-side{display:flex;justify-content:center;align-items:center}.ls-concept-led{width:520px;height:520px}.ls-build{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:60px}.ls-code-grid{flex:1;display:grid;grid-template-columns:minmax(0,1000px) minmax(0,1fr);gap:70px;align-items:center}.ls-code-grid.solo{grid-template-columns:minmax(0,1fr)}.ls-code-fig{display:flex;justify-content:center}.ls-fig{max-width:100%}.ls-fig svg{display:block;width:100%;height:auto;overflow:visible}.ls-fig-loading{min-width:420px;min-height:140px;display:flex;align-items:center;justify-content:center;border-radius:24px;border:5px dashed var(--line-strong);color:var(--muted);font-weight:800;font-size:36px}.ls-fig-fail{color:var(--danger);font-weight:800}.ls-shapes{list-style:none;margin:0;padding:0;flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:40px 24px;align-content:center}.ls-shapes li{display:flex;flex-direction:column;align-items:center;gap:16px;font-size:34px;font-weight:800}.ls-shapes .ls-led{width:200px;height:200px}.ls-question.small{font-size:60px}.ls-quiz{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.ls-quiz-grid{flex:1;display:grid;grid-template-columns:minmax(0,760px) minmax(0,1fr);gap:60px;align-items:center}.ls-quiz-grid .ls-quiz{grid-template-columns:minmax(0,1fr);gap:20px}.ls-quiz-grid .ls-option{min-height:110px;font-size:38px;padding:16px 24px}.ls-option{width:100%;min-height:150px;display:flex;align-items:center;gap:28px;padding:24px 32px;border:5px solid var(--line-strong);border-radius:32px;background:var(--panel);color:var(--ink);font:inherit;font-size:46px;font-weight:800;text-align:left;cursor:pointer}.ls-option:hover{border-color:var(--cat, var(--accent))}.ls-quiz.revealed .ls-option{opacity:.45}.ls-quiz.revealed .ls-option.correct{opacity:1;border-color:var(--second-deep);background:var(--second-tint);box-shadow:0 8px 0 var(--second-deep)}.ls-explain{font-size:44px;font-weight:700;color:var(--second-text)}.ls-end-grid{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:80px;align-items:center}.ls-end-grid>div{display:flex;flex-direction:column;gap:48px}.ls-end-title{font-size:96px}.ls-end-led{width:420px;height:420px}.ls-close{position:fixed;top:12px;right:12px;z-index:5;min-width:46px;justify-content:center;text-decoration:none;transition:opacity .2s ease}.ls-chrome{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:10px 12px;transition:opacity .2s ease}.ls-show.idle .ls-chrome,.ls-show.idle .ls-close{opacity:0;pointer-events:none}.ls-chrome .btn{min-height:42px;padding:0 14px;box-shadow:var(--shadow-sm)}.ls-counter{padding:0 10px;font-weight:800;font-variant-numeric:tabular-nums}.ls-keys{margin-left:8px;font-size:.85rem;font-weight:700;color:var(--muted)}.ls-timer-ctl{display:inline-flex;align-items:center;gap:6px;margin-left:6px;padding-left:10px;border-left:2px solid var(--line-strong)}.ls-timer-val{min-width:64px;text-align:center;font-weight:800;font-variant-numeric:tabular-nums}.ls-stage-timer{position:absolute;top:44px;right:120px;z-index:2;padding:8px 32px;border-radius:999px;background:var(--panel);border:5px solid var(--cat, var(--accent));color:var(--ink);font-family:var(--font-display);font-size:56px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2}.ls-stage-timer.done{background:var(--second-tint);border-color:var(--second-deep);color:var(--second-text)}.ls-notes{position:fixed;left:0;right:0;bottom:64px;z-index:4;max-height:40vh;overflow-y:auto;padding:16px 24px;background:var(--panel);border-top:3px solid var(--accent);box-shadow:var(--shadow);font-size:1.1rem;line-height:1.5}.ls-notes p{margin:0 0 8px}@media(max-width:1000px){.ls-page .ls-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ls-hero-card{grid-template-columns:120px minmax(0,1fr)}.ls-hero-led{width:120px;height:120px;padding:10px}.ls-hero-actions{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center}.ls-hero-actions .ls-start{flex:1 1 100%}.ls-start-hint{display:none}.ls-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.ls-two{grid-template-columns:minmax(0,1fr)}.ls-band-title{display:none}}@media(max-width:600px){.ls-page{padding:20px 16px 56px}.ls-page h1{font-size:1.7rem}.ls-page .ls-grid{grid-template-columns:minmax(0,1fr)}.ls-hero-card{grid-template-columns:minmax(0,1fr);padding:16px}.ls-hero-led{width:96px;height:96px;padding:8px}.ls-hero-actions .btn{width:100%}.ls-facts{grid-template-columns:minmax(0,1fr);padding:14px 16px}.ls-section{padding:14px 16px}.ls-vocab>div{grid-template-columns:1fr;gap:2px}.ls-keys{display:none}}@media print{.ls-site .ls-band,.no-print,.hb-open{display:none!important}.ls-site,.ls-main{display:block;background:#fff}.ls-page{padding:0;gap:10px}.ls-hero-card{grid-template-columns:96px minmax(0,1fr)}.ls-hero-led{width:96px;height:96px;padding:8px}.ls-section,.ls-flow>li,.ls-facts{break-inside:avoid;box-shadow:none}.ls-hero-card{break-after:avoid}}@media(prefers-reduced-motion:reduce){.ls-card,.ls-chrome,.ls-close{transition:none}}@font-face{font-family:Nunito;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/nunito-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/nunito-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/nunito-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/nunito-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/nunito-800-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/nunito-800-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/nunito-900-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/nunito-900-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Rubik;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/rubik-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/rubik-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Rubik;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/rubik-800-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/rubik-800-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}:root{--accent: #e0a020;--accent-hover: #edb133;--accent-deep: #b67d10;--accent-text: #8a5a06;--accent-tint: #fcf1d3;--accent-ink: #2b2a24;--second: #8db23a;--second-deep: #6e9126;--second-text: #3f6b12;--second-tint: #eef5dc;--go: #4a7f18;--go-hover: #558f1d;--go-deep: #365e10;--bg: #f7f5ee;--panel: #ffffff;--sidebar: #f8f1dc;--input-bg: #fff4d1;--input-line: #ecc766;--ink: #2b2a24;--muted: #6b675c;--line: #e5e1d6;--line-strong: #cfc9ba;--ok: #4f9a2a;--ok-ink: #3f6b12;--ok-tint: #eef5dc;--danger: #d8452b;--danger-tint: #fbe2dc;--warn: #9c5a08;--warn-tint: #fbe6cc;--info: #2a4a6b;--info-tint: #dfe9f8;--radius: 16px;--radius-sm: 12px;--radius-btn: 12px;--pill: 999px;--shadow: 0 8px 28px rgba(43, 42, 36, .14);--shadow-sm: 0 2px 6px rgba(43, 42, 36, .08);--focus: 0 0 0 4px rgba(224, 160, 32, .45);--font: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Rubik", "Nunito", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace}body{font-family:var(--font);font-size:16px;line-height:1.4;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-variant-ligatures:no-common-ligatures}.app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%}button,input{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus)}.btn{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:0 18px;border:2px solid var(--line-strong);border-radius:var(--radius-btn);background:var(--panel);font-size:1.02rem;font-weight:800;line-height:1;white-space:nowrap;cursor:pointer;transition:transform .08s ease,background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint)}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 3px 0 var(--accent-deep)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.primary:active:not(:disabled){box-shadow:0 1px 0 var(--accent-deep);transform:translateY(2px) scale(.98)}.btn.primary:disabled{box-shadow:none}.btn.small{min-height:38px;padding:0 14px;font-size:.95rem}.btn.danger{color:var(--danger)}.btn.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-tint)}.toolbar .btn.ghost{border-color:#fff;background:#fff;color:var(--ink)}.toolbar .btn.ghost:hover:not(:disabled){border-color:var(--accent-deep);background:#fff}.toolbar .btn.ghost.danger{color:var(--danger)}.toolbar .btn.light{border-color:var(--second-deep);background:#fff;color:var(--second-text)}.toolbar .btn.light:hover:not(:disabled){background:var(--second-tint)}.toolbar .btn.primary{background:var(--go);border-color:var(--go);color:#fff;box-shadow:0 3px 0 var(--go-deep)}.toolbar .btn.primary:hover:not(:disabled){background:var(--go-hover);border-color:var(--go-hover)}.toolbar .btn.primary:active:not(:disabled){box-shadow:0 1px 0 var(--go-deep)}.toolbar .btn.primary:disabled{background:#ffffff8c;border-color:transparent;color:var(--muted);opacity:1;box-shadow:none}.toolbar .btn.send{padding-right:22px;font-size:1.08rem}.toolbar :focus-visible{box-shadow:0 0 0 4px #2b2a2459}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:70px;padding:10px 16px;background:var(--accent);color:var(--ink);border-bottom:3px solid var(--accent-deep);position:relative;z-index:80}.brand{display:flex;align-items:center;margin-right:6px;-webkit-user-select:none;user-select:none}.brand-logo{display:block;height:34px;width:auto;filter:drop-shadow(1.5px 0 0 #fff) drop-shadow(-1.5px 0 0 #fff) drop-shadow(0 1.5px 0 #fff) drop-shadow(0 -1.5px 0 #fff) drop-shadow(1px 1px 0 #fff) drop-shadow(-1px -1px 0 #fff) drop-shadow(1px -1px 0 #fff) drop-shadow(-1px 1px 0 #fff)}.name-wrap{display:flex;align-items:center;gap:8px;flex:1 1 200px;max-width:360px;min-width:0}.name-input{min-height:46px;min-width:0;flex:1 1 140px;padding:0 16px;font-size:1.12rem;font-weight:800;color:var(--ink);border:2px solid var(--input-line);border-radius:var(--radius-btn);background:var(--input-bg);transition:background-color .12s ease,border-color .12s ease}.name-input::placeholder{color:var(--muted)}.name-input:hover{border-color:var(--accent-deep)}.name-input:focus{background:#fff8e6;border-color:var(--accent-deep);outline:none;box-shadow:none}.save-state{display:inline-flex;align-items:center;gap:4px;min-width:112px;color:var(--ink);font-size:.92rem;font-weight:700;opacity:0;transition:opacity .3s ease}.save-state.on{opacity:1}.save-state svg{width:16px;height:16px}.toolbar-spacer{flex:1}.connected-badge{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:var(--radius-btn);background:var(--ok-tint);color:var(--ok-ink);font-weight:800}.live-dot{width:10px;height:10px;border-radius:50%;background:var(--second);box-shadow:0 0 0 3px #8db23a4d}.workarea{display:flex;min-height:0;min-width:0}.blockly-host{flex:1 1 auto;min-width:0;height:100%;position:relative}.preview-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-family:var(--font-display);font-size:1.15rem;font-weight:700;color:var(--ink);border-bottom:2px solid var(--line)}.blockly-host .blocklyToolbox{padding:8px 0;background:var(--sidebar);border-right:2px solid var(--line)}.blockly-host .blocklyToolboxCategoryContainer{margin:0}.blockly-host .blocklyToolboxCategory{height:auto;line-height:1.1;margin:0 6px 2px;padding:7px 2px 6px;border:0!important;border-radius:14px;cursor:pointer;transition:background-color .12s ease}.blockly-host .blocklyToolboxCategory:not(.blocklyToolboxSelected):hover{background:#fff9}.blockly-host .blocklyToolboxCategory.blocklyToolboxSelected{background:var(--panel)}.blockly-host .blocklyTreeRowContentContainer{display:flex;flex-direction:column;align-items:center;gap:5px;width:76px}.blockly-host .blocklyToolboxCategoryLabel{padding:0 2px;font:700 12.5px/1.1 var(--font);color:var(--ink);text-align:center;white-space:normal;cursor:pointer}.blockly-host .blocklyToolboxSelected .blocklyToolboxCategoryLabel{color:var(--accent-text);font-weight:800}.cc-cat-tile{position:relative;display:block;width:34px;height:34px;border-radius:10px;background:var(--cat, #999);box-shadow:inset 0 1px #ffffff47,inset 0 -3px #0000002e;transition:transform .12s ease,box-shadow .12s ease}.blockly-host .blocklyToolboxCategory:hover .cc-cat-tile{transform:translateY(-1px) scale(1.06)}.blockly-host .blocklyToolboxSelected .cc-cat-tile{transform:scale(1.08)}.blockly-host .blocklyToolboxCategoryContainer,.blockly-host .blocklyToolboxCategoryContainer.blocklyActiveFocus,.blockly-host .blocklyToolboxCategoryContainer.blocklyPassiveFocus,.blockly-host .blocklyToolbox.blocklyActiveFocus,.blockly-host .blocklyToolbox.blocklyPassiveFocus,.blockly-host .blocklyToolboxCategoryGroup:focus{outline:none;box-shadow:none;border:0!important}.blockly-host .blocklyToolboxCategoryContainer:focus-visible>.blocklyToolboxCategory{box-shadow:inset 0 0 0 3px var(--accent-deep)}.cc-cat-tile:after{content:"";position:absolute;inset:6px;background:#fff;-webkit-mask:var(--glyph) center / contain no-repeat;mask:var(--glyph) center / contain no-repeat}.cc-glyph-events{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M13 2 4 14h7l-1 8 9-12h-7z' fill='black'/></svg>")}.cc-glyph-cube{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linejoin='round' stroke-linecap='round'><path d='M12 3l8 4.5v9L12 21l-8-4.5v-9z'/><path d='M12 12l8-4.5M12 12 4 7.5M12 12v9'/></svg>")}.cc-glyph-screen{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><rect x='3' y='3' width='5' height='5' rx='1'/><rect x='9.5' y='3' width='5' height='5' rx='1'/><rect x='16' y='3' width='5' height='5' rx='1'/><rect x='3' y='9.5' width='5' height='5' rx='1'/><rect x='9.5' y='9.5' width='5' height='5' rx='1'/><rect x='16' y='9.5' width='5' height='5' rx='1'/><rect x='3' y='16' width='5' height='5' rx='1'/><rect x='9.5' y='16' width='5' height='5' rx='1'/><rect x='16' y='16' width='5' height='5' rx='1'/></svg>")}.cc-glyph-sound{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M3 9v6h4l5 4V5L7 9z' fill='black'/><path d='M16 8.5a5 5 0 0 1 0 7' fill='none'/><path d='M18.8 5.5a9 9 0 0 1 0 13' fill='none'/></svg>")}.cc-glyph-motion{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12h18M15 6l6 6-6 6M9 6l-6 6 6 6'/></svg>")}.cc-glyph-distance{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M4 4v16M20 4v16M8 12h8M13 9l3 3-3 3M11 9l-3 3 3 3'/></svg>")}.cc-glyph-lists{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke='black' stroke-width='2.6' stroke-linecap='round'><path d='M10 6h10M10 12h10M10 18h10'/><circle cx='4.5' cy='6' r='1.6' fill='black' stroke='none'/><circle cx='4.5' cy='12' r='1.6' fill='black' stroke='none'/><circle cx='4.5' cy='18' r='1.6' fill='black' stroke='none'/></svg>")}.cc-glyph-logic{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linejoin='round'><path d='M12 3l9 9-9 9-9-9z'/><path d='M8.5 12h7' stroke-linecap='round'/></svg>")}.cc-glyph-loops{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M20 12a8 8 0 1 1-2.3-5.7'/><path d='M21 3v6h-6'/></svg>")}.cc-glyph-math{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'><path d='M7 3.5v7M3.5 7h7M13.5 7h7M4 14.5l6 6M10 14.5l-6 6M13.5 17.5h7'/><circle cx='17' cy='14' r='1.4' fill='black' stroke='none'/><circle cx='17' cy='21' r='1.4' fill='black' stroke='none'/></svg>")}.cc-glyph-text{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M4 20 11 4l7 16M6.5 14h9'/><path d='M19 4h2M19 8h2' stroke-width='2.2'/></svg>")}.cc-glyph-variables{--glyph: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><rect x='3.5' y='3.5' width='17' height='17' rx='3'/><path d='M9 9l6 6M15 9l-6 6'/></svg>")}.blockly-host .blocklyMainBackground{stroke:none}.blockly-host .blocklyScrollbarHandle{rx:5;ry:5}.blockly-host .blocklyZoom>image,.blockly-host .blocklyTrash>image{opacity:.55}.blockly-host .blocklyZoom>image:hover,.blockly-host .blocklyTrash>image:hover{opacity:.9}.ccDotMatrixEditor .bitmapPixelGrid{margin:14px 14px 10px;padding:8px;gap:2px;border-radius:10px;background:#b92b26;box-shadow:inset 0 0 0 1.5px #a02420}.ccDotMatrixEditor .pixelButton{width:30px;height:30px;border:0;border-radius:50%;padding:0}.ccDotMatrixEditor .pixelButton:focus-visible{outline:2px solid #ffd27a;outline-offset:-3px}.ccDotMatrixEditor .controlButton{margin:4px 0;min-width:120px;padding:7px 16px;border:0;border-radius:999px;background:#fff;color:#8f1f1b;font:800 14px Nunito,system-ui,sans-serif;cursor:pointer}.ccDotMatrixEditor .controlButton:hover{background:#ffe9e4}.statusbar{background:var(--panel);border-top:2px solid var(--line)}.status-line{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 16px;font-size:1.02rem}.status-dot{flex:0 0 auto;width:12px;height:12px;border-radius:50%;background:var(--line-strong);transition:background-color .2s ease}.status-dot.ready{background:var(--ok);box-shadow:0 0 0 3px var(--ok-tint)}.status-dot.transferring,.status-dot.connecting,.status-dot.selecting,.status-dot.reconnecting{background:var(--accent);box-shadow:0 0 0 3px var(--accent-tint);animation:pulse 1s ease-in-out infinite}.status-dot.disconnected{background:var(--danger)}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.35)}}.status-text{font-weight:800}.progress{flex:1;max-width:360px;height:14px;border-radius:7px;background:var(--line);overflow:hidden}.progress-fill{height:100%;border-radius:7px;background:linear-gradient(90deg,var(--second),var(--accent));transition:width .15s ease}.wake-hint{color:var(--muted);font-size:.95rem}.strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;font-weight:700}.strip.error{background:var(--danger-tint);color:var(--danger)}.strip.warn{background:var(--warn-tint);color:var(--warn)}.strip.chrome{background:var(--info-tint);color:var(--info)}.strip-dismiss{min-height:36px;padding:0 12px;border:none;border-radius:var(--pill);background:transparent;font-weight:800;color:inherit;cursor:pointer;text-decoration:underline}.toast{position:fixed;left:50%;bottom:96px;display:flex;align-items:center;gap:10px;padding:14px 26px;border-radius:var(--radius-btn);background:var(--ok);color:#fff;font-size:1.1rem;font-weight:800;box-shadow:var(--shadow);z-index:1030;transform:translate(-50%);animation:toast-in .25s cubic-bezier(.2,.9,.3,1.3)}@keyframes toast-in{0%{transform:translate(-50%,24px);opacity:0}to{transform:translate(-50%);opacity:1}}.modal-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#2b262073;z-index:1010}.modal{display:flex;flex-direction:column;gap:14px;max-width:460px;margin:16px;padding:24px;border-radius:20px;border-top:6px solid var(--accent);background:var(--panel);box-shadow:var(--shadow);animation:modal-in .2s ease-out}@keyframes modal-in{0%{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal h2{margin:0;font-family:var(--font-display);font-size:1.4rem;font-weight:800;color:var(--ink)}.modal p{margin:0;line-height:1.5}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.injectionDiv .blocklyFlyoutButton .blocklyFlyoutButtonBackground{fill:var(--panel);stroke:#e6418f;stroke-width:2px}.injectionDiv .blocklyFlyoutButton .blocklyFlyoutButtonShadow{fill:#c22f74}.injectionDiv .blocklyFlyoutButton .blocklyText{fill:var(--ink);font-weight:800}.injectionDiv .blocklyFlyoutButton:hover .blocklyFlyoutButtonBackground{fill:var(--accent-tint)}.voice-modal{width:min(460px,calc(100vw - 32px))}.voice-stage{display:flex;align-items:center;gap:18px;min-height:92px}.voice-rec{flex:none;display:grid;place-items:center;width:84px;height:84px;border:4px solid var(--line-strong);border-radius:50%;background:var(--panel);cursor:pointer;transition:transform .08s ease,border-color .12s ease}.voice-rec:hover:not(:disabled){border-color:var(--danger)}.voice-rec:active:not(:disabled){transform:scale(.94)}.voice-rec:disabled{opacity:.45;cursor:default}.voice-rec-dot{width:44px;height:44px;border-radius:50%;background:var(--danger)}.voice-rec.on{border-color:var(--danger);animation:voice-pulse 1s ease-in-out infinite}.voice-rec-square{width:30px;height:30px;border-radius:6px;background:var(--danger)}@keyframes voice-pulse{50%{box-shadow:0 0 0 8px var(--danger-tint)}}.voice-status{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}.voice-meter,.voice-progress{height:10px;border-radius:5px;background:var(--line);overflow:hidden}.voice-progress{height:4px}.voice-meter span,.voice-progress span{display:block;height:100%;border-radius:inherit}.voice-meter span{background:var(--ok);transition:width .06s linear}.voice-progress span{background:var(--muted)}.voice-take{display:flex;flex-wrap:wrap;gap:10px}.voice-len{font-weight:600;color:var(--muted)}.voice-err{padding:10px 12px;border-radius:12px;background:var(--danger-tint);color:var(--ink)}.voice-name{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.voice-name span{font-weight:800}.voice-name input{flex:1 1 140px;min-height:46px;padding:0 12px;border:2px solid var(--line-strong);border-radius:12px;background:var(--input-bg);font:inherit;color:var(--ink)}.voice-list h3{margin:0 0 8px;font-family:var(--font-display);font-size:1.05rem;color:var(--ink)}.voice-list ul{display:flex;flex-direction:column;gap:6px;max-height:220px;margin:0;padding:0;overflow-y:auto;list-style:none}.voice-list li{display:flex;align-items:center;gap:10px}.voice-item-name{flex:1;min-width:0;overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.voice-empty{color:var(--muted)}@media(max-width:1440px){.save-state .lbl{display:none}.save-state{min-width:0}}@media(max-width:860px){.toolbar{gap:8px}.save-state{display:none}}.cube-panel{width:300px;flex:0 0 auto;display:flex;flex-direction:column;min-height:0;overflow-y:auto;border-left:2px solid var(--line);background:var(--panel)}.panel-body{flex:1 0 auto;display:flex;flex-direction:column;gap:16px;padding:16px}.cube-card{display:flex;flex-direction:column;gap:10px;padding:14px 16px 16px;border-radius:var(--radius);background:var(--bg)}.cube-card .connected-badge{min-height:0;padding:0;background:none;font-size:.92rem}.channel-icon{margin-left:auto;display:inline-flex;opacity:.45}.channel-icon svg{width:16px;height:16px}.cube-name{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.45rem;line-height:1.15;overflow-wrap:anywhere}.cube-name-form{display:flex;flex-direction:column;gap:8px}.panel-hero{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 8px 8px;text-align:center}.panel-hero .cube-glyph{opacity:.6}.panel-actions .btn.panel-usb{border-color:var(--line);color:var(--muted);font-weight:700}.panel-actions{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding-top:14px;border-top:2px solid var(--line)}.panel-actions .btn{width:100%;justify-content:flex-start}.panel-actions .btn.primary{justify-content:center}.tower-wrap{display:flex;justify-content:center;min-height:40px;padding:4px 0}.cube-tower{display:block;width:152px;height:auto;overflow:visible}.panel-hint{display:flex;align-items:center;justify-content:center;min-height:80px;text-align:center}.tower-hit{fill:transparent;cursor:pointer;outline:none}.tower-ring{fill:none;stroke:var(--ink);stroke-width:3;stroke-linejoin:round;opacity:.45;pointer-events:none}.tower-ring.sel{stroke:var(--ink);stroke-width:5.5;opacity:1}.tower-kiss{stroke:var(--muted);stroke-width:3;stroke-dasharray:5 6;stroke-linecap:round}.cable-line{fill:none;stroke:#4a443c;stroke-width:5;stroke-linecap:round}.cable-plug{fill:#9a9186;stroke:#4a443c;stroke-width:2}.tower-info{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:2px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);text-align:left;pointer-events:none}.chain-meta{display:flex;flex-direction:column;min-width:0}.chain-here{align-self:flex-start;margin-top:3px;padding:2px 8px;border-radius:var(--pill);background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:800}.peer-name{font-weight:800}.peer-sub{color:var(--muted);font-size:.85rem}.panel-empty{margin:0;color:var(--muted);font-size:.95rem;line-height:1.45}.chooser-list{display:flex;flex-direction:column;gap:8px;margin:12px 0 4px}.chooser-item{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;font-size:1.05rem;padding:10px 16px;border-radius:var(--radius)}.chooser-prog{font-size:.8rem;opacity:.8;font-weight:400}@media(prefers-reduced-motion:reduce){.status-dot,.toast,.modal{animation:none}.btn,.cc-cat-tile{transition:none}}.ccPicker{position:absolute;inset:0;z-index:100;display:flex;align-items:stretch;justify-content:center;padding:16px;background:#2b2a2461;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ccPickerIn .16s ease-out}@keyframes ccPickerIn{0%{opacity:0}to{opacity:1}}.ccPickerPanel{--cc-pick: #b92b26;--cc-pick-deep: #8f1f1b;--cc-pick-tint: #fdeae7;display:flex;flex-direction:column;width:min(100%,860px);max-height:100%;border-radius:18px;background:var(--panel);box-shadow:0 18px 48px #00000047;overflow:hidden}.ccPicker-blue .ccPickerPanel{--cc-pick: #2f7fd6;--cc-pick-deep: #1f5ea3;--cc-pick-tint: #e4effc}.ccPickerHead{display:flex;align-items:center;gap:12px;padding:12px 16px 12px 20px;background:var(--cc-pick);color:#fff}.ccPickerHead h2{flex:1 1 auto;margin:0;font:800 1.15rem/1.2 var(--font-display)}.ccPickerClose{flex:0 0 auto;width:40px;height:40px;border:0;border-radius:50%;background:#ffffff2e;color:#fff;font:700 26px/1 var(--font-display);cursor:pointer}.ccPickerClose:hover{background:#ffffff4d}.ccPickerSearch{padding:10px 16px;background:var(--cc-pick-tint);border-bottom:2px solid var(--line)}.ccPickerSearch input{box-sizing:border-box;width:100%;height:44px;padding:0 16px 0 42px;border:2px solid var(--line-strong);border-radius:999px;background:var(--panel) no-repeat 14px center / 20px 20px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b675c' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E");color:var(--ink);font:700 1rem var(--font);-webkit-appearance:none;appearance:none}.ccPickerSearch input:focus{outline:none;border-color:var(--cc-pick);box-shadow:0 0 0 3px var(--cc-pick-tint)}.ccPickerEmpty{margin:32px 0;text-align:center;color:var(--muted);font-weight:700}.ccPickerGroup[hidden],.ccPickerTile[hidden]{display:none}.ccPickerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px 20px 16px;-webkit-overflow-scrolling:touch}.ccPickerGroup h3{margin:16px 0 8px;font:800 .95rem var(--font-display);color:var(--muted);letter-spacing:.02em}.ccPickerGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px}.ccPickerTile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 8px;border:3px solid transparent;border-radius:14px;background:var(--bg);color:var(--ink);font:700 .9rem/1.15 var(--font);text-align:center;cursor:pointer;transition:transform .08s ease,border-color .08s ease,background .08s ease}.ccPickerTile:hover{background:var(--cc-pick-tint);transform:translateY(-1px)}.ccPickerTile:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.ccPickerTile.is-current{border-color:var(--cc-pick);background:var(--cc-pick-tint)}.ccPickerArt{display:flex;align-items:center;justify-content:center}.ccPickerArt svg{display:block;width:72px;height:72px;border-radius:8px}.ccPickerLabel{overflow-wrap:anywhere}.ccPickerPlay{display:block;width:56px;height:56px;border-radius:50%;background:var(--cc-pick);position:relative;box-shadow:0 3px 0 var(--cc-pick-deep)}.ccPickerPlay:after{content:"";position:absolute;left:22px;top:17px;border-style:solid;border-width:11px 0 11px 18px;border-color:transparent transparent transparent #fff}.ccPickerPlay:hover{filter:brightness(1.12);transform:scale(1.06)}.ccPickerPlay:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.ccPickerTile.is-playing .ccPickerPlay{animation:ccPlayPulse .6s ease-in-out infinite alternate}@keyframes ccPlayPulse{0%{transform:scale(1)}to{transform:scale(1.12);box-shadow:0 3px 0 var(--cc-pick-deep),0 0 0 8px var(--cc-pick-tint)}}.ccPickerTile.is-failed .ccPickerPlay{background:var(--muted);box-shadow:none;opacity:.6}.ccPickerFoot{display:flex;justify-content:flex-end;padding:10px 16px;border-top:2px solid var(--line)}.ccPickerDone{padding:9px 26px;border:0;border-radius:999px;background:var(--cc-pick);color:#fff;font:800 1rem var(--font-display);cursor:pointer}.ccPickerDone:hover{background:var(--cc-pick-deep)}.ccShapeField>rect.blocklyFieldRect{fill:none}@media(max-width:600px),(max-height:500px){.ccPicker{padding:0;-webkit-backdrop-filter:none;backdrop-filter:none}.ccPickerPanel{width:100%;max-height:none;border-radius:0;box-shadow:none}.ccPickerHead{padding:8px 10px 8px 14px}.ccPickerHead h2{font-size:1rem}.ccPickerClose{width:36px;height:36px;font-size:22px}.ccPickerSearch{padding:8px 10px}.ccPickerSearch input{height:40px}.ccPickerBody{padding:0 10px 12px}.ccPickerGroup h3{margin:12px 0 6px;font-size:.85rem}.ccPickerGrid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px}.ccPickerTile{padding:6px 4px;border-width:2px;border-radius:10px;font-size:.78rem;gap:4px}.ccPickerArt svg{width:54px;height:54px}.ccPickerPlay{width:44px;height:44px}.ccPickerPlay:after{left:17px;top:13px;border-width:9px 0 9px 15px}}@media(max-height:500px){.ccPickerHead{padding:6px 8px 6px 12px}.ccPickerHead h2{font-size:.92rem}.ccPickerSearch{padding:6px 8px}.ccPickerSearch input{height:36px}}.gesture-modal{width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}.gesture-rec{background:var(--second)}.gesture-rec:hover:not(:disabled){background:var(--second-deep)}.gesture-trace{flex:none;border-radius:8px;background:var(--bg)}.gesture-trace path{fill:none;stroke-width:1.5}.gesture-trace .ax-x{stroke:#d8452b}.gesture-trace .ax-y{stroke:#4a7f18}.gesture-trace .ax-z{stroke:#2a4a6b}.gesture-shots h3{margin:0 0 8px;font-family:var(--font-display);font-size:1.05rem;color:var(--ink)}.gesture-shots ul{display:flex;flex-direction:column;gap:6px;max-height:240px;margin:0;padding:0;overflow-y:auto;list-style:none}.gesture-shots li{display:flex;align-items:center;gap:10px;padding:4px 6px;border-radius:10px}.gesture-shots li.bad{background:var(--danger-tint)}.gesture-shots li.outlier{background:var(--warn-tint)}.gesture-shot-label{flex:1;display:flex;flex-direction:column;min-width:0;font-weight:700}.gesture-shot-label small{font-weight:600;color:var(--muted)}.sim-panel{width:420px;overflow:hidden}.sim-panel .panel-body{flex:1 1 auto;min-height:0;overflow-y:auto;gap:12px}.sim-chip{min-height:32px;padding:0 12px;border:2px solid var(--line-strong);border-radius:var(--pill);background:var(--panel);font:inherit;font-size:.9rem;font-weight:800;cursor:pointer}.sim-chip:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint)}.sim-chip.danger{color:var(--danger)}.sim-chip.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-tint)}.sim-chip:disabled{opacity:.45;cursor:default}.sim-stage{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:260px;padding:8px 0}.sim-tower{display:block;width:250px;height:auto;overflow:visible}.sim-knob-hit{fill:transparent;cursor:grab;touch-action:none}.sim-knob-hit:active{cursor:grabbing}.tower-hit.sim-gesture{cursor:grab;touch-action:none}.tower-hit.sim-gesture:active{cursor:grabbing}.sim-gesture-label{font-family:var(--font);font-size:9px;font-weight:800;fill:var(--ink);pointer-events:none}.sim-add{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:44px;height:44px;border:2px dashed var(--line-strong);border-radius:50%;background:var(--panel);color:var(--muted);font:inherit;font-weight:800;cursor:pointer}.sim-add:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text);background:var(--accent-tint)}.sim-add:disabled{opacity:.45;cursor:default}.sim-add.big{width:auto;height:64px;padding:0 24px;border-radius:var(--pill);font-size:1.05rem}.sim-options{display:flex;flex-direction:column;gap:10px;margin-top:auto;padding:12px 14px;border-radius:var(--radius);background:var(--bg)}.sim-options-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-weight:800}.sim-options-head .sim-chip{margin-left:auto}.sim-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sim-pick{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:2px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);font:inherit;font-size:.88rem;font-weight:800;cursor:pointer}.sim-pick:hover{border-color:var(--accent);background:var(--accent-tint)}.sim-status{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:.9rem}.sim-led{color:var(--accent);text-shadow:0 0 8px var(--accent)}.sim-motor{color:var(--second-text)}.sim-tags{display:inline-flex;gap:6px}.sim-tag{padding:1px 8px;border-radius:var(--pill);background:var(--ok-tint);color:var(--ok-ink);font-size:.78rem;font-weight:800}.sim-tag.kiss{background:var(--info-tint);color:var(--info)}.sim-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.sim-attach{min-height:36px;padding:0 10px;border:2px solid var(--line-strong);border-radius:var(--radius-btn);background:var(--panel);font:inherit;font-weight:800;color:var(--ink)}.sim-slider{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:700;color:var(--muted)}.sim-slider input{flex:1 1 auto;min-width:0;accent-color:var(--accent)}.sim-console{position:relative;flex:0 0 auto;display:flex;flex-direction:column;min-height:56px;border-top:2px solid var(--line);background:var(--panel);overflow:hidden}.sim-console-grip{position:absolute;top:-4px;left:0;right:0;height:10px;cursor:row-resize;touch-action:none}.sim-console-grip:after{content:"";position:absolute;top:5px;left:50%;width:48px;height:4px;margin-left:-24px;border-radius:2px;background:var(--line-strong)}.sim-console-head{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:2px solid var(--line);font-weight:800}.sim-log{flex:1 1 auto;min-height:0;overflow-y:auto;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;line-height:1.4}.sim-line{display:flex;gap:8px;white-space:pre-wrap;overflow-wrap:anywhere}.sim-line .sim-t{flex:0 0 auto;color:var(--muted);font-variant-numeric:tabular-nums}.sim-line.error .sim-txt{color:var(--danger)}.sim-line.app .sim-txt{color:var(--info)}.sim-line.play .sim-txt{color:var(--second-text)}.sim-line.info .sim-txt{color:var(--muted);font-style:italic}.sim-hint{min-height:0;color:var(--muted);font-size:.88rem}.toolbar .btn.ghost.sim-toggle.on{background:var(--accent-tint)}.page{min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.page-band .brand{text-decoration:none}.page-body{width:100%;max-width:880px;margin:0 auto;padding:28px 16px 64px;display:flex;flex-direction:column;gap:18px}.page-body.wide{max-width:1120px}.page-title{margin:0;font-family:var(--font-display);font-size:1.9rem;font-weight:800;line-height:1.15}.page-lead{margin:0;font-size:1.1rem;color:var(--muted);line-height:1.5}.muted{color:var(--muted)}.card{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm)}.card h2{margin:0 0 8px;font-family:var(--font-display);font-size:1.3rem;font-weight:800}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.row.center{justify-content:center}.row.spread{justify-content:space-between}.row.inline{display:inline-flex}.btn.big{min-height:56px;font-size:1.15rem;justify-content:center}a.btn{text-decoration:none;color:inherit}.splash{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);font-weight:700}.splash-logo{height:42px;opacity:.85}.account-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toolbar .account-bar .btn{border-color:#fff;background:#fff;color:var(--ink)}.account-chip{display:inline-flex;align-items:center;gap:6px;min-height:46px;padding:0 14px;border-radius:var(--radius-btn);background:#ffffff8c;font-weight:800}.account-avatar{font-size:1.5rem;line-height:1}.account-badge{font-size:.8rem;font-weight:700;color:var(--accent-text)}.form{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.85rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.field-input{min-height:48px;width:100%;min-width:0;padding:10px 14px;border:2px solid var(--input-line);border-radius:var(--radius-sm);background:var(--input-bg);font-size:1.05rem}.field-input:focus{outline:none;border-color:var(--accent-deep);box-shadow:var(--focus)}.field-input.narrow{max-width:200px}select.field-input{appearance:auto}.field-hint{font-size:.85rem;color:var(--muted)}.check{display:flex;align-items:flex-start;gap:10px;font-size:.95rem;cursor:pointer}.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent-deep);flex:none}.form-error{margin:0;padding:10px 14px;border-radius:var(--radius-sm);background:var(--danger-tint);color:var(--danger);font-weight:700}.form-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:16px 0 0;font-size:.95rem}.form-links a,.back-link,.login-url{color:var(--accent-text);font-weight:800}.auth-card{max-width:460px;width:100%;margin:0 auto;border-top:6px solid var(--accent);display:flex;flex-direction:column;gap:16px}.note{margin:8px 0 0;padding:8px 12px;border-radius:var(--radius-sm);font-weight:700}.note.warn{background:var(--warn-tint);color:var(--warn)}.landing-card{width:100%;max-width:520px;margin:6vh auto 0;display:flex;flex-direction:column;gap:16px;padding:28px;border-top:6px solid var(--accent);text-align:center}.landing-card .row{justify-content:center}.field-input.big{min-height:56px;font-size:1.3rem;text-align:center}.code-input{text-transform:uppercase;font-weight:800;letter-spacing:.06em}.code-input::placeholder{text-transform:none;letter-spacing:normal;font-weight:600}.student-login{display:flex;flex-direction:column;gap:18px;align-items:stretch}.student-login-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.class-code-pill{display:inline-block;padding:4px 12px;border-radius:var(--pill);background:var(--accent-tint);border:2px solid var(--input-line);font-weight:800;letter-spacing:.05em;font-variant-numeric:tabular-nums}.class-name{font-family:var(--font-display);font-weight:800;font-size:1.2rem}.avatar-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:12px}.avatar-btn{width:100%;min-height:124px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 3px 0 var(--line-strong);cursor:pointer;transition:transform .08s ease,border-color .12s ease}.avatar-btn:hover{border-color:var(--accent);background:var(--accent-tint)}.avatar-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line-strong)}.avatar-emoji{font-size:3rem;line-height:1}.avatar-emoji.big{font-size:4rem}.avatar-name{font-weight:800;font-size:1.1rem;text-align:center;overflow-wrap:anywhere}.secret-step{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.secret-who{display:flex;flex-direction:column;align-items:center;gap:6px}.secret-slots{display:flex;gap:12px}.secret-slot{width:72px;height:72px;display:flex;align-items:center;justify-content:center;border:3px dashed var(--line-strong);border-radius:var(--radius);font-size:2.4rem;background:var(--panel)}.secret-slot.filled{border-style:solid;border-color:var(--accent);background:var(--accent-tint)}.secret-slots.shake{animation:shake .4s ease}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.picture-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;max-width:400px}.picture-btn{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 3px 0 var(--line-strong);font-size:2.3rem;cursor:pointer}.picture-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint)}.picture-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--line-strong)}.picture-btn:disabled{opacity:.5}.home-section{display:flex;flex-direction:column;gap:12px;min-width:0}.home-section+.home-section{margin-top:16px}.project-grid.home-projects{grid-template-columns:repeat(5,minmax(0,1fr))}.section-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.section-head h2{margin:0;font-family:var(--font-display);font-size:1.4rem;font-weight:800}.section-head h2 a{color:inherit;text-decoration:none}.section-head h2 a:hover{color:var(--accent-text)}.section-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.section-all{align-self:center;font-size:.95rem}.empty-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.profile-card{display:flex;flex-direction:column;gap:12px;border-top:6px solid var(--accent)}.profile-card h2{margin:0}.field-static{padding:10px 0;font-weight:700}.profile-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.profile-status .tag{margin-left:0}.profile-school{display:flex;flex-direction:column;gap:4px;font-size:1.05rem}.project-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}.project-card{position:relative;display:flex;background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.project-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--tile)}.project-card:focus-within{border-color:var(--tile)}.project-card-link{flex:1;display:flex;flex-direction:column;color:inherit;text-decoration:none}.project-card-link:focus-visible{outline:none;box-shadow:inset var(--focus)}.project-tile{height:84px;display:grid;place-items:center;background:var(--tile);color:var(--tile-ink);font-family:var(--font-display);font-size:2.4rem;font-weight:800;line-height:1;box-shadow:inset 0 -4px #00000024}.project-text{display:flex;flex-direction:column;gap:3px;padding:12px 14px 14px;min-width:0}.project-name{font-family:var(--font-display);font-weight:800;font-size:1.1rem;line-height:1.2;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-sub{color:var(--muted);font-size:.88rem;font-weight:700}.project-card.has-actions .project-tile{padding-right:80px}.project-card .project-actions{position:absolute;top:6px;right:6px;display:flex;gap:2px}.project-card .project-action{width:36px;height:36px;padding:0;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:var(--tile-ink);opacity:.7}.project-card .project-action:hover:not(:disabled),.project-card .project-action:focus-visible{opacity:1;color:#fff;background:#00000073}.project-card .project-delete:hover:not(:disabled),.project-card .project-delete:focus-visible{background:var(--danger)}.project-new{--tile: var(--accent-tint);--tile-ink: var(--accent-text);border-style:dashed;border-color:var(--input-line);box-shadow:none}.project-new .project-tile{box-shadow:none}.project-new .project-tile svg{width:36px;height:36px;stroke-width:3}.project-new .project-name{color:var(--accent-text)}.tile-0{--tile: var(--accent);--tile-ink: var(--accent-ink)}.tile-1{--tile: var(--second);--tile-ink: var(--accent-ink)}.tile-2{--tile: #d1332e;--tile-ink: #fff}.tile-3{--tile: #2b6fd4;--tile-ink: #fff}.tile-4{--tile: var(--info);--tile-ink: #fff}.new-class{flex-wrap:wrap}.new-class .field-input:first-child{flex:1 1 220px}.class-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.class-item{padding:0}.class-item.archived{opacity:.6}.class-link{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 20px;color:inherit;text-decoration:none;border-radius:var(--radius)}.class-link:hover{background:var(--accent-tint)}.class-item-name{font-family:var(--font-display);font-weight:800;font-size:1.25rem;margin-right:auto}.tag{display:inline-block;margin-left:6px;padding:2px 10px;border-radius:var(--pill);font-size:.8rem;font-weight:800;background:var(--line);color:var(--muted)}.tag.warn,.tag.pending{background:var(--warn-tint);color:var(--warn)}.tag.approved{background:var(--ok-tint);color:var(--ok-ink)}.tag.rejected{background:var(--danger-tint);color:var(--danger)}.back-link{text-decoration:none}.class-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.code-card{display:flex;flex-wrap:wrap;align-items:center;gap:18px 28px;border-top:6px solid var(--accent)}.code-block{display:flex;flex-direction:column;gap:4px;min-width:0}.code-block.grow{flex:1 1 260px}.class-code-big{font-family:var(--font-display);font-size:2.4rem;font-weight:800;letter-spacing:.06em;font-variant-numeric:tabular-nums}.login-url{font-size:1.05rem;overflow-wrap:anywhere}.names-input{min-height:110px;margin:8px 0 12px;resize:vertical;font-family:var(--font)}.report{margin:12px 0 0;padding-left:20px;color:var(--muted)}.report li:first-child{color:var(--ok-ink);font-weight:800}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px;border-bottom:2px solid var(--line)}.table td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}.table td.actions{text-align:right;white-space:nowrap}.table td.actions .btn+.btn{margin-left:8px}.avatar-cell{font-size:1.6rem;margin-right:8px;vertical-align:middle}.link-btn{border:0;background:none;padding:4px 0;font-weight:800;font-size:1.05rem;cursor:pointer;border-bottom:2px dashed transparent}.link-btn:hover{border-bottom-color:var(--accent)}.secret-inline{display:inline-flex;gap:6px;font-size:1.5rem}.danger-zone{justify-content:flex-end}.plain-list{list-style:none;margin:8px 0 0;padding:0}.plain-list li{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}@media(max-width:640px){.table thead{display:none}.table tr{display:flex;flex-wrap:wrap;gap:6px 12px;padding:10px 0;border-bottom:1px solid var(--line)}.table td{border:0;padding:2px 0}.table td.actions{width:100%;text-align:left;white-space:normal}.class-code-big{font-size:1.9rem}}.cards-page{padding:24px 16px;background:var(--bg);min-height:100%}.cards-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:20px}.cards-head p{width:100%;margin:0}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.login-card{display:flex;flex-direction:column;gap:10px;padding:14px 16px;background:#fff;border:2px dashed var(--line-strong);border-radius:var(--radius-sm);break-inside:avoid}.login-card-top{display:flex;align-items:center;gap:10px}.login-card-avatar{font-size:2.2rem;line-height:1}.login-card-name{font-family:var(--font-display);font-weight:800;font-size:1.4rem}.login-card-mid{display:flex;align-items:center;gap:14px}.login-card-qr svg{display:block;width:84px;height:84px}.login-card-code{font-family:var(--font-display);font-weight:800;font-size:1.3rem;letter-spacing:.05em}.login-card-url{font-size:.85rem;color:var(--muted);overflow-wrap:anywhere}.login-card-secret{display:flex;align-items:center;gap:12px}.login-card-pics{display:flex;gap:12px}.login-card-pic{display:flex;flex-direction:column;align-items:center;font-size:1.8rem;line-height:1.1}.login-card-pic small{font-size:.7rem;color:var(--muted)}@media print{.no-print{display:none!important}.cards-page{padding:0;background:#fff}.cards-grid{grid-template-columns:1fr 1fr;gap:6mm}}.school-picker{display:flex;flex-direction:column;gap:12px}.field.grow{flex:1 1 160px}.combo{position:relative}.combo-list{position:absolute;z-index:20;top:100%;left:0;right:0;margin:4px 0 0;padding:6px;list-style:none;max-height:280px;overflow-y:auto;background:var(--panel);border:2px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow)}.combo-item{padding:8px 10px;border-radius:8px;cursor:pointer;line-height:1.3}.combo-item.active{background:var(--accent-tint)}.combo-group{display:block;margin:6px 0 4px;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.combo-empty{padding:8px 10px;color:var(--muted);font-size:.9rem}.school-chosen{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:2px solid var(--second);border-radius:var(--radius-sm);background:var(--second-tint)}.school-chosen-name{font-weight:800}.muted.small{font-size:.82rem}select{font:inherit;color:inherit}.save-state.err,.save-state.err .lbl{display:inline-flex!important}.save-state.err{opacity:1;padding:4px 10px;border-radius:var(--pill);background:var(--warn-tint);color:var(--warn)}.app{grid-template-columns:minmax(0,1fr)}.app>.toolbar{min-width:0}.btn.icon-btn{width:46px;padding:0;justify-content:center}.account-menu{position:relative}.account-btn{gap:8px;padding:0 12px}.account-initials{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:.8rem;font-weight:800;letter-spacing:.02em}.account-btn .account-avatar{font-size:1.5rem;line-height:1}.account-btn .account-name{max-width:160px;overflow:hidden;text-overflow:ellipsis}.account-btn svg{width:16px;height:16px}.account-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:120;min-width:220px;padding:6px;display:flex;flex-direction:column;background:var(--panel);border:2px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow)}.account-who{display:flex;flex-direction:column;gap:2px;padding:8px 12px 10px;border-bottom:2px solid var(--line);margin-bottom:4px}.account-item{display:flex;align-items:center;min-height:44px;padding:0 12px;border:0;border-radius:8px;background:none;color:var(--ink);font-weight:700;text-align:left;text-decoration:none;cursor:pointer}.account-item:hover,.account-item:focus-visible{background:var(--accent-tint)}.account-item.danger{color:var(--danger)}.panel-toggle{position:relative}.toolbar .btn.ghost.panel-toggle.on{border-color:var(--accent-deep)}.panel-dot{position:absolute;top:7px;right:7px;width:10px;height:10px;border-radius:50%;border:2px solid #fff;background:var(--line-strong)}.panel-dot.live{background:var(--ok)}.preview-head .panel-close{margin-left:auto;width:38px}.panel-backdrop{display:none}@media(max-width:1100px){.wide-only{display:none}}@media(max-width:900px){.account-btn .account-name{display:none}.project-grid,.project-grid.home-projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.project-tile{height:68px;font-size:2rem}.workarea .cube-panel{position:fixed;top:0;right:0;bottom:0;z-index:110;width:min(340px,92vw);border-left:2px solid var(--line);box-shadow:var(--shadow);animation:panel-in .18s ease-out}.panel-backdrop{display:block;position:fixed;inset:0;z-index:105;background:#2b262059}.save-state.err{display:inline-flex!important}}@keyframes panel-in{0%{transform:translate(30px);opacity:0}to{transform:none;opacity:1}}@media(max-width:600px){.project-grid,.project-grid.home-projects{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar:not(.page-band){flex-wrap:nowrap;min-height:56px;padding:6px 8px;gap:6px}.toolbar .btn{min-height:42px;padding:0 11px}.toolbar .btn.icon-btn,.toolbar .btn.send{width:42px;padding:0;justify-content:center;flex:0 0 auto}.toolbar .name-wrap{flex-basis:0}.editor-brand,.toolbar .send .btn-label{display:none}.toolbar .name-wrap{flex:1 1 auto;max-width:none}.toolbar .name-input{min-height:42px;padding:0 10px;font-size:1rem}.save-state.err .lbl{display:none!important}.save-state.err:before{content:"!";font-weight:800}.account-btn{padding:0 8px}.account-btn>svg{display:none}.blockly-host .blocklyTreeRowContentContainer{width:58px;gap:3px}.blockly-host .blocklyToolboxCategory{margin:0 3px 1px;padding:5px 1px 4px}.blockly-host .blocklyToolboxCategoryLabel{font-size:10.5px}.cc-cat-tile{width:28px;height:28px;border-radius:8px}.status-line{min-height:40px;padding:6px 12px;font-size:.92rem}.page-band{min-height:56px;padding:6px 10px}}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}.chip{min-height:36px;padding:0 14px;border:2px solid var(--line);border-radius:var(--pill);background:var(--panel);font-weight:700;font-size:.9rem;cursor:pointer}.chip.on{border-color:var(--accent-deep);background:var(--accent-tint)}.th-sort{border:0;background:none;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.th-sort.on{color:var(--accent-text)}.th-sort.on:after{content:" ▾"}.table tr.clickable{cursor:pointer}.table tr.clickable:hover,.table tr.clickable:focus-visible{background:var(--accent-tint);outline:none}.note.ok{background:var(--ok-tint);color:var(--ok-ink)}.grow-input{flex:1 1 240px;width:auto}.sheet-backdrop{position:fixed;inset:0;z-index:130;background:#2b262059}.sheet{position:fixed;top:0;right:0;bottom:0;z-index:131;width:min(440px,100vw);overflow-y:auto;padding:18px 20px 32px;background:var(--panel);border-left:2px solid var(--line);box-shadow:var(--shadow);animation:panel-in .18s ease-out}.sheet-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.sheet-head .avatar-emoji{font-size:2.6rem}.sheet-who{flex:1;min-width:0}.sheet-who h2{margin:0;font-family:var(--font-display)}.sheet h3{margin:20px 0 8px;font-family:var(--font-display);font-size:1.05rem}.sheet-facts{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}.sheet-facts dt{color:var(--muted);font-weight:700}.sheet-facts dd{margin:0}.sheet-list{list-style:none;margin:0;padding:0}.sheet-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.sheet-list li>div{display:flex;flex-direction:column;min-width:0}.sheet-list.events li{font-size:.95rem}.sheet-manage{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.viewer{height:100%;display:flex;flex-direction:column;min-width:0}.viewer-band .btn{border-color:#fff;background:#fff}.viewer-title{display:flex;flex-direction:column;min-width:0}.viewer-title strong{font-family:var(--font-display);font-size:1.15rem}.viewer-note{margin:8px 16px 0}.viewer-canvas{flex:1 1 auto;min-height:0}@media(max-width:640px){.table.dash td[data-label]:before{content:attr(data-label) ": ";color:var(--muted);font-size:.8rem;font-weight:700}.table.dash td:first-child{width:100%}}.canvas-wrap{position:relative;flex:1 1 auto;min-width:0;display:flex}.canvas-wrap>.blockly-host{flex:1 1 auto}.canvas-center{position:absolute;right:12px;bottom:14px;z-index:5;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--line-strong);border-radius:50%;background:#ffffffe6;color:var(--muted);box-shadow:var(--shadow-sm);cursor:pointer}.canvas-center svg{width:18px;height:18px}.ccDotMatrixEditor .pixelButton{width:var(--cc-dm-cell, 30px);height:var(--cc-dm-cell, 30px)}.blocklyDropDownDiv.ccDropDownCentered{position:fixed!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;transition:none!important;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto}.blocklyDropDownDiv.ccDropDownCentered .blocklyDropDownArrow{display:none}.ccDropDownBackdrop{position:fixed;inset:0;z-index:999;background:#2b262066}.account-item.phone-only{display:none}@media(max-width:600px){.toolbar .wide-tool{display:none}.account-item.phone-only{display:flex}}
