/* ========================================
   SMART TOTAL SERVICE — Premium Dark LP v2
   ======================================== */
/* B10対応: フォントは index.html の <head> で <link> 読み込みに変更（@import 廃止） */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  --bg:#ffffff;
  --bg2:#f8fafc;
  --bg3:#f1f5f9;
  --card:#ffffff;
  --card-hover:#fafafa;
  --text:#0f172a;
  --sub:#475569;
  --dim:#94a3b8;
  --ink:#18181b;
  --accent:#e60012;
  --accent-dark:#b3000f;
  --accent-faint:rgba(230,0,18,0.06);
  --accent-glow:rgba(230,0,18,0.18);
  --orange:#f97316;
  --orange-dark:#ea580c;
  --orange-faint:rgba(249,115,22,0.08);
  --orange-glow:rgba(249,115,22,0.35);
  --border:rgba(15,23,42,0.10);
  --border-hover:rgba(15,23,42,0.18);
  --shadow:0 10px 30px rgba(15,23,42,0.08);
  --shadow-lg:0 20px 40px rgba(15,23,42,0.12);
  --success:#06C755;
  --radius:2px;
  --ease:cubic-bezier(0.25,1,0.5,1);
  /* 8px grid spacing tokens */
  --sp-xs:8px;--sp-sm:16px;--sp-md:24px;--sp-lg:32px;
  --sp-xl:48px;--sp-2xl:56px;--sp-3xl:80px;--sp-4xl:100px;
}

html{scroll-behavior:smooth;font-size:16px}

body{
  background:var(--bg);
  color:var(--text);
  font-family:'Noto Sans JP','Inter',sans-serif;
  font-feature-settings:"palt";
  font-weight:400;
  letter-spacing:0.04em;
  line-height:1.75;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

a{color:inherit;text-decoration:none}
ul{list-style:none}
img{max-width:100%;display:block}
button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;border:none;outline:none;background:none}

/* ---------- Utility ---------- */
.container{width:100%;max-width:1100px;margin:0 auto;padding:0 var(--sp-md)}
.sp-only{display:none}
.nowrap{white-space:nowrap;word-break:keep-all}
.jp-break{word-break:keep-all;overflow-wrap:break-word;line-break:strict}
.hero__catch-accent{
  color:var(--accent);
  font-weight:900;
  text-shadow:0 0 20px rgba(230,0,18,0.5);
}
h1,h2,h3,h4,h5,h6{
  word-break:keep-all;
  overflow-wrap:break-word;
  font-feature-settings:"palt";
  letter-spacing:-0.01em;
  line-height:1.4;
}
p,li{
  overflow-wrap:anywhere;
}

/* ---------- CTA Pulse ---------- */
.pulse{position:relative;overflow:visible}
.pulse::after{
  content:'';
  position:absolute;inset:0;
  background:var(--accent);
  z-index:-1;
  opacity:.6;
  animation:pulseRing 2.4s var(--ease) infinite;
  pointer-events:none;
}
@keyframes pulseRing{
  0%{transform:scale(1);opacity:.5}
  70%{transform:scale(1.08);opacity:0}
  100%{transform:scale(1.08);opacity:0}
}
.contact__line.pulse::after{background:var(--success)}
.fixed-cta a.pulse::after{background:currentColor;opacity:.35}

/* ---------- Section Header ---------- */
.section-header{margin-bottom:var(--sp-xl)}

.section-en{
  font-family:'Inter',sans-serif;
  font-weight:900;
  font-size:clamp(3rem,10vw,7rem);
  color:var(--text);
  font-feature-settings:normal;
  letter-spacing:-0.04em;
  line-height:.85;
  text-transform:uppercase;
  opacity:0;
  transform:translateX(-40px);
  transition:opacity .7s var(--ease),transform .7s var(--ease);
  overflow:hidden;
}
.section-en.visible{opacity:.06;transform:translateX(0)}

.section-jp{
  font-weight:700;
  font-size:clamp(1.2rem,2.8vw,1.6rem);
  margin-top:var(--sp-xs);
  letter-spacing:0em;
  position:relative;
  line-height:1.5;
}
.reason__title-jp{
  font-size:clamp(1.4rem,3vw,1.8rem);
  display:inline-flex;
  align-items:baseline;
  gap:6px;
  flex-wrap:wrap;
}
.reason__title-mark{
  font-family:'Inter','Noto Sans JP',sans-serif;
  font-weight:900;
  font-size:clamp(2.4rem,5.5vw,3.8rem);
  line-height:.9;
  letter-spacing:-.02em;
  background:linear-gradient(135deg,var(--orange) 0%,var(--accent) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  padding:0 2px 0 4px;
  text-shadow:0 0 30px rgba(230,0,18,0.15);
  display:inline-block;
  vertical-align:baseline;
}
.reason__title-suffix{
  font-size:1em;
  font-weight:700;
  color:var(--text);
  margin-left:2px;
}

/* ---------- Reveal ---------- */
.reveal{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .6s var(--ease),transform .6s var(--ease);
}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal:nth-child(2){transition-delay:.06s}
.reveal:nth-child(3){transition-delay:.12s}
.reveal:nth-child(4){transition-delay:.18s}
.reveal:nth-child(5){transition-delay:.24s}
.reveal:nth-child(6){transition-delay:.3s}

.problem__card.reveal{transform:translateY(32px) scale(.97)}
.problem__card.reveal.visible{transform:translateY(0) scale(1)}

/* ========== HEADER ========== */
.header{
  position:fixed;top:0;left:0;right:0;
  z-index:999;
  background:rgba(255,255,255,0);
  backdrop-filter:blur(0px);
  -webkit-backdrop-filter:blur(0px);
  border-bottom:1px solid transparent;
  transition:all .4s var(--ease);
  padding:0 24px;
}
.header.scrolled{
  background:rgba(255,255,255,0.9);
  backdrop-filter:blur(24px);
  -webkit-backdrop-filter:blur(24px);
  border-bottom-color:var(--border);
  box-shadow:0 6px 30px rgba(15,23,42,0.06);
}
.header.scrolled .header__logo-main,
.header.scrolled .header__nav a,
.header.scrolled .header__tel{color:var(--text)}
.header.scrolled .header__hamburger span{background:var(--text)}
.header.scrolled .lang-btn:not(.active){color:var(--sub)}
.header.scrolled .lang-switcher{border-color:var(--border);background:rgba(15,23,42,0.03)}
.header.scrolled .lang-btn + .lang-btn{border-color:var(--border)}
.header__inner{
  max-width:1100px;margin:0 auto;
  display:flex;align-items:center;
  height:64px;gap:32px;
  position:relative;
}
.header__logo{display:flex;flex-direction:column;gap:0}
.header__logo-main{
  font-family:'Inter',sans-serif;font-weight:800;
  font-size:.7rem;letter-spacing:.12em;
  text-transform:uppercase;
  line-height:1.2;
}
.header__logo-sub{
  font-size:.55rem;color:var(--dim);
  letter-spacing:.1em;
}
.header__nav{
  display:flex;gap:24px;margin-left:auto;
}
.header__nav a{
  font-size:.72rem;font-weight:400;
  color:var(--sub);
  letter-spacing:.06em;
  font-feature-settings:normal;
  transition:color .3s var(--ease);
  white-space:nowrap;
  padding:8px 0;
  min-height:44px;
  display:inline-flex;
  align-items:center;
}
.header__tel{
  font-family:'Inter',sans-serif;font-weight:700;
  font-size:.75rem;letter-spacing:.04em;
  font-feature-settings:normal;
  color:var(--text);
  white-space:nowrap;
  padding:var(--sp-xs) var(--sp-sm);
  min-height:44px;
  display:inline-flex;
  align-items:center;
  border:1px solid var(--border);
  transition:border-color .3s var(--ease);
}
.header__hamburger{
  display:none;
  flex-direction:column;gap:5px;
  cursor:pointer;padding:4px;
  background:none;border:none;
}
.header__hamburger span{
  display:block;width:20px;height:1.5px;
  background:var(--text);
  transition:all .3s var(--ease);
}
.header__hamburger.active span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.header__hamburger.active span:nth-child(2){opacity:0}
.header__hamburger.active span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

/* ========== LANG SWITCHER ========== */
.lang-switcher{
  display:inline-flex;
  align-items:stretch;
  margin-left:8px;
  border:1px solid rgba(255,255,255,0.18);
  border-radius:999px;
  overflow:hidden;
  background:rgba(255,255,255,0.04);
  flex-shrink:0;
}
.lang-btn{
  background:transparent;
  color:var(--sub);
  font-family:'Inter',sans-serif;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.06em;
  padding:6px 12px;
  cursor:pointer;
  border:none;
  transition:all .3s var(--ease);
  min-width:34px;
  min-height:28px;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.lang-btn + .lang-btn{border-left:1px solid rgba(255,255,255,0.12)}
.lang-btn:hover{color:var(--text)}
.lang-btn.active{
  color:#fff;
  background:var(--accent);
}

/* ========== CHATBOT ========== */
.chat__toggle{
  position:fixed;
  bottom:80px;right:24px;
  z-index:999;
  width:64px;height:64px;
  background:#ffffff;
  color:#fff;
  border:2px solid var(--accent);
  border-radius:50%;
  padding:0;
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  box-shadow:0 6px 22px rgba(15,23,42,0.18);
  transition:all .4s var(--ease);
}
.chat__toggle-avatar{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 20%;
  border-radius:50%;
  display:block;
}
.chat__toggle:hover{
  transform:scale(1.08);
  box-shadow:0 10px 32px rgba(15,23,42,0.24);
}
.chat__toggle.hide{opacity:0;pointer-events:none;transform:scale(0.5)}

.chat__window{
  position:fixed;
  bottom:80px;right:24px;
  z-index:1001;
  width:380px;
  height:520px;
  background:var(--bg);
  border:1px solid var(--border);
  display:flex;
  flex-direction:column;
  opacity:0;
  transform:translateY(20px) scale(0.95);
  pointer-events:none;
  transition:all .4s var(--ease);
  box-shadow:0 20px 60px rgba(0,0,0,0.5);
}
.chat__window.open{
  opacity:1;
  transform:translateY(0) scale(1);
  pointer-events:auto;
}
.chat__header{
  display:flex;justify-content:space-between;align-items:center;
  padding:16px 20px;
  background:#ffffff;
  border-bottom:1px solid var(--border);
  font-weight:700;font-size:.8rem;
  letter-spacing:.04em;
}
.chat__close{
  background:none;border:none;
  color:var(--sub);
  font-size:1.4rem;
  cursor:pointer;
  line-height:1;
  transition:color .3s var(--ease);
}
.chat__close:hover{color:var(--text)}
.chat__messages{
  flex:1;
  overflow-y:auto;
  padding:20px;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.chat__msg{
  max-width:85%;
  padding:12px 16px;
  font-size:.78rem;
  line-height:1.8;
  font-weight:300;
  word-break:break-word;
}
.chat__msg--bot{
  background:#ffffff;
  border:1px solid var(--border);
  color:var(--sub);
  align-self:flex-start;
}
.chat__msg--user{
  background:var(--accent);
  color:#fff;
  align-self:flex-end;
}
.chat__input-wrap{
  display:flex;
  padding:12px;
  gap:8px;
  border-top:1px solid var(--border);
  background:#ffffff;
}
.chat__input{
  flex:1;
  padding:10px 14px;
  background:var(--bg);
  border:1px solid var(--border);
  color:var(--text);
  font-size:.78rem;
  transition:border-color .3s var(--ease);
}
.chat__input:focus{border-color:var(--accent)}
.chat__send{
  width:40px;height:40px;
  background:var(--accent);
  color:#fff;
  border:none;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  flex-shrink:0;
  transition:background .3s var(--ease);
}
.chat__send:hover{background:var(--accent-dark)}

/* Chat scrollbar */
.chat__messages::-webkit-scrollbar{width:4px}
.chat__messages::-webkit-scrollbar-track{background:transparent}
.chat__messages::-webkit-scrollbar-thumb{background:var(--dim);border-radius:2px}

/* ========== FIXED CTA ========== */
.fixed-cta{
  position:fixed;
  bottom:0;left:0;right:0;
  z-index:1000;
  background:rgba(255,255,255,0.97);
  backdrop-filter:blur(24px);
  -webkit-backdrop-filter:blur(24px);
  border-top:1px solid rgba(15,23,42,0.06);
  box-shadow:0 -8px 30px rgba(15,23,42,0.10);
  padding:10px 12px;
  padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));
  display:flex;
  gap:10px;
  transform:translateY(100%);
  transition:transform .5s var(--ease);
}
.fixed-cta.show{transform:translateY(0)}

.fixed-cta a{
  min-width:0;
  display:flex;align-items:center;justify-content:center;
  gap:8px;
  padding:0 16px;
  height:56px;
  font-weight:700;font-size:.85rem;
  text-align:center;
  letter-spacing:0.04em;
  white-space:nowrap;
  border-radius:12px;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.fixed-cta a svg{flex-shrink:0}
.cta-phone{
  background:#0f172a;
  color:#fff;
  box-shadow:0 4px 14px rgba(15,23,42,0.2);
  flex:1;
}
.cta-line-btn{
  background:linear-gradient(135deg,#06C755 0%,#04b34b 100%);
  color:#fff;
  box-shadow:0 6px 20px rgba(6,199,85,0.4);
  flex:1;
  font-size:.92rem;
  font-weight:800;
  letter-spacing:.05em;
  position:relative;
  overflow:hidden;
}
/* LINE shimmer */
.cta-line-btn::before{
  content:'';
  position:absolute;
  top:0;left:-80%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,0.3) 50%,transparent 70%);
  animation:ctaLineShimmer 2.8s var(--ease) infinite 1s;
}
@keyframes ctaLineShimmer{
  0%{left:-80%}
  35%{left:160%}
  100%{left:160%}
}
/* LINE pulse ring */
.cta-line-btn.pulse::after{
  background:#06C755;
  opacity:.5;
  border-radius:12px;
}
/* Bounce attention animation */
@keyframes ctaBounce{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-3px)}
}
.fixed-cta.show .cta-line-btn{
  animation:ctaBounce 2s var(--ease) 3s 2;
}

