:root{--bg:#f6f4ef;--card:#fff;--ink:#1d1b2e;--muted:#5d5a70;--brand:#3b2f8f;--brand-ink:#fff;--accent:#c9922e;--line:#ddd9ea;--ok:#1d7a46;--err:#b3261e;--warn:#8a5a00;--warnbg:#fff3d6;--jub:#c9622e;--ado:#3b6fb3;--radius:14px;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
@media (prefers-color-scheme:dark){:root{--bg:#14121f;--card:#1e1b2e;--ink:#eeeaf7;--muted:#a9a4c0;--brand:#8b7cf0;--brand-ink:#14121f;--line:#35304d;--warnbg:#3a2f12;--warn:#f0c869;--ok:#5fd18f;--err:#ff8a80}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.hdr{background:var(--brand);color:var(--brand-ink);padding:.6rem 1rem;display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;position:sticky;top:0;z-index:20}
.logo{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.25rem;text-decoration:none}.logo svg{width:34px;height:34px}
.hdr .sp{flex:1}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .7rem;border-radius:99px;font-size:.85rem;font-weight:600;background:rgba(255,255,255,.18)}
.chip i{width:.6rem;height:.6rem;border-radius:50%;background:#5fe08f}.chip.off i{background:#ffb74d}
.who{font-size:.95rem}.who small{opacity:.8;margin-left:.3rem}
nav.main{display:flex;gap:.4rem;padding:.5rem 1rem;background:var(--card);border-bottom:1px solid var(--line);overflow-x:auto}
nav.main a{white-space:nowrap;text-decoration:none;padding:.65rem 1rem;border-radius:10px;font-weight:600;min-height:44px;display:inline-flex;align-items:center}
nav.main a.act{background:var(--brand);color:var(--brand-ink)}
main{max-width:1000px;margin:0 auto;padding:1rem 1rem 5rem}
@media(max-width:720px){nav.main{position:fixed;bottom:0;left:0;right:0;z-index:20;border-top:1px solid var(--line);border-bottom:0;justify-content:space-around;padding:.3rem}nav.main a{padding:.5rem .6rem;font-size:.82rem;flex-direction:column;text-align:center;line-height:1.15}}
.bar{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;font-size:.9rem;color:var(--muted);padding:.5rem 1rem;max-width:1000px;margin:0 auto}
.banner{margin:.5rem 1rem;max-width:968px;margin-inline:auto;padding:.7rem 1rem;border-radius:10px;background:var(--warnbg);color:var(--warn);font-size:.95rem}
h1{font-size:1.6rem;margin:.3rem 0 1rem}h2{font-size:1.25rem;margin:1.4rem 0 .6rem}
.grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}
.stat{text-align:center}.stat b{display:block;font-size:2rem;color:var(--brand)}
a.card{text-decoration:none;display:block;min-height:64px}a.card:hover{border-color:var(--brand)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:46px;padding:.55rem 1.1rem;border-radius:10px;border:1px solid var(--brand);background:var(--brand);color:var(--brand-ink);font-weight:600;cursor:pointer;text-decoration:none}
.btn.sec{background:transparent;color:var(--ink);border-color:var(--line)}.btn.danger{background:var(--err);border-color:var(--err);color:#fff}.btn.sm{min-height:38px;padding:.3rem .8rem;font-size:.9rem}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.row.sp{justify-content:space-between}
input[type=text],input[type=password],input[type=search],select,textarea{width:100%;padding:.65rem .8rem;border:1px solid var(--line);border-radius:10px;background:var(--card);min-height:46px}
label{display:block;font-weight:600;margin:.8rem 0 .25rem}
.list{display:grid;gap:.5rem}.item{display:flex;gap:.7rem;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.7rem 1rem;min-height:58px;text-decoration:none}
.item .t{flex:1;font-weight:600}.badge{font-size:.78rem;padding:.15rem .6rem;border-radius:99px;color:#fff;font-weight:600}.badge.j{background:var(--jub)}.badge.a{background:var(--ado)}
.badge.n{background:var(--muted)}.ord{width:2rem;height:2rem;border-radius:50%;background:var(--line);display:grid;place-items:center;font-weight:700;font-size:.9rem;flex:none}
.empty{text-align:center;color:var(--muted);padding:2rem 1rem}
pre.cancion{font-family:var(--mono);font-size:var(--fs,16px);line-height:1.35;white-space:pre;overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin:.8rem 0;tab-size:4;-webkit-overflow-scrolling:touch}
textarea.cancion{font-family:var(--mono);white-space:pre;overflow:auto;min-height:340px;line-height:1.35}
.meta{color:var(--muted);font-size:.88rem}
table{width:100%;border-collapse:collapse;background:var(--card);border-radius:12px;overflow:hidden}th,td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--line);font-size:.95rem}.tw{overflow-x:auto}
#toasts{position:fixed;left:0;right:0;bottom:5rem;display:grid;gap:.5rem;justify-items:center;z-index:60;pointer-events:none;padding:0 1rem}
.toast{pointer-events:auto;background:#1d1b2e;color:#fff;padding:.7rem 1.1rem;border-radius:10px;max-width:520px;box-shadow:0 4px 16px #0004}.toast.err{background:var(--err)}.toast.ok{background:var(--ok);color:#fff}
.ov{position:fixed;inset:0;background:#0008;display:grid;place-items:center;z-index:50;padding:1rem}.modal{background:var(--card);border-radius:var(--radius);padding:1.2rem;max-width:480px;width:100%;max-height:90vh;overflow:auto}
.modal h3{margin:0 0 .6rem}.modal .row{justify-content:flex-end;margin-top:1rem}
.load{display:grid;place-items:center;min-height:50vh;color:var(--muted)}.spin{width:36px;height:36px;border:4px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:s 1s linear infinite;margin:auto}@keyframes s{to{transform:rotate(360deg)}}
.login{max-width:420px;margin:8vh auto;padding:0 1rem}.err{color:var(--err)}.ok{color:var(--ok)}
#print-area{display:none}
@media print{body>*:not(#print-area){display:none!important}#print-area{display:block;color:#000;background:#fff}#print-area h1{font-size:20pt}#print-area h2{font-size:15pt;border-bottom:2px solid #000;margin-top:1.2rem;break-after:avoid}
#print-area .song{break-inside:auto;margin-bottom:1rem}#print-area .song h3{font-size:13pt;margin:.8rem 0 .2rem;break-after:avoid}#print-area pre{font-family:var(--mono);font-size:10pt;white-space:pre-wrap;word-break:break-word;margin:0;border:0;padding:0}
#print-area ol{font-size:12pt}}
