/* =========================================================
   Tokens / Base / Typography
========================================================= */
:root{
  --sec-title-size:42px;
  --nav-active:#A38476;
  --ttl:#45524C;
  --ink:#5C6963;
  --accent:#A38476;
  --accent-soft:#d3cfc5;
  --card:#FDFDFA;

  --focus-border:#A38476;
  --focus-ring:0 0 0 .2rem rgba(163,132,118,.25);
  --input-underline:#DCD7D2;
}

*,*::before,*::after{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
img{ max-width:100%; height:auto; display:block; }

body{
  background:#f7f7f7; color:var(--ink);
  font-family:'Noto Serif JP', serif;
  font-size:13px; line-height:1.85; letter-spacing:.02em;
  overflow-x:hidden;
}

h1,h2,h3,h4,h5,h6{
  font-family:'Noto Serif JP', serif;
  color:var(--ttl); margin:0 0 .6em;
}

a{ color:#292929; text-decoration:none; transition:.3s; }
a:hover{ opacity:.85; }

.paddsection{ padding:50px 0; }
.pagelink{ margin-top:-100px; padding-top:100px; }

/* Section Title */
.section-title{ margin-bottom:clamp(28px, 4vw, 40px); }
.section-title h2{
  font-family:"Lavishly Yours", cursive;
  font-size:var(--sec-title-size);
  line-height:1.12; letter-spacing:.06em; color:var(--ttl); margin:0;
}
.section-title h2 + p{
  font-family:'Noto Serif JP', serif;
  font-size:14px; letter-spacing:.28em; margin-top:-3px; color:#ADACB1;
}

:target{ scroll-margin-top: calc(var(--header-h, 64px) + 8px); }

/* =========================================================
   Header / Navbar
========================================================= */
#header{
  position:fixed; inset:0 0 auto 0; z-index:1100;
  padding:5px 0; background:#2B2B2B; box-shadow:0 2px 25px rgba(0,0,0,.08);
  opacity:0; transform:translateY(-10px); pointer-events:none;
  transition:opacity .3s ease, transform .3s ease;
}
#header.is-visible{ opacity:1; transform:none; pointer-events:auto; }
#header h1{ margin:0; display:flex; align-items:center; line-height:1; }
#header .logo{ display:inline-flex; align-items:center; margin-left:10px; }
#header .logo img{ max-height:40px; margin:0; display:block; }

#navbar{ padding:0; }
#navbar>ul{ margin:0; padding:0; list-style:none; display:flex; align-items:center; }
#navbar li{ position:relative; }
#navbar a{
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 0 10px 30px;
  font-family:"Cormorant Garamond", serif;
  font-size:var(--nav-fs); font-weight:500; letter-spacing:.08em;
  color:#FDFDFA; white-space:nowrap; text-decoration:none;
  transition:color .2s ease;
}
#navbar a:is(:hover,.active), #navbar li:hover>a{ color:var(--nav-active); }

#navbar .dropdown ul{
  display:block; position:absolute; left:30px; top:calc(100% + 30px);
  margin:0; padding:10px 0; z-index:99; opacity:0; visibility:hidden;
  background:#2B2B2B; box-shadow:0 0 30px rgba(127,137,161,.25); transition:.3s;
}
#navbar .dropdown:hover>ul{ opacity:1; top:100%; visibility:visible; }

#header .mobile-nav-toggle{ display:none; color:#fff; font-size:28px; line-height:1; cursor:pointer; }

@media (max-width:991.98px){

  #navbar.navbar-mobile{
    position:fixed !important; inset:0 !important; z-index:2000 !important; background:rgba(43,43,43,.6);
  }
  #navbar.navbar-mobile>ul{
    display:block !important; position:absolute !important;
    top:var(--header-h,56px) !important; left:16px; right:16px; bottom:16px;
    background:#fff; border-radius:10px; padding:10px 0; margin:0; list-style:none;
    overflow:auto; box-shadow:0 10px 30px rgba(0,0,0,.12);
  }
  #navbar.navbar-mobile>ul li{ width:100%; }
  #navbar.navbar-mobile>ul a{ display:block; padding:14px 18px; font-size:15px; color:var(--ttl); }
  #navbar.navbar-mobile>ul a:is(:hover,.active){ color:var(--nav-active); }

  #navbar.navbar-mobile .dropdown ul{ display:none; padding-left:12px; }
  #navbar.navbar-mobile .dropdown ul.dropdown-active{ display:block; }

  body.nav-open{ overflow:hidden; }

  #navbar.navbar-mobile .mobile-nav-toggle{
    position:fixed;
    top:calc(12px + env(safe-area-inset-top, 0px));
    right:calc(12px + env(safe-area-inset-right, 0px));
    width:44px; height:44px;
    display:inline-flex; align-items:center; justify-content:center;
    z-index:2102; color:#fff; pointer-events:auto;
  }
}

body.nav-open #header,
:root:has(#navbar.navbar-mobile) #header{
  transform:none; opacity:1; pointer-events:auto; transition:none; z-index:2001;
}

@media (min-width: 992px){
  #header #navbar a{
    font-size:var(--nav-fs);
    line-height:1.8;
    letter-spacing:.08em;
    padding:10px 0 10px 30px;
  }
}

#header h1{ margin:0 !important; display:flex !important; align-items:center !important; }
#header .logo{ display:inline-flex !important; align-items:center !important; }
#header .logo img{ max-height:40px !important; height:auto !important; display:block !important; }
@media (max-width: 991.98px){
  #header .logo img{ max-height:36px !important; }
}

@media (max-width: 991.98px){
  #header .container{ position:relative !important; }
  #header .mobile-nav-toggle{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    width:44px; height:44px;
    position:absolute !important;
    right:calc(12px + env(safe-area-inset-right, 0px)) !important;
    top:50% !important;
    transform:translateY(-50%) !important;
    z-index:2100 !important;
    cursor:pointer !important;
  }
}

@media (max-width: 991.98px){
  #navbar.navbar-mobile .mobile-nav-toggle{
    position:fixed !important;
    top:calc(12px + env(safe-area-inset-top, 0px)) !important;
    right:calc(12px + env(safe-area-inset-right, 0px)) !important;
    transform:none !important;
    z-index:2102 !important;
  }
}

#header .container{
  padding-inline:12px !important;
}

@media (max-width: 991.98px){
  #navbar > ul{ display:none !important; }
}

:root { --nav-fs: 15px; }
@media (min-width: 992px){
  :root { --nav-fs: 15px; }
}

#header .navbar .nav-link,
#header nav .nav-link,
#header nav a,
#header #navbar a,
body.plan   #header #navbar a,
body.dress-list #header #navbar a,
body.policy #header #navbar a{
  font-size: var(--nav-fs) !important;
  line-height: 1.8;
  letter-spacing: .08em;
}

#navbar.navbar-mobile > ul a{
  display:block; padding:14px 18px;
  font-size: var(--nav-fs) !important;
  color: var(--ttl);
}

/* =========================================================
   Hero
========================================================= */
#hero{ position:relative; z-index:1; }
.video-box{ position:relative; overflow:hidden; width:100%; height:100vh; height:100dvh; min-height:100vh; }
#bg-video{ position:absolute; inset:0; z-index:0; --bs-carousel-transition-duration:1100ms; }
#bg-video .carousel-inner,
#bg-video .carousel-item{ width:100%; height:100%; }
#bg-video .carousel-item img{
  width:100%; height:100%; object-fit:cover; object-position:center; display:block;
}
#bg-video.carousel-fade .carousel-item{ transition:opacity 1300ms ease-in-out !important; will-change:opacity; }

