:root{
  --paper:#F5F5F9; --surface:#FFFFFF; --surface-2:#ECEDF3; --sunk:#E3E4EC;
  --ink:#0D0E14; --ink-2:#3B3E4E; --muted:#71748A;
  --line:#DCDDE7; --line-strong:#B5B8C7;
  --azul:#1B3AD6; --azul-ink:#1B3AD6; --azul-soft:#E4E9FC;
  --danger:#B3261E;
  --logo-filter:none;
  --shadow:0 1px 2px rgba(13,14,20,.06), 0 8px 24px -18px rgba(13,14,20,.5);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0A0B10; --surface:#14161F; --surface-2:#1B1E29; --sunk:#0F1118;
    --ink:#F1F2F8; --ink-2:#C6C9D8; --muted:#8F93A9;
    --line:#262A38; --line-strong:#3B4054;
    --azul:#7F95FF; --azul-ink:#A8B6FF; --azul-soft:#1A2149;
    --danger:#FF8A80;
    --logo-filter:invert(1);
    --shadow:0 1px 2px rgba(0,0,0,.5), 0 10px 30px -20px #000;
  }
}
:root[data-theme="dark"]{
  --paper:#0A0B10; --surface:#14161F; --surface-2:#1B1E29; --sunk:#0F1118;
  --ink:#F1F2F8; --ink-2:#C6C9D8; --muted:#8F93A9;
  --line:#262A38; --line-strong:#3B4054;
  --azul:#7F95FF; --azul-ink:#A8B6FF; --azul-soft:#1A2149;
  --danger:#FF8A80;
  --logo-filter:invert(1);
  --shadow:0 1px 2px rgba(0,0,0,.5), 0 10px 30px -20px #000;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"Archivo","Helvetica Neue",Arial,sans-serif;
  font-size:15px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0; text-wrap:balance}
a{color:inherit}
button{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--azul); outline-offset:2px; border-radius:2px}
@media (prefers-reduced-motion:reduce){*{animation:none !important; transition:none !important}}

.disp{font-family:"Jost","Century Gothic",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.14em}
.lbl{font-family:"Jost","Century Gothic",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.18em; font-size:10px; color:var(--muted)}
.mono{font-family:"JetBrains Mono",ui-monospace,Menlo,monospace; font-variant-numeric:tabular-nums}

