/* =========================
   Base
========================= */

*{
box-sizing:border-box;
}

body{
margin:0;
font-family:sans-serif;
background:#f5f6f8;
color:#333;
overflow-x:hidden;

}


/* =========================
   Container
========================= */

.container{
max-width:1100px;
margin:0 auto;
padding:0 20px;
}


/* =========================
   Header（整理済み）
========================= */

/* ヘッダー全体 */
.header{
position:sticky;
top:0;
z-index:10000;
background:#fff;
box-shadow:0 2px 8px rgba(0,0,0,.1);
}

.header-top{
  background:linear-gradient(90deg,#0b3d91,#2f7ed8);
  height:64px;
  padding:0 24px;
  display:flex;
  align-items:center;
}

.header-top .container{
  max-width:none;
  width:100%;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
}

.logo img{
  height:34px;
 width:auto;
}

/* ロゴ */
.logo{
  margin-left:10px;
  transform: translateY(2px);
  display:flex;
  align-items:center;
}

/* 右側全体 */
.header-right{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:20px; /* ←間隔調整 */
}

.logo,
.header-right{
  height:100%;
  display:flex;
  align-items:center;
}

/* 電話ブロック */
.header-contact{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-end;
  text-align:right;
  height:100%;
  line-height:1.3;

}

/* 電話番号 */
.tel-number{
  font-size:18px;
  font-weight:bold;
  letter-spacing:.5px;
}

/* 受付時間 */
.tel-time{
  font-size:12px;
  opacity:.85;
  margin-top:2px;
}



/* 横並び */
.header-flex{
display:flex;
align-items:center;
justify-content:space-between;
}







/* ナビ */
.header-nav{
background:#0f4bb5;
}

.header-nav .container{
padding:10px 20px;
}

.header-nav nav{
display:flex;
gap:30px;
justify-content:center;
}

.header-nav a{
color:#fff;
text-decoration:none;
font-size:15px;
}

.header-nav a:hover{
opacity:.8;
}

/* =========================
   Mobile
========================= */

@media(max-width:768px){

.header-nav{display:none;}
.header-nav.open{display:block;}

.header-nav nav{
flex-direction:column;
gap:12px;
}

.menu-toggle{display:flex;}

.logo-text{
display:none;
}

.logo img{
height:28px;
}

.tel-btn span{
display:none;
}

.tel-btn{
padding:8px;
}

.apply-btn-top{
padding:8px 12px;
font-size:13px;
}


.tel-btn,
.apply-btn-top{
display:none;
pointer-events:none; /* ←追加（超重要） */
}

}


/* =========================
   Hero
========================= */

.hero{
background:
linear-gradient(rgba(0,0,0,.35),rgba(0,0,0,.35)),
url("/images/sea.jpg");
background-size:cover;
background-position:center 45%;
color:#fff;
min-height:420px;
display:flex;
align-items:center;
justify-content:center;
text-align:center;
padding:60px 20px;
}

.hero-inner{
max-width:800px;
margin:auto;
}

.hero h2{font-size:36px;}
.hero p{font-size:18px;}

.hero-buttons{
margin-top:25px;
}


/* =========================
   Buttons
========================= */

.btn-white,
.btn-red{
padding:14px 26px;
border-radius:6px;
text-decoration:none;
margin:10px;
display:inline-block;
}

.btn-white{
background:#fff;
color:#0b3d91;
}

.btn-red{
background:#d60000;
color:#fff;
}


/* =========================
   Section
========================= */
.section{
padding:40px 0;
}

@media(max-width:768px){
.section{
padding:20px 0;
}
}

.section h2{
margin-bottom:20px;
}


/* =========================
   Grid Cards
========================= */

.grid{
display:grid;
grid-template-columns:repeat(2,1fr);
gap:16px;
}

.card{
background:#fff;
padding:24px;
border-radius:12px;
text-align:center;
box-shadow:0 4px 14px rgba(0,0,0,.08);
text-decoration:none;
color:#333;
font-weight:600;
}


/* =========================
   Schedule
========================= */

#regionSelect{
padding:10px;
font-size:16px;
margin-bottom:20px;
}

.schedule-card{
background:#fff;
padding:18px;
border-radius:12px;
box-shadow:0 6px 18px rgba(0,0,0,.08);
transition:.2s;
}

.schedule-card:hover{
transform:translateY(-3px);
}


/* =========================
   Trust Section
========================= */

.trust{
background:rgba(255,255,255,.25);
backdrop-filter:blur(8px);
padding:30px 10px;

}

.trust-grid{

display:flex;
gap:20px;

}

.trust-item{

flex:1;

}

@media(max-width:768px){

.trust-grid{

flex-direction:column;

}

}


/* =========================
   Footer
========================= */

.site-footer{
  width:100%;
  margin-left:0;
  background:#1a1a1a;
  color:#fff;
  padding:60px 20px;
}

.footer-grid{
display:grid;
grid-template-columns:repeat(4,1fr);
gap:40px;
}

.footer-col h3{
font-size:15px;
margin-bottom:12px;
border-bottom:1px solid rgba(255,255,255,0.2);
padding-bottom:6px;
}

.footer-col ul{
list-style:none;
padding:0;
margin:0;
}

.footer-col li{
margin:6px 0;
}

.footer-col a{
color:#ccc;
text-decoration:none;
font-size:14px;
}

.footer-col a:hover{
color:#fff;
text-decoration:underline;
}