/* ========== HERO ========== */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;align-items:center;
  overflow:hidden;
  color:#ffffff;
}
.hero .hero__catch{color:#ffffff}
.hero .hero__sub{color:rgba(255,255,255,0.85)}
.hero .hero__badge{color:rgba(255,255,255,0.85);border-bottom-color:rgba(255,255,255,0.2)}
.hero .hero__badge--accent{color:#ffffff;border-bottom-color:var(--orange)}
.hero .hero__stat-num{color:#ffffff}
.hero .hero__stat-unit{color:rgba(255,255,255,0.78)}
.hero .hero__stat-unit small{color:rgba(255,255,255,0.6)}
.hero .hero__stat-label{color:rgba(255,255,255,0.55)}
.hero .hero__license{color:rgba(255,255,255,0.5)}
.hero .hero__scroll span{color:rgba(255,255,255,0.55)}
.hero .hero__cta--secondary{color:#ffffff}
.hero .hero__catch-accent{color:#ff8a3d;text-shadow:0 0 22px rgba(249,115,22,0.55)}
.hero__stat-item{background:rgba(255,255,255,0.05) !important;border-color:rgba(255,255,255,0.12) !important}
/* Hero slideshow */
/* ========== OPENING ANIMATION ========== */
.opening{
  position:fixed;
  inset:0;
  z-index:99999;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:20px;
  background:#ffffff;
  animation:openingOut 0.7s ease-in-out 3.4s forwards;
}
.opening__logo{
  width:clamp(160px, 30vw, 280px);
  height:auto;
  opacity:0;
  animation:openingLogoIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.2s forwards;
}
.opening__text{
  font-family:'Inter',sans-serif;
  font-size:clamp(0.65rem, 1.2vw, 0.85rem);
  font-weight:700;
  letter-spacing:0.35em;
  color:#0a0a0a;
  opacity:0;
  overflow:hidden;
  white-space:nowrap;
  border-right:2px solid #f97316;
  width:0;
  animation:
    openingTypeIn 1.2s steps(17) 1s forwards,
    openingCursor 0.5s step-end 1s 6 forwards,
    openingCursorOff 0.1s ease 3.2s forwards;
}
@keyframes openingLogoIn{
  0%  {opacity:0;transform:scale(0.92) translateY(8px)}
  70% {opacity:1;transform:scale(1.01) translateY(-2px)}
  100%{opacity:1;transform:scale(1) translateY(0)}
}
@keyframes openingTypeIn{
  from{width:0;opacity:1}
  to{width:var(--opening-w, clamp(200px, 22vw, 280px));opacity:1}
}
@keyframes openingCursor{
  0%,100%{border-color:#f97316}
  50%{border-color:transparent}
}
@keyframes openingCursorOff{
  to{border-color:transparent}
}
@keyframes openingOut{
  0%  {opacity:1}
  100%{opacity:0;pointer-events:none;visibility:hidden}
}

.hero__slides{
  position:absolute;inset:0;
  overflow:hidden;
  z-index:0;
  display:none;
}
.hero__overlay{display:none}
.hero__scroll{display:none}
.hero{
  position:relative;
  width:100%;
  min-height:100vh;
  padding:0;
  overflow:hidden;
  background:#0a0a0a;
}
.hero::before,
.hero::after{
  content:'';
  position:absolute;
  inset:0;
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
  will-change:opacity,transform;
}
.hero::before{
  background-image:url('images/hero-pc.png');
  animation:heroPcA 16s ease-in-out infinite;
}
.hero::after{
  background-image:url('images/hero-pc-2.png');
  animation:heroPcB 16s ease-in-out infinite;
}
@keyframes heroPcA{
  0%    {opacity:1;transform:scale(1)}
  6%    {opacity:1;transform:scale(1)}
  40%   {opacity:1;transform:scale(1.05)}
  46%   {opacity:0;transform:scale(1.05)}
  50%   {opacity:0;transform:scale(1.05)}
  94%   {opacity:0;transform:scale(1)}
  100%  {opacity:1;transform:scale(1)}
}
@keyframes heroPcB{
  0%    {opacity:0;transform:scale(1.05)}
  6%    {opacity:0;transform:scale(1.05)}
  40%   {opacity:0;transform:scale(1)}
  46%   {opacity:1;transform:scale(1)}
  50%   {opacity:1;transform:scale(1)}
  94%   {opacity:1;transform:scale(1.05)}
  100%  {opacity:0;transform:scale(1.05)}
}
.hero__slide{
  position:absolute;inset:0;
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
  filter:brightness(.42) saturate(.85);
  opacity:0;
  transform:scale(1.12);
  animation:heroSlide 45s ease-in-out infinite;
  will-change:opacity,transform;
}
.hero__slide--1{background-image:url('images/achievement-1.jpg');animation-delay:0s}
.hero__slide--2{background-image:url('images/achievement-2.jpg');animation-delay:5s}
.hero__slide--3{background-image:url('images/achievement-3.jpg');animation-delay:10s}
.hero__slide--4{background-image:url('images/achievement-4.jpg');animation-delay:15s}
.hero__slide--5{background-image:url('images/achievement-5.jpg');animation-delay:20s}
.hero__slide--6{background-image:url('images/achievement-6.jpg');animation-delay:25s}
.hero__slide--7{background-image:url('images/achievement-7.jpg');animation-delay:30s}
.hero__slide--8{background-image:url('images/achievement-8.jpg');animation-delay:35s}
.hero__slide--9{background-image:url('images/achievement-9.jpg');animation-delay:40s}
@keyframes heroSlide{
  0%   {opacity:0;transform:scale(1.15) translateX(2%)}
  2%   {opacity:1;transform:scale(1.12) translateX(1%)}
  11%  {opacity:1;transform:scale(1.02) translateX(-2%)}
  13%  {opacity:0;transform:scale(1.0)  translateX(-3%)}
  100% {opacity:0;transform:scale(1.15) translateX(2%)}
}
/* Achievement record tag */
.hero__record-tag{
  position:absolute;
  top:24px;right:24px;
  z-index:2;
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:8px 16px;
  background:rgba(0,0,0,0.35);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,0.14);
  border-radius:999px;
  color:#ffffff;
  font-size:.68rem;
  letter-spacing:.12em;
  font-weight:500;
}
.hero__record-dot{
  width:8px;height:8px;
  border-radius:50%;
  background:#ff8a3d;
  box-shadow:0 0 12px rgba(255,138,61,0.9);
  animation:recordPulse 1.6s ease-in-out infinite;
}
@keyframes recordPulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.35);opacity:.7}
}
@media(max-width:768px){
  .hero__record-tag{
    top:auto;bottom:16px;right:16px;
    padding:6px 12px;
    font-size:.6rem;
    letter-spacing:.08em;
  }
  .hero__record-dot{width:6px;height:6px}
  .hero__slides{display:none !important}
  .hero__overlay{display:none !important}
  .hero__scroll{display:none !important}
  .hero{
    position:relative !important;
    width:100% !important;
    min-height:100vh !important;
    padding:0 !important;
    overflow:hidden !important;
    background:#0a0a0a !important;
  }
  .hero::before,
  .hero::after{
    content:'';
    position:absolute;
    inset:0;
    background-size:cover;
    background-position:center top;
    background-repeat:no-repeat;
    will-change:opacity,transform;
  }
  .hero::before{
    background-image:url('images/hero-sp.png');
    animation:heroSpA 12s cubic-bezier(0.4,0,0.2,1) infinite;
  }
  .hero::after{
    background-image:url('images/hero-sp-2.png');
    animation:heroSpB 12s cubic-bezier(0.4,0,0.2,1) infinite;
  }
  @keyframes heroSpA{
    0%   {opacity:1;transform:scale(1)}
    42%  {opacity:1;transform:scale(1.04)}
    50%  {opacity:0;transform:scale(1.04)}
    92%  {opacity:0;transform:scale(1)}
    100% {opacity:1;transform:scale(1)}
  }
  @keyframes heroSpB{
    0%   {opacity:0;transform:scale(1.04)}
    42%  {opacity:0;transform:scale(1)}
    50%  {opacity:1;transform:scale(1)}
    92%  {opacity:1;transform:scale(1.04)}
    100% {opacity:0;transform:scale(1.04)}
  }
}
.hero__overlay{
  position:absolute;inset:0;
  background:linear-gradient(
    180deg,
    rgba(10,10,10,1) 0%,
    rgba(10,10,10,0.5) 30%,
    rgba(10,10,10,0.3) 60%,
    rgba(10,10,10,1) 100%
  );
}
/* Ambient gradient orbs that float behind hero content */
.hero__overlay::before{
  content:'';
  position:absolute;
  width:60vw;height:60vw;
  top:-10%;left:-15%;
  background:radial-gradient(circle,rgba(249,115,22,0.12) 0%,transparent 70%);
  border-radius:50%;
  animation:heroOrb1 18s ease-in-out infinite alternate;
  pointer-events:none;
}
.hero__overlay::after{
  content:'';
  position:absolute;
  width:50vw;height:50vw;
  bottom:-10%;right:-10%;
  background:radial-gradient(circle,rgba(230,0,18,0.1) 0%,transparent 70%);
  border-radius:50%;
  animation:heroOrb2 22s ease-in-out infinite alternate;
  pointer-events:none;
}
@keyframes heroOrb1{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(8vw,12vh) scale(1.2)}
}
@keyframes heroOrb2{
  0%{transform:translate(0,0) scale(1.1)}
  100%{transform:translate(-6vw,-10vh) scale(0.9)}
}
.hero__inner{
  position:relative;z-index:1;
  width:100%;padding:160px 24px 120px;
  max-width:1100px;margin:0 auto;
}
.hero__badges{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:32px}
.hero__badge{
  color:var(--sub);
  font-size:.6rem;
  font-family:'Inter',sans-serif;
  font-weight:400;
  letter-spacing:0.15em;
  text-transform:uppercase;
  padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,0.08);
  word-break:keep-all;
}
.hero__badge--accent{
  color:var(--text);
  border-bottom-color:var(--accent);
  font-weight:700;
}
.hero__en{
  font-family:'Inter',sans-serif;font-weight:900;
  font-size:clamp(5rem,18vw,13rem);
  color:var(--text);
  opacity:0.04;
  font-feature-settings:normal;
  letter-spacing:-0.04em;
  line-height:.78;
  margin-bottom:var(--sp-md);
  margin-left:-8px;
  pointer-events:none;
  user-select:none;
}
.hero__catch{
  font-weight:700;
  font-size:clamp(1.4rem,3.8vw,2.6rem);
  line-height:1.45;
  margin-bottom:var(--sp-sm);
  letter-spacing:-0.02em;
  word-break:keep-all;
  overflow-wrap:break-word;
  /* Initial state — JS split animation takes over */
}
@keyframes heroCatchIn{
  0%{opacity:0;transform:translateY(24px)}
  100%{opacity:1;transform:translateY(0)}
}
.hero__sub{
  font-weight:300;
  font-size:clamp(.85rem,2.2vw,.95rem);
  color:var(--sub);
  margin-bottom:var(--sp-xl);
  max-width:600px;
  line-height:1.85;
  letter-spacing:0.04em;
  word-break:keep-all;
  overflow-wrap:break-word;
  /* JS line-by-line animation */
}
.hero__stats{
  display:flex;
  gap:0;
  flex-wrap:wrap;
  margin-bottom:var(--sp-xl);
  align-items:stretch;
}
.hero__stat-item{
  padding:24px 40px;
  position:relative;
  background:rgba(255,255,255,0.03);
  border:1px solid rgba(255,255,255,0.05);
  border-right:none;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  transition:background .4s var(--ease);
}
.hero__stat-item:last-child{border-right:1px solid rgba(255,255,255,0.05)}
.hero__stat-item:first-child{padding-left:32px}
.hero__stat-item:hover{background:rgba(255,255,255,0.05)}
.hero__stat-upper{
  display:flex;
  align-items:baseline;
  gap:4px;
}
.hero__stat-num{
  font-family:'Inter',sans-serif;font-weight:900;
  font-size:clamp(2rem,4.5vw,2.8rem);
  color:var(--text);
  letter-spacing:-0.04em;
  line-height:1;
}
.hero__stat-unit{
  font-size:.85rem;
  color:var(--sub);
  font-weight:400;
  margin-left:2px;
}
.hero__stat-unit small{
  font-size:.7rem;
  color:var(--dim);
}
.hero__stat-label{
  font-family:'Inter',sans-serif;
  font-size:.5rem;
  color:var(--dim);
  font-feature-settings:normal;
  letter-spacing:.2em;
  margin-top:var(--sp-xs);
  font-weight:400;
  text-transform:uppercase;
}
.hero__cta-group{
  display:flex;gap:16px;flex-wrap:wrap;align-items:center;
}
.hero__cta{
  display:inline-flex;align-items:center;justify-content:center;
  font-weight:700;font-size:.82rem;
  letter-spacing:0.1em;
  padding:var(--sp-sm) var(--sp-xl);
  min-height:48px;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),filter .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease);
  cursor:pointer;
}
.hero__cta--primary{
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 100%);
  color:#fff;
  box-shadow:0 10px 25px rgba(249,115,22,0.35);
}
.hero__cta--secondary{
  background:transparent;color:#fff;
  border:1px solid rgba(255,255,255,0.28);
  min-height:48px;
}
.hero__license{
  margin-top:48px;
  font-size:.6rem;
  color:var(--dim);
  font-family:'Inter',sans-serif;
  letter-spacing:0.04em;
}

/* Hero scroll indicator */
.hero__scroll{
  position:absolute;
  bottom:40px;right:40px;
  z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:8px;
}
.hero__scroll span{
  font-family:'Inter',sans-serif;
  font-size:.55rem;letter-spacing:.2em;
  color:var(--dim);
  writing-mode:vertical-rl;
}
.hero__scroll-line{
  width:1px;height:40px;
  background:linear-gradient(to bottom,var(--dim),transparent);
  animation:scrollLine 2s ease-in-out infinite;
}
@keyframes scrollLine{
  0%,100%{opacity:.3;transform:scaleY(1)}
  50%{opacity:1;transform:scaleY(1.3)}
}

