@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";:root{--ppi: 153;--bg-primary: #0a0a0e;--bg-secondary: #14141a;--bg-tertiary: #1f1f28;--bg-elevated: #282834;--text-primary: #ffffff;--text-secondary: rgba(255, 255, 255, .7);--text-tertiary: rgba(255, 255, 255, .45);--text-accent: #6366f1;--text-accent-glow: rgba(99, 102, 241, .4);--system-green: #30d158;--system-green-glow: rgba(48, 209, 88, .45);--system-orange: #ff9f0a;--system-orange-glow: rgba(255, 159, 10, .45);--system-red: #ff453a;--system-red-glow: rgba(255, 69, 58, .45);--kalimba-wood: #3a1e12;--kalimba-wood-highlight: #522b1a;--kalimba-wood-shadow: #1e0d07;--kalimba-steel-light: #ffffff;--kalimba-steel-mid: #e2ded9;--kalimba-steel-dark: #b8b2a8;--kalimba-key-active: #d6f2f8;--kalimba-key-red: #c4686e;--kalimba-top-pad: #d3c4b5;--kalimba-bottom-pad: #1a1210;--tile-bg: #6366f1;--tile-glow: rgba(99, 102, 241, .8);--glass-bg: rgba(22, 22, 28, .78);--glass-bg-hover: rgba(36, 36, 44, .85);--glass-bg-active: rgba(44, 44, 54, .95);--glass-border: rgba(255, 255, 255, .12);--glass-border-subtle: rgba(255, 255, 255, .08);--glass-highlight: inset 0 1px 0 rgba(255, 255, 255, .18);--glass-shadow: 0 12px 32px rgba(0, 0, 0, .45), 0 4px 12px rgba(0, 0, 0, .3);--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 9999px;--spring-snappy: cubic-bezier(.2, .9, .3, 1);--spring-bounce: cubic-bezier(.34, 1.56, .64, 1);--spring-gentle: cubic-bezier(.25, 1, .5, 1);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 10px 24px -4px rgba(0, 0, 0, .5), 0 4px 10px rgba(0, 0, 0, .25);--shadow-lg: 0 24px 48px -12px rgba(0, 0, 0, .7)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{height:100%;width:100%;touch-action:none;background-color:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Inter,sans-serif;overflow:hidden;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}#portrait-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0a0a0ef0;backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);z-index:99999;justify-content:center;align-items:center;flex-direction:column;padding:2.5rem;text-align:center}#portrait-overlay.dismissed{display:none!important}@media screen and (orientation:portrait)and (hover:none)and (pointer:coarse){#portrait-overlay:not(.dismissed){display:flex}}.portrait-dismiss-btn{margin-top:1.5rem;padding:.625rem 1.5rem;background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--text-primary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.portrait-dismiss-btn:hover{background:#ffffff29;border-color:#ffffff4d;transform:scale(1.02)}.portrait-dismiss-btn:active{transform:scale(.98)}#root{height:100%;width:100%;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:700;color:var(--text-primary);letter-spacing:-.025em}button{font-family:inherit;cursor:pointer;border:none;background:transparent;-webkit-user-select:none;user-select:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#fff3;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#ffffff59}.navbar{display:flex;justify-content:space-between;align-items:center;padding-top:calc(1rem + env(safe-area-inset-top));padding-bottom:1rem;padding-left:calc(2rem + env(safe-area-inset-left));padding-right:calc(2rem + env(safe-area-inset-right));background:var(--glass-bg);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border-bottom:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight),var(--glass-shadow);position:relative;z-index:100}.nav-brand h1{font-size:1.25rem;font-weight:700;letter-spacing:-.03em;display:flex;align-items:center;gap:.5rem;margin:0;color:var(--text-primary)}.version-badge{font-size:.65rem;padding:3px 8px;background:#ffffff0f;color:var(--text-secondary);border-radius:var(--radius-sm);font-weight:600;letter-spacing:.02em;border:1px solid var(--glass-border-subtle);box-shadow:inset 0 1px #ffffff14;display:flex;align-items:center;justify-content:center}.nav-controls{display:flex;align-items:center;gap:1.25rem}.nav-section{display:flex;align-items:center;gap:1rem}.midi-menu-container{position:relative}.midi-menu-btn{display:flex;align-items:center;gap:.5rem;padding:0 1rem;height:40px;box-sizing:border-box;background:#ffffff0d;border-radius:var(--radius-md);font-weight:600;font-size:.85rem;cursor:pointer;border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight);color:var(--text-primary);transition:transform .12s var(--spring-snappy),background .15s ease,border-color .15s ease}.midi-menu-btn:hover{background:#ffffff1a;border-color:#ffffff2e}.midi-menu-btn.active{background:#ffffff24;border-color:#ffffff40}.midi-menu-btn:active{transform:scale(.96)}.midi-dropdown-menu{position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%);background:var(--glass-bg);backdrop-filter:blur(28px) saturate(190%);-webkit-backdrop-filter:blur(28px) saturate(190%);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),0 16px 36px #00000080;border-radius:var(--radius-lg);padding:6px;min-width:250px;display:flex;flex-direction:column;gap:4px;z-index:1000;animation:apple-pop-down .2s var(--spring-snappy)}.midi-dropdown-item{display:flex;align-items:center;gap:.75rem;padding:8px 12px;border-radius:var(--radius-md);border:none;background:transparent;color:var(--text-primary);text-decoration:none;cursor:pointer;text-align:left;transition:background .15s ease,transform .12s var(--spring-snappy)}.midi-dropdown-item:hover{background:#ffffff14}.midi-dropdown-item:active{transform:scale(.98);background:#ffffff1f}.dropdown-item-text{display:flex;flex-direction:column;gap:1px;flex:1}.dropdown-title{font-size:.84rem;font-weight:600;color:var(--text-primary)}.dropdown-desc{font-size:.7rem;color:var(--text-tertiary);font-weight:400}.support-icon{color:#ff5e5b;transition:transform .2s ease}.support-item:hover .support-icon{transform:scale(1.15)}.ext-icon{color:var(--text-tertiary)}.playback-controls{display:flex;align-items:center;gap:.25rem;height:40px;box-sizing:border-box;background:#ffffff0d;padding:4px;border-radius:var(--radius-md);border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight)}.btn-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;box-sizing:border-box;border-radius:var(--radius-md);color:var(--text-secondary);background:#ffffff0d;border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight);cursor:pointer;transition:transform .12s var(--spring-snappy),background .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease}.playback-controls .btn-icon{width:32px;height:32px;border-radius:var(--radius-sm);border:none;background:transparent;box-shadow:none}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-icon:not(:disabled):hover{background:#ffffff1a;color:var(--text-primary)}.btn-icon:not(:disabled):active{transform:scale(.93)}.btn-icon.active{color:#c7d2fe;background:#6366f138;border-color:#a5b4fc59;box-shadow:0 0 14px #6366f140,inset 0 1px #fff3}.playback-controls .btn-icon.active{background:#6366f14d;color:#fff}.btn-icon.danger:not(:disabled):hover{color:var(--system-red);background:#ff453a1f;border-color:#ff453a4d}.setting-group{display:flex;align-items:center;gap:.5rem}.setting-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);font-weight:600}.tempo-input{width:60px;height:40px;box-sizing:border-box;background:#ffffff0d;border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight);color:var(--text-primary);padding:0 .5rem;border-radius:var(--radius-md);text-align:center;font-weight:600;font-size:.9rem;font-variant-numeric:tabular-nums;transition:border-color .15s ease,background .15s ease}.tempo-input:focus{outline:none;border-color:var(--text-accent);background:#ffffff17;box-shadow:0 0 0 3px var(--text-accent-glow)}.tuning-select{width:auto;min-width:100px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .6rem center;background-size:1.1em;cursor:pointer;padding-left:1rem;padding-right:1.8rem;text-align:center}.scale-menu-container{position:relative}.scale-menu-btn{display:flex;align-items:center;gap:.45rem;padding:0 .75rem;height:40px;box-sizing:border-box;background:#ffffff0d;border-radius:var(--radius-md);font-weight:600;font-size:.85rem;cursor:pointer;border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight);color:var(--text-primary);transition:transform .12s var(--spring-snappy),background .15s ease,border-color .15s ease}.scale-menu-btn:hover{background:#ffffff1a;border-color:#ffffff2e}.scale-menu-btn.active{background:#ffffff24;border-color:#ffffff40}.scale-menu-btn:active{transform:scale(.96)}.scale-pill-badge{font-size:.76rem;padding:2px 6px;border-radius:var(--radius-xs);background:#ffffff1a;color:var(--text-secondary);font-variant-numeric:tabular-nums}.scale-dropdown-menu{position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%);background:var(--glass-bg);backdrop-filter:blur(28px) saturate(190%);-webkit-backdrop-filter:blur(28px) saturate(190%);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),0 16px 36px #00000080;border-radius:var(--radius-lg);padding:14px;min-width:250px;display:flex;flex-direction:column;gap:12px;z-index:1000;animation:apple-pop-down .2s var(--spring-snappy)}.scale-menu-header{display:flex;align-items:center;justify-content:space-between}.scale-menu-title{font-size:.84rem;font-weight:600;color:var(--text-primary)}.scale-menu-val{font-size:.8rem;font-weight:600;color:var(--text-accent);font-variant-numeric:tabular-nums}.scale-slider-row{display:flex;align-items:center;gap:.5rem}.scale-stepper-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);background:#ffffff14;color:var(--text-primary);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:transform .12s var(--spring-snappy),background .15s ease}.scale-stepper-btn:hover{background:#ffffff29}.scale-stepper-btn:active{transform:scale(.92)}.scale-range-slider{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:#ffffff26;border-radius:3px;outline:none;cursor:pointer}.scale-range-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0006;cursor:pointer;transition:transform .12s var(--spring-snappy)}.scale-range-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.scale-presets-row{display:flex;gap:6px}.scale-preset-btn{flex:1;padding:6px 4px;border-radius:var(--radius-sm);background:#ffffff0f;border:1px solid rgba(255,255,255,.08);color:var(--text-secondary);font-size:.74rem;font-weight:500;cursor:pointer;text-align:center;transition:background .15s ease,color .15s ease,border-color .15s ease}.scale-preset-btn:hover{background:#ffffff1f;color:var(--text-primary)}.scale-preset-btn.active{background:#ffffff2e;border-color:#ffffff4d;color:#fff;font-weight:600}.scale-help-text{font-size:.68rem;color:var(--text-tertiary);text-align:center;line-height:1.3}.toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:auto;height:40px;padding:0 .85rem;gap:.45rem;border-radius:var(--radius-md);box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:inherit;transition:transform .12s var(--spring-snappy),background .15s ease,border-color .15s ease,box-shadow .15s ease,color .15s ease}.toggle-btn:active{transform:scale(.94)}.toggle-btn.active{background:#6366f138;border:1px solid rgba(165,180,252,.4);color:#fff;box-shadow:0 0 14px var(--text-accent-glow),inset 0 1px #ffffff40}.toggle-btn.active:hover{background:#6366f152;border-color:#a5b4fc8c}.toggle-btn.inactive{background:#ffffff0d;border:1px solid var(--glass-border-subtle);box-shadow:var(--glass-highlight);color:var(--text-secondary);opacity:.7}.toggle-btn.inactive:hover{background:#ffffff1a;color:var(--text-primary);opacity:1}.toggle-text{font-size:.85rem;font-weight:700;letter-spacing:.02em}@media(max-width:1050px){.navbar{padding-top:calc(.5rem + env(safe-area-inset-top));padding-bottom:.5rem;padding-left:calc(.5rem + env(safe-area-inset-left));padding-right:calc(.5rem + env(safe-area-inset-right));justify-content:center}.nav-brand{display:none}.nav-controls{width:100%;justify-content:center;gap:.5rem;flex-wrap:wrap}.nav-section{justify-content:center;flex-wrap:wrap;gap:.5rem}.setting-label,.midi-menu-btn span,.scale-menu-btn .scale-btn-label,.scale-menu-btn .scale-pill-badge{display:none}.midi-menu-btn,.scale-menu-btn{padding:0;width:40px;height:40px;justify-content:center}.file-upload-btn,.tempo-input{font-size:.85rem}.btn-icon{width:40px;height:40px}.toggle-btn{height:40px;padding:0 .65rem}.tuning-select{max-width:100px}}.progress-bar-container{position:absolute;bottom:0;left:0;width:100%;height:3px;background:#ffffff14;z-index:10;transition:height .15s ease-out;cursor:pointer}.progress-bar-container:hover,.progress-bar-container:active{height:6px}.progress-bar{-webkit-appearance:none;appearance:none;width:100%;height:100%;background:transparent;outline:none;position:absolute;top:0;left:0;margin:0;cursor:pointer}.progress-bar:disabled{cursor:not-allowed;opacity:.4}.progress-bar::-webkit-slider-runnable-track{width:100%;height:100%;background:linear-gradient(to right,var(--text-accent) var(--progress),transparent var(--progress));border-radius:0}.progress-bar::-moz-range-track{width:100%;height:100%;background:linear-gradient(to right,var(--text-accent) var(--progress),transparent var(--progress));border-radius:0}.progress-bar::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0006;cursor:pointer;transform:scale(0);transition:transform .15s var(--spring-bounce);margin-top:-3px}.progress-bar-container:hover .progress-bar::-webkit-slider-thumb,.progress-bar:active::-webkit-slider-thumb{transform:scale(1)}.progress-bar::-moz-range-thumb{width:12px;height:12px;border:none;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0006;cursor:pointer;transform:scale(0);transition:transform .15s var(--spring-bounce)}.progress-bar-container:hover .progress-bar::-moz-range-thumb,.progress-bar:active::-moz-range-thumb{transform:scale(1)}.kalimba-container{display:flex;justify-content:center;align-items:center;width:100%;padding-bottom:2rem}.kalimba-board{display:flex;justify-content:space-around;margin-top:calc((var(--ppi) / 25.4) * 20px);height:calc((var(--ppi) / 25.4) * 70px);width:calc((var(--ppi) / 25.4) * 110px);background:radial-gradient(circle at 50% 25%,var(--kalimba-wood-highlight) 0%,var(--kalimba-wood) 55%,var(--kalimba-wood-shadow) 100%);border-radius:var(--radius-lg);position:relative;overflow:visible;box-shadow:0 25px 50px -12px #00000080,inset 5px 5px 10px #6b6b6b33,inset -5px -5px 10px #0006;transition:all .3s ease}.kalimba-key{margin-top:calc((var(--ppi) / 25.4) * 2px);width:calc((var(--ppi) / 25.4) * 4px);height:calc((var(--ppi) / 25.4) * 60px);border-radius:calc((var(--ppi) / 25.4) * 1px);background:linear-gradient(180deg,#f5f0eb,#dbd4ca);box-shadow:2px 5px 15px #0009;z-index:10;position:relative;cursor:pointer;transition:background-color .1s ease,transform .1s ease;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:10%}.kalimba-key:hover{background:linear-gradient(180deg,#fff,#e8e4de)}.kalimba-key:active,.kalimba-key.active{background:var(--kalimba-key-active)!important;box-shadow:0 0 8px var(--tile-glow);transform:translateY(2px)}.kalimba-key.first-key{margin-left:calc((var(--ppi) / 25.4) * 4px)}.kalimba-key.last-key{margin-right:calc((var(--ppi) / 25.4) * 4px)}.kalimba-key-glow{position:absolute;inset:0;border-radius:inherit;background:var(--kalimba-key-active);box-shadow:0 0 10px var(--tile-glow);opacity:0;animation-name:delayed-key-flash;animation-duration:.4s;animation-delay:2s;animation-iteration-count:1;animation-fill-mode:forwards;pointer-events:none;z-index:5;will-change:opacity;-webkit-transform:translateZ(0);transform:translateZ(0)}@keyframes delayed-key-flash{0%{opacity:0}5%{opacity:1}30%{opacity:1}to{opacity:0}}.kalimba-key[data-note=C4],.kalimba-key[data-note=A4],.kalimba-key[data-note=B4],.kalimba-key[data-note=G5],.kalimba-key[data-note=A5]{background:linear-gradient(180deg,#efa5ad 0%,var(--kalimba-key-red) 100%)}.kalimba-key[data-note=C4]:active,.kalimba-key[data-note=C4].active,.kalimba-key[data-note=A4]:active,.kalimba-key[data-note=A4].active,.kalimba-key[data-note=B4]:active,.kalimba-key[data-note=B4].active,.kalimba-key[data-note=G5]:active,.kalimba-key[data-note=G5].active,.kalimba-key[data-note=A5]:active,.kalimba-key[data-note=A5].active,.kalimba-key[data-note=C4] .kalimba-key-glow,.kalimba-key[data-note=A4] .kalimba-key-glow,.kalimba-key[data-note=B4] .kalimba-key-glow,.kalimba-key[data-note=G5] .kalimba-key-glow,.kalimba-key[data-note=A5] .kalimba-key-glow{background:#ff767f!important}.top-pad{position:absolute;width:calc((var(--ppi) / 25.4) * 104px);background-color:var(--kalimba-top-pad);display:flex;align-items:center;justify-content:space-around;top:calc((var(--ppi) / 25.4) * 22px);border-radius:calc((var(--ppi) / 25.4) * 1px);height:calc((var(--ppi) / 25.4) * 3px);box-shadow:0 4px 6px -1px #0006,inset 2px 2px 5px #fff3;z-index:20}.bottom-pad{position:absolute;width:calc((var(--ppi) / 25.4) * 106px);background-color:var(--kalimba-bottom-pad);height:calc((var(--ppi) / 25.4) * 8px);border-radius:calc((var(--ppi) / 25.4) * 1px);box-shadow:2px 2px 5px #000,inset 2px 2px 5px #ffffff1a,inset -2px -2px 5px #0000004d}.bottom-pad.pad-1{top:calc((var(--ppi) / 25.4) * 10px)}.bottom-pad.pad-2{top:calc((var(--ppi) / 25.4) * 50px)}.key-label{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#111;font-weight:700;font-family:Inter,sans-serif;-webkit-user-select:none;user-select:none;font-size:calc((var(--ppi) / 25.4) * 2.5px);height:20%}.key-number{line-height:1}.key-octave{font-size:.9em;letter-spacing:1px;line-height:1;margin-top:2px;min-height:1em;display:flex;justify-content:center;align-items:center}@media(max-height:600px)and (orientation:landscape){.kalimba-container{padding-bottom:0;margin-bottom:calc(var(--ppi) * -60px / 25.4)}.kalimba-key{justify-content:flex-start;padding-top:calc(var(--ppi) * 2px / 25.4);padding-bottom:0}.key-label{height:auto}}@media(min-width:768px)and (min-height:601px){.kalimba-container{padding-bottom:15vh}}.tuning-mode-active .kalimba-key{transition:all .3s ease}.tuning-mode-active .kalimba-key:not(.tuning-focus):not(.memorized-perfect):not(.memorized-flat):not(.memorized-sharp){opacity:.35;filter:grayscale(60%)}.tuning-mode-active .kalimba-key.memorized-perfect,.tuning-mode-active .kalimba-key.memorized-flat,.tuning-mode-active .kalimba-key.memorized-sharp{opacity:1;filter:none}.kalimba-key.tuning-focus{transform:translateY(-5px);box-shadow:0 10px 20px #000c,0 0 15px #ffffff4d;background:linear-gradient(180deg,#fff,#d8d4cf);z-index:10;border-top:2px solid rgba(255,255,255,.9)}.kalimba-key.memorized-perfect{background:linear-gradient(180deg,#bbf7d0,#4ade80)!important;border-top:3px solid rgba(22,163,74,.9)!important;box-shadow:0 0 18px #22c55eb3,2px 5px 15px #00000080!important}.kalimba-key.memorized-flat{background:linear-gradient(180deg,#fecaca,#f87171)!important;border-top:3px solid rgba(220,38,38,.9)!important;box-shadow:0 0 18px #f87171b3,2px 5px 15px #00000080!important}.kalimba-key.memorized-sharp{background:linear-gradient(180deg,#fed7aa,#fb923c)!important;border-top:3px solid rgba(234,88,12,.9)!important;box-shadow:0 0 18px #fb923cb3,2px 5px 15px #00000080!important}.kalimba-key.tuning-focus.tune-flat{background:linear-gradient(180deg,#ffd1bf,#ff6b6b)!important;box-shadow:0 0 15px #ff6b6b99}.kalimba-key.tuning-focus.tune-sharp{background:linear-gradient(180deg,#ffd1bf,#ff9e3d)!important;box-shadow:0 0 15px #ff9e3d99}.kalimba-key.tuning-focus.tune-perfect{background:linear-gradient(180deg,#d8f5cb,#4cd137)!important;box-shadow:0 0 20px #4cd137cc}.tuning-indicator{position:absolute;top:-48px;left:50%;transform:translate(-50%);width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:200;-webkit-transform:translateX(-50%)}.tuning-indicator.status-flat{background:#ef4444;box-shadow:0 0 12px #ef4444cc;color:#fff}.tuning-indicator.status-sharp{background:#f97316;box-shadow:0 0 12px #f97316cc;color:#fff}.tuning-indicator.status-perfect{background:#22c55e;box-shadow:0 0 12px #22c55ecc;color:#fff}.tuning-indicator svg{display:block;width:20px!important;height:20px!important;stroke:#fff!important;stroke-width:3!important;fill:none}@keyframes pulse-arrow{0%{transform:translateY(0);opacity:.8}to{transform:translateY(-2px);opacity:1}}@keyframes pop-grow{0%{transform:scale(.5);opacity:0}to{transform:scale(1.5);opacity:1}}.animation-container{flex:1;display:flex;justify-content:center;position:relative;width:100%;z-index:5;overflow:visible}.falling-tiles-wrapper{position:absolute;top:0;bottom:0;width:calc((var(--ppi) / 25.4) * 110px);display:flex;justify-content:space-around}.falling-col{width:calc((var(--ppi) / 25.4) * 4px);height:100%;display:flex;justify-content:center;position:relative}.falling-col:first-child{margin-left:calc((var(--ppi) / 25.4) * 4px)}.falling-col:last-child{margin-right:calc((var(--ppi) / 25.4) * 4px)}.falling-tile-wrapper{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;animation-name:fall-down-through;animation-iteration-count:1;animation-fill-mode:forwards;animation-timing-function:linear;display:flex;align-items:flex-end}.falling-tile-visual{width:100%;height:calc((var(--ppi) / 25.4) * 7px);background-color:var(--tile-bg);border-radius:calc((var(--ppi) / 25.4) * 2px);position:relative;display:flex;justify-content:center;align-items:center;box-shadow:inset 0 1px #fff9,inset 0 -1px #0006,0 2px 5px #0006,0 0 10px var(--tile-glow)}.half-note-marker{color:var(--text-primary);font-size:calc((var(--ppi) / 25.4) * 4.5px);font-weight:500;line-height:1;position:absolute;z-index:2;text-shadow:0 1px 2px rgba(0,0,0,.6)}.tile-glow{width:100%;height:100%;background:#fff;border-radius:inherit;opacity:.4}@keyframes fall-down-through{0%{transform:translate3d(0,-100%,0);opacity:0}5%{opacity:1}86.95%{transform:translate3d(0,calc((var(--ppi) / 25.4) * 22px),0);opacity:1}99.9%{transform:translate3d(0,calc((var(--ppi) / 25.4) * 82px),0);opacity:1}to{transform:translate3d(0,calc((var(--ppi) / 25.4) * 82px),0);opacity:0}}.falling-tile-wrapper[data-key-note=C-1]{display:none}.layout-container{height:100vh;width:100vw;display:flex;flex-direction:column;position:relative;overflow:hidden;background-color:var(--bg-primary)}.bg-glow{position:absolute;width:65vw;height:65vw;border-radius:50%;filter:blur(100px);z-index:0;pointer-events:none;opacity:.18}.bg-top{top:-30%;left:-10%;background:radial-gradient(circle,var(--text-accent) 0%,rgba(99,102,241,.4) 40%,transparent 70%)}.bg-bottom{bottom:-30%;right:-10%;background:radial-gradient(circle,#e04850 0%,rgba(224,72,80,.35) 45%,transparent 70%)}.main-content{flex:1;display:flex;flex-direction:column;justify-content:flex-end;position:relative;z-index:10}.tuning-error-banner{background:#ff453aeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);color:#fff;padding:.65rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-weight:600;font-size:.85rem;position:absolute;top:calc(1rem + env(safe-area-inset-top));left:50%;transform:translate(-50%);width:90%;max-width:440px;border-radius:var(--radius-lg);z-index:9999;box-shadow:0 12px 28px #ff453a66,inset 0 1px #ffffff59;animation:apple-pop-down .4s var(--spring-bounce)}.banner-icon{flex-shrink:0;stroke:#fff}.banner-text{flex:1;text-align:left;line-height:1.3}.banner-close-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);background:#0003;color:#fff;border:none;cursor:pointer;flex-shrink:0;transition:background .15s ease,transform .12s var(--spring-snappy)}.banner-close-btn:hover{background:#00000059}.banner-close-btn:active{transform:scale(.92)}.tuning-instruction-banner{background:var(--glass-bg);backdrop-filter:blur(24px) saturate(190%);-webkit-backdrop-filter:blur(24px) saturate(190%);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),0 16px 36px #00000080;color:var(--text-primary);padding:.6rem 1.4rem;text-align:center;font-weight:600;position:absolute;top:90px;left:50%;transform:translate(-50%);border-radius:var(--radius-full);z-index:9998;font-size:.88rem;letter-spacing:-.01em;animation:apple-pop-down .4s var(--spring-bounce);display:flex;justify-content:center;align-items:center;gap:.5rem;white-space:nowrap}@keyframes apple-pop-down{0%{transform:translate(-50%,-100%) scale(.85);opacity:0}to{transform:translate(-50%) scale(1);opacity:1}}.version-watermark{position:absolute;bottom:1rem;right:1.2rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;color:var(--text-tertiary);font-family:inherit;z-index:1000;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:.3rem;text-decoration:none;transition:color .15s ease,opacity .15s ease,transform .15s var(--spring-snappy);padding:4px 8px;border-radius:var(--radius-xs)}.version-watermark:hover{color:var(--text-primary);background:#ffffff14}.version-watermark:active{transform:scale(.95)}
