:root {
 --text-primary: #262626;
 --text-secondary: #666666;
 --response-red: #c23a29;
 --response-red-hover: #333;
 --bg-gray: #f6f5f1;
 --bg-white: #ffffff;
 --border-color: #e3e0d6;
 --link-blue: #957f46;
 --font-sans: "ヒラギノ角ゴ Pro W5", "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
}
* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
body {
 font-family: var(--font-sans);
 color: var(--text-primary);
 font-size: clamp(15px, 1.5vw, 17px);
 line-height: 1.8;
 background-color: var(--bg-gray);
 letter-spacing: .5px;
}
.en {
 font-family: "游明朝", YuMincho, "Hiragino Mincho ProN W3", "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
 font-optical-sizing: auto;
 font-weight: 500;
 font-style: normal;
 font-variation-settings: "wdth"100;
}
img {
 max-width: 100%;
}
a {
 text-decoration: none;
 color: inherit;
}
ul {
 list-style: none;
}
.text-blue {
 color: var(--response-red);
}
.text-sm {
 font-size: 0.875rem;
}
.font-bold {
 font-weight: 600;
}
/* Header */
.header {
 background-color: var(--bg-white);
 box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1);
 position: sticky;
 top: 0;
 width: 100%;
 z-index: 1000;
}
.header-inner {
 max-width: 1200px;
 margin: 0 auto;
 padding: 0 20px;
 display: flex;
 justify-content: space-between;
 align-items: center;
}
.header-logo {
 display: flex;
 align-items: center;
}
.header-logo-img {
 height: 20px;
 width: auto;
}
.nav-list {
 display: flex;
 justify-content: flex-end;
 align-items: center;
 gap: 5%;
 padding: 15px 0;
}
.nav-list a {
 color: var(--text-primary);
 font-weight: 600;
 font-size: 15px;
 transition: opacity 0.3s;
 white-space: nowrap;
}
.nav-list a:hover {
 opacity: 0.8;
}
.apply-btn-header {
 background-color: var(--response-red);
 /* Light blue matching LP apply button */
 color: #fff !important;
 padding: 8px 16px;
 border-radius: 30px;
 font-weight: 600;
}
.apply-btn-header:hover {
 opacity: 1;
 background-color: var(--response-red-hover);
}
@media (max-width: 896px) {
 .nav-list.open li {
  width: 100%;
  text-align: center;
 }
 .nav-list {
  gap: 26px;
 }
 .nav-list a {
  font-size: 20px;
 }
 .apply-btn-header {
  display: block;
  width: 70%;
  max-width: 300px;
  text-align: center;
  margin: auto;
 }
}
/* Base Sections */
.section {
 padding: 80px 20px;
}
.section-title {
 text-align: center;
 margin-bottom: 40px;
}
.section-title .en {
 font-size: clamp(46px, 5vw, 70px);
 line-height: 1.2em;
 letter-spacing: .5px;
 display: block;
}
.section-title .jp {
 font-family: "游明朝", YuMincho, "Hiragino Mincho ProN W3", "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
 font-size: clamp(16px, 2.4vw, 22px);
 display: block;
 color: var(--link-blue);
}
.gray-bg {
 background-color: var(--bg-gray);
}
.white-bg {
 background-color: var(--bg-white);
}
/* Hero Section */
.hero {
 text-align: center;
 padding: clamp(60px, 10vh, 120px) 12px;
 font-feature-settings: "palt"1;
 position: relative;
 overflow: hidden;
 color: var(--text-primary);
 min-height: 750px; /* 高さのガタつき防止 */
 display: flex;
 align-items: center;
 justify-content: center;
}
@media (max-width: 500px) {
 .hero {
  padding-top: 50px;
  min-height: 600px;
 }
}
#hero-canvas {
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 z-index: 0;
 pointer-events: none;
}
.hero-content {
 position: relative;
 z-index: 1;
}
.hero-title {
 max-width: 600px;
 width: 90%;
 margin: 0 auto 30px;
 display: inline-block;
}
.hero-title .text-year {
 font-size: 64px;
 display: inline-block;
}
.hero-date, .hero-venue {
 font-size: clamp(16px, 1.5vw, 18px);
 font-weight: 600;
 margin-bottom: 6px;
}
/* Countdown */
.countdown-timer {
 display: flex;
 justify-content: center;
 align-items: center;
 gap: 15px;
 margin: 40px auto;
}
.timer-box {
 border: 2px solid var(--bg-gray);
 background: rgba(255, 255, 255, 0.85);
 box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
 border-radius: 8px;
 padding: 15px 20px 12px;
 min-width: 90px;
 display: flex;
 flex-direction: column;
 align-items: center;
 color: var(--text-primary);
 font-family: Helvetica, Arial, "sans-serif";
}
.timer-value {
 font-size: 30px;
 font-weight: 600;
 line-height: 1;
}
.timer-label {
 font-size: 12px;
 margin-top: 2px;
}
.timer-colon {
 font-size: 24px;
 font-weight: 600;
}
.apply-btn-large {
 display: inline-block;
 background-color: var(--response-red);
 color: #fff;
 font-size: clamp(18px, 3vw, 28px);
 font-weight: 600;
 padding: 15px;
 letter-spacing: 1px;
 border-radius: 40px;
 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
 transition: transform 0.2s;
 width: 80%;
 max-width: 400px;
}
.apply-btn-large:hover {
 background-color: var(--response-red-hover);
}
/* Event Section */
.event-container {
 max-width: 1000px;
 margin: 0 auto;
 display: flex;
 gap: 40px;
 flex-wrap: wrap;
}
@media (max-width: 768px) {
 .section {
  padding: 60px 20px;
 }
 .event-container {
  flex-direction: column-reverse;
  gap: 20px;
 }
 .info-list {
  text-align: center;
  margin: auto;
 }
}
.event-images {
 flex: 1;
 min-width: 300px;
 display: flex;
 flex-direction: column;
 gap: 5px;
}
.event-image-box img {
 width: 100%;
 height: auto;
 border-radius: 4px;
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
 aspect-ratio: 16 / 9;
 object-fit: cover;
 object-position: top center;
}
.img-placeholder {
 width: 100%;
 height: 150px;
 background-color: #000;
 color: #fff;
 display: flex;
 justify-content: center;
 align-items: center;
 border-radius: 4px;
}
.event-details {
 flex: 1;
 min-width: 300px;
 font-feature-settings: "palt"1;
 display: flex;
 align-items: center;
}
.info-list dt {
 color: #957f46;
 font-weight: 600;
 font-size: 14px;
 margin-bottom: 5px;
}
.info-list dd {
 margin-bottom: 20px;
}
/* Theme Section */
.theme-box {
 max-width: 820px;
 margin: 0 auto;
 text-align: center;
}
.theme-subtitle {
 font-family: "游明朝", YuMincho, "Hiragino Mincho ProN W3", "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
 font-size: clamp(22px, 3.4vw, 44px);
 font-weight: 700;
 margin-bottom: 20px;
 line-height: 1.5;
 letter-spacing: normal;
}
.small {
 display: block;
 font-size: .85em;
 line-height: 1.4em;
}
.theme-text {
 text-align: left;
 font-size: clamp(15px, 2vw, 18px);
 line-height: 1.8;
}
/* Speakers Section */
.speakers-container {
 max-width: 1280px;
 margin: 0 auto;
 display: flex;
 flex-wrap: wrap;
 justify-content: center;
 gap: 30px;
}
.speaker-card {
 background-color: var(--bg-white);
 border-radius: 8px;
 overflow: hidden;
 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
 cursor: pointer;
 transition: transform 0.2s, box-shadow 0.2s;
 display: flex;
 flex-direction: column;
 width: 280px;
}
.speaker-card:hover {
 transform: translateY(-5px);
 box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
}
.speaker-photo {
 width: 100%;
 aspect-ratio: 1;
 object-fit: cover;
 object-position: top center;
 background-color: #000;
}
.speaker-info {
 padding: 20px 10px;
 text-align: center;
 flex-grow: 1;
}
.speaker-name {
 font-size: 18px;
 font-weight: 600;
 margin-bottom: 5px;
}
.speaker-org {
 color: var(--link-blue);
 font-size: 14px;
 margin-bottom: 5px;
}
.speaker-title {
 font-size: 12px;
 color: var(--text-secondary);
}
/* Coming Soon Text */
.coming-soon-text {
 text-align: center;
 font-size: clamp(24px, 3vw, 30px);
 color: #bbb;
 font-weight: 600;
 padding: 80px 0 100px;
}
/* Tickets Section */
.tickets-container {
 max-width: 900px;
 margin: 0 auto;
 display: flex;
 gap: 30px;
 flex-wrap: wrap;
 justify-content: center;
 align-items: stretch;
}
.ticket-card {
 flex: 1 1 320px;
 max-width: 420px;
 background-color: var(--bg-white);
 border: 1px solid var(--border-color);
 border-radius: 4px;
 padding: 35px 30px;
 display: flex;
 flex-direction: column;
 text-align: center;
 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
 position: relative;
}
.ticket-card-paid {
 border-top: 5px solid var(--response-red);
}
.ticket-card-free {
 border-top: 5px solid var(--text-primary);
}
.ticket-name {
 font-size: clamp(18px, 2.2vw, 22px);
 font-weight: 600;
 margin-bottom: 20px;
 line-height: 1.5;
 letter-spacing: 0;
}
.ticket-price {
 margin-bottom: 10px;
 display: flex;
 align-items: baseline;
 justify-content: center;
 gap: 6px;
 line-height: 1;
}
.ticket-precondition {
 text-align: center;
 font-size: 14px;
 font-weight: 500;
 color: var(--text-secondary);
 margin-bottom: 25px;
 padding-bottom: 25px;
 border-bottom: 1px solid var(--border-color);
 letter-spacing: 0.5px;
}
.ticket-price-num {
 font-family: Helvetica, Arial, sans-serif;
 font-size: clamp(40px, 5.5vw, 60px);
 font-weight: 700;
 color: var(--response-red);
 line-height: 1;
 letter-spacing: 0;
}
.ticket-card-free .ticket-price-num {
 color: var(--link-blue);
 font-family: var(--font-sans);
 font-size: clamp(38px, 5vw, 48px);
 /* paid側の数字フォントサイズと同じline-heightにすることで .ticket-price の高さを揃え、border-bottom位置を一致させる */
 line-height: clamp(40px, 5.5vw, 60px);
}
.ticket-price-unit {
 font-size: 15px;
 font-weight: 600;
 color: var(--text-secondary);
}
.ticket-features {
 text-align: left;
 margin: 0 auto 30px;
 flex-grow: 1;
 display: inline-block;
}
.ticket-features li {
 padding: 6px 0 6px 28px;
 position: relative;
 font-size: clamp(14px, 1.6vw, 15px);
 line-height: 1.6;
}
.ticket-features li::before {
 content: "";
 position: absolute;
 left: 0;
 /* li padding-top(6px) + line-height(1.6em)の半分(0.8em)で1行目の文字中央に合わせる */
 top: calc(0.8em + 6px);
 transform: translateY(-50%);
 width: 18px;
 height: 18px;
 background-color: var(--response-red);
 -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
 mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
 -webkit-mask-repeat: no-repeat;
 mask-repeat: no-repeat;
 -webkit-mask-size: contain;
 mask-size: contain;
}
.ticket-card-free .ticket-features li::before {
 background-color: var(--link-blue);
}
.ticket-note {
 font-size: 12px;
 line-height: 1.6;
 color: var(--text-secondary);
 text-align: left;
 margin-bottom: 16px;
}
.ticket-apply-btn {
 display: block;
 width: 100%;
 padding: 14px 16px;
 border: none;
 border-radius: 40px;
 background-color: var(--response-red);
 color: #fff;
 font-size: clamp(15px, 1.8vw, 17px);
 font-weight: 600;
 letter-spacing: 1px;
 cursor: pointer;
 transition: background-color 0.2s;
 font-family: inherit;
}
.ticket-apply-btn:hover {
 background-color: var(--response-red-hover);
}
.ticket-card-free .ticket-apply-btn {
 background-color: var(--text-primary);
}
.ticket-card-free .ticket-apply-btn:hover {
 background-color: var(--response-red-hover);
}
.tickets-notes {
 max-width: 800px;
 margin: 50px auto;
}
.tickets-notes-list li {
 position: relative;
 padding-left: 1.4em;
 font-size: 13px;
 line-height: 1.8;
 color: var(--text-secondary);
 margin-bottom: 12px;
}
.tickets-notes-list li:last-child {
 margin-bottom: 0;
}
.tickets-notes-list li::before {
 content: "※";
 position: absolute;
 left: 0;
 top: 0;
}
.tickets-notes-list a {
 color: var(--link-blue);
 text-decoration: underline;
 word-break: break-all;
}
.tickets-notes-list a:hover {
 opacity: 0.8;
}
@media (max-width: 768px) {
 .tickets-container {
  gap: 20px;
 }
 .ticket-card {
  padding: 30px 24px;
 }
}
/* Sponsors Section */
.sponsor-tier-title.gold {
 color: #b8860b;
}
.sponsor-tier-title.silver {
 color: #888;
}
.sponsor-category + .sponsor-category {
 margin-top: 40px;
}
.sponsor-category {
 text-align: center;
 max-width: 1440px;
 margin: 0 auto;
}
.sponsor-tier-title {
 color: #666;
 margin-bottom: 20px;
 font-size: clamp(24px, 3vw, 30px);
}
.sponsor-logos {
 display: flex;
 justify-content: center;
 gap: 20px 30px;
 flex-wrap: wrap;
}
.sponsor-logo-placeholder {
 max-width: 300px;
 width: 44%;
 border-radius: 4px;
 background-color: #fff;
}
/* aタグのアスペクト比 (300/100) は3ティア共通。Platinumのみコンテナを一回り大きく */
.sponsor-platinum .sponsor-logo-placeholder {
 max-width: 500px;
 width: 96%;
}
.sponsor-gold .sponsor-logo-placeholder,
.sponsor-silver .sponsor-logo-placeholder {
 max-width: 400px;
 width: 80%;
}
.sponsor-logo-placeholder a, .sponsor-logo-text {
 display: flex;
 justify-content: center;
 align-items: center;
 aspect-ratio: 300 / 100;
 padding: 20px 30px;
 box-sizing: content-box;
 font-size: 16px;
 font-weight: 600;
}
.sponsor-logo-placeholder img {
 width: 70%;
 height: 100%;
 object-fit: contain;
}
/* Platinumは他ティアより一回り大きく見せる（aタグのaspect-ratioは共通のまま維持） */
.sponsor-platinum .sponsor-logo-placeholder img {
 width: 100%;
}
.sponsor-logo-pwc {
 padding: 20px 0;
}
@media (max-width: 500px) {
 .sponsor-logo-pwc {
  padding: 12px 0;
 }
}
/* Location Section */
.location-container {
 max-width: 800px;
 margin: 0 auto;
 display: flex;
 gap: 40px;
 flex-wrap: wrap;
 align-items: center;
}
.location-info {
 flex: 1.5;
 min-width: 300px;
}
.location-name {
 font-size: 20px;
 font-weight: 600;
 margin-bottom: 15px;
}
.location-address {
 margin-bottom: 20px;
 line-height: 1.5;
}
.access-list {
 list-style-type: none;
}
.access-list li {
 margin-bottom: 10px;
 position: relative;
 padding-left: 15px;
}
.access-list li::before {
 content: "・";
 position: absolute;
 left: 0;
}
.location-image {
 flex: 1;
 min-width: 240px;
}
.location-image img {
 width: 100%;
 height: auto;
 border-radius: 4px;
 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
 aspect-ratio: 4 / 5;
 object-fit: cover;
}
.location-extra {
 max-width: 800px;
 margin: 50px auto 0;
}
.location-press {
 display: flex;
 justify-content: center;
}
.location-press .whitepaper-btn::before,
.location-sponsor .whitepaper-btn::before {
 display: none;
}
.location-sponsor {
 padding-top: 40px;
 display: flex;
 flex-direction: column;
 align-items: center;
}
.location-sponsor-title {
 font-size: clamp(18px, 2.5vw, 22px);
 font-weight: 600;
 margin-bottom: 15px;
 text-align: center;
 width: 100%;
}
.location-sponsor-text {
 line-height: 1.8;
 margin-bottom: 20px;
 text-align: center;
 width: 100%;
}
@media (max-width: 768px) {
 .location-sponsor-text {
  text-align: left;
 }
}
.location-map {
 width: 100%;
 line-height: 0;
}
.location-map iframe {
 display: block;
 filter: grayscale(50%) contrast(1.1);
}
/* Footer */
.footer {
 background-color: #333;
 color: #fff;
 text-align: center;
 padding: 20px;
 font-size: 14px;
}
/* Modal */
.modal {
 display: none;
 position: fixed;
 z-index: 2000;
 left: 0;
 top: 0;
 width: 100%;
 height: 100vh;
 /* スマホブラウザのアドレスバー表示/非表示に追従して常に画面いっぱいを覆う */
 height: 100dvh;
 background-color: rgba(0, 0, 0, 0.6);
 backdrop-filter: blur(4px);
 align-items: center;
 justify-content: center;
}
/* Prevent body scroll when modal / nav is open */
body.modal-open,
body.nav-open {
 overflow: hidden;
}
.modal-content {
 background-color: #fff;
 margin: 0;
 padding: 30px;
 border-radius: 8px;
 width: 90%;
 max-width: 900px;
 position: relative;
 max-height: 80vh;
 overflow-y: auto;
}
.close-btn {
 position: absolute;
 top: 15px;
 right: 20px;
 font-size: 0;
 font-weight: 600;
 cursor: pointer;
 transition: transform 0.3s ease, background-color 0.3s ease;
 display: flex;
 align-items: center;
 justify-content: center;
 width: 50px;
 height: 50px;
 border-radius: 50%;
 background-color: var(--response-red);
}
.close-btn:hover {
 background-color: var(--response-red);
 transform: rotate(90deg);
}
.close-btn::before {
 content: "";
 position: absolute;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
 margin: auto;
 width: 50%;
 height: 50%;
 -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/svg%3E");
 mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/svg%3E");
 -webkit-mask-repeat: no-repeat;
 mask-repeat: no-repeat;
 -webkit-mask-size: contain;
 mask-size: contain;
 background-color: #fff;
 transition: background-color 0.3s ease;
}
.close-btn:hover::before {
 background-color: #fff;
}
/* Modal Inner Layout (PC Default) */
.modal-speaker-layout {
 display: flex;
 gap: 30px;
 align-items: flex-start;
}
.modal-speaker-img {
 flex-shrink: 0;
 width: 200px;
}
.modal-speaker-img img {
 width: 200px;
 height: 200px;
 object-fit: cover;
 object-position: top center;
}
.modal-speaker-text {
 text-align: left;
}
.modal-speaker-name {
 font-size: 24px;
 margin-bottom: 5px;
}
.modal-speaker-org {
 color: var(--link-blue);
 margin-bottom: 5px;
 font-weight: 600;
}
.modal-speaker-title {
 font-size: 14px;
 color: var(--text-secondary);
 margin-bottom: 15px;
 padding-bottom: 15px;
 border-bottom: 1px solid #eee;
}
.modal-speaker-bio {
 line-height: 1.8;
 font-size: 15px;
}