/* ========== PROBLEM (light cards) ========== */
.problem{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:var(--bg3);
}
.problem::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 20% 20%,rgba(249,115,22,0.06) 0%,transparent 45%),
    radial-gradient(circle at 80% 90%,rgba(230,0,18,0.04) 0%,transparent 45%);
  pointer-events:none;
  z-index:0;
}
.problem > .container{position:relative;z-index:1}

/* ---- Header ---- */
.problem__header{
  text-align:center;
  margin-bottom:var(--sp-2xl);
}
.problem__eyebrow{
  font-family:'Inter',sans-serif;
  font-size:.72rem;
  color:var(--orange);
  font-feature-settings:normal;
  letter-spacing:.2em;
  font-weight:700;
  margin-bottom:var(--sp-md);
  text-transform:uppercase;
}
.problem__eyebrow-dash{
  display:inline-block;
  opacity:.85;
}
.problem__title{
  font-size:clamp(1.85rem,4.4vw,2.8rem);
  font-weight:800;
  color:var(--text);
  letter-spacing:-0.02em;
  line-height:1.35;
  margin-bottom:var(--sp-sm);
  word-break:keep-all;
  overflow-wrap:break-word;
}
.problem__title-mark{
  color:var(--accent);
  text-shadow:0 0 20px rgba(230,0,18,0.35);
  margin-left:2px;
  font-weight:900;
}
.problem__subtitle{
  font-size:.9rem;
  color:var(--sub);
  font-weight:400;
  letter-spacing:0.04em;
  margin:0 auto var(--sp-md);
  line-height:1.75;
  max-width:520px;
}
.problem__accent-line{
  width:52px;
  height:3px;
  background:linear-gradient(90deg,var(--orange),var(--accent));
  margin:0 auto;
  box-shadow:0 0 10px rgba(249,115,22,0.4);
  border-radius:2px;
}

/* ---- Cards grid (speech bubble + photo + caption) ---- */
.problem__cards{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:36px 28px;
  padding-top:20px;
}
.problem__card{
  position:relative;
  background:#ffffff;
  border:1px solid rgba(15,23,42,0.08);
  border-radius:var(--sp-md);
  padding:var(--sp-lg) var(--sp-md) var(--sp-md);
  transition:transform .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease);
  cursor:default;
  box-shadow:0 8px 24px rgba(15,23,42,0.06);
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  overflow:visible;
}
.problem__card::before,
.problem__card::after{display:none}
/* hover effects moved to @media(hover:hover) */

/* Speech bubble on top */
.problem__card-bubble{
  position:absolute;
  top:-18px;
  left:50%;
  transform:translateX(-50%);
  width:calc(100% - 24px);
  max-width:280px;
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 100%);
  color:#ffffff;
  font-weight:900;
  font-size:.85rem;
  letter-spacing:.02em;
  padding:10px 16px;
  border-radius:9999px;
  box-shadow:0 8px 18px rgba(230,0,18,0.28);
  text-align:center;
  z-index:3;
  line-height:1.4;
}
.problem__card-bubble span{
  display:inline-block;
  word-break:keep-all;
  overflow-wrap:break-word;
}
.problem__card-bubble::after{
  content:'';
  position:absolute;
  bottom:-8px;
  left:50%;
  transform:translateX(-50%);
  width:0;height:0;
  border-left:9px solid transparent;
  border-right:9px solid transparent;
  border-top:9px solid var(--accent);
  filter:drop-shadow(0 3px 3px rgba(230,0,18,0.2));
}

/* Photo area */
.problem__card-photo{
  position:relative;
  width:100%;
  aspect-ratio:4/3;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(15,23,42,0.06);
  background:#f1f5f9;
  margin:14px 0 18px;
}
.problem__card-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .8s var(--ease);
}
.problem__card-photo::after{display:none}
.problem__card:hover .problem__card-photo img{transform:scale(1.05)}

/* Caption text */
.problem__card-caption{
  color:var(--text);
  font-size:.92rem;
  font-weight:700;
  letter-spacing:0em;
  line-height:1.6;
  padding:0 4px;
  margin:0;
  word-break:keep-all;
  overflow-wrap:break-word;
}
.problem__card-highlight{
  color:var(--accent);
  font-weight:900;
  display:inline-block;
  padding:0 2px;
}

/* Photo banner on top of card */
.problem__card-photo{
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  overflow:hidden;
  background:#e2e8f0;
}
.problem__card-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .8s var(--ease);
  display:block;
}
.problem__card:hover .problem__card-photo img{transform:scale(1.06)}
.problem__card-photo::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,transparent 60%,rgba(15,23,42,0.15) 100%);
  pointer-events:none;
}

/* ---- Solution banner ---- */
.problem__resolve{
  margin:72px auto 0;
  text-align:center;
  max-width:960px;
  padding:32px 16px 20px;
  background:transparent;
  border:none;
  box-shadow:none;
  position:relative;
  overflow:visible;
}
.problem__resolve.reveal.visible .problem__resolve-title{
  animation:resolvePop 1s var(--ease) both;
}
@keyframes resolvePop{
  0%{opacity:0;transform:scale(.85)}
  60%{opacity:1;transform:scale(1.03)}
  100%{opacity:1;transform:scale(1)}
}

.problem__resolve-badge{
  display:inline-block;
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 100%);
  color:#ffffff;
  font-size:1.05rem;
  font-weight:900;
  letter-spacing:.04em;
  padding:14px 32px;
  border-radius:9999px;
  box-shadow:0 10px 24px rgba(230,0,18,0.3);
  margin-bottom:32px;
  white-space:nowrap;
}

.problem__resolve-title{
  font-size:clamp(1.5rem,4.4vw,3rem);
  font-weight:900;
  line-height:1.35;
  letter-spacing:.02em;
  margin:0;
  word-break:keep-all;
  overflow-wrap:break-word;
}
.problem__resolve-line-1,
.problem__resolve-line-2{
  display:inline-block;
  position:relative;
}
.problem__resolve-line-2{margin-top:6px}
.problem__resolve-grad{
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 25%,#ffd6a8 50%,var(--accent) 75%,var(--orange) 100%);
  background-size:220% auto;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  display:inline-block;
  padding:0 2px;
  animation:shineSweep 3.5s ease-in-out infinite;
}
@keyframes shineSweep{
  0%   {background-position:200% 0}
  100% {background-position:-200% 0}
}
.shine{display:inline-block}

.problem__resolve-underline{display:none}
.sp-hide{display:inline}

/* ========== ACHIEVEMENT ========== */
.achievement{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:#0f172a;
  color:#ffffff;
}
.achievement::before{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 30%,rgba(249,115,22,0.12) 0%,transparent 50%),
    radial-gradient(circle at 80% 70%,rgba(230,0,18,0.08) 0%,transparent 50%);
  pointer-events:none;
}
.achievement .section-en{color:#ffffff}
.achievement .section-en.visible{opacity:.08}
.achievement .section-jp{color:#ffffff}
.achievement__lead{
  margin-top:var(--sp-sm);
  font-size:.9rem;
  color:rgba(255,255,255,0.65);
  letter-spacing:0.04em;
  line-height:1.75;
}

/* --- Infinite scroll carousel --- */
.achievement__carousel{
  overflow:hidden;
  width:100%;
  padding:var(--sp-xs) 0;
}
.achievement__track{
  display:flex;
  gap:var(--sp-md);
  width:max-content;
  animation:achievementScroll 45s linear infinite;
  will-change:transform;
}
.achievement__carousel:hover .achievement__track{
  animation-play-state:paused;
}
@keyframes achievementScroll{
  0%{transform:translateX(0)}
  100%{transform:translateX(calc(-324px * 9 - 24px * 9))}
}

.achievement__item{
  position:relative;
  background:rgba(255,255,255,0.05);
  border:1px solid rgba(255,255,255,0.1);
  border-radius:12px;
  overflow:hidden;
  flex-shrink:0;
  width:300px;
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease);
}
.achievement__img{
  position:relative;
  aspect-ratio:4/3;
  overflow:hidden;
}
.achievement__img img{
  width:100%;height:100%;
  object-fit:cover;
  transition:transform .5s var(--ease);
}
.achievement__badge{
  position:absolute;
  top:12px;left:12px;
  background:var(--accent);
  color:#fff;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.08em;
  padding:5px 12px;
  border-radius:4px;
  box-shadow:0 4px 12px rgba(230,0,18,0.4);
  z-index:2;
}
.achievement__badge--accent{
  background:linear-gradient(90deg,var(--orange),var(--accent));
  box-shadow:0 4px 12px rgba(249,115,22,0.4);
}
.achievement__body{
  padding:14px var(--sp-sm);
}
.achievement__car{
  font-weight:700;
  font-size:.9rem;
  letter-spacing:0em;
  color:#ffffff;
  line-height:1.4;
}
.achievement__meta{
  font-size:.7rem;
  color:rgba(255,255,255,0.5);
  margin-top:3px;
  letter-spacing:.04em;
}
.achievement__note{
  text-align:center;
  margin-top:var(--sp-xl);
  font-size:.75rem;
  color:rgba(255,255,255,0.45);
  letter-spacing:.02em;
}

/* ========== PHOTO STRIP ========== */
.photo-strip{
  overflow:hidden;
  padding:0;
  background:var(--bg);
}
.photo-strip__inner{
  display:flex;
  gap:3px;
  animation:stripScroll 30s linear infinite;
}
.photo-strip--reverse .photo-strip__inner{
  animation:stripScrollReverse 35s linear infinite;
}
.photo-strip__inner img{
  width:280px;
  height:180px;
  object-fit:cover;
  flex-shrink:0;
  filter:brightness(.75) saturate(.85);
  transition:filter .5s var(--ease),transform .5s var(--ease);
}
.photo-strip__inner img:hover{
  filter:brightness(.95) saturate(1.1);
  transform:scale(1.05);
}
@keyframes stripScroll{
  0%{transform:translateX(0)}
  100%{transform:translateX(calc(-283px * 6))}
}
@keyframes stripScrollReverse{
  0%{transform:translateX(calc(-283px * 6))}
  100%{transform:translateX(0)}
}

/* ========== REASON ========== */
.reason{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:var(--bg2);
}
.section-header--center{text-align:center}
.section-header--center .section-en{
  text-align:center;
  display:block;
  transform:none;
}

/* --- Photo Card Grid --- */
.reason__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--sp-md);
}
.reason__card{
  position:relative;
  background:#ffffff;
  border:1px solid rgba(15,23,42,0.06);
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 4px 20px rgba(15,23,42,0.06);
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease);
  display:flex;
  flex-direction:column;
}

/* --- Photo visual --- */
.reason__card-visual{
  position:relative;
  aspect-ratio:3/2;
  overflow:hidden;
}
.reason__card-visual img{
  width:100%;height:100%;
  object-fit:cover;
  transition:transform .6s var(--ease);
}
.reason__card-visual::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,0.15) 100%);
  pointer-events:none;
}

/* Floating number badge */
.reason__card-num{
  position:absolute;
  top:14px;left:14px;
  font-family:'Inter',sans-serif;
  font-weight:900;
  font-size:.72rem;
  letter-spacing:.15em;
  color:#ffffff;
  background:linear-gradient(135deg,var(--orange),var(--accent));
  width:40px;height:40px;
  border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px rgba(230,0,18,0.35);
  z-index:2;
}

/* --- Card body --- */
.reason__card-body{
  padding:var(--sp-md);
  display:flex;
  flex-direction:column;
  flex:1;
}

/* Inline icon */
.reason__card-icon{
  width:40px;height:40px;
  border-radius:10px;
  background:rgba(249,115,22,0.08);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:var(--sp-sm);
  color:var(--orange);
  flex-shrink:0;
  transition:background .3s var(--ease),color .3s var(--ease),transform .3s var(--ease);
}

.reason__card-title{
  font-weight:800;
  font-size:1rem;
  letter-spacing:-0.01em;
  line-height:1.45;
  margin-bottom:var(--sp-xs);
  color:var(--text);
}
.reason__card-desc{
  font-size:.84rem;
  color:var(--sub);
  letter-spacing:0.04em;
  line-height:1.75;
  font-weight:400;
}

/* Stagger reveal */
.reason__grid .reason__card:nth-child(1){transition-delay:0s}
.reason__grid .reason__card:nth-child(2){transition-delay:.07s}
.reason__grid .reason__card:nth-child(3){transition-delay:.14s}
.reason__grid .reason__card:nth-child(4){transition-delay:.21s}
.reason__grid .reason__card:nth-child(5){transition-delay:.28s}
.reason__grid .reason__card:nth-child(6){transition-delay:.35s}

/* ========== PROMISE ========== */
/* Light, clean PROMISE section */
.promise{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:#f8fafc;
}
.promise::before{display:none}
.promise > .container{position:relative;z-index:1}

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

/* Reset image-variant to plain white card */
.promise__card,
.promise__card--img{
  position:relative;
  overflow:hidden;
  background:#ffffff;
  border:1px solid rgba(15,23,42,0.08);
  border-radius:16px;
  padding:0;
  min-height:auto;
  box-shadow:0 4px 14px rgba(15,23,42,0.05);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease);
}
.promise__card--img::before,
.promise__card--img::after{display:none}

/* promise card hover → @media(hover:hover) */

.promise__card-inner,
.promise__card--img .promise__card-inner{
  position:relative;
  z-index:2;
  padding:28px 24px;
  display:flex;
  flex-direction:column;
  height:100%;
  justify-content:flex-start;
}

