/*
 * 清花祭 2026 — 共通調整CSS
 * ①事前 / ②当日 / ④電子パンフレット
 *
 * 制作途中の上書き履歴を整理し、現在有効な指定を残しています。
 * メニューのスクロール位置はファイル末尾で調整できます。
 */

@import url("https://fonts.googleapis.com/css2?family=Klee+One:wght@400;600&family=Montserrat:wght@400;500;600;700;800;900&family=Yomogi&family=Yusei+Magic&family=Zen+Kaku+Gothic+New:wght@400;500;700;900&display=swap");

:root {
  --kiyo-max: 1120px;
  --kiyo-radius-sm: 16px;
  --kiyo-radius-md: 22px;
  --kiyo-radius-lg: 30px;
  --kiyo-section-y: clamp(72px,8vw,110px);
}

body {
  font-size: 16px;
}

.section,.live-section,.pamphlet-section {
  padding-top: var(--kiyo-section-y);
  padding-bottom: var(--kiyo-section-y);
}

.section-title,.live-section-title,.pamphlet-title {
  width: min(var(--kiyo-max),100%);
}

.section-title h2,.live-section-title h2,.pamphlet-title h2 {
  font-size: clamp(32px,4.2vw,48px);
  line-height: 1.2;
}

.section-title p,.live-section-title p,.pamphlet-title p {
  font-size: 11px;
}

.news-list,.two-column,.guide-grid,.message-grid,.access-card,.live-card-grid,.event-card-grid,.map-panel,.about-modal-grid,.quick-menu {
  width: min(var(--kiyo-max),100%);
}

