@import"https://fonts.googleapis.com/css2?family=Exo+2:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@500;700&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:"Exo 2",Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;transition:background .3s,color .3s}:root{--brand-yellow: #ffd108;--brand-purple: #653694;--brand-white: #ffffff;--bg: #0d0d14;--bg-card: #16162a;--bg-card-hover: #1c1c36;--bg-input: #111120;--bg-elevated: #1e1e38;--text: #e8e8f0;--text-muted: #7a7a96;--text-dim: #55556e;--accent: #ffd108;--accent-hover: #ffe04a;--accent-glow: rgba(255, 209, 8, .12);--accent-secondary: #653694;--accent-secondary-hover: #7e48b5;--border: #252540;--border-hover: #353558;--danger: #e74c3c;--success: #2ecc71;--shadow: rgba(0, 0, 0, .5);--shadow-lg: rgba(0, 0, 0, .7)}[data-theme=light]{--bg: #f2f2f8;--bg-card: #ffffff;--bg-card-hover: #f8f8ff;--bg-input: #eaeaf2;--bg-elevated: #ffffff;--text: #1a1a2e;--text-muted: #666680;--text-dim: #9999aa;--accent: #653694;--accent-hover: #7e48b5;--accent-glow: rgba(101, 54, 148, .1);--accent-secondary: #ffd108;--accent-secondary-hover: #ffe04a;--border: #d8d8e8;--border-hover: #c0c0d8;--danger: #c0392b;--success: #27ae60;--shadow: rgba(0, 0, 0, .08);--shadow-lg: rgba(0, 0, 0, .15)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}::selection{background:var(--accent);color:#0d0d14}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;border:none;border-radius:8px;font-family:inherit;font-size:.85rem;font-weight:700;cursor:pointer;transition:all .15s ease;letter-spacing:.3px}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:#0d0d14}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 2px 12px var(--accent-glow)}.btn-secondary{background:var(--accent-secondary);color:#fff}.btn-secondary:hover:not(:disabled){background:var(--accent-secondary-hover)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:#ffffff0a;color:var(--text);border-color:var(--border-hover)}.btn-sm{padding:5px 12px;font-size:.75rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:18px;transition:border-color .2s,box-shadow .2s}.card:hover{border-color:var(--border-hover)}.card-header{font-size:.95rem;font-weight:700;margin-bottom:14px;color:var(--text);letter-spacing:.2px}.form-group{margin-bottom:14px}.form-label{display:block;font-size:.75rem;font-weight:700;color:var(--text-dim);margin-bottom:6px;text-transform:uppercase;letter-spacing:.8px}.form-select{width:100%;padding:8px 12px;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:.85rem;font-weight:600;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%237a7a96' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;transition:border-color .15s}.form-select:focus{outline:none;border-color:var(--accent)}.toggle{position:relative;display:inline-block;width:40px;height:20px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:var(--border);border-radius:20px;cursor:pointer;transition:background .2s}.toggle-slider:before{content:"";position:absolute;width:14px;height:14px;left:3px;bottom:3px;background:var(--text-muted);border-radius:50%;transition:transform .2s,background .2s}.toggle input:checked+.toggle-slider{background:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translate(20px);background:#0d0d14}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.toggle-label{font-size:.85rem;font-weight:600}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:20px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.badge-connected{background:#2ecc711f;color:var(--success)}.badge-disconnected{background:#e74c3c1f;color:var(--danger)}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.sidebar-profile{padding:0 12px 6px}.profile-tabs{display:flex;gap:3px;background:var(--bg-input);border-radius:8px;padding:3px;border:1px solid var(--border)}.profile-btn{flex:1;padding:7px 0;text-align:center;border:none;background:transparent;color:var(--text-muted);font-family:inherit;font-size:.8rem;font-weight:800;border-radius:6px;cursor:pointer;transition:all .15s ease;letter-spacing:.5px}.profile-btn:hover:not(:disabled){color:var(--text);background:#ffffff0a}.profile-btn--active{background:var(--accent)!important;color:#0d0d14!important;box-shadow:0 1px 6px var(--accent-glow)}.profile-btn:disabled{opacity:.4;cursor:not-allowed}.toast{position:fixed;bottom:24px;right:24px;padding:10px 20px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;font-size:.8rem;font-weight:600;box-shadow:0 8px 32px var(--shadow-lg);transform:translateY(100px);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s;z-index:1000}.toast.show{transform:translateY(0);opacity:1}.toast.error{border-color:var(--danger);color:var(--danger)}.toast.success{border-color:var(--success);color:var(--success)}.device-loading{position:fixed;inset:0;background:#0d0d14bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s;cursor:wait}.device-loading.show{opacity:1;pointer-events:all}.device-loading__content{display:flex;align-items:center;gap:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:18px 32px;font-size:.9rem;font-weight:700;color:var(--text);box-shadow:0 12px 48px #00000080}.device-loading__spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dpi-wrapper{position:relative}.dpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:56px}.dpi-cross{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:52px;height:52px;z-index:2;pointer-events:none}.dpi-cross svg{width:100%;height:100%}.dpi-cross__arm{transition:opacity .25s,filter .25s}@media(max-width:700px){.dpi-grid{grid-template-columns:1fr;gap:14px}.dpi-cross{display:none}}.dpi-card{--slot-color: var(--accent);background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:18px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.dpi-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--slot-color);opacity:.3;transition:opacity .2s}.dpi-card--active{border-color:var(--slot-color);box-shadow:0 0 24px color-mix(in srgb,var(--slot-color) 12%,transparent)}.dpi-card--active:before{opacity:1}.dpi-card__header{display:flex;align-items:center;gap:10px;margin-bottom:14px;cursor:pointer;padding:4px;border-radius:8px;transition:background .15s}.dpi-card__header:hover{background:#ffffff08}.dpi-card__slot-badge{width:26px;height:26px;border-radius:7px;background:var(--slot-color);color:#0d0d14;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.8rem}.dpi-card__label{font-weight:700;font-size:.85rem;flex:1}.dpi-card__indicator{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--slot-color);background:color-mix(in srgb,var(--slot-color) 10%,transparent);padding:2px 8px;border-radius:4px;min-height:18px}.dpi-card__indicator:empty{display:none}.dpi-card__value-row{display:flex;align-items:baseline;gap:6px;margin-bottom:14px}.dpi-card__input{width:96px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--accent);font-family:JetBrains Mono,Consolas,monospace;font-size:1.4rem;font-weight:700;padding:5px 8px;text-align:center;outline:none;-moz-appearance:textfield;transition:border-color .15s}.dpi-card__input::-webkit-inner-spin-button,.dpi-card__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dpi-card__input:focus{border-color:var(--slot-color)}.dpi-card__unit{font-size:.8rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.dpi-card__slider-wrap{position:relative;height:22px;margin-bottom:12px}.dpi-card__track{position:absolute;top:50%;left:0;right:0;height:3px;transform:translateY(-50%);background:var(--border);border-radius:2px;pointer-events:none}.dpi-card__fill{height:100%;background:var(--slot-color);border-radius:2px;transition:width .05s}.dpi-card__slider{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;outline:none;cursor:pointer}.dpi-card__slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--slot-color);border:2px solid var(--bg-card);box-shadow:0 0 6px #0000004d;cursor:pointer}.dpi-card__slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--slot-color);border:2px solid var(--bg-card);box-shadow:0 0 6px #0000004d;cursor:pointer}.dpi-card__presets{display:flex;gap:5px}.dpi-card__preset{flex:1;padding:5px 0;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);color:var(--text-muted);font-family:inherit;font-size:.72rem;font-weight:700;cursor:pointer;transition:all .15s}.dpi-card__preset:hover{border-color:var(--slot-color);color:var(--text)}.dpi-card__preset--selected{border-color:var(--slot-color);background:color-mix(in srgb,var(--slot-color) 10%,transparent);color:var(--slot-color)}.perf-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}@media(max-width:700px){.perf-grid{grid-template-columns:1fr}}.perf-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:16px 18px;transition:border-color .2s}.perf-card:hover{border-color:var(--border-hover)}.perf-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.perf-card__title{font-size:.9rem;font-weight:700;color:var(--text)}.perf-card__desc{font-size:.75rem;color:var(--text-dim);line-height:1.4;margin-bottom:2px}.perf-toggle-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:14px 18px;transition:border-color .2s}.perf-toggle-card:hover{border-color:var(--border-hover)}.perf-toggle-card+.perf-toggle-card{margin-top:0}.perf-toggle-card__row{display:flex;align-items:center;justify-content:space-between;gap:12px}.perf-toggle-card__info{flex:1;min-width:0}.perf-toggle-card__title{font-size:.88rem;font-weight:700;color:var(--text);margin-bottom:2px}.perf-toggle-card__desc{font-size:.72rem;color:var(--text-dim);line-height:1.3}.stepper{display:flex;align-items:center;gap:0;margin-top:12px}.stepper__btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--bg-input);color:var(--text-muted);font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.stepper__btn:first-child{border-radius:8px 0 0 8px}.stepper__btn:last-child{border-radius:0 8px 8px 0}.stepper__btn:hover{background:var(--border);color:var(--text)}.stepper__btn:active{transform:scale(.95)}.stepper__value{min-width:80px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-input);border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-family:JetBrains Mono,Consolas,monospace;font-size:1rem;font-weight:700;color:var(--accent);letter-spacing:.5px}.lod-group{display:flex;gap:6px;margin-top:12px}.lod-btn{flex:1;padding:8px 0;text-align:center;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);color:var(--text-muted);font-family:inherit;font-size:.82rem;font-weight:700;cursor:pointer;transition:all .15s}.lod-btn:hover{border-color:var(--accent);color:var(--text)}.lod-btn--active{background:var(--accent);border-color:var(--accent);color:#0d0d14;box-shadow:0 2px 8px var(--accent-glow)}.polling-group{display:flex;gap:5px;flex-wrap:wrap}.polling-btn{flex:1;min-width:60px;padding:9px 4px;text-align:center;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);color:var(--text-muted);font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .15s}.polling-btn:hover{border-color:var(--accent);color:var(--text)}.polling-btn--active{background:var(--accent);border-color:var(--accent);color:#0d0d14;box-shadow:0 2px 8px var(--accent-glow)}.perf-mode-list{display:flex;flex-direction:column;gap:6px}.perf-mode-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-input);cursor:pointer;transition:all .15s}.perf-mode-item:hover{border-color:var(--border-hover);background:var(--bg-card-hover)}.perf-mode-item--active{border-color:var(--accent);background:var(--accent-glow)}.perf-mode-item__radio{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .15s}.perf-mode-item--active .perf-mode-item__radio{border-color:var(--accent)}.perf-mode-item__radio:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform .15s}.perf-mode-item--active .perf-mode-item__radio:after{transform:scale(1)}.perf-mode-item__label{font-size:.85rem;font-weight:700;color:var(--text)}.perf-mode-item__desc{font-size:.72rem;color:var(--text-dim)}.perf-section-header{font-size:.68rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:1.2px;margin:8px 0}.btnmap-layout{display:grid;grid-template-columns:1fr 420px;gap:28px;min-height:calc(100vh - 140px)}@media(max-width:900px){.btnmap-layout{grid-template-columns:1fr}}.btnmap-mouse{display:flex;align-items:center;justify-content:center;padding:20px 40px}.btnmap-img-container{position:relative;width:100%;max-width:600px}.btnmap-img{width:100%;height:auto;display:block;-webkit-user-select:none;user-select:none;pointer-events:none;filter:drop-shadow(0 8px 32px rgba(0,0,0,.4))}.bmd{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid #4a9eff;background:transparent;transform:translate(-50%,-50%);z-index:3;transition:all .2s;pointer-events:none}.bmd--selected{background:#4a9eff;box-shadow:0 0 8px #4a9eff80}.bml{position:absolute;transform:translateY(-50%);background:#1e1e32eb;border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer;z-index:4;transition:all .15s;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bml:hover{border-color:var(--border-hover);background:#282841f2}.bml--selected{border-color:#4a9eff;background:#283250f2;box-shadow:0 0 12px #4a9eff26}.bml__action{display:block;font-size:.68rem;color:var(--text-dim);line-height:1.3}.bml--top{transform:translate(-50%)}.bml--selected .bml__action{color:#4a9eff}.bml__name{display:block;font-size:.82rem;font-weight:700;color:var(--text);line-height:1.3}.btnmap-panel{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 140px);position:sticky;top:0}.btnmap-tabs{display:flex;background:#1e1e3299;border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:12px;gap:2px}.btnmap-tab{flex:1;padding:8px 4px;text-align:center;border:none;background:transparent;color:var(--text-muted);font-family:inherit;font-size:.78rem;font-weight:700;border-radius:8px;cursor:pointer;transition:all .15s}.btnmap-tab:hover{color:var(--text)}.btnmap-tab--active{background:#4a9eff;color:#fff;box-shadow:0 2px 8px #4a9eff4d}.btnmap-content{flex:1;border:1px dashed var(--border);border-radius:10px;padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.btnmap-search{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text-muted);flex-shrink:0}.btnmap-search input{flex:1;background:none;border:none;outline:none;color:var(--text);font-family:inherit;font-size:.85rem}.btnmap-search input::placeholder{color:var(--text-dim)}.btnmap-list{flex:1;overflow-y:auto;min-height:0}.btnmap-category{font-size:.82rem;font-weight:800;color:var(--text);padding:10px 4px 4px}.btnmap-action{padding:8px 12px;font-size:.85rem;font-weight:600;color:var(--text-muted);cursor:pointer;border-radius:6px;transition:all .1s;border-left:2px solid transparent}.btnmap-action:hover{color:#4a9eff;background:#4a9eff0f;border-left-color:#4a9eff}.btnmap-action--active{color:#4a9eff;background:#4a9eff1a;border-left-color:#4a9eff}.btnmap-special{display:flex;flex-direction:column;gap:12px}.btnmap-combo-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px}.btnmap-combo-title{font-size:.95rem;font-weight:800;color:var(--text);margin-bottom:6px}.btnmap-combo-desc{font-size:.78rem;color:var(--text-dim);margin-bottom:14px;line-height:1.4}.btnmap-combo-mods{display:flex;gap:8px;margin-bottom:12px}.btnmap-mod-btn{padding:7px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);color:var(--text-muted);font-family:inherit;font-size:.82rem;font-weight:700;cursor:pointer;transition:all .15s}.btnmap-mod-btn:hover{border-color:var(--border-hover);color:var(--text)}.btnmap-mod-btn--active{background:#4a9eff;border-color:#4a9eff;color:#fff}.btnmap-combo-input{width:100%;padding:9px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:inherit;font-size:.85rem;font-weight:600;outline:none;margin-bottom:14px;transition:border-color .15s}.btnmap-combo-input:focus{border-color:#4a9eff}.btnmap-combo-input::placeholder{color:var(--text-dim)}.btnmap-combo-save{width:100%}.btnmap-rapid-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.btnmap-rapid-label{font-size:.82rem;color:var(--text-muted);min-width:110px}.btnmap-rapid-input{width:72px;padding:7px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:JetBrains Mono,Consolas,monospace;font-size:.9rem;font-weight:700;text-align:center;outline:none;-moz-appearance:textfield;transition:border-color .15s}.btnmap-rapid-input::-webkit-inner-spin-button,.btnmap-rapid-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btnmap-rapid-input:focus{border-color:#4a9eff}.btnmap-rapid-unit{font-size:.82rem;color:var(--text-dim);font-weight:600}.btnmap-macro-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;text-align:center;color:var(--text-dim);gap:12px}.btnmap-macro-empty p{font-size:.85rem;line-height:1.5}.btnmap-macro-info{padding:8px 12px;font-size:.85rem;color:var(--text-dim);border-bottom:1px solid var(--border)}.macro-layout{display:grid;grid-template-columns:340px 1fr;gap:24px;height:calc(100vh - 140px);overflow:hidden}@media(max-width:900px){.macro-layout{grid-template-columns:1fr}}.macro-list-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden}.macro-list-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:.95rem;font-weight:800;color:var(--text)}.macro-list-header svg{color:var(--text-dim)}.macro-list{flex:1;overflow-y:auto;border:1px dashed var(--border);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:4px;margin-bottom:10px;min-height:0}.macro-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s;background:transparent}.macro-item:hover{border-color:var(--border-hover);background:#ffffff05}.macro-item--active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.macro-item__name{flex:1;font-size:.85rem;font-weight:600;color:var(--text);background:none;border:none;outline:none;padding:0;font-family:inherit;cursor:pointer;min-width:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.macro-item--active .macro-item__name{color:var(--accent)}.macro-item__name:focus{cursor:text;color:var(--text)}.macro-item__edit{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px;flex-shrink:0;transition:color .15s}.macro-item__edit:hover{color:var(--text)}.macro-list-actions{display:flex;gap:8px}.macro-list-actions .btn{flex:1}.macro-item__active{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px;flex-shrink:0;transition:color .15s}.macro-item__active:hover,.macro-item__active--on{color:var(--accent)}.macro-mode-badge{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:8px;background:color-mix(in srgb,var(--danger) 12%,transparent);border:1px solid var(--danger);border-radius:8px;font-size:.75rem;font-weight:800;color:var(--danger);letter-spacing:.5px;animation:macroModePulse 1.5s ease infinite}.macro-mode-dot{width:8px;height:8px;border-radius:50%;background:var(--danger);flex-shrink:0}@keyframes macroModePulse{0%,to{opacity:1}50%{opacity:.6}}.macro-empty{display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--text-dim);font-size:.85rem;text-align:center}.macro-record-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden}.macro-record-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.macro-record-title{display:flex;align-items:center;gap:8px;font-size:.95rem;font-weight:800;color:var(--text)}.macro-record-btns{display:flex;gap:8px}.macro-upload-row{display:flex;margin-bottom:8px}.macro-upload-row .btn-accent{width:100%;justify-content:center;padding:8px 12px;font-size:.85rem}.btn-record{background:var(--danger);color:#fff;display:inline-flex;align-items:center;gap:6px}.btn-record:hover:not(:disabled){background:#c0392b}.btn-record--recording{animation:recordPulse 1s ease infinite}@keyframes recordPulse{0%,to{opacity:1}50%{opacity:.7}}.btn-save{background:var(--accent);color:#0d0d14}.btn-save:hover:not(:disabled){background:var(--accent-hover)}.btn-accent{background:#e74c3c;color:#fff;display:inline-flex;align-items:center;gap:4px}.btn-accent:hover:not(:disabled){background:#c0392b}.btn-accent:disabled{opacity:.5;cursor:not-allowed}.macro-loop-bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;margin-bottom:10px;flex-wrap:wrap}.macro-loop-label{font-size:.78rem;font-weight:700;color:var(--text-dim);margin-right:4px;white-space:nowrap}.macro-loop-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);font-family:inherit;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.macro-loop-btn:hover{border-color:var(--border-hover);color:var(--text)}.macro-loop-btn--active{background:var(--accent);border-color:var(--accent);color:#0d0d14}.macro-cycle-input{width:48px;padding:5px 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:700;text-align:center;outline:none;-moz-appearance:textfield}.macro-cycle-input::-webkit-inner-spin-button,.macro-cycle-input::-webkit-outer-spin-button{-webkit-appearance:none}.macro-options-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px dashed var(--border);border-radius:10px;margin-bottom:10px;gap:12px;flex-wrap:wrap}.macro-auto-delay{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;color:var(--text-muted);cursor:pointer}.macro-auto-delay input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;cursor:pointer}.macro-insert-group{display:flex;align-items:center;gap:8px}.macro-insert-btn{padding:5px 12px;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-family:inherit;font-size:.78rem;font-weight:700;cursor:pointer;transition:all .15s}.macro-insert-btn:hover{border-color:var(--accent);color:var(--accent)}.macro-event-select{padding:5px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.78rem;font-weight:600;cursor:pointer;outline:none}.macro-events{flex:1;overflow-y:auto;border:1px dashed var(--border);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:4px;min-height:0}.macro-event{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;transition:border-color .15s}.macro-event:hover{border-color:var(--border-hover)}.macro-event__icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-dim)}.macro-event__icon--key{color:#4a9eff}.macro-event__icon--mouse{color:#2ecc71}.macro-event__icon--delay{color:#f39c12}.macro-event__info{flex:1;font-size:.85rem;font-weight:600;color:var(--text);min-width:0}.macro-event__detail{font-size:.75rem;color:var(--text-dim)}.macro-event__actions{display:flex;gap:4px;flex-shrink:0}.macro-event__btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s}.macro-event__btn:hover{color:var(--text);background:#ffffff0d}.macro-event__btn--delete:hover{color:var(--danger)}.macro-events-empty{display:flex;align-items:center;justify-content:center;padding:48px 20px;color:var(--text-dim);font-size:.85rem;text-align:center}.macro-test-area{padding:4px 12px;flex-shrink:0}.macro-test-input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.85rem;resize:none}.macro-test-input:focus{outline:none;border-color:var(--accent)}.macro-hint{font-size:.75rem;color:var(--text-dim);padding:8px 0;text-align:center}.macro-split{flex:1;display:grid;grid-template-columns:280px 1fr;gap:12px;min-height:0;max-height:100%;overflow:hidden}@media(max-width:1100px){.macro-split{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.macro-add-panel{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;padding:10px;min-height:0;overflow:hidden}.macro-add-tabs{display:flex;gap:4px;margin:8px 0}.macro-add-tab{flex:1;padding:6px 4px;text-align:center;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);font-family:inherit;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .15s}.macro-add-tab:hover{border-color:var(--border-hover);color:var(--text)}.macro-add-tab--active{background:#4a9eff;border-color:#4a9eff;color:#fff}.macro-add-tab:disabled{opacity:.4;cursor:not-allowed}.macro-add-list{flex:1;overflow-y:auto;min-height:0}.slider-group{display:flex;align-items:center;gap:12px}.slider-group input[type=range]{flex:1;height:3px;-webkit-appearance:none;appearance:none;background:var(--border);border-radius:2px;outline:none}.slider-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg-card);box-shadow:0 0 4px var(--shadow)}.slider-value{min-width:56px;text-align:right;font-family:JetBrains Mono,Consolas,monospace;font-weight:700;font-size:.9rem;color:var(--accent)}.device-status-card{margin:0 8px 6px;padding:0;border-radius:10px;background:var(--bg-input);border:1px solid var(--border);overflow:hidden;animation:dscSlideIn .35s cubic-bezier(.34,1.56,.64,1)}@keyframes dscSlideIn{0%{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.dsc-header{display:flex;align-items:center;gap:8px;padding:10px 12px 8px}.dsc-model-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:7px;background:var(--accent);color:#0d0d14;flex-shrink:0}.dsc-model-icon svg{width:16px;height:16px}.dsc-model-text{display:flex;flex-direction:column;min-width:0;flex:1}.dsc-model-name{font-family:"Exo 2",sans-serif;font-size:.82rem;font-weight:800;color:var(--text);letter-spacing:.6px;line-height:1.1;text-transform:uppercase}.dsc-model-sub{font-size:.62rem;font-weight:600;color:var(--text-dim);letter-spacing:.4px;margin-top:1px}.dsc-batt{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.dsc-batt-svg{color:var(--text-muted);display:block}.dsc-batt-svg.charging{animation:dscBattPulse 2s ease-in-out infinite}.dsc-batt-svg.critical{animation:dscBattBlink 1s ease-in-out infinite}@keyframes dscBattPulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes dscBattBlink{0%,to{opacity:1}50%{opacity:.3}}.dsc-batt-pct{font-family:JetBrains Mono,monospace;font-size:.65rem;font-weight:700;letter-spacing:-.3px;min-width:26px;text-align:right}.dsc-stats{display:flex;align-items:stretch;border-top:1px solid var(--border)}.dsc-stat{flex:1;display:flex;align-items:center;gap:7px;padding:7px 10px 8px;min-width:0}.dsc-stat-divider{width:1px;background:var(--border);align-self:stretch;margin:5px 0}.dsc-stat-icon{width:18px;height:18px;color:var(--text-dim);flex-shrink:0;opacity:.7}.dsc-stat-icon svg{width:100%;height:100%}.dsc-stat-body{display:flex;flex-direction:column;min-width:0}.dsc-stat-value{font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:700;color:var(--text);line-height:1.1;white-space:nowrap}.dsc-stat-label{font-size:.58rem;font-weight:500;color:var(--text-dim);letter-spacing:.2px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dsc-8k-tag{display:inline-block;padding:0 4px;margin-left:2px;border-radius:3px;font-size:.55rem;font-weight:800;background:var(--accent);color:#0d0d14;letter-spacing:.5px;vertical-align:middle;line-height:1.4}.dsc-sensor-sub{font-size:.6rem;font-weight:500;color:var(--text-dim);margin-left:2px}[data-theme=light] .dsc-model-icon{background:var(--accent);color:#fff}[data-theme=light] .dsc-8k-tag{color:#fff}.app{display:grid;grid-template-columns:230px 1fr;grid-template-rows:auto 1fr;min-height:100vh}.topbar{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:52px;background:var(--bg-card);border-bottom:1px solid var(--border);z-index:10}.topbar-brand{display:flex;align-items:center;gap:6px;font-size:1rem;font-weight:800;letter-spacing:2px;text-transform:uppercase}.topbar-brand .brand-w{color:var(--accent);font-size:1.15rem}.topbar-actions{display:flex;align-items:center;gap:8px}.sidebar{background:var(--bg-card);border-right:1px solid var(--border);padding:12px 0;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-section{padding:0 12px;margin-bottom:8px}.sidebar-heading{font-size:.65rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:1.5px;padding:10px 16px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 16px;margin:1px 8px;border-radius:8px;font-size:.85rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s ease;border:none;background:none;width:calc(100% - 16px);text-align:left}.nav-item:hover{background:#ffffff0a;color:var(--text)}.nav-item.active{background:var(--accent);color:#0d0d14;font-weight:700;box-shadow:0 2px 12px var(--accent-glow)}.nav-item svg{width:17px;height:17px;flex-shrink:0}.main{padding:28px 32px;overflow-y:auto;max-height:calc(100vh - 52px)}.panel{display:none;max-width:800px;animation:panelFadeIn .25s ease}#panel-dashboard,#panel-buttons,#panel-macro{max-width:none}.panel.active{display:block}@keyframes panelFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.panel-title{font-size:1.2rem;font-weight:800;margin-bottom:20px;letter-spacing:.3px}.panel-grid{display:grid;gap:14px}.connection-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;margin:0 8px 6px;background:var(--bg-input);border-radius:8px;border:1px solid var(--border)}@media(max-width:768px){.app{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;top:52px;bottom:0;width:270px;z-index:100;transition:left .3s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 24px var(--shadow-lg)}.sidebar.open{left:0}.menu-toggle{display:block!important}.main{padding:20px 16px;max-height:calc(100vh - 52px)}.panel{max-width:100%}}.menu-toggle{display:none;background:none;border:none;color:var(--text);cursor:pointer;padding:4px}.dashboard{display:flex;flex-direction:column;gap:24px;max-width:860px}.dash-hero{position:relative;display:flex;justify-content:center;padding:24px 0 8px}.dash-hero-glow{position:absolute;top:50%;left:50%;width:420px;height:240px;transform:translate(-50%,-50%);background:radial-gradient(ellipse,var(--accent-glow) 0%,transparent 70%);pointer-events:none;opacity:.7;filter:blur(30px);z-index:0}.dash-hub-wrap{position:relative;z-index:1;width:100%;max-width:520px}.dash-hub-img{width:100%;height:auto;display:block;border-radius:12px;filter:drop-shadow(0 8px 32px rgba(0,0,0,.6));transition:filter .3s ease;-webkit-user-select:none;user-select:none}.dash-hub-wrap:hover .dash-hub-img{filter:drop-shadow(0 8px 40px rgba(255,209,8,.15))}.dash-hotspot{position:absolute;background:none;border:2px solid transparent;border-radius:6px;cursor:pointer;transition:all .2s ease;z-index:2;padding:0}.dash-hotspot:hover{border-color:var(--accent);background:#ffd10814;box-shadow:0 0 16px #ffd10833}.dash-hotspot:active{transform:scale(.96)}.dash-hotspot-pulse{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%);opacity:0;transition:opacity .2s;pointer-events:none}.dash-hotspot:hover .dash-hotspot-pulse{opacity:1;animation:hotspotPing 1.2s ease-out infinite}@keyframes hotspotPing{0%{box-shadow:0 0 #ffd10880}70%{box-shadow:0 0 0 10px #ffd10800}to{box-shadow:0 0 #ffd10800}}.dash-hotspot--hz{top:26.3%;left:10%;width:13.8%;height:8.7%}.dash-hotspot--dpi{top:35.6%;left:10.4%;width:13.5%;height:8%}.dash-hotspot--lod{top:43.7%;left:10.3%;width:13.5%;height:7.4%}.dash-hotspot--sleep{top:51.8%;left:10%;width:13.6%;height:7.1%}.dash-hotspot--dpi-vals{top:27.3%;left:24.4%;width:24.9%;height:17%}.dash-hotspot--sensor{top:27.7%;left:50%;width:7.5%;height:23.3%}.dash-hotspot--battery{top:26.6%;left:82.3%;width:6.5%;height:32.8%}.dash-hotspot--profiles{top:44.5%;left:57.3%;width:24.5%;height:6.1%}.dash-hotspot--start{top:65.6%;left:13%;width:12.5%;height:15%}.dash-hotspot--macro{top:64.6%;left:27.6%;width:12.9%;height:16.4%}.dash-hotspot--arrows{top:64.9%;left:43.4%;width:12.4%;height:16.4%}.dash-hotspot--edit{top:65.4%;left:58.8%;width:12.9%;height:14.8%}.dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.dash-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px;transition:border-color .2s,box-shadow .2s,transform .15s;position:relative;overflow:hidden}.dash-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);opacity:0;transition:opacity .2s}.dash-card:hover{border-color:var(--border-hover);transform:translateY(-2px);box-shadow:0 4px 20px var(--shadow)}.dash-card:hover:before{opacity:1}.dash-card[data-nav]:active{transform:translateY(0) scale(.98)}.dash-card-head{display:flex;align-items:center;gap:6px;margin-bottom:10px}.dash-card-icon{width:14px;height:14px;color:var(--accent);flex-shrink:0;opacity:.8}.dash-card-title{font-family:"Exo 2",sans-serif;font-size:.6rem;font-weight:800;letter-spacing:1.8px;color:var(--text-dim);text-transform:uppercase}.dash-card--dpi{grid-column:span 1}.dash-dpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.dash-dpi-slot{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;background:var(--bg-input);border:1px solid transparent;transition:all .15s}.dash-dpi--active{border-color:var(--accent);background:#ffd1080f}.dash-dpi--active .dash-dpi-idx{background:var(--accent);color:#0d0d14}.dash-dpi-idx{width:16px;height:16px;border-radius:4px;background:var(--border);display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:.55rem;font-weight:800;color:var(--text-dim);flex-shrink:0;transition:all .15s}.dash-dpi-val{font-family:JetBrains Mono,monospace;font-size:.78rem;font-weight:700;color:var(--text);letter-spacing:-.3px}.dash-dpi--active .dash-dpi-val{color:var(--accent)}.dash-card--hz{display:flex;flex-direction:column}.dash-card-big{font-family:JetBrains Mono,monospace;font-size:2rem;font-weight:800;color:var(--text);line-height:1;letter-spacing:-1px}.dash-card-unit{font-size:.6rem;font-weight:700;color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;margin-top:2px}.dash-toggles{display:flex;gap:8px}.dash-toggle{display:flex;align-items:center;gap:5px;padding:4px 8px;border-radius:6px;background:var(--bg-input);font-size:.62rem;font-weight:700;color:var(--text-dim);letter-spacing:.3px;transition:all .15s}.dash-toggle--on{color:var(--accent);background:#ffd1080f}.dash-toggle-dot{width:7px;height:7px;border-radius:50%;background:var(--border);transition:all .2s;flex-shrink:0}.dash-toggle-dot.on{background:var(--accent);box-shadow:0 0 6px #ffd10866}.dash-card--params{grid-column:span 3}.dash-params{display:flex;align-items:center;gap:0}.dash-param{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px}.dash-param-sep{width:1px;height:28px;background:var(--border);flex-shrink:0}.dash-param-label{font-size:.52rem;font-weight:700;color:var(--text-dim);letter-spacing:1.2px;text-transform:uppercase}.dash-param-value{font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:800;color:var(--text);letter-spacing:-.3px}.dash-battery{display:flex;align-items:center;gap:10px}.dash-battery-track{flex:1;height:10px;border-radius:5px;background:var(--bg-input);border:1px solid var(--border);overflow:hidden}.dash-battery-fill{height:100%;border-radius:4px;background:var(--accent);transition:width .5s ease,background .3s;min-width:2px}.dash-battery.charging .dash-battery-fill{animation:batteryChargePulse 2s ease-in-out infinite}@keyframes batteryChargePulse{0%,to{opacity:1}50%{opacity:.5}}.dash-battery-pct{font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:800;color:var(--text);min-width:32px;text-align:right;letter-spacing:-.3px}.dash-profiles{display:flex;gap:6px}.dash-profile-dot{width:30px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:.62rem;font-weight:800;color:var(--text-dim);background:var(--bg-input);border:1px solid var(--border);transition:all .15s;letter-spacing:.5px}.dash-profile-dot.active{background:var(--accent);color:#0d0d14;border-color:var(--accent);box-shadow:0 0 10px #ffd10840}@media(max-width:700px){.dash-grid{grid-template-columns:1fr 1fr}.dash-card--params{grid-column:span 2}.dash-hub-wrap{max-width:360px}}@media(max-width:480px){.dash-grid{grid-template-columns:1fr}.dash-card--params{grid-column:span 1}.dash-params{flex-wrap:wrap}.dash-param-sep{display:none}.dash-hub-wrap{max-width:280px}}[data-theme=light] .dash-hub-img{filter:drop-shadow(0 6px 24px rgba(0,0,0,.18))}[data-theme=light] .dash-hub-wrap:hover .dash-hub-img{filter:drop-shadow(0 6px 28px rgba(101,54,148,.18))}[data-theme=light] .dash-hero-glow{background:radial-gradient(ellipse,rgba(101,54,148,.06) 0%,transparent 70%)}[data-theme=light] .dash-dpi--active{background:#6536940f;border-color:var(--accent)}[data-theme=light] .dash-toggle--on{background:#6536940f}.dash-skeleton{position:relative;color:transparent!important;overflow:hidden;border-radius:4px}.dash-skeleton:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,var(--border) 0%,var(--bg-elevated) 40%,var(--border) 80%);background-size:200% 100%;animation:skeletonShimmer 1.5s ease-in-out infinite}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.dashboard{animation:dashFadeIn .4s cubic-bezier(.22,1,.36,1)}@keyframes dashFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.dash-card{animation:dashCardIn .35s cubic-bezier(.22,1,.36,1) both}.dash-card:nth-child(1){animation-delay:.05s}.dash-card:nth-child(2){animation-delay:.1s}.dash-card:nth-child(3){animation-delay:.15s}.dash-card:nth-child(4){animation-delay:.2s}.dash-card:nth-child(5){animation-delay:.25s}.dash-card:nth-child(6){animation-delay:.3s}@keyframes dashCardIn{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