/* Circular orange icon */
.promise__card-icon,
.promise__card--img .promise__card-icon{
  width:48px;height:48px;
  border-radius:9999px;
  background:#ffedd5;
  color:#ea580c;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:18px;
  opacity:1;
  filter:none;
  text-shadow:none;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.promise__card-icon svg,
.promise__card--img .promise__card-icon svg{
  width:24px;height:24px;
  stroke-width:2;
}
/* promise icon hover → @media(hover:hover) */

.promise__card-title,
.promise__card--img .promise__card-title{
  font-weight:800;
  font-size:1.1rem;
  margin-bottom:var(--sp-xs);
  letter-spacing:-0.01em;
  color:#0f172a;
  text-shadow:none;
  word-break:keep-all;
  overflow-wrap:break-word;
  line-height:1.45;
}
.promise__card-desc,
.promise__card--img .promise__card-desc{
  font-size:.88rem;
  color:#475569;
  letter-spacing:0.04em;
  line-height:1.75;
  font-weight:400;
  text-shadow:none;
  word-break:keep-all;
  overflow-wrap:break-word;
}

/* ---- OVERRIDE: Photo-backed promise cards ---- */
.promise__card--img{
  background:#0a0a0a !important;
  border:1px solid rgba(15,23,42,0.14) !important;
  border-radius:20px !important;
  overflow:hidden !important;
  min-height:340px !important;
  padding:0 !important;
  box-shadow:0 12px 32px rgba(15,23,42,0.12) !important;
  isolation:isolate;
}
.promise__card--img::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  background-image:var(--promise-bg);
  background-size:cover;
  background-position:center;
  filter:brightness(.72) saturate(1.05);
  transform:scale(1.14);
  transition:filter .5s var(--ease);
  z-index:0 !important;
  display:block !important;
  animation:promiseKenBurns 14s ease-in-out infinite alternate;
}
.promise__card--img::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  background:linear-gradient(180deg,
    rgba(5,5,5,0.25) 0%,
    rgba(5,5,5,0.45) 40%,
    rgba(5,5,5,0.85) 78%,
    rgba(5,5,5,0.98) 100%) !important;
  z-index:1 !important;
  transition:background .5s var(--ease);
  display:block !important;
  pointer-events:none;
}
@keyframes promiseKenBurns{
  0%   {transform:scale(1.10) translate(0,0)}
  100% {transform:scale(1.22) translate(-2%,-2%)}
}
/* promise --img hover → @media(hover:hover) */

/* Shine sweep on hover */
.promise__card--img .promise__card-inner::before{
  content:'';
  position:absolute;
  top:0;left:0;
  width:60%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,0.20) 50%,transparent 70%);
  transform:translateX(-160%);
  transition:transform 1.1s var(--ease);
  pointer-events:none;
  z-index:1;
}

/* Text stacked at bottom over gradient */
.promise__card--img .promise__card-inner{
  position:relative !important;
  z-index:2 !important;
  padding:36px 28px 32px !important;
  display:flex !important;
  flex-direction:column !important;
  height:100%;
  min-height:340px;
  justify-content:flex-end !important;
}
.promise__card--img .promise__card-icon{
  background:rgba(15,23,42,0.55) !important;
  color:#ff8a3d !important;
  border:1px solid rgba(255,255,255,0.15);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  filter:drop-shadow(0 0 10px rgba(249,115,22,0.5)) !important;
  margin-bottom:16px !important;
  width:48px !important;height:48px !important;
  border-radius:12px !important;
}
/* promise --img icon hover → @media(hover:hover) */
.promise__card--img .promise__card-title{
  color:#ffffff !important;
  font-size:1.2rem !important;
  font-weight:900 !important;
  text-shadow:0 2px 12px rgba(0,0,0,0.55) !important;
  letter-spacing:.02em !important;
}
.promise__card--img .promise__card-desc{
  color:rgba(255,255,255,0.9) !important;
  text-shadow:0 1px 8px rgba(0,0,0,0.5) !important;
  font-weight:500 !important;
}

/* Staggered reveal */
.promise__card--img.reveal{
  opacity:0;
  transform:translateY(24px) scale(.96);
  transition:opacity .8s var(--ease),transform .9s var(--ease);
}
.promise__card--img.reveal.visible{
  opacity:1;
  transform:translateY(0) scale(1);
}
.promise__grid .promise__card--img:nth-child(1).reveal{transition-delay:0s}
.promise__grid .promise__card--img:nth-child(2).reveal{transition-delay:.12s}
.promise__grid .promise__card--img:nth-child(3).reveal{transition-delay:.24s}
.promise__grid .promise__card--img:nth-child(4).reveal{transition-delay:.36s}

/* ========== TARGET ========== */
.target{
  position:relative;
  padding:var(--sp-4xl) 0;
  overflow:hidden;
  background:var(--bg);
}
.target::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 15% 20%,rgba(196,43,59,0.08) 0%,transparent 45%),
    radial-gradient(circle at 85% 80%,rgba(196,43,59,0.06) 0%,transparent 45%);
  pointer-events:none;
}
.target > .container{position:relative;z-index:1}
.target__subtitle{
  margin-top:16px;
  font-size:clamp(.78rem,1.8vw,.92rem);
  color:var(--sub);
  font-weight:400;
  letter-spacing:.02em;
  line-height:1.9;
  word-break:keep-all;
  overflow-wrap:break-word;
}
.target__title-jp{
  line-height:1.6;
  word-break:keep-all;
  overflow-wrap:break-word;
}

/* ---- Zigzag rows ---- */
.target__rows{
  display:flex;
  flex-direction:column;
  gap:100px;
  margin-top:32px;
}
.target__row{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:72px;
  align-items:center;
}
.target__row--reverse .target__row-visual{order:2}
.target__row--reverse .target__row-body{order:1}

.target__row-visual{
  position:relative;
  overflow:hidden;
  aspect-ratio:4/3;
  box-shadow:0 20px 48px rgba(15,23,42,0.15);
  border:1px solid rgba(15,23,42,0.08);
  border-radius:12px;
  width:100%;
  max-width:100%;
}
.target__row-visual img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.2s var(--ease),filter .6s var(--ease);
  filter:brightness(.92) saturate(1.05);
}
.target__row-visual::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(135deg,transparent 60%,rgba(196,43,59,0.15) 100%);
  pointer-events:none;
  opacity:.7;
  transition:opacity .5s var(--ease);
}
/* target hover → @media(hover:hover) */

.target__row-badge{
  position:absolute;
  top:20px;left:20px;
  z-index:2;
  background:var(--accent);
  color:#fff;
  padding:9px 16px;
  font-size:.68rem;
  font-weight:700;
  letter-spacing:.08em;
  box-shadow:0 8px 24px rgba(196,43,59,0.35);
  white-space:nowrap;
}
.target__row-badges{
  position:absolute;
  top:20px;left:20px;
  z-index:2;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  max-width:calc(100% - 40px);
}
.target__row-badges .target__row-badge{
  position:static;
}
.target__row-badge--outline{
  background:rgba(15,23,42,0.85);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  color:#ffffff;
  border:1px solid var(--accent);
  box-shadow:0 4px 12px rgba(15,23,42,0.25);
}
.target__row-corner{
  position:absolute;
  bottom:18px;right:18px;
  z-index:2;
  font-family:'Inter',sans-serif;
  font-weight:900;
  font-size:.7rem;
  letter-spacing:.28em;
  color:#ffffff;
  padding:9px 14px;
  border:1px solid rgba(255,255,255,0.45);
  background:linear-gradient(135deg,var(--orange) 0%,var(--accent) 100%);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 6px 16px rgba(230,0,18,0.3);
  text-shadow:0 1px 2px rgba(0,0,0,0.25);
}
.target__row-visual--featured{
  aspect-ratio:16/10;
  box-shadow:0 24px 56px rgba(15,23,42,0.18),0 0 0 1px rgba(230,0,18,0.1);
  width:100%;
  max-width:100%;
}

.target__row-body{padding:8px 0}
.target__row-eyebrow{
  font-family:'Inter',sans-serif;
  font-size:.65rem;
  color:var(--accent);
  font-feature-settings:normal;
  letter-spacing:.2em;
  font-weight:800;
  margin-bottom:var(--sp-md);
  text-transform:uppercase;
}
.target__row-title{
  font-size:clamp(1.35rem,2.6vw,1.85rem);
  font-weight:700;
  line-height:1.4;
  margin-bottom:var(--sp-md);
  letter-spacing:-0.02em;
  word-break:keep-all;
  overflow-wrap:break-word;
  color:var(--text);
}
.target__row-desc{
  font-size:.92rem;
  color:var(--sub);
  letter-spacing:0.04em;
  line-height:1.8;
  font-weight:400;
  word-break:keep-all;
  overflow-wrap:break-word;
  margin-bottom:var(--sp-lg);
}
.target__row-link{display:none}
.target__row-tags{display:none}

.target__row-lead{
  font-size:.92rem;
  font-weight:700;
  color:var(--accent);
  line-height:1.6;
  margin:-4px 0 var(--sp-sm);
  word-break:keep-all;
  overflow-wrap:break-word;
  letter-spacing:0em;
}

/* Detail tag list */
.target__row-tags{
  list-style:none;
  padding:0;
  margin:20px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:8px 10px;
}
.target__row-tags li{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:.78rem;
  font-weight:600;
  color:var(--sub);
  padding:0;
  white-space:nowrap;
  letter-spacing:.02em;
}
.target__row-tags li::before{
  content:'';
  width:14px;height:14px;
  border-radius:50%;
  background:linear-gradient(135deg,var(--orange),var(--accent));
  flex-shrink:0;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/70% no-repeat;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/70% no-repeat;
}
.target__row-tags li{padding-right:8px}

/* Left/Right slide reveals */
.reveal--left{transform:translateX(-40px)}
.reveal--right{transform:translateX(40px)}
.reveal--left.visible,
.reveal--right.visible{transform:translateX(0)}
/* ========== FLOW ========== */
.flow{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:var(--bg);
}
.flow::after{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 100%,rgba(249,115,22,0.10) 0%,transparent 45%),
    radial-gradient(circle at 90% 10%,rgba(230,0,18,0.05) 0%,transparent 40%);
  pointer-events:none;
  z-index:0;
}
.flow .container{position:relative;z-index:1}

/* ---- Steps grid ---- */
.flow__steps{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:28px;
  position:relative;
  z-index:1;
}
.flow__step{
  position:relative;
  padding-top:0;
}

.flow__step-num{
  font-family:'Inter',sans-serif;font-weight:800;
  font-size:1.2rem;
  color:var(--orange);
  font-feature-settings:normal;
  letter-spacing:.15em;
  margin-bottom:var(--sp-sm);
  text-transform:uppercase;
}
.flow__step-icon{
  width:56px;height:56px;
  background:linear-gradient(145deg,#18181b 0%,#0f172a 100%);
  border:1px solid rgba(15,23,42,0.6);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:20px;
  color:var(--orange);
  box-shadow:0 6px 14px rgba(15,23,42,0.2);
  transition:all .4s var(--ease);
}
/* flow icon hover → @media(hover:hover) */
.flow__step-title{
  font-weight:800;
  font-size:1.05rem;
  margin-bottom:var(--sp-xs);
  letter-spacing:-0.01em;
  line-height:1.45;
  color:var(--text);
  word-break:keep-all;
  overflow-wrap:break-word;
}
.flow__step-desc{
  font-size:1.1rem;
  color:var(--accent);
  font-weight:800;
  line-height:1.5;
  word-break:keep-all;
  overflow-wrap:break-word;
  letter-spacing:0em;
}
/* ========== VOICE ========== */
.voice{position:relative;padding:var(--sp-4xl) 0;overflow:hidden;background:var(--bg3)}
.marquee-strip{
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  padding:14px 0;
  margin:48px 0;
  overflow:hidden;
  white-space:nowrap;
}
.marquee-inner{
  display:flex;gap:60px;
  animation:marquee 40s linear infinite;
  will-change:transform;
}
.marquee-inner span{
  font-family:'Inter',sans-serif;font-weight:800;
  font-size:.8rem;
  text-transform:uppercase;
  letter-spacing:.2em;
  flex-shrink:0;
  color:rgba(15,23,42,0.06);
}
@keyframes marquee{
  0%{transform:translateX(0)}
  100%{transform:translateX(-50%)}
}
/* Voice slider */
.voice__slider-wrap{
  position:relative;
  overflow:hidden;
  padding:0 24px;
  max-width:1100px;
  margin:0 auto;
}
.voice__slider{
  display:flex;
  gap:20px;
  transition:transform .6s var(--ease);
  cursor:grab;
  user-select:none;
}
.voice__slider.grabbing{cursor:grabbing}
.voice__slide{
  flex:0 0 calc(50% - 10px);
  background:#ffffff;
  border:1px solid var(--border);
  display:flex;
  overflow:hidden;
  transition:border-color .4s var(--ease);
}
.voice__slide-img{
  width:200px;
  flex-shrink:0;
  overflow:hidden;
}
.voice__slide-img img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(.65) saturate(.8);
  transition:all .5s var(--ease);
}
/* voice img hover → @media(hover:hover) */
.voice__slide-body{
  padding:32px 28px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  flex:1;
}
.voice__card-stars{
  color:var(--accent);
  font-size:.65rem;
  letter-spacing:3px;
  margin-bottom:16px;
}
.voice__slide-text{
  font-size:.85rem;
  letter-spacing:0.04em;
  line-height:1.8;
  font-weight:400;
  color:var(--sub);
  flex:1;
}
.voice__slide-footer{
  margin-top:20px;
  padding-top:16px;
  border-top:1px solid var(--border);
}
.voice__slide-name{
  font-size:.8rem;
  font-weight:700;
  letter-spacing:.02em;
}
.voice__slide-meta{
  font-size:.6rem;
  color:var(--dim);
  font-family:'Inter',sans-serif;
  letter-spacing:0.04em;
  margin-top:2px;
}

/* Voice controls */
.voice__controls{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  margin-top:40px;
}
.voice__arrow{
  width:48px;height:48px;
  min-width:44px;min-height:44px;
  border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  color:var(--sub);
  background:transparent;
  transition:border-color .3s var(--ease),color .3s var(--ease);
}
.voice__dots{
  display:flex;gap:8px;
}
.voice__dot{
  width:32px;height:2px;
  background:var(--dim);
  cursor:pointer;
  transition:all .4s var(--ease);
  border:none;
  padding:0;
}
.voice__dot.active{
  background:var(--accent);
  width:48px;
}

/* ========== FAQ ========== */
.faq{position:relative;padding:var(--sp-4xl) 0;overflow:hidden;background:var(--bg2)}

