/* ============ Tokens ============ */
/* 配色は常に明るい表示で固定する。端末のダークモードが時間帯で
   自動的に切り替わっても、見え方が変わらないようにするため。 */
:root{
  color-scheme: light;
  --paper:#FBF7EC;
  --paper-2:#F2E9D3;
  --paper-3:#E8DBB8;
  --ink:#2B2117;
  --ink-soft:#5B4E3C;
  --forest-900:#1E3626;
  --forest-700:#2C4B34;
  --forest-500:#3F6B47;
  --leaf-400:#7FAE64;
  --amber-500:#E7A83A;
  --amber-600:#CE8E22;
  --ember-600:#C1552B;
  --line:#DFCFA0;
  --shadow:0 10px 28px -14px rgba(30,54,38,.35);
  --radius-card:22px;
  --font-jp:"Hiragino Maru Gothic ProN","BIZ UDGothic","M PLUS Rounded 1c","Yu Gothic Medium","Yu Gothic","Meiryo",sans-serif;
}
*{box-sizing:border-box;}
/* hidden 属性は、display を指定した要素でも必ず効かせる */
[hidden]{display:none !important;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-jp);
  font-size:16px;
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-weight:800;
  line-height:1.4;
  text-wrap:balance;
  margin:0;
  letter-spacing:.01em;
}
p{margin:0;}
a{color:inherit;}
img,svg{display:block;max-width:100%;}
img{height:auto;}
button{font-family:inherit;}

.wrap{max-width:1080px;margin:0 auto;padding:0 24px;}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:.78rem;font-weight:700;letter-spacing:.14em;
  color:var(--forest-500);text-transform:uppercase;
}
.eyebrow.on-dark{color:var(--amber-500);}
.eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--amber-500);}

/* ============ Header ============ */
.site-header{
  position:sticky;top:0;z-index:40;
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.header-row{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;padding:14px 24px;max-width:1080px;margin:0 auto;
}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;}
.brand svg{width:38px;height:38px;flex:none;}
.brand-text{display:flex;flex-direction:column;line-height:1.25;}
.brand-text .main{font-weight:800;font-size:1.02rem;color:var(--forest-900);}
.brand-text .sub{font-size:.68rem;letter-spacing:.08em;color:var(--ink-soft);}

.main-nav{display:flex;align-items:center;gap:4px;}
.nav-btn{
  border:none;background:none;cursor:pointer;
  padding:9px 14px;border-radius:999px;
  font-size:.88rem;font-weight:700;color:var(--ink-soft);
  text-decoration:none;
  transition:background .15s ease, color .15s ease;
  white-space:nowrap;
}
.nav-btn:hover{background:var(--paper-2);color:var(--ink);}
.nav-btn[aria-current="page"]{background:var(--forest-900);color:var(--paper);}
.header-actions{display:flex;align-items:center;gap:10px;}
.tel-pill{
  display:flex;align-items:center;gap:8px;
  background:var(--forest-900);color:var(--paper);
  border-radius:999px;padding:9px 16px;text-decoration:none;
  font-weight:700;font-size:.85rem;white-space:nowrap;
}
.tel-pill svg{width:15px;height:15px;}
.tel-pill .num{font-variant-numeric:tabular-nums;}
.icon-link{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:40px;height:40px;border-radius:50%;
  border:1px solid var(--line);background:var(--paper-2);color:var(--forest-700);
  text-decoration:none;transition:background .15s ease, color .15s ease, border-color .15s ease;
}
.icon-link:hover{background:var(--forest-900);color:var(--paper);border-color:var(--forest-900);}
.icon-link svg{width:19px;height:19px;}
.menu-toggle{display:none;border:none;background:var(--paper-2);border-radius:12px;width:42px;height:42px;cursor:pointer;align-items:center;justify-content:center;}
.menu-toggle svg{width:20px;height:20px;}

/* スマホ幅ではサイト名を折り返さず、ヘッダーを低く保つ */
@media (max-width:520px){
  .header-row{padding:12px 16px;gap:10px;}
  .brand svg{width:34px;height:34px;}
  .brand-text .main{font-size:.95rem;}
  .brand-text .main,.brand-text .sub{white-space:nowrap;}
  .tel-pill{padding:9px 13px;}
  .tel-pill .num{display:none;}
  .icon-link{width:38px;height:38px;}
}

@media (max-width:860px){
  .main-nav{
    position:absolute;top:100%;left:0;right:0;
    background:var(--paper);border-bottom:1px solid var(--line);
    flex-direction:column;align-items:stretch;gap:2px;padding:10px 16px 16px;
    display:none;
  }
  .main-nav.open{display:flex;}
  .nav-btn{text-align:left;padding:12px 14px;border-radius:14px;}
  .tel-pill .label{display:none;}
  .menu-toggle{display:flex;}
}

