/* Public UI contract. Loaded in the document head on every public route.
   Search 36 / filters 36 / actions 44; controls 4 / surfaces 8.
   Mission panels retain their deliberate 18px chamfer and reward hierarchy. */
:root {
  --ui-search-height:36px;
  --ui-filter-height:36px;
  --ui-action-height:44px;
  --ui-radius-control:4px;
  --ui-radius-surface:8px;
  --ui-space-1:4px;
  --ui-space-2:8px;
  --ui-space-3:12px;
  --ui-space-4:16px;
  --ui-space-5:20px;
  --ui-space-6:24px;
  --ui-space-8:32px;
  --ui-control-fill:rgba(13,32,35,.62);
  --ui-control-border:rgba(99,125,112,.38);
  --ui-control-hover:rgba(128,152,130,.6);
  --ui-control-active:rgba(214,190,138,.12);
  --ui-text:#e5ece6;
  --ui-text-secondary:#bfc3cc;
  --ui-text-placeholder:#a4b5ad;
  --ui-accent:#d6be8a;
  --ui-focus-ring:0 0 0 2px rgba(214,190,138,.16);
  --ui-control-size:14px;
  --ui-control-line:20px;
  --ui-banner-action-size:16px;
  --ui-banner-action-line:24px;
  --ui-body-size:16px;
  --ui-body-line:28px;
  --ui-meta-size:12px;
  --ui-meta-line:20px;
  --ui-motion:180ms ease;
}

/* The timeline's inter-item space belongs to the shared spacing contract. */
html body[data-page=home] .home-timeline {height:auto;min-height:276px}
html body[data-page=home] .home-timeline__items {gap:var(--ui-space-5)}

/* Point labels form a real shared column; content never follows a short label
   early. The widest intrinsic label sets the track across this event's groups. */
html body[data-page=detail] .detail-layout .event-points>li {padding-left:0;list-style:none}
html body[data-page=detail] .detail-layout .event-points>li::before {content:none}
html body[data-page=detail] .event-point__label {margin:0}
html body[data-page=detail] .detail-layout .event-points>li>span {
  display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:16px;align-items:start;
}
html body[data-page=detail] .event-point__text {min-width:0;overflow-wrap:anywhere;white-space:pre-line}
html body[data-page=detail] .event-point__text:only-child {grid-column:1/-1}
@supports(grid-template-columns:subgrid) {
  html body[data-page=detail] .requirement-groups {
    display:grid;grid-template-columns:max-content max-content minmax(0,1fr);column-gap:24px;row-gap:0;
  }
  html body[data-page=detail] .detail-section__content .requirement-group {
    display:grid;grid-column:1/-1;grid-template-columns:subgrid;column-gap:24px;row-gap:12px;
  }
  html body[data-page=detail] .requirement-group>h3 {grid-column:1;grid-row:1}
  html body[data-page=detail] .requirement-group__body {
    display:grid;grid-column:2/-1;grid-template-columns:subgrid;column-gap:24px;row-gap:12px;
  }
  html body[data-page=detail] .requirement-group__body>* {grid-column:1/-1;min-width:0}
  html body[data-page=detail] .detail-layout .event-points,
  html body[data-page=detail] .detail-layout .event-points>li,
  html body[data-page=detail] .registration-source-meta,
  html body[data-page=detail] .registration-source-meta>div {
    display:grid;grid-column:1/-1;grid-template-columns:subgrid;column-gap:inherit;
  }
  html body[data-page=detail] .detail-layout .event-points>li>span {display:contents}
  html body[data-page=detail] .event-point__label,
  html body[data-page=detail] .registration-source-meta dt {grid-column:1;white-space:nowrap}
  html body[data-page=detail] .event-point__text,
  html body[data-page=detail] .registration-source-meta dd {grid-column:2}
  html body[data-page=detail] .event-point__text:only-child {grid-column:1/-1}
  @media(max-width:699px) {
    html body[data-page=detail] .requirement-groups {grid-template-columns:max-content minmax(0,1fr);column-gap:16px}
    html body[data-page=detail] .detail-section__content .requirement-group {column-gap:16px}
    html body[data-page=detail] .requirement-group>h3 {grid-column:1/-1;grid-row:auto}
    html body[data-page=detail] .requirement-group__body {grid-column:1/-1;column-gap:16px}
    html body[data-page=detail] .event-point__label,
    html body[data-page=detail] .registration-source-meta dt {white-space:normal;max-width:8em}
  }
}

