*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:#0d0d1a;color:#e0e0e0;height:100vh}#root{display:flex;flex-direction:column;height:100vh}.nav-header{display:flex;align-items:center;gap:24px;padding:0 20px;height:44px;background:#101024;border-bottom:1px solid #2a2a4a;flex-shrink:0}.nav-title{font-size:1rem;font-weight:700;color:#fff;letter-spacing:.5px}.nav-links{display:flex;gap:4px}.nav-link{padding:6px 14px;border-radius:6px;font-size:.8rem;color:#888;text-decoration:none;transition:color .15s,background .15s}.nav-link:hover{color:#c0c0e0;background:#1e1e3a}.nav-link.nav-active{color:#fff;background:#2a2a5a}.spiral-explore-page{display:grid;grid-template-columns:1fr 320px;flex:1;min-height:0;position:relative;overflow:hidden}.three-canvas{position:relative;overflow:hidden}.three-canvas canvas{display:block}.sidebar{background:#141428;border-left:1px solid #2a2a4a;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.sidebar h1{font-size:1.3rem;font-weight:600;color:#fff;letter-spacing:.5px}.controls{display:flex;flex-direction:column;gap:10px}.controls label{font-size:.85rem;color:#a0a0c0}.controls select{width:100%;padding:8px 10px;border-radius:6px;border:1px solid #3a3a5a;background:#1e1e3a;color:#e0e0e0;font-size:.9rem;cursor:pointer}.controls select:focus{outline:none;border-color:#6a6aff}.controls input[type=checkbox]{margin-right:6px}.controls .tab-panel label{font-size:.85rem;color:#a0a0c0}.controls .tab-panel select{width:100%;padding:8px 10px;border-radius:6px;border:1px solid #3a3a5a;background:#1e1e3a;color:#e0e0e0;font-size:.9rem;cursor:pointer}.controls .tab-panel select:focus{outline:none;border-color:#6a6aff}.btn-row{display:flex;gap:8px}.btn{flex:1;padding:8px 12px;border:1px solid #3a3a5a;border-radius:6px;background:#1e1e3a;color:#e0e0e0;font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:#2a2a5a;border-color:#6a6aff}.btn:active{background:#3a3a6a}.btn-primary{background:#4040aa;border-color:#5050cc}.btn-primary:hover{background:#5050cc}.info-panel{font-size:.85rem;line-height:1.6}.info-panel .note-info{padding:10px;background:#1a1a34;border-radius:6px;border:1px solid #2a2a4a}.info-panel .note-info strong{color:#fff}.sheet-music{background:#fff;border-radius:6px;min-height:120px;display:flex;align-items:center;justify-content:center;overflow:hidden}.sheet-music svg{max-width:100%}.view-toggle{display:flex;gap:6px}.view-toggle .btn{font-size:.75rem;padding:5px 8px}.btn-active{background:#4040aa;border-color:#6a6aff}.camera-presets{display:flex;gap:6px}.camera-presets .btn{font-size:.75rem;padding:5px 8px}.root-buttons{display:flex;flex-wrap:wrap;gap:4px}.root-buttons .btn{flex:0 0 calc(25% - 3px);font-size:.75rem;padding:4px 2px}.chord-buttons{display:flex;flex-wrap:wrap;gap:4px}.chord-buttons .btn{flex:0 0 calc(25% - 3px);font-size:.75rem;padding:4px 2px}.mode-buttons{display:flex;flex-direction:column;gap:4px}.mode-buttons .btn{flex:none;font-size:.8rem;padding:6px 10px;text-align:left}.inversion-buttons{display:flex;flex-wrap:wrap;gap:4px}.inversion-buttons .btn{flex:1 1 0;font-size:.75rem;padding:4px 2px}.tab-bar{display:flex;border-bottom:1px solid #2a2a4a;margin-bottom:10px}.tab-btn{flex:1;padding:8px 4px;background:transparent;border:none;border-bottom:2px solid transparent;color:#666;font-size:.8rem;cursor:pointer;transition:color .15s,border-color .15s}.tab-btn:hover{color:#a0a0c0}.tab-btn.tab-active{color:#fff;border-bottom-color:#6a6aff}.tab-panel,.plugin-container{display:flex;flex-direction:column;gap:10px}.plugin-container+.plugin-container{padding-top:10px;border-top:1px solid #1e1e3a}.checkbox-label{display:flex;align-items:center;cursor:pointer}.loading-overlay{position:fixed;inset:0;background:#0d0d1af2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:1000;transition:opacity .4s}.loading-overlay.hidden{opacity:0;pointer-events:none}.spinner{width:40px;height:40px;border:3px solid #2a2a5a;border-top-color:#6a6aff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.keyboard-layout{display:flex;flex-direction:column;gap:4px;padding:8px;background:#1a1a34;border-radius:6px;border:1px solid #2a2a4a}.keyboard-row{display:flex;gap:3px;justify-content:center}.kb-key{display:flex;flex-direction:column;align-items:center;justify-content:center;width:28px;height:34px;border-radius:4px;font-size:.7rem;font-weight:600;cursor:default;-webkit-user-select:none;user-select:none;transition:background .1s,box-shadow .1s}.kb-key small{font-size:.55rem;font-weight:400;opacity:.7}.kb-white{background:#2a2a4a;color:#e0e0e0;border:1px solid #3a3a5a}.kb-black{background:#1a1a2e;color:#a0a0c0;border:1px solid #2a2a4a}.kb-spacer{width:28px}.kb-active{background:#c90!important;color:#fff!important;border-color:#fc0!important;box-shadow:0 0 8px #ffcc0080}.chord-label{text-align:center;font-size:.85rem;font-weight:600;color:#fc0;min-height:1.2em}.keyboard-octave{display:flex;align-items:center;justify-content:space-between;gap:8px}.kb-oct-btn{flex:0 0 auto;padding:4px 8px;font-size:.75rem}.kb-octave-label{font-size:.85rem;color:#a0a0c0}.kb-octave-label strong{color:#fff}.chord-info{text-align:center;padding:8px;background:#1a1a34;border-radius:6px;border:1px solid #2a2a4a}.chord-name{font-size:.9rem;font-weight:600;color:#fc0}.footer{margin-top:auto;padding-top:16px;border-top:1px solid #2a2a4a;display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:#666}.footer a{color:#6a6aff;text-decoration:none}.footer a:hover{text-decoration:underline}.piano-spiral-page{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden}.piano-spiral-page .three-canvas{flex:1;min-height:0}.animation-controls{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#141428;border-top:1px solid #2a2a4a}.animation-buttons{display:flex;gap:8px;flex-shrink:0}.animation-buttons .btn{flex:0 0 auto;min-width:70px}.animation-slider{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:#2a2a4a;border-radius:3px;outline:none;cursor:pointer}.animation-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#6a6aff;cursor:pointer}.animation-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#6a6aff;border:none;cursor:pointer}.animation-progress{font-size:.8rem;color:#a0a0c0;min-width:36px;text-align:right}.spiral-expand-btn{position:absolute;top:8px;right:8px;z-index:10;width:32px;height:32px;border:none;border-radius:6px;background:#141428b3;color:#a0a0c0;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.spiral-expand-btn:hover{background:#282850e6;color:#fff}.spiral-modal-overlay{position:fixed;inset:0;background:#000000d9;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.spiral-modal-content{width:95vw;height:90vh;display:grid;grid-template-columns:1fr 320px;background:#0d0d1a;border-radius:8px;overflow:hidden;position:relative}.spiral-modal-close{position:absolute;top:12px;right:332px;z-index:10;width:36px;height:36px;border:none;border-radius:50%;background:#141428cc;color:#e0e0e0;font-size:1.4rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.spiral-modal-close:hover{background:#3c3c64e6}.lesson-page{flex:1;overflow-y:auto;padding:40px 20px}.lesson-content{max-width:720px;margin:0 auto;line-height:1.7}.lesson-content h1{font-size:2rem;font-weight:700;color:#fff;margin-bottom:24px}.lesson-content h2{font-size:1.4rem;font-weight:600;color:#fff;margin-top:40px;margin-bottom:16px}.lesson-content h3{font-size:1.1rem;font-weight:600;color:#c0c0e0;margin-top:28px;margin-bottom:12px}.lesson-content p{margin-bottom:16px;color:#c0c0d0}.lesson-content strong{color:#fff}.lesson-content code{background:#1e1e3a;padding:2px 6px;border-radius:4px;font-size:.9em}.spiral-illustration{display:flex;flex-direction:column;align-items:center;margin:24px 0}.spiral-illustration .three-canvas{border-radius:8px;border:1px solid #2a2a4a;overflow:hidden}.spiral-caption{margin-top:8px;font-size:.85rem;color:#888;text-align:center}@media(max-width:800px){.spiral-explore-page{grid-template-columns:1fr;grid-template-rows:1fr auto}.sidebar{border-left:none;border-top:1px solid #2a2a4a;max-height:40vh}.nav-header{gap:12px;padding:0 12px}}
