/* ============================================================
   Ubens株式会社 — Corporate Site / LP
   style.css  (共通スタイル)
   ============================================================ */

/* ── Google Fonts ── */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&display=swap');

/* ── Scroll Progress Indicator (vertical) ── */
#scroll-progress-track{
  position:fixed;
  top:50%;left:20px;
  transform:translateY(-50%);
  width:2px;
  height:280px;
  background:rgba(255,255,255,.15);
  border-radius:2px;
  z-index:10000;
  pointer-events:none;
}
#scroll-progress{
  position:absolute;
  top:0;left:0;
  width:100%;
  height:0%;
  background:linear-gradient(180deg, var(--accent-dark), var(--accent), #ff6b6b);
  border-radius:2px;
  transition:height .08s linear;
}
#scroll-progress::after{
  content:'';
  position:absolute;
  bottom:-4px;left:50%;
  transform:translateX(-50%);
  width:8px;height:8px;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 8px var(--accent);
  transition:opacity .2s;
}
.progress-dot{
  position:absolute;
  left:50%;
  transform:translate(-50%,-50%);
  width:6px;height:6px;
  border-radius:50%;
  background:rgba(255,255,255,.2);
  border:1.5px solid rgba(255,255,255,.3);
  transition:background .25s, border-color .25s, box-shadow .25s;
}
.progress-dot.passed{
  background:var(--accent);
  border-color:var(--accent);
  opacity:.7;
}
.progress-dot.active{
  width:9px;height:9px;
  background:var(--accent);
  border-color:var(--accent);
  box-shadow:0 0 8px var(--accent);
}

/* ── CSS Variables ── */
:root {
  --navy-main   : #0A1931;
  --navy-sub    : #152D54;
  --accent      : #E63946;
  --accent-dark : #C1121F;
  --white       : #FFFFFF;
  --light       : #F4F6FA;
  --gray        : #8B9BB4;
  --text        : #1A1A2E;
  --text-light  : #4A5568;
  --font        : 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic Medium', 'Yu Gothic', sans-serif;
  --header-h    : 72px;
  --max-w       : 1200px;
  --ease        : cubic-bezier(.4,0,.2,1);
  --shadow      : 0 4px 20px rgba(10,25,49,.10);
  --shadow-lg   : 0 12px 48px rgba(10,25,49,.18);
}

/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:var(--font);color:var(--text);background:var(--white);line-height:1.75;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{text-decoration:none;color:inherit;transition:color .25s var(--ease)}
ul,ol{list-style:none}
button{font-family:var(--font);cursor:pointer;border:none;background:none}

/* ── Layout ── */
.container{max-width:var(--max-w);margin:0 auto;padding:0 32px}
.section{padding:112px 0}
.section--light{background:var(--light)}
.section--dark{background:var(--navy-main);color:var(--white)}
.section--navy{background:var(--navy-sub);color:var(--white)}

/* ── Typography helpers ── */
.label{
  display:inline-block;
  font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent);margin-bottom:14px;
}
.h1{font-size:clamp(36px,5.5vw,80px);font-weight:900;line-height:1.15;letter-spacing:-.03em}
.h2{font-size:clamp(28px,4vw,52px);font-weight:900;line-height:1.25;letter-spacing:-.025em}
.h3{font-size:clamp(20px,2.5vw,32px);font-weight:800;line-height:1.35;letter-spacing:-.015em}
.lead{font-size:clamp(15px,1.8vw,19px);line-height:1.85;color:var(--text-light)}
.center{text-align:center}

/* ── Buttons ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 34px;border-radius:4px;
  font-size:15px;font-weight:700;letter-spacing:.05em;
  border:2px solid transparent;transition:all .25s var(--ease);white-space:nowrap;
}
.btn--primary{background:var(--accent);color:var(--white);border-color:var(--accent)}
.btn--primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);transform:translateY(-2px);box-shadow:0 8px 28px rgba(230,57,70,.38)}
.btn--outline-white{background:transparent;color:var(--white);border-color:rgba(255,255,255,.45)}
.btn--outline-white:hover{background:rgba(255,255,255,.08);border-color:var(--white)}
.btn--lg{padding:18px 52px;font-size:17px}
.btn--block{width:100%;justify-content:center}

/* ============================================================
   HEADER
   ============================================================ */
.header{
  position:fixed;top:0;left:0;right:0;z-index:900;
  height:var(--header-h);
  background:rgba(10,25,49,.96);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(255,255,255,.07);
  transition:background .3s var(--ease);
}
.header__inner{
  display:flex;align-items:center;justify-content:space-between;
  height:100%;
}

/* Logo */
.logo{display:flex;align-items:center;gap:10px}
.logo__ruby{
  font-size:10px;
  font-weight:700;
  letter-spacing:.12em;
  color:rgba(255,255,255,.45);
  line-height:1;
  padding-top:2px;
}
.logo__img-wrap{
  height:40px;
  flex-shrink:0;
}
/* 透過PNG対応：brightness(0) invert(1) でネイビーロゴを白に */
.logo__img-wrap img{
  height:100%;
  width:auto;
  max-width:none;
  display:block;
  filter:brightness(0) invert(1);
}
.logo__text{
  font-size:20px;font-weight:900;color:var(--white);letter-spacing:.06em;
}
.logo__tagline{font-size:9px;color:rgba(255,255,255,.4);letter-spacing:.1em;display:block;margin-top:1px}

