/* ============================================================
   cms/common.css - 共通テンプレート用
   変数・リセット・ヘッダー・CTA電話・フッター・固定電話
   + 全テンプレート共通コンポーネント (section-header, card, btn-outline)
   ============================================================ */

:root {
  --c-primary: #102E4A;
  --c-primary-l: #1A4A6E;
  --c-primary-rgb: 16,46,74;
  --c-accent: #5887FF;
  --c-accent-l: #E8F0FE;
  --c-accent-d: #3D6FE8;
  --c-accent-rgb: 88,135,255;
  --c-bg: #FFFFFF;
  --c-surface: #F5F7FA;
  --c-text: #1F2937;
  --c-text-m: #6B7280;
  --c-text-l: #9CA3AF;
  --c-border: #E5E7EB;
  --c-ok: #10B981;
  --c-white: #FFFFFF;
  --c-warm: #F9F6F2;

  --f-head: 'Zen Maru Gothic', sans-serif;
  --f-body: 'Kosugi', sans-serif;
  --f-accent: 'Kiwi Maru', serif;

  --sp-xs: .25rem; --sp-sm: .5rem; --sp-md: 1rem; --sp-lg: 1.5rem;
  --sp-xl: 2rem; --sp-2xl: 3rem; --sp-3xl: 4rem; --sp-4xl: 5rem;

  --r-sm: .375rem; --r-md: .625rem; --r-lg: 1rem; --r-xl: 1.25rem; --r-full: 9999px;

  --sh-sm: 0 1px 3px rgba(0,0,0,.06);
  --sh-md: 0 4px 14px rgba(0,0,0,.07);
  --sh-lg: 0 8px 28px rgba(0,0,0,.1);
  --sh-card: 0 2px 12px rgba(var(--c-primary-rgb),.05);
  --sh-card-h: 0 10px 36px rgba(var(--c-primary-rgb),.13);

  --t-fast: 150ms ease; --t-base: 300ms ease; --t-slow: 500ms ease;
  --t-card: 400ms cubic-bezier(.4,0,.2,1);

  --header-h: 60px;
}

/* --- Reset --- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--f-body);font-size:1rem;line-height:1.8;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none;transition:color var(--t-fast)}
ul,ol{list-style:none}
address{font-style:normal}
button{font:inherit;border:none;background:none;cursor:pointer}

.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--sp-lg)}

/* ============================================================
   SECTION HEADER (shared)
   ============================================================ */
.section-header{text-align:center;margin-bottom:var(--sp-2xl)}
.section-header--left{text-align:left}
.section-header__label{
  font-family:var(--f-accent);font-size:.8rem;font-weight:400;
  color:var(--c-accent);letter-spacing:.15em;text-transform:uppercase;
  margin-bottom:var(--sp-xs);
}
.section-title{
  font-family:var(--f-head);font-size:1.5rem;font-weight:700;
  color:var(--c-primary);line-height:1.4;position:relative;display:inline-block;
}
.section-title::after{
  content:'';position:absolute;bottom:-8px;left:50%;
  transform:translateX(-50%) scaleX(0);width:48px;height:3px;
  background:linear-gradient(90deg,var(--c-accent),var(--c-primary));
  border-radius:var(--r-full);transition:transform .8s cubic-bezier(.4,0,.2,1);
}
.section-header--left .section-title::after{left:0;transform:scaleX(0);transform-origin:left}
.section-title.is-visible::after{transform:translateX(-50%) scaleX(1)}
.section-header--left .section-title.is-visible::after{transform:scaleX(1)}
.text-accent{color:var(--c-accent)}

/* ============================================================
   CARD BASE (shared)
   ============================================================ */
.card{
  background:var(--c-bg);border-radius:var(--r-lg);box-shadow:var(--sh-card);
  transition:all var(--t-card);position:relative;overflow:hidden;
}
.card::before{
  content:'';position:absolute;bottom:0;left:0;width:100%;height:3px;
  background:linear-gradient(90deg,var(--c-accent),var(--c-primary));
  transform:scaleX(0);transform-origin:left;transition:transform var(--t-card);
}
@media(hover:hover){
  .card:hover{transform:translateY(-6px);box-shadow:var(--sh-card-h)}
  .card:hover::before{transform:scaleX(1)}
}