.footer-bottom{
text-align:center;
margin-top:40px;
font-size:13px;
color:#aaa;
border-top:1px solid rgba(255,255,255,0.15);
padding-top:20px;
}


@media(max-width:768px){

.footer-grid{
grid-template-columns:1fr 1fr;
gap:25px;
}

.footer-col h3{
font-size:14px;
}

.footer-col a{
font-size:13px;
}

}


/* =========================
   Hamburger
========================= */

.menu-toggle{
display:none;
align-items:center;
gap:6px;
cursor:pointer;

position:relative;
z-index:10001; /* ←追加 */
}

.menu-icon{
display:flex;
flex-direction:column;
gap:4px;
}

.menu-icon span{
width:22px;
height:3px;
background:#fff;
display:block;
}

.menu-text{
color:#fff;
font-size:12px;
letter-spacing:1px;
}


/* =========================
   bottom nav
========================= */

.bottom-nav{

position:fixed;

bottom:10px;
left:50%;

transform:translateX(-50%);

width:92%;
max-width:520px;

background:rgba(20,20,20,.75);

border-radius:18px;


z-index:9999;

padding-bottom:env(safe-area-inset-bottom);

}


/* ボタン列 */

.bottom-nav-buttons{

display:flex;

justify-content:space-around;
align-items:center;

padding:10px 0;

}


/* ボタン */

.bottom-nav-buttons a{

flex:1;

display:flex;
flex-direction:column;
align-items:center;
justify-content:center;

font-size:10px;

color:#fff;
text-decoration:none;

}

.bottom-nav-buttons i{

font-size:20px;
margin-bottom:4px;

}


/* アクティブ */

.bottom-nav-buttons a.active{
color:#00e676;
}

.bottom-nav-buttons a.active i{
color:#00e676;
}


/* 申込ボタン */

.bottom-nav-buttons .apply-btn{
color:#ff4d4d;
font-weight:bold;
}

.bottom-nav-buttons .apply-btn i{
color:#ff4d4d;
}

/* 申込はactiveが付いても赤のまま */
.bottom-nav-buttons .apply-btn.active{
color:#ff4d4d;
}

.bottom-nav-buttons .apply-btn.active i{
color:#ff4d4d;
}


/* 営業時間 */

.bottom-nav-info{

font-size:10px;

text-align:center;

color:#ddd;

padding:6px 10px;

border-top:1px solid rgba(255,255,255,.15);

line-height:1.4;

}


/* =========================
   Page Hero
========================= */

.page-hero{
background:
linear-gradient(rgba(0,0,0,.45),rgba(0,0,0,.45)),
url("/images/sea.jpg");
background-size:cover;
background-position:center 40%;
color:#fff;
padding:90px 20px;
text-align:center;
}

.page-hero h1{
font-size:32px;
margin-bottom:15px;
}

.page-hero p{
font-size:16px;
max-width:700px;
margin:auto;
}


/* =========================
   Breadcrumb
========================= */

.breadcrumb{
background:#f5f6f8;
border-bottom:1px solid #ddd;
padding:6px 0;
}

.breadcrumb .container{
padding:12px 20px;
}

.breadcrumb-list{
list-style:none;
margin:0;
padding:0;
display:flex;
align-items:center;
flex-wrap:wrap;
font-size:14px;
}

.breadcrumb-item+.breadcrumb-item:before{
content:">";
margin:0 8px;
color:#999;
}

.breadcrumb a{
color:#0b3d91;
text-decoration:none;
}

.breadcrumb a:hover{
text-decoration:underline;
}

.breadcrumb .current{
color:#666;
font-weight:600;
}


/* =========================
   Info / Flow
========================= */

.info-box{
background:#fff;
padding:25px;
border-radius:12px;
box-shadow:0 4px 14px rgba(0,0,0,.08);
margin-top:20px;
}

.check-list{
list-style:none;
padding:0;
}

.check-list li{
padding:10px 0;
border-bottom:1px solid #eee;
}

.flow{
display:grid;
grid-template-columns:repeat(4,1fr);
gap:20px;
margin-top:20px;
}

.flow div{
background:#fff;
padding:20px;
border-radius:10px;
box-shadow:0 4px 12px rgba(0,0,0,.08);
text-align:center;
}

.flow span{
display:block;
font-size:22px;
font-weight:bold;
color:#0b3d91;
margin-bottom:10px;
}

@media(max-width:768px){

  .flow div{
    display:flex;
    align-items:center;
    gap:15px;
    text-align:left;
  }

  .flow span{
    font-size:18px;
    min-width:32px;
    text-align:center;
  }

}


/* =========================
   CTA
========================= */

.cta{
  width:100%;
  background:#0b3d91;
  color:#fff;
  text-align:center;
  padding:60px 20px;
}

.cta .container{
  max-width:1100px;
  margin:0 auto;
}

.cta h2{
margin-bottom:20px;
}


/* =========================
   Fullscreen Menu
========================= */

