@charset "UTF-8";

/* =========================================================
   Luna Base LP  style.css
   Water-themed / Sky-blue base + Orange accent
   ========================================================= */

:root{
  --blue-900:#0d4f79;
  --blue-800:#0f5f8f;
  --blue-700:#1789c9;
  --blue-600:#1e96d4;
  --blue-500:#29a6dc;
  --blue-400:#57bde6;
  --blue-300:#8fd4ef;
  --blue-200:#bfe6f5;
  --blue-100:#e3f4fb;
  --blue-050:#f2fafd;

  --orange:#ff8a1e;
  --orange-dark:#f2760a;
  --orange-light:#ffd9b0;

  --line:#06c755;
  --line-dark:#05a748;

  --ink:#123a56;
  --ink-soft:#43647d;
  --white:#ffffff;

  --radius:16px;
  --radius-lg:24px;
  --radius-xl:32px;
  --shadow:0 12px 34px rgba(23,137,201,.15);
  --shadow-sm:0 6px 18px rgba(23,137,201,.12);
  --shadow-lg:0 24px 60px rgba(15,95,143,.22);
  --wrap:1120px;

  --font:'Noto Sans JP',system-ui,-apple-system,'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;
  --font-round:'M PLUS Rounded 1c','Noto Sans JP',sans-serif;

  --header-h:76px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:var(--header-h);-webkit-text-size-adjust:100%;}
body{
  margin:0;font-family:var(--font);color:var(--ink);
  background:var(--blue-050);line-height:1.85;font-size:16px;
  letter-spacing:.02em;overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;margin:0;padding:0;}
h1,h2,h3,p,dl,dd,figure{margin:0;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}

.hl{color:var(--orange);}
.ico{width:1em;height:1em;fill:currentColor;flex:none;}
.only-sp{display:none;}
.only-pc{display:inline;}

/* Accessibility */
:focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:6px;}
.skip-link{
  position:fixed;top:-100px;left:50%;transform:translateX(-50%);z-index:3000;
  background:var(--orange);color:#fff;padding:10px 22px;border-radius:0 0 12px 12px;
  font-weight:700;transition:top .25s;
}
.skip-link:focus{top:0;}

.container{width:min(100% - 40px,var(--wrap));margin-inline:auto;}
.container--narrow{width:min(100% - 40px,820px);}

.section{padding:clamp(58px,8vw,104px) 0;position:relative;}
.section--tint{background:linear-gradient(180deg,var(--blue-100),var(--blue-050));}

