:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;font-size:14px;color-scheme:light dark;color:#fff;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}button{border-radius:4px;border:1px solid transparent;padding:.4em .8em;font-size:1em;font-weight:600;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s;margin-left:.4em}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}select{border-radius:4px;border:1px solid transparent;padding:.4em;font-size:1em;font-weight:600;font-family:inherit;background-color:#1a1a1a;color:#fff;margin:0 .4em}select:hover{border-color:#646cff}select:focus,select:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{position:relative;color:#213547;background-color:#fff}a:hover{color:#747bff}button,select{background-color:#f9f9f9;color:#000}}.cam-fullscreen{position:fixed;inset:0;z-index:100;background:#000}.cam-root{position:absolute;inset:0;height:100%;overflow:hidden;background:#000;touch-action:manipulation;user-select:none;-webkit-user-select:none}.cam-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.cam-overlay{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}.cam-tap{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:#646cffe6;box-shadow:0 0 0 6px #646cff40,0 0 18px #646cffcc;pointer-events:none;animation:cam-tap-pulse 1.4s ease-out infinite;z-index:5}@keyframes cam-tap-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.75}to{transform:scale(1);opacity:1}}.cam-topbar{position:absolute;top:0;left:0;right:0;display:flex;flex-direction:column;gap:.5rem;padding:calc(.6rem + env(safe-area-inset-top)) .6rem .9rem;background:linear-gradient(rgba(0,0,0,.65),transparent);z-index:10}.cam-topbar-row{display:flex;align-items:center;gap:.5rem}.cam-keychip{flex:1;background:#1a1a1ae6;border:1px solid #646cff;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cam-clefseg{display:flex;gap:4px}.cam-clefseg button{flex:1;background:#1a1a1ae6;border:1px solid #3a3a44;color:#ccc;font-size:.85rem;padding:.45em .3em}.cam-clefseg button.active{background:#646cff;border-color:#646cff;color:#fff}.cam-close{background:#1a1a1ae6;border:1px solid #3a3a44;color:#fff;flex-shrink:0}.cam-result{position:absolute;left:50%;bottom:calc(64px + env(safe-area-inset-bottom));transform:translate(-50%);background:#101014eb;border:1px solid #646cff;border-radius:8px;padding:.7rem 1rem;text-align:center;z-index:10;min-width:220px;max-width:calc(100% - 2rem)}.cam-note{font-size:2.2rem;font-weight:800;color:#fff;line-height:1.1}.cam-result-row{display:flex;gap:.4rem;justify-content:center;margin-top:.55rem;align-items:center;flex-wrap:wrap}.cam-result-row button,.cam-result-row select{font-size:.85rem}.cam-link{background:none;border:none;color:#8f96ff;text-decoration:underline;font-weight:600;padding:.2em .4em}.cam-hintbar{position:absolute;left:50%;bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-50%);background:#101014d9;color:#e8e8ef;font-size:.9rem;padding:.45rem 1rem;border-radius:999px;white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis;z-index:10}.cam-sheet{position:absolute;left:0;right:0;bottom:0;background:#17171c;border-top:1px solid #646cff;padding:1rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));z-index:20;color:#fff}.cam-sheet h3{margin:0 0 .25rem}.cam-sheet p{margin:0 0 .75rem;color:#b6b6c0}.cam-sheet label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;margin-bottom:1rem}.cam-sheet select{font-size:1rem;padding:.4em}.cam-sheet-actions{display:flex;gap:.6rem}.cam-key-big{font-size:1.6rem;font-weight:800;color:#fff;margin:0 0 .1rem}.cam-intro{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 2rem));margin:0;padding:2rem;text-align:center;border:1px solid #3a3a44;border-radius:8px;background:#1a1a1a}.cam-intro h2{margin-top:0;color:#fff}.cam-intro p{color:#b6b6c0}.cam-intro-actions{display:flex;gap:.6rem;justify-content:center;margin:1.25rem 0;flex-wrap:wrap}.cam-primary{background:#646cff;color:#fff;font-size:1.05rem;padding:.6em 1.4em}.cam-secondary{font-size:1.05rem;padding:.6em 1.2em}.cam-status{font-style:italic}.cam-fineprint{font-size:.8rem;opacity:.7}@media (prefers-color-scheme: light){.cam-intro{background:#f9f9f9;border-color:#e4e4e7}.cam-intro h2{color:#17171c}.cam-intro p{color:#55555e}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.note-controls,.key-signature-controls{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.2rem}.clef-controls{margin-bottom:.2rem}.stave-container{position:relative;min-width:260px}#stave-visualization svg{filter:invert(1)}@media (prefers-color-scheme: light){#stave-visualization svg{filter:invert(0)}}.vertical-note-slider{position:absolute;bottom:-3px;right:0%;width:185px;transform:rotate(-90deg);transform-origin:left center}#hidden-overlay-slider{opacity:0;left:50%}.play-pitch{margin-bottom:3rem}.note-name{font-size:1.4rem;margin:.6rem 0 .4rem}#play-button{font-size:1.4rem}.note-name-display{font-weight:700;padding:.4rem;display:inline-block;border:1px solid #646cff;border-radius:4px;margin-left:6px;min-width:2rem;background:#1a1a1a}@media (prefers-color-scheme: light){.note-name-display{background-color:#f9f9f9;color:#000}}.foot-note{font-size:.8rem;opacity:.8}.mode-tabs{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.mode-tabs button{font-size:1.05rem;padding:.5em 1.6em}.mode-tabs button.active{background-color:#646cff;color:#fff}