.fullscreen-menu{
position:fixed;
top:0;
left:0;
right:0;
bottom:0;

background:linear-gradient(135deg,#0b3d91,#2f7ed8);

z-index:20000;
color:#fff; /* ←これ追加 */
/* ??これがないのが原因 */
opacity:0;
pointer-events:none;
transform:translateY(-20px);

transition:.3s;

overflow-y:auto;
-webkit-overflow-scrolling:touch;

padding-bottom:calc(80px + env(safe-area-inset-bottom));
}

.fullscreen-menu::after{
content:"";
display:block;
height:20px;
}

.fullscreen-menu.open{
opacity:1;
pointer-events:auto;
transform:translateY(0);
}

.menu-header{
position:sticky; /* ←ここ変更 */
top:0;
left:0;

width:100%;

display:flex;
justify-content:space-between;
align-items:center;

padding:20px;
padding-top:calc(20px + env(safe-area-inset-top));

background:linear-gradient(135deg,#0b3d91,#2f7ed8); /* ←追加 */

z-index:1;
}

.menu-logo{
font-size:18px;
font-weight:bold;
}

.menu-close{
cursor:pointer;
font-size:14px;
}

.menu-grid{
display:grid;
grid-template-columns:1fr 1fr;
width:100%;
max-width:420px;
margin-top:10px;
}

.menu-item{
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;

padding:18px 10px;

border:1px solid rgba(255,255,255,0.2);

text-decoration:none;
color:#fff;
font-size:15px;
gap:6px;
}

.menu-item i{
font-size:26px;
}

.menu-item:hover{
background:rgba(255,255,255,0.1);
}

.menu-cta{
padding:20px;
display:flex;
flex-direction:column;
gap:15px;
width:100%;
max-width:400px;
}

.cta-green{
background:#18b66a;
color:#fff;
padding:16px;
border-radius:30px;
text-align:center;
text-decoration:none;
font-weight:bold;
}

.cta-orange{
background:#ff7a00;
color:#fff;
padding:16px;
border-radius:30px;
text-align:center;
text-decoration:none;
font-weight:bold;
}


/* =========================
   Page Top Button
========================= */

.page-top-btn{
position:fixed;
right:15px;
bottom:calc(110px + env(safe-area-inset-bottom));
width:44px;
height:44px;
background:#333;
color:#fff;
display:flex;
align-items:center;
justify-content:center;
border-radius:50%;
text-decoration:none;
font-size:18px;
z-index:9999;
opacity:0;
pointer-events:none;
transition:0.3s;
}

.page-top-btn.show{
opacity:1;
pointer-events:auto;
}

.page-top-btn:hover{
background:#0b3d91;
}


/* =========================
   Mobile
========================= */

@media(max-width:768px){

.header-nav{display:none;}
.header-nav.open{display:block;}

.header-nav nav{
flex-direction:column;
gap:12px;
}

.menu-toggle{display:flex;}

.apply-btn-top{display:none;}

.logo{font-size:18px;}



.hero{
min-height:240px;
padding:50px 16px;
background-position:center 35%;
}

.hero .trust{

background:none;
backdrop-filter:none;
padding:20px 0;

}

.hero .trust-item{

background:transparent;
box-shadow:none;
color:white;

}

.hero .trust-grid{

display:flex;
justify-content:space-between;
gap:10px;

}

.hero .trust-item{

flex:1;
text-align:center;

}

.hero .trust-item i{

font-size:22px;

}

.hero .trust-item p{

font-size:12px;

}

.hero h2{
font-size:16px;
line-height:1.4;
}

.hero p{
font-size:10px;
}

.btn-white,
.btn-red{
padding:9px 16px;
font-size:13px;
}

.breadcrumb-list{
font-size:12px;
}

  .flow{
  grid-template-columns:1fr;
    gap:12px; /* ←ブロック間の余白縮める */
  }

  .flow div{
    padding:12px; /* ←カード内余白を縮める */
  }

  .flow span{
    font-size:16px;
    margin-bottom:0; /* ←これ重要（無駄な縦余白消す） */
  }

  .flow p{
    margin:0; /* ←段落の余白リセット */
    font-size:14px;
    line-height:1.5;
  }

.trust-grid{gap:10px;}

.trust-grid i{font-size:22px;}

.trust-grid p{font-size:12px;}

}


/* =========================
   PC Bottom Nav
========================= */

@media (min-width:768px){

.bottom-nav{

max-width:760px;
display:block;
}

.bottom-nav-buttons a{

font-size:12px;

}

.bottom-nav-buttons i{

font-size:22px;

}

}


/* 講習フロー */

.lecture-flow{

margin-top:20px;

display:flex;

flex-direction:column;

gap:14px;

}

.flow-item{

display:flex;

gap:15px;

background:white;

padding:16px;

border-radius:10px;

box-shadow:0 4px 12px rgba(0,0,0,0.08);

align-items:flex-start;

}

.flow-number{

width:30px;
height:30px;

background:#0b3d91;

color:white;

border-radius:50%;

display:flex;
align-items:center;
justify-content:center;

font-size:14px;

font-weight:bold;

flex-shrink:0;

}

.flow-content h3{

margin:0 0 5px;

font-size:16px;

}

.flow-content p{

margin:0;

font-size:14px;

line-height:1.6;

}

.flow-arrow{

text-align:center;

font-size:18px;

color:#888;

}

.lecture-time{

margin-top:10px;

background:#0b3d91;

color:white;

padding:12px;

border-radius:8px;

text-align:center;

font-weight:bold;

}

/* =========================
   price
========================= */

.price-card{

background:white;

padding:28px;

border-radius:14px;

box-shadow:0 6px 20px rgba(0,0,0,0.08);

margin-top:20px;

}


/* 基本料金 */

.price-main{

text-align:center;

padding-bottom:22px;

border-bottom:1px solid #eee;

margin-bottom:20px;

}

.price-label{

font-size:16px;

color:#666;

margin-bottom:8px;

}

.price-amount{

font-size:40px;

font-weight:bold;

color:#d60000;

margin:0;

}

.price-breakdown{
font-size:13px;
color:#777;
margin-top:10px;
line-height:1.7;
}

.price-amount span{

font-size:20px;

margin-left:4px;

}


/* 追加料金 */

.price-options h3{

font-size:18px;

margin-bottom:10px;

}

.price-options ul{

list-style:none;

padding:0;

margin:0;

}

.price-options li{

display:flex;

justify-content:space-between;

align-items:center;

padding:12px 0;

border-bottom:1px solid #f0f0f0;

font-size:15px;

line-height:1.4;

}

.price-options span{

color:#d60000;

font-weight:bold;

}


/* note */

.price-note{
font-size:13px;
color:#666;
margin-top:4px;
}


/* mobile */

@media(max-width:768px){

.price-amount{

font-size:36px;

}

.price-options li{

font-size:14px;

}

}


/* =========================
   PC price highlight
========================= */

@media(min-width:768px){

.price-main{

background:#f8f9fb;

padding:40px 20px;

border-radius:12px;

margin-bottom:30px;

}

.price-label{

font-size:18px;

}

.price-amount{

font-size:56px;

}

.price-amount span{

font-size:24px;

}

.price-options{

max-width:600px;

margin:auto;

}

}


/* 料金BOX */

.fee-box{

background:white;

padding:20px;

border-radius:12px;

box-shadow:0 4px 14px rgba(0,0,0,0.08);

margin-top:20px;

}

/* 行 */

.fee-row{

display:flex;

justify-content:space-between;

gap:15px;

padding:14px 0;

border-bottom:1px solid #eee;

}

/* 説明 */

.fee-text{

flex:1;

font-size:15px;

line-height:1.6;

}

/* 料金 */

.fee-price{

white-space:nowrap;

color:#d60000;

font-weight:bold;

font-size:18px;

}

/* 注記 */

.fee-note{

margin-top:15px;

font-size:13px;

color:#666;

}


/* 必要書類カード */

.doc-grid{

display:grid;

grid-template-columns:repeat(3,1fr);

gap:20px;

}

/* スマホ */

@media(max-width:768px){

.doc-grid{

grid-template-columns:1fr;

}

}

.doc-card{

background:white;

padding:20px;

border-radius:12px;

box-shadow:0 4px 14px rgba(0,0,0,0.08);

text-align:left;

}

.doc-icon{

font-size:24px;

margin-bottom:8px;

}

.doc-card h3{

margin:5px 0;

font-size:16px;

}

.doc-card p{

margin:0;

font-size:14px;

line-height:1.6;

color:#555;

}


.doc-icon{

font-size:24px;

color:#0b3d91;

margin-bottom:10px;

}


/* =========================
   Section Navigation
========================= */

.section-nav{
  display:flex;
  gap:10px;
  justify-content:center; /* デフォルト中央 */
  background:white;
  padding:15px 20px;
  border-bottom:1px solid #eee;
  position:sticky;
  top:96px;
  z-index:900;
  box-shadow:0 2px 8px rgba(0,0,0,0.08);

  overflow-x:auto;
  scroll-padding-left:20px;
}


/* ナビボタン */

.section-nav a{

background:#f5f6f8;

padding:8px 14px;

border-radius:20px;

text-decoration:none;

font-size:14px;

color:#333;

flex-shrink:0;

}


.section-nav a:hover{

background:#0b3d91;

color:white;

}




/* 現在位置 */

.section-nav a.active{

background:#0b3d91;

color:white;

}

.section-nav.is-scroll{
  justify-content:flex-start; /* はみ出たら左 */
}

/* =========================
   Mobile Navigation
========================= */

@media(max-width:768px){

.section-nav{

top:56px;

overflow-x:auto;

white-space:nowrap;

flex-wrap:nowrap;

justify-content:flex-start;

}


/* スクロールバー非表示 */

.section-nav::-webkit-scrollbar{

display:none;

}

.section-nav{

scrollbar-width:none;

}

}


/* =========================
   Anchor Scroll Offset
========================= */

section{

scroll-margin-top:130px;

}

@media(max-width:768px){

section{

scroll-margin-top:80px;

}

}


/* =========================
   Smooth Scroll
========================= */

html{

scroll-behavior:smooth;

}


@media(max-width:768px){

.section-nav::after{
display:none;
}

}

@media(max-width:768px){

.section-nav{
top:56px;
padding:10px;
}

}

.doc-card .note{
font-size:12px;
color:#777;
margin-top:6px;
line-height:1.5;
}


.faq{
margin-top:25px;
display:flex;
flex-direction:column;
gap:20px;
}

.faq-item{
background:#fff;
padding:20px;
border-radius:10px;
box-shadow:0 4px 14px rgba(0,0,0,0.08);
}

.faq-q{
font-weight:bold;
margin-top:0;
margin-bottom:8px;
}

.faq-a{
margin:0;
line-height:1.6;
}



/* =========================
   Price Layout
========================= */

.price-grid-2{

display:grid;
grid-template-columns:repeat(2,1fr);
gap:20px;
margin-top:25px;

}

.price-grid-3{

display:grid;
grid-template-columns:repeat(3,1fr);
gap:20px;
margin-top:25px;

}



/* カード */

.price-card{

background:#fff;
padding:25px;
border-radius:12px;
text-align:center;
box-shadow:0 4px 14px rgba(0,0,0,.08);

}

.price-card h3{

margin-top:0;

}



/* 料金 */

.price-main{

font-size:36px;
font-weight:bold;
color:#d60000;
margin:10px 0;

}

.price-main span{

font-size:18px;

}



/* 料金説明 */

.price-assurance{

font-size:13px;
color:#666;
margin-bottom:15px;

}



/* 追加料金 */

.price-extra{

margin:15px 0;
padding-top:10px;
border-top:1px solid #eee;

}

.extra-title{

font-size:13px;
font-weight:bold;
margin-bottom:6px;

}

.extra-row{

display:flex;
justify-content:space-between;
font-size:13px;
padding:4px 0;

}

.extra-row span:last-child{

font-weight:bold;
color:#d60000;
white-space:nowrap;

}

/* 備考 */

.price-note{

font-size:12px;
color:#777;
margin-top:6px;

}



/* =========================
   Mobile
========================= */

@media(max-width:768px){

.price-grid-2,
.price-grid-3{

grid-template-columns:1fr;

}

.price-main{

font-size:30px;

}

}

.extra-row{

display:flex;
justify-content:space-between;
align-items:flex-start;
gap:10px;
font-size:13px;
padding:6px 0;

}

.extra-text{
flex:1;
line-height:1.5;
text-align:left;
}

.extra-price{

white-space:nowrap;
font-weight:bold;

}

.extra-note{
margin:2px 0 0 0;
font-size:12px;
color:#777;
text-align:left;
}


.menu-sections{

width:100%;
max-width:420px;
margin-top:20px;

display:flex;
flex-direction:column;
gap:25px;

}

.menu-section h3{

margin:0 0 10px;
font-size:14px;
opacity:.8;

}


.fullscreen-menu{
overflow-y:auto;
-webkit-overflow-scrolling:touch;
}

body.menu-open{
overflow:hidden;
}

body.menu-open .bottom-nav{
display:none;
}


/* =========================
   Schedule List
========================= */

.schedule-list{

display:grid;

grid-template-columns:repeat(2,1fr);

gap:20px;

margin-top:20px;

}

.schedule-card{

background:#fff;

padding:20px;

border-radius:12px;

box-shadow:0 4px 14px rgba(0,0,0,.08);

}

.schedule-card h3{

margin-top:0;

}

.schedule-date{

font-weight:bold;

margin:10px 0;

}

.schedule-time{

font-size:14px;

color:#555;

margin-bottom:10px;

}

.schedule-venue{

font-size:14px;

margin-bottom:15px;

}

@media(max-width:768px){

.schedule-list{

grid-template-columns:1fr;

}

}


.japan-map{

max-width:700px;
margin:auto;

}

/* PC */

@media (min-width:768px){

.japan-map{

max-width:460px;

}

}

.japan-map svg{

width:100%;
height:auto;

}

.prefecture{

fill:#f1f3f7;
stroke:#999;
stroke-width:1;

transition:.2s;

}

.prefecture:hover{

fill:#0b3d91;
cursor:pointer;

}

.pref-section h3{

margin-top:40px;
font-size:18px;
color:#0b3d91;

}

.pref-grid{

display:grid;

grid-template-columns:repeat(4,1fr);

gap:14px;

margin-top:15px;

}

.pref-card{

background:white;

padding:18px;

border-radius:10px;

text-align:center;

font-weight:bold;

text-decoration:none;

color:#333;

box-shadow:0 4px 12px rgba(0,0,0,0.08);

transition:.2s;

}

.pref-card:hover{

transform:translateY(-3px);

box-shadow:0 8px 18px rgba(0,0,0,0.12);

background:#0b3d91;

color:white;

}

@media(max-width:768px){

.pref-grid{

grid-template-columns:repeat(2,1fr);

}

}

/* =========================
Hero icon layout fix
========================= */

.hero .trust-grid{

display:flex;
flex-direction:row;
justify-content:center;
gap:20px;

}

.hero .trust-item{

flex:1;
text-align:center;

}

/* スマホでも横並び */

@media(max-width:768px){

.hero .trust-grid{

flex-direction:row !important;

}

}





.apply-form{

max-width:600px;
margin:auto;

}

.form-row{

margin-bottom:20px;
display:flex;
flex-direction:column;

}

.form-row label{

font-weight:bold;
margin-bottom:6px;

}

.form-row input,
.form-row select,
.form-row textarea{

padding:10px;
border:1px solid #ccc;
border-radius:6px;
font-size:16px;

}

.form-submit{

text-align:center;
margin-top:30px;

}


/* =========================
   Course Schedule Table
========================= */

.course-table{
width:100%;
border-collapse:collapse;
margin-top:25px;
}

.course-table th{
background:#0b3d91;
color:#fff;
padding:12px;
text-align:left;
font-size:14px;
}

.course-table td{
padding:14px 12px;
border-bottom:1px solid #eee;
font-size:14px;
}

.course-table tr:hover{
background:#f5f8ff;
}

.course-table td:first-child{
font-weight:bold;
font-size:16px;
}

.course-table td:last-child{
text-align:right;
}

/* 申込ボタン */

.course-apply-btn{
background:#ff7a00;
color:#fff;
padding:8px 14px;
border-radius:6px;
text-decoration:none;
font-size:13px;
font-weight:bold;
display:inline-block;
white-space:nowrap;   /* ←追加 */
}

.course-apply-btn:hover{
background:#ff5a00;
}

/* 書類 */

.doc-ok{
color:#18b66a;
font-weight:bold;
}

.doc-ng{
color:#d60000;
font-weight:bold;
}

/* =========================
   Mobile Course Table
========================= */

@media(max-width:768px){

.course-table{
border-collapse:separate;
}

.course-table thead{
display:none;
}

/* ここに追加 */

.course-table td[data-label="機関コード"],
.course-table td[data-label="機関コード"]::before{
display:none;
}

.course-table,
.course-table tbody,
.course-table tr{
display:block;
width:100%;
}

.course-table tr{
margin-bottom:16px;
padding:18px;
background:white;
border-radius:12px;
box-shadow:0 6px 18px rgba(0,0,0,.08);
}

.course-table td{
display:block;
border:none;
padding:6px 0;
font-size:14px;
}

/* 左ラベル */

.course-table td::before{
content:attr(data-label);
display:block;
font-size:12px;
color:#777;
font-weight:bold;
margin-bottom:3px;
}

/* 日付強調 */

.course-table td[data-label="日付・開始時間"]{
font-weight:bold;
font-size:16px;
}



/* 申込ボタン */

.course-apply-btn{
display:block;
width:100%;
text-align:center;
margin-top:12px;
padding:12px;
}

}




/* =========================
   Venue
========================= */

.venue-region{
margin-top:40px;
font-size:22px;
color:#0b3d91;
}

.venue-count{
font-size:14px;
color:#666;
margin-left:10px;
}

.venue-list{
display:grid;
grid-template-columns:repeat(3,1fr);
gap:20px;
margin-top:20px;
}

.venue-card{
background:white;
padding:20px;
border-radius:12px;
box-shadow:0 4px 14px rgba(0,0,0,.08);
}

.venue-card h3{
margin-top:0;
font-size:16px;
}

.venue-map{
display:inline-block;
background:#0b3d91;
color:white;
padding:8px 14px;
border-radius:6px;
text-decoration:none;
font-size:13px;
margin-top:10px;
}

@media(max-width:768px){

.venue-list{
grid-template-columns:1fr;
}

}



.page-top-btn{
z-index:10000;
}


/* =========================
   Pref Buttons
========================= */

.pref-buttons{
display:flex;
flex-wrap:wrap;
gap:10px;
margin-bottom:30px;
}

.pref-buttons a{
background:#f1f3f7;
padding:8px 12px;
border-radius:20px;
text-decoration:none;
font-size:14px;
color:#333;
}

.pref-buttons a:hover{
background:#0b3d91;
color:white;
}

.venue-region{
margin-top:40px;
font-size:22px;
color:#0b3d91;
}

.venue-count{
font-size:14px;
color:#666;
margin-left:10px;
}

.venue-list{
display:grid;
grid-template-columns:repeat(3,1fr);
gap:20px;
margin-top:20px;
}

.venue-card{
background:white;
padding:20px;
border-radius:12px;
box-shadow:0 4px 14px rgba(0,0,0,.08);
}

.venue-card h3{
margin-top:0;
font-size:16px;
}

.venue-map{
display:inline-block;
background:#0b3d91;
color:white;
padding:8px 14px;
border-radius:6px;
text-decoration:none;
font-size:13px;
margin-top:10px;
}

@media(max-width:768px){

.venue-list{
grid-template-columns:1fr;
}

}



/* 会場詳細 */

.venue-detail-card{

display:grid;
grid-template-columns:420px 1fr;
gap:30px;

background:white;
padding:30px;
border-radius:12px;

box-shadow:0 4px 14px rgba(0,0,0,.08);

}
.venue-info{
display:flex;
flex-direction:column;
justify-content:center;
}

.venue-info h2{
margin-top:0;
font-size:20px;
color:#0b3d91;
}

.venue-address{
display:flex;
align-items:center;
gap:8px;
}

.venue-map-btn{
margin-top:10px;
}

.venue-note{
margin-top:20px;
line-height:1.6;
}



.venue-map-btn{

display:inline-block;

background:#0b3d91;
color:white;

padding:10px 16px;
border-radius:6px;

text-decoration:none;

font-size:14px;
font-weight:bold;

}

.venue-map-btn:hover{

background:#ff7a00;

}

.venue-map-box iframe{

width:100%;
height:380px;
border:0;
border-radius:10px;

}

.venue-note{

margin-top:20px;
font-size:13px;
color:#666;

}

/* スマホ */

@media(max-width:768px){

.venue-detail-card{

grid-template-columns:1fr;

}

}


/* =========================
   Schedule Filter
========================= */

.schedule-filter-wrap{
  background:#fff;
  border-bottom:1px solid #e5e7eb;
  padding:28px 0;
}

.schedule-filter-form{
  background:#f8fafc;
  border:1px solid #e5e7eb;
  border-radius:14px;
  padding:20px;
  box-shadow:0 4px 14px rgba(0,0,0,.05);
}

.filter-grid{
  display:grid;
  grid-template-columns:1fr 2fr 1fr 1fr;
  gap:16px;
  align-items:start;
}

.filter-group{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.filter-group label{
  font-size:14px;
  font-weight:700;
  color:#333;
}

.filter-group select{
  width:100%;
  padding:10px 12px;
  border:1px solid #d1d5db;
  border-radius:8px;
  font-size:14px;
  background:#fff;
}

.expiry-row{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:10px;
}

.filter-note{
  margin:6px 0 0;
  font-size:12px;
  color:#666;
  line-height:1.5;
}

.filter-actions{
  display:flex;
  gap:12px;
  margin-top:18px;
  flex-wrap:wrap;
}

.filter-submit-btn,
.filter-reset-btn{
  display:inline-block;
  padding:12px 18px;
  border-radius:8px;
  text-decoration:none;
  font-size:14px;
  font-weight:700;
  border:none;
  cursor:pointer;
}

.filter-submit-btn{
  background:#0b3d91;
  color:#fff;
}

.filter-reset-btn{
  background:#eef2f7;
  color:#333;
}

.filter-submit-btn:hover{
  opacity:.9;
}

.filter-reset-btn:hover{
  background:#e2e8f0;
}

@media(max-width:768px){
  .filter-grid{
    grid-template-columns:1fr;
  }

  .expiry-row{
    grid-template-columns:1fr 1fr;
  }

  .schedule-filter-form{
    padding:16px;
  }

  .filter-actions{
    flex-direction:column;
  }

  .filter-submit-btn,
  .filter-reset-btn{
    width:100%;
    text-align:center;
  }
}

.filter-message{
  margin-top:14px;
  padding:12px 14px;
  border-radius:10px;
  font-size:14px;
  line-height:1.6;
}

.filter-message.info{
  background:#eef4ff;
  color:#0b3d91;
  border:1px solid #cfe0ff;
}

.filter-message.warning{
  background:#fff7e8;
  color:#9a5b00;
  border:1px solid #f3d39a;
}

.filter-message.error{
  background:#fff1f1;
  color:#b42318;
  border:1px solid #f1b4b4;
}

.schedule-filter-wrap{
  scroll-margin-top: 90px;


}

/* =========================
   Schedule Filter Heading
========================= */

.schedule-filter-wrap{
  background:#fff;
  border-bottom:1px solid #e5e7eb;
  padding:28px 0;
  scroll-margin-top:90px;
}

.schedule-filter-head{
  margin-bottom:18px;
}

.schedule-filter-label{
  margin:0 0 6px;
  font-size:12px;
  font-weight:700;
  color:#0b3d91;
  letter-spacing:.08em;
}

.schedule-filter-title{
  margin:0 0 8px;
  font-size:26px;
  line-height:1.35;
}

.schedule-filter-lead{
  margin:0;
  font-size:14px;
  line-height:1.7;
  color:#555;
}

@media(max-width:768px){
  .schedule-filter-wrap{
    scroll-margin-top:70px;
  }

  .schedule-filter-title{
    font-size:22px;
  }

  .schedule-filter-lead{
    font-size:13px;
    line-height:1.6;
  }
}

#filter-submit-position{
  display:block;
  position:relative;
  top:-20px;
  visibility:hidden;
}


/* 機関コード */

.agency-code-cell{
display:inline-block;
min-width:48px;
padding:4px 8px;
border-radius:999px;
background:#eef4ff;
border:1px solid #cfe0ff;
color:#0b3d91;
font-size:12px;
font-weight:700;
text-align:center;
line-height:1.2;
}

.agency-code-empty{
color:#999;
font-size:14px;
}

/* PCで機関コード列を中央寄せ */
.course-table th:nth-child(5),
.course-table td:nth-child(5){
text-align:center;
}

/* スマホ */
@media(max-width:768px){

.course-table td[data-label="機関コード"]{
padding-top:2px;
}

.agency-code-cell{
font-size:11px;
padding:3px 8px;
min-width:auto;
}

/* 以前の「講習種別の後ろに書類を自動表示」を消す */
.course-table td[data-label="講習種別"][data-doc="1"]::after,
.course-table td[data-label="講習種別"][data-doc="0"]::after{
display:none;
content:none;
}

/* 書類列はスマホでも表示する */
.course-table td[data-label="書類"],
.course-table td[data-label="書類"]::before{
display:block;
}

}

@media (max-width:768px){

  .course-table tr td:nth-child(5){
    display:none !important;
  }

  .course-table tr td:nth-child(5)::before{
    display:none !important;
    content:none !important;
  }

}
/* =========================
スニペット（まとめ）ブロック
========================= */



.summary-box{
  background:#f8fbff;
  border:2px solid #2a7fff;
  border-radius:12px;
  padding:20px 24px;
  margin:20px 0;
  box-shadow:0 4px 12px rgba(0,0,0,0.05);
  position:relative;
}

/* 連続時の余白 */
.summary-box + .summary-box{
  margin-top:15px;
}

.summary-box:last-of-type{
  margin-bottom:0px;
}

/* 見出し */
.summary-box p strong{
  display:block;
  font-size:18px;
  font-weight:700;
  margin-bottom:10px;
  color:#1a4fb3;
}

/* リスト */
.summary-box ul{
  margin:0;
  padding-left:0;
}

.summary-box li{
  position:relative;
  padding-left:18px;
  margin-bottom:8px;
  line-height:1.6;
  font-size:15px;
}


/* ラベル */
.summary-label{
  position:absolute;
  top:-12px;
  left:16px;
  background:#2a7fff;
  color:#fff;
  font-size:12px;
  padding:4px 12px;
  border-radius:999px;
  font-weight:bold;
  box-shadow:0 2px 6px rgba(0,0,0,0.15);
}

/* リンク */
.summary-link{
  margin-left:10px;
  font-size:13px;
  color:#0b3d91;
  text-decoration:underline;
  white-space:nowrap;
}

.summary-link:hover{
  color:#ff7a00;
}

/* FAQリンク */
.faq-more{
  margin-top:20px;
  text-align:center;
}

.faq-more a{
  display:inline-block;
  padding:10px 16px;
  border-radius:6px;
  background:#eef4ff;
  color:#0b3d91;
  text-decoration:none;
  font-weight:600;
  font-size:14px;
}

.faq-more a:hover{
  background:#0b3d91;
  color:#fff;
}

/* =========================
スマホ最適化
========================= */

@media (max-width:768px){

  .summary-box{
    background:#ffffff;
    border:1px solid #dbeafe;
    border-left:4px solid #2a7fff; /* ←アクセント */
    padding:16px;
    border-radius:10px;
    box-shadow:0 2px 6px rgba(0,0,0,0.05);
  }

  .summary-label{
    top:-10px;
    left:12px;
    font-size:11px;
    padding:3px 8px;
  }

  .summary-box p strong{
    font-size:15px;
    line-height:1.5;
  }

  .summary-box ul{
    margin-top:8px;
  }

  .summary-box li{
    font-size:13px;
    line-height:1.5;
    margin-bottom:6px;
  }

}

#faq{
  margin-top:-30px;
}

.expert {
  background: #fff;
  padding: 25px;
  text-align: center;
  border-radius: 12px;
  margin: 30px auto;
  max-width: 800px;
  box-shadow: 0 4px 14px rgba(0,0,0,.08);
  border-left: 5px solid #0b3d91;
}

.expert h2 {
  font-size: 18px;
  margin-bottom: 10px;
  color: #0b3d91;
}

.expert h2::after {
  display:none;
}

.expert p {
  font-size: 14px;
  line-height: 1.7;
}

/* =========================
   Schedule Box（改善版）
========================= */

.schedule-box{
  background:#fff;
  padding:30px;
  border-radius:14px;
  box-shadow:0 6px 20px rgba(0,0,0,0.08);
  margin-top:20px;
  text-align:center;
}

/* 説明 */
.schedule-lead{
  font-size:14px;
  color:#555;
  margin-bottom:20px;
}

/* セレクトラップ */
.schedule-select-wrap{
  max-width:320px;
  margin:0 auto;
}

/* セレクト本体 */
#regionSelect{
  width:100%;
  padding:14px;
  font-size:16px;
  border:1px solid #ccc;
  border-radius:8px;
  background:#fff;
  cursor:pointer;
  transition:.2s;
}