/* ---------- chrome ---------- */
.bar{
  position:sticky; top:0; z-index:20; background:var(--surface);
  border-bottom:1px solid var(--line);
}
.bar-in{max-width:1120px; margin:0 auto; padding:10px 20px; display:flex; align-items:center; gap:18px}
.brand{display:flex; align-items:center; gap:11px; min-width:0; text-decoration:none}
.brand img{height:19px; width:auto; filter:var(--logo-filter); display:block}
.brand .nm{font-size:12.5px; white-space:nowrap; color:var(--ink)}
.tabs{display:flex; gap:2px; margin-left:auto}
.tab{
  border:0; background:none; padding:9px 14px 8px; cursor:pointer;
  font-family:"Jost",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.16em; font-size:11px;
  color:var(--muted); border-bottom:3px solid transparent; text-decoration:none;
}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--ink); border-bottom-color:var(--ink)}
@media (max-width:560px){
  .brand .nm{display:none}
  /* Cuatro tabs a tracking completo no entran en un teléfono: se comprimen,
     y si aun así no entran scrollean dentro del header en vez de romper la página. */
  .bar-in{gap:10px; padding:10px 14px}
  .tabs{overflow-x:auto; scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{padding:9px 7px 8px; font-size:10px; letter-spacing:.06em; white-space:nowrap}
}
.savebox{display:flex; align-items:center; gap:10px}
.savestate{font-size:11px; color:var(--muted); white-space:nowrap}
.savestate.err{color:var(--danger)}

/* ---------- botones ---------- */
.btn{
  border:1px solid var(--line-strong); background:var(--surface); border-radius:3px;
  padding:7px 13px; cursor:pointer; font-size:13px; font-weight:500;
  display:inline-flex; align-items:center; gap:7px; white-space:nowrap;
  text-decoration:none;
}
.btn:hover{background:var(--surface-2)}
.btn[disabled]{opacity:.42; cursor:default}
.btn-solid{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.btn-solid:hover{background:var(--ink-2); border-color:var(--ink-2)}
.btn-ghost{border-color:transparent; background:none; color:var(--muted); padding:5px 8px}
.btn-ghost:hover{background:var(--surface-2); color:var(--ink)}
.btn-danger{color:var(--danger); border-color:transparent; background:none}
.btn-danger:hover{background:var(--surface-2)}
.btn-sm{padding:4px 9px; font-size:12px}
.btn-lg{
  padding:13px 26px;
  font-family:"Jost","Helvetica Neue",Arial,sans-serif; font-weight:500;
  text-transform:uppercase; letter-spacing:.14em; font-size:12px;
}
.icon{width:26px; height:26px; padding:0; justify-content:center; font-size:13px; line-height:1}

/* ---------- layout ---------- */
main{max-width:1120px; margin:0 auto; padding:26px 20px 90px}
main.narrow{max-width:720px}
.head{display:flex; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:18px}
.head h1{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.1em; font-size:22px}
.head .sub{font-size:13px; color:var(--muted)}
.spacer{margin-left:auto}
.stack{display:flex; flex-direction:column; gap:8px}
.row{display:flex; align-items:center; gap:10px}
.wrap{flex-wrap:wrap}

.card{background:var(--surface); border:1px solid var(--line); border-radius:4px; overflow:hidden}
.empty{
  border:1px dashed var(--line-strong); border-radius:4px; padding:34px 22px;
  text-align:center; color:var(--muted); font-size:14px;
}

/* ---------- repertorio ---------- */
.song{display:flex; align-items:center; gap:14px; padding:11px 14px}
.song .t{font-weight:600; font-size:15px}
.song .meta{font-size:12px; color:var(--muted); display:flex; gap:12px; flex-wrap:wrap; margin-top:1px}
.song .note{font-size:12.5px; color:var(--ink-2); margin-top:4px; max-width:62ch}
.grow{flex:1; min-width:0}
.key{
  font-family:"JetBrains Mono",monospace; font-weight:700; font-size:13px;
  border:1px solid var(--line-strong); border-radius:3px; padding:4px 9px; min-width:44px; text-align:center;
  background:var(--surface-2);
}
.times{font-size:11px; font-weight:700; color:var(--azul-ink); background:var(--azul-soft); border-radius:3px; padding:2px 6px}

/* ---------- formularios ---------- */
.form{padding:14px; border-top:1px solid var(--line); background:var(--sunk); display:grid; gap:12px}
.fields{display:flex; flex-wrap:wrap; gap:10px 12px; align-items:flex-end}
.f-title{flex:1 1 240px}
.f-date{flex:0 0 150px}
.f-venue{flex:1 1 180px}
.f-num{flex:0 0 92px}
.f{display:flex; flex-direction:column; gap:5px; min-width:0}
input,select,textarea{
  font:inherit; color:var(--ink); background:var(--surface);
  border:1px solid var(--line-strong); border-radius:3px; padding:7px 9px; width:100%;
}
textarea{resize:vertical; min-height:58px}
input::placeholder,textarea::placeholder{color:var(--muted)}
.keypick{display:flex; gap:6px}
.keypick select{width:auto; min-width:66px}
.field-error{color:var(--danger); font-size:12px}
.summary-error{border:1px solid var(--danger); border-radius:4px; padding:10px 12px; margin-bottom:14px; color:var(--danger); font-size:13px}

/* ---------- recis ---------- */
.setcard{display:flex; align-items:center; gap:16px; padding:15px 16px; width:100%; text-align:left; border:0; background:none; cursor:pointer; text-decoration:none; color:inherit}
.setcard:hover{background:var(--surface-2)}
.setcard .nm{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.09em; font-size:17px}
.setcard .dt{font-size:12.5px; color:var(--muted); margin-top:2px}
.count{font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--muted); text-align:right; white-space:nowrap}

.seg{display:inline-flex; border:1px solid var(--line-strong); border-radius:3px; overflow:hidden}
.seg a, .seg button{
  border:0; background:var(--surface); padding:7px 16px; cursor:pointer;
  font-family:"Jost",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.16em; font-size:11px; color:var(--muted);
  text-decoration:none;
}
.seg a + a, .seg button + button{border-left:1px solid var(--line-strong)}
.seg a.active, .seg button.active{background:var(--ink); color:var(--paper)}

.build{display:grid; grid-template-columns:1fr 1.25fr; gap:18px; align-items:start}
@media (max-width:860px){.build{grid-template-columns:1fr}}
.pane h2{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.16em; font-size:11px; color:var(--muted); margin-bottom:8px}

.pick{display:flex; align-items:center; gap:10px; padding:8px 11px; border-bottom:1px solid var(--line)}
.pick:last-child{border-bottom:0}
.pick .t{font-size:14px}
.pick.in .t{color:var(--muted)}

.item{display:flex; align-items:center; gap:11px; padding:9px 11px; border-bottom:1px solid var(--line); background:var(--surface)}
.item:last-child{border-bottom:0}
.item.drag{opacity:.35}
.item.over{box-shadow:inset 0 2px 0 var(--azul)}
.num{
  flex:none; width:26px; height:26px; background:var(--ink); color:var(--paper);
  display:grid; place-items:center; font-family:"JetBrains Mono",monospace; font-weight:700; font-size:12px;
}
.handle{cursor:grab; color:var(--muted); font-size:15px; line-height:1; user-select:none; padding:0 2px}
.totals{
  display:flex; align-items:baseline; gap:14px; padding:10px 12px;
  border-bottom:1px solid var(--line); background:var(--surface-2); font-size:12.5px; color:var(--muted);
}
.totals b{font-family:"JetBrains Mono",monospace; font-size:15px; color:var(--ink); font-weight:700}

.notice{
  background:var(--azul-soft); border:1px solid var(--azul); border-radius:4px;
  padding:11px 14px; font-size:13px; color:var(--ink); margin-bottom:18px;
  display:flex; gap:12px; align-items:center; flex-wrap:wrap;
}

/* ---------- login ---------- */
.loginwrap{min-height:calc(100vh - 60px); display:flex; align-items:center; justify-content:center; padding:20px}
.loginbox{width:100%; max-width:340px; background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:28px 26px; text-align:center}
.loginbox img{height:40px; width:auto; filter:var(--logo-filter); margin-bottom:18px}
.loginbox h1{font-size:16px; margin-bottom:18px}
.loginbox input{text-align:center; letter-spacing:.08em; margin-bottom:12px}
.loginbox .btn{width:100%; justify-content:center}

/* ---------- home pública ---------- */
.hero{padding:60px 0 40px; text-align:center}
.hero img{height:64px; width:auto; filter:var(--logo-filter); margin-bottom:22px}
.hero h1{font-size:15px; color:var(--muted); font-weight:400; max-width:44ch; margin:0 auto; text-transform:none; letter-spacing:0}
.section-title{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.14em; font-size:13px; color:var(--muted); margin:0 0 14px}

/* ---------- hojas imprimibles ---------- */
.sheetwrap{display:flex; justify-content:center}
.sheet{
  background:#fff; color:#000; width:210mm; min-height:297mm; padding:16mm 15mm;
  box-shadow:var(--shadow); border:1px solid var(--line);
  display:flex; flex-direction:column;
  -webkit-print-color-adjust:exact; print-color-adjust:exact;
}
@media (max-width:900px){
  .sheet{width:100%; min-height:0; padding:9mm 8mm}
  .sheetwrap{overflow-x:auto}
}
.sh-head{display:flex; align-items:flex-start; gap:14px; border-bottom:3px solid #000; padding-bottom:9px}
.sh-head img{height:34px; width:auto}
.sh-head .nm{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.1em; font-size:19px; color:#000}
.sh-head .mt{font-family:"Jost",sans-serif; text-transform:uppercase; letter-spacing:.16em; font-size:10px; color:#555; margin-top:3px}
.sh-head .rt{margin-left:auto; text-align:right; font-family:"JetBrains Mono",monospace; font-size:10px; color:#555; line-height:1.6}
.sh-foot{
  margin-top:auto; padding-top:9px; border-top:1px solid #000;
  font-family:"Jost",sans-serif; text-transform:uppercase; letter-spacing:.18em; font-size:8.5px; color:#666; text-align:center;
}

.piso{flex:1; display:flex; flex-direction:column; justify-content:center; gap:var(--gap,6px); padding:8mm 0}
.piso .r{display:flex; align-items:center; gap:14px; border-bottom:1px solid #ddd; padding-bottom:var(--gap,6px)}
.piso .r:last-child{border-bottom:0}
.piso .n{
  flex:none; background:#000; color:#fff; display:grid; place-items:center;
  width:var(--nsz,38px); height:var(--nsz,38px);
  font-family:"JetBrains Mono",monospace; font-weight:700; font-size:calc(var(--nsz,38px)*.46);
}
.piso .t{
  flex:1; font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.02em;
  font-size:var(--tsz,30px); line-height:1.08; color:#000; word-break:break-word;
}
.piso .k{
  flex:none; font-family:"JetBrains Mono",monospace; font-weight:700;
  font-size:calc(var(--tsz,30px)*.72); color:#000; letter-spacing:-.02em;
}

.ficha{flex:1; padding-top:12px; display:flex; flex-direction:column; gap:5px}
.ficha .r{display:flex; align-items:flex-start; gap:13px; background:#f2f2f2; padding:9px 12px}
.ficha .n{
  flex:none; width:24px; height:24px; border-radius:50%; background:#000; color:#fff;
  display:grid; place-items:center; font-family:"JetBrains Mono",monospace; font-weight:700; font-size:11px; margin-top:1px;
}
.ficha .t{flex:1; font-size:15px; font-weight:600; color:#000}
.ficha .nt{font-size:11.5px; color:#444; margin-top:3px; line-height:1.4}
.ficha .rt{flex:none; text-align:right; display:flex; align-items:center; gap:10px}
.ficha .kk{font-family:"JetBrains Mono",monospace; font-weight:700; font-size:14px; border:1px solid #000; padding:3px 8px; min-width:46px; text-align:center; background:#fff}
.ficha .dd{font-family:"JetBrains Mono",monospace; font-size:11px; color:#444; min-width:62px; text-align:right; line-height:1.5}

.rd-chan{width:100%; border-collapse:collapse; font-size:11.5px; color:#000}
.rd-chan th{background:#000; color:#fff; font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.1em; font-size:10px; text-align:left; padding:6px 8px}
.rd-chan td{border:1px solid #ccc; padding:5px 8px}
.rd-chan tbody tr:nth-child(even){background:#f7f7f7}
.rd-chan .n{font-family:"JetBrains Mono",monospace; font-weight:700; text-align:center; width:44px}
.rd-block-title{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.14em; font-size:10px; color:#555; margin-bottom:6px}
.rd-system{margin-top:14px; padding-bottom:10px; border-bottom:1px solid #000}
.rd-system p{font-size:11.5px; line-height:1.5; color:#000}
.rd-notes{margin-top:14px; padding-top:10px; border-top:1px solid #000}
.rd-notes p{font-size:11.5px; line-height:1.5; color:#000; margin-bottom:8px}
.rd-notes p:last-child{margin-bottom:0}

.rd-format{margin-top:14px; break-inside:avoid}
.rd-format + .rd-format{padding-top:10px; border-top:1px solid #000}
.rd-blurb{font-size:11.5px; line-height:1.5; color:#333; margin:2px 0 8px}
.rd-footnote{font-size:10.5px; line-height:1.4; color:#555; font-style:italic; margin-top:6px}
.rd-venue{margin-top:14px; padding-top:10px; border-top:1px solid #000; break-inside:avoid}
.rd-gear{list-style:none; margin:0; padding:0; columns:2; column-gap:24px; font-size:11.5px; color:#000; line-height:1.7}
.rd-gear li{break-inside:avoid}
.rd-gear li::before{content:"☐ "}
.rd-venue dl{display:grid; grid-template-columns:auto 1fr; gap:4px 14px; margin:0}
.rd-venue dt{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.1em; font-size:9.5px; color:#555; white-space:nowrap}
.rd-venue dd{margin:0; font-size:11.5px; color:#000; line-height:1.5}
.rd-plot{
  font-family:"JetBrains Mono",monospace; font-size:10px; line-height:1.35; color:#000;
  background:#f7f7f7; padding:10px 12px; margin:0; white-space:pre; overflow-x:auto;
}

/* grilla de edición de canales en /admin/rider (no imprimible, sigue el theme) */
.rd-chan-edit{width:100%; border-collapse:collapse; font-size:13px}
.rd-chan-edit th{text-align:left; font-family:"Jost","Century Gothic",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.14em; font-size:10px; color:var(--muted); padding:4px 6px}
.rd-chan-edit td{padding:3px 6px}
.rd-chan-edit input{width:100%}
.rd-chan-edit .rd-num{text-align:center; font-family:"JetBrains Mono",monospace; font-weight:700; color:var(--muted); white-space:nowrap}

/* comparación de versiones en /admin/rider/comparar */
.cmp{width:100%; border-collapse:collapse; font-size:12.5px}
.cmp th{text-align:left; font-family:"Jost","Century Gothic",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.1em; font-size:10px; color:var(--muted); padding:6px 8px; border-bottom:1px solid var(--line)}
.cmp td{padding:6px 8px; border-bottom:1px solid var(--line); vertical-align:top; white-space:pre-wrap}
.cmp tr.cmp-diff td{background:color-mix(in srgb, orange 14%, transparent)}

@media print{
  @page{size:A4; margin:0}
  html,body{background:#fff !important}
  .noprint{display:none !important}
  main{padding:0; max-width:none}
  .sheet{width:auto; min-height:auto; box-shadow:none; border:0; padding:14mm 13mm}
  .rd-format,.rd-venue,.rd-plot{break-inside:avoid}
}

/* ---------- sitio público ---------- */
.site-foot{
  border-top:1px solid var(--line); margin-top:60px; padding:26px 20px 34px;
  display:flex; flex-direction:column; align-items:center; gap:10px; text-align:center;
}
.site-foot img{height:22px; width:auto; filter:var(--logo-filter)}
.site-foot .row{gap:16px}
.site-foot a{font-size:12px; color:var(--muted); text-decoration:none}
.site-foot a:hover{color:var(--ink)}
.site-foot .fine{font-size:11px; color:var(--muted)}

.bio{display:flex; flex-direction:column; gap:10px; max-width:62ch; margin:0 auto; font-size:14px; color:var(--ink-2); text-align:center}

.next-show{
  background:var(--surface); border:1px solid var(--line); border-radius:6px;
  padding:20px 22px; display:flex; align-items:center; gap:18px; flex-wrap:wrap;
  max-width:560px; margin:0 auto;
}
.next-show .info{flex:1; min-width:180px}
.next-show .lbl{margin-bottom:4px}
.next-show .venue{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:16px}
.next-show .place{font-size:12.5px; color:var(--muted); margin-top:2px}

.datebox{
  flex:none; width:58px; text-align:center; background:var(--ink); color:var(--paper);
  border-radius:4px; padding:8px 4px;
  font-family:"JetBrains Mono",monospace;
}
.datebox .d{font-size:20px; font-weight:700; line-height:1}
.datebox .m{font-size:10px; text-transform:uppercase; letter-spacing:.08em; margin-top:2px}

.showcard{
  display:flex; align-items:center; gap:16px; padding:15px 16px;
}
.showcard .datebox{background:var(--azul); color:#fff}
.showcard.past .datebox{background:var(--surface-2); color:var(--muted)}
.showcard .info{flex:1; min-width:0}
.showcard .venue{font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:16px}
.showcard .place{font-size:12.5px; color:var(--muted); margin-top:2px}
.showcard .note{font-size:12.5px; color:var(--ink-2); margin-top:4px}
.showcard .address{display:flex; align-items:center; gap:5px; font-size:12.5px; color:var(--muted); margin-top:4px}
.showcard .address svg{flex:none; width:12px; height:12px}
.showcard.past{opacity:.65}

.linkgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:12px}
.linkcard{
  display:flex; align-items:center; gap:10px; padding:14px 16px;
  background:var(--surface); border:1px solid var(--line); border-radius:5px;
  text-decoration:none; color:var(--ink); font-weight:500; font-size:14px;
  min-width:0; overflow-wrap:anywhere;
}
.linkcard:hover{background:var(--surface-2); border-color:var(--line-strong)}
.linkcard .ico{font-size:17px; flex-shrink:0; width:1.3em; text-align:center; line-height:1}

.embed{position:relative; width:100%; border-radius:6px; overflow:hidden; background:var(--surface-2)}
.embed iframe{width:100%; height:100%; border:0; display:block}
.embed.spotify{aspect-ratio:1/1.15; max-width:420px; margin:0 auto}
.embed.youtube{aspect-ratio:16/9}

/* ---------- home ---------- */
/* El hero y el cierre salen a todo el ancho; el resto respeta el ancho de main. */
html{overflow-x:clip}
main:has(.home-hero){padding-top:0; padding-bottom:0}
/* El cierre ya trae su propio aire: el footer se le pega sin hueco. */
body:has(.home-close) .site-foot{margin-top:0}

.home-bleed,.home-hero,.home-close{
  width:100vw; margin-left:calc(50% - 50vw);
}

.home-hero{
  position:relative; isolation:isolate; overflow:hidden;
  border-bottom:1px solid var(--line);
  min-height:clamp(480px,84vh,860px);
  display:flex; flex-direction:column;
  padding:clamp(56px,9vh,96px) 20px 0;
}
/* Halo de color: el azul de la marca entrando desde arriba. */
.home-hero::before{
  content:""; position:absolute; inset:0; z-index:-3;
  background:
    radial-gradient(115% 80% at 50% -10%, var(--azul-soft) 0%, transparent 60%),
    radial-gradient(90% 55% at 50% 108%, var(--surface-2) 0%, transparent 72%);
}
/* Grano, para que el degradé no se vea plano. */
.home-hero::after{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* Las barras diagonales del logo, repetidas como textura y desvanecidas
   hacia el centro para no pelearse con el texto. */
.home-hero-in::before{
  content:""; position:absolute; inset:-50vh -50vw; z-index:-2; pointer-events:none;
  background:repeating-linear-gradient(
    38deg,
    var(--ink) 0 2px,
    transparent 2px 26px
  );
  opacity:.06;
  -webkit-mask-image:radial-gradient(70% 60% at 50% 45%, transparent 0%, #000 100%);
  mask-image:radial-gradient(70% 60% at 50% 45%, transparent 0%, #000 100%);
}

.home-hero-in{
  position:relative; margin:auto;
  display:flex; flex-direction:column; align-items:center; gap:0; text-align:center;
  max-width:960px;
}
.home-mark{
  width:auto; height:clamp(56px,9vw,104px);
  filter:var(--logo-filter);
  margin-bottom:clamp(18px,3vw,30px);
}
.home-wordmark{
  font-family:"Jost","Helvetica Neue",Arial,sans-serif; font-weight:600;
  text-transform:uppercase; letter-spacing:.03em; line-height:.88;
  font-size:clamp(42px,11.5vw,136px);
  margin:0;
}
.home-tagline{
  margin:clamp(18px,2.6vw,26px) 0 0; max-width:26ch;
  font-family:"Jost","Helvetica Neue",Arial,sans-serif; font-weight:400;
  text-transform:uppercase; letter-spacing:.18em; line-height:1.6;
  font-size:clamp(11px,1.5vw,14px); color:var(--ink-2); text-wrap:balance;
}

/* Cinta al pie del hero: la próxima fecha, sin obligar a scrollear. */
.home-ticker{
  position:relative; margin-top:auto;
  display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap;
  padding:16px 20px; margin-inline:-20px;
  border-top:1px solid var(--line);
  text-decoration:none; color:var(--ink);
  background:color-mix(in srgb, var(--surface) 55%, transparent);
  backdrop-filter:blur(6px);
}
.home-ticker:hover{background:var(--surface)}
.home-ticker .when{font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.06em}
.home-ticker .where{
  font-family:"Jost",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.08em; font-size:13px;
}
.home-ticker .go{color:var(--azul-ink); font-size:15px}

.home-cta-row{display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:clamp(26px,4vw,38px)}
/* Si no hay frase debajo del nombre, los botones necesitan más aire propio. */
.home-wordmark + .home-cta-row{margin-top:clamp(34px,5.5vw,52px)}
/* Los CTA grandes hablan el mismo idioma que los títulos: Jost, caja alta, tracking. Ver .btn-lg. */

.home-sec{margin:clamp(56px,9vw,96px) 0 0}
.home-sec-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding-bottom:12px; margin-bottom:22px; border-bottom:1px solid var(--line);
}
.home-sec-head h2{
  font-family:"Jost","Helvetica Neue",Arial,sans-serif; font-weight:600;
  text-transform:uppercase; letter-spacing:.07em; line-height:1;
  font-size:clamp(26px,5vw,40px);
}
.home-more{
  font-family:"Jost",sans-serif; font-weight:500; text-transform:uppercase; letter-spacing:.14em;
  font-size:11px; color:var(--muted); text-decoration:none; white-space:nowrap;
}
.home-more:hover{color:var(--azul-ink)}
.home-sec-foot{margin-top:16px; text-align:right}

.home-shows{display:flex; flex-direction:column; gap:10px}
.home-show{
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  background:var(--surface); border:1px solid var(--line); border-radius:6px;
  padding:14px 16px;
}
.home-show .info{flex:1; min-width:170px}
.home-show .venue{
  font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.06em;
  font-size:16px; line-height:1.2;
}
.home-show .place{font-size:12.5px; color:var(--muted); margin-top:3px}
.home-show .note{font-size:12.5px; color:var(--ink-2); margin-top:5px}
.home-show .address{display:flex; align-items:center; gap:5px; font-size:12.5px; color:var(--muted); margin-top:3px}
.home-show .address svg{flex:none; width:12px; height:12px}
.home-show .lbl{margin-bottom:5px}

.home-show.lead{
  border-color:var(--azul); box-shadow:var(--shadow);
  padding:22px 22px 22px 20px; gap:20px;
}
.home-show.lead .datebox{background:var(--azul); color:#fff; width:70px; padding:11px 4px}
.home-show.lead .datebox .d{font-size:26px}
.home-show.lead .venue{font-size:clamp(19px,2.6vw,25px)}

.home-noshows{
  border:1px dashed var(--line-strong); border-radius:6px; padding:30px 20px;
  display:flex; flex-direction:column; align-items:center; gap:14px; text-align:center;
}
.home-noshows p{margin:0; color:var(--muted); font-size:14px}

.home-bio{display:flex; flex-direction:column; gap:16px; max-width:68ch}
.home-bio p{margin:0; font-size:clamp(15px,2vw,18px); line-height:1.65; color:var(--ink-2)}
.home-bio p:first-child{color:var(--ink)}

.home-listen{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; align-items:stretch}
.home-listen .embed.spotify{max-width:none; margin:0; aspect-ratio:1/1.18}
/* Las plataformas van en una grilla 2x2 al lado del reproductor,
   centrada en el alto disponible en vez de estirarse hasta llenarlo. */
.home-platforms{grid-template-columns:repeat(2,1fr); grid-auto-rows:min-content; align-content:center; gap:14px}
.home-platforms .linkcard{padding:20px 18px}
@media (max-width:820px){
  .home-listen{grid-template-columns:1fr}
  .home-listen .embed.spotify{max-width:420px; margin:0 auto}
  .home-platforms{grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); grid-auto-rows:auto}
}

.home-close{
  margin-top:clamp(64px,10vw,110px); padding:clamp(44px,7vw,72px) 20px;
  background:var(--surface-2); border-top:1px solid var(--line);
  display:flex; flex-direction:column; align-items:center; gap:14px; text-align:center;
}
.home-close h2{
  font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.06em;
  font-size:clamp(22px,4vw,32px);
}
.home-close p{margin:0; color:var(--muted); font-size:14px}
.home-close .btn{margin-top:6px}

/* Aparición al scrollear. Sin JS nunca se aplica: la clase la pone home.js. */
.js-reveal [data-reveal]{opacity:0; transform:translateY(16px)}
.js-reveal [data-reveal].in{opacity:1; transform:none; transition:opacity .5s ease, transform .5s ease}
@media (prefers-reduced-motion:reduce){
  .js-reveal [data-reveal]{opacity:1; transform:none}
}

/* ---------- contacto ---------- */
.contacto{max-width:720px}
.contacto .card{padding:24px; margin-bottom:30px}
.contacto-lead{
  font-family:"Jost",sans-serif; font-weight:600; text-transform:uppercase;
  letter-spacing:.06em; font-size:17px; margin-bottom:4px;
}
.contacto-desc{font-size:13px; color:var(--muted); margin-bottom:16px}
.contacto .linkgrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
@media (max-width:560px){
  .contacto .linkgrid{grid-template-columns:1fr}
}
