/* 北海道MICE商談会 公式サイト 共通スタイル（デザイン案Bを移植） */
:root{
  --teal-deep:#0d4f5c;
  --blue:#12708a;
  --cream:#faf7f2;
  --white:#ffffff;
  --orange:#d9622b;
  --orange-dark:#b8501f;
  --text:#23303a;
  --muted:#6a7b86;
  --line:rgba(13,79,92,.14);
  --danger:#c0392b;
  --radius-lg:16px;
  --radius-md:12px;
  --content-w:1180px;
  --shadow-soft:0 24px 50px -28px rgba(13,79,92,.38);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
html,body{ max-width:100%; overflow-x:hidden; }

body{
  margin:0;
  background:var(--cream);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
  line-height:1.9;
  font-size:16px;
  word-break:auto-phrase;
  line-break:strict;
  overflow-wrap:anywhere;
}

img{ max-width:100%; display:block; }
a{ color:inherit; }
.wrap{ max-width:var(--content-w); margin:0 auto; padding:0 24px; }
h1,h2,h3,h4{ font-weight:800; line-height:1.4; margin:0; }
p{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }
button,.btn-orange{ font-family:inherit; cursor:pointer; }

.skip-link{ position:absolute; left:-9999px; top:0; background:#fff; padding:8px 14px; z-index:100; }
.skip-link:focus{ left:8px; top:8px; }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.center{ text-align:center; }
.mt{ margin-top:28px; }
.muted{ color:var(--muted); }

/* ============ ヘッダー ============ */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(250,247,242,.94);
  backdrop-filter:saturate(140%) blur(6px);
  border-bottom:1px solid rgba(13,79,92,.1);
}
.util-row{ background:var(--teal-deep); }
.util-row .wrap{ display:flex; justify-content:flex-end; align-items:center; gap:20px; padding:6px 24px; }
.util-row a{ color:#dfeef1; font-size:12.5px; text-decoration:none; }
.util-row a:hover{ text-decoration:underline; }
.util-org{ color:#bfe0e2; font-size:12px; margin-right:auto; }

.main-nav{ display:flex; align-items:center; justify-content:space-between; gap:20px; padding:14px 24px; flex-wrap:wrap; }
.brand{ font-size:15px; font-weight:800; color:var(--teal-deep); letter-spacing:.02em; text-decoration:none; white-space:nowrap; }
.nav-links{ display:flex; gap:24px; flex-wrap:wrap; font-size:14px; font-weight:700; }
.nav-links a{ text-decoration:none; padding:2px 0; border-bottom:2px solid transparent; }
.nav-links a:hover{ color:var(--blue); }
.nav-links a[aria-current="page"]{ border-bottom-color:var(--orange); }
.nav-toggle-cb{ position:absolute; opacity:0; pointer-events:none; }
.nav-toggle{
  display:none; order:2; margin-left:auto;
  border:1.5px solid var(--teal-deep); border-radius:999px;
  padding:7px 14px; font-size:12px; font-weight:800; letter-spacing:.08em;
  color:var(--teal-deep); background:#fff; cursor:pointer; user-select:none; white-space:nowrap;
}
.nav-cta{ display:flex; align-items:center; gap:14px; }

.btn-orange{
  display:inline-block; background:var(--orange); color:#fff; font-weight:800; font-size:14.5px;
  padding:12px 26px; border:0; border-radius:999px; text-decoration:none; text-align:center;
  box-shadow:0 10px 22px -10px rgba(217,98,43,.55);
  transition:background .25s ease, transform .25s ease;
}
.btn-orange:hover{ background:var(--orange-dark); transform:translateY(-1px); }
.btn-orange.large{
  display:inline-flex; align-items:center; justify-content:center; gap:12px;
  padding:20px 48px; font-size:18px; min-width:340px; letter-spacing:.04em;
  box-shadow:0 14px 28px -10px rgba(217,98,43,.7);
}
.btn-orange.large::after{
  content:""; flex:none; width:10px; height:10px; border-top:3px solid currentColor; border-right:3px solid currentColor;
  transform:rotate(45deg); transition:transform .25s ease; margin-left:-2px;
}
.btn-orange.large:hover::after{ transform:translateX(3px) rotate(45deg); }
.btn-ghost-light{
  display:inline-flex; align-items:center; justify-content:center; color:#fff; font-weight:700; font-size:15px; padding:15px 30px;
  border-radius:999px; text-decoration:none; border:1.5px solid rgba(255,255,255,.75);
  transition:background .25s ease;
}
.btn-ghost-light:hover{ background:rgba(255,255,255,.14); }
.btn-outline{
  display:inline-block; background:#fff; color:var(--teal-deep); font-weight:800; font-size:15px;
  padding:15px 30px; border:1.5px solid var(--teal-deep); border-radius:999px; text-align:center;
}
.btn-outline:hover{ background:rgba(13,79,92,.06); }
.link-more{ font-weight:800; color:var(--blue); text-decoration:none; border-bottom:2px solid rgba(18,112,138,.3); padding-bottom:2px; }
.link-more:hover{ border-bottom-color:var(--blue); }

/* ============ ヒーロー ============ */
.hero{
  position:relative; width:100%; min-height:72vh; display:flex; align-items:flex-end;
  background:linear-gradient(135deg,var(--teal-deep),var(--blue)); overflow:hidden;
}
.hero-media{ position:absolute; inset:0; width:100%; height:100%; }
.hero-media img{ width:100%; height:100%; object-fit:cover; }
.hero-media::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(13,79,92,.15) 0%, rgba(13,53,63,.55) 55%, rgba(9,36,42,.92) 100%);
}
.hero-inner{ position:relative; z-index:2; color:#fff; padding:64px 0 56px; width:100%; }
.hero-eyebrow{
  display:inline-block; font-size:13px; font-weight:700; letter-spacing:.08em; color:#ffe0cc;
  background:rgba(217,98,43,.28); border:1px solid rgba(255,255,255,.35);
  padding:6px 16px; border-radius:999px; margin-bottom:22px;
}
.hero h1{ font-size:clamp(30px,5.6vw,54px); letter-spacing:.01em; margin-bottom:22px; text-shadow:0 2px 18px rgba(0,0,0,.25); }
.hero-lead{ font-size:clamp(15.5px,2.1vw,19px); line-height:1.85; max-width:760px; word-break:auto-phrase; line-break:strict; color:#eef5f4; margin-bottom:34px; }
.hero-meta{ display:flex; flex-wrap:wrap; gap:14px 30px; margin-bottom:36px; font-size:14.5px; }
.hero-meta div{ display:flex; flex-direction:column; gap:4px; }
.hero-meta .label{ font-size:12px; color:#bfe0e2; font-weight:700; letter-spacing:.04em; }
.hero-meta .value{ font-weight:700; color:#fff; }
.hero-meta .sub{ font-size:12.5px; color:#d6e8e9; font-weight:500; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:16px; }

/* ============ 統計バー ============ */
.stats{ background:#fff; border-bottom:1px solid rgba(13,79,92,.08); }
.stats .wrap{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; padding:34px 24px; }
.stat-item{ text-align:center; padding:8px 6px; }
.stat-num{ font-size:clamp(26px,4vw,38px); font-weight:800; color:var(--teal-deep); line-height:1.1; }
.stat-num span{ font-size:15px; font-weight:700; color:var(--muted); margin-left:2px; }
.stat-label{ margin-top:6px; font-size:13px; color:var(--muted); font-weight:700; }

/* ============ セクション共通 ============ */
.sec{ padding:88px 0; }
.bg-white{ background:#fff; }
.bg-cream{ background:var(--cream); }
.bg-teal{ background:linear-gradient(135deg,var(--teal-deep),var(--blue)); color:#fff; }
.section-head{ max-width:720px; margin:0 auto 52px; text-align:center; }
.section-head h2{ font-size:clamp(24px,3.6vw,34px); color:var(--teal-deep); margin-bottom:16px; }
.section-head p{ color:var(--muted); font-size:15.5px; line-height:1.85; }

/* 下層ページの見出し帯 */
.page-hero{
  background:linear-gradient(135deg,var(--teal-deep),var(--blue)); color:#fff;
  padding:44px 0 40px;
}
.page-hero h1{ font-size:clamp(24px,4.4vw,38px); letter-spacing:.01em; }
.page-hero-sub{ margin-top:10px; color:#dcecee; font-size:16px; }
.crumbs{ font-size:12.5px; color:#bfe0e2; margin-bottom:14px; display:flex; flex-wrap:wrap; gap:4px 8px; }
.crumbs a{ color:#dfeef1; text-decoration:none; }
.crumbs a:hover{ text-decoration:underline; }

/* 特徴 */
.features{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.feature-card{ background:var(--cream); border-radius:var(--radius-lg); padding:36px 30px; }
.feature-icon{ width:52px; height:52px; border-radius:14px; background:linear-gradient(135deg,var(--teal-deep),var(--blue)); margin-bottom:22px; display:flex; align-items:center; justify-content:center; color:#fff; }
.feature-icon svg{ width:28px; height:28px; }
.feature-card h3{ font-size:19px; color:var(--teal-deep); margin-bottom:12px; }
.feature-card p{ font-size:15px; line-height:1.85; }
.hero-lead .nobr{ display:inline-block; }
.feature-card .feature-note{ font-size:13px; line-height:1.7; color:var(--muted); margin-top:10px; }

/* 開催概要 */
.overview-panel{ background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow-soft); padding:8px 0; overflow:hidden; }
.overview-grid{ display:grid; grid-template-columns:1fr 1fr; margin:0; }
.ov-row{ display:grid; grid-template-columns:150px 1fr; gap:18px; padding:22px 34px; border-bottom:1px solid rgba(13,79,92,.08); }
.ov-row dt{ font-weight:800; color:var(--teal-deep); font-size:14.5px; padding-top:1px; }
.ov-row dd{ margin:0; font-size:15px; line-height:1.8; }
.ov-row dd a{ color:var(--teal-deep); font-weight:700; }

/* 出展地域 */
.area-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:32px 28px; }
.area-card{ border-radius:var(--radius-lg); overflow:hidden; background:#fff; box-shadow:var(--shadow-soft); text-decoration:none; color:var(--text); display:block; }
.area-photo{ position:relative; width:100%; aspect-ratio:4/3; background:linear-gradient(135deg,var(--teal-deep),var(--blue)); overflow:hidden; }
.area-photo img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.area-card:hover .area-photo img{ transform:scale(1.04); }
.area-photo::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(13,53,63,0) 45%, rgba(9,36,42,.78) 100%); }
.area-name{ position:absolute; left:20px; right:20px; bottom:16px; z-index:2; color:#fff; font-size:22px; font-weight:800; text-shadow:0 2px 10px rgba(0,0,0,.3); }
.area-body{ padding:22px 22px 26px; }
.area-org{ font-size:13px; color:var(--muted); margin-bottom:12px; }
.area-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
.area-tag{ font-size:11.5px; font-weight:700; color:var(--orange); background:rgba(217,98,43,.1); border:1px solid rgba(217,98,43,.35); padding:4px 10px; border-radius:999px; line-height:1.6; }
.area-desc{ font-size:14.5px; line-height:1.8; margin-bottom:16px; }
.area-more{ font-size:13.5px; font-weight:800; color:var(--blue); }

/* プログラム */
.timeline{ position:relative; max-width:760px; margin:0 auto; padding-left:26px; border-left:2px solid rgba(13,79,92,.25); }
.timeline-item{ position:relative; padding:0 0 40px 30px; }
.timeline-item:last-of-type{ padding-bottom:0; }
.timeline-item::before{
  content:""; position:absolute; left:-38px; top:4px; width:14px; height:14px; border-radius:50%;
  background:var(--orange); border:3px solid var(--cream); box-shadow:0 0 0 2px rgba(217,98,43,.35);
}
.bg-white .timeline-item::before{ border-color:#fff; }
.timeline-time{ font-size:14px; font-weight:800; color:var(--teal-deep); letter-spacing:.02em; margin-bottom:6px; }
.timeline-content{ font-size:16px; font-weight:700; }
.timeline-note{ margin-top:28px; font-size:13.5px; color:var(--muted); }

/* 参加の流れ */
.flow-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.flow-card{ background:var(--cream); border-radius:var(--radius-lg); padding:32px 26px; }
.flow-step{ display:inline-block; font-size:12px; font-weight:800; letter-spacing:.12em; color:#fff; background:var(--orange); padding:3px 12px; border-radius:999px; margin-bottom:16px; }
.flow-card h3{ font-size:17px; color:var(--teal-deep); margin-bottom:10px; }
.flow-card p{ font-size:14.5px; line-height:1.8; }

/* お知らせ */
.news-list{ max-width:960px; margin:0 auto; background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow-soft); overflow:hidden; }
.news-item{ display:flex; gap:24px; align-items:baseline; padding:22px 32px; border-bottom:1px solid rgba(13,79,92,.08); text-decoration:none; }
.news-item:last-child{ border-bottom:none; }
.news-item:hover .news-text{ color:var(--blue); text-decoration:underline; }
.news-date{ flex:0 0 auto; font-size:13.5px; font-weight:800; color:var(--muted); white-space:nowrap; font-variant-numeric:tabular-nums; }
.news-text{ font-size:15px; }
.news-meta{ color:var(--muted); font-weight:800; font-size:14px; margin-bottom:18px; }
.pager{ display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin-top:36px; }
.pager a,.pager span{ min-width:42px; padding:8px 14px; text-align:center; border-radius:999px; border:1px solid var(--line); background:#fff; text-decoration:none; font-weight:700; font-size:14px; }
.pager .is-current{ background:var(--teal-deep); border-color:var(--teal-deep); color:#fff; }

/* アクセス */
.access-grid{ display:grid; grid-template-columns:1fr 1fr; gap:36px; align-items:stretch; }
.access-grid:has(> :only-child){ grid-template-columns:1fr; }
.access-info h3{ font-size:20px; color:var(--teal-deep); margin-bottom:16px; }
.access-floor{ display:block; font-size:15px; font-weight:500; margin-top:4px; }
.access-info p{ font-size:15px; line-height:1.85; margin-bottom:10px; }
.map-frame{ border-radius:var(--radius-lg); overflow:hidden; min-height:320px; border:1px solid var(--line); background:#e7eef0; }
.map-frame iframe{ width:100%; height:100%; min-height:320px; border:0; display:block; }

/* CTA */
.cta-band{ text-align:center; }
.cta-band h2{ font-size:clamp(24px,4vw,34px); margin-bottom:32px; line-height:1.5; }
.cta-band .btn-orange{ margin-bottom:18px; }
.cta-note{ font-size:14px; color:#dcecee; margin-bottom:0; }

/* 本文・パネル */
.prose{ font-size:16px; }
.prose p{ margin-bottom:1.1em; }
.prose h2{ font-size:20px; color:var(--teal-deep); margin:2em 0 .6em; padding-left:12px; border-left:4px solid var(--orange); }
.prose .lead{ font-size:18px; font-weight:700; color:var(--teal-deep); }
.panel{ background:var(--cream); border-radius:var(--radius-lg); padding:28px 30px; }
.bg-cream .panel{ background:#fff; box-shadow:var(--shadow-soft); }
.panel.notice h2{ font-size:22px; color:var(--teal-deep); margin-bottom:14px; }
.panel.notice h3{ font-size:16px; color:var(--teal-deep); margin-bottom:6px; }
.plain-list{ margin:12px 0 0; padding-left:1.3em; list-style:disc; }
.plain-list li{ margin-bottom:6px; }

/* 地域詳細 */
.info-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:40px; }
.info-card{ background:var(--cream); border-radius:var(--radius-lg); padding:28px; }
.info-card h2{ font-size:17px; color:var(--teal-deep); margin-bottom:14px; }
.info-card p{ margin-bottom:.8em; font-size:15px; }
.contact-dl{ margin:0; }
.contact-dl div{ display:grid; grid-template-columns:80px 1fr; gap:10px; margin-bottom:8px; font-size:15px; }
.contact-dl dt{ font-weight:800; color:var(--teal-deep); }
.contact-dl dd{ margin:0; }
.chip-list{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.chip{ display:inline-block; padding:8px 20px; border-radius:999px; background:#fff; border:1px solid var(--line); text-decoration:none; font-weight:700; font-size:14.5px; }
.chip:hover{ border-color:var(--blue); color:var(--blue); }
.chip.is-current{ background:var(--teal-deep); border-color:var(--teal-deep); color:#fff; }


/* ============ 地域紹介ページ（写真枠つき） ============ */
.area-hero{ position:relative; width:100%; max-width:100%; display:flex; align-items:flex-end; aspect-ratio:16/9; min-height:340px; max-height:560px; overflow:hidden; background:linear-gradient(135deg,var(--teal-deep),var(--blue)); color:#fff; }
.area-hero-media{ position:absolute; inset:0; }
.area-hero-media img{ width:100%; height:100%; object-fit:cover; }
.area-hero-media::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(13,79,92,.12) 0%, rgba(13,53,63,.35) 50%, rgba(9,36,42,.88) 100%); }
.area-hero-inner{ position:relative; z-index:2; width:100%; min-width:0; padding-top:40px; padding-bottom:40px; }
.area-hero h1{ font-size:clamp(28px,5vw,48px); text-shadow:0 2px 18px rgba(0,0,0,.35); }
.area-hero-catch{ margin-top:10px; font-size:clamp(15.5px,2.2vw,20px); font-weight:700; color:#fff; text-shadow:0 1px 10px rgba(0,0,0,.4); }
.area-hero .crumbs{ margin-bottom:12px; }
.area-sec-title{ font-size:clamp(20px,3vw,26px); color:var(--teal-deep); margin-bottom:24px; padding-left:12px; border-left:4px solid var(--orange); }
.sec-slim{ padding:56px 0; }
.area-intro .lead{ margin-bottom:1.1em; }
.area-tags-lg{ margin-bottom:0; gap:10px; }
.area-tags-lg .area-tag{ font-size:14px; padding:6px 16px; }
.support-list{ margin-top:0; }
.support-list li{ font-size:15.5px; }

/* 写真（クレジットは写真の下に小さく） */
.ph{ margin:0; min-width:0; }
.ph-img{ position:relative; overflow:hidden; border-radius:var(--radius-md); background:linear-gradient(135deg,var(--teal-deep),var(--blue)); }
.ph-32{ aspect-ratio:3/2; }
.ph-img img{ width:100%; height:100%; object-fit:cover; }
.ph-meta{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:2px 14px; margin-top:6px; line-height:1.6; }
.ph-cap{ font-size:13px; color:var(--text); }
.ph-credit{ font-size:11px; color:var(--muted); margin-left:auto; }
.ph-hero-meta .ph-meta{ margin-top:8px; }

/* 地域の魅力ギャラリー（2〜4枚で崩れないグリッド） */
.gallery{ display:grid; gap:20px; grid-template-columns:repeat(2,1fr); }
.gallery-n1{ grid-template-columns:minmax(0,640px); }
.gallery-n3{ grid-template-columns:repeat(3,1fr); }
.gallery-n4{ grid-template-columns:repeat(2,1fr); }

/* 施設・体験カード */
.spot-grid{ display:grid; gap:24px; grid-template-columns:repeat(3,1fr); }
.spot-n2{ grid-template-columns:repeat(2,1fr); }
.spot-n1{ grid-template-columns:1fr; }
.spot-card{ background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow-soft); overflow:hidden; display:flex; flex-direction:column; min-width:0; }
.bg-white .spot-card{ background:var(--cream); box-shadow:none; border:1px solid var(--line); }
.spot-card .ph-img{ border-radius:0; }
.spot-card .ph-meta{ padding:0 20px; }
.spot-body{ padding:20px 20px 24px; flex:1; display:flex; flex-direction:column; align-items:flex-start; }
.spot-cat{ display:inline-block; font-size:12px; font-weight:800; color:var(--teal-deep); background:rgba(13,79,92,.1); padding:2px 12px; border-radius:999px; margin-bottom:10px; }
.spot-body h3{ font-size:18px; color:var(--teal-deep); margin-bottom:8px; }
.spot-cap{ font-size:14px; font-weight:800; margin-bottom:8px; }
.spot-cap span{ font-size:12px; font-weight:700; color:var(--muted); margin-right:8px; }
.spot-text{ font-size:14.5px; line-height:1.8; }
.spot-link{ margin-top:auto; padding-top:14px; font-size:13.5px; font-weight:700; color:var(--teal-deep); text-decoration:none; display:inline-flex; align-items:center; gap:6px; }
.spot-link:hover{ text-decoration:underline; }
.ext-ico{ flex:none; }
.ext-link{ color:inherit; text-decoration:underline; text-decoration-color:rgba(13,79,92,.35); text-underline-offset:3px; }
.ext-link:hover{ color:var(--teal-deep); text-decoration-color:currentColor; }
.ext-link .ext-ico{ margin-left:6px; vertical-align:-1px; color:var(--teal-deep); }
.ph-link{ display:block; width:100%; height:100%; }
.ph-link img{ transition:transform .5s ease, filter .5s ease; }
.ph-link:hover img{ transform:scale(1.04); filter:brightness(.88); }
.spot-n1 .spot-card{ flex-direction:row; align-items:stretch; }
.spot-n1 .spot-card .ph{ flex:0 0 46%; }
.spot-n1 .spot-card .ph-img{ height:100%; min-height:200px; aspect-ratio:auto; }
.spot-n1 .spot-body{ flex:1; align-self:center; }
.info-grid-top{ margin-top:0; }
.info-grid:has(> :only-child){ grid-template-columns:1fr; }
.bg-white .info-card{ background:var(--cream); }
.bg-cream .info-card{ background:#fff; box-shadow:var(--shadow-soft); }

/* サンプルページ：上部バー・提出パネル・注記 */
.sample-bar{ background:#fff3e8; border-bottom:1px solid rgba(217,98,43,.3); }
.sample-bar .wrap{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 20px; padding-top:10px; padding-bottom:10px; }
.sample-bar-text{ font-size:14px; }
.sample-bar-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; }
.sample-toggle{ display:inline-block; font-size:13.5px; font-weight:800; color:#fff; background:var(--teal-deep); padding:7px 18px; border-radius:999px; text-decoration:none; }
.sample-toggle:hover{ background:var(--blue); }
.sample-print{ font:inherit; font-size:13.5px; font-weight:800; color:var(--teal-deep); background:#fff; border:1.5px solid var(--teal-deep); padding:5px 16px; border-radius:999px; cursor:pointer; }
.submit-panel{ background:#fff; border:2px solid var(--orange); border-radius:var(--radius-lg); padding:32px 34px; }
.submit-panel h2{ font-size:clamp(20px,3vw,26px); color:var(--teal-deep); margin-bottom:12px; }
.submit-panel h3{ font-size:16px; color:var(--teal-deep); margin:22px 0 8px; }
.submit-lead{ font-size:15px; }
.slot-table{ width:100%; border-collapse:collapse; font-size:14px; line-height:1.7; }
.slot-table th,.slot-table td{ border:1px solid var(--line); padding:10px 12px; text-align:left; vertical-align:top; }
.slot-table thead th{ background:var(--teal-deep); color:#fff; font-size:13px; }
.slot-table tbody th{ background:var(--cream); color:var(--teal-deep); white-space:nowrap; }
.slot-name{ font-size:12.5px; font-weight:700; }
.slot-total{ margin-top:12px; font-size:15px; }
.submit-cols{ display:grid; grid-template-columns:1fr 1fr; gap:0 36px; }
.submit-cols .plain-list{ font-size:14.5px; }
.ann-photo{ position:absolute; left:8px; top:8px; z-index:5; max-width:calc(100% - 16px); background:rgba(184,80,31,.94); color:#fff; font-size:12px; font-weight:800; line-height:1.5; padding:3px 10px; border-radius:6px; box-shadow:0 2px 8px rgba(0,0,0,.25); }
.ann-note{ display:table; max-width:100%; margin:0 0 10px; font-size:12px; font-weight:700; line-height:1.6; color:var(--orange-dark); background:rgba(217,98,43,.1); border:1px dashed var(--orange); border-radius:6px; padding:2px 10px; }
.area-hero .ann-note{ color:#fff; background:rgba(184,80,31,.8); border-color:#ffd9c2; margin-top:10px; margin-bottom:0; }
.spot-body .ann-note{ margin:12px 0 0; }

@media print{
  @page{ margin:12mm; }
  body{ background:#fff; -webkit-print-color-adjust:exact; print-color-adjust:exact; font-size:12px; line-height:1.7; }
  .site-header,.site-footer,.skip-link,.sample-bar,.nav-toggle{ display:none !important; }
  .sec{ padding:20px 0; }
  .sec-slim{ padding:14px 0; }
  .area-hero{ aspect-ratio:auto; height:70mm; min-height:0; max-height:none; }
  .ph,.spot-card,.slot-table tr,.submit-panel,.info-card{ break-inside:avoid; page-break-inside:avoid; }
  .area-sec-title{ break-after:avoid; page-break-after:avoid; }
  .submit-panel{ border-width:1px; }
  .btn-orange,.chip-list{ display:none; }
}

/* FAQ */
.faq-cat{ font-size:20px; color:var(--teal-deep); margin:40px 0 16px; padding-left:12px; border-left:4px solid var(--orange); }
.faq-cat:first-child{ margin-top:0; }
.faq-list{ border:1px solid var(--line); border-radius:var(--radius-md); overflow:hidden; background:#fff; }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item:last-child{ border-bottom:0; }
.faq-item summary{ cursor:pointer; padding:18px 52px 18px 22px; font-weight:800; list-style:none; position:relative; }
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::before{ content:"Q"; display:inline-block; margin-right:12px; color:var(--orange); font-weight:800; }
.faq-item summary::after{ content:""; position:absolute; right:22px; top:50%; width:9px; height:9px; border-right:2px solid var(--teal-deep); border-bottom:2px solid var(--teal-deep); transform:translateY(-70%) rotate(45deg); transition:transform .2s; }
.faq-item[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq-a{ padding:0 22px 18px 52px; color:var(--text); }
.faq-a p{ margin-bottom:.8em; }

/* ============ フォーム ============ */
.steps{ display:flex; gap:8px; margin:0 0 28px; padding:0; }
.steps li{ flex:1; text-align:center; padding:10px 6px; font-size:14px; font-weight:800; color:var(--muted); background:var(--cream); border-radius:999px; }
.steps li.is-current{ background:var(--teal-deep); color:#fff; }
.steps li.is-done{ background:rgba(13,79,92,.14); color:var(--teal-deep); }
.lead-note{ margin-bottom:24px; }
.alert{ background:#fdecea; border:1px solid #f1b5ae; color:#8c2a20; border-radius:var(--radius-md); padding:14px 18px; margin-bottom:24px; font-weight:700; }
.entry-form{ margin:0; }
.f-group{ border:0; margin:0 0 32px; padding:0; min-width:0; }
.f-group legend{ float:left; width:100%; padding:0 0 14px; font-size:19px; font-weight:800; color:var(--teal-deep); border-bottom:2px solid var(--teal-deep); margin-bottom:6px; }
.f-group legend + *{ clear:both; }
.f-row{ display:grid; grid-template-columns:260px 1fr; gap:10px 24px; padding:18px 0; border-bottom:1px solid var(--line); align-items:start; }
.f-label{ font-weight:800; font-size:14.5px; padding-top:10px; display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; }
.req,.opt{ display:inline-block; font-size:11px; font-weight:800; padding:1px 8px; border-radius:4px; line-height:1.7; }
.req{ background:var(--orange); color:#fff; }
.opt{ background:#e6edee; color:var(--muted); }
.f-field{ min-width:0; }
.f-input{
  width:100%; font:inherit; font-size:16px; padding:11px 14px; border:1px solid #b9c7cc; border-radius:10px;
  background:#fff; color:var(--text); line-height:1.5; appearance:none; -webkit-appearance:none;
}
select.f-input{ background-image:linear-gradient(45deg,transparent 50%,var(--teal-deep) 50%),linear-gradient(135deg,var(--teal-deep) 50%,transparent 50%); background-position:calc(100% - 20px) 55%,calc(100% - 15px) 55%; background-size:5px 5px; background-repeat:no-repeat; padding-right:38px; }
.f-input:focus{ outline:3px solid rgba(18,112,138,.3); border-color:var(--blue); }
textarea.f-input{ resize:vertical; min-height:110px; }
.f-hint{ font-size:12.5px; color:var(--muted); margin-top:6px; line-height:1.6; }
.f-err{ font-size:13.5px; color:var(--danger); font-weight:700; margin-top:6px; }
.has-error .f-input{ border-color:var(--danger); background:#fff8f7; }
.f-cols{ display:grid; grid-template-columns:1fr 1fr; column-gap:32px; }
.f-cols .f-row{ grid-template-columns:1fr; gap:4px; align-content:start; }
.f-cols .f-label{ min-height:1.9em; }
.f-cols .f-label{ padding-top:0; }
.choices{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:8px 16px; }
.choices.choices-inline{ display:flex; flex-wrap:wrap; gap:8px 22px; }
.choice{ display:flex; align-items:flex-start; gap:10px; cursor:pointer; padding:8px 12px; border:1px solid var(--line); border-radius:10px; background:#fff; line-height:1.5; }
.choice:hover{ border-color:var(--blue); }
.choice input{ margin:3px 0 0; width:18px; height:18px; flex:none; accent-color:var(--teal-deep); }
.choice:has(input:checked){ border-color:var(--teal-deep); background:rgba(13,79,92,.06); }
.choice.agree{ display:inline-flex; }
.inline-selects{ display:flex; gap:12px; }
.inline-selects .f-input{ max-width:180px; }
.hp{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-actions{ display:flex; flex-wrap:wrap; gap:16px; justify-content:center; margin-top:36px; }
.confirm-dl{ margin:0; }
.confirm-dl > div{ display:grid; grid-template-columns:260px 1fr; gap:6px 24px; padding:14px 0; border-bottom:1px solid var(--line); }
.confirm-dl dt{ font-weight:800; font-size:14.5px; color:var(--teal-deep); }
.confirm-dl dd{ margin:0; }
.notice-box{ background:var(--cream); border:1px solid var(--line); border-left:4px solid var(--orange); border-radius:var(--radius-md); padding:20px 24px; margin:18px 0 6px; }
.notice-box-lead{ font-weight:800; color:var(--teal-deep); margin-bottom:4px; }
.notice-box .plain-list{ margin-top:6px; }
.confirm-agree{ text-align:center; font-weight:700; margin-top:20px; }

/* ============ フッター ============ */
.site-footer{ background:#093139; color:#cfe3e4; padding:64px 0 32px; font-size:13.5px; }
.footer-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:40px; margin-bottom:40px; }
.footer-col h4{ color:#fff; font-size:14.5px; margin-bottom:16px; }
.footer-col p{ line-height:1.85; margin-bottom:8px; color:#bcd3d4; }
.footer-col li{ margin-bottom:10px; }
.footer-col a{ color:#bcd3d4; text-decoration:none; }
.footer-col a:hover{ color:#fff; }
.footer-org{ margin:0 0 20px; }
.footer-org div{ display:grid; grid-template-columns:5.8em 1fr; gap:10px; padding:8px 0; border-bottom:1px solid rgba(255,255,255,.1); line-height:1.7; }
.footer-org dt{ font-size:12.5px; font-weight:700; color:#8faeb0; padding-top:2px; }
.footer-org dd{ margin:0; color:#e6f0f0; }

/* 問合せ枠（TEL・E-mail）。既定は明るい背景用、フッターでは暗い背景用 */
.contact-box{ border:1px solid rgba(13,79,92,.25); background:#fff; border-radius:var(--radius-md); padding:18px 22px; scroll-margin-top:90px; }
.contact-box-title{ margin:0 0 4px; font-size:13px; font-weight:800; color:var(--teal-deep); letter-spacing:.06em; }
.contact-box-org{ margin:0 0 10px; font-size:14px; font-weight:700; }
.contact-box-list{ margin:0; }
.contact-box-list div{ display:grid; grid-template-columns:4.6em 1fr; align-items:baseline; gap:8px; padding:4px 0; }
.contact-box-list dt{ font-size:12.5px; font-weight:800; color:var(--muted); letter-spacing:.06em; }
.contact-box-list dd{ margin:0; font-size:19px; font-weight:800; overflow-wrap:anywhere; }
.contact-box-list a{ color:var(--teal-deep); text-decoration:none; }
.contact-box-list a:hover{ text-decoration:underline; }
.site-footer .contact-box{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.4); }
.site-footer .contact-box-title{ color:#bfe0e2; }
.site-footer .contact-box-org{ color:#fff; }
.site-footer .contact-box-list dt{ color:#bfe0e2; }
.site-footer .contact-box-list a{ color:#fff; }
.footer-areas{ display:grid; grid-template-columns:1fr 1fr; gap:4px 16px; }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding-top:22px; display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; color:#8faeb0; font-size:12.5px; }

/* ============ スクロールフェード（JS有効時のみ） ============ */
.js .fade-up{ opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }
.js .fade-up.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .js .fade-up{ opacity:1; transform:none; transition:none; }
}
@media print{ .js .fade-up{ opacity:1 !important; transform:none !important; } }

/* ============ レスポンシブ ============ */
@media (max-width:960px){
  .features{ grid-template-columns:1fr; }
  .overview-grid{ grid-template-columns:1fr; }
  .area-grid{ grid-template-columns:1fr 1fr; }
  .flow-grid{ grid-template-columns:1fr 1fr; }
  .access-grid{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .info-grid{ grid-template-columns:1fr; }
  .spot-grid,.spot-n2{ grid-template-columns:1fr; }
  .spot-n1 .spot-card{ flex-direction:column; }
  .spot-n1 .spot-card .ph{ flex:none; }
  .spot-n1 .spot-card .ph-img{ height:auto; aspect-ratio:3/2; min-height:0; }
  .gallery-n3{ grid-template-columns:repeat(2,1fr); }
  .gallery-n3 .ph:first-child{ grid-column:1 / -1; }
  .submit-cols{ grid-template-columns:1fr; }
  .f-row,.confirm-dl > div{ grid-template-columns:1fr; gap:6px; }
  .f-label{ padding-top:0; }
}
@media (max-width:640px){
  .sec{ padding:60px 0; }
  .wrap{ padding:0 18px; }
  .main-nav{ padding:12px 18px; row-gap:0; flex-wrap:wrap; justify-content:space-between; }
  .nav-toggle{ display:inline-block; }
  .brand{ white-space:normal; flex:1 1 auto; min-width:0; }
  .nav-links{
    display:none; order:4; width:100%; flex-direction:column; gap:0; flex-wrap:nowrap;
    border-top:1px solid rgba(13,79,92,.16); margin-top:12px;
  }
  .nav-toggle-cb:checked ~ .nav-links{ display:flex; }
  .nav-links a{ display:block; padding:13px 2px; border-bottom:1px solid rgba(13,79,92,.12); }
  .nav-cta{ order:3; width:100%; margin-top:10px; }
  .nav-cta .btn-orange{ width:100%; }
  .util-row .wrap{ justify-content:center; padding:6px 18px; }
  .util-org{ display:none; }
  .hero{ min-height:78vh; }
  .hero-inner{ padding:48px 0 40px; }
  .hero-meta{ gap:12px 22px; }
  .stats .wrap{ grid-template-columns:1fr 1fr; padding:26px 18px; }
  .area-grid{ grid-template-columns:1fr; }
  .flow-grid{ grid-template-columns:1fr; }
  .ov-row{ grid-template-columns:1fr; gap:6px; padding:18px 20px; }
  .footer-grid{ grid-template-columns:1fr; gap:30px; }
  .contact-box-list div{ grid-template-columns:4em 1fr; }
  .contact-box-list dd{ font-size:16px; letter-spacing:-.01em; }
  .btn-orange.large{ width:100%; min-width:0; padding:18px 24px; font-size:17px; }
  .hero-actions{ flex-direction:column; align-items:stretch; }
  .hero-actions a{ text-align:center; }
  .news-item{ flex-direction:column; gap:4px; padding:18px 20px; }
  .f-cols{ grid-template-columns:1fr; }
  .f-cols .f-row:last-child{ border-bottom:1px solid var(--line); }
  .choices{ grid-template-columns:1fr; }
  .form-actions{ flex-direction:column-reverse; }
  .form-actions button{ width:100%; }
  .inline-selects .f-input{ max-width:none; }
  .steps li{ font-size:13px; }
  .panel{ padding:22px 20px; }
  .faq-a{ padding-left:22px; }
  .page-hero{ padding:32px 0 28px; }
  .sec-slim{ padding:40px 0; }
  .area-hero{ min-height:300px; }
  .area-hero-inner{ padding-top:56px; padding-bottom:26px; }
  .gallery{ gap:12px; }
  .submit-panel{ padding:22px 18px; }
  .slot-table thead{ display:none; }
  .slot-table,.slot-table tbody,.slot-table tr,.slot-table th,.slot-table td{ display:block; width:100%; }
  .slot-table tr{ border:1px solid var(--line); border-radius:10px; margin-bottom:12px; overflow:hidden; }
  .slot-table th,.slot-table td{ border:0; border-bottom:1px solid var(--line); }
  .slot-table tbody th{ white-space:normal; }
  .slot-table td::before{ content:attr(data-label); display:block; font-size:11.5px; font-weight:800; color:var(--muted); }
  .slot-table td:last-child{ border-bottom:0; }
  .sample-bar-actions .sample-toggle{ font-size:12.5px; }
}
