:root{--bg:#0e1418;--bg2:#182229;--bg3:#1c2830;--text:#d8e0e4;--text-dim:#94a7af;--accent:#48d6a8;--accent-soft:#15332a;--accent-line:#23473a;--accent-dim:#74bca3;--glow:#48d6a829;--green:#48d6a8;--red:#e8737a;--warn:#e8b44a;--warn-soft:#2a2110;--warn-line:#5c4520;--border:#33454f;--border2:#415663;--on-accent:#0e1418;--accent-h:color-mix(in srgb, var(--accent) 75%, white);--accent2:color-mix(in srgb, var(--accent) 88%, black);--key-bg:var(--bg3);--key-hover:color-mix(in srgb, var(--bg3) 88%, var(--text));--key-sel:var(--accent);--key-sel-fg:var(--on-accent);--font-body:"Noto Sans JP", system-ui, "Hiragino Sans", "Yu Gothic UI", "Meiryo", sans-serif;--font-heading:"Space Grotesk", "Noto Sans JP", system-ui, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Menlo", "Monaco", "Consolas", monospace;font-family:var(--font-body);color:var(--text);background:var(--bg);margin:0;font-size:14px}@keyframes kb-pulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes kb-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes kb-sweep{0%{transform:translate(-100%)}to{transform:translate(340%)}}:root[data-theme=light]{--bg:#edf1ef;--bg2:#fff;--bg3:#f5f8f6;--text:#17211e;--text-dim:#586866;--accent:#0e8f6c;--accent-soft:#dcf2ea;--accent-line:#9ad3c0;--accent-dim:#4e9b84;--glow:#0e8f6c24;--green:#0e8f6c;--red:#c94a4f;--warn:#8a5a06;--warn-soft:#fbf1dc;--warn-line:#dfbe7c;--border:#dce4e1;--border2:#c6d2ce;--on-accent:#fff}:root[data-accent=amber]{--bg:#15110c;--bg2:#241d15;--bg3:#2a2219;--text:#e8e0d2;--text-dim:#b0a08a;--accent:#e8b44a;--accent-soft:#33270f;--accent-line:#5c4520;--accent-dim:#c2a066;--glow:#e8b44a29;--warn:#e8b44a;--warn-soft:#2e2410;--warn-line:#61481f;--border:#453829;--border2:#5a4a37;--on-accent:#15110c}:root[data-accent=violet]{--bg:#110f19;--bg2:#221f33;--bg3:#282442;--text:#dcd8ea;--text-dim:#9e97b4;--accent:#a78bfa;--accent-soft:#241e3d;--accent-line:#3e3566;--accent-dim:#a196d0;--glow:#a78bfa2e;--warn:#e8b44a;--warn-soft:#2a2312;--warn-line:#5a4722;--border:#413a5c;--border2:#524a73;--on-accent:#110f19}:root[data-theme=light][data-accent=amber]{--bg:#f4f0e8;--bg2:#fffdf8;--bg3:#faf6ee;--text:#241d14;--text-dim:#6e6151;--accent:#b4770a;--accent-soft:#faebcf;--accent-line:#dfbe7c;--accent-dim:#a98536;--glow:#b4770a24;--warn:#8a5a06;--warn-soft:#f9eed6;--warn-line:#dcbb79;--border:#e6dcc9;--border2:#d4c8b1;--on-accent:#fffdf8}:root[data-theme=light][data-accent=violet]{--bg:#f0eef7;--bg2:#fff;--bg3:#f7f5fc;--text:#1b1727;--text-dim:#666080;--accent:#6d48d6;--accent-soft:#e8e2fb;--accent-line:#bba8f0;--accent-dim:#7d68c0;--glow:#6d48d624;--warn:#84540a;--warn-soft:#f7eeda;--warn-line:#dbb97c;--border:#e1dcee;--border2:#ccc5e0;--on-accent:#fff}.accent-picker{border:1px solid var(--border);background:var(--bg3);border-radius:10px;gap:4px;padding:4px;display:flex}.accent-picker__dot{cursor:pointer;border:1px solid #0000;border-radius:6px;width:18px;height:18px;padding:0}.accent-picker__dot--active{border-color:var(--text)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);overflow-x:hidden}#root{flex-direction:column;width:100%;height:100svh;display:flex;overflow:hidden}.app{flex-direction:column;height:100svh;display:flex;overflow:hidden}.toast{z-index:200;cursor:pointer;text-align:center;border-radius:8px;max-width:480px;padding:12px 20px;font-size:13px;font-weight:500;animation:.2s toast-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0006}.toast--error{color:var(--red);border:1px solid var(--red);background:#f7768e26}.toast--success{color:var(--green);border:1px solid var(--green);background:#9ece6a26}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.app-header{background:var(--bg2);border-bottom:1px solid var(--border);background-image:radial-gradient(120% 180% at 88% -30%, var(--glow), transparent 60%);flex-wrap:wrap;flex:none;align-items:center;gap:16px;padding:12px 24px;display:flex}.app-brand{align-items:center;gap:12px;display:flex}.app-logo{flex-shrink:0;width:auto;height:24px;display:block}.app-brand__sub{font-family:var(--font-mono);letter-spacing:.2em;color:var(--text-dim);white-space:nowrap;align-items:center;gap:2px;font-size:9.5px;font-weight:500;display:flex}.app-brand__cursor{background:var(--accent);width:6px;height:11px;animation:1.3s step-end infinite kb-pulse}.theme-toggle{flex-shrink:0;margin-left:auto;padding:4px 12px;font-size:12px}.connection-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.import-menu-wrap{display:inline-block;position:relative}.import-menu{z-index:50;background:var(--bg2);border:1px solid var(--border);border-radius:8px;flex-direction:column;width:max-content;max-width:min(280px,100vw - 32px);padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0000004d}.import-menu__item{color:var(--text);text-align:left;cursor:pointer;white-space:normal;background:0 0;border:none;border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;font-size:13px;display:flex}.import-menu__item:hover:not(:disabled){background:var(--bg3)}.import-menu__item:disabled{opacity:.4;cursor:not-allowed}.import-menu__desc{color:var(--text-dim);white-space:normal;font-size:11px}.status{border-radius:999px;padding:4px 10px;font-size:13px}.status--connected{font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);align-items:center;gap:8px;padding:7px 13px;font-size:11.5px;font-weight:500;display:inline-flex}.status__dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 9px var(--accent);border-radius:50%;animation:2.2s ease-in-out infinite kb-pulse}.status--error{color:var(--red)}.btn{border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 16px;font-size:13px;font-weight:500;transition:background .15s,opacity .15s}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{font-family:var(--font-heading);background:var(--accent-soft);color:var(--accent);border-color:var(--accent);border-radius:10px;font-weight:700;position:relative;overflow:hidden}.btn--primary:before{content:"";background:linear-gradient(90deg, transparent, var(--glow), transparent);pointer-events:none;width:30%;animation:3.4s ease-in-out infinite kb-sweep;position:absolute;top:0;bottom:0}.btn--primary:hover:not(:disabled){box-shadow:0 0 18px var(--glow)}.btn--ghost{color:var(--text);background:0 0}.btn--ghost:hover{background:var(--bg3)}.btn--small{padding:4px 10px;font-size:12px}.connection-bar .btn:not(.btn--primary){font-family:var(--font-mono);background:var(--bg3);border-color:var(--border2);border-radius:10px;font-size:11.5px}.connection-bar .btn:not(.btn--primary):hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.app-main{flex:1;min-height:0;padding:24px;overflow:hidden auto}.app-footer__warn{color:var(--warn)}.placeholder{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:60vh;display:flex}.placeholder-text{color:var(--text);font-size:18px}.placeholder-note{color:var(--text-dim);font-size:13px}.tabs{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.tab{background:var(--bg2);border:1px solid var(--border);cursor:pointer;font-family:var(--font-heading);color:var(--text-dim);border-radius:999px;padding:9px 17px;font-size:14px;font-weight:500;transition:color .15s,border-color .15s,background .15s}.tab:hover{color:var(--text);border-color:var(--accent)}.tab--active{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.tab:disabled{opacity:.45;cursor:not-allowed}.tab:disabled:hover{color:var(--text-dim);border-color:var(--border)}.tab--disabled{opacity:.45;cursor:not-allowed}.tab--disabled:hover{color:var(--text-dim);border-color:var(--border)}.layer-selector{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;display:flex}.layer-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.layer-tabs{background:var(--bg3);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:3px;padding:3px;display:flex}.layer-tab{cursor:pointer;white-space:nowrap;font-family:var(--font-mono);color:var(--text-dim);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:5px 9px;font-size:10.5px;display:flex;position:relative}.layer-tab:hover{border-color:var(--accent)}.layer-tab--active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.layer-tab--dragging{opacity:.45}.layer-tab__dot{border-radius:2px;flex-shrink:0;width:7px;height:7px}.layer-tab__badge{background:var(--accent);width:5px;height:5px;box-shadow:0 0 0 1px var(--bg3);border-radius:50%;position:absolute;top:3px;right:3px}.layer-toolbar__features{font-family:var(--font-heading);color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;overflow:hidden}.ball-toggle{align-items:center;gap:6px;margin-left:auto;display:flex}.ball-toggle__label{font-family:var(--font-mono);color:var(--text-dim);white-space:nowrap;font-size:10.5px}.ball-toggle__group{background:var(--bg3);border:1px solid var(--border);border-radius:10px;gap:3px;padding:3px;display:flex}.ball-toggle__btn{cursor:pointer;white-space:nowrap;font-family:var(--font-mono);color:var(--text-dim);background:0 0;border:1px solid #0000;border-radius:8px;padding:5px 11px;font-size:10.5px}.ball-toggle__btn:hover{border-color:var(--accent)}.ball-toggle__btn--active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.ball-toggle__btn:disabled{cursor:default}.ball-toggle__btn:disabled:not(.ball-toggle__btn--active){opacity:.4}.ball-toggle__btn:disabled:hover:not(.ball-toggle__btn--active){border-color:#0000}.btn--layer{background:var(--bg2);color:var(--text-dim);border-color:var(--border);white-space:nowrap;min-width:80px}.btn--layer:hover{color:var(--text);background:var(--bg3)}.btn--layer-active{background:var(--accent);color:var(--key-sel-fg);border-color:var(--accent)}.layout-scroll{justify-content:center;padding:44px 0;display:flex;overflow-x:auto}.all-layers-view{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.all-layers-view>p{grid-column:1/-1}.all-layers-item{border:1px solid var(--border);background:var(--bg2);border-radius:8px;min-width:0;padding:4px 8px 8px}.all-layers-item .layout-scroll{padding:8px 0}@media (width<=900px){.all-layers-view{grid-template-columns:1fr}}.all-layers-label{color:var(--text-dim);padding:4px 2px 0;font-size:13px;font-weight:600}.keyboard-layout{flex-shrink:0;display:block}.keyboard-layout-wrap{flex-direction:column;align-items:center;gap:10px;display:flex}.key-desc-bar{text-align:center;background:var(--bg2);border:1px solid var(--border);min-height:38px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;max-width:560px;padding:8px 16px;font-size:13px;line-height:1.5;transition:color .1s;display:flex}.key{background:var(--key-bg);border:1px solid var(--border);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:4px;transition:background .1s,border-color .1s,transform 80ms,box-shadow .1s;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 4px #0000002e}.key:hover{background:var(--key-hover);border-color:var(--accent)}.key--selected{box-shadow:0 0 0 2px color-mix(in srgb, var(--key-sel) 35%, transparent), 0 2px 8px color-mix(in srgb, var(--key-sel) 45%, transparent);background:var(--key-sel)!important;border-color:var(--accent)!important}.key--selected .key__label{color:var(--key-sel-fg)}.key--none{opacity:.35}.key--ball{opacity:.4;cursor:default;pointer-events:none;border-style:dashed}.key--ball .key__label:after{content:" 🖱";font-size:.7em}.key--dragover{transform:scale(1.06);background:color-mix(in srgb, var(--accent) 30%, var(--key-bg))!important;border-color:var(--accent)!important}.key__label{color:var(--text);text-align:center;pointer-events:none;white-space:pre-wrap;word-break:normal;overflow-wrap:break-word;line-break:loose;font-size:11px;font-weight:600;line-height:1.2}.key__dual-wrapper{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.key__shift{color:var(--text-dim);pointer-events:none;font-size:9px;font-weight:500;line-height:1;position:absolute;top:2px;right:3px}.key__main{color:var(--text);text-align:center;pointer-events:none;white-space:pre-wrap;word-break:normal;overflow-wrap:break-word;line-break:loose;font-size:12px;font-weight:700;line-height:1.2}.key--selected .key__main{color:var(--key-sel-fg)}.key--selected .key__shift{color:color-mix(in srgb, var(--key-sel-fg) 60%, transparent)}.keypicker-panel{background:var(--bg2);border:1px solid var(--border);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.keypicker-panel__tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px;padding:10px 12px 0;display:flex}.keypicker-panel__keys{flex-wrap:wrap;gap:5px;max-height:220px;padding:12px;display:flex;overflow-y:auto}.picker-key{background:var(--bg3);border:1px solid var(--border);cursor:pointer;text-align:center;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:54px;padding:8px 5px;transition:background .1s,border-color .1s;display:flex;overflow:hidden}.picker-key:hover{background:var(--key-hover);border-color:var(--accent)}.picker-key--current{background:var(--accent);border-color:var(--accent)}.picker-key--current .picker-key__char,.picker-key--current .picker-key__name{color:var(--key-sel-fg)}.picker-key__char{color:var(--text);white-space:pre-wrap;word-break:break-all;max-width:100%;font-size:13px;font-weight:700;line-height:1.2}.picker-key__name{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:9px;overflow:hidden}.trackball-bar{background:var(--bg2);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.collapsible-card__body .trackball-bar{background:0 0;border:none;border-radius:0;padding:0}.trackball-bar__select{background:var(--bg3);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:4px 8px;font-size:12px}.trackball-bar__select:focus{border-color:var(--accent);outline:none}.trackball-bar__item--invert{flex:none;gap:6px}.trackball-bar__item--invert .btn{min-width:56px}.trackball-bar__title{color:var(--text-dim);white-space:nowrap;font-size:12px;font-weight:600}.trackball-bar__item{flex:1;align-items:center;gap:8px;min-width:180px;display:flex}.trackball-bar__label{color:var(--text-dim);white-space:nowrap;font-size:12px}.trackball-bar__label strong{color:var(--text);margin-left:2px}.trackball-bar__scale{color:var(--text-dim);white-space:nowrap;font-size:10px}.trackball-bar__dpicurve{border-top:1px solid var(--border);flex-direction:column;flex-basis:100%;gap:10px;margin-top:4px;padding-top:12px;display:flex}.slider{accent-color:var(--accent);flex:1;min-width:80px}.led-panel{flex-direction:column;gap:8px;display:flex}.led-panel__title{font-family:var(--font-heading);color:var(--text);font-size:15px;font-weight:700}.led-panel__toprow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.led-panel__effect-select{flex:0 auto;min-width:0;max-width:160px;margin-left:auto}.led-panel__targets{background:var(--bg3);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;flex-shrink:0;gap:3px;padding:3px;display:flex}.led-panel__target{cursor:pointer;font-family:var(--font-mono);color:var(--text-dim);background:0 0;border:1px solid #0000;border-radius:8px;padding:5px 11px;font-size:10.5px;position:relative}.led-panel__target:hover{border-color:var(--accent)}.led-panel__target--active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.led-panel__target--on:after{content:"";background:var(--accent);border-radius:50%;width:4px;height:4px;position:absolute;top:2px;right:2px}.led-panel__target-select{font-family:var(--font-mono);border:1px solid var(--border);background:var(--bg3);color:var(--text);border-radius:8px;padding:6px 10px;font-size:11px;display:none}@media (width<=980px){.led-panel__targets{display:none}.led-panel__target-select{display:block}}.led-panel__bar{border:1px solid var(--border2);border-radius:7px;height:22px;position:relative;overflow:hidden}.led-panel__bar-fill{position:absolute;inset:0}.led-panel__marker{background:#fff;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 6px #ffffffb3}.led-panel__sliders{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 28px;padding-top:8px;display:grid}.led-panel__slider{align-items:center;gap:10px;display:flex}.led-panel__slider-label{color:var(--text-dim);flex:0 0 32px;font-size:11px}.led-panel__slider-value{font-family:var(--font-mono);text-align:right;font-feature-settings:"tnum";width:34px;color:var(--accent);flex:none;font-size:11px}.led-effect-selector{flex-wrap:wrap;gap:6px;display:flex}.keymap-view{flex-direction:column;gap:16px;display:flex}.keymap-grid{grid-template-columns:minmax(0,3fr) minmax(400px,1fr);align-items:start;gap:12px;display:grid}@media (width<=980px){.keymap-grid{grid-template-columns:1fr}}.keymap-left-panel{flex-direction:column;gap:10px;min-width:0;display:flex}.keymap-keyboard-card{border:1px solid var(--border);background:var(--bg2);border-radius:14px;flex-direction:column;gap:10px;min-width:0;padding:10px;display:flex}.keymap-right-panel{border:1px solid var(--border);background:var(--bg2);border-radius:14px;flex-direction:column;min-width:0;display:flex;overflow:hidden}.keymap-led-panel{border:1px solid var(--border);background:var(--bg2);border-radius:14px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}@media (width<=980px){.keymap-left-panel{display:contents}.keymap-keyboard-card{order:1}.keymap-right-panel{order:2}.keymap-led-panel{order:3}.keymap-right-panel{height:auto!important;max-height:none!important}}.keymap-version{color:var(--text-dim);text-align:center;margin-top:-10px;padding:0 2px;font-size:11px}.key-config-panel{flex-direction:column;height:100%;display:flex}.key-config-panel__header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:11px 14px;display:flex}.key-config-panel__title{font-family:var(--font-heading);color:var(--text);font-size:15px;font-weight:700}.key-config-panel__current{color:var(--text-dim);font-size:11.5px}.key-config-panel__code{font-family:var(--font-mono);color:var(--text-dim);font-size:10.5px}.key-config-panel__pos{font-family:var(--font-mono);color:var(--text-dim);white-space:nowrap;margin-left:auto;font-size:10px}.modal-body.key-config-panel__body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.key-config-panel__empty{text-align:center;color:var(--text-dim);padding:40px 20px;font-size:13px}.flash-step{align-items:flex-start;gap:16px;display:flex}.flash-step-num{background:var(--accent);color:#1a1b26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;margin-top:2px;font-size:13px;font-weight:700;display:flex}.flash-step-body{flex-direction:column;flex:1;gap:10px;display:flex}.flash-step-label{color:var(--text);font-size:13px;line-height:1.5}.fw-source-tabs{background:var(--bg3);border-radius:8px;gap:4px;width:fit-content;padding:4px;display:flex}.fw-source-tab{cursor:pointer;color:var(--text-dim);background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:500;transition:background .15s,color .15s}.fw-source-tab:hover{color:var(--text)}.fw-source-tab--active{background:var(--bg2);color:var(--accent)}.model-selector{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.detected-model{color:var(--green);margin-left:4px;font-size:12px}.countdown-box{background:var(--bg2);border:1px solid var(--accent);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:24px;display:flex}.countdown-label{color:var(--accent);font-size:15px;font-weight:700}.countdown-num{color:var(--accent);font-variant-numeric:tabular-nums;font-size:64px;font-weight:900;line-height:1}.countdown-sub{color:var(--text-dim);font-size:12px}.file-input{color:var(--text);background:var(--bg2);border:1px solid var(--border);cursor:pointer;border-radius:6px;width:100%;padding:8px 10px;font-size:13px}.file-input::file-selector-button{background:var(--bg3);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;margin-right:10px;padding:4px 10px;font-size:12px}.flash-file-name{color:var(--green);font-size:12px}.flash-alert{border-radius:8px;padding:12px 16px;font-size:13px;line-height:1.5}.flash-alert--info{color:var(--accent);border:1px solid var(--accent);background:#7aa2f726}.flash-alert--warn{color:#e0af68;background:#e0af6826;border:1px solid #e0af68}.flash-alert--done{color:var(--green);border:1px solid var(--green);background:#9ece6a26}.flash-alert--error{color:var(--red);border:1px solid var(--red);background:#f7768e26}.flash-alert--collapsible summary{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}.flash-alert--collapsible summary:hover{opacity:.8}.flash-alert--collapsible p{margin-top:8px}.flash-progress-wrap{background:var(--bg3);border-radius:12px;height:24px;position:relative;overflow:hidden}.flash-progress-bar{background:var(--accent);border-radius:12px;height:100%;transition:width .3s}.flash-progress-label{color:var(--key-sel-fg);justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;position:absolute;inset:0}.tap-picker{flex-direction:column;gap:6px;display:flex}.tap-picker__search-wrap{position:relative}.tap-picker__tabs{flex-wrap:wrap;gap:3px;display:flex}.tap-picker__tabs .tab{padding:4px 10px;font-size:12px}.tap-picker__grid{grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:3px;max-height:200px;padding:2px;display:grid;overflow-y:auto}.builder-panel{flex-direction:column;gap:14px;display:flex}.builder-panel__set{align-self:flex-start}.builder-section{flex-direction:column;gap:6px;display:flex}.builder-section__label{color:var(--text-dim);font-size:12px;font-weight:600}.key-config-panel__body .builder-panel,.key-config-panel__body .builder-section--grow,.key-config-panel__body .builder-section--grow .tap-picker{flex:1;min-height:0}.key-config-panel__body .builder-section--grow .tap-picker__grid{flex:1;align-content:start;min-height:0;max-height:none}.builder-mod-buttons{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.builder-mod-hint{color:var(--text-dim);margin-left:4px;font-size:11px}.builder-layer-buttons{flex-wrap:wrap;gap:8px;display:flex}.builder-preview{color:var(--accent);background:var(--bg3);border-radius:6px;padding:8px 12px;font-size:13px}.builder-preview strong{color:var(--text)}.builder-preview__hint{color:var(--text-dim);margin-top:2px;font-size:11.5px;display:block}.keypicker-panel__type-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:8px;padding:8px 8px 0;display:flex}.mt-builder{flex-direction:column;gap:10px;padding:12px;display:flex}.mt-builder__desc{color:var(--text-dim);font-size:12px}.mt-builder__row{align-items:center;gap:8px;display:flex}.mt-builder__row label{min-width:120px;font-size:12px}.mt-builder__row select{background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1;padding:4px 8px}.mt-builder__preview{color:var(--accent);background:var(--bg3);border-radius:4px;padding:6px 10px;font-size:12px}.mt-builder__set{align-self:flex-start;margin-top:4px}.td-picker{padding:12px}.td-picker__desc{color:var(--text-dim);margin-bottom:10px;font-size:12px}.td-picker__slots{flex-wrap:wrap;gap:6px;display:flex}.picker-key--td{background:var(--bg3);min-width:56px;font-weight:600}.td-slots{flex-direction:column;gap:12px;display:flex}.td-slot{border:1px solid var(--border);border-radius:8px;overflow:hidden}.td-slot__header{background:var(--bg3);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.td-slot__label{color:var(--accent);min-width:44px;font-weight:700}.td-slot__summary{color:var(--text-dim);flex:1;font-size:12px}.td-slot__body{flex-direction:column;gap:8px;padding:10px 12px;display:flex}.td-row{align-items:center;gap:8px;font-size:13px;display:flex}.td-row span{min-width:150px;color:var(--text-dim)}.td-keycode-select{background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1;padding:4px 8px}.td-saving{color:var(--accent);margin-left:auto;font-size:11px}.settings-desc{color:var(--text-dim);margin-bottom:12px;font-size:12px;line-height:1.6}.layout-toggle-row{gap:10px;margin-bottom:10px;display:flex}.layout-toggle-btn{border:2px solid var(--border);background:var(--bg3);color:var(--text-dim);cursor:pointer;text-align:center;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:4px;padding:10px 14px;font-size:14px;font-weight:600;transition:all .15s;display:flex}.layout-toggle-btn:hover{border-color:var(--accent);color:var(--text)}.layout-toggle-btn--active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 15%, var(--bg3));color:var(--accent)}.layout-toggle-example{color:var(--text-dim);font-size:11px;font-weight:400}.layout-toggle-btn--active .layout-toggle-example{color:var(--accent);opacity:.8}.settings-card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:16px 20px}.settings-card h2{font-family:var(--font-heading);color:var(--text);margin-bottom:12px;font-size:16px;font-weight:700}.feedback-tab{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:12px 16px;padding:4px 0;display:grid}.feedback-tab>.feedback-intro,.feedback-tab>.feedback-note{grid-column:1/-1}@media (width<=900px){.feedback-tab{grid-template-columns:minmax(0,1fr)}}.feedback-intro{color:var(--text);font-size:14px;line-height:1.7}.feedback-card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;gap:16px;padding:18px 20px;display:flex}.feedback-card__icon{flex-shrink:0;font-size:28px;line-height:1.2}.feedback-card__body{flex-direction:column;flex:1;gap:10px;display:flex}.feedback-card__title{color:var(--text);font-size:16px;font-weight:700}.feedback-card__desc{color:var(--text-dim);font-size:13px;line-height:1.7}.feedback-examples{flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.feedback-examples li{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--bg3));border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:999px;padding:3px 10px;font-size:11px}.feedback-card__btn{align-self:flex-start;margin-top:auto;text-decoration:none}.feedback-note{color:var(--text-dim);font-size:11px;line-height:1.6}.collapsible-card{overflow:hidden;padding:0!important}.collapsible-card__header{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:16px 20px;transition:background .15s;display:flex}.collapsible-card__header:hover{background:var(--bg3)}.collapsible-card__title{font-family:var(--font-heading);color:var(--text);font-size:16px;font-weight:700}.collapsible-card__title .settings-unit{font-size:12px;font-weight:400}.collapsible-card__chevron{color:var(--text-dim);flex-shrink:0;font-size:11px}.collapsible-card__body{padding:0 20px 18px;animation:.18s collapse-in}@keyframes collapse-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.macos-layout-toggle{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.macos-layout-label{color:var(--text);white-space:nowrap;font-size:13px}.macos-toggle-btn{flex:0 auto;min-width:130px;padding:8px 12px}.macos-steps{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.macos-step{color:var(--text);align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;display:flex}.macos-step__num{color:var(--accent);flex-shrink:0;min-width:20px;font-weight:700}.macos-command-block{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:stretch;gap:0;margin-bottom:10px;display:flex;overflow:hidden}.macos-command-text{color:var(--green);word-break:break-all;white-space:pre-wrap;flex:1;padding:10px 12px;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;font-size:11px;line-height:1.5;overflow-x:auto}.macos-copy-btn{background:var(--bg3);border:none;border-left:1px solid var(--border);cursor:pointer;color:var(--text);white-space:nowrap;flex-shrink:0;padding:10px 16px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.macos-copy-btn:hover{background:var(--key-hover)}.macos-copy-btn--done{background:color-mix(in srgb, var(--green) 15%, var(--bg3));color:var(--green)}.macos-setup-note{color:var(--text-dim);margin-top:8px;font-size:11px;line-height:1.6}.layout-toggle-note{color:var(--text-dim);background:var(--bg3);border-left:3px solid var(--accent);border-radius:6px;padding:8px 12px;font-size:12px;line-height:1.6}.btn--sm{padding:3px 8px;font-size:11px}.settings-tab{flex-direction:column;gap:16px;padding:0;display:flex}.settings-notice{background:var(--bg3);border:1px solid var(--border);color:var(--text-dim);border-radius:8px;padding:12px 16px;font-size:13px}.settings-unit{color:var(--text-dim);margin-left:8px;font-size:12px;font-weight:400}.tapping-term-row{align-items:center;gap:16px;margin-top:12px;display:flex}.tapping-term-slider{accent-color:var(--accent);flex:1;height:4px}.tapping-term-value{color:var(--accent);text-align:right;min-width:60px;font-size:15px;font-weight:700}.tapping-term-hints{color:var(--text-dim);justify-content:space-between;margin-top:6px;font-size:11px;display:flex}.setting-rows{flex-direction:column;gap:2px;display:flex}.setting-row{border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:14px 0;display:flex}.setting-row:last-child{border-bottom:none}.setting-row--disabled{opacity:.5}.setting-row__text{flex-direction:column;flex:1;gap:4px;display:flex}.setting-row__label{font-size:14px;font-weight:600}.setting-row__desc{color:var(--text-dim);font-size:12px;line-height:1.5}.toggle-btn{border:1px solid var(--border);background:var(--bg3);min-width:54px;color:var(--text-dim);cursor:pointer;border-radius:20px;flex-shrink:0;padding:6px 12px;font-size:12px;font-weight:700;transition:background .15s,color .15s,border-color .15s}.toggle-btn--on{background:var(--accent);color:var(--bg);border-color:var(--accent)}.toggle-btn:disabled{cursor:not-allowed}.dpi-curve{flex-direction:column;gap:4px;display:flex}.dpi-curve__graph{align-items:stretch;gap:6px;display:flex}.dpi-curve__svg{background:var(--bg3);border:1px solid var(--border);touch-action:none;border-radius:8px;width:100%;height:220px}.dpi-curve__grid{stroke:var(--border);stroke-width:.4px}.dpi-curve__diagonal{fill:none;stroke:var(--text-dim);stroke-width:.6px;stroke-dasharray:2 2}.dpi-curve__line{fill:none;stroke:var(--accent);stroke-width:1.4px}.dpi-curve__point{fill:var(--accent);stroke:var(--bg);stroke-width:.6px;cursor:grab}.dpi-curve__point--active{fill:var(--accent-h);cursor:grabbing}.dpi-curve__point--preview{fill:var(--text-dim);cursor:default}.dpi-curve__axis-y{writing-mode:vertical-rl;color:var(--text-dim);flex-direction:column-reverse;justify-content:space-between;align-items:center;padding:4px 0;font-size:11px;display:flex}.dpi-curve__axis-x{color:var(--text-dim);justify-content:space-between;padding:0 2px;font-size:11px;display:flex}.dpi-curve__values{color:var(--text-dim);justify-content:space-between;padding:0 2px;font-size:11px;font-weight:600;display:flex}.dpi-curve__value--active{color:var(--accent)}.led-test-panel{border:1px solid var(--border);background:var(--bg2);border-radius:10px;flex-direction:column;gap:14px;max-width:640px;margin:0 auto;padding:20px;display:flex}.led-test-panel--embedded{background:0 0;border:none;max-width:none;margin:0;padding:0}.settings-card-title{color:var(--text);font-size:16px;font-weight:700}.led-test-desc,.led-test-hint{color:var(--text-dim);font-size:13px;line-height:1.6}.led-test-hint{color:var(--accent);font-weight:600}.led-test-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.led-test-index{color:var(--accent);min-width:100px;font-size:20px;font-weight:700}.led-test-progress{color:var(--text-dim);font-size:12px}.led-test-layout-wrap{padding-bottom:8px;overflow-x:auto}.led-rec-key{background:var(--key-bg);border:1px solid var(--border);cursor:pointer;border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:2px;transition:background .1s,border-color .1s;display:flex}.led-rec-key:hover:not(:disabled){background:var(--key-hover);border-color:var(--accent)}.led-rec-key__id{color:var(--text-dim);pointer-events:none;font-size:10px;font-weight:600}.led-rec-key__led{color:#ff6400;pointer-events:none;font-size:11px;font-weight:700}.led-rec-key--mapped{background:color-mix(in srgb, #ff6400 18%, var(--key-bg));border-color:#ff6400}.led-rec-key--ball{opacity:.25;cursor:not-allowed}.led-rec-key--dim{opacity:.35}.led-rec-key:disabled{cursor:not-allowed}.led-layout-bg--picking{cursor:crosshair}.led-layout-overlay{cursor:crosshair;z-index:10}.underglow-dot--recorded{pointer-events:none;z-index:5;background:#a78bfa66;border:2px solid #a78bfa;border-radius:50%;width:14px;height:14px;position:absolute}.led-mapping-table{border:1px solid var(--border);background:var(--bg);border-radius:6px;flex-direction:column;gap:2px;max-height:320px;padding:8px;display:flex;overflow-y:auto}.led-map-row{border-radius:4px;gap:12px;padding:3px 6px;font-size:12px;display:flex}.led-map-idx{color:var(--text-dim);min-width:52px;font-weight:700}.led-map-val{color:var(--text)}.led-map-row--key{background:#ff64001a}.led-map-row--underglow{background:#a78bfa1f}.led-map-row--skip{background:color-mix(in srgb, var(--accent) 10%, transparent)}.led-map-row--unmapped{opacity:.45}.underglow-board-wrap{flex-direction:column;gap:6px;display:flex}.underglow-board{border:2px solid var(--border);background:var(--bg);cursor:crosshair;border-radius:6px;position:relative;overflow:hidden}.underglow-board__pcb{border:1px dashed color-mix(in srgb, var(--accent) 50%, transparent);pointer-events:none;border-radius:3px;position:absolute;top:6px;bottom:6px}.underglow-board__pcb-label{color:var(--text-dim);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.underglow-dot{pointer-events:none;background:#ff8c0059;border:1.5px solid #ff8c00d9;border-radius:50%;width:14px;height:14px;position:absolute}.underglow-board__hint{color:var(--text-dim);font-size:11px}.mod-bar{background:var(--bg3);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:6px;margin-bottom:10px;padding:8px 10px;display:flex}.mod-bar__row{align-items:center;gap:4px;display:flex}.mod-bar__row .btn--layer{white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;padding:5px 4px;font-size:11px;overflow:hidden}.mod-bar__hint{color:var(--accent);font-size:11px}.mod-bar__hint strong{color:var(--text)}.picker-key--dim{opacity:.3}.hold-kind-tabs{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.hold-kind-tabs .tab{white-space:nowrap;padding:4px 14px;font-size:12px}.custom-hex-input{letter-spacing:1px;max-width:200px;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;font-size:16px}.modal-overlay{z-index:1000;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-dialog{background:var(--bg2);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:860px;max-width:96vw;max-height:88vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0009}.modal-header{border-bottom:1px solid var(--border);background:var(--bg3);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-title{color:var(--text-dim);font-size:14px}.modal-title strong{color:var(--accent);font-size:15px}.modal-title__code{color:var(--text-dim);margin-left:6px;font-size:11px}.modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:18px;line-height:1}.modal-close:hover{color:var(--text);background:var(--bg)}.modal-type-tabs{border-bottom:1px solid var(--border);gap:4px;padding:10px 14px;display:flex}.modal-type-tabs .tab{padding:6px 16px;font-size:13px}.key-config-panel__side-hint{color:#fff;border:1px solid var(--accent);z-index:200;pointer-events:none;background:#7aa2f7eb;border-radius:8px;max-width:240px;padding:10px 14px;font-size:12px;line-height:1.5;animation:.15s side-hint-in;position:fixed;right:24px;box-shadow:0 4px 20px #0006}@keyframes side-hint-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.modal-body{flex:1;padding:14px;overflow-y:auto}.gesture-grid{flex-direction:column;gap:8px;margin:10px 0;display:flex}.gesture-row{align-items:center;gap:12px;display:flex}.gesture-dir{width:60px;color:var(--text);font-weight:600}.gesture-key-btn{background:var(--bg2);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;border-radius:6px;flex:1;padding:8px 12px;font-size:14px}.gesture-key-btn:hover:not(:disabled){background:var(--bg3);border-color:var(--accent)}.gesture-key-btn:disabled{opacity:.5;cursor:not-allowed}.modal-search{margin-bottom:10px;position:relative}.modal-search__input{background:var(--bg3);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:8px 36px 8px 12px;font-size:13px}.modal-search__input:focus{border-color:var(--accent);outline:none}.modal-search__clear{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.modal-search__clear:hover{color:var(--text);background:var(--bg)}.modal-panel__tabs{flex-wrap:wrap;gap:4px;margin-bottom:10px;display:flex}.modal-panel__grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:4px;max-height:380px;padding:2px;display:grid;overflow-y:auto}.key-config-panel__body .modal-panel__grid{flex:1;min-height:0;max-height:none;overflow-y:auto}.key-picker-toolbar{align-items:stretch;gap:6px;margin-bottom:10px;display:flex}.key-picker-toolbar__select{cursor:pointer;min-width:0;font-family:var(--font-heading);border:1px solid var(--border2);background:var(--bg3);color:var(--text);border-radius:10px;flex:0 0 40%;padding:8px 10px;font-size:12px}.key-picker-toolbar__select:focus{border-color:var(--accent);outline:none}.key-picker-toolbar__search{border:1px solid var(--border2);background:var(--bg3);border-radius:10px;flex:1;align-items:center;gap:8px;min-width:0;padding:8px 11px;display:flex}.key-picker-toolbar__chevron{font-family:var(--font-mono);color:var(--accent);font-size:11.5px}.key-picker-toolbar__search input{min-width:0;font-family:var(--font-mono);color:var(--text);background:0 0;border:0;outline:none;flex:1;font-size:11.5px}.modal-panel__grid--compact{grid-template-columns:repeat(auto-fill,minmax(58px,1fr));grid-auto-rows:minmax(54px,auto);align-content:start;gap:6px;max-height:none}.picker-empty{text-align:center;color:var(--text-dim);grid-column:1/-1;padding:24px 0;font-size:13px}.modal-result-count{color:var(--text-dim);text-align:right;margin-top:6px;font-size:11px}.modal-td__slots{flex-direction:column;gap:10px;display:flex}.modal-td__slot{border:1px solid var(--border);border-radius:8px;overflow:hidden}.modal-td__slot--active{border-color:var(--accent)}.modal-td__slot-header{background:var(--bg3);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.modal-td__slot-body{flex-direction:column;gap:8px;padding:8px 12px;display:flex}.btn--unsaved{animation:2s ease-in-out infinite unsaved-pulse;position:relative}@keyframes unsaved-pulse{0%,to{box-shadow:0 0 #7aa2f780}50%{box-shadow:0 0 0 6px #7aa2f700}}.guide-tooltip{z-index:3000;background:var(--bg2);border:1px solid var(--accent);border-radius:10px;width:320px;max-width:calc(100vw - 24px);padding:12px 14px;animation:.2s guide-in;position:fixed;box-shadow:0 8px 24px #0000004d}@keyframes guide-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1}}.guide-tooltip--floating{bottom:24px;left:50%;transform:translate(-50%)}.guide-tooltip__head{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.guide-tooltip__step{color:var(--accent);font-size:11px;font-weight:700}.guide-tooltip__close{color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:12px}.guide-tooltip__close:hover{color:var(--text);background:var(--bg3)}.guide-tooltip__title{margin-bottom:4px;font-size:14px;font-weight:700}.guide-tooltip__desc{color:var(--text-dim);font-size:12px;line-height:1.7}.guide-tooltip__actions{justify-content:flex-end;margin-top:10px;display:flex}.guide-arrow{background:var(--bg2);z-index:3001;width:12px;height:12px;position:fixed;transform:rotate(45deg)}.guide-arrow--below{border-left:1px solid var(--accent);border-top:1px solid var(--accent)}.guide-arrow--above{border-right:1px solid var(--accent);border-bottom:1px solid var(--accent)}.guide-arrow--right{border-left:1px solid var(--accent);border-bottom:1px solid var(--accent)}.guide-arrow--left{border-right:1px solid var(--accent);border-top:1px solid var(--accent)}.guide-highlight{z-index:2999;border:2px solid var(--accent);pointer-events:none;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 20%, transparent);border-radius:8px;position:fixed}.guide-done{z-index:3000;background:var(--bg2);border:1px solid var(--green);color:var(--green);border-radius:10px;padding:12px 20px;font-size:14px;font-weight:700;animation:.2s guide-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0000004d}.macro-editor{flex-direction:column;gap:16px;padding:4px 0;display:flex}.macro-buffer-bar{color:var(--text-dim);align-items:center;gap:10px;font-size:11px;display:flex}.macro-buffer-label{flex-shrink:0}.macro-buffer-track{background:var(--bg3);border-radius:3px;flex:1;height:6px;overflow:hidden}.macro-buffer-fill{border-radius:3px;height:100%;transition:width .3s,background .3s}.macro-buffer-pct{flex-shrink:0}.macro-layout{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.macro-slot-list{flex-direction:column;flex-shrink:0;gap:4px;min-width:220px;display:flex}.macro-slot-btn{background:var(--bg2);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:6px;align-items:center;gap:8px;width:100%;padding:7px 10px;transition:background .1s,border-color .1s;display:flex}.macro-slot-btn:hover:not(:disabled){background:var(--bg3);border-color:var(--accent)}.macro-slot-btn--active{background:var(--accent)!important;border-color:var(--accent)!important}.macro-slot-btn--active .macro-slot-id,.macro-slot-btn--active .macro-slot-preview{color:var(--key-sel-fg)!important}.macro-slot-btn:disabled{opacity:.4;cursor:not-allowed}.macro-slot-id{color:var(--accent);min-width:28px;font-size:11px;font-weight:700}.macro-slot-btn--active .macro-slot-id{color:var(--key-sel-fg)}.macro-slot-preview{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;overflow:hidden}.macro-slot-btn--has-data .macro-slot-preview{color:var(--text)}.macro-edit-panel{background:var(--bg2);border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;gap:14px;min-width:300px;padding:16px;display:flex}.macro-edit-title{color:var(--accent);font-size:15px;font-weight:700}.macro-edit-hint{color:var(--text-dim);margin-left:8px;font-size:11px;font-weight:400}.macro-steps{flex-direction:column;gap:6px;display:flex}.macro-step{align-items:center;gap:8px;display:flex}.macro-step-num{color:var(--text-dim);text-align:right;min-width:16px;font-size:12px;font-weight:600}.macro-kc-select{flex:1;align-items:center;gap:6px;display:flex}.macro-kc-search{background:var(--bg3);border:1px solid var(--border);width:110px;color:var(--text);border-radius:4px;flex-shrink:0;padding:4px 8px;font-size:11px}.macro-kc-search:focus{border-color:var(--accent);outline:none}.macro-kc-dropdown{background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:4px;flex:1;padding:4px 6px;font-size:12px}.macro-kc-dropdown:focus{border-color:var(--accent);outline:none}.macro-edit-actions{flex-wrap:wrap;gap:8px;display:flex}.macro-edit-desc{color:var(--text-dim);font-size:11px;line-height:1.6}.macro-edit-header{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.macro-edit-toolbar{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.btn--record-stop{cursor:pointer;background:var(--red);color:#fff;border:none;border-radius:6px;padding:6px 16px;font-size:13px;font-weight:700;animation:1s ease-in-out infinite rec-pulse}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.7}}.macro-recording-indicator{border:1px solid var(--red);color:var(--red);background:#f7768e1f;border-radius:8px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.macro-rec-dot{font-size:10px;animation:.8s ease-in-out infinite rec-pulse}.macro-rec-count{opacity:.8;margin-left:auto;font-size:11px}.mstep-recording{background:var(--bg3);border-radius:6px;align-items:center;gap:8px;padding:5px 8px;animation:.15s step-in;display:flex}@keyframes step-in{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.mstep-rec-key{color:var(--text);min-width:32px;font-size:14px;font-weight:700}.mstep-rec-delay{color:var(--text-dim);background:var(--bg2);border-radius:4px;padding:2px 6px;font-size:11px}.mstep{flex-direction:column;gap:2px;display:flex}.mstep-delay{align-items:center;padding-left:28px;display:flex}.mstep-delay-badge{color:var(--text-dim);background:var(--bg3);border-radius:4px;align-items:center;gap:4px;padding:2px 6px;font-size:11px;display:flex}.mstep-delay-input{background:var(--bg2);border:1px solid var(--border);width:56px;color:var(--text);text-align:right;border-radius:3px;padding:1px 4px;font-size:11px}.mstep-delay-rm{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:12px;line-height:1}.mstep-delay-rm:hover{color:var(--red)}.mstep-delay-add{border:1px dashed var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:4px;padding:1px 8px;font-size:10px}.mstep-delay-add:hover{border-color:var(--accent);color:var(--accent)}.mstep-key{background:var(--bg3);border-radius:6px;align-items:center;gap:6px;padding:4px 6px;display:flex}.mstep-num{color:var(--text-dim);text-align:right;min-width:16px;font-size:11px;font-weight:600}.mstep-key-btn{background:var(--bg2);border:1px solid var(--border);color:var(--accent);text-align:center;cursor:pointer;white-space:pre-line;border-radius:4px;flex:1;padding:4px 10px;font-size:13px;font-weight:700}.mstep-key-btn:hover{border-color:var(--accent)}.mstep-hold-btn{background:var(--bg2);color:var(--text-dim);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:4px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600;transition:background .1s,color .1s,border-color .1s}.mstep-hold-btn:hover{border-color:var(--accent);color:var(--text)}.mstep-hold-btn--on{background:color-mix(in srgb, var(--accent) 18%, var(--bg2));color:var(--accent);border-color:var(--accent)}.mstep-delete{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:13px;line-height:1}.mstep-delete:hover{color:var(--red);background:#f7768e1a}.macro-empty-hint{color:var(--text-dim);text-align:center;padding:16px 0;font-size:12px}.matrix-layout-wrap{width:100%;margin-top:8px;position:relative;overflow:hidden}.matrix-key{border:1.5px solid var(--border);background:var(--key-bg);-webkit-user-select:none;user-select:none;border-radius:5px;justify-content:center;align-items:center;transition:background 80ms,border-color 80ms,box-shadow 80ms;display:flex}.matrix-key__label{color:var(--text-dim);pointer-events:none;font-size:9px}.matrix-key--idle{opacity:.5}.matrix-key--pressed{background:#22c55e;border-color:#16a34a;box-shadow:0 0 8px #22c55e88}.matrix-key--pressed .matrix-key__label{color:#fff;font-weight:700}.matrix-key--touched{background:#14532d55;border-color:#22c55e88}.matrix-key--touched .matrix-key__label{color:#86efac}.reorder-bar{background:color-mix(in srgb, var(--accent) 14%, transparent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0;padding:8px 12px;font-size:13px;display:flex}.btn--layer[draggable=true]{cursor:grab}.btn--layer-dragging{opacity:.45}.settings-board{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:start;gap:12px;display:grid}.board-card{border:1px solid var(--border);background:var(--bg2);border-radius:14px;flex-direction:column;min-width:0;min-height:0;display:flex}.board-card__head{border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;align-items:center;gap:6px 10px;padding:9px 14px;display:flex}.board-card__title{font-family:var(--font-heading);color:var(--text);white-space:nowrap;font-size:14px;font-weight:700}.board-card__note{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px;overflow:hidden}.board-card__head-right{align-items:center;margin-left:auto;display:flex}.board-card__head-right .toggle-btn{padding-block:3px}.board-card__tabs{background:var(--bg3);border-radius:8px;gap:2px;margin-left:auto;padding:2px;display:flex}.board-card__tab{color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:3px 9px;font-size:11.5px;font-weight:600}.board-card__tab:hover{color:var(--text)}.board-card__tab--active{background:var(--bg2);color:var(--accent);box-shadow:0 1px 2px #00000014}.board-card__body{scrollbar-width:thin;flex:1;min-height:0;padding:10px 14px;overflow:hidden auto}.board-card .settings-desc{margin-bottom:4px;line-height:1.5}.board-card .tapping-term-row{gap:10px;margin-top:4px}.board-card .tapping-term-value{min-width:48px;font-size:14px}.board-card .tapping-term-hints{gap:8px;margin-top:1px;font-size:10px;line-height:1.3}.board-card .tapping-term-hints>span:last-child{text-align:right}.board-card .tapping-term-hints>span:nth-child(2):not(:last-child){display:none}.board-card select{max-width:100%}.board-card .setting-row{gap:10px;padding:7px 0}.board-card .setting-row__label{font-size:13px}.board-card .gesture-grid{gap:6px;margin:6px 0}.board-card .gesture-row{gap:8px}.board-card .gesture-dir{width:auto;min-width:40px;font-size:13px}.board-card .gesture-key-btn{text-overflow:ellipsis;white-space:nowrap;min-width:0;padding:6px 10px;font-size:13px;overflow:hidden}.board-card .trackball-bar{background:0 0;border:none;border-radius:0;gap:10px 16px;padding:0}.board-card .trackball-bar__item{flex-basis:100%;min-width:0}.board-card .trackball-bar__dpicurve{border-top:none;gap:6px;margin-top:0;padding-top:0}.board-card .dpi-curve__svg{height:clamp(100px,50vh - 280px,220px)}.board-card .led-test-panel{gap:8px}.board-card .led-test-desc{font-size:12px;line-height:1.5}.board-card .macos-layout-toggle{margin-bottom:8px}.board-card .macos-steps{gap:2px;margin-bottom:6px}.board-card .macos-step{font-size:12px}.board-card .macos-command-text{padding:6px 10px;line-height:1.4}.board-card .macos-setup-note{margin-top:4px;line-height:1.5}.settings-guide-card{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.td-grid{border-top:1px solid var(--border);grid-template-columns:auto repeat(3,minmax(0,1fr));align-items:center;gap:6px 8px;margin-top:8px;padding-top:8px;display:grid}.td-grid__head{color:var(--text-dim);text-align:center;font-size:11px}.td-grid__label{white-space:nowrap;margin-left:0}.td-grid__key{text-overflow:ellipsis;white-space:nowrap;text-align:center;min-width:0;overflow:hidden}@media (width>=1100px) and (height>=760px){.settings-board--fit .macro-layout{flex-wrap:nowrap;gap:12px}.settings-board--fit .macro-slot-list{width:36%;min-width:0}.settings-board--fit .macro-edit-panel{min-width:0;padding:12px}.app-main:has(.settings-board--fit){flex-direction:column;display:flex}.app-main:has(.settings-board--fit)>.tabs{flex:none;margin-bottom:14px}.settings-tab:has(>.settings-board--fit)>.settings-notice{flex:none;padding:8px 14px}.settings-tab:has(>.settings-board--fit){flex:1;min-height:0}.settings-board--fit{grid-template-columns:var(--board-cols);grid-template-rows:var(--board-rows);grid-template-areas:var(--board-areas);flex:1;align-items:stretch;min-height:0}.settings-board--fit>.board-card{grid-area:var(--area)}.board-card--ball .trackball-bar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-rows:min-content;align-items:center;gap:10px 16px;display:grid}.board-card--ball .trackball-bar__title{display:none}.board-card--ball .trackball-bar>:not(.trackball-bar__dpicurve){grid-column:1}.board-card--ball .trackball-bar__dpicurve{grid-area:1/2/span 3;align-self:start}.board-card--gesture .gesture-card__cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px;display:grid}}.motion-col__head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.motion-col__title{color:var(--text);font-size:13px;font-weight:700}.motion-col__head .toggle-btn{padding-block:3px}.motion-col+.motion-col{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}@media (width>=1100px) and (height>=760px){.board-card--motion .motion-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px;display:grid}.board-card--motion .motion-col+.motion-col{border-top:none;border-left:1px solid var(--border);margin-top:0;padding-top:0;padding-left:16px}}.ball-precision{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.card-sep,.scroll-card__inertia{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}@media (width>=1100px) and (height>=760px){.board-card--scroll .scroll-card{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px;display:grid}.board-card--scroll .scroll-card__inertia{border-top:none;border-left:1px solid var(--border);margin-top:0;padding-top:0;padding-left:16px}}.board-sidebar-layout{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:12px;display:grid}.board-sidebar{flex-direction:column;gap:4px;display:flex}.board-sidebar__item{text-align:left;border:1px solid var(--border);background:var(--bg2);font-family:var(--font-heading);color:var(--text);cursor:pointer;border-radius:10px;padding:11px 14px;font-size:13px;font-weight:700}.board-sidebar__item:hover{border-color:var(--accent)}.board-sidebar__item--active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.board-sidebar-layout>.board-card{max-width:960px}.board-sidebar-layout .board-card__head{padding:12px 20px}.board-sidebar-layout .board-card__title{font-size:15px}.board-sidebar-layout .board-card__body{padding:16px 20px 18px;overflow:visible}.board-sidebar-layout .board-card .tapping-term-row{margin-top:6px}.board-sidebar-layout .board-card .tapping-term-hints{margin-top:3px;font-size:10.5px}.board-sidebar-layout .card-sep,.board-sidebar-layout .scroll-card__inertia{margin-top:14px;padding-top:12px}@media (width<=760px){.board-sidebar-layout{grid-template-columns:minmax(0,1fr)}.board-sidebar{flex-flow:wrap}}.board-sidebar-layout .dpi-curve__svg{height:200px}.board-sidebar-layout .board-card--gesture .board-card__body{padding:20px 24px 24px}.board-sidebar-layout .board-card--gesture .led-effect-selector{gap:8px;margin-bottom:4px}.board-sidebar-layout .board-card--gesture .card-sep{margin-top:18px;padding-top:16px}.board-sidebar-layout .board-card--gesture .gesture-grid{gap:12px;margin:4px 0}.board-sidebar-layout .board-card--gesture .gesture-row{gap:12px}.board-sidebar-layout .board-card--gesture .gesture-key-btn{padding:8px 12px}.board-sidebar-layout .board-card--gesture .settings-desc{margin-bottom:8px}.board-sidebar-layout .board-card--gesture .tapping-term-row{margin-top:4px;margin-bottom:10px}.board-sidebar-layout .board-card--gesture .tapping-term-hints{margin-top:-6px;margin-bottom:4px}.board-sidebar-layout .board-card--gesture .setting-row{padding:6px 0}@media (width>=1100px) and (height>=760px){.board-sidebar-layout .board-card--gesture .gesture-card__cols{gap:0 40px}}.setting-row--compact .setting-row__text{flex:none}.board-sidebar-layout .board-card__body{padding:20px 24px 24px}.board-sidebar-layout .board-card .card-sep,.board-sidebar-layout .board-card .scroll-card__inertia,.board-sidebar-layout .ball-precision{margin-top:18px;padding-top:16px}.board-sidebar-layout .board-card .settings-desc{margin-bottom:8px}.board-sidebar-layout .board-card .tapping-term-row{margin-top:4px;margin-bottom:14px}.board-sidebar-layout .board-card .setting-row{padding:8px 0}.board-sidebar-layout .board-card .gesture-grid{gap:12px;margin:4px 0}.board-sidebar-layout .board-card .gesture-row{gap:12px}.board-sidebar-layout .board-card .gesture-key-btn{padding:8px 12px}.board-sidebar-layout .board-card .trackball-bar{gap:16px 24px}.board-sidebar-layout .board-card .motion-col__head{margin-bottom:14px}.board-sidebar-layout .aml-card__sliders{margin-top:10px}@media (width>=1100px) and (height>=760px){.board-sidebar-layout .board-card .gesture-card__cols,.board-sidebar-layout .board-card--scroll .scroll-card,.board-sidebar-layout .board-card--motion .motion-cols{gap:0 40px}.board-sidebar-layout .board-card--scroll .scroll-card__inertia,.board-sidebar-layout .board-card--motion .motion-col+.motion-col{margin-top:0;padding-top:0;padding-left:40px}.board-sidebar-layout .board-card--ball .trackball-bar{gap:16px 40px}.board-sidebar-layout .board-card--scroll .scroll-card{display:block}.board-sidebar-layout .board-card--scroll .scroll-card__inertia{border-left:none;border-top:1px solid var(--border);margin-top:18px;padding-top:16px;padding-left:0}}.gesture-wave-style{margin-top:12px;margin-bottom:4px}.hue-bar-row{margin-bottom:4px}.hue-bar-row .led-panel__bar{flex:1;margin:0}.hue-bar{cursor:pointer}.hue-bar--disabled{opacity:.5;cursor:default}.hue-bar__input{opacity:0;width:100%;height:100%;cursor:inherit;margin:0;position:absolute;inset:0}.precision-card__head{align-items:center;gap:12px;display:flex}.precision-card__title{color:var(--text);font-size:13px;font-weight:700}.board-sidebar-layout>.board-card--scroll,.board-sidebar-layout>.board-card--aml{max-width:560px}.board-card--ball .ball-precision .tapping-term-row{max-width:420px}.board-sidebar-layout .board-card--ball .trackball-bar{row-gap:22px}.board-sidebar-layout .board-card--ball .trackball-bar__item{gap:12px}.board-sidebar-layout .board-card--ball .trackball-bar__label{min-width:84px;font-size:12.5px}.board-sidebar-layout .board-card--ball .trackball-bar__item .slider{flex:1;min-width:0}.board-sidebar-layout .board-card--ball .trackball-bar__item--invert .btn{min-width:64px}.board-sidebar-layout .board-card--ball .precision-card .tapping-term-row{margin-top:8px}.board-card--ball .trackball-bar__label,.board-card--ball .precision-card__title{color:var(--text-dim);font-size:12px;font-weight:600}.board-sidebar-layout .board-card--ball .trackball-bar__label{font-size:12px}.trackball-bar__extra{flex-basis:100%}.scroll-card__row{border-bottom:none;gap:10px;padding:6px 0}.board-card .scroll-card__label{min-width:84px;margin:0;font-weight:600}[data-tip]{-webkit-text-decoration:underline dotted var(--text-dim);text-decoration:underline dotted var(--text-dim);text-underline-offset:3px;text-decoration-thickness:1px;position:relative}[data-tip]:after{content:attr(data-tip);z-index:50;background:color-mix(in srgb, var(--text) 55%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:max-content;max-width:300px;color:var(--bg2);white-space:normal;text-align:left;pointer-events:none;opacity:0;visibility:hidden;border-radius:8px;padding:8px 11px;font-size:12px;font-weight:500;line-height:1.55;transition:opacity .15s,visibility 0s linear .15s;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 4px 14px #0000002e}[data-tip]:hover:after{opacity:1;visibility:visible;transition:opacity .15s .6s,visibility 0s linear .6s}p[data-tip]{width:fit-content}.gesture-mode-tabs[data-tip]{cursor:default;width:fit-content;text-decoration:none}.placeholder-actions{flex-direction:column;align-items:center;gap:18px;margin-top:28px;display:flex}.placeholder-connect{letter-spacing:.03em;background:var(--accent);color:var(--key-sel-fg,#fff);border-radius:12px;padding:12px 36px;font-size:15px}.placeholder-connect:hover:not(:disabled){background:var(--accent-h,var(--accent))}.placeholder-guide-link{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:13px;font-weight:600}.placeholder-guide-link:hover{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.macro-text-panel{border:1px solid var(--border);background:var(--bg3);border-radius:10px;flex-direction:column;gap:8px;margin-bottom:12px;padding:12px;display:flex}.macro-text-input{resize:vertical;border:1px solid var(--border);background:var(--bg2);width:100%;color:var(--text);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}.macro-text-input:focus{border-color:var(--accent);outline:none}.macro-text-info{color:var(--text-dim);font-size:12px;line-height:1.6}.macro-text-info code{color:var(--text);word-break:break-all}.macro-text-actions{gap:8px;display:flex}.mstep-grip{cursor:grab;color:var(--text-dim);letter-spacing:-2px;-webkit-user-select:none;user-select:none;padding:0 2px;font-size:12px}.mstep-move{border:1px solid var(--border);background:var(--bg2);color:var(--text-dim);cursor:pointer;border-radius:6px;flex:none;width:26px;height:26px;font-size:10px}.mstep-move:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.mstep-move:disabled{opacity:.3;cursor:default}.mstep--dragging{opacity:.4}.mstep--drop .mstep-key{box-shadow:0 -2px 0 var(--accent)}.mstep-text-badge{color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);border-radius:5px;flex:none;padding:1px 6px;font-size:10.5px;font-weight:700}.mstep-text{font-family:var(--font-mono,ui-monospace, monospace);text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fw-panel{flex-direction:column;gap:22px;display:flex}.fw-step{flex-direction:column;gap:12px;display:flex}.fw-step+.fw-step{border-top:1px solid var(--border);padding-top:20px}.fw-step__title{color:var(--text);align-items:center;gap:10px;margin:0;font-size:14px;font-weight:700;display:flex}.fw-step__title .flash-step-num{width:24px;height:24px;font-size:12px}.fw-panel .flash-alert{margin:0}.fw-note{color:var(--text);margin:0;font-size:13px;line-height:1.8}.feedback-panel{flex-direction:column;align-items:flex-start;gap:16px;display:flex}.feedback-panel .feedback-card__btn{margin-top:4px}.board-sidebar-layout>.board-card:has(.feedback-panel){max-width:720px}.board-sidebar-layout>.board-card--narrow{max-width:560px}.fw-step>.btn--primary{align-self:flex-start;padding:10px 40px}.fw-field-label{color:var(--text-dim);margin:6px 0 -4px;font-size:12px;font-weight:600}.btn-fixed-label{display:inline-grid}.btn-fixed-label>span{text-align:center;grid-area:1/1}.btn-fixed-label__sizer{visibility:hidden}