/* Nav */
.nav{display:flex;align-items:center;gap:40px}
.nav__list{display:flex;gap:32px}
.nav__link{
  color:rgba(255,255,255,.75);font-size:14px;font-weight:500;letter-spacing:.04em;
  position:relative;padding-bottom:3px;
}
.nav__link::after{
  content:'';position:absolute;bottom:0;left:0;width:0;height:1.5px;
  background:var(--accent);transition:width .3s var(--ease);
}
.nav__link:hover{color:var(--white)}
.nav__link:hover::after{width:100%}

/* Hamburger */
.hamburger{
  display:none;flex-direction:column;gap:5px;
  padding:8px;background:none;border:none;
}
.hamburger__line{
  width:24px;height:2px;background:var(--white);
  border-radius:2px;transition:all .25s var(--ease);
  display:block;
}
.hamburger.is-open .hamburger__line:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.is-open .hamburger__line:nth-child(2){opacity:0}
.hamburger.is-open .hamburger__line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* Mobile Nav */
.mobile-nav{
  display:none;
  position:fixed;top:var(--header-h);left:0;right:0;
  background:var(--navy-main);
  padding:0 24px 32px;
  border-top:1px solid rgba(255,255,255,.07);
  z-index:899;
}
.mobile-nav.is-open{display:block}
.mobile-nav__link{
  display:block;color:rgba(255,255,255,.75);font-size:16px;font-weight:500;
  padding:18px 0;border-bottom:1px solid rgba(255,255,255,.07);
}
.mobile-nav__link:hover{color:var(--white)}
.mobile-nav__cta{margin-top:24px;display:block}

/* ============================================================
   HERO  (index.html)
   ============================================================ */
.hero{
  min-height:100vh;
  background:var(--navy-main);
  display:flex;align-items:center;
  padding-top:var(--header-h);
  position:relative;overflow:hidden;
}
.hero__bg-grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
  background-size:64px 64px;
  pointer-events:none;
}
.hero__glow{
  position:absolute;
  width:900px;height:900px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(21,45,84,.9) 0%,transparent 70%);
  top:-200px;right:-200px;
  pointer-events:none;
}
.hero__glow2{
  position:absolute;
  width:600px;height:600px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(230,57,70,.06) 0%,transparent 70%);
  bottom:-100px;left:0;
  pointer-events:none;
}
.hero__content{position:relative;z-index:1;max-width:820px}
.hero__chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 18px;border-radius:100px;
  background:rgba(230,57,70,.12);
  border:1px solid rgba(230,57,70,.28);
  color:#FF7F87;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  margin-bottom:36px;
}
.hero__chip-dot{
  width:7px;height:7px;background:var(--accent);border-radius:50%;
  animation:blink 2s ease-in-out infinite;
}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}

.hero__title{
  font-size:clamp(38px,6.5vw,88px);font-weight:900;
  color:var(--white);line-height:1.12;letter-spacing:-.04em;
  margin-bottom:28px;
}
.hero__title em{
  font-style:normal;
  background:linear-gradient(135deg, var(--accent) 0%, #ff8fa3 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.hero__subtitle{
  font-size:clamp(15px,1.8vw,20px);color:rgba(255,255,255,.6);
  line-height:1.85;max-width:560px;margin-bottom:52px;
}
.hero__btns{display:flex;gap:16px;flex-wrap:wrap}
.hero__scroll{
  position:absolute;bottom:40px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  color:rgba(255,255,255,.3);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
}
.hero__scroll-line{
  width:1px;height:52px;
  background:linear-gradient(to bottom,rgba(255,255,255,.35),transparent);
  animation:scrollAnim 2.2s ease-in-out infinite;
}
@keyframes scrollAnim{
  0%{transform:scaleY(0);transform-origin:top}
  49%{transform:scaleY(1);transform-origin:top}
  50%{transform:scaleY(1);transform-origin:bottom}
  100%{transform:scaleY(0);transform-origin:bottom}
}

/* Stats Bar */
.stats-bar{background:var(--navy-sub);padding:48px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.stats-bar__grid{display:grid;grid-template-columns:repeat(3,1fr);text-align:center}
.stat{padding:0 32px;border-right:1px solid rgba(255,255,255,.1)}
.stat:last-child{border-right:none}
.stat__num{
  font-size:clamp(36px,4.5vw,56px);font-weight:900;color:var(--white);
  letter-spacing:-.03em;line-height:1;margin-bottom:8px;
}
.stat__num span{color:var(--accent)}
.stat__label{font-size:12px;color:rgba(255,255,255,.45);letter-spacing:.06em}

/* ============================================================
   STORY SECTION
   ============================================================ */
.story{padding:128px 0;background:var(--white)}
.story__inner{
  display:grid;grid-template-columns:1fr 1fr;
  gap:96px;align-items:center;
}
/* Visual side */
.story__visual{position:relative}
.story__visual-main{
  width:100%;aspect-ratio:3/4;
  background:linear-gradient(160deg,var(--navy-sub) 0%,var(--navy-main) 100%);
  border-radius:12px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  position:relative;
}
.story__visual-main::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 40% 60%,rgba(230,57,70,.1) 0%,transparent 65%);
}
.story__visual-icon{font-size:96px;opacity:.15;user-select:none}
.story__quote{
  position:absolute;bottom:-28px;right:-28px;
  background:var(--white);border-radius:10px;
  padding:24px 28px;
  box-shadow:var(--shadow-lg);
  max-width:260px;
  border-left:4px solid var(--accent);
}
.story__quote-text{
  font-size:14px;font-weight:600;color:var(--text);
  line-height:1.65;font-style:italic;margin-bottom:10px;
}
.story__quote-author{font-size:11px;color:var(--gray);font-weight:500;letter-spacing:.04em}

