/* =========================================
   FC Header (2-row)
========================================= */
.fc-header--two-rows{
  background:#364253;
  color:#fff;
  position:sticky;
  top:0;
  z-index:1000;
  box-shadow:none;
}
.fc-header__inner{
  max-width:1200px;
  margin:0 auto;
  padding:0 16px;
  height:auto;
}
.fc-header__toprow{
  height:64px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.fc-header__navrow{
  height:52px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.fc-header__divider{
  height:1px;
  background:#fff;
  opacity:1;
}

/* logo */
.fc-header__logo{ overflow:hidden; }
.fc-header__logo img{
  max-height:52px; /* 48〜56px調整OK */
  width:auto;
  height:auto;
  display:block;
}
.fc-header__sitename{
  font-weight:700;
  font-size:18px;
  color:#fff;
}

/* actions */
.fc-header__actions{
  display:flex;
  align-items:center;
  gap:12px;
}
.fc-header__contact{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#fff;
  text-decoration:none;
  line-height:1;
  padding:8px 10px;
  border:1px solid #fff;
  border-radius:999px;
}
.fc-header__contact:hover{ background:rgba(255,255,255,.12); }
.fc-header__icon{ display:block; }

/* menu (PC) */
.fc-menu{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  gap:28px;
}
.fc-menu--centered{ justify-content:center; }
.fc-menu a{
  color:#fff;
  text-decoration:none;
  display:block;
  padding:8px 0;
}
.fc-menu > li{ position:relative; }
.fc-menu > li + li::before{
  content:"";
  position:absolute;
  left:-14px;
  top:50%;
  transform:translateY(-50%);
  width:1px;
  height:16px;
  background:#fff;
}

/* hamburger */
.fc-header__toggle{
  display:none;
  width:44px;
  height:44px;
  border:0;
  background:transparent;
  color:#fff;
  cursor:pointer;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
}
.fc-header__toggle-bar{
  width:24px;
  height:2px;
  background:currentColor;
  display:block;
}

/* hamburger -> X */
.fc-header__toggle[aria-expanded="true"] .fc-header__toggle-bar:nth-child(1){
  transform:translateY(8px) rotate(45deg);
  transition:.3s;
}
.fc-header__toggle[aria-expanded="true"] .fc-header__toggle-bar:nth-child(2){
  opacity:0;
  transition:.3s;
}
.fc-header__toggle[aria-expanded="true"] .fc-header__toggle-bar:nth-child(3){
  transform:translateY(-8px) rotate(-45deg);
  transition:.3s;
}

/* SP nav overlay */
@media (max-width: 960px){
  .fc-header__contact{ padding:8px 10px; font-size:14px; }
  .fc-header__toggle{ display:inline-flex; }

  .fc-header__nav{
    position:fixed;
    inset:65px 0 0 0; /* 64 + 1 + 51〜52 目安 */
    background:#333;
    display:none;
    padding:16px;
    z-index:999;
    border-top:1px solid #fff;
  }
  .fc-header__nav.is-open{ display:block; }

  .fc-menu{ flex-direction:column; gap:0; }
  .fc-menu > li + li::before{ display:none; }
  .fc-menu a{
    padding:14px 8px;
    border-bottom:1px solid rgba(255,255,255,.25);
  }
  .fc-header__navrow{ height:auto; }
}

/* =========================================
   Category & Sliders layout
========================================= */
.cs-wrap{
  display:grid;
  grid-template-columns:260px 1fr; /* 左固定 + 右可変（統一） */
  grid-template-areas:"aside main";
  gap:48px; /* PC余白（統一） */
  max-width:1200px;
  padding:24px 16px;
  margin:0 auto;
}
.cs-aside{ grid-area:aside; }
.cs-main { grid-area:main;  }

.cs-main{ display:grid; gap:40px; }

/* aside */
.cs-aside{
  background:#fff;
  border:1.5px solid #0078B5;
  border-radius:10px;
  padding:14px 14px 6px;
  box-sizing:border-box;
  position:sticky;
  top:120px;       /* PC時：ヘッダー分 */
  align-self:start;
  z-index:1;
}
.cs-aside__title{
  margin:0 0 10px;
  font-weight:800;
  font-size:18px;
  color:#111;
  border-bottom:2px dotted #0078B5;
  padding-bottom:6px;
}

/* category list */
.cs-catlist{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
}
.cs-catlist li + li{ border-top:1px dotted #0078B5; }

.cs-catlist a{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 6px;
  color:#222;
  text-decoration:none;
  font-size:14px;
  font-weight:700;
}
.cs-catlist a:hover{ background:rgba(64,224,208,0.08); }

.cs-catlist i{
  color:#0078B5;
  font-size:20px;
  line-height:1;
  flex:0 0 24px;
}

/* PCだけ改行 */
.only-pc{ display:none; }
@media (min-width:961px){
  .only-pc{ display:inline; }
}

/* head (each slider section) */
.cs-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:10px;
}
.cs-title{
  margin:0 0 12px;
  display:block;
  width:100%;
  background:#0078B5;
  color:#fff;
  padding:8px 14px;
  border-radius:0;
  font-size:16px;
  font-weight:700;
  text-align:left;
}

/* slider */
.cs-slider{
  position:relative;
  overflow:hidden;
  padding:0 48px; /* 矢印ぶん */
}
.cs-btn{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:40px;
  height:40px;
  border-radius:999px;
  border:0;
  background:#5a7b8cb8;
  color:#fff;
  display:grid;
  place-items:center;
  cursor:pointer;
  z-index:2;
}
.cs-btn:hover{ opacity:.5; }
.cs-btn.prev{ left:4px; }
.cs-btn.next{ right:4px; }

.cs-track{
  display:flex;
  gap:16px;
  will-change:transform;
  transition:transform .5s ease;
}

/* cards */
:root{ --cs-visible:3; }
@media (max-width:1024px){ :root{ --cs-visible:2; } }
@media (max-width:640px) { :root{ --cs-visible:1; } }

.cs-card{
  flex:0 0 calc((100% - (var(--cs-visible) - 1) * 16px) / var(--cs-visible));
  background:#fff;
  border:1px solid #eee;
  border-radius:12px;
  overflow:hidden;
}
.cs-link{ display:block; text-decoration:none; color:inherit; }
.cs-thumb img{ width:100%; height:200px; object-fit:cover; display:block; }
.cs-card-title{ font-size:14px; line-height:1.4; margin:8px 10px 12px; font-weight:600; }

.cs-more{ margin-top:12px; }
.cs-more--center{ text-align:center; }
.cs-more-link{
  display:inline-block;
  padding:8px 14px;
  border:1px solid #333;
  border-radius:999px;
  text-decoration:none;
  color:#222;
}
.cs-more-link:hover{ background:#333; color:#fff; }

/* SP: layout stack & overflow fix */
@media (max-width:960px){
  .cs-wrap{
    grid-template-columns:1fr;
    grid-template-areas:
      "main"
      "aside";
    gap:16px;
  }
  .cs-aside{
    position:static;
    top:auto;
    min-width:0;   /* ← 横はみ出し根治 */
    width:100%;
    max-width:100%;
  }
  .cs-slider{ padding:0 40px; }
}

/* =========================================
   News list
========================================= */
.news-list{
  max-width:1200px;
  margin:32px auto;
  padding:0 16px;
  border-top:2px solid #0078B5;
  border-bottom:2px solid #0078B5;
  background:#fff;
}
.cs-main .news-list{ margin:0 0 24px; padding:0; }

.news-list__inner{
  background:#fafafa;
  border:1px solid #eee;
  border-radius:8px;
  padding:20px;
}
.cs-main .news-list__inner{ padding:16px; }

.news-list__title{
  font-size:18px;
  font-weight:800;
  margin:10px 0 12px;
  color:#111;
  border-left:4px solid #333;
  padding-left:10px;
}
.news-list__body{ font-size:15px; overflow:hidden; }

.news-list__ul{ list-style:none; margin:0; padding:0; }
.news-list__item{ border-bottom:1px dotted #0078B5; }

.news-list__link{
  display:grid;
  grid-template-columns:110px 1fr;
  gap:10px;
  align-items:baseline;
  padding:10px 4px;
  color:#222;
  text-decoration:none;
}
.news-list__link:hover{ background:rgba(64,224,208,0.06); }

.news-list__date{
  color:#0078B5;
  font-size:14px;
  font-variant-numeric:tabular-nums;
}
.news-list__title-text{ font-size:15px; line-height:1.6; }

.news-list__more{ text-align:right; margin-top:10px; }
.news-list__more-link{
  font-size:12px;
  color:#222;
  text-decoration:none;
}
.news-list__more-link:hover{ text-decoration:underline; }

/* =========================================
   FV caption (band)
========================================= */
.fv-caption{
  position:absolute;
  left:10%;
  top:50%;
  transform:translateY(-50%);
  background:rgba(255,255,255,.8);
  color:#111;
  padding:clamp(12px, 2vw, 24px) clamp(16px, 3vw, 32px);
  border-radius:12px;
  box-shadow:0 6px 24px rgba(0,0,0,.15);
  max-width:80%;
  font-family:
    "Hiragino Mincho ProN","Hiragino Mincho Pro","Yu Mincho",
    "游明朝","Noto Serif JP","MS PMincho",serif;
}
.fv-caption__title{
  margin:0;
  font-size:clamp(18px, 3vw, 36px);
  font-weight:700;
  letter-spacing:.02em;
  text-shadow:0 1px 0 rgba(255,255,255,.25);
}

/* SP */
@media (max-width:640px){
  .fv-caption{
    left:50%;
    top:50%;
    transform:translate(-50%, -50%);
    max-width:min(92vw, 520px);
    width:100%;
    text-align:center;
    padding:clamp(12px, 3.5vw, 20px) clamp(14px, 4.5vw, 24px);
    border-radius:0;
    box-sizing:border-box;
  }
  .fv-caption__title{
    font-size:clamp(18px, 5.2vw, 24px);
  }
}

/* tablet */
@media (min-width:641px) and (max-width:1024px){
  .fv-caption{ left:8%; max-width:min(60ch, 70%); }
}

/* =========================================
   Footer
========================================= */
.fc-footer{ background:#364253; color:#fff; }
.fc-footer__in{
  max-width:1200px;
  margin:0 auto;
  padding:28px 16px 36px;
}
.fc-footer__nav{ margin-bottom:20px; }
.fc-footer__menu{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  gap:28px;
  justify-content:center;
  flex-wrap:wrap;
}
.fc-footer__menu a{
  color:#fff;
  text-decoration:none;
  padding:6px 0;
}
.fc-footer__menu a:hover{ text-decoration:underline; }

.fc-footer__contact{
  display:flex;
  justify-content:center;
  margin:14px 0 22px;
}
.fc-footer__contactbox{
  border:1.5px solid #fff;
  border-radius:12px;
  padding:14px 18px;
  text-align:center;
  max-width:560px;
  width:100%;
  box-sizing:border-box;
}
.fc-footer__contactlead{
  margin:0 0 6px;
  font-weight:700;
  font-size:16px;
  line-height:1.5;
}
.fc-footer__contactmail{
  margin:0;
  font-size:18px;
  font-weight:800;
}
.fc-footer__contactmail a{
  color:#fff;
  text-decoration:none;
}
.fc-footer__contactmail a:hover{ text-decoration:underline; }

.fc-footer__company{
  margin:10px auto 8px;
  font-style:normal;
  text-align:center;
  line-height:1.9;
  opacity:.95;
}
.fc-footer__copy{
  display:block;
  text-align:center;
  opacity:.8;
  font-size:12px;
  line-height:1.6;
}

@media (max-width:640px){
  .fc-footer__contactbox{ padding:12px 14px; }
  .fc-footer__contactmail{ font-size:16px; word-break:break-all; }
  .fc-footer__menu{ gap:16px; }
}

/* =========================================
   Global overflow safety
========================================= */
html, body{ overflow-x: clip; }
@supports not (overflow: clip){
  html, body{ overflow-x: hidden; }
}
img, video, iframe, embed, object{ max-width:100%; height:auto; }
