:root{--bg-color: #ffffff;--card-bg: rgba(0, 0, 0, .05);--accent-color: #4f46e5;--record-color: #ef4444;--text-primary: #111827;--text-secondary: #6b7280;--glass-border: rgba(0, 0, 0, .1);--success-color: #10b981;--warning-color: #f59e0b}*{margin:0;padding:0;box-sizing:border-box;font-family:Outfit,sans-serif}html,body{background-color:#f9fafb;color:var(--text-primary);height:100%;height:100dvh;position:fixed;inset:0;overscroll-behavior:none;margin:0;padding:0;overflow:hidden;width:100%;width:100dvw;touch-action:manipulation;-webkit-text-size-adjust:100%}#root{width:100%;height:100%;position:absolute;inset:0;background-color:#f9fafb}.app-container{width:100%!important;max-width:100%!important;min-width:0!important;height:100%!important;height:100dvh!important;position:absolute;inset:0;margin:0!important;padding:0!important;display:flex;flex-direction:column;gap:0;overflow:hidden;overscroll-behavior:none;background-color:#f9fafb}.app-container.is-rotated{max-width:none!important;min-width:0!important;width:var(--rw)!important;height:var(--rh)!important;padding:0!important;bottom:auto!important;right:auto!important}@media(min-width:1050px){.app-container{padding:0;gap:0}}header{display:flex;justify-content:space-between;align-items:center;padding:1rem 0}.logo{display:flex;align-items:center;gap:.75rem;font-size:1.75rem;font-weight:700;letter-spacing:-.04em;color:var(--text-primary)}.logo-img{width:40px;height:40px;border-radius:8px;object-fit:cover}.visualization-container{position:relative;width:100%;height:120px;background:var(--card-bg);border-radius:1rem;border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden;margin-bottom:1rem}#waveform-canvas{width:100%;height:100%;display:block}.note-markers{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.note-marker{position:absolute;bottom:20px;transform:translate(-50%);background:var(--accent-color);color:#fff;padding:4px 10px;border-radius:8px;font-size:.7rem;font-weight:600;text-align:center;line-height:1.2;box-shadow:0 4px 15px #00000080;border:1px solid rgba(255,255,255,.2);min-width:40px;white-space:nowrap}.note-marker small{display:block;font-weight:400;opacity:.8;font-size:.6rem}.note-marker:after{content:"";position:absolute;top:-100px;left:50%;width:1px;height:100px;background:linear-gradient(to top,var(--accent-color),transparent)}.session-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}.stat-card{background:var(--card-bg);padding:1rem;border-radius:.75rem;border:1px solid var(--glass-border);display:flex;flex-direction:column;gap:.25rem;align-items:center;min-width:0}@media(max-width:640px){.session-stats{grid-template-columns:1fr;gap:.75rem}}.stat-label{color:var(--text-secondary);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:1.25rem;font-weight:700}.main-controls{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.control-btn{cursor:pointer;border:none;outline:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.record-btn{width:140px;height:48px;border-radius:24px;background:var(--card-bg);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:center;gap:.75rem;color:var(--text-primary);font-size:1rem;font-weight:600}.record-btn:hover{background:#ffffff1a;transform:translateY(-2px);box-shadow:0 10px 25px -5px #0000004d}.play-btn{width:130px;height:48px;border-radius:24px;background:var(--card-bg);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:center;gap:.5rem;color:var(--text-primary);font-size:.95rem;font-weight:600}.play-btn:hover:not(:disabled){background:#ffffff1a;transform:translateY(-2px);box-shadow:0 10px 25px -5px #0000004d}.play-btn:disabled{opacity:.5;cursor:not-allowed}.play-icon{width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:16px solid var(--success-color);margin-left:4px;transition:all .3s}.play-icon.playing{width:16px;height:16px;border:none;background:var(--warning-color);margin-left:0}.record-icon{width:16px;height:16px;border-radius:50%;background:var(--record-color);box-shadow:0 0 0 4px #ef444433}.recording .record-icon{animation:pulse 1.5s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 #ef444466}70%{transform:scale(1.1);box-shadow:0 0 0 10px #ef444400}to{transform:scale(1);box-shadow:0 0 #ef444400}}.action-group{display:flex;gap:1rem;animation:slideUp .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.primary-btn,.secondary-btn{padding:.5rem 1rem;border-radius:.5rem;border:none;font-weight:600;cursor:pointer;transition:all .2s;font-size:.9rem}.primary-btn{background:var(--accent-color);color:#fff}.secondary-btn{background:var(--card-bg);border:1px solid var(--glass-border);color:var(--text-primary)}.secondary-btn.warning{color:var(--warning-color);border-color:#f59e0b4d}.primary-btn:hover,.secondary-btn:hover{opacity:.9;transform:translateY(-1px)}.switch-container{display:flex;align-items:center;gap:.75rem;font-size:.875rem;color:var(--text-secondary);cursor:pointer}.switch-container input{opacity:0;width:0;height:0}.slider{position:relative;display:inline-block;width:40px;height:20px;background-color:var(--card-bg);border-radius:20px;transition:.4s;border:1px solid var(--glass-border)}.slider:before{position:absolute;content:"";height:14px;width:14px;left:2px;bottom:2px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider{background-color:var(--accent-color)}input:checked+.slider:before{transform:translate(20px)}.practice-pill-btn{transition:all .2s ease}.practice-pill-btn:hover{opacity:1!important;background:#ffffff1a!important;transform:scale(1.05)}.practice-pill-btn.delete-btn:hover{background:#ef444440!important;color:#fca5a5!important}.recordings-list{margin-top:3rem}.recordings-list h3{margin-bottom:1.5rem;font-size:1.25rem;color:var(--text-secondary)}.recordings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.recording-card{background:var(--card-bg);padding:1.25rem;border-radius:1rem;border:1px solid var(--glass-border);display:flex;flex-direction:column;gap:1rem}.card-header{display:flex;justify-content:space-between;align-items:center}.card-title{font-weight:600}.card-date{font-size:.75rem;color:var(--text-secondary)}.card-preview{height:40px;background:#0003;border-radius:.5rem}.card-actions{display:flex;justify-content:flex-end}.empty-state{grid-column:1 / -1;text-align:center;padding:3rem;color:var(--text-secondary);font-style:italic;background:var(--card-bg);border-radius:1rem;border:1px dashed var(--glass-border)}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0c0d1299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;z-index:10;border-radius:inherit;transition:opacity .3s ease}.spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.1);border-left-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}.loading-text{font-size:.8rem;color:var(--text-secondary);font-weight:500;letter-spacing:.1em;text-transform:uppercase}@keyframes spin{to{transform:rotate(360deg)}}.skeleton-pulse{background:linear-gradient(90deg,#ffffff0d,#ffffff14,#ffffff0d);background-size:200% 100%;animation:skeletonPulse 1.5s infinite}@keyframes skeletonPulse{0%{background-position:200% 0}to{background-position:-200% 0}}.visualization-container,.sheet-music-view{position:relative}.vrv-active{fill:#f59e0b!important;filter:drop-shadow(0 0 6px rgba(245,158,11,.8));stroke:#f59e0b!important;transition:all .05s ease}.vrv-hover{fill:#f59e0b!important;filter:drop-shadow(0 0 4px rgba(245,158,11,.6));stroke:#f59e0b!important;cursor:pointer;transition:all .1s ease}.vrv-active *,.vrv-hover *{fill:#f59e0b!important;stroke:#f59e0b!important}.vrv-hit-zone{fill:#4f46e500;pointer-events:all;cursor:pointer;transition:fill .2s ease}.vrv-hit-zone:hover{fill:#4f46e51a}.vrv-hit-zone.active{fill:#6366f133}.vrv-veil-overlay{fill:#ffffffb3;stroke:none!important;pointer-events:none;transition:opacity .3s ease;shape-rendering:crispEdges}.vrv-focus-mode .staffLine,.vrv-focus-mode .barLine,.vrv-focus-mode .clef,.vrv-focus-mode .keySig,.vrv-focus-mode .meterSig,.vrv-focus-mode .tie,.vrv-focus-mode .slur{opacity:.15!important;transition:opacity .3s ease}.vrv-focus-mode .ledgerLine{opacity:.2!important}.vrv-hidden-context{display:none!important}.vrv-selecting-start,.vrv-selecting-start *{fill:#22c55e!important;stroke:#22c55e!important;filter:drop-shadow(0 0 4px rgba(34,197,94,.6))}.vrv-selecting-end,.vrv-selecting-end *{fill:#a855f7!important;stroke:#a855f7!important;filter:drop-shadow(0 0 4px rgba(168,85,247,.6))}.vrv-selecting-range,.vrv-selecting-range *{fill:#818cf8!important;stroke:#818cf8!important;filter:drop-shadow(0 0 4px rgba(129,140,248,.6))}.page-turn-overlay{position:absolute;top:0;bottom:0;width:20%;z-index:1000;cursor:pointer;transition:all .3s ease;pointer-events:auto;opacity:0;display:flex;align-items:center;justify-content:center}.page-turn-left{left:0;background:linear-gradient(to right,rgba(0,0,0,.1),transparent)}.page-turn-right{right:0;background:linear-gradient(to left,rgba(0,0,0,.1),transparent)}.page-turn-overlay:hover{opacity:1}.page-turn-icon{width:40px;height:40px;background:#ffffffe6;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000001a;color:#111827}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.pill-dropdown-container{position:relative}.pill-dropdown-content{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:8px;background:#fff;border-radius:12px;box-shadow:0 10px 25px #00000026;padding:8px;min-width:200px;display:none;flex-direction:column;gap:4px;z-index:1000;border:1px solid rgba(0,0,0,.05)}.pill-dropdown-content:before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px;background:transparent}.pill-dropdown-container.open .pill-dropdown-content,.pill-dropdown-container:hover .pill-dropdown-content{display:flex}.pill-dropdown-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-radius:8px;cursor:pointer;transition:all .2s;background:transparent;border:none;width:100%;text-align:left;font-size:.85rem;font-weight:600;color:#1e293b}.pill-dropdown-item:hover{background:#f1f5f9}.pill-dropdown-delete{display:flex;justify-content:center;align-items:center;background:transparent;border:none;color:#cbd5e1;border-radius:6px;width:24px;height:24px;cursor:pointer;transition:all .2s}.pill-dropdown-item:hover .pill-dropdown-delete{color:#ef4444}.pill-dropdown-delete:hover{background:#ef44441a}.audio-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:currentColor;cursor:pointer;margin-top:-3px;box-shadow:0 1px 3px #0000004d}.audio-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:currentColor;cursor:pointer;border:none;box-shadow:0 1px 3px #0000004d}.reh{-webkit-user-select:none;user-select:none;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.reh:hover{opacity:.8}.reh rect{rx:5px;ry:5px;stroke:#1e293b;stroke-width:24;fill:#fff;fill-opacity:.95}.reh text{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:700;fill:#0f172a}