.hero-overlay{ position:absolute; inset:0; z-index:2; pointer-events:none; display:flex; }
.hero-title{
  position:absolute; left:3%; bottom:10%; margin:0;
  display:flex; flex-direction:column; gap:8px;
  font-family:"Noto Serif JP", serif;
  opacity:0; transform:translateY(8px);
  transition:opacity .8s ease, transform .8s ease;
}
#hero .hero-title.is-in{ opacity:1; transform:none; }
.hero-title .mainttl{
  white-space:nowrap; font-size:clamp(16px, 4.2vw, 20px);
  letter-spacing:.2em; color:#fff; font-weight:400;
  background:linear-gradient(transparent 85%, #69C4D0 0); padding-left:8px;
}
.hero-title .subttl{
  display:flex; align-items:center; font-size:16px; letter-spacing:.1em; color:#fff; font-weight:300;
}
.hero-title .subttl::before{ content:""; border-top:1px solid #fff; width:2em; margin-right:5px; }
@media (max-width: 991px){
  .hero-title{ left:4%; bottom:8%; }
  .hero-title .subttl{ font-size:14px; }
}

#hero.hero{ position:relative; min-height:calc(100svh - var(--header-h, 0px)); background:#000; overflow:clip; }
#hero .hero__bg{ position:absolute; inset:0; }
#hero .hero__bg img{ width:100%; height:100%; object-fit:cover; display:block; }

#hero .hero__catch{
  --catch-left: clamp(14px, 3vw, 40px);
  --catch-bottom: clamp(40px, 6vw, 80px);
  position:absolute; left:var(--catch-left); bottom:var(--catch-bottom); pointer-events:none;
}
#hero .hero__catch img{
  display:block; height:auto; width:clamp(220px, 55%, 660px); max-width:90vw;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.25));
}
@media (max-width:575.98px){
  #hero .hero__catch img{ width:clamp(180px, 85vw, 440px); }
}
@media (min-width:992px){
  #hero .hero__catch{ left:calc(var(--catch-left) + 10px); bottom:calc(var(--catch-bottom) - 10px); }
}

img[width="1920"][height="1080"], .carousel-item img{ aspect-ratio:16/9; }
img{ height:auto; }

.reveal-up{
  opacity:0; transform:translateY(18px);
  transition:opacity .56s cubic-bezier(.2,.6,.2,1), transform .56s cubic-bezier(.2,.6,.2,1);
  transition-delay:var(--reveal-delay,0ms);
  will-change:opacity,transform;
}
.reveal-up.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  #bg-video.carousel-fade .carousel-item{ transition:none !important; }
  .hero-title, .reveal-up{ transition:none; transform:none; }
}

.hero__catch { 
  transform: scale(.9);
  transform-origin: center center;
}

@media (max-width: 575.98px) {
  .hero__catch {
    transform-origin: left center;
    transform: translateX(calc(-3vw + 5px)) scale(.8);
  }
}

.visually-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

/* =========================================================
   Concept
========================================================= */
#concept{
  position:relative; z-index:0; background:#f7f7f7;
  padding-top:clamp(80px, 10vh, 120px); padding-bottom:clamp(60px, 8vh, 100px);
}
#concept .div-img-bg, #concept .concept-img,
#concept .div-img-bg img, #concept .concept-img img{
  position:static; border-radius:0; box-shadow:none; filter:none; display:block; width:100%; height:auto; object-fit:contain; margin:0;
}
@media (min-width:992px){
  #concept .div-img-bg{ padding-left:clamp(40px, 7vw, 160px); }
  #concept .concept-img{ max-width:clamp(350px, 48vw, 560px); }
}
#concept .concept-card{
  position:relative; background:#FDFDFA; border-radius:0 0 0 50px;
  padding:clamp(20px, 3.5vw, 40px) clamp(20px, 4vw, 48px);
  padding-top:calc(clamp(20px, 3.5vw, 40px) + 72px); margin:0; max-width:580px;
}
#concept .concept-label{
  position:absolute; left:clamp(16px, 3vw, 40px); top:-12px; display:flex; flex-direction:column; pointer-events:none; z-index:3;
}
#concept .concept-label .en{
  font-family:"Lavishly Yours", cursive; font-size:var(--sec-title-size); line-height:1.12; color:var(--ttl);
  margin-top:clamp(10px, 2vw, 24px);
}
#concept .concept-label .ja{
  font-family:"Noto Serif JP", serif; font-size:14px; letter-spacing:3px; color:#ADACB1; margin-top:4px;
}
#concept .concept-card .separator{ color:var(--ttl); line-height:1.8; text-align:left; margin:0 0 20px; }
@media (max-width:991.98px){
  #concept .div-img-bg{ padding-left:0; }
  #concept .concept-img{ width:94%; margin:0 auto 8px; max-width:none; }
  #concept .concept-card{
    width:94%; margin:12px auto 0; border-radius:0;
    padding:clamp(16px, 4vw, 28px) clamp(18px, 5vw, 36px);
    padding-top:calc(clamp(16px, 4vw, 28px) + 68px);
  }
}
p.separator span{ display:block; margin-bottom:.7em; }

/* =========================================================
   Salon Points
========================================================= */
#salonpoints{
  --band-bg:#e9e4e1; --band-h:clamp(170px, 22vw, 250px); --img-float:-10%; --band-narrow:14%;
  padding:clamp(40px, 5vw, 72px) 0; background:transparent;
}
#salonpoints .section-title{
  display:grid; place-items:center; row-gap:2px; text-align:center;
  margin:0 0 clamp(16px, 2vw, 20px);
}
#salonpoints .section-title p{
  font-family:'Noto Serif JP', serif; font-size:14px; letter-spacing:.28em; color:#ADACB1; margin:0;
}
#salonpoints .points-list{ display:grid; row-gap:clamp(36px, 4.8vw, 80px); margin:0; padding:0; list-style:none; }
#salonpoints .points-item{ position:relative; isolation:isolate; }

