:root{color-scheme:light;--paper:#ffffff;--surface:#ffffff;--sink:#f1f1f1;--ink:#141414;--muted:#6a6a6a;--edge:#e4e4e4;--claret:#c0141d;--chord:#c0141d;--heart:#c0141d;--focus:#c0141d;--font-ui:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-serif:"Literata",Georgia,"Times New Roman",serif;--font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--wrap:640px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body,html{background:#ffffff}body{margin:0;color:var(--ink);font-family:var(--font-serif)}.app{max-width:var(--wrap);margin:0 auto;min-height:100dvh}button{background:none;border:0;cursor:pointer;touch-action:manipulation}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:3px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.bar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 90%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(8px);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--edge);padding:calc(env(safe-area-inset-top) + 10px) 16px 10px}.kicker{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--claret)}h1.title{font-weight:700;font-size:1.15rem;letter-spacing:.01em;margin:2px 0 0}.search,h1.title{font-family:var(--font-ui)}.search{width:100%;margin-top:12px;padding:11px 14px;background:var(--surface);border:1px solid var(--edge);border-radius:11px;font-size:1rem}.search::placeholder{color:var(--muted)}.search:focus,.search:focus-visible{outline:none;border-color:var(--muted)}.tabs{display:flex;gap:8px;margin-top:10px}.tab{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding:7px 12px;border:1px solid var(--edge);border-radius:999px;color:var(--muted);background:var(--surface)}.tab[aria-selected=true]{background:var(--claret);border-color:var(--claret);color:var(--paper)}.list{list-style:none;margin:0;padding:4px 0 8px}.list li+li .row{border-top:1px solid var(--edge)}.row{display:flex;align-items:baseline;gap:14px;width:100%;text-align:left;padding:14px 16px}.row:active{background:var(--sink)}.row .n{flex:0 0 2.4ch;font-family:var(--font-mono);font-size:.82rem;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.row .body{flex:1 1 auto;min-width:0}.row .t{display:block;font-family:var(--font-ui);font-weight:600;font-size:1.03rem;line-height:1.3}.row .s{display:block;font-family:var(--font-mono);font-size:.74rem;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .h{flex:0 0 auto;font-size:1.12rem;color:var(--edge);align-self:center;line-height:1;padding:6px;margin:-6px}.row .h.on{color:var(--heart)}.empty{text-align:center;color:var(--muted);font-family:var(--font-ui);font-size:.95rem;line-height:1.6;padding:64px 28px}.foot{display:flex;flex-wrap:wrap;gap:10px;padding:14px 16px calc(env(safe-area-inset-bottom) + 28px);border-top:1px solid var(--edge)}.foot .lnk{flex:1 1 auto;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:10px 8px;border:1px solid var(--edge);border-radius:10px;white-space:nowrap}.foot .lnk,.note{color:var(--muted);text-align:center}.note{font-family:var(--font-ui);font-size:.76rem;padding:0 24px calc(env(safe-area-inset-bottom) + 24px);margin:0}.sbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.back{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--claret);padding:6px 4px 6px 0}.seg-ctl{display:flex;align-items:stretch;border:1px solid var(--edge);border-radius:10px;overflow:hidden;background:var(--surface)}.seg-ctl button{padding:8px 13px;font-family:var(--font-ui);font-weight:700;font-size:1rem;line-height:1}.seg-ctl button:active{background:var(--sink)}.seg-ctl .rd{display:flex;align-items:center;justify-content:center;min-width:3.6em;font-family:var(--font-mono);font-size:.78rem;color:var(--claret);border-inline:1px solid var(--edge);padding:0 4px}.grow{flex:1 1 auto}.chip{padding:8px 10px;border:1px solid var(--edge);border-radius:10px;background:var(--surface);font-size:1rem;line-height:1}.chip.on{color:var(--heart);border-color:var(--heart)}.sheet{padding:20px 16px 0}.sheet .kicker{margin-bottom:6px}h2.song-title{font-family:var(--font-ui);font-weight:700;font-size:1.5rem;line-height:1.15;letter-spacing:.005em;margin:0;text-wrap:balance;color:var(--claret)}.src{font-size:.8rem;color:var(--muted);margin:8px 0 0}.capo,.src{font-family:var(--font-mono)}.capo{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin:10px 0 0;padding-top:8px;border-top:1px solid var(--edge)}.song-body{margin-top:22px;font-size:1.06rem;line-height:1.55}.stanza{margin:0 0 1.25em}.ln{display:flex;gap:.5em;align-items:flex-start}.body.nomk .mk{display:none}.mk{flex:0 0 1.5em;font-family:var(--font-mono);font-size:.72em;color:var(--muted);padding-top:.35em}.lnb{flex:1 1 auto;min-width:0}.ln.r-W{box-shadow:inset 2px 0 0 var(--claret);padding-left:10px;margin-left:-12px}.ln.r-W .lnb{font-weight:500}.seg{display:inline-block;vertical-align:bottom}.seg .ch{display:block;font-family:var(--font-mono);font-weight:600;font-size:.68em;line-height:1.2;color:var(--chord);white-space:pre;min-height:1.35em;letter-spacing:.01em}.seg .ly{display:block}.plain,.seg .ly{white-space:pre-wrap;overflow-wrap:anywhere}.pager{display:flex;gap:1px;margin-top:36px;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);background:var(--edge)}.pager button{flex:1 1;min-width:0;background:var(--paper);padding:16px 14px;text-align:left}.pager button:last-child{text-align:right}.pager button:active{background:var(--sink)}.pager .dir{display:block;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--claret)}.pager .pt{display:block;font-family:var(--font-ui);font-weight:600;font-size:.9rem;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pager button:disabled{opacity:.34}.tail{height:calc(env(safe-area-inset-bottom) + 48px)}.form{padding:18px 16px calc(env(safe-area-inset-bottom) + 40px);gap:16px}.field,.form{display:flex;flex-direction:column}.field{gap:6px}.field label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.field input,.form textarea{background:var(--surface);border:1px solid var(--edge);border-radius:10px;padding:11px 13px;font-size:1rem;width:100%}.form textarea{font-family:var(--font-mono);font-size:.9rem;line-height:1.6;min-height:220px;resize:vertical}.help{font-family:var(--font-ui);font-size:.8rem;line-height:1.65;color:var(--muted);margin:0}.help b{color:var(--ink);font-weight:600}.row-btn{display:flex;gap:10px}.btn{flex:1 1;padding:13px;border-radius:11px;font-family:var(--font-ui);font-weight:700;font-size:.92rem;background:var(--claret);color:var(--paper);border:1px solid var(--claret)}.btn.warn{background:var(--surface);color:var(--heart);border-color:var(--heart)}.app.has-bnav{padding-bottom:calc(env(safe-area-inset-bottom) + 62px)}.bnav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:var(--wrap);display:flex;z-index:40;background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-top:1px solid var(--edge);padding-bottom:env(safe-area-inset-bottom)}.bnav-item{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px 8px;color:var(--muted)}.bnav-item.on{color:var(--claret)}.bnav-ic{font-size:1.25rem;line-height:1}.bnav-lb{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase}.sf{margin-top:12px}.sf-row{position:relative}.sf .search{margin-top:0;padding-right:40px}.sf-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:8px;color:var(--muted);font-size:.9rem}.sf-clear:active{background:var(--sink)}.seg2{display:flex;margin-top:8px;border:1px solid var(--edge);border-radius:10px;overflow:hidden;background:var(--surface)}.seg2 button{flex:1 1;padding:8px 10px;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.seg2 button+button{border-left:1px solid var(--edge)}.seg2 button.on{background:var(--claret);color:var(--paper)}.wide-btn{display:block;width:calc(100% - 32px);margin:14px 16px 4px;padding:13px;border:1px solid var(--edge);border-radius:12px;background:var(--surface);font-family:var(--font-ui);font-weight:600;font-size:.95rem;text-align:center}.wide-btn:active{background:var(--sink)}.sect{margin-top:14px}.sect-h{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--claret);margin:0;padding:0 16px 4px}.empty.sm{padding:18px 24px 8px;font-size:.85rem}.rescount{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0;padding:12px 16px 0}.groups{padding:6px 0 8px}.grp+.grp{border-top:1px solid var(--edge)}.grp-h{display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left}.grp-h:active{background:var(--sink)}.grp-t{flex:1 1 auto;font-family:var(--font-ui);font-weight:700;font-size:1.05rem}.grp-c{font-family:var(--font-mono);font-size:.8rem;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.grp-x{font-family:var(--font-mono);font-size:1.1rem;color:var(--claret);width:1ch;text-align:center}.grp .list{border-top:1px solid var(--edge);background:color-mix(in srgb,var(--sink) 45%,transparent)}.tiles{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;padding:16px}.tile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:116px;padding:14px;border:1px solid var(--edge);border-radius:14px;background:var(--surface);text-align:left}.tile:active{background:var(--sink)}.tile-ic{font-size:1.5rem;line-height:1;color:var(--claret)}.tile-t{font-family:var(--font-ui);font-weight:700;font-size:1rem;line-height:1.2;margin-top:auto}.tile-s{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.03em;color:var(--muted)}.wide-btn.accent{color:var(--paper);background:var(--claret);border-color:var(--claret);font-weight:700}.bar .wide-btn{width:100%;margin:12px 0 2px}.n2{font-family:var(--font-mono);font-size:.8em;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.setlist .row{gap:8px}.setlist .row .body{padding:2px 0}.rowctl{display:flex;align-items:center;gap:2px;flex:0 0 auto}.rowctl button{width:34px;height:34px;border-radius:8px;font-size:.8rem;color:var(--muted)}.rowctl button:active{background:var(--sink)}.rowctl button:disabled{opacity:.3}.rowctl .x{color:var(--heart)}.pick{flex:0 0 auto;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:1px solid var(--edge);border-radius:999px;font-size:.9rem;color:var(--muted);align-self:center}.pick.on{background:var(--claret);border-color:var(--claret);color:var(--paper)}.chip.warn-x{color:var(--heart);border-color:var(--heart)}.splash{position:fixed;inset:0;z-index:9999;background:#ffffff;display:grid;place-items:center;overflow:auto;padding:max(env(safe-area-inset-top),20px) 18px max(env(safe-area-inset-bottom),20px);opacity:1;transition:opacity .6s ease}.splash.out{opacity:0;pointer-events:none}.splash-inner{margin:auto;width:100%;max-width:540px;text-align:center;animation:splashIn .7s ease both}@keyframes splashIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.splash-title{margin:0;font-family:var(--font-ui);font-weight:700;color:var(--claret);font-size:clamp(1.6rem,7.4vw,3.4rem);line-height:1.04;letter-spacing:-.02em;overflow-wrap:normal;word-break:normal;-webkit-hyphens:none;hyphens:none}.splash-sub{margin:1.3em 0 0;font-size:clamp(.62rem,3vw,.92rem);line-height:1.4;letter-spacing:.03em}.splash-sub,.splash-year{font-family:var(--font-ui);font-weight:700;color:var(--ink)}.splash-year{margin:clamp(1.8em,8vw,3.2em) 0 0;text-align:center;font-size:.88rem}@media (prefers-reduced-motion:reduce){.splash{transition:none}.splash-inner{animation:none}}