@media (min-width:721px) {
  .hero {
    min-height: 0;
    padding: clamp(18px,2.6vh,28px) 20px clamp(16px,2.2vh,24px);
    overflow: hidden;
  }

  .hero-content {
    width: min(900px,100%);
  }

  .hero-label {
    padding: 6px 14px;
    font-size: 10px;
  }

  .hero h1 {
    margin: clamp(12px,1.8vh,18px) 0 0;
  }

  .hero h1 span {
    font-size: clamp(72px,12vh,116px);
    line-height: .88;
    letter-spacing: -.045em;
  }

  .hero h1 b {
    margin-top: clamp(8px,1.2vh,12px);
    font-size: clamp(31px,4.7vh,43px);
    line-height: 1;
  }

  .hero-campus {
    margin: clamp(9px,1.3vh,13px) 0 0;
    font-size: clamp(13px,1.85vh,16px);
  }

  .hero-slogan {
    margin: clamp(10px,1.5vh,15px) 0 0;
    font-size: clamp(16px,2.35vh,21px);
  }

  .hero-dates {
    width: min(470px,100%);
    margin: clamp(13px,1.9vh,20px) auto;
  }

  .hero-dates strong {
    font-size: clamp(32px,4.9vh,43px);
    line-height: 1;
  }

  .hero-dates span {
    display: block;
    margin-top: 5px;
    font-size: 10px;
  }

  .count-card {
    width: min(470px,100%);
    padding: clamp(9px,1.3vh,13px) 18px;
    border-radius: 24px;
  }

  .count-card > span {
    font-size: 10px;
  }

  .countdown {
    margin-top: 3px;
  }

  .countdown strong {
    font-size: clamp(27px,4.2vh,34px);
  }

  .countdown small {
    font-size: 10px;
  }

  .pamphlet-button {
    width: min(470px,100%);
    margin-top: clamp(9px,1.35vh,14px);
    padding: clamp(9px,1.25vh,12px) 18px;
    border-radius: 21px;
  }

  .pamphlet-icon {
    width: 36px;
    height: 36px;
  }

  .pamphlet-button small {
    font-size: 9px;
  }

  .pamphlet-button strong {
    font-size: 14px;
  }

  .scroll-down {
    margin-top: clamp(7px,1vh,10px);
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero {
    padding-top: 10px;
    padding-bottom: 10px;
  }

  .hero h1 span {
    font-size: clamp(66px,10.5vh,84px);
  }

  .hero h1 b {
    font-size: 30px;
  }

  .hero-campus {
    margin-top: 6px;
  }

  .hero-slogan {
    margin-top: 7px;
    font-size: 15px;
  }

  .hero-dates {
    margin: 8px auto;
  }

  .hero-dates strong {
    font-size: 30px;
  }

  .count-card {
    padding: 7px 15px;
  }

  .countdown strong {
    font-size: 27px;
  }

  .pamphlet-button {
    margin-top: 7px;
    padding: 7px 16px;
  }

  .scroll-down {
    display: none;
  }
}

.live-dashboard {
  max-width: 1600px;
  margin: 0 auto;
}

.live-title-row h1 {
  letter-spacing: -.045em;
}

.live-right,.current-event-card {
  border-radius: var(--kiyo-radius-lg);
}

.today-heading h2 {
  line-height: 1.2;
}

.live-section-title > span {
  font-size: 13px;
  line-height: 1.7;
}

.live-action-grid a,.live-info-card,.event-card,.about-modal-grid button {
  border-radius: var(--kiyo-radius-md);
}

@media (min-width:1200px) {
  .live-dashboard {
    grid-template-columns: minmax(390px,500px) minmax(560px,760px);
    justify-content: center;
  }
}

.pamphlet-hero {
  padding-top: clamp(68px,8vw,92px);
  padding-bottom: clamp(58px,7vw,80px);
}

.pamphlet-hero h1 {
  font-size: clamp(42px,6vw,66px);
}

.pamphlet-lead {
  font-size: 15px;
}

.quick-menu {
  gap: 14px;
}

.quick-menu a {
  border-radius: var(--kiyo-radius-md);
}

.empty-card,.map-placeholder-large {
  border-radius: var(--kiyo-radius-lg);
}

.info-card,.event-card {
  border-radius: var(--kiyo-radius-md);
}

@media (max-width:720px) {
  body {
    font-size: 15px;
  }

  .section,.live-section,.pamphlet-section {
    padding-top: 68px;
    padding-bottom: 68px;
  }

  .section-title h2,.live-section-title h2,.pamphlet-title h2 {
    font-size: clamp(29px,9vw,38px);
  }

  .hero {
    margin-top: 0;
  }

  .count-card,.pamphlet-button {
    width: min(440px,100%);
  }

  .live-dashboard {
    max-width: none;
  }

  .live-section-title > span {
    font-size: 12px;
  }

  .pamphlet-hero h1 {
    font-size: clamp(37px,11vw,48px);
  }

  .pamphlet-lead {
    font-size: 13px;
  }

  .quick-menu {
    gap: 10px;
  }
}

@media (min-width:861px) {
  .live-dashboard {
    width: 100%;
    max-width: 1600px;
    min-height: 0;
    margin: 72px auto 0;
    padding: clamp(16px,2.2vh,24px) clamp(22px,4vw,58px) clamp(16px,2.2vh,24px);
    align-items: stretch;
    overflow: hidden;
  }

  .live-left {
    min-height: 0;
    height: 100%;
  }

  .live-brand-block {
    flex: none;
  }

  .live-kicker {
    margin-bottom: 5px;
  }

  .live-title-row h1 {
    font-size: clamp(42px,7.5vh,66px);
  }

  .live-title-row p {
    margin-top: 6px;
  }

  .live-clock-line {
    margin-top: clamp(10px,1.6vh,16px);
  }

  .live-clock-line strong {
    font-size: clamp(27px,4vh,32px);
  }

  .current-event-card {
    min-height: 0;
    flex: 1 1 auto;
    margin-top: clamp(12px,1.8vh,18px);
    padding: clamp(18px,2.7vh,28px);
  }

  .current-event-card h2 {
    margin: clamp(12px,1.8vh,19px) 0 5px;
    font-size: clamp(25px,4.3vh,40px);
  }

  .current-event-meta {
    margin-top: clamp(10px,1.5vh,16px);
  }

  .next-event-card {
    flex: none;
    margin-top: clamp(8px,1.2vh,12px);
    padding: clamp(12px,1.8vh,17px) 18px;
  }

  .live-action-grid {
    flex: none;
    margin-top: clamp(8px,1.2vh,12px);
  }

  .live-action-grid a {
    min-height: clamp(58px,8.5vh,72px);
  }

  .live-right {
    height: 100%;
    min-height: 0;
    padding: clamp(18px,2.5vh,26px);
  }

  .today-heading {
    flex: none;
    padding-bottom: clamp(11px,1.7vh,17px);
  }

  .today-heading h2 {
    font-size: clamp(22px,3.6vh,32px);
  }

  .today-panel {
    min-height: 0;
    flex: 1 1 auto;
    overflow: auto;
  }

  .today-item {
    min-height: clamp(52px,7.3vh,66px);
    padding: clamp(6px,.9vh,9px) 5px;
  }
}

@media (min-width:861px) and (max-height:760px) {
  .live-dashboard {
    padding-top: 10px;
    padding-bottom: 10px;
  }

  .live-title-row h1 {
    font-size: 46px;
  }

  .live-date-chip {
    padding: 6px 10px;
  }

  .live-clock-line {
    margin-top: 7px;
  }

  .current-event-card {
    margin-top: 8px;
    padding: 16px 20px;
  }

  .current-event-card h2 {
    margin-top: 9px;
    font-size: 27px;
  }

  .current-event-meta {
    margin-top: 8px;
  }

  .next-event-card {
    margin-top: 7px;
    padding: 10px 15px;
  }

  .live-action-grid {
    margin-top: 7px;
  }

  .live-action-grid a {
    min-height: 52px;
  }

  .live-right {
    padding: 16px 18px;
  }

  .today-heading {
    padding-bottom: 9px;
  }

  .today-item {
    min-height: 49px;
  }
}

@media (min-width:761px) {
  .pamphlet-hero {
    padding: clamp(24px,4vh,42px) 20px clamp(22px,3.5vh,38px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  .pamphlet-kicker {
    font-size: 10px;
  }

  .pamphlet-hero h1 {
    margin: clamp(7px,1.2vh,11px) 0 clamp(7px,1.2vh,11px);
    font-size: clamp(44px,7.5vh,66px);
    line-height: 1.1;
  }

  .pamphlet-lead {
    font-size: clamp(13px,1.8vh,15px);
    line-height: 1.7;
  }

  .quick-menu {
    margin-top: clamp(22px,3.5vh,34px);
    gap: clamp(8px,1vw,12px);
  }

  .quick-menu a {
    min-height: clamp(92px,15vh,122px);
    padding: clamp(12px,2vh,18px) 10px;
  }

  .quick-icon {
    margin-bottom: 3px;
    font-size: clamp(21px,3.3vh,25px);
  }

  .quick-menu strong {
    font-size: clamp(11px,1.7vh,13px);
  }
}

@media (min-width:761px) and (max-height:760px) {
  .pamphlet-hero {
    padding-top: 18px;
    padding-bottom: 18px;
  }

  .pamphlet-hero h1 {
    font-size: 46px;
  }

  .pamphlet-lead {
    font-size: 12px;
  }

  .quick-menu {
    margin-top: 18px;
  }

  .quick-menu a {
    min-height: 86px;
    padding: 10px 8px;
  }

  .quick-icon {
    font-size: 20px;
  }
}

@media (max-width:860px) {
  .live-dashboard {
    width: 100%;
    max-width: none;
    margin: 0;
  }
}

@media (max-width:760px) {
  .quick-icon {
    margin-bottom: 1px;
  }
}

:root {
  --site-header-h: 60px;
  --site-header-h-mobile: 56px;
  --pamphlet-header-h: 58px;
  --pamphlet-header-h-mobile: 56px;
}

.site-header {
  height: var(--site-header-h);
  padding-left: clamp(16px,3.5vw,46px);
  padding-right: clamp(16px,3.5vw,46px);
}

.brand {
  gap: 9px;
}

.brand-mark {
  width: 32px;
  height: 32px;
}

.brand-text strong {
  font-size: 14px;
  line-height: 1.2;
}

.brand-text small {
  margin-top: 2px;
  font-size: 7px;
}

.desktop-nav {
  gap: clamp(12px,1.35vw,21px);
  font-size: 11px;
}

.test-switcher {
  top: calc(var(--site-header-h) + 10px);
}

@media (min-width:721px) {
  .hero {
    height: calc(100svh - var(--site-header-h));
    margin-top: var(--site-header-h);
  }

  .hero-content {
    transform: translateY(calc(var(--site-header-h) / -2));
  }
}

@media (min-width:861px) {
  .live-dashboard {
    height: calc(100svh - var(--site-header-h));
    margin-top: var(--site-header-h);
    padding-top: 8px;
    padding-bottom: 32px;
  }
}

@media (min-width:721px) {
  .simple-mode {
    min-height: calc(100svh - var(--site-header-h));
    margin-top: var(--site-header-h);
    padding-top: 30px;
    padding-bottom: 60px;
  }

  .mode-placeholder {
    transform: translateY(calc(var(--site-header-h) / -2));
  }
}

.pamphlet-header {
  padding-left: clamp(16px,3.5vw,46px);
  padding-right: clamp(16px,3.5vw,46px);
}

.pamphlet-brand {
  gap: 9px;
}

.pamphlet-brand small {
  margin-top: 1px;
}

@media (min-width:761px) {
  .pamphlet-hero {
    min-height: calc(100svh - var(--pamphlet-header-h));
  }

  .pamphlet-hero > * {
    transform: translateY(calc(var(--pamphlet-header-h) / -2));
  }
}

.site-footer strong {
  font-size: 13px;
}

.site-footer span,.site-footer small {
  font-size: 9px;
}

.pamphlet-footer {
  padding: 26px 20px 32px;
}

.pamphlet-footer a {
  margin-bottom: 13px;
}

.pamphlet-footer p {
  font-size: 13px;
}

.pamphlet-footer small {
  margin-top: 4px;
}

@media (max-width:720px) {
  .site-header {
    padding-left: 12px;
    padding-right: 12px;
  }

  .mode-placeholder {
    transform: translateY(-12px);
  }
}

@media (max-width:760px) {
  .pamphlet-header {
    padding-left: 12px;
    padding-right: 12px;
  }

  .pamphlet-brand-mark {
    width: 30px;
    height: 30px;
  }

  .pamphlet-brand strong {
    font-size: 12px;
  }

  .back-home {
    padding: 6px 9px;
    font-size: 9px;
  }
}

@media (max-width:720px) {
  .menu-button {
    display: none !important;
  }

  .site-header {
    height: 56px;
    padding: 0 13px;
  }

  .brand {
    gap: 8px;
  }

  .brand-mark {
    width: 30px;
    height: 30px;
    font-size: 14px;
  }

  .brand-text strong {
    font-size: 13px;
  }

  .brand-text small {
    display: none;
  }

  .test-switcher {
    top: 63px;
    right: 7px;
    transform: scale(.92);
    transform-origin: top right;
  }

  .hero {
    width: 100%;
    height: 100svh;
    min-height: 0;
    margin: 0;
    padding: 68px 14px calc(78px + env(safe-area-inset-bottom));
    display: grid;
    place-items: center;
    overflow: hidden;
  }

  .hero-content {
    width: min(440px,100%);
    transform: translateY(-3px);
  }

  .hero-label {
    padding: 5px 11px;
    font-size: 8px;
    letter-spacing: .12em;
  }

  .hero h1 {
    margin: clamp(7px,1.4svh,11px) 0 0;
  }

  .hero h1 span {
    font-size: clamp(
 58px,min(20vw,10.8svh),82px
 );
    line-height: .88;
  }

  .hero h1 b {
    margin-top: clamp(5px,.9svh,8px);
    font-size: clamp(
 25px,min(8.5vw,4.5svh),33px
 );
  }

  .hero-campus {
    margin: clamp(6px,1svh,9px) 0 0;
    font-size: clamp(11px,1.8svh,13px);
  }

  .hero-slogan {
    margin: clamp(7px,1.2svh,10px) 0 0;
    font-size: clamp(14px,2.1svh,16px);
  }

  .hero-dates {
    width: min(330px,94%);
    margin: clamp(9px,1.5svh,13px) auto;
  }

  .hero-dates strong {
    font-size: clamp(
 27px,min(9vw,4.4svh),34px
 );
  }

  .hero-dates span {
    margin-top: 3px;
    font-size: 8px;
  }

  .count-card {
    width: min(360px,96%);
    padding: clamp(7px,1.1svh,10px) 13px;
    border-radius: 18px;
  }

  .count-card > span {
    font-size: 8px;
  }

  .countdown {
    margin-top: 2px;
    gap: 6px;
  }

  .countdown strong {
    font-size: clamp(
 23px,min(7.5vw,3.8svh),29px
 );
  }

  .countdown small {
    margin-right: 7px;
    font-size: 8px;
  }

  .pamphlet-button {
    width: min(360px,96%);
    margin-top: clamp(7px,1.2svh,10px);
    padding: clamp(7px,1.1svh,10px) 13px;
    gap: 10px;
    border-radius: 17px;
  }

  .pamphlet-icon {
    width: 31px;
    height: 31px;
    border-radius: 10px;
  }

  .pamphlet-button small {
    font-size: 7px;
  }

  .pamphlet-button strong {
    font-size: 12px;
  }

  .scroll-down {
    display: none;
  }

  .live-dashboard {
    width: 100%;
    height: 100svh;
    min-height: 0;
    margin: 0;
    padding: 64px 11px calc(76px + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    gap: 8px;
    overflow: hidden;
  }

  .live-left {
    display: block;
    flex: none;
  }

  .live-kicker {
    margin: 0 0 2px;
    font-size: 7px;
  }

  .live-title-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
  }

  .live-title-row h1 {
    font-size: clamp(28px,8vw,36px);
    line-height: 1;
  }

  .live-title-row h1 span {
    font-size: .48em;
  }

  .live-title-row p {
    display: none;
  }

  .live-date-chip {
    margin: 0;
    padding: 5px 8px;
    font-size: 8px;
  }

  .live-clock-line {
    margin-top: 5px;
    gap: 6px;
  }

  .live-clock-line span {
    font-size: 7px;
  }

  .live-clock-line strong {
    font-size: 20px;
  }

  .live-clock-line small {
    font-size: 7px;
  }

  .current-event-card {
    min-height: 0;
    height: auto;
    margin-top: 7px;
    padding: 13px 15px;
    border-radius: 18px;
  }

  .current-event-head {
    gap: 6px;
    font-size: 8px;
  }

  .pulse-dot {
    width: 7px;
    height: 7px;
    box-shadow: 0 0 0 4px rgba(255,255,255,.12);
  }

  .current-event-card h2 {
    margin: 8px 0 3px;
    font-size: clamp(19px,5.5vw,24px);
  }

  .current-event-card p {
    font-size: 9px;
  }

  .current-event-meta {
    margin-top: 7px;
    gap: 5px;
  }

  .current-event-meta span {
    padding: 4px 7px;
    font-size: 7px;
  }

  .next-event-card {
    margin-top: 6px;
    padding: 8px 11px;
    grid-template-columns: 42px 1fr;
    gap: 8px;
    border-radius: 14px;
  }

  .next-event-card > span {
    font-size: 7px;
  }

  .next-event-card strong {
    font-size: 10px;
  }

  .next-event-card p {
    margin-top: 2px;
    font-size: 7px;
  }

  .live-action-grid {
    display: none;
  }

  .live-right {
    flex: 1 1 auto;
    min-height: 0;
    height: auto;
    margin: 0;
    padding: 10px 10px 7px;
    border-radius: 18px;
    overflow: hidden;
  }

  .today-heading {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    padding-bottom: 7px;
  }

  .today-heading p {
    margin-bottom: 2px;
    font-size: 6px;
  }

  .today-heading h2 {
    font-size: 15px;
  }

  .today-tabs {
    width: auto;
    flex: none;
    gap: 3px;
  }

  .today-tab {
    min-width: 48px;
    height: 25px;
    padding: 0 6px;
    font-size: 7px;
  }

  .today-panel {
    flex: 1;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    margin-top: 4px;
  }

  .today-item {
    min-height: 43px;
    grid-template-columns: 15px 42px minmax(0,1fr) auto;
    gap: 6px;
    padding: 4px 2px;
  }

  .timeline-marker span {
    width: 8px;
    height: 8px;
  }

  .today-item time {
    font-size: 10px;
  }

  .today-item-main strong {
    font-size: 10px;
  }

  .today-item-main small {
    margin-top: 2px;
    font-size: 7px;
  }

  .event-state {
    min-width: 34px;
    padding: 3px 4px;
    font-size: 6px;
  }

  .today-item.is-live .today-item-main strong {
    font-size: 11px;
  }

  .site-footer strong {
    font-size: 12px;
  }

  .site-footer span,.site-footer small {
    font-size: 8px;
  }
}

@media (max-width:760px) {
  .pamphlet-header {
    height: 56px;
  }

  .pamphlet-hero {
    width: 100%;
    height: 100svh;
    min-height: 0;
    padding: 66px 12px calc(77px + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
  }

  .pamphlet-hero > * {
    transform: none;
  }

  .pamphlet-kicker {
    margin: 0;
    font-size: 7px;
  }

  .pamphlet-hero h1 {
    margin: 6px 0 7px;
    font-size: clamp(
 34px,min(10vw,6.5svh),44px
 );
  }

  .pamphlet-lead {
    margin: 0;
    font-size: 10px;
    line-height: 1.55;
  }

  .pc-br {
    display: none;
  }

  .quick-menu {
    width: min(410px,100%);
    margin-top: clamp(14px,2.5svh,20px);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
  }

  .quick-menu a {
    min-height: 58px;
    padding: 7px 6px;
    border-radius: 14px;
  }

  .quick-menu a:last-child {
    grid-column: 1 / -1;
    min-height: 52px;
  }

  .quick-icon {
    margin: 0;
    font-size: 17px;
  }

  .quick-menu strong {
    font-size: 9px;
  }

  .quick-menu small {
    font-size: 6px;
  }

  .pamphlet-footer {
    padding: 18px 16px calc(80px + env(safe-area-inset-bottom));
  }
}

@media (max-width:720px) and (max-height:700px) {
  .hero {
    padding-top: 61px;
    padding-bottom: 70px;
  }

  .hero-label {
    padding: 4px 9px;
  }

  .hero h1 span {
    font-size: 56px;
  }

  .hero h1 b {
    font-size: 24px;
  }

  .hero-campus {
    margin-top: 4px;
    font-size: 10px;
  }

  .hero-slogan {
    margin-top: 5px;
    font-size: 13px;
  }

  .hero-dates {
    margin: 6px auto;
  }

  .hero-dates strong {
    font-size: 25px;
  }

  .count-card {
    padding: 6px 11px;
  }

  .countdown strong {
    font-size: 22px;
  }

  .pamphlet-button {
    margin-top: 5px;
    padding: 6px 11px;
  }

  .live-dashboard {
    padding-top: 60px;
    padding-bottom: 69px;
    gap: 5px;
  }

  .live-kicker {
    display: none;
  }

  .live-title-row h1 {
    font-size: 27px;
  }

  .live-clock-line {
    margin-top: 3px;
  }

  .current-event-card {
    margin-top: 4px;
    padding: 9px 12px;
  }

  .current-event-card h2 {
    margin-top: 5px;
    font-size: 18px;
  }

  .current-event-meta {
    margin-top: 4px;
  }

  .next-event-card {
    margin-top: 4px;
    padding: 6px 9px;
  }

  .today-item {
    min-height: 38px;
  }
}

@media (max-width:760px) and (max-height:700px) {
  .pamphlet-hero {
    padding-top: 60px;
    padding-bottom: 70px;
  }

  .pamphlet-hero h1 {
    font-size: 32px;
  }

  .pamphlet-lead {
    font-size: 9px;
  }

  .quick-menu {
    margin-top: 10px;
    gap: 5px;
  }

  .quick-menu a {
    min-height: 50px;
    padding: 5px;
  }

  .quick-menu a:last-child {
    min-height: 46px;
  }
}

html,body,button,input,textarea,select {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}

body {
  font-weight: 500;
  font-feature-settings: "palt" 1;
}

.hero-label,.hero h1 b,.hero-dates strong,.hero-dates span,.countdown strong,.countdown small,.live-kicker,.live-clock-line strong,.live-date-chip,.today-heading > div > p,.today-item time,.live-section-title > p,.pamphlet-kicker,.pamphlet-title > p,.quick-menu small,.section-title > p {
  font-family: "Montserrat","Zen Kaku Gothic New",sans-serif;
}

.hero h1 span {
  font-family: "Zen Kaku Gothic New",sans-serif;
  font-weight: 700;
  letter-spacing: .035em;
}

.hero h1 b {
  font-weight: 400;
  letter-spacing: .22em;
}

.hero-dates strong,.countdown strong {
  font-weight: 400;
  letter-spacing: .02em;
}

.section-copy p,.message-grid p,.access-card p,.modal-copy,.live-info-card p,.event-card p {
  font-weight: 400;
}

.section-title h2,.live-section-title h2,.pamphlet-title h2 {
  font-weight: 700;
  letter-spacing: .02em;
}

.hero-editorial {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: radial-gradient(circle at 80% 18%,rgba(135,206,179,.28),transparent 29%),radial-gradient(circle at 14% 78%,rgba(169,219,199,.18),transparent 26%),linear-gradient(145deg,#fbfffd 0%,#effbf5 53%,#e8f8f1 100%);
}

.hero-editorial::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image: linear-gradient(rgba(40,96,78,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(40,96,78,.035) 1px,transparent 1px);
  background-size: 52px 52px;
  -webkit-mask-image: linear-gradient(
 to bottom,rgba(0,0,0,.15),rgba(0,0,0,.03) 70%,transparent
 );
  mask-image: linear-gradient(
 to bottom,rgba(0,0,0,.15),rgba(0,0,0,.03) 70%,transparent
 );
}

.hero-bg-word {
  position: absolute;
  left: 50%;
  top: 47%;
  z-index: -2;
  transform: translate(-50%,-50%);
  color: transparent;
  font-family: "Montserrat",sans-serif;
  font-weight: 800;
  line-height: .8;
  pointer-events: none;
  user-select: none;
}

.hero-orbit {
  position: absolute;
  z-index: -1;
  border: 1px solid rgba(82,163,131,.12);
  border-radius: 50%;
  pointer-events: none;
}

.hero-orbit::after {
  position: absolute;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(82,163,131,.12);
  border-radius: 50%;
  color: var(--m5);
  background: rgba(248,255,251,.86);
  font-size: 15px;
}

.hero-orbit-a {
  width: 360px;
  height: 360px;
  top: -185px;
  right: -110px;
}

.hero-orbit-a::after {
  left: 44px;
  bottom: 26px;
}

.hero-orbit-b {
  width: 270px;
  height: 270px;
  left: -125px;
  bottom: -120px;
}

.hero-orbit-b::after {
  right: 24px;
  top: 48px;
}

.hero-editorial-content {
  position: relative;
  text-align: center;
}

.hero-topline {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
}

.hero-editorial .hero-label {
  margin: 0;
  background: rgba(255,255,255,.4);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.hero-edition {
  display: none;
}

.hero-title-block {
  margin-top: clamp(12px,1.7vh,18px);
}

.hero-small-en {
  margin: 0 0 3px;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .34em;
}

.hero-editorial-title {
  margin: 0 !important;
  line-height: .9 !important;
}

.hero-editorial-title span {
  display: block;
  font-weight: 700 !important;
  letter-spacing: .05em !important;
  text-shadow: 0 1px 0 rgba(255,255,255,.7),0 18px 45px rgba(40,96,78,.06);
}

.hero-year-line {
  margin: clamp(7px,1vh,10px) auto 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 13px;
}

.hero-year-line span {
  height: 1px;
  background: linear-gradient(
 90deg,transparent,rgba(82,163,131,.42)
 );
}

.hero-year-line span:last-child {
  background: linear-gradient(
 90deg,rgba(82,163,131,.42),transparent
 );
}

.hero-year-line b {
  color: var(--m6);
  font-family: "Montserrat",sans-serif;
  font-weight: 400;
  letter-spacing: .21em;
  line-height: 1;
}

.hero-editorial .hero-campus {
  margin: clamp(8px,1.2vh,12px) 0 0;
}

.hero-editorial .hero-slogan {
  margin: clamp(7px,1.1vh,11px) 0 0;
  font-weight: 700;
  letter-spacing: .035em;
}

.hero-event-info {
  margin: clamp(13px,1.8vh,18px) auto 0;
  display: grid;
  align-items: center;
  border-top: 1px solid rgba(40,96,78,.12);
  border-bottom: 1px solid rgba(40,96,78,.12);
}

.hero-date-block {
  display: grid;
  align-items: center;
}

.hero-date strong {
  display: block;
  font-family: "Montserrat",sans-serif;
  font-weight: 400;
  line-height: 1;
}

.hero-date span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 8px;
  font-weight: 400;
  letter-spacing: .12em;
}

.hero-date-bridge {
  display: grid;
  align-items: center;
}

.hero-date-bridge i {
  height: 1px;
  background: var(--m3);
}

.hero-date-bridge small {
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: .13em;
  white-space: nowrap;
}

.hero-countdown-inline {
  display: flex;
  align-items: center;
  white-space: nowrap;
}

.count-label {
  color: var(--muted);
  font-weight: 700;
}

.count-unit {
  display: flex;
  align-items: baseline;
  gap: 3px;
}

.count-unit strong {
  font-family: "Montserrat",sans-serif;
  font-weight: 400;
  line-height: 1;
}

.count-unit small {
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-weight: 500;
}

.hero-countdown-inline > i {
  width: 1px;
  height: 24px;
  background: rgba(40,96,78,.13);
}

.hero-pamphlet-button {
  margin: clamp(11px,1.5vh,15px) auto 0;
  border-radius: 15px;
  box-shadow: 0 13px 28px rgba(60,128,104,.16),inset 0 1px rgba(255,255,255,.15);
  transition: transform .18s ease,box-shadow .18s ease;
}

.hero-pamphlet-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 34px rgba(60,128,104,.22),inset 0 1px rgba(255,255,255,.15);
}

.hero-pamphlet-button b {
  font-family: "Montserrat",sans-serif;
  font-size: 16px;
  font-weight: 500;
}

.hero-pamphlet-button small {
  font-family: "Montserrat",sans-serif;
  letter-spacing: .08em;
}

.hero-scroll-cue {
  position: absolute;
  left: 50%;
  bottom: -27px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 400;
  letter-spacing: .18em;
}

.hero-scroll-cue i {
  width: 1px;
  height: 19px;
  background: linear-gradient(
 to bottom,var(--m3),transparent
 );
}

@media (min-width:721px) {
  .hero-editorial {
    height: calc(100svh - 60px);
    min-height: 0;
    margin-top: 60px;
    padding: clamp(13px,1.8vh,20px) 20px clamp(14px,2vh,22px);
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero-title-block {
    margin-top: 8px;
  }

  .hero-small-en {
    display: none;
  }

  .hero-scroll-cue {
    display: none;
  }
}

@media (max-width:720px) {
  .hero-editorial {
    height: 100svh;
    min-height: 0;
    margin: 0;
    padding: 64px 12px calc(74px + env(safe-area-inset-bottom));
    place-items: center;
  }

  .hero-editorial .hero-editorial-content {
    transform: translateY(-5px);
  }

  .hero-bg-word {
    -webkit-text-stroke-color: rgba(40,96,78,.045);
  }

  .hero-orbit-a {
    width: 230px;
    height: 230px;
    top: -122px;
    right: -105px;
  }

  .hero-orbit-b {
    width: 180px;
    height: 180px;
    left: -92px;
    bottom: -65px;
  }

  .hero-orbit::after {
    width: 32px;
    height: 32px;
    font-size: 12px;
  }

  .hero-editorial .hero-label {
    padding: 4px 10px;
    font-size: 7px;
  }

  .hero-title-block {
    margin-top: clamp(8px,1.3svh,11px);
  }

  .hero-small-en {
    font-size: 6px;
  }

  .hero-editorial-title span {
    letter-spacing: .035em !important;
  }

  .hero-year-line {
    gap: 9px;
  }

  .hero-event-info {
    grid-template-columns: 1fr;
  }

  .hero-date-block {
    margin: auto;
  }

  .hero-date span {
    font-size: 7px;
  }

  .hero-countdown-inline {
    justify-content: center;
  }

  .count-unit small {
    font-size: 6px;
  }

  .hero-countdown-inline > i {
    height: 19px;
  }

  .hero-pamphlet-button {
    margin-top: clamp(8px,1.2svh,10px);
    padding: clamp(7px,1.05svh,9px) 12px;
    border-radius: 14px;
  }

  .hero-pamphlet-button .pamphlet-icon {
    width: 29px;
    height: 29px;
  }

  .hero-pamphlet-button small {
    font-size: 6px;
  }

  .hero-scroll-cue {
    display: none;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .hero-editorial {
    padding-top: 59px;
    padding-bottom: 67px;
  }

  .hero-title-block {
    margin-top: 6px;
  }

  .hero-small-en {
    display: none;
  }

  .hero-editorial .hero-campus {
    margin-top: 4px;
  }

  .hero-editorial .hero-slogan {
    margin-top: 3px;
  }
}

.hero-bg-word {
  width: 94vw;
  max-width: 1600px;
  text-align: center;
  font-size: clamp(100px,13vw,225px);
  letter-spacing: .035em;
  white-space: nowrap;
}

.hero-editorial-content {
  width: min(940px,100%);
}

.hero-editorial-title span {
  font-size: clamp(86px,13.6vh,132px) !important;
}

.hero-year-line {
  width: min(340px,72%);
}

.hero-year-line b {
  font-size: clamp(30px,4.7vh,43px);
}

.hero-editorial .hero-campus {
  font-size: clamp(13px,1.9vh,16px);
}

.hero-editorial .hero-slogan {
  font-size: clamp(16px,2.25vh,20px);
}

.hero-event-info {
  width: min(650px,96%);
  grid-template-columns: 1fr;
  gap: clamp(8px,1.15vh,11px);
  padding: clamp(10px,1.4vh,13px) clamp(14px,2vw,22px);
}

.hero-date-block {
  width: min(500px,100%);
  margin: 0 auto;
  grid-template-columns: auto auto auto;
  justify-content: center;
  gap: clamp(20px,3vw,36px);
}

.hero-date strong {
  font-size: clamp(31px,4.7vh,42px);
}

.hero-date-bridge {
  width: 78px;
  grid-template-columns: 18px auto 18px;
  justify-content: center;
  gap: 6px;
}

.hero-date-bridge i {
  width: 18px;
}

.hero-countdown-inline {
  width: 100%;
  justify-content: center;
  gap: 10px;
}

.count-label {
  margin-right: 8px;
  font-size: 9px;
  letter-spacing: .04em;
}

.count-unit strong {
  font-size: clamp(26px,4vh,34px);
}

.count-unit small {
  font-size: 7px;
}

.hero-pamphlet-button {
  width: min(650px,96%);
  padding: clamp(10px,1.3vh,13px) 18px;
}

.hero-pamphlet-button strong {
  font-size: 15px;
}

@media (min-width:721px) and (max-height:760px) {
  .hero-bg-word {
    font-size: clamp(90px,12vw,180px);
  }

  .hero-pamphlet-button {
    margin-top: 7px;
    padding-top: 7px;
    padding-bottom: 7px;
  }
}

@media (max-width:720px) {
  .hero-bg-word {
    width: 96vw;
    top: 43%;
    font-size: clamp(66px,18vw,86px);
    letter-spacing: -.045em;
  }

  .hero-event-info {
    gap: 6px;
    padding: clamp(7px,1svh,9px) 4px;
  }

  .hero-date-block {
    width: min(320px,98%);
    grid-template-columns: auto auto auto;
    justify-content: center;
    gap: clamp(14px,4vw,22px);
  }

  .hero-date-bridge {
    width: 61px;
    grid-template-columns: 13px auto 13px;
    gap: 4px;
  }

  .hero-date-bridge i {
    width: 13px;
  }

  .hero-date-bridge small {
    font-size: 5px;
  }

  .hero-countdown-inline {
    gap: 6px;
  }

  .count-label {
    margin-right: 5px;
    font-size: 7px;
  }

  .hero-pamphlet-button strong {
    font-size: 12px;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .hero-bg-word {
    font-size: 64px;
  }

  .hero-editorial .hero-campus {
    font-size: 9px;
  }

  .hero-editorial .hero-slogan {
    font-size: 12px;
  }

  .hero-event-info {
    gap: 3px;
    padding-top: 4px;
    padding-bottom: 4px;
  }

  .hero-pamphlet-button {
    margin-top: 5px;
    padding-top: 6px;
    padding-bottom: 6px;
  }

  .hero-pamphlet-button strong {
    font-size: 11px;
  }
}

.hero-orbit::after {
  display: none !important;
  content: none !important;
}

.sponsor-watermark {
  position: absolute;
  left: 50%;
  top: 44%;
  z-index: -1;
  transform: translate(-50%,-50%);
  color: transparent;
  -webkit-text-stroke: 1px rgba(40,96,78,.045);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(95px,16vw,240px);
  font-weight: 800;
  letter-spacing: .08em;
  white-space: nowrap;
  user-select: none;
  pointer-events: none;
}

.sponsor-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 12px;
}

.sponsor-card {
  min-height: 154px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 12px;
  padding: 18px 16px 16px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.9);
  color: inherit;
  text-decoration: none;
  transition: transform .18s ease,box-shadow .18s ease;
}

a.sponsor-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(40,96,78,.08);
}

.sponsor-logo {
  width: 100%;
  height: 76px;
  display: grid;
  place-items: center;
}

.sponsor-logo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  object-position: center;
}

.sponsor-name {
  display: block;
  width: 100%;
  min-height: 2.8em;
  color: var(--ink);
  text-align: center;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.sponsor-empty {
  display: grid;
  place-items: center;
  align-content: center;
  text-align: center;
}

.sponsor-empty > span {
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .18em;
}

.sponsor-empty strong {
  margin-top: 8px;
  font-size: 18px;
}

.sponsor-empty p {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 11px;
}

.sponsor-thanks {
  margin: 28px 0 0;
  color: var(--muted);
  font-size: 10px;
}

.pamphlet-header-nav {
  display: flex;
  align-items: center;
  gap: 8px;
}

.pamphlet-header-nav > a:not(.back-home) {
  padding: 7px 10px;
  color: var(--pam-green);
  text-decoration: none;
  font-size: 10px;
  font-weight: 800;
}

.pamphlet-editorial-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: calc(100svh - 58px);
  padding: clamp(34px,5vh,56px) clamp(24px,5vw,72px) clamp(32px,4.5vh,50px);
  display: grid;
  place-items: center;
  text-align: left;
  background: radial-gradient(circle at 85% 13%,rgba(137,205,179,.30),transparent 28%),radial-gradient(circle at 11% 86%,rgba(169,219,199,.15),transparent 24%),linear-gradient(145deg,#fbfffd 0%,#effaf5 54%,#e8f8f1 100%);
}

.pamphlet-editorial-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image: linear-gradient(rgba(40,96,78,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(40,96,78,.028) 1px,transparent 1px);
  background-size: 54px 54px;
}

.pamphlet-bg-word {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: -2;
  width: 94vw;
  transform: translate(-50%,-50%);
  color: transparent;
  -webkit-text-stroke: 1px rgba(40,96,78,.048);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(105px,13vw,225px);
  font-weight: 800;
  letter-spacing: .035em;
  line-height: .8;
  text-align: center;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}

.pamphlet-bg-line {
  position: absolute;
  z-index: -1;
  border: 1px solid rgba(82,163,131,.10);
  border-radius: 50%;
  pointer-events: none;
}

.pamphlet-bg-line-a {
  width: 390px;
  height: 390px;
  top: -205px;
  right: -120px;
}

.pamphlet-bg-line-b {
  width: 270px;
  height: 270px;
  left: -135px;
  bottom: -120px;
}

.pamphlet-hero-shell {
  width: min(1180px,100%);
  display: grid;
  grid-template-columns: minmax(320px,.82fr) minmax(500px,1.18fr);
  align-items: center;
  gap: clamp(45px,6vw,90px);
}

.pamphlet-cover-copy {
  position: relative;
}

.pamphlet-editorial-hero .pamphlet-kicker {
  font-family: "Montserrat",sans-serif;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .22em;
}

.pamphlet-cover-small {
  margin: 17px 0 5px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 8px;
  font-weight: 400;
  letter-spacing: .18em;
}

.pamphlet-editorial-hero h1 {
  margin: 0;
  font-size: clamp(48px,5.4vw,76px);
  line-height: 1.1;
  letter-spacing: .02em;
}

.pamphlet-editorial-hero h1 span {
  display: block;
  color: var(--m6);
  font-size: .48em;
  font-weight: 500;
  letter-spacing: .14em;
}

.pamphlet-editorial-hero .pamphlet-lead {
  max-width: 500px;
  margin: 21px 0 0;
  font-size: 13px;
  line-height: 1.9;
}

.pamphlet-cover-meta {
  width: max-content;
  max-width: 100%;
  margin-top: 26px;
  padding-top: 17px;
  display: grid;
  grid-template-columns: auto 34px auto;
  align-items: center;
  gap: 10px;
  border-top: 1px solid rgba(40,96,78,.13);
}

.pamphlet-cover-meta > span {
  font-family: "Montserrat",sans-serif;
  font-size: 13px;
  font-weight: 700;
}

.pamphlet-cover-meta > i {
  height: 1px;
  background: var(--m3);
}

.pamphlet-cover-meta > small {
  grid-column: 1/-1;
  color: var(--muted);
  font-size: 9px;
}

.pamphlet-guide-board {
  min-width: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.guide-tile {
  position: relative;
  min-height: 128px;
  padding: 19px 20px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: end;
  gap: 16px;
  overflow: hidden;
  border: 1px solid rgba(40,96,78,.12);
  border-radius: 21px;
  color: var(--ink);
  background: rgba(255,255,255,.78);
  text-decoration: none;
  box-shadow: 0 13px 32px rgba(40,96,78,.06);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
  transition: transform .18s ease,background .18s ease,box-shadow .18s ease;
}

.guide-tile:hover {
  transform: translateY(-3px);
  background: #fff;
  box-shadow: 0 18px 36px rgba(40,96,78,.10);
}

.guide-tile-main {
  grid-column: 1/-1;
  min-height: 150px;
  color: #fff;
  border-color: transparent;
  background: linear-gradient(
 135deg,rgba(82,163,131,.96),rgba(40,96,78,.98)
 );
  box-shadow: 0 18px 38px rgba(40,96,78,.16);
}

.guide-tile-map {
  grid-column: 1/-1;
  min-height: 98px;
}

.guide-no {
  align-self: start;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
}

.guide-tile-main .guide-no {
  color: rgba(255,255,255,.68);
}

.guide-tile div small,.guide-tile div strong {
  display: block;
}

.guide-tile div small {
  margin-bottom: 5px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 7px;
  font-weight: 700;
  letter-spacing: .13em;
}

.guide-tile-main div small {
  color: rgba(255,255,255,.68);
}

.guide-tile div strong {
  font-size: 17px;
  font-weight: 700;
}

.guide-tile-main div strong {
  font-size: 23px;
}

.guide-tile b {
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 17px;
  font-weight: 500;
}

.guide-tile-main b {
  color: #fff;
}

.pamphlet-scroll-cue {
  position: absolute;
  left: 50%;
  bottom: 14px;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 400;
  letter-spacing: .17em;
}

.pamphlet-scroll-cue i {
  width: 28px;
  height: 1px;
  background: linear-gradient(
 to right,var(--m3),transparent
 );
}

@media (max-width:900px) {
  .pamphlet-hero-shell {
    grid-template-columns: 1fr;
    gap: 25px;
  }

  .pamphlet-cover-copy {
    text-align: center;
  }

  .pamphlet-editorial-hero .pamphlet-lead {
    margin-left: auto;
    margin-right: auto;
  }

  .pamphlet-cover-meta {
    margin-left: auto;
    margin-right: auto;
  }

  .pamphlet-guide-board {
    width: min(650px,100%);
    margin: auto;
  }
}

@media (max-width:720px) {
  .sponsor-section {
    padding: 68px 14px calc(82px + env(safe-area-inset-bottom));
  }

  .sponsor-watermark {
    font-size: 22vw;
    letter-spacing: -.045em;
  }

  .sponsor-heading > span {
    font-size: 11px;
  }

  .sponsor-grid {
    margin-top: 27px;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .sponsor-card {
    min-height: 130px;
    gap: 9px;
    padding: 12px 10px 11px;
    border-radius: 15px;
  }

  .sponsor-logo {
    height: 62px;
  }

  .sponsor-name {
    min-height: 2.8em;
    font-size: 11px;
    line-height: 1.4;
  }

  .sponsor-empty {
    min-height: 145px;
    margin-top: 25px;
    padding: 20px 14px;
    border-radius: 18px;
  }

  .sponsor-empty strong {
    font-size: 14px;
  }

  .sponsor-empty p {
    font-size: 9px;
  }

  .pamphlet-header-nav {
    gap: 3px;
  }

  .pamphlet-header-nav > a:not(.back-home) {
    display: none;
  }
}

@media (max-width:760px) {
  .pamphlet-editorial-hero {
    height: 100svh;
    min-height: 0;
    padding: 65px 12px calc(76px + env(safe-area-inset-bottom));
    display: grid;
    place-items: center;
  }

  .pamphlet-bg-word {
    width: 96vw;
    top: 43%;
    font-size: 18vw;
    letter-spacing: .012em;
  }

  .pamphlet-bg-line-a {
    width: 230px;
    height: 230px;
    top: -125px;
    right: -105px;
  }

  .pamphlet-bg-line-b {
    width: 170px;
    height: 170px;
    left: -90px;
    bottom: -75px;
  }

  .pamphlet-hero-shell {
    width: min(430px,100%);
    gap: clamp(14px,2.3svh,20px);
  }

  .pamphlet-cover-small {
    display: none;
  }

  .pamphlet-editorial-hero .pamphlet-kicker {
    font-size: 7px;
  }

  .pamphlet-editorial-hero h1 {
    font-size: clamp(
 37px,min(11vw,6.5svh),47px
 );
  }

  .pamphlet-editorial-hero .pamphlet-lead {
    margin-top: 9px;
    font-size: 10px;
    line-height: 1.65;
  }

  .pamphlet-cover-meta {
    margin-top: 12px;
    padding-top: 9px;
    gap: 6px;
    grid-template-columns: auto 24px auto;
  }

  .pamphlet-cover-meta > span {
    font-size: 9px;
  }

  .pamphlet-cover-meta > small {
    font-size: 7px;
  }

  .pamphlet-guide-board {
    gap: 6px;
  }

  .guide-tile {
    min-height: 72px;
    padding: 10px 11px;
    gap: 8px;
    border-radius: 14px;
  }

  .guide-tile-main {
    min-height: 82px;
  }

  .guide-tile-map {
    min-height: 60px;
  }

  .guide-no {
    font-size: 7px;
  }

  .guide-tile div small {
    margin-bottom: 2px;
    font-size: 5px;
  }

  .guide-tile div strong {
    font-size: 11px;
  }

  .guide-tile-main div strong {
    font-size: 14px;
  }

  .guide-tile b {
    font-size: 12px;
  }

  .pamphlet-scroll-cue {
    display: none;
  }
}

@media (max-width:760px) and (max-height:700px) {
  .pamphlet-editorial-hero {
    padding-top: 59px;
    padding-bottom: 68px;
  }

  .pamphlet-hero-shell {
    gap: 9px;
  }

  .pamphlet-editorial-hero h1 {
    font-size: 33px;
  }

  .pamphlet-editorial-hero .pamphlet-lead {
    margin-top: 5px;
    font-size: 8px;
  }

  .pamphlet-cover-meta {
    margin-top: 7px;
    padding-top: 6px;
  }

  .guide-tile {
    min-height: 58px;
    padding: 7px 9px;
  }

  .guide-tile-main {
    min-height: 66px;
  }

  .guide-tile-map {
    min-height: 50px;
  }
}

.desktop-nav a[href="#sponsors"] {
  color: inherit !important;
}

.pamphlet-header {
  height: 60px;
  padding: 0 clamp(16px,3vw,42px);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 24px;
}

.pamphlet-brand-mark {
  width: 31px;
  height: 31px;
}

.pamphlet-brand strong {
  font-size: 13px;
}

.pamphlet-brand small {
  font-size: 8px;
}

.pamphlet-section-nav {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(11px,1.3vw,22px);
}

.pamphlet-section-nav a {
  position: relative;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
  font-size: 10px;
  font-weight: 700;
  transition: opacity .18s ease;
}

.pamphlet-section-nav a:hover {
  opacity: .58;
}

.pamphlet-section-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -7px;
  height: 1px;
  background: var(--m5);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .18s ease;
}

.pamphlet-section-nav a:hover::after {
  transform: scaleX(1);
}

.back-home {
  padding: 7px 12px;
  border-radius: 999px;
  font-size: 10px;
}

.pamphlet-index-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: calc(100svh - 60px);
  padding: clamp(32px,4.5vh,50px) clamp(20px,5vw,72px) clamp(30px,4vh,46px);
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 83% 15%,rgba(169,219,199,.35),transparent 28%),radial-gradient(circle at 12% 86%,rgba(169,219,199,.16),transparent 25%),linear-gradient(145deg,#fbfffd 0%,#f1fbf6 52%,#e9f8f1 100%);
}

.pamphlet-index-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image: linear-gradient(rgba(40,96,78,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(40,96,78,.026) 1px,transparent 1px);
  background-size: 54px 54px;
}

.pamphlet-index-bg {
  position: absolute;
  left: 50%;
  top: 47%;
  z-index: -2;
  width: 94vw;
  transform: translate(-50%,-50%);
  color: transparent;
  -webkit-text-stroke: 1px rgba(40,96,78,.045);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(110px,13vw,225px);
  font-weight: 800;
  letter-spacing: .035em;
  line-height: .8;
  text-align: center;
  white-space: nowrap;
  user-select: none;
  pointer-events: none;
}

.pamphlet-index-circle {
  position: absolute;
  z-index: -1;
  border: 1px solid rgba(82,163,131,.10);
  border-radius: 50%;
}

.pamphlet-index-circle-a {
  width: 390px;
  height: 390px;
  top: -215px;
  right: -125px;
}

.pamphlet-index-circle-b {
  width: 260px;
  height: 260px;
  left: -125px;
  bottom: -125px;
}

.pamphlet-index-shell {
  width: min(1120px,100%);
  margin: auto;
  text-align: center;
}

.pamphlet-index-copy {
  width: min(760px,100%);
  margin: auto;
}

.pamphlet-index-hero .pamphlet-kicker {
  margin: 0;
  font-family: "Montserrat",sans-serif;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .22em;
}

.pamphlet-index-hero h1 {
  margin: clamp(8px,1.2vh,12px) 0 0;
  font-size: clamp(54px,7.4vw,88px);
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: .035em;
  white-space: nowrap;
}

.pamphlet-index-hero .pamphlet-lead {
  margin: clamp(12px,1.7vh,17px) 0 0;
  color: var(--muted);
  font-size: clamp(12px,1.7vh,14px);
  line-height: 1.8;
}

.pamphlet-index-meta {
  width: max-content;
  max-width: 100%;
  margin: clamp(15px,2.1vh,21px) auto 0;
  padding-top: clamp(10px,1.4vh,14px);
  display: grid;
  grid-template-columns: auto 38px auto;
  align-items: center;
  justify-content: center;
  gap: 11px;
  border-top: 1px solid rgba(40,96,78,.13);
}

.pamphlet-index-meta span {
  font-family: "Montserrat",sans-serif;
  font-size: 12px;
  font-weight: 700;
}

.pamphlet-index-meta i {
  height: 1px;
  background: var(--m3);
}

.pamphlet-index-meta b {
  grid-column: 1/-1;
  color: var(--muted);
  font-size: 9px;
  font-weight: 500;
}

.pamphlet-index-menu {
  width: min(1100px,100%);
  margin: clamp(24px,3.5vh,36px) auto 0;
  display: grid;
  grid-template-columns: repeat(6,1fr);
  overflow: hidden;
  border: 1px solid rgba(40,96,78,.12);
  border-radius: 22px;
  background: rgba(255,255,255,.80);
  box-shadow: 0 18px 46px rgba(40,96,78,.08);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.pamphlet-index-menu a {
  position: relative;
  min-width: 0;
  min-height: 126px;
  padding: 18px 14px 16px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  border-right: 1px solid rgba(40,96,78,.10);
  color: var(--ink);
  background: transparent;
  text-align: left;
  text-decoration: none;
  transition: background .18s ease,transform .18s ease;
}

.pamphlet-index-menu a:last-child {
  border-right: 0;
}

.pamphlet-index-menu a:hover {
  background: rgba(232,248,241,.72);
}

.index-number {
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .08em;
}

.pamphlet-index-menu a div {
  width: 100%;
}

.pamphlet-index-menu small {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: .12em;
}

.pamphlet-index-menu strong {
  display: block;
  overflow: hidden;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.pamphlet-index-menu a > b {
  position: absolute;
  right: 13px;
  bottom: 13px;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 13px;
  font-weight: 500;
}

.pamphlet-index-note {
  margin-top: clamp(13px,1.8vh,18px);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 400;
  letter-spacing: .16em;
}

.pamphlet-index-note i {
  width: 34px;
  height: 1px;
  background: linear-gradient(to right,var(--m3),transparent);
}

@media (min-width:901px) and (max-height:760px) {
  .pamphlet-index-hero {
    padding-top: 20px;
    padding-bottom: 20px;
  }

  .pamphlet-index-hero h1 {
    font-size: 58px;
  }

  .pamphlet-index-hero .pamphlet-lead {
    margin-top: 8px;
    font-size: 11px;
  }

  .pamphlet-index-meta {
    margin-top: 10px;
    padding-top: 8px;
  }

  .pamphlet-index-menu {
    margin-top: 18px;
  }

  .pamphlet-index-menu a {
    min-height: 96px;
    padding: 13px 11px;
  }

  .pamphlet-index-note {
    margin-top: 9px;
  }
}

@media (max-width:1050px) {
  .pamphlet-header {
    height: 88px;
    grid-template-columns: 1fr auto;
    grid-template-rows: 54px 34px;
    gap: 0 10px;
    padding: 0 12px;
  }

  .pamphlet-brand {
    grid-column: 1;
    grid-row: 1;
  }

  .back-home {
    grid-column: 2;
    grid-row: 1;
  }

  .pamphlet-section-nav {
    grid-column: 1/-1;
    grid-row: 2;
    width: 100%;
    justify-content: flex-start;
    gap: 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    border-top: 1px solid rgba(40,96,78,.07);
  }

  .pamphlet-section-nav::-webkit-scrollbar {
    display: none;
  }

  .pamphlet-section-nav a {
    flex: none;
    padding: 8px 13px;
    font-size: 9px;
  }

  .pamphlet-section-nav a::after {
    display: none;
  }

  .pamphlet-index-hero {
    min-height: calc(100svh - 88px);
  }
}

@media (max-width:720px) {
  .pamphlet-header {
    height: 84px;
    grid-template-rows: 52px 32px;
  }

  .pamphlet-brand-mark {
    width: 29px;
    height: 29px;
  }

  .pamphlet-brand strong {
    font-size: 12px;
  }

  .pamphlet-brand small {
    font-size: 7px;
  }

  .back-home {
    padding: 6px 9px;
    font-size: 8px;
  }

  .pamphlet-section-nav a {
    padding: 7px 11px;
    font-size: 8px;
  }

  .pamphlet-index-hero {
    height: calc(100svh - 84px);
    min-height: 0;
    padding: clamp(14px,2.2svh,19px) 11px calc(72px + env(safe-area-inset-bottom));
  }

  .pamphlet-index-bg {
    top: 43%;
    width: 96vw;
    font-size: 17.5vw;
    letter-spacing: -.045em;
  }

  .pamphlet-index-circle-a {
    width: 220px;
    height: 220px;
    top: -125px;
    right: -105px;
  }

  .pamphlet-index-circle-b {
    width: 160px;
    height: 160px;
    left: -88px;
    bottom: -70px;
  }

  .pamphlet-index-hero .pamphlet-kicker {
    font-size: 6px;
  }

  .pamphlet-index-hero h1 {
    margin-top: 5px;
    white-space: normal;
  }

  .pamphlet-index-hero .pamphlet-lead {
    margin-top: 7px;
    line-height: 1.6;
  }

  .pamphlet-index-meta {
    margin-top: 9px;
    padding-top: 7px;
    grid-template-columns: auto 25px auto;
    gap: 6px;
  }

  .pamphlet-index-meta span {
    font-size: 8px;
  }

  .pamphlet-index-meta b {
    font-size: 6px;
  }

  .pamphlet-index-menu {
    margin-top: 12px;
    grid-template-columns: 1fr 1fr;
    border-radius: 16px;
  }

  .pamphlet-index-menu a {
    padding: 8px 9px;
    border-right: 1px solid rgba(40,96,78,.09);
    border-bottom: 1px solid rgba(40,96,78,.09);
  }

  .pamphlet-index-menu a:nth-child(2n) {
    border-right: 0;
  }

  .pamphlet-index-menu a:nth-last-child(-n/**/+2) {
    border-bottom: 0;
  }

  .index-number {
    font-size: 6px;
  }

  .pamphlet-index-menu small {
    margin-bottom: 1px;
    font-size: 5px;
  }

  .pamphlet-index-menu a > b {
    right: 8px;
    bottom: 7px;
    font-size: 9px;
  }

  .pamphlet-index-note {
    display: none;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .pamphlet-index-hero {
    padding-top: 8px;
    padding-bottom: 66px;
  }

  .pamphlet-index-hero .pamphlet-lead {
    margin-top: 4px;
    font-size: 8px;
  }

  .pamphlet-index-meta {
    margin-top: 5px;
    padding-top: 4px;
  }

  .pamphlet-index-menu {
    margin-top: 7px;
  }

  .pamphlet-index-menu a {
    padding: 6px 8px;
  }
}

.sponsor-section {
  position: relative;
  isolation: auto;
  overflow: visible;
  padding: clamp(70px,9vw,110px) clamp(18px,6vw,78px);
  background: #fff;
}

.sponsor-watermark {
  display: none;
}

.sponsor-inner {
  width: min(1060px,100%);
  margin: auto;
}

.sponsor-heading {
  width: 100%;
  margin: 0 0 32px;
  text-align: left;
}

.sponsor-heading > p {
  margin: 0;
  color: var(--m5);
  font-family: "Montserrat","Zen Kaku Gothic New",sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
}

.sponsor-heading h2 {
  margin: 6px 0 0;
  font-size: clamp(30px,5vw,47px);
  font-weight: 700;
}

.sponsor-heading > span {
  display: block;
  max-width: 680px;
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.8;
}

.sponsor-grid {
  margin-top: 0;
}

.sponsor-card {
  border-radius: 22px;
  box-shadow: none;
}

.sponsor-empty {
  width: 100%;
  min-height: 190px;
  margin: 0;
  padding: 30px 22px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: var(--m0);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.sponsor-thanks {
  margin-top: 22px;
  text-align: left;
}

.desktop-nav a[href="#sponsors"],.pamphlet-section-nav a[href="#sponsors"] {
  color: inherit !important;
}

.mobile-menu-close {
  position: absolute;
  top: 17px;
  right: 17px;
  width: 42px;
  height: 42px;
  display: none;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--ink);
  background: #fff;
  font: inherit;
  font-size: 26px;
  font-weight: 400;
  line-height: 1;
  cursor: pointer;
}

@media (max-width:720px) {
  .mobile-menu {
    padding-top: 76px;
  }
}

.pamphlet-page,.pamphlet-page button,.pamphlet-page input,.pamphlet-page select,.pamphlet-page textarea {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}

.pamphlet-page {
  font-weight: 500;
  font-feature-settings: "palt" 1;
}

.pamphlet-brand,.pamphlet-section-nav,.back-home,.pamphlet-index-hero h1,.pamphlet-index-hero .pamphlet-lead,.pamphlet-index-menu strong,.pamphlet-title h2,.timeline-item strong,.info-card h3,.event-card h3 {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}

.pamphlet-kicker,.pamphlet-index-meta span,.index-number,.pamphlet-index-menu small,.pamphlet-title > p,.timeline-item time {
  font-family: "Montserrat","Zen Kaku Gothic New",sans-serif;
}

@media (min-width:721px) {
  .hero-editorial-content {
    width: min(1040px,100%);
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero-pamphlet-button strong {
    font-size: 13px;
  }
}

@media (min-width:1051px) {
  .pamphlet-index-hero {
    min-height: calc(100svh - 60px);
  }
}

@media (min-width:1051px) and (max-height:760px) {
  .pamphlet-index-menu strong {
    font-size: 12px;
  }
}

@media (max-width:720px) {
  .hero-editorial .hero-campus {
    font-size: 11px;
  }

  .hero-pamphlet-button {
    width: min(400px,99%);
  }
}

@media (min-width:721px) {
  .hero-title-block {
    margin-top: clamp(10px,1.4vh,15px);
  }

  .hero-pamphlet-button {
    width: min(790px,99%);
    margin-top: clamp(9px,1.2vh,12px);
    padding: clamp(11px,1.4vh,14px) 21px;
  }

  .hero-pamphlet-button strong {
    font-size: 17px;
  }
}

@media (min-width:1051px) {
  .pamphlet-index-hero {
    padding: 12px clamp(20px,3vw,48px) 14px;
  }

  .pamphlet-index-shell {
    width: min(1380px,100%);
  }

  .pamphlet-index-copy {
    width: min(1060px,100%);
  }

  .pamphlet-index-hero .pamphlet-kicker {
    font-size: 10px;
  }

  .pamphlet-index-hero h1 {
    margin-top: 7px;
    font-size: clamp(78px,9.6vw,118px);
  }

  .pamphlet-index-hero .pamphlet-lead {
    margin-top: 12px;
    font-size: clamp(14px,1.95vh,17px);
  }

  .pamphlet-index-meta {
    margin-top: 15px;
    padding-top: 10px;
  }

  .pamphlet-index-meta span {
    font-size: 15px;
  }

  .pamphlet-index-meta b {
    font-size: 10px;
  }

  .pamphlet-index-menu {
    width: min(1340px,100%);
    margin-top: 22px;
  }

  .pamphlet-index-menu a {
    min-height: 158px;
    padding: 22px 17px 19px;
  }

  .pamphlet-index-menu strong {
    font-size: 16px;
  }

  .pamphlet-index-menu small {
    font-size: 7px;
  }

  .index-number {
    font-size: 10px;
  }
}

@media (min-width:1051px) and (max-height:760px) {
  .pamphlet-index-hero {
    padding-top: 7px;
    padding-bottom: 8px;
  }

  .pamphlet-index-hero h1 {
    font-size: 64px;
  }

  .pamphlet-index-hero .pamphlet-lead {
    margin-top: 6px;
    font-size: 11px;
  }

  .pamphlet-index-meta {
    margin-top: 7px;
    padding-top: 6px;
  }

  .pamphlet-index-menu {
    margin-top: 12px;
  }

  .pamphlet-index-menu a {
    min-height: 100px;
    padding: 12px 10px;
  }
}

@media (max-width:720px) {
  .hero-event-info,.hero-pamphlet-button {
    width: min(420px,100%);
  }

  .pamphlet-index-shell {
    width: min(450px,100%);
  }

  .pamphlet-index-hero h1 {
    font-size: clamp(
 45px,min(13vw,7.1svh),56px
 );
  }

  .pamphlet-index-hero .pamphlet-lead {
    font-size: 10px;
  }

  .pamphlet-index-menu {
    width: min(430px,100%);
  }

  .pamphlet-index-menu a {
    min-height: 72px;
  }

  .pamphlet-index-menu strong {
    font-size: 12px;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .pamphlet-index-hero h1 {
    font-size: 34px;
  }

  .pamphlet-index-menu a {
    min-height: 54px;
  }
}

.pamphlet-index-menu a {
  padding-right: 14px;
}

.pamphlet-index-menu a > b {
  display: none !important;
}

#timetable .pamphlet-title > p {
  margin-bottom: 4px;
}

#timetable .pamphlet-title h2 {
  margin-top: 0;
}

@media (min-width:721px) {
  .pamphlet-index-menu a {
    justify-content: space-between;
  }

  .pamphlet-index-menu a div {
    padding-bottom: 2px;
  }
}

@media (max-width:720px) {
  .pamphlet-index-menu a {
    padding-right: 9px;
  }
}

.mode-pamphlet .site-header {
  height: 60px;
}

.mode-pamphlet .pamphlet-index-hero {
  height: calc(100svh - 60px);
  min-height: 0;
  margin-top: 60px;
}

.mode-pamphlet .pamphlet-index-copy {
  width: min(1080px,100%);
}

.mode-pamphlet .pamphlet-index-hero h1 {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  font-size: clamp(82px,10vw,122px);
  font-weight: 700;
  letter-spacing: -.045em;
}

.mode-pamphlet .pamphlet-index-hero .pamphlet-lead {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  font-size: clamp(14px,1.9vh,17px);
}

.mode-pamphlet .pamphlet-index-menu strong {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}

.mode-pamphlet .pamphlet-title h2,.mode-pamphlet .timeline-item strong,.mode-pamphlet .info-card h3,.mode-pamphlet .event-card h3 {
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}

.mode-pamphlet .pamphlet-header,.mode-pamphlet .pamphlet-footer,.mode-pamphlet .pamphlet-bottom-nav {
  display: none !important;
}

@media (max-width:1050px) {
  .mode-pamphlet .pamphlet-index-hero {
    height: calc(100svh - 60px);
    margin-top: 60px;
  }
}

@media (max-width:720px) {
  .mode-pamphlet .pamphlet-index-hero {
    width: 100%;
    height: 100svh;
    min-height: 0;
    margin-top: 0;
    padding: 66px 11px calc(76px + env(safe-area-inset-bottom));
  }

  .mode-pamphlet .pamphlet-index-shell {
    width: min(450px,100%);
  }

  .mode-pamphlet .pamphlet-index-hero h1 {
    font-size: clamp(46px,min(13vw,7.2svh),58px);
  }
}

@media (max-width:720px) and (max-height:700px) {
  .mode-pamphlet .pamphlet-index-hero h1 {
    font-size: 34px;
  }
}

.mode-pamphlet .pamphlet-index-hero {
  padding-top: clamp(8px,1.2vh,14px);
  padding-bottom: clamp(8px,1.2vh,14px);
}

.mode-pamphlet .pamphlet-index-shell {
  width: min(1420px,100%);
}

.mode-pamphlet .pamphlet-guide-copy {
  width: min(1120px,100%);
}

.mode-pamphlet .pamphlet-index-bg {
  top: 47%;
  font-size: clamp(220px,25vw,430px);
  font-weight: 800;
  letter-spacing: -.035em;
  -webkit-text-stroke: 1px rgba(40,96,78,.042);
}

.mode-pamphlet .pamphlet-guide-title {
  margin: clamp(6px,.9vh,9px) 0 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  font-family: "Montserrat","Zen Kaku Gothic New",sans-serif;
  line-height: .82;
  letter-spacing: 0;
}

.mode-pamphlet .pamphlet-guide-title span {
  display: block;
  color: var(--m6);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(43px,4.6vw,70px);
  font-weight: 400;
  letter-spacing: .15em;
}

.mode-pamphlet .pamphlet-guide-title strong {
  display: block;
  margin-top: clamp(8px,1.2vh,13px);
  color: var(--ink);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(92px,10.8vw,155px);
  font-weight: 800;
  letter-spacing: -.045em;
}

.mode-pamphlet .pamphlet-guide-lead {
  margin-top: clamp(15px,2vh,21px);
  color: var(--ink);
  font-size: clamp(14px,1.9vh,17px);
  font-weight: 400;
  line-height: 1.6;
}

.mode-pamphlet .pamphlet-guide-features {
  margin: clamp(6px,.8vh,9px) 0 0;
  color: var(--muted);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(7px,.75vw,10px);
  font-weight: 400;
  letter-spacing: .10em;
}

.mode-pamphlet .pamphlet-index-meta {
  margin-top: clamp(14px,1.8vh,19px);
  padding-top: clamp(9px,1.2vh,12px);
}

.mode-pamphlet .pamphlet-index-menu {
  width: min(1360px,100%);
  margin-top: clamp(16px,2.1vh,22px);
}

.mode-pamphlet .pamphlet-index-menu a {
  min-height: clamp(102px,13.5vh,132px);
  padding-top: 17px;
  padding-bottom: 15px;
}

.mode-pamphlet .pamphlet-index-menu strong {
  font-size: 14px;
}

.mode-pamphlet .pamphlet-index-note {
  margin-top: clamp(9px,1.2vh,13px);
}

@media (min-width:721px) and (max-height:760px) {
  .mode-pamphlet .pamphlet-guide-title span {
    font-size: 38px;
  }

  .mode-pamphlet .pamphlet-guide-title strong {
    margin-top: 5px;
    font-size: 82px;
  }

  .mode-pamphlet .pamphlet-guide-lead {
    margin-top: 8px;
    font-size: 11px;
  }

  .mode-pamphlet .pamphlet-guide-features {
    margin-top: 3px;
    font-size: 7px;
  }

  .mode-pamphlet .pamphlet-index-meta {
    margin-top: 7px;
    padding-top: 5px;
  }

  .mode-pamphlet .pamphlet-index-menu {
    margin-top: 9px;
  }

  .mode-pamphlet .pamphlet-index-menu a {
    min-height: 87px;
    padding-top: 10px;
    padding-bottom: 9px;
  }

  .mode-pamphlet .pamphlet-index-note {
    margin-top: 6px;
  }
}

@media (max-width:720px) {
  .mode-pamphlet .pamphlet-index-bg {
    top: 44%;
    font-size: 58vw;
  }

  .mode-pamphlet .pamphlet-guide-copy {
    width: min(440px,100%);
  }

  .mode-pamphlet .pamphlet-guide-title {
    margin-top: 4px;
  }

  .mode-pamphlet .pamphlet-guide-title span {
    font-size: clamp(
 27px,min(8.8vw,4.4svh),35px
 );
    letter-spacing: .13em;
  }

  .mode-pamphlet .pamphlet-guide-title strong {
    margin-top: 7px;
    font-size: clamp(
 65px,min(21vw,10.8svh),84px
 );
  }

  .mode-pamphlet .pamphlet-guide-lead {
    margin-top: 10px;
    font-size: 11px;
  }

  .mode-pamphlet .pamphlet-guide-features {
    margin-top: 4px;
    font-size: 5px;
    letter-spacing: .06em;
  }

  .mode-pamphlet .pamphlet-index-meta {
    margin-top: 9px;
    padding-top: 7px;
  }

  .mode-pamphlet .pamphlet-index-menu {
    width: min(430px,100%);
    margin-top: 10px;
  }

  .mode-pamphlet .pamphlet-index-menu a {
    min-height: 64px;
  }

  .mode-pamphlet .pamphlet-index-menu strong {
    font-size: 11px;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .mode-pamphlet .pamphlet-guide-title span {
    font-size: 23px;
  }

  .mode-pamphlet .pamphlet-guide-title strong {
    margin-top: 4px;
    font-size: 52px;
  }

  .mode-pamphlet .pamphlet-guide-lead {
    margin-top: 5px;
    font-size: 9px;
  }

  .mode-pamphlet .pamphlet-guide-features {
    display: none;
  }

  .mode-pamphlet .pamphlet-index-meta {
    margin-top: 5px;
    padding-top: 4px;
  }

  .mode-pamphlet .pamphlet-index-menu {
    margin-top: 6px;
  }

  .mode-pamphlet .pamphlet-index-menu a {
    min-height: 51px;
  }
}

@media (max-width:720px) {
  .hero-editorial .hero-pamphlet-button .pamphlet-icon {
    border-radius: 9px;
  }
}

.site-footer {
  position: relative;
  padding: 32px clamp(20px,6vw,78px) 34px;
  display: grid;
  grid-template-columns: minmax(190px,1fr) auto;
  align-items: center;
  gap: 28px 42px;
  background: var(--m7);
  color: #fff;
}

.footer-brand strong,.footer-brand span {
  display: block;
}

.footer-brand strong {
  font-size: 14px;
}

.footer-brand span {
  margin-top: 3px;
  font-size: 8px;
  opacity: .68;
}

.footer-links {
  display: flex;
  align-items: stretch;
  gap: 9px;
}

.footer-link,.footer-contact {
  min-width: 205px;
  padding: 12px 14px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 14px;
  background: rgba(255,255,255,.045);
}

.footer-link {
  position: relative;
  color: #fff;
  text-decoration: none;
  transition: background .18s ease,transform .18s ease;
}

.footer-link:hover {
  transform: translateY(-1px);
  background: rgba(255,255,255,.09);
}

.footer-link small,.footer-contact small {
  display: block;
  margin-bottom: 3px;
  font-family: "Montserrat",sans-serif;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: .16em;
  opacity: .62;
}

.footer-link strong,.footer-contact strong {
  display: block;
  font-size: 10px;
  font-weight: 400;
}

.footer-link b {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  font-family: "Montserrat",sans-serif;
  font-size: 12px;
  font-weight: 500;
  opacity: .75;
}

.footer-copy {
  grid-column: 1/-1;
  padding-top: 13px;
  border-top: 1px solid rgba(255,255,255,.10);
  font-size: 7px;
  opacity: .58;
}

@media (max-width:720px) {
  .site-footer {
    padding: 26px 16px calc(94px + env(safe-area-inset-bottom));
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .footer-links {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr;
    gap: 7px;
  }

  .footer-link,.footer-contact {
    min-width: 0;
    width: 100%;
  }

  .footer-link strong,.footer-contact strong {
    font-size: 9px;
  }

  .footer-copy {
    grid-column: 1;
    padding-top: 10px;
  }
}

.brand-logo-image {
  display: block;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
}

.footer-brand {
  display: flex;
  align-items: center;
  gap: 11px;
}

.footer-brand-logo {
  display: block;
  flex: none;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  object-fit: cover;
}

.footer-brand-text strong,.footer-brand-text span {
  display: block;
}

.footer-brand-text strong {
  font-size: 14px;
}

.footer-brand-text span {
  margin-top: 3px;
  font-size: 8px;
  opacity: .68;
}

@media (max-width:720px) {
  .brand-logo-image {
    width: 30px;
    height: 30px;
  }

  .footer-brand-logo {
    width: 36px;
    height: 36px;
  }
}

@media (min-width:721px) {
  .hero-editorial {
    padding-top: 0;
    padding-bottom: 4px;
  }

  .hero-editorial .hero-editorial-content {
    width: min(1260px,100%);
    transform: translateY(-5px);
  }

  .hero-editorial .hero-topline {
    margin-bottom: 2px;
  }

  .hero-editorial .hero-label {
    padding: 8px 19px;
    font-size: 12px;
    letter-spacing: .13em;
  }

  .hero-editorial-title span {
    font-size: clamp(128px,19vh,188px) !important;
  }

  .hero-year-line {
    width: min(500px,84%);
  }

  .hero-year-line b {
    font-size: clamp(43px,6.5vh,60px);
  }

  .hero-editorial .hero-campus {
    font-size: clamp(16px,2.25vh,20px);
  }

  .hero-editorial .hero-slogan {
    font-size: clamp(20px,2.75vh,25px);
  }

  .hero-event-info {
    width: min(850px,98%);
    gap: 7px;
    padding-top: 8px;
    padding-bottom: 8px;
  }

  .hero-date-block {
    width: min(665px,100%);
  }

  .hero-date strong {
    font-size: clamp(42px,6.1vh,56px);
  }

  .hero-date span {
    font-size: 10px;
  }

  .hero-countdown-inline {
    margin-top: 0;
  }

  .count-label {
    font-size: 11px;
  }

  .count-unit strong {
    font-size: clamp(36px,5.2vh,46px);
  }

  .hero-editorial .hero-pamphlet-button {
    margin-top: 8px;
    padding: 7px 11px;
    border-radius: 14px;
    box-shadow: 0 9px 22px rgba(40,96,78,.12);
  }

  .hero-editorial .hero-pamphlet-button .pamphlet-icon {
    width: 29px;
    height: 29px;
    border-radius: 8px;
    font-size: 12px;
  }

  .hero-editorial .hero-pamphlet-button small {
    font-size: 6px;
    letter-spacing: .08em;
  }

  .hero-editorial .hero-pamphlet-button strong {
    font-size: 12px;
  }

  .hero-editorial .hero-pamphlet-button > b {
    font-size: 13px;
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero-editorial .hero-editorial-content {
    transform: translateY(-4px);
  }

  .hero-editorial .hero-label {
    padding: 6px 15px;
    font-size: 10px;
  }

  .hero-editorial-title span {
    font-size: 104px !important;
  }

  .hero-year-line {
    width: min(390px,78%);
  }

  .hero-year-line b {
    font-size: 38px;
  }

  .hero-editorial .hero-campus {
    font-size: 13px;
  }

  .hero-editorial .hero-slogan {
    font-size: 16px;
  }

  .hero-event-info {
    width: min(720px,94%);
    gap: 4px;
    padding-top: 5px;
    padding-bottom: 5px;
  }

  .hero-date-block {
    width: min(560px,100%);
  }

  .hero-date strong {
    font-size: 37px;
  }

  .count-label {
    font-size: 9px;
  }

  .count-unit strong {
    font-size: 31px;
  }

  .hero-editorial .hero-pamphlet-button {
    margin-top: 5px;
    padding: 5px 9px;
  }

  .hero-editorial .hero-pamphlet-button .pamphlet-icon {
    width: 26px;
    height: 26px;
  }

  .hero-editorial .hero-pamphlet-button small {
    font-size: 5px;
  }

  .hero-editorial .hero-pamphlet-button strong {
    font-size: 10px;
  }
}

@media (max-width:720px) {
  .hero-editorial .hero-editorial-content {
    width: min(460px,100%);
  }

  .hero-editorial-title span {
    font-size: clamp(
 86px,min(28.5vw,14svh),110px
 ) !important;
  }

  .hero-year-line {
    width: min(305px,78%);
  }

  .hero-year-line b {
    font-size: clamp(
 33px,min(10.5vw,5.5svh),41px
 );
  }

  .hero-editorial .hero-slogan {
    font-size: clamp(
 15px,min(4.6vw,2.45svh),18px
 );
  }

  .hero-event-info {
    width: min(415px,99%);
  }

  .hero-date strong {
    font-size: clamp(
 33px,min(10.5vw,5svh),39px
 );
  }

  .count-unit strong {
    font-size: clamp(
 26px,min(8.2vw,4.2svh),31px
 );
  }

  .hero-editorial .hero-pamphlet-button {
    margin-top: 6px;
    padding: 6px 9px;
    border-radius: 12px;
  }

  .hero-editorial .hero-pamphlet-button .pamphlet-icon {
    width: 27px;
    height: 27px;
  }

  .hero-editorial .hero-pamphlet-button small {
    font-size: 5px;
  }

  .hero-editorial .hero-pamphlet-button strong {
    font-size: 10px;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .hero-editorial-title span {
    font-size: 63px !important;
  }

  .hero-year-line b {
    font-size: 25px;
  }

  .hero-date strong {
    font-size: 25px;
  }

  .count-unit strong {
    font-size: 21px;
  }

  .hero-editorial .hero-pamphlet-button {
    width: min(285px,80%) !important;
  }
}

@media (min-width:721px) {
  .hero-editorial-title {
    margin-bottom: 10px;
  }

  .hero-editorial-title span {
    line-height: .90 !important;
  }

  .hero-year-line {
    margin-top: 10px !important;
  }

  .hero-year-line b {
    line-height: 1;
  }

  .hero-editorial .hero-campus {
    margin-top: 10px !important;
  }

  .hero-editorial .hero-slogan {
    margin-top: 9px !important;
  }

  .hero-event-info {
    margin-top: 14px !important;
  }

  .hero-editorial .hero-pamphlet-button {
    min-width: 0;
  }

  .hero-editorial .hero-pamphlet-button > span:not(.pamphlet-icon) {
    flex: 0 1 auto;
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero-editorial-title {
    margin-bottom: 6px;
  }

  .hero-editorial-title span {
    line-height: .91 !important;
  }

  .hero-year-line {
    margin-top: 6px !important;
  }

  .hero-editorial .hero-campus {
    margin-top: 6px !important;
  }

  .hero-editorial .hero-slogan {
    margin-top: 6px !important;
  }

  .hero-event-info {
    margin-top: 8px !important;
  }
}

@media (max-width:720px) {
  .hero-editorial-title {
    margin-bottom: 7px;
  }

  .hero-editorial-title span {
    line-height: .91 !important;
  }

  .hero-year-line {
    margin-top: 7px !important;
  }

  .hero-editorial .hero-campus {
    margin-top: 7px !important;
  }

  .hero-editorial .hero-slogan {
    margin-top: 7px !important;
  }

  .hero-event-info {
    margin-top: 10px !important;
  }
}

@media (max-width:720px) and (max-height:700px) {
  .hero-editorial-title {
    margin-bottom: 4px;
  }

  .hero-year-line {
    margin-top: 4px !important;
  }

  .hero-editorial .hero-campus,.hero-editorial .hero-slogan {
    margin-top: 4px !important;
  }

  .hero-event-info {
    margin-top: 5px !important;
  }
}

@media (min-width:721px) {
  .hero-editorial .hero-pamphlet-button {
    width: min(325px,38vw) !important;
    padding-left: 8px;
    padding-right: 8px;
    gap: 7px;
  }

  .hero-editorial .hero-pamphlet-button > span:not(.pamphlet-icon) {
    min-width: 0;
  }

  .hero-editorial .hero-pamphlet-button > b {
    margin-left: 4px;
  }
}

@media (min-width:721px) and (max-height:760px) {
  .hero-editorial .hero-pamphlet-button {
    width: min(310px,37vw) !important;
  }
}

@media (max-width:720px) {
  .hero-editorial .hero-pamphlet-button {
    width: min(255px,72%) !important;
    padding-left: 7px;
    padding-right: 7px;
    gap: 6px;
  }

  .hero-editorial .hero-pamphlet-button > b {
    margin-left: 2px;
  }
}

.header-pamphlet-cta {
  flex: none;
  min-height: 35px;
  padding: 7px 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border-radius: 999px;
  color: #fff;
  background: var(--m6);
  text-decoration: none;
  box-shadow: 0 7px 18px rgba(40,96,78,.12);
  transition: transform .18s ease,background .18s ease,box-shadow .18s ease;
}

.header-pamphlet-cta span {
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}

.header-pamphlet-cta b {
  font-family: "Montserrat",sans-serif;
  font-size: 11px;
  font-weight: 500;
}

.header-pamphlet-cta:hover {
  transform: translateY(-1px);
  background: var(--m7);
  box-shadow: 0 9px 20px rgba(40,96,78,.16);
}

@media (max-width:1320px) {
  .header-pamphlet-cta {
    display: none;
  }
}

.mobile-pamphlet-link {
  margin-top: 8px !important;
  color: #fff !important;
  background: var(--m6) !important;
  border-color: transparent !important;
  text-align: center;
  font-weight: 800 !important;
}

.mobile-pamphlet-link:hover {
  background: var(--m7) !important;
}

@media (min-width:1051px) {
  .header-pamphlet-cta {
    display: flex !important;
  }
}

@media (min-width:1051px) and (max-width:1380px) {
  .site-header {
    padding-left: 18px;
    padding-right: 18px;
    gap: 12px;
  }

  .brand {
    flex: none;
  }

  .desktop-nav {
    margin-left: auto;
    gap: clamp(7px,.8vw,12px);
    font-size: 10px;
  }

  .desktop-nav a {
    white-space: nowrap;
  }

  .header-pamphlet-cta {
    min-height: 33px;
    padding: 6px 10px;
    gap: 5px;
  }

  .header-pamphlet-cta span {
    font-size: 9px;
  }

  .header-pamphlet-cta b {
    font-size: 10px;
  }
}

@media (max-width:1050px) {
  .header-pamphlet-cta {
    display: none !important;
  }

  .mobile-menu {
    overflow-y: auto;
  }

  .mobile-menu nav {
    width: min(460px,100%);
    margin: 0 auto;
    display: block !important;
  }

  .mobile-menu nav > a,.mobile-menu nav > .mobile-modal-button {
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: 10px 8px;
    display: block;
    border: 0;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    background: transparent;
    font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.35;
    text-align: left;
    text-decoration: none;
    appearance: none;
    -webkit-appearance: none;
  }

  .mobile-menu nav > a:first-child,.mobile-menu nav > .mobile-modal-button:first-child {
    border-top: 1px solid var(--line);
  }

  .mobile-menu-close {
    cursor: pointer;
  }

  .mobile-menu.open .mobile-menu-close {
    display: grid !important;
  }

  .mobile-menu nav > .mobile-pamphlet-link {
    margin-top: 12px !important;
    padding: 12px 10px !important;
    border: 0 !important;
    border-radius: 12px;
    color: #fff !important;
    background: var(--m6) !important;
    text-align: center;
  }

  .mobile-menu nav > .menu-sub {
    margin-top: 12px !important;
    padding-top: 10px;
    padding-bottom: 10px;
    color: var(--muted);
    font-size: 11px !important;
    font-weight: 400;
  }
}

@media (max-width:720px) {
  .mobile-menu {
    padding: calc(var(--site-header-h-mobile,56px) + 55px) 16px calc(90px + env(safe-area-inset-bottom));
  }

  .mobile-menu nav > a,.mobile-menu nav > .mobile-modal-button {
    padding: 9px 7px;
    font-size: 16px;
  }
}

@media (max-width:430px) {
  .mobile-menu nav > a,.mobile-menu nav > .mobile-modal-button {
    padding: 8px 6px;
    font-size: 15px;
  }

  .mobile-menu nav > .mobile-pamphlet-link {
    padding: 11px 8px !important;
  }
}

@media (max-width:1050px) {
  .mobile-menu {
    position: fixed !important;
    inset: 0 !important;
    z-index: 90 !important;
    padding: 0 !important;
    display: block !important;
    overflow: hidden !important;
    background: rgba(31,66,54,.14) !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    backdrop-filter: blur(2.5px);
    -webkit-backdrop-filter: blur(2.5px);
    transition: opacity .26s ease,visibility .26s ease !important;
  }

  .mobile-menu.open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .mobile-menu .mobile-menu-sheet {
    position: absolute !important;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100% !important;
    max-width: none !important;
    max-height: min(78svh,680px);
    margin: 0 !important;
    padding: 58px 20px calc(22px + env(safe-area-inset-bottom)) !important;
    display: block !important;
    overflow-y: auto;
    border-radius: 28px 28px 0 0;
    background: #f8fffb;
    box-shadow: 0 -18px 50px rgba(31,66,54,.14);
    transition: transform .34s cubic-bezier(.22,.8,.28,1) !important;
  }

  .mobile-menu .mobile-menu-sheet::before {
    content: "";
    position: absolute;
    top: 13px;
    left: 50%;
    width: 42px;
    height: 4px;
    transform: translateX(-50%);
    border-radius: 999px;
    background: rgba(40,96,78,.17);
  }

  .mobile-menu-close {
    position: absolute !important;
    top: 12px !important;
    right: 16px !important;
    z-index: 2 !important;
    width: 36px !important;
    height: 36px !important;
    place-items: center;
    padding: 0 !important;
    border: 1px solid var(--line) !important;
    border-radius: 50% !important;
    color: var(--ink) !important;
    background: #fff !important;
    box-shadow: none !important;
    font-family: "Montserrat",sans-serif !important;
    font-size: 22px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
  }

  .mobile-menu .mobile-menu-sheet > a,.mobile-menu .mobile-menu-sheet > .mobile-modal-button {
    width: 100%;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 9px 8px !important;
    display: block !important;
    border: 0 !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--ink) !important;
    background: transparent !important;
    font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif !important;
    font-size: 16px !important;
    font-weight: 800 !important;
    line-height: 1.35 !important;
    text-align: left !important;
    text-decoration: none !important;
  }

  .mobile-menu .mobile-menu-sheet > a:first-of-type {
    border-top: 1px solid var(--line) !important;
  }

  .mobile-menu .mobile-menu-sheet > .mobile-pamphlet-link {
    margin-top: 12px !important;
    padding: 12px 12px !important;
    border: 0 !important;
    border-radius: 13px !important;
    color: #fff !important;
    background: var(--m6) !important;
    text-align: center !important;
  }

  .mobile-menu .mobile-menu-sheet > .menu-sub {
    margin-top: 8px !important;
    padding: 9px 8px !important;
    border-bottom: 0 !important;
    color: var(--muted) !important;
    font-size: 10px !important;
    font-weight: 600 !important;
  }
}

@media (max-width:720px) {
  .mobile-menu .mobile-menu-sheet {
    max-height: 76svh;
    padding: 54px 16px calc(18px + env(safe-area-inset-bottom)) !important;
    border-radius: 24px 24px 0 0;
  }

  .mobile-menu-close {
    top: 10px !important;
    right: 13px !important;
    width: 34px !important;
    height: 34px !important;
    font-size: 21px !important;
  }

  .mobile-menu .mobile-menu-sheet > a,.mobile-menu .mobile-menu-sheet > .mobile-modal-button {
    padding: 8px 7px !important;
    font-size: 15px !important;
  }
}

@media (max-width:430px) {
  .mobile-menu .mobile-menu-sheet {
    max-height: 74svh;
    padding-top: 50px !important;
  }

  .mobile-menu .mobile-menu-sheet > a,.mobile-menu .mobile-menu-sheet > .mobile-modal-button {
    padding: 7px 6px !important;
    font-size: 14px !important;
  }

  .mobile-menu .mobile-menu-sheet > .mobile-pamphlet-link {
    padding: 10px 8px !important;
  }
}

@media (max-width:1050px) {
  .mobile-menu-close {
    display: none !important;
  }

  .mobile-menu .mobile-menu-sheet {
    --sheet-drag-y: 0px;
    padding-top: 50px !important;
    transform: translateY(
 calc(105% + var(--sheet-drag-y))
 );
    will-change: transform;
  }

  .mobile-menu.open .mobile-menu-sheet {
    transform: translateY(var(--sheet-drag-y));
  }

  .mobile-menu.is-dragging .mobile-menu-sheet {
    transition: none !important;
  }

  .mobile-menu-handle {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 3;
    width: 100%;
    height: 46px;
    display: block;
    padding: 0;
    border: 0;
    background: transparent;
    appearance: none;
    -webkit-appearance: none;
    cursor: grab;
    touch-action: none;
  }

  .mobile-menu-handle:active {
    cursor: grabbing;
  }

  .mobile-menu-handle::before {
    content: "";
    position: absolute;
    top: 14px;
    left: 50%;
    width: 44px;
    height: 5px;
    transform: translateX(-50%);
    border-radius: 999px;
    background: rgba(40,96,78,.18);
    transition: width .18s ease,background .18s ease;
  }

  .mobile-menu.is-dragging .mobile-menu-handle::before {
    width: 52px;
    background: rgba(40,96,78,.28);
  }

  .mobile-menu .mobile-menu-sheet::before {
    display: none !important;
  }
}

@media (max-width:720px) {
  .mobile-menu .mobile-menu-sheet {
    padding-top: 47px !important;
  }

  .mobile-menu-handle {
    height: 43px;
  }

  .mobile-menu-handle::before {
    top: 13px;
    width: 42px;
    height: 4px;
  }
}

@media (max-width:720px) and (min-height:760px) {
  .mobile-menu .mobile-menu-sheet {
    max-height: 72svh;
  }
}

.site-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  background: radial-gradient(
 circle at 73% 23%,rgba(169,219,199,.24),transparent 29%
 ),linear-gradient(
 145deg,#fbfffd 0%,#f1fbf6 58%,#eaf8f2 100%
 );
  opacity: 1;
  visibility: visible;
  transition: opacity .34s ease,visibility .34s ease;
}

.site-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.site-loader-inner {
  width: min(320px,78vw);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  transform: translateY(-8px);
  transition: transform .34s ease,opacity .28s ease;
}

.site-loader.is-hidden .site-loader-inner {
  opacity: 0;
  transform: translateY(-18px);
}

.site-loader-logo {
  width: 74px;
  height: 74px;
  display: block;
  border-radius: 50%;
  object-fit: cover;
  animation: loader-logo-in .58s cubic-bezier(.2,.75,.25,1) both;
}

.site-loader-title {
  margin-top: 15px;
  color: var(--ink);
  font-family: "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1.25;
  animation: loader-copy-in .45s .08s ease both;
}

.site-loader-en {
  margin-top: 4px;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .23em;
  animation: loader-copy-in .45s .15s ease both;
}

.site-loader-line {
  position: relative;
  width: 128px;
  height: 1px;
  margin-top: 19px;
  overflow: hidden;
  background: rgba(82,163,131,.16);
}

.site-loader-line i {
  position: absolute;
  inset: 0;
  display: block;
  background: linear-gradient(
 90deg,var(--m3),var(--m6)
 );
  transform: translateX(-100%);
  animation: loader-line-run .72s .05s cubic-bezier(.3,.65,.25,1) forwards;
}

@keyframes loader-logo-in {
  from {
    opacity: 0;
    transform: scale(.86);
  }

  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes loader-copy-in {
  from {
    opacity: 0;
    transform: translateY(5px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes loader-line-run {
  0% {
    transform: translateX(-100%);
  }

  100% {
    transform: translateX(0);
  }
}

@keyframes loader-safety-hide {
  to {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }
}

@media (max-width:720px) {
  .site-loader-inner {
    width: min(280px,76vw);
    transform: translateY(-2.5svh);
  }

  .site-loader-logo {
    width: 68px;
    height: 68px;
  }

  .site-loader-title {
    margin-top: 13px;
    font-size: 18px;
  }

  .site-loader-en {
    font-size: 7px;
  }

  .site-loader-line {
    width: 112px;
    margin-top: 17px;
  }
}

@media (prefers-reduced-motion:reduce) {
  .site-loader-logo,.site-loader-title,.site-loader-en,.site-loader-line i {
    animation: none !important;
  }

  .site-loader,.site-loader-inner {
    transition-duration: .12s !important;
  }
}

.reveal-on-scroll > p,.reveal-on-scroll > h2,.reveal-on-scroll > span {
  transition: opacity .52s ease,transform .52s cubic-bezier(.2,.75,.25,1);
}

.reveal-on-scroll:not(.is-visible) > p,.reveal-on-scroll:not(.is-visible) > h2,.reveal-on-scroll:not(.is-visible) > span {
  opacity: 0;
  transform: translateY(10px);
}

.reveal-on-scroll.is-visible > p {
  transition-delay: .02s;
}

.reveal-on-scroll.is-visible > h2 {
  transition-delay: .07s;
}

.reveal-on-scroll.is-visible > span {
  transition-delay: .12s;
}

.mode-before .hero-editorial .hero-topline,.mode-before .hero-editorial .hero-title-block,.mode-before .hero-editorial .hero-event-info,.mode-before .hero-editorial .hero-pamphlet-button,.mode-before .hero-editorial .hero-scroll-cue {
  transition: opacity .56s cubic-bezier(.2,.75,.25,1),transform .56s cubic-bezier(.2,.75,.25,1);
}

.mode-before.hero-ready .hero-editorial .hero-title-block {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .10s;
}

.mode-before.hero-ready .hero-editorial .hero-event-info {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .20s;
}

.mode-live .live-section-title.reveal-on-scroll,.mode-pamphlet .pamphlet-title.reveal-on-scroll {
  transform: translateY(18px);
}

.mode-live .live-section-title.reveal-on-scroll.is-visible,.mode-pamphlet .pamphlet-title.reveal-on-scroll.is-visible {
  transform: translateY(0);
}

@media (prefers-reduced-motion:reduce) {
  .reveal-on-scroll,.reveal-on-scroll > p,.reveal-on-scroll > h2,.reveal-on-scroll > span,.mode-before .hero-editorial .hero-topline,.mode-before .hero-editorial .hero-title-block,.mode-before .hero-editorial .hero-event-info,.mode-before .hero-editorial .hero-pamphlet-button,.mode-before .hero-editorial .hero-scroll-cue,.mode-before .hero-bg-word {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

.reveal-on-scroll {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .62s cubic-bezier(.2,.75,.25,1),transform .62s cubic-bezier(.2,.75,.25,1);
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.slogan-section .slogan-inner.reveal-on-scroll {
  opacity: 0;
  transform: translateY(28px) scale(.985);
  transition: opacity .68s cubic-bezier(.2,.75,.25,1),transform .68s cubic-bezier(.2,.75,.25,1);
}

.slogan-section .slogan-inner.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.slogan-section .slogan-inner.reveal-on-scroll > p,.slogan-section .slogan-inner.reveal-on-scroll > h2,.slogan-section .slogan-inner.reveal-on-scroll > span {
  transition: opacity .55s ease,transform .55s cubic-bezier(.2,.75,.25,1);
}

.slogan-section .slogan-inner.reveal-on-scroll:not(.is-visible) > p,.slogan-section .slogan-inner.reveal-on-scroll:not(.is-visible) > h2,.slogan-section .slogan-inner.reveal-on-scroll:not(.is-visible) > span {
  opacity: 0;
  transform: translateY(12px);
}

.slogan-section .slogan-inner.reveal-on-scroll.is-visible > p {
  transition-delay: .02s;
}

.slogan-section .slogan-inner.reveal-on-scroll.is-visible > h2 {
  transition-delay: .10s;
}

.slogan-section .slogan-inner.reveal-on-scroll.is-visible > span {
  transition-delay: .18s;
}

.mode-before .hero-editorial .hero-topline,.mode-before .hero-editorial .hero-title-block,.mode-before .hero-editorial .hero-event-info,.mode-before .hero-editorial .hero-pamphlet-button,.mode-before .hero-editorial .hero-scroll-cue {
  opacity: 1;
  transform: none;
}

.mode-before .hero-editorial .hero-topline,.mode-before .hero-editorial .hero-small-en,.mode-before .hero-editorial .hero-editorial-title,.mode-before .hero-editorial .hero-year-line,.mode-before .hero-editorial .hero-campus,.mode-before .hero-editorial .hero-slogan,.mode-before .hero-editorial .hero-date-block,.mode-before .hero-editorial .hero-countdown-inline,.mode-before .hero-editorial .hero-pamphlet-button,.mode-before .hero-editorial .hero-scroll-cue {
  opacity: 0;
  transform: translateY(17px);
  transition: opacity .58s cubic-bezier(.2,.75,.25,1),transform .58s cubic-bezier(.2,.75,.25,1);
}

.mode-before.hero-ready .hero-editorial .hero-topline {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .02s;
}

.mode-before.hero-ready .hero-editorial .hero-small-en {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .13s;
}

.mode-before.hero-ready .hero-editorial .hero-editorial-title {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .23s;
}

.mode-before.hero-ready .hero-editorial .hero-year-line {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .34s;
}

.mode-before.hero-ready .hero-editorial .hero-campus {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .44s;
}

.mode-before.hero-ready .hero-editorial .hero-slogan {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .54s;
}

.mode-before.hero-ready .hero-editorial .hero-date-block {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .65s;
}

.mode-before.hero-ready .hero-editorial .hero-countdown-inline {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .76s;
}

.mode-before.hero-ready .hero-editorial .hero-pamphlet-button {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .87s;
}

.mode-before.hero-ready .hero-editorial .hero-scroll-cue {
  opacity: 1;
  transform: translateY(0);
  transition-delay: .98s;
}

.mode-before .hero-bg-word {
  opacity: 0;
  transform: translate(-50%,-50%) scale(.985);
  transition: opacity 1.05s ease,transform 1.05s cubic-bezier(.2,.75,.25,1);
}

.mode-before.hero-ready .hero-bg-word {
  opacity: 1;
  transform: translate(-50%,-50%) scale(1);
  transition-delay: .18s;
}

@media (max-width:720px) {
  .mode-before.hero-ready .hero-editorial .hero-topline {
    transition-delay: .01s;
  }

  .mode-before.hero-ready .hero-editorial .hero-small-en {
    transition-delay: .09s;
  }

  .mode-before.hero-ready .hero-editorial .hero-editorial-title {
    transition-delay: .17s;
  }

  .mode-before.hero-ready .hero-editorial .hero-year-line {
    transition-delay: .25s;
  }

  .mode-before.hero-ready .hero-editorial .hero-campus {
    transition-delay: .33s;
  }

  .mode-before.hero-ready .hero-editorial .hero-slogan {
    transition-delay: .41s;
  }

  .mode-before.hero-ready .hero-editorial .hero-date-block {
    transition-delay: .50s;
  }

  .mode-before.hero-ready .hero-editorial .hero-countdown-inline {
    transition-delay: .59s;
  }

  .mode-before.hero-ready .hero-editorial .hero-pamphlet-button {
    transition-delay: .68s;
  }

  .mode-before.hero-ready .hero-editorial .hero-scroll-cue {
    transition-delay: .77s;
  }
}

@media (prefers-reduced-motion:reduce) {
  .reveal-on-scroll,.slogan-section .slogan-inner.reveal-on-scroll,.mode-before .hero-editorial .hero-topline,.mode-before .hero-editorial .hero-small-en,.mode-before .hero-editorial .hero-editorial-title,.mode-before .hero-editorial .hero-year-line,.mode-before .hero-editorial .hero-campus,.mode-before .hero-editorial .hero-slogan,.mode-before .hero-editorial .hero-date-block,.mode-before .hero-editorial .hero-countdown-inline,.mode-before .hero-editorial .hero-pamphlet-button,.mode-before .hero-editorial .hero-scroll-cue,.mode-before .hero-bg-word {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

.section.slogan.reveal-on-scroll {
  opacity: 1 !important;
  transform: none !important;
}

.section.slogan.reveal-on-scroll > p {
  opacity: 0;
  transform: translateX(-24px);
  transition: opacity .52s ease,transform .58s cubic-bezier(.2,.75,.25,1);
}

.section.slogan.reveal-on-scroll > h2 {
  opacity: 0;
  transform: translateY(14px) scale(.965);
  filter: blur(3px);
  transition: opacity .62s ease,transform .66s cubic-bezier(.2,.75,.25,1),filter .55s ease;
}

.section.slogan.reveal-on-scroll > span {
  opacity: 0;
  transform: translateX(24px);
  transition: opacity .52s ease,transform .58s cubic-bezier(.2,.75,.25,1);
}

.section.slogan.reveal-on-scroll.is-visible > p {
  opacity: 1;
  transform: translateX(0);
  transition-delay: .02s;
}

.section.slogan.reveal-on-scroll.is-visible > h2 {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
  transition-delay: .15s;
}

.section.slogan.reveal-on-scroll.is-visible > span {
  opacity: 1;
  transform: translateX(0);
  transition-delay: .31s;
}

.section.slogan.reveal-on-scroll:not(.is-visible) > span {
  transition-delay: 0s;
}

.section.slogan.reveal-on-scroll:not(.is-visible) > h2 {
  transition-delay: .10s;
}

.section.slogan.reveal-on-scroll:not(.is-visible) > p {
  transition-delay: .20s;
}

@media (max-width:720px) {
  .section.slogan.reveal-on-scroll > p {
    transform: translateX(-16px);
  }

  .section.slogan.reveal-on-scroll > span {
    transform: translateX(16px);
  }

  .section.slogan.reveal-on-scroll.is-visible > p,.section.slogan.reveal-on-scroll.is-visible > span {
    transform: translateX(0);
  }

  .section.slogan.reveal-on-scroll.is-visible > h2 {
    transition-delay: .13s;
  }

  .section.slogan.reveal-on-scroll.is-visible > span {
    transition-delay: .27s;
  }
}

@media (prefers-reduced-motion:reduce) {
  .section.slogan.reveal-on-scroll,.section.slogan.reveal-on-scroll > p,.section.slogan.reveal-on-scroll > h2,.section.slogan.reveal-on-scroll > span {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

.position-reveal {
  --reveal-p: 0;
  opacity: var(--reveal-p) !important;
  transform: translateY(
 calc((1 - var(--reveal-p)) * 28px)
 ) !important;
  transition: none !important;
  will-change: opacity,transform;
}

.position-reveal > p,.position-reveal > h2,.position-reveal > span {
  transition: none !important;
  will-change: opacity,transform;
}

.section.slogan.position-slogan {
  opacity: 1 !important;
  transform: none !important;
}

.section.slogan.position-slogan > p,.section.slogan.position-slogan > h2,.section.slogan.position-slogan > span {
  will-change: opacity,transform,filter;
}

.position-reveal.reveal-on-scroll,.section.slogan.position-slogan.reveal-on-scroll {
  transition: none !important;
}

.site-loader-line i {
  animation-duration: 1.02s !important;
}

.site-loader-logo {
  animation-duration: .68s !important;
}

.site-loader-title {
  animation-delay: .13s !important;
}

.site-loader-en {
  animation-delay: .24s !important;
}

.site-loader {
  animation: loader-safety-hide .01s 2.2s forwards !important;
}

@media (prefers-reduced-motion:reduce) {
  .position-reveal,.position-reveal > p,.position-reveal > h2,.position-reveal > span,.section.slogan.position-slogan,.section.slogan.position-slogan > p,.section.slogan.position-slogan > h2,.section.slogan.position-slogan > span {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

.section.slogan.position-slogan {
  overflow: hidden;
}

.section.slogan.position-slogan > p,.section.slogan.position-slogan > h2,.section.slogan.position-slogan > span {
  transition: none !important;
}

.section.slogan.position-slogan > span {
  opacity: 0;
}

@media (min-width:721px) {
  .section.slogan.position-slogan {
    padding-top: clamp(100px,10vw,135px);
    padding-bottom: clamp(100px,10vw,135px);
  }
}

@media (max-width:720px) {
  .section.slogan.position-slogan {
    padding-top: 88px;
    padding-bottom: 88px;
  }
}

.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-topline,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-small-en,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-editorial-title,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-year-line,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-campus,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-slogan,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-date-block,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-countdown-inline,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-pamphlet-button,.mode-before:not(.hero-ready):not(.hero-restarting) .hero-editorial .hero-scroll-cue {
  opacity: 0;
}

.mode-before main {
  transition: opacity .18s ease;
}

.mode-before.top-transition-out main {
  opacity: 0 !important;
  pointer-events: none;
  transition: opacity .13s ease !important;
}

.mode-before.top-transition-out .hero-editorial {
  opacity: 1;
}

.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-topline,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-small-en,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-editorial-title,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-year-line,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-campus,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-slogan,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-date-block,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-countdown-inline,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-pamphlet-button,.mode-before.top-transition-out.hero-restarting .hero-editorial .hero-scroll-cue {
  transition: none !important;
}

@media (prefers-reduced-motion:reduce) {
  .mode-before main {
    transition: none !important;
  }

  .mode-before.top-transition-out main {
    opacity: 1 !important;
  }
}

.mode-before main,.mode-before.top-transition-out main {
  opacity: 1 !important;
  pointer-events: auto !important;
  transition: none !important;
}

.mode-before.hero-restarting .hero-editorial .hero-topline,.mode-before.hero-restarting .hero-editorial .hero-small-en,.mode-before.hero-restarting .hero-editorial .hero-editorial-title,.mode-before.hero-restarting .hero-editorial .hero-year-line,.mode-before.hero-restarting .hero-editorial .hero-campus,.mode-before.hero-restarting .hero-editorial .hero-slogan,.mode-before.hero-restarting .hero-editorial .hero-date-block,.mode-before.hero-restarting .hero-editorial .hero-countdown-inline,.mode-before.hero-restarting .hero-editorial .hero-pamphlet-button,.mode-before.hero-restarting .hero-editorial .hero-scroll-cue {
  opacity: 0 !important;
  transform: translateY(7px) !important;
  transition: opacity .12s ease,transform .12s ease !important;
  transition-delay: 0s !important;
}

.mode-before.hero-restarting .hero-bg-word {
  opacity: 0 !important;
  transition: opacity .12s ease !important;
  transition-delay: 0s !important;
}

.mode-before.top-transition-out {
  opacity: 1 !important;
}

@media (prefers-reduced-motion:reduce) {
  .mode-before.hero-restarting .hero-editorial .hero-topline,.mode-before.hero-restarting .hero-editorial .hero-small-en,.mode-before.hero-restarting .hero-editorial .hero-editorial-title,.mode-before.hero-restarting .hero-editorial .hero-year-line,.mode-before.hero-restarting .hero-editorial .hero-campus,.mode-before.hero-restarting .hero-editorial .hero-slogan,.mode-before.hero-restarting .hero-editorial .hero-date-block,.mode-before.hero-restarting .hero-editorial .hero-countdown-inline,.mode-before.hero-restarting .hero-editorial .hero-pamphlet-button,.mode-before.hero-restarting .hero-editorial .hero-scroll-cue,.mode-before.hero-restarting .hero-bg-word {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

@media (max-width:1050px) {
  .mobile-menu .mobile-menu-sheet > .mobile-mode-switch-link {
    margin-top: 12px !important;
    padding: 12px 12px !important;
    border: 0 !important;
    border-radius: 13px !important;
    color: #fff !important;
    background: var(--m6) !important;
    text-align: center !important;
    font-weight: 800 !important;
  }

  .mobile-menu .mobile-menu-sheet > .mobile-mode-switch-link:hover {
    background: var(--m7) !important;
  }
}

.access-map {
  position: relative;
  min-height: 360px;
  overflow: hidden;
  background: var(--m1);
}

.access-map iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
}

.access-card > div:last-child {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.access-map-link {
  width: max-content;
  max-width: 100%;
  margin-top: 14px;
  display: inline-flex;
  align-items: center;
  color: var(--m6) !important;
  font-weight: 800;
  text-decoration: none;
  transition: opacity .18s ease,transform .18s ease;
}

.access-map-link:hover {
  opacity: .78;
  transform: translateY(-1px);
}

.modal-access-map {
  min-height: 230px !important;
  padding: 0 !important;
  overflow: hidden !important;
  display: block !important;
  background: var(--m1) !important;
}

.modal-access-map iframe {
  width: 100%;
  height: 230px;
  display: block;
  border: 0;
  border-radius: inherit;
}

.modal-map-link {
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  color: var(--m6);
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}

@media (max-width:720px) {
  .access-map {
    min-height: 285px;
  }

  .access-card > div:last-child {
    padding: 28px 24px;
  }

  .modal-access-map {
    min-height: 210px !important;
  }

  .modal-access-map iframe {
    height: 210px;
  }
}

.message-photo {
  overflow: hidden;
}

.message-photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center top;
}

@media (max-width:720px) {
  .message-grid article {
    align-items: start;
  }
}

@media (max-width:430px) {
  .message-grid article {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .message-photo {
    aspect-ratio: 4 / 3;
    margin: 0 auto;
  }
}

@media (min-width:721px) {
  .message-grid article {
    grid-template-columns: minmax(220px,42%) 1fr !important;
    gap: 26px !important;
    align-items: center !important;
  }
}

@media (min-width:721px) and (max-width:980px) {
  .message-grid {
    grid-template-columns: 1fr !important;
  }

  .message-grid article {
    grid-template-columns: minmax(230px,36%) 1fr !important;
  }
}

@media (max-width:720px) {
  .message-grid article {
    grid-template-columns: 1fr !important;
    gap: 22px !important;
    padding: 22px !important;
  }

  .message-photo {
    width: min(320px,100%) !important;
    max-width: none !important;
    aspect-ratio: 4 / 3 !important;
    margin: 0 auto !important;
    border-radius: 18px !important;
  }
}

@media (max-width:430px) {
  .message-photo {
    width: min(290px,100%) !important;
  }
}

@media (min-width:721px) {
  .message-grid article {
    display: block !important;
    min-height: 0 !important;
    padding: 26px !important;
  }

  .message-photo {
    max-width: none !important;
    height: auto !important;
    aspect-ratio: auto !important;
    overflow: hidden;
    border-radius: 18px !important;
    background: #fff;
  }

  .message-photo img {
    display: block !important;
    object-position: center !important;
  }

  .message-grid article > div:last-child {
    padding: 0 4px 6px;
  }
}

@media (min-width:721px) and (max-width:980px) {
  .message-photo {
    width: 100% !important;
  }
}

@media (min-width:721px) {
  .message-photo {
    width: 80% !important;
    margin: 0 auto 26px !important;
  }

  .message-photo img {
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
  }
}

.event-info-section {
  background: #fff;
}

.event-info-card {
  width: min(980px,100%);
  margin: 0 auto;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 30px;
  background: linear-gradient(
 145deg,rgba(248,255,251,.95),rgba(232,248,241,.68)
 );
}

.event-info-heading {
  padding: 36px 36px 6px;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 12px;
  text-align: center;
}

.event-edition {
  color: var(--m5);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .05em;
}

.event-info-heading h3 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(24px,3vw,34px);
  font-weight: 900;
}

.event-info-date {
  padding: 12px 28px 34px;
  text-align: center;
}

.event-year {
  display: block;
  margin-bottom: 3px;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
}

.event-date-range {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(18px,4vw,48px);
}

.event-date-item {
  display: flex;
  align-items: baseline;
  gap: 9px;
}

.event-date-item strong {
  font-family: "Montserrat",sans-serif;
  font-size: clamp(52px,7.2vw,86px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.045em;
}

.event-date-item span {
  color: var(--m6);
  font-family: "Montserrat",sans-serif;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
}

.event-date-range > i {
  width: 44px;
  height: 1px;
  display: block;
  background: var(--m3);
}

.event-info-grid {
  display: grid;
  grid-template-columns: 1fr 1.35fr 1fr;
  border-top: 1px solid var(--line);
  background: rgba(255,255,255,.72);
}

.event-info-item {
  min-height: 150px;
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.event-info-item + .event-info-item {
  border-left: 1px solid var(--line);
}

.event-info-item small {
  margin-bottom: 9px;
  color: var(--m5);
  font-family: "Montserrat",sans-serif;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .17em;
}

.event-info-item strong {
  color: var(--ink);
  font-size: clamp(18px,2.2vw,27px);
  font-weight: 900;
  line-height: 1.45;
}

.event-info-item:first-child strong {
  font-family: "Montserrat",sans-serif;
  letter-spacing: -.02em;
}

.event-info-item:first-child strong span {
  margin: 0 6px;
  color: var(--m3);
  font-weight: 500;
}

.event-info-item p {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 400;
}

@media (max-width:720px) {
  .event-info-card {
    border-radius: 24px;
  }

  .event-info-heading {
    padding: 28px 18px 4px;
  }

  .event-edition {
    font-size: 11px;
  }

  .event-info-heading h3 {
    font-size: 24px;
  }

  .event-info-date {
    padding: 10px 14px 28px;
  }

  .event-date-range {
    gap: 14px;
  }

  .event-date-item {
    gap: 6px;
  }

  .event-date-item strong {
    font-size: clamp(40px,11.5vw,56px);
  }

  .event-date-item span {
    font-size: 9px;
  }

  .event-date-range > i {
    width: 20px;
  }

  .event-info-grid {
    grid-template-columns: 1fr;
  }

  .event-info-item {
    min-height: 0;
    padding: 22px 18px;
  }

  .event-info-item + .event-info-item {
    border-left: 0;
    border-top: 1px solid var(--line);
  }

  .event-info-item strong {
    font-size: 20px;
  }

  .event-info-item p {
    font-size: 10px;
  }
}

@media (max-width:430px) {
  .event-info-heading {
    display: block;
  }

  .event-edition {
    display: block;
    margin-bottom: 4px;
  }

  .event-date-range {
    gap: 9px;
  }

  .event-date-item {
    display: block;
  }

  .event-date-item strong,.event-date-item span {
    display: block;
  }

  .event-date-item span {
    margin-top: 4px;
  }
}

@media (min-width:721px) {
  #about .two-column {
    align-items: center;
  }

  #about .section-copy {
    align-self: center;
  }

  #about .section-copy {
    transform: translateY(16px);
  }
}

.hero-slogan-official {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.hero-slogan-official strong {
  display: block;
  color: inherit;
  font-size: 1.08em;
  font-weight: 900;
  letter-spacing: .08em;
}

.hero-slogan-official span {
  display: block;
  font-size: .62em;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .02em;
}

.section.slogan .official-slogan-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.25;
}

.section.slogan .official-slogan-title strong {
  display: block;
  font-size: clamp(42px,5.4vw,72px);
  font-weight: 900;
  letter-spacing: .08em;
}

.section.slogan .official-slogan-title span {
  display: block;
  margin-top: 12px;
  font-size: clamp(19px,2vw,28px);
  font-weight: 700;
  line-height: 1.55;
  letter-spacing: -.045em;
}

.section.slogan .official-slogan-copy {
  margin: 24px auto 0;
  display: block;
  font-size: clamp(13px,1.2vw,16px);
  font-weight: 500;
  line-height: 2;
}

.section.slogan.position-slogan .official-slogan-title > strong,.section.slogan.position-slogan .official-slogan-title > span {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}

@media (max-width:720px) {
  .hero-slogan-official {
    gap: 3px;
  }

  .hero-slogan-official strong {
    font-size: 1.06em;
  }

  .hero-slogan-official span {
    width: min(92vw,430px);
    font-size: .58em;
    line-height: 1.45;
  }

  .section.slogan .official-slogan-title strong {
    font-size: clamp(38px,12vw,52px);
  }

  .section.slogan .official-slogan-title span {
    width: min(94%,500px);
    margin-top: 10px;
    font-size: clamp(16px,4.8vw,21px);
    line-height: 1.55;
  }

  .section.slogan .official-slogan-copy {
    margin-top: 20px;
  }
}

/* NEWS：右端の矢印を表示しない */
.news-list article {
  grid-template-columns: 120px minmax(0,1fr) !important;
}

.news-list article > span:last-child {
  display: none !important;
}

@media (max-width:720px) {
  .news-list article {
    grid-template-columns: 90px minmax(0,1fr) !important;
  }
}

/* SLOGAN 2026：改行制御 */
.section.slogan .official-slogan-title > span,.hero-slogan-official > span {
  white-space: nowrap;
}

.section.slogan .official-slogan-copy {
  width: min(1120px,96%);
}

.section.slogan .official-slogan-copy > span {
  display: block;
  white-space: nowrap;
}

@media (min-width:721px) {
  .section.slogan .official-slogan-title > span {
    font-size: clamp(18px,1.8vw,27px);
  }

  .section.slogan .official-slogan-copy {
    font-size: clamp(12px,1.05vw,15px);
  }
}

@media (max-width:720px) {
  .section.slogan .official-slogan-title > span {
    width: auto !important;
    max-width: none !important;
    font-size: clamp(10px,3.35vw,17px) !important;
    letter-spacing: 0 !important;
  }

  .hero-slogan-official > span {
    width: auto !important;
    max-width: none !important;
    font-size: clamp(8px,2.75vw,12px) !important;
    letter-spacing: 0 !important;
  }

  .section.slogan .official-slogan-copy {
    width: 100% !important;
    font-size: clamp(8px,2.55vw,12px) !important;
    line-height: 1.85;
  }
}

@media (max-width:390px) {
  .section.slogan .official-slogan-title > span {
    font-size: clamp(9px,3.05vw,12px) !important;
  }

  .section.slogan .official-slogan-copy {
    font-size: clamp(7.5px,2.35vw,10px) !important;
  }
}

/* 1. 余白・文字組み */
.mode-before .section-title h2 {
  line-height: 1.12;
  letter-spacing: -.035em;
}

.mode-before .section-title > p {
  margin-bottom: 7px;
  letter-spacing: .22em;
}

.mode-before .section-copy {
  max-width: 650px;
}

.mode-before .section-copy p {
  line-height: 2.08;
  letter-spacing: -.045em;
}

.mode-before .news-list article {
  align-items: center;
  padding-top: 22px;
  padding-bottom: 22px;
}

.mode-before .news-list time {
  font-family: "Montserrat",sans-serif;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: .035em;
}

.mode-before .news-list p {
  line-height: 1.75;
  letter-spacing: -.045em;
}

.mode-before .event-info-card {
  border-color: rgba(40,96,78,.10);
  box-shadow: 0 20px 55px rgba(40,96,78,.065);
}

.mode-before .guide-grid article,.mode-before .message-grid article,.mode-before .access-card {
  border-color: rgba(40,96,78,.105);
}

/* 2. 背景にごく薄い質感 */
.mode-before #about,.mode-before #guide,.mode-before #message {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.mode-before #about::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 420px;
  height: 420px;
  right: -220px;
  top: -160px;
  border: 1px solid rgba(82,163,131,.075);
  border-radius: 50%;
}

.mode-before #message::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 520px;
  height: 520px;
  left: -320px;
  bottom: -260px;
  border: 1px solid rgba(82,163,131,.06);
  border-radius: 50%;
}

.mode-before #message::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 260px;
  height: 260px;
  left: -145px;
  bottom: -125px;
  border: 1px solid rgba(82,163,131,.045);
  border-radius: 50%;
}

/* 3. PCホバー / スマホタップの手触り */
@media (hover:hover) and (pointer:fine) {
  .desktop-nav > a {
    position: relative;
  }

  .desktop-nav > a::after {
    content: "";
    position: absolute;
    left: 50%;
    right: 50%;
    bottom: -8px;
    height: 1px;
    background: currentColor;
    opacity: .55;
    transition: left .22s ease,right .22s ease,opacity .22s ease;
  }

  .desktop-nav > a:hover::after {
    left: 8%;
    right: 8%;
    opacity: .9;
  }

  .header-pamphlet-cta,.hero-pamphlet-button {
    transition: transform .22s cubic-bezier(.2,.7,.2,1),box-shadow .22s ease,filter .22s ease;
  }

  .header-pamphlet-cta:hover {
    transform: translateY(-2px);
    filter: saturate(1.04);
  }

  .hero-pamphlet-button:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 38px rgba(40,96,78,.24);
  }

  .site-footer a {
    transition: opacity .2s ease,transform .2s ease;
  }

  .site-footer a:hover {
    opacity: .82;
    transform: translateY(-1px);
  }
}

@media (max-width:1050px) {
  .mobile-menu a,.mobile-bottom-nav a,.mobile-bottom-nav button,.hero-pamphlet-button {
    -webkit-tap-highlight-color: transparent;
  }

  .mobile-menu a:active,.mobile-bottom-nav a:active,.mobile-bottom-nav button:active,.hero-pamphlet-button:active {
    transform: scale(.985);
  }
}

/* 4. 見せ場：トップ */
.mode-before .hero-editorial {
  background: radial-gradient(circle at 88% 10%,rgba(169,219,199,.45),transparent 29%),radial-gradient(circle at 8% 88%,rgba(82,163,131,.075),transparent 27%),linear-gradient(145deg,var(--m0),var(--m1));
}

.mode-before .hero-editorial::after {
  content: "";
  position: absolute;
  width: min(54vw,690px);
  aspect-ratio: 1;
  left: -20vw;
  bottom: -37vw;
  border: 1px solid rgba(60,128,104,.06);
  border-radius: 50%;
  pointer-events: none;
}

.mode-before .hero-editorial-title span {
  text-shadow: 0 10px 36px rgba(40,96,78,.055);
}

.mode-before .hero-year-line b {
  text-shadow: 0 8px 25px rgba(40,96,78,.07);
}

.mode-before .hero-pamphlet-button {
  border: 1px solid rgba(255,255,255,.2);
}

/* 4. 見せ場：スローガン */
.mode-before .section.slogan {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: radial-gradient(circle at 18% 22%,rgba(255,255,255,.08),transparent 28%),radial-gradient(circle at 88% 82%,rgba(255,255,255,.055),transparent 30%),linear-gradient(138deg,#3f866e 0%,#28604e 62%,#245745 100%);
}

.mode-before .section.slogan::before {
  content: "SLOGAN";
  position: absolute;
  z-index: -1;
  left: 50%;
  top: 50%;
  transform: translate(-50%,-52%);
  color: rgba(255,255,255,.035);
  font-family: "Montserrat",sans-serif;
  font-size: clamp(105px,20vw,265px);
  font-weight: 900;
  line-height: .8;
  letter-spacing: -.065em;
  white-space: nowrap;
  pointer-events: none;
}

.mode-before .section.slogan::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: min(64vw,760px);
  aspect-ratio: 1;
  right: -36vw;
  top: -34vw;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 50%;
  pointer-events: none;
}

.mode-before .section.slogan > p {
  letter-spacing: .28em;
  opacity: .78;
}

.mode-before .section.slogan .official-slogan-title strong {
  text-shadow: 0 12px 38px rgba(15,48,38,.16);
}

.mode-before .section.slogan .official-slogan-copy {
  opacity: .78;
}

/* スマホでは装飾をさらに薄く・軽く */
@media (max-width:720px) {
  .mode-before #about::before {
    width: 270px;
    height: 270px;
    right: -175px;
    top: -75px;
  }

  .mode-before #message::before,.mode-before #message::after {
    display: none;
  }

  .mode-before .hero-editorial::after {
    width: 360px;
    left: -250px;
    bottom: -245px;
  }

  .mode-before .section.slogan::after {
    width: 330px;
    right: -235px;
    top: -190px;
  }

  .mode-before .news-list article {
    padding-top: 18px;
    padding-bottom: 18px;
  }
}

@media (prefers-reduced-motion:reduce) {
  .header-pamphlet-cta,.hero-pamphlet-button,.desktop-nav > a::after,.site-footer a {
    transition: none !important;
  }
}

/* 開催情報：会場名からACCESSへ */
.event-info-access-link {
  color: inherit;
  text-decoration: none;
  text-underline-offset: .22em;
  text-decoration-thickness: 1px;
  transition: color .18s ease,opacity .18s ease;
}

@media (hover:hover) and (pointer:fine) {
  .event-info-access-link:hover {
    color: var(--m6);
    text-decoration: underline;
  }
}

/* HERO：電子パンフレットを見るを「ピコッ」と動かす */
@media (hover:hover) and (pointer:fine) {
  @keyframes kiyokasai-cta-pop {
    0% {
      transform: translateY(0) scale(1);
    }

    42% {
      transform: translateY(-5px) scale(1.015);
    }

    72% {
      transform: translateY(-2px) scale(.998);
    }

    100% {
      transform: translateY(-3px) scale(1);
    }
  }

  .mode-before .hero-pamphlet-button:hover {
    animation: kiyokasai-cta-pop .34s cubic-bezier(.22,.8,.25,1) both;
    box-shadow: 0 20px 40px rgba(40,96,78,.25);
  }
}

/* スマホ：背景SLOGANを必ず画面内に収める */
@media (max-width:720px) {
  .mode-before .section.slogan::before {
    left: 50%;
    transform: translate(-50%,-50%);
  }
}

/* トップの電子パンフレットボタンを一段下へ */
.mode-before .hero-pamphlet-button {
  margin-top: calc(clamp(9px,1.35vh,14px) + 16px) !important;
}

/* PCのメッセージを一段コンパクトに */
@media (min-width:721px) {
  .mode-before #message .section-title {
    margin-bottom: 26px;
  }

  .mode-before #message .section-title h2 {
    font-size: clamp(30px,3.7vw,42px);
  }

  .mode-before .message-grid {
    width: min(940px,100%) !important;
    gap: 18px;
  }

  .mode-before .message-grid article {
    padding: 20px !important;
  }

  .mode-before .message-photo {
    width: 66% !important;
    margin: 0 auto 20px !important;
  }

  .mode-before .message-grid h3 {
    margin-top: 6px;
    margin-bottom: 10px;
    font-size: 20px;
  }

  .mode-before .message-grid p {
    font-size: 13px;
    line-height: 1.9;
  }
}

/* 高さが低いPCではCTAの追加余白を少し抑える */
@media (min-width:721px) and (max-height:760px) {
  .mode-before .hero-pamphlet-button {
    margin-top: 14px !important;
  }
}

/* スマホでもボタンを少し下へ。画面を圧迫しすぎない量にする */
@media (max-width:720px) {
  .mode-before .hero-pamphlet-button {
    margin-top: 26px !important;
  }
}

/* トップ背景 KIYOKASAI：アウトラインの存在感を一段だけ上げる */
.hero-bg-word {
  -webkit-text-stroke: 1.15px rgba(40,96,78,.078);
}

/* スマホはPCより少し控えめ */
@media (max-width:720px) {
  .hero-bg-word {
    -webkit-text-stroke: 1px rgba(40,96,78,.062);
  }
}

/* v152: トップ背景 KIYOKASAI の輪郭を光が横切る */
.hero-bg-word::after {
  content: attr(data-word);
  position: absolute;
  inset: 0;
  color: transparent;
  -webkit-text-stroke: 1.4px rgba(78,190,148,.88);
  text-stroke: 1.4px rgba(78,190,148,.88);
  filter: drop-shadow(0 0 3px rgba(98,220,174,.62)) drop-shadow(0 0 9px rgba(98,220,174,.28));
  pointer-events: none;
  -webkit-mask-image: linear-gradient(
    102deg,
    transparent 0%,
    transparent 38%,
    rgba(0,0,0,.15) 43%,
    #000 49%,
    rgba(0,0,0,.35) 55%,
    transparent 62%,
    transparent 100%
  );
  mask-image: linear-gradient(
    102deg,
    transparent 0%,
    transparent 38%,
    rgba(0,0,0,.15) 43%,
    #000 49%,
    rgba(0,0,0,.35) 55%,
    transparent 62%,
    transparent 100%
  );
  -webkit-mask-size: 260% 100%;
  mask-size: 260% 100%;
  -webkit-mask-position: 135% 0;
  mask-position: 135% 0;
  animation: hero-outline-glint 6.8s cubic-bezier(.45,0,.2,1) 1.2s infinite;
  will-change: -webkit-mask-position,mask-position,opacity;
}

@keyframes hero-outline-glint {
  0%,18% {
    opacity: 0;
    -webkit-mask-position: 135% 0;
    mask-position: 135% 0;
  }
  25% {
    opacity: .82;
  }
  55% {
    opacity: .95;
  }
  68% {
    opacity: 0;
    -webkit-mask-position: -135% 0;
    mask-position: -135% 0;
  }
  100% {
    opacity: 0;
    -webkit-mask-position: -135% 0;
    mask-position: -135% 0;
  }
}

@media (max-width:720px) {
  .hero-bg-word::after {
    -webkit-text-stroke-width: 1.15px;
    text-stroke-width: 1.15px;
    filter: drop-shadow(0 0 2px rgba(98,220,174,.52)) drop-shadow(0 0 6px rgba(98,220,174,.22));
    animation-duration: 7.4s;
  }
}

@media (prefers-reduced-motion:reduce) {
  .hero-bg-word::after {
    opacity: .2;
    animation: none;
    filter: none;
    -webkit-mask-image: none;
    mask-image: none;
  }
}

/* スマホの背景 SLOGAN：見切れない範囲でぎりぎりまで拡大 */
@media (max-width:720px) {
  .mode-before .section.slogan::before {
    width: 96vw;
    max-width: 96vw;
    font-size: clamp(64px,20.8vw,116px);
    letter-spacing: -.085em;
    text-align: center;
  }
}

/* 小さいスマホも余白を数％残して収める */
@media (max-width:390px) {
  .mode-before .section.slogan::before {
    width: 94vw;
    max-width: 94vw;
    font-size: clamp(58px,20.2vw,82px);
    letter-spacing: -.09em;
  }
}

.mode-before #message .message-grid {
  width: min(980px,100%) !important;
  margin: 0 auto;
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 22px !important;
}

.mode-before #message .message-grid article {
  grid-column: 1 / -1;
  min-height: 0;
  padding: 0 !important;
  display: grid !important;
  grid-template-columns: minmax(320px,.8fr) minmax(0,1.2fr) !important;
  gap: 0 !important;
  align-items: center;
  overflow: hidden;
  border: 1px solid rgba(40,96,78,.10);
  border-radius: 28px;
  background: rgba(248,255,251,.72);
  box-shadow: 0 16px 42px rgba(40,96,78,.045);
}

/* v258: 学長の元画像（3359×5038）と同じ比率に揃え、余白なく切り抜く */
.mode-before #message .message-photo {
  width: min(276px,calc(100% - 40px)) !important;
  height: auto !important;
  min-height: 0 !important;
  margin: 24px auto !important;
  aspect-ratio: 3359 / 5038 !important;
  overflow: hidden;
  border-radius: 18px !important;
  background: #edf8f3;
}

.mode-before #message .message-photo img {
  width: 100% !important;
  height: 100% !important;
  display: block;
  object-fit: cover !important;
  object-position: center !important;
}

.mode-before #message .message-grid article > div:last-child {
  padding: clamp(30px,4vw,48px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
}

.mode-before #message .message-grid small {
  display: block;
  margin: 0 0 7px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.65;
  letter-spacing: -.045em;
}

.mode-before #message .message-grid h3 {
  margin: 0 0 17px !important;
  color: var(--ink);
  font-size: clamp(23px,2.6vw,31px) !important;
  line-height: 1.25;
  letter-spacing: .02em;
}

.mode-before #message .message-grid p {
  margin: 0;
  color: var(--muted);
  font-size: 13px !important;
  line-height: 2 !important;
  letter-spacing: -.045em;
}

/* 余白のリズムを少し整える */
.mode-before #message .section-title {
  margin-bottom: 34px !important;
}

/* smartphone */
@media (max-width:720px) {
  .mode-before #message .message-grid {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
  }

  .mode-before #message .message-grid article {
    min-height: 0;
    grid-column: auto;
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    border-radius: 22px;
  }

  .mode-before #message .message-photo {
    width: min(62%,220px) !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 20px auto 0 !important;
    aspect-ratio: 3359 / 5038 !important;
    border-radius: 16px !important;
    flex: 0 0 auto;
    align-self: center;
    position: relative;
    z-index: 1;
  }

  .mode-before #message .message-grid article > div:last-child {
    width: 100%;
    padding: 22px 20px 24px;
    flex: 0 0 auto;
    position: relative;
    z-index: 1;
  }

  .mode-before #message .message-grid small {
    margin-bottom: 5px;
    font-size: 10px;
  }

  .mode-before #message .message-grid h3 {
    margin-bottom: 12px !important;
    font-size: 21px !important;
  }

  .mode-before #message .message-grid p {
    font-size: 12px !important;
    line-height: 1.9 !important;
  }

  .mode-before #message .section-title {
    margin-bottom: 26px !important;
  }
}