/* Card shimmer */
.card::after{
  content:'';position:absolute;top:0;left:-100%;
  width:50%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);
  pointer-events:none;
}
@media(hover:hover){
  .card:hover::after{left:100%;transition:left .55s ease}
}

/* ============================================================
   BTN OUTLINE (shared)
   ============================================================ */
.btn-outline{
  display:inline-flex;align-items:center;gap:var(--sp-sm);
  padding:var(--sp-sm) var(--sp-xl);border:2px solid var(--c-accent);
  color:var(--c-accent);font-weight:700;font-size:.88rem;
  border-radius:var(--r-full);transition:all var(--t-base);
}
.btn-outline i{font-size:.75rem;transition:transform var(--t-base)}
.btn-outline:hover{background:var(--c-accent);color:var(--c-white)}
.btn-outline:hover i{transform:translateX(4px)}

.ifd-hero-btn{
  display:inline-flex;align-items:center;gap:var(--sp-sm);
  padding:var(--sp-sm) var(--sp-xl);border:2px solid var(--c-accent);
  color:var(--c-accent);font-weight:700;font-size:.88rem;
  border-radius:var(--r-full);transition:all var(--t-base);
}
.ifd-hero-btn i{font-size:.75rem;transition:transform var(--t-base)}
.ifd-hero-btn:hover{background:var(--c-accent);color:var(--c-white)}
.ifd-hero-btn:hover i{transform:translateX(4px)}

/* ============================================================
   NEWS TAG COLORS (shared)
   ============================================================ */