@media (min-width:768px){
  #salonpoints .container, #salonpoints .container-fluid{ width:min(80%, 1200px); margin:0 auto; }
  #salonpoints .points-inner{
    position:relative; display:grid; grid-template-columns:repeat(12,1fr);
    align-items:center; column-gap:clamp(18px, 2.8vw, 40px); z-index:0;
  }
  #salonpoints .points-inner::before{
    content:""; position:absolute; top:50%; transform:translateY(-50%);
    height:var(--band-h); background:var(--band-bg); z-index:-1;
  }
  #salonpoints .points-item:nth-child(odd)  .points-inner::before{ left:0; right:var(--band-narrow); }
  #salonpoints .points-item:nth-child(even) .points-inner::before{ left:var(--band-narrow); right:0; }

  #salonpoints .points-item:nth-child(odd)  .points-body { grid-column:1 / span 7; }
  #salonpoints .points-item:nth-child(odd)  .points-media{ grid-column:8 / -1; }
  #salonpoints .points-item:nth-child(even) .points-media{ grid-column:1 / span 5; }
  #salonpoints .points-item:nth-child(even) .points-body { grid-column:6 / -1; }

  #salonpoints .points-media{ grid-row:1; z-index:1; }
  #salonpoints .points-media img{ width:100%; height:auto; transform:translateY(var(--img-float)); }
  #salonpoints .points-body{ grid-row:1; padding:clamp(22px, 2.4vw, 32px) clamp(24px, 3vw, 40px); }
}
@media (max-width:991.98px){
  #salonpoints .points-inner{ display:grid; grid-template-columns:1fr; grid-template-rows:auto auto; }
  #salonpoints .points-inner::before{ display:none; }
  #salonpoints .points-media{ grid-column:1; grid-row:1; z-index:2; }
  #salonpoints .points-media img{ width:100%; max-width:92%; margin:0 auto; transform:none; }
  #salonpoints .points-body{ grid-column:1; grid-row:2; padding:20px 6% 24px; position:relative; z-index:1; }
  #salonpoints .points-body::before{
    content:""; position:absolute; left:50%; transform:translateX(-50%);
    width:100vw; top:-8vw; bottom:0; background:var(--band-bg); z-index:-1;
  }
}
#salonpoints .points-label{
  font-family:'Cormorant Garamond', serif; letter-spacing:.30em; color:var(--accent);
  gap:12px; margin:0 0 10px; line-height:1;
}
#salonpoints .points-label span{ font-size:12px; }
#salonpoints .points-label em{
  font-family:'Lavishly Yours', serif; font-style:normal;
  font-size:clamp(24px, 2.2vw, 28px); line-height:1; transform:translateY(1px);
}
#salonpoints .points-title{ font-family:'Cormorant Garamond', serif; font-size:16px; line-height:1.6; color:var(--ttl); margin:4px 0 10px; }
@media (min-width:1200px){ #salonpoints .points-title{ font-size:17px; } }
#salonpoints .points-text{ font-size:14px; line-height:1.95; color:var(--ink); margin:0; }

/* =========================================================
   About
========================================================= */
:root{ --about-offset: clamp(80px, 16vh, 180px); }
#about{
  background:#f7f7f7 url("../img/concept03.jpg") no-repeat center bottom / cover;
  display:flex; align-items:flex-start; justify-content:center;
  text-align:center; position:relative; min-height:100vh;
  padding-top: var(--about-offset) !important;
}
@media (max-width:768px){
  #about{ background-size:auto 100%; background-position:center bottom; }
}
#about .container{ color:#333; }
#about :is(h1,h2,h3,h4,p,li,.about-descr .separator){ color:#333; text-shadow:none; }
#about .about-descr .p-heading{ color:#333; }
#about a{ color:#333; }
#about .section-title{ margin-top:0; }
#about .about-descr{ width:100%; margin-top: clamp(6px, 1.5vh, 18px); }
#about .section-title h2{ margin-bottom:0; }
#about .section-title h2 + p{ margin-top:clamp(1px, .3vw, 3px); letter-spacing:.28em; color:#ADACB1; }
#about .section-title>p{ color:#2B2B2B; -webkit-text-fill-color:#2B2B2B; letter-spacing:.06em; }
@media (max-width:575.98px){
  #about .about-descr{ padding-inline:12px; }
  #about .about-descr .separator{ line-height:1.95; letter-spacing:.02em; text-shadow:0 1px 0 rgba(255,255,255,.35); }
  #about .about-descr .separator span{ display:block; margin-top:.65em; }
  #about{ background-position: center calc(100% - 2vh); }
}

/* =========================================================
   Staff
========================================================= */
#staff{ background:#fff; padding:clamp(40px, 6vw, 80px) 0; }
#staff .members{ margin:0; padding:0; list-style:none; }
#staff .member{ display:grid; gap:0; align-items:stretch; }
#staff .member .photo img{ display:block; border-radius:0; box-shadow:none; image-rendering:-webkit-optimize-contrast; }

@media (max-width:767.98px){
  #staff{ padding-top:36px; padding-bottom:32px; }
  #staff .section-title{ text-align:center; margin:24px 0 36px; display:grid; row-gap:4px; }
  #staff .section-title p{ font-family:'Noto Serif JP',serif; font-size:13px; letter-spacing:.28em; margin:0; color:#ADACB1; }
  #staff .member{ grid-template-columns:1fr; grid-auto-rows:auto; }
  #staff .member .photo img{ width:86%; margin:0 auto; object-fit:contain; }
  #staff .bio-head{ display:none; }
  #staff .member .bio{ background:transparent; padding:16px 6% 20px; text-align:left; color:var(--ink); margin-bottom:28px; }
  #staff .member .bio .role{ font-size:11px; letter-spacing:.25em; color:var(--accent); margin:0 0 4px; }
  #staff .member .bio .name{ font-size:16px; line-height:1.6; margin:2px 0 6px; color:var(--ttl); }
  #staff .member .bio .kana{ font-size:11px; letter-spacing:.26em; color:#8a8f8c; margin:-2px 0 10px; font-family:'Cormorant Garamond',serif; }
  #staff .member .bio .desc{ font-size:13px; line-height:1.9; letter-spacing:.02em; margin:0; }
}

@media (min-width:768px){
  #staff{ padding-top:0; padding-bottom:0; }
  #staff .container{ width:min(80%,1200px); margin:0 auto; }
  #staff .section-title{ display:none; }
  #staff .member{
    --staff-h: clamp(340px, 36vw, 480px);
    height:var(--staff-h);
    grid-template-columns:5fr 7fr;
    grid-template-rows:min-content 1fr;
    column-gap:clamp(24px, 3vw, 48px);
    overflow:hidden;
  }
  #staff .member .photo{ grid-column:1; grid-row:1 / -1; position:relative; height:100%; overflow:hidden; }
  #staff .member .photo img{
    position:absolute; inset:-1px 0 -1px 0;
    width:100%; height:calc(100% + 2px);
    object-fit:cover; object-position:left center; max-width:none;
  }
  #staff .bio-head{ grid-column:2; grid-row:1; margin:0; padding:clamp(12px, 2.5vw, 28px) 0 6px; text-align:center; }
  #staff .bio-head h2{
    font-family:"Lavishly Yours",cursive; font-size:var(--sec-title-size); line-height:1.12; letter-spacing:1px; margin:0; color:var(--ttl);
  }
  #staff .bio-head p{ font-family:'Noto Serif JP',serif; font-size:14px; letter-spacing:.28em; margin:.2em 0 0; color:#ADACB1; }
  #staff .member .bio{
    grid-column:2; grid-row:2; margin:0;
    padding:clamp(16px, 2.2vw, 24px) clamp(24px, 3vw, 44px) clamp(40px, 6vw, 80px);
    background:transparent; min-height:0; overflow:auto; text-align:left;
  }
  #staff .member .bio .role{ display:inline-block; font-family:'Cormorant Garamond',serif; font-size:12px; letter-spacing:.25em; color:var(--accent); }
  #staff .member .bio .name{ color:var(--ttl); font-size:16px; line-height:1.6; margin:2px 0 6px; }
  #staff .member .bio .kana{ font-family:'Cormorant Garamond',serif; font-size:11px; letter-spacing:.26em; color:#8a8f8c; margin:-2px 0 10px; }
  #staff .member .bio .desc{ font-size:13px; line-height:1.9; letter-spacing:.02em; margin:0; }
}