/* PC */
@media (min-width:721px) {
  #news {
    scroll-margin-top: -40px;
    --menu-scroll-offset: -40px;
  }

  #about {
    scroll-margin-top: 0px;
    --menu-scroll-offset: 0px;
  }

  #date {
    scroll-margin-top: -100px;
    --menu-scroll-offset: -100px;
  }

  #slogan {
    scroll-margin-top: -20px;
    --menu-scroll-offset: -20px;
  }

  #guide {
    scroll-margin-top: -40px;
    --menu-scroll-offset: -40px;
  }

  #message {
    scroll-margin-top: -80px;
    --menu-scroll-offset: -80px;
  }

  #access {
    scroll-margin-top: -110px;
    --menu-scroll-offset: -110px;
  }

  #sponsors {
    scroll-margin-top: -100px;
    --menu-scroll-offset: -100px;
  }
}

/* スマホ・タブレット */
@media (max-width:720px) {
  #news {
    scroll-margin-top: -35px;
    --menu-scroll-offset: -35px;
  }

  #about {
    scroll-margin-top: -35px;
    --menu-scroll-offset: -35px;
  }

  #date {
    scroll-margin-top: -50px;
    --menu-scroll-offset: -50px;
  }

  #slogan {
    scroll-margin-top: 32px;
    --menu-scroll-offset: 32px;
  }

  #guide {
    scroll-margin-top: -50px;
    --menu-scroll-offset: -50px;
  }

  #message {
    scroll-margin-top: -50px;
    --menu-scroll-offset: -50px;
  }

  #access {
    scroll-margin-top: -50px;
    --menu-scroll-offset: -50px;
  }

  #sponsors {
    scroll-margin-top: -50px;
    --menu-scroll-offset: -50px;
  }
}