/* hover */
#regionSelect:hover{
  border-color:#0b3d91;
}

/* focus */
#regionSelect:focus{
  outline:none;
  border-color:#0b3d91;
  box-shadow:0 0 0 2px rgba(11,61,145,0.15);
}


@media(max-width:768px){

 .page-hero{
    padding:40px 15px;        /* ←上下を狭める（今より重要） */
    background-position:center 35%; /* ←画像位置微調整 */
  }

  .page-hero h1{
    font-size:22px;
    line-height:1.4;
  }

  .page-hero p{
    font-size:13px;
    line-height:1.6;
  }

}

.pc-only{
  display:inline;
}

@media(max-width:768px){
  .pc-only{
    display:none !important;
  }
}

.sp-br{
  display:none;
}

@media(max-width:768px){
  .sp-br{
    display:block;
  }
}



.trouble ul{
list-style:none;
padding:0;
margin:0;
}

.trouble li{
background:#fff;
padding:15px;
border-radius:10px;
box-shadow:0 4px 12px rgba(0,0,0,0.08);
margin-bottom:10px;
}

.reason-item{
background:#fff;
padding:20px;
border-radius:10px;
box-shadow:0 4px 12px rgba(0,0,0,0.08);
margin-bottom:15px;
}

.reason-item h3{
margin-top:0;
color:#0b3d91;
}