/* ============ Buttons ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border-radius:999px;padding:13px 26px;font-weight:700;font-size:.94rem;
  text-decoration:none;border:none;cursor:pointer;transition:transform .15s ease, box-shadow .15s ease;
}
.btn-primary{background:var(--amber-500);color:var(--forest-900);box-shadow:0 10px 22px -10px rgba(231,168,58,.7);}
.btn-primary:hover{transform:translateY(-2px);}
.btn-outline{background:transparent;color:var(--paper);border:1.5px solid color-mix(in srgb, var(--paper) 55%, transparent);}
.btn-outline:hover{background:color-mix(in srgb, var(--paper) 12%, transparent);}
.btn-ghost{background:var(--paper-2);color:var(--ink);}
.btn-ghost:hover{background:var(--paper-3);}
.btn-sm{padding:9px 18px;font-size:.82rem;}

section{padding:64px 0;}
section.tight{padding:44px 0;}
.section-head{max-width:640px;margin:0 0 36px;}
.section-head h2{font-size:clamp(1.5rem,2.4vw,2rem);color:var(--forest-900);}
.section-head p{margin-top:10px;color:var(--ink-soft);}

.band-forest{background:var(--forest-900);color:var(--paper);}
.band-paper2{background:var(--paper-2);}

/* ============ Page hero (inner pages) ============ */
.page-hero{background:var(--forest-900);color:var(--paper);padding:52px 0 44px;}
.page-hero h1{margin-top:12px;font-size:clamp(1.7rem,3.4vw,2.4rem);color:var(--paper);}
.page-hero .lead{margin-top:12px;max-width:56ch;color:color-mix(in srgb, var(--paper) 82%, transparent);font-size:1.02rem;}
.page-hero .page-subtitle{
  margin-top:10px;font-size:1.02rem;font-weight:700;
  color:var(--amber-500);letter-spacing:.02em;
}

/* ============ Hero (top page) ============ */
.hero{position:relative;background:var(--forest-900);color:var(--paper);overflow:hidden;padding:0;}
.hero-inner{max-width:1080px;margin:0 auto;padding:64px 24px 0;position:relative;z-index:2;
  display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;}
@media (max-width:820px){.hero-inner{grid-template-columns:1fr;}}
.hero-copy h1{font-size:clamp(2rem,4.6vw,3.1rem);margin-top:14px;color:var(--paper);}
.hero-copy .lead{margin-top:16px;color:color-mix(in srgb, var(--paper) 82%, transparent);max-width:46ch;font-size:1.05rem;}
.hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap;}
.hero-photo{border-radius:20px;overflow:hidden;box-shadow:0 24px 48px -20px rgba(0,0,0,.5);border:1px solid color-mix(in srgb, var(--paper) 18%, transparent);}
.hero-photo img{width:100%;height:340px;object-fit:cover;display:block;}
.season-badge{
  display:inline-flex;align-items:center;gap:8px;background:color-mix(in srgb, var(--paper) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--paper) 28%, transparent);
  border-radius:999px;padding:7px 14px;font-size:.78rem;font-weight:700;margin-top:22px;
}
.hero-wave{display:block;width:100%;height:auto;margin-top:40px;}

/* ============ Quick nav cards ============ */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:-52px;position:relative;z-index:3;}
@media (max-width:900px){.quick-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.quick-grid{grid-template-columns:1fr;}}
.quick-card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);
  padding:22px;box-shadow:var(--shadow);cursor:pointer;text-align:left;text-decoration:none;
  display:flex;flex-direction:column;gap:10px;transition:transform .18s ease, box-shadow .18s ease;
}
.quick-card:hover{transform:translateY(-4px);}
.quick-card .icon-badge{width:44px;height:44px;border-radius:14px;background:var(--paper-2);display:flex;align-items:center;justify-content:center;color:var(--forest-700);}
.quick-card .icon-badge svg{width:24px;height:24px;}
.quick-card h3{font-size:1.02rem;color:var(--forest-900);}
.quick-card p{font-size:.85rem;color:var(--ink-soft);}
.quick-card .go{margin-top:auto;font-size:.8rem;font-weight:700;color:var(--amber-600);}

/* ============ News ============ */
.news-list{display:flex;flex-direction:column;border-top:1px solid var(--line);}
.news-item{display:grid;grid-template-columns:110px auto 1fr;gap:18px;align-items:start;padding:20px 0;border-bottom:1px solid var(--line);}
@media (max-width:640px){.news-item{grid-template-columns:1fr;gap:6px;}}
.news-item time{font-size:.8rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;padding-top:2px;}
.news-tag{align-self:start;font-size:.72rem;font-weight:700;background:var(--paper-2);color:var(--forest-700);padding:4px 10px;border-radius:999px;white-space:nowrap;}
.news-item .body h4{font-size:.98rem;}
.news-item .body p{margin-top:4px;font-size:.88rem;color:var(--ink-soft);}

/* ============ Photo grid (general) ============ */
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
@media (max-width:820px){.photo-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.photo-grid{grid-template-columns:1fr;}}
.photo-card{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow);}
.photo-card img{width:100%;height:190px;object-fit:cover;display:block;}
.photo-card .cap{padding:12px 14px;font-size:.84rem;color:var(--ink-soft);}
.photo-card.wide img{height:240px;}
.photo-grid.four{grid-template-columns:repeat(4,1fr);}
@media (max-width:900px){.photo-grid.four{grid-template-columns:repeat(2,1fr);}}
@media (max-width:460px){.photo-grid.four{grid-template-columns:1fr;}}