/* スマホヘッダー：事前ページでは電子パンフレットCTAだけ表示 */
@media(max-width:720px){
  .mode-before .site-header{
    gap:10px;
  }

  .mode-before .brand{
    min-width:0;
    flex:1 1 auto;
  }

  .mode-before .header-pamphlet-cta{
    display:flex !important;
    flex:0 0 auto;
    min-height:30px;
    padding:6px 10px;
    gap:5px;
    box-shadow:0 5px 14px rgba(40,96,78,.12);
  }

  .mode-before .header-pamphlet-cta span{
    font-size:9px;
    line-height:1;
  }

  .mode-before .header-pamphlet-cta b{
    font-size:9px;
  }
}

@media(max-width:360px){
  .mode-before .site-header{
    padding-left:10px;
    padding-right:10px;
    gap:7px;
  }

  .mode-before .brand{
    gap:6px;
  }

  .mode-before .brand-mark{
    width:27px;
    height:27px;
  }

  .mode-before .brand-text strong{
    font-size:11px;
  }

  .mode-before .header-pamphlet-cta{
    padding:6px 8px;
  }

  .mode-before .header-pamphlet-cta span{
    font-size:8px;
  }
}

/* TEST操作パネル */
details.test-switcher{
  position:fixed;
  top:calc(var(--site-header-h) + 10px);
  right:12px;
  z-index:120;
  width:auto;
  padding:0;
  display:block;
  border:1px solid var(--line);
  border-radius:15px;
  overflow:visible;
  color:var(--ink);
  background:rgba(255,255,255,.96);
  box-shadow:0 12px 32px rgba(40,96,78,.11);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  font-size:10px;
}

