:root{--bg-primary:#0d0d12;--bg-secondary:#14141a;--bg-elevated:#1a1a24;--bg-surface:#111116;--text-primary:#ffffff;--text-secondary:#b0b0c0;--text-muted:#6a6a80;--accent-primary:#3b82f6;--accent-primary-light:#60a5fa;--accent-primary-dark:#2563eb;--accent-glow:rgba(59,130,246,0.3);--accent-subtle:rgba(59,130,246,0.12);--accent-secondary:#22d3ee;--accent-secondary-glow:rgba(34,211,238,0.25);--accent-red:#ff5a5a;--accent-red-glow:rgba(255,90,90,0.2);--success:#4ade80;--border-color:#2a2a38;--border-subtle:#1f1f28;--overlay-bg:rgba(13,13,18,0.3);--overlay-bg-hover:rgba(13,13,18,0.5);--overlay-border:rgba(42,42,56,0.2);--overlay-text:rgba(200,200,215,0.75);--font-display:"Fredoka","Nunito",sans-serif;--font-body:"DM Sans",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"Space Mono","Consolas",monospace;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--transition-fast:150ms cubic-bezier(0.34,1.56,0.64,1);--transition-base:250ms cubic-bezier(0.34,1.56,0.64,1);--transition-smooth:300ms ease-out;--shadow-sm:0 2px 8px rgba(0,0,0,0.4);--shadow-md:0 4px 20px rgba(0,0,0,0.5);--shadow-lg:0 8px 40px rgba(0,0,0,0.6);--shadow-glow:0 0 30px var(--accent-glow);--shadow-glow-strong:0 0 40px rgba(59,130,246,0.5)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;width:100%}body{font-family:var(--font-body);font-weight:500;background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(59,130,246,.03) 1px,transparent 0),linear-gradient(90deg,rgba(59,130,246,.03) 1px,transparent 0);background-size:40px 40px;pointer-events:none;z-index:0}.app-header{justify-content:space-between;padding:calc(16px + env(safe-area-inset-top, 0px)) 24px 16px;background:linear-gradient(180deg,#1a1a24,#0d0d12);border-bottom:1px solid #1f1f28;flex-shrink:0;position:-webkit-sticky;position:sticky;top:0;z-index:100}.app-header,.app-header h1{display:flex;align-items:center}.app-header h1{margin:0;font-family:Fredoka,Nunito,sans-serif;font-size:1.75rem;font-weight:600;color:#ffffff;gap:8px}.app-header h1 a{color:#ffffff;text-decoration:none}.app-header h1 a:hover{color:#3b82f6}.header-actions{gap:16px}.header-actions,.header-nav{display:flex;align-items:center}.header-nav{gap:var(--space-sm)}.header-nav-link{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-lg);min-width:90px;height:40px;box-sizing:border-box;color:var(--accent-primary);text-decoration:none;font-family:var(--font-display);font-size:.9375rem;font-weight:600;border-radius:var(--radius-full);border:2px solid var(--accent-primary);background:var(--accent-subtle);transition:all var(--transition-base);cursor:pointer}.header-nav-link:hover{color:var(--bg-primary);background:var(--accent-primary);transform:scale(1.05);box-shadow:var(--shadow-glow)}.file-upload{display:flex;align-items:center;justify-content:center;padding:8px 24px;background:rgba(59,130,246,.12);border:2px dashed #3b82f6;border-radius:16px;cursor:pointer;transition:all .25s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}.file-upload:hover{background:rgba(59,130,246,.3);border-style:solid;transform:scale(1.02);box-shadow:0 0 30px rgba(59,130,246,.3)}.file-upload:active{transform:scale(.98)}.file-upload-content{display:flex;align-items:center;gap:8px;color:#3b82f6;font-family:Fredoka,Nunito,sans-serif;font-size:.9375rem;font-weight:600}.file-upload-icon{font-size:1.25rem}a.file-upload{text-decoration:none}.app-footer{padding:16px 24px;background:#111116;border-top:1px solid #1f1f28;text-align:center;flex-shrink:0}.footer-links{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;margin-bottom:8px}.footer-links a{color:#b0b0c0;text-decoration:none;font-size:.8125rem;font-weight:500;transition:color .15s ease}.footer-links a:hover{color:#3b82f6}.footer-links a.active{color:var(--text-primary)}.footer-divider{color:var(--text-muted);margin:0 var(--space-xs)}.footer-copyright{margin:0;color:#6a6a80;font-size:.75rem}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;position:relative}.error-message{background:var(--accent-red-glow);border-left:4px solid var(--accent-red);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--accent-red);font-size:.875rem;font-weight:500}.error-message,.info-panel{padding:var(--space-sm) var(--space-lg)}.info-panel{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);flex-shrink:0;z-index:1}.info-panel h2{margin:0 0 var(--space-xs) 0;font-family:var(--font-display);font-size:1.125rem;font-weight:600;color:var(--text-primary)}.info-stats{display:flex;gap:var(--space-lg);color:var(--text-secondary);font-size:.8125rem;font-weight:500}.info-stats span{display:flex;align-items:center;gap:var(--space-xs)}.attribution{margin-top:var(--space-xs);color:var(--text-secondary);font-size:.75rem}.attribution a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}.attribution a:hover{color:var(--accent-primary-light);text-decoration:underline}.main-content{flex:1 1;min-height:0;position:relative;background:radial-gradient(ellipse at center 70%,var(--bg-elevated) 0,var(--bg-primary) 70%)}.visualizer{cursor:pointer}.visualizer,.visualizer canvas{width:100%;max-width:100%;height:100%}.piano-keyboard,.visualizer canvas{display:block}.controls{padding:var(--space-md) var(--space-lg);background:linear-gradient(0deg,var(--bg-elevated) 0,var(--bg-primary) 100%);border-top:1px solid var(--border-subtle);flex-shrink:0;position:relative;z-index:1}.controls-main{gap:var(--space-md);flex-wrap:wrap}.controls-main,.play-button{display:flex;align-items:center}.play-button{width:60px;height:60px;border-radius:var(--radius-full);border:none;background:linear-gradient(135deg,var(--accent-primary) 0,var(--accent-primary-dark) 100%);color:var(--bg-primary);font-size:1.5rem;cursor:pointer;justify-content:center;transition:all var(--transition-base);flex-shrink:0;box-shadow:var(--shadow-glow)}.play-button:hover{transform:scale(1.08);box-shadow:var(--shadow-glow-strong)}.play-button:active{transform:scale(.95)}.time-display{font-family:var(--font-mono);font-size:.9375rem;font-weight:700;color:var(--text-primary);min-width:110px;background:var(--bg-surface);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:center;flex-shrink:0}.time-separator{margin:0 2px;color:var(--accent-primary)}.seek-bar{--progress:0%;flex:1 1;min-width:100px;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,var(--accent-primary) 0,var(--accent-primary) var(--progress),var(--border-color) var(--progress),var(--border-color) 100%);border-radius:var(--radius-full);cursor:pointer;transition:height var(--transition-smooth)}.seek-bar:hover{height:12px}.seek-bar::-webkit-slider-runnable-track{height:100%;border-radius:var(--radius-full);background:linear-gradient(to right,var(--accent-primary) 0,var(--accent-primary) var(--progress),var(--border-color) var(--progress),var(--border-color) 100%)}.seek-bar::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:var(--radius-full);background:var(--accent-primary);cursor:pointer;border:3px solid var(--bg-primary);box-shadow:var(--shadow-glow);-webkit-transition:all var(--transition-fast);transition:all var(--transition-fast);margin-top:-6px}.seek-bar::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:var(--shadow-glow-strong)}.seek-bar::-moz-range-track{height:8px;border-radius:var(--radius-full);background:var(--border-color)}.seek-bar::-moz-range-progress{height:8px}.seek-bar::-moz-range-progress,.seek-bar::-moz-range-thumb{border-radius:var(--radius-full);background:var(--accent-primary)}.seek-bar::-moz-range-thumb{width:20px;height:20px;cursor:pointer;border:3px solid var(--bg-primary);box-shadow:var(--shadow-glow)}.rate-select{padding:var(--space-sm) var(--space-md);background:var(--bg-surface);border:2px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;font-weight:700;cursor:pointer;transition:all var(--transition-base);flex-shrink:0}.rate-select:hover{border-color:var(--accent-primary);background:var(--accent-subtle)}.rate-select:focus{outline:none;border-color:var(--accent-primary);box-shadow:var(--shadow-glow)}.loop-button,.loop-settings-button{width:48px;height:48px;border-radius:var(--radius-md);border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);font-size:1.125rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base)}.loop-button:hover,.loop-settings-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.05)}.loop-button:active,.loop-settings-button:active{transform:scale(.95)}.loop-button.active{background:var(--accent-glow);border-color:var(--accent-primary);color:var(--accent-primary);box-shadow:var(--shadow-glow)}.loop-settings{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border-subtle);flex-direction:column}.loop-setting,.loop-settings{display:flex;gap:var(--space-sm)}.loop-setting{align-items:center}.loop-setting label{min-width:80px;color:var(--text-secondary);font-family:var(--font-display);font-size:.875rem;font-weight:600}.loop-setting input[type=range]{flex:1 1;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border-color);border-radius:var(--radius-full)}.loop-setting input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:var(--radius-full);background:var(--accent-primary);cursor:pointer;border:2px solid var(--bg-primary)}.loop-setting span{min-width:50px;font-family:var(--font-mono);font-size:.8125rem;font-weight:700;color:var(--text-muted)}.loop-setting button{padding:var(--space-xs) var(--space-md);background:var(--bg-surface);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-display);font-size:.8125rem;font-weight:600;cursor:pointer;transition:all var(--transition-base)}.loop-setting button:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.welcome-message{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);text-align:center;padding:var(--space-2xl);background:radial-gradient(ellipse at center,var(--bg-elevated) 0,var(--bg-primary) 70%)}.welcome-message p{margin:var(--space-sm) 0;font-family:var(--font-display);font-size:1.125rem;font-weight:500}.welcome-message .hint{font-size:.9375rem;color:var(--text-muted)}.welcome-message a{color:var(--accent-primary);text-decoration:none;font-weight:600;transition:color var(--transition-fast)}.welcome-message a:hover{color:var(--accent-primary-light);text-decoration:underline}.minimize-button{width:48px;height:48px;border-radius:var(--radius-md);border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);font-size:1.125rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base)}.minimize-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.05)}.floating-controls{position:fixed;top:var(--space-md);right:var(--space-md);display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:rgba(13,13,18,.95);border-radius:var(--radius-lg);border:1px solid var(--border-color);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:100}.floating-button{width:52px;height:52px;border-radius:var(--radius-full);border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-primary);font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base)}.floating-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.08);box-shadow:var(--shadow-glow)}.floating-button:active{transform:scale(.95)}.settings-button{width:48px;height:48px;border-radius:var(--radius-md);border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base);flex-shrink:0}.settings-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.05)}.keyboard-octave-indicator{position:absolute;bottom:16px;right:16px;padding:6px 14px;border-radius:8px;background:rgba(13,13,18,.7);border:1px solid rgba(251,191,36,.4);color:#fbbf24;font-size:14px;font-weight:600;font-family:DM Sans,monospace;pointer-events:none;z-index:10;display:flex;align-items:center;gap:10px}.keyboard-octave-indicator .active-notes{color:#4ade80;font-size:16px;font-weight:700;letter-spacing:1px}.keyboard-octave-indicator .octave-hint{color:rgba(200,200,215,.6);font-weight:400;font-size:12px;margin-left:8px}.mode-button{position:relative;width:48px;height:48px;border-radius:var(--radius-md);border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base);flex-shrink:0}.mode-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.05)}.mode-button.active{border-color:#fbbf24;color:#fbbf24;background:rgba(251,191,36,.1)}.mode-button:disabled{opacity:.35;cursor:not-allowed}.mode-button:disabled:hover{border-color:var(--border-color);color:var(--text-secondary);transform:none}.mode-button-wrapper{position:relative}@media (hover:none) and (pointer:coarse){.mode-button-wrapper{display:none}}.midi-indicator{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 4px #4ade80}.practice-popover{position:absolute;top:calc(100% + 8px);right:0;width:280px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),var(--shadow-glow);z-index:200;animation:popoverSlideIn .2s cubic-bezier(.34,1.56,.64,1)}@keyframes popoverSlideIn{0%{opacity:0;transform:translateY(-8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.practice-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-bottom:1px solid var(--border-subtle)}.practice-popover-title{font-family:var(--font-display);font-size:.9375rem;font-weight:600;color:var(--text-primary)}.practice-popover-close{width:28px;height:28px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.practice-popover-close:hover{background:var(--bg-surface);color:var(--text-primary)}.practice-popover-body{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md)}.practice-popover-description{margin:0;font-size:.8125rem;color:var(--text-secondary);line-height:1.5}.practice-popover-options{display:flex;flex-direction:column;gap:var(--space-sm)}.practice-popover-option{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-surface);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-primary)}.practice-popover-option svg{color:var(--text-muted);flex-shrink:0}.practice-popover-detected{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.3);border-radius:var(--radius-md);font-size:.8125rem;color:var(--success);font-weight:500}.practice-popover-detected-indicator{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 6px var(--success);flex-shrink:0}.practice-popover-start{width:100%;padding:var(--space-sm) var(--space-md);background:var(--accent-primary);border:none;border-radius:var(--radius-md);color:#ffffff;font-family:var(--font-display);font-size:.875rem;font-weight:600;cursor:pointer;transition:all var(--transition-base)}.practice-popover-start:hover{background:var(--accent-primary-dark);transform:scale(1.02);box-shadow:var(--shadow-glow)}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.settings-panel{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xl);width:90%;max-width:440px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-lg),var(--shadow-glow);animation:slideUp .3s cubic-bezier(.34,1.56,.64,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg);border-bottom:1px solid var(--border-subtle)}.settings-header h2{margin:0;font-family:var(--font-display);font-size:1.375rem;font-weight:600;color:var(--text-primary)}.settings-close{width:40px;height:40px;border:none;background:var(--bg-surface);color:var(--text-secondary);font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-fast)}.settings-close:hover{background:var(--accent-glow);color:var(--accent-primary);transform:scale(1.05)}.settings-content{padding:var(--space-lg)}.settings-section{margin-bottom:var(--space-lg)}.settings-section:last-child{margin-bottom:0}.settings-section h3{margin:0 0 var(--space-md) 0;font-family:var(--font-display);font-size:.8125rem;font-weight:700;color:var(--accent-primary);text-transform:uppercase;letter-spacing:.1em}.settings-row{display:flex;align-items:center;margin-bottom:var(--space-sm)}.settings-row:last-child{margin-bottom:0}.settings-row label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;font-size:.9375rem;font-weight:500;color:var(--text-primary)}.settings-row input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--accent-primary);border-radius:var(--radius-sm)}.settings-loop-range{margin-top:var(--space-md);padding:var(--space-md);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.settings-loop-range .settings-row{flex-direction:column;align-items:stretch;gap:var(--space-xs)}.settings-loop-range .settings-row label{font-family:var(--font-display);font-size:.875rem;color:var(--text-secondary);font-weight:600}.settings-loop-range input[type=range]{width:100%;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border-color);border-radius:var(--radius-full)}.settings-loop-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:var(--radius-full);background:var(--accent-primary);cursor:pointer;border:2px solid var(--bg-secondary)}.settings-speed{margin-top:var(--space-sm)}.settings-speed .settings-row{flex-direction:column;align-items:stretch;gap:var(--space-sm)}.settings-speed .settings-row label{font-size:.9375rem;color:var(--text-primary)}.settings-speed input[type=range]{width:100%;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border-color);border-radius:var(--radius-full)}.settings-speed input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:var(--radius-full);background:var(--accent-primary);cursor:pointer;border:2px solid var(--bg-secondary);box-shadow:var(--shadow-glow)}.speed-presets{display:flex;gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap}.speed-preset{padding:var(--space-sm) var(--space-md);background:var(--bg-surface);border:2px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-secondary);font-family:var(--font-mono);font-size:.875rem;font-weight:700;cursor:pointer;transition:all var(--transition-base)}.speed-preset:hover{transform:scale(1.05)}.speed-preset.active,.speed-preset:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.speed-preset.active{background:var(--accent-glow);box-shadow:var(--shadow-glow)}.overlay-buttons{position:absolute;top:6px;right:var(--space-sm);display:flex;gap:var(--space-sm);z-index:60}.menu-minimized .overlay-buttons{position:fixed}.fullscreen-button,.help-button{width:48px;height:48px;border-radius:var(--radius-full);border:1px solid var(--overlay-border);background:var(--overlay-bg);color:var(--overlay-text);font-family:var(--font-display);font-size:1.25rem;font-weight:700;cursor:pointer;display:flex;align-items:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent;justify-content:center;transition:all var(--transition-base);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.fullscreen-button:hover,.help-button:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-glow);transform:scale(1.08);box-shadow:var(--shadow-glow)}.help-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeIn .2s ease-out}.help-panel{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xl);width:90%;max-width:440px;box-shadow:var(--shadow-lg),var(--shadow-glow);animation:slideUp .3s cubic-bezier(.34,1.56,.64,1)}.help-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-bottom:1px solid var(--border-subtle)}.help-header h2{margin:0;font-family:var(--font-display);font-size:1.125rem;font-weight:600;color:var(--text-primary)}.help-close{width:40px;height:40px;border:none;background:var(--bg-surface);color:var(--text-secondary);font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-fast)}.help-close:hover{background:var(--accent-glow);color:var(--accent-primary);transform:scale(1.05)}.help-content{padding:var(--space-sm) var(--space-md)}.help-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border-subtle)}.help-row:last-child{border-bottom:none}.help-row span{color:var(--text-secondary);font-size:.875rem;font-weight:500}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:28px;padding:2px 6px;background:var(--bg-surface);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem;font-weight:700;color:var(--accent-primary);margin-right:3px;box-shadow:0 2px 0 var(--border-color)}.help-footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-subtle);text-align:center;color:var(--text-muted);font-size:.875rem;font-weight:500}.end-screen{position:absolute;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .3s ease-out}.end-screen-content{text-align:center;padding:var(--space-xl)}.end-screen-title{font-family:var(--font-display);font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:0 0 var(--space-xl) 0}.end-screen-actions{display:flex;flex-direction:row;gap:var(--space-md);justify-content:center;flex-wrap:wrap}.end-screen-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);width:140px;height:100px;padding:var(--space-md);background:var(--bg-elevated);border:2px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-secondary);font-family:var(--font-display);font-size:.875rem;font-weight:600;text-decoration:none;cursor:pointer;transition:all var(--transition-base)}.end-screen-btn:hover{background:var(--bg-surface);border-color:var(--accent-primary);color:var(--text-primary);transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 20px var(--accent-glow)}.end-screen-btn-primary{background:var(--accent-primary);border-color:var(--accent-primary);color:#ffffff}.end-screen-btn-primary:hover{background:var(--accent-primary-dark);border-color:var(--accent-primary-dark);color:#ffffff}.end-screen-icon{font-size:1.75rem}@media (max-width:480px){.end-screen-actions{flex-direction:column;align-items:center}.end-screen-btn{width:180px;height:80px;flex-direction:row;gap:var(--space-md)}.end-screen-icon{font-size:1.5rem}}.overlay-info{position:absolute;top:6px;left:var(--space-sm);display:flex;flex-direction:column;gap:2px;padding:var(--space-xs) var(--space-sm);background:var(--overlay-bg);border-radius:var(--radius-md);border:1px solid var(--overlay-border);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:60}.menu-minimized .overlay-info{position:fixed}.overlay-info-item{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--overlay-text)}.overlay-info-muted{color:var(--accent-red)}.language-switcher{display:flex;gap:var(--space-xs)}.language-switcher a{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);color:var(--text-muted);text-decoration:none;font-size:.875rem;font-weight:600;transition:all var(--transition-fast)}.language-switcher a:hover{color:var(--accent-primary)}.language-switcher a.active{background:var(--accent-subtle);color:var(--accent-primary)}@media (max-width:768px){.app-header{padding:8px 16px}.app-header h1{font-size:1.125rem}.header-nav{gap:var(--space-xs)}.header-nav-link{padding:var(--space-xs) var(--space-md);min-width:70px;height:32px;font-size:.8125rem}.file-upload{width:100%}.app-footer{padding:8px 16px}.footer-links{gap:8px 16px}.footer-links a{font-size:.75rem}.controls{padding:var(--space-sm) var(--space-md)}.controls-main{flex-wrap:wrap;gap:var(--space-sm)}.play-button{width:52px;height:52px;font-size:1.25rem}.time-display{min-width:auto}.rate-select,.time-display{padding:var(--space-xs) var(--space-sm);font-size:.8125rem}.settings-button{width:40px;height:40px;font-size:1rem}.seek-bar{order:10;flex:none;width:100%;min-width:unset;margin-top:var(--space-xs)}.info-panel{padding:var(--space-sm) var(--space-md)}.info-stats{gap:var(--space-md);flex-wrap:wrap}}@media (max-width:400px){.footer-links{gap:6px 12px}.footer-links a{font-size:.6875rem}}::selection{background:var(--accent-primary);color:var(--bg-primary)}:focus{outline:none}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-surface);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.legal-page{overflow-y:auto}.legal-page .app-header{position:-webkit-sticky;position:sticky;top:0}.legal-content{flex:1 1;max-width:800px;margin:0 auto;padding:var(--space-2xl) var(--space-lg);color:var(--text-primary);line-height:1.7}.legal-content h1{font-family:var(--font-display);font-size:2rem;font-weight:700;margin:0 0 var(--space-sm) 0;color:var(--text-primary)}.legal-content .last-updated{color:var(--text-muted);font-size:.875rem;margin:0 0 var(--space-2xl) 0}.legal-content .intro{color:var(--text-secondary);font-size:1rem}.legal-content .intro,.legal-content section{margin-bottom:var(--space-xl)}.legal-content h2{font-size:1.25rem;margin:0 0 var(--space-md) 0;color:var(--accent-primary)}.legal-content h2,.legal-content h3{font-family:var(--font-display);font-weight:600}.legal-content h3{font-size:1rem;margin:var(--space-md) 0 var(--space-sm) 0;color:var(--text-primary)}.legal-content p,.legal-content ul{margin:0 0 var(--space-md) 0;color:var(--text-secondary)}.legal-content ul{padding-left:var(--space-lg)}.legal-content li{margin-bottom:var(--space-sm)}.contact-page .twitter-link{display:inline-block;margin-top:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:var(--accent-subtle);border:2px solid var(--accent-primary);border-radius:var(--radius-lg);color:var(--accent-primary);font-family:var(--font-display);font-weight:600;font-size:1rem;text-decoration:none;transition:all var(--transition-base)}.contact-page .twitter-link:hover{background:var(--accent-glow);transform:scale(1.02);box-shadow:var(--shadow-glow)}@media (max-width:768px){.legal-content{padding:var(--space-lg) var(--space-md)}.legal-content h1{font-size:1.5rem}.legal-content h2{font-size:1.125rem}}.songs-page{overflow-y:auto}.songs-page .app-header{position:-webkit-sticky;position:sticky;top:0}.songs-content{flex:1 1;max-width:1200px;width:100%;margin:0 auto;padding:var(--space-2xl) var(--space-lg);box-sizing:border-box}.songs-header{text-align:center;margin-bottom:var(--space-2xl)}.songs-header h1{font-family:var(--font-display);font-size:2rem;font-weight:700;margin:0 0 var(--space-md) 0;color:var(--text-primary)}.songs-description{color:var(--text-secondary);font-size:1rem;max-width:600px;margin:0 auto}.view-mode-toggle{display:flex;justify-content:center;gap:var(--space-xs);background:var(--bg-elevated);border-radius:var(--radius-full);padding:4px;width:-moz-fit-content;width:fit-content;border:1px solid var(--border-color)}.view-mode-btn{padding:var(--space-sm) var(--space-lg);font-size:.9rem;font-weight:600;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.view-mode-btn:hover{color:var(--text-primary)}.view-mode-btn.active{background:var(--accent-primary);color:white;box-shadow:0 1px 3px rgba(0,0,0,.2)}.songs-controls{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-xl);padding:var(--space-lg);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-xl)}.search-box{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:var(--space-md);width:20px;height:20px;color:var(--text-muted);pointer-events:none}.search-input{flex:1 1;padding:var(--space-md) var(--space-md) var(--space-md) calc(var(--space-md) + 28px);font-size:1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-primary);transition:border-color var(--transition-base)}.search-input:focus{outline:none;border-color:var(--accent-primary)}.search-input::placeholder{color:var(--text-muted)}.search-clear{position:absolute;right:var(--space-sm);display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-base)}.search-clear:hover{background:var(--bg-hover);color:var(--text-primary)}.search-clear svg{width:16px;height:16px}.filter-controls{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.difficulty-filter{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.composer-select-mobile{display:none}.composer-select{padding:var(--space-sm) var(--space-md);padding-right:var(--space-xl);font-size:.875rem;font-weight:500;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-primary);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236a6a80' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;min-width:140px}.composer-select:focus{outline:none;border-color:var(--accent-primary)}.filter-btn{padding:var(--space-xs) var(--space-md);font-size:.875rem;font-weight:500;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base)}.filter-btn:hover{border-color:var(--text-muted);color:var(--text-primary)}.filter-btn.active{background:var(--accent-primary);border-color:var(--accent-primary);color:white}.filter-btn-beginner.active{background:var(--difficulty-beginner);border-color:var(--difficulty-beginner)}.filter-btn-intermediate.active{background:var(--difficulty-intermediate);border-color:var(--difficulty-intermediate)}.filter-btn-advanced.active{background:var(--difficulty-advanced);border-color:var(--difficulty-advanced)}.songs-count{font-size:.875rem;color:var(--text-muted);text-align:right}.view-mode-area{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg)}.show-all-songs-link{font-size:.8rem;color:var(--text-muted);background:none;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color var(--transition-base);padding:0}.show-all-songs-link:hover{color:var(--text-secondary)}.show-all-songs-link.active{color:var(--text-secondary);text-decoration:none;cursor:default}.songs-layout{display:flex;gap:var(--space-xl)}.composer-nav{position:-webkit-sticky;position:sticky;top:80px;width:180px;flex-shrink:0;height:-moz-fit-content;height:fit-content;max-height:calc(100vh - 120px);overflow-y:auto;padding:var(--space-md);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-xl)}.composer-nav-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:var(--space-sm);padding:0 var(--space-sm)}.composer-nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.composer-nav-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-sm) var(--space-sm);font-size:.875rem;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;text-align:left;transition:all var(--transition-base)}.composer-nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.composer-nav-item.active{background:var(--accent-primary);color:white}.composer-nav-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-nav-count{font-size:.75rem;padding:2px 6px;background:var(--bg-primary);border-radius:var(--radius-sm);color:var(--text-muted)}.composer-nav-item.active .composer-nav-count{background:rgba(255,255,255,.2);color:white}.songs-main{flex:1 1;min-width:0}.no-results{text-align:center;padding:var(--space-2xl);color:var(--text-muted)}.composer-song-count{margin-left:auto;font-size:.875rem;color:var(--text-muted)}.category-count{margin-left:var(--space-sm);font-size:.75rem;font-weight:400;padding:2px 8px;background:var(--bg-primary);border-radius:var(--radius-full);color:var(--text-muted)}.songs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:var(--space-lg);gap:var(--space-lg)}.songs-list{display:flex;flex-direction:column;gap:2px}.song-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-primary);border-radius:var(--radius-sm);text-decoration:none;transition:background var(--transition-fast);overflow:hidden}.song-row:hover{background:var(--bg-surface)}.song-row-title{flex:1 1;min-width:0;font-size:.875rem;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-row-opus{flex-shrink:0;font-size:.75rem;color:var(--text-muted)}.song-row-meta{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.song-row-difficulty{padding:2px 6px;border-radius:var(--radius-sm);font-size:.6875rem;font-weight:600}.song-row-duration{font-family:var(--font-mono);font-size:.75rem;color:var(--text-muted);min-width:36px;text-align:right}.songs-grouped{display:flex;flex-direction:column;gap:var(--space-lg)}.composer-section{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:var(--space-lg);scroll-margin-top:80px}.composer-header{display:flex;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border-color)}.composer-name{font-family:var(--font-display);font-size:1.125rem;font-weight:700;color:var(--text-primary);margin:0}.composer-years{color:var(--text-muted);font-size:.875rem}.category-section{margin-bottom:var(--space-lg)}.category-section:last-child{margin-bottom:0}.category-name{font-family:var(--font-display);font-size:.875rem;font-weight:600;color:var(--accent-primary);margin:0 0 var(--space-xs) 0}.category-description{color:var(--text-secondary);font-size:.8125rem;margin:0 0 var(--space-sm) 0}.song-card{display:block;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-lg);text-decoration:none;transition:all var(--transition-base)}.song-card:hover{border-color:var(--accent-primary);transform:translateY(-4px);box-shadow:var(--shadow-glow)}.song-card-content{display:flex;flex-direction:column;gap:var(--space-sm)}.song-title{font-family:var(--font-display);font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0}.song-composer{color:var(--text-secondary);font-size:.875rem;margin:0}.song-opus{color:var(--text-muted);font-size:.75rem;margin:0}.song-meta{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-sm)}.difficulty{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.difficulty-beginner{background:rgba(74,222,128,.15);color:var(--success)}.difficulty-intermediate{background:rgba(59,130,246,.15);color:var(--accent-primary)}.difficulty-advanced{background:rgba(255,90,90,.15);color:var(--accent-red)}.duration{color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.song-detail-page{overflow-x:hidden;overflow-y:auto}.song-detail-page .app-header{position:-webkit-sticky;position:sticky;top:0}.song-detail-content{flex:1 1;max-width:1000px;margin:0 auto;padding:var(--space-xl) var(--space-lg)}.back-link{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--text-secondary);text-decoration:none;font-size:.875rem;font-weight:500;margin-bottom:var(--space-lg);transition:color var(--transition-fast)}.back-link:hover{color:var(--accent-primary)}.song-detail-header{margin-bottom:var(--space-xl)}.song-detail-category{color:var(--accent-primary);font-size:.8125rem;font-weight:600;margin:0 0 var(--space-xs) 0;text-transform:uppercase;letter-spacing:.05em}.song-detail-header h1{font-family:var(--font-display);font-size:1.75rem;font-weight:700;margin:0 0 var(--space-xs) 0;color:var(--text-primary)}.song-detail-composer{color:var(--text-secondary);font-size:1rem;margin:0}.song-detail-year{color:var(--text-muted)}.song-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:var(--space-md);gap:var(--space-md);margin-bottom:var(--space-xl);padding:var(--space-lg);background:var(--bg-elevated);border-radius:var(--radius-lg);border:1px solid var(--border-subtle)}.song-info-item{display:flex;flex-direction:column;gap:var(--space-xs)}.song-info-label{color:var(--text-muted);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.song-info-value{color:var(--text-primary);font-size:.9375rem;font-weight:500}.song-source-link{color:var(--accent-primary);text-decoration:none;font-weight:500;transition:color .2s ease,opacity .2s ease}.song-source-link:hover{color:var(--accent-secondary);text-decoration:underline}.song-description{margin-bottom:var(--space-xl)}.song-description h2{font-family:var(--font-display);font-size:1rem;font-weight:600;color:var(--accent-primary);margin:0 0 var(--space-sm) 0}.song-description p{color:var(--text-secondary);line-height:1.7;margin:0}.song-loading{padding:var(--space-xl);text-align:center;color:var(--text-secondary);font-size:1rem}.song-player-container{margin-top:var(--space-xl);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-color);max-width:100%;box-sizing:border-box}.song-player-wrapper{height:500px;position:relative;max-width:100%}.song-player-container:-webkit-full-screen{width:100vw;height:100vh;background:var(--bg-primary);border-radius:0;border:none}.song-player-container:-webkit-full-screen,.song-player-container:fullscreen{width:100vw;height:100vh;background:var(--bg-primary);border-radius:0;border:none}.song-player-container:-webkit-full-screen .song-player-wrapper{height:100vh}.song-player-container:-webkit-full-screen .song-player-wrapper,.song-player-container:fullscreen .song-player-wrapper{height:100vh}.song-player-container:-webkit-full-screen .controls{position:fixed;bottom:0;left:0;right:0;z-index:100}.song-player-container:-webkit-full-screen .controls,.song-player-container:fullscreen .controls{position:fixed;bottom:0;left:0;right:0;z-index:100}.song-player-container:-webkit-full-screen .song-player-wrapper.menu-minimized+.controls{display:none}.song-player-container:-webkit-full-screen .song-player-wrapper.menu-minimized+.controls,.song-player-container:fullscreen .song-player-wrapper.menu-minimized+.controls{display:none}.sheet-music-section{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--border-color)}.sheet-music-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);flex-wrap:wrap;gap:var(--space-md)}.sheet-music-header h2{font-family:var(--font-display);font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}.sheet-music-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.sheet-music-download,.sheet-music-toggle{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);text-decoration:none;white-space:nowrap}.sheet-music-toggle{background:transparent;color:var(--accent-primary);border:1px solid var(--accent-primary)}.sheet-music-toggle:focus,.sheet-music-toggle:focus-visible,.sheet-music-toggle:hover{outline:none;transform:scale(1.05)}.sheet-music-download{background:transparent;color:var(--accent-primary);border:1px solid var(--accent-primary)}.sheet-music-download:focus,.sheet-music-download:focus-visible,.sheet-music-download:hover{outline:none;transform:scale(1.05);background:var(--accent-primary);color:var(--bg-primary)}.sheet-music-viewer{margin-top:var(--space-md);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;background:#fff}.pdf-iframe{width:100%;height:600px;border:none}.sheet-music-credit{margin-top:var(--space-sm);font-size:.8125rem;color:var(--text-muted)}.sheet-music-credit a{color:var(--accent-primary);text-decoration:none}.sheet-music-credit a:hover{text-decoration:underline}.related-songs{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--border-color)}.related-songs h2{font-family:var(--font-display);font-size:1.125rem;font-weight:600;color:var(--accent-primary);margin:0 0 var(--space-md) 0}.related-songs-list{display:flex;flex-direction:column;gap:var(--space-xs);background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--space-sm)}@media (max-width:1024px){.composer-nav{display:none}.composer-select-mobile{display:block;width:100%}.composer-select{width:100%}.songs-layout{flex-direction:column}}@media (max-width:768px){.songs-content{padding:var(--space-lg) var(--space-md)}.songs-header h1{font-size:1.5rem}.songs-controls{padding:var(--space-md)}.songs-grid{grid-template-columns:1fr}.song-row{padding:var(--space-xs) var(--space-sm);gap:var(--space-sm)}.song-row-title{font-size:.8125rem;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.song-row-meta{gap:var(--space-xs)}.song-row-difficulty{font-size:.625rem;padding:1px 4px}.song-row-duration,.song-row-opus{display:none}.composer-section{padding:var(--space-md)}.song-detail-content{padding:var(--space-lg) var(--space-md)}.song-detail-header h1{font-size:1.375rem}.song-info-grid{grid-template-columns:repeat(2,1fr)}.song-player-wrapper{height:400px}.view-mode-btn{padding:var(--space-sm) var(--space-md);font-size:.8rem}}@media (max-width:480px){.songs-content{padding:var(--space-md) var(--space-sm)}.songs-controls{padding:var(--space-sm)}.composer-header{flex-wrap:wrap;gap:var(--space-xs)}.composer-section{padding:var(--space-sm);border-radius:var(--radius-lg)}}.sheet-overlay-trigger{position:fixed;bottom:var(--space-lg);right:var(--space-lg);width:56px;height:56px;border-radius:var(--radius-full);border:1px solid var(--overlay-border);background:var(--overlay-bg);color:var(--overlay-text);cursor:pointer;display:none;align-items:center;justify-content:center;transition:all var(--transition-base);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:60}@media (min-width:601px){.sheet-overlay-trigger{display:flex}}.sheet-overlay-trigger:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-glow);transform:scale(1.08);box-shadow:var(--shadow-glow)}.sheet-overlay{position:fixed;background:var(--overlay-bg);border:1px solid var(--overlay-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:60;display:none;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@media (min-width:601px){.sheet-overlay.visible{display:flex}}.sheet-overlay-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-sm);background:var(--overlay-bg);border-bottom:1px solid var(--overlay-border);border-radius:var(--radius-md) var(--radius-md) 0 0;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;position:relative;z-index:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sheet-overlay-header span{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--overlay-text)}.sheet-overlay-close{width:24px;height:24px;border:none;background:transparent;color:var(--overlay-text);font-size:1.125rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.sheet-overlay-close:hover{background:var(--accent-red-glow);color:var(--accent-red)}.sheet-overlay-content{flex:1 1;min-height:0;overflow:hidden;border-radius:0 0 var(--radius-md) var(--radius-md);background:#fff;margin-bottom:-56px;padding-bottom:56px}.sheet-overlay-iframe{width:100%;height:calc(100% + 56px);border:none}.resize-handle{position:absolute;width:16px;height:16px;z-index:10}.resize-handle-nw{top:-4px;left:-4px;cursor:nw-resize}.resize-handle-ne{top:-4px;right:-4px;cursor:ne-resize}.resize-handle-sw{bottom:-4px;left:-4px;cursor:sw-resize}.resize-handle-se{bottom:-4px;right:-4px;cursor:se-resize}.resize-handle:after{content:"";position:absolute;width:8px;height:8px;background:var(--accent-primary);border-radius:2px;opacity:0;transition:opacity var(--transition-fast)}.resize-handle-nw:after{top:4px;left:4px}.resize-handle-ne:after{top:4px;right:4px}.resize-handle-sw:after{bottom:4px;left:4px}.resize-handle-se:after{bottom:4px;right:4px}.sheet-overlay:hover .resize-handle:after{opacity:.6}.resize-handle:hover:after{opacity:1}.ad-container{margin:var(--space-xl) auto;max-width:728px;text-align:center}.ad-container .adsbygoogle{display:block;min-height:90px}.landing-ad{padding:0 var(--space-lg)}.songs-page-ad{padding:0 var(--space-lg)}.song-detail-ad,.songs-page-ad{margin-top:var(--space-lg);margin-bottom:0}@media (max-width:768px){.ad-container{max-width:100%}.ad-container,.landing-ad,.songs-page-ad{padding:0 var(--space-md)}}.not-found-page{display:flex;flex-direction:column;min-height:100vh;background:var(--bg-primary)}.not-found-page>.app-header{flex-shrink:0}.not-found-page>.app-footer{flex-shrink:0;margin-top:auto}.not-found-content{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl);text-align:center}.not-found-title{font-family:var(--font-display);font-size:8rem;font-weight:700;color:var(--accent-primary);margin:0;line-height:1;text-shadow:0 0 60px var(--accent-glow)}.not-found-message{font-family:var(--font-display);font-size:1.5rem;font-weight:500;color:var(--text-secondary);margin:var(--space-lg) 0 var(--space-xl) 0}.not-found-link{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-md) var(--space-xl);background:var(--accent-primary);color:var(--bg-primary);text-decoration:none;font-family:var(--font-display);font-size:1rem;font-weight:600;border-radius:var(--radius-full);transition:all var(--transition-base)}.not-found-link:hover{background:var(--accent-primary-light);transform:scale(1.05);box-shadow:var(--shadow-glow-strong)}@media (max-width:768px){.not-found-title{font-size:5rem}.not-found-message{font-size:1.125rem}.not-found-content{padding:var(--space-xl)}}.x-share-button{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#000000;color:#ffffff;border:1px solid var(--border-color);border-radius:var(--radius-full);font-family:var(--font-body);font-size:.875rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.x-share-button:hover{background:#1a1a1a;border-color:#333;transform:scale(1.02)}.x-share-button:active{transform:scale(.98)}.x-share-button svg{flex-shrink:0}.share-section{padding:var(--space-xl) var(--space-lg);margin-top:var(--space-xl)}.share-section,.song-share-section{display:flex;justify-content:center;border-top:1px solid var(--border-subtle)}.song-share-section{margin-top:var(--space-lg);padding-top:var(--space-lg)}.record-button{width:48px;height:48px;border-radius:var(--radius-full);border:1px solid var(--overlay-border);background:var(--overlay-bg);color:var(--overlay-text);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-xs);transition:all var(--transition-base);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.record-button:hover{color:var(--accent-red);transform:scale(1.08);box-shadow:0 0 20px var(--accent-red-glow)}.record-button-active,.record-button:hover{border-color:var(--accent-red);background:var(--accent-red-glow)}.record-button-active{width:auto;min-width:80px;padding:0 var(--space-md)}.record-button-active:hover{background:rgba(255,90,90,.35)}.record-button-processing{pointer-events:none;opacity:.7}.record-indicator{width:14px;height:14px}.record-indicator,.record-indicator-pulse{border-radius:var(--radius-full);background:var(--accent-red)}.record-indicator-pulse{width:12px;height:12px;animation:record-pulse 1s ease-in-out infinite}@keyframes record-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.record-time{font-family:var(--font-mono);font-size:.8125rem;font-weight:700;color:var(--accent-red)}.record-button-spinner{width:16px;height:16px;border:2px solid var(--overlay-text);border-top:2px solid transparent;border-radius:var(--radius-full);animation:spinner .8s linear infinite}@keyframes spinner{to{transform:rotate(1turn)}}.end-screen-video-section{margin-bottom:var(--space-xl);text-align:center}.end-screen-btn-video{background:linear-gradient(135deg,var(--accent-red) 0,#ff3333 100%);border-color:var(--accent-red);color:#ffffff;flex-direction:row;gap:var(--space-sm);width:auto;min-width:200px;height:56px;padding:0 var(--space-lg)}.end-screen-btn-video:hover{background:linear-gradient(135deg,#ff3333 0,var(--accent-red) 100%);border-color:#ff3333;color:#ffffff;box-shadow:0 8px 24px rgba(255,90,90,.4),0 0 30px var(--accent-red-glow)}.end-screen-btn-video .end-screen-icon{font-size:1.25rem;display:flex;align-items:center}.end-screen-hint{margin:var(--space-sm) 0 0 0;color:var(--text-muted);font-size:.8125rem}.cookie-consent-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999;background:var(--bg-elevated);border-top:1px solid var(--border-color);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;justify-content:center;gap:var(--space-md);box-shadow:0 -4px 20px rgba(0,0,0,.4)}.cookie-consent-message{margin:0;color:var(--text-secondary);font-size:.875rem;line-height:1.5;max-width:600px}.cookie-consent-actions{display:flex;align-items:center;gap:var(--space-md);flex-shrink:0}.cookie-consent-link{color:var(--accent-primary-light);font-size:.875rem;text-decoration:none;white-space:nowrap}.cookie-consent-link:hover{text-decoration:underline}.cookie-consent-accept{background:var(--accent-primary);color:#ffffff;border:none;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:.875rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.cookie-consent-accept:hover{background:var(--accent-primary-dark)}@media (max-width:640px){.cookie-consent-banner{flex-direction:column;padding:var(--space-md);gap:var(--space-sm)}.cookie-consent-message{text-align:center}}