/* ============ Wood-tag cards ============ */
.tag-card{
  background:var(--paper);border:1px solid var(--line);
  clip-path:polygon(5% 0%,100% 0%,100% 91%,95% 100%,0% 100%,0% 9%);
  padding:26px 24px 22px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:10px;height:100%;
}
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media (max-width:900px){.card-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:600px){.card-grid{grid-template-columns:1fr;}}
.tag-card .icon-badge{width:40px;height:40px;border-radius:11px;background:var(--paper-2);display:flex;align-items:center;justify-content:center;color:var(--forest-700);}
.tag-card .icon-badge svg{width:22px;height:22px;}
.tag-card h3{font-size:1.02rem;color:var(--forest-900);}
.tag-card p{font-size:.87rem;color:var(--ink-soft);}
.tag-card .meta{margin-top:auto;display:flex;gap:8px;flex-wrap:wrap;}
.tag-card .thumb{margin:-26px -24px 4px;border-radius:0;overflow:hidden;}
.tag-card .thumb img{width:100%;height:150px;object-fit:cover;}
.chip{font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--paper-2);color:var(--forest-700);}
.chip.amber{background:color-mix(in srgb, var(--amber-500) 22%, var(--paper-2));color:var(--amber-600);}
.chip.ember{background:color-mix(in srgb, var(--ember-600) 18%, var(--paper-2));color:var(--ember-600);}

/* ============ 3-step ============ */
.step-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
@media (max-width:760px){.step-grid{grid-template-columns:1fr;}}
.step .num{font-size:.78rem;font-weight:800;color:var(--amber-600);letter-spacing:.08em;}
.step h4{margin-top:8px;font-size:1.06rem;color:var(--forest-900);}
.step p{margin-top:6px;color:var(--ink-soft);font-size:.9rem;}

/* ============ Season strip ============ */
.season-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
@media (max-width:820px){.season-grid{grid-template-columns:repeat(2,1fr);}}
.season-cell{border-radius:18px;padding:20px;background:var(--paper);border:1px solid var(--line);}
.season-cell .sname{font-weight:800;color:var(--forest-900);font-size:1rem;}
.season-cell p{margin-top:8px;font-size:.85rem;color:var(--ink-soft);}

/* ============ Facility page ============ */
.fac-group{margin-bottom:8px;}
.fac-group h3{font-size:1.15rem;color:var(--forest-900);margin-bottom:16px;display:flex;align-items:center;gap:10px;}
.fac-group h3 svg{width:20px;height:20px;color:var(--amber-600);}
.fac-card{
  background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden;
  box-shadow:var(--shadow);display:flex;flex-direction:column;
}
.fac-card img{width:100%;height:180px;object-fit:cover;}
.fac-card .body{padding:20px;display:flex;flex-direction:column;gap:10px;flex:1;}
.fac-card h3{font-size:1.02rem;color:var(--forest-900);}
.fac-card p{font-size:.86rem;color:var(--ink-soft);flex:1;}
.fac-card .sv-link{margin-top:auto;font-size:.8rem;font-weight:700;color:var(--forest-500);display:inline-flex;align-items:center;gap:6px;text-decoration:none;}
.fac-card .sv-link:hover{color:var(--amber-600);}

.callout{
  border:1px dashed var(--forest-500);border-radius:18px;padding:20px 22px;
  display:flex;gap:14px;align-items:flex-start;background:color-mix(in srgb, var(--leaf-400) 10%, transparent);
}
.callout svg{width:26px;height:26px;color:var(--forest-700);flex:none;margin-top:2px;}
.callout h4{font-size:.96rem;color:var(--forest-900);}
.callout p{margin-top:4px;font-size:.86rem;color:var(--ink-soft);}

/* ============ Pricing page ============ */
.price-accordion{border-top:1px solid var(--line);}
.price-accordion details{border-bottom:1px solid var(--line);}
.price-accordion summary{
  list-style:none;cursor:pointer;padding:20px 4px;display:flex;align-items:center;justify-content:space-between;gap:12px;
  font-weight:800;color:var(--forest-900);font-size:1.02rem;
}
.price-accordion summary::-webkit-details-marker{display:none;}
.price-accordion summary .chevron{width:20px;height:20px;color:var(--amber-600);transition:transform .2s ease;flex:none;}
.price-accordion details[open] summary .chevron{transform:rotate(180deg);}
.price-accordion .panel{padding:0 4px 26px;}
.price-accordion .note{margin-top:14px;font-size:.82rem;color:var(--ink-soft);}

.table-wrap{overflow-x:auto;border-radius:14px;border:1px solid var(--line);}
table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:480px;}
thead th{background:var(--paper-2);text-align:left;padding:12px 16px;font-weight:800;color:var(--forest-700);white-space:nowrap;}
tbody td{padding:12px 16px;border-top:1px solid var(--line);color:var(--ink);}
tbody td.num{font-variant-numeric:tabular-nums;white-space:nowrap;}
tbody tr:hover{background:color-mix(in srgb, var(--paper-2) 60%, transparent);}

