/* The broadcast belongs to the same wood, brass and paper world as the desk. */
/* Move collection extends the existing paper-and-broadcast world: tactical cards
   lead, the working deck sits beside them, and future discoveries stay folded. */
.collection-workshop { display: grid; grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr); gap: 2rem; align-items: start; }
.collection-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem; }
.collection-card { --family-ink: #315845; display: flex; flex-direction: column; min-width: 0; padding: 1rem; border-radius: 12px; background: var(--paper-high); box-shadow: 0 5px 14px #39271924; }
.collection-card--strike, .collection-card--grapple { --family-ink: #732d28; }
.collection-card--defense { --family-ink: #264c67; }
.collection-card--finish { --family-ink: #644509; background: #fff0c3; }
.collection-card__top { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .3rem; padding-bottom: .6rem; margin-bottom: .7rem; border-bottom: 1px solid var(--line); color: var(--family-ink); font-size: .875rem; text-transform: capitalize; font-weight: 700; }
.collection-card h3 { font-size: 1.5rem; line-height: 1.1; }
.collection-card__tactic { font-size: .875rem; margin-bottom: 1rem; }
.collection-card__stats { display: flex; gap: .7rem; margin-top: auto; }
.collection-card__stats .report-row { display: flex; flex-direction: column; flex: 1; gap: .3rem; border: 0; padding: 0; font-size: .875rem; }
.collection-card__stats dd { margin: 0; font-size: 1.2rem; font-weight: 700; }
.collection-card__mastery { margin-bottom: 1rem; font-size: .875rem; }
.collection-card__mastery progress { accent-color: var(--family-ink); width: 100%; height: .6rem; }
.collection-card__mastery .progress { margin-bottom: .4rem; }
.collection-card__uses { display: block; margin-top: .25rem; }
.collection-card .button { width: 100%; font-size: .875rem; min-height: 44px; }
.collection-card .action-reason { margin: .6rem 0 0; font-size: .875rem; }
.collection-card--unlearned { background: var(--paper-low); }
.collection-card__teacher { font-size: .875rem; }
.collection-discovery { margin-top: 1.75rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.collection-discovery summary { cursor: pointer; padding: .6rem 0 1rem; min-height: 44px; font-size: 1.1rem; font-weight: 700; }
.collection-loadout { padding-left: 1.5rem; border-left: 1px solid var(--line); }
.collection-loadout h2 { font-size: 1.65rem; }
.collection-loadout .deck-workbench { grid-template-columns: 1fr; gap: .55rem; }
.collection-loadout .deck-slot { gap: .25rem; }
.collection-loadout :is(.deck-rules, .deck-slot, select) { font-size: .875rem; }
.collection-loadout .deck-select { width: 100%; min-width: 0; min-height: 44px; }
.calendar-pacing { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.calendar-pacing h2 { font-size: 1.6rem; }
.calendar-pacing__action { display: flex; align-items: end; flex-wrap: wrap; gap: 1rem; }
.calendar-pacing__action label { display: grid; gap: .4rem; }
.calendar-pacing select { min-height: 44px; padding: .5rem; color: var(--ink); background: var(--paper-high); border: 1px solid var(--line); border-radius: 6px; }
.calendar-pacing summary { cursor: pointer; min-height: 44px; padding: 1rem 0; font-weight: 700; }
.calendar-pacing__stops { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.calendar-pacing__stops label { display: flex; align-items: center; gap: .5rem; min-height: 44px; }
.calendar-pacing input { width: 1.1rem; height: 1.1rem; accent-color: var(--oxblood); }
.calendar-pacing details > label { display: grid; gap: .4rem; max-width: 100%; }
.calendar-pacing select { max-width: 100%; }
.advance-status { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; padding: 1rem; color: var(--ink); background: var(--paper-high); border: 1px solid var(--line); }
.advance-status p { margin: 0; }
@media (max-width: 60rem) {
  .collection-workshop { grid-template-columns: minmax(0, 1fr); }
  .collection-loadout { border-left: 0; border-top: 1px solid var(--line); padding: 1.5rem 0 0; }
  .collection-loadout .deck-workbench { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 35rem) {
  .collection-grid, .collection-loadout .deck-workbench { grid-template-columns: minmax(0, 1fr); }
}
.screen--match-arena { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, .4fr); gap: .8rem; align-content: start; }
.screen--match-arena > :not(.crt-television):not(.match-broadcast) { grid-column: 1 / -1; }
/* Before the bell there is no vitals column yet, so the second track has nothing in it and the
   television sits squeezed into the first with a dead strip beside it. Give the set the full width
   until the match actually starts. */
.screen--match-arena:not(:has(.match-broadcast)) { grid-template-columns: minmax(0, 1fr); }
.opponent-read { font-size: .78rem; line-height: 1.4; color: #e5cfa7; }
.crt-television { min-width: 0; align-self: start; padding: 1.05rem 1.05rem .25rem; color: #eee0bf; background: linear-gradient(105deg, #3a251c, #67432b 48%, #3c291f); border-radius: 22px; box-shadow: 0 12px 26px #27171350; }
.crt-glass { position: relative; overflow: hidden; isolation: isolate; border: 9px solid #171719; border-radius: 48% / 6%; background: #10151e; }
.crt-glass::after { position: absolute; z-index: 1; inset: 0; content: ''; pointer-events: none; background: repeating-linear-gradient(transparent 0 2px, #070b1540 2px 4px); box-shadow: inset 0 0 38px 16px #03050a75; border-radius: inherit; }
.crt-glass--clear::after { display: none; }
.crt-canvas { display: block; width: 100%; height: clamp(12rem, 29vh, 19rem); object-fit: contain; image-rendering: pixelated; }
.crt-caption { min-height: 5.6rem; display: grid; align-content: center; gap: .35rem; padding: .75rem 1rem; background: #171719; border-radius: 0 0 8px 8px; }
.crt-caption strong { color: #f3d68c; font-family: var(--display); font-size: 1.15rem; }
.crt-caption span { font-size: .9rem; line-height: 1.5; }
.crt-controls { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .35rem .2rem; }
.crt-maker { margin-right: auto; font-size: .7rem; letter-spacing: .1em; font-weight: 800; }
.crt-controls .button { min-height: 44px; padding: .35rem .55rem; color: #eee0bf; font-size: .8rem; }
.crt-controls .button:hover { color: #fff5da; background: #201915; }
.crt-controls .button[aria-pressed=true] { text-decoration: underline; text-underline-offset: .3em; }
.screen--match-arena .match-broadcast { display: flex; flex-direction: column; gap: .6rem; }
.screen--match-arena .match-ring { min-height: 0; grid-template-columns: 1fr 1fr; padding: .7rem; gap: .45rem; border-width: 1px; box-shadow: none; }
.screen--match-arena .match-ring::before, .screen--match-arena .match-ring::after { display: none; }
.screen--match-arena .match-vital { grid-template-columns: 1fr 1.8rem; gap: .2rem; font-size: .8rem; }
.screen--match-arena .match-vital meter { grid-column: 1 / -1; grid-row: 2; margin-bottom: .4rem; height: .7rem; }
.screen--match-arena .match-ring__center { grid-column: 1 / -1; gap: .35rem; padding: .55rem .3rem .2rem; border-top: 1px solid #d2bd8f40; }
.screen--match-arena .match-ring__center .match-kicker, .screen--match-arena .match-last-card { display: none; }
.screen--match-arena .ring-position { font-size: .8rem; }
.screen--match-arena .match-transcript { max-height: 11.8rem; border-top-width: 1px; }
.screen--match-arena .match-transcript__heading .match-kicker { font-size: .8rem; }
.screen--match-arena .match-transcript p { font-size: .8rem; }
.screen--match-arena .match-terminal { position: static; flex-wrap: wrap; grid-column: 1 / -1; padding: .7rem; box-shadow: none; }
.screen--match-arena .match-terminal .button { width: 100%; margin: 0; }
.match-card__tactics { margin-top: .5rem; font-size: .83rem; line-height: 1.45; }
.match-card__range { margin-top: .35rem; font-size: .75rem; line-height: 1.4; color: #604736; }
.match-card__signature { align-self: flex-start; margin: -.3rem 0 .4rem; padding: .15rem .4rem; background: #664919; color: #fff5da; font-size: .7rem; font-weight: 800; }
.match-card--setup { border-top-color: #4c6256; }
.match-card--defense { border-top-color: #325a76; }
.match-card--finish { border-top-color: #9b6b1b; background: #fff0c3; }
.match-card__reason { font-size: .78rem; }
.match-command-zone { margin-top: 0; }
.match-command-heading .match-kicker { display: none; }
.hand-options { margin: .25rem 0 .45rem; color: var(--ink); font-size: .8rem; }
.mobile-ring-summary { display: none; }
.mobile-hand-help { display: none; }
.match-guide { padding: 0 .8rem; background: var(--paper-high); border-radius: 8px; }
.match-guide summary { min-height: 44px; display: list-item; align-content: center; cursor: pointer; font-weight: 700; }
.match-guide p { margin: .4rem 0 .8rem; }
.screen--match-arena .match-card { min-height: 10.5rem; padding: .6rem; }
.screen--match-arena .match-card__name { min-height: 0; margin-bottom: .4rem; }
.screen--match-arena .match-card__family { font-size: .72rem; }
.screen--match-arena .match-card__numbers { font-size: .78rem; }
.screen--match-arena .match-card__tokens, .screen--match-arena .match-card__cooldown { font-size: .75rem; }
.screen--match-arena .match-card__tactics { font-size: .78rem; }
.screen--match-arena .match-card :is(span, strong) { font-size: max(14px, .875rem); }
.screen--match-arena .match-card__name { font-size: 1rem; }
.screen--match-arena > .lesson-note { margin: 0; }
.screen--match-arena .match-title { margin: 0; }
.match-tape { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; margin-bottom: .8rem; }
.match-tape__side { display: grid; grid-template-columns: 3.4rem minmax(0, 1fr); align-items: center; gap: .6rem; min-width: 0; padding: .6rem .75rem; color: var(--paper-high); background: rgba(19, 13, 12, .72); border: 1px solid rgba(237, 202, 115, .24); }
.match-tape__side--opponent { grid-template-columns: minmax(0, 1fr) 3.4rem; text-align: right; }
.match-tape__side--opponent .portrait { order: 2; }
.match-tape__side .portrait { width: 3.4rem; border: 1px solid rgba(237, 202, 115, .45); box-shadow: none; }
.match-tape__sheet { min-width: 0; }
.match-tape h2 { margin: 0 0 .3rem; color: var(--paper-high); font-size: clamp(1rem, 2vw, 1.3rem); }
.match-tape__gimmick { display: block; margin-bottom: .4rem; color: var(--paper-low); font-size: .8rem; }
/* Label and number on one line, the bar full width beneath: a wide label like "Composure" can't squeeze the bar out of its box. */
.match-tape .match-vital { grid-template-columns: minmax(0, 1fr) auto; }
.match-tape .match-vital meter { grid-column: 1 / -1; grid-row: 2; }
.career-arc { margin: 1.5rem 0; padding: 1.25rem 0; border-block: 1px solid var(--line); }
.career-arc__heading { display: flex; gap: 1rem; justify-content: space-between; align-items: baseline; }
.career-arc__heading h2 { margin-bottom: 1rem; }
.career-arc__heading > span { color: var(--ink-soft); font-size: .85rem; white-space: nowrap; }
.career-arc__steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.career-arc__step { min-width: 0; border-top: 2px solid #baa98a; padding: .6rem 0; }
.career-arc__status { display: block; margin-bottom: .3rem; color: var(--ink-soft); font-size: .72rem; }
.career-arc__step strong { display: block; font-family: var(--display); font-size: 1.05rem; }
.career-arc__step p { margin: .4rem 0 0; font-size: .83rem; line-height: 1.45; }
.career-arc__step--current { border-color: var(--oxblood); }
.card-position { margin: 1.5rem 0; padding: 1.25rem 0; border-block: 1px solid var(--line); }
.card-position__cooling { margin: 0 0 1rem; padding: .55rem .8rem; border-left: 4px solid var(--danger); color: var(--danger); font-weight: 700; background: rgba(138, 27, 32, .07); }
.card-position__rows { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.card-position__row { min-width: 0; border-top: 2px solid #baa98a; padding: .6rem 0; }
.card-position__row--top { border-color: var(--brass); }
.card-position__title { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; }
.card-position__promotion { flex-basis: 100%; color: var(--ink-soft); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; }
.card-position__title strong { font-family: var(--display); font-size: 1.15rem; }
.card-position__trend { font-size: .78rem; font-weight: 700; color: var(--ink-soft); }
.card-position__trend--rising { color: #2f5e36; }
.card-position__trend--falling { color: var(--danger); }
.card-position__row p { margin: .4rem 0 0; font-size: .83rem; line-height: 1.45; }
.card-position__above, .card-position__held { color: var(--ink-soft); }
.card-position__offers { margin: 0 0 1rem; padding: .45rem .8rem; border-left: 4px solid var(--brass); font-weight: 700; }
.card-position__demand { font-weight: 700; }
.card-position__demand--thinning { color: var(--danger); }
/* Settled below the peak is a standing state, not an alarm: a dark brass that reads on every paper (4.6:1 on paper-low). */
.card-position__demand--settled { color: #6e4a12; }
.card-position__row details { margin-top: .4rem; font-size: .83rem; }
.card-position__row summary { min-height: 2.75rem; display: flex; align-items: center; color: var(--oxblood); cursor: pointer; }
.career-arc__step--current strong, .career-arc__step--current .career-arc__status { color: var(--oxblood); }
.career-arc__step--achieved { border-color: #3f6452; }
.career-arc__step--achieved .career-arc__status { color: #305640; }
.career-arc__action { display: inline-block; padding-block: .7rem; font-weight: 800; }
.career-arc--compact .career-arc__steps { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .7rem; }
.career-arc--compact .career-arc__step strong { font-size: .95rem; }
.group-card .career-arc__steps { grid-template-columns: 1fr 1fr; }
.group-card .career-arc h2 { font-size: 1.2rem; }
.investment-note { padding: .8rem 0; color: var(--ink-soft); line-height: 1.6; }
.week-close { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.week-close p { margin: 0; font-size: .9rem; }
.week-close a.action-reason { display: inline-flex; align-items: center; min-height: 44px; margin: 0; }
.legacy-story { margin-bottom: 2rem; padding: 1.5rem; color: #f7e9ca; background: #32231e; border-radius: 12px; }
.legacy-story h2 { font-size: clamp(1.5rem, 3vw, 2.8rem); }
.legacy-story a { color: #edca73; }
.legacy-story__moments { margin: 1rem 0; padding-left: 1.2rem; }
.legacy-story__moments li { margin-bottom: .7rem; }
.legacy-story__moments p, .legacy-story__teams p { margin: .3rem 0; font-size: .9rem; }
.legacy-story__closing { font-family: var(--display); font-size: 1.3rem; line-height: 1.6; }
.legacy-story__teams { padding-top: 1rem; border-top: 1px solid #ccb98c40; }
.event-dialogue, .consequence-dialogue { margin: 1.25rem 0; padding: 1.4rem 1.6rem; background: #33221d; color: #fff0d0; border-radius: 12px; }
.event-dialogue__speaker { color: #efd093; font-weight: 800; }
.event-dialogue__quote { margin: .65rem 0; font: 1.35rem/1.6 var(--display); max-width: 60ch; }
.event-dialogue__tone { color: #dfc29f; font-size: .85rem; }
.event-memory { margin: .75rem 0 0; padding-top: .75rem; border-top: 1px solid #cfb18a55; font-size: .9rem; }
.event-follow-up-hook { margin-top: 1.2rem; padding-top: .8rem; border-top: 1px solid var(--line); font-weight: 700; line-height: 1.6; }
.event-choice__response { font-family: var(--display); font-size: 1.05rem; }
@media (max-width: 68rem) {
  .screen--match-arena { grid-template-columns: minmax(0, 1fr) minmax(15rem, .43fr); }
  .crt-television { padding: .7rem .7rem .2rem; }
  .crt-maker { width: 100%; padding-top: .3rem; }
  .crt-caption { padding: .65rem; }
  .career-arc--compact .career-arc__steps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 53rem) {
  .mobile-ring-summary { display: grid; gap: .25rem; margin-bottom: .6rem; padding: .3rem; color: var(--ink); background: var(--paper-high); border-left: 1px solid var(--brass); font-size: .8rem; line-height: 1.4; }
  .mobile-ring-summary p { margin: 0; }
  .mobile-hand-help { display: block; font-size: .8rem; margin: .4rem 0; }
  .screen--match-arena { display: grid; grid-template-columns: minmax(0, 1fr); gap: .5rem; }
  .screen--match-arena .crt-television { grid-column: 1; }
  .screen--match-arena .match-command-zone { grid-row: 5; }
  .screen--match-arena .match-broadcast { grid-column: 1; grid-row: 6; }
  .crt-television { margin-bottom: .8rem; }
  .crt-canvas { height: auto; aspect-ratio: 2; }
  .crt-maker { width: auto; }
  .screen--match-arena .match-broadcast { display: grid; grid-template-columns: 1fr 1fr; }
  .screen--match-arena .match-transcript { max-height: 15rem; }
  .screen--match-arena .match-command-zone { margin-top: .5rem; }
  .career-arc__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 40rem) {
  .screen--match-arena { display: grid; grid-template-columns: minmax(0, 1fr); gap: .4rem; }
  .screen--match-arena .crt-television { grid-column: 1; margin: 0; }
  .screen--match-arena .match-broadcast { grid-column: 1; grid-row: 6; }
  .screen--match-arena .match-command-zone { grid-row: 5; margin-top: .2rem; }
  /* Exactly two whole cards per screen, snapping card to card: 78% columns left the second card cut by the
     screen edge mid-text. The rail's own padding goes so the two columns split the full width. */
  .screen--match-arena .match-hand { grid-auto-columns: calc((100% - .55rem) / 2); padding-inline: 0; scroll-padding-inline: 0; scroll-snap-type: x mandatory; }
  .screen--match-arena .match-card { min-width: 0; padding: .5rem; overflow-wrap: anywhere; scroll-snap-align: start; scroll-snap-stop: always; }
  .screen--match-arena .match-card :is(.match-card__signature, .match-card__numbers) { max-width: 100%; min-width: 0; }
  .crt-glass { border-width: 5px; }
  .crt-caption strong { font-size: 1rem; }
  .crt-caption { min-height: 0; padding: .5rem; }
  .crt-caption span { font-size: .82rem; }
  .crt-maker { display: none; }
  .crt-controls { gap: .55rem; }
  .crt-controls .button { padding-inline: .3rem; font-size: .75rem; }
  .screen--match-arena .match-broadcast { display: flex; }
  .screen--match-arena .match-transcript { max-height: 7rem; }
  .screen--match-arena .match-ring__center { padding-top: .5rem; }
  .match-tape { gap: .5rem; margin-bottom: .5rem; }
  .match-tape__side { grid-template-columns: 2.6rem minmax(0, 1fr); gap: .4rem; padding: .45rem .5rem; }
  .match-tape__side--opponent { grid-template-columns: minmax(0, 1fr) 2.6rem; }
  .match-tape__side .portrait { width: 2.6rem; }
  .match-tape .match-kicker { display: none; }
  .match-tape h2 { font-size: .95rem; }
  .match-tape .match-vital { font-size: .72rem; }
  .career-arc--compact .career-arc__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .career-arc__heading { display: block; margin-bottom: .6rem; }
  .career-arc__heading h2 { margin-bottom: .4rem; }
  .week-close { align-items: stretch; flex-direction: column; }
  .event-dialogue, .consequence-dialogue { padding: 1rem; }
  .event-dialogue__quote { font-size: 1.15rem; }
}
@media (forced-colors: active) {
  .crt-glass::after { display: none; }
  .career-arc__step--current { outline: 2px solid Highlight; }
}
.build-training { margin: 2rem 0; }
.build-training__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1rem; }
.build-training__grid > div { border-top: 1px solid var(--ink-soft); padding-top: .7rem; }
.build-training__grid .button { margin-top: .7rem; }
.collection-card__capability { display: block; color: var(--ink-soft); line-height: 1.5; }
.portrait--illustrated { background-size: 300% 300%; background-repeat: no-repeat; aspect-ratio: 1; border: 2px solid var(--paper-high); border-radius: 3px; }
.prospect-card .portrait--illustrated { width: 100%; max-height: none; aspect-ratio: 1; }
.dossier-profile .portrait--illustrated { width: clamp(6rem, 18vw, 11rem); }
@media (max-width: 640px) {
  .prospect-card .portrait--illustrated { width: 5.25rem; }
}
.dossier-quick-actions { display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; }
.dossier-quick-actions a { display: inline-flex; align-items: center; min-height: 44px; }
.build-training { scroll-margin-top: 1rem; }
.legend-file, .promo-workshop { margin: 2rem 0; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.legend-tier { text-transform: capitalize; color: var(--oxblood); font-family: var(--display); font-size: 1.5rem; font-weight: 700; }
.legend-audience { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .5rem 1.5rem; }
.legend-audience .report-row { display: block; }
.legend-audience dd { margin: .25rem 0 0; font-weight: 700; }
.legend-file summary, .promo-workshop summary { cursor: pointer; padding: .7rem 0; min-height: 44px; font-weight: 700; }
.legend-path { margin: 1.2rem 0; }
.legend-path .progress { margin-bottom: .5rem; }
.legend-memories { padding-left: 1.3rem; }
.legend-memories li { margin-bottom: 1rem; }
.legend-memories span { display: block; margin-top: .25rem; }
.promo-controls { display: flex; flex-wrap: wrap; gap: 1rem; }
.promo-controls label { display: grid; gap: .4rem; flex: 1 1 12rem; }
.promo-controls select { width: 100%; min-height: 44px; background: var(--paper-high); color: var(--ink); border: 1px solid var(--line); padding: .5rem; }
.promo-preview { border: 1px solid var(--line); padding: .7rem 1rem; margin: 1rem 0; background: var(--paper-high); }
.promo-workshop { scroll-margin-top: 1rem; }
.legacy-story__people summary { cursor: pointer; min-height: 44px; padding: .7rem 0; font-weight: 700; }
.cooperation-decision summary, .cooperation-history summary { cursor: pointer; min-height: 44px; padding: .7rem 0; }
.cooperation-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1rem; margin: 1rem 0; }
.cooperation-options article { border-top: 2px solid var(--oxblood); padding: .7rem 0; }
.cooperation-options p { line-height: 1.5; }
.cooperation-options .button { width: 100%; }
.cooperation-history { padding: 1rem 0; border-top: 1px solid var(--line); }
.event-fan-memory { margin: 1rem 0; padding: .75rem 1rem; border: 1px solid var(--line); background: var(--paper-high); }
.career-help { max-width: 88rem; margin: 1rem auto; padding: 1rem; color: var(--ink); background: var(--paper); border-radius: var(--radius); }
.career-help summary { cursor: pointer; min-height: 44px; padding: .65rem 0; }
/* The match screen (ready or live) is the one place D2b's no-scroll rule applies -- the footer's
   44px tap target stays (accessibility, unconditional), only its surrounding whitespace shrinks.
   .1rem, not .25rem (phase 2 slice 4): the live screen's own budget grew (the hand card art raised
   to clamp(4.4rem,5.5vh,5rem) so it reads as a real illustration, not a sliver) and a real
   championship-fixture match -- longer names/stats than the synthetic fixtures this was tuned
   against -- came in 4px over the D2b no-scroll budget at 1440x900 with the old margin. */
.app-shell--match .career-help { margin: .1rem auto; padding: .1rem 1rem; }
.app-shell--match .career-help summary { padding: 0; }
.career-help p { max-width: 75ch; line-height: 1.6; }
.career-help input[type=file] { display: block; max-width: 100%; margin: .75rem 0; }
.content-choice { display: flex; gap: .75rem; align-items: start; margin: 1rem 0; line-height: 1.5; }
.content-choice input { width: 1.25rem; height: 1.25rem; flex: none; margin-top: .2rem; }
.alumni-career { padding: 1.25rem 0; border-top: 1px solid var(--line); }
.alumni-career li { margin: .7rem 0; line-height: 1.5; }
.alumni-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); gap: 1.5rem; }
.alumni-options select, .alumni-actions select { display: block; min-height: 44px; max-width: 100%; margin: .5rem 0 1rem; }
#match-loadout, #move-collection { scroll-margin-top: 1rem; }
.contract-choices { display: flex; flex-wrap: wrap; gap: .5rem; }
.card-position__contract { margin: 0 0 1rem; font-weight: 700; }

/* The reasons the relationship screen was already computing and discarding. Newest turn first, wrapping
   inside the row body so a thirty-year rivalry cannot push the card sideways at 390px. */
.relationship-cause { display: flex; flex-wrap: wrap; gap: .3rem .5rem; margin: .5rem 0 0; min-width: 0; font-size: .875rem; line-height: 1.5; overflow-wrap: anywhere; }
.relationship-cause__label { color: var(--ink-soft); font-weight: 800; text-transform: uppercase; letter-spacing: .06em; font-size: .75rem; }

/* The roster's reading order sits on its own row under the cut, so the two navs never compete for the
   same line and neither wraps into the other at 390px. */
.career-toolbar--order { margin-top: -.5rem; }
.career-toolbar--order .filter-tab { font-weight: 700; }

/* The chronicle's two cuts -- a wrestler at a time and a year at a time -- are lists of rows, not a
   single fold, so their summaries drop from the 1.5rem display face `.chronicle-details > summary`
   sets for the one-off folds elsewhere on the screen. Twelve wrestlers and thirty years at heading
   size is a wall; at body size it is a list you can read down. */
.history-columns .chronicle-details > summary { font-family: inherit; font-size: 1rem; font-weight: 700; line-height: 1.35; padding: .55rem 0; gap: .45rem; }
.history-columns .chronicle-details > summary::before { content: "\25B8"; flex: none; color: var(--oxblood); transition: transform .15s; }
.history-columns .chronicle-details[open] > summary::before { transform: rotate(90deg); }
.history-columns .chronicle-details { border-bottom: 1px solid var(--line); }
.history-columns .chronicle-details[open] { padding-bottom: .8rem; }
.history-columns .chronicle-details .text-link { display: inline-block; margin-top: .5rem; font-size: .875rem; }
.history-columns .chronicle-list li { font-size: .9375rem; }

/* Three controls for three commands that were built and unreachable. All three are folded away
   because they are rare, not hidden: a role is set once a team, a name once a career, and a matter
   is deferred only when the manager is not ready to call it. */
.group-roles, .desk-rename { margin-top: .9rem; padding-top: .75rem; border-top: 1px solid var(--line); }
.group-roles > summary, .desk-rename > summary { min-height: 44px; display: flex; align-items: center; gap: .45rem; cursor: pointer; font-weight: 800; }
.group-roles > summary::before, .desk-rename > summary::before { content: "\25B8"; flex: none; color: var(--oxblood); transition: transform .15s; }
.group-roles[open] > summary::before, .desk-rename[open] > summary::before { transform: rotate(90deg); }
.group-roles .field-label, .desk-rename .field-label { display: block; margin: .7rem 0 .3rem; font-size: .875rem; font-weight: 700; }
.group-roles select, .desk-rename input { display: block; width: 100%; max-width: 22rem; min-height: 44px; }
.group-roles .button, .desk-rename .button { margin-top: .8rem; }
.group-roles__note, .group-roles__rule { margin: .5rem 0 0; font-size: .875rem; line-height: 1.5; color: var(--ink-soft); }
.event-defer { margin-top: 1.25rem; }
.event-defer .button { margin-top: .7rem; }

/* The road directory uses the same paper and type as the office. */
.world-roster { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: 1.5rem; list-style: none; padding: 0; }
.world-roster > li { display: flex; align-items: center; gap: 1rem; min-width: 0; }
.world-roster p { margin: .4rem 0; }
.world-thumb { width: 4.5rem; height: 6rem; object-fit: cover; object-position: top; flex-shrink: 0; }
.world-card-art { display: block; width: 100%; max-width: 24rem; height: auto; align-self: start; }
.world-territories { padding-left: 1.5rem; }
.world-territories > li { margin-block: 2rem; }
.world-dossier { display: grid; grid-template-columns: minmax(12rem, 1fr) minmax(0, 2fr); gap: 2rem; }
.world-attributes { display: grid; grid-template-columns: 1fr 1fr; max-width: 24rem; }
.world-attributes dt { text-transform: capitalize; }
.world-attributes dd { font-variant-numeric: tabular-nums; text-align: right; }
@media (max-width: 600px) { .world-dossier { grid-template-columns: 1fr; } }

/* A belt beside a title name, everywhere a title is named: the Titles screen's cards and History's
   championship section (title firsts and the succession list). Modest on purpose -- it illustrates
   the name, it does not replace it -- and missing art (16 of the 24 cropped belts are unmapped
   spares) degrades to plain text with no gap left behind, since titleBelt() renders nothing. */
.title-belt { width: 2.75rem; height: 2.75rem; object-fit: contain; flex-shrink: 0; }
.title-card-heading, .title-firsts-heading { display: flex; align-items: center; gap: .6rem; }
/* On a title card the belt is the prize, not a list marker. */
.title-card-heading .title-belt { width: 8rem; height: 8rem; }
@media (max-width: 760px) { .title-card-heading .title-belt { width: 5rem; height: 5rem; } }
.title-succession .chronicle-list li { display: flex; align-items: center; gap: .6rem; }