/* Content side */
.story__content .label{margin-bottom:14px}
.story__heading{
  font-size:clamp(26px,3.2vw,44px);font-weight:900;
  color:var(--navy-main);line-height:1.28;letter-spacing:-.025em;
  margin-bottom:32px;
}
.story__body{font-size:15px;color:var(--text-light);line-height:1.95;margin-bottom:40px}
.story__body p+p{margin-top:18px}
.story__sig{
  display:flex;align-items:center;gap:16px;
  padding-top:32px;border-top:1px solid rgba(0,0,0,.08);
}
.story__sig-avatar{
  width:52px;height:52px;border-radius:50%;background:var(--navy-sub);
  display:flex;align-items:center;justify-content:center;
  font-size:22px;color:rgba(255,255,255,.7);flex-shrink:0;
}
.story__sig-name{font-size:15px;font-weight:700;color:var(--navy-main)}
.story__sig-title{font-size:11px;color:var(--gray);margin-top:2px;letter-spacing:.04em}

/* ============================================================
   PROBLEMS SECTION
   ============================================================ */
.problems{background:var(--navy-main);padding:112px 0;overflow:hidden}
.problems__header{text-align:center;margin-bottom:72px}
.problems__grid{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:2px;background:rgba(255,255,255,.06);
}
.problem-card{
  background:rgba(10,25,49,.55);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.06);
  padding:44px 40px;
  display:flex;gap:22px;align-items:flex-start;
  transition:background .3s var(--ease), transform .3s var(--ease), box-shadow .3s var(--ease);
}
.problem-card:hover{
  background:rgba(21,45,84,.8);
  transform:translateY(-4px);
  box-shadow:0 20px 48px rgba(0,0,0,.35);
}
.problem-card__icon{
  width:52px;height:52px;flex-shrink:0;
  background:rgba(230,57,70,.13);border:1px solid rgba(230,57,70,.28);
  border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:24px;
}
.problem-card__title{font-size:17px;font-weight:700;color:var(--white);margin-bottom:8px}
.problem-card__desc{font-size:13px;color:rgba(255,255,255,.5);line-height:1.75}

/* ============================================================
   SOLUTION SECTION
   ============================================================ */
.solution{padding:120px 0;background:var(--white)}
.solution__header{text-align:center;margin-bottom:80px}
.solution__header .lead{max-width:560px;margin:0 auto}
.solution__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:0}
.sol-card{
  background:rgba(255,255,255,.75);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-radius:14px;padding:44px 34px;
  border:1px solid rgba(255,255,255,.6);
  transition:all .3s var(--ease);position:relative;overflow:hidden;
}
.sol-card::after{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--navy-sub));
  opacity:0;transition:opacity .3s var(--ease);
}
.sol-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg);border-color:transparent}
.sol-card:hover::after{opacity:1}
.sol-card__num{font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.12em;margin-bottom:18px}
.sol-card__icon{font-size:44px;margin-bottom:22px;display:block}
.sol-card__title{font-size:19px;font-weight:800;color:var(--navy-main);margin-bottom:14px;line-height:1.4}
.sol-card__desc{font-size:14px;color:var(--text-light);line-height:1.85}

/* ============================================================
   COMPANY BRIEF  (index only)
   ============================================================ */
.co-brief{padding:104px 0;background:var(--light)}
.co-brief__inner{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.co-brief__values{display:flex;flex-direction:column;gap:14px;margin-top:28px}
.co-brief__value-item{
  display:flex;align-items:center;gap:12px;
  font-size:14px;font-weight:500;color:var(--text-light);
}
.co-brief__value-dot{width:8px;height:8px;background:var(--accent);border-radius:50%;flex-shrink:0}

/* ============================================================
   CTA / FORM SECTION
   ============================================================ */
.cta-section{
  background:var(--navy-main);padding:128px 0;
  position:relative;overflow:hidden;
}
.cta-section__bg{
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse at 85% 0%,rgba(230,57,70,.07) 0%,transparent 55%),
    radial-gradient(ellipse at 15% 100%,rgba(21,45,84,.5) 0%,transparent 50%);
  pointer-events:none;
}
.cta-section__inner{position:relative;z-index:1}
.cta-section__header{text-align:center;margin-bottom:64px}
.cta-section__title{
  font-size:clamp(28px,4.5vw,56px);font-weight:900;
  color:var(--white);line-height:1.22;margin-bottom:18px;letter-spacing:-.025em;
}
.cta-section__sub{font-size:16px;color:rgba(255,255,255,.6);line-height:1.8}