.reserve-cta{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  background:var(--forest-900);color:var(--paper);border-radius:22px;padding:30px 32px;
}
.reserve-cta h3{font-size:1.2rem;}
.reserve-cta p{margin-top:6px;color:color-mix(in srgb, var(--paper) 78%, transparent);font-size:.9rem;}

/* ============ Events page ============ */
.event-feature{
  display:grid;grid-template-columns:.9fr 1.1fr;gap:0;border-radius:24px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);
}
@media (max-width:760px){.event-feature{grid-template-columns:1fr;}}
.event-feature .visual{position:relative;min-height:220px;}
.event-feature .visual img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;}
.event-feature .visual .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,35,25,.25),rgba(16,28,20,.85));}
.event-feature .visual .content{position:relative;padding:28px;color:var(--paper);height:100%;display:flex;flex-direction:column;justify-content:flex-end;}
.event-feature .visual .count{font-size:2.6rem;font-weight:800;color:var(--amber-500);line-height:1;}
.event-feature .visual .count span{font-size:1rem;font-weight:700;color:var(--paper);margin-left:6px;}
.event-feature .info{padding:34px;background:var(--paper);}
.event-feature .info h3{font-size:1.3rem;color:var(--forest-900);}
.event-feature .info p{margin-top:10px;color:var(--ink-soft);font-size:.92rem;}
.event-feature dl{margin-top:16px;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:.86rem;}
.event-feature dt{color:var(--ink-soft);font-weight:700;}
.event-feature dd{margin:0;}

.mini-schedule{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
@media (max-width:700px){.mini-schedule{grid-template-columns:repeat(2,1fr);}}
.mini-schedule .m{border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:.78rem;}
.mini-schedule .m b{display:block;color:var(--forest-700);font-size:.85rem;}
.mini-schedule .m.done{background:var(--paper-2);}
.mini-schedule .m.next{border-color:var(--amber-500);background:color-mix(in srgb, var(--amber-500) 12%, var(--paper));}

.event-list{display:flex;flex-direction:column;gap:16px;}
.event-row{
  display:grid;grid-template-columns:96px 1fr auto;gap:18px;align-items:center;
  padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--paper);
}
@media (max-width:600px){.event-row{grid-template-columns:64px 1fr;}.event-row .btn{grid-column:1 / -1;}}
.event-row img{width:96px;height:72px;object-fit:cover;border-radius:10px;}
.event-row h4{font-size:1rem;color:var(--forest-900);}
.event-row p{margin-top:4px;font-size:.85rem;color:var(--ink-soft);}

/* ============ Column page ============ */
.filter-row{display:flex;gap:8px;flex-wrap:wrap;}
.filter-chip{
  border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:8px 16px;
  font-size:.82rem;font-weight:700;color:var(--ink-soft);
}

.column-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
@media (max-width:900px){.column-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:600px){.column-grid{grid-template-columns:1fr;}}
.column-card{
  background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden;
  display:flex;flex-direction:column;box-shadow:var(--shadow);
}
.column-card .thumb{height:150px;overflow:hidden;}
.column-card .thumb img{width:100%;height:100%;object-fit:cover;}
.column-card .body{padding:20px;display:flex;flex-direction:column;gap:8px;flex:1;}
.column-card .tagrow{display:flex;gap:6px;flex-wrap:wrap;}
.column-card h4{font-size:1rem;color:var(--forest-900);}
.column-card p{font-size:.85rem;color:var(--ink-soft);flex:1;}
.column-card .meta{font-size:.76rem;color:var(--ink-soft);display:flex;justify-content:space-between;align-items:center;margin-top:4px;}
.column-card.soon{opacity:.62;}
.column-card.soon .thumb{background:repeating-linear-gradient(135deg,var(--paper-3),var(--paper-3) 10px,var(--paper-2) 10px,var(--paper-2) 20px);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);}

/* ============ Column article ============ */
.article{max-width:760px;margin:0 auto;}
.article > * + *{margin-top:18px;}
.article .lead{font-size:1.06rem;color:var(--ink);}
.article h2{
  font-size:1.3rem;color:var(--forest-900);
  margin-top:44px;padding-top:22px;border-top:1px solid var(--line);
}
.article h3{font-size:1.02rem;color:var(--forest-700);margin-top:26px;}
.article p{color:var(--ink);}
.article ul,.article ol{margin:0;padding-left:1.3em;display:flex;flex-direction:column;gap:8px;color:var(--ink);}
.article li::marker{color:var(--amber-600);font-weight:700;}
.article .tips{list-style:none;padding:0;counter-reset:tip;}
.article .tips li{
  position:relative;padding:14px 18px 14px 52px;
  background:var(--paper-2);border-radius:14px;
}
.article .tips li::before{
  counter-increment:tip;content:counter(tip, lower-alpha);
  position:absolute;left:18px;top:14px;
  width:22px;height:22px;border-radius:50%;
  background:var(--amber-500);color:var(--forest-900);
  font-size:.78rem;font-weight:800;line-height:22px;text-align:center;
}
.article figure{margin:0;}
.article figure img{width:100%;border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow);}
.article figcaption{margin-top:10px;font-size:.82rem;color:var(--ink-soft);}
.article .callout-box{
  background:var(--paper-2);border-radius:18px;padding:22px 24px;
}
.article .callout-box h3{margin-top:0;}
.article .source-list{list-style:none;padding:0;gap:10px;}
.article .source-list a{color:var(--forest-500);font-weight:700;overflow-wrap:anywhere;}
.article .byline{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  font-size:.85rem;color:var(--ink-soft);
}
.article-back{margin-top:48px;}