/* 2-column grid */
.faq__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--sp-md);
  max-width:960px;
  margin:0 auto;
}
.faq__col{
  display:flex;
  flex-direction:column;
  gap:var(--sp-sm);
}
.faq__item{
  background:#ffffff;
  border:1px solid rgba(15,23,42,0.06);
  border-radius:12px;
  padding:0 var(--sp-md);
  box-shadow:0 2px 12px rgba(15,23,42,0.04);
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease);
}
.faq__item.open{
  border-color:rgba(249,115,22,0.3);
  box-shadow:0 8px 24px rgba(15,23,42,0.06);
}
.faq__q{
  display:flex;justify-content:space-between;align-items:center;
  padding:var(--sp-sm) 0;cursor:pointer;
  font-weight:700;font-size:.85rem;gap:var(--sp-xs);
  letter-spacing:0em;
  min-height:48px;
  transition:color .3s var(--ease);
}
.faq__item.open .faq__q{color:var(--accent)}
.faq__icon{
  font-size:1rem;
  color:var(--dim);
  font-weight:300;
  flex-shrink:0;
  width:28px;height:28px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:var(--bg3);
  transition:transform .3s var(--ease),color .3s var(--ease),background .3s var(--ease);
}
.faq__item.open .faq__icon{
  transform:rotate(45deg);
  color:#fff;
  background:var(--accent);
}
.faq__a{
  max-height:0;overflow:hidden;
  transition:max-height .4s var(--ease),padding .4s var(--ease);
  font-size:.82rem;color:var(--sub);letter-spacing:0.04em;line-height:1.75;font-weight:400;
  padding:0;
}
.faq__item.open .faq__a{
  max-height:300px;
  padding:0 0 var(--sp-sm);
  border-top:1px solid var(--border);
  padding-top:var(--sp-xs);
}

/* ========== CEO MESSAGE ========== */
.ceo{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  background:#ffffff;
  color:var(--text);
  overflow:hidden;
  word-break:keep-all;
  overflow-wrap:break-word;
}
.ceo::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(15,23,42,0.08),transparent);
}
.ceo__container{max-width:1080px;margin:0 auto;padding:0 24px}
.ceo__grid{
  display:grid;
  grid-template-columns:5fr 7fr;
  gap:64px;
  align-items:center;
  margin-top:56px;
}
.ceo__photo-col{
  display:flex;
  flex-direction:column;
  align-items:center;
}
.ceo__photo-frame{
  position:relative;
  width:100%;
  max-width:380px;
  aspect-ratio:4/5;
  overflow:visible;
  border-radius:0;
  border:none;
  box-shadow:none;
  background:transparent;
}
.ceo__photo-frame::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,transparent 55%,var(--bg) 98%),
    linear-gradient(90deg,var(--bg) 0%,transparent 15%,transparent 85%,var(--bg) 100%),
    linear-gradient(0deg,transparent 80%,var(--bg) 100%);
  pointer-events:none;
  z-index:1;
}
.ceo__photo{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 20%;
  display:block;
  transition:transform 1.2s var(--ease);
}
.ceo__photo-frame:hover .ceo__photo{transform:scale(1.03)}
.ceo__photo-caption{
  margin-top:20px;
  text-align:center;
}
.ceo__role{
  font-size:.72rem;
  color:var(--sub);
  letter-spacing:.14em;
  font-weight:600;
}
.ceo__name{
  font-weight:700;
  font-size:1.15rem;
  letter-spacing:.08em;
  color:var(--text);
  margin-top:6px;
}
.ceo__text-col{width:100%;min-width:0}
.ceo__lead{
  font-size:clamp(1.4rem,2.6vw,1.8rem);
  font-weight:800;
  line-height:1.55;
  letter-spacing:.02em;
  color:var(--text);
  margin-bottom:28px;
  padding-bottom:20px;
  border-bottom:2px solid var(--accent);
  display:inline-block;
}
.ceo__message{
  font-size:.92rem;
  letter-spacing:0.04em;
  line-height:1.85;
  color:var(--text);
  margin-bottom:var(--sp-lg);
  font-weight:400;
}
.ceo__message strong{color:var(--accent);font-weight:700}
.ceo__sign{
  font-size:.85rem;
  color:var(--sub);
  letter-spacing:.06em;
  text-align:right;
}
.ceo__sign span{
  font-size:1.15rem;
  font-weight:700;
  color:var(--text);
  margin-left:8px;
  letter-spacing:.14em;
}
@media(max-width:768px){
  .ceo{padding:80px 0 64px}
  .ceo__grid{
    grid-template-columns:1fr;
    gap:32px;
    margin-top:32px;
  }
  .ceo__photo-frame{max-width:80%;width:80%;margin:0 auto}
  .ceo__photo-caption{display:none !important}
  .ceo__role{display:none !important}
  .ceo__name{display:none !important}
  .ceo__lead{font-size:1.25rem;padding-bottom:16px;margin-bottom:20px}
  .ceo__message{font-size:.88rem;line-height:1.95}
  .ceo__sign{text-align:center}
}

/* CEO nested inside COMPANY (会社案内内の代表挨拶) */
.company .ceo{padding:0;background:transparent;margin-bottom:48px}
.company .ceo::before{display:none}
.company .ceo__container{max-width:none;padding:0}
.company .ceo__grid{margin-top:0}
@media(max-width:768px){
  .company .ceo{padding:0;margin-bottom:32px}
}

/* ========== COMPANY (dl/flex rewrite) ========== */
.company{
  position:relative;
  padding:var(--sp-4xl) 0 var(--sp-3xl);
  overflow:hidden;
  background:var(--bg2);
  color:var(--text);
  word-break:keep-all;
  overflow-wrap:break-word;
}
.company__container{max-width:960px;margin:0 auto}
.company__heading{
  font-size:clamp(1.6rem,3.2vw,2rem);
  font-weight:800;
  text-align:center;
  margin-bottom:48px;
  padding-bottom:20px;
  border-bottom:1px solid var(--accent);
  letter-spacing:.06em;
  color:var(--text);
  display:block;
  width:fit-content;
  margin-left:auto;
  margin-right:auto;
  padding-left:24px;
  padding-right:24px;
}

/* Building hero photo */
.company__hero{
  width:100%;
  aspect-ratio:16/9;
  overflow:hidden;
  border-radius:16px;
  border:1px solid rgba(15,23,42,0.08);
  box-shadow:0 20px 40px -12px rgba(15,23,42,0.18);
  margin-bottom:48px;
  background:#f5f5f5;
}
.company__hero-img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform 1.2s var(--ease);
}
.company__hero:hover .company__hero-img{transform:scale(1.03)}

/* Info-only grid */
.company__grid{
  display:block;
}

/* Info column */
.company__info-col{
  width:100%;
  min-width:0;
}

/* Definition list */
.company__info{
  display:flex;
  flex-direction:column;
  gap:16px;
  margin:0;
  padding:0;
}
.company__info-row{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  gap:16px;
  padding-bottom:14px;
  border-bottom:1px solid rgba(15,23,42,0.10);
}
.company__info-label{
  flex:0 0 128px;
  font-weight:700;
  font-size:.82rem;
  color:var(--accent);
  letter-spacing:.02em;
  line-height:1.7;
}
.company__info-value{
  flex:1;
  min-width:0;
  margin:0;
  font-size:.88rem;
  color:var(--text);
  line-height:1.75;
  word-break:break-word;
  overflow-wrap:break-word;
  font-weight:500;
}
.company__info-value a{
  color:var(--text);
  border-bottom:1px solid var(--accent);
  transition:color .3s var(--ease);
}
.company__info-value a:hover{color:var(--accent)}

/* Map */
.company__map{
  margin-top:56px;
  width:100%;
  overflow:hidden;
  border:1px solid rgba(15,23,42,0.1);
  border-radius:12px;
}
.company__map iframe{
  display:block;
  transition:filter .4s var(--ease);
}

/* ========== CONTACT ========== */
.contact{position:relative;padding:var(--sp-4xl) 0;overflow:hidden;background:var(--bg)}
.contact__lead{
  margin-top:var(--sp-xs);
  font-size:.9rem;
  color:var(--sub);
  letter-spacing:0.04em;
}

/* 3 method cards */
.contact__methods{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--sp-sm);
  margin-bottom:var(--sp-xl);
}
.contact__method{
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  padding:var(--sp-md) var(--sp-sm);
  background:#ffffff;
  border:1px solid var(--border);
  border-radius:14px;
  transition:transform .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease);
  text-decoration:none;
  color:var(--text);
  cursor:pointer;
}
.contact__method-icon{
  width:52px;height:52px;
  border-radius:50%;
  background:var(--bg3);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:var(--sp-sm);
  color:var(--accent);
  transition:background .3s var(--ease),color .3s var(--ease);
}
.contact__method--line .contact__method-icon{background:#e8f5e9;color:var(--success)}
.contact__method--form .contact__method-icon{background:rgba(249,115,22,0.08);color:var(--orange)}
.contact__method-title{font-weight:800;font-size:.88rem;margin-bottom:4px;letter-spacing:-0.01em}
.contact__method-num{
  font-family:'Inter',sans-serif;font-weight:900;
  font-size:1.1rem;color:var(--text);letter-spacing:-0.02em;
}
.contact__method--line .contact__method-num{color:var(--success);font-family:'Noto Sans JP',sans-serif;font-size:.9rem}
.contact__method--form .contact__method-num{color:var(--orange);font-family:'Noto Sans JP',sans-serif;font-size:.9rem}
.contact__method-note{font-size:.68rem;color:var(--dim);margin-top:4px}

/* Form */
.contact__form{
  background:#ffffff;
  border:1px solid rgba(15,23,42,0.06);
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 8px 32px rgba(15,23,42,0.06);
  max-width:720px;
  margin:0 auto;
}
.contact__form-header{
  background:linear-gradient(135deg,#0f172a,#1e293b);
  color:#ffffff;
  padding:var(--sp-md) var(--sp-lg);
}
.contact__form-title{
  font-weight:800;font-size:1rem;
  letter-spacing:-0.01em;
  margin-bottom:4px;
}
.contact__form-sub{
  font-size:.78rem;
  color:rgba(255,255,255,0.6);
  font-weight:400;
}
.contact__form-body{
  padding:var(--sp-lg);
}
.contact__form-trust{
  display:flex;
  justify-content:center;
  gap:var(--sp-md);
  padding:var(--sp-sm) var(--sp-md);
  background:var(--bg3);
  border-top:1px solid var(--border);
}
.contact__form-trust span{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:.72rem;
  color:var(--sub);
  font-weight:500;
}
.contact__form-trust svg{color:var(--accent);flex-shrink:0}
.form-row{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;
}
.form-group{margin-bottom:20px}
.form-group label{
  display:flex;align-items:center;gap:6px;
  font-size:.72rem;
  font-weight:700;
  margin-bottom:8px;
  letter-spacing:0.04em;
  color:var(--sub);
}
.form-group label .req{
  color:var(--accent);
  font-size:.6rem;
  font-weight:400;
}
.form-group input,
.form-group select,
.form-group textarea{
  width:100%;padding:14px 16px;
  background:#ffffff;
  border:1px solid var(--border);
  border-radius:8px;
  color:var(--text);font-size:.9rem;font-weight:400;
  transition:border-color .4s var(--ease),box-shadow .4s var(--ease);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus{
  border-color:var(--orange);
  box-shadow:0 0 0 3px rgba(249,115,22,0.15);
}
.form-group input::placeholder,
.form-group textarea::placeholder{color:var(--dim);font-weight:300}
.form-group textarea{resize:vertical;min-height:100px}
.form-group select{
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  cursor:pointer;
}
.form-submit{
  width:100%;
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 100%);
  color:#fff;
  font-weight:800;font-size:.9rem;
  padding:var(--sp-sm);
  min-height:52px;
  letter-spacing:0.1em;
  cursor:pointer;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),filter .3s var(--ease);
  margin-top:var(--sp-xs);
  border-radius:8px;
  box-shadow:0 8px 20px rgba(249,115,22,0.35);
}

/* ========== CAUTION ========== */
.caution{padding:56px 0;border-top:1px solid var(--border);background:var(--bg3)}
.caution h3{font-size:.7rem;font-weight:700;margin-bottom:16px;color:var(--dim);letter-spacing:0.08em}
.caution ul{padding:0}
.caution li{
  font-size:.68rem;
  color:var(--dim);
  line-height:2.0;
  margin-bottom:4px;
  font-weight:300;
  padding-left:16px;
  position:relative;
}
.caution li::before{
  content:'';
  position:absolute;
  left:0;top:.75em;
  width:4px;height:1px;
  background:var(--dim);
}

/* ========== FOOTER ========== */
.footer{
  padding:56px 0 120px;
  border-top:1px solid rgba(15,23,42,0.1);
  background:#0f172a;
  color:#ffffff;
}
.footer__top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  margin-bottom:40px;
  padding-bottom:40px;
  border-bottom:1px solid rgba(255,255,255,0.12);
}
.footer__brand{}
.footer__company{
  font-family:'Inter',sans-serif;
  font-weight:800;
  font-size:.78rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:#ffffff;
}
.footer__company-jp{
  font-size:.72rem;
  color:rgba(255,255,255,0.75);
  margin-top:6px;
}
.footer__links{
  display:flex;flex-wrap:wrap;gap:20px;
}
.footer__links a{
  font-size:.78rem;
  color:rgba(255,255,255,0.85);
  transition:color .3s var(--ease);
  letter-spacing:.02em;
  font-weight:500;
}
.footer__links a:hover{color:var(--accent)}
.footer__bottom{text-align:center}
.footer__info{
  font-size:.72rem;
  color:rgba(255,255,255,0.82);
  line-height:2.0;
  margin-bottom:16px;
  font-weight:400;
}
.footer__copy{
  font-size:.65rem;
  color:rgba(255,255,255,0.55);
  font-family:'Inter',sans-serif;
  letter-spacing:0.04em;
}