/* Contact bar */
.contact-bar{
  display:flex;justify-content:center;gap:56px;
  margin-bottom:64px;flex-wrap:wrap;
}
.contact-bar__item{display:flex;align-items:center;gap:14px}
.contact-bar__icon{
  width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.07);
  display:flex;align-items:center;justify-content:center;
  font-size:18px;flex-shrink:0;
}
.contact-bar__label{font-size:10px;color:rgba(255,255,255,.4);letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:2px}
.contact-bar__value{font-size:16px;font-weight:700;color:var(--white)}
.contact-bar__value a{color:inherit;transition:color .2s}
.contact-bar__value a:hover{color:var(--accent)}

/* Form */
.contact-form{
  max-width:700px;margin:0 auto;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.1);
  border-radius:18px;padding:60px 52px;
}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.form-group{margin-bottom:22px}
.form-label{
  display:block;font-size:12px;font-weight:700;
  color:rgba(255,255,255,.65);letter-spacing:.06em;
  text-transform:uppercase;margin-bottom:8px;
}
.form-label .req{color:var(--accent);margin-left:3px;font-size:10px}
.form-input{
  width:100%;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.14);border-radius:6px;
  padding:13px 16px;color:var(--white);font-size:15px;font-family:var(--font);
  outline:none;transition:all .2s var(--ease);
}
.form-input::placeholder{color:rgba(255,255,255,.25)}
.form-input:focus{border-color:rgba(230,57,70,.5);background:rgba(255,255,255,.08);box-shadow:0 0 0 3px rgba(230,57,70,.09)}
.form-checks{display:flex;flex-direction:column;gap:12px;margin-top:4px}
.check-label{
  display:flex;align-items:center;gap:10px;
  font-size:14px;color:rgba(255,255,255,.65);cursor:pointer;
  transition:color .2s;
}
.check-label:hover{color:var(--white)}
.check-label input[type="checkbox"]{
  width:17px;height:17px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;
}
.form-submit{margin-top:36px}
.form-note{text-align:center;font-size:11px;color:rgba(255,255,255,.3);margin-top:14px;line-height:1.7}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:#050D1A;padding:72px 0 36px}
.footer__top{
  display:grid;grid-template-columns:1.6fr 1fr 1fr;
  gap:72px;padding-bottom:56px;
  border-bottom:1px solid rgba(255,255,255,.07);
  margin-bottom:36px;
}
.footer__brand-logo{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.footer__brand-name{font-size:20px;font-weight:900;color:var(--white)}
.footer__brand-desc{font-size:12px;color:rgba(255,255,255,.35);line-height:1.85;max-width:280px}
.footer__col-title{
  font-size:11px;font-weight:700;color:var(--white);
  letter-spacing:.12em;text-transform:uppercase;margin-bottom:22px;
}
.footer__nav-list{display:flex;flex-direction:column;gap:12px}
.footer__nav-link{font-size:13px;color:rgba(255,255,255,.45);transition:color .2s}
.footer__nav-link:hover{color:var(--white)}
.footer__bottom{
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:16px;
}
.footer__copy{font-size:11px;color:rgba(255,255,255,.25)}
.footer__legal{display:flex;gap:24px}
.footer__legal-link{font-size:11px;color:rgba(255,255,255,.35);transition:color .2s}
.footer__legal-link:hover{color:var(--white)}

/* ============================================================
   PAGE HERO  (inner pages)
   ============================================================ */
.page-hero{
  background:var(--navy-main);
  padding:168px 0 104px;
  position:relative;overflow:hidden;
}
.page-hero__grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);
  background-size:64px 64px;
  pointer-events:none;
}
.page-hero__content{position:relative;z-index:1;text-align:center;max-width:780px;margin:0 auto}
.page-hero__breadcrumb{
  display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:12px;color:rgba(255,255,255,.4);margin-bottom:24px;letter-spacing:.05em;
}
.page-hero__breadcrumb a{color:rgba(255,255,255,.4);transition:color .2s}
.page-hero__breadcrumb a:hover{color:rgba(255,255,255,.8)}
.page-hero__sep{color:rgba(255,255,255,.2)}
.page-hero__title{
  font-size:clamp(30px,5vw,64px);font-weight:900;
  color:var(--white);letter-spacing:-.03em;line-height:1.22;
  margin-bottom:22px;
}
.page-hero__sub{font-size:17px;color:rgba(255,255,255,.55);line-height:1.8}

/* ============================================================
   PRODUCT PAGE — Feature Blocks
   ============================================================ */
.features-intro{padding:96px 0 64px;background:var(--white)}
.features-intro__text{max-width:720px;margin:0 auto;text-align:center}

.feature-block{padding:96px 0;background:var(--white)}
.feature-block:nth-child(even){background:var(--light)}
.feature-block__inner{
  display:grid;grid-template-columns:1fr 1fr;
  gap:80px;align-items:center;
}
.feature-block__inner--rev{direction:rtl}
.feature-block__inner--rev>*{direction:ltr}