/* ============ Selectable photo gallery ============ */
.gallery-bar{
  position:sticky;top:72px;z-index:20;
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  background:var(--paper-2);border:1px solid var(--line);border-radius:16px;
  padding:14px 18px;margin-bottom:20px;
}
.gallery-bar .count{font-size:.88rem;font-weight:700;color:var(--forest-900);margin-right:auto;}
.gallery-bar .count b{font-variant-numeric:tabular-nums;color:var(--ember-600);}

.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
@media (max-width:900px){.gallery-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:620px){.gallery-grid{grid-template-columns:repeat(2,1fr);}}
.gphoto{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--paper-2);}
.gphoto img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;cursor:zoom-in;transition:transform .25s ease;}
.gphoto:hover img{transform:scale(1.04);}
.gphoto.selected{outline:3px solid var(--amber-500);outline-offset:-3px;}
.gphoto .pick{
  position:absolute;top:8px;left:8px;z-index:2;
  display:flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;cursor:pointer;
  background:color-mix(in srgb, var(--paper) 86%, transparent);
  border:1.5px solid var(--forest-700);
}
.gphoto.selected .pick{background:var(--amber-500);border-color:var(--forest-900);}
.gphoto .pick input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;}
.gphoto .pick svg{width:16px;height:16px;color:var(--forest-900);opacity:0;}
.gphoto.selected .pick svg{opacity:1;}
.gphoto .num{
  position:absolute;bottom:6px;right:8px;z-index:2;
  font-size:.72rem;font-weight:700;color:var(--paper);
  text-shadow:0 1px 3px rgba(0,0,0,.8);font-variant-numeric:tabular-nums;
}

/* lightbox */
.lightbox[hidden]{display:none;}
.lightbox{
  position:fixed;inset:0;z-index:120;background:rgba(14,22,17,.9);
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.lightbox img{max-width:100%;max-height:82vh;border-radius:10px;}
.lightbox .lb-close,.lightbox .lb-prev,.lightbox .lb-next{
  position:absolute;border:none;cursor:pointer;color:var(--forest-900);
  background:var(--paper);border-radius:50%;width:44px;height:44px;font-size:1.1rem;line-height:1;
}
.lightbox .lb-close{top:18px;right:18px;}
.lightbox .lb-prev{left:18px;top:50%;transform:translateY(-50%);}
.lightbox .lb-next{right:18px;top:50%;transform:translateY(-50%);}
.lightbox .lb-caption{
  position:absolute;bottom:18px;left:0;right:0;text-align:center;
  color:var(--paper);font-size:.84rem;
}
.lightbox .lb-caption a{color:var(--amber-500);font-weight:700;}

/* download card */
.dl-card{
  display:flex;flex-wrap:wrap;align-items:center;gap:16px;
  background:var(--paper-2);border-radius:18px;padding:22px 24px;
}
.dl-card .dl-body{flex:1;min-width:220px;}
.dl-card h3{font-size:1.02rem;color:var(--forest-900);}
.dl-card p{margin-top:4px;font-size:.86rem;color:var(--ink-soft);}

/* message from the guide */
.guide-note{
  border-left:4px solid var(--amber-500);
  background:var(--paper-2);border-radius:0 18px 18px 0;
  padding:22px 24px;
}
.guide-note p{color:var(--ink);}
.guide-note .sign{margin-top:10px;text-align:right;font-weight:700;color:var(--forest-700);}

/* ============ Migration notice ============ */
.site-notice{
  background:color-mix(in srgb, var(--amber-500) 24%, var(--paper));
  border-bottom:1px solid var(--line);
  padding:14px 24px;
}
.site-notice .inner{
  max-width:1080px;margin:0 auto;
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;
  gap:6px 12px;text-align:center;
}
.site-notice p{font-size:.92rem;font-weight:700;color:var(--forest-900);}
.site-notice .url{
  font-weight:800;color:var(--ember-600);
  letter-spacing:.01em;overflow-wrap:anywhere;
}

/* ============ Route stats ============ */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
@media (max-width:760px){.stat-grid{grid-template-columns:repeat(2,1fr);}}
.stat{
  background:var(--paper-2);border-radius:16px;padding:16px 18px;
  display:flex;flex-direction:column;gap:4px;
}
.stat .label{font-size:.76rem;font-weight:700;letter-spacing:.06em;color:var(--ink-soft);}
.stat .value{font-size:1.35rem;font-weight:800;color:var(--forest-900);font-variant-numeric:tabular-nums;line-height:1.2;}
.stat .unit{font-size:.82rem;font-weight:700;color:var(--ink-soft);margin-left:2px;}

/* ============ Embedded video ============ */
.video-embed{
  position:relative;width:100%;max-width:360px;aspect-ratio:9/16;
  border-radius:16px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);
}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}

