/* Fluid desktop proportions; readable type and reflow on narrow screens. */
:root { --u: calc(100vw / 1440); --page-gutter: clamp(1.5rem, 11.1vw, 14rem); --section-space: clamp(5rem, 14vw, 18rem); }
.stage { width: 100%; }
.hero__stamp { position: fixed; inset: auto auto 6.3vh 4.17vw; z-index: 20; width: auto; font-size: clamp(.625rem, .764vw, .875rem); pointer-events: none; }
.hero__totop { position: fixed; inset: 50% 1.4vw auto auto; z-index: 20; font-size: clamp(.75rem, .903vw, 1rem); transform: translateY(-50%); }
.hero__totop a { display: block; padding: .5rem; }
.global-nav { left: auto; right: 4.17%; grid-template-columns: 1fr 1fr auto; gap: 2.4vw; font-size: clamp(.875rem, 1.39vw, 1.625rem); }
.news__date, .news__title, .theme__body, .event__address, .event__venue, .cta__lead, .contact__lead, .faq__q, .faq__a { font-size: clamp(.875rem, 1.11vw, 1.25rem); }
.theme { grid-template-columns: 9.3% 19.9% minmax(0, 1fr); column-gap: 5.85%; padding-inline: 6.32% 10.6%; }
.theme__body { margin-left: 32.7%; line-height: 1.75; }
.event__grid { grid-template-columns: minmax(0, .77fr) minmax(0, 1fr); margin-right: 10.6%; }
.event__map { width: 77%; height: auto; aspect-ratio: 364 / 183; }
.event__map iframe { width: 100%; height: 100%; }
.btn { min-height: 2.75rem; height: auto; padding-block: .55em; font-size: clamp(1rem, 1.58vw, 1.75rem); }
.titles { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.92fr); gap: 0; align-items: start; padding: clamp(4rem, 8vw, 10rem) var(--page-gutter) 0; }
.titles__bar { position: sticky; top: clamp(2rem, 8vh, 6rem); background: none; padding: 0 2rem 0 0; z-index: 3; }
.titles__bar-inner { display: block; padding: 0; }
.titles__heading { margin: 0 0 clamp(2rem, 6vw, 7rem); font-size: clamp(2.75rem, 5.83vw, 7.5rem); line-height: 1; }
.titles__tabs { display: flex; flex-direction: column; align-items: flex-start; gap: .2em; width: max-content; font-size: clamp(1.8rem, 3.61vw, 4.6rem); }
.titles__tab { width: max-content; padding: 0; font-size: inherit; line-height: 1.23; min-height: 2.75rem; }
.titles__marker { top: 0; left: 0; width: 1.45em; height: .85em; background: none; mask: none; transition: none; }
.titles__marker > img { width: 100%; height: 100%; opacity: 1; }
.titles__marker canvas { width: 100%; height: 100%; display: block; }
.titles__marker.is-animated > img { display: none; }
.titles__rule { display: none; }
.titles__grid { min-width: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 2.8vw, 4rem) clamp(1rem, 2.22vw, 3rem); padding: 0; }
.title-card { min-width: 0; }
.title-card__inner { gap: clamp(.7rem, 1.11vw, 1.5rem); }
.title-card__body { gap: .3em; }
.title-card__name { font-size: clamp(1rem, 1.806vw, 2.2rem); overflow-wrap: anywhere; }
.title-card__creator { font-size: clamp(.8125rem, 1.11vw, 1.25rem); overflow-wrap: anywhere; }
.sponsors__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sponsor { height: auto; aspect-ratio: 352 / 245; padding: 11%; }
.sponsor img { height: auto; max-height: 100%; }
.sponsor__rank { font-size: clamp(.75rem, 1.39vw, 1.5rem); }
.cta { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 7.4vw; }
.site-footer__top, .site-footer__bottom { grid-template-columns: minmax(0, 2.85fr) minmax(0, 1fr) minmax(0, 1.2fr) minmax(0, 1fr); gap: 1.25rem; }
.site-footer__nav a { font-size: clamp(.875rem, 1.39vw, 1.5rem); }
.site-footer__bottom { font-size: clamp(.75rem, .973vw, 1rem); }
.admin-bar .titles__bar { top: calc(clamp(2rem, 8vh, 6rem) + 32px); }
:focus-visible { outline: 2px solid currentColor; outline-offset: .3rem; }
@media (max-width: 900px) {
  .theme__body { margin-left: 10%; }
  .theme__body br { display: none; }
  .event__grid { margin-left: 19%; gap: 3rem 1.5rem; }
  .event__value { font-size: clamp(1.4rem, 3.3vw, 3rem); }
  .event__note, .event__sub, .event__time, .event__label { font-size: .875rem; }
  .event__label { margin-bottom: 1.5rem; }
  .faq__q, .faq__a { grid-template-columns: 1.8rem 1fr 1.25rem; padding-block: 1.25rem; }
  .faq__a { grid-template-columns: 1.8rem 1fr; }
  .faq__mark { font-size: 1rem; }
  .faq__toggle { width: 1rem; height: 1rem; }
}
@media (max-width: 600px) {
  :root { --page-gutter: 6vw; }
  .site-logo { top: 1.5rem; left: 6%; width: 88%; }
  .global-nav { top: calc(1.5rem + 13vw); left: 6%; right: 6%; display: flex; justify-content: space-between; font-size: 1rem; }
  .global-nav__col { display: flex; gap: 1.5rem; }
  .hero { height: 90svh; min-height: 34rem; }
  .hero__shape { top: 24%; left: -8%; width: 116%; height: 53%; }
  .hero__tagline { top: auto; bottom: 12%; left: auto; right: 8%; font-size: clamp(1.75rem, 7vw, 3rem); }
  .hero__stamp { left: 1.25rem; bottom: 1.25rem; }
  .hero__totop { right: 0; }
  .news { padding: 3rem var(--page-gutter) 0; }
  .news__heading { margin: 0; font-size: 3rem; }
  .news__list { margin: 1.5rem 0 0; }
  .news__link, .news__item:first-child .news__link { padding: 1.5rem 0; gap: .75rem; }
  .news__more { margin: 2rem 0 0; }
  .btn { min-width: 12rem; padding-inline: 1.2rem; }
  .theme { padding: var(--section-space) var(--page-gutter) 0; grid-template-columns: 1fr 2fr; gap: 2rem 1rem; }
  .theme__label { font-size: 1.2rem; }
  .theme__words { font-size: 3.5rem; margin: 0; }
  .theme__body { grid-column: 1 / -1; margin: 0; }
  .sec-heading { font-size: 3rem; }
  .event { padding: var(--section-space) var(--page-gutter) 0; }
  .event .sec-heading { margin: 0; }
  .event__grid { grid-template-columns: 1fr; margin: 2.5rem 0 0; gap: 2.5rem; }
  .event__value { font-size: 2.25rem; }
  .event__sub, .event__note { margin-left: .75rem; }
  .event__time { margin-top: .8rem; }
  .event__map { width: 100%; margin-bottom: 1rem; }
  .event__deco--l { display: none; }
  .event__deco--r { left: auto; right: -6vw; top: 6rem; width: 30vw; height: 25vw; }
  .titles { display: block; padding-top: var(--section-space); }
  .titles__bar { top: 0; padding: 1rem 0; background: var(--c-bg); }
  .titles__heading { font-size: 3rem; margin-bottom: 1.25rem; }
  .titles__tabs { flex-direction: row; font-size: clamp(1.4rem, 6.5vw, 2rem); gap: 1.2em; }
  .titles__grid { grid-template-columns: 1fr; padding-top: 1.5rem; gap: 2.5rem; }
  .title-card__name { font-size: 1.4rem; }
  .title-card__creator { font-size: .9rem; }
  .titles__marker { width: 1.2em; height: .75em; }
  .admin-bar .titles__bar { top: 46px; }
  .faq { padding: var(--section-space) var(--page-gutter) 0; }
  .faq__list { margin: 2rem 0 0; }
  .sponsors { padding: var(--section-space) var(--page-gutter) 0; }
  .sponsors__grid { grid-template-columns: 1fr; gap: 1rem; margin-top: 2rem; }
  .sponsor__rank { top: 1rem; left: 1rem; }
  .cta { padding: var(--section-space) var(--page-gutter) 0; grid-template-columns: 1fr; gap: 3rem; }
  .cta__heading { font-size: 2.5rem; }
  .contact { min-height: 16rem; padding: 2rem; gap: 1.5rem; }
  .contact__marquee { font-size: 5rem; }
  .site-footer { margin-top: 5rem; padding: 3rem var(--page-gutter) 5rem; }
  .site-footer__top { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .site-footer__logo { width: 12rem; grid-column: 1 / -1; }
  .site-footer__nav { gap: 1.2rem; }
  .site-footer__sns-label { font-size: .9rem; margin-bottom: 1rem; }
  .site-footer__sns { gap: 1rem; }
  .site-footer__sns a { width: 1.5rem; height: 1.5rem; }
  .site-footer__bottom { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 3rem; }
  .site-footer__bottom p:empty { display: none; }
}
/* Decorations can extend inside a section without creating horizontal scrolling. */
.event { overflow: clip; }
.titles__tab { opacity: 1; color: var(--c-ink); }
.hero__stamp, .hero__totop { color: #fff; mix-blend-mode: difference; }