.feature-visual{
  background:linear-gradient(145deg,var(--navy-sub) 0%,var(--navy-main) 100%);
  border-radius:16px;aspect-ratio:16/10;
  display:flex;align-items:center;justify-content:center;
  position:relative;overflow:hidden;
}
.feature-visual::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 50%,rgba(230,57,70,.08) 0%,transparent 65%);
}
.feature-visual__icon{font-size:88px;opacity:.2;user-select:none;position:relative;z-index:1}
.feature-visual__label{
  position:absolute;bottom:16px;left:16px;
  background:rgba(230,57,70,.9);color:var(--white);
  font-size:11px;font-weight:700;letter-spacing:.1em;
  padding:6px 14px;border-radius:100px;
  text-transform:uppercase;
  z-index:1;
}

.feature-content__tag{
  display:inline-block;
  background:rgba(230,57,70,.1);color:var(--accent);
  font-size:11px;font-weight:700;letter-spacing:.1em;
  padding:6px 14px;border-radius:100px;margin-bottom:20px;text-transform:uppercase;
}
/* 開発中バッジ */
.wip-badge{
  display:inline-block;
  background:rgba(139,155,180,.15);
  color:var(--gray);
  font-size:11px;font-weight:700;letter-spacing:.08em;
  padding:5px 12px;border-radius:100px;
  border:1px solid rgba(139,155,180,.3);
}
.feature-block--wip .feature-content__title,
.feature-block--wip .feature-content__desc,
.feature-block--wip .feature-list__item{
  opacity:.55;
}
.feature-visual--wip{
  opacity:.45;
  filter:grayscale(.5);
}

.feature-content__service-name{
  font-size:22px;font-weight:900;letter-spacing:.04em;
  color:var(--navy-main);margin-bottom:10px;
}
.feature-content__title{
  font-size:clamp(22px,3vw,38px);font-weight:900;
  color:var(--navy-main);line-height:1.3;margin-bottom:20px;
}
.feature-content__desc{font-size:15px;color:var(--text-light);line-height:1.9;margin-bottom:32px}
.feature-list{display:flex;flex-direction:column;gap:13px}
.feature-list__item{display:flex;align-items:flex-start;gap:12px;font-size:14px;color:var(--text-light);line-height:1.65}
.feature-list__check{
  width:21px;height:21px;border-radius:50%;
  background:var(--accent);
  display:flex;align-items:center;justify-content:center;
  color:white;font-size:11px;font-weight:700;flex-shrink:0;margin-top:1px;
}

/* Benefits */
.benefits{background:var(--navy-main);padding:100px 0}
.benefits__header{text-align:center;margin-bottom:72px}
.benefits__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.benefit-card{
  padding:44px 32px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;text-align:center;
  transition:all .3s var(--ease);
}
.benefit-card:hover{background:rgba(255,255,255,.07);transform:translateY(-6px)}
.benefit-card__num{
  font-size:56px;font-weight:900;color:var(--accent);
  line-height:1;margin-bottom:18px;letter-spacing:-.04em;
}
.benefit-card__num sub{font-size:22px}
.benefit-card__title{font-size:17px;font-weight:700;color:var(--white);margin-bottom:12px;line-height:1.4}
.benefit-card__desc{font-size:13px;color:rgba(255,255,255,.45);line-height:1.75}

/* ============================================================
   COMPANY PAGE
   ============================================================ */
.co-mvv{padding:100px 0;background:var(--white)}
.co-mvv__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-template-rows:auto auto;
  gap:24px;
  margin-bottom:0;
}
.mvv-card{padding:44px;border-radius:14px;position:relative;overflow:hidden}
.mvv-card--mission{background:var(--navy-main);color:var(--white);grid-column:span 2}
.mvv-card--vision{background:var(--accent);color:var(--white)}
.mvv-card--values{background:var(--light);grid-column:span 3}
.mvv-card__label{
  display:block;font-size:10px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;opacity:.55;margin-bottom:14px;
}
.mvv-card--values .mvv-card__label{color:var(--navy-main)}
.mvv-card__text{font-size:clamp(17px,2.2vw,26px);font-weight:900;line-height:1.45}
.mvv-card--values .mvv-card__text{font-size:17px;color:var(--navy-main)}
.values-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.value-tag{
  padding:8px 20px;background:var(--white);border-radius:100px;
  font-size:13px;font-weight:600;color:var(--navy-main);
  box-shadow:0 2px 8px rgba(0,0,0,.07);
}