/* ---------- Section head ---------- */
.section__head{text-align:center;margin-bottom:clamp(34px,5vw,58px);}
.section__en{
  font-family:var(--font-round);color:var(--blue-400);font-weight:700;
  letter-spacing:.2em;font-size:.85rem;margin-bottom:.5em;
}
.section__title{
  font-family:var(--font-round);font-weight:800;
  font-size:clamp(1.7rem,4.6vw,2.7rem);color:var(--ink);
  line-height:1.35;position:relative;display:inline-block;
}
.section__title-note{
  display:inline-block;font-size:.46em;color:var(--blue-500);
  margin-left:.6em;letter-spacing:.1em;vertical-align:middle;
}
.section__title::after{
  content:"";display:block;width:60px;height:5px;border-radius:5px;
  margin:16px auto 0;background:linear-gradient(90deg,var(--blue-500),var(--orange));
}
.section__desc{margin-top:1.2em;color:var(--ink-soft);font-size:1rem;}
.section__head--light .section__en{color:rgba(255,255,255,.85);}
.section__head--light .section__title{color:var(--white);}
.section__head--light .section__desc{color:rgba(255,255,255,.94);}
.section__head--light .section__title::after{background:linear-gradient(90deg,#fff,var(--orange));}

/* ---------- Wave dividers ---------- */
.wave-divider{position:absolute;left:0;right:0;bottom:-1px;line-height:0;pointer-events:none;}
.wave-divider svg{width:100%;height:clamp(50px,7vw,110px);display:block;}
.wave-divider path{fill:var(--blue-050);}
.wave-divider--flip{top:-1px;bottom:auto;transform:rotate(180deg);}
.wave-top{position:absolute;top:-1px;left:0;right:0;line-height:0;pointer-events:none;z-index:1;}
.wave-top svg{width:100%;height:clamp(38px,5vw,68px);}
.wave-top path{fill:var(--blue-050);}
.section--tint .wave-top path{fill:#fff;}

/* =========================================================
   Loader
   ========================================================= */
.loader{
  position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,var(--blue-500),var(--blue-800));
  transition:opacity .6s ease,visibility .6s ease;
}
.loader.is-hidden{opacity:0;visibility:hidden;}
.loader__inner{text-align:center;color:#fff;position:relative;}
.loader__ripple{position:absolute;top:12px;left:50%;transform:translateX(-50%);width:120px;height:120px;}
.loader__ripple span{
  position:absolute;inset:0;border:2px solid rgba(255,255,255,.5);border-radius:50%;
  animation:ripple 2.2s ease-out infinite;
}
.loader__ripple span:nth-child(2){animation-delay:.6s;}
.loader__ripple span:nth-child(3){animation-delay:1.2s;}
@keyframes ripple{0%{transform:scale(.5);opacity:.8;}100%{transform:scale(1.6);opacity:0;}}
.loader__logo-area{
  position:relative;width:118px;height:118px;margin:0 auto 20px;border-radius:50%;overflow:hidden;
  background:#fff;box-shadow:0 12px 34px rgba(0,0,0,.24);animation:floaty 2.6s ease-in-out infinite;
}
.loader__logo{width:100%;height:100%;object-fit:cover;}
.loader__text{font-family:var(--font-round);font-weight:800;font-size:1.7rem;letter-spacing:.14em;}
.loader__sub{font-size:.8rem;opacity:.85;letter-spacing:.08em;margin-top:.2em;}
@keyframes floaty{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}

/* =========================================================
   Header
   ========================================================= */
.header{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  background:rgba(255,255,255,.82);backdrop-filter:saturate(1.4) blur(12px);
  box-shadow:0 2px 16px rgba(23,137,201,.08);transition:box-shadow .3s,background .3s;
}
.header.is-scrolled{background:rgba(255,255,255,.96);box-shadow:0 4px 22px rgba(23,137,201,.16);}
.header__inner{
  width:min(100% - 32px,1300px);margin-inline:auto;
  display:flex;align-items:center;gap:16px;height:var(--header-h);
}
.logo{display:flex;align-items:center;gap:12px;margin-right:auto;}
.logo__area{
  width:52px;height:52px;border-radius:50%;overflow:hidden;flex:none;
  box-shadow:0 4px 12px rgba(23,137,201,.28);border:2px solid #fff;
}
.logo__img{width:100%;height:100%;object-fit:cover;}
.logo__name{font-family:var(--font-round);font-weight:800;font-size:1.35rem;color:var(--blue-700);line-height:1.1;display:block;}
.logo__sub{font-size:.68rem;color:var(--ink-soft);letter-spacing:.03em;}

.gnav__list{display:flex;align-items:center;gap:2px;}
.gnav__link{
  display:block;padding:9px 11px;font-weight:700;font-size:.9rem;color:var(--ink);
  border-radius:10px;transition:color .2s,background .2s;position:relative;
}
.gnav__link:hover{color:var(--blue-700);background:var(--blue-100);}
.gnav__link.is-active{color:var(--blue-700);}
.gnav__link.is-active::after{
  content:"";position:absolute;left:11px;right:11px;bottom:2px;height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--blue-500),var(--orange));
}
.gnav__link--btn{
  color:#fff;background:linear-gradient(135deg,var(--orange),var(--orange-dark));
  box-shadow:0 6px 14px rgba(242,118,10,.32);margin-left:8px;
}
.gnav__link--btn:hover{color:#fff;filter:brightness(1.06);background:linear-gradient(135deg,var(--orange),var(--orange-dark));}
.gnav__link--btn.is-active::after{display:none;}

.header__tel{display:flex;align-items:center;gap:9px;color:var(--blue-700);}
.header__tel-ico{
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--blue-100);
}
.header__tel-ico .ico{width:20px;height:20px;}
.header__tel-lbl{display:block;font-size:.62rem;color:var(--ink-soft);letter-spacing:.01em;}
.header__tel-num{display:block;font-family:var(--font-round);font-weight:800;font-size:1.32rem;line-height:1;color:var(--blue-700);}

.hamburger{display:none;width:46px;height:46px;position:relative;flex:none;z-index:1100;}
.hamburger span{position:absolute;left:11px;right:11px;height:3px;border-radius:3px;background:var(--blue-700);transition:transform .3s,opacity .3s,top .3s;}
.hamburger span:nth-child(1){top:15px;}
.hamburger span:nth-child(2){top:22px;}
.hamburger span:nth-child(3){top:29px;}
.hamburger.is-open span:nth-child(1){top:22px;transform:rotate(45deg);}
.hamburger.is-open span:nth-child(2){opacity:0;}
.hamburger.is-open span:nth-child(3){top:22px;transform:rotate(-45deg);}

/* =========================================================
   Buttons
   ========================================================= */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  padding:16px 28px;border-radius:999px;font-weight:800;font-size:1.05rem;line-height:1.2;
  color:#fff;transition:transform .2s,box-shadow .2s,filter .2s;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;
}
.btn::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .6s;}
.btn:hover::after{left:120%;}
.btn .ico{width:1.4em;height:1.4em;}
.btn__txt{display:flex;flex-direction:column;align-items:flex-start;font-family:var(--font-round);}
.btn__txt small{font-weight:700;font-size:.66rem;opacity:.92;letter-spacing:.02em;}
.btn--lg{padding:19px 34px;font-size:1.35rem;}
.btn--tel{background:linear-gradient(135deg,var(--orange),var(--orange-dark));box-shadow:0 12px 26px rgba(242,118,10,.36);}
.btn--line{background:linear-gradient(135deg,#2ad06a,var(--line-dark));box-shadow:0 12px 26px rgba(5,167,72,.3);}
.btn:hover{transform:translateY(-3px);filter:brightness(1.05);}
.btn--block{width:100%;}

/* =========================================================
   Hero
   ========================================================= */
.hero{
  position:relative;padding:calc(var(--header-h) + clamp(44px,7vw,84px)) 0 clamp(96px,13vw,160px);
  background:
    radial-gradient(120% 90% at 82% 0%,rgba(255,255,255,.5),transparent 58%),
    radial-gradient(90% 70% at 10% 100%,rgba(15,95,143,.35),transparent 60%),
    linear-gradient(155deg,var(--blue-400) 0%,var(--blue-500) 42%,var(--blue-700) 100%);
  overflow:hidden;color:#fff;
}
.hero__inner{width:min(100% - 40px,var(--wrap));margin-inline:auto;position:relative;z-index:2;}
.hero__copy{max-width:760px;}
.hero__badge{
  display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.2);
  border:1px solid rgba(255,255,255,.5);padding:8px 20px;border-radius:999px;
  font-weight:700;font-size:.88rem;backdrop-filter:blur(4px);margin-bottom:22px;
}
.hero__badge-star{width:14px;height:14px;flex:none;background:#ffdca8;
  clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);}