details.test-switcher > summary{
  min-height:36px;
  padding:0 10px;
  display:flex;
  align-items:center;
  gap:7px;
  list-style:none;
  cursor:pointer;
  user-select:none;
}

details.test-switcher > summary::-webkit-details-marker{
  display:none;
}

details.test-switcher span{
  padding:0;
}

.test-switcher-label{
  color:var(--m6);
  font-family:"Montserrat",sans-serif;
  font-size:9px;
  font-weight:800;
  letter-spacing:.12em;
}

.test-switcher-current{
  font-size:10px;
  white-space:nowrap;
}

.test-switcher-chevron{
  color:var(--muted);
  font-size:12px;
  line-height:1;
  transition:transform .18s ease;
}

details.test-switcher[open] .test-switcher-chevron{
  transform:rotate(180deg);
}

.test-switcher-panel{
  width:min(340px,calc(100vw - 24px));
  padding:6px 10px 11px;
  border-top:1px solid rgba(40,96,78,.08);
}

.test-switcher-modes{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
}

details.test-switcher .test-switcher-modes a{
  padding:8px 9px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(40,96,78,.09);
  border-radius:9px;
  color:var(--muted);
  background:#f9fdfb;
  font-size:9px;
  font-weight:800;
  text-decoration:none;
  white-space:nowrap;
}

details.test-switcher .test-switcher-modes a.active{
  border-color:transparent;
  color:#fff;
  background:var(--m6);
}

.test-switcher-divider{
  height:1px;
  margin:9px 0;
  background:var(--line);
}

.test-pamphlet-control{
  display:grid;
  gap:7px;
}

.test-pamphlet-status{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.test-pamphlet-status > span{
  color:var(--ink);
  font-size:10px;
  font-weight:800;
}

.test-pamphlet-status b{
  padding:3px 7px;
  border-radius:999px;
  font-size:8px;
  font-weight:800;
}

.test-pamphlet-status b.is-off{
  color:#7b6250;
  background:#f4eee8;
}

.test-pamphlet-status b.is-on{
  color:#24634d;
  background:#dff3e9;
}

.test-pamphlet-toggle{
  min-height:35px;
  padding:7px 10px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  border:1px solid var(--line);
  border-radius:10px;
  color:var(--ink);
  background:#fff;
  font-size:9px;
  font-weight:800;
  cursor:pointer;
}

.test-pamphlet-toggle > span{
  position:relative;
  width:28px;
  height:16px;
  flex:0 0 auto;
  border-radius:999px;
  background:#d8e4df;
  transition:background .18s ease;
}

.test-pamphlet-toggle > span::after{
  content:"";
  position:absolute;
  top:3px;
  left:3px;
  width:10px;
  height:10px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.16);
  transition:transform .18s ease;
}

.test-pamphlet-toggle.is-on > span{
  background:var(--m5);
}

.test-pamphlet-toggle.is-on > span::after{
  transform:translateX(12px);
}

.test-pamphlet-control small{
  color:var(--muted);
  font-size:8px;
  line-height:1.55;
}

.test-control-message{
  margin:8px 0 0;
  padding:7px 8px;
  border-radius:8px;
  font-size:8px;
  font-weight:700;
  line-height:1.5;
}

.test-control-message.success{
  color:#246149;
  background:#e2f5ec;
}

.test-control-message.error{
  color:#913b3b;
  background:#fbe8e8;
}

@media(max-width:720px){
  details.test-switcher{
    top:63px;
    right:7px;
    transform:none;
  }

  .test-switcher-panel{
    width:min(320px,calc(100vw - 14px));
  }
}

/* =========================================================
   INTERACTIVE MAP
========================================================= */
.festival-map-component{
  width:min(1120px,100%);
  margin:0 auto;
}

.festival-map-layout{
  display:grid;
  grid-template-columns:minmax(0,1.12fr) minmax(280px,.88fr);
  gap:20px;
  align-items:start;
}

.festival-map-sidebar{
  display:grid;
  gap:18px;
}

.festival-map-card{
  border:1px solid var(--line);
  border-radius:28px;
  background:#fff;
  box-shadow:0 14px 36px rgba(40,96,78,.05);
}

.festival-map-main-card{
  padding:clamp(12px,1.5vw,18px);
}

.festival-map-viewport{
  width:100%;
  aspect-ratio:6 / 5;
  overflow:hidden;
  border-radius:20px;
  background:#daffc6;
}

.festival-map-svg{
  display:block;
  width:100%;
  height:100%;
}

.festival-map-card-head{
  padding:20px 22px 0;
}

.festival-map-card-head p{
  margin:0;
  color:var(--m5);
  font-size:10px;
  font-weight:900;
  letter-spacing:.18em;
}

.festival-map-card-head h3{
  margin:7px 0 0;
  font-size:25px;
  line-height:1.2;
}

.festival-map-filter-card{
  padding-bottom:22px;
}

.festival-map-button-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  padding:18px 22px 0;
}

.festival-map-button{
  min-height:56px;
  padding:14px 12px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#f8fdfb;
  color:var(--ink);
  font:inherit;
  font-size:15px;
  font-weight:800;
  letter-spacing:.02em;
  cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease, color .18s ease;
}

.festival-map-button:hover{
  transform:translateY(-2px);
  box-shadow:0 10px 22px rgba(40,96,78,.10);
}

.festival-map-button.is-active{
  background:linear-gradient(135deg,#58a886,#3f8869);
  color:#fff;
  border-color:transparent;
  box-shadow:0 12px 24px rgba(58,125,95,.22);
}

.festival-map-info-card{
  padding:0 22px 22px;
}

.festival-map-info-title{
  min-height:1.2em;
}

.festival-map-info-text{
  margin:18px 0 0;
  color:var(--muted);
  font-size:14px;
  line-height:1.8;
}

.festival-map-info-note{
  display:block;
  margin-top:14px;
  color:#5b7b6d;
  font-size:12px;
  line-height:1.6;
}

.festival-map-svg .map-clickable{
  cursor:pointer;
  transition:opacity .18s ease, filter .18s ease;
}

.festival-map-svg .map-clickable:hover{
  filter:brightness(1.04);
}

.festival-map-svg .map-dim{
  opacity:.22;
}

.festival-map-svg .map-active{
  opacity:1;
  filter:drop-shadow(0 0 12px rgba(39,92,73,.28));
}

@media(max-width:720px){
  .festival-map-layout{
    grid-template-columns:1fr;
    gap:14px;
  }

  .festival-map-viewport{
    aspect-ratio:6 / 5;
  }

  .festival-map-sidebar{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:12px;
  }

  .festival-map-card{
    border-radius:22px;
  }

  .festival-map-main-card{
    padding:10px;
  }

  .festival-map-card-head{
    padding:16px 16px 0;
  }

  .festival-map-card-head h3{
    font-size:21px;
  }

  .festival-map-button-grid{
    padding:14px 16px 0;
    gap:10px;
  }

  .festival-map-button{
    min-height:52px;
    padding:12px 10px;
    font-size:13px;
    border-radius:15px;
  }

  .festival-map-info-card{
    padding:0 16px 16px;
  }

  .festival-map-info-text{
    margin-top:14px;
    font-size:12px;
    line-height:1.7;
  }

  .festival-map-info-note{
    margin-top:10px;
    font-size:10px;
  }
}

@media(max-width:440px){
  .festival-map-sidebar{
    grid-template-columns:1fr 1fr;
  }

  .festival-map-card-head h3{
    font-size:18px;
  }

  .festival-map-button-grid{
    grid-template-columns:1fr;
  }
}

/* =========================================================
   MAP mobile compact fix v68
========================================================= */
@media(max-width:720px){

  .live-section#map,
  .mode-pamphlet .pamphlet-section#map{
    padding-top:52px;
    padding-bottom:52px;
  }

  .festival-map-layout{
    gap:10px;
  }

  .festival-map-main-card{
    padding:6px;
  }

  .festival-map-viewport{
    aspect-ratio:3 / 2;
    border-radius:16px;
  }

  .festival-map-sidebar{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:9px;
  }

  .festival-map-card{
    border-radius:18px;
  }

  .festival-map-card-head{
    padding:11px 11px 0;
  }

  .festival-map-card-head p{
    font-size:7px;
    letter-spacing:.14em;
  }

  .festival-map-card-head h3{
    margin-top:3px;
    font-size:15px;
  }

  .festival-map-filter-card{
    padding-bottom:11px;
  }

  .festival-map-button-grid{
    grid-template-columns:1fr;
    gap:5px;
    padding:9px 10px 0;
  }

  .festival-map-button{
    min-height:32px;
    padding:5px 6px;
    border-radius:10px;
    font-size:10px;
    line-height:1.25;
  }

  .festival-map-button:hover{
    transform:none;
    box-shadow:none;
  }

  .festival-map-info-card{
    padding:0 11px 11px;
  }

  .festival-map-info-title{
    min-height:0;
  }

  .festival-map-info-text{
    margin-top:9px;
    font-size:10px;
    line-height:1.55;
  }

  .festival-map-info-note{
    display:none;
  }
}

/* 小さいスマホでも下段を左右2列のまま維持 */
@media(max-width:440px){
  .festival-map-sidebar{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  }

  .festival-map-button-grid{
    grid-template-columns:1fr;
  }
}

/* =========================================================
   MAP COLOR POLISH v71
   清花祭サイトの白・ミント・深緑に合わせた案内図配色
========================================================= */

.festival-map-main-card{
  background:rgba(255,255,255,.78);
  border-color:rgba(40,96,78,.08);
}

.festival-map-viewport{
  background:#eef7f2;
  box-shadow:
    inset 0 0 0 1px rgba(40,96,78,.045);
}

/* 通常状態は穏やかに。選択時だけ少し強調する */
.festival-map-svg .map-clickable{
  transition:
    opacity .2s ease,
    filter .2s ease;
}

.festival-map-svg .map-clickable:hover{
  filter:
    brightness(1.025)
    drop-shadow(0 3px 5px rgba(40,96,78,.08));
}

.festival-map-svg .map-dim{
  opacity:.24;
  filter:saturate(.72);
}

.festival-map-svg .map-active{
  opacity:1;
}

/* カテゴリごとに強調色を変える */
.festival-map-svg #mainstreet.map-active{
  filter:drop-shadow(0 0 11px rgba(227,154,152,.52));
}

.festival-map-svg #p1.map-active,
.festival-map-svg #p2.map-active,
.festival-map-svg #p3.map-active,
.festival-map-svg #p4.map-active,
.festival-map-svg #p5.map-active,
.festival-map-svg #p6.map-active,
.festival-map-svg #p7.map-active{
  filter:drop-shadow(0 0 11px rgba(140,184,207,.55));
}

.festival-map-svg #library.map-active,
.festival-map-svg #agriculture.map-active,
.festival-map-svg #gym.map-active,
.festival-map-svg #cafe.map-active,
.festival-map-svg #education.map-active,
.festival-map-svg #design.map-active,
.festival-map-svg #center.map-active,
.festival-map-svg #engineering.map-active{
  filter:drop-shadow(0 0 11px rgba(227,204,130,.58));
}

/* 右側UIもマップと同じ低彩度トーンへ */
.festival-map-filter-card,
.festival-map-info-card{
  background:
    linear-gradient(145deg,rgba(255,255,255,.96),rgba(247,252,249,.96));
}

.festival-map-button{
  border-color:rgba(40,96,78,.10);
  background:#f5faf7;
}

.festival-map-button.is-active{
  background:
    linear-gradient(135deg,#5d9f83,#3f7f67);
  box-shadow:0 10px 22px rgba(57,116,91,.17);
}

.festival-map-info-note{
  color:#6f877d;
}

/* =========================================================
   MAP CROP / SAME RATIO v73
   赤枠内（SVG background範囲）のみ表示
========================================================= */
.festival-map-viewport{
  aspect-ratio:729 / 757;
}

@media(max-width:720px){
  .festival-map-viewport{
    aspect-ratio:729 / 757;
  }
}

/* =========================================================
   MAP LAYOUT v74
   PC: same ratio, slightly smaller
   Mobile: controls/info above map + more compact
========================================================= */

/* PCだけ、マップ列を少し小さくする。比率はv73の729:757を維持 */
@media(min-width:721px){
  .festival-map-component{
    width:min(1060px,96%);
  }

  .festival-map-layout{
    grid-template-columns:minmax(0,.96fr) minmax(300px,.90fr);
    gap:20px;
  }
}

/* スマホは操作パネルを先に表示 */
@media(max-width:720px){
  .festival-map-sidebar{
    order:1;
  }

  .festival-map-main-card{
    order:2;
  }

  /* 操作カード全体をさらに低く */
  .festival-map-sidebar{
    gap:7px;
  }

  .festival-map-card-head{
    padding:8px 10px 0;
  }

  .festival-map-card-head p{
    font-size:6px;
    line-height:1.1;
  }

  .festival-map-card-head h3{
    margin-top:2px;
    font-size:14px;
    line-height:1.15;
  }

  .festival-map-filter-card{
    padding-bottom:8px;
  }

  .festival-map-button-grid{
    gap:4px;
    padding:7px 9px 0;
  }

  .festival-map-button{
    min-height:28px;
    padding:4px 5px;
    border-radius:9px;
    font-size:9.5px;
    line-height:1.15;
  }

  .festival-map-info-card{
    padding:0 10px 8px;
  }

  .festival-map-info-text{
    margin-top:6px;
    font-size:9.5px;
    line-height:1.45;
  }

  .festival-map-main-card{
    margin-top:1px;
  }
}

/* =========================================================
   MAIN STREET / FOOD AREA interaction v85
========================================================= */

.festival-map-svg #mainstreetgroup{
  opacity:0;
  pointer-events:none;
  transition:opacity .26s ease;
}

.festival-map-svg #mainbackground{
  fill:#d5dbd8;
  stroke:none;
}

.festival-map-svg #left path,
.festival-map-svg #right path,
.festival-map-svg #middle{
  fill:#cde8d2;
}

.festival-map-svg #foodarea > *{
  cursor:pointer;
  transition:
    opacity .2s ease,
    filter .2s ease;
}

.festival-map-svg #foodlabels{
  opacity:0;
  transition:opacity .22s ease;
}

.festival-map-svg.is-mainstreet-overview #mainstreetgroup,
.festival-map-svg.is-food-mode #mainstreetgroup{
  opacity:1;
  pointer-events:auto;
}

.festival-map-svg.is-mainstreet-overview #foodlabels,
.festival-map-svg.is-food-mode #foodlabels{
  opacity:1;
}

/* Main Street専用表示では元の道路網と赤い帯を隠す */
.festival-map-svg.is-mainstreet-overview #road,
.festival-map-svg.is-mainstreet-overview #mainstreet,
.festival-map-svg.is-food-mode #road,
.festival-map-svg.is-food-mode #mainstreet{
  opacity:0;
  pointer-events:none;
}

.festival-map-svg.is-mainstreet-overview #parking,
.festival-map-svg.is-food-mode #parking{
  opacity:.08;
}

/* FOOD 3エリアを主役にするため展示色は少し落とす */
.festival-map-svg.is-mainstreet-overview #library,
.festival-map-svg.is-mainstreet-overview #agriculture,
.festival-map-svg.is-mainstreet-overview #gym,
.festival-map-svg.is-mainstreet-overview #cafe,
.festival-map-svg.is-mainstreet-overview #education,
.festival-map-svg.is-mainstreet-overview #design,
.festival-map-svg.is-mainstreet-overview #center,
.festival-map-svg.is-mainstreet-overview #engineering{
  opacity:.38;
}

/* FOOD選択時は非選択エリアを薄く */
.festival-map-svg.is-food-mode #foodarea > *{
  opacity:.24;
}

.festival-map-svg.is-food-mode #foodarea > *.is-food-selected{
  opacity:1;
  filter:drop-shadow(0 0 10px rgba(44,90,72,.24));
}

/* 周辺の建物を左右へ開く。transform自体はJSでSVG座標を補間する */
.festival-map-svg #building path{
  transition:
    opacity .22s ease,
    filter .22s ease;
}

.festival-map-svg.is-food-mode #building path[data-main-relevant="false"]{
  opacity:.08;
}

.festival-map-svg.is-food-mode #building path[data-main-relevant="true"]{
  opacity:1;
}

/* FOOD色 */
.festival-map-svg #food1{
  fill:#e77f77;
  stroke:#5f796c;
}

.festival-map-svg #food2{
  fill:#e5a253;
  stroke:#5f796c;
}

.festival-map-svg #food3{
  fill:#a98bc1;
  stroke:#5f796c;
}

/* 通常マップの見やすさ */
.festival-map-svg #building path{
  stroke:#758e82;
}

.festival-map-viewport{
  background:#e5e9e7;
}


/* =========================================================
   MAIN STREET OVERVIEW FIX v87
   概要表示は通常マップ + FOOD 3エリアだけ
========================================================= */

/* メインストリート概要では芝生・専用背景・左右パーツを出さない */
.festival-map-svg.is-mainstreet-overview #mainbackground,
.festival-map-svg.is-mainstreet-overview #left,
.festival-map-svg.is-mainstreet-overview #middle,
.festival-map-svg.is-mainstreet-overview #right{
  opacity:0 !important;
  pointer-events:none !important;
}

/* 通常マップ側は展示ズームと同じ見え方を維持 */
.festival-map-svg.is-mainstreet-overview #road{
  opacity:1 !important;
  pointer-events:auto !important;
}

.festival-map-svg.is-mainstreet-overview #parking{
  opacity:1 !important;
}

.festival-map-svg.is-mainstreet-overview #library,
.festival-map-svg.is-mainstreet-overview #agriculture,
.festival-map-svg.is-mainstreet-overview #gym,
.festival-map-svg.is-mainstreet-overview #cafe,
.festival-map-svg.is-mainstreet-overview #education,
.festival-map-svg.is-mainstreet-overview #design,
.festival-map-svg.is-mainstreet-overview #center,
.festival-map-svg.is-mainstreet-overview #engineering{
  opacity:1 !important;
}

/* FOODだけ通常マップの上に重ねる */
.festival-map-svg.is-mainstreet-overview #foodarea,
.festival-map-svg.is-mainstreet-overview #foodlabels{
  opacity:1 !important;
  pointer-events:auto;
}


/* =========================================================
   FOOD DETAIL TUNING v88
========================================================= */

/* FOOD詳細では不要な駐車場を完全に消す */
.festival-map-svg.is-food-mode #parking{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* FOOD詳細で最終画面に関係しない建物は薄くせず完全非表示 */
.festival-map-svg.is-food-mode #building path[data-food-visible="false"]{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

.festival-map-svg.is-food-mode #building path[data-food-visible="true"]{
  opacity:1 !important;
  visibility:visible !important;
}

