:root{--bg: #0f1119;--surface: #181b27;--border: #2a2f40;--text: #e2e8f0;--muted: #94a3b8;--accent: #22c55e;--orb: #f59e0b}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;padding:16px}.wrap{width:100%;max-width:min(960px,calc(100vw - 32px));margin:0 auto}h1{font-size:1.2rem;margin:0 0 8px}p.lead{margin:0 0 16px;color:var(--muted);font-size:.92rem}.panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px}.panel__h{font-size:1rem;margin:0 0 8px;color:var(--muted);font-weight:600}.panel__hint{margin:0 0 12px;font-size:.88rem;color:var(--muted)}.chord-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}@media(max-width:420px){.chord-type-grid{grid-template-columns:1fr}}.chord-type-row{display:flex;align-items:flex-start;gap:8px;font-size:.86rem;color:var(--text);cursor:pointer}.chord-type-row input{margin-top:3px;flex-shrink:0}.type-actions{display:flex;gap:8px;margin-top:12px}.btn-small{padding:6px 10px;font-size:.82rem}.chord-slot--sm .chord-slot__orb{width:44px;height:44px}.chord-slot--sm .chord-slot__label{font-size:1.1rem}.chord-title{text-align:center;font-size:2rem;font-weight:700;letter-spacing:.04em;margin:8px 0 20px}.slots{display:flex;justify-content:center;gap:28px;flex-wrap:wrap;margin:12px 0 8px}.chord-slot{width:88px;min-height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.chord-slot__orb{width:56px;height:56px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#fde68a,var(--orb));box-shadow:0 4px 14px #f59e0b59}.chord-slot__label{font-size:1.35rem;font-weight:600;color:var(--accent)}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:10px}label{display:grid;gap:4px;font-size:.85rem;color:var(--muted)}select{min-width:120px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:#0f1419;color:var(--text)}button{padding:10px 14px;border-radius:8px;border:1px solid var(--border);background:#252a36;color:var(--text);cursor:pointer;font-size:.95rem}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:#ca8a04;border-color:#eab308;color:#0f1119;font-weight:600}.input-meter{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:.85rem;color:var(--muted)}.input-meter__bar{flex:1;height:8px;background:#0f1419;border-radius:4px;overflow:hidden;border:1px solid var(--border)}.input-meter__fill{height:100%;width:0%;background:linear-gradient(90deg,#22c55e,#86efac);transition:width .06s linear}.status{margin-top:10px;font-size:.9rem;color:var(--muted)}.status.ok{color:var(--accent)}.detected{margin-top:6px;font-size:.88rem;color:var(--muted)}.back{display:inline-block;margin-bottom:14px;color:#93c5fd;text-decoration:none;font-size:.9rem}.back:hover{text-decoration:underline}.wrap.wrap--neck-wide{max-width:min(1400px,calc(100vw - 24px))}.neck-panel{overflow-x:auto;padding-bottom:8px}@media(max-width:640px){.neck-panel{overflow-x:hidden;overflow-y:auto;max-height:min(78vh,720px)}.neck-svg-wrap{min-width:0;width:100%;max-width:none}.neck-svg-wrap--vertical{width:auto;max-width:min(230px,calc(100% - 8px));margin-inline:auto;overflow:visible}.neck-svg--vertical{display:block;width:100%;height:auto;overflow:visible}}.neck-svg-wrap{min-width:0;width:100%;background:#f8fafc;border-radius:10px;border:1px solid #cbd5e1;padding:8px;box-sizing:border-box}@media(min-width:641px){.neck-svg-wrap{min-width:640px;width:auto}}.neck-svg{display:block;width:100%;height:auto}.neck-controls{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.neck-controls label{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--muted)}.neck-controls select,.neck-controls input[type=text]{min-width:140px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:.9rem}.neck-controls input[type=text]{min-width:min(320px,100%);flex:1}.neck-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.neck-legend{margin:10px 0 0;font-size:.85rem;color:var(--muted);line-height:1.6}.neck-legend-title{color:var(--text);font-weight:600}.neck-legend-hint{color:var(--muted)}.neck-voicing-chip{display:inline-block;margin:0;padding:3px 10px 3px 22px;border-radius:999px;font-size:.8rem;color:#0f172a;background:#f1f5f9;border:1px solid #cbd5e1;position:relative}button.neck-voicing-chip{cursor:pointer;font-family:inherit}button.neck-voicing-chip:hover:not(:disabled){border-color:var(--chip);background:#fff}.neck-voicing-chip--active{border-color:var(--chip);box-shadow:0 0 0 2px color-mix(in srgb,var(--chip) 40%,transparent);font-weight:600}.neck-voicing-chip:before{content:"";position:absolute;left:8px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;background:var(--chip)}.neck-legend-chips{display:flex;flex-wrap:wrap;gap:6px 8px;margin-top:8px}.neck-legend-rows{display:flex;flex-direction:column;gap:8px;margin-top:8px}.neck-legend-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.neck-legend-set{flex:0 0 108px;font-size:.78rem;font-weight:600;color:var(--text)}.neck-focus-clear{margin-left:6px;padding:2px 8px;font-size:.78rem;font-family:inherit;color:var(--accent);background:transparent;border:1px solid var(--border);border-radius:6px;cursor:pointer}.neck-focus-clear:hover{border-color:var(--accent)}.neck-voicing-chip--off{opacity:.45;color:var(--muted)}.neck-iv-key{display:inline-flex;gap:10px;margin-left:8px;font-size:.78rem;color:var(--muted)}.neck-iv-i{color:#2563eb;font-weight:600}.neck-iv-v{color:#ea580c;font-weight:600}.neck-iv-shared{color:#7c3aed;font-weight:600}.neck-voicing-chip--iv{--chip: #2563eb;padding-left:10px}.neck-voicing-chip--iv:before{display:none}.neck-voicing-chip--iv .neck-iv-i,.neck-voicing-chip--iv .neck-iv-v{margin-right:6px}.neck-shape-hull{cursor:pointer}.neck-status{margin:8px 0 0;font-size:.88rem;color:var(--accent)}.neck-print-lead{margin:0 0 12px;font-size:.85rem;color:var(--muted)}.neck-print-actions{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.neck-print-actions label{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--muted)}.neck-print-actions select{min-width:260px}.note-locate{--pick-r: 18px;--note-locate-hm-off: rgba(255, 255, 255, .04);--note-locate-hm-new: rgba(148, 163, 184, .25);--note-locate-hm-ok: #16a34a;--note-locate-hm-good: #4ade80;--note-locate-hm-mid: #fbbf24;--note-locate-hm-slow: #f97316;--note-locate-hm-bad: #ef4444}.note-locate h1{font-size:1.15rem;margin:0 0 4px}.note-locate .lead{margin:0 0 12px;font-size:.88rem;color:var(--muted)}.note-locate-header{margin-bottom:12px}.note-locate-header h1{flex:1;min-width:0}.note-locate-config-btn{display:none;flex-shrink:0;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:#ffffff0a;color:var(--text);font-size:1.1rem;line-height:1;cursor:pointer}.note-locate-config{border:1px solid var(--border);border-radius:12px;padding:0;margin:0 0 12px;width:100%;max-width:none;background:var(--surface);color:var(--text)}.note-locate-config::backdrop{background:#0000008c}.note-locate-config__shell{padding:14px 16px}.note-locate-config__head{display:none;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.note-locate-config__title{margin:0;font-size:1rem}.note-locate-config__close{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff0f;color:var(--text);font-size:1.25rem;line-height:1;cursor:pointer}.note-locate-config__foot{display:none;margin-top:14px}.note-locate-config__foot .primary{width:100%;border:none;border-radius:8px;padding:10px 14px;background:#f59e0b;color:#0f1119;font-weight:700;font-size:.95rem;cursor:pointer}.note-locate-game{margin-bottom:12px}.note-locate .panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:12px}.note-locate-challenge{font-size:clamp(1.6rem,5vw,2.2rem);font-weight:800;margin:0;letter-spacing:-.02em}.note-locate-meta{margin:4px 0 0;color:var(--muted);font-size:.9rem}.note-locate-score{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:.9rem}.note-locate-score strong{color:#fbbf24}.note-locate-status{margin:10px 0 0;min-height:1.4em;font-size:.95rem}.note-locate-status--ok{color:#4ade80;font-weight:600}.note-locate-status--bad{color:#f87171}.note-locate-board-wrap{position:relative;margin-top:12px;width:100%}.note-locate-board-wrap--paused{opacity:.55;pointer-events:none}.note-locate-board-wrap--paused:after{content:"Pausado";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:1.4rem;font-weight:800;color:#fbbf24;background:#0f111973;z-index:5;pointer-events:none}.note-locate-board-wrap .neck-svg-wrap{position:relative;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.note-locate-board-wrap .neck-svg-wrap svg{display:block;width:100%;max-width:100%;height:auto}.note-locate-overlay{position:absolute;top:0;left:0;pointer-events:none;z-index:2}.note-locate-overlay>*{pointer-events:auto}.note-locate-pick{position:absolute;width:calc(var(--pick-r) * 2);height:calc(var(--pick-r) * 2);margin-left:calc(var(--pick-r) * -1);margin-top:calc(var(--pick-r) * -1);border-radius:50%;border:2px dashed transparent;background:transparent;cursor:pointer;transition:border-color .12s,background .12s}.note-locate-pick--active{border-color:#f59e0b73;background:#f59e0b14}.note-locate-pick--active:hover{border-color:#f59e0bd9;background:#f59e0b2e}.note-locate-pick--selected{border-color:#fbbf24;background:#fbbf2459;border-style:solid}.note-locate-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.note-locate-actions button{border:1px solid var(--border);background:#ffffff0a;color:var(--text);border-radius:8px;padding:8px 14px;font-size:.9rem;cursor:pointer}.note-locate-actions button.primary{background:#f59e0b;border-color:#d97706;color:#0f1119;font-weight:700}.note-locate-actions button:disabled{opacity:.45;cursor:not-allowed}.note-locate-actions button.note-locate-actions--resume{background:#4ade80;border-color:#22c55e;color:#0f1119;font-weight:700}.note-locate-filters{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end}.note-locate-filters label{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--muted)}.note-locate-filters select{min-width:120px;padding:6px 8px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}.note-locate-filters__label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:4px}.note-locate-chips{display:flex;flex-wrap:wrap;gap:8px}.note-locate-chip{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;cursor:pointer}.note-locate-board-wrap.note-locate-board-wrap--success{animation:note-locate-pulse .45s ease}@keyframes note-locate-pulse{0%,to{box-shadow:none}50%{box-shadow:0 0 0 3px #4ade8073}}.note-locate-board-wrap.note-locate-board-wrap--fail{animation:note-locate-shake .35s ease}@keyframes note-locate-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media(min-width:641px){.note-locate-config{display:block;position:static;inset:auto;height:auto;max-height:none;overflow:visible}.note-locate-config::backdrop{display:none}.note-locate-board-wrap .neck-svg-wrap{min-width:0;width:100%}}@media(max-width:640px){body:has(.note-locate){padding:0;overflow:hidden;height:100dvh}.note-locate.wrap{max-width:100%;width:100%;height:100dvh;max-height:100dvh;margin:0;padding:max(8px,env(safe-area-inset-top)) 8px max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}.note-locate-header{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:6px}.note-locate-header .back{margin:0;font-size:.82rem}.note-locate-header h1{font-size:.95rem;margin:0}.note-locate-header .lead{display:none}.note-locate-config-btn{display:inline-flex;align-items:center;justify-content:center;margin-left:auto}.note-locate-config:not([open]){display:none}.note-locate-config[open]{display:flex;flex-direction:column;position:fixed;top:0;right:0;bottom:0;left:0;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;border:none;border-radius:0;z-index:200}.note-locate-config__shell{display:flex;flex-direction:column;height:100%;padding:max(12px,env(safe-area-inset-top)) 14px max(12px,env(safe-area-inset-bottom));overflow:auto}.note-locate-config__head,.note-locate-config__foot{display:flex}.note-locate-config__foot{flex-shrink:0;padding-top:8px}.note-locate-filters{flex:1;align-content:flex-start}.note-locate-game.panel{flex:1;min-height:0;display:flex;flex-direction:column;margin-bottom:0;padding:8px 0 10px;overflow:hidden;border-radius:0;border-left:none;border-right:none}.note-locate-challenge,.note-locate-meta,.note-locate-score,.note-locate-status,.note-locate-actions{padding-inline:10px}.note-locate-challenge{font-size:1.35rem;line-height:1.15}.note-locate-meta{font-size:.78rem;margin-top:2px}.note-locate-score{margin-top:4px;gap:12px;font-size:.8rem}.note-locate-status{margin:4px 0 0;font-size:.8rem;min-height:1.15em}.note-locate-board-wrap{flex:1 1 0;min-height:160px;margin-top:4px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;width:100%;overflow:hidden}.note-locate-board-wrap.neck-panel{overflow:hidden;max-height:none;padding-bottom:0}.note-locate-board-wrap .neck-svg-wrap,.note-locate-board-wrap .neck-svg-wrap--vertical{flex:1 1 0;width:100%;max-width:100%;min-width:0;min-height:0;height:100%;max-height:100%;position:relative;display:flex;align-items:stretch;justify-content:stretch;margin-inline:0;padding:0;border-radius:0;border-left:none;border-right:none;overflow:hidden}.note-locate-board-wrap .neck-svg-wrap .neck-svg,.note-locate-board-wrap .neck-svg-wrap svg{display:block;flex:1 1 auto;width:100%;height:100%;max-width:100%;max-height:100%}.note-locate{--pick-r: 14px}.note-locate-actions{flex-shrink:0;margin-top:6px;justify-content:center;gap:8px}.note-locate-actions button{padding:7px 12px;font-size:.85rem}}.note-locate-mastery-config{width:100%;margin-top:4px}.note-locate-mastery-hint{margin:0 0 8px;font-size:.82rem;color:var(--muted)}.note-locate-reset-mastery{border:1px solid var(--border);background:#ef444414;color:#fca5a5;border-radius:8px;padding:6px 12px;font-size:.82rem;cursor:pointer}.note-locate-mastery-progress{margin-top:8px}.note-locate-mastery-progress__head{display:flex;flex-wrap:wrap;gap:12px 18px;font-size:.85rem;margin-bottom:6px}.note-locate-mastery-progress__head strong{color:#fbbf24}.note-locate-mastery-bar{height:8px;border-radius:999px;background:#ffffff14;overflow:hidden}.note-locate-mastery-bar__fill{height:100%;width:0%;background:linear-gradient(90deg,#f59e0b,#4ade80);border-radius:999px;transition:width .35s ease}.note-locate-heatmap-btn{margin-left:auto}.note-locate-heatmap{margin-top:12px}.note-locate-heatmap__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.note-locate-heatmap__head h2{margin:0;font-size:1rem}.note-locate-heatmap__head button{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff0f;color:var(--text);font-size:1.25rem;cursor:pointer}.note-locate-heatmap__legend{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:0 0 10px;font-size:.75rem;color:var(--muted)}.note-locate-heatmap__swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:middle}.note-locate-heatmap__swatch--ok{background:var(--note-locate-hm-ok)}.note-locate-heatmap__swatch--good{background:var(--note-locate-hm-good)}.note-locate-heatmap__swatch--mid{background:var(--note-locate-hm-mid)}.note-locate-heatmap__swatch--slow{background:var(--note-locate-hm-slow)}.note-locate-heatmap__swatch--bad{background:var(--note-locate-hm-bad)}.note-locate-heatmap__grid{display:grid;grid-template-columns:52px repeat(12,minmax(0,1fr));gap:3px;font-size:.68rem}.note-locate-heatmap__corner{grid-column:1}.note-locate-heatmap__col-head{text-align:center;color:var(--muted);font-weight:600;padding:2px 0}.note-locate-heatmap__row-head{display:flex;align-items:center;color:var(--muted);font-weight:600;padding-right:4px}.note-locate-heatmap__cell{aspect-ratio:1;border-radius:4px;min-height:22px;border:1px solid rgba(255,255,255,.06);cursor:default}.note-locate-heatmap__cell--current{box-shadow:0 0 0 2px #fbbf24}@media(max-width:640px){.note-locate-heatmap__grid{grid-template-columns:40px repeat(12,minmax(0,1fr));font-size:.58rem;gap:2px}.note-locate-heatmap__cell{min-height:16px}.note-locate-heatmap-btn{margin-left:0}}