.hero__title{
  font-family:var(--font-round);font-weight:800;
  font-size:clamp(2.1rem,7vw,4rem);line-height:1.26;
  text-shadow:0 4px 18px rgba(9,63,97,.28);margin-bottom:22px;
}
.hero__title-sub{display:block;font-size:.4em;letter-spacing:.06em;margin-bottom:.7em;opacity:.96;font-weight:700;}
.hero__title .hl{color:#ffdca8;}
.hero__lead{font-size:clamp(.96rem,2.4vw,1.14rem);line-height:1.95;text-shadow:0 2px 10px rgba(9,63,97,.25);}
.hero__lead strong{font-weight:800;color:#fff;}
.hero__cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:32px;}
.hero__note{margin-top:20px;font-size:.86rem;opacity:.95;}
.hero__note strong{color:#ffdca8;font-weight:800;}

/* bubbles */
.hero__bubbles,.contact__bubbles{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;}
.hero__bubbles span,.contact__bubbles span{
  position:absolute;bottom:-40px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.6),rgba(255,255,255,.08));
  animation:rise linear infinite;
}
.hero__bubbles span:nth-child(1){left:4%;width:150px;height:150px;animation-duration:15s;}
.hero__bubbles span:nth-child(2){left:18%;width:90px;height:90px;animation-duration:11s;animation-delay:1.5s;}
.hero__bubbles span:nth-child(3){left:34%;width:230px;height:230px;animation-duration:19s;animation-delay:.6s;}
.hero__bubbles span:nth-child(4){left:52%;width:120px;height:120px;animation-duration:13s;animation-delay:3s;}
.hero__bubbles span:nth-child(5){left:66%;width:190px;height:190px;animation-duration:17s;animation-delay:2s;}
.hero__bubbles span:nth-child(6){left:80%;width:80px;height:80px;animation-duration:10s;}
.hero__bubbles span:nth-child(7){left:86%;width:160px;height:160px;animation-duration:18s;animation-delay:1s;}
.hero__bubbles span:nth-child(8){left:46%;width:70px;height:70px;animation-duration:12s;animation-delay:4s;}
@keyframes rise{0%{transform:translateY(0) scale(.7);opacity:0;}15%{opacity:.85;}100%{transform:translateY(-92vh) scale(1.1);opacity:0;}}