/* ============ Detail list ============ */
.detail-table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:0;}
.detail-table th{
  width:120px;text-align:left;vertical-align:top;white-space:nowrap;
  padding:12px 16px 12px 0;color:var(--forest-700);font-weight:800;
  border-bottom:1px solid var(--line);background:none;
}
.detail-table td{padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink);}
@media (max-width:560px){
  .detail-table th,.detail-table td{display:block;width:auto;padding:0;border:none;}
  .detail-table th{padding-top:12px;}
  .detail-table td{padding-bottom:12px;border-bottom:1px solid var(--line);}
}

/* ============ Embedded animation ============ */
.anim-frame{
  width:100%;height:min(82vh,760px);min-height:520px;
  border:1px solid var(--line);border-radius:16px;background:var(--paper);
  box-shadow:var(--shadow);
}
.anim-open{margin-top:10px;font-size:.86rem;font-weight:700;}
.anim-open a{color:var(--forest-500);}

/* 河川争奪の段階 */
.steps{list-style:none;margin:0;padding:0;counter-reset:cap;display:flex;flex-direction:column;gap:14px;}
.steps li{
  position:relative;padding:16px 20px 16px 58px;
  background:var(--paper-2);border-radius:16px;
}
.steps li::before{
  counter-increment:cap;content:counter(cap);
  position:absolute;left:18px;top:16px;
  width:26px;height:26px;border-radius:50%;
  background:var(--forest-700);color:var(--paper);
  font-size:.82rem;font-weight:800;line-height:26px;text-align:center;
}
.steps b{display:block;color:var(--forest-900);font-size:1rem;margin-bottom:4px;}
.steps span{font-size:.9rem;color:var(--ink);}

/* ============ Timeline ============ */
.timeline{list-style:none;margin:0;padding:0 0 0 22px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:22px;}
.timeline li{position:relative;}
.timeline li::before{
  content:"";position:absolute;left:-29px;top:7px;
  width:12px;height:12px;border-radius:50%;
  background:var(--amber-500);border:2px solid var(--paper);
}
.timeline .when{display:block;font-weight:800;color:var(--forest-700);font-size:.92rem;}
.timeline .what{display:block;margin-top:2px;color:var(--ink);font-size:.92rem;}
.timeline li.now::before{background:var(--ember-600);}

/* ============ Glossary ============ */
.glossary{
  background:var(--paper-2);border-radius:18px;padding:22px 24px;
}
.glossary h3{font-size:1.02rem;color:var(--forest-900);margin-bottom:12px;}
.glossary dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:10px 16px;font-size:.88rem;}
@media (max-width:560px){.glossary dl{grid-template-columns:1fr;gap:2px;}}
.glossary dt{font-weight:800;color:var(--forest-700);white-space:nowrap;}
.glossary dd{margin:0;color:var(--ink-soft);}
@media (max-width:560px){.glossary dd{margin-bottom:10px;}}

/* ============ Poster banner ============ */
.poster-banner{
  display:grid;grid-template-columns:200px 1fr;gap:24px;align-items:center;
  width:100%;text-align:left;cursor:pointer;
  background:var(--paper-2);border:1px solid var(--line);border-radius:22px;
  padding:22px;margin-bottom:32px;box-shadow:var(--shadow);
  font-family:inherit;color:inherit;
  transition:transform .18s ease, box-shadow .18s ease;
}
.poster-banner:hover{transform:translateY(-3px);}
@media (max-width:640px){.poster-banner{grid-template-columns:1fr;justify-items:center;text-align:center;}}
.poster-banner img{width:100%;border-radius:12px;border:1px solid var(--line);}
.poster-banner .pb-body{display:flex;flex-direction:column;gap:10px;}
.poster-banner h3{font-size:1.25rem;color:var(--forest-900);}
.poster-banner .pb-meta{font-size:.9rem;font-weight:700;color:var(--ember-600);}
.poster-banner p{font-size:.88rem;color:var(--ink-soft);}
.poster-banner .pb-cta{
  align-self:flex-start;display:inline-flex;align-items:center;gap:6px;
  background:var(--amber-500);color:var(--forest-900);
  border-radius:999px;padding:9px 20px;font-size:.85rem;font-weight:700;
}
@media (max-width:640px){.poster-banner .pb-cta{align-self:center;}}

/* 感謝祭のお礼 */
.thanks-panel{
  display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:30px;align-items:start;
  background:var(--paper-2);border:1px solid var(--line);border-radius:22px;
  padding:28px 30px;margin-bottom:32px;box-shadow:var(--shadow);
}
@media (max-width:760px){.thanks-panel{grid-template-columns:1fr;gap:22px;}}
.thanks-panel figure{margin:0;}
.thanks-panel figure img{width:100%;border-radius:14px;border:1px solid var(--line);display:block;}
.thanks-panel figure figcaption{margin-top:8px;font-size:.78rem;color:var(--ink-soft);text-align:center;}
.thanks-panel .tp-meta{font-size:.84rem;font-weight:700;color:var(--ink-soft);}
.thanks-panel h3{font-size:1.3rem;color:var(--forest-900);margin-top:6px;}
.thanks-panel p{margin-top:12px;font-size:.92rem;color:var(--ink);}
.thanks-panel .tp-count{
  display:inline-flex;align-items:baseline;gap:8px;margin-top:16px;
  background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:8px 20px;
}
.thanks-panel .tp-count .n{font-size:1.5rem;font-weight:800;color:var(--ember-600);font-variant-numeric:tabular-nums;}
.thanks-panel .tp-count .t{font-size:.84rem;font-weight:700;color:var(--ink-soft);}
.thanks-panel .tp-closing{margin-top:16px;font-weight:800;color:var(--forest-700);}
.thanks-panel .tp-links{margin-top:14px;display:flex;gap:16px;flex-wrap:wrap;font-size:.84rem;}
.thanks-panel .tp-links a{color:var(--forest-500);font-weight:700;}