/* =========================================================
   Plan (TOP)
========================================================= */
#plan{
  padding:clamp(48px,6vw,80px) 0;
  background:inherit;
  --label:#BFA3A1;
  --card-mark-w:clamp(2px,.3vw,4px);
}
#plan .section-title h2{color:var(--ttl);}
#plan .section-title h2+p{color:#ADACB1;margin-top:-4px;}

#plan .plan-list{display:grid;gap:clamp(36px,5vw,68px);}
#plan .plan-item{
  position:relative;display:grid;align-items:center;gap:clamp(18px,3vw,40px);
  transition:transform .25s ease;will-change:transform;
}
#plan .plan-card{
  background:#fff;border-left:var(--card-mark-w) solid var(--accent);
  padding:clamp(20px,3vw,36px) clamp(22px,3.6vw,44px);
  color:var(--ink);transition:box-shadow .25s ease;
}
#plan .plan-media img{
  width:100%;height:clamp(340px,38vw,520px);
  object-fit:cover;object-position:center;display:block;
}

#plan .plan-no{
  font-family:'Noto Sans JP',sans-serif;font-size:clamp(8px,1.2vw,12px);
  color:var(--accent);letter-spacing:.1em;margin-bottom:.2em;
}
#plan .plan-title{
  font-family:'Noto Serif JP',serif;font-size:clamp(15px,1.8vw,16px);
  color:var(--ttl);line-height:1.15;display:table;margin:0 auto;text-align:center;
}
#plan .plan-title::after{
  content:"";display:block;width:56px;height:1px;background:var(--ttl);margin:.7em auto;
}
#plan .plan-sub{
  font-family:'Noto Serif JP',serif;font-size:11px;letter-spacing:.10em;color:#8a8f8c;
  display:table;margin:0 auto 14px;text-align:center;
}
#plan .plan-lead{font-size:12px;line-height:1.95;color:var(--ink);margin:0 0 clamp(14px,1.8vw,18px);}

#plan .plan-table{
  --dtw:240px;display:grid;gap:8px 14px;
  margin:0 0 clamp(14px,2vw,20px);margin-left:clamp(4px,1vw,12px);
}
#plan .plan-table .plan-line{display:grid;grid-template-columns:var(--dtw) 1fr;gap:8px 14px;align-items:center;}
#plan .plan-table dt{
  background:transparent;color:var(--ttl);border:1px solid var(--label);
  width:100%;padding:7px 12px;font-size:13px;line-height:1.35;text-align:center;font-weight:400;box-sizing:border-box;
}
#plan .plan-table dd{margin:0;font-size:13px;line-height:1.75;color:var(--ttl);}
#plan .plan-table dd strong{color:var(--ttl);font-size:15px;font-weight:400;}
#plan .plan-table dd small{font-size:11px;color:#8a8f8c;}

@media (hover:hover){
  #plan .plan-item:hover{transform:translateY(-2px);}
  #plan .plan-item:hover .plan-card{box-shadow:0 8px 24px rgba(0,0,0,.08);}
  #plan .plan-item:hover .plan-media img{box-shadow:0 8px 24px rgba(0,0,0,.14);}
  #plan .plan-item:hover .plan-title{color:var(--accent);}
  #plan .plan-item:hover .plan-title::after{background:var(--accent);}
}
#plan .plan-item:active{transform:translateY(-1px);}
#plan .plan-item:active .plan-card{box-shadow:0 6px 18px rgba(0,0,0,.07);}
#plan .plan-item:active .plan-media img{box-shadow:0 6px 18px rgba(0,0,0,.12);}

#plan .plan-item .plan-hitarea{position:absolute;inset:0;z-index:5;}

@media (min-width:992px){
  #plan .plan-item{grid-template-columns:1.05fr 1fr;align-items:stretch;}
  #plan .plan-item.alt{grid-template-columns:1fr 1.05fr;}
  #plan .plan-item.alt .plan-card{order:2;border-left:none;border-right:var(--card-mark-w) solid var(--accent);}
  #plan .plan-item.alt .plan-media{order:1;justify-self:end;}
  #plan .plan-card,#plan .plan-media{height:100%;}
  #plan .plan-media img{height:100%;object-fit:cover;}
  #plan .plan-card{padding-block:clamp(16px,2vw,24px);padding-inline:clamp(22px,3.2vw,40px);}
}

@media (min-width:768px) and (max-width:991.98px){
  #plan .plan-item{grid-template-columns:7fr 5fr;align-items:stretch;}
  #plan .plan-item.alt{grid-template-columns:5fr 7fr;}
  #plan .plan-item.alt .plan-card{order:2;}
  #plan .plan-item.alt .plan-media{order:1;}
  #plan .plan-card,#plan .plan-media{height:100%;}
  #plan .plan-media img{height:100%;object-fit:cover;}
  #plan .plan-card{padding-block:clamp(16px,3vw,22px);padding-inline:clamp(22px,4vw,40px);}
  #plan .plan-table{--dtw:220px;}
}

@media (max-width:991.98px){
  #plan .plan-item{grid-template-columns:1fr;gap:clamp(14px,4vw,24px);}
  #plan .plan-card{border-left:var(--card-mark-w) solid var(--accent);padding:clamp(20px,4.5vw,28px) clamp(20px,6vw,28px);}
  #plan .plan-media img{margin:0 auto;height:clamp(260px,56vw,420px);}
  #plan .plan-table{--dtw:200px;margin-left:10px;}
  #plan .plan-table dt{font-size:12.5px;padding:6px 10px;}
  #plan .plan-table dd{font-size:12.5px;}
  #plan .plan-table dd strong{font-size:14px;}
}

@media (min-width:992px){
  #plan .plan-list>article.is-option{grid-template-columns:minmax(520px,1fr) minmax(520px,1fr);}
}
@media (min-width:1280px){
  #plan .plan-list>article.is-option{grid-template-columns:.72fr 1.28fr;}
}

@media (max-width:991.98px){
  #plan .plan-list>article.is-option{grid-template-columns:1fr;}
}

#plan .plan-list>article.is-option .plan-media img{width:100%;height:100%;object-fit:cover;}

@media (min-width:992px){
  #plan .plan-list>article.is-option .plan-media{min-height:340px !important;}
  #plan .plan-list>article.is-option .plan-media img{height:100% !important;}
}

@media (max-width:991.98px){
  #plan .plan-media{min-height:clamp(260px,56vw,420px) !important;}
  #plan .plan-media img{height:100% !important;margin:0 !important;}
}

#plan .plan-item{gap:0 !important;column-gap:0 !important;row-gap:0 !important;}
#plan .plan-list>article.is-option{gap:0 !important;}

@media (min-width:768px){
  #plan .plan-item{align-items:stretch !important;}
  #plan .plan-card,#plan .plan-media{height:100% !important;}
  #plan .plan-media{position:relative !important;display:block !important;}
  #plan .plan-media img{
    position:static !important;display:block !important;width:100% !important;
    height:100% !important;object-fit:cover !important;object-position:center !important;margin:0 !important;
  }
}

.plan-table{margin:1.25rem 0;}