.news__tag{
  display:inline-flex;align-items:center;padding:1px 10px;
  font-size:.7rem;font-weight:700;border-radius:var(--r-sm);white-space:nowrap;
}
.news__tag--1{background:var(--c-accent-l);color:var(--c-accent)}
.news__tag--2{background:#FEF3C7;color:#D97706}
.news__tag--3{background:#ECFDF5;color:#059669}
.news__tag--4{background:#F3E8FF;color:#7C3AED}
.news__tag--5{background:#FFF1F2;color:#E11D48}

/* ============================================================
   HEADER
   ============================================================ */
.header{
  position:sticky;top:0;z-index:1000;
  background:rgba(255,255,255,.97);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:6px solid var(--c-accent);height:var(--header-h);transition:box-shadow var(--t-base);
}
.header.is-scrolled{box-shadow:var(--sh-md)}
.header__inner{display:flex;align-items:center;justify-content:space-between;height:100%}

.header__logo{display:flex;align-items:center;flex-shrink:0;text-decoration:none}
.header__logo-img{
  display:block;height:36px;width:auto;max-width:min(260px,52vw);
  object-fit:contain;object-position:left center;
}
@media(min-width:768px){.header__logo-img{height:40px;max-width:280px}}

.header__nav{display:none}
.header__menu{display:flex;align-items:center;gap:2px}
.header__menu-item a{
  display:block;padding:var(--sp-sm) .75rem;font-size:.85rem;font-weight:500;
  color:var(--c-text);border-radius:var(--r-md);transition:all var(--t-fast);white-space:nowrap;
}
.header__menu-item a:hover{color:var(--c-accent);background:var(--c-accent-l)}
.header__menu-item.is-active a{color:var(--c-accent);font-weight:700}

.header__tel-btn{
  display:flex;align-items:center;gap:4px;flex-shrink:0;
  padding:6px 10px;background:var(--c-primary);color:var(--c-white);
  font-family:var(--f-head);font-weight:700;font-size:.72rem;
  border-radius:var(--r-full);transition:all var(--t-base);white-space:nowrap;
}
@media(min-width:768px){
  .header__tel-btn{gap:var(--sp-xs);padding:var(--sp-sm) var(--sp-lg);font-size:.85rem}
}
.header__tel-btn:hover{background:var(--c-primary-l);transform:translateY(-1px)}
.header__tel-btn i{font-size:.7rem}

.header__burger{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:44px;height:44px;padding:10px}
.header__burger-line{display:block;width:22px;height:2px;background:var(--c-primary);border-radius:2px;transition:all var(--t-base);transform-origin:center}
.header__burger.is-open .header__burger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}
.header__burger.is-open .header__burger-line:nth-child(2){opacity:0}
.header__burger.is-open .header__burger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.header__nav.is-open{
  display:flex;position:fixed;top:var(--header-h);left:0;right:0;bottom:0;
  background:rgba(255,255,255,.98);backdrop-filter:blur(20px);z-index:999;
  padding:var(--sp-xl) var(--sp-lg);
}
.header__nav.is-open .header__menu{flex-direction:column;align-items:stretch;gap:0;width:100%}
.header__nav.is-open .header__menu-item a{font-size:1.05rem;padding:var(--sp-md) var(--sp-lg);border-bottom:1px solid var(--c-border);border-radius:0}

/* ============================================================
   CTA PHONE
   ============================================================ */
.cta-phone{
  padding:var(--sp-3xl) 0;
  background:linear-gradient(135deg,var(--c-primary) 0%,var(--c-primary-l) 100%);
  position:relative;overflow:hidden;
}
.cta-phone__inner{position:relative;z-index:1;text-align:center}
.cta-phone__content{position:relative;z-index:2}
.cta-phone__lead{font-size:.85rem;color:rgba(255,255,255,.65);margin-bottom:var(--sp-xs)}
.cta-phone__heading{font-family:var(--f-head);font-size:1.5rem;font-weight:700;color:var(--c-white);margin-bottom:var(--sp-xs)}
.cta-phone__sub{font-size:.82rem;color:rgba(255,255,255,.5);margin-bottom:var(--sp-xl)}

.cta-phone__btn{
  display:inline-flex;align-items:center;gap:var(--sp-md);
  padding:var(--sp-md) var(--sp-2xl);background:var(--c-white);color:var(--c-primary);
  font-family:var(--f-head);font-size:1.4rem;font-weight:700;letter-spacing:.03em;
  border-radius:var(--r-full);box-shadow:0 4px 20px rgba(0,0,0,.15);
  transition:all var(--t-base);
}
.cta-phone__btn:hover{background:var(--c-accent-l);transform:translateY(-3px);box-shadow:0 8px 30px rgba(0,0,0,.2)}
.cta-phone__btn i{font-size:1rem;color:var(--c-accent)}

.cta-phone__decoration{position:absolute;inset:0;z-index:0;pointer-events:none}
.cta-phone__circle{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.06)}
.cta-phone__circle--1{width:320px;height:320px;top:-120px;right:-100px}
.cta-phone__circle--2{width:200px;height:200px;bottom:-60px;left:-50px}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--c-primary);color:rgba(255,255,255,.75);padding:var(--sp-3xl) 0 var(--sp-lg)}
.footer__upper{display:flex;flex-direction:column;gap:var(--sp-2xl);margin-bottom:var(--sp-2xl)}

.footer__logo{margin-bottom:var(--sp-md)}
.footer__logo-img{
  display:block;height:44px;width:auto;max-width:100%;
  object-fit:contain;object-position:left center;
  background:#fff;border-radius:var(--r-md);padding:8px 12px;
  box-sizing:content-box;
}

.footer__address{font-size:.82rem;display:flex;flex-direction:column;gap:var(--sp-xs)}
.footer__address i{color:var(--c-accent);margin-right:var(--sp-xs);width:14px;text-align:center}
.footer__address a{color:var(--c-accent);transition:opacity var(--t-fast)}
.footer__address a:hover{opacity:.7}