.poster-sublink{margin:-20px 0 32px;text-align:center;font-size:.9rem;font-weight:700;}
.poster-sublink a{color:var(--forest-500);text-decoration:underline;text-underline-offset:3px;}
.poster-sublink a:hover{color:var(--amber-600);}

/* ============ Poster modal ============ */
.poster-modal[hidden]{display:none;}
.poster-modal{
  position:fixed;inset:0;z-index:100;
  background:rgba(16,26,19,.72);
  display:flex;align-items:flex-start;justify-content:center;
  padding:24px;overflow-y:auto;
}
.poster-modal .pm-panel{
  background:var(--paper);border-radius:22px;max-width:960px;width:100%;
  padding:28px;position:relative;box-shadow:0 30px 60px -20px rgba(0,0,0,.6);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:28px;
}
@media (max-width:820px){.poster-modal .pm-panel{grid-template-columns:1fr;}}
.poster-modal .pm-close{
  position:absolute;top:14px;right:14px;z-index:2;
  width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;
  background:var(--forest-900);color:var(--paper);font-size:1.1rem;line-height:1;
}
.poster-modal .pm-figure img{width:100%;border-radius:12px;border:1px solid var(--line);}
.poster-modal .pm-caption{font-size:.9rem;color:var(--ink);}
.poster-modal .pm-caption h3{font-size:1.2rem;color:var(--forest-900);margin-bottom:12px;padding-right:44px;}
.poster-modal .pm-caption p{margin-bottom:12px;}
.poster-modal .pm-caption .pm-label{font-weight:800;color:var(--forest-700);margin-top:16px;margin-bottom:4px;}
.poster-modal .pm-caption ul{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:4px;}
.poster-modal .pm-caption ul ul{margin:4px 0 4px 16px;}
.poster-modal .pm-caption .pm-note{font-size:.84rem;color:var(--ink-soft);}
.poster-modal .pm-caption .pm-signoff{font-weight:700;color:var(--forest-700);}

/* ============ Site updates ============ */
.update-list{display:flex;flex-direction:column;border-top:1px solid var(--line);}
.update-item{
  display:grid;grid-template-columns:120px 1fr;gap:18px;align-items:baseline;
  padding:14px 0;border-bottom:1px solid var(--line);font-size:.92rem;
}
@media (max-width:520px){.update-item{grid-template-columns:1fr;gap:2px;}}
.update-item time{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:.85rem;}
.update-archive{margin-top:20px;}
.update-archive summary{
  list-style:none;cursor:pointer;font-size:.88rem;font-weight:700;color:var(--forest-500);
  display:inline-flex;align-items:center;gap:8px;
}
.update-archive summary::-webkit-details-marker{display:none;}
.update-archive summary::before{content:"▸";transition:transform .2s ease;display:inline-block;}
.update-archive[open] summary::before{transform:rotate(90deg);}
.update-archive .update-list{margin-top:14px;}
.update-archive .empty{margin-top:12px;font-size:.86rem;color:var(--ink-soft);}

.submit-callout{
  background:var(--paper-2);border-radius:22px;padding:32px;display:flex;gap:22px;align-items:center;flex-wrap:wrap;justify-content:space-between;
}
.submit-callout .txt h3{font-size:1.1rem;color:var(--forest-900);}
.submit-callout .txt p{margin-top:6px;color:var(--ink-soft);font-size:.88rem;max-width:52ch;}

/* ============ Footer ============ */
footer{background:var(--forest-900);color:color-mix(in srgb, var(--paper) 85%, transparent);padding:56px 0 28px;}
.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:36px;}
@media (max-width:760px){.footer-grid{grid-template-columns:1fr;gap:28px;}}
.footer-brand{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.footer-brand svg{width:32px;height:32px;}
.footer-brand span{font-weight:800;color:var(--paper);}
footer h5{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--amber-500);margin-bottom:14px;}
footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:.88rem;}
footer a{text-decoration:none;color:inherit;}
footer a:hover{color:var(--amber-500);}
.footer-bottom{margin-top:44px;padding-top:22px;border-top:1px solid color-mix(in srgb, var(--paper) 20%, transparent);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.78rem;color:color-mix(in srgb, var(--paper) 60%, transparent);}