@media (max-width:991.98px){
  #plan .plan-list>article.is-option .plan-card dl.plan-table{
    display:grid;gap:8px 14px;margin-left:clamp(4px,1vw,12px);--dtw:200px;
  }
  #plan .plan-list>article.is-option .plan-card dl.plan-table>.plan-line{
    display:grid;grid-template-columns:var(--dtw) 1fr;gap:8px 14px;align-items:center;
  }
  #plan .plan-list>article.is-option .plan-card dl.plan-table dt{font-size:12.5px;padding:6px 10px;text-align:center;}
  #plan .plan-list>article.is-option .plan-card dl.plan-table dd{font-size:12.5px;line-height:1.75;}
}

@media (min-width:992px){
  #plan .plan-list>article.is-option .plan-card dl.plan-table{
    display:block;column-count:2;column-gap:32px;margin-left:0;--dtw:190px;
  }
  #plan .plan-list>article.is-option .plan-card dl.plan-table .plan-line{
    break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;
    display:grid;grid-template-columns:var(--dtw) 1fr;gap:8px 14px;align-items:center;margin-bottom:10px;
  }
  #plan .plan-list>article.is-option .plan-card dl.plan-table dt{
    font-size:12px;padding:6px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;
  }
  #plan .plan-list>article.is-option .plan-card dl.plan-table dd{font-size:12px;line-height:1.75;}
  #plan .plan-list>article.is-option .plan-card dl.plan-table dd strong{font-size:14px;}
  #plan .plan-list>article.is-option .plan-card dl.plan-table dd small{font-size:10.5px;}
}

@media (orientation: portrait) and (min-width: 768px) and (max-width: 1024px){

  body.plan02 #plan .plan-item{
    grid-template-columns: 1fr !important;
    gap: clamp(14px, 4vw, 24px) !important;
  }
  body.plan02 #plan .plan-card{ order: 1 !important; }
  body.plan02 #plan .plan-media{ order: 2 !important; }

  #plan .plan-list > article.is-option{
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 0 !important;
  }

  #plan .plan-list > article.is-option .plan-card{ order: 1 !important; }
  #plan .plan-list > article.is-option .plan-media{ order: 2 !important; }

  #plan .plan-list > article.is-option .plan-card dl.plan-table{
    display: grid !important;
    grid-template-columns: var(--dtw, 200px) 1fr !important;
    gap: 8px 14px !important;
    margin-left: clamp(4px, 1vw, 12px) !important;
  }
  #plan .plan-list > article.is-option .plan-card dl.plan-table > .plan-line{
    display: grid !important;
    grid-template-columns: var(--dtw, 200px) 1fr !important;
    gap: 8px 14px !important;
    align-items: center !important;
  }
}

@media (orientation: portrait) and (min-width: 768px) and (max-width: 1024px){

  body.plan02 #plan .plan-item{
    grid-template-columns: 1fr !important;
    gap: clamp(14px, 4vw, 24px) !important;
  }
  body.plan02 #plan .plan-item .plan-card{ order: 1 !important; }
  body.plan02 #plan .plan-item .plan-media{ order: 2 !important; }

  #plan .plan-list > article.is-option{
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 0 !important;
  }

  #plan .plan-list > article.is-option .plan-card{ order: 1 !important; }
  #plan .plan-list > article.is-option .plan-media{ order: 2 !important; }

  #plan .plan-list > article.is-option .plan-card dl.plan-table{
    display: grid !important;
    grid-template-columns: var(--dtw, 200px) 1fr !important;
    gap: 8px 14px !important;
    margin-left: clamp(4px, 1vw, 12px) !important;
  }
  #plan .plan-list > article.is-option .plan-card dl.plan-table > .plan-line{
    display: grid !important;
    grid-template-columns: var(--dtw, 200px) 1fr !important;
    gap: 8px 14px !important;
    align-items: center !important;
  }
}

@media (orientation: portrait) and (min-width: 768px) and (max-width: 1024px){

  body.plan02 #plan .plan-item{
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-template-areas: "content" "media" !important;
    gap: clamp(14px, 4vw, 24px) !important;
  }
  body.plan02 #plan .plan-card{ grid-area: content !important; }
  body.plan02 #plan .plan-media{ grid-area: media !important; }

  #plan .plan-list > article.is-option{
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-template-areas: "content" "media" !important;
    gap: 0 !important;
  }
  #plan .plan-list > article.is-option .plan-card{ grid-area: content !important; }
  #plan .plan-list > article.is-option .plan-media{ grid-area: media !important; }

  #plan .plan-list > article.is-option .plan-card dl.plan-table{
    display: block !important;
    column-count: 2 !important;
    column-gap: 32px !important;
    margin-left: 0 !important;
  }
  #plan .plan-list > article.is-option .plan-card dl.plan-table .plan-line{
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    display: grid !important;
    grid-template-columns: var(--dtw, 190px) 1fr !important;
    gap: 8px 14px !important;
    align-items: center !important;
    margin-bottom: 10px;
  }
}

/* =========================================================
   Instagram
========================================================= */
#instagram{ padding:60px 0; background:#fff; }
#instagram .section-title h2{ margin-bottom:0; line-height:1.1; }
#instagram .section-title p{ margin:0; }
#instagram .section-title h2 + p{ margin-top:clamp(1px, .3vw, 3px); }

/* =========================================================
   FAQ
========================================================= */
#faq{ padding:60px 0; background:#f7f7f7; }
#faq .faq-body{
  padding:10px 30px; background:#fff; border-radius:0; box-shadow:none; border:1px solid #ddd;
}
#faq .accordion{
  --bs-accordion-color:#45524C;
  --bs-accordion-bg:#fff;
  --bs-accordion-border-color:#ebeef4;
  --bs-accordion-btn-color:#45524C;
  --bs-accordion-btn-bg:#fff;
  --bs-accordion-active-color:#45524C;
  --bs-accordion-active-bg:#fff;
  --bs-accordion-btn-focus-border-color:transparent;
  --bs-accordion-btn-focus-box-shadow:none;
  --bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
  --bs-accordion-btn-active-icon:var(--bs-accordion-btn-icon);
}
#faq .accordion-item{
  border:1px solid #ebeef4; background:#fff; color:var(--accent); border-radius:0;
}
#faq .accordion-item + .accordion-item{ border-top:0; }
#faq .accordion.accordion-flush .accordion-item{ border-left:0; border-right:0; border-radius:0; }
#faq .accordion.accordion-flush .accordion-item:first-child{ border-top:0; }
#faq .accordion.accordion-flush .accordion-item:last-child{ border-bottom:1px solid #ebeef4; }
#faq .accordion.accordion-flush .accordion-item:has(#faqsOne-8){ border-bottom:0; }

#faq .accordion-button{
  color:#45524C; font-size:13px; border:0; box-shadow:none; outline:none; border-radius:0;
}
#faq .accordion-button:not(.collapsed){ color:#45524C; background:#fff; }
#faq .accordion-button::after{ background-image:var(--bs-accordion-btn-icon); }
#faq .accordion-button:not(.collapsed)::after{ background-image:var(--bs-accordion-btn-active-icon); }

#faq .accordion-flush .accordion-body{
  color:#45524C; font-size:13px; line-height:25px; letter-spacing:.02em;
}
#faq .accordion-body a[href*="line.me"],
#faq .accordion-body a[data-bs-target="#legacy-mailform"]{
  color: var(--accent);
  cursor: pointer;
}
#faq .accordion-body a[href*="line.me"]:is(:hover,:focus-visible),
#faq .accordion-body a[data-bs-target="#legacy-mailform"]:is(:hover,:focus-visible){
  color: var(--accent);
  text-decoration: underline;
}

