/* Opera Duo pilot. Programme-only styling; navigation and footer inherit the
   established site styles. Tokens and content measure follow Tango Tenors. */
.duo-catalogue {
  --duo-rule: rgba(229,231,236,.16);
  width: min(1100px, calc(100% - 48px));
  margin-inline: auto;
  padding: 168px 0 64px;
  color: var(--text);
}
.duo-page #top.duo-catalogue > section {
  width: 100%;
  margin: 0;
  padding: 36px 0;
  background: none;
  border: 0;
}
.duo-page #top.duo-catalogue > .duo-introduction { padding: 0 0 32px; }
.duo-kicker { margin: 0 0 14px; font-size: .76rem; letter-spacing: .11em; color: var(--gold); }
.duo-title { font: 400 var(--rg-type-page-title)/1.13 var(--ff-title); color: var(--text); }
.duo-subtitle { margin: 15px 0 6px; font: 400 clamp(1.25rem,2vw,1.65rem)/1.4 var(--ff-title); }
.duo-artistic-subtitle { margin-top: 14px; color: var(--text-dim); font-size: 1rem; max-width: 650px; }
.duo-role { color: var(--text-dim); font-size: .94rem; line-height: 1.6; }
.duo-catalogue h2 { margin: 0 0 20px; color: var(--text); font: 400 clamp(1.65rem,2.5vw,2.3rem)/1.2 var(--ff-title); }
.duo-catalogue h3 { color: var(--text); font: 400 1.5rem/1.25 var(--ff-title); }
.duo-catalogue p { line-height: 1.7; }
.duo-catalogue section[id], .duo-catalogue details[id] { scroll-margin-top: 148px; }
.duo-page #top.duo-catalogue > .duo-live { padding: 0 0 36px; }
.duo-live__media, .duo-live__poster, .duo-live__player { position: relative; display: block; width: 100%; aspect-ratio: 16/9; background: #101014; }
.duo-live__poster { border: 0; padding: 0; cursor: pointer; color: var(--text); }
.duo-live__poster img, .duo-live__player iframe { display: block; width: 100%; height: 100%; border: 0; object-fit: contain; }
.duo-live__play { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; border: 1px solid var(--text); background: rgba(15,15,19,.85); font-size: 1.25rem; }
.duo-live__copy { margin-top: 16px; }
.duo-catalogue .duo-live__copy h2 { margin: 0 0 6px; font-size: clamp(1.45rem,2vw,1.8rem); line-height: 1.25; }
.duo-live__meta { margin-top: 8px; color: var(--text-dim); font-size: .9rem; }
.duo-live__meta span { display: block; }
.duo-facts { display: grid; grid-template-columns: 1fr 1fr 1.3fr; gap: 32px; padding: 24px 0; border-block: 1px solid var(--duo-rule); }
.duo-facts dt { margin-bottom: 12px; color: var(--gold); font-size: .83rem; }
.duo-facts dd { margin: 0; color: var(--text-dim); font-size: .98rem; line-height: 1.7; }
.duo-catalogue details > summary { cursor: pointer; min-height: 48px; padding: 14px 0; color: var(--text); line-height: 1.5; }
.duo-practical { margin-top: 10px; border-bottom: 1px solid var(--duo-rule); }
.duo-formats { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 32px; padding-block: 18px; }
.duo-format h3 { font-size: 1.3rem; margin-bottom: 6px; }
.duo-format span { color: var(--gold); font-size: .87rem; }
.duo-format p { margin-top: 10px; color: var(--text-dim); font-size: .94rem; }
.duo-tech-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 32px; padding-block: 14px; }
.duo-tech-list > div { padding: 14px 0; border-top: 1px solid var(--duo-rule); color: var(--text-dim); line-height: 1.6; font-size: .94rem; }
.duo-tech-list strong { font-weight: 400; color: var(--text); }
.duo-concept { max-width: 780px; }
.duo-concept p { color: var(--text-dim); margin-top: 12px; }
.duo-note { margin: 0 0 18px; max-width: 780px; color: var(--text-dim); font-size: .94rem; }
.duo-rep-list { border-top: 1px solid var(--duo-rule); margin-top: 24px; }
.duo-rep-item { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--duo-rule); align-items: baseline; }
.duo-rep-number { color: var(--text-faint); font-size: .8rem; font-variant-numeric: tabular-nums; }
.duo-rep-item strong { display: block; color: var(--text); font: 400 1.4rem/1.3 var(--ff-title); }
.duo-rep-item > div > span { display: block; color: #d2cec6; font-size: .94rem; line-height: 1.7; margin-top: 4px; }
.duo-duet-label { margin-left: 12px; color: var(--gold); font: 400 .8rem/1.5 var(--ff-body); letter-spacing: .035em; text-transform: uppercase; }
/* Extras stay available without JavaScript. The control enables collapse. */
.duo-rep-list.is-collapsible:not(.is-expanded) .duo-rep-item--extra { display: none; }
.duo-rep-toggle { display: none; margin-top: 24px; cursor: pointer; }
.duo-rep-toggle.is-ready { display: inline-flex; gap: 14px; align-items: center; }
.duo-artists { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 48px; }
.duo-artist { padding-top: 4px; }
.duo-artist__role { display: block; margin: 8px 0 16px; color: var(--gold); font-size: .87rem; }
.duo-artist p + p { margin-top: 24px; }
.duo-artist p { color: var(--text-dim); margin-top: 12px; font-size: .98rem; }
.duo-artist a, .duo-press a, .duo-email, .duo-back { color: var(--text); text-underline-offset: 5px; }
.duo-press__inner { border-block: 1px solid var(--duo-rule); padding-block: 30px; }
.duo-press__quote { max-width: 850px; margin: 0; }
.duo-press__quote > p { font: 400 clamp(1.5rem,2.5vw,2.1rem)/1.45 var(--ff-title); }
.duo-press__credit { display: flex; flex-wrap: wrap; gap: 6px 16px; color: var(--text-dim); font-size: .87rem; line-height: 1.6; margin-top: 18px; }
.duo-press__credit cite { color: var(--text); font-style: normal; }
.duo-press__links { background: transparent; border: 0; box-shadow: none; padding: 0; display: flex; flex-wrap: wrap; gap: 16px 26px; margin-top: 24px; font-size: .9rem; }
.duo-page #top.duo-catalogue > .duo-seasonal { padding-block: 32px; }
.duo-seasonal .duo-kicker { color: var(--gold); margin-bottom: 12px; }
.duo-catalogue .duo-seasonal h2 { margin-bottom: 12px; }
.duo-seasonal-dates { color: var(--text-dim); font-size: .9rem; margin-top: 10px; }
.duo-seasonal-price { color: var(--text); font: 400 1.6rem/1.35 var(--ff-title); margin: 18px 0 10px; }
.duo-seasonal .duo-christmas__tagline { max-width: 640px; font-size: 1rem; }
.duo-seasonal details > summary { display: flex; align-items: center; gap: 16px; width: fit-content; min-height: 48px; padding: 10px 0; color: var(--text); list-style: none; font-size: .94rem; }
.duo-seasonal summary::-webkit-details-marker { display: none; }
.duo-seasonal-collapse { display: none; }
.duo-seasonal details[open] .duo-seasonal-expand { display: none; }
.duo-seasonal details[open] .duo-seasonal-collapse { display: inline; }
.duo-seasonal-symbol { color: #c696a0; font-size: 1.25rem; line-height: 1; }
.duo-seasonal details[open] .duo-seasonal-symbol { visibility: hidden; position: relative; }
.duo-seasonal details[open] .duo-seasonal-symbol::after { content: '−'; visibility: visible; position: absolute; inset: 0; }
.duo-seasonal-description { margin: 15px 0; }
.duo-christmas__artists { color: var(--text); }
.duo-christmas__artists span { margin-left: 12px; color: var(--text-dim); font-size: .87rem; }
.duo-christmas__tagline { color: var(--text-dim); }
.duo-seasonal-content { display: grid; grid-template-columns: 1.5fr 1fr; gap: 40px; padding-bottom: 16px; }
.duo-seasonal-content p { color: var(--text-dim); margin: 10px 0; font-size: .94rem; }
.duo-price > span { display: block; color: var(--text-dim); font-size: .87rem; line-height: 1.6; }
.duo-price > span:first-child { display: none; }
.duo-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 28px; margin-top: 24px; }
.duo-final .duo-lead { color: var(--text-dim); max-width: 680px; }
.duo-email { overflow-wrap: anywhere; font-size: .98rem; }
.duo-back { display: block; margin-top: 24px; font-size: .9rem; }
.duo-catalogue :is(a,button,summary):focus-visible { outline: 2px solid var(--gold); outline-offset: 5px; }
@media(max-width:700px) {
  .duo-catalogue { width: calc(100% - 32px); padding-top: 166px; padding-bottom: 36px; }
  .duo-page #top.duo-catalogue > section { width: 100%; padding-block: 28px; }
  .duo-page #top.duo-catalogue > .duo-introduction { padding-top: 0; }
  .duo-page #top.duo-catalogue > .duo-live { padding-top: 0; }
  .duo-title { font-size: 2.3rem; }
  .duo-subtitle { font-size: 1.35rem; }
  .duo-facts, .duo-formats, .duo-tech-list, .duo-artists, .duo-seasonal-content { grid-template-columns: 1fr; gap: 22px; }
  .duo-facts > div + div { border-top: 1px solid var(--duo-rule); padding-top: 20px; }
  .duo-facts dt { margin-bottom: 7px; }
  .duo-tech-list { gap: 0; }
  .duo-christmas__artists span { display: block; margin-left: 0; }
  .duo-actions { align-items: flex-start; flex-direction: column; gap: 20px; }
  .duo-actions .btn-primary, .duo-price .btn-secondary { width: 100%; justify-content: center; text-align: center; }
  .duo-rep-toggle { max-width: 100%; white-space: normal; line-height: 1.6; }
  .duo-live__play { width: 52px; height: 52px; }
  .duo-press__links { flex-direction: column; gap: 6px; align-items: flex-start; }
  .duo-press__links a { display: inline-flex; align-items: center; min-height: 44px; line-height: 1.6; }
  .duo-live__meta, .duo-press__credit, .duo-seasonal-dates, .duo-price > span { font-size: .875rem; }
  .duo-artist p, .duo-seasonal-content p, .duo-final .duo-lead { font-size: 1rem; line-height: 1.7; }
  .duo-catalogue .duo-artists { row-gap: 40px; }
  .duo-artist p + p { margin-top: 24px; }
  .duo-page .duo-catalogue .btn-primary, .duo-page .duo-catalogue .btn-secondary, .duo-page .duo-catalogue .program-card-cta {
    min-height: 48px; padding: 12px 16px; font-family: var(--ff-body); font-size: .875rem; line-height: 1.5; letter-spacing: .02em; text-transform: none;
  }
  .duo-catalogue .duo-email, .duo-catalogue .duo-back { min-height: 44px; display: inline-flex; align-items: center; font-size: .94rem; margin-top: 0; }
  .duo-catalogue .duo-back { margin-top: 0; }
  .duo-catalogue .duo-actions { gap: 8px; }
  .duo-seasonal details > summary { font-size: .94rem; }

}
/* The shared mobile button rule fixes 11.84px with !important. A scoped
   important layer overrides only those three values, without changing shared
   CSS or escalating selector specificity through unrelated modal IDs. */
@layer duo-mobile-readability {
  @media(max-width:700px) {
    .duo-catalogue :is(.btn-primary,.btn-secondary,.program-card-cta) {
      font-size: .875rem !important;
      line-height: 1.5 !important;
      letter-spacing: .02em !important;
    }
  }
}