/* 以前の mainRelevant の .08 指定を無効化 */
.festival-map-svg.is-food-mode #building path[data-main-relevant="false"]{
  opacity:0;
}


/* =========================================================
   FOOD FRONT LAYER + SLIDE SIDE FIX v89
========================================================= */

/* FOOD 1/2/3 is physically the last SVG layer, so it always draws above buildings. */
.festival-map-svg #foodoverlay{
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease;
}

.festival-map-svg.is-mainstreet-overview #foodoverlay,
.festival-map-svg.is-food-mode #foodoverlay{
  opacity:1;
  pointer-events:auto;
}

.festival-map-svg.is-mainstreet-overview #foodarea,
.festival-map-svg.is-food-mode #foodarea{
  pointer-events:auto;
}

.festival-map-svg #foodlabels{
  pointer-events:none !important;
}


/* =========================================================
   MAP BACK NAV / FOOD DETAIL v90
========================================================= */

.festival-map-viewport{
  position:relative;
}

/* FOOD詳細ではFOOD 1/2/3のブロックそのものを非表示 */
.festival-map-svg.is-food-mode #foodoverlay{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* map hierarchy back button */
.festival-map-back{
  position:absolute;
  top:12px;
  left:12px;
  z-index:12;
  display:flex;
  align-items:center;
  gap:7px;
  min-height:36px;
  padding:7px 12px;
  border:1px solid rgba(38,96,77,.13);
  border-radius:999px;
  background:rgba(255,255,255,.92);
  color:#315f4e;
  box-shadow:0 7px 22px rgba(42,89,70,.12);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  font:inherit;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-4px);
  transition:
    opacity .2s ease,
    transform .2s ease,
    visibility .2s ease,
    background .2s ease;
}

.festival-map-back.is-visible{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateY(0);
}

.festival-map-back:hover{
  background:#fff;
}

.festival-map-back > span:first-child{
  font-size:16px;
  line-height:1;
}

@media (max-width:720px){
  .festival-map-back{
    top:9px;
    left:9px;
    min-height:31px;
    padding:5px 9px;
    gap:5px;
    font-size:10px;
  }

  .festival-map-back > span:first-child{
    font-size:14px;
  }
}


/* =========================================================
   MAP FOCUS STATES v91
========================================================= */

/* 全体表示ではメインストリートの赤いブロックを通常表示 */
.festival-map-svg:not(.is-mainstreet-overview):not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #mainstreet{
  opacity:1 !important;
  visibility:visible !important;
}

/* 駐車場表示：駐車場以外を一段薄く */
.festival-map-svg.is-parking-overview #building path{
  opacity:.22 !important;
}

.festival-map-svg.is-parking-overview #library,
.festival-map-svg.is-parking-overview #agriculture,
.festival-map-svg.is-parking-overview #gym,
.festival-map-svg.is-parking-overview #cafe,
.festival-map-svg.is-parking-overview #education,
.festival-map-svg.is-parking-overview #design,
.festival-map-svg.is-parking-overview #center,
.festival-map-svg.is-parking-overview #engineering{
  opacity:.24 !important;
}

.festival-map-svg.is-parking-overview #mainstreet{
  opacity:.18 !important;
}

.festival-map-svg.is-parking-overview #parking{
  opacity:1 !important;
}

/* 展示表示：黄色の展示を主役にし、白建物・駐車場・メインストリートを薄く */
.festival-map-svg.is-exhibition-overview #building path{
  opacity:.22 !important;
}

.festival-map-svg.is-exhibition-overview #library,
.festival-map-svg.is-exhibition-overview #agriculture,
.festival-map-svg.is-exhibition-overview #gym,
.festival-map-svg.is-exhibition-overview #cafe,
.festival-map-svg.is-exhibition-overview #education,
.festival-map-svg.is-exhibition-overview #design,
.festival-map-svg.is-exhibition-overview #center,
.festival-map-svg.is-exhibition-overview #engineering{
  opacity:1 !important;
}

.festival-map-svg.is-exhibition-overview #parking{
  opacity:.16 !important;
}

.festival-map-svg.is-exhibition-overview #mainstreet{
  opacity:.16 !important;
}

/* メインストリート表示：FOODを主役にして展示・駐車場を薄く */
.festival-map-svg.is-mainstreet-overview #parking{
  opacity:.14 !important;
}

.festival-map-svg.is-mainstreet-overview #library,
.festival-map-svg.is-mainstreet-overview #agriculture,
.festival-map-svg.is-mainstreet-overview #gym,
.festival-map-svg.is-mainstreet-overview #cafe,
.festival-map-svg.is-mainstreet-overview #education,
.festival-map-svg.is-mainstreet-overview #design,
.festival-map-svg.is-mainstreet-overview #center,
.festival-map-svg.is-mainstreet-overview #engineering{
  opacity:.22 !important;
}

/* 白い通常建物も少しだけ後ろへ。ただし完全には消さない */
.festival-map-svg.is-mainstreet-overview #building path:not(#library):not(#agriculture):not(#gym):not(#cafe):not(#education):not(#design):not(#center):not(#engineering){
  opacity:.42 !important;
}

/* FOODブロックは常に前面・高コントラスト */
.festival-map-svg.is-mainstreet-overview #foodoverlay{
  opacity:1 !important;
}

.festival-map-svg.is-mainstreet-overview #foodarea > *{
  opacity:1 !important;
}


/* =========================================================
   MAP FOCUS / PARKING STATUS v92
========================================================= */

/* メインストリート概要：白建物も展示・駐車場と同じく後景へ */
.festival-map-svg.is-mainstreet-overview #building path{
  opacity:.20 !important;
}

/* FOOD 1/2/3 は建物より前で鮮明に維持 */
.festival-map-svg.is-mainstreet-overview #foodoverlay,
.festival-map-svg.is-mainstreet-overview #foodarea > *,
.festival-map-svg.is-mainstreet-overview #foodlabels{
  opacity:1 !important;
}

/*
 * 展示表示：
 * #building path の方が単独IDよりCSS詳細度が高かったため、
 * #building + 各展示ID の2ID指定で黄色を必ず100%表示。
 */
.festival-map-svg.is-exhibition-overview #building #library,
.festival-map-svg.is-exhibition-overview #building #agriculture,
.festival-map-svg.is-exhibition-overview #building #gym,
.festival-map-svg.is-exhibition-overview #building #cafe,
.festival-map-svg.is-exhibition-overview #building #education,
.festival-map-svg.is-exhibition-overview #building #design,
.festival-map-svg.is-exhibition-overview #building #center,
.festival-map-svg.is-exhibition-overview #building #engineering{
  opacity:1 !important;
  visibility:visible !important;
  filter:none !important;
}

/* 駐車場混雑表示 */
.festival-map-svg #parking-status-overlay{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .22s ease, visibility .22s ease;
}

.festival-map-svg.is-parking-overview #parking-status-overlay{
  opacity:1;
  visibility:visible;
}

.festival-map-svg .parking-status-pill{
  pointer-events:none;
  filter:drop-shadow(0 3px 5px rgba(28,65,51,.18));
}

.festival-map-svg .parking-status-bg{
  fill:rgba(255,255,255,.96);
  stroke:rgba(61,103,86,.22);
  stroke-width:1;
}

.festival-map-svg .parking-status-name{
  fill:#315f4e;
  font-size:11px;
  font-weight:800;
  font-family:"Montserrat","Zen Kaku Gothic New",sans-serif;
}

.festival-map-svg .parking-status-chip{
  stroke:none;
}

.festival-map-svg .parking-status-value{
  fill:#fff;
  font-size:10px;
  font-weight:900;
  font-family:"Zen Kaku Gothic New",sans-serif;
}

/* 将来の 空 / 混 / 満 切替用 */
.festival-map-svg .parking-status-pill[data-status="empty"] .parking-status-chip{
  fill:#4f9f78;
}

.festival-map-svg .parking-status-pill[data-status="mixed"] .parking-status-chip{
  fill:#d59b42;
}

.festival-map-svg .parking-status-pill[data-status="full"] .parking-status-chip{
  fill:#cf6562;
}


/* =========================================================
   MAIN STREET RESTORE / DIM CONSISTENCY v93
========================================================= */

/* 全体では赤いメインストリートを確実に通常表示 */
.festival-map-svg:not(.is-mainstreet-overview):not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #mainstreet{
  opacity:1 !important;
  visibility:visible !important;
  pointer-events:auto !important;
}

/* メインストリート概要の白建物は駐車場・展示と同じ薄さ */
.festival-map-svg.is-mainstreet-overview #building path{
  opacity:.22 !important;
}

/* メインストリート概要では赤い帯自体は隠し、FOOD 1/2/3を主役にする */
.festival-map-svg.is-mainstreet-overview #mainstreet,
.festival-map-svg.is-food-mode #mainstreet{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* 駐車場・展示では赤い帯を背景情報として薄く残す */
.festival-map-svg.is-parking-overview #mainstreet,
.festival-map-svg.is-exhibition-overview #mainstreet{
  visibility:visible !important;
}


/* =========================================================
   FACILITY LABELS / PARKING LABEL SIZE v94
========================================================= */

/* P1 空 etc. を一回り大きく */
.festival-map-svg .parking-status-name{
  font-size:13px !important;
  font-weight:900 !important;
  letter-spacing:.01em;
}

.festival-map-svg .parking-status-value{
  font-size:12px !important;
  font-weight:900 !important;
}

.festival-map-svg .parking-status-bg{
  stroke-width:1.2;
}

/* 施設名は「施設」表示の時だけ出す */
.festival-map-svg #facility-label-overlay{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .22s ease, visibility .22s ease;
}

.festival-map-svg.is-exhibition-overview #facility-label-overlay{
  opacity:1;
  visibility:visible;
}

.festival-map-svg .facility-name-pill{
  pointer-events:none;
  filter:drop-shadow(0 3px 7px rgba(29,70,54,.16));
}

.festival-map-svg .facility-name-bg{
  fill:rgba(255,255,255,.96);
  stroke:rgba(54,100,82,.23);
  stroke-width:1;
}

.festival-map-svg .facility-name-text{
  fill:#315f4e;
  font-size:9.5px;
  font-weight:900;
  font-family:"Zen Kaku Gothic New","Yu Gothic",sans-serif;
}


/* =========================================================
   MAP INTERACTION POLISH v95
========================================================= */

/* FOOD詳細では、黄色だった施設建物も通常の白建物として表示 */
.festival-map-svg.is-food-mode #building #library,
.festival-map-svg.is-food-mode #building #agriculture,
.festival-map-svg.is-food-mode #building #gym,
.festival-map-svg.is-food-mode #building #cafe,
.festival-map-svg.is-food-mode #building #education,
.festival-map-svg.is-food-mode #building #design,
.festival-map-svg.is-food-mode #building #center,
.festival-map-svg.is-food-mode #building #engineering{
  fill:#fffefa !important;
}

/* 全体表示だけメインストリート名称を表示 */
.festival-map-svg #mainstreet-label-overlay{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .2s ease, visibility .2s ease;
}

.festival-map-svg:not(.is-mainstreet-overview):not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #mainstreet-label-overlay{
  opacity:1;
  visibility:visible;
}

.festival-map-svg .mainstreet-label-bg{
  fill:rgba(255,255,255,.94);
  stroke:rgba(112,66,62,.18);
  stroke-width:1;
}

.festival-map-svg .mainstreet-label-text{
  fill:#874d49;
  font-size:10px;
  font-weight:900;
  font-family:"Zen Kaku Gothic New","Yu Gothic",sans-serif;
  letter-spacing:.02em;
}


/* =========================================================
   MAIN STREET SCROLL MODE v96
========================================================= */

/* FOOD 1/2/3 is retired. */
.festival-map-svg #foodoverlay,
.festival-map-svg #foodarea,
.festival-map-svg #foodlabels{
  display:none !important;
}

/* Internal is-food-mode now means the new Main Street detail screen. */
.festival-map-svg.is-food-mode #mainstreetgroup{
  opacity:1 !important;
  visibility:visible !important;
  pointer-events:auto !important;
}

.festival-map-svg.is-food-mode #mainbackground{
  opacity:1 !important;
  visibility:visible !important;
}

.festival-map-svg.is-food-mode #left,
.festival-map-svg.is-food-mode #middle,
.festival-map-svg.is-food-mode #right{
  opacity:1 !important;
  visibility:visible !important;
}

.festival-map-svg.is-food-mode #road,
.festival-map-svg.is-food-mode #mainstreet,
.festival-map-svg.is-food-mode #parking,
.festival-map-svg.is-food-mode #parking-status-overlay,
.festival-map-svg.is-food-mode #facility-label-overlay,
.festival-map-svg.is-food-mode #mainstreet-label-overlay{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* Main Street detail: all adjacent facility buildings become white. */
.festival-map-svg.is-food-mode #building path[data-food-visible="true"]{
  opacity:1 !important;
  visibility:visible !important;
  fill:#fffefa !important;
}

.festival-map-svg.is-food-mode #building path[data-food-visible="false"]{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

.festival-map-svg.is-food-mode #building #library,
.festival-map-svg.is-food-mode #building #agriculture,
.festival-map-svg.is-food-mode #building #gym,
.festival-map-svg.is-food-mode #building #cafe,
.festival-map-svg.is-food-mode #building #education,
.festival-map-svg.is-food-mode #building #design,
.festival-map-svg.is-food-mode #building #center,
.festival-map-svg.is-food-mode #building #engineering{
  fill:#fffefa !important;
}

/* Vertical Main Street name in ALL view. */
.festival-map-svg .mainstreet-label-bg{
  fill:rgba(255,255,255,.93) !important;
  stroke:rgba(112,66,62,.16) !important;
  stroke-width:1 !important;
}

.festival-map-svg .mainstreet-label-text{
  fill:#874d49 !important;
  font-size:9.2px !important;
  font-weight:900 !important;
  font-family:"Zen Kaku Gothic New","Yu Gothic",sans-serif !important;
  dominant-baseline:middle;
}

/* Vertical pan interaction inside the map. */
.festival-map-viewport.is-mainstreet-scroll{
  touch-action:none;
  cursor:grab;
  user-select:none;
  -webkit-user-select:none;
}

.festival-map-viewport.is-mainstreet-scroll.is-dragging{
  cursor:grabbing;
}


/* =========================================================
   MAP DISABLED POINTER STATE v98
========================================================= */

/*
 * 現在のカテゴリ以外で薄く表示している項目は、
 * 見た目だけでなく実際にも操作不可にする。
 */
.festival-map-svg .map-disabled{
  pointer-events:none !important;
  cursor:default !important;
}

.festival-map-svg .map-dim.map-disabled{
  cursor:default !important;
}


/* =========================================================
   MAP BACKGROUND BEHAVIOR v99
========================================================= */

/*
 * 薄く表示している別カテゴリは「操作不可」だが、
 * pointer-events:none にはしない。
 * これにより、その要素を押した時に背面の #background へ
 * クリックが抜けて全体へ戻ってしまうのを防ぐ。
 */
.festival-map-svg .map-disabled{
  pointer-events:auto !important;
  cursor:default !important;
}

.festival-map-svg .map-dim.map-disabled{
  cursor:default !important;
}

/*
 * メインストリート詳細中の施設建物は完全に背景扱い。
 * 見えていてもクリック対象・ポインター対象にしない。
 */
.festival-map-svg.is-food-mode #building path{
  cursor:default !important;
  pointer-events:none !important;
}

/*
 * 駐車場・施設表示の「地面」だけは戻る操作ができる。
 * カーソルはリンク風にせず通常のままにする。
 */
.festival-map-svg.is-parking-overview #background,
.festival-map-svg.is-exhibition-overview #background{
  cursor:default !important;
  pointer-events:auto !important;
}


/* =========================================================
   FACILITY ZOOM / PARKING LABEL v100
========================================================= */

/* P1 空 をさらに大きくして、縮小表示でも読めるサイズにする */
.festival-map-svg .parking-status-name{
  font-size:16px !important;
  font-weight:900 !important;
}

.festival-map-svg .parking-status-value{
  font-size:15px !important;
  font-weight:900 !important;
}

.festival-map-svg .parking-status-bg{
  stroke-width:1.3 !important;
}

/*
 * 駐車場・施設表示の薄い別カテゴリは背景扱い。
 * クリック可能そうなカーソルにはしない。
 */
.festival-map-svg.is-parking-overview .map-disabled,
.festival-map-svg.is-exhibition-overview .map-disabled{
  cursor:default !important;
}


/* =========================================================
   FACILITY DETAIL / ALL PARKING v101
========================================================= */

/* 全体表示の駐車場は少しだけ背景寄りにする */
.festival-map-svg:not(.is-mainstreet-overview):not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #parking{
  opacity:.8 !important;
}

/* 個別施設ズーム：選択施設だけ黄色、それ以外の施設は白い背景扱い */
.festival-map-svg.is-exhibition-overview.is-facility-detail #building .is-facility-selected{
  fill:#e2ba4f !important;
  opacity:1 !important;
  visibility:visible !important;
  filter:none !important;
}

.festival-map-svg.is-exhibition-overview.is-facility-detail #building .is-facility-background{
  fill:#fffefa !important;
  opacity:.22 !important;
  visibility:visible !important;
  cursor:default !important;
}

/* 個別ズームでは他施設の名称を消し、選択施設名だけ表示 */
.festival-map-svg.is-exhibition-overview.is-facility-detail #facility-label-overlay .facility-name-pill{
  opacity:0 !important;
  visibility:hidden !important;
}

.festival-map-svg.is-exhibition-overview.is-facility-detail #facility-label-overlay .facility-name-pill.is-facility-selected-label{
  opacity:1 !important;
  visibility:visible !important;
}


/* =========================================================
   FACILITY DETAIL HIERARCHY v102
========================================================= */

/* 全体表示の駐車場は60% */
.festival-map-svg:not(.is-mainstreet-overview):not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #parking{
  opacity:.6 !important;
}

/* 個別施設ズーム中の他施設は背景として見せる */
.festival-map-svg.is-exhibition-overview.is-facility-detail #building .is-facility-background{
  cursor:default !important;
  pointer-events:auto !important;
}


/* =========================================================
   FACILITY LABEL SLIDE / WHITE BUILDING BACKGROUND v103
========================================================= */

/*
 * ID付きの8施設以外の白建物は、どの表示状態でも常に背景。
 * クリック・ホバーの対象にしない。
 */
.festival-map-svg #building path:not(#library):not(#agriculture):not(#gym):not(#cafe):not(#education):not(#design):not(#center):not(#engineering){
  cursor:default !important;
  pointer-events:none !important;
}

/*
 * 施設名は通常位置 ↔ 個別ズーム時の下側位置を
 * 同じtransitionで往復させる。
 */
.festival-map-svg .facility-name-pill{
  transform-box:view-box;
  transform-origin:center;
  transition:
    transform .36s cubic-bezier(.22,.61,.36,1),
    opacity .22s ease,
    visibility .22s ease !important;
  will-change:transform;
}

/* 個別ズームで消える他施設名も少しだけフェードさせる */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#facility-label-overlay .facility-name-pill{
  transition:
    transform .36s cubic-bezier(.22,.61,.36,1),
    opacity .20s ease,
    visibility .20s ease !important;
}

/* 選択施設名はスライド中も最前面に維持 */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#facility-label-overlay .facility-name-pill.is-facility-selected-label{
  opacity:1 !important;
  visibility:visible !important;
}


/* =========================================================
   MAP VISUAL FIX v104
========================================================= */

/* 駐車場表示のP1 空〜P7 空を必ず表示 */
.festival-map-svg.is-parking-overview #parking-status-overlay{
  display:inline !important;
  opacity:1 !important;
  visibility:visible !important;
}

/*
 * 施設個別ズーム時の他施設は、
 * 通常の白建物と同じ色・線色に統一。
 */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#building .is-facility-background{
  fill:#fffefa !important;
  stroke:#758e82 !important;
  opacity:.22 !important;
  filter:none !important;
}


/* =========================================================
   FACILITY INTERACTION / PERFORMANCE v105
========================================================= */

/*
 * 施設ズーム時の「他施設」は、薄い白建物と完全に同じ見た目。
 * 黄色施設としての色や強調は一切残さない。
 */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#building path.is-facility-background{
  fill:#fffefa !important;
  stroke:#758e82 !important;
  opacity:.22 !important;
  visibility:visible !important;
  filter:none !important;
  cursor:default !important;
}

/* 施設名そのものも施設一覧のクリック対象にする */
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#facility-label-overlay .facility-name-pill{
  pointer-events:auto !important;
  cursor:pointer !important;
}

/* 個別ズーム中は選択施設名だけ残るが、再クリックは見た目上強調しない */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#facility-label-overlay .facility-name-pill{
  cursor:default !important;
}

/*
 * SVG filter/drop-shadowはズーム中の再描画コストが高いので、
 * 施設表示では使わず、白背景+strokeだけで立体感を出す。
 */
.festival-map-svg.is-exhibition-overview .facility-name-pill,
.festival-map-svg.is-exhibition-overview .map-active,
.festival-map-svg.is-exhibition-overview .map-dim{
  filter:none !important;
}

/* 全ラベルをGPUレイヤー化しない。動かす選択ラベルだけ対象。 */
.festival-map-svg .facility-name-pill{
  filter:none !important;
  will-change:auto !important;
}

.festival-map-svg.is-exhibition-overview.is-facility-detail
#facility-label-overlay .facility-name-pill.is-facility-selected-label{
  will-change:transform !important;
}

/* 施設一覧での色の切替はopacity中心にして軽量化 */
.festival-map-svg.is-exhibition-overview #building path{
  transition:opacity .18s ease !important;
}


/* =========================================================
   FACILITY BACKGROUND EXACT MATCH v106
========================================================= */

/*
 * 施設個別ズーム中の「選択していない施設」は、
 * 通常の薄い白建物と完全に同じ状態に固定する。
 *
 * 過去の #building #library 等の opacity:1 !important より
 * 詳細度を高くして確実に上書きする。
 */
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #library.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #agriculture.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #gym.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #cafe.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #education.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #design.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #center.is-facility-background,
.festival-map-svg.is-exhibition-overview.is-facility-detail #building #engineering.is-facility-background{
  fill:#fffefa !important;
  stroke:#758e82 !important;
  opacity:.22 !important;
  visibility:visible !important;
  filter:none !important;
  cursor:default !important;
}


/* =========================================================
   FACILITY DETAIL FLASH FIX v107
========================================================= */

/*
 * 個別施設ズーム開始時、
 * 他施設は「白100% → 白22%」とフェードさせず
 * 最終的な背景状態へ即時切替する。
 * 施設名のスライドは別要素なのでそのままアニメーションする。
 */
.festival-map-svg.is-exhibition-overview.is-facility-detail
#building path.is-facility-background{
  transition:none !important;
  fill:#fffefa !important;
  stroke:#758e82 !important;
  opacity:.22 !important;
  filter:none !important;
}


/* =========================================================
   PARKING WIDE VIEW v108
========================================================= */

/* map(7) に追加された public 道路はサイト上では表示しない */
.festival-map-svg #public{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}


/* =========================================================
   MAP(7) / PUBLIC ROAD v109
========================================================= */

/* public road is hidden in every normal state */
.festival-map-svg #public{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* public road appears only while Parking is selected */
.festival-map-svg.is-parking-overview #public{
  display:inline !important;
  visibility:visible !important;
  opacity:1 !important;
  pointer-events:none !important;
}


/* =========================================================
   MAP(7) COORDINATE / PARKING SIZE v110
========================================================= */

.festival-map-svg .parking-status-name{
  font-size:19px !important;
  font-weight:900 !important;
}

.festival-map-svg .parking-status-value{
  font-size:18px !important;
  font-weight:900 !important;
}

.festival-map-svg .parking-status-bg{
  stroke-width:1.4 !important;
}


/* =========================================================
   MAP LIGHTWEIGHT PULSE v111
========================================================= */

/*
 * public：
 * 全体では少し控えめに表示。
 * 駐車場では100%表示。
 * メインストリート・施設では従来どおり非表示。
 */
.festival-map-svg:not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #public{
  display:inline !important;
  visibility:visible !important;
  opacity:.55 !important;
  pointer-events:none !important;
}

.festival-map-svg.is-parking-overview #public{
  display:inline !important;
  visibility:visible !important;
  opacity:1 !important;
  pointer-events:none !important;
}

.festival-map-svg.is-food-mode #public,
.festival-map-svg.is-exhibition-overview #public{
  display:none !important;
  visibility:hidden !important;
}

/*
 * 施設一覧：
 * 黄色施設の塗りは動かさず、外周線だけをゆっくりパルス。
 * drop-shadow/filterは使わないので比較的軽量。
 */
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #library,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #agriculture,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #gym,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #cafe,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #education,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #design,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #center,
.festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
#building #engineering{
  animation:festival-facility-outline-pulse 2.35s ease-in-out infinite !important;
  vector-effect:non-scaling-stroke;
}

/* 駐車場：各青エリアの外周だけパルス */
.festival-map-svg.is-parking-overview #parking > path{
  animation:festival-parking-outline-pulse 2.35s ease-in-out infinite !important;
  vector-effect:non-scaling-stroke;
}

@keyframes festival-facility-outline-pulse{
  0%,100%{
    stroke:#758e82;
    stroke-width:1.15px;
    stroke-opacity:.62;
  }
  50%{
    stroke:#b8871e;
    stroke-width:3px;
    stroke-opacity:1;
  }
}

@keyframes festival-parking-outline-pulse{
  0%,100%{
    stroke:#758e82;
    stroke-width:1.15px;
    stroke-opacity:.62;
  }
  50%{
    stroke:#3f86aa;
    stroke-width:3px;
    stroke-opacity:1;
  }
}

/* 動きを減らすOS設定では点滅を停止 */
@media (prefers-reduced-motion: reduce){
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #library,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #agriculture,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #gym,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #cafe,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #education,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #design,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #center,
  .festival-map-svg.is-exhibition-overview:not(.is-facility-detail)
  #building #engineering,
  .festival-map-svg.is-parking-overview #parking > path{
    animation:none !important;
  }
}


/* =========================================================
   ALL VIEW HIGHLIGHT v112
========================================================= */

/* 全体表示でも public は100% */
.festival-map-svg:not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #public{
  opacity:1 !important;
}

/*
 * 全体表示ではメインストリートの赤いブロックだけを強調。
 * filter / blur は使わず、塗りと線だけをゆっくりパルスさせる。
 */
.festival-map-svg:not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #mainstreet{
  animation:festival-mainstreet-pulse 2.15s ease-in-out infinite !important;
  vector-effect:non-scaling-stroke;
}

@keyframes festival-mainstreet-pulse{
  0%,100%{
    fill:#e58c88;
    fill-opacity:.86;
    stroke:#8f6863;
    stroke-width:1.2px;
    stroke-opacity:.72;
  }

  50%{
    fill:#ef7772;
    fill-opacity:1;
    stroke:#b6534d;
    stroke-width:3.2px;
    stroke-opacity:1;
  }
}

/* 他画面ではメインストリート点灯を停止 */
.festival-map-svg.is-food-mode #mainstreet,
.festival-map-svg.is-parking-overview #mainstreet,
.festival-map-svg.is-exhibition-overview #mainstreet{
  animation:none !important;
}

/* OS側で動きを減らす設定なら自動停止 */
@media (prefers-reduced-motion: reduce){
  .festival-map-svg:not(.is-food-mode):not(.is-parking-overview):not(.is-exhibition-overview) #mainstreet{
    animation:none !important;
    fill:#e58c88 !important;
    fill-opacity:1 !important;
  }
}


/* =========================================================
   MAIN STREET GRAY BUILDINGS v113
========================================================= */

.festival-map-svg.is-food-mode #building path,
.festival-map-svg.is-food-mode #building path[data-food-visible="true"],
.festival-map-svg.is-food-mode #building path[data-food-visible="false"]{
  display:inline !important;
  visibility:visible !important;
  opacity:1 !important;
  fill:#c9cecb !important;
  stroke:#81968c !important;
  filter:none !important;
  pointer-events:none !important;
  cursor:default !important;
}

.festival-map-svg.is-food-mode #building #library,
.festival-map-svg.is-food-mode #building #agriculture,
.festival-map-svg.is-food-mode #building #gym,
.festival-map-svg.is-food-mode #building #cafe,
.festival-map-svg.is-food-mode #building #education,
.festival-map-svg.is-food-mode #building #design,
.festival-map-svg.is-food-mode #building #center,
.festival-map-svg.is-food-mode #building #engineering{
  display:inline !important;
  visibility:visible !important;
  opacity:1 !important;
  fill:#c9cecb !important;
  stroke:#81968c !important;
  filter:none !important;
  pointer-events:none !important;
}


/* =========================================================
   HERO AMBIENT MOTION v164
   文字を使わず、背景の円・グリッド・細線だけを静かに動かす
========================================================= */
.mode-before .hero-orbit-a{
  animation:hero-orbit-a 14s cubic-bezier(.45,0,.25,1) infinite alternate;
  transform-origin:center;
  will-change:transform;
}

.mode-before .hero-orbit-b{
  animation:hero-orbit-b 18s cubic-bezier(.45,0,.25,1) infinite alternate;
  transform-origin:center;
  will-change:transform;
}

.mode-before .hero-editorial::before{
  animation:hero-grid-breathe 9s ease-in-out infinite;
}

.mode-before .hero-editorial::after{
  animation:hero-corner-breathe 17s ease-in-out infinite alternate;
  transform-origin:center;
  will-change:transform;
}

@keyframes hero-orbit-a{
  0%{transform:translate3d(0,0,0) scale(1)}
  48%{transform:translate3d(-8px,12px,0) scale(1.035)}
  100%{transform:translate3d(12px,5px,0) scale(.985)}
}

@keyframes hero-orbit-b{
  0%{transform:translate3d(0,0,0) scale(1)}
  52%{transform:translate3d(12px,-9px,0) scale(.97)}
  100%{transform:translate3d(-7px,-15px,0) scale(1.04)}
}

@keyframes hero-grid-breathe{
  0%,100%{opacity:.48}
  50%{opacity:.9}
}

@keyframes hero-corner-breathe{
  0%{transform:translate3d(-8px,8px,0) scale(.97);opacity:.7}
  100%{transform:translate3d(14px,-10px,0) scale(1.055);opacity:1}
}

@media (prefers-reduced-motion:reduce){
  .mode-before .hero-orbit-a,
  .mode-before .hero-orbit-b,
  .mode-before .hero-editorial::before,
  .mode-before .hero-editorial::after{
    animation:none;
  }
}


/* =========================================================
   FESTIVAL TITLE LETTER GLOW v168
   清 → 花 → 祭の順に、文字を動かさず柔らかな光だけを渡す
========================================================= */
.mode-before .hero-editorial-title > .hero-title-letters{
  display:flex;
  justify-content:center;
  align-items:baseline;
  gap:.05em;
  text-shadow:none;
}

.mode-before .hero-title-letters > i{
  display:block;
  flex:0 0 auto;
  color:inherit;
  font:inherit;
  font-style:normal;
  letter-spacing:0;
  filter:brightness(1) saturate(1);
  text-shadow:0 10px 36px rgba(40,96,78,.055);
  animation:hero-title-letter-glow 6.6s ease-in-out 2.2s infinite;
  will-change:filter,text-shadow;
}