/* 来訪者カウンター */
.visit-counter[hidden]{display:none;}
.visit-counter{
  display:inline-flex;align-items:baseline;gap:8px;
  border:1px solid color-mix(in srgb, var(--paper) 28%, transparent);
  border-radius:999px;padding:6px 16px;
}
.visit-counter .vc-label{font-size:.76rem;color:color-mix(in srgb, var(--paper) 70%, transparent);}
.visit-counter .vc-num{
  font-size:.95rem;font-weight:800;color:var(--amber-500);
  font-variant-numeric:tabular-nums;letter-spacing:.04em;
}

:focus-visible{outline:2.5px solid var(--amber-500);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto !important;}}

/* 施設写真から料金表へのリンク（トップページ） */
.photo-grid.facility-links .photo-card{display:block;color:inherit;text-decoration:none;}
.photo-grid.facility-links .cap{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px;
  font-weight:700;color:var(--ink);
}
.cap-tag{
  flex:none;font-size:.72rem;font-weight:700;line-height:1.6;
  padding:2px 10px;border-radius:999px;white-space:nowrap;
  border:1px solid var(--amber-500);background:#fff;color:var(--amber-600);
}
.cap-tag.free,.cap-tag.paid{border-color:var(--line);background:var(--paper-2);color:var(--ink-soft);}
a.photo-card{transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;}
a.photo-card:hover,a.photo-card:focus-visible{
  transform:translateY(-3px);border-color:var(--amber-500);
  box-shadow:0 14px 30px -12px rgba(30,54,38,.45);
}
a.photo-card:hover .cap-tag{background:var(--amber-500);color:#fff;}
.price-accordion details{scroll-margin-top:96px;}

/* ============ 「森遊びの取説」シートの閲覧ページ ============ */
.sheet-figure{margin:0 auto;max-width:1180px;}
.sheet-figure img{
  width:100%;height:auto;display:block;
  border-radius:16px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow);
}
.sheet-figure a{display:block;}
.sheet-figure figcaption{margin-top:12px;font-size:.84rem;color:var(--ink-soft);text-align:center;}

/* ============ トップのパノラマ写真つきヒーロー ============ */
.hero-inner.hero-pano{grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;padding-bottom:118px;}
@media (max-width:820px){.hero-inner.hero-pano{grid-template-columns:1fr;gap:30px;}}
/* パノラマは本文の幅（1032px）を越えて、画面幅いっぱい近くまで広げる */
.hero-figure{
  grid-column:1 / -1;
  --pano-w:min(1560px, calc(100vw - 40px));
  width:var(--pano-w);
  margin:0 0 0 calc(50% - var(--pano-w) / 2);
}
.hero-figure .hero-photo{display:block;}
.hero-figure .hero-photo img{height:auto;}
.hero-figure figcaption{
  margin-top:14px;
  font-size:.9rem;line-height:1.9;
  color:color-mix(in srgb, var(--paper) 80%, transparent);
}
.hero-figure figcaption a{color:var(--amber-500);font-weight:700;}
.hero-figure figcaption a:hover{text-decoration:underline;}
.hero-figure .zoom-hint{
  display:block;margin-top:4px;font-size:.8rem;
  color:color-mix(in srgb, var(--paper) 58%, transparent);
}
.news-item{scroll-margin-top:96px;}

/* ============ 葉の形のカタログ（コラム） ============ */
.leaf-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:16px;
  max-width:1100px;margin:0 auto;
}
@media (max-width:900px){.leaf-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:620px){.leaf-grid{grid-template-columns:repeat(2,1fr);gap:12px;}}
.leaf{
  margin:0;background:var(--paper);border:1px solid var(--line);
  border-radius:16px;padding:12px 10px 14px;text-align:center;box-shadow:var(--shadow);
}
.leaf svg{width:100%;height:200px;display:block;}
@media (max-width:620px){.leaf svg{height:150px;}}
.leaf .bl{fill:#E8F1DF;stroke:var(--forest-500);stroke-width:1.6;stroke-linejoin:round;}
.leaf .vn{fill:none;stroke:var(--leaf-400);stroke-width:0.9;}
.leaf .mr{fill:none;stroke:var(--forest-500);stroke-width:1.3;stroke-linecap:round;}
.leaf figcaption b{display:block;font-size:.92rem;color:var(--forest-900);}
.leaf figcaption span{
  display:block;margin-top:4px;font-size:.74rem;line-height:1.65;color:var(--ink-soft);
}

/* 59種の一覧 */
.article .sp-list{
  columns:3;column-gap:24px;padding-left:1.6em;font-size:.9rem;
  display:block;
}
@media (max-width:620px){.article .sp-list{columns:2;column-gap:16px;font-size:.86rem;}}
.article .sp-list li{break-inside:avoid;margin-top:0;padding-left:2px;}
.article .sp-list li b{color:var(--forest-700);}
.article .steps em{font-style:normal;font-weight:700;color:var(--forest-700);}

/* ============ コラム一覧への誘導タイル ============ */
.tag-card-more{background:var(--paper-2);justify-content:center;}
.tag-card-more:hover{background:var(--paper-3);}
.tag-card-more h3{margin-top:4px;}
.column-card .meta{flex-wrap:wrap;gap:4px 10px;}
.tag-card .card-subtitle{
  margin-top:-6px;font-size:.78rem;font-weight:700;
  color:var(--amber-600);letter-spacing:.01em;
}