/* All searches share the collection's dark translucent treatment. */
html body[data-page] .site-header .site-search-area {
  display:flex;min-height:var(--ui-search-height);height:var(--ui-search-height);
}
html body[data-page] .site-header .site-search {
  display:flex;position:relative;isolation:isolate;box-sizing:border-box;
  height:var(--ui-search-height);min-height:var(--ui-search-height);
  padding:0 12px;gap:8px;margin:0;max-width:100%;
  border:1px solid var(--ui-control-border);border-radius:var(--ui-radius-control);
  background:var(--ui-control-fill);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 2px 10px #00000012;transition:border-color var(--ui-motion),box-shadow var(--ui-motion);
}
html body[data-page] .site-header .site-search>img {
  position:relative;z-index:1;width:18px;height:18px;flex:none;pointer-events:none;opacity:.88;
}
html body[data-page] .site-header .site-search input {
  position:absolute;inset:0;z-index:0;box-sizing:border-box;width:100%;height:100%;
  min-height:0;min-width:0;margin:0;padding:0 12px 0 38px;
  border:0;border-radius:inherit;outline:none;background:transparent;
  font-size:var(--ui-control-size);line-height:var(--ui-control-line);
  color:var(--ui-text);caret-color:var(--ui-accent);
}
html body[data-page] .site-header .site-search input::placeholder,
html body[data-page] .model-search-label input::placeholder {color:var(--ui-text-placeholder);opacity:1}
html body[data-page] .site-header .site-search:focus-within {
  border-color:var(--ui-accent);box-shadow:var(--ui-focus-ring);
}
html body[data-page] .model-search-label input[type=search] {
  box-sizing:border-box;height:var(--ui-search-height);min-height:var(--ui-search-height);
  padding:7px 12px;border:1px solid var(--ui-control-border);
  border-radius:var(--ui-radius-control);background:var(--ui-control-fill);
  color:var(--ui-text);font-size:var(--ui-control-size);line-height:var(--ui-control-line);
}