.footer__nav{display:flex;gap:var(--sp-2xl)}
.footer__nav-group h3{font-size:.72rem;font-weight:700;color:rgba(255,255,255,.35);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--sp-sm)}
.footer__nav-group ul{display:flex;flex-direction:column;gap:var(--sp-xs)}
.footer__nav-group a{font-size:.82rem;color:rgba(255,255,255,.6);transition:color var(--t-fast)}
.footer__nav-group a:hover{color:var(--c-accent)}

.footer__bottom{border-top:1px solid rgba(255,255,255,.08);padding-top:var(--sp-lg);text-align:center}
.footer__copy{font-size:.72rem;color:rgba(255,255,255,.3)}

/* ============================================================
   FIXED PHONE (Mobile)
   ============================================================ */
.fixed-phone{
  position:fixed;bottom:0;left:0;right:0;z-index:900;
  padding:var(--sp-sm) var(--sp-md);background:var(--c-primary);
  box-shadow:0 -4px 16px rgba(0,0,0,.2);display:block;
  transform:translateY(100%);transition:transform var(--t-base);
}
.fixed-phone.is-visible{transform:translateY(0)}
.fixed-phone__btn{
  display:flex;align-items:center;justify-content:center;gap:var(--sp-sm);
  width:100%;padding:var(--sp-md);background:var(--c-accent);color:var(--c-white);
  font-family:var(--f-head);font-size:.85rem;font-weight:700;
  border-radius:var(--r-lg);
}
.fixed-phone__btn strong{font-size:1.05rem;letter-spacing:.03em}

/* ============================================================
   ANIMATIONS (shared)
   ============================================================ */
.section-title,
.section-header__label{opacity:0;transform:translateY(24px)}
.card{opacity:0;transform:translateY(36px)}
.cta-phone__content{opacity:0;transform:translateY(24px)}

@keyframes float1{0%,100%{transform:translate(0,0)}50%{transform:translate(-8px,12px)}}
@keyframes float2{0%,100%{transform:translate(0,0)}50%{transform:translate(8px,-8px)}}
.cta-phone__circle--1{animation:float1 7s ease-in-out infinite}
.cta-phone__circle--2{animation:float2 5s ease-in-out infinite}

/* ============================================================
   RESPONSIVE - Common
   ============================================================ */
@media(min-width:768px){
  :root{--header-h:68px}
  .container{padding:0 var(--sp-xl)}
  .section-title{font-size:1.75rem}
  .cta-phone__heading{font-size:1.75rem}
  .footer__upper{flex-direction:row;justify-content:space-between;align-items:flex-start}
  .fixed-phone{display:none !important}
}

@media(min-width:1024px){
  :root{--header-h:72px}
  .header__nav{display:flex;align-items:center}
  .header__tel-btn{display:flex}
  .header__burger{display:none}
  .cta-phone__heading{font-size:2rem}
  .cta-phone__btn{font-size:1.6rem;padding:var(--sp-lg) var(--sp-3xl)}
}

@media(min-width:1280px){
  .container{max-width:1200px}
}

/* ============================================================
   REDUCED MOTION (shared)
   ============================================================ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important;
  }
  .section-title,.section-header__label,
  .card,.cta-phone__content{
    opacity:1 !important;transform:none !important;
  }
}

/* ============================================================

   ============================================================ */

/* --- Mobile only (~767px): ヒーロー円形CTAは非表示（電話はヘッダー） --- */
@media (max-width: 767px) {
  .hero__circle-cta { display: none !important; }
}

