/* 0.4.5 — existing components, no gameplay or CMS migrations. */
.zw-reference-world {
  --zp-gutter: clamp(18px, 4vw, 48px);
  --zp-section: clamp(40px, 5.5vw, 72px);
  --zp-measure: 70ch;
  --zp-focus: #28784e;
  scrollbar-color: #28784e #eae5d8;
}
.zw-reference-world ::selection { background: #f2b632; color: #171717; }
.zw-reference-world :is(input, textarea) { caret-color: #28784e; }
.zw-reference-world main :is(p, li) { overflow-wrap: break-word; }
.zw-reference-world main :is(h1,h2,h3) { text-wrap: balance; }
.zw-reference-world :is(button,a,summary,input,textarea,select):focus-visible {
  outline: 3px solid var(--zp-focus); outline-offset: 4px;
}
.zw-reference-world :is(.world-invitation,.serial-home) :is(button,a,summary,input,textarea,select):focus-visible {
  outline-color: #fffdf7;
}
.zw-reference-world :is(.world-arrows,.serial-arrows) button { min-width: 44px; min-height: 44px; }
.ref-header .more > div { max-height: calc(100dvh - 150px); overflow-y: auto; overscroll-behavior: contain; }
.ref-header .more > div a { display: flex; align-items: center; min-height: 44px; }
.ref-header .more a[aria-current=page] { color: #ad0c12; font-weight: 700; }
.world-page { padding-inline: var(--zp-gutter); }
.world-page > .page-title { padding-inline: 0; }
.world-page > .prose > .world-shell { padding-inline: 0; }
.world-resident { display: flex; flex-direction: column; }
.world-resident > div { display: flex; flex: 1; flex-direction: column; }
.world-resident > div > span { margin-top: auto; padding-top: 12px; }
.world-resident figure[data-world-art=character] img { aspect-ratio: 4/5; height: 300px; object-fit: contain; }
.world-resident figure:not([data-world-art=character]) img { height: 300px; object-fit: cover; }
.world-caption,.world-notice,.world-shell figcaption { font-size: 14px; line-height: 1.5; }
.world-heading { align-items: center; }
.world-shell .world-secret summary { min-height: 44px; }
.world-shell .world-dialog img { height: auto; }
.serial-card { display: flex; flex-direction: column; }
.serial-card-copy { display: flex; flex: 1; flex-direction: column; }
.serial-card-copy > strong { margin-top: auto; padding-top: 22px; }
.serial-track,.world-resident-track { scrollbar-width: thin; scrollbar-color: #28784e #eae5d8; }
.serial-home h2,.shorts-home h2 { font-family: ZwrotBrush,ZwrotDisplay,sans-serif; font-weight: 400; }
.shorts-grid summary { min-height: 44px; display: list-item; }
.shorts-grid video { max-height: 76dvh; object-fit: contain; }
.prose :is(input,select,textarea) { font-size: 16px; }
.prose table { overflow-wrap: anywhere; }
.site-footer a { text-underline-offset: .25em; }
.site-footer > div:nth-child(2) a { min-height: 36px; display: inline-flex; align-items: center; }

/* Classic Group blocks add this neutral DIV; lay out the actual blocks. */
.campaign :is(.campaign-grid,.campaign-split,.campaign-journey) > .wp-block-group__inner-container { display: contents; }
.campaign { overflow: visible; font-family: Arial,sans-serif; }
.campaign p { font-family: Arial,sans-serif; }
.campaign :is(h1,h2,h3) { font-family: ZwrotBrush,ZwrotDisplay,sans-serif; }
.campaign-section { padding-block: var(--zp-section); }
.campaign-card { box-shadow: none; }
.campaign-card p { max-width: var(--zp-measure); }
.campaign nav.campaign-journey {
  position: static; inset: auto; display: grid; grid-template-columns: repeat(5,minmax(0,1fr));
  width: 100%; flex: none; gap: 16px; padding: 0; margin: 32px 0 0;
  border: 0; background: transparent; font-family: Arial,sans-serif;
}
.campaign-journey p { min-width: 0; max-width: none; width: 100%; }
.campaign-journey a { min-height: 152px; border: 1px solid #5b5b50; border-radius: 8px; padding: 20px 16px; }
.campaign-journey span { margin-bottom: 12px; }
.campaign .campaign-caption { font-size: 14px; }
.campaign .wp-block-button__link { min-height: 48px; font-family: Arial,sans-serif; box-shadow: none; }
.campaign .wp-block-button__link:hover { box-shadow: none; transform: translateY(-2px); }
.campaign .campaign-compare-controls button { min-height: 48px; }
.campaign .campaign-compare output { font-variant-numeric: tabular-nums; }
.campaign .campaign-grid { align-items: stretch; }
.campaign .campaign-card { display: flex; flex-direction: column; }
.campaign .campaign-card > .wp-block-group__inner-container { display: flex; flex: 1; flex-direction: column; }
.campaign-card h3 { margin-top: 4px; }
.campaign-card a { text-underline-offset: .25em; }
.campaign .campaign-split > .wp-block-group__inner-container > * { min-width: 0; }
.campaign-entry { border-left: 0; border-block: 1px solid #28784e55; }

@media (min-width:641px) and (max-width:1000px) {
  .campaign-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .campaign-origin .campaign-card:last-child,.campaign-media .campaign-card:last-child { grid-column: 1/-1; }
  .campaign nav.campaign-journey { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .campaign-split { grid-template-columns: 1fr; }
  .campaign-split figure img { max-height: 420px; aspect-ratio: 1.8; }
}
@media (max-width:1000px) {
  .ref-header .menu-toggle,.ref-header .button.small { min-height: 44px; }
  .ref-header #primary-nav { max-height: calc(100dvh - 80px); overflow-y: auto; overscroll-behavior: contain; }
  .ref-header .more > div { position: static; max-height: none; box-shadow: none; border: 0; padding-inline: 0; }
}
@media (max-width:640px) {
  .page-content { padding: 32px var(--zp-gutter) 48px; }
  .page-content :is(h1,.page-title h1) { font-size: clamp(38px,10.6vw,52px); line-height: 1.06; margin-bottom: 24px; }
  .prose { font-size: 16px; line-height: 1.7; }
  .prose p { max-width: var(--zp-measure); }
  .page-content .prose h2 { font-size: 32px; line-height: 1.12; }
  .world-page > .prose > .world-shell { margin-block: 16px 36px; }
  .world-shell .world-detail-top blockquote { padding-inline: 14px; font-size: 22px; }
  .world-shell .world-lead { font-size: 18px; }
  .world-resident > div { padding: 20px 18px; }
  .world-shell .world-heading { gap: 12px; align-items: end; }
  .world-heading h2 { font-size: 34px; }
  .world-resident-track { gap: 16px; }
  .world-shell .world-resident { flex-basis: 88%; min-width: 0; }
  .world-shell .world-arrows { flex-shrink: 0; gap: 6px; }
  .world-catalog-card > div { padding: 22px 18px; }
  .world-dialog { max-height: calc(100dvh - 24px); }
  .world-dialog h2 { font-size: 34px; }
  .ref-actions { flex-wrap: wrap; gap: 10px; }
  .ref-actions .button { font-size: 12px; min-height: 46px; padding-inline: 16px; }
  /* Copy may grow when controls wrap. Keep the illustration in normal flow. */
  .ref-hero { display: flex; flex-direction: column; min-height: 0; }
  .ref-hero-copy { order: 0; padding: 24px var(--zp-gutter); }
  .ref-hero-art { position: relative; inset: auto; order: 1; z-index: 0; width: 100%; max-width: none; height: clamp(280px,86vw,360px); object-position: 82% 50%; }
  .ref-more-concepts { flex-wrap: wrap; gap: 12px; }
  .ref-more-concepts :is(a,.button) { font-size: 14px; min-height: 44px; display: inline-flex; align-items: center; }
  .ref-local-status { font-size: 12px; }
  .ref-actual-game summary { min-height: 44px; display: list-item; }
  .zm-concepts-home .zm-concept-state { font-size: 11px; }
  .zm-concepts-home .zm-card-copy h3 { white-space: normal; }
  .zm-concepts-home .zm-summary { font-size: 14px; }
  .zm-concept-dialog .zm-detail-body :is(p,li) { font-size: 16px; }
  .zm-concept-dialog .zm-detail-body { padding-inline: 20px; }
  .serial-cover-title { font-size: 2rem; }
  .serial-about { padding-block: 32px; }
  .serial-reader { margin-block: 32px; }
  .serial-scene { padding-bottom: 28px; }
  .serial-scene :is(p,span) { font-size: 16px; }
  .shorts-grid { gap: 36px; }
  .shorts-grid video { max-height: none; }
  .site-footer { gap: 24px; }
  .site-footer p,.site-footer > div:nth-child(2) { font-size: 13px; }
  .site-footer > div:nth-child(2) a { min-height: 44px; }
  .campaign-section,.campaign-finale { padding-inline: var(--zp-gutter); }
  .campaign h2 { font-size: clamp(34px,10vw,42px); }
  .campaign h3 { font-size: 30px; }
  .campaign p { font-size: 16px; line-height: 1.6; }
  .campaign nav.campaign-journey { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .campaign-journey a { display: flex; gap: 18px; align-items: center; min-height: 72px; height: auto; padding: 14px 18px; font-size: 16px; }
  .campaign-journey span { font-size: 32px; margin: 0; min-width: 36px; }
  .campaign .campaign-kicker { font-size: 11px; letter-spacing: .08em; }
  .campaign .campaign-lead { font-size: 16px; line-height: 1.55; }
  .campaign .campaign-caption { font-size: 14px; }
  /* B: headline and actions first; retain the approved scene below. */
  .campaign-hero { padding: 24px var(--zp-gutter) 280px; }
  .campaign-hero:before { inset: auto 0 0; height: 250px; background-position: center 24%; border-bottom: 0; border-top: 2px solid #171717; }
  .campaign h1 { font-size: clamp(44px,12.5vw,56px); margin-block: 14px 18px; line-height: 1; }
  .campaign-hero .wp-block-buttons { margin-block: 22px 16px; gap: 10px; }
  .campaign-hero .campaign-text-link { margin-top: 18px; }
  .campaign .world-resident { flex-basis: 88%; }
  .campaign .world-resident figcaption { font-size: 13px; }
}
@media (prefers-reduced-motion:reduce) {
  .zw-reference-world :is(.world-resident,.serial-card,.campaign-card,.button,.wp-block-button__link):hover { transform: none; }
}
