:root{--bg-main: #0b0f19;--bg-card: #151d30;--bg-card-hover: #1c263e;--border-color: rgba(148, 163, 184, .18);--text-main: #f8fafc;--text-muted: #94a3b8;--color-gold: #e8b84b;--color-gold-light: #f5d17a;--accent-cyan: #9455f4;--accent-cyan-dark: #7c3aed;--accent-violet: #7c3aed;--accent-violet-light: #9455f4;--color-ontime: #10b981;--color-early: #f59e0b;--color-late: #f97316;--color-miss: #ef4444;--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--font-heading: "Poppins", "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.ui-icon{display:inline-block;vertical-align:middle;flex-shrink:0}html,body{background-color:var(--bg-main);color:var(--text-main);font-family:var(--font-family);min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden;touch-action:manipulation}.app-header{background:#0f172ad9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);padding:.75rem 1.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;z-index:10}.brand{display:flex;align-items:center;gap:.75rem}.brand-logo{height:36px;width:auto;object-fit:contain;display:block}.brand-icon{font-size:1.6rem;background:linear-gradient(135deg,#9455f4,#7c3aed);border-radius:8px;padding:.2rem .5rem;display:inline-block}.brand-info h1{font-size:1.15rem;font-weight:700;letter-spacing:-.01em;font-family:var(--font-heading);color:var(--color-gold)}.brand-info p{font-size:.75rem;color:var(--text-muted)}.nav-tabs{display:flex;align-items:center;background:#0f172a;padding:.25rem;border-radius:10px;border:1px solid var(--border-color);gap:.2rem}.tab-btn{background:transparent;border:none;color:var(--text-muted);font-size:.85rem;font-weight:600;padding:.45rem .9rem;border-radius:7px;cursor:pointer;transition:all .2s ease}.tab-btn.active{background:var(--bg-card);color:var(--accent-cyan);box-shadow:0 2px 8px #0006}.tab-btn.btn-config-tab{background:linear-gradient(135deg,#7c3aed33,#7c3aed4d);color:#c4b5fd;border:1px solid rgba(124,58,237,.5);font-weight:700;margin-left:.35rem;box-shadow:0 1px 8px #7c3aed38}.tab-btn.btn-config-tab:hover{background:linear-gradient(135deg,#7c3aed59,#7c3aed85);color:#fff;border-color:#9455f4;box-shadow:0 0 14px #7c3aed80;transform:translateY(-1px)}.tab-text-short{display:none}.tab-text-full{display:inline}.btn-stop-mobile{display:none}.header-actions{display:flex;align-items:center;gap:.75rem}.tempo-pill{background:#0f172a;border:1px solid var(--border-color);color:var(--accent-cyan);font-size:.88rem;font-weight:700;padding:.38rem .85rem;border-radius:20px;font-variant-numeric:tabular-nums;box-shadow:0 1px 4px #0000004d;letter-spacing:.02em;cursor:pointer;transition:all .18s cubic-bezier(.16,1,.3,1);-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center}.tempo-pill:hover{background:#172033;border-color:#9455f499;color:#c4b5fd;box-shadow:0 0 14px #7c3aed4d;transform:translateY(-1px)}.tempo-pill:active{transform:translateY(0);background:#7c3aed33}.btn-config-main{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid rgba(124,58,237,.35);color:#f8fafc;font-size:.85rem;font-weight:700;padding:.42rem .95rem;border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:.4rem;transition:all .2s cubic-bezier(.16,1,.3,1);box-shadow:0 2px 8px #0006}.btn-config-main:hover{background:linear-gradient(135deg,#27354f,#1e293b);border-color:var(--accent-cyan);color:var(--accent-cyan);transform:translateY(-1px);box-shadow:0 4px 12px #7c3aed40}.header-controls{display:flex;align-items:center;gap:1rem}.tempo-box{display:flex;align-items:center;gap:.5rem;background:var(--bg-card);padding:.35rem .75rem;border-radius:10px;border:1px solid var(--border-color)}.tempo-box label{font-size:.75rem;color:var(--text-muted);font-weight:600;text-transform:uppercase}.tempo-stepper{display:flex;align-items:center;gap:.3rem}.btn-step{background:#1e293b;border:1px solid var(--border-color);color:var(--text-main);width:26px;height:26px;border-radius:6px;cursor:pointer;font-weight:700;font-size:.9rem;display:flex;align-items:center;justify-content:center;transition:background .15s}.btn-step:hover{background:#334155}.tempo-val{font-size:1.05rem;font-weight:800;color:var(--accent-cyan);min-width:38px;text-align:center;font-variant-numeric:tabular-nums}.tempo-slider{width:80px;accent-color:var(--accent-cyan);cursor:pointer}.btn-subdivision-toggle{display:flex;align-items:center;gap:.45rem;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted);padding:.45rem .8rem;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-subdivision-toggle:hover{background:#1e293b;color:#e2e8f0;border-color:#7c3aed80}.btn-subdivision-toggle.active{background:#7c3aed26;border-color:var(--accent-cyan);color:var(--accent-cyan);box-shadow:0 0 12px #7c3aed4d}.subdiv-icon{font-size:1rem;font-weight:800}.btn-mic-toggle{display:flex;align-items:center;gap:.4rem;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted);padding:.45rem .8rem;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-mic-toggle.active{background:#10b98126;border-color:var(--color-ontime);color:var(--color-ontime)}.midi-status-badge{display:flex;align-items:center;gap:.45rem;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted);padding:.45rem .8rem;border-radius:8px;font-size:.8rem;font-weight:600;transition:all .15s ease;white-space:nowrap}.midi-status-badge.connected{border-color:#7c3aed99;color:var(--accent-cyan);background:#7c3aed1f}.midi-status-badge.target-hit{background:#10b98140;border-color:var(--color-ontime);color:var(--color-ontime);transform:scale(1.04);box-shadow:0 0 12px #10b98199}.midi-status-badge.wrong-note{border-color:var(--color-early);color:var(--color-early);background:#f59e0b26}.main-content{flex:1;display:flex;flex-direction:column;padding:1rem 1.25rem;max-width:1200px;width:100%;margin:0 auto;gap:1rem}.status-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;padding:.75rem 1.25rem;gap:1rem}.level-indicator h2{font-size:1.05rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold)}.level-dropdown{background:#1e293b;border:1px solid var(--border-color);color:var(--accent-cyan);padding:.25rem .5rem;border-radius:6px;font-size:.8rem;font-weight:700;cursor:pointer;outline:none;transition:all .15s}.level-dropdown:hover,.level-dropdown:focus{background:#27354f;border-color:var(--accent-cyan)}.level-indicator p{font-size:.8rem;color:var(--text-muted)}.measure-counter{display:flex;flex-direction:column;align-items:center}.measure-badge{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}.measure-text{font-size:1.25rem;font-weight:800;color:var(--text-main);letter-spacing:.02em}.beat-dots{display:flex;align-items:center;gap:.5rem}.beat-dot{width:32px;height:32px;border-radius:50%;background:#1e293b;border:1px solid var(--border-color);display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;color:var(--text-muted);transition:all .1s ease}.beat-dot.accent-dot{border-color:#7c3aed66}.beat-dot.pulsing{background:var(--accent-cyan);color:#0b0f19;transform:scale(1.15);box-shadow:0 0 16px #7c3aedcc}.beat-dot.pulsing.accent-dot{background:#9455f4;box-shadow:0 0 20px #7c3aed}.streak-counter{font-size:.85rem;color:var(--color-ontime);font-weight:700;min-width:90px;text-align:right}.highway-wrapper{background:#000;border-radius:16px;border:1px solid rgba(124,58,237,.35);box-shadow:inset 0 0 35px #000c,0 8px 30px #00000080;position:relative;overflow:hidden;height:200px;display:flex;align-items:center}#rhythm-canvas{width:100%;height:100%;display:block}.mic-monitor-bar{background:#1e293bb3;border:1px dashed rgba(245,158,11,.4);border-radius:10px;padding:.6rem 1rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;font-size:.8rem}.mic-warning{color:#fbbf24;display:flex;align-items:center;gap:.4rem}.mic-meter-controls{display:flex;align-items:center;gap:.75rem}.vu-meter-track{width:90px;height:8px;background:#0f172a;border-radius:4px;overflow:hidden;border:1px solid var(--border-color)}.vu-meter-fill{height:100%;width:0%;background:linear-gradient(90deg,#10b981,#f59e0b,#ef4444);transition:width .05s linear}.play-controls{display:flex;align-items:center;justify-content:center;gap:1rem}.btn-main-action{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;color:#fff;padding:.85rem 2rem;border-radius:12px;font-size:1.05rem;font-weight:700;cursor:pointer;box-shadow:0 4px 15px #2563eb66;transition:all .2s;display:flex;align-items:center;gap:.5rem}.btn-main-action:hover{transform:translateY(-2px);box-shadow:0 6px 20px #2563eb99}.btn-main-action:active{transform:translateY(0)}.btn-stop-action{background:#1e293b;border:1px solid rgba(239,68,68,.4);color:#f87171;padding:.85rem 1.6rem;border-radius:12px;font-size:1.05rem;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:.45rem;transition:all .2s}.btn-stop-action:hover:not(:disabled){background:#ef444426;border-color:#ef4444;color:#fca5a5;transform:translateY(-2px);box-shadow:0 4px 14px #ef444440}.btn-stop-action:disabled{opacity:.35;cursor:not-allowed;border-color:var(--border-color);color:var(--text-muted)}.tactile-pad-wrapper{margin-top:auto;display:flex;flex-direction:column;gap:.5rem;touch-action:none}.tactile-pad{background:linear-gradient(180deg,#1e293b,#0f172a);border:2px solid var(--accent-cyan);border-radius:16px;padding:1.5rem 1rem;color:var(--text-main);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;box-shadow:0 8px 24px #0009,inset 0 2px 4px #ffffff1a;transition:all .06s ease;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.tactile-pad:hover{background:linear-gradient(180deg,#24324a,#131c33)}.tactile-pad.active,.tactile-pad:active{transform:scale(.985);background:linear-gradient(180deg,#7c3aed,#5b21b6);border-color:#ddd6fe;box-shadow:0 0 30px #7c3aedcc,inset 0 4px 12px #0006}.tactile-pad-icon{font-size:2.2rem}.tactile-pad-text{font-size:1.25rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.tactile-pad.is-idle{border-color:var(--color-gold)}.tactile-pad.is-running{border-color:var(--accent-cyan)}.sheet-backdrop{display:none!important}.btn-close-sheet{display:none}.practice-selector{background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;padding:1.25rem;display:flex;flex-direction:column;gap:1.25rem}.practice-selector-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem}.practice-selector-header h3{font-size:1.05rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold)}.practice-selector-subtitle{font-size:.78rem;color:var(--text-muted);margin-top:.15rem}.quick-filter-btns{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem}.patterns-group-container{background:#0f172aa6;border:1px solid var(--border-color);border-radius:12px;padding:1rem;display:flex;flex-direction:column;gap:.85rem}.group-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;border-bottom:1px solid rgba(148,163,184,.12);padding-bottom:.55rem}.group-header-info{display:flex;align-items:center;gap:.5rem;line-height:1.2}.group-icon{font-size:1.15rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;flex-shrink:0}.group-title{font-size:.95rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold);line-height:1.2}.group-count{font-size:.72rem;font-weight:600;background:#7c3aed1f;color:var(--accent-cyan);padding:.15rem .5rem;border-radius:6px;border:1px solid rgba(124,58,237,.25)}.btn-group-toggle{background:#1e293b;border:1px solid var(--border-color);color:var(--text-muted);font-size:.75rem;font-weight:600;padding:.25rem .65rem;border-radius:6px;cursor:pointer;transition:all .15s ease}.btn-group-toggle:hover{background:#27354f;color:#f8fafc;border-color:#7c3aed80}.patterns-subgroup-wrap{display:flex;flex-direction:column;gap:.5rem}.subgroup-title{display:flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:700;color:#f1f5f9;border-left:3px solid #7c3aed;padding:.15rem .25rem .15rem .5rem}.subgroup-desc{font-size:.72rem;font-weight:400;color:#94a3b8}.patterns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:.6rem}.pattern-card{background:#0f172a;border:2px solid var(--border-color);border-radius:12px;padding:.5rem .35rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .18s cubic-bezier(.4,0,.2,1);position:relative;min-height:80px;height:84px}.pattern-card:hover{border-color:#7c3aed80;background:#172033;transform:translateY(-2px)}.pattern-card.selected{border-color:var(--accent-cyan);background:#7c3aed14;box-shadow:0 0 12px #7c3aed40}.pattern-svg-wrap{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:visible}.pattern-card svg,.pattern-svg-wrap svg{height:62px;width:auto;max-width:100%;max-height:100%;display:block;color:#f8fafc;transition:color .15s}.pattern-card.selected svg{color:var(--accent-cyan)}.pattern-name{font-size:.72rem;font-weight:700;text-align:center;color:#f8fafc}.pattern-badge{font-size:.56rem;font-weight:700;color:#94a3b8;background:#94a3b81f;padding:.06rem .35rem;border-radius:4px;text-transform:uppercase;letter-spacing:.04em}.pattern-card.selected .pattern-badge{color:var(--accent-cyan);background:#7c3aed26}.pattern-desc{font-size:.58rem;color:var(--text-muted);text-align:center;line-height:1.15}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0f19d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:1.25rem;z-index:100}.report-card{background:#141c2e;border:1px solid rgba(124,58,237,.3);border-radius:20px;padding:2rem;max-width:580px;width:100%;box-shadow:0 20px 50px #000c,0 0 30px #7c3aed26;display:flex;flex-direction:column;gap:1.5rem}.report-header{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.report-header-top{display:flex;align-items:center;justify-content:space-between;width:100%}.report-badge{background:#7c3aed26;color:var(--accent-cyan);padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:700;text-transform:uppercase}.report-header h2{font-size:1.45rem;font-weight:800;font-family:var(--font-heading);color:var(--color-gold)}.star-rating{font-size:2.2rem;letter-spacing:.2rem}.score-summary{display:flex;align-items:center;justify-content:space-around;background:#0d1322;border-radius:14px;padding:1.25rem;border:1px solid var(--border-color)}.score-circle{display:flex;flex-direction:column;align-items:center}.score-number{font-size:2.5rem;font-weight:900;color:var(--color-ontime);font-variant-numeric:tabular-nums}.score-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;font-weight:600}.score-meta{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;color:var(--text-muted)}.score-meta strong{color:var(--text-main)}.diagnostic-section{display:flex;flex-direction:column;gap:.75rem}.diagnostic-section h3{font-size:.95rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold)}.tendency-bar{display:flex;height:16px;border-radius:8px;overflow:hidden;background:#0f172a;border:1px solid var(--border-color)}.bar-segment{height:100%;transition:width .6s ease}.bar-ontime{background-color:var(--color-ontime)}.bar-early{background-color:var(--color-early)}.bar-late{background-color:var(--color-late)}.bar-miss{background-color:var(--color-miss)}.tendency-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.5rem;font-size:.78rem;color:var(--text-muted)}.legend-item{display:flex;align-items:center;gap:.4rem}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dot-ontime{background:var(--color-ontime)}.dot-early{background:var(--color-early)}.dot-late{background:var(--color-late)}.dot-miss{background:var(--color-miss)}.pedagogical-box{background:#7c3aed14;border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:.9rem 1rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.85rem;line-height:1.45;color:#e2e8f0}.pedagogical-icon{font-size:1.25rem;flex-shrink:0}.report-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.btn{padding:.7rem 1.25rem;border-radius:10px;font-size:.9rem;font-weight:700;cursor:pointer;border:none;transition:all .15s}.btn-primary{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;box-shadow:0 4px 12px #2563eb66}.btn-primary:hover{transform:translateY(-2px)}.btn-secondary{background:#1e293b;color:var(--text-main);border:1px solid var(--border-color)}.btn-secondary:hover{background:#334155}@keyframes popIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.animate-pop{animation:popIn .25s cubic-bezier(.16,1,.3,1) forwards}.btn-settings-toggle{display:flex;align-items:center;gap:.4rem;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted);padding:.45rem .8rem;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.config-modal-card{background:#0f172a;border:1px solid rgba(124,58,237,.28);border-radius:16px;padding:1.15rem 1.35rem;max-width:440px;width:92%;box-shadow:0 25px 60px -15px #000000d9,0 0 25px #7c3aed1f;display:flex;flex-direction:column;gap:.85rem}.cfg-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.65rem;border-bottom:1px solid rgba(148,163,184,.12)}.cfg-title-wrap{display:flex;align-items:center;gap:.5rem}.cfg-title-icon{font-size:1.25rem}.cfg-title{font-size:1.05rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold);letter-spacing:-.01em}.cfg-body{display:flex;flex-direction:column;gap:.65rem}.cfg-block{background:#151d30;border:1px solid var(--border-color);border-radius:12px;padding:.7rem .85rem;display:flex;flex-direction:column;gap:.5rem}.cfg-block.cfg-row{flex-direction:row;align-items:center;justify-content:space-between;padding:.6rem .85rem}.cfg-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.cfg-label{font-size:.82rem;font-weight:600;color:#e2e8f0;display:flex;align-items:center;gap:.4rem}.cfg-tempo-bar{display:flex;align-items:center;justify-content:space-between;width:100%}.cfg-tempo-stepper{display:flex;align-items:center;gap:.4rem}.cfg-btn-step{background:#1e293b;border:1px solid var(--border-color);color:#cbd5e1;font-size:.75rem;font-weight:700;padding:.25rem .55rem;border-radius:6px;cursor:pointer;transition:all .15s ease}.cfg-btn-step:hover{background:#334155;color:var(--accent-cyan);border-color:var(--accent-cyan)}.cfg-tempo-readout{display:flex;align-items:baseline;gap:.2rem;min-width:68px;justify-content:center}.cfg-tempo-readout span:first-child{font-size:1.35rem;font-weight:800;color:var(--accent-cyan);font-variant-numeric:tabular-nums;line-height:1}.cfg-bpm-unit{font-size:.7rem;font-weight:600;color:var(--text-muted)}.cfg-slider-line{width:100%;display:flex;align-items:center;padding:.15rem 0}.cfg-slider{width:100%;accent-color:var(--accent-cyan);cursor:pointer;height:4px}.cfg-slider-sm{height:4px;max-width:130px}.cfg-toggle-pill{background:#1e293b;border:1px solid var(--border-color);color:var(--text-muted);font-size:.78rem;font-weight:600;padding:.35rem .8rem;border-radius:20px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.cfg-toggle-pill:hover{background:#27354f;color:#f8fafc}.cfg-toggle-pill.active{background:#7c3aed26;border-color:var(--accent-cyan);color:var(--accent-cyan);box-shadow:0 0 10px #7c3aed40}.cfg-device-label{font-size:.8rem;font-weight:600;color:#cbd5e1;display:flex;align-items:center;gap:.4rem}.cfg-mic-subpanel{display:flex;flex-direction:column;gap:.45rem;background:#0b0f19a6;border:1px dashed rgba(148,163,184,.2);border-radius:8px;padding:.5rem .65rem;margin-top:.25rem}.cfg-meter-row,.cfg-sens-row{display:flex;align-items:center;gap:.6rem}.cfg-subtext{font-size:.72rem;color:var(--text-muted);min-width:65px}.cfg-vu-track{flex:1;height:6px;background:#0b0f19;border-radius:3px;overflow:hidden;border:1px solid var(--border-color)}.cfg-vu-fill{height:100%;width:0%;background:linear-gradient(90deg,#10b981,#f59e0b,#ef4444);transition:width .05s linear}.cfg-sens-pct{font-size:.72rem;font-weight:700;color:var(--accent-cyan);min-width:32px;text-align:right;font-variant-numeric:tabular-nums}.cfg-midi-badge{font-size:.75rem;font-weight:600;color:var(--text-muted);background:#1e293b;border:1px solid var(--border-color);padding:.25rem .65rem;border-radius:6px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cfg-midi-badge.connected{color:var(--accent-cyan);border-color:#7c3aed80;background:#7c3aed1f}.cfg-btn-action{background:#1e293b;border:1px solid var(--border-color);color:#e2e8f0;font-size:.75rem;font-weight:600;padding:.28rem .75rem;border-radius:6px;cursor:pointer;transition:all .15s ease}.cfg-btn-action:hover{background:#27354f;color:var(--accent-cyan);border-color:var(--accent-cyan)}.cfg-footer{display:flex;justify-content:flex-end;padding-top:.4rem;border-top:1px solid rgba(148,163,184,.1)}.btn-cfg-done{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;border:none;font-size:.85rem;font-weight:700;padding:.45rem 1.4rem;border-radius:8px;cursor:pointer;transition:all .15s ease;box-shadow:0 2px 8px #2563eb59}.btn-cfg-done:hover{transform:translateY(-1px);box-shadow:0 4px 12px #2563eb80}.latency-card{background:#141c2e;border:1px solid rgba(124,58,237,.3);border-radius:20px;padding:1.75rem;max-width:660px;width:100%;box-shadow:0 20px 50px #000c,0 0 30px #7c3aed26;display:flex;flex-direction:column;gap:1.2rem;max-height:90vh;overflow-y:auto}.latency-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.latency-header-icon{font-size:1.8rem}.latency-header h2{font-size:1.25rem;font-weight:800;font-family:var(--font-heading);color:var(--color-gold)}.latency-header p{font-size:.78rem;color:var(--text-muted)}.btn-close-modal{background:transparent;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;border-radius:6px;transition:all .15s}.btn-close-modal:hover{color:#fff;background:#1e293b}.latency-info-box{background:#7c3aed14;border:1px solid rgba(124,58,237,.2);border-radius:10px;padding:.75rem 1rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.8rem;line-height:1.4;color:#cbd5e1}.latency-rows-list{display:flex;flex-direction:column;gap:.75rem}.latency-row{background:#0f172a;border:1px solid var(--border-color);border-radius:12px;padding:.85rem 1rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;transition:all .2s ease}.latency-row.flash-active{background:#10b98126;border-color:var(--color-ontime);box-shadow:0 0 16px #10b9814d;transform:scale(1.01)}.device-meta{display:flex;align-items:center;gap:.75rem;flex:1;min-width:210px}.device-icon{font-size:1.5rem}.device-texts{display:flex;flex-direction:column}.device-name{font-size:.9rem;font-weight:700;color:#f1f5f9}.device-desc{font-size:.72rem;color:var(--text-muted)}.device-controls{display:flex;align-items:center;gap:.75rem}.stepper-group{display:flex;align-items:center;gap:.35rem}.btn-step-mini{background:#1e293b;border:1px solid var(--border-color);color:var(--text-main);width:28px;height:26px;border-radius:6px;cursor:pointer;font-weight:700;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:background .15s}.btn-step-mini:hover{background:#334155;color:var(--accent-cyan)}.latency-slider{width:110px;accent-color:var(--accent-cyan);cursor:pointer}.latency-val-badge{min-width:65px;text-align:right;font-size:.95rem;font-weight:800;color:var(--accent-cyan);font-variant-numeric:tabular-nums}.latency-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.75rem;padding-top:.5rem;border-top:1px solid var(--border-color)}.auto-calibrate-banner{background:linear-gradient(135deg,#7c3aed33,#6366f133);border:1px solid rgba(124,58,237,.4);border-radius:14px;padding:1.1rem 1.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.banner-texts{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:240px}.banner-badge{background:#7c3aed33;color:var(--accent-cyan);font-size:.7rem;font-weight:800;text-transform:uppercase;padding:.2rem .6rem;border-radius:12px;width:fit-content}.banner-texts h3{font-size:1.05rem;font-weight:700;font-family:var(--font-heading);color:var(--color-gold)}.banner-texts p{font-size:.8rem;color:#cbd5e1}.btn-cal-mini{background:#7c3aed1f;border:1px solid rgba(124,58,237,.35);color:var(--accent-cyan);padding:.35rem .65rem;border-radius:6px;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-cal-mini:hover{background:var(--accent-cyan);color:#0b0f19;transform:translateY(-1px)}.cal-wizard-card{background:#101626;border:1px solid rgba(124,58,237,.4);border-radius:20px;padding:1.75rem;max-width:680px;width:100%;box-shadow:0 25px 60px #000000d9,0 0 35px #7c3aed33;display:flex;flex-direction:column;gap:1.25rem;max-height:92vh;overflow-y:auto}.cal-wizard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.cal-icon-large{font-size:2rem}.cal-wizard-header h2{font-size:1.3rem;font-weight:800;font-family:var(--font-heading);color:var(--color-gold)}.cal-wizard-header p{font-size:.8rem;color:var(--text-muted)}.cal-section-label{font-size:.9rem;font-weight:700;color:#cbd5e1;display:block;margin-bottom:.75rem}.device-picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem}.device-pick-card{background:#0d1220;border:2px solid var(--border-color);border-radius:12px;padding:.85rem;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;cursor:pointer;transition:all .15s}.device-pick-card:hover{border-color:#7c3aed80;background:#141c30}.device-pick-card.selected{border-color:var(--accent-cyan);background:#7c3aed1f;box-shadow:0 0 14px #7c3aed40}.device-pick-icon{font-size:1.7rem}.device-pick-name{font-size:.85rem;font-weight:700;color:#f1f5f9}.device-pick-desc{font-size:.7rem;color:var(--text-muted)}.device-pick-offset{font-size:.75rem;font-weight:800;color:var(--accent-cyan);margin-top:.25rem}.cal-instructions-box{background:#7c3aed14;border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:.9rem 1rem;margin-top:1rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.82rem;line-height:1.45;color:#cbd5e1}.cal-instructions-box p{margin-top:.2rem}.cal-running-stage{display:flex;flex-direction:column;align-items:center;gap:1.25rem;padding:1rem 0}.cal-pulse-circle{width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,#7c3aed,#4c1d95);border:4px solid var(--accent-cyan);box-shadow:0 0 25px #7c3aed66;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:transform .08s ease,box-shadow .08s ease}.cal-pulse-circle.pulsing{transform:scale(1.12);box-shadow:0 0 45px #7c3aed;border-color:#ddd6fe}.cal-beat-number{font-size:2.4rem;font-weight:900;color:#fff;line-height:1}.cal-beat-sub{font-size:.7rem;color:#ede9fe;font-weight:600;max-width:120px;margin-top:.25rem}.cal-progress-wrapper{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.cal-progress-dots{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.cal-dot{width:44px;height:44px;border-radius:8px;background:#1e293b;border:1px solid var(--border-color);display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:var(--text-muted);transition:all .15s}.cal-dot.current{border-color:var(--accent-cyan);color:var(--accent-cyan);transform:scale(1.05)}.cal-dot.recorded{background:#10b98133;border-color:var(--color-ontime);color:var(--color-ontime)}.cal-progress-text{font-size:.85rem;color:#cbd5e1;font-weight:600}.cal-tap-zone{width:100%;background:linear-gradient(180deg,#1e293b,#0d1220);border:2px dashed var(--accent-cyan);border-radius:16px;padding:1.5rem 1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;cursor:pointer;transition:all .08s ease}.cal-tap-zone:hover{background:linear-gradient(180deg,#24324a,#131c33)}.cal-tap-zone.hit-active{transform:scale(.985);background:#7c3aed40;border-color:#ddd6fe;box-shadow:0 0 25px #7c3aedcc}.cal-tap-icon{font-size:2rem}.cal-tap-title{font-size:1rem;font-weight:800;font-family:var(--font-heading);color:var(--color-gold);text-align:center}.cal-tap-hint{font-size:.75rem;color:var(--text-muted)}.cal-results-body{display:flex;flex-direction:column;gap:1.25rem}.cal-recommendation-box{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-around;background:#0a0f1d;border:1px solid rgba(124,58,237,.3);border-radius:16px;padding:1.5rem;gap:1.25rem}.cal-offset-result{display:flex;flex-direction:column;align-items:center}.cal-offset-number{font-size:3rem;font-weight:900;color:var(--color-ontime);line-height:1;font-variant-numeric:tabular-nums}.cal-offset-label{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:700;margin-top:.4rem}.cal-meta-stats{display:flex;flex-direction:column;gap:.45rem;font-size:.85rem;color:var(--text-muted)}.cal-meta-stats strong{color:#f8fafc}.cal-consistency-box{background:#7c3aed14;border:1px solid rgba(124,58,237,.2);border-radius:12px;padding:.9rem 1.1rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.85rem;line-height:1.45;color:#e2e8f0}.cal-consistency-icon{font-size:1.3rem;flex-shrink:0}.cal-samples-list{display:flex;flex-direction:column;gap:.5rem}.cal-samples-chips{display:flex;flex-wrap:wrap;gap:.4rem}.cal-sample-chip{background:#1e293b;border:1px solid var(--border-color);border-radius:6px;padding:.25rem .55rem;font-size:.75rem;color:#cbd5e1}.cal-wizard-footer{display:flex;justify-content:flex-end;gap:.75rem;padding-top:.5rem;border-top:1px solid var(--border-color)}@media (max-width: 768px){html,body{height:100dvh;max-height:100dvh;height:100vh;overflow:hidden;position:fixed;width:100%;overscroll-behavior:none;-webkit-overflow-scrolling:auto}.main-content{height:auto;flex:1 1 auto;min-height:0;overflow:hidden;padding:.4rem .6rem .55rem;gap:.45rem;justify-content:space-between;max-width:100%}.app-header{margin:.35rem .6rem 0;padding:.45rem .65rem;height:auto;min-height:unset;border-radius:16px;background:#0f172af2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.38rem .4rem;z-index:50;box-shadow:0 4px 20px #00000080;flex-shrink:0}.brand{gap:.4rem;flex-shrink:0;display:flex;align-items:center}.brand-logo{height:26px;max-width:88px;object-fit:contain}.brand-info{display:none}.nav-tabs{padding:.18rem;gap:.2rem;border-radius:999px;background:#0b0f19;border:1px solid rgba(148,163,184,.15);height:34px;display:flex;align-items:center;margin-left:auto;max-width:calc(100% - 92px);overflow-x:auto;scrollbar-width:none;transition:opacity .2s ease}.nav-tabs::-webkit-scrollbar{display:none}body.is-running .nav-tabs{display:none}.tab-btn{font-size:.74rem;font-weight:700;padding:.28rem .55rem;height:28px;line-height:1;border-radius:999px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.tab-btn .tab-text-full{display:none}.tab-btn .tab-text-short{display:inline}.tab-btn.btn-config-tab{padding:.28rem .52rem;height:28px;margin-left:.05rem;display:inline-flex;align-items:center;gap:.2rem}.tab-btn.btn-config-tab svg{width:14px;height:14px;margin-right:0!important}.header-actions{width:100%;flex-basis:100%;gap:.38rem;display:flex;align-items:center;justify-content:space-between;padding-top:.32rem;border-top:1px solid rgba(148,163,184,.12)}.tempo-pill{flex:1 1 0;justify-content:center;font-size:.78rem;font-weight:700;padding:.25rem .45rem;height:32px;border-radius:999px;background:#0b0f19;border-color:#7c3aed59;white-space:nowrap;display:inline-flex;align-items:center;cursor:pointer;min-width:0}.tempo-pill-bpm{display:inline;font-size:.66rem;margin-left:2px;opacity:.85}.btn-stop-mobile{display:none;flex:1.15 1 0;justify-content:center;align-items:center;gap:.3rem;background:#ef444438;border:1.5px solid #ef4444;color:#fca5a5;font-size:.76rem;font-weight:700;padding:.25rem .55rem;height:32px;border-radius:999px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-stop-mobile svg{width:13px;height:13px}body.is-running .btn-stop-mobile{display:inline-flex;animation:popIn .2s ease forwards}.status-bar{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:nowrap;padding:.35rem .6rem;gap:.35rem;background:#0f172a;border:1px solid var(--border-color);border-radius:12px;height:44px;min-height:44px;max-height:44px;flex-shrink:0}.level-indicator{display:flex;align-items:center;min-width:0}.level-indicator h2,.level-indicator p{display:none}.level-dropdown{font-size:.76rem;padding:.2rem .4rem;height:30px;max-width:96px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background:#1e293b;border-radius:8px;font-weight:700}.measure-counter{display:flex;flex-direction:row;align-items:center;gap:.25rem;flex-shrink:0}.measure-badge{display:none}.measure-text{font-size:.85rem;font-weight:800;color:var(--text-main);white-space:nowrap;font-variant-numeric:tabular-nums}.beat-dots{gap:.25rem;display:flex;align-items:center;flex-shrink:0}.beat-dot{width:24px;height:24px;font-size:.74rem;font-weight:800;border-radius:50%}.beat-dot.pulsing{transform:scale(1.16)}.streak-counter{font-size:.74rem;font-weight:800;min-width:auto;white-space:nowrap;padding:.2rem .45rem;background:#10b9811f;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--color-ontime);flex-shrink:0}.highway-wrapper{flex:1 1 140px;height:auto;min-height:125px;max-height:165px;border-radius:14px;background:#000;border:1px solid rgba(124,58,237,.45);box-shadow:inset 0 0 25px #000000e6,0 4px 16px #0009;position:relative;overflow:hidden;display:flex;align-items:center}#rhythm-canvas{height:100%;width:100%}.play-controls{display:none!important}.tactile-pad-wrapper{flex:1 1 155px;height:auto;min-height:135px;max-height:190px;width:100%;margin-top:0;display:flex;flex-direction:column}.tactile-pad{height:100%;width:100%;padding:.85rem 1rem;border-radius:16px;gap:.35rem;justify-content:center;background:linear-gradient(180deg,#18233a,#0d1322);transition:all .08s ease}.tactile-pad.is-idle{border:2px solid var(--color-gold);box-shadow:0 0 16px #e8b84b40,inset 0 0 12px #e8b84b14;animation:pulseIdleBorder 2.5s infinite ease-in-out}@keyframes pulseIdleBorder{0%,to{border-color:#e8b84bb3;box-shadow:0 0 12px #e8b84b33}50%{border-color:#e8b84b;box-shadow:0 0 22px #e8b84b73}}.tactile-pad.is-idle .tactile-pad-text{color:var(--color-gold);font-size:1.05rem;font-weight:800;letter-spacing:.04em}.tactile-pad.is-idle .tactile-pad-icon{color:var(--color-gold)}.tactile-pad.is-running{border:2px solid var(--accent-cyan);box-shadow:0 0 16px #7c3aed4d,inset 0 0 12px #7c3aed1a}.tactile-pad.is-running .tactile-pad-text{color:#f8fafc;font-size:1.1rem;font-weight:800}.tactile-pad-icon svg{width:32px;height:32px}.tactile-pad-hint{font-size:.75rem;color:var(--text-muted);text-align:center;line-height:1.25}.practice-selector{position:fixed;bottom:0;left:0;right:0;width:100%;max-height:78dvh;overflow-y:auto;z-index:100;border-radius:20px 20px 0 0;background:#111827;border:1px solid rgba(124,58,237,.45);border-bottom:none;box-shadow:0 -10px 40px #000000e6;padding:1rem .85rem 1.75rem;animation:slideUpSheet .25s cubic-bezier(.16,1,.3,1) forwards;-webkit-overflow-scrolling:touch}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-backdrop{position:fixed!important;top:0;right:0;bottom:0;left:0;background:#020617bf;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:95}.practice-selector-header{gap:.5rem}.practice-selector-title-wrap{display:flex;align-items:flex-start;justify-content:space-between;width:100%;gap:.5rem}.practice-selector-header h3{font-size:.92rem}.practice-selector-subtitle{font-size:.7rem}.btn-close-sheet{display:inline-flex!important;align-items:center;justify-content:center;background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;border:none;border-radius:8px;font-weight:700;font-size:.78rem;padding:.35rem .85rem;cursor:pointer;flex-shrink:0;box-shadow:0 2px 8px #7c3aed66}.patterns-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:.45rem}.pattern-card{min-height:68px;height:70px;padding:.35rem .2rem}.pattern-card svg,.pattern-svg-wrap svg{height:50px}.modal-backdrop{padding:.75rem}.report-card,.config-modal-card,.latency-card,.cal-wizard-card{padding:1.15rem 1rem;max-height:90dvh;overflow-y:auto;width:96%;gap:.85rem}.score-summary{padding:.75rem}.score-number{font-size:2rem}.tendency-legend{grid-template-columns:1fr 1fr;gap:.35rem;font-size:.72rem}.device-controls{width:100%;justify-content:space-between}.latency-slider{width:100%;max-width:120px}}.tab-btn.btn-share-tab{background:linear-gradient(135deg,#e8b84b29,#e8b84b42);color:var(--color-gold-light);border:1px solid rgba(232,184,75,.45);font-weight:700;margin-left:.2rem;box-shadow:0 1px 8px #e8b84b26}.tab-btn.btn-share-tab:hover{background:linear-gradient(135deg,#e8b84b47,#e8b84b6b);color:#fff;border-color:var(--color-gold);box-shadow:0 0 14px #e8b84b66;transform:translateY(-1px)}.student-mode-badge{display:inline-flex;align-items:center;gap:.35rem;background:#10b98124;color:#34d399;border:1px solid rgba(16,185,129,.4);font-size:.8rem;font-weight:700;padding:.4rem .75rem;border-radius:7px;white-space:nowrap}.meter-pill{color:var(--color-gold-light);border-color:#e8b84b52}.meter-pill:hover:not(.is-locked){border-color:#e8b84ba6;color:#fff;box-shadow:0 0 14px #e8b84b47}.tempo-pill.is-locked{cursor:default;opacity:.92}.tempo-pill.is-locked:hover{transform:none;box-shadow:0 1px 4px #0000004d}.cfg-meter-group{display:inline-flex;align-items:center;background:#0b0f19;padding:.2rem;border-radius:10px;border:1px solid var(--border-color);gap:.25rem}.cfg-meter-btn{background:transparent;border:1px solid transparent;color:var(--text-muted);font-size:.8rem;font-weight:700;padding:.3rem .7rem;border-radius:7px;cursor:pointer;transition:all .15s ease;font-variant-numeric:tabular-nums}.cfg-meter-btn:hover{color:#f8fafc;background:#1e293b}.cfg-meter-btn.active{background:#7c3aed38;color:#c4b5fd;border-color:var(--accent-cyan);box-shadow:0 0 10px #7c3aed4d}.cfg-student-lock-banner{background:#e8b84b1a;border:1px solid rgba(232,184,75,.3);color:#f8fafc;border-radius:10px;padding:.65rem .8rem;font-size:.78rem;line-height:1.4;display:flex;align-items:center;gap:.55rem}.cfg-student-lock-banner svg{color:var(--color-gold);flex-shrink:0}.pattern-card.disabled-by-meter{opacity:.32;cursor:not-allowed;border-style:dashed;background:#090d16}.pattern-card.disabled-by-meter:hover{transform:none;border-color:var(--border-color);background:#090d16}.meter-limit-badge{position:absolute;bottom:4px;right:5px;font-size:.58rem;font-weight:700;background:#0f172aeb;color:var(--color-gold);border:1px solid rgba(232,184,75,.4);padding:.05rem .32rem;border-radius:4px;pointer-events:none}.student-figures-strip{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;margin-top:.45rem}.student-fig-pill{display:inline-flex;align-items:center;gap:.3rem;background:#0f172a;border:1px solid rgba(124,58,237,.35);border-radius:8px;padding:.15rem .5rem .15rem .3rem}.student-fig-svg{display:inline-flex;align-items:center;justify-content:center;height:24px}.student-fig-svg svg{height:24px;width:auto;color:var(--accent-cyan)}.student-fig-label{font-size:.7rem;font-weight:600;color:#cbd5e1}.student-speedup-hint{text-align:center;font-size:.78rem;color:var(--text-muted);background:#e8b84b14;border:1px dashed rgba(232,184,75,.3);border-radius:10px;padding:.55rem .85rem}.student-speedup-hint strong{color:var(--color-gold-light)}.share-modal-card{max-width:500px}.share-title-input,.share-url-input{width:100%;background:#0b0f19;border:1px solid var(--border-color);border-radius:8px;padding:.55rem .75rem;color:var(--text-main);font-family:var(--font-family);font-size:.84rem;outline:none;user-select:text;-webkit-user-select:text;transition:border-color .15s ease}.share-title-input:focus,.share-url-input:focus{border-color:var(--accent-cyan)}.share-url-input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.76rem;color:#c4b5fd;cursor:pointer}.share-summary-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.4rem}.share-mode-tag{font-size:.7rem;font-weight:700;color:var(--color-gold-light);background:#e8b84b24;border:1px solid rgba(232,184,75,.35);padding:.15rem .5rem;border-radius:6px}.share-meta-pills{display:flex;flex-wrap:wrap;gap:.4rem}.share-meta-pill{background:#0b0f19;border:1px solid var(--border-color);border-radius:6px;padding:.25rem .55rem;font-size:.75rem;color:var(--text-muted)}.share-meta-pill strong{color:#f8fafc}.share-figures-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:.4rem;max-height:150px;overflow-y:auto;padding:.2rem 0}.share-figure-chip{background:#0b0f19;border:1px solid rgba(124,58,237,.3);border-radius:8px;padding:.3rem .25rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem}.share-figure-svg{height:36px;display:flex;align-items:center;justify-content:center}.share-figure-svg svg{height:34px;width:auto;color:var(--accent-cyan)}.share-figure-name{font-size:.62rem;color:#cbd5e1;text-align:center;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-lock-note{display:flex;align-items:flex-start;gap:.45rem;font-size:.73rem;color:var(--text-muted);line-height:1.35;background:#7c3aed14;border-radius:8px;padding:.45rem .6rem}.share-lock-note svg{color:var(--accent-cyan);flex-shrink:0;margin-top:1px}.share-footer{gap:.6rem}.btn-copy-link{display:inline-flex;align-items:center;gap:.4rem}.btn-copy-link.copied{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 2px 12px #10b98173}@media (max-width: 768px){.tab-btn.btn-share-tab{padding:.28rem .52rem;height:28px;margin-left:.05rem;display:inline-flex;align-items:center;gap:.2rem}.tab-btn.btn-share-tab svg{width:14px;height:14px;margin-right:0!important}.student-mode-badge{padding:.25rem .5rem;height:28px;border-radius:999px;font-size:.72rem}body.is-student-mode .level-indicator h2{display:block;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:115px}.student-figures-strip{display:none!important}}.tempo-pill.mode-pill{gap:.32rem;padding:.25rem .65rem;border-color:#94a3b840;color:var(--text-muted)}.tempo-pill.mode-pill svg{color:var(--text-muted);transition:color .15s ease}.mode-pill-val{font-size:.8rem;font-weight:700;color:#cbd5e1;white-space:nowrap}.tempo-pill.mode-pill.is-active-cr{border-color:var(--color-gold);background:#e8b84b24;box-shadow:0 0 12px #e8b84b33}.tempo-pill.mode-pill.is-active-cr svg,.tempo-pill.mode-pill.is-active-cr .mode-pill-val{color:var(--color-gold-light)}.cfg-cr-subpanel{display:flex;flex-direction:column;gap:.5rem;background:#0b0f19a6;border:1px dashed rgba(232,184,75,.3);border-radius:8px;padding:.55rem .7rem;margin-top:.2rem}.cfg-subtext-label{font-size:.76rem;font-weight:600;color:#cbd5e1}@media (max-width: 768px){.tempo-pill.mode-pill{padding:.25rem .45rem;gap:.25rem}.mode-pill-val{font-size:.76rem}}.live-dot{width:9px;height:9px;border-radius:50%;background:#f59e0b;box-shadow:0 0 8px #f59e0bb3;display:inline-block;flex-shrink:0;animation:livePulse 1.8s infinite ease-in-out}.live-dot.is-online{background:#10b981;box-shadow:0 0 10px #10b981d9}@keyframes livePulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}.student-live-pill{display:inline-flex;align-items:center;gap:.4rem;background:#10b98124;border:1px solid rgba(16,185,129,.45);color:#6ee7b7;font-size:.76rem;font-weight:700;padding:.32rem .65rem;border-radius:8px;white-space:nowrap}.tab-btn.btn-switch-teacher{background:#e8b84b1f;border:1px solid rgba(232,184,75,.4);color:var(--color-gold-light);font-size:.78rem;font-weight:700;padding:.35rem .7rem;display:inline-flex;align-items:center;gap:.25rem}.tab-btn.btn-switch-teacher:hover{background:#e8b84b3d;border-color:var(--color-gold);color:#fff;transform:translateY(-1px)}.teacher-live-banner{background:linear-gradient(135deg,#10b9811f,#7c3aed29);border:1px solid rgba(16,185,129,.38);border-radius:14px;padding:.65rem 1rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;box-shadow:0 6px 20px #00000059}.teacher-live-info{display:flex;align-items:center;gap:.65rem}.teacher-live-texts{display:flex;flex-direction:column;gap:.1rem}.teacher-live-title-row{display:flex;align-items:center;gap:.45rem}.teacher-live-tag{font-size:.68rem;font-weight:800;letter-spacing:.04em;color:#6ee7b7;background:#10b9812e;border:1px solid rgba(16,185,129,.4);padding:.1rem .45rem;border-radius:5px}.teacher-live-room{font-size:.73rem;font-weight:700;color:var(--color-gold-light);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.teacher-live-status{font-size:.8rem;font-weight:600;color:#f1f5f9}.teacher-live-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem}.btn-live-ctrl{background:#151d30;border:1px solid rgba(148,163,184,.28);color:#e2e8f0;font-size:.76rem;font-weight:700;padding:.36rem .7rem;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;transition:all .15s ease}.btn-live-ctrl:hover{background:#1e293b;border-color:var(--accent-cyan);color:#fff;transform:translateY(-1px)}.btn-live-ctrl.is-audio-on{border-color:#10b98173;color:#6ee7b7;background:#10b9811f}.btn-live-ctrl.is-audio-muted{border-color:#f59e0b73;color:#fcd34d;background:#f59e0b1f}.btn-live-ctrl.btn-live-exit{border-color:#ef444466;color:#fca5a5;background:#ef44441a}.btn-live-ctrl.btn-live-exit:hover{background:#ef444438;border-color:#ef4444;color:#fff}.btn-live-monitor-start{display:inline-flex;align-items:center;gap:.4rem;background:linear-gradient(135deg,#059669,#10b981);box-shadow:0 2px 12px #10b98159}.btn-live-monitor-start:hover{box-shadow:0 4px 16px #10b9818c}.live-toast{position:fixed;bottom:1.35rem;right:1.35rem;background:#0f172af2;border:1px solid rgba(16,185,129,.5);color:#f8fafc;padding:.65rem 1.05rem;border-radius:12px;font-size:.82rem;font-weight:700;box-shadow:0 10px 30px #000000a6,0 0 18px #10b98140;z-index:250;align-items:center;gap:.5rem;animation:popIn .2s ease-out forwards}@media (max-width: 768px){.teacher-live-banner{padding:.45rem .65rem;gap:.45rem}.teacher-live-status{font-size:.72rem}.btn-live-ctrl{padding:.28rem .5rem;font-size:.7rem}.tab-btn.btn-switch-teacher{padding:.25rem .5rem;font-size:.7rem;height:28px}.student-live-pill{padding:.22rem .45rem;font-size:.68rem;height:28px}}