/* ── CEO Message Section ── */
.co-msg{padding:96px 0;background:var(--white)}
.co-msg__inner{
  display:grid;
  grid-template-columns:240px 1fr;
  gap:64px;
  align-items:start;
  max-width:900px;
  margin:0 auto;
}
.co-msg__photo-wrap{text-align:center}
.co-msg__photo{
  width:100%;aspect-ratio:1/1;
  background:linear-gradient(145deg,var(--navy-sub),var(--navy-main));
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:80px;color:rgba(255,255,255,.2);
  overflow:hidden;margin-bottom:16px;
}
.co-msg__photo img{width:100%;height:100%;object-fit:cover}
.co-msg__photo-name{font-size:15px;font-weight:700;color:var(--navy-main)}
.co-msg__photo-title{font-size:12px;color:var(--gray);margin-top:3px;letter-spacing:.04em}
.co-msg__heading{
  font-size:clamp(20px,2.4vw,30px);font-weight:900;
  color:var(--navy-main);line-height:1.4;letter-spacing:-.02em;
  margin-bottom:28px;
}
.co-msg__quote{
  border-left:4px solid var(--accent);
  padding-left:20px;
  font-size:16px;font-weight:700;
  color:var(--navy-main);line-height:1.65;
  margin:24px 0;font-style:italic;
}
.co-msg__body{font-size:15px;color:var(--text-light);line-height:1.95}
.co-msg__body p+p{margin-top:16px}
.co-msg__sig{
  margin-top:32px;padding-top:24px;
  border-top:1px solid rgba(0,0,0,.08);
  text-align:right;
  font-size:14px;font-weight:700;color:var(--navy-main);
  letter-spacing:.04em;
}
@media(max-width:768px){
  .co-msg__inner{grid-template-columns:1fr;gap:36px}
  .co-msg__photo{width:140px;height:140px;aspect-ratio:unset;margin:0 auto 16px}
}

.co-table-section{padding:80px 0;background:var(--light)}
.co-table{
  width:100%;border-collapse:separate;border-spacing:0;
  background:var(--white);border-radius:14px;overflow:hidden;
  box-shadow:var(--shadow);
}
.co-table tr:not(:last-child) th,
.co-table tr:not(:last-child) td{border-bottom:1px solid rgba(0,0,0,.06)}
.co-table th{
  width:200px;background:var(--light);padding:22px 28px;
  font-size:13px;font-weight:700;color:var(--navy-main);
  text-align:left;vertical-align:top;letter-spacing:.03em;
}
.co-table td{padding:22px 28px;font-size:15px;color:var(--text-light);line-height:1.75;vertical-align:top}

/* ============================================================
   PRIVACY PAGE
   ============================================================ */
.privacy{padding:80px 0 120px}
.privacy__inner{max-width:820px;margin:0 auto}
.privacy__updated{font-size:13px;color:var(--gray);margin-bottom:52px}
.prv-article{margin-bottom:52px}
.prv-article__title{
  font-size:19px;font-weight:800;color:var(--navy-main);
  padding-bottom:12px;border-bottom:2px solid var(--accent);
  display:inline-block;margin-bottom:18px;
}
.prv-article__body{font-size:15px;color:var(--text-light);line-height:1.95}
.prv-article__body p+p{margin-top:14px}
.prv-article__body ul{padding-left:20px;margin-top:12px}
.prv-article__body ul li{list-style:disc;margin-bottom:8px;font-size:14px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:1024px){
  :root{--max-w:960px}
  .story__inner{grid-template-columns:1fr;gap:56px}
  .story__visual{display:none}
  .solution__grid{grid-template-columns:repeat(2,1fr)}
  .feature-block__inner{grid-template-columns:1fr;gap:40px}
  .feature-block__inner--rev{direction:ltr}
  .footer__top{grid-template-columns:1fr 1fr;gap:40px}
  .footer__brand{grid-column:span 2}
  .co-mvv__grid{grid-template-columns:1fr 1fr}
  .mvv-card--mission{grid-column:span 2}
  .mvv-card--values{grid-column:span 2}
  .co-brief__inner{grid-template-columns:1fr;gap:40px}
}

@media(max-width:768px){
  :root{--header-h:64px}
  .section{padding:72px 0}
  .container{padding:0 20px}
  .nav__list{display:none}
  .nav .btn{display:none}
  .hamburger{display:flex}
  .hero{min-height:88vh}
  .hero__btns .btn--outline-white{display:none}
  .stats-bar__grid{grid-template-columns:1fr;gap:0}
  .stat{border-right:none;border-bottom:1px solid rgba(255,255,255,.08);padding:20px 0}
  .stat:last-child{border-bottom:none}
  .problems__grid{grid-template-columns:1fr}
  .solution__grid{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .contact-form{padding:36px 24px}
  .contact-bar{flex-direction:column;align-items:flex-start;gap:24px}
  .footer__top{grid-template-columns:1fr}
  .footer__brand{grid-column:span 1}
  .footer__bottom{flex-direction:column;text-align:center}
  .benefits__grid{grid-template-columns:1fr}
  .co-mvv__grid{grid-template-columns:1fr}
  .mvv-card--mission,.mvv-card--values{grid-column:span 1}
  .co-table th{width:110px;padding:14px 16px;font-size:12px}
  .co-table td{padding:14px 16px;font-size:13px}
  .page-hero{padding:120px 0 72px}
}

@media(max-width:480px){
  .hero__title{font-size:34px}
  .cta-section__title{font-size:26px}
  .contact-form{padding:28px 18px}
}

/* ============================================================
   TARGET SECTION — こんな方へ チェックリスト
   ============================================================ */
.target-section{padding:96px 0;background:var(--light)}
.target-section__inner{max-width:680px;margin:0 auto;text-align:center}
.target-list{
  text-align:left;margin:0 auto;max-width:600px;
  display:flex;flex-direction:column;gap:16px;
}
.target-list__item{
  display:flex;align-items:flex-start;gap:16px;
  padding:22px 28px;
  background:var(--white);border-radius:12px;
  box-shadow:0 2px 14px rgba(10,25,49,.07);
  border-left:4px solid var(--accent);
  font-size:15px;line-height:1.65;color:var(--text);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease);
}
.target-list__item:hover{
  transform:translateX(4px);
  box-shadow:0 6px 24px rgba(10,25,49,.12);
}
.target-list__check{
  flex-shrink:0;width:28px;height:28px;border-radius:50%;
  background:var(--accent);color:white;
  font-size:14px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  margin-top:1px;
}
.target-section__closing{
  margin-top:44px;
  font-size:17px;font-weight:700;color:var(--navy-main);
  line-height:1.75;
}