/* ========== RESPONSIVE ========== */
@media(max-width:960px){
  .header__nav{
    display:flex;
    flex-direction:column;
    position:fixed;
    top:0;right:0;
    height:100vh;
    height:100dvh;
    width:min(82vw,340px);
    background:linear-gradient(160deg,#0a0a0a 0%,#150b0d 100%);
    padding:76px 28px 24px;
    padding-top:calc(76px + env(safe-area-inset-top,0px));
    padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));
    gap:0;
    z-index:999;
    transform:translate3d(100%,0,0);
    transition:transform .5s var(--ease);
    box-shadow:-24px 0 60px rgba(0,0,0,0.6);
    border-left:1px solid var(--border);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    will-change:transform;
    opacity:1;
    visibility:visible;
  }
  .header__nav.open{
    transform:translate3d(0,0,0);
  }
  .header__nav a{
    display:block;
    color:var(--text);
    font-size:1rem;
    letter-spacing:.06em;
    font-weight:700;
    padding:16px 4px;
    border-bottom:1px solid rgba(255,255,255,0.08);
    opacity:0;
    transform:translateX(20px);
    transition:opacity .35s var(--ease),transform .35s var(--ease),color .25s var(--ease);
    position:relative;
    white-space:nowrap;
  }
  .header__nav a:hover,
  .header__nav a:active{color:var(--accent)}
  .header__nav.open a{opacity:1;transform:translateX(0)}
  .header__nav.open a:nth-child(1){transition-delay:.08s}
  .header__nav.open a:nth-child(2){transition-delay:.13s}
  .header__nav.open a:nth-child(3){transition-delay:.18s}
  .header__nav.open a:nth-child(4){transition-delay:.23s}
  .header__nav.open a:nth-child(5){transition-delay:.28s}
  .header__nav.open a:nth-child(6){transition-delay:.33s}
  .nav-backdrop{
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.55);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
    z-index:998;
    opacity:0;
    pointer-events:none;
    transition:opacity .4s var(--ease);
  }
  .nav-backdrop.open{opacity:1;pointer-events:auto}
  .header{padding:0 16px}
  .header__inner{gap:12px;height:60px}
  .header__logo-main{font-size:.65rem}
  .header__logo-sub{font-size:.5rem}
  .header__hamburger{
    display:flex;
    position:relative;
    z-index:1002;
    width:36px;height:36px;
    align-items:center;
    justify-content:center;
    padding:8px;
    background:rgba(255,255,255,0.04);
    border:1px solid rgba(255,255,255,0.12);
    border-radius:8px;
    flex-shrink:0;
  }
  .header__hamburger span{width:18px}
  .header__hamburger.active{background:var(--accent);border-color:var(--accent)}
  .header__tel{display:none}
  .lang-switcher{
    margin-left:auto;
    margin-right:4px;
    background:rgba(255,255,255,0.06);
    border-color:rgba(255,255,255,0.18);
  }
  .lang-btn{
    font-size:.58rem;
    min-width:30px;
    padding:5px 9px;
    min-height:32px;
  }
  .chat__window{width:calc(100vw - 32px);right:16px;bottom:72px;height:480px}
  .contact__methods{grid-template-columns:1fr 1fr 1fr;gap:10px}
  .contact__method{padding:var(--sp-sm) var(--sp-xs)}
  .contact__method-icon{width:44px;height:44px;margin-bottom:10px}
  .contact__method-num{font-size:.95rem}
  .contact__form-body{padding:var(--sp-md)}
  .contact__form-trust{flex-wrap:wrap;gap:8px 16px}
}

