@charset "UTF-8";
/* =====================================================================
   無呼吸ラボ 共通ヘッダー／フッター（第1段階・統一版）
   ・PC：青帯のメガメニュー＋右上の緑CTA（現行の色を踏襲：#007541 / #003b96）
   ・SP：右スライドインのドロワー＋アコーディオン
   ・自己完結クラス（gnav- / sfoot-）で既存CSSと衝突しない
   ===================================================================== */
/* 共通ヘッダー／フッターのボックスモデルを固定（ページ側のcontent-box等の影響を遮断） */
.gnav-header,.gnav-header *,.sfoot,.sfoot *{ box-sizing:border-box; }
:root{
  --mk-blue:#003b96; --mk-blue-d:#002a6e; --mk-link:#0069e3;
  --mk-green:#007541; --mk-green-d:#005037;
  --mk-ink:#1a2b4a; --mk-sub:#46556f; --mk-line:#e3e9f4; --mk-soft:#eef3fb;
}

/* ============================ HEADER ============================ */
.gnav-header{ position:fixed; top:0; left:0; width:100%; z-index:1000;
  background:#fff; box-shadow:0 1px 6px rgba(0,0,0,.08);
  font-family:"Noto Sans JP",sans-serif; }

.gnav-bar{ display:flex; align-items:center; justify-content:space-between;
  max-width:1024px; margin:0 auto; height:64px; padding:0 20px; box-sizing:border-box; }
.gnav-logo img{ height:36px; width:auto; display:block; }
.gnav-logo--text{ font-weight:700; color:var(--mk-blue); font-size:20px; text-decoration:none; }

.gnav-cta{ display:flex; gap:12px; }
.gnav-cta__btn{ display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-width:168px; height:38px; padding:0 14px; border-radius:5px; font-size:13px; font-weight:700;
  text-decoration:none; box-sizing:border-box; }