/* ============================================================
   HOW IT WORKS — 3ステップ
   ============================================================ */
.hiw-section{padding:96px 0;background:var(--navy-main)}
.hiw-section__header{text-align:center;margin-bottom:64px}
.hiw-steps{
  display:flex;align-items:stretch;justify-content:center;gap:0;
}
.hiw-step{
  flex:1;max-width:300px;text-align:center;
  padding:44px 32px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  transition:background .3s var(--ease),transform .3s var(--ease);
}
.hiw-step:hover{
  background:rgba(255,255,255,.07);
  transform:translateY(-4px);
}
.hiw-arrow{
  flex-shrink:0;align-self:center;
  font-size:28px;color:var(--accent);
  padding:0 20px;
  opacity:.7;
}
.hiw-step__num{
  font-size:11px;font-weight:900;letter-spacing:.18em;
  color:var(--accent);margin-bottom:18px;
}
.hiw-step__icon{
  display:flex;align-items:center;justify-content:center;
  width:72px;height:72px;
  background:rgba(230,57,70,.12);
  border:1.5px solid rgba(230,57,70,.3);
  border-radius:20px;
  color:var(--accent);
  margin:0 auto 18px;
}
.hiw-step__title{
  font-size:17px;font-weight:800;line-height:1.5;
  color:var(--white);margin-bottom:14px;letter-spacing:-.01em;
}
.hiw-step__desc{
  font-size:13px;line-height:1.85;
  color:rgba(255,255,255,.5);
}
@media(max-width:768px){
  .hiw-steps{flex-direction:column;align-items:center;gap:0}
  .hiw-step{max-width:100%;width:100%}
  .hiw-arrow{padding:12px 0;transform:rotate(90deg)}
}

/* ============================================================
   OFFER BANNER — 限定トライアル
   ============================================================ */
.offer-banner{
  background:linear-gradient(135deg,rgba(230,57,70,.18) 0%,rgba(193,18,31,.12) 100%);
  border:1.5px solid rgba(230,57,70,.45);
  border-radius:12px;
  padding:20px 28px;
  margin-bottom:52px;
}
.offer-banner__inner{
  display:flex;align-items:center;gap:20px;flex-wrap:wrap;justify-content:center;
}
.offer-banner__badge{
  background:var(--accent);color:white;
  font-size:11px;font-weight:900;letter-spacing:.08em;
  padding:5px 14px;border-radius:100px;white-space:nowrap;
}
.offer-banner__text{
  font-size:14px;font-weight:700;color:rgba(255,255,255,.9);
  flex:1;min-width:200px;line-height:1.55;
}
.offer-banner__seats{
  font-size:13px;color:rgba(255,255,255,.5);white-space:nowrap;
}
.offer-banner__seats strong{
  color:var(--accent);font-size:24px;font-weight:900;
}

/* ── PC のみ nowrap ── */
.nowrap-pc{ white-space:nowrap }
@media(max-width:768px){
  .nowrap-pc{ white-space:normal }
}

/* ── Visually Hidden (SEO用・非表示H1等) ── */
.visually-hidden{
  position:absolute;width:1px;height:1px;
  padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ── Concept Section（現場主義） ── */
.concept-section{
  background:#0d2040;
  padding:100px 0;
  position:relative;
  overflow:hidden;
}
.concept-section::after{
  content:"";
  position:absolute;
  right:-120px;bottom:-120px;
  width:480px;height:480px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(230,57,70,.07) 0%,transparent 70%);
  pointer-events:none;
}
.concept-section__header{
  text-align:center;
  margin-bottom:64px;
}
.concept-section__title{
  font-size:clamp(28px,4.5vw,52px);
  font-weight:900;
  color:#fff;
  line-height:1.25;
  letter-spacing:-.03em;
  margin-top:16px;
}
.concept-section__body{
  display:flex;
  gap:48px;
  max-width:820px;
  margin:0 auto 56px;
  align-items:flex-start;
}
.concept-section__accent{
  flex-shrink:0;
  width:4px;
  min-height:180px;
  background:linear-gradient(180deg,var(--accent) 0%,rgba(230,57,70,0) 100%);
  border-radius:2px;
  margin-top:4px;
}
.concept-section__text p{
  font-size:16px;
  color:rgba(255,255,255,.65);
  line-height:2;
  margin-bottom:20px;
}
.concept-section__text p:last-child{
  margin-bottom:0;
}
.concept-section__emphasis{
  color:rgba(255,255,255,.9) !important;
  font-weight:700;
  font-size:17px !important;
  border-top:1px solid rgba(255,255,255,.1);
  padding-top:20px;
  margin-top:8px;
}
.concept-section__tags{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  justify-content:center;
  max-width:820px;
  margin:0 auto;
}
.concept-tag{
  font-size:12px;
  font-weight:700;
  letter-spacing:.06em;
  color:rgba(255,255,255,.5);
  border:1px solid rgba(255,255,255,.15);
  border-radius:100px;
  padding:5px 16px;
}
@media(max-width:768px){
  .concept-section__body{
    gap:28px;
  }
  .concept-section__accent{
    min-height:auto;
    width:3px;
  }
  .concept-section__text p{
    font-size:15px;
  }
}

