:root {
  --navy: #062f5f;
  --navy-deep: #031d3c;
  --blue: #0a4e91;
  --yellow: #ffdc00;
  --paper: #f6f3e9;
  /* 旧Welcartテンプレートが参照する変数も船橋カラーへ統一 */
  --orange: #0a4e91;
  --orange-deep: #062f5f;
  --brown: #031d3c;
  --brown-2: #153f6c;
  --gray: #e9eff5;
  --gray-2: #cad6e2;
  --cream: #f6f3e9;
  --white: #fff;
  --ink: #031d3c;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; background: var(--paper); color: var(--navy-deep); font-family: Arial, "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif; font-size: 17px; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
h1, h2, h3, .heroLead, .sectionLead { text-wrap: balance; word-break: auto-phrase; }
.headingLine { display: block; }
.accentLine { color: var(--blue); }

/* 全ページ共通：写真・ページ背景に重なる、画面上端のネイビーヘッダー。 */
.siteHeader { width: 100%; height: 80px; min-height: 72px; padding: 0 clamp(18px, 3vw, 56px); display: flex; align-items: center; gap: 24px; color: #fff; background: rgba(3,29,60,.92); backdrop-filter: blur(18px) saturate(1.25); border: 0; border-bottom: 1px solid rgba(255,255,255,.15); border-radius: 0; box-shadow: 0 4px 24px rgba(3,29,60,.1); position: fixed; z-index: 80; top: 0; left: 0; transform: none; }
main#top { padding-top: 0; }
body.home .hero { min-height: 100vh; }
body.home .heroContent { padding-top: clamp(160px, 18vh, 210px); }
@media (max-width: 900px) { body.home .heroContent { padding-top: 145px; } }
.stepsCalendarLink { color: var(--blue); font-weight: 850; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; }
.stepsCalendarLink:hover { color: var(--navy); }
.stepsCalendarLink:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; }
html { scroll-padding-top: 125px; }
body.admin-bar .siteHeader { top: 32px; }
body.admin-bar .sagiyamaModal { top: 32px; }
body.admin-bar .sagiyamaModalBody { margin-top: 3vh; max-height: calc(100dvh - 100px); }
@media (max-width: 782px) { body.admin-bar .siteHeader { top: 46px; } }
@media (max-width: 782px) { body.admin-bar .sagiyamaModal { top: 46px; } }
@media (max-width: 600px) { body.admin-bar #wpadminbar { position: fixed; } }
.brand { display: flex; align-items: center; gap: 12px; margin-right: auto; }
.brand img { width: 60px; height: 60px; object-fit: contain; }
.brand span { font-size: 18px; font-weight: 900; line-height: 1.08; letter-spacing: -.03em; }
.brand b { display: block; color: var(--yellow); font-size: 9px; letter-spacing: .17em; margin-bottom: 5px; }
.siteHeader .brand { color: #fff; flex-shrink: 0; }
.siteHeader .brand span { white-space: nowrap; }
.siteHeader nav { display: flex; gap: clamp(16px, 2vw, 28px); font-size: 15px; font-weight: 800; }
.siteHeader nav a { padding: 27px 0; position: relative; color: #fff; white-space: nowrap; }
.siteHeader nav a:hover { color: var(--yellow); }
.siteHeader a:focus-visible, .siteMenuToggle:focus-visible { outline: 3px solid var(--yellow); outline-offset: 4px; }
.siteHeader nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 20px; height: 3px; background: var(--yellow); transition: .25s; }
.siteHeader nav a:hover::after { right: 0; }
.headerCta { background: var(--yellow); color: var(--navy-deep); padding: 14px 22px; border-radius: 999px; font-size: 15px; font-weight: 900; white-space: nowrap; flex-shrink: 0; box-shadow: none; transition: background .2s, color .2s, transform .2s; }
.siteHeader .headerCta:hover { background: #fff; color: var(--navy-deep); box-shadow: none; transform: translateY(-2px); }
@media (min-width: 901px) and (max-width: 1100px) { .siteHeader { gap: 18px; padding-inline: 22px; } .siteHeader .brand span { display: none; } }
.siteMenuToggle, .siteMenuBackdrop { display: none; }

.hero { min-height: calc(100vh - 86px); position: relative; overflow: hidden; color: #fff; background: var(--navy-deep); }
.heroPhoto, .heroShade, .trackLines { position: absolute; inset: 0; width: 100%; height: 100%; }
.heroPhoto { object-fit: cover; object-position: 52% 45%; transform: scale(1.03); animation: heroZoom 11s cubic-bezier(.45,0,.3,1) infinite alternate; }
.heroShade { background: linear-gradient(90deg, rgba(3,29,60,.97) 0%, rgba(3,29,60,.83) 40%, rgba(3,29,60,.18) 77%), linear-gradient(0deg, rgba(3,29,60,.75) 0%, transparent 48%); }
.trackLines { opacity: .19; background: repeating-linear-gradient(110deg, transparent 0 82px, rgba(255,255,255,.25) 83px 85px); clip-path: polygon(0 67%,100% 28%,100% 42%,0 81%); animation: trackRush 4.5s linear infinite; }
.heroHeat { position: absolute; z-index: 2; inset: 8% -10% 7% 35%; pointer-events: none; mix-blend-mode: screen; filter: blur(28px); opacity: .55; overflow: hidden; }
.heroHeat i { position: absolute; width: 42%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255,220,0,.5), rgba(255,102,0,.18) 42%, transparent 70%); animation: heatDrift 6s ease-in-out infinite alternate; }
.heroHeat i:nth-child(1) { left: 3%; bottom: -9%; }
.heroHeat i:nth-child(2) { left: 38%; top: 8%; animation-delay: -2.3s; animation-duration: 7.5s; }
.heroHeat i:nth-child(3) { right: -4%; bottom: 5%; animation-delay: -4.4s; animation-duration: 5.5s; }
.heroRaceGlow { position: absolute; z-index: 3; inset: 0; pointer-events: none; overflow: hidden; opacity: .72; }
.heroRaceGlow::before { content: ""; position: absolute; right: -5%; bottom: 17%; width: 65%; height: 42%; background: radial-gradient(ellipse at center, rgba(255,220,0,.22), transparent 66%); filter: blur(22px); animation: pulseGlow 2.6s ease-in-out infinite; }
.heroRaceGlow span { position: absolute; right: -30%; width: 45%; height: 2px; background: linear-gradient(90deg, transparent, rgba(255,255,255,.8), var(--yellow)); transform: rotate(-17deg); filter: drop-shadow(0 0 8px var(--yellow)); animation: streakRun 3.4s linear infinite; }
.heroRaceGlow span:nth-child(1) { top: 31%; animation-delay: -1.4s; }
.heroRaceGlow span:nth-child(2) { top: 47%; width: 30%; animation-delay: -2.7s; }
.heroRaceGlow span:nth-child(3) { top: 63%; width: 55%; animation-delay: -.3s; }
.heroRaceGlow span:nth-child(4) { top: 76%; width: 34%; animation-delay: -2s; }
.hero::before { content: "FUNABASHI"; position: absolute; z-index: 2; right: -32px; top: 8%; font-size: clamp(72px, 12vw, 180px); font-weight: 950; letter-spacing: -.07em; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,.12); writing-mode: vertical-rl; }
.heroContent { position: relative; z-index: 4; width: min(1260px, 92vw); margin: 0 auto; padding: clamp(76px, 10vh, 130px) 0 160px; }
.heroContent h1, .heroContent .heroLead, .heroContent .textButton { color: #fff; }
.eyebrow { display: flex; align-items: center; gap: 13px; color: var(--yellow); font-size: 13px; font-weight: 900; letter-spacing: .08em; }
.eyebrow span { color: var(--navy-deep); background: var(--yellow); padding: 7px 10px; clip-path: polygon(0 0, 100% 0, 92% 100%, 0 100%); }
h1 { margin: 24px 0 22px; max-width: 760px; font-size: clamp(52px, 6.2vw, 94px); line-height: 1.06; letter-spacing: -.07em; font-weight: 950; }
h1 em { color: var(--yellow); font-style: normal; text-shadow: 5px 5px 0 rgba(0,0,0,.18); }
.heroLead { font-size: clamp(17px, 1.5vw, 22px); line-height: 1.8; font-weight: 700; }
.heroActions { display: flex; align-items: center; gap: 28px; margin-top: 34px; }
.primaryButton { display: flex; align-items: center; justify-content: space-between; gap: 30px; min-width: 250px; padding: 19px 22px; background: var(--yellow); color: var(--navy-deep); font-weight: 950; border-radius: 4px; box-shadow: 8px 8px 0 rgba(255,255,255,.16); transition: transform .2s, box-shadow .2s; }
.primaryButton:hover { transform: translate(4px,4px); box-shadow: 4px 4px 0 rgba(255,255,255,.16); }
.primaryButton span { font-size: 23px; }
.textButton { border-bottom: 1px solid rgba(255,255,255,.65); padding: 13px 0; font-weight: 800; }
.textButton span { color: var(--yellow); margin-left: 8px; }
.heroBottom { position: absolute; z-index: 6; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: minmax(0, 3fr) minmax(340px, 1.1fr); min-height: 106px; border-top: 1px solid rgba(255,255,255,.22); background: rgba(3,29,60,.92); backdrop-filter: blur(12px); }
.bbqCard { display: grid; grid-template-columns: 138px 1fr; min-width: 0; background: rgba(9,59,111,.96); color: #fff; border-left: 5px solid var(--yellow); overflow: hidden; }
.bbqCard img { width: 100%; height: 100%; min-height: 105px; object-fit: cover; }
.bbqCard div { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 7px; padding: 18px; }
.bbqCard strong { color: var(--yellow); font-size: 15px; letter-spacing: .1em; }
.bbqCard span { font-size: 13px; font-weight: 850; color: #fff; }
.heroFacts { display: grid; grid-template-columns: repeat(3, 1fr); padding-left: 4vw; }
.heroFacts div { padding: 23px 5vw 23px 22px; border-right: 1px solid rgba(255,255,255,.18); }
.heroFacts small { display: block; color: var(--yellow); font-size: 10px; font-weight: 900; letter-spacing: .18em; margin-bottom: 7px; }
.heroFacts strong { font-size: clamp(15px, 1.5vw, 21px); }

.funTicker { overflow: hidden; background: var(--yellow); color: var(--navy-deep); border-top: 3px solid var(--navy-deep); border-bottom: 3px solid var(--navy-deep); transform: rotate(-1deg) scale(1.02); position: relative; z-index: 8; }
.funTickerTrack { width: max-content; display: flex; align-items: center; padding: 16px 0; animation: tickerMove 34s linear infinite; }
.funTickerSet { display: flex; align-items: center; flex: 0 0 auto; gap: 28px; padding-right: 28px; }
.funTicker span { font-size: 18px; font-weight: 950; letter-spacing: .04em; white-space: nowrap; }
.funTicker i { font-style: normal; color: #fff; text-shadow: 2px 2px 0 var(--navy); }

.intro { padding: 120px max(4vw, calc((100vw - 1260px)/2)); background: var(--paper); }
.sectionTitle { display: grid; grid-template-columns: .75fr 1.35fr .8fr; align-items: end; gap: 40px; margin-bottom: 58px; }
.sectionTitle > div p, .kicker { margin: 0 0 10px; color: var(--blue); font-size: 13px; font-weight: 950; letter-spacing: .18em; }
.sectionTitle > div > span { font-size: 14px; font-weight: 900; }
.sectionTitle h2, .schedule h2, .experience h2, .steps h2, .venue h2, .faq h2, .finalCta h2 { margin: 0; font-size: clamp(40px, 5vw, 70px); line-height: 1.12; letter-spacing: -.065em; }
.sectionTitle h2 span { color: var(--blue); }
.sectionLead { margin: 0; color: #526072; line-height: 1.9; font-size: 17px; font-weight: 600; }
.planGrid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; align-items: stretch; }
.planCard { padding: 29px; background: #fff; border: 1px solid rgba(6,47,95,.16); box-shadow: 0 22px 55px rgba(3,29,60,.08); display: flex; flex-direction: column; position: relative; overflow: hidden; text-align: center; transition: transform .25s, box-shadow .25s; }
.planCard:hover { transform: translateY(-8px); box-shadow: 0 28px 65px rgba(3,29,60,.16); }
.planCard:focus-visible { outline: 4px solid var(--blue); outline-offset: 5px; }
.planCard::after { content: ""; position: absolute; right: -48px; top: 55px; width: 145px; height: 145px; border: 28px solid rgba(6,47,95,.035); border-radius: 50%; }
.planCard.featured { background: var(--navy); color: #fff; transform: translateY(-12px); }
.planCard.featured:hover { transform: translateY(-20px); }
.planCard.kids { background: #fff8cc; }
.planTop { display: flex; justify-content: space-between; align-items: center; position: relative; z-index: 1; }
.planTop > span { padding: 7px 10px; background: var(--yellow); color: var(--navy-deep); font-size: 12px; font-weight: 950; }
.planTop small { color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .12em; }
.featured .planTop small { color: #b9d8f5; }
.planIcon { margin: 27px auto 6px; width: 70px; height: 70px; display: grid; place-items: center; border-radius: 22px; background: var(--paper); color: var(--blue); position: relative; z-index: 1; animation: iconFloat 3s ease-in-out infinite; }
.planIcon img { width: 43px; height: 43px; }
.planCard:nth-child(2) .planIcon { animation-delay: -.8s; }
.planCard:nth-child(3) .planIcon { animation-delay: -1.6s; }
.planCard h3 { margin: 10px 0 15px; min-height: 58px; font-size: 28px; line-height: 1.2; letter-spacing: -.04em; text-align: center; position: relative; z-index: 1; }
.planCard > p:not(.planIcon) { margin: 0; min-height: 112px; color: #566375; font-size: 16px; line-height: 1.85; position: relative; z-index: 1; }
.featured > p:not(.planIcon) { color: #d7e1ed; }
.planCard ul { list-style: none; margin: 17px 0 26px; padding: 0; display: flex; justify-content: center; flex-wrap: wrap; gap: 7px; position: relative; z-index: 1; }
.planCard li { border: 1px solid rgba(6,47,95,.17); border-radius: 99px; padding: 7px 10px; font-size: 12px; font-weight: 800; }
.featured li { border-color: rgba(255,255,255,.22); }
.price { display: flex; align-items: baseline; gap: 5px; margin-top: auto; border-top: 1px solid rgba(6,47,95,.13); padding-top: 22px; position: relative; z-index: 1; }
.featured .price { border-color: rgba(255,255,255,.18); }
.price small { margin-right: auto; font-size: 13px; font-weight: 900; }
.price strong { font-size: 34px; letter-spacing: -.045em; }
.price span { font-size: 13px; }
.planCta { margin-top: 17px; display: flex; justify-content: space-between; align-items: center; padding: 17px; background: var(--navy-deep); color: #fff; font-size: 15px; font-weight: 900; position: relative; z-index: 1; }
.featured .planCta { background: var(--yellow); color: var(--navy-deep); }
.priceNote { margin: 20px 0 0; color: #6e7885; font-size: 11px; text-align: right; }

.schedule { padding: 125px max(4vw, calc((100vw - 1260px)/2)); background: var(--navy-deep); color: #fff; display: grid; grid-template-columns: .72fr 1.28fr; gap: 80px; align-items: center; position: relative; overflow: hidden; }
.schedule::before { content: "2026"; position: absolute; left: -25px; bottom: -55px; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,.07); font-size: 250px; font-weight: 950; letter-spacing: -.08em; }
.scheduleCopy { position: relative; z-index: 1; }
.sectionIndex { display: flex; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,.2); padding-bottom: 16px; margin-bottom: 65px; font-size: 10px; letter-spacing: .13em; }
.sectionIndex b { color: var(--yellow); }
.schedule .kicker { color: var(--yellow); }
.schedule h2 em { color: var(--yellow); font-style: normal; }
.scheduleCopy > p:not(.kicker) { margin: 30px 0; max-width: 480px; color: #c9d7e6; line-height: 1.9; font-size: 17px; }
.legend { display: flex; flex-direction: column; gap: 13px; font-size: 15px; font-weight: 800; }
.legend span { display: flex; align-items: center; gap: 10px; }
.dayDot, .nightDot { display: inline-block; width: 22px; height: 22px; flex: 0 0 22px; border: 0; border-radius: 0; box-shadow: none; background: #c78c00; -webkit-mask: var(--session-icon) center / contain no-repeat; mask: var(--session-icon) center / contain no-repeat; }
.dayDot { --session-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 1v3m0 16v3M1 12h3m16 0h3M4 4l2 2m12 12 2 2M4 20l2-2M18 6l2-2' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.nightDot { --session-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.7 15.1A9.3 9.3 0 0 1 8.9 3.3 9.5 9.5 0 1 0 20.7 15.1Z'/%3E%3C/svg%3E"); background: #7286bd; }
.scheduleCopy .dayDot, .scheduleCopy .nightDot, .dates .night .nightDot { background: var(--yellow); }
.calendarShell { position: relative; z-index: 1; padding: 38px; background: #fff; color: var(--navy-deep); box-shadow: 20px 22px 0 var(--yellow); }
.calendarHead { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 18px; border-bottom: 3px solid var(--navy-deep); }
.calendarHead span { font-size: 13px; font-weight: 900; color: var(--blue); }
.calendarHead b { font-size: 21px; }
.dateGroup { display: grid; grid-template-columns: 95px 1fr; gap: 20px; padding: 24px 0; border-bottom: 1px solid #d9dee4; }
.month strong, .month span { display: block; }
.month strong { color: var(--blue); font-size: 22px; letter-spacing: -.03em; }
.month span { margin-top: 4px; font-size: 13px; font-weight: 800; color: #687587; }
.dates { display: grid; grid-template-columns: repeat(5,1fr); gap: 8px; }
.dates button { appearance: none; border: 1px solid #d8e0e8; background: #f7f9fb; color: var(--navy-deep); padding: 9px 5px; min-height: 69px; cursor: pointer; position: relative; transition: .2s; }
.dates button:hover { border-color: var(--blue); background: #edf5fd; transform: translateY(-3px); }
.dates small, .dates b { display: block; }
.dates small { font-size: 10px; color: #7b8795; }
.dates b { margin: 3px 0 6px; font-size: 20px; }
.dates i { width: 20px; height: 20px; flex-basis: 20px; }
.dates .night { background: var(--navy); color: #fff; border-color: var(--navy); }
.dates .night small { color: #bcd5ec; }
.dates button.night:hover, .dates button.night:focus-visible { background: var(--yellow); border-color: var(--navy); color: var(--navy-deep); }
.dates button.night:hover small, .dates button.night:focus-visible small { color: var(--navy-deep); }
.dates button.night:hover .nightDot, .dates button.night:focus-visible .nightDot, .dates button.is-selected .nightDot { background: var(--navy-deep); }
.dates button.is-selected, .productCalendarDates button.is-selected { border-color: var(--yellow); outline: 4px solid rgba(255,220,0,.4); background: var(--yellow); color: var(--navy-deep); transform: translateY(-3px); }
.dates button.is-selected small, .productCalendarDates button.is-selected small { color: var(--navy-deep); }
.calendarCta { display: flex; justify-content: space-between; align-items: center; margin-top: 24px; padding: 19px 20px; background: var(--yellow); font-size: 14px; }
.calendarCta b { font-size: 16px; }
.calendarShell > p { margin: 14px 0 0; color: #6b7684; font-size: 12px; line-height: 1.6; }

.experience { padding: 145px max(4vw, calc((100vw - 1260px)/2)); display: grid; grid-template-columns: 1.08fr .92fr; gap: 100px; align-items: center; background: #fff; overflow: hidden; }
.photoStack { min-height: 600px; position: relative; }
.photoMain { position: absolute; inset: 0 14% 10% 0; margin: 0; clip-path: polygon(0 0,100% 0,91% 100%,0 100%); overflow: hidden; }
.photoMain img, .photoSub img { width: 100%; height: 100%; object-fit: cover; }
.photoSub { position: absolute; right: 0; bottom: 0; width: 45%; height: 43%; margin: 0; border: 9px solid #fff; box-shadow: 0 18px 45px rgba(3,29,60,.2); transform: rotate(3deg); overflow: hidden; }
.roundLabel { position: absolute; right: 0; top: -35px; width: 136px; height: 136px; border-radius: 50%; background: var(--yellow); display: grid; place-items: center; text-align: center; font-size: 13px; font-weight: 950; line-height: 1.4; transform: rotate(8deg); }
.experience h2 { margin: 13px 0 28px; }
.experienceCopy > p:not(.kicker) { color: #546173; line-height: 2; font-size: 18px; }
.duoCallout { margin-top: 28px; padding: 20px 22px; display: flex; align-items: center; gap: 17px; border-radius: 16px; background: #eef6ff; border: 1px solid #c9def3; box-shadow: 7px 7px 0 var(--yellow); }
.duoCallout > img { width: 48px; height: 48px; flex: 0 0 auto; }
.duoCallout div { display: flex; flex-direction: column; gap: 4px; }
.duoCallout b { color: var(--blue); font-size: 21px; }
.duoCallout span { color: #536174; font-size: 15px; line-height: 1.55; }
.miniFacts { margin-top: 38px; border-top: 1px solid #d7dee6; }
.miniFacts div { display: grid; grid-template-columns: 46px 1fr; align-items: center; padding: 18px 0; border-bottom: 1px solid #d7dee6; }
.miniFacts span { grid-row: 1/3; color: var(--blue); font-size: 12px; font-weight: 950; }
.miniFacts b { font-size: 17px; }
.miniFacts small { margin-top: 3px; color: #738091; font-size: 14px; }

.funMovie { min-height: 76vh; position: relative; overflow: hidden; color: #fff; background: var(--navy-deep); }
.funMovie video, .movieShade { position: absolute; inset: 0; width: 100%; height: 100%; }
.funMovie video { object-fit: cover; }
.movieShade { background: linear-gradient(90deg, rgba(3,29,60,.94) 0%, rgba(3,29,60,.6) 48%, rgba(3,29,60,.18) 78%), linear-gradient(0deg, rgba(3,29,60,.55), transparent 45%); }
.movieCopy { position: relative; z-index: 2; width: min(1260px, 90vw); margin: 0 auto; padding-top: 18vh; }
.movieCopy > p { margin: 0 0 22px; color: var(--yellow); font-size: 14px; font-weight: 950; letter-spacing: .2em; }
.movieCopy h2 { margin: 0; font-size: clamp(48px, 6vw, 86px); line-height: 1.08; letter-spacing: -.065em; }
.movieCopy h2 em { color: var(--yellow); font-style: normal; }
.movieCopy > span { display: block; margin-top: 28px; font-size: 19px; font-weight: 750; }
.movieSticker { position: absolute; z-index: 3; right: 8vw; top: 15%; width: 180px; height: 180px; border-radius: 50%; background: var(--yellow); color: var(--navy-deep); display: flex; align-items: center; justify-content: center; flex-direction: column; text-align: center; transform: rotate(8deg); box-shadow: 11px 11px 0 rgba(255,255,255,.18); animation: stickerBounce 3.5s ease-in-out infinite; }
.movieSticker b { font-size: 13px; }
.movieSticker strong { font-size: 39px; letter-spacing: -.06em; }
.movieSticker small { font-size: 8px; font-weight: 900; letter-spacing: .08em; }
.raceAnimation { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; height: 154px; overflow: hidden; border-top: 1px solid rgba(255,255,255,.2); background: linear-gradient(90deg, rgba(3,29,60,.88), rgba(6,47,95,.5)); pointer-events: none; }
.raceLane { position: absolute; z-index: 3; left: 0; right: 0; height: 1px; border-top: 1px dashed rgba(255,255,255,.36); }
.raceLane span { position: absolute; top: -20px; left: -76px; width: 54px; height: 40px; display: grid; place-items: center; border-radius: 999px; background: var(--yellow); box-shadow: 5px 5px 0 rgba(255,255,255,.13); animation: horseRun 7s linear infinite; }
.raceLane img { width: 37px; height: 37px; }
.laneOne { top: 32px; }
.laneTwo { top: 77px; }
.laneThree { top: 122px; }
.laneTwo span { animation-duration: 6.4s; animation-delay: -2.2s; background: #fff; }
.laneThree span { animation-duration: 7.6s; animation-delay: -4.1s; background: #85c7ff; }
.finishPost { position: absolute; z-index: 2; right: 7vw; top: 9px; bottom: 9px; width: 13px; background: repeating-linear-gradient(0deg,#fff 0 8px,var(--navy-deep) 8px 16px); box-shadow: 0 0 0 2px rgba(255,255,255,.55); }
.finishPost i { position: absolute; right: 18px; top: 3px; color: var(--yellow); font-size: 9px; font-style: normal; font-weight: 950; letter-spacing: .13em; writing-mode: vertical-rl; }

.steps { padding: 115px max(4vw, calc((100vw - 1260px)/2)); background: var(--yellow); }
.sectionTitle.compact { grid-template-columns: .65fr 1.35fr; }
.steps ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3,1fr); background: #fff; }
.steps li { min-height: 270px; padding: 36px; border-right: 1px solid #d4dce5; position: relative; }
.steps li:last-child { border-right: 0; }
.steps li::after { content: "→"; position: absolute; right: -16px; top: 48%; z-index: 2; width: 32px; height: 32px; border-radius: 50%; background: var(--navy); color: #fff; display: grid; place-items: center; }
.steps li:last-child::after { display: none; }
.steps li span { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .14em; }
.steps li b { display: block; margin: 45px 0 17px; font-size: 24px; }
.steps li p { color: #5c6877; font-size: 16px; line-height: 1.85; }

.venue { display: grid; grid-template-columns: 1.1fr .9fr; min-height: 780px; background: var(--navy); color: #fff; }
.venueVisual { position: relative; min-height: 600px; overflow: hidden; }
.venueVisual img { width: 100%; height: 100%; object-fit: cover; }
.venueVisual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(3,29,60,.82), transparent 55%); }
.venueVisual > div { position: absolute; z-index: 2; left: 7%; bottom: 7%; }
.venueVisual span { display: block; color: var(--yellow); font-size: 11px; font-weight: 950; letter-spacing: .16em; }
.venueVisual strong { display: block; margin-top: 9px; font-size: clamp(32px,4vw,55px); line-height: 1.15; }
.venueInfo { padding: 90px clamp(35px,6vw,100px); }
.venue .kicker { color: var(--yellow); }
.venue h2 { margin: 14px 0 42px; font-size: clamp(38px,4vw,60px); }
.venue dl { margin: 0 0 36px; }
.venue dl div { display: grid; grid-template-columns: 90px 1fr; gap: 20px; padding: 18px 0; border-top: 1px solid rgba(255,255,255,.19); }
.venue dt { color: var(--yellow); font-size: 9px; font-weight: 950; letter-spacing: .13em; }
.venue dd { margin: 0; font-size: 16px; line-height: 1.8; }
.venue dd small { color: #bdd0e3; }
.venueInfo > a { display: inline-block; padding-bottom: 7px; border-bottom: 1px solid #fff; font-size: 15px; font-weight: 800; }

.infoBand { display: grid; grid-template-columns: repeat(4,1fr); background: var(--paper); }
.infoBand article { padding: 38px 30px; border-right: 1px solid rgba(6,47,95,.15); }
.infoBand span { color: var(--blue); font-size: 9px; font-weight: 950; letter-spacing: .13em; }
.infoBand b { display: block; margin: 14px 0 8px; font-size: 19px; }
.infoBand p { margin: 0; color: #6b7786; font-size: 14px; line-height: 1.65; }

.newsBlog { padding: 125px max(4vw, calc((100vw - 1260px)/2)); background: #edf2f7; }
.newsHeading { display: grid; grid-template-columns: .68fr 1.22fr .8fr; gap: 50px; align-items: end; margin-bottom: 55px; }
.newsHeading > div p { margin: 0 0 10px; color: var(--blue); font-size: 13px; font-weight: 950; letter-spacing: .18em; }
.newsHeading > div span { font-size: 14px; font-weight: 900; }
.newsHeading h2 { margin: 0; font-size: clamp(42px,5vw,68px); line-height: 1.12; letter-spacing: -.06em; }
.newsHeading h2 em { color: var(--blue); font-style: normal; }
.newsHeading > p { margin: 0; color: #536174; font-size: 17px; line-height: 1.9; }
.newsGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; align-items: stretch; }
.newsEmpty { grid-column: 1 / -1; padding: 32px 0; }
.newsCard { min-height: 430px; background: #fff; border: 1px solid rgba(6,47,95,.12); display: flex; flex-direction: column; box-shadow: 0 18px 45px rgba(3,29,60,.08); transition: transform .25s, box-shadow .25s; overflow: hidden; }
.newsCard:hover { transform: translateY(-7px) rotate(-.4deg); box-shadow: 0 28px 58px rgba(3,29,60,.14); }
.newsCard:focus-visible { outline: 4px solid var(--blue); outline-offset: 4px; }
.newsCard figure { margin: 0; height: 190px; overflow: hidden; }
.newsCard figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.newsCard:hover figure img { transform: scale(1.05); }
.newsCard > div { padding: 26px; display: flex; flex-direction: column; flex: 1; }
.newsTag { align-self: flex-start; padding: 6px 9px; background: var(--yellow); font-size: 12px; font-weight: 950; }
.blogTag { background: var(--navy); color: #fff; }
.newsCard time { margin: 15px 0 8px; color: #778494; font-size: 12px; font-weight: 800; }
.newsCard h3 { margin: 0 0 12px; font-size: 22px; line-height: 1.45; letter-spacing: -.02em; }
.newsCard p { margin: 0 0 24px; color: #586677; font-size: 15px; line-height: 1.8; }
.newsMore { margin-top: auto; font-size: 14px; font-weight: 900; color: var(--blue); }
.textStory { background: var(--yellow); }
.textStory > div { justify-content: center; }
.textStory .newsTag { background: #fff; }
.pinnedStory { position: relative; border: 3px solid var(--navy); }
.pinnedStory::before { content: "PINNED"; position: absolute; right: -30px; top: 22px; z-index: 2; width: 120px; padding: 5px 0; transform: rotate(45deg); background: var(--navy); color: #fff; font-size: 9px; font-weight: 950; text-align: center; letter-spacing: .14em; }
.pinnedStory .permanentTag { background: var(--navy); color: #fff; }
.newsActions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 30px; }
.newsActions a { min-width: 160px; padding: 14px 18px; border: 2px solid var(--navy); font-size: 14px; font-weight: 900; text-align: center; }
.newsActions a:last-child { background: var(--navy); color: #fff; }

.faq { padding: 120px max(4vw, calc((100vw - 1160px)/2)); display: grid; grid-template-columns: .68fr 1.32fr; gap: 90px; background: #fff; }
.faq h2 { font-size: clamp(39px,4vw,58px); }
.faqList { display: grid; gap: 12px; }
.faq details { overflow: hidden; border: 1px solid #d7e0e9; border-radius: 14px; background: #f7f9fc; transition: border-color .25s, box-shadow .25s, background .25s; }
.faq details[open] { border-color: var(--blue); background: #fff; box-shadow: 0 14px 34px rgba(5,39,76,.1); }
.faq summary { list-style: none; display: grid !important; grid-template-columns: 42px minmax(0,1fr) 34px; align-items: center; gap: 16px !important; min-height: 78px; padding: 18px 18px !important; color: var(--navy-deep); font-size: 18px; font-weight: 850; line-height: 1.55; cursor: pointer; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::before { content: none !important; display: none !important; }
.faq summary::after { content: "+"; position: static !important; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--yellow); color: var(--navy-deep); font-size: 22px; line-height: 1; }
.faq details[open] summary::after { content: "−"; }
.faq summary span { display: grid; place-items: center; width: 42px; height: 42px; margin: 0 !important; border-radius: 50%; background: var(--navy-deep); color: var(--yellow); font-family: "Arial Black", sans-serif; font-size: 16px; font-weight: 950; line-height: 1; }
.faq details p { margin: 0 !important; padding: 0 22px 24px 76px; color: #526274; font-size: 16px; line-height: 1.9; }

.finalCta { min-height: 590px; padding: 110px 20px; display: flex; align-items: center; flex-direction: column; justify-content: center; text-align: center; background: linear-gradient(rgba(3,29,60,.83),rgba(3,29,60,.9)), url('../funabashi/images/race-night.webp') center 42%/cover; color: #fff; }
.finalCta > p { color: var(--yellow); font-size: 11px; font-weight: 950; letter-spacing: .2em; }
.finalCta h2 em { color: var(--yellow); font-style: normal; }
.finalCta > a { margin-top: 38px; min-width: 320px; padding: 19px 23px; display: flex; justify-content: space-between; background: var(--yellow); color: var(--navy-deep); font-weight: 950; box-shadow: 9px 9px 0 rgba(255,255,255,.14); }
.finalCta > small { margin-top: 18px; color: #c6d4e2; font-size: 14px; }

footer { padding: 62px 5vw 24px; background: #02152b; color: #fff; display: grid; grid-template-columns: 1.2fr 1fr .8fr; gap: 50px; align-items: start; }
.footerBrand { display: flex; align-items: center; gap: 15px; }
.footerBrand img { width: 70px; height: 76px; object-fit: contain; filter: none !important; opacity: 1 !important; mix-blend-mode: normal !important; background: transparent !important; }
.footerBrand strong { font-size: 18px; }
.footerLinks { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; font-size: 14px; font-weight: 800; }
.footerContact { display: flex; flex-direction: column; }
.footerContact small { color: var(--yellow); }
.footerContact a { margin: 6px 0; font-size: 25px; font-weight: 900; }
.footerContact span { color: #aebfd0; font-size: 11px; }
footer > p { grid-column: 1/-1; margin: 45px 0 0; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.13); color: #8398ae; font-size: 11px; letter-spacing: .1em; }

/* Inner pages */
.innerPage { background: #f5f3eb; }
.innerSiteHeader { position: fixed; }
.innerHero { min-height: 560px; padding: 80px max(5vw, calc((100vw - 1260px)/2)); position: relative; overflow: hidden; display: flex; align-items: center; color: #fff; background: var(--navy-deep); }
.innerHero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(3,29,60,.98), rgba(3,29,60,.74) 56%, rgba(3,29,60,.22)); }
.productArchiveHero { background: url('../funabashi/images/race-night.webp') center 45%/cover; }
.storiesHero { background: url('../funabashi/images/tarp-setup.webp') center 48%/cover; }
.innerHeroCopy { position: relative; z-index: 2; max-width: 850px; }
.breadcrumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; color: #c7d5e3; font-size: 11px; font-weight: 850; letter-spacing: .08em; }
.breadcrumbs a:hover { color: var(--yellow); }
.innerHeroCopy > p { margin: 62px 0 16px; color: var(--yellow); font-size: 12px; font-weight: 950; letter-spacing: .2em; }
.innerHero h1 { margin: 0; max-width: 900px; font-size: clamp(53px,7vw,96px); }
.innerHero h1 em { color: var(--yellow); font-style: normal; }
.innerHeroCopy > span { display: block; margin-top: 26px; max-width: 680px; font-size: 19px; font-weight: 750; line-height: 1.8; }
.innerHeroBadge { position: absolute; z-index: 2; right: 8vw; bottom: 54px; width: 150px; height: 150px; border-radius: 50%; display: grid; place-items: center; text-align: center; background: var(--yellow); color: var(--navy-deep); transform: rotate(8deg); box-shadow: 12px 12px 0 rgba(255,255,255,.16); }
.innerHeroBadge img { width: 54px; height: 54px; }
.innerHeroBadge b { margin-top: -30px; font-size: 11px; line-height: 1.3; letter-spacing: .12em; }

.productArchive { padding: 120px max(4vw, calc((100vw - 1260px)/2)); }
.archiveIntro { display: grid; grid-template-columns: .55fr 1fr .8fr; gap: 55px; align-items: end; margin-bottom: 55px; }
.archiveIntro > p { color: var(--blue); font-size: 12px; font-weight: 950; letter-spacing: .18em; }
.archiveIntro h2 { margin: 0; font-size: clamp(40px,5vw,66px); line-height: 1.12; letter-spacing: -.055em; }
.archiveIntro > span { color: #566477; font-size: 16px; line-height: 1.9; }
.archiveIntroWide { grid-template-columns: .48fr 1.52fr; }
.archiveIntroWide h2 { max-width: 900px; }
.productArchiveGrid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
.productArchiveCard { min-width: 0; overflow: hidden; display: flex; flex-direction: column; background: #fff; border: 1px solid rgba(6,47,95,.14); box-shadow: 0 20px 50px rgba(3,29,60,.1); transition: transform .25s, box-shadow .25s; }
.productArchiveCard:hover { transform: translateY(-9px); box-shadow: 0 32px 64px rgba(3,29,60,.17); }
.productArchiveCard:focus-visible { outline: 4px solid var(--blue); outline-offset: 4px; }
.productArchiveCard figure { height: 235px; margin: 0; overflow: hidden; }
.productArchiveCard figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s; }
.productArchiveCard:hover figure img { transform: scale(1.06); }
.productArchiveBody { padding: 28px; display: flex; flex: 1; flex-direction: column; text-align: center; }
.productArchiveTop { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.productArchiveTop > span { padding: 6px 9px; background: var(--yellow); color: var(--navy-deep); font-size: 11px; font-weight: 950; }
.productArchiveTop small { color: var(--blue); font-size: 9px; font-weight: 900; letter-spacing: .1em; }
.productArchiveIcon { width: 64px; height: 64px; margin: 24px auto 9px; display: grid; place-items: center; border-radius: 20px; background: var(--paper); }
.productArchiveIcon img { width: 40px; height: 40px; }
.productArchiveCard h2 { margin: 8px 0 14px; min-height: 66px; display: grid; place-items: center; font-size: 27px; line-height: 1.25; letter-spacing: -.035em; }
.productArchiveCard p { margin: 0; min-height: 96px; color: #5b6878; font-size: 15px; line-height: 1.8; }
.productArchiveCard ul { list-style: none; margin: 20px 0 25px; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 7px; }
.productArchiveCard li { padding: 6px 9px; border: 1px solid #d3dde6; border-radius: 99px; font-size: 11px; font-weight: 850; }
.archivePrice { margin-top: auto; padding-top: 20px; border-top: 1px solid #d9e0e7; display: flex; align-items: baseline; justify-content: center; gap: 5px; }
.archivePrice small { margin-right: auto; font-size: 12px; font-weight: 900; }
.archivePrice strong { font-size: 34px; letter-spacing: -.04em; }
.archivePrice span { font-size: 11px; }
.archiveCardCta { margin-top: 17px; padding: 16px; display: flex; justify-content: space-between; background: var(--navy-deep); color: #fff; font-size: 14px; }
.archiveCardCta i { font-style: normal; }
.productArchiveCard.navy .productArchiveBody { background: var(--navy); color: #fff; }
.productArchiveCard.navy p { color: #d0dce8; }
.productArchiveCard.navy li, .productArchiveCard.navy .archivePrice { border-color: rgba(255,255,255,.2); }
.productArchiveCard.navy .productArchiveTop small { color: #b7d4f0; }
.productArchiveCard.navy .archiveCardCta { background: var(--yellow); color: var(--navy-deep); }
.productArchiveCard.yellow .productArchiveBody { background: #fff7bf; }
.archiveSupport { padding: 80px max(5vw, calc((100vw - 1160px)/2)); display: grid; grid-template-columns: 1fr 1fr .65fr; gap: 60px; align-items: center; background: var(--yellow); }
.archiveSupport > div:first-child p { margin: 0 0 12px; color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .16em; }
.archiveSupport h2 { margin: 0; font-size: clamp(35px,4vw,55px); line-height: 1.15; letter-spacing: -.05em; }
.archiveSupport > p { margin: 0; font-size: 16px; line-height: 1.9; }
.archiveSupport > div:last-child { display: flex; flex-direction: column; gap: 9px; }
.archiveSupport > div:last-child a { padding: 14px 16px; background: var(--navy); color: #fff; text-align: center; font-size: 14px; font-weight: 900; }

.addOnGateway { padding: 110px max(5vw, calc((100vw - 1160px)/2)); background: #fff; }
.addOnGatewayGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.addOnGatewayGrid > a { min-height: 400px; padding: 45px; position: relative; overflow: hidden; display: flex; flex-direction: column; border: 3px solid var(--navy-deep); box-shadow: 10px 11px 0 var(--yellow); background: var(--navy); color: #fff; transition: transform .25s, box-shadow .25s; }
.addOnGatewayGrid > a:nth-child(2) { background: var(--yellow); color: var(--navy-deep); box-shadow-color: var(--navy); }
.addOnGatewayGrid > a:hover { transform: translate(-4px,-5px); box-shadow: 15px 17px 0 var(--yellow); }
.addOnGatewayGrid > a:nth-child(2):hover { box-shadow-color: var(--navy); }
.addOnGatewayGrid > a::after { content: "+"; position: absolute; right: -22px; bottom: -75px; color: rgba(255,255,255,.08); font-size: 250px; font-weight: 950; line-height: 1; }
.addOnGatewayGrid > a:nth-child(2)::after { color: rgba(3,29,60,.08); }
.addOnGatewayGrid span { color: var(--yellow); font-size: 11px; font-weight: 950; letter-spacing: .17em; }
.addOnGatewayGrid > a:nth-child(2) span { color: var(--blue); }
.addOnGatewayGrid img { width: 60px; height: 60px; margin: 35px 0 13px; padding: 11px; border-radius: 18px; background: #fff; }
.addOnGatewayGrid h3 { margin: 0 0 16px; font-size: clamp(38px,4vw,56px); letter-spacing: -.06em; }
.addOnGatewayGrid p { max-width: 440px; margin-bottom: 28px; color: #d6e2ee; line-height: 1.85; }
.addOnGatewayGrid > a:nth-child(2) p { color: #405066; }
.addOnGatewayGrid b { position: relative; z-index: 2; margin-top: auto; font-size: 15px; }

.addOnArchiveHero::after { content: "ADD"; position: absolute; right: -1vw; top: 7%; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,.14); font-size: clamp(120px,22vw,330px); font-weight: 950; line-height: .8; transform: rotate(-7deg); }
.productCategoryTabs { width: min(1160px,92vw); margin: -33px auto 0; position: relative; z-index: 5; display: grid; grid-template-columns: repeat(3,1fr); background: #fff; border: 3px solid var(--navy-deep); box-shadow: 9px 10px 0 var(--yellow); }
.productCategoryTabs a { min-height: 66px; display: grid; place-items: center; border-right: 1px solid #cfd8e2; font-size: 14px; font-weight: 950; }
.productCategoryTabs a:last-child { border-right: 0; }
.productCategoryTabs a:hover, .productCategoryTabs a.active { background: var(--navy); color: #fff; }
.addOnArchive { padding: 115px max(5vw, calc((100vw - 1160px)/2)); }
.addOnProductGrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 20px; }
.addOnProductCard { min-height: 350px; display: grid; grid-template-columns: 42% 58%; overflow: hidden; background: #fff; border: 1px solid rgba(6,47,95,.15); box-shadow: 0 18px 50px rgba(3,29,60,.1); transition: transform .25s, box-shadow .25s; }
.addOnProductCard:hover { transform: translateY(-7px); box-shadow: 0 27px 60px rgba(3,29,60,.17); }
.addOnProductCard figure { margin: 0; overflow: hidden; }
.addOnProductCard figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.addOnProductCard:hover figure img { transform: scale(1.06); }
.addOnProductCard > div { padding: 30px; display: flex; flex-direction: column; }
.addOnProductCard > div > span { width: max-content; padding: 6px 9px; background: var(--yellow); font-size: 10px; font-weight: 950; }
.addOnProductCard h2 { margin: 15px 0 12px; font-size: 28px; line-height: 1.28; letter-spacing: -.04em; }
.addOnProductCard p { margin: 0; color: #5b6878; font-size: 14px; line-height: 1.75; }
.addOnProductCard ul { list-style: none; margin: 16px 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.addOnProductCard li { padding: 5px 8px; border: 1px solid #d4dde6; border-radius: 99px; font-size: 10px; font-weight: 850; }
.addOnProductCard > div > div { margin-top: auto; display: flex; align-items: baseline; gap: 7px; }
.addOnProductCard strong { font-size: 32px; }
.addOnProductCard small { color: #647285; font-size: 10px; }
.addOnProductCard > div > b { margin-top: 13px; color: var(--blue); font-size: 13px; }

.detailBreadcrumbs, .articleBreadcrumbs { width: min(1260px, 92vw); margin: 0 auto; padding: 30px 0; color: #637287; }
.productDetailPage { padding-bottom: 0; }
.productReserveDate { width: min(1260px,92vw); margin: 0 auto 25px; padding: 16px 20px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 20px; background: var(--navy); color: #fff; border-left: 7px solid var(--yellow); box-shadow: 0 12px 35px rgba(3,29,60,.12); }
.productReserveDate > span { display: flex; align-items: center; gap: 9px; color: var(--yellow); font-size: 13px; font-weight: 950; }
.productReserveDate > span img { width: 23px; height: 23px; filter: brightness(0) saturate(100%) invert(88%) sepia(98%) saturate(1369%) hue-rotate(356deg) brightness(103%) contrast(102%); }
.productReserveDate strong { font-size: 19px; }
.productReserveDate strong.is-empty { color: #c4d4e4; }
.productReserveDate button, .productReserveDate > a { border: 0; padding: 11px 15px; background: var(--yellow); color: var(--navy-deep); font: inherit; font-size: 12px; font-weight: 950; cursor: pointer; text-align: center; }
.productReserveDate button b, .productReserveDate > a b { margin-left: 7px; }
.productInlineCalendar { width: min(960px,92vw); margin: 0 auto 55px; padding: 30px; background: #fff; border: 3px solid var(--navy-deep); box-shadow: 12px 13px 0 var(--yellow); }
.productInlineCalendar[hidden] { display: none; }
.productInlineCalendar > div:first-child { display: grid; grid-template-columns: 1fr auto; align-items: center; padding-bottom: 18px; border-bottom: 3px solid var(--navy-deep); }
.productInlineCalendar > div:first-child p { grid-column: 1; margin: 0; color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .17em; }
.productInlineCalendar h2 { grid-column: 1; margin: 5px 0 0; font-size: 30px; }
.productInlineCalendar > div:first-child button { grid-column: 2; grid-row: 1/3; width: 42px; height: 42px; border: 0; background: var(--navy); color: #fff; font-size: 24px; cursor: pointer; }
.productCalendarLegend { display: flex; gap: 24px; padding: 19px 0; font-size: 12px; font-weight: 850; }
.productCalendarLegend span { display: flex; align-items: center; gap: 8px; }
.productCalendarMonths { display: grid; grid-template-columns: 75px 1fr; gap: 20px 15px; align-items: start; }
.productCalendarMonths > div:nth-child(odd) strong, .productCalendarMonths > div:nth-child(odd) span { display: block; }
.productCalendarMonths > div:nth-child(odd) strong { color: var(--blue); font-size: 20px; }
.productCalendarMonths > div:nth-child(odd) span { color: #697789; font-size: 12px; font-weight: 850; }
.productCalendarDates { display: grid; grid-template-columns: repeat(7,1fr); gap: 7px; }
.productCalendarDates button { min-height: 65px; border: 1px solid #d7e0e8; background: #f6f9fb; color: var(--navy-deep); cursor: pointer; }
.productCalendarDates button.night { background: var(--navy); color: #fff; }
.productCalendarDates small, .productCalendarDates b { display: block; }
.productCalendarDates small { margin-bottom: 5px; color: #748194; font-size: 9px; }
.productCalendarDates .night small { color: #b9cee2; }
.productInlineCalendar > p { margin: 18px 0 0; color: #667487; font-size: 12px; text-align: right; }
.productDetail { width: min(1260px, 92vw); margin: 10px auto 110px; display: grid; grid-template-columns: minmax(0,1.1fr) minmax(380px,.9fr); gap: 70px; align-items: start; }
.productGallery { position: sticky; top: 25px; }
.productGallery > figure { margin: 0; height: 650px; overflow: hidden; background: var(--navy); }
.productGallery > figure img { width: 100%; height: 100%; object-fit: cover; }
.galleryCaption { padding: 16px 18px; display: flex; justify-content: space-between; background: var(--navy-deep); color: #fff; font-size: 10px; letter-spacing: .12em; }
.galleryCaption span { color: var(--yellow); }
.galleryStamp { position: absolute; right: -24px; top: 40px; width: 125px; height: 125px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 5px; background: var(--yellow); transform: rotate(8deg); box-shadow: 8px 9px 0 rgba(3,29,60,.18); }
.galleryStamp img { width: 44px; height: 44px; }
.galleryStamp span { font-size: 11px; font-weight: 950; }
.productBuyPanel { padding: 45px; background: #fff; border-top: 7px solid var(--yellow); box-shadow: 0 22px 55px rgba(3,29,60,.11); }
.productBuyPanel > p:first-child { margin: 0 0 18px; color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .17em; }
.detailTag { display: inline-block; padding: 7px 11px; background: var(--yellow); font-size: 12px; font-weight: 950; }
.productBuyPanel h1 { margin: 22px 0; max-width: none; color: var(--navy-deep); font-size: clamp(39px,4vw,60px); }
.productLead { color: #526174; font-size: 17px; line-height: 1.95; }
.productFeaturePills { list-style: none; margin: 25px 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.productFeaturePills li { padding: 7px 11px; border-radius: 99px; background: #eef4fa; color: var(--blue); font-size: 12px; font-weight: 900; }
.detailPrice { padding: 24px 0; display: flex; align-items: baseline; gap: 7px; border-top: 1px solid #d7e0e9; border-bottom: 1px solid #d7e0e9; }
.detailPrice small { margin-right: auto; font-size: 13px; font-weight: 900; }
.detailPrice strong { font-size: 46px; letter-spacing: -.05em; }
.detailPrice span { font-size: 12px; }
.purchaseNotes { margin: 18px 0 25px; }
.purchaseNotes div { padding: 11px 0; display: grid; grid-template-columns: 95px 1fr; gap: 15px; border-bottom: 1px solid #e0e6ec; }
.purchaseNotes dt { color: #6c7a8b; font-size: 12px; }
.purchaseNotes dd { margin: 0; font-size: 14px; font-weight: 850; }
.detailReserveButton { padding: 20px 22px; display: flex; align-items: center; justify-content: space-between; background: var(--yellow); color: var(--navy-deep); font-size: 17px; font-weight: 950; box-shadow: 8px 8px 0 var(--navy); transition: transform .2s, box-shadow .2s; }
.detailReserveButton:hover { transform: translate(4px,4px); box-shadow: 4px 4px 0 var(--navy); }
.detailReserveButton b { font-size: 24px; }
.detailHelp { display: block; margin-top: 19px; color: #687688; font-size: 12px; line-height: 1.6; text-align: center; }
.demoQuantity { margin: 20px 0; display: grid; grid-template-columns: 1fr 48px 72px 48px; align-items: center; border: 1px solid #d7e0e9; }
.demoQuantity > span { padding-left: 14px; color: #657386; font-size: 13px; font-weight: 850; }
.demoQuantity button { height: 48px; border: 0; background: var(--navy); color: #fff; font-size: 23px; cursor: pointer; }
.demoQuantity input { width: 100%; height: 48px; border: 0; text-align: center; font: inherit; font-size: 17px; font-weight: 900; }
.addOnNotice { margin: -8px 0 24px !important; padding: 14px; background: #fff5c2; color: #4f5965 !important; font-size: 12px !important; line-height: 1.7 !important; }
.productDetailInfo { padding: 105px max(5vw, calc((100vw - 1160px)/2)); display: grid; grid-template-columns: 1fr 1fr; gap: 20px; background: #eaf0f6; }
.detailInfoCard { padding: 45px; background: #fff; box-shadow: 0 17px 42px rgba(3,29,60,.08); }
.detailInfoCard.yellow { background: var(--yellow); }
.detailInfoCard > span { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .18em; }
.detailInfoCard h2 { margin: 14px 0 28px; font-size: 31px; letter-spacing: -.04em; }
.detailInfoCard ul { list-style: none; margin: 0; padding: 0; }
.detailInfoCard li { padding: 15px 0; display: flex; align-items: center; gap: 13px; border-top: 1px solid rgba(6,47,95,.15); font-size: 16px; font-weight: 800; }
.detailInfoCard li i { width: 27px; height: 27px; border-radius: 50%; display: grid; place-items: center; background: var(--navy); color: #fff; font-size: 11px; font-style: normal; }
/* ★ここは画面幅（vw）で余白を決めてはいけない。
   .productSetDetails は全幅のセクションではなく、max-width:1220px の
   .productIncluded の「中」に入っている箱。
   `max(5vw, calc((100vw - 1160px)/2))` は「1160pxの列を画面中央に置く」ための式なので、
   画面が広いほど左右の余白が太り、2330pxを超えたあたりで
   左右の余白の合計が箱の幅を追い越して、表の幅が数pxまで潰れていた
   （沙織さんの「テーブルがデザイン崩れしている」はこれ）。
   箱の中の余白なので、箱を基準にした固定値にする。 */
.productSetDetails { padding: 110px clamp(24px, 4vw, 60px); background: var(--navy-deep); color: #fff; }
.productSetDetailsHeading { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: end; margin-bottom: 42px; }
.productSetDetailsHeading p { margin: 0 0 9px; color: var(--yellow); font-size: 10px; font-weight: 950; letter-spacing: .18em; }
.productSetDetailsHeading h2 { margin: 0; font-size: clamp(39px,4.5vw,62px); letter-spacing: -.06em; }
.productSetDetailsHeading > span { color: #c4d4e3; font-size: 15px; line-height: 1.9; }
.productSetTableWrap { overflow-x: auto; background: #fff; color: var(--navy-deep); box-shadow: 14px 15px 0 var(--yellow); }
.productSetTableWrap table { width: 100%; min-width: 720px; border-collapse: collapse; }
.productSetTableWrap th, .productSetTableWrap td { padding: 18px 20px; border-bottom: 1px solid #d5dee7; text-align: left; font-size: 14px; line-height: 1.65; }
.productSetTableWrap thead th { background: var(--yellow); color: var(--navy-deep); font-size: 12px; font-weight: 950; letter-spacing: .07em; }
.productSetTableWrap tbody th { width: 115px; color: var(--blue); font-size: 13px; }
.productSetTableWrap tbody td { font-weight: 400; }
.productSetDetails > p { margin: 30px 0 0; color: #aebfd0; font-size: 12px; line-height: 1.75; }
.relatedProducts { padding: 110px max(5vw, calc((100vw - 1160px)/2)); background: #fff; }
.relatedProducts > div:first-child p { margin: 0 0 10px; color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .17em; }
.relatedProducts h2 { margin: 0 0 40px; font-size: clamp(38px,4vw,56px); letter-spacing: -.05em; }
.relatedGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.relatedCard { min-height: 210px; display: grid; grid-template-columns: 44% 56%; background: var(--paper); overflow: hidden; }
.relatedCard > img { width: 100%; height: 100%; object-fit: cover; }
.relatedCard > div { padding: 28px; position: relative; }
.relatedCard span { color: var(--blue); font-size: 10px; font-weight: 950; }
.relatedCard h3 { margin: 12px 0 22px; font-size: 24px; }
.relatedCard b { font-size: 23px; }
.relatedCard b small { font-size: 11px; }
.relatedCard > div > i { position: absolute; right: 24px; bottom: 25px; font-size: 24px; font-style: normal; }
.recentProducts { padding: 105px max(5vw, calc((100vw - 1160px)/2)); background: #eaf0f6; }
.recentProducts[hidden] { display: none; }
.recentProducts > div:first-child p { margin: 0 0 10px; color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .17em; }
.recentProducts h2 { margin: 0 0 40px; font-size: clamp(38px,4vw,56px); letter-spacing: -.05em; }
.recentGrid { display: grid; grid-template-columns: repeat(4,1fr); gap: 16px; }
.recentCard { min-width: 0; overflow: hidden; background: #fff; box-shadow: 0 14px 36px rgba(3,29,60,.09); transition: transform .25s, box-shadow .25s; }
.recentCard:hover { transform: translateY(-7px); box-shadow: 0 24px 48px rgba(3,29,60,.16); }
.recentCard > img { width: 100%; height: 170px; object-fit: cover; }
.recentCard > div { min-height: 165px; padding: 20px; position: relative; display: flex; flex-direction: column; }
.recentCard span { color: var(--blue); font-size: 9px; font-weight: 950; letter-spacing: .14em; }
.recentCard h3 { margin: 10px 0 18px; font-size: 20px; line-height: 1.45; }
.recentCard b { margin-top: auto; font-size: 21px; }
.recentCard small { color: #687688; font-size: 10px; }
.recentCard i { position: absolute; right: 20px; bottom: 18px; color: var(--blue); font-size: 21px; font-style: normal; }
.planSelection { padding: 75px max(4vw, calc((100vw - 1260px)/2)) 120px; }
.planReserveDate { width: 100%; margin-bottom: 75px; }

/* 川崎競馬場BBQと同じ商品構成を、船橋のデザインシステムで一覧化 */
.planCatalogue { background: #f5f7fa; }
.planCatalogueIntro { margin-bottom: 88px; }
.planCatalogueGroup + .planCatalogueGroup { margin-top: 105px; }
.planCatalogueHeading { display: grid; grid-template-columns: .8fr 1.2fr; gap: 50px; align-items: end; padding-bottom: 27px; margin-bottom: 28px; border-bottom: 3px solid var(--navy-deep); }
.planCatalogueHeading small, .planCatalogueType { color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .16em; }
.planCatalogueHeading h2 { margin: 7px 0 0; font-size: clamp(35px,4.2vw,56px); line-height: 1.15; letter-spacing: -.055em; }
.planCatalogueHeading p { margin: 0; color: #566477; font-size: 17px; font-weight: 650; line-height: 1.85; }
.planCatalogueGrid-1 { grid-template-columns: minmax(0, 1fr); max-width: 620px; }
.planCatalogueCard h3 { margin: 11px 0 18px; font-size: 27px; line-height: 1.35; letter-spacing: -.035em; }
.planFeatureTags { list-style: none; display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 26px; padding: 0; }
.planFeatureTags li { padding: 7px 10px; border: 1px solid rgba(6,47,95,.17); border-radius: 99px; color: #44556a; font-size: 12px; font-weight: 850; }
.planGroupLink { display: flex; justify-content: space-between; align-items: center; width: min(340px,100%); margin: 27px 0 0 auto; padding: 17px 21px; background: var(--navy-deep); color: #fff; font-weight: 900; }
.planGroupLink span { color: var(--yellow); font-size: 20px; }
.planOptionGrid { grid-template-columns: repeat(3,1fr); }
.planOptionGrid > a { min-width: 0; }
.planOptionGrid strong { display: block; margin: 16px 0 38px; color: var(--navy-deep); font-size: 25px; }
.planComparison { padding: 115px max(4vw, calc((100vw - 1260px)/2)) 140px; background: #fff; }
.planComparisonScroll { overflow-x: auto; border: 1px solid rgba(6,47,95,.17); box-shadow: 0 22px 55px rgba(3,29,60,.09); }
.planComparison table { width: 100%; min-width: 900px; border-collapse: collapse; text-align: center; }
.planComparison th, .planComparison td { padding: 20px 15px; border-right: 1px solid rgba(6,47,95,.13); border-bottom: 1px solid rgba(6,47,95,.13); }
.planComparison thead th { background: var(--navy-deep); color: #fff; font-size: 15px; }
.planComparison thead th:first-child { background: var(--yellow); color: var(--navy-deep); }
.planComparison thead b { display: block; margin-top: 5px; color: var(--yellow); font-size: 18px; }
.planComparison tbody th { text-align: left; background: #f3f6f9; }
.planComparison tbody td { color: var(--blue); font-size: 21px; font-weight: 950; }

.storiesHeroMark { position: absolute; z-index: 2; right: 7vw; bottom: 55px; display: flex; align-items: center; gap: 12px; color: var(--yellow); font-size: clamp(23px,3vw,42px); font-weight: 950; letter-spacing: -.04em; transform: rotate(-5deg); }
.storiesHeroMark i { color: #fff; font-style: normal; }
.storiesArchive { padding: 105px max(5vw, calc((100vw - 1160px)/2)); }
.storyFilters { margin-bottom: 42px; display: flex; gap: 10px; }
.storyFilters a { min-width: 120px; padding: 12px 18px; border: 2px solid var(--navy); text-align: center; font-size: 13px; font-weight: 900; }
.storyFilters .active, .storyFilters a:hover { background: var(--navy); color: #fff; }
.storyArchiveGrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 22px; }
.storyArchiveCard { min-width: 0; min-height: 480px; display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid rgba(6,47,95,.14); box-shadow: 0 18px 45px rgba(3,29,60,.08); transition: transform .25s, box-shadow .25s; }
.storyArchiveCard:hover { transform: translateY(-7px); box-shadow: 0 28px 58px rgba(3,29,60,.15); }
.storyArchiveCard figure { height: 260px; margin: 0; overflow: hidden; }
.storyArchiveCard figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.storyArchiveCard:hover figure img { transform: scale(1.05); }
.storyArchiveCard > div { padding: 28px; display: flex; flex: 1; flex-direction: column; }
.storyArchiveCard time { margin: 15px 0 7px; color: #728092; font-size: 12px; font-weight: 800; }
.storyArchiveCard h2, .storyArchiveCard h3 { margin: 0 0 12px; font-size: 27px; line-height: 1.45; letter-spacing: -.035em; }
.storyArchiveCard p { color: #5a6878; font-size: 15px; line-height: 1.8; }
.storyArchiveCard > div > b { margin-top: auto; color: var(--blue); font-size: 14px; }
.storyArchiveCard > div > b i { font-style: normal; }
.leadStory { grid-row: span 2; }
.leadStory figure { height: 430px; }
.permanentGuide { margin: 0 auto 115px; width: min(1160px,90vw); padding: 50px; display: flex; align-items: center; justify-content: space-between; gap: 35px; background: var(--yellow); border: 3px solid var(--navy); box-shadow: 12px 12px 0 var(--navy); }
.permanentGuide span { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .18em; }
.permanentGuide h2 { margin: 12px 0 8px; font-size: clamp(30px,4vw,50px); letter-spacing: -.05em; }
.permanentGuide p { margin: 0; color: #455368; }
.permanentGuide > b { min-width: 190px; padding: 17px; background: var(--navy); color: #fff; text-align: center; }

.articlePage { padding-bottom: 0; background: #fff; }
.articlePage > article { padding-top: 25px; }
.articleHeader { width: min(960px,86vw); margin: 0 auto 55px; }
.articleHeader > div { display: flex; align-items: center; gap: 14px; }
.articleHeader time { color: #6d7b8d; font-size: 13px; font-weight: 850; }
.articleHeader h1 { margin: 28px 0 20px; max-width: none; color: var(--navy-deep); font-size: clamp(48px,6.5vw,86px); }
.articleHeader > p { margin: 0; max-width: 820px; color: #536175; font-size: 20px; font-weight: 700; line-height: 1.9; }
.articleHeroImage { width: min(1160px,92vw); height: 610px; margin: 0 auto; position: relative; overflow: hidden; }
.articleHeroImage img { width: 100%; height: 100%; object-fit: cover; }
.articleHeroImage figcaption { position: absolute; left: 0; bottom: 0; padding: 12px 16px; background: var(--yellow); color: var(--navy-deep); font-size: 9px; font-weight: 950; letter-spacing: .14em; }
.articleLayout { width: min(1080px,88vw); margin: 0 auto; padding: 90px 0 120px; display: grid; grid-template-columns: minmax(0,1fr) 300px; gap: 80px; align-items: start; }
.articleBody > p { margin: 0 0 34px; color: #3f4d60; font-size: 18px; line-height: 2.15; }
.articlePoints { margin: 55px 0; padding: 38px; background: #edf3f8; border-left: 7px solid var(--yellow); }
.articlePoints > span { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .18em; }
.articlePoints h2 { margin: 10px 0 24px; font-size: 30px; }
.articlePoints ul { list-style: none; margin: 0; padding: 0; }
.articlePoints li { padding: 15px 0; display: grid; grid-template-columns: 42px 1fr; align-items: center; border-top: 1px solid #c9d6e2; }
.articlePoints li b { color: var(--blue); font-size: 12px; }
.articlePoints li span { font-size: 16px; font-weight: 850; }
.articleSide { position: sticky; top: 25px; }
.articleSide > div { padding: 30px; background: var(--navy); color: #fff; box-shadow: 9px 9px 0 var(--yellow); }
.articleSide > div > span { color: var(--yellow); font-size: 9px; font-weight: 950; letter-spacing: .15em; }
.articleSide h2 { margin: 16px 0; font-size: 31px; line-height: 1.2; }
.articleSide p { color: #d1dfed; font-size: 14px; }
.articleSide > div > a { margin-top: 20px; padding: 14px; display: block; background: var(--yellow); color: var(--navy-deep); font-size: 14px; font-weight: 950; text-align: center; }
.articleSide > a { margin-top: 28px; display: inline-block; color: var(--blue); font-size: 13px; font-weight: 900; }
.relatedStories { padding: 100px max(5vw, calc((100vw - 1060px)/2)); background: #edf2f7; }
.relatedStories > p { margin: 0 0 10px; color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .18em; }
.relatedStories > h2 { margin: 0 0 38px; font-size: clamp(36px,4vw,54px); }
.relatedStories > div { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.relatedStories .storyArchiveCard { min-height: 420px; }
.notFound { min-height: 65vh; padding: 120px 20px; display: grid; place-items: center; align-content: center; text-align: center; }
.notFound > p { color: var(--blue); font-weight: 950; letter-spacing: .17em; }
.notFound h1 { color: var(--navy-deep); font-size: 55px; }
.notFound a { padding: 15px 22px; background: var(--yellow); font-weight: 950; }

.contactDock { position: fixed; z-index: 50; right: 16px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 7px; filter: drop-shadow(0 10px 16px rgba(3,29,60,.24)); animation: dockIn .6s ease-out both; }
.contactDock a { width: 114px; min-height: 104px; padding: 12px 6px; display: flex; align-items: center; justify-content: center; flex-direction: column; border: 2px solid #fff; color: #fff; text-align: center; transition: transform .2s, filter .2s; }
.contactDock a:hover { transform: translateX(-6px) rotate(-2deg); filter: brightness(1.08); }
.contactDock i { width: 29px; height: 29px; display: grid; place-items: center; font-style: normal; }
.contactDock i img { width: 27px; height: 27px; filter: brightness(0) invert(1); }
.contactDock span { margin-top: 5px; font-size: 17px; font-weight: 950; letter-spacing: .04em; }
.contactDock b { margin-top: 3px; font-size: 14px; }
.contactDock .dockPhone b { font-size: 12px; white-space: nowrap; }
.dockPhone { background: var(--navy); }
.dockLine { background: #06c755; }
.contactDock .dockReserve { background: var(--yellow); color: var(--navy-deep); border-color: var(--navy-deep); }
.dockReserve i img { filter: brightness(0) saturate(100%) invert(13%) sepia(35%) saturate(2653%) hue-rotate(182deg) brightness(88%) contrast(102%); }

@keyframes heroZoom { 0% { transform: scale(1.03) translate3d(0,0,0); filter: saturate(1); } 55% { filter: saturate(1.15) contrast(1.04); } 100% { transform: scale(1.115) translate3d(-1.6%,.7%,0); filter: saturate(1.22) contrast(1.07); } }
@keyframes trackRush { from { background-position: 0 0; } to { background-position: 170px 0; } }
@keyframes heatDrift { from { transform: translate3d(-4%,8%,0) scale(.85); opacity: .4; } to { transform: translate3d(13%,-8%,0) scale(1.22); opacity: .85; } }
@keyframes streakRun { from { transform: translate3d(0,0,0) rotate(-17deg); opacity: 0; } 20% { opacity: .9; } to { transform: translate3d(-175vw,38vw,0) rotate(-17deg); opacity: 0; } }
@keyframes pulseGlow { 0%,100% { opacity: .45; transform: scale(.86); } 50% { opacity: 1; transform: scale(1.12); } }
@keyframes tickerMove { to { transform: translateX(-50%); } }
@keyframes iconFloat { 0%,100% { transform: translateY(0) rotate(-4deg); } 50% { transform: translateY(-8px) rotate(5deg); } }
@keyframes stickerBounce { 0%,100% { transform: rotate(8deg) translateY(0); } 50% { transform: rotate(3deg) translateY(-14px); } }
@keyframes horseRun { from { transform: translateX(0) scaleX(-1); } to { transform: translateX(calc(100vw + 120px)) scaleX(-1); } }
@keyframes dockIn { from { opacity: 0; transform: translate(30px,-50%); } to { opacity: 1; transform: translate(0,-50%); } }
@keyframes revealUp { from { opacity: 0; transform: translateY(35px); } to { opacity: 1; transform: translateY(0); } }
@keyframes revealCardRich { from { opacity: 0; translate: 0 72px; scale: .88; rotate: -2deg; } 65% { rotate: .6deg; } to { opacity: 1; translate: 0 0; scale: 1; rotate: 0deg; } }
@keyframes revealTitleRich { from { opacity: 0; translate: -55px 0; letter-spacing: .025em; } to { opacity: 1; translate: 0 0; letter-spacing: inherit; } }
@keyframes revealPanelRich { from { opacity: 0; translate: 65px 0; scale: .94; } to { opacity: 1; translate: 0 0; scale: 1; } }
@keyframes revealImageRich { from { opacity: .2; clip-path: inset(0 100% 0 0); scale: 1.08; } to { opacity: 1; clip-path: inset(0 0 0 0); scale: 1; } }
@keyframes revealBandRich { from { opacity: 0; translate: 0 40px; } to { opacity: 1; translate: 0 0; } }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; animation: none !important; transition: none !important; } }

@media (max-width: 900px) {
  body { font-size: 16px; padding-bottom: 74px; }
  .siteHeader { height: 72px; padding: 0 14px; gap: 12px; }
  .brand img { width: 51px; height: 58px; }
  .brand span { font-size: 15px; }
  .siteHeader .brand { width: auto; min-width: 0; flex: 1; margin: 0; }
  .siteHeader .brand span { display: none; }
  .siteHeader .headerCta { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
  .siteMenuToggle { display: flex; flex: 0 0 48px; width: 48px; height: 48px; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #fff; background: transparent; border: 1px solid #ffffff45; border-radius: 10px; cursor: pointer; }
  .siteMenuLabel { font-size: 10px; font-weight: 900; letter-spacing: .08em; }
  .siteMenuLines { width: 24px; height: 12px; position: relative; }
  .siteMenuLines i { position: absolute; left: 0; width: 24px; height: 2px; background: currentColor; transition: transform .35s ease, top .35s ease; }
  .siteMenuLines i:first-child { top: 1px; }
  .siteMenuLines i:last-child { top: 10px; }
  .is-menu-open .siteMenuLines i:first-child { top: 5px; transform: rotate(45deg); }
  .is-menu-open .siteMenuLines i:last-child { top: 5px; transform: rotate(-45deg); }
  .siteHeader nav { position: absolute; top: calc(100% + 8px); left: 12px; right: 12px; display: flex; flex-direction: column; gap: 0; padding: 18px 24px; max-height: calc(100dvh - 200px); overflow-y: auto; overscroll-behavior: contain; border: 1px solid #ffffff30; border-radius: 16px; background: var(--navy-deep); color: #fff; box-shadow: 0 16px 40px #031d3c66; visibility: hidden; opacity: 0; transform: translateY(-14px) scale(.96); transform-origin: top right; pointer-events: none; transition: opacity .3s, transform .4s cubic-bezier(.2,.8,.2,1), visibility .4s; }
  .siteHeader nav a { display: flex; align-items: center; justify-content: space-between; min-height: 55px; padding: 14px 0; border-bottom: 1px solid #ffffff30; font-size: 18px; opacity: 0; translate: 0 -8px; transition: opacity .35s, translate .35s; }
  .siteHeader nav a:last-child { border-bottom: 0; }
  .siteHeader nav a::after { content: '↗'; position: static; width: auto; height: auto; background: none; color: var(--yellow); }
  .siteHeader.is-menu-open nav { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
  .siteHeader.is-menu-open nav a { opacity: 1; translate: 0 0; transition-delay: .08s; }
  .siteHeader.is-menu-open nav a:nth-child(2) { transition-delay: .12s; }
  .siteHeader.is-menu-open nav a:nth-child(3) { transition-delay: .16s; }
  .siteHeader.is-menu-open nav a:nth-child(4) { transition-delay: .20s; }
  .siteHeader.is-menu-open nav a:nth-child(5) { transition-delay: .24s; }
  .siteHeader.is-menu-open nav a:nth-child(6) { transition-delay: .28s; }
  .siteMenuBackdrop { display: block; position: fixed; inset: 0; z-index: 75; background: #031d3c99; backdrop-filter: blur(4px); border: 0; visibility: hidden; opacity: 0; pointer-events: none; transition: opacity .35s, visibility .35s; }
  .site-menu-open { overflow: hidden; }
  .site-menu-open .siteMenuBackdrop { visibility: visible; opacity: 1; pointer-events: auto; }
  .footerBrand { width: 100%; justify-content: flex-start; align-items: center; text-align: left; gap: 16px; }
  .footerBrand img { width: 60px; height: 66px; flex: 0 0 60px; margin: 0; }
  .footerBrand strong { min-width: 0; font-size: 18px; line-height: 1.6; }
  .headerCta { padding: 12px 14px; font-size: 11px; box-shadow: 0 4px 0 #d4b900; }
  .hero { min-height: 850px; }
  .heroPhoto { object-position: 59% center; }
  .heroShade { background: linear-gradient(0deg, rgba(3,29,60,.98) 0%, rgba(3,29,60,.75) 57%, rgba(3,29,60,.35) 100%); }
  .heroHeat { inset: 10% -35% 25% 20%; opacity: .45; }
  .heroRaceGlow span { width: 70%; }
  .heroContent { padding: 72px 0 330px; }
  .eyebrow { align-items: flex-start; flex-direction: column; gap: 8px; }
  h1 { font-size: clamp(46px, 13vw, 66px); }
  .heroActions { align-items: flex-start; flex-direction: column; gap: 14px; }
  .primaryButton { width: 100%; }
  .heroBottom { display: flex; flex-direction: column-reverse; min-height: 0; }
  .bbqCard { grid-template-columns: 120px 1fr; width: 100%; min-height: 103px; border-left: 0; border-top: 4px solid var(--yellow); }
  .bbqCard img { min-height: 99px; }
  .bbqCard div { padding: 14px 16px; }
  .heroFacts { grid-template-columns: 1fr 1fr; padding-left: 0; }
  .heroFacts div { padding: 15px; }
  .heroFacts div:last-child { grid-column: 1 / -1; border-top: 1px solid rgba(255,255,255,.18); }
  .funTickerTrack { padding: 13px 0; animation-duration: 28s; }
  .funTicker span { font-size: 15px; }
  .intro { padding: 80px 20px 95px; }
  .sectionTitle, .sectionTitle.compact { grid-template-columns: 1fr; gap: 20px; margin-bottom: 40px; }
  .sectionTitle h2 { font-size: clamp(28px, 8.7vw, 39px); }
  .headingLine { white-space: nowrap; }
  .sectionLead { display: block; font-size: 16px; }
  .planGrid { grid-template-columns: 1fr; gap: 16px; }
  .planCard, .planCard.featured { transform: none; }
  .planCard.featured:hover, .planCard:hover { transform: translateY(-4px); }
  .planCard h3, .planCard > p:not(.planIcon) { min-height: auto; }
  .priceNote { text-align: left; line-height: 1.7; }
  .schedule { padding: 85px 20px 100px; grid-template-columns: 1fr; gap: 45px; }
  .sectionIndex { margin-bottom: 42px; }
  .schedule h2 { font-size: 48px; }
  .calendarShell { padding: 22px 16px; box-shadow: 9px 10px 0 var(--yellow); }
  .calendarHead { align-items: flex-start; flex-direction: column; gap: 6px; }
  .dateGroup { grid-template-columns: 58px 1fr; gap: 10px; }
  .month strong { font-size: 16px; }
  .dates { grid-template-columns: repeat(4,1fr); gap: 5px; }
  .dates button { min-height: 59px; padding: 6px 3px; }
  .dates b { font-size: 17px; }
  .calendarCta { align-items: flex-start; flex-direction: column; gap: 7px; }
  .experience { padding: 90px 20px; grid-template-columns: 1fr; gap: 55px; }
  .photoStack { min-height: 410px; }
  .photoMain { right: 9%; }
  .photoSub { width: 48%; height: 42%; }
  .roundLabel { width: 95px; height: 95px; right: -8px; top: -24px; font-size: 10px; }
  .experience h2 { font-size: 46px; }
  .experienceCopy > p:not(.kicker) { font-size: 17px; }
  .duoCallout { padding: 17px; align-items: flex-start; }
  .duoCallout > img { width: 42px; height: 42px; }
  .duoCallout b { font-size: 19px; }
  .funMovie { min-height: 670px; }
  .funMovie video { object-position: 56% center; }
  .movieShade { background: linear-gradient(0deg, rgba(3,29,60,.95) 0%, rgba(3,29,60,.64) 62%, rgba(3,29,60,.25) 100%); }
  .movieCopy { padding-top: 250px; }
  .movieCopy h2 { font-size: 48px; }
  .movieCopy > span { max-width: 80%; font-size: 16px; line-height: 1.7; }
  .movieSticker { width: 112px; height: 112px; right: 5vw; top: 8%; }
  .movieSticker strong { font-size: 25px; }
  .raceAnimation { height: 136px; }
  .laneOne { top: 28px; }
  .laneTwo { top: 68px; }
  .laneThree { top: 108px; }
  .raceLane span { width: 48px; height: 35px; }
  .raceLane img { width: 33px; height: 33px; }
  .steps { padding: 80px 20px; }
  .steps ol { grid-template-columns: 1fr; }
  .steps li { min-height: auto; border-right: 0; border-bottom: 1px solid #d4dce5; }
  .steps li::after { content: "↓"; right: calc(50% - 16px); top: auto; bottom: -16px; }
  .steps li b { margin-top: 25px; }
  .venue { grid-template-columns: 1fr; }
  .venueVisual { min-height: 490px; }
  .venueInfo { padding: 75px 20px; }
  .venue h2 { font-size: 41px; }
  .venue dl div { grid-template-columns: 74px 1fr; gap: 10px; }
  .infoBand { grid-template-columns: 1fr 1fr; }
  .infoBand article { padding: 28px 20px; border-bottom: 1px solid rgba(6,47,95,.15); }
  .newsBlog { padding: 85px 20px; }
  .newsHeading { grid-template-columns: 1fr; gap: 22px; margin-bottom: 40px; }
  .newsHeading h2 { font-size: 42px; }
  .newsHeading > p { font-size: 16px; }
  .newsGrid { grid-template-columns: 1fr; }
  .newsCard { min-height: auto; }
  .newsActions { justify-content: stretch; }
  .newsActions a { flex: 1; min-width: 0; }
  .faq { padding: 85px 20px; grid-template-columns: 1fr; gap: 42px; }
  .faqList { gap: 10px; }
  .faq summary { grid-template-columns: 36px minmax(0,1fr) 30px; gap: 12px !important; min-height: 72px; padding: 16px 14px !important; font-size: 16px; }
  .faq summary span { width: 36px; height: 36px; font-size: 14px; }
  .faq summary::after { width: 30px; height: 30px; font-size: 20px; }
  .faq details p { padding: 0 16px 20px 62px; font-size: 15px; }
  .finalCta { min-height: 520px; padding: 80px 20px; }
  .finalCta h2 { font-size: 48px; }
  .finalCta > a { min-width: 0; width: 100%; }
  footer { padding: 55px 20px 45px; grid-template-columns: 1fr; gap: 38px; }
  footer > p { margin-top: 10px; }
  .innerHero { min-height: 620px; padding: 70px 20px 120px; align-items: flex-end; }
  .innerHero::before { background: linear-gradient(0deg, rgba(3,29,60,.98), rgba(3,29,60,.7) 65%, rgba(3,29,60,.3)); }
  .innerHeroCopy > p { margin-top: 48px; }
  .innerHero h1 { font-size: clamp(45px,12vw,66px); }
  .innerHeroCopy > span { font-size: 16px; }
  .innerHeroBadge { right: 18px; bottom: 25px; width: 98px; height: 98px; }
  .innerHeroBadge img { width: 38px; height: 38px; }
  .innerHeroBadge b { margin-top: -18px; font-size: 8px; }
  .archiveIntro { grid-template-columns: 1fr; gap: 18px; }
  .archiveIntro h2 { font-size: 41px; }
  .productArchive { padding: 80px 20px; }
  .productArchiveGrid { grid-template-columns: 1fr; }
  .productArchiveCard h2, .productArchiveCard p { min-height: auto; }
  .addOnGateway { padding: 80px 20px; }
  .addOnGatewayGrid { grid-template-columns: 1fr; }
  .addOnGatewayGrid > a { min-height: 380px; padding: 32px 24px; }
  .productCategoryTabs { margin-top: -22px; }
  .productCategoryTabs a { min-height: 58px; font-size: 12px; }
  .addOnArchive { padding: 80px 20px; }
  .addOnProductGrid { grid-template-columns: 1fr; }
  .addOnProductCard { grid-template-columns: 40% 60%; min-height: 320px; }
  .addOnProductCard > div { padding: 23px 19px; }
  .addOnProductCard h2 { font-size: 23px; }
  .archiveSupport { padding: 70px 20px; grid-template-columns: 1fr; gap: 27px; }
  .archiveSupport > div:last-child { flex-direction: row; }
  .archiveSupport > div:last-child a { flex: 1; }
  .detailBreadcrumbs, .articleBreadcrumbs { padding: 22px 0; }
  .productReserveDate { grid-template-columns: 1fr auto; gap: 8px 12px; padding: 15px; }
  .productReserveDate > span { grid-column: 1 / -1; }
  .productReserveDate strong { font-size: 16px; }
  .productReserveDate button { padding: 10px; font-size: 11px; }
  .productInlineCalendar { padding: 22px 15px; box-shadow: 8px 9px 0 var(--yellow); }
  .productCalendarLegend { flex-direction: column; gap: 8px; }
  .productCalendarMonths { grid-template-columns: 52px 1fr; gap: 18px 8px; }
  .productCalendarDates { grid-template-columns: repeat(4,1fr); gap: 5px; }
  .productCalendarDates button { min-height: 58px; }
  .productDetail { margin-bottom: 75px; grid-template-columns: 1fr; gap: 35px; }
  .productGallery { position: relative; top: auto; }
  .productGallery > figure { height: 430px; }
  .galleryStamp { right: 15px; top: 18px; width: 96px; height: 96px; }
  .galleryStamp img { width: 35px; height: 35px; }
  .productBuyPanel { padding: 30px 22px; }
  .productBuyPanel h1 { font-size: 42px; }
  .detailPrice strong { font-size: 41px; }
  .productDetailInfo { padding: 75px 20px; grid-template-columns: 1fr; }
  .detailInfoCard { padding: 30px 24px; }
  .productSetDetails { padding: 80px 20px; }
  .productSetDetailsHeading { grid-template-columns: 1fr; gap: 20px; }
  .productSetDetailsHeading h2 { font-size: 39px; }
  .productSetTableWrap { box-shadow: 8px 9px 0 var(--yellow); }
  .relatedProducts { padding: 80px 20px; }
  .relatedGrid { grid-template-columns: 1fr; }
  .relatedCard { min-height: 185px; }
  .recentProducts { padding: 80px 20px; }
  .recentGrid { grid-template-columns: repeat(2,1fr); }
  .recentCard > img { height: 150px; }
  .planSelection { padding: 55px 20px 85px; }
  .planReserveDate { margin-bottom: 55px; }
  .planCatalogueIntro { margin-bottom: 58px; }
  .planCatalogueGroup + .planCatalogueGroup { margin-top: 72px; }
  .planCatalogueHeading { grid-template-columns: 1fr; gap: 15px; }
  .planCatalogueHeading p { font-size: 15px; }
  .planCatalogueGrid-1 { max-width: none; }
  .planOptionGrid { grid-template-columns: 1fr; }
  .planComparison { padding: 80px 20px 100px; }
  .storiesHeroMark { right: 20px; bottom: 28px; }
  .storiesArchive { padding: 75px 20px; }
  .storyFilters { overflow-x: auto; }
  .storyFilters a { min-width: 105px; }
  .storyArchiveGrid { grid-template-columns: 1fr; }
  .leadStory { grid-row: auto; }
  .leadStory figure, .storyArchiveCard figure { height: 230px; }
  .permanentGuide { margin-bottom: 90px; padding: 32px 24px; flex-direction: column; align-items: flex-start; }
  .permanentGuide > b { width: 100%; }
  .articleHeader { width: min(90vw,960px); margin-bottom: 38px; }
  .articleHeader h1 { font-size: 44px; }
  .articleHeader > p { font-size: 17px; }
  .articleHeroImage { height: 380px; }
  .articleLayout { width: min(88vw,1080px); padding: 65px 0 90px; grid-template-columns: 1fr; gap: 45px; }
  .articleBody > p { font-size: 17px; line-height: 2; }
  .articlePoints { padding: 28px 22px; }
  .articleSide { position: relative; top: auto; }
  .relatedStories { padding: 75px 20px; }
  .relatedStories > div { grid-template-columns: 1fr; }
  .notFound h1 { font-size: 40px; }
  .contactDock { left: 0; right: 0; top: auto; bottom: 0; height: 74px; transform: none; flex-direction: row; gap: 0; filter: drop-shadow(0 -5px 13px rgba(3,29,60,.2)); animation: none; }
  .contactDock a { width: auto; min-height: 74px; flex: 1; padding: 7px 3px; border: 0; border-right: 1px solid rgba(255,255,255,.28); }
  .contactDock a:hover { transform: none; }
  .contactDock i { width: 24px; height: 24px; }
  .contactDock i img { width: 23px; height: 23px; }
  .contactDock span { margin-top: 2px; font-size: 10px; }
  .contactDock b { font-size: 11px; }
}

@media (max-width: 560px) {
  .addOnProductCard { grid-template-columns: 1fr; }
  .addOnProductCard figure { height: 210px; }
  .productCategoryTabs { width: calc(100% - 24px); }
  .productCategoryTabs a { padding: 8px 4px; font-size: 11px; }
  .productReserveDate { width: calc(100% - 24px); }
  .productCalendarDates { grid-template-columns: repeat(3,1fr); }
  .productSetTableWrap table { min-width: 620px; }
  .recentGrid { grid-template-columns: 1fr; }
}

/* ご利用ガイド / よくあるご質問 */
.guidePageHero { background: url('../funabashi/images/grill-closeup.webp') center 48%/cover; }
.faqPageHero { background: url('../funabashi/images/race-night.webp') center 42%/cover; }
.contentLocalNav { position: relative; z-index: 5; width: min(1120px,calc(100% - 40px)); margin: -34px auto 0; display: grid; grid-template-columns: repeat(5,1fr); background: #fff; border: 2px solid var(--navy-deep); box-shadow: 10px 11px 0 var(--yellow); }
.contentLocalNav a { min-height: 86px; padding: 17px; display: flex; align-items: center; gap: 13px; border-right: 1px solid #d9e1e9; color: var(--navy-deep); font-size: 14px; font-weight: 900; }
.contentLocalNav a:last-child { border-right: 0; }
.contentLocalNav a:hover { background: var(--navy-deep); color: #fff; }
.contentLocalNav b { color: var(--blue); font-size: 12px; letter-spacing: .12em; }
.contentLocalNav a:hover b { color: var(--yellow); }
.contentGuide, .contentFaq { width: min(1160px,calc(100% - 40px)); margin: 0 auto; padding: 130px 0 145px; }
.contentSectionHeading { margin-bottom: 42px; }
.contentSectionHeading small { color: var(--blue); font-size: 11px; font-weight: 950; letter-spacing: .18em; }
.contentSectionHeading h2 { margin: 9px 0 0; color: var(--navy-deep); font-size: clamp(38px,5vw,64px); line-height: 1.15; letter-spacing: -.05em; }
.guideOverview, .guideContentSection, .faqContentGroup { scroll-margin-top: 30px; }
.guideContentSection { margin-top: 125px; }
.guideFactGrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 16px; }
.guideFactGrid article { min-height: 260px; padding: 33px; border: 2px solid var(--navy-deep); background: #fff; box-shadow: 7px 8px 0 #dce5ed; }
.guideFactGrid article:first-child { background: var(--yellow); box-shadow-color: var(--navy-deep); }
.guideFactGrid small, .guideDrinkCard small { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .17em; }
.guideFactGrid h3 { margin: 8px 0 20px; color: var(--navy-deep); font-size: 27px; }
.guideFactGrid strong { display: block; margin-bottom: 14px; color: var(--navy-deep); font-size: 31px; }
.guideFactGrid p { margin: 0; color: #526174; font-size: 16px; line-height: 1.85; }
.guideHours { margin: 0 0 20px; }
.guideHours > div { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 12px 0; border-top: 1px solid #d6e0e8; }
.guideHours dt { padding: 5px 10px; color: var(--navy-deep); background: var(--yellow); font-size: 14px; font-weight: 900; }
.guideHours > div:last-child dt { color: #fff; background: var(--navy-deep); }
.guideHours dd { margin: 0; }
.guideFactGrid .guideHours strong { margin: 0; font-size: clamp(22px, 3vw, 28px); white-space: nowrap; }
.guideFactGrid p a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.guideActionLinks { margin-top: 20px; display: flex; flex-wrap: wrap; gap: 7px; }
.guideActionLinks a, .guideActionLinks span { padding: 9px 12px; background: #fff; border: 1px solid var(--navy-deep); color: var(--navy-deep); font-size: 12px; font-weight: 900; }
.guideTwoColumn, .guideCancelTables, .guideSafetyGrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 20px; }
.guideInfoPanel, .guideNotePanel, .guideListCard, .guideCancelTables article, .guideSafetyGrid article { padding: 36px; border: 2px solid var(--navy-deep); background: #fff; }
.guideTwoColumn h3, .guideCancelTables h3, .guideSafetyGrid h3, .guideDrinkCard h3 { margin: 0 0 22px; color: var(--navy-deep); font-size: 25px; }
.guideInfoPanel dl, .guideCancelTables dl { margin: 0; }
.guideInfoPanel dl div, .guideCancelTables dl div { padding: 15px 0; display: grid; grid-template-columns: 1fr auto; gap: 15px; border-top: 1px solid #d6e0e8; }
.guideInfoPanel dt, .guideCancelTables dt { color: #526174; font-size: 14px; font-weight: 800; }
.guideInfoPanel dd, .guideCancelTables dd { margin: 0; color: var(--navy-deep); font-weight: 950; }
.guideNotePanel { background: #edf4fa; border-color: #b8ccdc; }
.guideNotePanel ul, .guideListCard ul, .guideDrinkCard ul { margin: 0; padding: 0; list-style: none; }
.guideNotePanel li, .guideListCard li, .guideDrinkCard li { position: relative; padding: 10px 0 10px 25px; color: #435268; font-size: 15px; font-weight: 750; line-height: 1.75; }
.guideNotePanel li::before, .guideListCard li::before, .guideDrinkCard li::before { content: "✓"; position: absolute; left: 0; color: var(--blue); font-weight: 950; }
.guideProhibitedCard { background: var(--navy-deep); color: #fff; }
.guideProhibitedCard h3 { color: var(--yellow); }
.guideProhibitedCard li, .guideProhibitedCard p { color: #dae5ef; }
.guideProhibitedCard li::before { content: "×"; color: var(--yellow); }
.guideListCard > p { margin: 21px 0 0; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.2); font-size: 14px; line-height: 1.8; }
.guideDrinkCard { margin-top: 20px; padding: 35px; display: grid; grid-template-columns: .55fr 1.45fr; gap: 45px; background: var(--yellow); border: 2px solid var(--navy-deep); box-shadow: 8px 9px 0 var(--navy-deep); }
.guideAlert { margin-bottom: 22px; padding: 27px 30px; border-left: 8px solid var(--yellow); background: var(--navy-deep); color: #fff; }
.guideAlert strong { font-size: 18px; }
.guideAlert p { margin: 8px 0 0; color: #cbd9e5; font-size: 14px; }
.guideCancelTables article { box-shadow: 7px 8px 0 #dce5ed; }
.guideCancelTables dd { color: var(--blue); font-size: 20px; }
.guideSafetyGrid article:first-child { border-top: 8px solid var(--yellow); }
.guideSafetyGrid article:last-child { border-top: 8px solid var(--blue); }
.guideSafetyGrid p { margin: 0; color: #526174; font-size: 15px; line-height: 1.9; }
.faqLocalNav { grid-template-columns: repeat(4,1fr); }
.faqIntroHeading { display: grid; grid-template-columns: .45fr 1.55fr; align-items: end; }
.faqContentGroup { margin-top: 85px; display: grid; grid-template-columns: 280px minmax(0,1fr); gap: 50px; }
.faqContentGroup > header { display: flex; align-items: flex-start; gap: 18px; }
.faqContentGroup > header > span { display: grid; place-items: center; flex: none; width: 58px; height: 58px; background: var(--yellow); border: 2px solid var(--navy-deep); color: var(--navy-deep); font-weight: 950; }
.faqContentGroup > header small { color: var(--blue); font-size: 9px; font-weight: 950; letter-spacing: .15em; }
.faqContentGroup > header h2 { margin: 5px 0 0; color: var(--navy-deep); font-size: 27px; line-height: 1.3; }
.faqContentList { border-top: 2px solid var(--navy-deep); }
.faqContentList details { border-bottom: 1px solid #d3dde6; background: #fff; }
.faqContentList summary { list-style: none; min-height: 88px; padding: 20px 55px 20px 20px; display: grid !important; grid-template-columns: 42px minmax(0,1fr); align-items: center; gap: 18px !important; cursor: pointer; position: relative; }
.faqContentList summary::-webkit-details-marker { display: none; }
.faqContentList summary::before { content: none !important; display: none !important; }
.faqContentList summary::after { content: "+"; position: absolute; right: 7px; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--yellow); color: var(--navy-deep); font-size: 21px; }
.faqContentList details[open] summary::after { content: "−"; }
.faqContentList summary > span, .faqContentAnswer > span { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--navy-deep); color: var(--yellow); font-family: "Arial Black",sans-serif; font-size: 15px; }
.faqContentList summary b { color: var(--navy-deep); font-size: 17px; line-height: 1.65; }
.faqContentAnswer { padding: 4px 45px 28px 60px; display: grid; grid-template-columns: 42px 1fr; gap: 18px; }
.faqContentAnswer > span { background: var(--blue); color: #fff; }
.faqContentAnswer p { margin: 4px 0 12px; color: #4e5e72; font-size: 15px; line-height: 1.95; }
.faqContentAnswer ul { margin: 13px 0; padding-left: 20px; color: #4e5e72; font-size: 14px; line-height: 1.9; }
.faqSupportCard { margin-top: 110px; padding: 45px; display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 40px; background: var(--navy-deep); color: #fff; box-shadow: 10px 11px 0 var(--yellow); }
.faqSupportCard small { color: var(--yellow); font-size: 10px; font-weight: 950; letter-spacing: .16em; }
.faqSupportCard h2 { margin: 8px 0 0; font-size: 36px; line-height: 1.35; }
.faqSupportCard > div:last-child { display: grid; gap: 10px; }
.faqSupportCard a { min-height: 56px; padding: 15px 18px; display: flex; align-items: center; justify-content: space-between; background: #fff; color: var(--navy-deep); font-weight: 950; }
.faqSupportCard a:last-child { background: #06c755; color: #fff; }

@media (max-width: 900px) {
  .contentLocalNav { grid-template-columns: repeat(2,minmax(0,1fr)); width: calc(100% - 40px); overflow: visible; }
  .contentLocalNav a { min-width: 0; min-height: 68px; padding: 14px 12px; gap: 8px; border-bottom: 1px solid #d9e1e9; font-size: 14px; }
  .contentLocalNav a:nth-child(even) { border-right: 0; }
  .contentLocalNav a:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .contentLocalNav a span { min-width: 0; overflow-wrap: anywhere; }
  .guideOverview, .guideContentSection, .faqContentGroup { scroll-margin-top: 140px; }
  .contentGuide, .contentFaq { width: calc(100% - 40px); padding: 100px 0; }
  .guideFactGrid, .guideTwoColumn, .guideCancelTables, .guideSafetyGrid { grid-template-columns: 1fr; }
  .guideContentSection { margin-top: 90px; }
  .guideDrinkCard { grid-template-columns: 1fr; gap: 15px; }
  .faqContentGroup { grid-template-columns: 1fr; gap: 24px; }
  .faqIntroHeading { grid-template-columns: 1fr; gap: 10px; }
  .faqSupportCard { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .contentLocalNav { justify-content: flex-start; }
  .contentGuide, .contentFaq { width: calc(100% - 32px); padding: 80px 0 100px; }
  .guideFactGrid article, .guideInfoPanel, .guideNotePanel, .guideListCard, .guideCancelTables article, .guideSafetyGrid article { padding: 25px 21px; }
  .guideFactGrid h3, .guideTwoColumn h3, .guideCancelTables h3, .guideSafetyGrid h3 { font-size: 23px; }
  .guideDrinkCard { padding: 27px 22px; }
  .faqContentGroup { margin-top: 68px; }
  .faqContentList summary { min-height: 78px; padding: 15px 45px 15px 14px; grid-template-columns: 36px minmax(0,1fr); gap: 12px !important; }
  .faqContentList summary > span, .faqContentAnswer > span { width: 36px; height: 36px; }
  .faqContentList summary b { font-size: 15px; }
  .faqContentAnswer { padding: 4px 12px 24px 0; grid-template-columns: 36px 1fr; gap: 12px; }
  .faqSupportCard { padding: 30px 22px; }
  .faqSupportCard h2 { font-size: 29px; }
}

/* ==================================================================
 * ショップ系ページ（商品詳細／商品カテゴリー／会員）を船橋の見た目にする
 *
 * この3ページだけ、さぎ山の参考デザイン（クリーム地・茶色の枠・
 * グレーの影・Impact の数字・回転した丸スタンプ）がそのまま残っていて、
 * トップページや ご利用ガイド／FAQ と明らかに別物に見えていた。
 *
 * 船橋の決まりごと（ご利用ガイド・FAQで使っているものに揃える）：
 *   面   … 白 か 濃紺(--navy-deep)。クリーム(--paper)は使わない
 *   枠   … 2〜3px solid var(--navy-deep)
 *   影   … box-shadow: 10px 11px 0 var(--yellow) のハードシャドウ
 *   英字 … color: var(--blue) / 10px / 950 / letter-spacing .16em
 *   数字 … "Arial Black"（Impact は使わない）
 *   反転 … 濃紺の面の上では、アクセントを var(--yellow) にする
 *
 * ※レイアウト（grid-template-columns など）はここでは触らない。
 *   さぎ山CSSのレスポンシブ指定より後ろに来るので、ここで組み方を変えると
 *   スマホ表示を壊してしまう。組み方を変えたいときは必ず @media も書く。
 * ================================================================== */

/* ---- 商品カテゴリー：ヒーロー ---------------------------------- */
.shopArchiveHero {
  position: relative; overflow: hidden;
  background: var(--navy-deep); color: #fff;
}
/* 右上の熱（トップのヒーローと同じ考え方。
   黄色の帯を斜めに通す案は見出しとスタンプを横切って読みづらかったのでやめた） */
.shopArchiveHero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse at 86% 26%, rgba(255,220,0,.20), transparent 56%);
}
/* 走路のライン */
.shopArchiveHero::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .17;
  background: repeating-linear-gradient(110deg, transparent 0 76px, rgba(255,255,255,.35) 77px 79px);
  clip-path: polygon(0 63%, 100% 24%, 100% 39%, 0 78%);
}
.shopArchiveHero > * { position: relative; z-index: 2; }
.shopArchiveHero .plansBreadcrumb { color: rgba(255,255,255,.62); }
.shopArchiveHero .plansBreadcrumb a:hover { color: var(--yellow); }
.shopArchiveHero .kicker { color: var(--yellow); font-size: 11px; font-weight: 950; letter-spacing: .17em; }
/* さぎ山の 100px のままだと「楽しむ気持ちだけ。」が入りきらず
   「け。」だけ3行目に落ちるので、入る大きさまで下げる */
.shopArchiveHero h1 { color: #fff; font-size: clamp(44px, 5.8vw, 84px); }
.shopArchiveHero h1 span { color: var(--yellow); }
.shopArchiveHero > div:first-child > p:last-child { color: rgba(255,255,255,.82); }

/* 丸スタンプ → 黄色いバッジに */
.shopHeroStamp {
  background: var(--yellow); border: 4px solid var(--navy-deep);
  color: var(--navy-deep); box-shadow: 13px 14px 0 var(--blue);
  transform: rotate(-5deg);
}
.shopHeroStamp svg { color: var(--navy-deep); }
.shopHeroStamp strong,
.shopHeroStamp span { font-family: "Arial Black", "Yu Gothic", sans-serif; }

/* ---- 商品カテゴリー：カテゴリー切り替え ------------------------ */
.shopCategoryNav { border: 3px solid var(--navy-deep); box-shadow: 9px 10px 0 var(--yellow); }
.shopCategoryNav a { color: var(--navy-deep); border-color: #cfdbe6; }
.shopCategoryNav a:hover { background: var(--blue); color: #fff; }
.shopCategoryNav a.is-current { background: var(--navy-deep); color: var(--yellow); }

/* ---- 見出し（カテゴリー／商品詳細で共用） ---------------------- */
.shopSectionHeading .kicker,
.recommendationHeading .kicker { color: var(--blue); font-size: 10px; font-weight: 950; letter-spacing: .17em; }
.shopSectionHeading h2 { color: var(--navy-deep); }
.shopSectionHeading h2 span { color: var(--blue); }
.shopSectionHeading > p:last-child { color: #52627a; }

/* ---- 商品カード ------------------------------------------------ */
.shopProductItem { border: 3px solid var(--navy-deep); box-shadow: 10px 11px 0 var(--yellow); }
.shopProductItem:hover { box-shadow: 14px 16px 0 var(--blue); }
.shopProductItem .item_photo { background: #e6edf4; }
.productIndex {
  width: 46px; height: 46px; border-radius: 0;
  background: var(--yellow); color: var(--navy-deep);
  border: 2px solid var(--navy-deep);
  font-family: "Arial Black", "Yu Gothic", sans-serif; font-size: 16px;
}
.item_tags span { background: #fff; color: var(--navy-deep); border: 2px solid var(--navy-deep); }
.item_tags span svg { color: var(--blue); }
.shopProductItem .item_name { color: var(--navy-deep); }
.shopProductNote { color: #55657a; }
.shopProductFoot { border-top: 2px solid var(--navy-deep); }
.shopProductItem .item_price span { color: var(--navy-deep); font-weight: 900; }
.shopProductCta {
  padding: 11px 15px; background: var(--navy-deep); color: var(--yellow);
  transition: background .2s, color .2s;
}
.shopProductItem:hover .shopProductCta { background: var(--yellow); color: var(--navy-deep); }
.shopProductItem .productSoldOut { background: rgba(3,29,60,.68); }
.shopProductEmpty { color: var(--navy-deep); }

/* ---- ページ送り ------------------------------------------------ */
.shopPagination a,
.shopPagination span.page-numbers { border-color: var(--navy-deep); color: var(--navy-deep); }
.shopPagination a:hover,
.shopPagination a:focus-visible,
.shopPagination span.current { background: var(--navy-deep); border-color: var(--navy-deep); color: var(--yellow); }
.shopPagination span.dots { color: #8496a8; }

/* ---- 診断バナー ------------------------------------------------ */
.shopDiagnosisBanner {
  background: var(--navy-deep); color: #fff;
  border: 3px solid var(--navy-deep); box-shadow: 12px 13px 0 var(--yellow);
}
.shopDiagnosisBanner small { color: var(--yellow); }
.shopDiagnosisBanner b { background: var(--yellow); color: var(--navy-deep); }

/* ---- 商品詳細：パンくず・価格・買うボタン ---------------------- */
.productBreadcrumb { color: #6b7c90; }
.productBreadcrumb a:hover { color: var(--blue); }

.productPrice { border-top: 2px solid var(--navy-deep); border-bottom: 2px solid var(--navy-deep); }
.productPrice strong { color: var(--navy-deep); font-family: "Arial Black", "Yu Gothic", sans-serif; }
.productPrice small { background: var(--navy-deep); color: var(--yellow); }
.productNote { color: #6b7c90; }

.productQuickPoints li { background: #eaf1f9; color: var(--navy-deep); }
.productQuickPoints svg { color: var(--blue); }

.productBuyBox .opt-row label { color: var(--navy-deep); }
.productBuyBox .opt-row select,
.productBuyBox .opt-row input[type="text"] { background: #f2f6fa; color: var(--navy-deep); border: 2px solid #c3d1de; }
.productBuyBox .opt-row select:focus,
.productBuyBox .opt-row input[type="text"]:focus { border-color: var(--blue); background: #fff; outline: 3px solid rgba(10,78,145,.16); }

.productBuyBox .skuform .skubutton,
.productBuyBox .skuform .skubutton:link,
.productBuyBox .skuform .skubutton:visited {
  background: var(--navy-deep); color: #fff;
  border: 3px solid var(--navy-deep); box-shadow: 7px 8px 0 var(--yellow);
  transition: background .2s, color .2s, box-shadow .2s, transform .2s;
}
.productBuyBox .skuform .skubutton:hover {
  background: var(--yellow); color: var(--navy-deep);
  box-shadow: 3px 4px 0 var(--navy-deep); transform: translate(3px, 3px);
}

/* ---- 商品詳細：プラン説明（濃紺の面） -------------------------- */
.productStory { position: relative; overflow: hidden; background: var(--navy-deep); }
.productStory::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .14;
  background: repeating-linear-gradient(110deg, transparent 0 76px, rgba(255,255,255,.35) 77px 79px);
  clip-path: polygon(0 58%, 100% 20%, 100% 34%, 0 72%);
}
.productStory > * { position: relative; z-index: 2; }
.productStory .kicker { color: var(--yellow); font-size: 10px; font-weight: 950; letter-spacing: .17em; }
.productStory h2 span { color: var(--yellow); }
.productStory > div:last-child { color: rgba(255,255,255,.84); }

/* ---- 商品詳細：含まれるもの ------------------------------------ */
.productTemplateIncluded .productIncludedGrid article,
.productIncludedGrid article {
  background: #fff; border: 3px solid var(--navy-deep);
  box-shadow: 8px 9px 0 var(--yellow);
}
.productIncludedGrid article > span {
  color: #dbe5ef; font-family: "Arial Black", "Yu Gothic", sans-serif;
}
.productIncludedGrid article svg { color: var(--blue); }
.productIncludedGrid article strong { color: var(--navy-deep); }

/* ---- 商品詳細：セット内容の見出しまわり ------------------------ */
/* 「PLAN CONTENTS」用の指定（黄色・10px・字間広め）が、右側の注意書きの
   <p> にもかかって読みづらくなっていた。注意書きは普通の文章として出す。
   さらに中の <small> は --orange-deep（＝濃紺）で、濃紺の面に濃紺の文字だった。 */
.productSetDetailsHeading > p:not(.kicker) {
  color: #b9cbdd; font-size: 14px; font-weight: 700;
  letter-spacing: 0; line-height: 1.8;
}
.productSetDetailsHeading > p:not(.kicker) small { color: var(--yellow); font-size: 12px; }
.productSetDetailsHeading h3 { margin: 0; letter-spacing: -.05em; font-size: clamp(34px, 4.4vw, 55px); }

/* セルの地色は商品ごとにバラバラ（クリーム地の商品と白地の商品があった）なので、
   ここで必ず白系に揃える。※ハイライト用のCSSは !important なのでこれに勝つ。 */
.productSetTableWrap tbody td { background: #fff; }
.productSetTableWrap tbody th { background: #f2f6fa; }
.productSetTableWrap thead th:first-child { background: var(--yellow); }

/* ---- 商品詳細：セット内容の区切り行 ---------------------------- */
.productSetTable .productSetGroup th,
.productSetTable .productSetGroup td {
  background: var(--blue) !important; color: #fff !important;
  letter-spacing: .04em;
}

/* ---- 商品詳細：あわせてチェック／最近見た商品 ------------------ */
/* クリーム地 → 白地にして、カードの影を黄色に */
.productRecommendations { background: #fff; }
.productRecommendationBlock + .productRecommendationBlock { border-top: 3px solid var(--navy-deep); }
.recommendationHeading h2 { color: var(--navy-deep); }
.productRecommendationCard {
  color: var(--navy-deep); border: 3px solid var(--navy-deep);
  box-shadow: 8px 9px 0 var(--yellow);
}
.productRecommendationCard:hover { box-shadow: 12px 14px 0 var(--blue); }
.productRecommendationCard small { color: var(--blue); font-family: "Arial Black", "Yu Gothic", sans-serif; }
.productRecommendationCard b { color: var(--navy-deep); font-family: "Arial Black", "Yu Gothic", sans-serif; }
.productRecommendationCard b em { color: #6b7c90; }
.productRecommendationCard i { color: var(--blue); border-top: 2px solid var(--navy-deep); }
.recentItemsClear button:hover { color: var(--blue); }

/* ---- 商品詳細：左下の固定カート ------------------------------- */
.productStickyCta {
  color: var(--navy-deep); background: #fff;
  border: 3px solid var(--navy-deep); box-shadow: 8px 9px 0 var(--yellow);
  transition: box-shadow .2s, transform .2s;
}
.productStickyCta:hover { transform: translate(2px, 2px); box-shadow: 5px 6px 0 var(--blue); }
.productStickyCta strong { font-family: "Arial Black", "Yu Gothic", sans-serif; }
.productStickyCta b { background: var(--navy-deep); color: var(--yellow); }
.productStickyCta:hover b { background: var(--yellow); color: var(--navy-deep); }

/* ---- 会員ページ ------------------------------------------------ */
.memberHero,
.memberFormHero,
.completionHero { position: relative; overflow: hidden; background: var(--navy-deep); }
.memberHero::before,
.memberFormHero::before,
.completionHero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(118deg, transparent 0 72%, rgba(255,220,0,.16) 72% 76%, transparent 76%);
}
.memberHero::after,
.memberFormHero::after,
.completionHero::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .16;
  background: repeating-linear-gradient(110deg, transparent 0 76px, rgba(255,255,255,.35) 77px 79px);
  clip-path: polygon(0 64%, 100% 26%, 100% 41%, 0 79%);
}
.memberHero > *,
.memberFormHero > *,
.completionHero > * { position: relative; z-index: 2; }
.memberHero > svg,
.memberFormHero > svg,
.completionHero > svg { color: var(--yellow); }
.memberHero .kicker { color: var(--yellow); font-size: 11px; font-weight: 950; letter-spacing: .17em; }

.loginbox,
.newmember,
.memberNext,
.memberHistory,
.memberProfile,
.memberReset {
  border: 3px solid var(--navy-deep);
  box-shadow: 10px 11px 0 var(--yellow);
}
.newmember { background: var(--yellow); box-shadow: 10px 11px 0 var(--navy-deep); }
.newmember > svg { color: var(--navy-deep); }
.newmember li::before { color: var(--navy-deep); }
.newmember > a { background: var(--navy-deep); color: var(--yellow); }
.newmember ul { border-color: rgba(3,29,60,.28); }

.memberPanelHeading small,
.newmember > small { color: var(--blue); font-family: "Arial Black", "Yu Gothic", sans-serif; }
.newmember > small { color: var(--navy-deep); }
.memberPanelHeading h2,
.newmember h2 { color: var(--navy-deep); }
.memberPanelHeading p,
.newmember p { color: #52627a; }
.newmember p { color: #2c3f56; }

.loginbox input[type="email"],
.loginbox input[type="password"],
.loginbox input[type="text"],
.memberForm input {
  background: #f2f6fa; color: var(--navy-deep); border: 2px solid #c3d1de;
}
.loginbox input[type="email"]:focus,
.loginbox input[type="password"]:focus,
.loginbox input[type="text"]:focus,
.memberForm input:focus { border-color: var(--blue); background: #fff; outline: 3px solid rgba(10,78,145,.16); }

.member_login_button {
  background: var(--navy-deep); color: #fff;
  border: 3px solid var(--navy-deep); box-shadow: 6px 7px 0 var(--yellow);
  transition: background .2s, color .2s, box-shadow .2s, transform .2s;
}
.member_login_button:hover {
  background: var(--yellow); color: var(--navy-deep);
  box-shadow: 3px 4px 0 var(--navy-deep); transform: translate(3px, 3px);
}
.lostPassword { color: #52627a; }
.lostPassword:hover { color: var(--blue); }

.memberHistoryTable { border: 2px solid var(--navy-deep); }
.memberHistoryHead { background: var(--navy-deep); color: var(--yellow); }
.memberHistoryTable > a { border-top: 1px solid #d5dee7; color: var(--navy-deep); }
.memberHistoryTable > a:hover { background: #eaf1f9; }
.memberHistoryTable b { background: var(--blue); }
.memberHistoryTable b.is-complete { background: #7b8ea1; }
.contactForm b,
.memberForm b { background: var(--blue); }
.memberResetNote svg { color: var(--blue); }

/* Welcart由来のリンク色（会員まわり）も青に寄せる
   （新規会員登録のボタンは黄色いカードの中の濃紺ボタンなので対象外） */
.loginbox a:hover { color: var(--blue); }

/* ---- 選んだ日と開催区分（デイ／ナイター） ---------------------- */
.productReserveDate .reserveTerm {
  display: inline-block; margin-left: 12px; padding: 4px 10px;
  background: var(--yellow); color: var(--navy-deep);
  font-size: 11px; font-weight: 950; font-style: normal; letter-spacing: .04em;
  vertical-align: middle;
}
.productReserveDate .reserveTerm:empty { display: none; }
.productReserveDate .reserveTerm.is-closed { background: #7b8ea1; color: #fff; }

@media (max-width: 900px) {
  .productReserveDate .reserveTerm { margin: 6px 0 0; display: block; width: max-content; }
}

/* ---- 予約カレンダー：日付を選んだ後に時間帯を選択 -------------- */
.mtssb-custom-calendar .day-box.is-day .calendar-mark a { color: var(--blue); }
.mtssb-custom-calendar .day-box.is-night .calendar-mark a { color: #7a5cc0; }
.mtssb-custom-calendar .day-box.has-sessions .calendar-mark a { color: var(--blue); }
.mtssb-custom-calendar .day-box .schedule-note {
  margin-top: 2px; font-size: 9px; font-weight: 900; letter-spacing: .02em;
}
.mtssb-custom-calendar .day-box.is-day .schedule-note { color: var(--blue); }
.mtssb-custom-calendar .day-box.is-night .schedule-note { color: #7a5cc0; }
.mtssb-custom-calendar .day-box.has-sessions .schedule-note { color: var(--blue); }
.mtssb-custom-calendar .day-box.disable { color: #b6c2ce; }

.reserveSessionPicker {
  margin: 18px 5px 0; padding: 20px;
  border: 2px solid var(--navy-deep); background: #fff;
  box-shadow: 7px 8px 0 var(--yellow);
}
.reserveSessionPicker > strong {
  display: block; margin-bottom: 13px; color: var(--navy-deep);
  font-size: 16px; font-weight: 950;
}
.reserveSessionPicker > div { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.reserveSessionChoice {
  min-height: 64px; padding: 11px 16px; border: 2px solid var(--navy-deep);
  background: #edf5fb; color: var(--navy-deep); cursor: pointer;
  text-align: left; transition: transform .18s, box-shadow .18s;
}
.reserveSessionChoice.is-night { background: #eee9fb; }
.reserveSessionChoice:hover { transform: translateY(-2px); box-shadow: 0 6px 0 rgba(3,29,60,.18); }
.reserveSessionChoice span,
.reserveSessionChoice b { display: block; }
.reserveSessionChoice span { font-size: 13px; font-weight: 950; }
.reserveSessionChoice b { margin-top: 3px; font-size: 16px; }

/* 元商品データに列数の多い表が入っていても、1行目と各列が読みやすく収まる。 */
.productSetTableWrap .productSetTable { width: 100%; min-width: 920px; table-layout: auto; }
.productSetTableWrap .productSetTable th,
.productSetTableWrap .productSetTable td { min-width: 78px; white-space: nowrap; }
.productSetTableWrap .productSetTable th:first-child,
.productSetTableWrap .productSetTable td:first-child { min-width: 185px; }
.productSetTableWrap .productSetTable tbody td:last-child { width: auto; }

@media (max-width: 560px) {
  .reserveSessionPicker { margin-top: 14px; padding: 15px; }
  .reserveSessionPicker > div { grid-template-columns: 1fr; }
  .reserveSessionChoice { min-height: 58px; }
}

/* ---- 下層ページに足した共通パーツ ------------------------------ */

/* カテゴリーのヒーローに出す「BBQ SET PLAN ／ 01 / CATEGORY」 */
.shopHeroIndex {
  display: flex; align-items: center; flex-wrap: wrap; gap: 16px;
  margin-bottom: 18px;
}
.shopHeroIndex .kicker { margin: 0; }
.shopHeroIndex > span {
  padding: 6px 12px;
  border: 2px solid var(--yellow); color: var(--yellow);
  font-size: 10px; font-weight: 950; letter-spacing: .16em;
}

/* 流れる帯を下層ページの途中に置いたときの余白
   （トップではヒーローの真下なので余白は要らない） */
.productRecommendations + .funTicker,
.productArchiveSection + .funTicker,
.memberHero + .funTicker { margin: 0; }
.productArchiveSection + .funTicker { margin-bottom: 90px; }
.productSetDetails + .funTicker,
.productIncluded + .funTicker { margin-top: 0; }
.memberHero + .funTicker { margin-bottom: 0; }

@media (max-width: 820px) {
  .shopHeroIndex { gap: 10px; margin-bottom: 14px; }
  .shopHeroIndex > span { font-size: 9px; padding: 5px 9px; }
  .productArchiveSection + .funTicker { margin-bottom: 70px; }
}

/* 2026-09 船橋トーン統一・予約フロー調整 */
.planCard ul {
  align-items: center;
  align-content: center;
}
.planCard li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-height: 34px;
  padding: 7px 13px;
  white-space: nowrap;
  line-height: 1.2;
  border-radius: 8px;
}
.faq { grid-template-columns: minmax(0, .68fr) minmax(0, 1.32fr); }
.faq > *, .faqList, .faqList details, .faqList summary { min-width: 0; width: 100%; }
.faqList details[open] { overflow: hidden; }

/* One entrance per element: never stop half-faded at a scroll position. */
.reveal-ready [data-reveal] { opacity: 0; filter: none; transform: none; translate: 0 38px; scale: 1; transition: opacity .65s ease, translate .8s cubic-bezier(.2,.75,.2,1), scale .8s cubic-bezier(.2,.75,.2,1), clip-path .9s ease; transition-delay: var(--reveal-delay, 0ms); }
.reveal-ready [data-reveal="scale"] { translate: 0 48px; scale: .96; }
.reveal-ready [data-reveal="image"] { translate: 0 20px; clip-path: inset(0 12% 0 0 round 8px); }
.reveal-ready [data-reveal].is-visible { opacity: 1; filter: none; translate: 0 0; scale: 1; clip-path: none; }
.reveal-ready [data-reveal="image"].is-visible { clip-path: inset(0 0 0 0); }
@media (prefers-reduced-motion: reduce) {
  .reveal-ready [data-reveal] { opacity: 1; translate: none; scale: 1; clip-path: none; }
}

/* ブログ・お知らせを船橋のネイビー×イエローへ統一。 */
.journalPage { color: var(--navy-deep); background: var(--paper); }
.journalPage .journalHero,
.journalPage .journalHeroBlog {
  background:
    radial-gradient(circle at 82% 25%, rgba(255,220,0,.2), transparent 28%),
    repeating-linear-gradient(112deg, transparent 0 72px, rgba(255,255,255,.045) 73px 75px),
    linear-gradient(135deg, var(--navy-deep), var(--navy) 68%, var(--blue));
}
.journalPage .journalHero::before { border-color: rgba(255,220,0,.12); }
.journalPage .journalHero h1 span,
.journalPage .journalHero > svg,
.journalPage .journalSectionHeading .kicker { color: var(--yellow); }
.journalPage .blogCategoryNav a {
  border: 2px solid rgba(6,47,95,.18);
  background: #fff;
  color: var(--navy);
}
.journalPage .blogCategoryNav a:hover,
.journalPage .blogCategoryNav a.is-current {
  border-color: var(--navy);
  background: var(--yellow);
  color: var(--navy-deep);
}
.journalPage .blogCard {
  border: 1px solid rgba(6,47,95,.16);
  background: #fff;
  box-shadow: 0 18px 45px rgba(3,29,60,.1);
}
.journalPage .blogCard:hover {
  border-color: var(--blue);
  box-shadow: 0 25px 60px rgba(3,29,60,.18);
}
.journalPage .blogCard figure span { background: var(--yellow); color: var(--navy-deep); }
.journalPage .blogCard time,
.journalPage .blogCard b { color: var(--blue); }

/* カートの進行表示：点線をやめ、ゲートを思わせる直線と角丸札に。 */
.cartPage .cart-steps { position: relative; gap: 14px; }
.cartPage .cart-steps::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  z-index: 0;
  top: 24px;
  left: 11%;
  right: 11%;
  height: 7px;
  border: 0;
  background: linear-gradient(90deg, var(--navy) 0 50%, var(--yellow) 50% 100%);
  background-size: 26px 100%;
  box-shadow: 0 2px 0 rgba(3,29,60,.12);
}
.cartPage .cart-steps li { z-index: 1; color: #64758a; }
.cartPage .cart-steps li:not(:last-child)::after { content: none !important; display: none !important; }
.cartPage .cart-steps li > span {
  width: 56px;
  height: 50px;
  border: 3px solid var(--navy);
  border-radius: 13px 13px 7px 7px;
  background: #fff;
  color: var(--navy);
  box-shadow: 5px 5px 0 var(--yellow);
}
.cartPage .cart-steps li.is-done > span { background: var(--blue); color: #fff; box-shadow: 5px 5px 0 rgba(255,220,0,.75); }
.cartPage .cart-steps li.is-current { color: var(--navy-deep); }
.cartPage .cart-steps li.is-current > span { border-color: var(--navy); background: var(--yellow); color: var(--navy-deep); box-shadow: 5px 5px 0 var(--navy); }
.cartPage .cart-steps li strong { margin-top: 4px; font-weight: 900; }
.paymentPreview p { color: var(--navy-deep) !important; font-weight: 800; }

/* 予約カレンダーをトップのカードと同じ配色・質感に。 */
.mtssb-custom-calendar .funabashiReserveCalendar {
  overflow: hidden;
  border: 3px solid var(--navy);
  border-radius: 18px;
  background: #fff;
  box-shadow: 8px 9px 0 var(--yellow);
}
.mtssb-custom-calendar .calendar-caption { background: var(--navy); color: #fff; padding: 16px; font-size: 21px; font-weight: 900; }
.mtssb-custom-calendar .header-row th { background: #edf4fb; color: var(--navy); font-weight: 900; }
.mtssb-custom-calendar .day-box.has-sessions { background: #fffdf0; }
.mtssb-custom-calendar .day-box.has-sessions .calendar-daylink {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--yellow);
  color: var(--navy-deep) !important;
  font-weight: 950;
}
.mtssb-custom-calendar .monthly-prev-next { background: #edf4fb; padding: 13px 16px; }
.mtssb-custom-calendar .monthly-prev-next a { color: var(--blue); font-weight: 900; }

@media (max-width: 560px) {
  .cartPage .cart-steps { gap: 5px; }
  .cartPage .cart-steps::before { top: 18px; left: 10%; right: 10%; height: 5px; background-size: 18px 100%; }
  .cartPage .cart-steps li > span { width: 42px; height: 38px; border-radius: 10px 10px 5px 5px; box-shadow: 3px 3px 0 var(--yellow); }
  .cartPage .cart-steps li.is-current > span { box-shadow: 3px 3px 0 var(--navy); }
}

/* 2026-09 プライバシー／食材商品も船橋のネイビー×イエローへ統一。 */
.policyPage {
  color: var(--navy-deep);
  background: linear-gradient(180deg, #edf4fb 0, var(--paper) 520px);
}
.policyPage .policyHeroPrivacy {
  position: relative;
  background:
    radial-gradient(circle at 82% 28%, rgba(255,220,0,.22), transparent 27%),
    repeating-linear-gradient(112deg, transparent 0 72px, rgba(255,255,255,.045) 73px 75px),
    linear-gradient(135deg, var(--navy-deep), var(--navy) 68%, var(--blue));
}
.policyPage .policyHeroPrivacy::after {
  content: "PRIVACY";
  position: absolute;
  right: -18px;
  bottom: -24px;
  color: transparent;
  -webkit-text-stroke: 1px rgba(255,255,255,.12);
  font-size: clamp(82px, 16vw, 230px);
  font-weight: 950;
  line-height: .8;
  pointer-events: none;
}
.policyPage .policyHeroPrivacy > div { position: relative; z-index: 1; }
.policyPage .policyLead {
  border-left-color: var(--yellow);
  box-shadow: 9px 10px 0 rgba(6,47,95,.14);
}
.policyPage .policyContent .kicker { color: var(--blue); }
.policyPage .privacyDefinition h2,
.policyPage .privacyPolicies h2,
.policyPage .privacyContact h2 { color: var(--navy-deep); }
.policyPage .privacyPolicies article {
  border-color: var(--navy);
  box-shadow: 5px 6px 0 rgba(6,47,95,.08);
}
.policyPage .privacyPolicies article > span { color: rgba(10,78,145,.13); }
.policyPage .privacyContact {
  border-color: var(--navy-deep);
  background: var(--navy);
  color: #fff;
  box-shadow: 11px 12px 0 var(--yellow);
}
.policyPage .privacyContact .kicker,
.policyPage .privacyContact h2 { color: var(--yellow); }
.policyPage .privacyContact p { color: #dce8f3; }
.policyPage .privacyContact a { color: #fff; text-decoration-color: var(--yellow); }

.productTemplatePage.productTone-food .productStory {
  background:
    radial-gradient(circle at 84% 18%, rgba(255,220,0,.16), transparent 29%),
    repeating-linear-gradient(112deg, transparent 0 74px, rgba(255,255,255,.04) 75px 77px),
    linear-gradient(135deg, var(--navy-deep), var(--navy));
}
.productTemplatePage.productTone-food .productPrice strong,
.productTemplatePage.productTone-food .productQuickPoints svg { color: var(--blue); }
.productTemplatePage.productTone-food .productIncludedGrid article {
  border-color: rgba(6,47,95,.18);
  box-shadow: 7px 8px 0 rgba(6,47,95,.12);
}
.productTemplatePage.productTone-food .productIncludedGrid article:nth-child(even) {
  box-shadow-color: var(--yellow);
}

/* 選択済み日時と開催時間の案内を、入力欄の一部として明確に見せる。 */
.checkoutPage .sagiyamaFixedDate {
  margin: 0 0 12px;
  padding: 15px 17px;
  border-left: 7px solid var(--yellow);
  background: #edf4fb;
  color: var(--navy-deep);
  font-size: 18px;
  font-weight: 950;
  line-height: 1.55;
}
.checkoutPage .sagiyamaFixedDate.is-empty { color: #6e7f91; }
.checkoutPage .deliveryTimeRow .instruction {
  margin-top: 10px;
  padding: 12px 14px;
  border-radius: 7px;
  background: #edf4fb;
  color: var(--navy-deep);
  font-size: 14px;
  line-height: 1.7;
}
.checkoutPage .participantNote {
  padding: 14px 16px;
  border-left: 6px solid var(--yellow);
  background: #edf4fb;
  color: var(--navy-deep) !important;
  font-size: 14px !important;
  line-height: 1.7;
}

@media (max-width: 560px) {
  .policyPage .policyContent { padding-inline: 18px; }
  .policyPage .policyLead { padding: 27px 23px; }
  .policyPage .privacyPolicies article { padding: 28px 21px 28px 86px; }
  .policyPage .privacyPolicies article > span { left: 15px; font-size: 58px; }
  .policyPage .privacyContact { padding: 30px 23px; }
  .checkoutPage .sagiyamaFixedDate { font-size: 16px; }
}