/* --- Tablet (768px~) --- */
@media (min-width: 768px) {
  :root { --header-h: 68px }
  .container { padding: 0 var(--sp-xl) }

  .section-title { font-size: 1.75rem }

  /* Hero */
  .hero { padding: var(--sp-3xl) 0 calc(var(--sp-4xl) + 50px); min-height: 780px }
  .hero__title-line { font-size: 2.25rem }
  .hero__slideshow-overlay {
    background: linear-gradient(
      120deg,
      rgba(var(--c-primary-rgb),.5) 0%,
      rgba(var(--c-primary-rgb),.3) 40%,
      rgba(var(--c-primary-rgb),.15) 100%
    );
  }
  .hero__inner { flex-direction: row; align-items: flex-start; gap: var(--sp-2xl) }
  .hero__content { flex: 1 }

  .hero__circle-cta { width: 190px; right: var(--sp-xl); top: calc(50% - 95px) }

  .hero__news-banner {
    position: absolute;
    top: 490px;
    right: var(--sp-xl);
    left: auto;
    bottom: auto;
    width: min(360px, 42vw);
    margin: 0;
  }
  .hero__circle-label { font-size: .85rem }
  .hero__circle-tel { font-size: 1.3rem }

  /* User Nav overlap */
  .user-nav { margin-top: -70px }
  .user-nav__grid { grid-template-columns: 1fr 1fr; gap: var(--sp-md) }

  /* Strengths */
  .strengths__grid { grid-template-columns: repeat(3, 1fr); gap: var(--sp-lg) }

  /* About Brief */
  .about-brief__inner {
    flex-direction: row;
    align-items: center;
    gap: var(--sp-3xl);
  }
  .about-brief__content { flex: 1 }
  .about-brief__visual { flex: 0 0 42% }

  /* Content Nav */
  .content-nav__grid { grid-template-columns: 1fr 1fr; gap: var(--sp-lg) }

  /* News */
  .news__text { flex: 1 1 0; }

  /* CTA */
  .cta-phone__heading { font-size: 1.75rem }

  /* Footer */
  .footer__upper { flex-direction: row; justify-content: space-between; align-items: flex-start }

  /* Life Preview */
  .life-preview__grid { grid-template-columns: 1fr 1fr }

  /* Topics */
  .topics__grid { grid-template-columns: 1fr }

  /* Page Hero */
  .page-hero__title { font-size: 2rem }

  /* Medical page */
  .med-section__inner { flex-direction: row; align-items: flex-start }
  .med-section__inner--reverse { flex-direction: row-reverse }
  .med-features { grid-template-columns: repeat(3, 1fr) }
  .med-care__grid { grid-template-columns: 1fr 1fr }
  .med-partners { grid-template-columns: repeat(3, 1fr) }

  /* Life page */
  .meals__grid { grid-template-columns: repeat(3, 1fr) }
  .events__grid { grid-template-columns: 1fr 1fr }
  .events__daily-grid { grid-template-columns: repeat(3, 1fr) }

  /* About page */
  .about-overview { flex-direction: row; align-items: stretch }
  .about-overview__content { flex: 1 }
  .about-overview__visual { flex: 0 0 38% }
  .philosophy__values { grid-template-columns: repeat(3, 1fr) }
  .about-features { grid-template-columns: repeat(3, 1fr) }
  .info-table th { width: 160px }

  /* About Interior */
  .about-interior { grid-template-columns: repeat(4, 1fr) }

  /* Related Facilities */
  .related-facilities { grid-template-columns: repeat(3, 1fr) }

  /* Admission page */
  .adm-compare { grid-template-columns: repeat(3, 1fr) }
  .adm-requirements { grid-template-columns: 1fr 1fr }
  .adm-cost__inner { grid-template-columns: repeat(3, 1fr) }
  .adm-visit { flex-direction: row; align-items: flex-start; gap: var(--sp-2xl) }
  .adm-visit__content { flex: 1; min-width: 0 }
  .adm-visit__visual { flex: 0 0 40%; max-width: 440px }
  .adm-visit__cta { flex: 0 0 280px }

  /* Access page */
  .acc-access { flex-direction: row }
  .acc-access__map { flex: 1 }
  .acc-access__info { flex: 1 }
  .acc-transport { grid-template-columns: 1fr 1fr }
  .acc-visit { grid-template-columns: repeat(3, 1fr) }

  /* Fixed phone hide */
  .fixed-phone { display: none !important }
}