/* ── Service Divider（受託サービス区切り） ── */
.service-divider{
  background:var(--navy-main);
  padding:80px 0;
  position:relative;
  overflow:hidden;
}
.service-divider::before{
  content:"";
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:48px 48px;
  pointer-events:none;
}
.service-divider__inner{
  position:relative;z-index:1;
  text-align:center;
}
.service-divider__label{
  display:inline-block;
  font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;
  color:var(--accent);
  border:1px solid rgba(230,57,70,.4);
  border-radius:100px;
  padding:4px 16px;
  margin-bottom:20px;
}
.service-divider__title{
  font-size:clamp(26px,4vw,44px);
  font-weight:900;
  color:#fff;
  line-height:1.25;
  letter-spacing:-.02em;
  margin-bottom:20px;
}
.service-divider__desc{
  font-size:15px;
  color:rgba(255,255,255,.55);
  line-height:1.9;
  max-width:600px;
  margin:0 auto;
}

/* ── Feature Visual — SVG対応 ── */
.feature-visual svg{
  color:var(--accent);
  display:block;
}

/* ── FAQ Section ── */
.faq-section{
  padding:100px 0;
  background:var(--bg-light);
}
.faq-list{
  max-width:800px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:0;
}
.faq-item{
  border-bottom:1px solid rgba(10,25,49,.1);
  padding:28px 0;
}
.faq-item:first-child{
  border-top:1px solid rgba(10,25,49,.1);
}
.faq-q{
  font-size:16px;
  font-weight:800;
  color:var(--navy-main);
  line-height:1.6;
  padding-left:28px;
  position:relative;
  margin-bottom:12px;
}
.faq-q::before{
  content:"Q";
  position:absolute;
  left:0;
  color:var(--accent);
  font-weight:900;
  font-size:15px;
}
.faq-a{
  font-size:14px;
  color:var(--text-light);
  line-height:1.85;
  padding-left:28px;
  position:relative;
}
.faq-a::before{
  content:"A";
  position:absolute;
  left:0;
  color:var(--navy-main);
  font-weight:900;
  font-size:15px;
  opacity:.4;
}

/* ── News Section ── */
.news-section{
  padding:100px 0;
  background:var(--bg-light);
}
.news-section__header{
  margin-bottom:48px;
}
.news-list{
  list-style:none;
  border-top:1px solid rgba(10,25,49,.1);
}
.news-item{
  display:flex;
  align-items:center;
  gap:20px;
  padding:24px 0;
  border-bottom:1px solid rgba(10,25,49,.1);
  flex-wrap:wrap;
}
.news-item__date{
  font-size:13px;
  color:var(--text-light);
  font-weight:600;
  letter-spacing:.05em;
  white-space:nowrap;
  min-width:80px;
}
.news-item__tag{
  font-size:11px;
  font-weight:700;
  letter-spacing:.08em;
  padding:3px 12px;
  border-radius:100px;
  white-space:nowrap;
  background:rgba(10,25,49,.08);
  color:var(--navy-main);
}
.news-item__tag--service{
  background:rgba(230,57,70,.1);
  color:var(--accent);
}
.news-item__title{
  font-size:15px;
  font-weight:600;
  color:var(--text-dark);
  line-height:1.6;
  flex:1;
}

/* ── Google Form iframe wrapper ── */
.google-form-wrapper{
  border-radius:16px;
  overflow:hidden;
  background:#fff;
  min-height:1152px;
  box-shadow:0 8px 40px rgba(0,0,0,.18);
}
.google-form-wrapper iframe{
  display:block;
  min-height:1152px;
}

/* ── Custom Cursor ── */
#cursor-dot{
  position:fixed;
  width:8px;height:8px;
  background:var(--accent);
  border-radius:50%;
  pointer-events:none;
  z-index:99999;
  left:-20px;top:-20px;
  transform:translate(-50%,-50%);
  transition:transform .15s var(--ease), width .2s, height .2s;
}
#cursor-ring{
  position:fixed;
  width:32px;height:32px;
  border:1.5px solid rgba(230,57,70,.55);
  border-radius:50%;
  pointer-events:none;
  z-index:99998;
  left:-20px;top:-20px;
  transform:translate(-50%,-50%);
  transition:border-color .2s, width .2s, height .2s;
}
@media(hover:none){
  #cursor-dot,#cursor-ring{display:none}
}