/* Speaker History Layout */
.speaker-history {
 display: flex;
 flex-wrap: wrap;
 margin: 0;
 gap: 8px 0;
}
.speaker-history dt {
 width: 140px;
 flex-shrink: 0;
 font-weight: normal;
}
.speaker-history dd {
 width: calc(100% - 140px);
 margin: 0;
}
/* Hamburger Menu Defaults */
.hamburger {
 display: none;
 flex-direction: column;
 justify-content: space-between;
 width: 30px;
 height: 18px;
 background: transparent;
 border: none;
 cursor: pointer;
 padding: 0;
 z-index: 2001;
 /* Above mobile nav list */
}
.hamburger span {
 display: block;
 width: 100%;
 height: 2px;
 background-color: var(--text-primary);
 border-radius: 2px;
 transition: transform 0.3s ease, opacity 0.3s ease;
}
/* Responsive */
@media (max-width: 980px) {
 .header-inner {
  padding: 5px 20px;
  min-height: 50px;
 }
 .header-logo-img {
  height: 16px;
 }
 .nav {
  display: flex;
  justify-content: flex-end;
 }
 .hamburger {
  display: flex;
  height: 21px;
 }
 /* Hamburger open state styling */
 .hamburger.open span:nth-child(1) {
  transform: translateY(9.5px) rotate(45deg);
 }
 .hamburger.open span:nth-child(2) {
  opacity: 0;
 }
 .hamburger.open span:nth-child(3) {
  transform: translateY(-9.5px) rotate(-45deg);
 }
 .nav-list {
  position: fixed;
  top: 0;
  right: -100%;
  width: 100vw;
  height: 100vh;
  /* dvhで動的ビューポート高さ対応 */
  height: 100dvh;
  background-color: rgba(255, 255, 255, 1);
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5%;
  transition: right 0.3s ease;
  z-index: 2000;
  padding: 0;
 }
 .nav-list.open {
  right: 0;
 }
}
@media (max-width: 1040px) {
 .header-logo-img {
  height: 18px;
 }
}
@media (max-width: 768px) {
 .hero-title .text-year {
  font-size: 48px;
 }
 .countdown-timer {
  gap: 5px;
 }
 .timer-box {
  min-width: 70px;
  padding: 12px 10px 10px;
 }
 /* Speakers section (2 columns on mobile) */
 .speakers-container {
  gap: 15px;
 }
 .speaker-card {
  width: calc(50% - 7.5px);
 }
 .speaker-name {
  font-size: 15px;
  margin-bottom: 2px;
 }
 .speaker-org {
  font-size: 10px;
 }
 .speaker-title {
  font-size: 10px;
 }
 .speaker-info {
  padding: 10px;
 }
 /* Mobile Modal Layout Override */
 .modal-speaker-layout {
  flex-direction: column;
  align-items: center;
  gap: 20px;
 }
 .modal-speaker-img img {
  border-radius: 50%;
  /* Circle looks better when stacked */
 }
 .modal-speaker-text {
  text-align: center;
 }
 .modal-speaker-title {
  border-bottom: none;
  padding-bottom: 0;
 }
 .modal-speaker-bio {
  text-align: left;
  border-top: 1px solid #eee;
  padding-top: 20px;
  font-size: 14px;
  line-height: 1.6em;
 }
 .speaker-history {
  display: block;
 }
 .speaker-history dt {
  width: 100%;
  margin-top: 12px;
  font-weight: 600;
  color: var(--text-secondary);
 }
 .speaker-history dt:first-child {
  margin-top: 0;
 }
 .speaker-history dd {
  width: 100%;
 }
 .location-name {
  font-size: 18px;
  text-align: center;
 }
 .location-container {
  flex-direction: column;
 }
 .location-image {
  width: 70%;
 }
}
/* Timetable Section */
.timetable-container {
 max-width: 1000px;
 margin: 0 auto;
}
.timetable-list {
 position: relative;
 border-top: 1px dashed var(--border-color);
}
.timetable-item {
 display: flex;
 padding: 40px 0;
 border-bottom: 1px dashed var(--border-color);
}
.timetable-time {
 width: 25%;
 font-size: clamp(22px, 2.5vw, 24px);
 font-weight: 600;
 line-height: 1.4em;
 color: var(--response-red);
 font-family: 'Helvetica Neue', Arial, sans-serif;
 letter-spacing: 1px;
 padding-right: 20px;
}
.timetable-content {
 width: 75%;
 padding-left: 10px;
}
.timetable-label {
 display: inline-block;
 padding: 6px 16px;
 background-color: #f1ebd8; /* light warm color fitting the red/brown */
 color: var(--link-blue);
 font-size: 13px;
 border-radius: 20px;
 margin-bottom: 15px;
 font-weight: 600;
}
.timetable-title {
 font-size: clamp(20px, 3vw, 24px);
 color: var(--text-primary);
 line-height: 1.5;
 font-weight: 600;
}
.timetable-desc {
 font-size: 15px;
 color: var(--text-primary);
 margin-bottom: 25px;
 background-color: #fff;
 border-top: 1px dashed var(--border-color);
 border-bottom: 1px dashed var(--border-color);
 padding: 20px 0;
 border-radius: 8px;
 line-height: 1.8;
 margin-top: 20px;
}
.timetable-desc ol.timetable-points {
 margin-top: 18px;
 padding-left: 40px;
 list-style-type: decimal;
}
.timetable-desc ol.timetable-points li {
 padding-left: 0.4em;
 margin-bottom: 6px;
}
.timetable-desc ol.timetable-points li::marker {
 font-weight: 600;
}
.timetable-note {
 margin-top: 10px;
 font-size: 13px;
 color: var(--text-secondary);
}
.timetable-speaker {
 display: flex;
 flex-wrap: wrap;
 gap: 15px;
 margin-top: 15px;
}
.timetable-speaker-card {
 display: flex;
 align-items: center;
 gap: 15px;
 cursor: pointer;
 transition: opacity 0.2s;
}
.timetable-speaker-card:hover {
 opacity: 0.7;
}
.timetable-speaker-photo {
 width: 60px;
 height: 60px;
 object-fit: cover;
 object-position: top center;
 flex-shrink: 0;
}
.timetable-speaker-info {
 display: flex;
 flex-direction: column;
 line-height: 1.4em;
}
.timetable-speaker-org {
 font-size: 13px;
 color: var(--text-secondary);
 line-height: 1.2em;
}
/* ※準備中 項目：詳細・登壇者ブロックを非表示。コンテンツ確定時は li の is-tbd クラスを外す */
.timetable-item.is-tbd .timetable-desc,
.timetable-item.is-tbd .timetable-speaker {
 display: none;
}
.timetable-speaker-name {
 font-size: 18px;
 font-weight: 600;
 color: var(--text-primary);
}
.timetable-wp {
 margin-top: 20px;
}
.whitepaper-btn {
 display: flex;
 align-items: center;
 justify-content: center;
 gap: 8px;
 width: 100%;
 max-width: 500px;
 border: none;
 cursor: pointer;
 background-color: var(--link-blue);
 color: #fff;
 font-size: clamp(14px, 2vw, 18px);
 font-weight: 600;
 padding: 12px 10px;
 border-radius: 40px;
 transition: background-color 0.2s;
}
.whitepaper-btn::before {
 content: "";
 display: inline-block;
 width: 1.2em;
 height: 1.2em;
 flex-shrink: 0;
 -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3Cpolyline points='10 9 9 9 8 9'/%3E%3C/svg%3E");
 mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3Cpolyline points='10 9 9 9 8 9'/%3E%3C/svg%3E");
 -webkit-mask-repeat: no-repeat;
 mask-repeat: no-repeat;
 -webkit-mask-size: contain;
 mask-size: contain;
 background-color: #fff;
}
.whitepaper-btn:hover {
 background-color: var(--response-red-hover);
}
@media (max-width: 768px) {
 .timetable-wp {
  display: flex;
  justify-content: center;
 }
}
.timetable-panelist-card {
 display: flex;
 align-items: center;
 gap: 12px;
 cursor: pointer;
 transition: opacity 0.2s;
}
.timetable-panelist-card:hover {
 opacity: 0.7;
}
.timetable-panelist-text {
 display: flex;
 flex-direction: column;
}
.timetable-panelists {
 margin-top: 20px;
 background-color: #f9f9f9;
 padding: 25px;
}
.timetable-panelist-group {
 margin-bottom: 20px;
}
.timetable-panelist-group:last-child {
 margin-bottom: 0;
}
.timetable-panelist-title {
 font-size: 18px;
 font-weight: 600;
 color: var(--response-red);
 margin-bottom: 5px;
}
.timetable-panelist-list {
 margin-left: 0;
}
.timetable-panelist-list li {
 margin-bottom: 10px;
 position: relative;
 line-height: 1.6;
 font-size: 13px;
 color: var(--text-secondary);
}
.timetable-panelist-list li strong {
 display: block;
    font-size: 18px;
    font-weight: 600;
    color: var(--text-primary);
}
@media (max-width: 768px) {
 .timetable-item {
  flex-direction: column;
  padding: 30px 0;
 }
 .timetable-time {
  width: 100%;
  margin-bottom: 15px;
  font-size: 26px;
  padding-right: 0;
 }
 .timetable-content {
  width: 100%;
  padding-left: 0;
 }
 .timetable-title {
  font-size: 18px;
 }
 .timetable-desc {
  padding: 15px 0;
  font-size: 14px;
 }
 .timetable-panelists {
  padding: 15px;
 }
 .timetable-speaker-name {
  font-size: 16px;
 }
}

