/* Figma: Rich / 919:3552, 919:3816, 919:3879, 1026:3574, 1026:4786.
   Shared colors follow the resolved Semantic values of the Rich screens. */
body.rich-page {
 --color-bg-dark: #222c3a;
 --color-header-bg: #222c3a;
 --color-bg-base: #fcfcfc;
 --color-text-primary: #222c3a;
 --color-text-secondary: #424242;
 --color-text-muted: #495e7d;
 --color-border-default: #dedede;
 --color-border-strong: #6b7075;
 --color-accent-red: #a2584c;
 --color-accent-blue: #495e7d;
 --color-accent-gold: #cca86a;
 --color-accent-green: #738878;
 --color-accent-orange: #507cae;
 --color-accent-purple: #756282;
 --color-status-open-bg: #c7dbf7;
 --color-status-open-text: #344764;
 --color-status-closing-bg: #d8b6b0;
 --color-status-closing-text: #6f2b20;
 --color-status-closed-bg: #dadfe4;
 --color-status-closed-text: #828282;
 --color-link-hover: #8e6f36;
 --page-color: #eaf0f9;
 background: var(--page-color);
}
.rich-page .container { width: calc(100% - 240px); max-width: 1200px; }
.rich-page .page-bg { background: var(--page-color); }
.rich-page .section-title { font-size: 36px; line-height: 60px; margin-bottom: 16px; }
.rich-page .site-header { position: sticky; top: 0; z-index: 50; }
.rich-page .site-header__nav ul { gap: 64px; }
.rich-page .site-header__nav a { font-size: 16px; }
.rich-page .hero { aspect-ratio: 1440 / 664; background: #222c3a; }
.rich-page .hero__bg { object-position: center top; }
.rich-page .hero::after { display: none; }
.rich-page .hero__title {
 top: 13.855%; right: 10.625%; margin: 0;
 display: flex; flex-direction: row; gap: 16px; writing-mode: horizontal-tb;
 font: 700 clamp(26px, 2.778vw, 40px)/1.1 var(--font-serif-jp);
}
.rich-page .hero__title span { writing-mode: vertical-rl; text-orientation: upright; letter-spacing: 4px; }
.rich-page .hero__credit { position: absolute; z-index: 1; top: 7.83%; right: 6.67%; margin: 0; writing-mode: vertical-rl; letter-spacing: 3px; color: var(--color-text-inverse); font-size: 20px; line-height: 1; }
/* A single wrapper establishes the intrinsic geometry of the Chip/新 SVG. */
.chip--sakura-new { position: relative; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 33px; width: 33px; height: 37px; vertical-align: middle; }
.chip--sakura-new img { position: absolute; top: 50%; left: 50%; width: 32.0304px; height: 31.8823px; transform: translate(-50%, -50%) rotate(-12.78deg); }
.chip--sakura-new span { position: relative; font: 600 16px/1.5 var(--font-mincho); color: var(--color-accent-red); }
.rich-page .news { display: flex; align-items: center; min-height: 790px; padding: 40px 0; }
.rich-page .chip-row { gap: 10px; margin-bottom: 16px; }
.rich-page .news-item { gap: 16px; padding: 24px 0; }
.rich-page .news-item__main { min-width: 0; width: 100%; gap: 16px; }
.rich-page .news-item__date { flex: 0 0 150px; color: var(--color-text-primary); }
.rich-page .news-item__labels { flex: 0 0 94px; }
.rich-page .news-item__title { min-width: 0; white-space: normal; font-size: 24px; line-height: 36px; }
.rich-page .news-item__main > .chip--sakura-new { margin-left: 0; }
.rich-page .news__more { margin-top: 16px; padding: 8px; }
/* ViewMoreLink: fixed gold base and a white sweep, as in the Rich component. */
.rich-page .view-more-link { color: #fefefe; background: var(--color-accent-gold); border-color: var(--color-accent-gold); }
.rich-page .view-more-link::before { background: var(--color-header-bg); }
.rich-page .view-more-link:is(:hover, :focus-visible)::before { width: 100%; }
.rich-page .view-more-link:is(:hover, :focus-visible) { color: #fefefe; border-color: var(--color-header-bg); }
.feature-section { position: relative; display: flex; align-items: center; min-height: 537px; padding: 56px 0; }
.feature-grid { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 24px; }
.feature-card { display: flex; flex-direction: column; align-items: stretch; gap: 16px; min-width: 0; padding: 24px; background: #fefefe; border-radius: 2px; }
.feature-card__title { margin: 0; font: 700 32px/1.5 var(--font-serif-jp); white-space: nowrap; }
.feature-card__thumb { display: block; width: 100%; height: 152px; object-fit: cover; }
.feature-card__links { display: flex; flex-direction: column; gap: 8px; }
.feature-card__link { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 10px; text-decoration: none; color: #24334a; font: 700 16px/24px var(--font-serif-jp); transition: color 160ms ease-out; }
.feature-card__link span:first-child { flex: 1; min-width: 0; }
.feature-card__link span:last-child { flex-shrink: 0; transition: transform 160ms ease-out; }
.feature-card__link:is(:hover, :focus-visible) { color: var(--color-link-hover); transition-duration: 200ms; }
.feature-card__link:is(:hover, :focus-visible) span:last-child { transform: translateX(6px); transition-duration: 200ms; }
.rich-cloud { position: absolute; z-index: 1; width: 327.51px; height: 69.51px; object-fit: fill; pointer-events: none; }
.rich-cloud--left { left: -23px; top: -70px; }
.rich-cloud--right { right: -169px; top: 28px; }
.rich-home { overflow-x: clip; }
.schedule-section { position: relative; padding: 25px 0; }
.rich-home .schedule-section { display: flex; align-items: center; min-height: 662px; }
.schedule-heading-row { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 16px; }
.schedule-heading-row--filter { justify-content: flex-start; }
.schedule-heading, .archive-heading { margin: 0; font: 600 36px/60px var(--font-serif-jp); }
.schedule-row-list { display: flex; flex-direction: column; gap: 12px; }
.schedule-row { display: flex; align-items: center; gap: 28px; min-height: 122px; padding: 12px 56px 12px 30px; background: var(--color-bg-base); border-radius: 10px; text-decoration: none; color: inherit; box-shadow: 0 0 1px #0000004d, 0 0 3px #00000026; }
/* ScheduleRow intentionally has no hover movement. */
.schedule-row__date { display: flex; flex-direction: column; flex: 0 0 148px; padding-left: 24px; font-family: var(--font-serif-jp); }
.schedule-row__year { margin: 0 0 -10px; font-size: 16px; }
.schedule-row__day-row { display: flex; align-items: baseline; white-space: nowrap; }
.schedule-row__day { font-size: 36px; }
.schedule-row__weekday { font-size: 20px; }
.schedule-row__category { flex-shrink: 0; width: 94px; }
.schedule-row__title-block { display: flex; flex-direction: column; flex: 1; min-width: 0; gap: 9px; }
.schedule-row__title { margin: 0; font: 700 24px/1.5 var(--font-serif-jp); }
.schedule-row__venue { margin: 0; font-size: 20px; line-height: 1.5; color: var(--color-accent-blue); }
.schedule-row__status { display: flex; flex-direction: column; flex-shrink: 0; gap: 8px; }
.status-chip { display: inline-flex; align-items: center; justify-content: center; width: 94px; height: 31px; border-radius: 100px; font-size: 16px; font-weight: 500; }
.status-chip--open { background: var(--color-status-open-bg); color: var(--color-status-open-text); }
.status-chip--closing { background: var(--color-status-closing-bg); color: var(--color-status-closing-text); }
.status-chip--closed { background: var(--color-status-closed-bg); color: var(--color-status-closed-text); }
.schedule-row__deadline { margin: 0; font-size: 20px; line-height: 1.5; color: var(--color-accent-blue); white-space: nowrap; }
.availability-filter { display: flex; align-items: center; gap: 8px; font-size: 16px; }
.availability-filter input { width: 13px; height: 13px; accent-color: var(--color-accent-blue); }
.schedule-row[hidden], .schedule-empty[hidden] { display: none; }
.archive-section { padding: 25px 0 104px; }
.archive-heading-row { display: flex; align-items: center; gap: 24px; margin-bottom: 16px; }
.rich-exam .schedule-section { padding-top: 25px; padding-bottom: 65px; }
.rich-exam .page-section { padding-bottom: 40px; }
/* The exported decorative vector keeps the pink sakura silhouette intact. */
.about-rich { position: relative; min-height: 928px; background: url('assets/decoration-about-bg.svg') center top / 100% 100% no-repeat; }
.about-rich__body { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; gap: 0; width: 486px; margin-left: max(24px,calc((100% - 1200px)/2 + 6px)); padding-top: 288px; }
.about-rich__title { margin: 0 0 39px; font: 600 36px/60px var(--font-mincho); }
.about-rich__lead { max-width: 394px; margin: 0 0 55px; font: 400 20px/1.5 var(--font-mincho); color: var(--color-text-secondary); }
.about-rich__photo { position: absolute; z-index: 2; top: 318px; left: calc(50% - 21px); width: 513px; height: 385px; object-fit: cover; }
.about-rich__river { position: absolute; z-index: 3; left: 0; bottom: -43px; width: calc(100% - 8px); height: auto; pointer-events: none; }
.rich-page .site-footer { min-height: 358px; padding: 74px 120px 25px; background: #111c2c; }
.rich-page .pattern-bg--footer { inset: 0; background: url('assets/pattern-footer.svg') -80px -138.56px / 1720.81px 624.938px no-repeat; opacity: .6; }
.rich-page .site-footer__row { display: flex; align-items: flex-start; gap: 40px; margin-bottom: 50px; }
.rich-page .site-footer__name { flex: 1; font: 400 24px/36px var(--font-serif-jp); }
.rich-page .site-footer__nav { display: flex; justify-content: space-between; flex: 0 0 648px; gap: 20px; }
.rich-page .site-footer__nav ul { gap: 12px; }
.rich-page .site-footer__nav a { font: 700 16px/24px var(--font-serif-jp); }
.rich-page .site-footer__sub { padding-left: 16px; }
.rich-page .site-footer__sub + .site-footer__sub { margin-top: -4px; }
.rich-page .site-footer__copyright { font: 400 14px/21px var(--font-serif-jp); }
.rich-page .breadcrumb { max-width: 1440px; margin: 0 auto; padding: 64px 120px 40px; color: #564561; }
.rich-page .page-heading { margin-bottom: 31px; }
.rich-page .article-container { padding-top: 9px; }
.rich-page .article-title { font-family: var(--font-serif-jp); font-weight: 700; }
.rich-page .article-meta-row .news-item__date { flex-basis: auto; }
.rich-page.article-page { --article-gap: 32px; }
.rich-page .article-body { gap: var(--article-gap,32px); }
.rich-page .article-images { flex: 1; max-width: 896px; gap: var(--article-gap,32px); }
.rich-page .download-panel { width: 271px; top: calc(var(--header-height,82px) + var(--article-gap,32px)); }
.rich-page .article-nav { padding-top: var(--article-gap,32px); gap: var(--article-gap,32px); }
.rich-page .article-nav__links { gap: var(--article-gap,32px); }
.rich-page .article-page--notice .article-images { flex: 0 1 896px; }
/* Filters use the same option rows as Figma; opening them does not move the list. */
.event-annual { display: flex; justify-content: flex-end; padding: 22px 8px 16px; }
.event-filters { display: flex; gap: 33px; padding: 27px 5px 40px; }
.event-filter { display: flex; align-items: center; gap: 7px; font-size: 16px; }
.category-filter { position: relative; }
.category-filter__trigger { width: 188px; min-height: 47px; padding: 10px 27px; border: 1px solid #afafaf; background: #fcfcfc; text-align: left; color: var(--color-text-primary); font: 400 16px/24px var(--font-serif-jp); cursor: pointer; }
.category-dropdown-list { display: none; position: absolute; z-index: 5; left: 0; top: 100%; width: 188px; background: #fcfcfc; border: 1px solid #afafaf; }
.category-filter.is-open .category-dropdown-list { display: block; }
.category-dropdown-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 8px 16px 8px 30px; border-bottom: 1px solid #dedede; cursor: pointer; }
.category-dropdown-row:last-child { border-bottom: 0; }
.category-dropdown-row input { margin: 0; width: 16px; height: 16px; accent-color: var(--color-accent-blue); }
.rich-events .page-section { padding-bottom: 30px; }
.rich-events .schedule-row { min-height: 122px; }
a:focus-visible,button:focus-visible { outline: 2px solid var(--color-accent-gold); outline-offset: 4px; }
@media (max-width: 1300px) {
 .rich-page .container { width: calc(100% - 96px); }
 .rich-page .site-header { padding-left: 48px; padding-right: 48px; }
 .rich-page .site-header__nav ul { gap: 32px; }
 .rich-page .site-header__title { font-size: 28px; }
 .feature-card { padding: 20px; }
 .feature-card__title { font-size: 26px; }
 .feature-card__link { font-size: 14px; padding-left: 0; padding-right: 6px; }
 .rich-page .news-item__main { display: grid; grid-template-columns: 150px 94px 33px 1fr; gap: 12px 16px; }
 .rich-page .news-item__date { width: auto; }
 .rich-page .news-item__labels { grid-column: 2; }
 .rich-page .news-item__title { grid-column: 1 / -1; grid-row: 2; order: unset; }
 .rich-page .news-item__main > .chip--sakura-new { grid-column: 3; grid-row: 1; }
 .schedule-row { display: grid; grid-template-columns: 148px 94px minmax(0,1fr); padding: 20px 24px; gap: 12px 24px; }
 .schedule-row__date { padding-left: 0; }
 .schedule-row__title-block { grid-column: 3; }
 .schedule-row__status { grid-column: 3; flex-direction: row; align-items: center; flex-wrap: wrap; }
 .about-rich__body { margin-left: 48px; width: 44%; }
 .about-rich__title { font-size: 30px; }
 .about-rich__photo { left: 55%; width: 41%; height: auto; aspect-ratio: 513 / 385; }
 .rich-page .site-footer { padding-left: 48px; padding-right: 48px; }
 .rich-page .site-footer__row { flex-direction: column; gap: 32px; }
 .rich-page .site-footer__nav { flex: auto; width: 100%; max-width: 760px; }
 .rich-page .breadcrumb { padding-left: 48px; padding-right: 48px; }
}
@media (max-width: 1100px) {
 .rich-page .site-header { padding: 12px 24px; }
 .rich-page .site-header__nav ul { gap: 0; }
 .rich-page .site-header__title { font-size: clamp(18px,4.8vw,26px); }
 .rich-page .hero__title { font-size: 30px; gap: 12px; }
 .rich-page .hero__credit { font-size: 16px; }
 .feature-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .feature-card__title { font-size: 30px; }
 .feature-card__thumb { height: auto; aspect-ratio: 234 / 152; }
 .feature-card__link { font-size: 16px; }
 .rich-page .news { min-height: 0; padding: 64px 0; }
 .rich-home .schedule-section { min-height: 0; padding: 64px 0; }
 .rich-page .article-body { flex-direction: row; }
 .rich-page .article-images { min-width: 0; }
 .rich-page .download-panel { width: 240px; position: sticky; }
 .rich-page .download-panel .btn { font-size: 14px; padding-left: 8px; padding-right: 24px; }
 .rich-page .download-panel .btn__icon { right: 8px; }
}
@media (max-width: 860px) {
 .rich-page .container { width: calc(100% - 48px); }
 .rich-page .hero { aspect-ratio: 4 / 3; }
 .rich-page .hero__bg { object-position: center top; }
 .rich-page .hero__title { top: 12%; right: 14%; font-size: clamp(22px,3.8vw,30px); gap: 10px; }
 .rich-page .hero__title span { letter-spacing: 2px; }
 .rich-page .hero__credit { top: 8%; right: 5%; font-size: 14px; }
 .rich-page .section-title,.schedule-heading,.archive-heading { font-size: 28px; line-height: 1.7; }
 .rich-page .news-item__title { font-size: 20px; line-height: 1.8; }
 .rich-page .news-item__date { font-size: 16px; }
 .feature-section { padding: 40px 0; min-height: 0; }
 .schedule-row { grid-template-columns: minmax(0,1fr) 94px; padding: 20px; gap: 16px; }
 .schedule-row__date { grid-column: 1; grid-row: 1; }
 .schedule-row__category { grid-column: 2; grid-row: 1; }
 .schedule-row__title-block { grid-column: 1/-1; grid-row: 2; }
 .schedule-row__title { font-size: 21px; }
 .schedule-row__venue,.schedule-row__deadline { font-size: 16px; }
 .schedule-row__status { grid-column: 1/-1; grid-row: 3; }
 .about-rich { display: flex; flex-direction: column; align-items: flex-start; gap: 32px; min-height: 0; padding: 150px 24px 150px; background-size: auto 100%; background-position: center top; }
 .about-rich__body { order: 0; width: 100%; margin: 0; padding: 0; }
 .about-rich__title { font-size: 28px; line-height: 1.7; margin-bottom: 20px; }
 .about-rich__lead { max-width: 550px; font-size: 18px; line-height: 1.5; margin-bottom: 24px; }
 .about-rich__photo { position: relative; order: 1; left: auto; top: auto; width: min(100%,513px); height: auto; align-self: flex-end; }
 .about-rich__river { bottom: 0px; width: 100%; height: auto; }
 .rich-page .site-footer { padding: 64px 24px 24px; }
 .rich-page .site-footer__name { font-size: 20px; white-space: normal; }
 .rich-page .site-footer__nav { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 28px 20px; }
 .rich-page .site-footer__nav a { font-size: 14px; white-space: normal; }
 .rich-page .breadcrumb { padding: 32px 24px; font-size: 14px; line-height: 1.8; }
 .rich-page .article-body { flex-direction: column; gap: var(--article-gap,32px); }
 .rich-page .article-images { flex: auto; width: 100%; }
 .rich-page .download-panel { position: static; order: -1; width: 100%; }
 .rich-page .download-panel .btn { width: 220px; }
 .rich-page .article-nav__links { flex-direction: column; }
 .rich-page .article-title { font-size: 28px; line-height: 1.7; }
 .event-filters { flex-wrap: wrap; gap: 20px; }
 .rich-exam .schedule-section { padding-bottom: 32px; }
 .archive-section { padding-bottom: 64px; }
}
@media (max-width: 520px) {
 .rich-page .hero__title { font-size: 22px; gap: 6px; right: 13%; }
 .rich-page .hero__credit { font-size: 12px; right: 4%; }
 .rich-page .news { padding: 44px 0; }
 .rich-page .news-item__main { grid-template-columns: minmax(0,1fr) 94px 33px; gap: 12px; }
 .rich-page .news-item__title { font-size: 18px; }
 .rich-page .chip-row { gap: 8px; }
 .rich-page .chip--filter { width: auto; min-width: 80px; font-size: 14px; padding-inline: 12px; }
 .feature-grid { grid-template-columns: minmax(0,1fr); gap: 20px; }
 .feature-card { padding: 24px; }
 .feature-card__thumb { max-height: 240px; }
 .schedule-heading-row,.archive-heading-row { flex-wrap: wrap; gap: 10px; }
 .schedule-heading,.archive-heading { font-size: 26px; }
 .schedule-row__day { font-size: 30px; }
 .schedule-row__title { font-size: 18px; }
 .schedule-row__deadline { font-size: 15px; }
 .rich-page .site-footer__nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .rich-page .article-meta-row .news-item__date { font-size: 16px; }
 .event-filter { width: 100%; justify-content: space-between; }
 .rich-page .article-nav__card { padding: 16px; }
 .rich-page .site-footer__copyright { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
 .feature-card__link,.feature-card__link span:last-child { transition: none; }
}
.rich-page .hero__title { flex-direction: row-reverse; right: 9.236%; }
@media (max-width: 860px) { .rich-page .hero__title { right: 14%; } }
@media (max-width: 520px) { .rich-page .hero__title { right: 13%; } }
.category-filter__trigger { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rich-cloud-wrap { position: absolute; inset: -70px 0 0; overflow: hidden; pointer-events: none; }
.rich-cloud-wrap .rich-cloud--left { top: 0; }
.rich-cloud-wrap .rich-cloud--right { top: 98px; }
.rich-cloud { width: 327.52px; height: 69.51px; }
.schedule-section > .container { position: relative; z-index: 2; }
.schedule-row__date { min-width: 0; width: 148px; }
.subpage-cloud-wrap { position: absolute; top: 738px; left: 0; width: 100%; height: 70px; overflow: hidden; pointer-events: none; opacity: .8; }
.subpage-cloud-wrap img { position: absolute; left: -135px; top: 0; }
@media (max-width: 860px) { .subpage-cloud-wrap { top: 880px; } }
.rich-page .news { position: relative; z-index: 2; }
@media (max-width: 860px) { .about-rich { padding-top: 240px; } }
.article-event-link { font-size: 20px; color: var(--color-text-muted); text-decoration: underline; }
@media (max-width: 520px) { .article-event-link { font-size: 14px; } .rich-page .article-meta-row { flex-wrap: wrap; } }

/* Opening timings mirror Simple: stationary logo fade/scale, then hero copy. */
.opening { display: none; }
.opening-active, .opening-active body { overflow: hidden; }
.opening-active:not(.opening-revealing) .rich-home > :not(.opening) { visibility: hidden; }
.opening-active .opening { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; overflow: hidden; background: var(--color-header-bg); opacity: 1; transition: opacity 600ms ease; }
.opening__logo { position: relative; width: clamp(160px,18vw,260px); height: auto; opacity: 0; filter: drop-shadow(0 4px 24px #0009); }
.opening.is-ready .opening__logo { animation: rich-opening-logo-in 825ms 135ms cubic-bezier(.2,.7,.3,1) both; }
.opening-active .opening.is-leaving { opacity: 0; pointer-events: none; }
@keyframes rich-opening-logo-in { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: scale(1); } }
.rich-home .hero__title .hero__char { display: inline-block; }
.rich-home .hero-copy-pending .hero__char, .rich-home .hero-copy-pending .hero__credit { opacity: 0; }
.rich-home .hero-copy-playing .hero__char { animation: rich-hero-character-in 400ms var(--char-delay) ease-out both; }
.rich-home .hero-copy-playing .hero__credit { animation: rich-hero-name-in 700ms var(--name-delay) ease-out both; }
@keyframes rich-hero-character-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes rich-hero-name-in { from { opacity: 0; } to { opacity: 1; } }
@media (max-width: 767px) {
 .rich-home .hero-copy-pending .hero__char, .rich-home .hero-copy-pending .hero__credit { opacity: 1; animation: none; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
 .opening-active .opening { display: none; }
 .opening-active:not(.opening-revealing) .rich-home > :not(.opening) { visibility: visible; }
 .rich-home .hero-copy-pending .hero__char, .rich-home .hero-copy-pending .hero__credit { opacity: 1; animation: none; transform: none; }
}

/* The crest and name share a single home link. */
a.site-header__brand { text-decoration: none; }

/* Independent high-resolution petals, based on the original scatter positions. */
.rich-petals {
 position: absolute;
 z-index: 1;
 top: -1121px;
 left: 0;
 width: 100%;
 aspect-ratio: 1440 / 2403;
 pointer-events: none;
 user-select: none;
}
.rich-petal {
 position: absolute;
 left: var(--petal-x);
 top: var(--petal-y);
 width: var(--petal-size);
 aspect-ratio: 1;
 translate: -50% -50%;
}
.rich-petal img {
 display: block;
 width: 100%;
 height: auto;
 transform: rotate(var(--petal-angle));
 opacity: .86;
}
/* Keep petals behind photos, copy and cards, and below the next section. */
.rich-home .hero { z-index: 2; }
.rich-home .about-rich { z-index: 2; }
@media (max-width: 1100px) {
 .rich-petals { top: -650px; height: calc(100% + 1400px); aspect-ratio: auto; }
}
@media (prefers-reduced-motion: reduce) {
 .rich-petal { transform: none !important; }
}

/* Rich header: Figma component 919:4209, with a five-category disclosure. */
body.rich-page { --color-header-bg: #222c3a; --color-navigation-text: #fefefe; --color-interaction-dark: #111c2c; --color-schedule-detail: #6b7075; }
.rich-page .site-header { padding: 0 79px 0 118px; overflow: visible; }
.rich-page .site-header::before { inset: 0; width: 100%; height: 100%; background: url('assets/pattern-header-rich.svg') -80px -138.56px / 1720.81px 417.092px no-repeat; opacity: 1; }
.rich-page .site-header__title { font-family: var(--font-serif-jp); font-weight: 400; color: var(--color-navigation-text); }
.rich-page .site-header__nav > ul { display: grid; grid-template-columns: repeat(4, 104px); gap: 24px; }
.rich-page .site-header__nav > ul > li { display: flex; justify-content: center; }



.rich-page .site-header__nav a, .header-dropdown__trigger { color: var(--color-navigation-text); font: 700 16px/24px var(--font-serif-jp); }
.rich-page .site-header__nav > ul > li > a { padding: 4px 0 6px; }
.rich-page .site-header__nav a::after { bottom: 2px; transition-duration: 160ms; }
.rich-page .site-header__nav a:is(:hover,:focus-visible)::after { transition-duration: 180ms; }
.header-dropdown { position: relative; }
.header-dropdown::before { content: ''; position: absolute; left: -14px; top: 100%; height: 24px; width: 132px; }
.header-dropdown__trigger { position: relative; display: flex; align-items: center; height: 34px; padding: 4px 0 6px; border: 0; background: transparent; cursor: pointer; }
.header-dropdown__trigger::after { content: ''; position: absolute; left: 0; right: 24px; bottom: 2px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 160ms ease-out; }
.header-dropdown__trigger:is(:hover,:focus-visible)::after, .header-dropdown.is-open .header-dropdown__trigger::after { transform: scaleX(1); transition-duration: 180ms; }
.header-dropdown__trigger img { flex: 0 0 24px; display: block; transition: transform 180ms ease-out; }
.header-dropdown.is-open .header-dropdown__trigger img { transform: rotate(180deg); }
.rich-page .site-header__nav .header-dropdown__list { position: absolute; z-index: 5; top: calc(100% + 24px); left: -14px; display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 0; width: 132px; margin: 0; padding: 0; background: var(--color-header-bg); border: 1px solid #495e7d; border-radius: 0; box-shadow: var(--shadow-document); overflow: hidden; opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity 180ms ease-out, transform 180ms ease-out, visibility 0s linear 180ms; }
.rich-page .site-header__nav .header-dropdown.is-open > .header-dropdown__list { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
.header-dropdown__list li + li { border-top: 1px solid #495e7d; }
.rich-page .header-dropdown__list a { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 16px; text-decoration: none; transition: background-color 160ms ease-out; }
.rich-page .header-dropdown__list a::after { display: none; }
.rich-page .header-dropdown__list a:is(:hover,:focus-visible) { background: #344764; }
.rich-page .site-header__toggle { color: var(--color-navigation-text); }
/* Shared link and card feedback. */
.chip--sakura-new span { transform: translate(-1px,1px); }
.feature-card__title { font-weight: 600; }
.feature-card__link:is(:hover,:focus-visible) span:first-child { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.schedule-row { outline: none; box-shadow: inset 0 0 0 1.5px transparent, 0 0 1px #0000004d, 0 0 3px #00000026; transition: box-shadow 180ms ease-out; }
.schedule-row:is(:hover,:focus-visible) { box-shadow: inset 0 0 0 1.5px var(--color-accent-gold), 0 0 1px #0000004d, 0 0 3px #00000026; }
.schedule-row__venue, .schedule-row__deadline { color: var(--color-schedule-detail); }
/* Light once-only entrances do not affect layout or hover geometry. */
.scroll-enter { opacity: 0; transform: translateY(18px); transition: opacity 500ms ease-out var(--enter-delay,0ms), transform 500ms ease-out var(--enter-delay,0ms), box-shadow 180ms ease-out; }
.scroll-enter.is-entered { opacity: 1; transform: none; }
/* Petals sit over the hero image and under its copy; the header stays above both. */
.rich-home .hero { z-index: auto; }
.rich-home .hero__title, .rich-home .hero__credit { z-index: 3; }
@media (min-width: 1101px) and (max-width: 1300px) {
 .rich-page .site-header { padding-left: 48px; padding-right: 48px; }
 
 
 
}
@media (max-width: 1100px) {
 .rich-page .site-header { padding: 12px 24px; }
 .rich-page .site-header__nav > ul { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
 .rich-page .site-header__nav > ul > li { display: block; }
 .rich-page .site-header__nav > ul > li { margin-right: 0 !important; }
 .rich-page .site-header__nav > ul > li > a { padding: 16px 8px; }
 .header-dropdown::before { display: none; }
 .header-dropdown__trigger { width: 100%; height: 56px; padding: 16px 8px; justify-content: space-between; }
 .header-dropdown__trigger::after { left: 8px; right: 8px; bottom: 8px; }
 .rich-page .site-header__nav .header-dropdown__list { position: static; width: 100%; max-height: 0; border: 0; border-radius: 0; box-shadow: none; transition: max-height 220ms ease-out, opacity 180ms ease-out, visibility 0s linear 220ms; }
 .rich-page .site-header__nav .header-dropdown.is-open > .header-dropdown__list { max-height: 240px; transition-delay: 0s; }
 .rich-page .site-header.has-menu .header-dropdown__list a { display: flex; justify-content: flex-start; min-height: 44px; padding: 10px 24px; }
}
@media (prefers-reduced-motion: reduce) {
 .scroll-enter { opacity: 1; transform: none; transition: none; }
 .header-dropdown__trigger img, .header-dropdown__trigger::after, .rich-page .site-header__nav .header-dropdown__list { transition: none; }
}

/* Preserve the scatter geometry but clip every moving petal at the pink section. */
.rich-petals { overflow-x: clip; overflow-y: visible; clip-path: inset(-200vh 0 calc(100% - var(--petal-cutoff, 100%)) 0); }

.hero-petals { position: absolute; inset: 0; z-index: 2; overflow: hidden; pointer-events: none; user-select: none; }

/* News titles share the category chip palette. */
.rich-page .news-item:has(.chip--solid-red, .chip--outline-red) { --news-accent: var(--color-accent-red); }
.rich-page .news-item:has(.chip--solid-gold, .chip--outline-gold) { --news-accent: var(--color-accent-gold); }
.rich-page .news-item:has(.chip--solid-green, .chip--outline-green) { --news-accent: var(--color-accent-green); }
.rich-page .news-item:has(.chip--solid-orange, .chip--outline-orange) { --news-accent: var(--color-accent-orange); }
.rich-page .news-item:has(.chip--solid-purple, .chip--outline-purple) { --news-accent: var(--color-accent-purple); }
.rich-page .news-item:has(.chip--solid-blue, .chip--outline-blue) { --news-accent: var(--color-accent-blue); }
.rich-page .news-item:has(.chip--solid-neutral, .chip--outline-neutral) { --news-accent: var(--color-border-strong); }
.rich-page .news-item__link:is(:hover, :focus-visible) { color: var(--news-accent, var(--color-text-primary)); }

.rich-page .chip-row .chip--filter.chip--outline-neutral:not(.is-active):not(:hover):not(:focus-visible) { color: var(--color-border-strong); }

/* The root canvas also supplies the rubber-band area above and below the page. */
html:has(body.rich-page), body.rich-page { background-color: #222c3a; }
.rich-home { background-color: var(--page-color); }
.rich-home .news > .container { position: relative; z-index: 2; }
.rich-home .schedule-section > .container { position: relative; z-index: 2; }
.rich-home .site-footer { z-index: 2; }
.rich-news .page-section { padding-bottom: 96px; }
/* Three continuing petals stay below navigation and copy, behind the pink artwork. */
.persistent-petals { position: fixed; inset: 0; z-index: 1; pointer-events: none; user-select: none; clip-path: inset(var(--petal-header,82px) 0 var(--petal-bottom,0px)); }
body.rich-home { background: #222c3a; }
.rich-home::before { content: ""; position: absolute; inset: 0; background: var(--page-color); pointer-events: none; z-index: -1; }
body.rich-home { position: relative; isolation: isolate; }

/* Clouds enter from their outer side, then follow the scroll at 80% speed. */
.cloud-motion-ready img { opacity: 0; transform: translateX(var(--cloud-enter-x)); transition: opacity 850ms ease-out, transform 1100ms cubic-bezier(.16,1,.3,1); }
.cloud-motion-ready.cloud-is-visible img { opacity: 1; transform: translateX(0); }
@media (prefers-reduced-motion: reduce) {
 .cloud-motion-ready img { opacity: 1; transform: none; transition: none; }
}

/* Preserve the original news heading offset, collapse only the bottom of the list. */
.rich-home .news.is-filter-sized { min-height: 0; align-items: flex-start; padding-top: var(--news-anchor-top); }
.rich-page .event-annual .view-more-link::before { background: var(--color-header-bg); }
.rich-page .event-annual .view-more-link:is(:hover,:focus-visible) { color: #fefefe; border-color: var(--color-header-bg); }
@media (max-width: 860px) { .rich-home .news.is-filter-sized { padding-top: 64px; } }
@media (max-width: 767px) { .rich-home .news.is-filter-sized { padding-top: 44px; } }

.rich-news button.page-btn:not(:disabled) { color: var(--color-text-primary); background: var(--color-bg-base); cursor: pointer; }
.rich-news button.page-btn--current:not(:disabled) { color: #fefefe; background: var(--color-header-bg); }
.rich-news button.page-btn:not(:disabled):hover { border-color: var(--color-header-bg); }

/* The event label navigates; its adjacent arrow alone opens the menu. */
.header-dropdown__control { display: flex; align-items: center; }
.rich-page .header-dropdown__control > a { padding: 4px 0 6px; }
.header-dropdown__control .header-dropdown__trigger { width: 24px; flex: 0 0 24px; justify-content: center; }
.header-dropdown__control .header-dropdown__trigger::after { display: none; }
/* Animate the checkbox panels without display:none so closing can also finish. */
.rich-page .category-dropdown-list { display: block; opacity: 0; visibility: hidden; transform: translateY(-8px); pointer-events: none; transition: opacity 180ms ease-out, transform 220ms ease-out, visibility 0s linear 220ms; }
.rich-page .category-filter.is-open .category-dropdown-list { opacity: 1; visibility: visible; transform: none; pointer-events: auto; transition-delay: 0s; }
@media (max-width:1100px) {
 .header-dropdown__control > a { flex: 1; padding: 16px 8px; }
 .header-dropdown__control .header-dropdown__trigger { width: 44px; flex-basis: 44px; height: 56px; padding: 16px 10px; }
}
@media (prefers-reduced-motion:reduce) { .rich-page .category-dropdown-list { transition: none; transform: none; } }

/* Clear, rounded selection controls with a rotating chevron. */
.rich-page .category-filter__trigger { position: relative; border-radius: 10px; padding: 10px 40px 10px 16px; transition: border-color 180ms ease, box-shadow 180ms ease; }
.rich-page .category-filter__trigger::after { content: ''; position: absolute; right: 17px; top: 18px; width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 180ms ease; }
.rich-page .category-filter.is-open .category-filter__trigger::after { transform: translateY(4px) rotate(225deg); }
.rich-page .category-filter__trigger:is(:hover,:focus-visible), .rich-page .category-filter.is-open .category-filter__trigger { border-color: var(--color-header-bg); box-shadow: 0 0 0 1px var(--color-header-bg); }
.rich-page .category-dropdown-list { top: calc(100% - 1px); border-radius: 0 0 10px 10px; overflow: hidden; box-shadow: 0 0 12px #222c3a1f; }
.rich-page .category-dropdown-row:hover { background: #eaf0f9; }
/* Like the header, reveal the underline from left to right. */
.feature-card__link > span:first-child { position: relative; flex: 0 1 auto; }
.feature-card__link > span:last-child { margin-left: auto; }
.feature-card__link:is(:hover,:focus-visible) span:first-child { text-decoration: none; }
.feature-card__link > span:first-child::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 180ms ease-out; }
.feature-card__link:is(:hover,:focus-visible) > span:first-child::after { transform: scaleX(1); }
@media (prefers-reduced-motion:reduce) { .feature-card__link > span:first-child::after, .rich-page .category-filter__trigger, .rich-page .category-filter__trigger::after { transition: none; } }

/* Join the open panel to its trigger without a gap or doubled border. */
.rich-page .category-filter.is-open .category-filter__trigger { border-bottom-left-radius: 0; border-bottom-right-radius: 0; box-shadow: none; }

/* Keep mobile shortcuts and footer compact, with every link still visible. */
@media (max-width: 767px) {
 .rich-home .feature-section { padding: 24px 0; }
 .rich-home .feature-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
 .rich-home .feature-card { padding: 12px; gap: 10px; }
 .rich-home .feature-card__title { font-size: clamp(16px,5vw,20px); line-height: 1.4; }
 .rich-home .feature-card__thumb { height: 80px; max-height: none; aspect-ratio: auto; object-fit: cover; }
 .rich-home .feature-card__links { gap: 4px; }
 .rich-home .feature-card__link { min-height: 40px; padding: 4px 0; gap: 4px; font-size: 13px; line-height: 20px; }
}

@media (max-width: 767px) { .rich-home .about-rich__lead { font-size: 16px; } }

/* A growing mobile submenu must never reflow into horizontal columns. */
.rich-page .header-dropdown__list > li { flex: 0 0 auto; }
@media (max-width: 1100px) {
 .rich-page .site-header.has-menu .site-header__nav ul { flex-wrap: nowrap; }
 .rich-page .site-header__nav .header-dropdown__list { transform: none; }
}

/* One body-text size across desktop and mobile; headings and controls keep their scale. */
body.rich-page { --font-size-body: 16px; font-size: var(--font-size-body); }
.rich-page .about-rich__lead,
.rich-page .schedule-row__venue,
.rich-page .schedule-row__deadline,
.rich-page .news-item__date,
.rich-page .article-event-link,
.rich-page .news-empty,
.rich-page .schedule-empty,
.rich-page .article-body p,
.rich-page .article-body li { font-size: var(--font-size-body); }

@media (min-width: 861px) { .rich-page .news-item__title { font-size: 20px; } }
@media (min-width: 521px) and (max-width: 860px) { .rich-page .schedule-row__title { font-size: 20px; } }

/* Date, category and title use fixed shared columns, with balanced spacing. */
.rich-page .news-item__date { width: 124px; flex-basis: 124px; font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (min-width:1301px) {
 .rich-page .news-item__main { display: grid; grid-template-columns: 124px 94px minmax(0,1fr) 33px; gap: 20px; align-items: center; }
 .rich-page .news-item__date { grid-column: 1; grid-row: 1; }
 .rich-page .news-item__labels { grid-column: 2; grid-row: 1; }
 .rich-page .news-item__title { grid-column: 3; grid-row: 1; }
 .rich-page .news-item__main > .chip--sakura-new { grid-column: 4; grid-row: 1; }
}
@media (max-width:1300px) {
 .rich-page .news-item__main { grid-template-columns: 124px 94px minmax(33px,1fr); column-gap: 16px; }
}
@media (max-width:767px) {
 .rich-page .news-item__main { column-gap: 10px; }
}
.rich-page .schedule-row__full-date { font-size: 16px; line-height: 1.6; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rich-page .schedule-row__weekday { font-size: 16px; line-height: 1.6; }
@media (min-width:768px) { .rich-home .feature-card__title { font-size: 28px; } }

/* Keep each new mark immediately after its article title. */
.rich-page .news-item__title .chip--sakura-new { margin-left: 8px; vertical-align: middle; }
@media (min-width:1301px) { .rich-page .news-item__main { grid-template-columns: 124px 94px minmax(0,1fr); } }
/* Year stays at body size; the larger month/day and weekday share line two. */
.rich-page .schedule-row__date { flex-basis: 218px; width: 218px; }
.rich-page .schedule-row__year { margin: 0; font-size: 16px; line-height: 1.6; }
.rich-page .schedule-row__day-row { display: flex; align-items: baseline; gap: 4px; flex-wrap: nowrap; }
.rich-page .schedule-row__day { font-size: 26px; line-height: 1.3; }
.rich-page .schedule-row__weekday { font-size: 18px; line-height: 1.3; }
.rich-page .article-nav__card:is(:hover,:focus-visible) { background: var(--color-bg-base); border-color: var(--color-accent-gold); }
.rich-page .event-detail-summary { width: 100%; margin: 0; padding: 24px 32px; background: var(--color-bg-base); }
.rich-page .event-detail-summary > div { display: grid; grid-template-columns: 80px minmax(0,1fr); gap: 16px; padding: 16px 0; }
.rich-page .event-detail-summary dt { font-weight: 600; }
.rich-page .event-detail-summary dd { margin: 0; }
@media (min-width:861px) and (max-width:1300px) {
 .rich-page .schedule-row { grid-template-columns: 200px 94px minmax(0,1fr); }
 .rich-page .schedule-row__date { width: auto; }
}
@media (max-width:860px) {
 .rich-page .schedule-row__date { width: 100%; grid-column: 1/-1; grid-row: 1; }
 .rich-page .schedule-row__year { margin-bottom: 8px; }
 .rich-page .schedule-row__category { align-self: start; }
}

/* Equal gutters around the category; varying date lengths share a right edge. */
.rich-page .schedule-row { column-gap: 24px; }
.rich-page .schedule-row__date { width: 210px; flex-basis: 210px; padding-left: 0; }
.rich-page .schedule-row__day-row { justify-content: flex-end; width: 100%; }
.rich-page .schedule-row__day, .rich-page .schedule-row__weekday { font-size: 28px; line-height: 1.3; }
.rich-page .about-rich__lead { color: var(--color-header-bg); }
.rich-page .breadcrumb { color: var(--color-schedule-detail); font-size: 16px; line-height: 1.6; }
.rich-page .site-footer, .rich-page .site-footer * { animation: none; transition: none; }
.rich-page .site-footer__inner { opacity: 1; transform: none; }
@media (min-width:861px) and (max-width:1300px) {
 .rich-page .schedule-row { grid-template-columns: 210px 94px minmax(0,1fr); }
 .rich-page .schedule-row__date { width: auto; }
}
@media (max-width:860px) {
 .rich-page .schedule-row { column-gap: 16px; }
 .rich-page .schedule-row__date { width: 100%; }
 .rich-page .schedule-row__day-row { justify-content: flex-start; }
}

/* Share the start of both date lines while keeping the category column fixed. */
.rich-page .schedule-row__date {
 display: grid;
 grid-template-columns: max-content;
 justify-content: end;
 align-content: center;
}
.rich-page .schedule-row__day-row { width: auto; justify-content: flex-start; gap: 0; }
.rich-page .site-footer__column { display: contents; }
@media (max-width: 860px) {
 .rich-page .schedule-row__date { justify-content: start; }
}
@media (max-width: 767px) {
 .rich-page .site-footer__nav { grid-template-columns: repeat(2,minmax(0,1fr)); align-items: start; }
 .rich-page .site-footer__column { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
}

/* Compact event cards: date/category above the title, then a separate status area. */
@media (max-width: 1300px) {
 .rich-page .schedule-row { grid-template-columns: 160px minmax(0,1fr) 180px; gap: 20px 16px; padding: 24px; align-items: center; }
 .rich-page .schedule-row__date { display: flex; flex-direction: row; align-items: baseline; width: auto; grid-column: 1; grid-row: 1; white-space: nowrap; }
 .rich-page .schedule-row__year { margin: 0; }
 .rich-page .schedule-row__day-row { width: auto; gap: 0; }
 .rich-page .schedule-row__year, .rich-page .schedule-row__day, .rich-page .schedule-row__weekday { font-size: 16px; line-height: 1.6; }
 .rich-page .schedule-row__category { grid-column: 2; grid-row: 1; justify-self: start; align-self: center; }
 .rich-page .schedule-row__title-block { grid-column: 1 / 3; grid-row: 2; }
 .rich-page .schedule-row__status { grid-column: 3; grid-row: 1 / 3; flex-direction: column; align-items: flex-start; flex-wrap: nowrap; }
}
@media (max-width: 860px) {
 .rich-page .schedule-row { grid-template-columns: minmax(0,1fr) 94px; gap: 24px 12px; padding: 20px; }
 .rich-page .schedule-row__category { justify-self: end; }
 .rich-page .schedule-row__title-block { grid-column: 1 / -1; grid-row: 2; }
 .rich-page .schedule-row__status { grid-column: 1 / -1; grid-row: 3; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--color-border-subtle,#dddddd); padding-top: 20px; }
}
@media (max-width: 767px) {
 .rich-page .chip:not(.chip--sakura-new), .rich-page .status-chip { width: 76px; height: 26px; padding: 2px 10px; font-size: 13px; }
 .rich-page .chip-row .chip--filter { width: auto; min-width: 64px; min-height: 32px; }
 .rich-page .schedule-row { grid-template-columns: minmax(0,1fr) 76px; }
}

@media (max-width: 360px) {
 .rich-page .schedule-row__year, .rich-page .schedule-row__day, .rich-page .schedule-row__weekday { font-size: 14px; }
}

/* Shared mobile badge width fits the longest category, 区民大会. */
@media (max-width: 767px) {
 .rich-page .chip:not(.chip--sakura-new), .rich-page .status-chip,
 .rich-page .chip-row .chip--filter {
  box-sizing: border-box; width: 76px; min-width: 76px; max-width: 76px; flex-shrink: 0;
 }
 .rich-page .article-nav { gap: 20px; padding-top: 24px; }
 .rich-page .article-nav__links { gap: 10px; }
 .rich-page .article-nav__card { padding: 12px 14px; gap: 3px; min-height: 0; }
 .rich-page .article-nav__eyebrow { font-size: 12px; line-height: 1.5; }
 .rich-page .article-nav__title { font-size: 14px; line-height: 1.6; }
}

/* Mobile controls keep a steady header and two labeled filter columns. */
@media (max-width: 767px) {
 .rich-page .download-panel { align-items: center; text-align: center; }
 .rich-page .download-panel .btn { max-width: 100%; text-align: center; }
 .rich-page .event-filters { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; padding-inline: 0; }
 .rich-page .event-filter { width: auto; min-width: 0; display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
 .rich-page .category-filter { width: 100%; min-width: 0; }
 .rich-page .category-filter__trigger { width: 100%; padding-left: 14px; padding-right: 32px; }
 .rich-page .category-dropdown-list { width: 100%; }
 .rich-page .category-dropdown-row { padding-left: 12px; padding-right: 12px; }
}

/* Tighter SP chrome; menu link hit areas stay unchanged. */
@media (max-width: 767px) {
 .rich-page .site-header.has-menu { height: 64px; min-height: 64px; padding: 10px 20px; }
 .rich-page .site-header__logo { width: 40px; height: 40px; }
 .rich-page .site-header__brand { gap: 8px; }
 .rich-page .site-header__title { line-height: 28px; }
 .rich-page .site-footer { min-height: 0; padding: 32px 24px 18px; }
 .rich-page .site-footer__row { gap: 20px; margin-bottom: 24px; }
 .rich-page .site-footer__name { font-size: 18px; line-height: 28px; }
 .rich-page .site-footer__nav ul, .rich-page .site-footer__column { gap: 8px; }
 .rich-page .site-footer__copyright { font-size: 11px; line-height: 18px; }
 .rich-page .breadcrumb { padding-top: 24px; padding-bottom: 24px; }
}

/* A short two-column footer on mobile, with category links in the header only. */
@media (max-width: 767px) {
 .rich-page .site-footer__column, .rich-page .site-footer__nav ul { display: contents; }
 .rich-page .site-footer__nav { gap: 12px 20px; }
 .rich-page .site-footer__nav .site-footer__sub { display: none; }
 .rich-page [data-footer-item="news"] { grid-column: 1; grid-row: 1; }
 .rich-page [data-footer-item="events"] { grid-column: 1; grid-row: 2; }
 .rich-page [data-footer-item="annual"] { grid-column: 1; grid-row: 3; }
 .rich-page [data-footer-item="about"] { grid-column: 2; grid-row: 1; }
 .rich-page [data-footer-item="join"] { grid-column: 2; grid-row: 2; }
 .rich-page [data-footer-item="contact"] { grid-column: 2; grid-row: 3; }
 .rich-page [data-footer-item="privacy"] { grid-column: 2; grid-row: 4; }
}

/* SP typography: quieter headings and a shared secondary-text size. */
@media (max-width: 767px) {
 .rich-page .page-heading,
 .rich-page .article-title,
 .rich-page .section-title,
 .rich-page .schedule-heading,
 .rich-page .archive-heading,
 .rich-page .about-rich__title { font-size: 24px; line-height: 36px; }
 .rich-page .breadcrumb,
 .rich-page .news-item__date,
 .rich-page .article-meta-row .news-item__date,
 .rich-page .schedule-row__year,
 .rich-page .schedule-row__day,
 .rich-page .schedule-row__weekday,
 .rich-page .schedule-row__deadline,
 .rich-page .schedule-row__venue,
 .rich-page .schedule-row__full-date { font-size: 15px; line-height: 24px; }
 .rich-page .site-footer__nav a { font-size: 15px; line-height: 24px; }
}

/* View-more labels follow the event-title scale. */
.rich-page .view-more-link { font-size: 20px; line-height: 1.5; height: auto; min-height: 31px; }
@media (min-width: 521px) and (max-width: 860px) {
 .rich-page .view-more-link { font-size: 20px; }
}
@media (max-width: 520px) {
 .rich-page .view-more-link { font-size: 18px; min-height: 28px; }
}
/* Compact SP secondary text and card rhythm. */
@media (max-width: 767px) {
 .rich-page .breadcrumb,
 .rich-page .news-item__date,
 .rich-page .article-meta-row .news-item__date,
 .rich-page .schedule-row__year,
 .rich-page .schedule-row__day,
 .rich-page .schedule-row__weekday,
 .rich-page .schedule-row__deadline,
 .rich-page .schedule-row__venue,
 .rich-page .schedule-row__full-date,
 .rich-page .site-footer__nav a,
 .rich-page .event-filter,
 .rich-page .category-filter__trigger,
 .rich-page .category-dropdown-row { font-size: 14px; line-height: 22px; font-weight: 400; }
 .rich-page .chip:not(.chip--sakura-new), .rich-page .status-chip { font-size: 14px; font-weight: 400; padding-inline: 6px; }
 .rich-page .news-item { padding-block: 18px; gap: 10px; }
 .rich-page .news-item__main { row-gap: 8px; }
 .rich-page .news-item__title { line-height: 1.6; }
 .rich-page .schedule-row { min-height: 0; padding: 16px; row-gap: 12px; }
 .rich-page .schedule-row__title-block { gap: 4px; }
 .rich-page .schedule-row__title { line-height: 1.5; }
 .rich-page .schedule-row__status { padding-top: 12px; gap: 8px; }
 .rich-page .schedule-row-list { gap: 10px; }
 .rich-home .schedule-section { padding-bottom: 40px; }
 .rich-home .about-rich { background-position: center -48px; background-size: auto calc(100% + 48px); }
}

/* One disclosure target for the event label and chevron. */
.rich-page .header-dropdown > .header-dropdown__trigger { gap: 0; }
.rich-page .header-dropdown > .header-dropdown__trigger:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
@media (max-width: 1100px) {
 .rich-page .header-dropdown > .header-dropdown__trigger { justify-content: space-between; }
 .rich-page .site-header__nav .header-dropdown.is-open > .header-dropdown__list { max-height: 320px; }
}

.rich-page .availability-filter { font-size: 16px; font-weight: 400; }
@media (max-width: 767px) { .rich-page .availability-filter { font-size: 14px; } }
.rich-page .article-meta-row { gap: 10px; }
.rich-page .article-meta-row .news-item__date { width: auto; }
@media (max-width: 1100px) {
 .rich-page .site-header__nav .header-dropdown__list { margin-inline: 8px; width: calc(100% - 16px); }
 .rich-page .site-header.has-menu .header-dropdown__list a { padding-left: 32px; padding-right: 16px; }
 .rich-page .header-dropdown__list > li { width: 100%; margin: 0; }
 /* Touch hover/focus must not leave a stuck underline on the disclosure. */
 .rich-page .header-dropdown__trigger::after { display: none; }
}
@media (max-width: 767px) {
 .rich-page .news-item__main { grid-template-columns: max-content minmax(0,1fr); column-gap: 10px; }
 .rich-page .news-item__date { width: auto; flex-basis: auto; }
 .rich-page .news-item__labels { grid-column: 2; grid-row: 1; display: inline-flex; align-items: center; gap: 8px; }
 .rich-page .news-item__title { grid-column: 1 / -1; grid-row: 2; }
 .rich-page .news-item__labels .chip--sakura-new { margin: 0; }
 .rich-page .chip[class*="chip--outline-"] { font-weight: 700; }
 .rich-page .site-footer__nav { grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); }
 .rich-events .page-heading { margin-bottom: 12px; }
 .rich-events .event-annual { padding: 0 0 12px; }
 .rich-events .event-filters { padding-top: 8px; padding-bottom: 20px; }
 .rich-events .breadcrumb { padding-bottom: 16px; }
}

/* Filter labels remain bold in both their filled and outlined states. */
.rich-page .chip-row .chip--filter { font-weight: 700; }
/* Tablet layout changes placement without scaling the contents. */
@media (min-width: 768px) and (max-width: 1100px) {
 .rich-page .schedule-row { grid-template-columns: 160px minmax(0,1fr) 156px; gap: 16px; padding: 20px 24px; align-items: center; }
 .rich-page .schedule-row__date { grid-column: 1; grid-row: 1; width: auto; }
 .rich-page .schedule-row__category { grid-column: 2; grid-row: 1; justify-self: start; align-self: center; }
 .rich-page .schedule-row__title-block { grid-column: 1 / 3; grid-row: 2; }
 .rich-page .schedule-row__status { grid-column: 3; grid-row: 1 / 3; flex-direction: column; align-items: flex-start; flex-wrap: nowrap; border-top: 0; padding-top: 0; gap: 8px; }
 .rich-page .breadcrumb { padding-top: 24px; padding-bottom: 20px; }
 .rich-events .page-heading { margin-bottom: 12px; }
 .rich-events .event-annual { padding: 0 0 12px; }
 .rich-events .event-filters { padding-top: 8px; padding-bottom: 24px; }
 .rich-events .page-section, .rich-news .page-section { padding-bottom: 24px; }
 .rich-page .site-footer { min-height: 0; padding-top: 36px; }
 .rich-page .site-footer__row { gap: 24px; margin-bottom: 28px; }
}

/* Once the article stacks, documents precede the centered download controls. */
@media (max-width: 860px) {
 .rich-page .article-images { order: 0; }
 .rich-page .download-panel { order: 1; align-items: center; text-align: center; }
 .rich-page .download-panel .btn { max-width: 100%; padding-inline: 36px; text-align: center; justify-content: center; }
 .rich-page .download-panel .btn__icon { right: 12px; }
}
/* Switch directly to the short footer before the awkward intermediate grid. */
@media (max-width: 1100px) {
 .rich-page .site-footer__column, .rich-page .site-footer__nav ul { display: contents; }
 .rich-page .site-footer__nav { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); gap: 12px 20px; align-items: start; max-width: 560px; }
 .rich-page .site-footer__nav .site-footer__sub { display: none; }
 .rich-page [data-footer-item="news"] { grid-column: 1; grid-row: 1; }
 .rich-page [data-footer-item="events"] { grid-column: 1; grid-row: 2; }
 .rich-page [data-footer-item="annual"] { grid-column: 1; grid-row: 3; }
 .rich-page [data-footer-item="about"] { grid-column: 2; grid-row: 1; }
 .rich-page [data-footer-item="join"] { grid-column: 2; grid-row: 2; }
 .rich-page [data-footer-item="contact"] { grid-column: 2; grid-row: 3; }
 .rich-page [data-footer-item="privacy"] { grid-column: 2; grid-row: 4; }
}

/* Shared hero and heading refinements. */
.rich-page .hero__title { font-size: clamp(32px,3.3333vw,48px); }
.rich-page .section-title { margin-bottom: 24px; }
.rich-page .schedule-heading-row, .rich-page .archive-heading-row { margin-bottom: 24px; }
.rich-page .about-rich__title { margin-bottom: 40px; }
.rich-page .page-heading, .rich-events .page-heading { margin-bottom: 24px; }
.rich-page .article-meta-row { margin-top: 24px; }
@media (max-width:1100px) { .rich-page .hero__title { font-size: 36px; } }
@media (max-width:767px) {
 .rich-page .hero__title { font-size: 28px; top: 10%; }
 .rich-page .about-rich__title { margin-bottom: 24px; }
}

/* Shared link inset and a consistent heading-to-content rhythm. */
.rich-page .view-more-link { padding-inline: 5px; }
.rich-page .section-title,
.rich-page .about-rich__title,
.rich-page .schedule-heading-row,
.rich-page .archive-heading-row { margin-bottom: 32px; }

/* Each event date begins at the same left edge, regardless of its length. */
.rich-page .schedule-row__date {
 justify-content: start; text-align: left; font-variant-numeric: tabular-nums;
}
.rich-page .schedule-row__day-row { justify-content: flex-start; }

/* Event directories use the phone reading scale even on wide screens. */
.rich-page:not(.rich-home) .schedule-row {
 min-height: 0; padding: 16px; column-gap: 16px; row-gap: 12px;
}
.rich-page:not(.rich-home) .schedule-row__date { width: 120px; flex-basis: 120px; }
.rich-page:not(.rich-home) .schedule-row__year,
.rich-page:not(.rich-home) .schedule-row__day,
.rich-page:not(.rich-home) .schedule-row__weekday,
.rich-page:not(.rich-home) .schedule-row__full-date,
.rich-page:not(.rich-home) .schedule-row__venue,
.rich-page:not(.rich-home) .schedule-row__deadline {
 font-size: 14px; line-height: 22px; font-weight: 400;
}
.rich-page:not(.rich-home) .schedule-row__year { margin: 0; }
.rich-page:not(.rich-home) .schedule-row__title { font-size: 18px; line-height: 1.5; }
.rich-page:not(.rich-home) .schedule-row__title-block { gap: 4px; }
.rich-page:not(.rich-home) .schedule-row__category,
.rich-page:not(.rich-home) .schedule-row .status-chip {
 width: 76px; min-width: 76px; height: 26px; padding: 2px 6px;
 font-size: 14px; font-weight: 400;
}
.rich-page:not(.rich-home) .schedule-row__status { gap: 8px; }
@media (min-width: 861px) and (max-width: 1300px) {
 .rich-page:not(.rich-home) .schedule-row { grid-template-columns: 150px minmax(0,1fr) 160px; }
 .rich-page:not(.rich-home) .schedule-row__date { width: auto; }
}
@media (max-width: 860px) {
 .rich-page:not(.rich-home) .schedule-row { grid-template-columns: minmax(0,1fr) 76px; }
 .rich-page:not(.rich-home) .schedule-row__date { width: auto; }
 .rich-page:not(.rich-home) .schedule-row__status { padding-top: 12px; }
}

/* Equal outer gutters around dates and deadlines on the home cards. */
.rich-home .schedule-row { padding-inline: 32px; }
@media (min-width: 768px) {
 .rich-home .schedule-row__status { align-items: flex-end; }
 .rich-home .schedule-row__deadline { text-align: right; }
}
@media (max-width: 1300px) {
 .rich-home .schedule-row { padding-inline: 24px; }
}
@media (max-width: 767px) {
 .rich-home .schedule-row { padding-inline: 20px; }
}

/* Consistent date/category/title columns in the compact event directory. */
.rich-page:not(.rich-home) .schedule-row {
 display: grid;
 grid-template-columns: 160px 76px minmax(0,1fr) 160px;
 padding: 20px 28px; column-gap: 24px; row-gap: 16px;
 align-items: center;
}
.rich-page:not(.rich-home) .schedule-row__date {
 display: flex; flex-direction: row; flex-wrap: nowrap; align-items: baseline;
 grid-column: 1; grid-row: 1; width: auto; gap: 0; white-space: nowrap;
}
.rich-page:not(.rich-home) .schedule-row__day-row { flex-wrap: nowrap; gap: 0; }
.rich-page:not(.rich-home) .schedule-row__category { grid-column: 2; grid-row: 1; }
.rich-page:not(.rich-home) .schedule-row__title-block { grid-column: 3; grid-row: 1; gap: 8px; }
.rich-page:not(.rich-home) .schedule-row__status {
 grid-column: 4; grid-row: 1; flex-direction: column; align-items: flex-start;
 border-top: 0; padding-top: 0;
}
@media (min-width: 768px) and (max-width: 1100px) {
 .rich-page:not(.rich-home) .schedule-row {
  grid-template-columns: 160px minmax(0,1fr) 156px;
  padding-inline: 24px;
 }
 .rich-page:not(.rich-home) .schedule-row__title-block { grid-column: 1 / 3; grid-row: 2; }
 .rich-page:not(.rich-home) .schedule-row__status { grid-column: 3; grid-row: 1 / 3; }
}
@media (max-width: 767px) {
 .rich-page:not(.rich-home) .schedule-row {
  grid-template-columns: minmax(0,1fr) 76px; padding: 18px 20px;
  column-gap: 16px;
 }
 .rich-page:not(.rich-home) .schedule-row__title-block { grid-column: 1 / -1; grid-row: 2; }
 .rich-page:not(.rich-home) .schedule-row__status {
  grid-column: 1 / -1; grid-row: 3; flex-direction: row; align-items: center;
  flex-wrap: wrap; border-top: 1px solid var(--color-border-subtle,#ddd); padding-top: 14px;
 }
}
@media (max-width: 380px) {
 .rich-page:not(.rich-home) .schedule-row__date { grid-column: 1 / -1; }
 .rich-page:not(.rich-home) .schedule-row__category { grid-column: 1; grid-row: 2; justify-self: start; }
 .rich-page:not(.rich-home) .schedule-row__title-block { grid-row: 3; }
 .rich-page:not(.rich-home) .schedule-row__status { grid-row: 4; }
}

/* Trim unused date-column space so the category has balanced side gaps. */
@media (min-width: 1301px) {
 .rich-home .schedule-row__date { width: 190px; flex-basis: 190px; }
}
@media (min-width: 768px) and (max-width: 1300px) {
 .rich-home .schedule-row { grid-template-columns: 148px minmax(0,1fr) 180px; }
}
@media (min-width: 1101px) {
 .rich-page:not(.rich-home) .schedule-row {
  grid-template-columns: 148px 76px minmax(0,1fr) 160px;
  padding-inline: 28px;
 }
}
@media (min-width: 768px) and (max-width: 1100px) {
 .rich-page:not(.rich-home) .schedule-row {
  grid-template-columns: 148px minmax(0,1fr) 156px;
  padding-inline: 24px;
 }
}
/* Align the visible deadline edge with the right padding, not its column's start. */
@media (min-width: 768px) {
 .rich-page:not(.rich-home) .schedule-row__status { align-items: flex-end; }
 .rich-page:not(.rich-home) .schedule-row__deadline { text-align: right; }
}
@media (min-width: 381px) and (max-width: 767px) {
 .rich-page .schedule-row__category { position: relative; left: -8px; }
}

/* Fine adjustment relative to the existing category positions. */
.rich-page .schedule-row__category { position: relative; left: -5px; }
@media (min-width: 381px) and (max-width: 767px) {
 .rich-page .schedule-row__category { left: -13px; }
}
/* Keep the extra hero-to-news spacing stable when filtering the news. */
.rich-home .news { margin-top: 32px; }
@media (max-width: 767px) {
 .rich-home .news { margin-top: 24px; }
}

/* White hero lettering and a tighter introduction. */
.rich-home .hero__title {
 color: #ffffff;
 text-shadow: 0 2px 6px rgba(17,28,44,.55), 0 0 16px rgba(17,28,44,.25);
}
.rich-home .about-rich__lead { margin-bottom: 16px; }
@media (min-width: 861px) {
 .rich-home .about-rich { --about-content-top: 318px; }
 .rich-home .about-rich__body { padding-top: var(--about-content-top); }
 .rich-home .about-rich__photo { top: var(--about-content-top); }
}

/* Hero copy uses the original upper-right positions at each breakpoint. */

/* Offset only the introduction heading, paragraph and link. */
.rich-home .about-rich__body { top: 50px; }