/* =========================================================
   Stats bar
   ========================================================= */
.stats{margin-top:calc(clamp(96px,13vw,160px) * -0.55);position:relative;z-index:5;}
.stats__list{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  overflow:hidden;border:1px solid var(--blue-100);
}
.stats__item{text-align:center;padding:28px 14px;position:relative;}
.stats__item::after{content:"";position:absolute;top:24%;right:0;height:52%;width:1px;background:var(--blue-100);}
.stats__item:last-child::after{display:none;}
.stats__num{font-family:var(--font-round);font-weight:800;color:var(--orange);line-height:1;display:flex;align-items:baseline;justify-content:center;gap:2px;}
.stats__num .js-count{font-size:clamp(2.4rem,6vw,3.2rem);}
.stats__unit{font-size:1.1rem;font-weight:800;color:var(--orange-dark);}
.stats__label{font-size:.82rem;color:var(--ink-soft);font-weight:700;margin-top:.5em;}

/* =========================================================
   Trouble
   ========================================================= */
.trouble__list{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.trouble__item{
  display:flex;align-items:center;gap:16px;background:#fff;border-radius:var(--radius);
  padding:20px 22px;box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);
  border-left:5px solid var(--blue-300);transition:transform .3s,box-shadow .3s,border-color .3s;
}
.trouble__item:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-left-color:var(--orange);}
.trouble__ico{width:52px;height:52px;flex:none;border-radius:14px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--blue-100),var(--blue-200));}
.trouble__ico svg{width:30px;height:30px;stroke:var(--blue-700);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;fill:none;}
.trouble__item p{font-size:.98rem;line-height:1.6;font-weight:500;}
.trouble__item strong{color:var(--orange-dark);font-weight:800;}
.trouble__cta{text-align:center;margin-top:40px;}
.trouble__cta-txt{font-family:var(--font-round);font-weight:800;font-size:clamp(1.2rem,3.4vw,1.7rem);color:var(--blue-700);}
.trouble__cta-txt strong{color:var(--orange);}
.trouble__arrow{width:40px;height:24px;fill:var(--orange);margin-top:8px;animation:nudge 1.6s ease-in-out infinite;}
@keyframes nudge{0%,100%{transform:translateY(0);}50%{transform:translateY(7px);}}

/* =========================================================
   Reason
   ========================================================= */
.reason__list{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.reason__item{
  position:relative;background:#fff;border-radius:var(--radius-lg);padding:44px 22px 30px;text-align:center;
  box-shadow:var(--shadow);border:1px solid var(--blue-100);transition:transform .3s,box-shadow .3s;overflow:hidden;
}
.reason__item:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);}
.reason__no{
  position:absolute;top:10px;left:18px;font-family:var(--font-round);font-weight:800;
  font-size:2.6rem;color:var(--blue-100);line-height:1;letter-spacing:.02em;
}
.reason__icon{
  position:relative;width:88px;height:88px;margin:0 auto 18px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--blue-100),var(--blue-200));
}
.reason__icon svg{width:48px;height:48px;}
.reason__icon svg [fill="none"]{stroke:var(--blue-700);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
.reason__icon svg .chk{stroke:var(--orange);stroke-width:3;}
.reason__icon svg .fill{fill:var(--orange);stroke:none;}
.reason__item h3{font-family:var(--font-round);font-weight:800;font-size:1.2rem;color:var(--blue-700);margin-bottom:.6em;position:relative;}
.reason__item p{font-size:.9rem;color:var(--ink-soft);line-height:1.8;text-align:left;}

/* =========================================================
   Service
   ========================================================= */
.service__list{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.service__item{
  background:#fff;border-radius:var(--radius);padding:0;overflow:hidden;
  box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);border-top:5px solid var(--blue-400);
  transition:transform .3s,box-shadow .3s,border-color .3s;
}
.service__item:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-top-color:var(--orange);}
.service__thumb{position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--blue-100);}
.service__thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease;}
.service__item:hover .service__thumb img{transform:scale(1.06);}
.service__thumb::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,43,64,.12),transparent 45%);pointer-events:none;}
.service__body{padding:22px 26px 28px;}
.service__item h3{font-family:var(--font-round);font-weight:800;font-size:1.25rem;color:var(--blue-700);margin-bottom:.5em;}
.service__item p{font-size:.92rem;color:var(--ink-soft);line-height:1.8;}