/* Scroll Reveal Animations */
.fade-up {
 opacity: 0;
 transform: translateY(30px);
 transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.fade-up.visible {
 opacity: 1;
 transform: translateY(0);
}
/* Delay for staggered children if needed */
.delay-100 {
 transition-delay: 100ms;
}
.delay-200 {
 transition-delay: 200ms;
}
/* Back to Top Button */
.back-to-top {
 position: fixed;
 bottom: -60px;
 /* Hide initially */
 right: 30px;
 width: 50px;
 height: 50px;
 background-color: var(--response-red);
 color: white;
 border: none;
 border-radius: 50%;
 cursor: pointer;
 display: flex;
 align-items: center;
 justify-content: center;
 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
 transition: bottom 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), transform 0.3s ease, background-color 0.3s;
 z-index: 999;
}
.back-to-top.show {
 bottom: 30px;
}
.back-to-top:hover {
 background-color: var(--response-red-hover);
 transform: translateY(-5px);
}
@media (max-width: 768px) {
 .back-to-top {
  right: 20px;
  width: 45px;
  height: 45px;
 }
 .back-to-top.show {
  bottom: 20px;
 }
}
/* ------------------------------
	レスポンシブ
------------------------------ */
.sp {
 display: none;
}
@media (max-width: 768px) {
 .sp {
  display: block;
 }
 .pc {
  visibility: hidden;
  display: none;
 }
}
/* ------------------------------
	MEM
------------------------------ */
html .mms-content .mms-form-container, html .mms-content .mms-modal #mms-modal-content {
 color: #fff;
}
html .mms-content .mms-text-left {
 display: inline-block;
 padding-right: 20px;
 padding-bottom: 10px;
}
html .mms-mb-3, .mms-my-3 {
 border-bottom: 1px solid #444 !important;
 padding-bottom: 20px !important;
}
html .mms-content .mms-btn {
 font-size: 1.2em;
 width: 100%;
 font-weight: bold;
 padding: 18px 12px;
 margin-bottom: 10px;
}