.q-bullet {
  display: inline-block;
  margin-right: .5em;
  line-height: 1;
}

/* =========================================================
   Access
========================================================= */
#access{ padding:60px 0; background:#fff; padding-bottom:clamp(24px, 4vw, 36px) !important; }
#access h3{ font-size:16px; }
#access h4{ font-size:14px; }
#access .gmap{ position:relative; height:0; padding-bottom:56.25%; margin-bottom:clamp(12px, 2vw, 16px); overflow:hidden; }
#access .gmap iframe{ position:absolute; inset:0; width:100%; height:100%; }
#access .section-title{ margin-bottom:clamp(16px, 2vw, 20px); }
#access .section-title h2{ margin-bottom:0; }
#access .section-title h2 + p{ margin-top:clamp(1px, .3vw, 3px); }
#access > *:last-child{ margin-bottom:0; }
@media (max-width:767.98px){
  .access-detail, .access-detail h4, .access-detail p, h3.mt-4.mb-4{ text-align:center; }
}

/* =========================================================
   Contact
========================================================= */
#contact{
  background:#f7f7f7;
  padding-top:clamp(24px, 4vw, 36px) !important;
}
#contact .section-title{ margin-bottom:clamp(16px, 2vw, 20px); }
#contact .section-title h2{ margin-bottom:0; }
#contact .section-title h2 + p{ margin-top:clamp(1px, .3vw, 3px); }

#contact .sns-link{
  display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:20px;
}
@media (max-width:575.98px){ #contact .sns-link{ grid-template-columns:1fr; } }
@media (min-width:768px){ #contact .sns-link{ max-width:640px; margin-inline:auto; } }

#contact .sns-link a{
  width:100%; display:flex; align-items:center; justify-content:center; gap:8px;
  min-height:46px; padding:0 16px;
  border:1px solid #45524C; background:#fff; color:#45524C;
  font-family:'Noto Serif JP', serif; font-size:13px; letter-spacing:.10em;
  transition: background .25s ease, color .25s ease, border-color .25s ease, transform .12s ease;
  border-radius:0;
}
#contact .sns-link a:is(:hover,:focus-visible){ background:#f7f7f7; border-color:#2B2B2B; color:#000; box-shadow:none; }
#contact .sns-link a:active{ transform:translateY(1px); }

#contact .sns-link a i{ font-size:16px; line-height:1; }
#contact .sns-link a[href*="line.me"] i{ color:#06C755; }
#contact .sns-link a:hover[href*="line.me"] i{ color:#06C755; }

.input-underline{
  border:0; border-bottom:1px solid var(--input-underline);
  border-radius:0; background:transparent; padding-left:0; height:36px; box-shadow:none;
}
.input-underline:focus{ outline:0; border-bottom-color:#6b6b6b; box-shadow:none; }

.has-tea-ring :is(input,textarea,select):focus{
  outline:none; border-color:var(--focus-border); box-shadow:var(--focus-ring);
}

.sent-message{
  background:#F3EAE6; border:1px solid #E0D2CC; color:#5C4A42;
  padding:15px; border-radius:6px; text-align:center;
}
.alert-success{
  background-color:#F3EAE6 !important;
  border-color:#E0D2CC !important;
  color:#5C4A42 !important;
}

.contact .section-title, .contact h2, .contact .form-title{ text-align:center; }
.contact .text-center, .contact .form-submit{ text-align:center; }
.contact button[type="submit"]{ display:inline-block; margin:0 auto; }

.btn-contact,.btn-outline-dark { letter-spacing: 0.01em; }

@media (max-width: 575.98px) {
  .btn-contact,
  .btn-outline-dark {
    white-space: nowrap;
    letter-spacing: 0;
  }
}

/* =========================================================
   Contact Modal
========================================================= */
:is(.contact-modal, #legacy-mailform){
  --bs-modal-border-radius: 0 !important;
  --bs-modal-inner-border-radius: 0 !important;
}

:is(.contact-modal, #legacy-mailform) .modal-content{
  border:0;
  border-radius:0 !important;
}

:is(.contact-modal, #legacy-mailform) .modal-header,
:is(.contact-modal, #legacy-mailform) .modal-body,
:is(.contact-modal, #legacy-mailform) .modal-footer{
  border-radius:0 !important;
}

:is(.contact-modal, #legacy-mailform) .modal-header{
  background:#E3DBCC !important;
  border:0 !important;
}

:is(.contact-modal, #legacy-mailform) .modal-title{
  font-size:15px !important;
  line-height:1.4;
  color:#2B2B2B !important;
}

:is(.contact-modal, #legacy-mailform) :is(.form-control, .form-select, textarea, .btn){
  border-radius:0 !important;
  --bs-border-radius:0 !important;
}

body.plan .btn-mail .bi-envelope{ color:#2B2B2B; }

@media (max-width: 575.98px){
  #contactModal.modal{ padding: 0 !important; }

  #contactModal .modal-dialog{
    margin: 0 !important;
    max-width: 100% !important;
    height: 100dvh !important;
  }

  #contactModal .modal-content{
    height: 100% !important;
    border-radius: 0;
    display: flex;
    flex-direction: column;
  }

  #contactModal .modal-header{
    position: sticky;
    top: max(0px, env(safe-area-inset-top));
    z-index: 10;
    background: #fff;
    padding-top: calc(12px + env(safe-area-inset-top));
  }
  #contactModal .modal-header .btn-close{
    margin-right: calc(4px + env(safe-area-inset-right));
    touch-action: manipulation;
  }

  #contactModal .modal-body{
    overflow: auto;
    -webkit-overflow-scrolling: touch;
  }

  #contactModal .modal-footer{
    margin-top: auto;
    background: #fff;
    position: sticky;
    bottom: max(0px, env(safe-area-inset-bottom));
  }
}

/* =========================================================
   Footer
========================================================= */
#footer{ font-size:13px; background:#2B2B2B; }
#footer .footer-top{ background:#E3DBCC; padding:60px 0 25px; }
#footer .footer-top img{ width:80px; }
#footer .footer-top .footer-contact h3{ font-size:12px; font-weight:600; color:var(--ttl); }
#footer .footer-top .footer-links h4{ font-size:13px; }
#footer .footer-top .footer-links ul{ list-style:none; margin:0; padding:0; }
#footer .footer-top .footer-links ul a{ color:#777; }
#footer .footer-links h4 + ul + h4{ margin-top:clamp(24px,3.5vw,40px); }
#footer .footer-copy{
  display:block; text-align:center; margin-top:clamp(20px,3.5vw,28px);
  background:transparent; color:var(--ttl); font-family:'Noto Serif JP', serif;
  font-size:8px; letter-spacing:.05em; line-height:1;
}

/* =========================================================
   Privacy
========================================================= */

.policy .privacy-box {
  font-size: 13px;
  line-height: 1.9;
}
.policy .privacy-box p {
  font-size: 15px;
  font-weight: 500;
  margin: 10px 0;
}

body.policy h1.privacy-title {
  font-size: 20px;
  margin-top: 50px;
  line-height: 1.4;
}

@media (max-width: 575.98px) {
  body.policy #main { padding-inline: 16px; }
  body.policy #main .container {
    padding-left: 0;
    padding-right: 0;
  }
}

