/* Festival hub (live board + twelve-month wall) and festival pages. */
.fest-hero .open-now-title{color:var(--on-text)}
.fest-hero .fest-title{font-size:clamp(56px,7.4vw,118px);line-height:.92;max-width:11ch}
.fest-hero .clock-big,.fest-hero .clock-date,.fest-hero .clock-phase,.fest-hero .open-now-lede,.fest-hero .open-now-eyebrow,.fest-hero .breadcrumbs,.fest-hero .breadcrumbs a{color:var(--on-text)}

.fest-wall{padding:clamp(64px,7vw,110px) 0;background:var(--chalk)}
.wall{border-top:2px solid var(--ink)}
.wall-month{display:grid;grid-template-columns:160px minmax(0,1fr);gap:28px;padding:22px 0;border-bottom:1px solid var(--line);position:relative}
.wall-month-name{display:flex;flex-direction:column;font-family:var(--display);font-weight:400;line-height:.9;text-transform:uppercase}
.wall-month-name b{font-weight:400;font-size:clamp(44px,4.6vw,68px);letter-spacing:-.01em}
.wall-month-name i{font-style:normal;font-family:var(--body);font-size:12px;font-weight:600;letter-spacing:.12em;margin-top:8px;color:var(--muted)}
.wall-month.is-now{background:linear-gradient(90deg,rgba(237,86,47,.10),transparent 70%)}
.wall-month.is-now::before{content:'This month';position:absolute;left:0;top:-11px;padding:3px 10px;background:var(--orange);color:var(--ink);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.wall-month.is-now .wall-month-name b{color:var(--orange)}
.wall-tickets{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;align-content:start}
.wall-month.is-quiet{padding:14px 0}.wall-month.is-quiet .wall-month-name b{font-size:clamp(30px,3vw,44px);color:var(--muted)}.wall-empty{align-self:center;padding:14px 0;color:var(--muted);font-size:14px;border-top:2px dashed var(--line)}

.wall-ticket{display:grid;grid-template-columns:86px minmax(0,1fr);grid-template-rows:1fr auto;background:var(--paper);border:1.5px solid var(--ink);color:var(--ink);text-decoration:none;transition:transform .25s ease,box-shadow .25s ease;min-width:0}
.wall-ticket:hover{transform:translateY(-3px) rotate(-.4deg);box-shadow:6px 6px 0 var(--ink)}
.wall-date{grid-row:1 / 3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:var(--orange);border-right:2px dashed var(--ink);font-family:var(--display);text-transform:uppercase}
.wall-date b{font-weight:400;font-size:44px;line-height:.9}
.wall-date small{font-family:var(--body);font-size:10px;font-weight:700;letter-spacing:.12em}.wall-date i{font-style:normal;font-size:16px;letter-spacing:.06em}
.wall-body{display:flex;flex-direction:column;gap:5px;padding:14px 16px 10px;min-width:0}
.wall-body strong{font-family:var(--display);font-weight:400;font-size:24px;line-height:1.02;text-transform:uppercase;overflow-wrap:normal}
.wall-ko{font-size:13px;color:var(--muted)}
.wall-where{font-size:12.5px;line-height:1.5;color:var(--muted)}
.wall-stub{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 16px;border-top:1px dashed var(--line);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.wall-stub em{font-style:normal}
.wall-stub span{color:var(--muted)}
.wall-ticket[data-state=on] .wall-stub{background:var(--ink);color:var(--chalk)}
.wall-ticket[data-state=on] .wall-stub em::before{content:'';display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:var(--orange);animation:fest-pulse 1.6s ease-in-out infinite}
.wall-ticket[data-state=soon] .wall-stub em{color:#a93618}
.wall-ticket[data-state=ended]{opacity:.55}
.wall-ticket.is-pending{background:transparent;border-style:dashed}
.wall-ticket.is-pending .wall-date{background:var(--sand)}
.wall-ticket.is-cont .wall-date{background:var(--chalk)}
@keyframes fest-pulse{50%{opacity:.25}}
body.reduced-motion .wall-ticket[data-state=on] .wall-stub em::before,body.motion-paused .wall-ticket[data-state=on] .wall-stub em::before{animation:none}
@media(prefers-reduced-motion:reduce){.wall-ticket[data-state=on] .wall-stub em::before{animation:none}.wall-ticket:hover{transform:none}}

.festival-nature{padding-block:24px 40px}.festival-nature h2{font-family:var(--display);font-size:clamp(34px,3.6vw,52px);font-weight:400;line-height:1.04;text-transform:uppercase;margin:24px 0 16px}.festival-nature>p{max-width:60ch}.festival-nature a{text-decoration:underline;text-underline-offset:4px}
.fest-foot{padding-bottom:64px}

/* Festival page: an admission ticket. */
.fest-detail-hero{padding:clamp(28px,4vw,48px) 0 clamp(40px,5vw,70px);background:var(--ink);color:var(--chalk)}
.fest-detail-hero .breadcrumbs,.fest-detail-hero .breadcrumbs a{color:var(--chalk)}
.fest-admit{display:grid;grid-template-columns:minmax(0,1fr) 260px;margin-top:28px;background:var(--chalk);color:var(--ink);border:2px solid var(--chalk);box-shadow:0 30px 80px -20px rgba(237,86,47,.35)}
.fest-admit-main{padding:clamp(24px,3.4vw,48px);min-width:0}
.fest-admit-title{font-family:var(--display);font-weight:400;font-size:clamp(46px,6.4vw,104px);line-height:.92;text-transform:uppercase;margin:18px 0 10px;overflow-wrap:normal}
.fest-admit-lede{margin-top:18px;max-width:52ch;font-size:17px;line-height:1.7}
.fest-admit-stub{position:relative;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:28px 26px;background:var(--orange);border-left:3px dashed var(--ink);font-family:var(--display);text-transform:uppercase}
.fest-admit-stub::before,.fest-admit-stub::after{content:'';position:absolute;left:-15px;width:26px;height:26px;border-radius:50%;background:var(--ink)}
.fest-admit-stub::before{top:-14px}.fest-admit-stub::after{bottom:-14px}
.fest-admit-stub small{font-family:var(--body);font-size:11px;font-weight:700;letter-spacing:.14em}
.fest-admit-stub b{font-weight:400;font-size:clamp(84px,8vw,120px);line-height:.85}
.fest-admit-stub i{font-style:normal;font-size:28px;line-height:1}
.fest-admit-stub span{font-family:var(--body);font-size:13px;font-weight:600;letter-spacing:.04em}
.fest-admit-stub em{margin-top:12px;padding:8px 10px;background:var(--ink);color:var(--chalk);font-family:var(--body);font-style:normal;font-size:12px;font-weight:700;letter-spacing:.08em}
.fest-admit-stub[data-state=on] em{background:var(--ink);color:var(--orange)}

@media(max-width:800px){
  .wall-month{grid-template-columns:minmax(0,1fr);gap:12px}
  .wall-month-name{flex-direction:row;align-items:baseline;gap:12px}
  .wall-tickets{grid-template-columns:minmax(0,1fr)}
  .fest-admit{grid-template-columns:minmax(0,1fr)}
  .fest-admit-title{font-size:clamp(36px,10.5vw,64px)}
  .fest-admit-stub{border-left:0;border-top:3px dashed var(--ink);flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:6px 12px}
  .fest-admit-stub::before,.fest-admit-stub::after{display:none}
  .fest-admit-stub b{font-size:72px}
  .fest-admit-stub em{flex-basis:100%}
}
.fest-photo{margin-top:-28px;position:relative;z-index:1}
.fest-photo img{display:block;width:auto;max-width:100%;max-height:68vh;height:auto;border:2px solid var(--ink);box-shadow:10px 10px 0 var(--orange)}
.fest-photo figcaption{margin-top:12px;font-size:12px;color:var(--muted)}
.fest-photo figcaption a{text-decoration:underline;text-underline-offset:3px}
:lang(es) .wall-month.is-now::before{content:'Este mes'}
