/* ===== Reset & Base ===== */
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
html,body{overflow-x:hidden;}
body{
  font-family:"Noto Sans JP","Hiragino Sans",sans-serif;
  color:#222;background:#F3F1E9;line-height:1.6;
  font-feature-settings:"palt" 1;letter-spacing:.01em;
}
img{max-width:100%;height:auto;display:block;image-rendering:auto;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;padding-left:0;}

/* ===== Theme Vars ===== */
:root{
  --navy:#1C2D5A; --green:#4A6B4F; --paper:#F3F1E9; --red:#C94F3D;
  --mx:min(1080px,92vw);
  --space:clamp(16px,2.4vw,28px);
  --radius:12px;
  --shadow:0 10px 20px rgba(0,0,0,.07),0 2px 6px rgba(0,0,0,.06);
}

/* ===== Layout ===== */
.container{max-width:var(--mx);margin:0 auto;padding:0 16px;position:relative;}
.block{padding:calc(var(--space)*1.2) 0;}
.block:first-of-type{padding-top:0;}
.hero + .block{padding-top:calc(var(--space)*.9);}
.block__title{
  font-size:clamp(20px,2.6vw,28px);font-weight:700;margin:0 0 .75rem;
  border-left:8px solid var(--red);padding-left:.7rem;
}
.block__lead{font-size:clamp(14px,1.6vw,18px);opacity:.9;}
section[id]{scroll-margin-top:clamp(72px,9vh,120px);}