.policy .privacy-box .contact-intro,
.policy .privacy-box address,
.policy .privacy-box address + p {
  font-size: 14px;
  line-height: 1.9;
}
.policy .privacy-box address {
  line-height: 1.75;
  margin-bottom: .5rem;
  font-style: normal;
}
.policy .privacy-box address + p { margin-top: 0; }

.policy .privacy-box a,
.policy .privacy-box a:visited,
.policy .privacy-box a:active {
  color: inherit !important;
  font-weight: inherit;
  text-decoration: none;
}
.policy .privacy-box a:hover,
.policy .privacy-box a:focus-visible {
  text-decoration: underline;
  text-decoration-color: currentColor;
}

/* tel: も同じポリシー（明示しておく） */
.policy .privacy-box address a[href^="tel"] {
  color: inherit !important;
  text-decoration: none;
}
.policy .privacy-box address a[href^="tel"]:hover,
.policy .privacy-box address a[href^="tel"]:focus-visible {
  text-decoration: underline;
}

/* =========================================================
   Plan pages (body.plan)
========================================================= */
body.plan #header{
  position: fixed; top:0; left:0; right:0; z-index:9999;
  background:#2B2B2B;
  transform:none; opacity:1; visibility:visible; display:block; box-shadow:none;
}
body.plan.has-fixed-header{ padding-top:var(--header-h,64px); }

body.plan .container, body.plan .container-fluid{ max-width:80%; margin-inline:auto; }
@media (max-width:767.98px){
  body.plan .container, body.plan .container-fluid{ max-width:100%; }
  body.plan .sub-hero .container, body.plan #main .container{ padding-inline:24px; }
  body.plan #header .container, body.plan #footer .container{ padding-inline:12px; }
}