.service__area{margin-top:36px;background:linear-gradient(135deg,var(--blue-700),var(--blue-500));color:#fff;border-radius:var(--radius-lg);padding:clamp(28px,4vw,44px);box-shadow:var(--shadow);position:relative;overflow:hidden;}
.service__area::before{content:"";position:absolute;top:-60px;right:-40px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 70%);}
.service__area-body{position:relative;}
.service__area-ttl{display:flex;align-items:center;gap:10px;justify-content:center;font-family:var(--font-round);font-weight:800;font-size:1.4rem;margin-bottom:.5em;}
.service__area-ttl .ico{width:28px;height:28px;fill:none;stroke:#ffdca8;}
.service__area-txt{text-align:center;line-height:1.9;font-size:1rem;}
.service__area-txt strong{color:#ffdca8;font-weight:800;}
.service__area-tags{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:20px;}
.service__area-tags li{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:6px 18px;font-weight:700;font-size:.85rem;}

/* =========================================================
   Price
   ========================================================= */
.price__list{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
.price__card{
  background:#fff;border-radius:var(--radius-lg);padding:30px 20px;text-align:center;
  box-shadow:var(--shadow);border:2px solid var(--blue-100);position:relative;
  transition:transform .3s,border-color .3s;
}
.price__card:hover{transform:translateY(-5px);border-color:var(--blue-400);}
.price__name{display:inline-block;font-weight:700;font-size:.95rem;color:var(--blue-700);background:var(--blue-100);border-radius:999px;padding:5px 18px;margin-bottom:16px;}
.price__amount{font-family:var(--font-round);line-height:1.05;color:var(--orange);margin-bottom:14px;min-height:2.6rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;}
.price__num{font-weight:800;font-size:2.6rem;}
.price__unit{font-weight:800;font-size:1.1rem;margin-left:2px;}
.price__num-sm{font-weight:800;font-size:1.25rem;color:var(--blue-700);line-height:1.35;}
.price__note{font-size:.82rem;color:var(--ink-soft);}
.price__card--free{border-color:var(--orange-light);background:linear-gradient(180deg,#fff,#fff7ef);}
.price__free{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px;}
.price__free li{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--blue-100);border-radius:999px;padding:9px 20px;font-weight:700;color:var(--blue-700);box-shadow:var(--shadow-sm);}
.price__free svg{width:20px;height:20px;stroke:var(--line);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;fill:none;flex:none;}
.price__free strong{color:var(--orange-dark);font-weight:800;}
.price__caption{margin-top:26px;font-size:.82rem;color:var(--ink-soft);text-align:center;line-height:1.8;}

/* =========================================================
   Works  (Before / After)
   ========================================================= */
.works__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;}
.ba{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--blue-100);transition:transform .3s,box-shadow .3s;}
.ba:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
.ba__stage{position:relative;aspect-ratio:4/3;overflow:hidden;user-select:none;touch-action:pan-y;background:#0a2b40;}
.ba__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.ba__before-wrap{position:absolute;inset:0;width:100%;overflow:hidden;clip-path:inset(0 50% 0 0);will-change:clip-path;}
.ba__before-wrap .ba__before{position:absolute;inset:0;width:100%;height:100%;}
.ba__tag{position:absolute;top:12px;z-index:4;font-family:var(--font-round);font-weight:800;font-size:.72rem;letter-spacing:.08em;color:#fff;padding:4px 12px;border-radius:999px;}
.ba__tag--before{left:12px;background:rgba(18,58,86,.85);}
.ba__tag--after{right:12px;background:var(--orange);}
.ba__handle{position:absolute;top:0;bottom:0;left:50%;width:3px;margin-left:-1.5px;background:#fff;z-index:5;pointer-events:none;box-shadow:0 0 0 1px rgba(23,137,201,.4);}
.ba__handle::before{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%);border-radius:50%;border:3px solid #fff;background:var(--blue-500);box-shadow:0 4px 12px rgba(0,0,0,.3);}
.ba__handle::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%);border-radius:50%;background-image:linear-gradient(#fff,#fff),linear-gradient(#fff,#fff);background-size:12px 2.5px,2.5px 12px;background-position:center;background-repeat:no-repeat;z-index:1;}
.ba__range{position:absolute;inset:0;width:100%;height:100%;z-index:6;margin:0;opacity:0;cursor:ew-resize;}
.ba__cap{padding:16px 18px;font-family:var(--font-round);font-weight:800;color:var(--blue-700);font-size:1.05rem;text-align:center;}
.works__scene{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:28px;}
.works__scene figure{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);}
.works__scene img{aspect-ratio:16/10;object-fit:cover;width:100%;}
.works__scene figcaption{padding:12px;text-align:center;font-weight:700;color:var(--blue-700);font-size:.92rem;}

/* =========================================================
   Flow
   ========================================================= */
.flow__list{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;counter-reset:flow;}
.flow__item{position:relative;background:#fff;border-radius:var(--radius);padding:30px 18px 24px;text-align:center;box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);}
.flow__item::after{content:"";position:absolute;top:50%;right:-13px;width:26px;height:26px;background:var(--orange);clip-path:polygon(0 20%,55% 20%,55% 0,100% 50%,55% 100%,55% 80%,0 80%);z-index:2;}
.flow__item:last-child::after{display:none;}
.flow__step{display:inline-block;font-family:var(--font-round);font-weight:700;font-size:.7rem;letter-spacing:.1em;color:var(--blue-400);margin-bottom:10px;}
.flow__step b{display:block;font-size:1.5rem;color:var(--orange);letter-spacing:0;}
.flow__ico{width:66px;height:66px;margin:0 auto 14px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--blue-100),var(--blue-200));}
.flow__ico svg{width:36px;height:36px;stroke:var(--blue-700);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;fill:none;}
.flow__item h3{font-family:var(--font-round);font-weight:800;font-size:1.02rem;color:var(--blue-700);margin-bottom:.5em;}
.flow__item p{font-size:.8rem;color:var(--ink-soft);line-height:1.7;text-align:left;}

/* =========================================================
   Philosophy
   ========================================================= */
.philosophy__box{background:#fff;border-radius:var(--radius-lg);padding:clamp(30px,5vw,56px);text-align:center;box-shadow:var(--shadow);border:1px solid var(--blue-100);max-width:900px;margin-inline:auto;position:relative;overflow:hidden;}
.philosophy__box::before{content:"";position:absolute;top:-40px;right:-40px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(255,138,30,.12),transparent 70%);}
.philosophy__box::after{content:"";position:absolute;bottom:-50px;left:-50px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(41,166,220,.12),transparent 70%);}
.philosophy__catch{font-family:var(--font-round);font-weight:800;font-size:clamp(1.4rem,3.8vw,2.1rem);color:var(--blue-700);margin-bottom:.9em;line-height:1.5;position:relative;}
.philosophy__text{color:var(--ink-soft);font-size:1rem;line-height:2;position:relative;}

/* =========================================================
   Message
   ========================================================= */
.message__box{display:grid;grid-template-columns:220px 1fr;gap:36px;align-items:center;background:#fff;border-radius:var(--radius-lg);padding:clamp(30px,5vw,52px);box-shadow:var(--shadow);border:1px solid var(--blue-100);max-width:960px;margin-inline:auto;}
.message__side{text-align:center;}
.message__avatar{display:block;width:180px;aspect-ratio:6/5;margin:0 auto 12px;border-radius:22px;overflow:hidden;background:#fff;box-shadow:0 10px 24px rgba(23,137,201,.28);border:4px solid var(--blue-100);}
.message__avatar img{width:100%;height:100%;object-fit:cover;object-position:center top;}
.message__role{font-size:.8rem;color:var(--ink-soft);}
.message__name{font-family:var(--font-round);font-weight:800;font-size:1.4rem;color:var(--blue-700);}
.message__body{position:relative;}
.message__mark{position:absolute;top:-12px;left:-6px;opacity:.12;}
.message__mark svg{width:56px;height:56px;fill:var(--blue-500);}
.message__text{color:var(--ink-soft);font-size:1rem;line-height:2;position:relative;}
.message__text strong{color:var(--orange);font-weight:800;}

/* =========================================================
   FAQ
   ========================================================= */
.faq__list{display:flex;flex-direction:column;gap:14px;}
.faq__item{background:#fff;border-radius:14px;box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);overflow:hidden;transition:box-shadow .3s;}
.faq__item:hover{box-shadow:var(--shadow);}
.faq__q{width:100%;display:flex;align-items:center;gap:14px;text-align:left;padding:20px 22px;font-weight:700;font-size:1.02rem;color:var(--ink);}
.faq__q-txt{flex:1;}
.faq__mark{flex:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));color:#fff;font-family:var(--font-round);font-weight:800;font-size:1.05rem;}
.faq__arrow{width:22px;height:22px;flex:none;stroke:var(--blue-500);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;fill:none;transition:transform .3s;}
.faq__q[aria-expanded="true"] .faq__arrow{transform:rotate(180deg);}
.faq__a{max-height:0;overflow:hidden;transition:max-height .35s ease;}
.faq__a p{padding:0 22px 20px 68px;color:var(--ink-soft);font-size:.94rem;}

/* =========================================================
   Contact
   ========================================================= */
.contact{position:relative;background:linear-gradient(150deg,var(--blue-500),var(--blue-800));color:#fff;overflow:hidden;padding-block:clamp(84px,12vw,140px);}
.contact .container{position:relative;z-index:2;}
.contact__bubbles span:nth-child(1){left:10%;width:30px;height:30px;animation-duration:15s;}
.contact__bubbles span:nth-child(2){left:34%;width:16px;height:16px;animation-duration:10s;animation-delay:2s;}
.contact__bubbles span:nth-child(3){left:60%;width:40px;height:40px;animation-duration:18s;animation-delay:1s;}
.contact__bubbles span:nth-child(4){left:82%;width:20px;height:20px;animation-duration:12s;animation-delay:3s;}
.contact__bubbles span:nth-child(5){left:47%;width:12px;height:12px;animation-duration:9s;animation-delay:4s;}
.contact__cards{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;max-width:840px;margin-inline:auto;}
.contact__card{background:#fff;border-radius:var(--radius-lg);padding:38px 26px 30px;text-align:center;color:var(--ink);box-shadow:0 20px 48px rgba(9,63,97,.3);position:relative;}
.contact__badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--orange);color:#fff;font-weight:800;font-size:.78rem;padding:5px 18px;border-radius:999px;white-space:nowrap;box-shadow:0 6px 14px rgba(242,118,10,.3);}
.contact__card--line .contact__badge{background:var(--line);box-shadow:0 6px 14px rgba(5,167,72,.3);}
.contact__ico{width:66px;height:66px;margin:8px auto 14px;border-radius:50%;display:flex;align-items:center;justify-content:center;}
.contact__card--tel .contact__ico{background:linear-gradient(135deg,var(--orange-light),#ffe9d0);}
.contact__card--tel .contact__ico svg{fill:var(--orange-dark);}
.contact__card--line .contact__ico{background:#e4f8ec;}
.contact__card--line .contact__ico svg{fill:var(--line-dark);}
.contact__ico svg{width:34px;height:34px;}
.contact__ttl{font-family:var(--font-round);font-weight:800;font-size:1.15rem;color:var(--blue-700);margin-bottom:.4em;}
.contact__tel{display:block;font-family:var(--font-round);font-weight:800;font-size:clamp(1.9rem,6vw,2.5rem);color:var(--orange-dark);line-height:1.1;}
.contact__hours{font-size:.82rem;color:var(--ink-soft);margin-top:.5em;}
.contact__card--line .btn{margin-top:6px;}

/* =========================================================
   Company
   ========================================================= */
.company__table{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--blue-100);}
.company__row{display:grid;grid-template-columns:180px 1fr;border-bottom:1px solid var(--blue-100);}
.company__row:last-child{border-bottom:none;}
.company__row dt{background:var(--blue-100);padding:18px 22px;font-weight:700;color:var(--blue-700);}
.company__row dd{padding:18px 22px;color:var(--ink);}
.company__row dd a{color:var(--orange-dark);font-weight:700;}

/* =========================================================
   Footer
   ========================================================= */
.footer{background:linear-gradient(160deg,var(--blue-700),var(--blue-900));color:#fff;padding:60px 0 26px;}
.footer__inner{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px;align-items:start;}
.footer__brand{display:flex;align-items:flex-start;gap:14px;}
.footer__logo-area{width:60px;height:60px;border-radius:50%;overflow:hidden;flex:none;background:#fff;border:2px solid rgba(255,255,255,.6);box-shadow:0 6px 16px rgba(0,0,0,.25);}
.footer__logo{width:100%;height:100%;object-fit:cover;}
.footer__name{font-family:var(--font-round);font-weight:800;font-size:1.5rem;line-height:1.2;}
.footer__cat{font-size:.8rem;opacity:.85;margin-bottom:.6em;}
.footer__desc{font-size:.8rem;opacity:.8;line-height:1.8;max-width:340px;}
.footer__nav{display:flex;flex-direction:column;gap:10px;}
.footer__nav a{font-size:.9rem;opacity:.9;transition:opacity .2s,color .2s;display:inline-block;}
.footer__nav a:hover{opacity:1;color:#ffdca8;}
.footer__info-ttl{font-family:var(--font-round);font-weight:800;font-size:.95rem;opacity:.9;margin-bottom:.3em;}
.footer__tel{display:block;font-family:var(--font-round);font-weight:800;font-size:1.7rem;color:#ffdca8;line-height:1.2;}
.footer__info p{font-size:.85rem;opacity:.9;line-height:1.8;}
.footer__addr{margin-top:.6em;}
.footer__copy{text-align:center;margin-top:44px;font-size:.78rem;opacity:.7;letter-spacing:.04em;}

/* =========================================================
   Fixed CTA + pagetop
   ========================================================= */
.fixed-cta{position:fixed;left:0;right:0;bottom:0;z-index:900;display:none;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.3);box-shadow:0 -6px 20px rgba(9,63,97,.24);transform:translateY(110%);transition:transform .35s ease;}
.fixed-cta.is-show{transform:translateY(0);}
.fixed-cta__btn{display:flex;align-items:center;justify-content:center;gap:9px;padding:12px 6px;font-weight:800;font-size:1.02rem;color:#fff;}
.fixed-cta__btn span{display:flex;flex-direction:column;line-height:1.2;}
.fixed-cta__btn small{font-size:.6rem;font-weight:700;opacity:.9;}
.fixed-cta__btn .ico{width:22px;height:22px;}
.fixed-cta__btn--tel{background:linear-gradient(135deg,var(--orange),var(--orange-dark));}
.fixed-cta__btn--line{background:linear-gradient(135deg,#2ad06a,var(--line-dark));}

.pagetop{position:fixed;right:18px;bottom:22px;z-index:850;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.96);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .3s,visibility .3s,transform .3s;}
.pagetop.is-show{opacity:1;visibility:visible;transform:translateY(0);}
.pagetop svg{width:24px;height:24px;stroke:var(--blue-700);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;fill:none;}

/* =========================================================
   Reveal
   ========================================================= */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease;}
.reveal.is-visible{opacity:1;transform:none;}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width:1080px){
  .reason__list{grid-template-columns:repeat(2,1fr);}
  .price__list{grid-template-columns:repeat(2,1fr);}
  .flow__list{grid-template-columns:repeat(3,1fr);gap:26px 18px;}
  .flow__item::after{display:none;}
}
@media (max-width:960px){
  .header__tel{display:none;}
  .hamburger{display:block;}
  .gnav{position:fixed;top:var(--header-h);right:0;width:min(82%,340px);height:calc(100vh - var(--header-h));background:#fff;box-shadow:-6px 0 24px rgba(9,63,97,.18);transform:translateX(100%);transition:transform .35s ease;overflow-y:auto;padding:16px;}
  .gnav.is-open{transform:translateX(0);}
  .gnav__list{flex-direction:column;align-items:stretch;gap:4px;}
  .gnav__link{padding:15px 16px;border-radius:12px;border-bottom:1px solid var(--blue-100);}
  .gnav__link.is-active::after{display:none;}
  .gnav__link.is-active{background:var(--blue-100);}
  .gnav__link--btn{text-align:center;margin-top:10px;border-bottom:none;}
  .service__list{grid-template-columns:repeat(2,1fr);}
  .trouble__list{grid-template-columns:repeat(2,1fr);}
  .message__box{grid-template-columns:1fr;gap:22px;text-align:center;}
  .message__mark{display:none;}
  .message__text{text-align:left;}
}
@media (max-width:768px){
  :root{--header-h:64px;}
  .only-sp{display:inline;}
  .only-pc{display:none;}
  .logo__sub{display:none;}
  .logo__name{font-size:1.2rem;}
  .stats{margin-top:-40px;}
  .stats__list{grid-template-columns:repeat(2,1fr);}
  .stats__item:nth-child(2)::after{display:none;}
  .stats__item:nth-child(1),.stats__item:nth-child(2){border-bottom:1px solid var(--blue-100);}
  .works__grid{grid-template-columns:1fr;}
  .fixed-cta{display:grid;}
  body{padding-bottom:60px;}
  .pagetop{bottom:74px;}
  .hero__cta .btn{width:100%;}
  .footer__inner{grid-template-columns:1fr;gap:28px;}
}
@media (max-width:560px){
  .reason__list{grid-template-columns:1fr;}
  .service__list{grid-template-columns:1fr;}
  .price__list{grid-template-columns:1fr;}
  .trouble__list{grid-template-columns:1fr;}
  .flow__list{grid-template-columns:1fr;}
  .works__scene{grid-template-columns:1fr;}
  .contact__cards{grid-template-columns:1fr;gap:34px;}
  .company__row{grid-template-columns:1fr;}
  .company__row dt{padding-bottom:6px;}
  .company__row dd{padding-top:6px;}
  .btn__txt{align-items:center;}
  .btn--lg{font-size:1.2rem;}
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;}
  html{scroll-behavior:auto;}
  .reveal{opacity:1;transform:none;}
}