@media(max-width:768px){
  /* Section vertical rhythm: reduce for mobile */
  .problem,.reason,.promise,.target,.flow,.voice,.faq,.company,.contact,.achievement{padding-top:64px;padding-bottom:64px}
  .achievement__item{width:260px}
  .achievement__car{font-size:.85rem}
  .achievement__meta{font-size:.68rem}
  @keyframes achievementScroll{
    0%{transform:translateX(0)}
    100%{transform:translateX(calc(-284px * 9))}
  }
  .section-header{margin-bottom:40px}
  .section-en{font-size:clamp(2.5rem,10vw,4.5rem)}
  .hero__en{font-size:clamp(3.5rem,16vw,7rem)}
  /* Company mobile — new dl/flex layout */
  .company{padding:64px 0 72px}
  .company__container{padding:0 16px}
  .company__heading{font-size:1.4rem;margin-bottom:24px;padding-bottom:14px;padding-left:16px;padding-right:16px}
  .company__hero{aspect-ratio:4/3;border-radius:12px;margin-bottom:28px}
  .company__grid{gap:32px}
  .company__info-col{order:2}
  .company__info{gap:14px}
  .company__info-row{
    flex-direction:column;
    gap:4px;
    padding-bottom:12px;
  }
  .company__info-label{
    flex:none;
    width:auto;
    font-size:.62rem;
    letter-spacing:.16em;
    text-transform:uppercase;
    font-family:'Inter',sans-serif;
    font-weight:700;
    line-height:1.4;
  }
  .company__info-value{
    font-size:.85rem;
    line-height:1.7;
  }
  .company__map{margin-top:32px}
  .company__map iframe{height:240px}
  .problem{padding:80px 0}
  .problem__header{margin-bottom:44px}
  .problem__title{font-size:clamp(1.5rem,7vw,2rem);margin-bottom:12px}
  .problem__eyebrow{font-size:.62rem;letter-spacing:.24em;margin-bottom:16px}
  .problem__subtitle{font-size:.82rem;margin-bottom:16px}
  .problem__cards{grid-template-columns:1fr 1fr;gap:28px 12px;padding-top:16px}
  .problem__card{border-radius:20px;padding:28px 12px 18px}
  .problem__card-photo{aspect-ratio:4/3;border-radius:14px;margin:10px 0 14px}
  .problem__card-bubble{
    font-size:.7rem;
    padding:8px 10px;
    top:-14px;
    max-width:calc(100% - 12px);
  }
  .problem__card-bubble::after{border-top-width:7px;border-left-width:7px;border-right-width:7px;bottom:-6px}
  .problem__card-caption{font-size:.82rem;line-height:1.65}
  .problem__resolve{
    margin-top:48px;
    padding:20px 12px 12px;
  }
  .problem__resolve-badge{font-size:.9rem;padding:11px 22px;margin-bottom:22px}
  .promise__grid{grid-template-columns:1fr;gap:14px}
  .promise{padding:80px 0}
  .promise__card,.promise__card--img{border-radius:14px}
  .promise__card-inner,.promise__card--img .promise__card-inner{padding:22px 20px}
  .promise__card-icon,.promise__card--img .promise__card-icon{width:44px;height:44px;margin-bottom:14px}
  .promise__card-icon svg,.promise__card--img .promise__card-icon svg{width:22px;height:22px}
  .promise__card-title,.promise__card--img .promise__card-title{font-size:1.05rem}
  .promise__card-desc,.promise__card--img .promise__card-desc{font-size:.85rem;line-height:1.8}
  .target__grid{grid-template-columns:1fr 1fr;gap:16px}
  .target__card--featured .target__card-visual img{height:280px}
  .target__rows{gap:48px;margin-top:8px}
  .target__row{grid-template-columns:1fr;gap:16px;min-width:0}
  .target__row--reverse .target__row-visual{order:0}
  .target__row--reverse .target__row-body{order:0}
  .target__row-visual{
    aspect-ratio:16/10;
    width:100%;
    max-width:100%;
    box-shadow:0 12px 30px rgba(15,23,42,0.15);
    border-radius:8px;
  }
  .target__row-visual img{width:100%;height:100%}
  .target__row-body{padding:4px 4px 0;min-width:0}
  .target__row-title{font-size:clamp(1.15rem,5vw,1.5rem);line-height:1.6;margin-bottom:16px}
  .target__row-desc{font-size:.88rem;line-height:1.95;margin-bottom:20px}
  .target__row-eyebrow{font-size:.6rem;margin-bottom:14px;letter-spacing:.22em}
  .target__row-badge{top:12px;left:12px;padding:6px 11px;font-size:.58rem}
  .target__row-badges{top:12px;left:12px;gap:5px;max-width:calc(100% - 24px)}
  .target__row-corner{bottom:12px;right:12px;font-size:.52rem;letter-spacing:.2em;padding:6px 10px}
  .target__row-visual--featured{
    aspect-ratio:16/10;
    box-shadow:0 16px 36px rgba(15,23,42,0.18);
    width:100%;
    max-width:100%;
  }
  .target__row-link{font-size:.78rem}
  .target__row:hover .target__row-visual img{transform:none}
  /* Reason: show photo on tablet+small too */
  .reason{padding-top:80px;padding-bottom:80px}
  .reason__grid{grid-template-columns:repeat(2,1fr);gap:14px}
  .reason__card-body{padding:14px}
  .reason__card-title{font-size:.92rem}
  .reason__card-desc{font-size:.82rem}
  .reason__card-num{width:34px;height:34px;font-size:.65rem;top:10px;left:10px;border-radius:10px}
  .reason__card-icon{width:36px;height:36px;border-radius:8px;margin-bottom:10px}
  /* Reduce lateral slide on mobile — feels better with just vertical fade */
  .reveal--left,.reveal--right{transform:translateY(30px)}
  .reveal--left.visible,.reveal--right.visible{transform:translateY(0)}
  .voice{padding-top:80px;padding-bottom:100px}
  .voice__slider-wrap{padding:0 16px}
  .voice__slide{flex:0 0 100%}
  .voice__slide{flex-direction:column}
  .voice__slide-img{width:100%;height:180px}
  .voice__slide-body{padding:20px 20px 24px}
  .voice__slide-text{font-size:.85rem;line-height:1.9}
  .marquee-inner{gap:40px}
  .hero__stats{gap:2px;margin-bottom:36px}
  .hero__stat-item{
    padding:14px 16px;
    flex:1 1 calc(50% - 1px);
    min-width:0;
  }
  .hero__stat-item:first-child{padding-left:16px}
  .hero__stat-num{font-size:clamp(1.5rem,6vw,1.9rem)}
  .hero__stat-label{font-size:.48rem;letter-spacing:.12em}
  /* ---- FLOW: card grid on mobile ---- */
  .flow{padding:56px 0;background:#f8f8f8}
  .flow .section-en{color:rgba(0,0,0,0.04)}
  .flow .section-jp{color:#0a0a0a}
  .flow__steps{
    grid-template-columns:1fr 1fr;
    gap:12px;
    padding:0 4px;
  }
  .flow__step{
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    padding:24px 14px 20px;
    background:#fff;
    border-radius:16px;
    border:none;
    box-shadow:0 2px 12px rgba(0,0,0,0.04);
    position:relative;
  }
  .flow__step-num{
    font-size:1.1rem;
    color:var(--orange);
    font-weight:800;
    letter-spacing:.15em;
    margin-bottom:10px;
  }
  .flow__step-icon-wrap{
    width:48px;height:48px;
    background:linear-gradient(135deg,#0a0a0a,#1a1a2e);
    border:none;
    border-radius:14px;
    display:flex;align-items:center;justify-content:center;
    margin:0 auto 14px;
    color:var(--orange);
  }
  .flow__step-icon-wrap svg{width:20px;height:20px}
  .flow__step-title{
    font-size:.92rem;
    font-weight:800;
    color:#0a0a0a;
    margin-bottom:6px;
    line-height:1.4;
  }
  .flow__step-desc{
    font-size:.72rem;
    color:#888;
    font-weight:500;
    line-height:1.6;
  }
  .flow__step-arrow{display:none}
  .flow__note{margin-top:24px;font-size:.68rem;color:#aaa}
  .contact{padding-top:80px;padding-bottom:120px}
  .contact__form{padding:24px 18px}
  .contact__grid{gap:32px}
  .form-group input,
  .form-group select,
  .form-group textarea{padding:12px 14px;font-size:16px}
  .hero__inner{padding:110px 20px 80px}
  .hero__scroll{display:none}
  .sp-only{display:inline}
  .footer{padding:40px 0 100px}
  .footer__top{flex-direction:column;gap:24px;margin-bottom:24px;padding-bottom:24px}
  .form-row{grid-template-columns:1fr}
  .fixed-cta{padding:8px 10px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
  .fixed-cta a{padding:0 12px;height:52px;font-size:.82rem;letter-spacing:.02em;gap:6px;white-space:nowrap;border-radius:10px}
  .contact__methods{grid-template-columns:1fr;gap:10px}
  .contact__method{flex-direction:row;gap:12px;padding:14px 16px}
  .contact__method-icon{width:40px;height:40px;margin-bottom:0}
  .contact__method-title{font-size:.82rem}
  .contact__method-num{font-size:.9rem}
  .contact__form-header{padding:16px 20px}
  .contact__form-body{padding:20px 16px}
  .contact__form-trust{flex-direction:column;align-items:center;gap:6px;padding:12px}
  .hero__cta{min-height:52px}
  .form-submit{min-height:56px}
  .header__tel{min-height:44px;display:inline-flex;align-items:center}
  .faq__grid{grid-template-columns:1fr}
  .faq__q{padding:14px 0;min-height:48px}
  .caution{padding:32px 0;background:#f5f5f5;border-top:none}
  /* Photo strip smaller */
  .photo-strip__inner img{width:200px;height:130px}
  @keyframes stripScroll{0%{transform:translateX(0)}100%{transform:translateX(calc(-203px * 6))}}
  @keyframes stripScrollReverse{0%{transform:translateX(calc(-203px * 6))}100%{transform:translateX(0)}}
}
@media(max-width:560px){
  .problem__cards{grid-template-columns:1fr;gap:14px}
  .problem__card{min-height:auto}
  .target__grid{grid-template-columns:1fr;gap:14px}
  .target__card-visual img{height:220px}
  .target__card--featured .target__card-visual img{height:240px}
  .target__card-overlay{top:10px;left:10px;right:10px;gap:5px}
  .target__card-tag{font-size:.58rem;padding:5px 10px}
  .target__card-featured-badge{bottom:12px;right:12px;font-size:.55rem;padding:6px 10px}
}
@media(max-width:480px){
  .hero__en{font-size:clamp(2.8rem,14vw,5rem);margin-bottom:16px}
  .section-en{font-size:clamp(2rem,10vw,3rem)}
  .section-header{margin-bottom:40px}
  .hero__badges{gap:8px;margin-bottom:24px}
  .hero__badge{font-size:.55rem;letter-spacing:.1em;padding:5px 0}
  .hero__catch{font-size:clamp(1.25rem,6.2vw,1.8rem);line-height:1.55;margin-bottom:14px}
  .hero__sub{font-size:.82rem;margin-bottom:28px;line-height:1.9}
  .hero__stats{margin-bottom:28px}
  .hero__stat-item{
    padding:12px 14px;
    flex:1 1 calc(50% - 1px);
    border-right:1px solid rgba(255,255,255,0.05) !important;
  }
  .hero__stat-num{font-size:1.5rem}
  .hero__stat-unit{font-size:.7rem}
  .hero__stat-unit small{font-size:.55rem}
  .hero__stat-label{font-size:.42rem}
  .hero__cta{width:100%;justify-content:center;min-height:52px;padding:16px 24px;font-size:.78rem}
  .hero__cta-group{flex-direction:column;gap:10px}
  .hero__license{margin-top:28px;font-size:.55rem}
  .reason__grid{grid-template-columns:1fr 1fr;gap:12px}
  .reason__card-visual{aspect-ratio:4/3}
  .reason__card-body{padding:12px}
  .reason__card-title{font-size:.85rem}
  .reason__card-desc{font-size:.78rem;line-height:1.65}
  .reason__card-num{width:30px;height:30px;font-size:.6rem;top:8px;left:8px;border-radius:8px}
  .reason__card-icon{width:32px;height:32px;border-radius:8px;margin-bottom:8px}
  .achievement__item{width:240px}
  .achievement__track{gap:14px}
  .achievement__body{padding:10px 12px}
  .achievement__car{font-size:.78rem}
  .achievement__badge{font-size:.55rem;padding:4px 8px;top:8px;left:8px}
  .achievement__note{font-size:.68rem;margin-top:32px}
  @keyframes achievementScroll{
    0%{transform:translateX(0)}
    100%{transform:translateX(calc(-254px * 9))}
  }
  .promise__card{padding:24px 18px}
  .promise__card-title{font-size:.9rem}
  .promise__card-desc{font-size:.78rem}
  .flow__step{padding:0 8px}
  .flow__step-title{font-size:.85rem}
  .flow__step-desc{font-size:.72rem}
  .flow__step-icon{width:56px;height:56px}
  .contact__phone-num{font-size:clamp(1.5rem,8vw,2rem)}
  .contact__phone-label{font-size:.6rem}
  .contact__phone-note{font-size:.65rem}
  .contact__benefit{font-size:.75rem}
  .contact__form-title{font-size:.85rem}
  .caution h3{font-size:.65rem;color:#999;margin-bottom:10px}
  .caution li{font-size:.6rem;line-height:1.8;color:#999}
  .caution li::before{background:#ccc}
  .footer{padding:36px 0 100px;background:#111}
  .footer__top{
    flex-direction:column;
    align-items:center;
    text-align:center;
    gap:20px;
    margin-bottom:20px;
    padding-bottom:20px;
    border-bottom:1px solid rgba(255,255,255,0.08);
  }
  .footer__links{justify-content:center;gap:16px}
  .footer__links a{font-size:.72rem;color:rgba(255,255,255,0.5)}
  .footer__company{font-size:.7rem;letter-spacing:.15em}
  .footer__company-jp{font-size:.65rem;color:rgba(255,255,255,0.4)}
  .footer__info{font-size:.55rem;color:rgba(255,255,255,0.3);line-height:1.8}
  .footer__copy{font-size:.55rem;color:rgba(255,255,255,0.2)}
  .company__container{padding:0 12px}
  .company__heading{font-size:1.25rem;margin-bottom:20px}
  .company__hero{aspect-ratio:4/3;border-radius:10px;margin-bottom:20px}
  .company__grid{gap:24px}
  .company__info-label{font-size:.58rem}
  .company__info-value{font-size:.82rem;line-height:1.7}
  .company__map iframe{height:200px}
  .faq__q{font-size:.8rem;padding:12px 0;gap:8px}
  .faq__a{font-size:.76rem;line-height:1.7}
  .faq__icon{width:26px;height:26px;font-size:.9rem}
  .voice__slide-img{height:160px}
  .voice__slide-text{font-size:.82rem}
  .voice__slide-name{font-size:.78rem}
  .voice__controls{margin-top:28px;gap:16px}
  .marquee-strip{margin:32px 0}
  .marquee-inner span{font-size:.7rem}
  /* Photo strip even smaller */
  .photo-strip__inner img{width:160px;height:110px}
  @keyframes stripScroll{0%{transform:translateX(0)}100%{transform:translateX(calc(-163px * 6))}}
  @keyframes stripScrollReverse{0%{transform:translateX(calc(-163px * 6))}100%{transform:translateX(0)}}
  /* Target refinements */
  .target__row-title{font-size:1.15rem;line-height:1.65}
  .target__row-desc{font-size:.85rem}
  .target__row-visual{aspect-ratio:16/10;width:100%;max-width:100%;border-radius:8px}
  .target__row-visual--featured{aspect-ratio:16/10;width:100%;max-width:100%}
  .target__row-badge{font-size:.54rem;padding:5px 9px}
  .target__row-badges{gap:4px}
  .target__row-corner{font-size:.5rem;padding:5px 9px;letter-spacing:.2em}
  .problem__cards{grid-template-columns:1fr;gap:30px;padding-top:16px}
  .problem__card{padding:32px 20px 22px;border-radius:22px}
  .problem__card-photo{aspect-ratio:16/10;margin:12px 0 16px}
  .problem__card-bubble{font-size:.78rem;padding:9px 14px;max-width:calc(100% - 20px);top:-16px}
  .problem__card-caption{font-size:.9rem;line-height:1.7}
  .problem__resolve{padding:16px 12px 8px}
  .problem__resolve-badge{font-size:.82rem;padding:10px 20px;margin-bottom:20px}
  .problem__resolve-title{font-size:1.35rem;line-height:1.45}
  .problem .container,
  .reason .container,
  .promise .container,
  .target .container,
  .flow .container,
  .voice .container,
  .faq .container,
  .company .container,
  .contact .container,
  .caution .container,
  .footer .container{padding:0 16px}
  .container{padding:0 16px}
  /* Global word-break safety */
  h1,h2,h3,h4,h5,h6,p,li,td,th{word-break:keep-all;overflow-wrap:break-word}
}
@media(max-width:360px){
  .header__inner{gap:8px}
  .header__logo-main{font-size:.6rem}
  .header__logo-sub{font-size:.45rem}
  .lang-btn{font-size:.52rem;min-width:26px;padding:4px 6px}
  .hero__catch{font-size:1.15rem}
  .hero__stat-num{font-size:1.3rem}
  .fixed-cta a{font-size:.75rem;height:50px}
}

/* ========== ENHANCED ANIMATIONS & HOVER SEPARATION ========== */

/* --- Hero parallax layer --- */
.hero__inner{will-change:transform}
.hero[data-parallax] .hero__inner{transform:translateY(var(--hero-y,0))}
.hero[data-parallax] .hero__slides{transform:translateY(var(--hero-bg-y,0))}

/* --- Hero staggered entrance --- */
.hero__badges{animation:heroCatchIn .8s var(--ease) both .05s}
.hero__stats{animation:heroCatchIn .8s var(--ease) both .4s}
.hero__cta-group{animation:heroCatchIn .8s var(--ease) both .55s}

/* --- Stagger: problem cards --- */
.problem__cards .problem__card:nth-child(1){transition-delay:0s}
.problem__cards .problem__card:nth-child(2){transition-delay:.07s}
.problem__cards .problem__card:nth-child(3){transition-delay:.14s}
.problem__cards .problem__card:nth-child(4){transition-delay:.21s}
.problem__cards .problem__card:nth-child(5){transition-delay:.28s}
.problem__cards .problem__card:nth-child(6){transition-delay:.35s}

/* --- Stagger: flow steps --- */
.flow__steps .flow__step:nth-child(1){transition-delay:0s}
.flow__steps .flow__step:nth-child(2){transition-delay:.1s}
.flow__steps .flow__step:nth-child(3){transition-delay:.2s}
.flow__steps .flow__step:nth-child(4){transition-delay:.3s}

/* --- Stagger: reason cards (defined in main section) --- */

/* --- CTA shimmer --- */
.hero__cta--primary{position:relative;overflow:hidden}
.hero__cta--primary::before{
  content:'';position:absolute;top:0;left:-75%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,0.25) 50%,transparent 70%);
  animation:ctaShimmer 3.5s var(--ease) infinite 2s;
}
@keyframes ctaShimmer{0%{left:-75%}40%{left:150%}100%{left:150%}}

.form-submit{position:relative;overflow:hidden}
.form-submit::before{
  content:'';position:absolute;top:0;left:-75%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,0.2) 50%,transparent 70%);
  animation:ctaShimmer 4s var(--ease) infinite 3s;
}

/* --- Section divider (removed — clean section edges) --- */

/* ========== HOVER: PC only (prevent sticky hover on touch) ========== */
@media(hover:hover){
  .pulse:hover{transform:translateY(-2px) scale(1.03)}
  .header__nav a:hover{color:var(--text)}
  .header__tel:hover{border-color:var(--accent)}
  .problem__card:hover{
    transform:translateY(-4px);
    border-color:rgba(249,115,22,0.35);
    box-shadow:0 20px 40px rgba(15,23,42,0.10),0 0 0 1px rgba(249,115,22,0.18);
  }
  .problem__card:hover .problem__card-photo img{transform:scale(1.05)}
  .reason__card:hover{
    transform:translateY(-6px);
    border-color:rgba(249,115,22,0.3);
    box-shadow:0 24px 56px rgba(15,23,42,0.12),0 0 0 1px rgba(249,115,22,0.1);
  }
  .reason__card:hover .reason__card-visual img{transform:scale(1.08)}
  .reason__card:hover .reason__card-icon{
    background:linear-gradient(135deg,var(--orange),var(--accent));
    color:#ffffff;
    transform:scale(1.1);
  }
  .promise__card:hover,.promise__card--img:hover{
    transform:translateY(-4px);
    border-color:rgba(249,115,22,0.35);
    box-shadow:0 16px 32px rgba(15,23,42,0.08),0 0 0 1px rgba(249,115,22,0.15);
  }
  .promise__card--img:hover{transform:translateY(-6px) !important}
  .promise__card:hover .promise__card-icon,.promise__card--img:hover .promise__card-icon{
    background:#fed7aa;color:#c2410c;
  }
  .promise__card--img:hover .promise__card-icon{
    background:rgba(230,0,18,0.85) !important;color:#ffffff !important;
    filter:drop-shadow(0 0 14px rgba(249,115,22,0.7)) !important;
  }
  .promise__card--img:hover .promise__card-inner::before{transform:translateX(300%)}
  .target__row:hover .target__row-visual img{transform:scale(1.04);filter:brightness(1) saturate(1.1)}
  .target__row:hover .target__row-visual::after{opacity:1}
  .flow__step:hover .flow__step-card{
    transform:translateY(-4px);
    border-top-color:var(--accent);
    box-shadow:0 16px 36px rgba(15,23,42,0.10),0 0 0 1px rgba(249,115,22,0.15);
  }
  .flow__step:hover .flow__step-card::before{opacity:1}
  .flow__step:hover .flow__step-bignum{color:rgba(230,0,18,0.14);transform:scale(1.05)}
  .flow__step:hover .flow__step-dot{
    background:var(--orange);border-color:var(--accent);
    box-shadow:0 0 16px rgba(249,115,22,0.7);
  }
  .flow__step:hover .flow__step-dot::after{opacity:1}
  .flow__step:hover .flow__step-icon{
    color:#ff8a3d;
    box-shadow:0 10px 22px rgba(15,23,42,0.28),0 0 20px rgba(249,115,22,0.3);
    transform:rotate(-4deg) scale(1.05);
  }
  .voice__slide:hover{border-color:var(--border-hover)}
  .voice__slide:hover .voice__slide-img img{filter:brightness(.8) saturate(1);transform:scale(1.05)}
  .voice__arrow:hover{border-color:var(--text);color:var(--text)}
  .faq__item:hover{background:rgba(249,115,22,0.03)}
  .hero__cta--primary:hover{
    transform:translateY(-2px) scale(1.02);
    box-shadow:0 14px 32px rgba(230,0,18,0.4);
    filter:brightness(1.05);
  }
  .hero__cta--secondary:hover{
    border-color:#fff;transform:translateY(-2px);
    background:rgba(255,255,255,0.05);
  }
  .contact__method:hover{
    transform:translateY(-3px);
    border-color:rgba(15,23,42,0.15);
    box-shadow:0 8px 24px rgba(15,23,42,0.08);
  }
  .contact__method:hover .contact__method-icon{
    transform:scale(1.08);
  }
  .form-submit:hover{
    transform:translateY(-2px) scale(1.02);
    box-shadow:0 12px 30px rgba(230,0,18,0.4);
    filter:brightness(1.05);
  }
  .ceo__photo-frame:hover .ceo__photo{transform:scale(1.03)}
  .company__hero:hover .company__hero-img{transform:scale(1.03)}
  .contact__phone-num:hover{color:var(--accent)}
  .chat__toggle:hover{transform:scale(1.08);box-shadow:0 8px 30px rgba(196,43,59,0.5)}
  .chat__close:hover{color:var(--text)}
  .chat__send:hover{background:var(--accent-dark)}
  .fixed-cta a:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,0.15)}
  .cta-line-btn:hover{box-shadow:0 10px 28px rgba(6,199,85,0.5) !important}
  .footer__links a:hover{color:var(--accent)}
  .photo-strip__inner img:hover{filter:brightness(.95) saturate(1.1);transform:scale(1.05)}
  .achievement__item:hover{
    border-color:rgba(249,115,22,0.4);
    box-shadow:0 12px 32px rgba(0,0,0,0.3);
  }
  .achievement__item:hover .achievement__img img{transform:scale(1.08)}
}

/* ========== SCROLL-DRIVEN ENHANCEMENTS ========== */

/* Section-en: JS controls transform for scroll-linked scale */
.section-en.visible{
  transition:opacity .7s var(--ease);
  /* transform is set by JS — no CSS transition on transform */
}

/* Achievement card tilt reset transition */
.achievement__item{
  transition:transform .4s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease);
}

/* Scroll progress bar (created by JS) */
#scrollProgress{
  will-change:width;
}

/* Magnetic buttons: smooth return */
.hero__cta--primary,
.form-submit,
.contact__line{
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),filter .3s var(--ease);
}

/* Ambient hero glow on mobile — simpler */
@media(max-width:768px){
  .hero__overlay::before{width:80vw;height:80vw;top:-20%;left:-30%}
  .hero__overlay::after{width:60vw;height:60vw;bottom:-15%;right:-20%}
  @keyframes heroOrb1{
    0%{transform:translate(0,0) scale(1)}
    100%{transform:translate(4vw,6vh) scale(1.1)}
  }
  @keyframes heroOrb2{
    0%{transform:translate(0,0) scale(1)}
    100%{transform:translate(-3vw,-5vh) scale(0.95)}
  }
}

/* ========== Reduced motion ========== */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
  .photo-strip__inner{animation:none !important}
  .marquee-inner{animation:none !important}
  .hero__overlay::before,.hero__overlay::after{animation:none !important}
  #scrollProgress{display:none !important}
}