/* --- Desktop (1024px~) --- */
@media (min-width: 1024px) {
  :root { --header-h: 72px }

  .header__nav { display: flex; align-items: center }
  .header__tel-btn { display: flex }
  .header__burger { display: none }

  .hero { padding: var(--sp-4xl) 0 calc(var(--sp-4xl) + 60px); min-height: 800px }
  .hero__title-line { font-size: 2.75rem }
  .hero__slideshow-overlay {
    background: linear-gradient(
      110deg,
      rgba(var(--c-primary-rgb),.45) 0%,
      rgba(var(--c-primary-rgb),.25) 35%,
      rgba(var(--c-primary-rgb),.1) 100%
    );
  }
  .hero__circle-cta { width: 220px; right: calc((100% - 1200px)/2 + var(--sp-xl)); top: calc(50% - 110px) }

  .hero__news-banner {
    top: 490px;
    right: calc((100% - 1200px) / 2 + var(--sp-xl));
    width: min(380px, 36vw);
  }
  .hero__circle-icon { font-size: 1.1rem }
  .hero__circle-label { font-size: .9rem }
  .hero__circle-tel { font-size: 1.5rem }

  /* User Nav overlap */
  .user-nav { margin-top: -80px }
  .user-nav__grid { grid-template-columns: repeat(4, 1fr) }
  .user-nav__card { flex-direction: column; text-align: center; padding: var(--sp-xl) var(--sp-lg); border-left: none; border-top: 4px solid transparent }
  .user-nav__card--admin { border-top-color: #3B82F6; border-left-color: transparent }
  .user-nav__card--family { border-top-color: #10B981; border-left-color: transparent }
  .user-nav__card--visit { border-top-color: #F59E0B; border-left-color: transparent }
  .user-nav__card--inquiry { border-top-color: #EF4444; border-left-color: transparent }
  .user-nav__card-icon { margin-bottom: var(--sp-sm) }
  .user-nav__card-link { justify-content: center }

  .content-nav__grid { grid-template-columns: repeat(4, 1fr) }
  .content-nav__card { flex-direction: column }
  .content-nav__card-img { flex: none; height: 100px; width: 100% }

  .cta-phone__heading { font-size: 2rem }
  .cta-phone__btn { font-size: 1.6rem; padding: var(--sp-lg) var(--sp-3xl) }

  /* Medical page desktop */
  .med-care__grid { grid-template-columns: repeat(4, 1fr) }

  /* Life page desktop */
  .events__grid { grid-template-columns: repeat(4, 1fr) }
  .events__daily-grid { grid-template-columns: repeat(6, 1fr) }

  /* Page Hero desktop */
  .page-hero__title { font-size: 2.25rem }

  /* Admission desktop */
  .adm-requirements { grid-template-columns: repeat(4, 1fr) }
}

/* --- Large Desktop (1280px~) --- */
@media (min-width: 1280px) {
  .container { max-width: 1200px }
  .hero__title-line { font-size: 3rem }
  .hero__circle-cta { width: 240px; right: calc((100% - 1200px)/2 + var(--sp-2xl)); top: calc(50% - 120px) }

  .hero__news-banner {
    top: 490px;
    right: calc((100% - 1200px) / 2 + var(--sp-2xl));
    width: min(380px, 32vw);
  }
  .hero__circle-icon { font-size: 1.8em }
  .hero__circle-label { font-size: 1.8rem }
  .hero__circle-tel { font-size: 1.6rem }
}

/* ============================================================
   NEWS DETAIL - Responsive
   ============================================================ */
@media (min-width: 768px) {
  .news-detail__title { font-size: 1.75rem }
  .news-detail__body h1 { font-size: 1.5rem }
  .news-detail__body h2 { font-size: 1.25rem }
  .news-detail__body h3 { font-size: 1.1rem }
  .news-detail__media-row { flex-direction: row; align-items: flex-start }
  .news-detail__gallery { grid-template-columns: 1fr 1fr }
}

@media (min-width: 1024px) {
  .news-detail__title { font-size: 2rem }
  .news-detail__body h1 { font-size: 1.6rem }
}