.mode-before .hero-title-letters > i:nth-child(2){animation-delay:2.42s}
.mode-before .hero-title-letters > i:nth-child(3){animation-delay:2.64s}
.mode-before .hero-title-letters > i:nth-child(4){animation-delay:2.86s}
.mode-before .hero-title-letters > i:nth-child(5){animation-delay:3.08s}

@keyframes hero-title-letter-glow{
  0%,18%,100%{
    filter:brightness(1) saturate(1);
    text-shadow:0 10px 36px rgba(40,96,78,.055);
  }
  7%{
    filter:brightness(1.32) saturate(.9);
    text-shadow:0 0 5px rgba(139,222,190,.30),0 0 18px rgba(139,222,190,.14),0 10px 36px rgba(40,96,78,.055);
  }
}

@media (prefers-reduced-motion:reduce){
  .mode-before .hero-title-letters > i{
    filter:none;
    text-shadow:0 10px 36px rgba(40,96,78,.055);
    animation:none;
  }
}


/* =========================================================
   SLOGAN COPY & HEADER LABEL v169
   日本語の文節を優先し、端末幅に合わせて読みやすく均等に改行する
========================================================= */
.mode-before .section.slogan .official-slogan-copy{
  width:min(920px,92%) !important;
  max-width:920px;
  margin:24px auto 0;
  font-size:clamp(14px,1.15vw,17px);
  font-weight:500;
  line-height:2;
  letter-spacing:.015em;
  line-break:strict;
  word-break:normal;
  overflow-wrap:normal;
  text-wrap:balance;
}

@supports (word-break:auto-phrase){
  .mode-before .section.slogan .official-slogan-copy{
    word-break:auto-phrase;
  }
}

@media (max-width:720px){
  .mode-before .section.slogan .official-slogan-copy{
    width:min(100%,520px) !important;
    margin-top:20px;
    font-size:clamp(12px,3.6vw,15px) !important;
    line-height:1.9;
    letter-spacing:0;
  }
}

/* v259: 事前ページの写真・情報カードを直線的な形に揃える */
.mode-before .event-info-card,
.mode-before .guide-grid > article,
.mode-before #message .message-grid > article,
.mode-before #message .message-photo,
.mode-before .access-card,
.mode-before #sponsors .sponsor-card,
.mode-before #sponsors .sponsor-empty {
  border-radius: 0 !important;
}

/* ボタンとナビゲーションの丸みは小さく統一する */
.mode-before .hero-label,
.mode-before .header-pamphlet-cta,
.mode-before .hero-editorial .hero-pamphlet-button,
.mode-before .hero-editorial .hero-pamphlet-button .pamphlet-icon,
.mode-before .mobile-menu .mobile-menu-sheet > .mobile-pamphlet-link,
.mode-before .mobile-menu .mobile-menu-sheet > .mobile-mode-switch-link,
.mode-before .footer-link,
.mode-before .footer-contact,
.mode-before .mobile-bottom-nav {
  border-radius: 4px !important;
}

.mode-before .mobile-menu .mobile-menu-sheet {
  border-radius: 4px 4px 0 0 !important;
}


/* v262: 開催情報 — 日付を主役にした、罫線と余白のレイアウト */
.mode-before #date .event-info-card {
  display: grid;
  grid-template-columns: 170px minmax(0, 1fr);
  gap: 32px 42px;
  width: min(980px, 100%);
  padding: 36px 0 0;
  overflow: visible;
  border: 0;
  border-top: 3px solid var(--m6);
  border-radius: 0;
  background: none;
  box-shadow: none;
}
.mode-before #date .event-info-heading {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 10px;
  padding: 0;
  text-align: left;
}
.mode-before #date .event-edition {
  display: block;
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
}
.mode-before #date .event-info-heading h3 {
  margin: 0;
  font-size: 36px;
  line-height: 1.3;
  letter-spacing: .04em;
}
.mode-before #date .event-info-date {
  min-width: 0;
  padding: 0 0 0 42px;
  border-left: 1px solid var(--line);
  text-align: left;
}
.mode-before #date .event-year {
  margin: 0 0 16px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .14em;
}
.mode-before #date .event-date-range {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
}
.mode-before #date .event-date-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
}
.mode-before #date .event-date-item strong {
  display: block;
  color: var(--ink);
  font-size: clamp(48px, 6.6vw, 80px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.065em;
  font-variant-numeric: lining-nums;
}
.mode-before #date .event-date-item span {
  display: block;
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .15em;
}
.mode-before #date .event-date-range > i {
  flex: 0 0 28px;
  width: 28px;
  height: 1px;
  margin-bottom: 25px;
  background: var(--m5);
  opacity: .65;
}
.mode-before #date .event-info-grid {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1.45fr 1fr;
  gap: 30px;
  padding: 26px 0 28px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: none;
}
.mode-before #date .event-info-item,
.mode-before #date .event-info-item + .event-info-item {
  min-width: 0;
  min-height: 0;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  padding: 0;
  border: 0;
  text-align: left;
}
.mode-before #date .event-info-item small {
  margin: 0 0 10px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .13em;
}
.mode-before #date .event-info-item strong {
  font-size: clamp(17px, 1.9vw, 21px);
  font-weight: 700;
  line-height: 1.6;
}
.mode-before #date .event-info-item:first-child strong { white-space: nowrap; }
.mode-before #date .event-info-item:first-child strong span { margin: 0 3px; }
.mode-before #date .event-info-item p {
  margin: 6px 0 0;
  color: var(--m5);
  font-size: 11px;
  line-height: 1.7;
}
.mode-before #date .event-info-access-link {
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
}
.mode-before #date .event-info-access-link:hover { text-decoration-color: currentColor; }

@media (max-width: 900px) and (min-width: 721px) {
  .mode-before #date .event-info-card { grid-template-columns: 120px minmax(0, 1fr); gap: 28px; }
  .mode-before #date .event-info-heading h3 { font-size: 30px; }
  .mode-before #date .event-info-date { padding-left: 28px; }
  .mode-before #date .event-info-grid { gap: 20px; }
}
@media (max-width: 720px) {
  .mode-before #date .event-info-card { grid-template-columns: minmax(0, 1fr); gap: 26px; padding-top: 24px; }
  .mode-before #date .event-info-heading { flex-direction: row; align-items: baseline; justify-content: flex-start; gap: 12px; }
  .mode-before #date .event-edition { font-size: 11px; }
  .mode-before #date .event-info-heading h3 { font-size: 26px; }
  .mode-before #date .event-info-date { padding: 0; border: 0; }
  .mode-before #date .event-year { margin-bottom: 14px; font-size: 11px; }
  .mode-before #date .event-date-range { gap: 14px; }
  .mode-before #date .event-date-item { gap: 8px; }
  .mode-before #date .event-date-item strong { font-size: clamp(42px, 13vw, 78px); }
  .mode-before #date .event-date-item span { font-size: 10px; }
  .mode-before #date .event-date-range > i { flex-basis: 22px; width: 22px; margin-bottom: 22px; }
  .mode-before #date .event-info-grid { grid-template-columns: minmax(0, 1fr); gap: 0; padding: 0; }
  .mode-before #date .event-info-item,
  .mode-before #date .event-info-item + .event-info-item {
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr);
    gap: 3px 12px;
    padding: 19px 0;
  }
  .mode-before #date .event-info-item + .event-info-item { border-top: 1px solid var(--line); }
  .mode-before #date .event-info-item small { grid-row: 1 / 3; grid-column: 1; margin: 5px 0 0; font-size: 9px; }
  .mode-before #date .event-info-item strong { grid-column: 2; font-size: 17px; }
  .mode-before #date .event-info-item p { grid-column: 2; margin: 0; font-size: 10px; }
}


/* v263: メッセージ — 写真・肩書・名前を揃えたプロフィールと読みやすい本文 */
.mode-before #message::before,
.mode-before #message::after { content: none; }
.mode-before #message .message-grid {
  width: min(980px, 100%) !important;
  gap: 0 !important;
}
.mode-before #message .message-grid > article {
  display: grid !important;
  grid-template-columns: 276px minmax(0, 1fr) !important;
  gap: 48px !important;
  align-items: start;
  padding: 38px 0 !important;
  overflow: visible;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: none;
  box-shadow: none;
}
.mode-before #message .message-grid > article:first-child { border-top: 3px solid var(--m6); }
.mode-before #message .message-grid > article:last-child { border-bottom: 1px solid var(--line); }
.mode-before #message .message-photo {
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  margin: 0 !important;
  aspect-ratio: 3359 / 5038 !important;
  border-radius: 0 !important;
  align-self: start;
  background: none;
}
.mode-before #message .message-photo img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
}
.mode-before #message .message-grid > article > .message-content:last-child {
  display: block;
  align-self: start;
  min-width: 0;
  width: auto;
  padding: 0;
}
.mode-before #message .message-person {
  margin: 0 0 22px;
  padding: 0 0 22px;
  border-bottom: 1px solid var(--line);
}
.mode-before #message .message-grid small {
  margin: 0 0 11px;
  color: var(--m6);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: .02em;
}
.mode-before #message .message-grid h3 {
  margin: 0 !important;
  color: var(--ink);
  font-size: 32px !important;
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: .07em;
}
.mode-before #message .message-grid p {
  margin: 0;
  color: var(--ink);
  font-size: 14px !important;
  font-weight: 400;
  line-height: 2.05 !important;
  letter-spacing: -.045em;
  overflow-wrap: anywhere;
  line-break: strict;
}
@media (min-width: 721px) and (max-width: 900px) {
  .mode-before #message .message-grid > article {
    grid-template-columns: 220px minmax(0, 1fr) !important;
    gap: 32px !important;
  }
}
@media (max-width: 720px) {
  .mode-before #message .message-grid > article {
    display: grid !important;
    grid-template-columns: minmax(0, .94fr) minmax(0, 1fr) !important;
    grid-template-rows: auto auto !important;
    gap: 25px 22px !important;
    padding: 30px 0 !important;
    align-items: start;
  }
  .mode-before #message .message-photo {
    grid-column: 1;
    grid-row: 1;
    width: 100% !important;
    max-width: 220px;
    justify-self: start;
    align-self: start;
  }
  .mode-before #message .message-grid > article > .message-content:last-child { display: contents; }
  .mode-before #message .message-person {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
  }
  .mode-before #message .message-grid small {
    margin-bottom: 12px;
    font-size: 10px;
    line-height: 1.9;
    letter-spacing: 0;
  }
  .mode-before #message .message-grid h3 {
    font-size: clamp(24px, 6.7vw, 30px) !important;
    line-height: 1.5;
    letter-spacing: .04em;
  }
  .mode-before #message .message-grid p {
    grid-column: 1 / -1;
    grid-row: 2;
    font-size: 14px !important;
    line-height: 1.95 !important;
    letter-spacing: -.045em;
  }
}
@media (max-width: 360px) {
  .mode-before #message .message-grid > article { column-gap: 16px !important; }
  .mode-before #message .message-grid h3 { font-size: 23px !important; }
}


/* v264: トップを1.3倍に拡大し、開催日まわりの罫線を短くする */
.mode-before .hero-editorial {
  height: auto !important;
  min-height: calc(100svh - var(--site-header-h));
  padding-top: 30px;
  padding-bottom: 58px;
}
.mode-before .hero-editorial .hero-editorial-content {
  zoom: 1.3;
  width: min(970px, 100%);
}
.mode-before .hero-editorial .hero-year-line { width: min(320px, 88%); }
.mode-before .hero-editorial .hero-event-info { width: min(440px, 94%); }
.mode-before .hero-editorial .hero-date-block {
  width: 100%;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 12px;
}
.mode-before .hero-editorial .hero-date-bridge {
  width: auto;
  grid-template-columns: 10px auto 10px;
  gap: 4px;
}
.mode-before .hero-editorial .hero-date-bridge i { width: 10px; }
.mode-before .hero-editorial .hero-slogan-official > span {
  max-width: 100% !important;
  white-space: normal;
}
@media (min-width: 721px) and (max-height: 760px) {
  .mode-before .hero-editorial .hero-year-line { width: min(280px, 88%); }
}
@media (max-width: 1000px) and (min-width: 721px) {
  .mode-before .hero-editorial-title span {
    font-size: min(clamp(128px, 19vh, 188px), calc((100vw - 48px) / 4.2)) !important;
  }
}
@media (max-width: 1000px) and (min-width: 721px) and (max-height: 760px) {
  .mode-before .hero-editorial-title span { font-size: 104px !important; }
}
@media (max-width: 720px) {
  .mode-before .hero-editorial {
    min-height: 100svh;
    padding-top: 86px;
    padding-bottom: calc(95px + env(safe-area-inset-bottom));
  }
  .mode-before .hero-editorial .hero-editorial-content {
    width: min(354px, 100%);
  }
  .mode-before .hero-editorial-title span {
    font-size: min(clamp(86px, min(28.5vw, 14svh), 110px), calc((100vw - 38px) / 4.2)) !important;
  }
  .mode-before .hero-editorial .hero-year-line { width: min(190px, 84%); }
  .mode-before .hero-editorial .hero-event-info { width: min(240px, 96%); }
  .mode-before .hero-editorial .hero-date-block { gap: 8px; }
  .mode-before .hero-editorial .hero-date-bridge { grid-template-columns: 7px auto 7px; gap: 3px; }
  .mode-before .hero-editorial .hero-date-bridge i { width: 7px; }
  .mode-before .hero-editorial .hero-pamphlet-button { width: min(255px, 96%) !important; }
}
@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial-title span { font-size: 63px !important; }
}

/* 開催情報: 2日間を近づけ、日付の間隔を一定にする */
.mode-before #date .event-date-range {
  justify-content: flex-start;
  gap: clamp(18px, 2.5vw, 32px);
}

/* PCのメッセージ: 肩書・名前を写真の上へ、本文は右側へ */
@media (min-width: 721px) {
  .mode-before #message .message-grid > article {
    grid-template-rows: auto 1fr;
    row-gap: 20px !important;
  }
  .mode-before #message .message-grid > article > .message-content:last-child { display: contents; }
  .mode-before #message .message-photo { grid-column: 1; grid-row: 2; }
  .mode-before #message .message-person {
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    margin: 0;
    padding: 0;
    border: 0;
  }
  .mode-before #message .message-grid p {
    grid-column: 2;
    grid-row: 1 / 3;
    align-self: start;
  }
}


/* v265: 開催情報をまとまりごと中央に配置する */
.mode-before #date .event-info-card {
  grid-template-columns: minmax(0, 1fr) max-content max-content minmax(0, 1fr);
  column-gap: 32px;
}
.mode-before #date .event-info-heading { grid-column: 2; }
.mode-before #date .event-info-date { grid-column: 3; padding-left: 32px; }
.mode-before #date .event-info-grid { grid-column: 1 / -1; }
.mode-before #date .event-info-item,
.mode-before #date .event-info-item + .event-info-item {
  align-items: center;
  text-align: center;
}
@media (min-width: 721px) and (max-width: 900px) {
  .mode-before #date .event-info-card { column-gap: 24px; }
  .mode-before #date .event-info-date { padding-left: 24px; }
}
@media (max-width: 720px) {
  .mode-before #date .event-info-card { grid-template-columns: minmax(0, 1fr); }
  .mode-before #date .event-info-heading { grid-column: 1; justify-content: center; }
  .mode-before #date .event-info-date { grid-column: 1; padding-left: 0; text-align: center; }
  .mode-before #date .event-date-range { justify-content: center; }
  .mode-before #date .event-info-item,
  .mode-before #date .event-info-item + .event-info-item { align-items: start; text-align: left; }
}

/* PCのメッセージ: 名前を全体の見出しにし、写真と本文の上端をそろえる */
@media (min-width: 721px) {
  .mode-before #message .message-grid > article {
    grid-template-columns: 240px minmax(0, 1fr) !important;
    row-gap: 24px !important;
  }
  .mode-before #message .message-person { grid-column: 1 / -1; grid-row: 1; }
  .mode-before #message .message-photo { grid-column: 1; grid-row: 2; }
  .mode-before #message .message-grid p { grid-column: 2; grid-row: 2; }
}
@media (min-width: 721px) and (max-width: 900px) {
  .mode-before #message .message-grid > article { grid-template-columns: 200px minmax(0, 1fr) !important; }
}


/* v271: スローガン本文の各行をスクロール進捗に直結し、右から左へスライド */
.mode-before #slogan .official-slogan-copy.slogan-lines-ready {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}
.mode-before #slogan .slogan-copy-line {
  display: block;
  white-space: pre;
  opacity: 0;
  transform: translateX(48px);
  transition: none !important;
  animation: none !important;
  will-change: opacity, transform;
}
@media (prefers-reduced-motion: reduce) {
  .mode-before #slogan .slogan-copy-line {
    opacity: 1 !important;
    transform: none !important;
  }
}


/* v286: v284を基準に鳥を少し右へ。フェードと上下動は維持 */
.mode-before .hero-editorial { isolation: isolate; }
.mode-before .hero-editorial .hero-corner-art {
  position: absolute;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  opacity: 0;
  transition: opacity .62s cubic-bezier(.2,.75,.25,1);
}
.mode-before.hero-ready .hero-editorial .hero-corner-art {
  opacity: 1;
  transition: opacity .72s cubic-bezier(.2,.75,.25,1);
}
.mode-before.hero-ready .hero-editorial .hero-corner-art-one {
  transition-delay: .18s;
}
.mode-before.hero-ready .hero-editorial .hero-corner-art-two {
  transition-delay: .28s;
}
.mode-before.hero-restarting .hero-editorial .hero-corner-art {
  opacity: 0 !important;
  transition: opacity .16s ease 0s !important;
}

.mode-before .hero-editorial .hero-corner-art img {
  display: block;
  max-width: none;
  height: auto;
}
.mode-before .hero-editorial .hero-corner-art-one {
  width: clamp(280px, 31vw, 470px);
  aspect-ratio: 1 / 1.05;
  left: clamp(92px, 7.2vw, 132px);
  bottom: -76px;
}
.mode-before .hero-editorial .hero-corner-art-one img {
  width: 100%;
  transform: translateY(-16%);
}
.mode-before .hero-editorial .hero-corner-art-two {
  width: clamp(102px, 11.5vw, 170px);
  aspect-ratio: 1;
  top: 10px;
  right: clamp(212px, 19.5vw, 334px);
}
.mode-before .hero-editorial .hero-corner-art-two img {
  width: 195%;
  transform: translate(-41%, -16%);
}
.mode-before .hero-editorial .hero-corner-art-two {
  animation: hero-bird-float 6.4s ease-in-out infinite;
  will-change: transform, opacity;
}
@keyframes hero-bird-float {
  0%   { transform: translateY(0); }
  25%  { transform: translateY(-6px); }
  50%  { transform: translateY(0); }
  75%  { transform: translateY(6px); }
  100% { transform: translateY(0); }
}
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    width: 190px;
    aspect-ratio: 1 / 1.02;
    left: 50px;
    bottom: -54px;
  }
  .mode-before .hero-editorial .hero-corner-art-one img {
    transform: translateY(-12%);
  }
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 63px;
    top: 72px;
    right: 72px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 52px;
    top: 68px;
  }
}

@media (min-width: 721px) and (max-width: 1000px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    width: clamp(240px, 30vw, 360px);
    left: 68px;
    bottom: -62px;
  }
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 84px;
    top: 8px;
    right: 132px;
  }
}


/* v286: HERO「in木花」横線チョーク質感を維持して少し右へ */
.mode-before .hero-editorial .hero-title-block {
  position: relative;
}
.mode-before .hero-editorial .hero-editorial-title {
  position: relative;
  z-index: 2;
}
.mode-before .hero-editorial .hero-in-kibana {
  position: absolute;
  z-index: 3;
  top: 38%;
  left: 64%;
  margin: 0;
  color: transparent;
  font-family: "Yusei Magic", "Yomogi", "Klee One", "Segoe Print", "Hiragino Maru Gothic ProN", cursive;
  font-size: clamp(37px, 5.4vw, 72px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -.045em;
  white-space: nowrap;
  background:
    repeating-linear-gradient(to bottom,
      rgba(16,63,51,1) 0 2.2px,
      rgba(16,63,51,.34) 2.2px 2.7px,
      rgba(16,63,51,.96) 2.7px 5.0px,
      rgba(16,63,51,.18) 5.0px 5.45px,
      rgba(16,63,51,.92) 5.45px 8.1px);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow:
    .25px .2px 0 rgba(248,255,251,.28),
    -.35px .25px 0 rgba(248,255,251,.16),
    .15px -.35px 0 rgba(248,255,251,.14);
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  filter: none;
  transform: translate(22px, 4px) rotate(-8deg);
  transform-origin: center;
  transition:
    opacity .13s ease,
    transform .13s ease,
    visibility 0s linear .16s;
}
.mode-before.hero-ready .hero-editorial .hero-in-kibana {
  opacity: 1;
  visibility: visible;
  transform: translate(0, 0) rotate(-8deg);
  transition:
    opacity .58s cubic-bezier(.2,.75,.25,1) .30s,
    transform .58s cubic-bezier(.2,.75,.25,1) .30s,
    visibility 0s linear .30s;
}
.mode-before.hero-restarting .hero-editorial .hero-in-kibana {
  opacity: 0 !important;
  visibility: hidden;
  filter: none;
  transform: translate(12px, 2px) rotate(-8deg);
  transition:
    opacity .16s ease 0s,
    transform .16s ease 0s,
    visibility 0s linear .16s !important;
}

@media (max-width: 1000px) and (min-width: 721px) {
  .mode-before .hero-editorial .hero-in-kibana {
    top: 38%;
    left: 63%;
    font-size: clamp(34px, 4.9vw, 56px);
  }
}
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-in-kibana {
    top: 37.5%;
    left: 58%;
    font-size: clamp(27px, 8.2vw, 40px);
    transform: translate(16px, 4px) rotate(-8deg);
  }
  .mode-before.hero-ready .hero-editorial .hero-in-kibana {
    transform: translate(0, 0) rotate(-8deg);
  }
}
@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-in-kibana {
    left: 57%;
    font-size: clamp(25px, 8.4vw, 34px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .mode-before .hero-editorial .hero-in-kibana {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: rotate(-8deg) !important;
    transition: none !important;
  }
}


/* v279: HERO微調整 — ヤシの木を右下、開催までの行を約1行分上へ */
.mode-before .hero-editorial .hero-countdown-inline {
  margin-top: -14px;
}
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-countdown-inline {
    margin-top: -10px;
  }
}


/* v281: HEROイラストのフェードと鳥のゆるい上下動 */
@media (prefers-reduced-motion: reduce) {
  .mode-before .hero-editorial .hero-corner-art {
    opacity: 1 !important;
    transition: none !important;
  }
  .mode-before .hero-editorial .hero-corner-art-two {
    animation: none !important;
    transform: none !important;
  }
  .mode-before .hero-editorial .hero-corner-art-two img {
    transform: translate(-41%, -16%) !important;
  }
}


/* v288: スマホはv286の配置に戻し、HERO全体だけ一回り小さくする */
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-editorial-content {
    zoom: 1.18;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    width: 172px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    width: 57px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 47px;
  }
}


/* v291: スマホHEROを上寄せし、下部をイラスト専用スペースにする */
@media (max-width: 720px) {
  .mode-before .hero-editorial {
    display: grid;
    place-items: start center;
    min-height: 100svh;
    height: 100svh;
    padding-top: 74px;
    padding-bottom: calc(124px + env(safe-area-inset-bottom));
  }

  .mode-before .hero-editorial .hero-editorial-content {
    position: relative;
    top: auto;
    margin: 0;
    zoom: 1.18;
  }

  .mode-before .hero-editorial .hero-in-kibana {
    left: 62%;
  }

  /* 本文の下側にイラストを分離して配置 */
  .mode-before .hero-editorial .hero-corner-art-one {
    left: 34px;
    bottom: -46px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    top: auto;
    right: 34px;
    bottom: 88px;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-in-kibana {
    left: 61%;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial {
    padding-top: 64px;
    padding-bottom: calc(108px + env(safe-area-inset-bottom));
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: -50px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    top: auto;
    right: 30px;
    bottom: 72px;
  }
}

/* v292: スマホHERO微調整 — 上げすぎを戻し、イラスト拡大、in木花を90% */
@media (max-width: 720px) {
  /* v291より本文を少し下へ戻す */
  .mode-before .hero-editorial {
    padding-top: 96px;
  }

  /* v291時点 172px → 130% */
  .mode-before .hero-editorial .hero-corner-art-one {
    width: 224px;
  }

  /* v291時点 57px → 150% */
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 86px;
  }

  /* v286/v291のスマホ文字サイズから90% */
  .mode-before .hero-editorial .hero-in-kibana {
    font-size: clamp(27px, 8.28vw, 39.6px);
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-in-kibana {
    font-size: clamp(25.2px, 8.46vw, 34.2px);
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial {
    padding-top: 82px;
  }

  /* v291時点 47px → 150% */
  .mode-before .hero-editorial .hero-corner-art-two {
    width: 71px;
  }
}

/* v293: スマホ微調整 — イラストをさらに拡大、in木花を右へ、本文を少し下へ */
@media (max-width: 720px) {
  .mode-before .hero-editorial {
    padding-top: 112px;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    width: 272px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    width: 106px;
  }

  .mode-before .hero-editorial .hero-in-kibana {
    left: 64%;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-in-kibana {
    left: 63%;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial {
    padding-top: 96px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    width: 88px;
  }
}

/* v294: スマホ微調整 — カウントダウンは上げず、in木花を右、鳥を左、ヤシを上へ */
@media (max-width: 720px) {
  /* 「開催まで」はv279の上詰めをスマホでは解除 */
  .mode-before .hero-editorial .hero-countdown-inline {
    margin-top: 0;
  }

  .mode-before .hero-editorial .hero-in-kibana {
    left: 66%;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 87px;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: -6px;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-in-kibana {
    left: 65%;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 68px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: -10px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 68px;
  }
}


/* v295: スマホ微調整 — 鳥をさらに左、ヤシの木を少し右上 */
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-corner-art-two {
    right: 108px;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    left: 48px;
    bottom: 14px;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-corner-art-two {
    right: 92px;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    left: 42px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: 8px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 92px;
  }
}


/* v296: スマホ微調整 — ヤシの木をさらに右上 */
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    left: 58px;
    bottom: 24px;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    left: 52px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: 18px;
  }
}


/* v298: スマホ横位置微調整 — v296とv297の中間へ */
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    left: 70px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 103px;
  }
}

@media (max-width: 390px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    left: 64px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    right: 87px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-two {
    right: 87px;
  }
}


/* v299: スマホ微調整 — ヤシの木を少し上へ */
@media (max-width: 720px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: 34px;
  }
}

@media (max-width: 720px) and (max-height: 700px) {
  .mode-before .hero-editorial .hero-corner-art-one {
    bottom: 28px;
  }
}


/* v300: iPhone Safariのページ拡大時にHEROの重なりを防ぐ
 * 通常のスマホ表示（v299）は変更せず、CSS viewportが小さくなった時だけ適用する。
 */
@media (max-width: 360px) and (max-height: 720px) {
  .mode-before .hero-editorial {
    height: auto;
    min-height: 100svh;
    padding-top: 76px;
    padding-bottom: calc(238px + env(safe-area-inset-bottom));
  }

  /* Safariのページ拡大分を少し相殺し、通常時に近い密度を保つ */
  .mode-before .hero-editorial .hero-editorial-content {
    zoom: .98;
  }

  /* 大きなヤシだけは拡大時に縮め、日付・カウントダウンへ侵入させない */
  .mode-before .hero-editorial .hero-corner-art-one {
    width: 218px;
    left: 50px;
    bottom: 26px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    width: 84px;
    right: 72px;
    bottom: 118px;
  }
}

@media (max-width: 310px) and (max-height: 640px) {
  .mode-before .hero-editorial {
    padding-top: 64px;
    padding-bottom: calc(220px + env(safe-area-inset-bottom));
  }

  .mode-before .hero-editorial .hero-editorial-content {
    zoom: .90;
  }

  .mode-before .hero-editorial .hero-corner-art-one {
    width: 198px;
    left: 42px;
  }

  .mode-before .hero-editorial .hero-corner-art-two {
    width: 76px;
    right: 62px;
    bottom: 108px;
  }
}


/* v302: アクセス案内を交通手段ごとに整理 */
.mode-before #access .access-details {
  justify-content: flex-start;
  gap: 0;
}

.mode-before #access .access-details > h3 {
  margin: 0 0 10px;
}

.mode-before #access .access-lead {
  margin: 0 0 24px;
  line-height: 1.9;
}

.mode-before #access .access-method-list {
  display: grid;
  gap: 0;
}

.mode-before #access .access-method {
  padding: 16px 0;
  border-top: 1px solid rgba(23, 76, 62, .14);
}

.mode-before #access .access-method:last-child {
  padding-bottom: 0;
}

.mode-before #access .access-method h4 {
  margin: 0 0 7px;
  color: var(--m7);
  font-size: 15px;
  line-height: 1.5;
  font-weight: 800;
  letter-spacing: .02em;
}

.mode-before #access .access-method p {
  margin: 0;
  line-height: 1.85;
}

@media (max-width: 720px) {
  .mode-before #access .access-lead {
    margin-bottom: 18px;
  }

  .mode-before #access .access-method {
    padding: 14px 0;
  }

  .mode-before #access .access-method h4 {
    font-size: 14px;
  }
}


/* v303: PCアクセス欄をコンパクトに */
@media (min-width: 721px) {
  .mode-before #access .access-details {
    padding-top: 24px;
    padding-bottom: 24px;
  }

  .mode-before #access .access-details > h3 {
    margin-bottom: 6px;
  }

  .mode-before #access .access-lead {
    margin-bottom: 10px;
    line-height: 1.55;
  }

  .mode-before #access .access-method {
    padding: 8px 0;
  }

  .mode-before #access .access-method h4 {
    margin-bottom: 2px;
    line-height: 1.35;
  }

  .mode-before #access .access-method p {
    line-height: 1.55;
  }
}
\n\n/* v307: ご来場の皆様へ — 番号カードではなく本文として表示 */\n.mode-before #guide .guide-copy {\n  width: min(900px, 100%);\n  margin: 0 auto;\n  padding: clamp(28px, 4vw, 44px) 0 0;\n  border-top: 1px solid rgba(40,96,78,.16);\n}\n\n.mode-before #guide .guide-copy p {\n  margin: 0;\n  color: var(--text, #21342d);\n  font-size: clamp(14px, 1.35vw, 16px);\n  line-height: 2;\n  letter-spacing: .01em;\n}\n\n.mode-before #guide .guide-copy p + p {\n  margin-top: 1.35em;\n}\n\n@media (max-width: 720px) {\n  .mode-before #guide .guide-copy {\n    width: 100%;\n    padding-top: 24px;\n  }\n\n  .mode-before #guide .guide-copy p {\n    font-size: 14px;\n    line-height: 1.9;\n  }\n\n  .mode-before #guide .guide-copy p + p {\n    margin-top: 1.2em;\n  }\n}\n

/* v308: 実行委員会名簿 — 常に事前ページの最終セクション */
.mode-before .committee-section {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 16% 18%, rgba(169,219,199,.16), transparent 30%),
    linear-gradient(180deg, #fbfffd 0%, #f3fbf7 100%);
  border-top: 1px solid rgba(40,96,78,.08);
}

.mode-before .committee-section .section-title {
  position: relative;
  z-index: 1;
}

