:root{--bg:#f6f6f4;--surface:#fff;--surface-2:#f0f0ed;--border:#e5e5e1;--border-strong:#d3d3ce;--text:#17171a;--text-2:#55555c;--text-3:#9b9ba3;--accent:#2f6bed;--accent-weak:#e9f0fe;--accent-ring:#2f6bed59;--ok:#1f9d55;--warn:#c77700;--err:#d93a3a;--key:#fff;--key-edge:#e3e3df;--key-shadow:#d9d9d4;--primary:#17171a;--primary-text:#fff;--shadow-lg:0 24px 64px -16px #14141e38, 0 2px 6px #14141e0f;--radius:10px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Segoe UI", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--fs-2xs:10.5px;--fs-xs:11.5px;--fs-sm:12.5px;--fs-md:13px;--fs-base:14px;--fs-lg:15px;--fs-xl:19px;--fs-2xl:22px;--fs-3xl:28px;--layer-1:#0d9488;--layer-2:#7c3aed;--layer-3:#d97706;--layer-4:#db2777;--layer-5:#2563eb;--layer-6:#16a34a;--layer-7:#dc2626;--layer-8:#0891b2;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0e0e10;--surface:#161619;--surface-2:#1d1d21;--border:#28282d;--border-strong:#36363c;--text:#f2f2f4;--text-2:#a7a7af;--text-3:#65656d;--accent:#5b8dff;--accent-weak:#5b8dff24;--accent-ring:#5b8dff73;--ok:#3ccf7c;--warn:#f0a83a;--err:#ff6464;--key:#1e1e22;--key-edge:#2d2d33;--key-shadow:#0a0a0b;--primary:#f2f2f4;--primary-text:#111113;--shadow-lg:0 24px 64px -12px #0009, 0 2px 6px #0000004d;--layer-1:#2dd4bf;--layer-2:#a78bfa;--layer-3:#fbbf24;--layer-4:#f472b6;--layer-5:#60a5fa;--layer-6:#4ade80;--layer-7:#f87171;--layer-8:#22d3ee;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:var(--fs-md)/1.5 var(--font);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}code{font-family:var(--mono);font-size:.92em}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app{flex-direction:column;height:100%;display:flex}.boot{height:100%;color:var(--text-2);place-content:center;justify-items:center;gap:12px;display:grid}.boot__error{color:var(--err);text-align:center;max-width:480px}.topbar{border-bottom:1px solid var(--border);background:var(--surface);grid-template-columns:minmax(220px,1fr) minmax(0,auto) minmax(350px,1fr);align-items:center;gap:16px;height:66px;padding:0 20px;display:grid}.brand{font-weight:600;font-size:var(--fs-lg);letter-spacing:-.01em;align-items:center;gap:9px;display:flex}.topbar__right{justify-content:flex-end;align-items:center;gap:8px;display:flex}.topbar__right>*{flex:none}@media (width<=1599px){.kb-status__text{display:none}.kb-status{padding:0 9px}}@media (width<=1179px){.topbar{grid-template-columns:minmax(0,1fr) auto;row-gap:10px;height:auto;padding:10px 16px}.layer-bar{grid-area:2/1/auto/-1;justify-self:start;max-width:100%;overflow-x:auto}}@keyframes pulse{50%{opacity:.35}}.banner{border-bottom:1px solid var(--border);background:var(--accent-weak);color:var(--text);font-size:var(--fs-md);justify-content:center;align-items:center;gap:14px;padding:10px 20px;display:flex}.banner--err{background:color-mix(in srgb, var(--err) 12%, var(--surface))}.main{flex:1;grid-template-columns:1fr 360px;min-height:0;display:grid}.btn{border:1px solid var(--border-strong);background:var(--surface);height:32px;font-weight:500;font-size:var(--fs-md);white-space:nowrap;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 13px;transition:background .12s,border-color .12s,opacity .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:default}.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn--primary:hover:not(:disabled){background:var(--primary);opacity:.88}.btn--ghost{background:0 0;border-color:#0000}.btn--sm{height:28px;font-size:var(--fs-sm);padding:0 10px}.btn:focus-visible,.chip:focus-visible,.choice:focus-visible,.segmented button:focus-visible,.picker__button:focus-visible,.picker__key:focus-visible{outline:2px solid var(--accent-ring);outline-offset:1px}.icon-btn{width:30px;height:30px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-2)}.segmented{background:var(--surface-2);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{height:28px;color:var(--text-2);font-size:var(--fs-md);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:7px;padding:0 12px;font-weight:500}.segmented button:hover{color:var(--text)}.segmented button.is-on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014, 0 0 0 1px var(--border)}.segmented--wrap{flex-wrap:wrap}.input{border:1px solid var(--border-strong);background:var(--surface);width:100%;height:34px;color:var(--text);font:inherit;border-radius:8px;padding:0 10px}.input:focus{outline:2px solid var(--accent-ring);border-color:var(--accent)}.input--mono{font-family:var(--mono);font-size:var(--fs-md)}.chip{border:1px solid var(--border-strong);background:var(--surface);min-width:30px;height:28px;font-size:var(--fs-base);cursor:pointer;border-radius:7px;place-items:center;padding:0 8px;display:grid}.chip--on{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.tag{white-space:nowrap;background:var(--accent-weak);color:var(--accent);font-size:var(--fs-2xs);letter-spacing:.02em;vertical-align:1px;border-radius:5px;margin-left:6px;padding:1px 6px;font-weight:600}.canvas{grid-template-rows:auto 1fr auto;place-items:center;gap:12px;min-width:0;padding:28px 40px 24px;display:grid;overflow:auto}.canvas__board{width:100%;max-width:1080px}.canvas__status{color:var(--text-3);font-size:var(--fs-sm);margin:0}.canvas__status.is-dirty{color:var(--warn)}.keyboard{-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block;overflow:visible}.key__shadow{fill:var(--key-shadow)}.key__cap{fill:var(--key);stroke:var(--key-edge);stroke-width:1px;transition:fill .12s,stroke .12s}.key--interactive{cursor:pointer}.key--interactive:hover .key__cap{fill:var(--surface-2)}.key:focus{outline:none}.key:focus-visible .key__cap{stroke:var(--accent);stroke-width:2px}.key--muted .key__cap{fill:#0000;stroke-dasharray:3 3}.key--muted .key__shadow,.keyboard--compact .key__shadow{display:none}.key--muted .key__tap{fill:var(--text-3)}.key--changed .key__cap{stroke:var(--warn);stroke-width:1.5px}.key__changed-dot{fill:var(--warn)}.key__layer-bar{opacity:.85}.key--held .key__cap{fill:color-mix(in srgb, var(--held) 16%, var(--key));stroke:var(--held);stroke-width:1.5px;stroke-dasharray:none}.key--through .key__tap{fill:var(--text-3);opacity:.7}.key--pressed .key__cap{animation:.45s ease-out press}@keyframes press{0%{fill:var(--accent)}}.key--selected .key__cap,.key--selected:hover .key__cap{fill:var(--accent-weak);stroke:var(--accent);stroke-width:2px}.key--highlight .key__cap{fill:var(--hl,var(--accent));stroke:var(--hl,var(--accent));animation:1.4s ease-in-out infinite pulse}.key--highlight .key__tap,.key--highlight .key__hold{fill:#fff!important}.key__tap{fill:var(--text);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-weight:500}.key__hold{fill:var(--text-3);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-weight:500}.key__repeat circle{fill:var(--accent)}.key__repeat text{fill:#fff;text-anchor:middle;dominant-baseline:middle;font-size:7px;font-weight:700}.inspector{border-left:1px solid var(--border);background:var(--surface);min-height:0;overflow:auto}.inspector__body{flex-direction:column;min-height:100%;display:flex}.inspector__head{align-items:center;gap:14px;padding:20px 22px 18px;display:flex}.inspector__head>div:last-child{flex-direction:column;gap:2px;min-width:0;display:flex}.inspector__head h2{overflow-wrap:anywhere;font-size:var(--fs-xl);letter-spacing:-.015em;margin:0;font-weight:600;line-height:1.25}.eyebrow,.section-label{color:var(--text-3);font-size:var(--fs-xs);letter-spacing:.02em;font-weight:600}.section-label{margin-bottom:10px;display:block}.inspector__section{border-top:1px solid var(--border);padding:16px 22px}.inspector__fields{flex-direction:column;gap:14px;display:flex}.inspector__fields:empty{display:none}.inspector__foot{border-top:1px solid var(--border);margin-top:auto;padding:14px 22px}.inspector__foot code{color:var(--text-3);font-size:var(--fs-sm)}.choices{flex-direction:column;gap:2px;display:flex}.choices__divider{background:var(--border);height:1px;margin:6px 0}.choice{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:flex-start;gap:10px;width:100%;padding:7px 9px;display:flex}.choice:hover{background:var(--surface-2)}.choice.is-on{background:var(--accent-weak)}.choice__dot{border:1.5px solid var(--border-strong);border-radius:50%;flex:none;width:14px;height:14px;margin-top:3px}.choice.is-on .choice__dot{border:4.5px solid var(--accent)}.choice__text{flex-direction:column;gap:2px;display:flex}.choice__title{font-size:var(--fs-md);font-weight:500}.choice__desc{color:var(--text-2);font-size:var(--fs-sm)}.field{flex-direction:column;gap:6px;display:flex}.field__label{color:var(--text-2);font-size:var(--fs-sm);font-weight:500}.howto{border:1px solid var(--border);border-radius:var(--radius);background:var(--border);gap:1px;margin:0;display:grid;overflow:hidden}.howto div{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:9px 12px;display:flex}.howto dt{color:var(--text-2)}.howto dd{margin:0;font-weight:600}.timing{flex-direction:column;gap:14px;margin-top:16px;display:flex}.slider{font-size:var(--fs-md);flex-direction:column;gap:6px;display:flex}.slider__top{color:var(--text-2);justify-content:space-between;display:flex}.slider__value{color:var(--text);font-variant-numeric:tabular-nums;font-weight:500}.slider input{width:100%;accent-color:var(--accent);margin:0}.hint{color:var(--text-3);font-size:var(--fs-sm);margin:0}.empty{color:var(--text-3);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:44px 22px 34px;display:flex}.empty p{color:var(--text-2);margin:0}.prose{color:var(--text-2);font-size:var(--fs-md);margin:0 0 10px}.prose--muted{color:var(--text-3)}.repeat-mark{background:var(--accent);color:#fff;vertical-align:1px;border-radius:50%;place-items:center;width:17px;height:17px;font-size:8.5px;font-weight:700;display:inline-grid}.toggle{cursor:pointer;font-size:var(--fs-md);align-items:flex-start;gap:10px;font-weight:500;display:flex;position:relative}.toggle input{opacity:0;position:absolute}.toggle small{color:var(--text-3);font-size:var(--fs-sm);margin-top:2px;font-weight:400;display:block}.toggle__track{background:var(--border-strong);border-radius:999px;flex:none;width:32px;height:19px;margin-top:1px;transition:background .15s;position:relative}.toggle__track:after{content:"";background:#fff;border-radius:50%;width:15px;height:15px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.toggle input:checked+.toggle__track{background:var(--accent)}.toggle input:checked+.toggle__track:after{transform:translate(13px)}.toggle input:focus-visible+.toggle__track{outline:2px solid var(--accent-ring);outline-offset:2px}.picker{flex-direction:column;gap:6px;display:flex;position:relative}.picker__button{border:1px solid var(--border-strong);background:var(--surface);text-align:left;cursor:pointer;border-radius:9px;align-items:center;gap:10px;width:100%;height:40px;padding:0 10px 0 5px;display:flex}.picker__button:hover{border-color:var(--text-3)}.picker__cap{border:1px solid var(--key-edge);background:var(--surface-2);border-radius:6px;place-items:center;min-width:30px;height:30px;padding:0 6px;font-weight:600;display:grid}.picker__name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.picker__chevron{color:var(--text-3)}.picker__popover{z-index:20;border:1px solid var(--border);background:var(--surface);max-height:420px;box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0}.picker__search{border-bottom:1px solid var(--border);color:var(--text-3);align-items:center;gap:8px;padding:0 12px;display:flex}.picker__search input{height:42px;color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1}.picker__mods{border-bottom:1px solid var(--border);color:var(--text-3);font-size:var(--fs-sm);align-items:center;gap:5px;padding:8px 12px;display:flex}.picker__mods span{margin-right:3px}.picker__list{padding:4px 12px 12px;overflow:auto}.picker__list h4{color:var(--text-3);font-size:var(--fs-xs);margin:10px 0 6px;font-weight:600}.picker__grid{grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:4px;display:grid}.picker__key{border:1px solid var(--border);background:var(--surface);height:34px;font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:6px;padding:0 4px;font-weight:500;overflow:hidden}.picker__key:hover{background:var(--surface-2)}.picker__key--on{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.picker__typed{border:1px dashed var(--border-strong);cursor:pointer;background:0 0;border-radius:8px;width:100%;margin-top:10px;padding:8px}.picker__empty{color:var(--text-3);text-align:center;margin:14px 0 4px}.scrim{z-index:50;background:#0a0a0e66;place-items:center;padding:24px;animation:.15s ease-out fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{border:1px solid var(--border);background:var(--surface);width:min(560px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;gap:16px;padding:22px;animation:.18s ease-out rise;display:flex;overflow:auto}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.sheet__head{justify-content:space-between;align-items:center;display:flex}.sheet__head h2{font-size:var(--fs-xl);letter-spacing:-.015em;margin:0;font-weight:600}.sheet__foot{justify-content:flex-end;gap:8px;display:flex}.steps{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.step{color:var(--text-3);grid-template-columns:22px auto minmax(0,1fr);align-items:center;gap:8px;padding:4px 0;display:grid}.step__title{white-space:nowrap}.step__detail{text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.step__icon{place-items:center;display:grid}.step__detail{font-size:var(--fs-sm)}.step--active,.step--done{color:var(--text)}.step--active .step__icon{color:var(--accent)}.step--done .step__icon{color:var(--ok)}.step--error{color:var(--err)}.step--active .step__detail,.step--done .step__detail{color:var(--text-2)}.notice{border-radius:var(--radius);background:var(--surface-2);font-size:var(--fs-md);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.notice svg{flex:none;margin-top:2px}.notice--ok{background:color-mix(in srgb, var(--ok) 12%, var(--surface))}.notice--ok svg{color:var(--ok)}.notice--err{background:color-mix(in srgb, var(--err) 11%, var(--surface))}.notice--err svg{color:var(--err)}.guide{border:1px solid var(--accent);background:var(--accent-weak);border-radius:12px;flex-direction:column;gap:14px;padding:16px;display:flex}.guide__head h3{font-size:var(--fs-lg);margin:6px 0 4px;font-weight:600}.guide__head p{color:var(--text-2);font-size:var(--fs-md);margin:0}.guide__badge{color:var(--accent);font-size:var(--fs-xs);font-weight:600}.guide__board{background:var(--surface);border-radius:10px;padding:12px}.guide__body{grid-template-columns:1fr;gap:14px;display:grid}.guide__board .keyboard{max-width:440px;margin:0 auto;display:block}.key__label{font-weight:700}.guide__body--single{grid-template-columns:1fr}.guide__steps{font-size:var(--fs-md);flex-direction:column;gap:8px;margin:0;padding-left:18px;line-height:1.55;display:flex}.num{background:var(--accent);color:#fff;width:18px;height:18px;font-size:var(--fs-xs);vertical-align:1px;border-radius:50%;place-items:center;font-weight:700;display:inline-grid}.guide__wait{color:var(--text-2);font-size:var(--fs-sm);align-items:center;gap:8px;margin:0;display:flex}.checklist{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.checklist__half{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.checklist__name{font-size:var(--fs-sm);font-weight:600}.checklist ol{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.checklist li{color:var(--text-3);font-size:var(--fs-sm);align-items:center;gap:8px;display:flex}.checklist li svg{flex:none}.checklist li.is-now{color:var(--text);font-weight:600}.checklist li.is-done{color:var(--text-2)}.checklist li.is-done svg{color:var(--ok)}.checklist__last{grid-column:1/-1}.checklist__last ol{flex-flow:wrap;gap:6px 24px}.checklist__now{background:var(--accent);width:14px;height:14px;box-shadow:0 0 0 4px var(--accent-ring);border-radius:50%;flex:none}.setup-wait{border-radius:var(--radius);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-md);align-items:flex-start;gap:8px;margin:0;padding:12px 14px;display:flex}.setup-wait svg{flex:none;margin-top:3px}@media (width<=560px){.checklist{grid-template-columns:1fr}}.log summary{color:var(--text-2);font-size:var(--fs-sm);cursor:pointer;align-items:center;gap:4px;list-style:none;display:flex}.log summary::-webkit-details-marker{display:none}.log[open] summary svg{transform:rotate(90deg)}.log pre{background:var(--surface-2);max-height:200px;color:var(--text-2);font:11px/1.5 var(--mono);white-space:pre-wrap;word-break:break-all;border-radius:8px;margin:8px 0 0;padding:10px 12px;overflow:auto}.kb-status{border:1px solid var(--border);height:30px;color:var(--text-2);font-size:var(--fs-sm);white-space:nowrap;cursor:default;border-radius:999px;align-items:center;gap:8px;padding:0 11px 0 9px;font-weight:500;display:flex}.kb-status__dots{gap:3px;display:flex}.kb-status__dot{background:var(--text-3);border-radius:50%;width:7px;height:7px}.kb-status__dot.is-current,.kb-status__dot.is-ready{background:var(--ok)}.kb-status__dot.is-setup{background:var(--warn)}.kb-status__dot.is-bootloader{background:var(--accent);animation:1.4s ease-in-out infinite pulse}.kb-status__dot.is-missing{box-shadow:inset 0 0 0 1.5px var(--text-3);background:0 0}.layer-bar{background:var(--surface-2);border-radius:12px;gap:2px;padding:3px;display:flex}.layer-tab{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:9px;flex-direction:column;align-items:flex-start;gap:1px;min-width:92px;padding:5px 12px 6px;transition:background .12s;display:flex}.layer-tab:hover{background:color-mix(in srgb, var(--surface) 60%, transparent)}.layer-tab.is-on{background:var(--surface);box-shadow:0 1px 2px #00000014, 0 0 0 1px var(--border)}.layer-tab:focus-visible{outline:2px solid var(--accent-ring);outline-offset:1px}.layer-tab__name{font-size:var(--fs-md);color:var(--text-2);align-items:center;gap:6px;font-weight:600;display:flex}.layer-tab.is-on .layer-tab__name{color:var(--text)}.layer-tab__dot{background:var(--layer);border-radius:50%;flex:none;width:8px;height:8px}.layer-tab__changed{background:var(--warn);border-radius:50%;width:6px;height:6px}.layer-tab__how{color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap;align-items:center;gap:4px;padding-left:14px;display:flex}.layer-tab__how kbd,.canvas__caption kbd{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);font:500 var(--fs-2xs)/15px var(--font);border-bottom-width:2px;border-radius:4px;padding:0 5px}.layer-tab__none{color:var(--warn)}.canvas__caption{width:100%;max-width:1080px;color:var(--text-2);font-size:var(--fs-md);align-items:flex-start;gap:8px;display:flex}.canvas__caption .layer-tab__dot{margin-top:6px}.canvas__caption strong{color:var(--text);flex:none;font-weight:600}.cap-preview{border:1px solid var(--key-edge);border-bottom:2.5px solid var(--layer,var(--key-edge));background:var(--key);width:54px;height:54px;box-shadow:0 1.5px 0 var(--key-shadow);white-space:nowrap;border-radius:11px;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:1px;padding:0 4px;display:flex;position:relative;overflow:hidden}.cap-preview__tap{font-weight:500;line-height:1.1}.cap-preview--through{box-shadow:none;background:0 0;border-style:dashed}.cap-preview--through .cap-preview__tap{color:var(--text-3)}.cap-preview__hold{color:var(--layer,var(--text-3));font-weight:600;line-height:1.1}.cap-preview__repeat{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:13px;height:13px;font-size:6.5px;font-weight:700;display:grid;position:absolute;top:4px;right:4px}.segmented--full{width:100%;margin-bottom:12px;display:flex}.segmented--full button{flex:1;padding:0 6px}.hint--spaced{margin-top:2px}.layer-choice{flex-wrap:wrap;gap:6px;display:flex}.layer-choice button{border:1px solid var(--border-strong);background:var(--surface);height:30px;font-size:var(--fs-md);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:0 11px;font-weight:500;display:inline-flex}.layer-choice button:hover{background:var(--surface-2)}.layer-choice button.is-on{border-color:var(--layer);background:color-mix(in srgb, var(--layer) 12%, var(--surface))}.howto dt{align-items:center;gap:10px;display:flex}.gesture rect{fill:var(--text-3)}.empty__icon{background:var(--surface-2);width:36px;height:36px;color:var(--text-2);border-radius:10px;place-items:center;display:grid}.layer-list{flex-direction:column;gap:1px;margin:0 -8px;padding:0;list-style:none;display:flex}.layer-list button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:8px auto 1fr;align-items:center;gap:9px;width:100%;padding:7px 8px;display:grid}.layer-list button:hover{background:var(--surface-2)}.layer-list__name{font-size:var(--fs-md);font-weight:600}.layer-list__how{color:var(--text-3);font-size:var(--fs-sm);text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker__row{gap:6px;display:flex}.picker__record{border:1px solid var(--border-strong);background:var(--surface);width:40px;height:40px;color:var(--text-2);cursor:pointer;border-radius:9px;flex:none;place-items:center;display:grid}.picker__record:hover{background:var(--surface-2);color:var(--text)}.picker__record.is-on{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.picker__modes{margin:10px 12px 0;display:flex}.picker__modes button{flex:1}.recorder{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:22px 18px 18px;display:flex}.recorder__keys{border:1.5px dashed var(--accent);min-width:64px;height:52px;color:var(--accent);font-size:var(--fs-2xl);letter-spacing:.05em;border-radius:12px;place-items:center;margin-bottom:6px;padding:0 14px;font-weight:600;display:grid}.recorder__keys.is-held{background:var(--accent-weak);border-style:solid}.recorder__pulse{background:var(--accent);border-radius:50%;width:9px;height:9px;animation:1.2s ease-in-out infinite pulse}.recorder__title{margin:0;font-weight:600}.hint a{color:var(--text-2)}.recorder .hint{max-width:280px}.toast{z-index:40;background:var(--primary);color:var(--primary-text);font-size:var(--fs-md);box-shadow:var(--shadow-lg);border-radius:10px;align-items:center;gap:8px;padding:9px 14px;font-weight:500;animation:.18s ease-out rise;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.btn--icon{width:32px;padding:0}.repo-menu{margin-left:10px;position:relative}.repo-chip{white-space:nowrap;border:1px solid var(--border);max-width:100%;height:30px;color:var(--text-2);font-size:var(--fs-sm);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:7px;padding:0 9px;font-weight:500;display:flex}.repo-chip:hover{background:var(--surface-2)}.repo-chip__name{color:var(--text);text-overflow:ellipsis;overflow:hidden}.repo-menu,.brand{min-width:0}@media (width<=1360px){.repo-chip__branch{display:none}}.repo-chip__branch{background:var(--surface-2);font-family:var(--mono);font-size:var(--fs-xs);border-radius:5px;padding:1px 6px}.menu{z-index:30;border:1px solid var(--border);background:var(--surface);min-width:240px;box-shadow:var(--shadow-lg);border-radius:11px;padding:5px;position:absolute;top:calc(100% + 6px);left:0}.menu__head{border-bottom:1px solid var(--border);font-size:var(--fs-md);flex-direction:column;margin-bottom:4px;padding:8px 10px 9px;font-weight:600;display:flex}.menu__head small{color:var(--text-3);font-weight:400}.menu__item{width:100%;color:var(--text);font-size:var(--fs-md);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:7px 10px;text-decoration:none;display:flex}.menu__item:hover{background:var(--surface-2)}.menu__item svg{color:var(--text-3)}.run-link{color:var(--text-2);font-size:var(--fs-sm);align-self:flex-start;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.run-link:hover{color:var(--text)}.ob{background:var(--bg);grid-template-columns:300px minmax(0,1fr);height:100%;display:grid}.ob__side{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:40px;min-height:0;padding:28px 24px 24px;display:flex;overflow:auto}.ob__brand{font-size:var(--fs-lg);letter-spacing:-.01em;align-items:center;gap:9px;font-weight:600;display:flex}.ob__steps{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ob__step>div,.ob__step>button{width:100%;color:inherit;text-align:left;background:0 0;border:0;align-items:flex-start;gap:12px;padding:0 0 26px;display:flex;position:relative}.ob__step>button{cursor:pointer}.ob__step>button:hover .ob__step-text strong{text-underline-offset:3px;text-decoration:underline}.ob__step:not(:last-child)>div:after,.ob__step:not(:last-child)>button:after{content:"";background:var(--border);width:1.5px;position:absolute;top:30px;bottom:4px;left:13px}.ob__step.is-done:not(:last-child)>div:after,.ob__step.is-done:not(:last-child)>button:after{background:var(--ok)}.ob__step-num{border:1.5px solid var(--border-strong);width:28px;height:28px;color:var(--text-3);font-size:var(--fs-sm);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.ob__step.is-on .ob__step-num{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.ob__step.is-done .ob__step-num{border-color:var(--ok);background:var(--ok);color:#fff}.ob__step-text{flex-direction:column;gap:1px;min-width:0;padding-top:4px;display:flex}.ob__step-text strong{color:var(--text-2);font-size:var(--fs-md);font-weight:600}.ob__step.is-on .ob__step-text strong{color:var(--text)}.ob__step-text span{color:var(--text-3);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ob__side-foot{justify-content:space-between;align-items:flex-end;gap:12px;margin-top:auto;display:flex}.ob__side-foot p{color:var(--text-3);font-size:var(--fs-xs);margin:0;line-height:1.5}.ob__side-foot p+p{margin-top:6px}.ob__side-foot a{color:var(--text-2)}.ob__side-foot .menu--right{top:auto;bottom:calc(100% + 6px)}.ob__main{justify-content:center;align-items:flex-start;min-width:0;padding:72px 48px 56px;display:flex;overflow:auto}.ob__content{flex-direction:column;gap:18px;width:min(680px,100%);animation:.2s ease-out rise;display:flex}.ob__eyebrow{color:var(--text-3);font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:600}.ob h1{font-size:var(--fs-3xl);letter-spacing:-.022em;margin:-8px 0 0;font-weight:600;line-height:1.2}.lede{max-width:600px;color:var(--text-2);font-size:var(--fs-base);margin:-6px 0 6px;line-height:1.55}.ob__actions{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding-top:20px;display:flex}.ob__choices{flex-direction:column;gap:10px;max-width:420px;display:flex}.ob__block{flex-direction:column;gap:8px;display:flex}.ob__status{align-items:center;gap:7px;display:flex}.ob__back{color:var(--text-2);font-size:var(--fs-sm);cursor:pointer;background:0 0;border:0;border-radius:6px;align-self:flex-start;align-items:center;gap:5px;margin:-6px 0 -4px;padding:4px 6px 4px 2px;display:inline-flex}.ob__back:hover{color:var(--text)}.ob__progress{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-direction:column;gap:16px;padding:18px 20px;display:flex}.ob__plan{counter-reset:plan;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.ob__plan li{color:var(--text-2);counter-increment:plan;gap:12px;display:flex}.ob__plan li:before{content:counter(plan);background:var(--surface-2);width:24px;height:24px;color:var(--text);font-size:var(--fs-sm);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.ob__plan strong{color:var(--text);font-weight:600}.ob__subhead{font-size:var(--fs-lg);margin:8px 0 -4px;font-weight:600}.ob__para{max-width:600px;color:var(--text-2);margin:0;line-height:1.55}.ob__notes{max-width:640px;color:var(--text-2);font-size:var(--fs-md);flex-direction:column;gap:6px;margin:4px 0 0;padding-left:18px;line-height:1.5;display:flex}.callout.connect-ports{max-width:640px}.half-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.half-card{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;padding:18px;transition:border-color .2s;display:flex}.half-card__art{opacity:.35;place-items:center;height:120px;transition:opacity .3s;display:grid}.half-card__art .keyboard{width:100%;height:120px}.half-card--tandem,.half-card--other{border-color:color-mix(in srgb, var(--ok) 40%, var(--border))}.half-card--tandem .half-card__art,.half-card--other .half-card__art,.half-card--bootloader .half-card__art{opacity:1}.half-card--tandem .key__cap,.half-card--other .key__cap{stroke:color-mix(in srgb, var(--ok) 50%, var(--key-edge))}.half-card__text{flex-direction:column;gap:2px;display:flex}.half-card__text strong{font-weight:600}.half-card__text span{color:var(--text-2);font-size:var(--fs-sm);align-items:center;gap:5px;display:flex}.half-card--tandem .half-card__text span svg,.half-card--other .half-card__text span svg{color:var(--ok)}.half-card--missing .half-card__text span{color:var(--text-3)}.found{border:1px solid var(--accent);background:var(--accent-weak);border-radius:14px;align-items:center;gap:14px;padding:14px 16px;display:flex}.found>div{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.found strong{font-weight:600}.found span{color:var(--text-2);font-size:var(--fs-sm)}.option-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.option-card{border:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer;border-radius:14px;flex-direction:column;align-items:flex-start;gap:6px;padding:20px;transition:border-color .15s,box-shadow .15s;display:flex}.option-card:hover{border-color:var(--border-strong);box-shadow:0 6px 20px -12px #00000040}.option-card:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.option-card__icon{background:var(--accent-weak);width:38px;height:38px;color:var(--accent);border-radius:10px;place-items:center;margin-bottom:6px;display:grid}.option-card strong{font-size:var(--fs-lg);font-weight:600}.option-card span:last-child{color:var(--text-2);font-size:var(--fs-md);line-height:1.5}.form-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;display:grid}.field__error{color:var(--err);font-size:var(--fs-sm)}.choices--cards{gap:8px}.choices--cards .choice{border:1px solid var(--border);border-radius:10px;padding:12px 14px}.choices--cards .choice.is-on{border-color:var(--accent)}.choice:disabled{cursor:not-allowed;opacity:.5}.choice__title svg{color:var(--accent);vertical-align:-1px;margin-left:4px}.preview{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-direction:column;gap:12px;padding:16px;display:flex}.preview__head{align-items:center;gap:8px;display:flex}.preview__head strong{font-weight:600}.callout-ok-mark{background:var(--ok);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;display:grid}.preview__board{padding:6px 0}.callout--ok{background:color-mix(in srgb, var(--ok) 12%, var(--surface));color:var(--text)}.callout strong{font-weight:600}.callout svg{vertical-align:-2px;margin-right:4px}@media (width<=900px){.ob{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.ob__side{border-right:0;border-bottom:1px solid var(--border);flex-flow:wrap;align-items:center;gap:16px 24px;height:auto;padding:16px 20px;position:static}.ob__steps{flex-direction:row;gap:16px}.ob__step>div,.ob__step>button{padding:0}.ob__step>div:after,.ob__step>button:after,.ob__step-text span,.ob__side-foot p{display:none}.ob__side-foot{margin:0 0 0 auto}.ob__main{padding:36px 20px}.half-cards,.option-cards,.form-row{grid-template-columns:1fr}}.btn--lg{height:42px;font-size:var(--fs-base);gap:9px;padding:0 18px}.btn--lg small{color:inherit;opacity:.6;font-weight:400}.callout{border-radius:var(--radius);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-md);margin:0;padding:11px 13px}.callout--err{background:color-mix(in srgb, var(--err) 11%, var(--surface));color:var(--text)}.device-code{background:var(--surface-2);border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:22px;display:flex}.device-code strong{font-family:var(--mono);letter-spacing:.12em;font-size:28px}.device-code .hint{align-items:center;gap:6px;display:flex}.command{border:1px solid var(--border);background:var(--surface-2);border-radius:9px;justify-content:space-between;align-items:center;padding:6px 6px 6px 13px;display:flex}.command code{font-size:var(--fs-md)}.repo-search{border:1px solid var(--border-strong);height:38px;color:var(--text-3);border-radius:9px;align-items:center;gap:8px;padding:0 12px;display:flex}.repo-search input{color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1}.repo-list{flex-direction:column;gap:2px;max-height:320px;display:flex;overflow:auto}.repo-list .hint{align-items:center;gap:6px;padding:8px;display:flex}.repo{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:flex-start;gap:10px;padding:9px 10px;display:flex}.repo:hover{background:var(--surface-2)}.repo.is-on{background:var(--accent-weak)}.repo.is-on .choice__dot{border:4.5px solid var(--accent)}.repo__text{flex-direction:column;flex:1;min-width:0;display:flex}.repo__name{align-items:center;gap:6px;font-weight:500;display:flex}.repo__name svg{color:var(--text-3)}.repo__desc{color:var(--text-3);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.repo__when{color:var(--text-3);font-size:var(--fs-sm);white-space:nowrap}select.input{appearance:auto}.changes{border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;margin:0;padding:14px;list-style:none;display:flex}.changes li{font-size:var(--fs-md);color:var(--text-2);gap:10px;display:flex}.changes li svg{color:var(--ok);flex:none;margin-top:2px}.changes strong{color:var(--text);font-weight:600;display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=960px){.main{grid-template-rows:auto auto;grid-template-columns:1fr;overflow:auto}.inspector{border-left:0;border-top:1px solid var(--border);overflow:visible}.canvas{padding:20px 16px;overflow:visible}.repo-chip__name{max-width:140px}}.theme-menu{position:relative}.menu--right{min-width:180px;left:auto;right:0}.menu__item.is-on,.menu__item.is-on svg{color:var(--accent)}.ob__content>.btn:not(.btn--lg){align-self:flex-start}.layer-bar{scrollbar-width:none;max-width:100%;overflow-x:auto}.layer-bar__add{width:36px;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:9px;flex:none;place-items:center;display:grid}.layer-bar__add:hover:not(:disabled){background:color-mix(in srgb, var(--surface) 60%, transparent);color:var(--text)}.layer-bar__add:disabled{cursor:default;opacity:.35}.layer-bar__add:focus-visible{outline:2px solid var(--accent-ring);outline-offset:1px}.layer-settings{flex-direction:column;gap:12px;display:flex}.layer-settings .section-label{align-items:center;gap:7px;margin:0;display:flex}.layer-settings>.btn{align-self:flex-start}.layer-list__add{margin-top:6px;margin-left:-8px}.confirm{border:1px solid color-mix(in srgb, var(--err) 40%, var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--err) 7%, var(--surface));flex-direction:column;gap:10px;padding:12px;display:flex}.confirm p{color:var(--text-2);font-size:var(--fs-sm);margin:0;line-height:1.5}.confirm strong{color:var(--text);font-weight:600}.confirm__actions{justify-content:flex-end;gap:6px;display:flex}.btn--danger{border-color:var(--err);background:var(--err);color:#fff}.btn--danger:hover:not(:disabled){background:var(--err);opacity:.88}.btn--danger-text{color:var(--err)}.drive-pick{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.drive-pick .hint{max-width:52ch}.drive-pick--row{flex-flow:wrap;align-items:center}.manual-files{flex-wrap:wrap;gap:8px;display:flex}.manual-files a.btn{text-decoration:none}.connect-ports{flex-direction:column;align-items:flex-start;gap:8px;margin-top:4px;display:flex}.connect-ports .hint{max-width:60ch}button.link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}button.link:hover{text-decoration:underline}button.link:disabled{opacity:.5;cursor:default}.doc{background:var(--bg);min-height:100%}.doc__head{justify-content:space-between;align-items:center;max-width:720px;margin:0 auto;padding:18px 20px;display:flex}.doc__brand{color:var(--text);align-items:center;gap:8px;font-weight:600;text-decoration:none;display:inline-flex}.doc__body{max-width:720px;color:var(--text-2);margin:0 auto;padding:12px 20px 64px;line-height:1.6}.doc__body h1{color:var(--text);font-size:var(--fs-3xl);letter-spacing:-.022em;margin:16px 0 14px;font-weight:600}.doc__body h2{color:var(--text);font-size:var(--fs-lg);margin:32px 0 8px;font-weight:600}.doc__body p,.doc__body ul{margin:0 0 12px}.doc__body ul{padding-left:20px}.doc__body li+li{margin-top:4px}.doc__body a{color:var(--accent)}.doc__body .doc__foot{border-top:1px solid var(--border);font-size:var(--fs-sm);margin-top:40px;padding-top:16px}
