:root{--ink: #1a1a1a;--muted: #6b6b6b;--card: #fafaf7;--warm: #f4f1ea;--rule: #d9d9d9;--page: #ffffff;--surface: #ffffff;--on-ink: #ffffff;--roman-I: #c8102e;--roman-IV: #1d3557;--roman-V: #e09f3e;--roman-V7: #8b4513;--roman-vi: #2a9d8f;--radius: 12px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 12px rgba(0, 0, 0, .04)}html[data-theme=dark]{--ink: #ececec;--muted: #9a9aa0;--card: #1c1c20;--warm: #26262c;--rule: #36363c;--page: #111114;--surface: #1c1c20;--on-ink: #111114;--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 4px 12px rgba(0, 0, 0, .4);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Poppins,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit}.site{min-height:100%;display:flex;flex-direction:column}.site-header{display:flex;align-items:center;gap:24px;padding:16px 24px;border-bottom:1px solid var(--rule)}.brand{display:inline-flex;align-items:center;text-decoration:none;color:inherit;transition:opacity .15s ease}.brand:hover{opacity:.8}.brand-logo{height:38px;width:auto;display:block}@media(max-width:540px){.brand-logo{height:30px}}.site-header nav{display:flex;gap:4px;margin-left:auto}.site-header nav a{padding:6px 14px;border-radius:999px;text-decoration:none;font-size:14px;font-weight:500;color:var(--muted);transition:background .15s ease}.site-header nav a:hover,.site-header nav a.active{background:var(--warm);color:var(--ink)}.theme-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-left:4px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease}.theme-toggle:hover{background:var(--warm);color:var(--ink)}.theme-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}main.wrap{max-width:1200px;width:100%;margin:0 auto;padding:24px;flex:1}footer.site-footer{margin-top:auto;padding:24px;border-top:1px solid var(--rule);color:var(--muted);font-size:13px;text-align:center}footer.site-footer .footer-link{color:inherit;text-decoration:underline}footer.site-footer .footer-link:hover{color:var(--ink)}.featured-hero{position:relative;background:linear-gradient(var(--hero-overlay, rgba(252, 248, 240, .92)),var(--hero-overlay, rgba(252, 248, 240, .92))),url(/photos/mandolin-portrait.jpg) center/cover;border:1px solid var(--rule);border-radius:16px;padding:36px 40px 32px;margin-bottom:20px;text-align:center;display:flex;flex-direction:column;align-items:center}html[data-theme=dark] .featured-hero{--hero-overlay: rgba(20, 20, 26, .78)}@media(max-width:720px){.featured-hero{padding:28px 20px 24px;border-radius:12px}}.featured-hero-logo{width:116px;height:auto;display:block;margin:0 auto 14px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.08))}@media(max-width:720px){.featured-hero-logo{width:92px;margin-bottom:10px}}.featured-hero-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#6b4f1d;background:#f4e4c1;padding:5px 12px;border-radius:999px;margin-bottom:16px}.featured-hero-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:#b8541f}.featured-hero-headline{font-size:44px;font-weight:700;line-height:1.05;letter-spacing:-.02em;margin:0 0 14px;max-width:760px}.featured-hero-headline em{font-style:normal;color:#b8541f}@media(max-width:720px){.featured-hero-headline{font-size:30px}}.featured-hero-subhead{font-size:16px;line-height:1.55;color:var(--muted);margin:0 0 22px;max-width:620px}.featured-hero-subhead strong{color:var(--ink);font-weight:700}.featured-hero-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.featured-hero-cta{font-size:15px;padding:11px 22px}.featured-hero-cta-secondary{font-size:15px;padding:11px 20px;background:transparent;color:var(--ink);border:1px solid var(--rule)}.featured-hero-cta-secondary:hover{background:var(--warm);border-color:#b5b5b5}.featured-song-card{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:0;margin-bottom:28px;background:var(--card);border:1px solid var(--rule);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}@media(max-width:720px){.featured-song-card{grid-template-columns:1fr}}.featured-song-card-info{padding:20px 24px;display:flex;flex-direction:column;gap:8px}.featured-song-eyebrow{display:inline-block;align-self:flex-start;padding:3px 10px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.featured-song-eyebrow-featured{background:#f4e4c1;color:#6b4f1d}.featured-song-eyebrow-lastPlayed{background:#d4e6dc;color:#1f4e36}.featured-song-title{font-size:26px;font-weight:700;margin:4px 0 0;line-height:1.1;letter-spacing:-.01em}.featured-song-artist{color:var(--muted);font-size:14px}.featured-song-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.featured-song-cta{align-self:flex-start;margin-top:10px;font-size:14px;padding:9px 18px}.featured-song-back{margin:6px 0 0;font-size:12px;color:var(--muted)}.featured-song-card-preview{position:relative;border-left:1px solid var(--rule);background:#fdfbf6;min-height:300px;display:flex;flex-direction:column}@media(max-width:720px){.featured-song-card-preview{border-left:none;border-top:1px solid var(--rule);min-height:280px}}.featured-song-card-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px;font-style:italic}.instrument-bg-mandolin{background:linear-gradient(135deg,#8b4862,#5a2a3c)}.instrument-bg-guitar{background:linear-gradient(135deg,#3a8462,#1f4e36)}.instrument-bg-fiddle{background:linear-gradient(135deg,#c47830,#7a4516)}.featured-hero-body{padding:36px 40px;display:flex;flex-direction:column;gap:10px;min-width:0}@media(max-width:720px){.featured-hero-body{padding:24px 24px 28px}}.featured-hero-pill-row{display:flex;gap:8px}.featured-hero-pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.featured-hero-pill-featured{background:#f4e4c1;color:#6b4f1d}.featured-hero-pill-lastPlayed{background:#d4e6dc;color:#1f4e36}.featured-hero-title{font-size:48px;font-weight:700;margin:6px 0 0;line-height:1.05;letter-spacing:-.02em}@media(max-width:720px){.featured-hero-title{font-size:34px}}.featured-hero-tagline{font-size:16px;color:var(--muted);margin:2px 0 0;max-width:520px;line-height:1.45}.featured-hero-artist{color:var(--muted);font-size:16px;margin-top:2px}.featured-hero-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.featured-hero-actions{margin-top:16px;display:flex;gap:12px;flex-wrap:wrap}.featured-hero-cta{font-size:16px;padding:12px 24px}.featured-hero-cta-secondary{font-size:15px;padding:12px 20px;background:transparent;color:var(--ink);border:1px solid var(--rule)}.featured-hero-cta-secondary:hover{background:var(--card);border-color:#b5b5b5}.featured-hero-back{margin:8px 0 0;font-size:13px;color:var(--muted)}.try-another{margin-bottom:40px}.try-another-heading{font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--ink);margin:0 0 14px}.try-another-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.try-another-card{display:flex;align-items:stretch;gap:12px;padding:0;background:var(--card);border:1px solid var(--rule);border-radius:10px;cursor:pointer;font:inherit;text-align:left;overflow:hidden;transition:transform .1s ease,border-color .15s ease,box-shadow .15s ease}.try-another-card:hover{transform:translateY(-2px);border-color:#b5b5b5;box-shadow:var(--shadow)}.try-another-card.is-current{opacity:.5;cursor:default}.try-another-card.is-current:hover{transform:none;box-shadow:none;border-color:var(--rule)}.try-another-card-art{flex:0 0 56px;display:flex;align-items:center;justify-content:center;color:#ffffffd9;position:relative;overflow:hidden}.try-another-card-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.try-another-card-glyph{font-size:28px;font-weight:700;line-height:1}.try-another-card-meta{flex:1;min-width:0;padding:8px 10px 8px 0;display:flex;flex-direction:column;gap:2px}.try-another-card-title{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.try-another-card-artist{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.try-another-card-tags{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}.try-another-card-tag{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--warm);padding:1px 6px;border-radius:4px}.mini-tab-player{display:flex;flex-direction:column;height:100%;width:100%}.mini-tab-player-chords{flex:0 0 auto;padding:6px 10px 0}.mini-tab-player-chords>section{border:none!important;background:transparent!important;padding:0!important;border-radius:0!important}.mini-tab-player-chords .chord-row{flex-wrap:nowrap;overflow-x:auto}.mini-tab-player-chords .chord-row-label{display:none}.mini-tab-player-stage{flex:1;min-height:0;overflow:hidden;padding:4px 12px 0}.mini-tab-player-stage svg{width:100%;height:100%;display:block}.mini-tab-player-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;background:#0000000d;border-top:1px solid var(--rule);font-size:12px;color:var(--muted)}.mini-tab-player-play{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--rule);border-radius:999px;background:var(--surface);cursor:pointer;font-size:13px;line-height:1;padding:0}.mini-tab-player-play:hover{background:var(--warm);border-color:#b5b5b5}.mini-tab-player-hint{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-tab-player-expand{color:var(--ink);text-decoration:none;font-weight:600;font-size:12px;letter-spacing:.04em;padding:4px 8px;border:1px solid var(--rule);border-radius:6px;background:var(--surface);white-space:nowrap}.mini-tab-player-expand:hover{background:var(--warm);border-color:#b5b5b5}.other-arrangements{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 12px;padding:8px 12px;background:var(--warm);border:1px solid var(--rule);border-radius:8px;font-size:13px}.other-arrangements-label{color:var(--muted);margin-right:4px}.about-this-tune-body p{margin:0 0 12px}.about-this-tune-body p:last-child{margin-bottom:0}.about-this-tune-body ul,.about-this-tune-body ol{margin:8px 0 14px;padding-left:24px}.about-this-tune-body li{margin-bottom:4px}.about-this-tune-body strong{color:var(--ink)}.about-this-tune-body a{color:inherit;text-decoration:underline}.about-this-tune-body code{background:#0000000d;padding:1px 5px;border-radius:3px;font-size:.92em}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.page-head>div:first-child{min-width:0;flex:1 1 auto}.page-head h1{margin:0 0 6px;font-size:clamp(28px,4vw,36px);font-weight:700;letter-spacing:-.02em}.page-head p{margin:0;color:var(--muted);font-size:14px}.page-head>.btn{flex-shrink:0;align-self:flex-start;margin-top:6px}.songs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.song-card{background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;transition:transform .1s ease,box-shadow .15s ease}.song-card:hover{transform:translateY(-2px);box-shadow:0 2px 4px #0000000f,0 8px 20px #0000000f}.song-card .title{font-size:18px;font-weight:700;letter-spacing:-.01em}.song-card .artist{color:var(--muted);font-size:13px}.song-card .meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:8px}.badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;padding:3px 8px;border-radius:999px;background:var(--warm);color:var(--muted);text-transform:uppercase}.badge.key{color:#fff}.badge.key[data-key=F],.badge.key[data-key=Dm]{background:var(--roman-I)}.badge.key[data-key=C],.badge.key[data-key=Am]{background:var(--roman-IV)}.badge.key[data-key=G],.badge.key[data-key=Em]{background:var(--roman-V)}.badge.key[data-key=D],.badge.key[data-key=Bm]{background:var(--roman-V7)}.badge.key[data-key=A],.badge.key[data-key="F#m"]{background:var(--roman-vi)}.badge.key[data-key=E],.badge.key[data-key="C#m"]{background:#555}.filter-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:16px;box-shadow:var(--shadow);flex-wrap:wrap}.filter-search{display:inline-flex;align-items:center;gap:6px;background:var(--warm);border:1px solid transparent;border-radius:999px;padding:6px 14px;min-width:240px;flex:1 1 240px;max-width:360px;transition:border-color .15s ease,background-color .15s ease}.filter-search:focus-within{border-color:var(--ink);background:var(--surface)}.filter-search-icon{display:inline-flex;color:var(--muted);flex-shrink:0}.filter-search input{font-family:inherit;font-size:14px;font-weight:500;color:var(--ink);background:transparent;border:none;outline:none;flex:1;min-width:0;padding:0}.filter-search input::placeholder{color:var(--muted);font-weight:400}.filter-search input::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.filter-select{display:inline-flex;flex-direction:column;gap:2px;position:relative}.filter-select-label{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-left:12px}.filter-select select{font-family:inherit;font-size:14px;font-weight:500;color:var(--ink);background:var(--warm);border:1px solid transparent;border-radius:999px;padding:6px 28px 6px 12px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%236b6b6b' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 10px center;transition:background-color .15s ease,border-color .15s ease}.filter-select select:hover{background-color:var(--rule)}.filter-select select:focus{outline:none;border-color:var(--ink)}.filter-select.active select{background-color:var(--ink);color:var(--on-ink);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23ffffff' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>")}.filter-bar-spacer{flex:1}.filter-count{font-size:12px;color:var(--muted);font-weight:500}.filter-clear,.link-button{font-family:inherit;font-size:13px;font-weight:600;background:none;border:none;color:var(--ink);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.filter-clear:hover,.link-button:hover{color:var(--roman-I)}.songs-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.song-row{display:grid;grid-template-columns:1fr 380px auto;align-items:center;gap:16px;padding:12px 16px;background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);text-decoration:none;color:inherit;transition:background .15s ease,border-color .15s ease,transform .08s ease,box-shadow .15s ease}.song-row:hover{background:var(--surface);border-color:var(--muted);transform:translate(2px);box-shadow:var(--shadow)}.song-row.song-row-grouped{cursor:default;grid-template-columns:1fr auto}.song-row.song-row-grouped:hover{background:var(--card);border-color:var(--rule);transform:none;box-shadow:none}.song-row .badge.instrument.badge-link{text-decoration:none;transition:transform .08s ease,filter .15s ease}.song-row .badge.instrument.badge-link:hover{transform:translateY(-1px);filter:brightness(1.1)}.badge.instrument{color:#fff;letter-spacing:.06em;text-transform:uppercase}.badge.instrument-guitar{background:#2f6b4f}.badge.instrument-mandolin{background:#7a3a52}.badge.instrument-fiddle{background:#a06020}.song-row-main{flex:1;min-width:0}.song-row-title{font-size:16px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-row-sub{margin-top:2px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-row-meta{display:grid;grid-template-columns:90px 50px 110px 70px 40px;gap:6px;align-items:center}.song-row-meta>.badge.instrument{grid-column:1;justify-self:start}.song-row-meta>.badge.key{grid-column:2;justify-self:start}.song-row-meta>.badge.difficulty{grid-column:3;justify-self:start}.song-row-meta>.badge.bpm{grid-column:4;justify-self:start}.song-row-meta>.badge.pdf{grid-column:5;justify-self:start}.song-row-arrow{flex-shrink:0;font-size:22px;color:var(--muted);line-height:1}@media(max-width:640px){.song-row{grid-template-columns:1fr auto}.song-row-meta{display:none}.song-row-sub{white-space:normal}}.abc-view{background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 16px}.abc-view-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.abc-view-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.abc-view-copy{font-family:inherit;font-size:12px;font-weight:600;background:var(--warm);color:var(--ink);border:1px solid transparent;border-radius:999px;padding:4px 12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.abc-view-copy:hover{background:var(--rule);border-color:var(--rule)}.abc-view-text{margin:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:13px;line-height:1.6;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:12px 14px;overflow-x:auto;white-space:pre}.abc-view-warnings{margin-top:10px;padding:8px 12px;background:#fff7e6;border:1px solid #f0d28a;border-radius:8px;font-size:12px;color:#6b5018;display:flex;flex-direction:column;gap:4px}.comments{margin-top:32px;padding-top:24px;border-top:1px solid var(--rule)}.comments-title{margin:0 0 16px;font-size:18px;font-weight:700;letter-spacing:-.01em}.comments-empty{color:var(--muted);font-size:14px;padding:16px 0}.comments-list{list-style:none;margin:0 0 24px;padding:0;display:flex;flex-direction:column;gap:14px}.comment{background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 16px}.comment-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px}.comment-name{font-weight:600;font-size:14px;color:var(--ink)}.comment-date{font-size:12px;color:var(--muted)}.comment-text{font-size:14px;color:var(--ink);white-space:pre-wrap;word-wrap:break-word}.comment-form{position:relative;display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px}.comment-form-row{display:flex;gap:8px}.comment-input,.comment-textarea{font-family:inherit;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:8px 12px;width:100%;transition:border-color .15s ease,box-shadow .15s ease}.comment-input:focus,.comment-textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #0000000f}.comment-textarea{resize:vertical;min-height:60px;line-height:1.5}.comment-form-actions{display:flex;justify-content:flex-end}.suggest-panel{margin-top:40px;padding:24px;background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow)}.suggest-panel-head h2{margin:0 0 6px;font-size:20px;font-weight:700;letter-spacing:-.01em}.suggest-panel-head p{margin:0 0 16px;font-size:14px;color:var(--muted);max-width:60ch;line-height:1.5}.suggest-form{position:relative;display:flex;flex-direction:column;gap:8px}.suggest-form-grid{display:grid;grid-template-columns:2fr 1fr;gap:8px}@media(max-width:640px){.suggest-form-grid{grid-template-columns:1fr}}.suggest-form-actions{display:flex;justify-content:flex-end}.suggest-panel-thanks{background:#ecf6ee;border:1px solid #b8d8c0;border-radius:8px;padding:14px 16px;font-size:14px;color:#234c2d}.music-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.music-scroll.music-size-large>svg{width:140%;min-width:1100px}@media(max-width:768px){.music-scroll.music-size-normal>svg{min-width:800px}}.practice-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.practice-switch input{position:absolute;opacity:0;pointer-events:none}.practice-switch-track{position:relative;display:inline-block;width:38px;height:22px;background:#c7c2b6;border-radius:999px;transition:background .18s ease;flex-shrink:0}.practice-switch-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;transition:transform .18s ease}.practice-switch input:checked~.practice-switch-track{background:#2f9e63}.practice-switch input:checked~.practice-switch-track .practice-switch-thumb{transform:translate(16px)}.practice-switch input:focus-visible~.practice-switch-track{box-shadow:0 0 0 3px #2f9e6359}.practice-switch-label{font-size:14px;font-weight:600;color:var(--ink)}.practice-hint{font-size:13px;color:var(--muted);font-style:italic}.practice-bar{position:absolute;bottom:12px;right:16px;display:flex;align-items:center;gap:6px;padding:8px 10px;background:#1a1a1af0;border-radius:999px;box-shadow:0 4px 16px #0000002e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5}.practice-bar-label{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#fff;padding:0 8px 0 6px;letter-spacing:.02em}.practice-bar-loop-dot{width:7px;height:7px;border-radius:50%;background:#3b82f6;box-shadow:0 0 #3b82f699;animation:practice-loop-pulse 1.6s ease-out infinite}@keyframes practice-loop-pulse{0%{box-shadow:0 0 #3b82f699}70%{box-shadow:0 0 0 8px #3b82f600}to{box-shadow:0 0 #3b82f600}}.practice-bar-btn{font-family:inherit;font-size:12px;font-weight:600;background:#ffffff1f;color:#fff;border:none;border-radius:999px;padding:5px 12px;cursor:pointer;transition:background .12s ease}.practice-bar-btn:hover{background:#ffffff38}.practice-bar-btn.active{background:#3b82f6;color:#fff}.practice-bar-btn.active:hover{background:#2563eb}.practice-bar-btn.ghost{background:transparent;color:#ffffffb3}.practice-bar-btn.ghost:hover{background:#ffffff1a;color:#fff}.empty-state{text-align:center;padding:64px 24px;color:var(--muted)}.message{padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:16px}.message.error{background:#fdeaed;border:1px solid #f0bac4;color:#8b1224}.player{display:flex;flex-direction:column;gap:16px}.player-header{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.player-header h1{margin:0;font-size:clamp(24px,3.5vw,32px);font-weight:700;letter-spacing:-.02em}.player-header .artist{color:var(--muted);font-size:16px}.player-media{background:#000;border-radius:var(--radius);overflow:hidden}.player-media video,.player-media audio{width:100%;display:block}.player-media video{max-height:480px}.player-media audio{background:var(--card);padding:16px}.player-transport{display:flex;align-items:center;gap:12px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-weight:600;font-size:14px;padding:10px 20px;border-radius:8px;border:1.5px solid var(--ink);background:var(--ink);color:var(--on-ink);cursor:pointer;transition:transform .08s ease}.btn:hover{transform:translateY(-1px)}.btn.secondary{background:transparent;color:var(--ink)}.btn.secondary:hover{background:var(--warm)}svg.tab{width:100%;height:auto;display:block;background:var(--card);border:1px solid var(--rule);border-radius:var(--radius)}.tab-stack>svg.tab:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.tab-stack>svg.tab:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-top:none;margin-top:-12px}.time-readout{font-variant-numeric:tabular-nums;font-weight:600;color:var(--muted);font-size:14px}.chord-wrap{max-width:1280px;margin:0 auto}.chord-wrap .page-head p{color:var(--muted)}.key-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 8px}.key-tabs button{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-weight:600;font-size:18px;padding:10px 20px;min-width:56px;border-radius:999px;border:1.5px solid var(--rule);background:var(--card);color:var(--ink);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.key-tabs button:hover{border-color:var(--ink)}.key-tabs button[aria-current=true]{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.key-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:24px 0 12px;flex-wrap:wrap}.key-heading h2{margin:0;font-weight:700;font-size:clamp(28px,5vw,40px);letter-spacing:-.02em}.key-heading .progression{color:var(--muted);font-size:14px;font-weight:600;letter-spacing:.04em}.chord-grid{display:grid;gap:14px;grid-template-columns:1fr}@media(min-width:560px){.chord-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:820px){.chord-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1120px){.chord-grid{grid-template-columns:repeat(5,1fr)}}.chord-card{position:relative;background:var(--card);border-radius:var(--radius);border:1px solid var(--rule);box-shadow:var(--shadow);padding:20px 18px 18px;display:flex;flex-direction:column;align-items:center;overflow:hidden}.chord-card .accent{position:absolute;top:0;left:0;right:0;height:6px}.chord-card .roman{align-self:flex-start;font-weight:700;font-size:13px;letter-spacing:.08em;padding:4px 10px;border-radius:999px;color:#fff;margin-top:4px}.chord-card .chord-name{font-weight:700;font-size:44px;line-height:1;letter-spacing:-.02em;margin:12px 0 2px}.chord-card .chord-type{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px}.chord-card svg.diagram{display:block;width:100%;max-width:180px;height:auto;margin:2px 0 10px}.chord-card .notes{color:var(--muted);font-size:13px;letter-spacing:.04em;font-variant-numeric:tabular-nums}.roman-key{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-top:28px;padding-top:20px;border-top:1px solid var(--rule)}.roman-key .item{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--muted)}.roman-key .swatch{width:14px;height:14px;border-radius:4px;flex:none}.roman-key .label{color:var(--ink);font-weight:600}.multi-stem-player{display:flex;flex-direction:column;gap:10px}.multi-stem-player-status,.multi-stem-player-error{padding:12px 14px;border:1px solid var(--rule, #ddd);border-radius:6px;background:var(--card);font-size:13px;color:var(--muted, #555)}.multi-stem-player-error{color:#b22222;border-color:#d9b3b3;background:#fdf3f3}.multi-stem-toggles{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0 2px;font-size:13px}.multi-stem-toggles-label{color:var(--muted, #666);margin-right:4px}.multi-stem-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--rule, #ccc);background:var(--surface);color:var(--ink, #1a1a1a);padding:5px 12px;border-radius:999px;font:inherit;font-size:12.5px;font-weight:500;cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease,box-shadow .14s ease}.multi-stem-toggle:hover{border-color:var(--muted)}.multi-stem-toggle.is-on{background:#1d3557;border-color:#1d3557;color:#fff;box-shadow:0 1px 2px #0000001f}.multi-stem-toggle.is-on:hover{background:#25446e;border-color:#25446e}.multi-stem-channel{display:inline-flex;align-items:center;gap:6px}.multi-stem-volume{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:70px;height:4px;background:var(--rule, #ccc);border-radius:999px;outline:none;cursor:pointer;margin:0}.multi-stem-volume::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:#1d3557;border:2px solid #fff;box-shadow:0 1px 2px #0003;cursor:pointer}.multi-stem-volume::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:#1d3557;border:2px solid #fff;box-shadow:0 1px 2px #0003;cursor:pointer}.multi-stem-volume:disabled{opacity:.4;cursor:not-allowed}.chord-collapse-btn{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;border:none;padding:0;margin:0;width:100%;display:flex;align-items:center;justify-content:space-between;cursor:pointer;font:inherit}.chord-collapse-btn:hover{opacity:.75}.chord-collapse-btn:focus-visible{outline:2px solid #c75c2c;outline-offset:2px;border-radius:6px}.chord-collapse-title{font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.chord-collapse-action{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.chord-chip{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;border:1px solid transparent;border-radius:8px;padding:2px 4px;margin:0;font:inherit;color:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;transition:background 80ms ease,border-color 80ms ease,transform 80ms ease}.chord-chip:hover{background:#c75c2c0f;border-color:#c75c2c66}.chord-chip:active{transform:scale(.97)}.chord-chip:focus-visible{outline:2px solid #c75c2c;outline-offset:2px}.tuner-stage{display:grid;grid-template-columns:280px 1fr;gap:36px;align-items:center;margin-top:20px;padding:28px 32px;background:linear-gradient(180deg,#fdfbf6,#f7f2e8);border:1.5px solid var(--rule);border-radius:16px;box-shadow:0 1px 3px #32281e0f,0 12px 32px #32281e0f}@media(max-width:720px){.tuner-stage{grid-template-columns:1fr;gap:24px;padding:20px 16px}}.tuner-headstock-wrap{display:flex;justify-content:center}.tuner-readout{display:flex;flex-direction:column;gap:14px;min-width:0}.tuner-note{font-family:Playfair Display,Georgia,serif;font-size:96px;font-weight:900;line-height:1;letter-spacing:-2px;text-align:center;min-height:96px;transition:color .22s}@media(max-width:720px){.tuner-note{font-size:72px;min-height:72px}}.tuner-note-octave{font-size:48px;vertical-align:super;margin-left:6px;color:#999;font-weight:700;letter-spacing:0}@media(max-width:720px){.tuner-note-octave{font-size:36px}}.tuner-meter{width:100%}.tuner-meter-track{position:relative;height:22px;border-radius:11px;overflow:hidden;background:#efeae0}.tuner-meter-zones{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,#c8102e52,#e09f3e4d 25%,#3a8e4f6b 48%,#3a8e4f6b 52%,#e09f3e4d 75%,#c8102e52)}.tuner-meter-tick{position:absolute;left:50%;top:0;bottom:0;width:2px;background:#00000073;transform:translate(-50%)}.tuner-meter-needle{position:absolute;top:-3px;bottom:-3px;width:5px;border-radius:3px;transform:translate(-50%);transition:left 90ms linear,background .22s;box-shadow:0 0 0 2px #ffffffeb,0 0 8px #0000002e}.tuner-meter-labels{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:#888;font-weight:500}.tuner-status{font-size:15px;font-weight:700;text-align:center;min-height:22px;transition:color .22s}.tuner-controls{display:flex;justify-content:center;gap:10px;margin-top:4px}.tuner-start{font-size:15px;padding:11px 24px}.tuner-stop{font-size:15px;padding:11px 24px;background:#c8102e}.tuner-stop:hover{background:#a80d27}.tuner-tip{margin-top:16px;font-size:12px;color:#888;text-align:center;max-width:560px;margin-left:auto;margin-right:auto}.tuner-headstock-photo{width:280px;max-width:100%;display:flex;justify-content:center}.tuner-headstock-photo-stage{position:relative;width:100%;border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #0000002e}.tuner-headstock-photo-img{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.tuner-peg{position:absolute;width:44px;height:44px;margin-left:-22px;margin-top:-22px;border-radius:50%;border:2.5px solid rgba(255,255,255,.85);background:radial-gradient(circle at 35% 35%,#f1d693,#b88a3e 60%,#6e4d1a);color:#1a0d04;font-weight:700;font-size:14px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 4px #0000001f,0 2px 6px #00000059;transition:transform .22s cubic-bezier(.34,1.56,.64,1),border-color .22s,box-shadow .22s}.tuner-peg:hover{transform:scale(1.06)}.tuner-peg.is-active{border-color:#c75c2c;transform:scale(1.12);box-shadow:0 0 0 4px #c75c2c52,0 0 18px #c75c2c8c,0 2px 8px #00000073}.tuner-peg.is-locked{border-color:#3a8e4f;box-shadow:0 0 0 4px #3a8e4f52,0 0 18px #3a8e4f73,0 2px 8px #00000073}.tuner-peg-label{pointer-events:none}.tuner-peg-tick{position:absolute;top:-6px;right:-6px;width:22px;height:22px;pointer-events:none;filter:drop-shadow(0 1px 3px rgba(0,0,0,.4));animation:tuner-peg-pop .32s cubic-bezier(.34,1.56,.64,1)}@keyframes tuner-peg-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.18);opacity:1}to{transform:scale(1);opacity:1}}.tuner-headstock-placeholder{width:100%}.tuner-headstock-placeholder-frame{width:100%;aspect-ratio:280 / 380;border:2px dashed var(--rule);border-radius:14px;background:linear-gradient(180deg,#fdfbf6,#f7f2e8);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 18px;color:var(--muted)}.tuner-headstock-placeholder-icon{font-size:36px;margin-bottom:12px}.tuner-headstock-placeholder-title{font-weight:700;color:var(--ink);font-size:14px;margin-bottom:8px}.tuner-headstock-placeholder-hint{font-size:12px;line-height:1.5}.tuner-headstock-placeholder-hint code{background:var(--warm);padding:1px 5px;border-radius:3px;font-size:11px}.tuner-peg-wrap{position:absolute;width:0;height:0}.tuner-peg-wrap>.tuner-peg{position:absolute;margin-left:-22px;margin-top:-22px;left:0;top:0}.celebration-burst{position:absolute;left:0;top:0;pointer-events:none;z-index:10}.celebration-particle{position:absolute;left:0;top:0;width:7px;height:7px;margin-left:-3.5px;margin-top:-3.5px;border-radius:50%;opacity:0;animation:celebration-fly .9s cubic-bezier(.2,.7,.3,1) forwards;box-shadow:0 0 6px currentColor}@keyframes celebration-fly{0%{transform:translate(0) scale(.6) rotate(0);opacity:0}10%{transform:translate(calc(var(--dx) * .15),calc(var(--dy) * .15)) scale(1.2) rotate(calc(var(--rot) * .2));opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.4) rotate(var(--rot));opacity:0}}.cents-meter{width:100%;display:flex;flex-direction:column;gap:14px}.cents-meter-notes{display:flex;align-items:baseline;justify-content:center;gap:12px;height:88px;font-family:Playfair Display,Georgia,serif;font-weight:900;letter-spacing:-1px;-webkit-user-select:none;user-select:none}.cents-meter-note{display:inline-flex;align-items:baseline;line-height:1;transition:color .22s,opacity .22s,font-size .22s}.cents-meter-note.is-center{letter-spacing:-3px}.cents-meter-note-octave{font-size:.4em;margin-left:.15em;opacity:.7;letter-spacing:0}.cents-meter-scale{position:relative;padding:12px 0 22px}.cents-meter-track{position:relative;height:10px;background:#efeae0;border-radius:5px;overflow:visible}.cents-meter-tick{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:#2a2a2a;border-radius:1px}.cents-meter-tick.is-zero{background:#3a8e4f;width:3px;margin-left:-1.5px;top:-8px;bottom:-8px}.cents-meter-needle{position:absolute;top:-22px;bottom:-22px;width:5px;margin-left:-2.5px;border-radius:3px;transition:left .18s cubic-bezier(.25,.46,.45,.94),background .22s,box-shadow .22s;box-shadow:0 0 0 2px #fffffff2,0 0 12px currentColor;z-index:2}.cents-meter-needle.is-in{box-shadow:0 0 0 2px #fffffff2,0 0 18px #3a8e4f,0 0 28px #3a8e4f99}.cents-meter-labels{position:relative;height:14px;margin-top:6px}.cents-meter-label{position:absolute;top:0;transform:translate(-50%);font-size:11px;font-weight:600;color:#888;-webkit-user-select:none;user-select:none}.cents-meter-label.is-zero{color:#3a8e4f}.cents-meter-readouts{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:4px}.cents-meter-readout{display:flex;flex-direction:column;font-variant-numeric:tabular-nums}.cents-meter-readout-right{text-align:right}.cents-meter-readout-value{font-size:22px;font-weight:700;color:var(--ink);line-height:1}.cents-meter-readout-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#888;margin-top:4px}.cents-meter-arrow{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;flex:1;text-align:center;min-height:16px}.tuner-hz-adjust{display:inline-flex;align-items:center;gap:6px;padding:4px 6px;background:var(--warm);border:1px solid var(--rule);border-radius:999px;font-variant-numeric:tabular-nums}.tuner-hz-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:var(--surface);color:var(--ink);font-size:16px;font-weight:700;width:28px;height:28px;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 1px 2px #00000014;transition:background .12s,transform .12s}.tuner-hz-btn:hover{background:var(--warm);transform:scale(1.06)}.tuner-hz-btn:active{transform:scale(.96)}.tuner-hz-value{display:flex;flex-direction:column;align-items:center;line-height:1;padding:0 4px;min-width:56px}.tuner-hz-num{font-size:16px;font-weight:700;color:var(--ink)}.tuner-hz-unit{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:2px}.tuner-hz-reset{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer;padding:0 6px;text-decoration:underline}.tuner-hz-reset:hover{color:var(--ink)}html[data-theme=dark] .filter-select.active select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23111114' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>")}html[data-theme=dark] .filter-search{background:var(--card)}html[data-theme=dark] .message.success{background:#18352d;border-color:#2a5e4f;color:#8fd9c5}html[data-theme=dark] .message.error{background:#3a1a20;border-color:#6a2a35;color:#f0bac4}html[data-theme=dark] .abc-view-warnings{background:#3a2e1a;border-color:#6a5320;color:#f0d28a}html[data-theme=dark] .multi-stem-player-error{background:#3a1a20;border-color:#6a2a35;color:#f0bac4}html[data-theme=dark] .featured-song-card-preview{background:var(--card)}html[data-theme=dark] .tuner-meter-track,html[data-theme=dark] .cents-meter-track{background:var(--warm)}html[data-theme=dark] .tuner-readout{background:var(--card)}html[data-theme=dark] .about-this-tune-body code{background:#ffffff14}html[data-theme=dark] .practice-bar{background:#3c3c44f0}
