:root{--page-max: 820px;--bg: #fcfaf6;--surface: #fffcf0;--soft: #f6f2e6;--text: #3a3a3a;--muted: #66635a;--line: #e8e3d5;--line-dark: #d5cebd;--brand: #2f8cf0;--brand-dark: #1458a8;--brand-ink: #ffffff;--brand-soft: #d6e9ff;--blob: #7db6f5;--easy: #3a7204;--easy-soft: #dcf5bd;--easy-edge: #6cbb15;--medium: #8a6500;--medium-soft: #fff4cc;--medium-edge: #f0c22e;--tricky: #b81d1d;--tricky-soft: #ffdfe0;--tricky-edge: #f07b7b;--yellow: #ffc800;--red: #c62f35;--raised: #ffffff;--brand-deep: #1458a8;--brand-edge: #9cc8f7;--dot: #1458a8;--diagram-line: #948e80;--diagram-muted: #8a8476;--rest: #8f8a7c;--key-top: #fffdf6;--key-bottom: #f2ede0;--placeholder: #77736a;--easy-wash: #f3fde9;--warm: #ffe3c7;--hot: #b35200;--shadow: 0 1px 2px rgba(60, 50, 30, .05), 0 10px 28px -14px rgba(20, 40, 80, .18);--font: "Nunito", system-ui, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #12151c;--surface: #1b2029;--soft: #232a35;--raised: #262d39;--text: #eef1f6;--muted: #a3acba;--line: #2e3644;--line-dark: #3b4556;--brand: #2f8cf0;--brand-dark: #8cc2ff;--brand-deep: #1458a8;--brand-soft: #1d3a5f;--brand-edge: #2e5d96;--blob: #1d4a80;--dot: #2a6fcf;--diagram-line: #6b7686;--diagram-muted: #7d8899;--rest: #6f7a8b;--key-top: #2a3240;--key-bottom: #222935;--placeholder: #94a0b0;--easy: #9be06a;--easy-soft: #1f3a14;--easy-edge: #5fae2a;--easy-wash: #18301c;--medium: #f3cf6b;--medium-soft: #3a3110;--medium-edge: #b8901c;--tricky: #ff9a9a;--tricky-soft: #45191b;--tricky-edge: #c25555;--red: #ff7a7a;--warm: #4a3220;--hot: #ffa64d;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 12px 30px -14px rgba(0, 0, 0, .6);color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.4 0 0 0 0 0.3 0 0 0 0.07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");min-height:100vh;overflow-x:clip;color:var(--text);font-family:var(--font);font-weight:600;-webkit-font-smoothing:antialiased}a{color:inherit}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}.btn,.song-card,.chip,.back{border:2px solid var(--line);border-bottom-width:4px;transition:transform .08s,border-bottom-width .08s,margin .08s}.btn:active:not(:disabled),.song-card:active,.chip:active,.back:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.home{max-width:var(--page-max);margin:0 auto;padding:40px 16px 64px}.songs{list-style:none;margin:0;padding:0;display:grid;gap:10px}.song-card{display:grid;gap:4px;padding:14px 18px;background:var(--surface);border-radius:16px;text-decoration:none}.song-card:hover{background:var(--soft)}.song-card__title{font-size:21px;font-weight:900;line-height:1.15}.song-card__artist{display:flex;align-items:center;flex-wrap:wrap;gap:8px;color:var(--muted)}.song-card__chords{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.level,.badge,.mini-chord{font-size:13px;font-weight:800;padding:4px 10px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}.level--1{background:var(--easy-soft);color:var(--easy)}.level--2{background:var(--medium-soft);color:var(--medium)}.level--3{background:var(--tricky-soft);color:var(--tricky)}.badge{background:var(--brand-soft);color:var(--brand-dark)}.mini-chord{text-transform:none;letter-spacing:0;border:2px solid var(--line);color:var(--text)}.player{max-width:var(--page-max);margin:0 auto;padding:16px 16px 48px;display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.player__head{display:flex;align-items:center;gap:14px}.tool .player__head,.player--tool .player__head{align-items:flex-start}.player.player--tool{padding-top:40px}h1[tabindex="-1"]:focus{outline:none}.back{display:grid;place-items:center;width:48px;height:48px;flex:none;border-radius:14px;text-decoration:none;font-size:22px;font-weight:900;color:var(--muted)}.player__title{flex:1;min-width:0}.player__title h1{margin:0;font-size:24px;font-weight:900;line-height:1.1}.player__title p{margin:2px 0 0;color:var(--muted)}.stage{display:grid;grid-template-columns:2fr 1fr;gap:16px}.now,.next{position:relative;border-radius:20px;padding:18px;display:grid;align-items:center;justify-items:center;border:2px solid var(--line);border-bottom-width:4px}.now{min-height:420px;background:var(--surface);border-color:var(--brand);border-bottom-color:var(--brand-deep);border-width:3px 3px 6px}.next{background:var(--surface)}.now.is-ended{background:var(--brand-soft);border-color:var(--brand);border-bottom-color:var(--brand-deep)}.now{container-type:inline-size;--name-cap: 140px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"label diagram" "name diagram" "strum strum";column-gap:4%}.next{grid-template-rows:auto auto 1fr;grid-template-areas:"label" "name" "diagram";align-content:start}.now.is-ended{grid-template-areas:"label label" "done done" "done done"}.stage__label{grid-area:label}.chord-name{grid-area:name}.diagram,.diagram-button{grid-area:diagram}.strum-wrap{grid-area:strum}.now__done{grid-area:done}.now .chord-name{justify-self:start;max-width:100%}.now .diagram-button{justify-self:center}.stage__label{justify-self:start;font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.now .stage__label,.now.is-ended .stage__label{color:var(--brand-dark)}.chord-name{font-weight:900;line-height:1}.chord-name--now{font-size:min(var(--name-cap),30cqi);color:var(--text)}.chord-name--now[data-len="2"]{font-size:min(var(--name-cap),25cqi)}.chord-name--now[data-len="3"]{font-size:min(var(--name-cap),19cqi)}.chord-name--now[data-len="4"]{font-size:min(var(--name-cap),15.5cqi)}.chord-name--now[data-len="5"]{font-size:min(var(--name-cap),13cqi)}.chord-name--now[data-len="6"]{font-size:min(var(--name-cap),11cqi)}.chord-name--next{font-size:clamp(36px,5vw,64px);margin:20px 0 8px;color:var(--muted)}.chord-name.is-end{color:var(--muted)}.diagram{display:block;overflow:visible}.diagram--now{width:clamp(180px,28vw,340px)}.diagram--next{width:clamp(80px,11vw,130px)}.diagram__fret,.diagram__string{stroke:var(--diagram-line);stroke-width:1.2}.diagram__nut{fill:var(--text)}.diagram__dot{fill:var(--dot)}.diagram--next .diagram__dot{fill:var(--diagram-muted)}.diagram__finger{fill:#fff;font-size:8px;font-weight:900;text-anchor:middle;font-family:var(--font)}.diagram__open{fill:none;stroke:var(--text);stroke-width:1.4}.diagram__mute{fill:var(--muted);font-size:10px;font-weight:800;text-anchor:middle;font-family:var(--font)}.diagram__base{fill:var(--muted);font-size:8px;font-weight:800;font-family:var(--font)}.strum-wrap{position:relative;width:100%;min-height:84px;display:grid;place-items:center}.strum{display:flex;justify-content:center;gap:8px;width:100%}.strum.is-hidden{visibility:hidden}.strum__slot{flex:1 1 0;max-width:72px;height:72px;display:grid;place-items:center;border-radius:14px;background:var(--surface);border:2px solid var(--line);border-bottom-width:4px;font-size:40px;font-weight:900;color:var(--text);transition:background .05s,transform .05s}.strum--pick .strum__slot{font-size:30px}.strum__slot.is-rest{color:var(--rest)}.strum__slot.is-chuck{color:var(--muted)}.strum__pm{position:absolute;bottom:3px;left:0;right:0;font-size:9px;font-weight:900;line-height:1;letter-spacing:.04em;text-align:center}.strum__slot.is-done{background:var(--brand-soft);border-color:var(--brand-edge);color:var(--brand-dark)}.strum__slot.is-on{background:var(--brand);border-color:var(--brand-deep);color:var(--brand-ink);transform:scale(1.1)}.count{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:72px;font-weight:900;color:var(--brand)}.now__done{flex:1;display:grid;place-items:center;align-content:center;gap:18px;font-size:40px;font-weight:900;color:var(--brand-dark)}.now__done p{margin:0}.controls{display:flex;justify-content:center;align-items:flex-start;gap:12px;height:80px}.btn{cursor:pointer;background:var(--surface);color:var(--muted)}.btn:disabled{opacity:.4;cursor:default}.key{height:72px;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;border-radius:12px;background:linear-gradient(var(--key-top),var(--key-bottom));border:2px solid var(--line-dark);border-bottom-width:7px;color:var(--muted);font-size:30px;font-weight:900;box-shadow:0 2px #0000000a,inset 0 -2px #00000008;transition:transform .06s,border-bottom-width .06s,margin .06s;-webkit-user-select:none;user-select:none}.key:active:not(:disabled),.key.is-pressed:not(:disabled){transform:translateY(5px);border-bottom-width:2px;margin-bottom:5px}.key:disabled{opacity:.4;cursor:default}.key--arrow{width:72px;flex:none}.key--space{flex:0 1 340px;min-width:0;font-size:18px;text-transform:uppercase;letter-spacing:.08em;color:var(--brand-dark)}.key--space svg{width:22px;height:22px;fill:currentColor}.key--space.is-playing{color:var(--red)}.btn--primary{background:var(--brand);border-color:var(--brand-deep);color:#fff}.btn--primary{padding:14px 28px;border-radius:16px;font-size:17px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.btn--toggle{padding:8px 16px;border-radius:14px;font-weight:800;text-transform:uppercase;font-size:14px;letter-spacing:.05em}.btn--toggle.is-on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}.sections{position:relative;display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:2px 16px 8px;margin:0 -16px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent);mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent)}.sections::-webkit-scrollbar{display:none}.sections .chip{flex:none;scroll-snap-align:center;white-space:nowrap}.chip{padding:8px 14px;border-radius:14px;background:var(--surface);color:var(--muted);font-weight:800;cursor:pointer}.chip.is-current{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}.hint{font-size:14px}.missing{padding:40px 16px;text-align:center}@media (orientation: portrait){.stage{grid-template-columns:1fr}.now,.next{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:14px 10px 14px 16px;grid-template-rows:auto auto 1fr;grid-template-areas:"label diagram" "name diagram" "strum diagram";column-gap:12px;align-content:center;min-height:0}.now.is-ended{grid-template-areas:"label label" "done done" "done done"}.now .chord-name,.next .chord-name{justify-self:start}.now .diagram-button{justify-self:stretch}.next .diagram{justify-self:center}.now{--name-cap: 120px}.chord-name--now{margin:6px 0 12px}.chord-name--next{margin:6px 0 0}.diagram--now{width:100%;max-height:52vh}.diagram--next{width:70%;max-height:22vh}.strum-wrap{align-self:start;min-height:0}.strum{flex-wrap:wrap;justify-content:flex-start}}@media (orientation: portrait) and (max-width: 640px){.strum{gap:5px}.strum__slot{flex:0 0 calc(25% - 4px);height:44px;font-size:24px;border-radius:10px;border-bottom-width:3px}.strum--pick .strum__slot{font-size:20px}.count{font-size:56px}}@media (orientation: landscape){.player{padding-top:12px;gap:14px}.player>.sections{order:1}.player>.controls~*{order:2}.player .player__nav{display:flex;gap:8px}.stage{height:calc(100dvh - 190px);min-height:170px}.now,.next{min-height:0;overflow:hidden}.now{--name-cap: 22vh}.next{grid-template-rows:auto auto minmax(0,1fr)}.diagram-button{height:100%;min-height:0}.diagram--now,.diagram--next{height:100%;width:auto;max-width:100%;aspect-ratio:100 / 120;min-height:0}.diagram--now{padding:8px 0}.diagram--next{padding:6px 0 0}.chord-name--next{font-size:min(10vh,6vw);margin:10px 0 0}.strum-wrap{min-height:0}.strum__slot{height:min(72px,11vh);font-size:min(40px,6vh)}.strum--pick .strum__slot{font-size:min(30px,5vh)}}@media (orientation: landscape) and (max-height: 500px){.player{padding:8px 12px 32px;gap:8px}.player__head h1{font-size:18px}.back,.player .player__nav .back,.player .player__nav .player__fav{width:38px;height:38px}.player__pick .level{display:none}.sections{margin:0 -12px;padding-inline:12px}.stage{height:calc(100dvh - 130px);gap:10px}.now,.next{padding:10px 14px}.diagram--now{padding:4px 0}.strum__slot{height:40px;font-size:22px;border-radius:10px}.key{height:52px}.key--arrow{width:56px}.controls{height:58px}}.blobs{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.blob{position:absolute;fill:var(--blob)}.blob--tr{top:-2px;right:-2px;width:clamp(140px,24vmin,300px)}.blob--bl{bottom:-2px;left:-2px;width:clamp(160px,28vmin,340px)}#root>main{position:relative;z-index:1}.home__title{display:flex;align-items:center;gap:14px}.burst{width:clamp(44px,9vw,64px);flex:none;margin-top:-.3em}.burst line{stroke:var(--brand);stroke-width:7;stroke-linecap:round}.player__head .badge{background:var(--surface);border:2px solid var(--brand)}.next.is-tappable{cursor:pointer;transition:transform .08s,border-bottom-width .08s,margin .08s}.next.is-tappable:hover{border-color:var(--line-dark)}.next.is-tappable:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.filter{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.search{flex:1 1 280px;display:flex;align-items:center;gap:10px;padding:0 8px 0 14px;height:54px;background:var(--surface);border:2px solid var(--line);border-bottom-width:4px;border-radius:16px}.search:focus-within{border-color:var(--brand)}.search svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--muted);stroke-width:2.5;stroke-linecap:round}.search input{flex:1;min-width:0;height:100%;border:0;outline:none;background:none;font:inherit;font-size:18px;font-weight:800;color:var(--text)}.search input::placeholder{color:var(--placeholder);font-weight:700}.search input::-webkit-search-cancel-button{display:none}.search__clear{width:36px;height:36px;flex:none;border:0;border-radius:10px;background:var(--soft);color:var(--muted);font-size:22px;font-weight:900;line-height:1;cursor:pointer}.filter__hint{margin:-4px 0 14px;color:var(--brand-dark);font-weight:800}.empty{padding:32px 16px;text-align:center;color:var(--muted);font-weight:800;background:var(--surface);border:2px dashed var(--line-dark);border-radius:16px}::view-transition-group(*){animation-duration:.38s;animation-timing-function:cubic-bezier(.3,1,.4,1)}:root[data-nav=forward]::view-transition-old(root){animation:.16s ease-in both page-out-up}:root[data-nav=forward]::view-transition-new(root){animation:.38s cubic-bezier(.3,1,.4,1) .1s both page-in-from-below}:root[data-nav=back]::view-transition-old(root){animation:.16s ease-in both page-out-down}:root[data-nav=back]::view-transition-new(root){animation:.38s cubic-bezier(.3,1,.4,1) .1s both page-in-from-above}.blob{transition:transform .6s cubic-bezier(.3,1,.4,1)}.blobs.is-away .blob--tr{transform:translate(105%,-105%)}.blobs.is-away .blob--bl{transform:translate(-105%,105%)}@keyframes page-out-up{to{opacity:0;transform:translateY(-40px)}}@keyframes page-in-from-below{0%{opacity:0;transform:translateY(56px)}}@keyframes page-out-down{to{opacity:0;transform:translateY(40px)}}@keyframes page-in-from-above{0%{opacity:0;transform:translateY(-56px)}}[data-vt=title]{width:fit-content;max-width:100%}[data-vt=artist]{display:inline-block}@media (prefers-reduced-motion: reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}.blob{transition:none}}.diagram-button{display:flex;align-items:center;justify-content:center;min-width:0;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.diagram-button:active .diagram{transform:scale(.97)}.diagram-button .diagram{transition:transform .08s}:focus-visible{outline:3px solid var(--brand-dark);outline-offset:3px}.search:focus-within{outline:none}.search input:focus-visible{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:24px}@media (max-width: 480px){.tools{gap:8px;margin-bottom:18px}}.tick{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--brand);color:#fff;font-weight:900;font-size:14px}.btn--learned{padding:12px 20px;border-radius:16px;font-weight:900;font-size:16px;color:var(--brand-dark);margin:0 auto 14px;display:block}.btn--learned.is-on{background:var(--brand);border-color:var(--brand-deep);color:#fff;animation:learned-pop .4s cubic-bezier(.3,1.6,.5,1)}@keyframes learned-pop{50%{transform:scale(1.08)}}.now__done .btn--learned{margin:0;font-size:15px}.home__foot{margin-top:28px;display:flex;justify-content:center}.btn--toggle:disabled{opacity:.45;cursor:default}.tool{max-width:var(--page-max);margin:0 auto;padding:40px 16px 48px;display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.tool__section h2{margin:0 0 4px;font-size:20px;font-weight:900}.tool__section .hint{margin:0 0 12px;color:var(--muted)}.tool__error{margin:0;padding:12px 16px;border-radius:14px;background:#ffdfe0;color:#b81d1d;font-weight:800}.tuner{display:grid;justify-items:center;gap:14px;padding:24px 18px;background:var(--surface);border:3px solid var(--line);border-bottom-width:6px;border-radius:20px;transition:border-color .2s,background .2s}.tuner.is-in-tune{border-color:var(--easy-edge);background:var(--easy-wash)}.tuner__note{display:grid;justify-items:center;font-size:clamp(72px,22vw,130px);font-weight:900;line-height:1}.tuner__which{font-size:16px;color:var(--muted);font-weight:800;margin-top:6px}.tuner.is-in-tune .tuner__note{color:var(--easy)}.meter{position:relative;width:100%;max-width:460px;height:56px;border-radius:14px;background:linear-gradient(90deg,var(--warm),var(--soft) 40%,var(--soft) 60%,var(--warm));border:2px solid var(--line);overflow:hidden}.meter__zone{position:absolute;left:45%;width:10%;top:0;bottom:0;background:var(--easy-soft)}.meter__needle{position:absolute;left:calc(50% - 3px);top:6px;bottom:6px;width:6px;border-radius:3px;background:var(--brand-dark);transition:transform .12s ease-out}.tuner.is-in-tune .meter__needle{background:var(--easy)}.meter__label{position:absolute;bottom:4px;font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.meter__label--flat{left:8px}.meter__label--sharp{right:8px}.tuner__advice{margin:0;font-size:20px;font-weight:900;min-height:1.3em;text-align:center}.tuner.is-in-tune .tuner__advice{color:var(--easy)}.tuner__detail{margin:0;color:var(--muted);font-size:14px}.tuner__actions{display:flex;justify-content:center}.tuner__actions .key--space{flex:0 1 320px;color:var(--brand-dark)}.string-buttons{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;max-width:460px}.string-button{font-size:20px;font-weight:900;height:52px;padding:0;color:var(--text)}.string-button sub{font-size:11px;color:var(--muted)}.chord-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.chord-card{position:relative;background:var(--surface);border:2px solid var(--line);border-bottom-width:4px;border-radius:16px;transition:border-color .1s}.chord-card:hover{border-color:var(--brand)}.chord-card__link{display:grid;justify-items:center;gap:4px;padding:10px 10px 12px;text-decoration:none;border-radius:14px}.chord-card__link:active .diagram{transform:scale(.96)}.chord-card__name{font-size:22px;font-weight:900;justify-self:start;box-sizing:border-box;max-width:100%;min-height:38px;display:flex;flex-wrap:wrap;align-items:baseline;align-content:center;column-gap:4px;line-height:1.1;padding-right:40px}.chord-card__version{font-size:13px;font-weight:800;color:var(--muted)}.chord-card__link .diagram{grid-area:auto}.diagram--card{width:100%;max-width:120px;transition:transform .08s}.chord-card__count{font-size:13px;font-weight:800;color:var(--brand-dark)}.chord-card__link.is-unused .chord-card__count{color:var(--muted)}.chord-card__hear{position:absolute;top:8px;right:8px;width:38px;height:38px;display:grid;place-items:center;padding:0;border-radius:12px;border:2px solid var(--line);border-bottom-width:3px;background:var(--raised);cursor:pointer}.chord-card__hear:active{transform:translateY(1px);border-bottom-width:2px}.chord-card__hear svg{width:20px;height:20px;fill:var(--brand)}.chord-card__hear .wave{fill:none;stroke:var(--brand);stroke-width:2;stroke-linecap:round}.mini-chord.is-match{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}.trainer-setup{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:10px 12px;padding:14px;background:var(--surface);border:2px solid var(--line);border-radius:16px}.picker{display:grid;gap:4px;font-weight:800;color:var(--muted);font-size:13px}.picker select{width:100%;height:48px;padding:0 12px;border-radius:14px;border:2px solid var(--line);border-bottom-width:4px;background:var(--raised);font:inherit;font-size:18px;font-weight:900;color:var(--text)}@media (max-width: 560px){.trainer-setup{grid-template-columns:1fr 1fr}.trainer-setup>.picker:last-child{grid-column:1 / -1}.segmented button{flex:1}}.segmented{display:flex;height:48px;border:2px solid var(--line);border-bottom-width:4px;border-radius:14px;overflow:hidden}.segmented button{border:0;background:var(--raised);padding:0 14px;font-weight:900;color:var(--muted);cursor:pointer}.segmented button+button{border-left:2px solid var(--line)}.segmented button.is-on{background:var(--brand-soft);color:var(--brand-dark)}.listen-badge{display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding:2px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand-dark);font-size:12px;letter-spacing:.04em;vertical-align:middle}.listen-badge__dot{width:9px;height:9px;border-radius:50%;background:var(--brand);opacity:.45}.listen-badge__dot.is-heard{animation:heard .35s ease-out}@keyframes heard{0%{opacity:1;transform:scale(1.8)}to{opacity:.45;transform:scale(1)}}.segmented--small{height:auto}.segmented--small button{padding:8px 10px;font-size:13px}@media (prefers-reduced-motion: reduce){.listen-badge__dot.is-heard{animation:none;opacity:1}}.segmented.is-disabled{opacity:.45}.report{margin:0;text-align:center;font-size:14px}.report a{color:var(--muted)}.speed-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px 14px;width:min(100%,520px);justify-self:center;padding:8px 10px 8px 16px;border-radius:16px;background:var(--surface);border:2px solid var(--line)}.speed-row__label{font-weight:900;color:var(--muted);font-size:14px;white-space:nowrap}.speed-row__label strong{display:inline-block;min-width:3.2ch;margin-left:4px;color:var(--text);font-size:17px}.speed-row__note{grid-column:1 / -1;font-size:13px;font-weight:800;color:var(--muted)}.speed-row.is-disabled .speed-control{opacity:.45}.song-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:6px}.action-card{display:flex;align-items:center;gap:12px;min-height:76px;padding:12px 14px;border-radius:18px;border:2px solid var(--line);border-bottom-width:5px;background:var(--surface);color:var(--text);font:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:transform .08s,border-bottom-width .08s,margin .08s,background .2s,border-color .2s}.action-card:hover{border-color:var(--brand)}.action-card:active{transform:translateY(3px);border-bottom-width:2px;margin-bottom:3px}.action-card__icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;background:var(--brand-soft);color:var(--brand-dark)}.action-card__icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.action-card__text{display:grid;gap:2px;min-width:0}.action-card__text strong{font-size:16px;font-weight:900;line-height:1.15}.action-card__text span{font-size:13px;font-weight:800;color:var(--muted);line-height:1.2}.action-card--learned.is-on{background:var(--brand);border-color:var(--brand-deep);color:#fff}.action-card--learned.is-on .action-card__icon{background:#fff;color:var(--brand-dark);animation:learned-pop .4s cubic-bezier(.3,1.6,.5,1)}.action-card--learned.is-on .action-card__text span{color:#ffffffe6}.tips{display:grid;gap:10px;padding:16px 18px;border-radius:18px;background:var(--surface);border:2px solid var(--line);line-height:1.5}.tips h2{margin:0;font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-dark)}.tips p{margin:0}.tips__hint{font-weight:800}.tips__link{justify-self:start;padding:8px 14px;border-radius:12px;background:var(--brand-soft);color:var(--brand-dark);font-weight:900;text-decoration:none}.tips__link:hover{text-decoration:underline}.tips__small{font-size:13px;color:var(--muted)}@media (max-width: 480px){.song-actions{grid-template-columns:minmax(0,1fr)}}.badge-medal{flex:none;width:92px;display:grid;justify-items:center;gap:4px;padding:10px 6px;border-radius:14px;border:2px solid var(--line);background:var(--surface);text-align:center}.badge-medal__icon{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--soft);font-size:22px;filter:grayscale(1);opacity:.45}.badge-medal__name{font-size:11px;font-weight:800;color:var(--muted);line-height:1.25}.badge-medal.is-earned{border-color:var(--brand);border-bottom-width:4px}.badge-medal.is-earned .badge-medal__icon{filter:none;opacity:1;background:var(--brand-soft)}.badge-medal.is-earned .badge-medal__name{color:var(--brand-dark)}.toasts{position:fixed;left:50%;bottom:20px;transform:translate(-50%);display:grid;gap:8px;z-index:100;pointer-events:none;width:min(360px,calc(100vw - 32px))}.toast{display:flex;align-items:center;gap:12px;padding:12px 18px;border-radius:16px;background:var(--brand);border:2px solid var(--brand-dark);border-bottom-width:5px;color:#fff;box-shadow:0 10px 30px #1458a840;animation:toast-in .5s cubic-bezier(.3,1.5,.5,1)}.toast__icon{font-size:30px}.toast strong{display:block;font-weight:900}.toast__how{font-size:13px;opacity:.9}@keyframes toast-in{0%{transform:translateY(30px) scale(.9);opacity:0}}@media (prefers-reduced-motion: reduce){.toast{animation:none}}.home__foot{flex-direction:column;align-items:center;gap:12px}.btn--request{padding:10px 18px;border-radius:14px;text-decoration:none;font-weight:900;color:var(--brand-dark)}.sheet__print{margin-left:auto}.sheet__shapes{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:10px}.sheet__shapes li{display:grid;justify-items:center;gap:2px;padding:8px;background:var(--surface);border:2px solid var(--line);border-radius:14px;font-weight:900;font-size:18px}.diagram--sheet{width:70px}.sheet__patterns{list-style:none;margin:0;padding:0;display:grid;gap:6px}.sheet__patterns li{display:grid;gap:4px;justify-items:start}.sheet__pattern-name{color:var(--muted);font-weight:800;font-size:13px}.sheet__pattern{display:inline-flex;gap:4px}.sheet__pattern span{width:28px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--surface);border:2px solid var(--line);font-weight:900}.sheet__sections{list-style:none;margin:0;padding:0;display:grid;gap:12px}.sheet__section h3{margin:0 0 6px;font-size:16px;font-weight:900}.sheet__repeat{color:var(--brand-dark)}.sheet__bars{display:flex;flex-wrap:wrap;gap:6px}.sheet__bar{min-width:64px;padding:8px 10px;border-radius:10px;background:var(--surface);border:2px solid var(--line);font-weight:900;font-size:18px;text-align:center}.sheet__notes{color:var(--muted);line-height:1.5}@media print{body{background:#fff}.blobs,.back,.sheet__print,.sheet__easy,.toasts{display:none!important}.sheet__bar,.sheet__shapes li,.sheet__pattern span{border-color:#999;background:#fff}.tool{padding:0}}.goal-ring__track{fill:none;stroke:var(--line);stroke-width:5}.goal-ring__fill{fill:none;stroke:var(--brand);stroke-width:5;stroke-linecap:round;transition:stroke-dasharray .4s}.goal-ring.is-done .goal-ring__fill{stroke:var(--easy-edge)}.stat-card{padding:16px 18px;border-radius:18px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface)}.stat-card h2{margin:0 0 6px;font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.stat-count{color:var(--brand-dark);margin-left:6px}.stat-big{margin:0;font-size:40px;font-weight:900;line-height:1.05}.stat-big span{font-size:18px;color:var(--muted)}.stat-note{margin:6px 0 0;color:var(--muted);font-size:14px;font-weight:700}.stat-card.is-hot .stat-big{color:var(--hot)}.stat-card--today{display:flex;align-items:center;gap:18px}.stat-card--today .segmented{margin-top:10px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.week{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:8px;height:150px}.week li{display:grid;grid-template-rows:1fr auto auto;justify-items:center;align-items:end}.week__bar{width:70%;max-width:34px;border-radius:8px 8px 4px 4px;background:var(--brand-soft);border:2px solid var(--brand-edge)}.week li.is-goal .week__bar{background:var(--brand);border-color:var(--brand-deep)}.week__minutes{font-weight:900;font-size:13px;margin-top:4px}.week__day{font-size:11px;font-weight:800;color:var(--muted)}.learned-list{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:6px}.learned-list a{display:block;padding:8px 12px;border-radius:12px;background:var(--raised);border:2px solid var(--line);text-decoration:none;font-weight:900;color:var(--brand-dark)}.learned-list a span{color:var(--muted);font-weight:700;margin-left:6px}.chord-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 0}.badge-grid{list-style:none;margin:4px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.badge-grid .badge-medal{width:auto}.badge-grid strong{font-size:14px;font-weight:900;color:var(--muted)}.badge-grid .is-earned strong{color:var(--text)}@media (max-width: 480px){.stat-card--today{gap:14px}.stat-card--today svg{width:76px;height:76px}.stat-big{font-size:32px}}.quickbar{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.quick{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 16px;border-radius:14px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);color:var(--text);font:inherit;font-weight:900;font-size:15px;cursor:pointer;transition:transform .08s,border-bottom-width .08s,margin .08s}.quick svg{width:20px;height:20px;fill:var(--brand);flex:none}.quick:active:not(:disabled){transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.quick:disabled{opacity:.45;cursor:default}.quick.is-on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}@media (max-width: 480px){.quickbar{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.quick{flex-direction:column;justify-content:center;gap:4px;min-height:64px;padding:8px 6px;font-size:13px;line-height:1.15;text-align:center}.quick svg{width:22px;height:22px}}body.has-panel{overflow:hidden}.panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:flex;align-items:flex-end;justify-content:center;background:#1e283c59;animation:fade-in .2s ease-out}.panel{width:min(560px,100%);max-height:88dvh;display:flex;flex-direction:column;background:var(--bg);border-radius:24px 24px 0 0;box-shadow:0 -10px 40px #14285033;animation:sheet-up .32s cubic-bezier(.3,1.2,.45,1)}.panel__head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 10px;border-bottom:2px solid var(--line)}.panel__head h2{margin:0;font-size:22px;font-weight:900}.btn--done{padding:10px 20px;border-radius:14px;background:var(--brand);border-color:var(--brand-deep);color:#fff;font-weight:900;font-size:15px}.panel__body{overflow-y:auto;padding:8px 18px calc(24px + env(safe-area-inset-bottom))}.panel__group{padding:12px 0}.panel__group+.panel__group{border-top:2px solid var(--line)}.panel__group h3{margin:0 0 6px;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.setting{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border:0;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.setting:disabled,.setting.is-disabled{opacity:.45;cursor:default}.setting__text{display:grid;gap:2px}.setting__label{font-size:17px;font-weight:900}.setting__label strong{color:var(--brand-dark)}.setting__note{font-size:13px;font-weight:700;color:var(--muted);line-height:1.3}.setting--choice{cursor:default;flex-wrap:wrap}.setting--choice .segmented{height:44px}.speed-control{display:flex;align-items:center;gap:10px}.speed-control input{flex:1;min-width:0;width:100%;accent-color:var(--brand);height:28px}.step{width:44px;height:44px;flex:none;border-radius:12px;border:2px solid var(--line);border-bottom-width:3px;background:var(--raised);font:inherit;font-size:24px;font-weight:900;color:var(--brand-dark);cursor:pointer}.step:disabled{opacity:.4;cursor:default}.switch{flex:none;position:relative;width:52px;height:32px;border-radius:999px;background:var(--line-dark);transition:background .15s}.switch span{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0003;transition:transform .18s cubic-bezier(.3,1.3,.5,1)}.switch.is-on{background:var(--brand)}.switch.is-on span{transform:translate(20px)}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes sheet-in{0%{transform:translate(100%)}}@keyframes fade-in{0%{opacity:0}}@media (min-width: 900px){.panel-backdrop{align-items:stretch;justify-content:flex-end}.panel{width:420px;max-height:none;height:100%;border-radius:24px 0 0 24px;animation-name:sheet-in}}@media (prefers-reduced-motion: reduce){.panel,.panel-backdrop{animation:none}.switch span{transition:none}}.song-card,.now,.next,.stat-card,.chord-card,.search{box-shadow:var(--shadow)}.song-cover{flex:none;display:block;filter:drop-shadow(0 4px 8px rgba(20,40,80,.22))}.song-cover__emoji{font-size:46px;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.song-card{grid-template-columns:auto 1fr;align-items:center;column-gap:14px;transition:transform .15s,border-color .15s,box-shadow .15s}.song-card:hover{transform:translateY(-2px);background:var(--surface);border-color:var(--brand)}.song-card:hover .song-cover{transform:rotate(-8deg) scale(1.05)}.song-cover{transition:transform .25s cubic-bezier(.3,1.4,.5,1)}.song-card__body{display:grid;gap:4px;min-width:0}.player .player__head,.player .quickbar,.player .song-actions,.player .tips,.player .report{transition:opacity .45s ease,filter .45s ease}.player.is-playing .player__head,.player.is-playing .quickbar,.player.is-playing .song-actions,.player.is-playing .tips,.player.is-playing .report{opacity:.22;filter:saturate(.3)}.player.is-playing .player__head:hover,.player.is-playing .player__head:focus-within,.player.is-playing .quickbar:hover,.player.is-playing .quickbar:focus-within,.player.is-playing .song-actions:hover,.player.is-playing .song-actions:focus-within,.player.is-playing .tips:hover,.player.is-playing .tips:focus-within,.player.is-playing .report:hover,.player.is-playing .report:focus-within{opacity:1;filter:none}.now{transition:box-shadow .4s ease}.player.is-playing .now{box-shadow:0 0 0 6px color-mix(in srgb,var(--brand) 20%,transparent),0 24px 60px -24px #2f8cf099}.chord-timer{width:100%;max-width:600px;height:6px;margin-top:12px;border-radius:3px;background:var(--soft);overflow:hidden}.chord-timer span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),#7b61ff);transform:scaleX(0);transform-origin:left center}.strum__slot{position:relative}.strum__slot.is-on:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:inherit;border:3px solid var(--brand);pointer-events:none;animation:strum-ripple .45s ease-out forwards}@keyframes strum-ripple{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}.count{animation:count-pop .45s cubic-bezier(.3,1.6,.5,1)}@keyframes count-pop{0%{opacity:0;transform:scale(1.9)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:200;overflow:hidden}.confetti span{position:absolute;width:9px;height:14px;margin:-7px 0 0 -4px;border-radius:2px}@media (prefers-reduced-motion: reduce){.strum__slot.is-on:after,.count{animation:none}.song-card,.song-cover,.player .player__head,.player .quickbar,.player .song-actions,.player .tips,.player .report{transition:none}.action-card,.action-card--learned.is-on .action-card__icon{transition:none;animation:none}}.song-card{align-items:start}.song-card__side{display:grid;justify-items:center;gap:6px;width:64px}.song-card__pick{position:relative;display:block}.song-card__side .level{font-size:11px;padding:3px 7px;letter-spacing:.03em}.song-card__pick .tick{position:absolute;top:-4px;right:-6px;width:22px;height:22px;font-size:12px;border:2px solid var(--surface);box-sizing:content-box}.song-card__body .song-card__title{line-height:1.15}.song-card{grid-template-columns:1fr auto}.song-card__side{order:2}.player__pick{display:grid;justify-items:center;gap:4px;flex:none}.player__pick .level{font-size:10px;padding:2px 6px;letter-spacing:.03em}.player__capo{margin-left:8px;font-size:11px;padding:2px 7px;vertical-align:1px}body.has-tabbar{padding-bottom:calc(76px + env(safe-area-inset-bottom))}.tabbar{position:fixed;left:max(10px,calc((100vw - 460px)/2));right:max(10px,calc((100vw - 460px)/2));bottom:calc(10px + env(safe-area-inset-bottom));z-index:50;width:auto;max-width:460px;display:grid;grid-template-columns:repeat(4,1fr);padding:6px;border-radius:22px;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);border:2px solid var(--line);box-shadow:0 10px 30px -10px #1428504d}.tabbar__tab{display:grid;justify-items:center;gap:2px;padding:6px 0 4px;border-radius:16px;text-decoration:none;color:var(--muted);font-size:12px;font-weight:900;transition:background .15s,color .15s}.tabbar__tab svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.tabbar__tab{position:relative}.tabbar__tab svg,.tabbar__tab span:not(.tabbar__pill){position:relative}.tabbar__tab.is-on{color:var(--brand-dark)}.tabbar__pill{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:16px;background:var(--brand-soft);animation:pill-in .28s cubic-bezier(.3,1.4,.5,1)}@keyframes pill-in{0%{opacity:0;transform:scale(.7)}}@media (prefers-reduced-motion: reduce){.tabbar__pill{animation:none}}.tabbar__tab.is-on svg{stroke-width:2.6}.tabbar__tab:active{transform:scale(.95)}.page-head{margin-bottom:14px}.page-head h1{margin:0;font-size:34px;font-weight:900;line-height:1.05}.page-head p{margin:4px 0 0;color:var(--muted);font-weight:800}.home--hub{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.hub-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.hub-head .home__title h1{font-size:clamp(44px,11vw,64px);margin:0}@media (max-width: 360px){.hub-head .burst{display:none}}.progress-pill{display:flex;align-items:center;gap:8px;flex:none;padding:6px 12px 6px 6px;border-radius:16px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);text-decoration:none;box-shadow:var(--shadow)}.progress-pill>span{display:grid;line-height:1.15}.progress-pill strong{font-size:14px;font-weight:900}.progress-pill>span>span{font-size:12px;font-weight:800;color:var(--hot)}.resume{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:18px;border:2px solid var(--brand);border-bottom-width:4px;background:var(--brand-soft);text-decoration:none;box-shadow:var(--shadow)}.resume__text{display:grid;flex:1;min-width:0;line-height:1.2}.resume__label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-dark)}.resume__text strong{font-size:18px;font-weight:900}.resume__text span:last-child{font-size:13px;color:var(--muted);font-weight:700}.resume__play{width:44px;height:44px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--brand)}.resume__play svg{width:22px;height:22px;fill:#fff}.featured{position:relative;overflow:hidden;display:grid;justify-items:start;gap:4px;padding:18px 18px 18px 20px;border-radius:22px;border:2px solid #1458a8;border-bottom-width:5px;background:linear-gradient(135deg,#2f8cf0,#1f6fd1 55%,#1458a8);color:#fff;box-shadow:0 18px 40px -18px #1458a8b3}.featured:before{content:"";position:absolute;inset:-40% auto auto -20%;width:70%;height:180%;background:radial-gradient(closest-side,rgba(255,255,255,.2),transparent);pointer-events:none}.featured__art{position:absolute;right:-34px;top:50%;transform:translateY(-50%) rotate(14deg);pointer-events:none}.featured__art .song-cover{filter:drop-shadow(0 14px 22px rgba(0,20,60,.35))}.featured>:not(.featured__art){position:relative;max-width:calc(100% - 120px)}.featured__label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.1em;opacity:.85}.featured__title{color:#fff;text-decoration:none;font-size:27px;font-weight:900;line-height:1.08;margin-top:2px}.featured__artist{font-weight:800;opacity:.9}.featured__meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.featured>.featured__meta{max-width:calc(100% - 84px)}.featured__meta .mini-chord{color:#fff;border-color:#ffffff73}.featured__actions{display:flex;align-items:center;gap:10px;margin-top:14px;max-width:none!important}.featured__cta{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:14px;background:#fff;color:#1458a8;font-weight:900;text-decoration:none;box-shadow:0 4px #00000024;transition:transform .08s,box-shadow .08s}.featured__cta svg{width:18px;height:18px;fill:currentColor}.featured__cta .featured__level{margin-left:2px;padding:3px 7px;border-radius:8px;font-size:10px}.featured__cta:active{transform:translateY(3px);box-shadow:0 1px #00000024}.featured__fav.fav{width:44px;height:44px;border-radius:14px;background:#ffffff29;border-color:#ffffff73;color:#fff}.featured__fav.fav.is-on{background:#fff;color:#e8436b;border-color:#fff}@media (max-width: 480px){.featured__title{font-size:24px}.featured__art{right:-44px}}.hub-section__head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.hub-section__head h2{margin:0;font-size:20px;font-weight:900}.see-all{color:var(--brand-dark);font-weight:900;text-decoration:none;font-size:15px}.hub-empty{margin:0;padding:14px 16px;border-radius:16px;border:2px dashed var(--line-dark);color:var(--muted);font-weight:800}.fav-row{list-style:none;margin:0 -16px;padding:2px 16px 8px;display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:16px;scrollbar-width:none}.fav-row::-webkit-scrollbar{display:none}.fav-tile{scroll-snap-align:start;width:96px;display:grid;justify-items:center;gap:6px;padding:12px 8px;border-radius:16px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);text-decoration:none;text-align:center;font-size:13px;font-weight:900;line-height:1.15;box-shadow:var(--shadow)}.fav-tile .song-cover{transition:transform .25s cubic-bezier(.3,1.4,.5,1)}.fav-tile:hover .song-cover{transform:rotate(-8deg) scale(1.05)}.finders{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:1fr;gap:10px}.finders li{display:grid}.finders .finder{box-sizing:border-box;height:100%;line-height:1.2}.finder{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:16px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);text-decoration:none;font-weight:900;box-shadow:var(--shadow);transition:transform .12s,border-color .12s}.finder:hover{border-color:var(--brand);transform:translateY(-1px)}.finder:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.finder__emoji{font-size:22px}@media (max-width: 480px){.finders{grid-template-columns:1fr 1fr;gap:8px}.finder{padding:10px 12px;font-size:14px}}.fav{width:40px;height:40px;display:grid;place-items:center;padding:0;border-radius:12px;border:2px solid var(--line);background:var(--raised);color:var(--muted);cursor:pointer;flex:none}.fav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linejoin:round}.fav.is-on{color:#e8436b;border-color:#f4b4c4}.fav.is-on svg{fill:currentColor;animation:heart-pop .35s cubic-bezier(.3,1.8,.5,1)}@keyframes heart-pop{50%{transform:scale(1.35)}}.song-card-wrap{position:relative}.player__fav{width:40px;height:40px}.player__nav{display:grid;gap:8px;justify-items:center;align-self:start;flex:none}.player__nav .back,.player__nav .player__fav{width:44px;height:44px}.songs-page .search{margin-bottom:10px}.filter-strip{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;margin:0 -16px 10px;padding:2px 16px 6px;scrollbar-width:none}.filter-strip::-webkit-scrollbar{display:none}.filter-chip{flex:none;white-space:nowrap}.filter-chip--level-1.is-current{background:var(--easy-soft);border-color:var(--easy-edge);color:var(--easy)}.filter-chip--level-2.is-current{background:var(--medium-soft);border-color:var(--medium-edge);color:var(--medium)}.filter-chip--level-3.is-current{background:var(--tricky-soft);border-color:var(--tricky-edge);color:var(--tricky)}.filter__bar{display:flex;flex-wrap:wrap;gap:6px 14px;margin:-2px 0 10px}.link-button{border:0;background:none;padding:0;color:var(--brand-dark);font:inherit;font-weight:900;font-size:14px;cursor:pointer;text-align:left}.known-grid{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}.known-chord{width:100%;display:grid;justify-items:center;gap:2px;padding:8px 4px;border-radius:14px;border:2px solid var(--line);border-bottom-width:4px;background:var(--raised);font:inherit;font-weight:900;font-size:17px;color:var(--text);cursor:pointer}.known-chord.is-on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}.diagram--known{grid-area:auto;width:56px;max-width:100%}.practice-page{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-content:start}.practice-tools{list-style:none;margin:0;padding:0;display:grid;gap:10px}.practice-tool{display:flex;align-items:center;gap:14px;padding:16px;border-radius:18px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);text-decoration:none;box-shadow:var(--shadow);transition:transform .12s,border-color .12s}.practice-tool:hover{border-color:var(--brand)}.practice-tool:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.practice-tool__icon{width:52px;height:52px;flex:none;display:grid;place-items:center;border-radius:16px;background:var(--brand-soft)}.practice-tool__icon svg{width:30px;height:30px;fill:none;stroke:var(--brand-dark);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.practice-tool__icon svg .fill{fill:var(--brand-dark);stroke:none}.practice-tool__icon svg .thin{stroke-width:1.3}.practice-tool__text{display:grid;gap:2px;flex:1}.practice-tool__text strong{font-size:19px;font-weight:900}.practice-tool__text span{color:var(--muted);font-weight:700;font-size:14px;line-height:1.3}.practice-tool__go{font-size:22px;font-weight:900;color:var(--brand)}.prefs h2{margin-bottom:0}.fav-tile__name{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:root[data-theme=songs]{--brand: #7b61ff;--brand-dark: #4a2fc2;--brand-deep: #3a22a0;--brand-soft: #e7e1ff;--brand-edge: #b9aaff;--blob: #b3a5ff}:root[data-theme=practice]{--brand: #14a394;--brand-dark: #0b6b62;--brand-deep: #08564f;--brand-soft: #d3f3ef;--brand-edge: #8fdcd3;--blob: #7fd6cc}:root[data-theme=progress]{--brand: #e06c0e;--brand-dark: #a64b00;--brand-deep: #8a3e00;--brand-soft: #ffe6d1;--brand-edge: #ffbf8a;--blob: #ffb070}@media (prefers-color-scheme: dark){:root[data-theme=songs]{--brand-dark: #b7a8ff;--brand-soft: #2e2558;--brand-edge: #4d3f99;--blob: #3a2f7a}:root[data-theme=practice]{--brand-dark: #6fe0d2;--brand-soft: #133f3b;--brand-edge: #1f6a63;--blob: #145a54}:root[data-theme=progress]{--brand-dark: #ffb37a;--brand-soft: #4a2a12;--brand-edge: #8a4a1c;--blob: #6b3a14}}.blob{transition:transform .6s cubic-bezier(.3,1,.4,1),fill .4s ease}@media (prefers-reduced-motion: reduce){.blob{transition:none}}.stage__cue{display:block;width:fit-content;margin-top:6px;padding:3px 10px;border-radius:9px;background:var(--brand-soft);color:var(--brand-dark);font-size:14px;font-weight:800;letter-spacing:0;text-transform:none}.now__done .btn--faster{padding:12px 22px;border-radius:16px;font-size:16px;font-weight:900;color:var(--brand-dark)}.ready{list-style:none;margin:0;padding:0 0 12px;display:grid;gap:10px;border-bottom:2px solid var(--line)}.ready li{display:grid;gap:4px}.ready__label{font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.ready__chips{display:flex;flex-wrap:wrap;gap:6px}.ready__row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}.ready__row strong{font-size:17px;font-weight:900}.ready__go{padding:6px 12px;border-radius:10px;background:var(--brand-soft);color:var(--brand-dark);font-size:14px;font-weight:900;text-decoration:none}.ready__go:hover{text-decoration:underline}.skill-chip{padding:3px 10px;border-radius:10px;border:2px solid var(--brand);background:var(--brand-soft);color:var(--brand-dark);font-size:13px;font-weight:900}.sheet__pattern span.is-muted,.strum-card__pattern .is-muted{position:relative}.sheet__pattern .is-muted small,.strum-card__pattern .is-muted small{position:absolute;bottom:1px;left:0;right:0;font-size:7px;font-weight:900;line-height:1;text-align:center}.sheet__pattern span.is-chuck,.strum-card__pattern .is-chuck{color:var(--muted)}.sheet__legend{display:grid;gap:4px;margin:10px 0 0;color:var(--muted);font-size:14px;font-weight:700}.sheet__cue{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:8px;background:var(--brand-soft);color:var(--brand-dark);font-size:13px;font-weight:800}.strum-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.strum-cards li{display:grid}.strum-card{display:grid;align-content:start;gap:8px;padding:14px;border-radius:18px;border:2px solid var(--line);border-bottom-width:4px;background:var(--surface);box-shadow:var(--shadow);color:var(--text);text-decoration:none;transition:transform .12s,border-color .12s}.strum-card:hover{border-color:var(--brand)}.strum-card:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.strum-card strong{font-size:17px;font-weight:900}.strum-card__pattern{display:flex;gap:4px}.strum-card__pattern span{flex:1 1 0;max-width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--brand-soft);color:var(--brand-dark);font-size:17px;font-weight:900}.strum-card__pattern .is-rest{background:var(--raised);color:var(--rest)}.strum-card__blurb{color:var(--muted);font-size:14px;font-weight:700;line-height:1.35}.trainer-setup--strums{grid-template-columns:1fr 1fr}@media (max-width: 560px){.trainer-setup--strums>.picker:last-child{grid-column:auto}}.skill-list{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:6px}.skill-list li{display:flex;align-items:center;gap:10px}.skill-list__mark{flex:none;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;border:2px solid var(--line);color:var(--brand-ink);font-weight:900;font-size:14px}.skill-list .is-done .skill-list__mark{background:var(--brand);border-color:var(--brand-deep)}.skill-list a{display:grid;flex:1;min-width:0;padding:6px 0;text-decoration:none;color:var(--text)}.skill-list a strong{font-weight:900}.skill-list a span{color:var(--muted);font-size:14px;font-weight:700}.skill-list a:hover strong{text-decoration:underline}.skill-list__go{flex:none;color:var(--brand-dark);font-weight:900}.mode-switch{justify-self:center;width:min(100%,320px);height:44px}.mode-switch button{flex:1}.note-where{margin:0 0 8px;color:var(--brand-dark);font-size:15px;font-weight:900}.note-where--next{display:block;margin:4px 0 0;color:var(--muted);font-size:13px}.badge--melody{border-color:var(--brand);color:var(--brand-dark)}.sheet__tab h3{margin:12px 0 6px;font-size:16px;font-weight:900}.sheet__tab pre{margin:0;padding:12px;overflow-x:auto;border-radius:12px;background:var(--surface);border:2px solid var(--line);font:700 14px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text)}.note-check{display:block;width:fit-content;margin-top:6px;padding:3px 10px;border-radius:9px;font-size:14px;font-weight:900;letter-spacing:0;text-transform:none;animation:count-pop .3s ease-out}.note-check.is-ok{background:var(--easy-soft);color:var(--easy)}.note-check.is-wrong{background:var(--tricky-soft);color:var(--tricky)}@media (prefers-reduced-motion: reduce){.note-check{animation:none}}