.mode-before .committee-roster-empty,
.mode-before .committee-roster-grid {
  width: min(var(--kiyo-max), 100%);
  margin: 34px auto 0;
}

.mode-before .committee-roster-empty {
  min-height: 180px;
  display: grid;
  place-items: center;
  align-content: center;
  padding: 30px 24px;
  border: 1px solid rgba(40,96,78,.12);
  background: rgba(255,255,255,.74);
  text-align: center;
}

.mode-before .committee-roster-empty > span {
  color: var(--m5);
  font-family: "Montserrat", sans-serif;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .18em;
}

.mode-before .committee-roster-empty strong {
  margin-top: 10px;
  color: var(--ink);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.35;
}

.mode-before .committee-roster-empty p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.mode-before .committee-roster-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.mode-before .committee-roster-group {
  padding: 24px 26px;
  border: 1px solid rgba(40,96,78,.12);
  background: rgba(255,255,255,.82);
}

.mode-before .committee-roster-group h3 {
  margin: 0 0 16px;
  color: var(--m7);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .04em;
}

.mode-before .committee-name-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
}

.mode-before .committee-name-list span {
  color: var(--ink);
  font-size: 14px;
  line-height: 1.7;
}

@media (max-width: 720px) {
  .mode-before .committee-roster-empty,
  .mode-before .committee-roster-grid {
    margin-top: 26px;
  }

  .mode-before .committee-roster-empty {
    min-height: 150px;
    padding: 24px 18px;
  }

  .mode-before .committee-roster-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .mode-before .committee-roster-group {
    padding: 20px 18px;
  }

  .mode-before .committee-name-list {
    gap: 6px 18px;
  }

  .mode-before .committee-name-list span {
    font-size: 13px;
  }
}


/* v309: 清花祭実行委員会見出し / フッター制作クレジット */
.mode-before .committee-section .section-title > p {
  color: var(--m5);
  font-family: "Montserrat", "Zen Kaku Gothic New", sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
}

.footer-credits {
  grid-column: 1 / -1;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,.10);
}

.footer-credits-label {
  display: block;
  margin-bottom: 9px;
  font-family: "Montserrat", sans-serif;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: .18em;
  opacity: .58;
}

.footer-credits-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 28px;
}

.footer-credit-item {
  display: flex;
  align-items: baseline;
  gap: 9px;
}

.footer-credit-item span {
  color: rgba(255,255,255,.62);
  font-size: 8px;
  white-space: nowrap;
}

.footer-credit-item strong {
  color: #fff;
  font-size: 9px;
  font-weight: 400;
  line-height: 1.5;
}

.footer-credits + .footer-copy {
  padding-top: 10px;
  border-top: 0;
}

@media (max-width:720px) {
  .mode-before .committee-section .section-title > p {
    font-size: 9px;
  }

  .footer-credits {
    grid-column: 1;
    padding-top: 13px;
  }

  .footer-credits-list {
    display: grid;
    gap: 7px;
  }

  .footer-credit-item {
    gap: 8px;
  }

  .footer-credit-item span {
    min-width: 52px;
  }
}


/* v310: 実行委員会名簿をエンドクレジット寄りに再設計 */
.mode-before .committee-section {
  padding-top: clamp(48px, 5.5vw, 72px);
  padding-bottom: clamp(46px, 5vw, 66px);
  background:
    radial-gradient(circle at 14% 18%, rgba(169,219,199,.10), transparent 30%),
    linear-gradient(180deg, #fbfffd 0%, #f6fbf8 100%);
}

.mode-before .committee-heading {
  width: min(900px, 100%);
  margin: 0 auto;
  text-align: center;
}

.mode-before .committee-heading > p {
  margin: 0 0 9px;
  color: var(--m5);
  font-family: "Montserrat", sans-serif;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .22em;
}

.mode-before .committee-heading h2 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(22px, 2.5vw, 30px);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: .035em;
}

.mode-before .committee-roster-empty,
.mode-before .committee-roster-grid {
  width: min(900px, 100%);
  margin: 28px auto 0;
}

.mode-before .committee-roster-empty {
  min-height: 0;
  padding: 17px 20px;
  border: 0;
  border-top: 1px solid rgba(40,96,78,.12);
  border-bottom: 1px solid rgba(40,96,78,.08);
  background: transparent;
}

.mode-before .committee-roster-empty p {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.8;
  letter-spacing: .02em;
}

.mode-before .committee-roster-grid {
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 0 18px;
  border-top: 1px solid rgba(40,96,78,.13);
}

.mode-before .committee-roster-group {
  padding: 20px 0 18px;
  border: 0;
  border-bottom: 1px solid rgba(40,96,78,.09);
  background: transparent;
}

.mode-before .committee-roster-group h3 {
  margin: 0 0 8px;
  color: var(--m6);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .04em;
}

.mode-before .committee-name-list {
  display: grid;
  gap: 3px;
}

.mode-before .committee-name-list span {
  color: var(--ink);
  font-size: 12px;
  line-height: 1.65;
}

/* Web制作クレジットも主張を抑えてフッターに馴染ませる */
.footer-credits {
  padding-top: 13px;
  border-top-color: rgba(255,255,255,.08);
}

.footer-credits-label {
  margin-bottom: 7px;
  font-size: 5.5px;
  letter-spacing: .22em;
  opacity: .48;
}

.footer-credits-list {
  gap: 6px 24px;
}

.footer-credit-item {
  gap: 8px;
}

.footer-credit-item span {
  color: rgba(255,255,255,.48);
  font-size: 7px;
}

.footer-credit-item strong {
  color: rgba(255,255,255,.82);
  font-size: 8px;
  font-weight: 400;
}

.footer-credits + .footer-copy {
  padding-top: 8px;
  opacity: .72;
}

@media (max-width: 720px) {
  .mode-before .committee-section {
    padding-top: 42px;
    padding-bottom: 44px;
  }

  .mode-before .committee-heading > p {
    margin-bottom: 7px;
    font-size: 6.5px;
    letter-spacing: .18em;
  }

  .mode-before .committee-heading h2 {
    font-size: 20px;
  }

  .mode-before .committee-roster-empty,
  .mode-before .committee-roster-grid {
    margin-top: 22px;
  }

  .mode-before .committee-roster-empty {
    padding: 14px 10px;
  }

  .mode-before .committee-roster-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .mode-before .committee-roster-group {
    padding: 16px 0 14px;
  }

  .mode-before .committee-name-list span {
    font-size: 11.5px;
  }

  .footer-credits {
    padding-top: 11px;
  }

  .footer-credits-list {
    gap: 5px;
  }

  .footer-credit-item span {
    min-width: 48px;
    font-size: 6.5px;
  }

  .footer-credit-item strong {
    font-size: 7.5px;
  }
}


/* v311: WEB PRODUCTION — 奥付風クレジット */
.footer-credits {
  width: min(760px, 100%);
  margin: 22px auto 0;
  padding: 16px 0 0;
  border-top: 1px solid rgba(255,255,255,.11);
}

.footer-credits-head {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: end;
  gap: 14px;
  margin-bottom: 13px;
}

.footer-credits-head > div {
  display: flex;
  align-items: baseline;
  gap: 9px;
  white-space: nowrap;
}

.footer-credits-label {
  margin: 0;
  color: rgba(255,255,255,.76);
  font-family: "Montserrat", sans-serif;
  font-size: 7px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .24em;
  opacity: 1;
}

.footer-credits-head > div > span {
  color: rgba(255,255,255,.3);
  font-family: "Montserrat", sans-serif;
  font-size: 5.5px;
  font-weight: 600;
  letter-spacing: .18em;
}

.footer-credits-head > i {
  height: 1px;
  margin-bottom: 2px;
  background: linear-gradient(90deg, rgba(255,255,255,.16), transparent);
}

.footer-credits-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
}

.footer-credit-item {
  position: relative;
  display: grid;
  grid-template-columns: 21px minmax(0, 1fr);
  grid-template-rows: auto auto;
  gap: 5px 8px;
  min-width: 0;
  padding: 12px 18px 10px 0;
}

.footer-credit-item + .footer-credit-item {
  padding-left: 18px;
  border-left: 1px solid rgba(255,255,255,.08);
}

.footer-credit-no {
  grid-column: 1;
  grid-row: 1 / 3;
  padding-top: 1px;
  color: rgba(255,255,255,.2);
  font-family: "Montserrat", sans-serif;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: .08em;
}

.footer-credit-role {
  grid-column: 2;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.footer-credit-role > span {
  color: rgba(255,255,255,.58);
  font-family: "Montserrat", sans-serif;
  font-size: 6px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .12em;
}

.footer-credit-role > small {
  color: rgba(255,255,255,.36);
  font-size: 6.5px;
  line-height: 1.2;
}

.footer-credit-item > strong {
  grid-column: 2;
  color: rgba(255,255,255,.92);
  font-size: 9px;
  font-weight: 500;
  line-height: 1.55;
  letter-spacing: .02em;
  overflow-wrap: anywhere;
}

.footer-credits + .footer-copy {
  margin-top: 16px;
  padding-top: 0;
  opacity: .62;
}

@media (max-width: 720px) {
  .footer-credits {
    width: 100%;
    margin-top: 18px;
    padding-top: 14px;
  }

  .footer-credits-head {
    gap: 10px;
    margin-bottom: 9px;
  }

  .footer-credits-head > div {
    gap: 7px;
  }

  .footer-credits-label {
    font-size: 6.5px;
  }

  .footer-credits-head > div > span {
    font-size: 5px;
  }

  .footer-credits-list {
    grid-template-columns: 1fr;
  }

  .footer-credit-item {
    grid-template-columns: 20px minmax(0, 1fr);
    padding: 9px 0;
  }

  .footer-credit-item + .footer-credit-item {
    padding-left: 0;
    border-left: 0;
    border-top: 1px solid rgba(255,255,255,.06);
  }

  .footer-credit-role > span {
    font-size: 5.8px;
  }

  .footer-credit-role > small {
    font-size: 6px;
  }

  .footer-credit-item > strong {
    font-size: 8.5px;
  }
}


/* v312: WEB PRODUCTION — シンプルな奥付クレジット */
.footer-credits {
  width: min(720px, 100%);
  margin: 20px auto 0;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.10);
}

.footer-credits-head {
  display: flex;
  align-items: baseline;
  gap: 9px;
  margin-bottom: 12px;
}

.footer-credits-head > div {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.footer-credits-head > i {
  display: none;
}

.footer-credits-label {
  color: rgba(255,255,255,.68);
  font-size: 6.8px;
  letter-spacing: .20em;
}

.footer-credits-head > div > span {
  color: rgba(255,255,255,.28);
  font-size: 5.4px;
  letter-spacing: .16em;
}

.footer-credits-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
}

.footer-credit-item {
  display: block;
  min-width: 0;
  padding: 0;
}

.footer-credit-item + .footer-credit-item {
  padding-left: 0;
  border-left: 0;
}

.footer-credit-no {
  display: none !important;
}

.footer-credit-role {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.footer-credit-role > span {
  color: rgba(255,255,255,.56);
  font-size: 5.8px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: .10em;
}

.footer-credit-role > small {
  color: rgba(255,255,255,.34);
  font-size: 6.3px;
  line-height: 1.3;
}

.footer-credit-item > strong {
  display: block;
  margin-top: 6px;
  color: rgba(255,255,255,.88);
  font-size: 8.8px;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .01em;
}

.footer-credits + .footer-copy {
  margin-top: 15px;
}

@media (max-width: 720px) {
  .footer-credits {
    margin-top: 18px;
    padding-top: 13px;
  }

  .footer-credits-head {
    margin-bottom: 11px;
  }

  .footer-credits-list {
    grid-template-columns: 1fr;
    gap: 11px;
  }

  .footer-credit-item {
    padding: 0;
  }

  .footer-credit-item + .footer-credit-item {
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,.055);
  }

  .footer-credit-role > span {
    font-size: 5.6px;
  }

  .footer-credit-role > small {
    font-size: 6.1px;
  }

  .footer-credit-item > strong {
    margin-top: 5px;
    font-size: 8.4px;
  }
}


/* v313: FOOTER — 制作クレジットと最下段を整理 */
.site-footer {
  align-items: start;
  row-gap: 24px;
}

.site-footer .footer-credits {
  grid-column: 1 / -1;
  width: 100%;
  margin: 2px 0 0;
  padding: 18px 0 2px;
  border-top: 1px solid rgba(255,255,255,.11);
}

.site-footer .footer-credits-head {
  margin: 0 0 16px;
  align-items: baseline;
}

.site-footer .footer-credits-label {
  color: rgba(255,255,255,.72);
  font-size: 7.4px;
  font-weight: 700;
  letter-spacing: .22em;
}

.site-footer .footer-credits-head > div > span {
  color: rgba(255,255,255,.30);
  font-size: 5.6px;
  letter-spacing: .18em;
}

.site-footer .footer-credits-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(28px,4vw,64px);
}

.site-footer .footer-credit-item {
  min-width: 0;
  padding: 0;
}

.site-footer .footer-credit-item + .footer-credit-item {
  padding: 0;
  border: 0;
}

.site-footer .footer-credit-role {
  gap: 4px;
}

.site-footer .footer-credit-role > span {
  color: rgba(255,255,255,.60);
  font-size: 6.5px;
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: .10em;
}

.site-footer .footer-credit-role > small {
  color: rgba(255,255,255,.40);
  font-size: 6.7px;
  line-height: 1.35;
}

.site-footer .footer-credit-item > strong {
  margin-top: 7px;
  color: rgba(255,255,255,.92);
  font-size: 9.4px;
  font-weight: 500;
  line-height: 1.5;
}

.site-footer .footer-bottom {
  grid-column: 1 / -1;
  width: 100%;
  margin-top: 0;
  padding-top: 15px;
  border-top: 1px solid rgba(255,255,255,.10);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.site-footer .footer-bottom .footer-copy {
  grid-column: auto;
  margin: 0;
  padding: 0;
  border: 0;
  color: rgba(255,255,255,.58);
  font-size: 7px;
  opacity: 1;
}

.site-footer .footer-privacy {
  color: rgba(255,255,255,.58);
  font-size: 7px;
  line-height: 1.6;
  text-decoration: none;
  transition: color .18s ease, opacity .18s ease;
}

.site-footer .footer-privacy:hover,
.site-footer .footer-privacy:focus-visible {
  color: #fff;
}

/* privacy-policy.php が自動挿入する重複リンクは非表示にする */
body .site-footer > .kiyokasai-privacy-footer-row {
  display: none !important;
}

@media (max-width: 720px) {
  .site-footer {
    row-gap: 18px;
  }

  .site-footer .footer-credits {
    margin-top: 0;
    padding-top: 16px;
  }

  .site-footer .footer-credits-head {
    margin-bottom: 14px;
  }

  .site-footer .footer-credits-list {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .site-footer .footer-credit-item {
    padding: 0;
  }

  .site-footer .footer-credit-item + .footer-credit-item {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid rgba(255,255,255,.06);
  }

  .site-footer .footer-credit-role > span {
    font-size: 6.2px;
  }

  .site-footer .footer-credit-role > small {
    font-size: 6.5px;
  }

  .site-footer .footer-credit-item > strong {
    margin-top: 6px;
    font-size: 9px;
  }

  .site-footer .footer-bottom {
    padding-top: 13px;
    gap: 12px;
  }

  .site-footer .footer-bottom .footer-copy,
  .site-footer .footer-privacy {
    font-size: 6.8px;
  }
}


/* v314: WEB PRODUCTION — 英語役割＋氏名のみ */
.footer-credit-role > span {
  color: rgba(255,255,255,.62);
  font-size: 6.1px;
  letter-spacing: .11em;
}

.footer-credit-item > strong {
  margin-top: 5px;
}

@media (max-width: 720px) {
  .footer-credit-role > span {
    font-size: 6.2px;
  }

  .footer-credit-item > strong {
    margin-top: 4px;
  }
}


/* v315: WEB PRODUCTION — 英語を主役に、日本語を小さく補助 */
.footer-credit-role > small {
  display: block;
  margin-top: 2px;
  color: rgba(255,255,255,.36);
  font-size: 6.1px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .04em;
}

.footer-credit-item > strong {
  margin-top: 5px;
}

@media (max-width: 720px) {
  .footer-credit-role > small {
    margin-top: 2px;
    font-size: 6.4px;
  }
}


/* v316: PCの実行委員会名簿は1段横並び */
@media (min-width: 721px) {
  .mode-before .committee-roster-grid {
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 0 18px;
  }
}


/* v318: 実行委員会名簿 — スクロール位置連動の控えめな演出 */
.mode-before .committee-roster-grid.committee-position-motion .committee-roster-group {
  --committee-p: 0;
  opacity: var(--committee-p);
  transform: translateY(calc((1 - var(--committee-p)) * 14px));
  transition: none !important;
  will-change: opacity, transform;
}

.mode-before .committee-roster-empty.committee-position-motion {
  --committee-p: 0;
  opacity: var(--committee-p);
  transform: translateY(calc((1 - var(--committee-p)) * 12px));
  transition: none !important;
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  .mode-before .committee-roster-grid .committee-roster-group,
  .mode-before .committee-roster-empty {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}


/* v319: 実行委員会 — 見える位置で確実に分かるフェード */
.mode-before .committee-heading.committee-heading-motion {
  opacity: 0;
  transform: translateY(18px);
  filter: blur(3px);
  transition:
    opacity .68s cubic-bezier(.2,.75,.25,1),
    transform .72s cubic-bezier(.2,.75,.25,1),
    filter .68s ease;
  will-change: opacity, transform, filter;
}

.mode-before .committee-heading.committee-heading-motion.is-committee-visible {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

/* v318 の指定より後で、旧position-linked値を無効化する */
.mode-before .committee-roster-grid.committee-stagger-motion .committee-roster-group {
  opacity: 0;
  transform: translateY(22px);
  filter: blur(3px);
  transition:
    opacity .62s cubic-bezier(.2,.75,.25,1),
    transform .72s cubic-bezier(.2,.75,.25,1),
    filter .62s ease;
  transition-delay: 0s;
  will-change: opacity, transform, filter;
}

.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(1) { transition-delay: .02s; }
.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(2) { transition-delay: .10s; }
.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(3) { transition-delay: .18s; }
.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(4) { transition-delay: .26s; }
.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(5) { transition-delay: .34s; }
.mode-before .committee-roster-grid.committee-stagger-motion.is-committee-visible .committee-roster-group:nth-child(6) { transition-delay: .42s; }

.mode-before .committee-roster-empty.committee-stagger-motion {
  opacity: 0;
  transform: translateY(18px);
  filter: blur(3px);
  transition:
    opacity .62s cubic-bezier(.2,.75,.25,1),
    transform .72s cubic-bezier(.2,.75,.25,1),
    filter .62s ease;
}

.mode-before .committee-roster-empty.committee-stagger-motion.is-committee-visible {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

@media (prefers-reduced-motion: reduce) {
  .mode-before .committee-heading.committee-heading-motion,
  .mode-before .committee-roster-grid.committee-stagger-motion .committee-roster-group,
  .mode-before .committee-roster-empty.committee-stagger-motion {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}


/* v320: 実行委員会 — 役職名・氏名を完全スクロール位置連動 */
.mode-before .committee-heading.committee-position-text {
  --committee-heading-p: 0;
  opacity: var(--committee-heading-p) !important;
  transform: translateY(calc((1 - var(--committee-heading-p)) * 16px)) !important;
  filter: blur(calc((1 - var(--committee-heading-p)) * 2px)) !important;
  transition: none !important;
  will-change: opacity, transform, filter;
}

.mode-before .committee-roster-grid .committee-roster-group {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  transition: none !important;
}

.mode-before .committee-roster-group h3.committee-position-item {
  --committee-item-p: 0;
  opacity: var(--committee-item-p);
  transform: translateY(calc((1 - var(--committee-item-p)) * 10px));
  filter: blur(calc((1 - var(--committee-item-p)) * 1.5px));
  transition: none !important;
  will-change: opacity, transform, filter;
}

.mode-before .committee-name-list span.committee-position-name {
  --committee-name-p: 0;
  --committee-name-opacity: 0;
  opacity: var(--committee-name-opacity);
  transform: translateY(calc((1 - var(--committee-name-p)) * 9px));
  filter: blur(calc((1 - var(--committee-name-p)) * 1.2px));
  transition: none !important;
  will-change: opacity, transform, filter;
}

.mode-before .committee-roster-empty.committee-position-empty {
  --committee-empty-p: 0;
  opacity: var(--committee-empty-p) !important;
  transform: translateY(calc((1 - var(--committee-empty-p)) * 12px)) !important;
  filter: blur(calc((1 - var(--committee-empty-p)) * 1.5px)) !important;
  transition: none !important;
  will-change: opacity, transform, filter;
}

@media (prefers-reduced-motion: reduce) {
  .mode-before .committee-heading.committee-position-text,
  .mode-before .committee-roster-group h3.committee-position-item,
  .mode-before .committee-name-list span.committee-position-name,
  .mode-before .committee-roster-empty.committee-position-empty {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}


/* v321: 名簿の濃度収束を速め、フッタークレジットを左寄せでまとめる */
@media (min-width: 721px) {
  .site-footer .footer-credits-list {
    grid-template-columns: minmax(210px, auto) max-content max-content;
    justify-content: start;
    column-gap: clamp(36px, 5vw, 72px);
  }
}

.site-footer .footer-credits,
.site-footer .footer-credits-head,
.site-footer .footer-credits-head > div,
.site-footer .footer-credit-item,
.site-footer .footer-credit-role {
  text-align: left;
}

.site-footer .footer-credit-role {
  align-items: flex-start;
}

/* v322: スマホの実行委員会名簿 — 文字位置を少し内側へ */
@media (max-width: 720px) {
  .mode-before .committee-roster-group {
    padding: 16px clamp(22px, 7vw, 30px) 14px;
  }

  .mode-before .committee-roster-empty {
    padding-left: clamp(22px, 7vw, 30px);
    padding-right: clamp(22px, 7vw, 30px);
  }
}


/* v323: スマホの実行委員会名簿 — 3列×2段でコンパクトに */
@media (max-width: 720px) {
  .mode-before .committee-roster-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0 10px;
  }

  .mode-before .committee-roster-group {
    min-width: 0;
    padding: 15px 6px 14px;
  }

  .mode-before .committee-roster-group h3 {
    margin-bottom: 7px;
    font-size: 10px;
    white-space: nowrap;
  }

  .mode-before .committee-name-list {
    gap: 2px;
  }

  .mode-before .committee-name-list span {
    font-size: 10.5px;
    line-height: 1.65;
    white-space: nowrap;
  }
}


/* v324: スマホの実行委員会名簿 — 部門ごとに1段、氏名は3列 */
@media (max-width: 720px) {
  .mode-before .committee-roster-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .mode-before .committee-roster-group {
    min-width: 0;
    padding: 16px clamp(22px, 7vw, 30px) 14px;
  }

  .mode-before .committee-roster-group h3 {
    margin-bottom: 9px;
    font-size: 12px;
    white-space: normal;
  }

  .mode-before .committee-name-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 10px;
    row-gap: 3px;
  }

  .mode-before .committee-name-list span {
    min-width: 0;
    font-size: 11px;
    line-height: 1.65;
    white-space: nowrap;
  }
}
\n\n/* =========================================================\n   v375 — 進学相談会バナー（事前ページ）\n========================================================= */\nbody.mode-before .advance-consultation-section {\n  padding-top: clamp(34px, 4.6vw, 62px);\n  padding-bottom: clamp(34px, 4.6vw, 62px);\n}\n\nbody.mode-before .advance-consultation-banner {\n  display: block;\n  width: min(var(--kiyo-max), calc(100% - 40px));\n  margin: 0 auto;\n  overflow: hidden;\n  border-radius: 22px;\n  background: #f8f4eb;\n  box-shadow: 0 12px 30px rgba(40, 82, 64, .09);\n  transition: transform .22s ease, box-shadow .22s ease;\n}\n\nbody.mode-before .advance-consultation-banner img {\n  display: block;\n  width: 100%;\n  height: auto;\n}\n\n@media (hover:hover) and (pointer:fine) {\n  body.mode-before .advance-consultation-banner:hover {\n    transform: translateY(-3px);\n    box-shadow: 0 17px 38px rgba(40, 82, 64, .14);\n  }\n}\n\nbody.mode-before .advance-consultation-banner:focus-visible {\n  outline: 3px solid rgba(40, 96, 78, .42);\n  outline-offset: 5px;\n}\n\n@media (max-width:720px) {\n  body.mode-before .advance-consultation-section {\n    padding-top: 28px;\n    padding-bottom: 28px;\n  }\n\n  body.mode-before .advance-consultation-banner {\n    width: calc(100% - 24px);\n    border-radius: 14px;\n    box-shadow: 0 8px 22px rgba(40, 82, 64, .08);\n  }\n}\n

/* =========================================================
   v376 — 進学相談会バナー配置調整
   開催情報とスローガンの間。画像自体は加工せず、そのまま表示。
========================================================= */
body.mode-before .advance-consultation-section {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

body.mode-before .advance-consultation-banner {
  display: block !important;
  width: 100% !important;
  max-width: 1500px !important;
  margin: 0 auto !important;
  overflow: visible !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  line-height: 0 !important;
}

body.mode-before .advance-consultation-banner img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  object-fit: contain !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

@media (hover:hover) and (pointer:fine) {
  body.mode-before .advance-consultation-banner:hover {
    transform: none !important;
    box-shadow: none !important;
  }
}

@media (max-width:720px) {
  body.mode-before .advance-consultation-section {
    padding: 0 !important;
  }
  body.mode-before .advance-consultation-banner {
    width: 100% !important;
    border-radius: 0 !important;
  }
}


/* =========================================================
   v377 — 進学相談会バナーと開催情報の間隔調整
========================================================= */
body.mode-before .event-info-section {
  padding-bottom: clamp(18px, 2.4vw, 30px) !important;
}

@media (max-width:720px) {
  body.mode-before .event-info-section {
    padding-bottom: 14px !important;
  }
}


/* =========================================================
   v378 — 進学相談会バナー スマホ幅調整
   画面いっぱいにせず、左右に余白を取って元画像比率のまま表示。
========================================================= */
@media (max-width:720px) {
  body.mode-before .advance-consultation-section {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  body.mode-before .advance-consultation-banner {
    width: calc(100% - 32px) !important;
    max-width: none !important;
    margin: 0 auto !important;
  }

  body.mode-before .advance-consultation-banner img {
    width: 100% !important;
    height: auto !important;
  }
}


/* =========================================================
   v379 — 進学相談会バナー 下余白調整（スマホ）
========================================================= */
@media (max-width:720px) {
  body.mode-before .advance-consultation-section {
    margin-bottom: 100px !important;
  }
}


/* =========================================================
   v388 — スマホHEROの縦長化によるレイアウト切替を廃止
   v384の通常Safari表示（高さ700px以下で使われていた見た目）を
   スマホでは常時使用する。ツールバー表示/非表示で大きさを変えない。
========================================================= */
@media (max-width:720px) {
  body.mode-before .hero-editorial {
    height: auto !important;
    min-height: 700px !important;
    padding-top: 96px !important;
    padding-bottom: calc(108px + env(safe-area-inset-bottom)) !important;
  }

  body.mode-before .hero-title-block {
    margin-top: 6px !important;
  }

  body.mode-before .hero-small-en {
    display: none !important;
  }

  body.mode-before .hero-editorial-title {
    margin-bottom: 4px !important;
  }

  body.mode-before .hero-editorial-title span {
    font-size: 63px !important;
    line-height: .91 !important;
  }

  body.mode-before .hero-year-line {
    margin-top: 4px !important;
  }

  body.mode-before .hero-year-line b {
    font-size: 25px !important;
  }

  body.mode-before .hero-editorial .hero-campus {
    margin-top: 4px !important;
    font-size: 9px !important;
  }

  body.mode-before .hero-editorial .hero-slogan {
    margin-top: 4px !important;
    font-size: 12px !important;
  }

  body.mode-before .hero-bg-word {
    font-size: 64px !important;
  }

  body.mode-before .hero-event-info {
    margin-top: 5px !important;
    gap: 3px !important;
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }

  body.mode-before .hero-date strong {
    font-size: 25px !important;
  }

  body.mode-before .count-unit strong {
    font-size: 21px !important;
  }

  body.mode-before .hero-editorial .hero-pamphlet-button {
    width: min(285px, 80%) !important;
    padding-top: 6px !important;
    padding-bottom: 6px !important;
  }

  body.mode-before .hero-editorial .hero-in-kibana {
    left: 66% !important;
    font-size: 33px !important;
  }

  body.mode-before .hero-editorial .hero-corner-art-one {
    bottom: 28px !important;
  }

  body.mode-before .hero-editorial .hero-corner-art-two {
    width: 88px !important;
    top: auto !important;
    right: 87px !important;
    bottom: 72px !important;
  }
}


/* =========================================================
   v389 — スマホHERO イラスト位置のみ調整
   大きさは変更せず、ヤシと鳥を上方向へ移動。
========================================================= */
@media (max-width:720px) {
  body.mode-before .hero-editorial .hero-corner-art-one {
    bottom: 90px !important;
  }

  body.mode-before .hero-editorial .hero-corner-art-two {
    top: auto !important;
    right: 105px !important;
    bottom: 130px !important;
  }
}


/* =========================================================
   v391 — スローガン説明文のスマホ改行
   日本語を文字単位で切らず、意味のまとまりの間だけで改行する。
========================================================= */
@media (max-width:720px) {
  body.mode-before #slogan .official-slogan-copy.slogan-phrase-layout {
    word-break: normal !important;
    overflow-wrap: normal !important;
    line-break: strict !important;
    text-wrap: balance;
  }

  body.mode-before #slogan .official-slogan-copy.slogan-phrase-layout .slogan-phrase {
    display: inline;
    white-space: nowrap;
  }
}


/* =========================================================
   v392 — スマホ縦長時のHEROイラスト位置安定化
   画面が縦長になったときは、左右端基準ではなく
   画面中央基準でヤシの木と鳥の位置を決める。
   大きさは変更しない。
========================================================= */
@media (max-width:720px) and (min-height:860px) and (hover:hover) and (pointer:fine) {
  body.mode-before .hero-editorial .hero-corner-art-one {
    left: clamp(28px, calc(50% - 150px), 88px) !important;
    right: auto !important;
    bottom: 88px !important;
  }

  body.mode-before .hero-editorial .hero-corner-art-two {
    left: clamp(214px, calc(50% + 28px), 300px) !important;
    right: auto !important;
    top: auto !important;
    bottom: 98px !important;
  }
}


/* =========================================================
   v393 — 縦長スマホHERO：画面中央を原点にしてイラスト配置
   幅端・下端ではなく、画面中央からの固定距離で配置する。
   ツールバー表示/非表示や縦横比の変化でも相対位置を保つ。
   イラストの大きさは変更しない。
========================================================= */
@media (max-width:720px) and (max-aspect-ratio:4/5) and (hover:hover) and (pointer:fine) {
  body.mode-before .hero-editorial .hero-corner-art-one {
    left: calc(50% - 210px) !important;
    right: auto !important;
    top: calc(50% - 20px) !important;
    bottom: auto !important;
  }

  body.mode-before .hero-editorial .hero-corner-art-two {
    left: 50% !important;
    right: auto !important;
    top: calc(50% + 95px) !important;
    bottom: auto !important;
  }
}