body.plan *{ border-radius:0; }
body.plan{ background:#f7f7f7; }
body.plan .paddsection{ background:#fff; }

body.plan .sub-hero .plan-label{
  font-family:'Noto Sans JP', sans-serif; font-weight:400; font-size:14px; color:var(--accent); margin:0 0 .5em;
}
body.plan h1.h2{ font-family:'Noto Serif JP', serif; font-size:20px; color:#2B2B2B; margin:0 0 1em; }
body.plan :is(p,li,td,th,dd){ font-family:'Noto Serif JP', serif; font-size:13px; color:#2B2B2B; line-height:1.8; }

body.plan h3.h5{
  display:inline-block; font-family:'Noto Serif JP', serif; font-weight:400; font-size:16px; line-height:1.4;
  background:linear-gradient(transparent 70%, rgba(105,196,208,.5) 0); padding:0 4px;
}
body.plan h3:has(+ .table-responsive){ margin-top:2.5rem !important; }

body.plan section.paddsection.pt-0{ background:#f7f7f7; padding-top:40px; padding-bottom:40px; }
body.plan h2.h5{
  font-family:'Noto Serif JP', serif; font-weight:400; font-size:18px; line-height:1.6; color:#2B2B2B;
  margin-top:48px; margin-bottom:16px;
}

body.plan #plan-insta .container{ padding-top:8px; }
body.plan #plan-insta h2.h5{
  font-family:'Noto Serif JP', serif; font-weight:400; font-size:16px; line-height:1.6; color:#2B2B2B;
  display:inline-block; background:linear-gradient(transparent 70%, rgba(105,196,208,.5) 0);
  padding:0 6px; margin:16px 0 12px;
}
body.plan #plan-insta .insta-grid{ display:grid; gap:12px; grid-template-columns:repeat(3,1fr); }
@media (min-width:768px){ body.plan #plan-insta .insta-grid{ grid-template-columns:repeat(4,1fr); } }
@media (min-width:1200px){ body.plan #plan-insta .insta-grid{ grid-template-columns:repeat(6,1fr); } }
@media (max-width:575.98px){ body.plan #plan-insta .insta-grid{ gap:8px; } }
body.plan #plan-insta .insta-item{ position:relative; display:block; overflow:hidden; aspect-ratio:1/1; cursor:zoom-in; }
body.plan #plan-insta .insta-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease; }
@media (hover:hover){ body.plan #plan-insta .insta-item:hover img{ transform:scale(1.03); } }

body.plan .insta-lightbox{
  position:fixed; inset:0; z-index:99999; display:none; align-items:center; justify-content:center; background:rgba(0,0,0,.9);
}
body.plan .insta-lightbox.open{ display:flex; }
body.plan .insta-lightbox img{ max-width:min(92vw,1200px); max-height:86vh; transition:opacity .18s ease; }
body.plan .insta-lightbox button{
  position:absolute; display:grid; place-items:center; width:44px; height:44px;
  border-radius:9999px; border:1px solid rgba(255,255,255,.24);
  background:rgba(255,255,255,.12); color:#fff; font-size:22px; cursor:pointer;
}
body.plan .insta-lightbox .close{ top:16px; right:16px; }
body.plan .insta-lightbox .prev{ left:20px; top:50%; transform:translateY(-50%); }
body.plan .insta-lightbox .next{ right:20px; top:50%; transform:translateY(-50%); }

body.plan .plan-siblings{ display:flex; flex-wrap:wrap; gap:12px; }
body.plan .plan-siblings > a, body.plan .plan-siblings > *{ flex:1 1 100%; }
body.plan .btn-contact{
  display:flex; align-items:center; justify-content:center; gap:10px; width:100%;
  border:1px solid #45524C; background:#fff; color:#45524C; font-family:'Noto Serif JP', serif;
  font-size:13px; letter-spacing:.12em; padding:12px 14px; border-radius:0; transition: all .25s ease;
}
body.plan .btn-contact .bi{ font-size:1.1rem; line-height:1; }
body.plan .btn-contact:hover{ background:#f7f7f7; border-color:#2B2B2B; color:#000; }
body.plan .btn-line .bi-line{ color:#06C755; }
body.plan .btn-mail .bi-envelope{ color:#2B2B2B; }

body.plan .contact-actions{ gap:.5rem; }
@media (min-width:992px){ .contact-choices{ flex-wrap:nowrap; } }

body.plan #main :is(p,li,td,th,dd){ font-size:14px; }
body.plan #main small{ font-size:.8em; }
body.plan .steps, body.plan .steps dd{ font-size:13px; line-height:1.8; }
body.plan .table small.ms-1{ margin-left:0 !important; }

@media (min-width:1200px){
  body.plan #header .container{ max-width:1140px; }
}
@media (min-width:1400px){
  body.plan #header .container{ max-width:1320px; }
}

body.dress-list{
  --badge:#D9C9C6;
  --filters-pt:16px;
  color:var(--ink);
  font-family:'Noto Serif JP', serif;
}

body.dress-list #header{
  position:fixed; top:0; left:0; right:0; z-index:9999; background:#2B2B2B;
  transform:none; opacity:1; visibility:visible; pointer-events:auto; display:block; box-shadow:none;
  transition:opacity .2s ease, transform .2s ease;
}

body.dress-list .sub-hero{
  background:linear-gradient(180deg,#fff 0%,#f7f8fa 100%);
  border-bottom:1px solid rgba(0,0,0,.06);
  margin-bottom:0 !important;
}
body.dress-list .sub-hero[style]{ padding-top:calc(max(var(--header-h,72px),72px) + 40px); }
@media (max-width:991.98px){
  body.dress-list .sub-hero[style]{ padding-top:calc(max(var(--header-h,64px),64px) - 12px); }
}
body.dress-list .sub-hero .plan-label{
  font-family:"Noto Sans JP",system-ui,-apple-system,sans-serif;
  font-weight:400; font-size:14px; letter-spacing:.12em; color:var(--accent); margin:0 0 .5em;
}
body.dress-list .sub-hero h1{
  font-family:"Noto Serif JP",serif; font-weight:400; font-size:20px; line-height:1.6; color:#2B2B2B; margin:0 0 .35rem;
}
body.dress-list .sub-hero h1 + p{ color:#000; margin-top:.1rem; letter-spacing:.06em; }
body.dress-list .sub-hero .text-muted{ font-family:"Noto Serif JP",serif; font-size:13px; line-height:1.8; color:#6c757d; }
body.dress-list .sub-hero img{ border-radius:0; box-shadow:none; }
@media (min-width:992px){
  body.dress-list .sub-hero .py-5{ padding-top:0; padding-bottom:3rem; }
}

body.dress-list #filters{
  position:relative; z-index:2;
  margin:10px 0 -0px;
  background:#fff; border:0; box-shadow:none;
  margin-top:-1px !important;
  border-top:1px solid #fff;
  padding: var(--filters-pt) 0 12px;
}
body.dress-list #filters::before,
body.dress-list #filters::after{
  content:""; position:absolute; left:50%; transform:translateX(-50%);
  width:100vw; height:1px; background:#fff; pointer-events:none;
  top:0;
}
body.dress-list .filters__label{
  font-family:"Noto Sans JP",system-ui,-apple-system,sans-serif;
  color:var(--ttl); font-size:12px; letter-spacing:.08em; margin-bottom:6px;
  line-height:1.2;
}
body.dress-list #filterForm .filters__control{
  border:0; border-bottom:1px solid var(--input-underline); border-radius:0;
  background:transparent; padding-left:0; height:36px; box-shadow:none;
}
body.dress-list #filterForm .filters__control:focus{
  outline:0; border-bottom-color:#6b6b6b;
}
body.dress-list .filters__reset{
  border:1px solid #DCD7D2; background:transparent; color:#45524C; box-shadow:none;
}
body.dress-list .filters__reset:hover{ border-color:#B8B2AD; background:rgba(0,0,0,.02); }

/* Chips */
body.dress-list .filters__chips{ padding-top:.25rem; }
body.dress-list .filters__chips .chip{
  background:transparent; border:1px solid #DCD7D2; color:#45524C; padding:.28rem .5rem; border-radius:0; gap:.35rem;
}
body.dress-list .filters__chips .btn-close{ color:#6b6b6b; background-image:none; opacity:1; }

body.dress-list section.border-top.border-bottom.bg-light{
  border:0; box-shadow:none; background:#fff; padding-block:0; margin-block:10px;
}

body.dress-list{
  --dress-body-min: 92px;
  --dress-body-min-sm: 100px;
}

body.dress-list .dress-card{
  display:flex; flex-direction:column;
}

body.dress-list .dress-media{
  flex: 0 0 auto;
}

body.dress-list .dress-body{
  flex: 0 0 auto;
  min-height: var(--dress-body-min);
  display:flex; flex-direction:column; justify-content:center;
  padding:12px 14px 14px;
  background: var(--accent-soft);
}

body.dress-list .dress-title{
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2;
  overflow:hidden; text-overflow:ellipsis;
  margin-bottom:6px;
}

body.dress-list .dress-meta{
  gap:10px; flex-wrap:wrap;
  line-height:1.4;
}

@media (max-width: 575.98px){
  body.dress-list .dress-body{ min-height: var(--dress-body-min-sm); }
}

body.dress-list #dressViewer .modal-content,
body.dress-list #dressViewer .modal-header{
  border-radius: 0 !important;
}

@media (min-width:1200px){
  body.dress-list .grid-cols{
    display:grid; grid-template-columns:repeat(4,1fr); gap:18px;
  }
}
@media (min-width:768px) and (max-width:1199.98px){
  body.dress-list .grid-cols{
    display:grid; grid-template-columns:repeat(3,1fr); gap:16px;
  }
}
@media (max-width:767.98px){
  body.dress-list .grid-cols{
    display:grid; grid-template-columns:repeat(2,1fr); gap:12px;
  }
}

body.dress-list .dress-card{
  position:relative; background:var(--card); border:1px solid #eee; border-radius:0; overflow:hidden;
  transition:transform .2s ease, box-shadow .2s ease; cursor:pointer;
}
@media (hover:hover){
  body.dress-list .dress-card:hover{ transform:translateY(-2px); box-shadow:0 10px 24px rgba(0,0,0,.08); }
}
body.dress-list .dress-media{ position:relative; width:100%; aspect-ratio:2/3; height: auto; background:#ddd; overflow:hidden; }
body.dress-list .dress-media img{
  width:100%; height:100%; object-fit:cover; display:block; transition:opacity .3s ease; border-radius:0; pointer-events:none;
}
body.dress-list .dress-media img.hover{ position:absolute; inset:0; opacity:0; }
@media (hover:hover){
  body.dress-list .dress-card:hover .dress-media img.hover{ opacity:1; }
}
body.dress-list .dress-body{ padding:12px 14px 14px; background:var(--accent-soft); border:0; }
body.dress-list .dress-title{
  font-family:"Noto Serif JP",system-ui,-apple-system,sans-serif; font-size:16px; line-height:1.5; margin:0 0 4px; color:var(--ttl);
}
body.dress-list .dress-meta{ font-size:13px; color:#333; display:flex; gap:12px; flex-wrap:wrap; }
@media (max-width:575.98px){ body.dress-list .dress-meta{ gap:10px; } }
body.dress-list :is(.dress-card,.btn,.btn-close):focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }

body.dress-list.modal-open #header{ opacity:0; transform:translateY(-120%); pointer-events:none; }
.modal{ z-index:1055; }
.modal-backdrop{ z-index:1050; }
body.dress-list #dressViewer .modal-content{ background:#FDFDFA; border:0; border-radius:0; }
body.dress-list #dressViewer .modal-header{ background:var(--accent-soft); color:#2B2B2B; border:0; }
body.dress-list #dressViewer .modal-title{ color:var(--ttl); }
body.dress-list #dressViewer .btn-close{
  --btn-close-size:1.25rem; width:var(--btn-close-size); height:var(--btn-close-size); background-size:var(--btn-close-size);
  color:#000; filter:none; opacity:1;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 16 16'%3E%3Cpath fill='%23000000' d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 1 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
}
body.dress-list #dressViewer .btn-close:hover{ transform:scale(1.06); }
body.dress-list #dressViewer .btn-close:focus{ outline:none; box-shadow:0 0 0 .22rem rgba(163,132,118,.40); }
body.dress-list #dvMeta,
body.dress-list #dressViewer .dress-meta,
body.dress-list #dressViewer .modal-body .dress-meta span,
body.dress-list #dressViewer .text-muted{ color:#333; }
body.dress-list #dressViewer .modal-body{
  display:flex; align-items:center; justify-content:center; padding:var(--bs-modal-padding,1rem);
}
body.dress-list #dressViewer .modal-body img{
  width:auto; height:auto; max-width:100%; max-height:min(78vh, calc(100vh - 160px)); object-fit:contain;
}