.gnav-cta__btn--check{ background:#fff; color:var(--mk-green); border:2px solid var(--mk-green); }
.gnav-cta__btn--check:hover{ background:#f0f8f3; }
.gnav-cta__btn--hospital{ background:var(--mk-green); color:#fff; }
.gnav-cta__btn--hospital:hover{ background:var(--mk-green-d); }
.gnav-cta__btn .ico{ width:17px; height:17px; flex:none; }
.gnav-cta__ic{ display:inline-flex; align-items:center; }
.gnav-cta__ic svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }

/* blue menu bar */
.gnav-menu{ background:var(--mk-blue); }
.gnav-menu__inner{ display:flex; max-width:1024px; margin:0 auto; padding:0 20px; box-sizing:border-box; }
.gnav-drawer-cta{ display:none; } /* モバイルのドロワー内のみ表示。PC青帯では非表示 */
.gnav-list{ display:flex; list-style:none; margin:0; padding:0; }
.gnav-item{ position:static; }
.gnav-item__link{ display:flex; align-items:center; height:55px; padding:0 22px;
  color:#fff; font-size:15px; font-weight:500; text-decoration:none; }
.gnav-item__head{ display:none; }
.gnav-item:hover>.gnav-item__link{ background:rgba(255,255,255,.12); }

/* mega panel */
.gnav-mega{ position:absolute; left:0; right:0; top:100%; background:#fff;
  border-top:1px solid var(--mk-line); box-shadow:0 14px 24px rgba(0,0,0,.10);
  opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .18s ease, transform .18s ease;
  z-index:20; }
.gnav-item:hover .gnav-mega{ opacity:1; visibility:visible; transform:translateY(0); }
.gnav-mega__inner{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px 40px;
  max-width:1024px; margin:0 auto; padding:28px 20px 34px; box-sizing:border-box; }
.gnav-mega__hub{ grid-column:1 / -1; display:inline-flex; align-items:center; gap:7px; width:max-content;
  font-size:13.5px; font-weight:700; color:var(--mk-blue); text-decoration:none; margin-bottom:2px; }
.gnav-mega__hub::after{ content:""; width:7px; height:7px; flex:none;
  border-top:2px solid currentColor; border-right:2px solid currentColor; transform:rotate(45deg); }
.gnav-mega__hub:hover{ text-decoration:underline; }
.gnav-group__title{ font-size:13px; font-weight:700; color:var(--mk-blue);
  padding-bottom:8px; margin-bottom:10px; border-bottom:2px solid var(--mk-soft); }
.gnav-group__list{ list-style:none; margin:0; padding:0; }
.gnav-group__list li{ margin:0 0 2px; }
.gnav-group__list a{ display:block; padding:7px 0 7px 16px; position:relative; font-size:13.5px;
  line-height:1.5; color:var(--mk-ink); text-decoration:none; border-radius:4px; }
.gnav-group__list a::before{ content:""; position:absolute; left:2px; top:50%; width:5px; height:5px;
  border-top:2px solid var(--mk-link); border-right:2px solid var(--mk-link);
  transform:translateY(-50%) rotate(45deg); }
.gnav-group__list a:hover{ background:var(--mk-soft); color:var(--mk-link); }

/* hamburger (mobile only) */
.gnav-toggle{ display:none; flex-direction:column; justify-content:center; align-items:center; gap:5px;
  width:34px; height:34px; padding:0; background:transparent; border:0; cursor:pointer; }
.gnav-toggle__bar{ display:block; width:25px; height:2px; background:var(--mk-blue); transition:transform .25s, opacity .2s; }

/* ============================ MOBILE (≤768) ============================ */
@media (max-width:768px){
  .gnav-bar{ height:56px; }
  .gnav-logo img{ height:30px; }
  .gnav-cta{ display:none; }              /* CTAはドロワー内に集約 */
  .gnav-toggle{ display:flex; }
  .gnav-header.is-open .gnav-toggle__bar:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .gnav-header.is-open .gnav-toggle__bar:nth-child(2){ opacity:0; }
  .gnav-header.is-open .gnav-toggle__bar:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  /* blue bar → off-canvas overlay container */
  .gnav-menu{ position:fixed; inset:0; top:0; z-index:900; background:rgba(15,28,50,.45);
    opacity:0; visibility:hidden; transition:opacity .25s, visibility .25s; }
  .gnav-header.is-open .gnav-menu{ opacity:1; visibility:visible; }
  .gnav-menu__inner{ position:absolute; top:0; right:0; display:block; width:88%; max-width:360px; height:100%;
    margin:0; padding:64px 0 40px; background:#fff; overflow-y:auto; -webkit-overflow-scrolling:touch;
    transform:translateX(100%); transition:transform .28s ease; box-shadow:-8px 0 24px rgba(0,0,0,.12); }
  .gnav-header.is-open .gnav-menu__inner{ transform:translateX(0); }

  .gnav-drawer-cta{ display:flex; flex-direction:column; gap:10px; padding:4px 18px 16px; }
  .gnav-drawer-cta a{ display:flex; align-items:center; justify-content:center; gap:8px; text-align:center; padding:13px; border-radius:8px; font-size:14px; font-weight:700; text-decoration:none; }
  .gnav-drawer-cta a svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
  .gnav-drawer-cta .check{ background:#fff; color:var(--mk-green); border:1px solid var(--mk-green); }
  .gnav-drawer-cta .hospital{ background:var(--mk-green); color:#fff; }

  .gnav-list{ display:block; }
  .gnav-item{ border-top:1px solid #eef1f6; }
  .gnav-item__link{ display:none; }
  .gnav-item__head{ display:flex; align-items:center; justify-content:flex-start; width:100%; height:auto;
    padding:15px 48px 15px 18px; color:var(--mk-ink); font-size:14px; font-weight:600; position:relative;
    background:transparent; border:0; font-family:inherit; cursor:pointer; box-sizing:border-box; text-align:left; }
  .gnav-item__head[aria-expanded]::after{ content:""; position:absolute; right:20px; top:50%; width:11px; height:11px;
    border-right:2px solid var(--mk-blue); border-bottom:2px solid var(--mk-blue);
    transform:translateY(-65%) rotate(45deg); transition:transform .2s; }
  .gnav-item.is-open .gnav-item__head[aria-expanded]::after{ transform:translateY(-35%) rotate(-135deg); }

  /* mega → accordion */
  .gnav-mega{ position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border-top:0;
    max-height:0; overflow:hidden; transition:max-height .3s ease; background:#f6f8fc; }
  .gnav-item.is-open .gnav-mega{ max-height:2000px; }
  .gnav-mega__inner{ display:block; padding:6px 0 12px; }
  .gnav-mega__hub{ display:flex; justify-content:space-between; align-items:center; width:auto; margin:0;
    padding:13px 18px; font-size:14px; font-weight:700; color:var(--mk-blue); background:#eef3fb;
    border-bottom:1px solid #e1e9f5; }
  .gnav-group{ padding:6px 0; }
  .gnav-group__title{ margin:0; padding:10px 18px 6px; border:0; font-size:12px; color:var(--mk-sub); }
  .gnav-group__list a{ padding:11px 18px 11px 34px; font-size:13px; border-top:1px solid #e7ecf5; border-radius:0; }
  .gnav-group__list a::before{ left:18px; }
}
body.is-nav-locked{ overflow:hidden; }

/* ============================ FOOTER ============================ */
.sfoot{ background:var(--mk-blue); color:#dfe7f5; font-family:"Noto Sans JP",sans-serif; }
.sfoot__inner{ max-width:1024px; margin:0 auto; padding:44px 20px 0; box-sizing:border-box; }

.sfoot__nav{ display:grid; grid-template-columns:repeat(4,1fr); gap:28px 32px; padding-bottom:36px;
  border-bottom:1px solid rgba(255,255,255,.16); }
.sfoot__col h3{ font-size:14px; font-weight:700; color:#fff; margin:0 0 12px; }
.sfoot__col ul{ list-style:none; margin:0; padding:0; }
.sfoot__col li{ margin:0 0 8px; }
.sfoot__col a{ color:#cdd9ef; font-size:13px; text-decoration:none; line-height:1.5; }
.sfoot__col a:hover{ color:#fff; text-decoration:underline; }

/* 都道府県リンク */
.sfoot__pref{ padding:30px 0 8px; border-bottom:1px solid rgba(255,255,255,.16); }
.sfoot__pref h3{ font-size:14px; font-weight:700; color:#fff; margin:0 0 14px; }
.sfoot__pref ul{ list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(8,1fr); gap:10px 14px; }
.sfoot__pref a{ color:#cdd9ef; font-size:12.5px; text-decoration:none; white-space:nowrap; }
.sfoot__pref a:hover{ color:#fff; text-decoration:underline; }

.sfoot__info{ display:flex; flex-wrap:wrap; gap:8px 40px; padding:26px 0; }
.sfoot__info dl{ margin:0; font-size:12.5px; }
.sfoot__info dt{ color:#9fb4dd; margin-bottom:3px; }
.sfoot__info dd{ margin:0; color:#e7eefa; }
.sfoot__info a{ color:#e7eefa; text-decoration:underline; }
.sfoot__br{ display:none; }
@media (max-width:768px){
  .sfoot__br{ display:inline; }
}

/* 旧レイアウトページ（main.content）とフッターの間隔
   新ページ（.t-main/.p-main）は各自のCSSで確保済みのため対象外 */
main.content{ padding-bottom:64px; }
@media (max-width:768px){
  main.content{ padding-bottom:40px; }
}

.sfoot__bottom{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:16px 0 22px; border-top:1px solid rgba(255,255,255,.16); }
.sfoot__links{ display:flex; gap:20px; list-style:none; margin:0; padding:0; }
.sfoot__links a{ color:#cdd9ef; font-size:12.5px; text-decoration:none; }
.sfoot__links a:hover{ color:#fff; }
.sfoot__copy{ font-size:11.5px; color:#9fb4dd; }

@media (max-width:768px){
  .sfoot__inner{ padding:32px 18px 0; }
  .sfoot__nav{ grid-template-columns:repeat(2,1fr); gap:24px; }
  .sfoot__pref ul{ grid-template-columns:repeat(3,1fr); }
  .sfoot__bottom{ flex-direction:column; align-items:flex-start; gap:10px; }
}
@media (max-width:400px){
  .sfoot__pref ul{ grid-template-columns:repeat(2,1fr); }
}