.highlight{
color:#d60000;
font-weight:bold;
background:linear-gradient(transparent 60%, #fff3cd 60%);
padding:2px 4px;
}



.tel-number{
color:#fff;
font-size:16px;
font-weight:bold;
text-decoration:none;
}

.tel-time{
font-size:12px;
color:#e0e7ff;
}


.doc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 30px;
}

.doc-card {
  background: #fff;
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 5px 15px rgba(0,0,0,0.08);
  text-align: center;
}

.doc-image img {
  width: 120px;   /* ←ここでサイズ調整（80?150pxくらいがおすすめ） */
  height: auto;
  display: block;
  margin: 0 auto 15px;
  border: 1px solid #ddd;
}

.doc-text {
  font-size: 14px;
  margin-bottom: 15px;
}

.law-table {
  width: 100%;
  border-collapse: collapse;
}

.law-table th,
.law-table td {
  border: 1px solid #ddd;
  padding: 12px;
}

.law-table th {
  width: 30%;
  background: #f7f7f7;
  text-align: left;
}

.news-list{
  max-width:800px;
  margin:auto;
  display:flex;
  flex-direction:column;
  gap:20px;
}

.news-item{
  background:#fff;
  padding:25px;
  border-radius:12px;
  box-shadow:0 4px 14px rgba(0,0,0,0.08);
}

.news-date{
  font-size:13px;
  color:#888;
  margin-bottom:8px;
}

.news-title{
  font-size:20px;
  margin:0 0 12px;
}

.news-content{
  font-size:14px;
  line-height:1.7;
}

@media(max-width:768px){
  .news-item{
    padding:18px;
  }

  .news-title{
    font-size:18px;
  }
}

.pc-only .tel-number{
  pointer-events:none;
}