@font-face { font-family: 'Grenze Gotisch'; src: url('../webfonts/grenze-gotisch-semibold.ttf') format('truetype'); font-style: normal; font-weight: 600; font-display: swap; }
/* The shared ticket stylesheet owns the event shell, header, facts, booking and footer. */
body.ball-body { --ticket-ink: #4b2432; --ticket-paper: #f8f4ec; --ticket-muted: #706169; --ticket-line: #e3d8da; --ball-gold: #846434; --ball-display-font: 'Grenze Gotisch', Georgia, serif; }
.ball-body .ticket-languages button[aria-pressed="true"] { color: white !important; }
.ball-body h1, .ball-body main h2, .ball-body main h3 { font-family: var(--ball-display-font); font-weight: 600; letter-spacing: 0; }
html[lang="ru"] .ball-body { --ball-display-font: 'Cabinet Grotesk', Arial, sans-serif; }
html[lang="ru"] .ball-body h1, html[lang="ru"] .ball-body main h2, html[lang="ru"] .ball-body main h3, html[lang="ru"] .ball-body .ticket-date-art > strong { font-family: var(--ball-display-font); font-weight: 900; }
.ball-body .ticket-hero h1 { font-size: clamp(3.8rem, 6.3vw, 6rem); line-height: .95; letter-spacing: -.02em; }
.ball-body .ticket-hero h1 > span { color: #79384a; }
.ball-body .ball-invitation { font-family: 'Cabinet Grotesk', Arial, sans-serif; font-size: 1.15rem; font-weight: 700; line-height: 1.4; margin: 0 0 1rem; }
.ball-body .ticket-tagline { font-size: 1rem; }
.ball-actions { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.ball-actions .ticket-pill { font-size: .8rem; gap: 1rem; min-height: 44px; }
.ball-body .ticket-hero-date { margin: 1.2rem 0 0; font-size: .85rem; font-weight: 700; }
.ball-body .ball-poster img { width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; object-position: center; border-radius: 3px; }
.ball-body section[id] { scroll-margin-top: 1.5rem; }
.ball-section-intro { max-width: 760px; }
.ball-section-intro h2, .ball-dress h2 { font-size: clamp(2.6rem, 4vw, 3.5rem); line-height: 1.05; margin: .9rem 0 1.5rem; }
.ball-section-intro p:not(.ticket-eyebrow) { color: var(--ticket-muted); max-width: 650px; }
.ball-program { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 2.5rem; border: 1px solid #684250; background: #40202d; color: #f2e7d1; }
.ball-program article { border-bottom: 1px solid #684250; padding: 1.8rem; }
.ball-program article:not(:nth-child(3n+1)) { border-left: 1px solid #684250; }
.ball-program article:nth-last-child(-n+3) { border-bottom: 0; }
.ball-chapter { color: #d6b777; font-size: .65rem; letter-spacing: .08em; }
.ball-body .ball-program h3 { color: #f2e7d1; font-size: 2rem; line-height: 1.1; margin: .7rem 0 1rem; }
.ball-program p { color: #e1d1c8; font-size: .95rem; margin: 0; }
.ball-body .ball-fine { font-size: .78rem; color: var(--ticket-muted); line-height: 1.5; margin: .8rem 0 0; }
.ball-body .ball-program .ball-fine { color: #d2bdaa; }
.ball-aside { color: var(--ticket-muted); font-size: .84rem; font-style: italic; margin-top: 1.4rem !important; }
.ball-feast-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1.5rem; }
.ball-feast-gallery img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; object-position: center; border-radius: 3px; }
.ball-dress { margin-top: 3.5rem; padding-top: 2.5rem; border-top: 1px solid var(--ticket-line); }
.ball-dress-copy { display: grid; grid-template-columns: 1.15fr .85fr; column-gap: 3rem; }
.ball-dress-copy > p, .ball-dress-copy > h2 { grid-column: 1; }
.ball-dress-copy > p:not(.ticket-eyebrow) { color: var(--ticket-muted); }
.ball-workshop { grid-column: 2; grid-row: 1 / 5; border-left: 2px solid #c2a87e; padding-left: 1.5rem; align-self: start; }
.ball-workshop h3 { font-size: 1.9rem; line-height: 1.1; margin-bottom: .8rem; }
.ball-workshop p { font-size: .93rem; }
.ball-costume-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1.8rem; }
.ball-costume-gallery figure { margin: 0; }
.ball-costume-gallery img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; object-position: center 25%; border-radius: 3px; }
.ball-costume-gallery figure:nth-child(5) img { object-position: center; }
.ball-releases { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); list-style: none; padding: 0; margin: 1.8rem 0; border: 1px solid var(--ticket-line); }
.ball-releases li { padding: 1.3rem; position: relative; display: flex; flex-direction: column; }
.ball-releases li.is-current { background: #f4eadc; box-shadow: inset 0 3px 0 #846434; }
.ball-releases li.is-current .ball-release-number { color: #715023; font-weight: 700; }
.ball-releases li + li { border-left: 1px solid var(--ticket-line); }
.ball-releases li + li::before { content: '→'; position: absolute; left: -.65rem; top: 50%; width: 1.3rem; background: #fffef9; text-align: center; color: var(--ball-gold); }
.ball-release-number { color: var(--ticket-muted); font-size: .63rem; letter-spacing: .05em; }
.ball-releases h3 { font-size: 1.65rem; line-height: 1.2; margin: .6rem 0 1.1rem; }
.ball-releases .ball-release-dates { font-size: .8rem; line-height: 1.5; color: var(--ticket-muted); margin: 0 0 1rem; }
.ball-releases li > strong { margin-top: auto; }
.ball-releases strong, .ball-community-ticket > strong { font-size: 2.3rem; font-weight: 500; line-height: 1; color: var(--ticket-ink); }
.ball-community-ticket { display: flex; justify-content: space-between; gap: 1.5rem; align-items: center; border: 1px solid var(--ticket-line); padding: 1.5rem; background: #f7f0e7; }
.ball-community-ticket h3 { font-size: 1.9rem; line-height: 1.1; margin: 0 0 .6rem; }
.ball-community-ticket p { margin: 0 0 .6rem; font-size: .9rem; }
.ball-community-ticket .ticket-eyebrow { font-size: .65rem; }
.ball-sales-state { margin-top: 1.7rem; padding-top: 1.5rem; border-top: 1px solid var(--ticket-line); display: grid; grid-template-columns: 1fr 290px; align-items: center; gap: 2rem; }
.ball-sales-state p { color: var(--ticket-muted); font-size: .85rem; margin: .4rem 0 0; }
.ball-body .ticket-primary:disabled { opacity: .6; font-size: .75rem; }
.ball-tickets #booking-status { margin-top: 1rem; }
.ball-faq { max-width: 760px; margin-top: 2.6rem; }
.ball-faq h2 { font-size: 2rem; line-height: 1.1; }
.ball-faq summary { min-height: 44px; padding-block: .5rem; }
.ball-body .ticket-venue { background: #eee3df; }
.ball-body .ticket-date-art { background: #4b2432; }
.ball-body .ticket-date-art > strong { color: #e0c58e; font-family: var(--ball-display-font); font-size: clamp(2rem, 4vw, 3.5rem); font-weight: 600; letter-spacing: 0; }
@media (max-width: 980px) { .ball-releases li { padding: 1rem; } .ball-program article { padding: 1.4rem; } }
@media (max-width: 736px) {
  .ball-body .ticket-header nav { order: 3; width: 100%; justify-content: space-between; }
  .ball-body .ticket-hero h1 { font-size: clamp(3.5rem, 13vw, 5rem); }
  .ball-body .ball-poster img { aspect-ratio: 1; }
  .ball-program { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ball-program article { padding: 1.3rem 1rem; }
  .ball-program article:not(:nth-child(3n+1)) { border-left: 0; }
  .ball-program article:nth-child(even) { border-left: 1px solid #684250; }
  .ball-program article:nth-last-child(-n+3) { border-bottom: 1px solid #684250; }
  .ball-program article:nth-last-child(-n+2) { border-bottom: 0; }
  .ball-body .ball-program h3 { font-size: 1.8rem; } .ball-chapter { font-size: .58rem; } .ball-program p { font-size: .87rem; }
  .ball-dress-copy { display: block; } .ball-workshop { margin-top: 1.7rem; } .ball-costume-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
  .ball-tickets .ticket-embedded-heading { flex-direction: column; gap: 1rem; }
  .ball-releases { grid-template-columns: 1fr; }
  .ball-releases li { display: grid; grid-template-columns: 1fr auto; column-gap: .5rem; align-items: center; padding: 1.2rem; }
  .ball-releases li + li { border-left: 0; border-top: 1px solid var(--ticket-line); }
  .ball-releases li + li::before { content: '↓'; top: -.8rem; left: calc(50% - .65rem); }
  .ball-release-number { grid-column: 1; } .ball-releases h3 { grid-column: 1; margin: .35rem 0 0; } .ball-releases .ball-release-dates { grid-column: 1; margin: .5rem 0 0; } .ball-releases strong { grid-column: 2; grid-row: 1 / 4; font-size: 2rem; margin-top: 0; }
  .ball-community-ticket { padding: 1.2rem; flex-wrap: wrap; } .ball-community-ticket > strong { font-size: 2rem; } .ball-sales-state { grid-template-columns: 1fr; gap: 1rem; }
}
@media (max-width: 380px) { .ball-program { grid-template-columns: 1fr; } .ball-program article:nth-child(even) { border-left: 0; } .ball-program article:nth-last-child(2) { border-bottom: 1px solid #684250; } }
@media (max-width: 480px) {
  html[lang="ru"] .ball-section-intro h2, html[lang="ru"] .ball-dress h2 { font-size: 2.3rem; }
  html[lang="ru"] .ball-program { grid-template-columns: 1fr; }
  html[lang="ru"] .ball-program article:nth-child(even) { border-left: 0; }
  html[lang="ru"] .ball-program article:not(:last-child) { border-bottom: 1px solid #684250; }
}
