:root{
  --blue:#123CB2; --ink:#333333; --charcoal:#1D1D1D; --nav:#5F5F5F;
  --sub:#67768E; --leadline:rgba(58,88,172,.28); --pagetop:#060097;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{font-family:'Noto Sans JP',sans-serif;font-size:15px;line-height:1.85;color:var(--ink);background:#fff}
img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none}

/* ---------- header ---------- */
header{position:fixed;top:0;left:0;right:0;z-index:100;height:64px;
  background:rgba(255,254,254,.58);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid rgba(18,60,178,.08)}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{height:34px;width:auto;flex:none}
.brand-name{font-family:'Murecho',sans-serif;font-weight:700;font-size:16px;line-height:1.25;color:var(--ink)}
.brand-name small{display:block;font-size:9px;font-weight:700;color:var(--nav);letter-spacing:.02em}
#menuBtn{width:44px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}
#menuBtn span{width:22px;height:2px;background:var(--ink);transition:.25s}
#menuBtn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
#menuBtn.open span:nth-child(2){opacity:0}
#menuBtn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
#gnav{position:fixed;top:0;left:0;right:0;z-index:99;background:rgba(255,255,255,.97);
  padding-top:64px;transform:translateY(-100%);transition:transform .3s ease;box-shadow:0 12px 24px rgba(0,0,0,.08)}
#gnav.open{transform:translateY(0)}
#gnav a{display:block;padding:14px 20px;font-size:14px;font-weight:500;color:var(--nav);border-bottom:1px solid #eee}
#gnav a:last-child{border-bottom:none}

/* ---------- hero ---------- */
.hero{position:relative;height:78vh;min-height:480px;overflow:hidden;background:#0b1230}
.slide{position:absolute;inset:0;opacity:0;transition:opacity 1.1s ease}
.slide.active{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover}
.slide::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.15) 45%,rgba(0,0,0,.45))}
.hero-copy{position:absolute;top:22%;left:0;right:0;text-align:center;color:#fff;z-index:3;
  font-family:'Noto Serif JP',serif;font-weight:700;text-shadow:0 0 10px rgba(0,0,0,.3);padding:0 20px;
  word-break:keep-all;overflow-wrap:normal}
.hero-copy .l1{font-size:clamp(15px,4.6vw,24px);letter-spacing:.12em;white-space:nowrap}
.hero-copy .l2{font-size:clamp(28px,8.4vw,48px);letter-spacing:.06em;margin-top:12px;line-height:1.4}
.hero-copy .l2 em{font-style:normal;font-size:130%}
.hero-copy .nb{white-space:nowrap}
@media (min-width:768px){ .hero-copy .br-sp{display:none} }
.scroll-cue{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);z-index:4;color:#fff;
  font-size:10px;letter-spacing:.35em;opacity:.85;writing-mode:vertical-rl}

/* ---------- section headings ---------- */
section{padding:56px 0}
.sec-head{text-align:center;margin-bottom:34px;padding:0 20px}
.sec-head .en{font-family:'Cinzel',serif;font-weight:500;font-size:clamp(28px,8vw,40px);color:var(--blue);
  letter-spacing:.06em;display:flex;align-items:center;justify-content:center;gap:14px;white-space:nowrap}
.sec-head .en::before,.sec-head .en::after{content:'';height:12px;flex:1;max-width:380px;
  background-repeat:no-repeat;background-size:100% 100%}