/* ==============================================================
   Review-fix additions (2026-09-06)
   PDF「株式会社スマートトータルサービス 確認事項 20260905」対応分
   ============================================================== */

/* --- A03: ファーストビューでのヘッダー可読性 --- */
/* スクロール前のヘッダー背景に暗いグラデーションを敷き、文字は白系 */
.header:not(.scrolled){
  background:linear-gradient(180deg,rgba(10,10,10,0.55) 0%,rgba(10,10,10,0.28) 60%,rgba(10,10,10,0) 100%);
}
.header:not(.scrolled) .header__logo-main,
.header:not(.scrolled) .header__logo-sub,
.header:not(.scrolled) .header__nav a,
.header:not(.scrolled) .header__tel{color:#ffffff}
.header:not(.scrolled) .header__tel{
  border-color:rgba(255,255,255,0.55);
  background:rgba(255,255,255,0.06);
}
.header:not(.scrolled) .header__hamburger span{background:#ffffff}
.header:not(.scrolled) .lang-btn{color:rgba(255,255,255,0.85)}
.header:not(.scrolled) .lang-btn:not(.active){color:rgba(255,255,255,0.75)}
.header:not(.scrolled) .lang-switcher{
  border-color:rgba(255,255,255,0.35);
  background:rgba(255,255,255,0.08);
}
.header:not(.scrolled) .lang-btn + .lang-btn{border-color:rgba(255,255,255,0.28)}

/* --- A04: スマホドロワーの文字色（ドロワー内は白系） --- */
@media(max-width:768px){
  .header__nav.open a,
  .header__nav.open a:visited{color:#ffffff}
  .header__nav.open a:hover,
  .header__nav.open a:focus{color:#ff8a3d}
}

/* --- A02: フォーム送信ステータス表示（alert置き換え） --- */
.contact__form-status{
  display:none;
  margin-top:16px;
  padding:14px 18px;
  background:rgba(6,199,85,0.08);
  border:1px solid rgba(6,199,85,0.35);
  color:#046b34;
  font-size:.85rem;
  line-height:1.7;
  letter-spacing:0.02em;
  border-radius:2px;
}
.contact__form-status.is-visible{display:block}
button[aria-busy="true"]{opacity:0.6;cursor:progress}

/* --- B15: FAQ ボタン化に伴うリセット（div→button に変更） --- */
button.faq__q{
  width:100%;
  background:none;
  border:none;
  text-align:left;
  font:inherit;
  color:inherit;
  cursor:pointer;
  letter-spacing:inherit;
}
button.faq__q:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
}

/* --- B16: タップ判定領域 44px 以上を確保（見た目は維持） --- */
/* ボイスのドット */
.voice__dot{
  position:relative;
}
.voice__dot::after{
  content:'';
  position:absolute;
  inset:-16px -6px;
  min-width:44px;
  min-height:44px;
}
/* 言語切替 */
.lang-btn{min-height:36px}
@media(max-width:768px){
  .lang-btn{min-height:44px;padding:10px 12px}
  /* ハンバーガー */
  .header__hamburger{
    width:44px;height:44px;
    align-items:center;justify-content:center;
    padding:0;
  }
  /* フッターリンク */
  .footer__links a{
    display:inline-flex;
    align-items:center;
    min-height:44px;
    padding:6px 0;
  }
}

/* --- C19: フッターの社名を語中で改行させない --- */
.footer__company,
.footer__company-jp{
  word-break:keep-all;
  overflow-wrap:normal;
}

/* --- B12: h2化に伴う見た目のリセット（h2でもp相当のスタイル） --- */
h2.section-jp{
  font-weight:700;
  font-size:clamp(1.2rem,2.8vw,1.6rem);
  margin-top:var(--sp-xs);
  letter-spacing:0em;
  line-height:1.5;
}

/* ==============================================================
   HERO — カンプ再現 (2026-09-07)
   全画面ダーク画像 + 左寄せ白文字。旧 .hero__inner 系の色/レイアウトを完全に上書き。
   ============================================================== */

/* .hero自体のBG色は元のまま。画像は::before/::after のクロスフェード */
.hero{background:#0a0a0a}

.hero__inner{
  position:relative !important;
  z-index:2 !important;
  width:100% !important;
  max-width:1280px !important;
  margin:0 auto !important;
  padding:132px 40px 100px !important;
  min-height:100vh;
  display:flex !important;
  flex-direction:column;
  justify-content:center;
  gap:0;
  color:#ffffff;
  pointer-events:auto !important;
  clip:auto !important;
  overflow:visible !important;
  white-space:normal !important;
}

/* リード（大分の愛車も / キャンピングカーも、） */
.hero__lead{margin-bottom:22px}
.hero__lead-line{
  font-weight:500;
  font-size:clamp(1.05rem,2.2vw,1.65rem);
  line-height:1.55;
  letter-spacing:0.02em;
  color:#ffffff;
}

/* オレンジ区切り線 */
.hero__divider{
  width:clamp(180px,22vw,300px);
  height:2px;
  background:var(--orange);
  margin:8px 0 32px;
}

/* 大キャッチ「もっと高く / 売れます。」 */
.hero__catch{
  font-weight:900;
  color:#ffffff;
  line-height:1.05;
  letter-spacing:-0.02em;
  margin:0 0 56px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.hero__catch-line{
  display:block;
  font-size:clamp(3.4rem,8.5vw,7.2rem);
  font-family:'Noto Sans JP','Inter',sans-serif;
  font-weight:900;
}

/* stats（3項目 + 縦区切り線） */
.hero__stats{
  display:flex !important;
  flex-direction:row !important;
  align-items:flex-start;
  gap:0;
  margin:0 0 56px;
  flex-wrap:nowrap;
  background:transparent !important;
  border:none !important;
  padding:0 !important;
  max-width:none !important;
}
.hero__stat-item{
  flex:0 0 auto;
  background:transparent !important;
  border:none !important;
  padding:0 clamp(20px,3vw,44px) !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  gap:6px;
}
.hero__stat-item:first-child{padding-left:0 !important}
.hero__stat-num-row{justify-content:center}
.hero__stat-divider{
  width:1px;
  align-self:stretch;
  background:rgba(255,255,255,0.35);
  margin:6px 0;
  min-height:88px;
}
.hero__stat-icon{
  width:auto;
  height:auto;
  margin-bottom:8px;
}
.hero__stat-icon img{
  width:clamp(44px,4.4vw,56px);
  height:clamp(44px,4.4vw,56px);
  display:block;
  object-fit:contain;
}
.hero__stat-num-row{
  display:inline-flex;
  align-items:baseline;
  gap:2px;
  color:#ffffff;
}
.hero__stat-num{
  font-family:'Inter','Noto Sans JP',sans-serif;
  font-weight:800;
  font-size:clamp(2.4rem,4.8vw,3.8rem);
  color:#ffffff !important;
  letter-spacing:-0.02em;
  line-height:1;
}
.hero__stat-suffix{
  font-family:'Inter','Noto Sans JP',sans-serif;
  font-weight:800;
  font-size:clamp(1.7rem,3.2vw,2.5rem);
  color:#ffffff;
  line-height:1;
}
.hero__stat-unit{
  font-size:clamp(.9rem,1.6vw,1.15rem);
  color:#ffffff !important;
  font-weight:500;
  letter-spacing:0.04em;
  margin-left:4px;
  background:none;
}
.hero__stat-unit small{
  font-size:1em;
  color:inherit;
}
.hero__stat-label-jp{
  font-size:clamp(.85rem,1.4vw,1rem);
  color:#ffffff;
  font-weight:500;
  letter-spacing:0.04em;
  margin-top:2px;
}
.hero__stat-label-en{
  font-family:'Inter',sans-serif;
  font-size:clamp(.72rem,1.1vw,.9rem);
  color:rgba(255,255,255,0.75);
  letter-spacing:0.15em;
  font-weight:500;
  font-feature-settings:normal;
  margin-top:2px;
}

/* SMART TOTAL SERVICE ブロック（下部左） */
.hero__brand{
  margin:0 0 40px;
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
}
.hero__brand-name{
  font-family:'Inter',sans-serif;
  font-weight:800;
  font-size:clamp(1.1rem,2vw,1.5rem);
  letter-spacing:0.18em;
  color:#ffffff;
}
.hero__brand-underline{
  width:100%;
  max-width:340px;
  height:1.5px;
  background:var(--orange);
  margin:2px 0 8px;
}
.hero__brand-sub{
  font-size:clamp(.85rem,1.4vw,1rem);
  color:#ffffff;
  font-weight:500;
  letter-spacing:0.05em;
}

/* CTA */
.hero__cta-group{
  display:flex !important;
  gap:20px !important;
  flex-wrap:wrap;
  align-items:center;
  margin:0;
}
.hero__cta{
  min-width:280px;
  min-height:60px;
  padding:18px 44px !important;
  font-size:.95rem !important;
  font-weight:700 !important;
  letter-spacing:0.08em;
}
.hero__cta--primary{
  background:linear-gradient(90deg,var(--orange) 0%,var(--accent) 100%);
  color:#ffffff !important;
  border:none;
  box-shadow:0 14px 30px rgba(249,115,22,0.35);
}
.hero__cta--secondary{
  background:rgba(0,0,0,0.28) !important;
  color:#ffffff !important;
  border:1.5px solid rgba(255,255,255,0.65) !important;
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.hero__cta--secondary:hover{
  background:rgba(255,255,255,0.1) !important;
  border-color:#ffffff !important;
}

/* 右上「実際の買取実績を掲載中」タグをカンプ通り再表示 */
.hero__record-tag{
  display:inline-flex !important;
  top:88px !important;
  right:24px !important;
  background:transparent !important;
  border:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  padding:6px 0 !important;
  color:#ffffff !important;
  font-size:.68rem !important;
  z-index:3 !important;
}
@media(max-width:768px){
  .hero__record-tag{
    top:76px !important;
    right:16px !important;
    bottom:auto !important;
    font-size:.6rem !important;
  }
}

/* ---- 中間タブレット幅（769-1024px）: 幅を絞ってオーバーフロー防止 ---- */
@media(min-width:769px) and (max-width:1024px){
  .hero__inner{padding:120px 32px 80px !important}
  .hero__stats{gap:0}
  .hero__stat-item{padding:0 clamp(14px,2vw,24px) !important}
  .hero__cta{min-width:220px;padding:16px 28px !important;font-size:.88rem !important}
}

/* ---- モバイル (≤768px) ---- */
@media(max-width:768px){
  .hero{min-height:100vh}
  .hero__inner{
    padding:112px 24px 56px !important;
    max-width:100% !important;
    justify-content:flex-start;
  }
  .hero__lead{margin-bottom:16px}
  .hero__lead-line{
    font-size:clamp(1rem,4.5vw,1.25rem);
  }
  .hero__divider{
    width:120px;
    margin:6px 0 20px;
  }
  .hero__catch{
    margin-bottom:36px;
    gap:6px;
  }
  .hero__catch-line{
    font-size:clamp(3rem,13vw,4.5rem);
  }
  .hero__stats{
    gap:0;
    margin-bottom:32px;
  }
  .hero__stat-item{
    padding:0 clamp(10px,3vw,14px) !important;
  }
  .hero__stat-item:first-child{padding-left:0 !important}
  .hero__stat-divider{min-height:70px}
  .hero__stat-icon img{
    width:36px;height:36px;
  }
  .hero__stat-num{font-size:clamp(1.7rem,7vw,2.2rem)}
  .hero__stat-suffix{font-size:clamp(1.2rem,5vw,1.5rem)}
  .hero__stat-unit{font-size:.72rem}
  .hero__stat-label-jp{font-size:.7rem}
  .hero__stat-label-en{font-size:.6rem;letter-spacing:.1em}
  .hero__brand{margin-bottom:24px}
  .hero__brand-name{font-size:.95rem}
  .hero__brand-underline{max-width:220px}
  .hero__brand-sub{font-size:.78rem}
  .hero__cta-group{gap:12px;flex-direction:column;align-items:stretch;width:100%}
  .hero__cta{
    width:100%;
    min-width:0;
    min-height:52px;
    padding:14px 20px !important;
    font-size:.88rem !important;
  }
}

/* ---- 極小幅 (≤380px) ---- */
@media(max-width:380px){
  .hero__inner{padding:104px 18px 48px !important}
  .hero__catch-line{font-size:clamp(2.4rem,12vw,3.4rem)}
  .hero__stats{gap:0}
  .hero__stat-item{padding:0 6px !important}
}

/* 旧 .hero__cta-overlay は今回不要（.hero__cta-groupで足りる） */
.hero__cta-overlay{display:none !important}

/* .header__logo と .header__nav の PC 色を白系に（HEROが常にダーク前提） */
.header:not(.scrolled) .header__logo-main,
.header:not(.scrolled) .header__logo-sub{color:#ffffff}
