body{background:#0e0e14;margin:0;padding:0}.tool-site-header{background:#f5f5f4}.tool-site-header header{margin-top:0;padding-top:2rem;margin-bottom:0;padding-bottom:2rem}.tone-explorer{--bg-primary: #0e0e14;--bg-secondary: #16161f;--bg-tertiary: #1e1e2a;--bg-elevated: #262636;--text-primary: #e4e4f0;--text-secondary: #8888a0;--text-muted: #555568;--border: #2a2a3c;--accent: #7c6cf0;--key-white: #c8c8d4;--key-white-hover: #dddde8;--key-black: #1a1a28;--key-black-hover: #2a2a3a;--key-selected: #7c6cf0;--key-hovered-white: rgba(124, 108, 240, .45);--key-hovered-black: #4a3fa0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text-primary);max-width:840px;margin:0 auto;padding:24px 20px 60px;line-height:1.5}.tone-explorer *,.tone-explorer *:before,.tone-explorer *:after{box-sizing:border-box}.tone-explorer section{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px}.tone-explorer section h2{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-muted);margin-bottom:12px}.tone-explorer .piano-wrapper{display:flex;flex-direction:column;align-items:center}.tone-explorer .piano{position:relative;display:flex;height:130px;width:100%;max-width:520px;user-select:none}.tone-explorer .piano-key{position:relative;cursor:pointer;transition:background .12s,box-shadow .12s;display:flex;align-items:flex-end;justify-content:center;padding-bottom:10px;font-size:11px;font-weight:600}.tone-explorer .piano-key.white{flex:1;background:var(--key-white);border:1px solid #999;border-radius:0 0 6px 6px;color:#666;z-index:1}.tone-explorer .piano-key.white:hover{background:var(--key-white-hover)}.tone-explorer .piano-key.black{position:absolute;width:8.5%;height:58%;background:var(--key-black);border:1px solid #111;border-radius:0 0 4px 4px;z-index:2;color:#666;font-size:10px;padding-bottom:6px}.tone-explorer .piano-key.black:hover{background:var(--key-black-hover)}.tone-explorer .piano-key.selected{background:var(--key-selected)!important;box-shadow:0 0 16px var(--key-selected);color:#fff!important}.tone-explorer .piano-key.white.hovered:not(.selected){background:var(--key-hovered-white)!important;box-shadow:0 0 10px var(--key-hovered-white)}.tone-explorer .piano-key.black.hovered:not(.selected){background:var(--key-hovered-black)!important;box-shadow:0 0 10px var(--key-hovered-black)}.tone-explorer .piano-key.hint:not(.selected):not(.hovered){box-shadow:inset 0 0 0 3px #7c6cf080}.tone-explorer .piano-key.white.hint:not(.selected):not(.hovered){background:#b8b8e0}.tone-explorer .piano-key.black.hint:not(.selected):not(.hovered){background:#2e2e48}.tone-explorer .piano-instruction{text-align:center;font-size:13px;color:var(--text-muted);margin-top:12px}.tone-explorer .controls{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.tone-explorer .btn{padding:8px 18px;border-radius:8px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit}.tone-explorer .btn:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--text-muted)}.tone-explorer .btn:disabled{opacity:.3;cursor:not-allowed}.tone-explorer .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.tone-explorer .btn.primary:hover:not(:disabled){filter:brightness(1.15)}.tone-explorer .filter-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.tone-explorer .filter-row:last-child{margin-bottom:0}.tone-explorer .filter-row label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);display:flex;align-items:center;margin-right:4px;min-width:50px}.tone-explorer .pill{display:none;align-items:center;padding:5px 14px;border-radius:20px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-secondary);font-size:13px;font-weight:500;transition:all .2s ease;user-select:none;cursor:pointer}.tone-explorer .pill.matched{display:inline-flex;border-color:var(--pill-color, var(--accent));background:var(--pill-color, var(--accent));color:#fff}.tone-explorer .pill.preview{display:inline-flex;opacity:.5;border-color:var(--pill-color, var(--accent));border-style:dashed;background:transparent;color:var(--text-secondary)}.tone-explorer .pill.preview .dot{opacity:.5}.tone-explorer .pill .dot{width:8px;height:8px;border-radius:50%;margin-right:6px;background:var(--pill-color, var(--accent))}.tone-explorer .pill.matched .dot{background:#ffffffb3}.tone-explorer .pill .root-hint{font-size:10px;margin-left:6px;opacity:.8}.tone-explorer .match-summary{font-size:12px;color:var(--text-muted);margin-top:8px;min-height:18px}.tone-explorer .info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tone-explorer .info-item{background:var(--bg-tertiary);border-radius:8px;padding:12px}.tone-explorer .info-item .label{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-bottom:4px}.tone-explorer .info-item .value{font-size:14px;font-weight:600}.tone-explorer .interval-tag{display:inline-block;padding:2px 8px;border-radius:4px;background:var(--bg-elevated);font-size:12px;margin:2px;color:var(--text-secondary)}.tone-explorer .scale-match-tag{display:inline-block;padding:3px 10px;border-radius:4px;background:var(--bg-elevated);font-size:12px;margin:2px;color:var(--text-secondary)}.tone-explorer .scale-match-tag .root-label{color:var(--accent);font-weight:600}.tone-explorer .empty-state{text-align:center;color:var(--text-muted);font-size:13px;padding:12px}@media (max-width: 600px){.tone-explorer{padding:16px 12px 40px}.tone-explorer .piano{height:100px}.tone-explorer .info-grid{grid-template-columns:1fr}}
