:root{--bg-color: #f8f9fa;--card-bg: #ffffff;--card-border: #000000;--text-primary: #111827;--text-secondary: #4b5563;--accent-color: #3b82f6;--accent-hover: #2563eb;--success-color: #10b981;--error-color: #ef4444;--highlight-color: #f59e0b;--font-family: "Outfit", sans-serif;--shadow-color: rgba(0, 0, 0, .05)}[data-theme=dark]{--bg-color: #0f1115;--card-bg: #1a1d24;--card-border: transparent;--text-primary: #ffffff;--text-secondary: #8b9bb4;--shadow-color: rgba(0, 0, 0, .3)}#app{width:100%;max-width:1400px;padding:1rem;box-sizing:border-box}.app-layout{display:grid;grid-template-columns:260px 1fr 220px;gap:2rem;align-items:start;width:100%}.sidebar-left,.sidebar-right{display:flex;flex-direction:column;gap:1rem;height:100%;transition:all .5s ease}.scoring-panel{display:flex;flex-direction:column;gap:.75rem;width:100%;animation:fadeIn .3s ease-out}.score-card{background:var(--card-bg);border:1px solid var(--text-secondary);border-radius:12px;padding:1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;box-shadow:0 2px 4px var(--shadow-color)}.score-card .label{font-size:.8rem;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.05em;font-weight:500}.score-card .value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.results-panel{display:flex;flex-direction:column;gap:1rem;width:100%;animation:fadeIn .3s ease-out}.result-card{background:var(--card-bg-highlight);border-color:var(--primary-color);padding:1.5rem}.result-card .value{color:var(--primary-color);font-size:2rem}#close-results-btn{width:100%;margin-top:.5rem}.focus-mode .sidebar-left,.focus-mode .header{filter:blur(5px);opacity:.3;pointer-events:none}.scoring-panel.hidden-scores{display:none}.header{transition:all .5s ease}.main-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding-top:2rem}.action-area{display:flex;justify-content:center;width:100%}.container{display:flex;flex-direction:column;gap:2rem;align-items:center;width:100%}.header{text-align:center;margin-bottom:.5rem;position:relative;z-index:10}.header-top{display:flex;align-items:center;justify-content:center;gap:1rem}.header h1{font-family:Outfit,sans-serif;font-weight:700;font-size:1.8rem;margin:0;letter-spacing:-.05em;color:var(--text-primary);text-shadow:0 2px 10px rgba(0,0,0,.1)}[data-theme=dark] h1{background:linear-gradient(135deg,#fff,#a5b4fc);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.icon-btn{background:none;border:none;color:var(--text-primary);cursor:pointer;padding:.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.icon-btn:hover{background-color:#0000000d}[data-theme=dark] .icon-btn:hover{background-color:#ffffff1a}.hidden{display:none}.subtitle{color:var(--text-secondary);font-size:1rem;margin-top:.25rem}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-family);background-color:var(--bg-color);color:var(--text-primary);display:flex;justify-content:center;align-items:center;min-height:100vh}#app{width:100%;max-width:1400px;padding:1rem}.grid-viewport{width:100%;max-width:600px;overflow:hidden;position:relative}#grid-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;pointer-events:none;z-index:10}.overlay-column{width:33.333%;display:flex;flex-direction:column;gap:1rem;align-items:center;justify-content:center;padding:0 .5rem}.overlay-cell{width:100%;aspect-ratio:4/3;position:relative}#grid-track{display:flex;width:100%;will-change:transform}#grid-track .chord-column{display:flex;flex-direction:column;gap:1rem;flex-shrink:0;align-items:center;justify-content:center;padding:0 .5rem}.chord-column{display:flex;flex-direction:column;gap:.5rem;flex:1}.chord-card{width:100%;background-color:var(--card-bg);border-radius:16px;padding:1.5rem;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:4/3;box-shadow:0 4px 6px -1px var(--shadow-color),0 2px 4px -1px var(--shadow-color);transition:transform .2s ease,box-shadow .2s ease,border-color .2s;border:2px solid var(--card-border);position:relative}.degree{position:absolute;top:.5rem;left:.5rem;right:auto;font-size:.85rem;color:var(--text-primary);font-weight:600;letter-spacing:0;margin:0;pointer-events:auto;background-color:var(--card-bg);border:1.5px solid var(--text-primary);border-radius:50%;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000001a;z-index:20}.hide-functions .degree{display:none}.overlay-cell.active-target{border:4px solid var(--highlight-color);border-radius:16px;box-shadow:inset 0 0 15px #f59e0b66;transform:none;width:100%;height:100%;box-sizing:border-box}.overlay-cell.active-target .degree{color:var(--highlight-color);font-weight:700;font-size:1.5rem;width:3rem;height:3rem;border-width:3px;text-shadow:0 0 15px var(--highlight-color);background-color:var(--card-bg);transition:all .2s cubic-bezier(.175,.885,.32,1.275)}.root-preview-mode .overlay-cell:not(.allowed-preview) .degree{opacity:0;transform:scale(.5);transition:all .3s ease}.root-preview-mode .overlay-cell.allowed-preview .degree{opacity:1;transform:scale(1)}@keyframes flash-red{0%{background-color:var(--card-bg)}50%{background-color:#ef444480!important;border-color:var(--error-color);box-shadow:0 0 15px #ef444466}to{background-color:var(--card-bg)}}@keyframes flash-global-red{0%{box-shadow:inset 0 0 0 0 transparent;background-color:transparent}50%{box-shadow:inset 0 0 50px #ef444466;background-color:#ef444433}to{box-shadow:inset 0 0 0 0 transparent;background-color:transparent}}.flash-global-error .chord-card{animation:flash-card-red .4s ease-out}@keyframes flash-card-red{0%,to{border-color:var(--card-border);background:var(--card-bg)}50%{border-color:var(--error-color);background:#ef444480!important;box-shadow:0 0 15px #ef444466}}.name{font-size:3rem;font-weight:700}.chord-card.active-target{border-color:var(--highlight-color);box-shadow:0 0 20px #f59e0b4d}@keyframes flash-green{0%{background-color:var(--card-bg)}50%{background-color:#10b98133;border-color:var(--success-color)}to{background-color:var(--card-bg)}}@keyframes flash-red{0%{background-color:var(--card-bg)}50%{background-color:#ef444433;border-color:var(--error-color)}to{background-color:var(--card-bg)}}.flash-success{animation:flash-green .4s ease-out}.flash-error{animation:flash-red .4s ease-out}.game-running .chord-card:not(.is-root) .name,.game-running .chord-card:not(.is-root) img.mnemonic-img{filter:blur(20px);opacity:.1;transition:filter 1s ease-out,opacity 1s ease-out}.game-running .chord-card.revealed .name,.game-running .chord-card.revealed img.mnemonic-img{filter:blur(0);opacity:1;transition:filter .1s ease-out,opacity .1s ease-out}.preview-mode .chord-card:not(.is-root) .name,.preview-mode .chord-card:not(.is-root) img.mnemonic-img,.preview-mode .chord-card:not(.is-root) .degree{filter:blur(15px);opacity:.1;transition:all .5s ease}.preview-mode .chord-card.allowed-preview .name,.preview-mode .chord-card.allowed-preview img.mnemonic-img,.preview-mode .chord-card.allowed-preview .degree{filter:blur(0);opacity:1}.menu-container{display:flex;flex-direction:column;gap:1rem;align-items:center;padding:0;animation:fadeIn .3s ease-out;width:100%;max-width:800px;margin:0 auto}.menu-container h2{font-size:1.5rem;color:var(--text-primary);margin:0}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;width:100%}.menu-card{background:var(--card-bg);border:2px solid var(--text-secondary);border-radius:16px;padding:2rem;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;gap:.5rem;text-align:center;box-shadow:0 4px 6px #0000001a}.menu-card:hover{border-color:var(--accent-color);transform:translateY(-4px);box-shadow:0 10px 15px -3px var(--shadow-color);background:var(--bg-color)}.menu-card h3{margin:0;color:var(--text-primary);font-size:1.5rem}.menu-card p{margin:0;color:var(--text-secondary);font-size:1rem}.exercise-group{width:100%;margin-bottom:0;height:100%}.exercise-group h3{color:var(--text-secondary);font-size:.9rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.5rem;border-bottom:1px solid rgba(0,0,0,.1);padding-bottom:.25rem}[data-theme=dark] .exercise-group h3{border-bottom-color:#ffffff1a}.exercise-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem}.exercise-item{background:var(--card-bg);border:1px solid var(--text-secondary);border-radius:8px;padding:.75rem;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;transition:all .2s;height:100%;min-height:auto;text-align:left}.exercise-item:hover{border-color:var(--accent-color);background:var(--bg-color);transform:translateY(-2px);box-shadow:0 4px 10px #0000001a}.exercise-info h4{margin:0 0 .25rem;color:var(--text-primary);font-size:1rem;font-weight:600}.exercise-info p{margin:0;font-size:.75rem;color:var(--text-secondary);line-height:1.3}.arrow{align-self:flex-end;margin-top:auto;color:var(--accent-color);font-weight:700;opacity:0;transition:opacity .2s}.exercise-item:hover .arrow{opacity:1}#back-to-main{position:absolute;top:2rem;left:2rem;z-index:50;margin:0}.text-btn{background:none;border:none;color:var(--text-secondary);font-size:.9rem;cursor:pointer;align-self:flex-start;padding:0 1rem;margin-bottom:.5rem}.text-btn:hover{color:var(--accent-color);text-decoration:underline}.exercise-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;width:100%;align-items:start;margin-top:1rem}.game-view{width:100%;display:flex;flex-direction:column;align-items:center;gap:2rem;animation:fadeIn .3s ease-out}.controls-panel{display:flex;flex-direction:column;gap:1.25rem;width:100%;max-width:600px;background:var(--card-bg);padding:1.25rem;border-radius:16px;align-items:center}.control-group{display:flex;flex-direction:column;gap:.5rem;width:100%;align-items:center}.game-controls{border-top:1px solid rgba(255,255,255,.1);padding-top:1.5rem;gap:1rem}.select-wrapper{position:relative;width:100%}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--card-bg);border:1px solid var(--text-secondary);color:var(--text-primary);padding:.75rem 1rem;border-radius:8px;width:100%;font-family:inherit;font-size:1rem;cursor:pointer}[data-theme=dark] select{background-color:#272a33;border-color:#3f4451}select:focus{outline:none;border-color:var(--accent-color)}.arrow{position:absolute;right:1rem;top:50%;transform:translateY(-50%);pointer-events:none;font-size:.8rem;color:var(--text-secondary)}button{font-family:var(--font-family);cursor:pointer;border:none;transition:all .2s}.primary-btn{background-color:var(--success-color);color:#fff;padding:.75rem 2rem;border-radius:8px;font-weight:700;font-size:1rem;text-transform:uppercase;letter-spacing:.05em;width:auto;min-width:200px}.primary-btn.stop{background-color:transparent;color:var(--text-secondary);border:2px solid var(--text-secondary)}.primary-btn.stop:hover{color:var(--text-primary);border-color:var(--text-primary);background-color:#0000000d}.primary-btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.primary-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.mode-toggles{display:flex;background:var(--bg-color);border:1px solid var(--text-secondary);border-radius:8px;padding:.25rem;width:100%}[data-theme=dark] .mode-toggles{background:#272a33;border:none}.mode-btn{background:transparent;color:var(--text-secondary);padding:.5rem 1rem;border-radius:6px;font-weight:500;flex:1;text-align:center;font-size:.9rem}.mode-btn.active{background-color:var(--accent-color);color:#fff}.answer-board{display:flex;flex-direction:row;gap:.75rem;width:100%}.answer-board.hidden{display:none}.chord-column{display:flex;flex-direction:column;gap:.35rem;flex:1}.chord-column h4{margin:0 0 .5rem;text-align:center;color:var(--text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.answer-btn{width:100%;height:2rem;min-height:2rem;background-color:var(--card-bg);color:var(--text-primary);border:1px solid var(--text-secondary);border-radius:4px;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .1s;padding:0;display:flex;align-items:center;justify-content:center}.answer-btn:hover{background-color:var(--bg-color);border-color:var(--text-primary)}[data-theme=dark] .answer-btn{background-color:#272a33;border-color:#3f4451;color:var(--text-secondary)}[data-theme=dark] .answer-btn:hover{background-color:#3f4451;color:#fff}.toggle-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;background:var(--card-bg);padding:.5rem 1rem;border-radius:8px;border:1px solid var(--text-secondary);transition:all .2s}.toggle-label:hover{border-color:var(--text-primary)}.toggle-label input[type=checkbox]{accent-color:var(--accent-color);width:1.1rem;height:1.1rem}.toggle-text{font-size:.95rem;font-weight:500;color:var(--text-primary)}.chord-card img.mnemonic-img{width:100%;height:100%;object-fit:cover;display:none}.chord-card.show-mnemonic{padding:0;overflow:hidden}.chord-card.show-mnemonic .name{display:none}.chord-card.show-mnemonic img.mnemonic-img{display:block}.game-running .chord-card:not(.is-root) img.mnemonic-img{filter:blur(20px);opacity:.1;transition:filter 2s ease-out,opacity 2s ease-out}.game-running .chord-card.revealed img.mnemonic-img{filter:blur(0);opacity:1;transition:filter .1s ease-out,opacity .1s ease-out}.hidden{display:none!important}.stats-panel{display:flex;flex-direction:column;gap:1rem;background:var(--card-bg);padding:1rem;border-radius:16px;width:100%;box-shadow:0 4px 6px -1px var(--shadow-color);animation:fadeIn .3s ease-out}.stat-row{display:flex;justify-content:space-between;gap:1rem}.stat-item{display:flex;flex-direction:column;align-items:center;flex:1}.stat-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:.25rem}.stat-value{font-size:1.25rem;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.limit-row{border-top:1px solid rgba(0,0,0,.1);padding-top:.75rem;justify-content:center;align-items:center;flex-direction:column}[data-theme=dark] .limit-row{border-top-color:#ffffff1a}.limit-row .stat-label{margin-bottom:0}.limit-row .stat-value{font-size:1rem}.debug-overlay{position:fixed;bottom:20px;right:20px;background:#000c;color:#0f0;padding:10px 15px;border-radius:8px;font-family:monospace;font-size:14px;z-index:1000;pointer-events:none;transition:opacity .3s}.debug-overlay.hidden,.chord-card.mystery .name,.chord-card.mystery img.mnemonic-img{opacity:0}.chord-card.mystery:after{content:"?";font-size:2rem;color:var(--text-muted);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