.sec-head .en::before{background-image:linear-gradient(to right,transparent,rgba(18,60,178,.9));
  -webkit-mask-image:linear-gradient(#000 4px,transparent 4px,transparent 8px,#000 8px);
  mask-image:linear-gradient(#000 4px,transparent 4px,transparent 8px,#000 8px)}
.sec-head .en::after{background-image:linear-gradient(to left,transparent,rgba(18,60,178,.9));
  -webkit-mask-image:linear-gradient(#000 4px,transparent 4px,transparent 8px,#000 8px);
  mask-image:linear-gradient(#000 4px,transparent 4px,transparent 8px,#000 8px)}
.sec-head .jp{font-size:16px;font-weight:600;letter-spacing:.3em;margin-top:6px;color:var(--ink);text-indent:.3em}
.lead-h{font-size:clamp(20px,5.6vw,30px);font-weight:500;line-height:1.4;color:var(--blue);
  border-left:8px solid var(--leadline);padding-left:9px;margin-bottom:14px}

/* ---------- concern picker ---------- */
#concern{background:#fff}
.picker{padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:960px;margin:0 auto}
.cat-card{position:relative;background:#fff;border:1px solid #dfe4ee;padding:18px 12px 14px;text-align:left;
  transition:border-color .2s, box-shadow .2s;border-radius:0}
.cat-card .icon{display:block;width:44px;height:44px;margin:0 auto 10px;color:var(--blue)}
.cat-card .icon svg{width:100%;height:100%}
.cat-card .jp{display:block;text-align:center;font-size:15px;font-weight:700;line-height:1.5;color:var(--ink)}
.cat-card .en{display:block;text-align:center;font-family:'Cinzel',serif;font-size:10px;letter-spacing:.14em;color:var(--sub);margin-top:4px}
.cat-card .cnt{position:absolute;top:0;right:0;background:var(--blue);color:#fff;font-size:11px;font-weight:600;
  padding:2px 8px;border-radius:0 0 0 5px}
.cat-card.selected{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset,0 8px 20px rgba(18,60,178,.12)}
.cat-card.selected .jp{color:var(--blue)}
.picker-note{max-width:960px;margin:16px auto 0;padding:0 16px;font-size:12.5px;color:var(--sub);text-align:center}
.group-label{grid-column:1/-1;font-size:12px;font-weight:600;letter-spacing:.25em;color:var(--blue);
  border-bottom:1px solid rgba(18,60,178,.25);padding-bottom:6px;margin-top:14px}
.group-label:first-child{margin-top:0}

/* ---------- video list ---------- */
#videos{display:none;background:#f7f8fb}
#videos.show{display:block}
.vlist-head{max-width:960px;margin:0 auto 18px;padding:0 16px}
.vlist-head .cho{display:inline-block;background:var(--blue);color:#fff;font-size:12.6px;padding:3px 12px;border-radius:5px;margin-bottom:10px}
.brand-filter{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.brand-filter::-webkit-scrollbar{display:none}
.brand-filter button{flex:none;font-size:13px;font-weight:600;color:var(--nav);border:1px solid #d4d9e4;
  background:#fff;padding:6px 14px;border-radius:999px}
.brand-filter button.on{background:var(--charcoal);color:#fff;border-color:var(--charcoal)}
.vgrid{max-width:960px;margin:0 auto;padding:0 16px;display:grid;grid-template-columns:1fr;gap:22px}
.vcard{display:block;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.06);text-align:left;width:100%;padding:0;cursor:pointer}
.vthumb{display:block;position:relative;aspect-ratio:16/9;background:#111;overflow:hidden}
.vthumb img{width:100%;height:100%;object-fit:cover}
.vthumb .play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.vthumb .play i{width:56px;height:56px;background:rgba(29,29,29,.82);display:flex;align-items:center;justify-content:center}
.vthumb .play svg{width:22px;height:22px;fill:#fff;margin-left:3px}
.vt{display:block;padding:12px 14px 14px}
.vt p{font-size:14.5px;font-weight:600;line-height:1.5;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vt .badge{display:inline-block;background:var(--blue);color:#fff;font-size:11px;padding:1px 8px;border-radius:5px;margin-bottom:6px}
.more-btn{display:none;margin:28px auto 0;background:var(--charcoal);color:#fff;
  font-size:15px;font-weight:500;padding:14px 30px;text-align:center}
.more-btn.show{display:block}
.back-cats{display:block;margin:14px auto 0;max-width:200px;background:#fff;color:var(--charcoal);
  border:1px solid var(--charcoal);font-size:14px;font-weight:500;padding:12px 24px;text-align:center}

/* ---------- modal player ---------- */
#playerModal{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.9);display:none;
  align-items:center;justify-content:center;flex-direction:column;padding:0}
#playerModal.open{display:flex}
.player-wrap{width:100%;max-width:960px}
.player-frame{position:relative;aspect-ratio:16/9;background:#000}
.player-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.player-title{color:#fff;font-size:13.5px;padding:12px 18px;line-height:1.6;max-width:960px}
#closePlayer{position:absolute;top:calc(env(safe-area-inset-top) + 12px);right:12px;z-index:201;
  width:44px;height:44px;background:rgba(255,255,255,.14);color:#fff;font-size:22px;line-height:1}

/* ---------- about / sns / access ---------- */
.about-inner{max-width:960px;margin:0 auto;padding:0 20px}
.about-inner p{margin-bottom:14px}
.sns-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;max-width:960px;margin:0 auto;padding:0 14px}
.sns-row a{background:#fff;border:1px solid #e6e9f0;box-shadow:0 3px 8px rgba(0,0,0,.06);
  padding:14px 4px;text-align:center;font-size:10.5px;font-weight:600;color:var(--ink)}
.sns-row svg{width:26px;height:26px;margin:0 auto 6px;display:block}
.access-box{max-width:960px;margin:0 auto 18px;padding:0 20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.access-logo{height:44px;width:auto;flex:none}
.access-box .info{border-left:1px solid #cfd5e2;padding-left:12px;font-size:13.5px;line-height:1.9}
.gmap{max-width:960px;margin:0 auto;padding:0 16px}
.gmap iframe{width:100%;height:280px;border:0;display:block}

/* ---------- contact ---------- */
#contact .cgrid{max-width:960px;margin:0 auto;padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cbtn{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:96px;
  background:linear-gradient(135deg,#0a1f66,var(--blue));color:#fff;padding:16px 14px;
  box-shadow:0 6px 16px rgba(10,31,102,.25)}
.cbtn .t{font-size:15px;font-weight:600}
.cbtn .arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:20px;font-weight:100;opacity:.9}
.cbtn svg{position:absolute;right:34px;top:50%;transform:translateY(-50%);width:26px;height:26px;stroke:#fff;fill:none;stroke-width:1.4;opacity:.9}
.cbtn.tel{grid-column:1/-1;align-items:center;text-align:center;min-height:120px}
.cbtn.tel .num{font-family:'Noto Serif JP',serif;font-style:italic;font-size:clamp(26px,7.6vw,38px);letter-spacing:.04em}
.cbtn.tel .hours{font-size:11.5px;opacity:.85;margin-top:2px}

/* ---------- footer ---------- */
footer{background:var(--blue);color:#fff;padding:44px 20px 26px}
.f-inner{max-width:960px;margin:0 auto}
.f-logo{display:inline-block;border:1px solid rgba(255,255,255,.6);padding:10px 16px;
  font-family:'Cinzel',serif;font-size:13px;letter-spacing:.12em;margin-bottom:8px}
.f-tag{font-size:11px;opacity:.85;margin-bottom:22px}
.f-sns{display:flex;gap:10px;margin-bottom:26px}
.f-sns a{width:38px;height:38px;border:1px solid rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center}
.f-sns svg{width:18px;height:18px;fill:#fff}
.f-map{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px;margin-bottom:30px}
.f-map h4{font-size:13px;font-weight:400;border-bottom:1px solid rgba(255,255,255,.7);padding-bottom:6px;margin-bottom:8px;letter-spacing:.05em}
.f-map a{display:block;font-size:12.5px;line-height:2;opacity:.92}
.copy{text-align:center;font-size:13px;border-top:1px solid rgba(255,255,255,.25);padding-top:18px}

/* ---------- page top ---------- */
#pagetop{position:fixed;right:14px;bottom:18px;z-index:90;width:38px;height:38px;background:var(--pagetop);
  color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:.3s}
#pagetop.show{opacity:1;pointer-events:auto}
#pagetop svg{width:16px;height:16px;fill:#fff}

@media (min-width:768px){
  header{height:80px;padding:0 32px}
  .brand-logo{height:50px}
  .brand-name{font-size:22px}.brand-name small{font-size:11px}
  .picker{grid-template-columns:repeat(5,1fr)}
  .vgrid{grid-template-columns:1fr 1fr}
  .gmap iframe{height:420px}
  .f-map{grid-template-columns:repeat(4,1fr)}
}

/* 移行時の補正：固定背景、アンカー位置、タブレットナビ、キーボード操作 */
html{scroll-padding-top:90px}
body{overflow-x:clip}
.hero{clip-path:inset(0);background:#0b1230}
.slide{position:fixed;inset:0 0 auto;height:78vh;min-height:480px;pointer-events:none}
h1.l2{font-weight:700}
.brand{min-width:0}
.brand-name{overflow-wrap:anywhere}
.cat-card .en{overflow-wrap:anywhere}
:focus-visible{outline:3px solid #123CB2;outline-offset:4px}
#playerModal :focus-visible{outline-color:#fff}
.player-title{padding-bottom:4px}
.youtube-link{color:#fff;text-decoration:underline;font-size:12px;padding:8px 18px}
@media(min-width:1100px){
  #menuBtn{display:none}
  #gnav{position:static;transform:none;background:none;box-shadow:none;display:flex;padding-top:0}
  #gnav a{border:none;padding:8px 12px;font-size:14px}
  #gnav a:hover{color:var(--blue)}
}
@media(max-width:767px){
  html{scroll-padding-top:74px}
  .brand-name{font-size:clamp(12px,3.7vw,16px)}
  .brand-name small{font-size:clamp(7px,2.1vw,9px)}
  #menuBtn{flex:none}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
}