/* ===== Header（sticky） ===== */
.site-header{
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(6px);
  background:color-mix(in oklab,var(--navy) 92%, transparent);
}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;}
.site-title{color:#fff;font-size:clamp(18px,2vw,22px);margin:0;}
.global-nav__list{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:.6rem 0;margin:0;}
.global-nav__list a{padding:.5rem .75rem;border-radius:8px;color:#fff;font-weight:600;}
.global-nav__list a:hover{background:rgba(255,255,255,.14);}

/* ===== Hero（全幅・Ken Burns） ===== */
.hero{
  position:relative;
  width:100vw;
  margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
  height:clamp(360px,56vh,560px);
  overflow:hidden; background:#000;
}
.hero-img{
  width:100%; height:100%;
  object-fit:cover; object-position:center; display:block;
}
.hero.hero--enhanced .hero-img{ display:none; }

#hero-slides{ position:absolute; inset:0; overflow:hidden; }
.hero-slide{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; object-position:center;
  will-change:transform, opacity, filter;
  opacity:0;
  transition:opacity 900ms ease;
  transform:translate3d(0,0,0) scale(1) rotate(0deg);
}
.hero-slide.is-active{ opacity:1; }
.hero-slide.is-animating{
  transition:opacity 900ms ease, transform var(--hero-transform-ms, 6500ms) var(--hero-ease, linear);
}
.hero-caption{
  position:absolute; left:50%; bottom:clamp(12px,6vh,48px); transform:translateX(-50%);
  z-index:2; color:#fff; text-align:center; text-shadow:0 2px 8px rgba(0,0,0,.5); pointer-events:none;
}
.hero-caption h1{font-size:clamp(22px,3.6vw,36px);margin:0 0 .3rem;}
.hero-caption p{font-size:clamp(13px,1.6vw,18px);margin:0;}

/* ===== Buttons ===== */
a.btn, .btn{
  display:inline-block;background:var(--red);color:#fff !important;text-decoration:none !important;
  border-radius:999px;padding:.55rem 1rem;font-weight:700;box-shadow:0 2px 0 rgba(0,0,0,.06) inset;
  transition:transform .18s ease, background .3s ease;
}
a.btn:hover, .btn:hover{ transform:translateY(-1px); background:#b64032; }
.access .map-link::after{ content:"↗"; margin-left:.35em; font-weight:700; }

/* ===== Greeting / Access（2カラム） ===== */
.grid{display:grid;gap:var(--space);}
.grid--2col{grid-template-columns:1fr;align-items:start;}
@media (min-width:860px){ .grid--2col{grid-template-columns:1fr 1fr;} }
.section-media{
  width:100%; aspect-ratio:4/3; height:auto; object-fit:cover;
  border-radius:var(--radius); box-shadow:var(--shadow);
}
@media (min-width:1024px){ .section-media{max-height:360px;} }
.greeting .block__lead,.access .block__lead{margin-bottom:.6rem;}

/* ===== Sliders（gallery / cards） ===== */
.slider{position:relative;}
.gallery,.cards{ position:relative; overflow:hidden; }
.carousel__track{
  display:flex; gap:16px; padding-inline:0;
  transition:transform .55s ease; will-change:transform;
}
.tile,.card{
  flex:0 0 auto; border-radius:var(--radius); overflow:hidden;
  background:#fff; box-shadow:var(--shadow);
  transition:transform .18s ease, box-shadow .18s ease;
}
.tile:hover,.card:hover{ transform:translateY(-3px); box-shadow:0 16px 32px rgba(0,0,0,.12),0 6px 16px rgba(0,0,0,.10); }
.tile img,.card__img{ width:100%; height:clamp(160px,22vw,240px); object-fit:cover; border-radius:0; }
.card__img{ height:clamp(150px,18vw,200px); }
.tile__caption{ padding:.7rem .9rem; font-size:.95rem; }
.card__body{ padding:.7rem .9rem; }
.card__title{ margin:0 0 .25rem; font-weight:700; }
.card__text{ font-size:.9rem; opacity:.9; }
.tile p,.card p{ margin:.5rem .9rem .8rem; }

/* 矢印 */
.carousel__arrow{
  position:absolute; top:50%; transform:translateY(-50%);
  background:none; border:none; color:#fff;
  font-size:3rem; font-weight:900; line-height:1;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  text-shadow:0 2px 4px rgba(0,0,0,.6);
  transition:color .3s ease, transform .2s ease; z-index:10;
}
.carousel__arrow--prev{ left:8px; }
.carousel__arrow--next{ right:8px; }
.carousel__arrow:hover{ transform:translateY(-50%) scale(1.15); color:#ffeb3b; }

/* ドット */
.carousel__dots{ display:flex; justify-content:center; gap:8px; margin-top:.8rem; }
.carousel__dot{
  width:10px; height:10px; border-radius:50%;
  background:rgba(0,0,0,.3); border:none; cursor:pointer; transition:background .3s;
}
.carousel__dot[aria-current="true"]{ background:var(--red); }

/* ===== Lightbox ===== */
.lb-backdrop{ position:fixed; inset:0; background:rgba(0,0,0,.85); display:none; align-items:center; justify-content:center; z-index:9999; }
.lb-backdrop.is-open{ display:flex; }
.lb-dialog{
  width:min(1100px,96vw); max-height:92vh; background:#fff; border-radius:16px;
  box-shadow:0 24px 60px rgba(0,0,0,.35); border:4px solid var(--navy);
  overflow:hidden; position:relative; display:grid; grid-template-columns:1fr 360px; gap:16px; padding:14px;
}
@media (max-width:880px){ .lb-dialog{ grid-template-columns:1fr; width:min(720px,96vw); padding:12px; } }
.lb-media-wrap{ background:#000; border-radius:12px; overflow:hidden; max-height:calc(92vh - 28px); display:flex; align-items:center; justify-content:center; }
@media (max-width:880px){ .lb-media-wrap{ max-height:60vh; } }
.lb-media-wrap img{ width:100%; height:100%; object-fit:contain; }
.lb-meta{ overflow:auto; padding:4px 4px 4px 0; }
@media (max-width:880px){ .lb-meta{ padding:8px 0 0; } }
#lb-title{ margin:.25rem 0 .5rem; font-size:1.15rem; font-weight:700; border-left:6px solid var(--red); padding-left:.5rem; }
#lb-desc{ margin:0 0 .75rem; line-height:1.7; }
.lb-link a{ display:inline-block; text-decoration:none; font-weight:700; color:#4A6B4F; border:2px solid #4A6B4F; padding:.45rem .8rem; border-radius:8px; }
.lb-link a:hover{ background:#4A6B4F; color:#fff; }
.lb-link a::after{ content:"↗"; margin-left:.35em; }
.lb-close{ position:absolute; top:6px; right:8px; background:transparent; border:none; cursor:pointer; font-size:1.6rem; line-height:1; color:#333; }
.lb-close:hover{ color:#000; }

/* ===== Back To Top ===== */
.backtotop{
  position:fixed; right:18px; bottom:18px; transform:translateY(18px);
  width:56px; height:56px; border-radius:50%;
  border:none; cursor:pointer; z-index:60;
  background:var(--navy); color:#fff; font-size:22px; font-weight:900; line-height:1;
  box-shadow:0 8px 18px rgba(0,0,0,.25);
  display:flex; align-items:center; justify-content:center;

  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .35s ease, transform .35s ease, visibility 0s linear .35s;
}
.backtotop.is-visible{
  opacity:.6; visibility:visible; pointer-events:auto;
  transform:translateY(0);
  transition:opacity .35s ease, transform .35s ease;
}
.backtotop:hover{ opacity:1; transform:translateY(-2px); }

@media (max-width:560px){
  .backtotop{
    right:14px; bottom:14px; transform:translateY(18px);
    width:48px; height:48px; font-size:20px;
  }
  .backtotop.is-visible{ transform:translateY(0); }
}

/* ===== Footer ===== */
.site-footer{ border-top:3px solid var(--navy); padding:calc(var(--space)*.6) 0; text-align:center; }
.footer__copy{ opacity:.85; font-size:.9rem; }

/* === Hero: 回転系のCSSアニメだけ止める（transformは壊さない） === */
.hero-slide,
.hero-slide img,
.hero-img { animation: none !important; }

/* ===== Lightbox: scroll lock ===== */
html.no-scroll, body.no-scroll { overflow: hidden !important; }