/* Filter height means the complete border box, including nested comboboxes. */
html body[data-page] :is(.glide-select,.glide-select__menu) {
  --gs-chip:var(--ui-filter-height);--gs-row:var(--ui-filter-height);
  --gs-radius:var(--ui-radius-surface);--gs-inner-radius:var(--ui-radius-control);
  --gs-font:var(--ui-control-size);
}
html body[data-page] .glide-select__trigger {
  box-sizing:border-box;height:var(--ui-filter-height);min-height:var(--ui-filter-height);
  padding:0 12px;gap:8px;border-radius:var(--ui-radius-control);
  border-color:var(--ui-control-border);background:var(--ui-control-fill);
  font-size:var(--ui-control-size);line-height:var(--ui-control-line);color:var(--ui-text);
}
html body[data-page] .glide-select__option {min-height:var(--ui-filter-height);padding:8px 12px;font-size:14px;line-height:20px}
html body[data-page] .glide-select__menu {border-radius:var(--ui-radius-surface)}
html body[data-page=home][data-view=events] .collection-filter-control {
  height:var(--ui-filter-height);min-height:var(--ui-filter-height);padding:0 0 0 12px;gap:8px;
  border:1px solid var(--ui-control-border);border-radius:var(--ui-radius-control);
  background:var(--ui-control-fill);
}
html body[data-page=home][data-view=events] .collection-filter-control label {font-size:14px;line-height:20px;color:var(--ui-text-placeholder)}
html body[data-page=home][data-view=events] .collection-filter-control .glide-select__trigger {
  height:calc(var(--ui-filter-height) - 2px);min-height:calc(var(--ui-filter-height) - 2px);padding:0 12px 0 0;border:0;background:transparent;border-radius:0;
}
html body[data-page=home][data-view=events] .collection-filter-control select:not(.glide-select__native) {
  height:calc(var(--ui-filter-height) - 2px);min-height:calc(var(--ui-filter-height) - 2px);padding:0 28px 0 0;
}
html body[data-page=home][data-view=events] .collection-filter-control::after {top:calc((var(--ui-filter-height) - 10px) / 2)}
html body[data-page] :is(#status-filters .filter-button,.filter-reset,.mission-uses button,.supply-quick>button,.supply-saved,.supply-applied button),
html body[data-page] .supply-model-picker>summary {
  box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;
  height:var(--ui-filter-height);min-height:var(--ui-filter-height);padding:0 16px;gap:8px;
  border-radius:var(--ui-radius-control);font-size:14px;line-height:20px;
}
html body[data-page] #status-filters .filter-button {padding-inline:20px}
html body[data-page] :is(#status-filters,.collection-filter-toolbar,.mission-uses,.supply-quick,.supply-applied) {gap:8px}
html body[data-page] .mission-uses {flex-wrap:wrap}
html body[data-page] .supply-model-picker>summary {justify-content:space-between;background:var(--ui-control-fill);border-color:var(--ui-control-border)}
/* The wrapper is a span; the old mobile caption selector hid it as well. */
html body[data-page] .supply-sort>.glide-select {display:inline-flex;width:144px}
html body[data-page] :is(.mission-uses button,.supply-quick>button,.supply-saved) {border:1px solid var(--ui-control-border);background:var(--ui-control-fill)}
html body[data-page] :is(.mission-uses button,.supply-quick>button)[aria-pressed=true],
html body[data-page] .supply-saved:has(input:checked) {color:var(--ui-accent);border-color:var(--ui-accent);background:var(--ui-control-active)}
html body[data-page] .mission-routes>button {height:var(--ui-filter-height);min-height:var(--ui-filter-height);padding:0 8px;border-radius:var(--ui-radius-control)}
html body[data-page] .mission-route-copy strong {font-size:14px;line-height:20px}
html body[data-page] .mission-route-copy small {display:none}

/* One corner vocabulary, retaining circular marks and the mission chamfer. */
html body[data-page] :is(#event-grid,#related-grid) .event-card.event-card--compact-tags {border-radius:var(--ui-radius-surface);padding:16px}
html body[data-page] :is(#event-grid,#related-grid) .event-card.event-card--compact-tags :is(.event-card__media,.tag) {border-radius:var(--ui-radius-control)}
html body[data-page].quest-deck .supply-card.mission-ticket {padding:16px;column-gap:16px;row-gap:12px}
html body[data-page] :is(.tag,.mission-type,.supply-access-tag,.qa-badge,.supply-cautions>span,.supply-reward,
 .button-primary,.hero-primary,.icon-button,.hero-arrow,.detail-save,.feedback-close,.supply-bookmark,
 .supply-dialog-header>button,.page-error__home,.page-error__retry,.page-error__back) {border-radius:var(--ui-radius-control)}
html body[data-page] :is(.sidebar-card,.award-card,.home-empty,.supply-message,.supply-skeleton,
 .supply-filter-panel,.supply-model-panel,.supply-dialog,.feedback-dialog,.supply-toast,.mission-passport) {border-radius:var(--ui-radius-surface)}
html body[data-page] :is(.supply-model-option,.model-glide__indicator,.feedback-types label,.feedback-field input,.feedback-field textarea) {border-radius:var(--ui-radius-control)}
html body[data-page] :is(.button-primary,.hero-primary,.supply-claim,.detail-save,
 .supply-more button,.supply-message button,.page-error__home,.page-error__retry) {
  box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;
  height:auto;min-height:var(--ui-action-height);padding:10px 20px;gap:8px;
  border-radius:var(--ui-radius-control);font-size:14px;line-height:22px;font-weight:500;
}
html body[data-page] :is(.button-primary,.hero-primary) {font-size:16px;line-height:24px;padding:10px 24px}
html body[data-page=home] .home-hero .hero-copy__actions .hero-primary,
html body[data-page=home] .home-hero .hero-primary .home-button-shine__label {
  font-size:var(--ui-banner-action-size);line-height:var(--ui-banner-action-line);
}
html body[data-page=detail] :is(.detail-hero__actions .button-primary,.registration-card__actions .button-primary) {
  height:auto;min-height:44px;padding:10px 20px;font-size:16px;line-height:24px;
}
html body[data-page] :is(.page-error__home,.page-error__retry) {min-width:144px}
html body[data-page] .supply-dialog-header>button {min-height:44px;font-size:14px;line-height:22px}
html body[data-page] :is(.mission-ticket .supply-claim,.mission-ticket .supply-details-link,.supply-detail-actions .supply-claim) {
  min-height:44px;font-size:14px;line-height:22px;padding-block:10px;
}
html body[data-page] :is(.filter-reset,#reset-all,#clear-models) {min-height:var(--ui-filter-height);font-size:14px;line-height:20px}

/* Readable body / supporting copy / control hierarchy. Display faces stay local. */
html body[data-page] :is(.about-sections p,.supply-steps,.supply-detail-list>div,.supply-detail-sources,
 .supply-source-note>p,.feedback-dialog,.feedback-field) {font-size:var(--ui-body-size);line-height:var(--ui-body-line)}
html body[data-page] .supply-detail-section h3 {font-size:18px;line-height:28px;font-weight:600}
html body[data-page] :is(.supply-detail-list dt,.feedback-field>span) {color:var(--ui-accent)}
html body[data-page] :is(.supply-filter-panel,.supply-dialog-body,.supply-dialog-header) {padding:24px}
html body[data-page] :is(.supply-facet-fields,.feedback-types>div) {gap:16px}
html body[data-page] .supply-detail-actions {padding:16px 24px;gap:12px}
html body[data-page] .supply-facet-fields>label {font-size:14px;line-height:20px;gap:8px}
html body[data-page] .supply-filter-bottom {gap:16px;margin-top:16px}
html body[data-page] .supply-commercial {font-size:14px;line-height:24px}
html body[data-page] .supply-model-option {font-size:14px;line-height:24px;min-height:var(--ui-filter-height);padding:6px 10px}
html body[data-page] :is(.supply-model-panel,.supply-model-picker) {min-width:0}
html body[data-page] .supply-model-panel {max-width:calc(100vw - 32px)}
html body[data-page] :is(.site-footer,.supply-footer) {font-size:12px;line-height:20px;gap:8px 16px}
html body[data-page] :is(a,button,input,select,textarea,summary):focus-visible {
  outline:2px solid var(--ui-accent);outline-offset:3px;
}
html body[data-page] .site-search input:focus-visible {outline:0}
html body[data-page] .collection-filter-control:focus-within {border-color:var(--ui-accent);box-shadow:var(--ui-focus-ring)}
@media(hover:hover) and (pointer:fine) {
  html body[data-page] :is(.site-search,.collection-filter-control,.glide-select__trigger,.mission-uses button,.supply-quick>button,.supply-saved):hover {border-color:var(--ui-control-hover)}
}

/* The same header reflow across home, collection, detail, supplies and about. */
@media(min-width:1200px) {
  html body[data-page] .site-header {display:flex;height:80px;min-height:80px;padding:0 32px;gap:0}
  html body[data-page] :is(.site-brand-area,.site-search-area,.site-header-spacer) {flex:1;min-width:0}
  html body[data-page] .site-header .site-search {width:304px}
  html body[data-page] .site-nav {display:flex;flex:none;width:auto;height:48px;gap:24px;order:0}
  html body[data-page] .site-nav a,html body[data-page] .site-nav a:first-child {display:flex;width:auto;min-width:48px;height:48px;font-size:16px;line-height:24px}
}
@media(min-width:1200px) and (max-width:1500px) {
  html body[data-page] .site-header .site-search {width:240px}
}
@media(min-width:768px) and (max-width:1199px) {
  html body[data-page] .site-header {display:grid;grid-template-columns:minmax(0,1fr) 240px;min-height:112px;height:auto;padding:12px 24px 0;gap:8px 24px}
  html body[data-page] .site-brand-area {grid-row:1;grid-column:1;width:auto;height:40px}
  html body[data-page] .site-search-area {grid-row:1;grid-column:2;width:100%;order:0}
  html body[data-page] .site-header .site-search {width:100%}
  html body[data-page] .site-nav {display:flex;grid-row:2;grid-column:1/-1;justify-content:center;width:100%;height:44px;gap:32px;order:0}
  html body[data-page] .site-nav a,html body[data-page] .site-nav a:first-child {display:flex;width:auto;min-width:64px;height:44px;font-size:14px}
  html body[data-page] .site-header-spacer {display:none}
}
@media(max-width:767px) {
  html body[data-page] .site-header {display:grid;grid-template-columns:minmax(0,1fr);height:auto;min-height:0;padding:12px 16px;gap:8px}
  html body[data-page] .site-brand-area {grid-column:1;grid-row:1;width:100%;height:32px;flex:none}
  html body[data-page] .site-brand {gap:8px}
  html body[data-page] .site-brand img {width:26px;height:26px}
  html body[data-page] .site-brand__name {font-size:18px;line-height:28px}
  html body[data-page] .site-brand-tagline,html body[data-page] .site-brand-divider {display:none}
  html body[data-page] .site-nav {display:flex;grid-column:1;grid-row:2;width:100%;height:40px;gap:8px;justify-content:space-between;order:0}
  html body[data-page] .site-nav a,html body[data-page] .site-nav a:first-child {display:flex;flex:0 1 auto;width:auto;min-width:40px;height:40px;font-size:14px;line-height:24px;white-space:nowrap}
  html body[data-page] .site-search-area {display:flex;grid-column:1;grid-row:3;width:100%;order:0}
  html body[data-page] .site-header .site-search {width:100%}
  html body[data-page] .site-header-spacer {display:none}
  html body[data-page] :is(.site-search input,.model-search-label input[type=search]) {font-size:16px;line-height:22px}
  html body[data-page] .supply-sort>.glide-select {width:132px}
  html body[data-page] .mission-board-header {flex-wrap:wrap}
  html body[data-page] .supply-sort {margin-left:auto}
  html body[data-page] :is(.mission-uses button,.supply-quick>button,.supply-saved,.supply-applied button) {padding-inline:12px}
  html body[data-page] .mission-routes {gap:8px}
  html body[data-page] .mission-routes>button {min-height:var(--ui-filter-height);border-radius:var(--ui-radius-control)}
  html body[data-page] :is(.supply-dialog-body,.supply-dialog-header,.supply-filter-panel) {padding:16px}
  html body[data-page] .supply-detail-actions {padding:12px 16px;gap:8px;flex-wrap:wrap}
  html body[data-page] .supply-detail-actions .supply-claim {flex:1;min-width:160px}
  html body[data-page] .supply-facet-fields {gap:16px 12px}
}
@media(max-width:479px) {
  html body[data-page] .mission-routes>button {padding:6px;gap:4px}
  html body[data-page] .mission-backpack .supply-saved {padding-inline:6px;font-size:12px;gap:4px}
  html body[data-page] .supply-detail-list>div {grid-template-columns:minmax(0,1fr);gap:4px}
}
@media(prefers-reduced-motion:reduce) {
  html body[data-page] :is(.site-search,.glide-select__trigger,.mission-uses button,.supply-quick>button) {transition:none}
}
@media(forced-colors:active) {
  html body[data-page] :is(.site-search,.model-search-label input[type=search],.collection-filter-control,.glide-select__trigger,.mission-uses button,.supply-quick>button,.supply-saved) {background:Canvas;color:CanvasText;border-color:ButtonText;box-shadow:none}
  html body[data-page] .site-search input {color:CanvasText}
  html body[data-page] .site-search input::placeholder {color:GrayText}
}

/* V2 P0 R2: approved 2:1 artwork fills the card, without ambient filler. */
.event-card__media{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:2/1}
.event-card__image{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:cover;object-position:center}

/* V2 P0: a long source field must not squeeze the reading or action columns. */
@media(min-width:1101px) {
  html body[data-page=detail] .detail-sidebar {min-width:320px;width:100%}
}
@media(min-width:1101px) and (max-width:1399px) {
  html body[data-page=detail] .detail-layout {grid-template-columns:minmax(0,1fr) 352px}
}
@media(max-width:1100px) {
  html body[data-page=detail] .detail-layout {grid-template-columns:minmax(0,1fr);gap:40px}
  html body[data-page=detail] .detail-sidebar {display:block;position:static;width:100%;min-width:0;max-height:none;overflow:visible}
}
@media(max-width:480px) {
  html body[data-page=detail] .requirement-groups {grid-template-columns:minmax(0,1fr);column-gap:0}
  html body[data-page=detail] .detail-section__content .requirement-group {grid-template-columns:minmax(0,1fr);column-gap:0;row-gap:12px}
  html body[data-page=detail] .requirement-group>h3 {grid-column:1;grid-row:auto}
  html body[data-page=detail] .requirement-group__body {grid-column:1;grid-template-columns:minmax(0,1fr);column-gap:0;row-gap:12px}
  html body[data-page=detail] .detail-layout .event-points,
  html body[data-page=detail] .detail-layout .event-points>li,
  html body[data-page=detail] .registration-source-meta,
  html body[data-page=detail] .registration-source-meta>div {grid-template-columns:minmax(0,1fr);column-gap:0}
  html body[data-page=detail] .detail-layout .event-points>li>span {display:grid;grid-template-columns:minmax(0,1fr);gap:4px}
  html body[data-page=detail] .event-point__label,
  html body[data-page=detail] .event-point__text,
  html body[data-page=detail] .registration-source-meta dt,
  html body[data-page=detail] .registration-source-meta dd {grid-column:1;white-space:normal;max-width:none}
}


/* V2 P0 R2 typography: one complete system family for each text role.
   The old downloadable CJK subsets cover only parts of current copy. Keeping
   them in UI/body stacks makes individual glyphs fall back within the same row.
   Do not reintroduce a partial webfont before this complete system stack. */
html body[data-page] {
  --font-ui:'PingFang SC','Microsoft YaHei','Noto Sans CJK SC','Source Han Sans SC',system-ui,sans-serif;
  --font-supply:var(--font-ui);
  --font-display:'Songti SC','STSong','Noto Serif CJK SC','SimSun',serif;
  --font-brand:'Noto Serif Display',var(--font-display);
  font-family:var(--font-ui);font-size:var(--ui-body-size);line-height:var(--ui-body-line);
  font-variation-settings:normal;
  text-size-adjust:100%;-webkit-text-size-adjust:100%;
}
html body[data-page] :is(button,input,select,textarea,summary) {
  font-family:var(--font-ui);font-variation-settings:normal;
}
html body[data-page] :is(.site-nav,.site-brand-tagline,.tag,.breadcrumbs,.filter-button,
 .event-card,.home-section-title,.section-heading,.requirement-group,.registration-card,
 .schedule,.site-footer,.supply-footer,.supply-card,.supply-dialog,.supply-filter-panel,
 .mission-board-header,.mission-uses,.mission-routes,.supply-summary,.about-sections) {
  font-family:var(--font-ui);
}
html body[data-page] .site-header .site-brand__name,
html body[data-page] .about-eyebrow {font-family:var(--font-brand);font-variation-settings:normal}
html body[data-page] :is(.hero-copy h1,.detail-hero h1,.about-heading h1,.supply-hero h1,.supply-hero-copy h1) {
  font-family:var(--font-display);font-variation-settings:normal;
}
html body[data-page] :is(.home-timeline__date,.deadline-date,.award-card__amount,
 .supply-card__benefit strong,.supply-detail-quota strong,.mission-reward-value) {
  font-family:var(--font-ui);font-variant-numeric:lining-nums tabular-nums;
  font-variation-settings:normal;
}
/* Equal line boxes and first baselines align real text, including mixed sizes.
   Icons/buttons stay centered inside their existing hit areas. */
html body[data-page] :is(.site-nav a,.tag,.filter-button,.glide-select__trigger,.glide-select__option,
 .collection-filter-control label,.supply-sort,.supply-saved) {line-height:var(--ui-control-line)}
html body[data-page] :is(.home-section-title__row,.schedule-summary,.home-timeline__date-row,
 .supply-card__benefit,.supply-detail-quota,.mission-board-title) {align-items:first baseline}
html body[data-page] .home-section-title__row {display:flex;gap:12px}
html body[data-page] .home-section-title__row :is(h1,h2) {margin:0}
html body[data-page] .home-section-title__row .events-count {line-height:24px}
html body[data-page=detail] :is(.requirement-group,.event-points>li>span,
 .registration-source-meta>div) {align-items:first baseline}
html body[data-page=detail] .detail-layout :is(.event-point__label,.event-point__text,
 .registration-source-meta dt,.registration-source-meta dd) {font-size:16px;line-height:28px}
html body[data-page=detail] .requirement-group>h3 {line-height:28px}
/* Top navigation keeps stable gold selection and keyboard focus, without rules
   or moving indicator DOM. This also disables the original static ::after. */
html body[data-page] .site-nav a {text-decoration:none;transform:none}
html body[data-page] .site-nav a[aria-current=page] {color:var(--ui-accent)}
html body[data-page] .site-nav a::after {content:none!important;display:none!important}
html body[data-page] .site-nav-motion__line {display:none!important}
html body[data-page] .site-nav a:focus-visible {outline:2px solid var(--ui-accent);outline-offset:3px;border-radius:4px}
/* Only the homepage changes; collection/detail/supplies/about keep .62 fill. */
html body[data-page=home]:not([data-view=events]) .site-header .site-search {background:rgba(13,32,35,.31)}
@media(max-width:480px) {
  html body[data-page=detail] :is(.requirement-group,.event-points>li>span,.registration-source-meta>div) {align-items:start}
}
@media(forced-colors:active) {
  html body[data-page=home]:not([data-view=events]) .site-header .site-search {background:Canvas}
  html body[data-page] .site-nav a:focus-visible {outline-color:Highlight}
}

html body[data-page] .site-nav a {line-height:24px}
html body[data-page] .about-sections section {align-items:first baseline}
html body[data-page=detail] .detail-layout .event-points>li {align-items:first baseline}

@media(min-width:481px) {
  html body[data-page=detail] .detail-section__content .requirement-group {align-items:first baseline}
  html body[data-page=detail] .detail-layout .event-points>li>span,
  html body[data-page=detail] .registration-source-meta>div {align-items:first baseline}
}

/* R3: category filters; no public homepage total. Collection keeps its count. */
body[data-page="home"]:not([data-view="events"]) #events-count{display:none!important}
body[data-page="home"]:not([data-view="events"]) .home-events__heading{flex-wrap:wrap;gap:20px}
body[data-page="home"]:not([data-view="events"]) #status-filters{display:flex;flex-wrap:wrap;gap:8px;max-width:100%;margin-left:auto}
body[data-page="home"] #status-filters .filter-button{height:36px;padding:0 20px;white-space:nowrap}
/* All event point lists share one hanging-indent column at every breakpoint. */
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets{display:grid;grid-template-columns:minmax(0,1fr);list-style:none;margin:0;padding:0;gap:12px}
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets>li{display:grid;grid-template-columns:6px minmax(0,1fr);column-gap:12px;align-items:start;margin:0;padding:0;list-style:none;font:400 16px/28px var(--font-ui);min-width:0}
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets>li::before{content:"";display:block;position:static;width:4px;height:4px;margin-top:12px;border:0;border-radius:50%;background:var(--gold,#d6c18b);transform:none;box-shadow:none}
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets>li>span{display:block;grid-column:2;min-width:0;font:inherit;text-align:left;overflow-wrap:anywhere}
@media(max-width:767px){body[data-page="home"]:not([data-view="events"]) #status-filters{margin-left:0;width:100%}}
@media(min-width:1024px){body[data-page="home"]:not([data-view="events"]) .home-events__heading{flex-direction:row;align-items:center}}

/* R4: homepage-only search and deadline removal; complete one-line summary. */
body[data-page="home"]:not([data-view="events"]) [data-site-header] .site-search-area{visibility:hidden;pointer-events:none}
@media(max-width:900px){body[data-page="home"]:not([data-view="events"]) [data-site-header] .site-search-area{display:none!important}}
body[data-page="home"]:not([data-view="events"]) .hero-copy__deadline{display:none!important}
body[data-page="home"] .hero-copy__intro{white-space:nowrap!important;display:block!important;overflow:visible!important;text-overflow:clip!important;-webkit-line-clamp:unset!important;font-size:16px;line-height:28px;max-width:100%}
@media(max-width:600px){body[data-page="home"] .hero-copy__intro{font-size:14px!important}}
/* Explicit equal line boxes align the label with the first bullet and text. */
html body[data-page="detail"] .detail-section__content .requirement-group{align-items:start}
html body[data-page="detail"] .detail-section__content .requirement-group>h3{margin:0;padding:0;font-size:16px;line-height:28px}
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets>li{color:var(--secondary)}
html body[data-page="detail"] .requirement-group .event-points.event-points--bullets>li::before{background:currentColor}
/* One horizontal rail, natural item widths, no date truncation or split rows. */
body[data-page="detail"] .schedule-scroll{max-width:100%;overflow-x:auto;padding-bottom:12px;scrollbar-width:thin;scrollbar-color:var(--gold) transparent;overscroll-behavior-inline:contain}
body[data-page="detail"] .schedule-scroll:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
html body[data-page="detail"] .schedule-scroll .schedule{display:flex;flex-wrap:nowrap;gap:24px;min-width:100%;width:max-content;margin:0;padding:0}
html body[data-page="detail"] .schedule-scroll .schedule__stage{flex:1 0 auto;min-width:180px;max-width:none;display:flex;flex-direction:column;gap:8px;padding:18px 0 0;margin:0}
html body[data-page="detail"] .schedule-scroll .schedule__stage::before{top:0;width:100%;height:0;border-top:2px dashed var(--border);background:none!important}
html body[data-page="detail"] .schedule-scroll .schedule__stage:is(.is-past,.is-closed,.is-current)::before{border-top-style:solid}
html body[data-page="detail"] .schedule-scroll .schedule__stage.is-current::before{border-color:var(--gold)}
html body[data-page="detail"] .schedule-scroll .schedule__stage :is(.schedule__date,h3,.schedule__status){white-space:nowrap;overflow:visible;text-overflow:clip;margin:0;max-width:none;word-break:normal;font-size:16px;line-height:28px}
html body[data-page="detail"] .schedule-scroll .schedule__status{font-size:14px;line-height:22px}
@media(max-width:699px){html body[data-page="detail"] .schedule-scroll .schedule{gap:20px}html body[data-page="detail"] .schedule-scroll .schedule__stage{min-width:164px}}

/* Production V2 R4: hide decorative ellipse outlines globally. */
.site-atmosphere__contours{display:none!important}

/* P0: use one sans-serif CJK family for mixed-language hero titles. */
html body[data-page] :is(.hero-copy h1,.detail-hero h1,.about-heading h1,.supply-hero h1,.supply-hero-copy h1){font-family:var(--font-ui);font-weight:600;font-style:normal;font-variant-numeric:lining-nums;font-variation-settings:normal;}
