/* ============================================================
   株式会社ダイウェブ — Design System v4（madoguchi.inc 参考）
   白基調 × ダークヒーロー（スポットライト演出）× ブルー
   構成: 1.Tokens 2.Base 3.Utility 4.Button 5.Header
         6.Hero(スポットライト) 7.Service(ホバー背景切替)
         8.Strength(ダーク帯) 9.Reason(番号リスト) 10.Flow
         11.Estimate 12.FAQ 13.Contact 14.Company 15.Footer
         16.Floating CTA 17.Reveal 18.Responsive 19.RM
   ============================================================ */

/* ---------- 1. Tokens ---------- */
:root{
  --white:   #FFFFFF;
  --bg:      #FFFFFF;
  --bg-gray: #F5F6F8;
  --ink:     #1A1F29;
  --sub:     #6B7280;
  --line:    #E4E7EC;
  --line-2:  #D2D6DE;
  --blue:    #2E5BFF;
  --blue-2:  #1F44D6;
  --blue-soft:#EEF2FF;
  --dark:    #0A0C10;
  --dark-2:  #12151C;
  --en:   "Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic","YuGothic","Meiryo",sans-serif;
  --sans: "Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic","YuGothic","Meiryo",sans-serif;
  /* Typography scale: see /TYPOGRAPHY.md */
  --fs-first-view:clamp(3rem,6.6vw,8rem);       /* 48–128px */
  --fs-page-title:clamp(2.75rem,5.2vw,5.5rem); /* 44–88px */
  --fs-section-title:clamp(2rem,4vw,4rem);      /* 32–64px */
  --fs-subheading:clamp(1.375rem,2.2vw,2.25rem);/* 22–36px */
  --fs-lead:clamp(1rem,1.15vw,1.125rem);        /* 16–18px */
  --fs-body:clamp(.875rem,.94vw,1rem);           /* 14–16px */
  --fs-label:clamp(.75rem,.78vw,.8125rem);       /* 12–13px */
  --wrap: 1200px;
  --wrap-narrow: 880px;
  --gutter: clamp(20px,5vw,56px);
  --radius: 12px;
  --ease: cubic-bezier(.22,.61,.36,1);
  --header-h: 84px;
  --header-gap: 14px; /* フローティングヘッダーの上余白 */
}

/* ---------- 2. Base ----------
   scroll-behavior:smooth は Lenis と競合するため使わない */
*,*::before,*::after{box-sizing:border-box;}
html{font-size:16px;-webkit-text-size-adjust:100%;overflow-x:clip;}
body{margin:0;font-family:var(--sans);font-size:var(--fs-body);font-weight:400;color:var(--ink);background:var(--bg);line-height:1.9;letter-spacing:.02em;font-feature-settings:"palt";-webkit-font-smoothing:antialiased;overflow-x:clip;}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;transition:color .3s var(--ease),opacity .3s var(--ease),background .3s var(--ease);}
ul,ol{list-style:none;margin:0;padding:0;}
h1,h2,h3,h4,p,dl,dd{margin:0;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
::selection{background:var(--blue);color:#fff;}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px;}

/* ---------- 3. Utility ---------- */
.container{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);}
.container--narrow{max-width:var(--wrap-narrow);}
.section{position:relative;padding-block:clamp(80px,11vw,150px);}

.sp-only{display:none;}
.sec-tag{font-family:var(--en);font-size:.82rem;font-weight:500;letter-spacing:.22em;color:var(--ink);text-transform:uppercase;margin-bottom:18px;}
.sec-tag--light{color:#fff;}
.sec-title{font-weight:900;font-size:clamp(2rem,5vw,3.4rem);line-height:1.4;letter-spacing:.03em;color:var(--ink);}
.sec-lead{margin-top:20px;max-width:60ch;color:var(--sub);font-size:.98rem;}
.sec-head{margin-bottom:clamp(40px,6vw,72px);}
.sec-head--split{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;}
.sec-head--split .sec-lead{margin-top:0;max-width:44ch;padding-bottom:8px;}
.tbc{font-size:.74rem;color:#C1604E;margin-left:6px;}

/* ---------- 4. Button ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;padding:16px 34px;font-size:.95rem;font-weight:700;border-radius:8px;white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease);}
.btn-primary{background:var(--blue);color:#fff;box-shadow:0 10px 26px -12px rgba(46,91,255,.6);}
.btn-primary:hover{background:var(--blue-2);transform:translateY(-2px);}
.btn-ghost{border:1px solid var(--line-2);color:var(--ink);background:#fff;}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue);}
.btn-ghost-light{border:1px solid rgba(255,255,255,.55);color:#fff;}
.btn-ghost-light:hover{background:rgba(255,255,255,.14);}
.btn-lg{padding:19px 42px;font-size:1rem;}
.btn-block{display:flex;width:100%;}

/* ---------- 5. Header（透明・ダークガラス） ----------
   ページに関わらず半透明のダークガラス。文字・ロゴは白 */
.site-header{position:fixed;top:var(--header-gap);left:50%;transform:translateX(-50%);width:95%;max-width:1840px;z-index:150;height:var(--header-h);
  display:flex;align-items:center;gap:28px;padding-inline:clamp(18px,2.6vw,36px);border-radius:10px;
  background:rgba(10,12,16,.55);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  transition:background .35s var(--ease),box-shadow .35s var(--ease);}
.site-header.is-scrolled{background:rgba(10,12,16,.82);box-shadow:0 8px 30px -14px rgba(0,0,0,.5);}
.logo{display:flex;flex-direction:column;line-height:1.1;margin-right:auto;}
.site-header .logo-img{filter:brightness(0) invert(1);} /* ロゴを白に反転 */
.logo-mark{font-family:var(--en);font-weight:700;letter-spacing:.14em;font-size:1.25rem;color:#fff;}
.logo-mark--w{color:#fff;}
.logo-sub{font-size:.6rem;letter-spacing:.16em;color:rgba(255,255,255,.7);margin-top:3px;}
.gnav ul{display:flex;gap:clamp(14px,1.8vw,28px);}
.gnav a{display:flex;flex-direction:column;font-size:.86rem;font-weight:500;color:#fff;line-height:1.4;position:relative;padding-block:6px;}
.gnav a em{font-style:normal;font-family:var(--en);font-size:.62rem;letter-spacing:.14em;color:#9DB4FF;text-transform:capitalize;}
.gnav a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background:#fff;transition:width .3s var(--ease);}
.gnav a:hover::after{width:100%;}
.header-btns{display:flex;gap:10px;}
.hbtn{display:inline-flex;align-items:center;padding:12px 22px;border-radius:8px;font-size:.86rem;font-weight:700;}
.hbtn--main{background:var(--blue);color:#fff;}
.hbtn--main:hover{background:var(--blue-2);}
.hbtn--sub{background:rgba(90,120,230,.85);color:#fff;}
.hbtn--sub:hover{background:var(--blue-2);}
.nav-toggle{display:none;width:46px;height:46px;position:relative;z-index:170;}
.nav-toggle span{position:absolute;left:11px;width:24px;height:2px;background:#fff;transition:.35s var(--ease);}
.nav-toggle span:nth-child(1){top:18px;}
.nav-toggle span:nth-child(2){top:26px;}
.nav-toggle.is-open span:nth-child(1){top:22px;transform:rotate(45deg);}
.nav-toggle.is-open span:nth-child(2){top:22px;transform:rotate(-45deg);}

/* ---------- 6. Hero: 暗闇にスポットライト ----------
   同一写真を2枚重ね:
   下層 = ほぼ暗闇（brightness .16）
   上層 = 光（円錐形マスク＋brightness .8）を is-lit でフェードイン
   ＋ 光線ビーム（blur した白グラデを回転配置） */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--dark);padding-top:calc(var(--header-h) + var(--header-gap));}
.hero-media{position:absolute;inset:0;}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.hero-img--dark{filter:brightness(.26) saturate(.75) contrast(1.08);}
.hero-img--lit{filter:brightness(.8) saturate(.85) contrast(1.05);opacity:0;transition:opacity 2.6s var(--ease) .5s;
  -webkit-mask-image:radial-gradient(95% 130% at 26% -14%,#000 0%,rgba(0,0,0,.55) 42%,transparent 72%);
  mask-image:radial-gradient(95% 130% at 26% -14%,#000 0%,rgba(0,0,0,.55) 42%,transparent 72%);}
.hero-beam{position:absolute;top:-14%;left:4%;width:30%;height:140%;pointer-events:none;
  background:linear-gradient(178deg,rgba(255,255,255,.5) 0%,rgba(255,255,255,.08) 55%,transparent 75%);
  transform:rotate(24deg);transform-origin:top left;filter:blur(26px);mix-blend-mode:screen;
  opacity:0;transition:opacity 2.2s var(--ease) .9s;}
.hero-floor{position:absolute;left:0;right:0;bottom:0;height:26%;pointer-events:none;
  background:linear-gradient(0deg,rgba(255,255,255,.12),transparent 80%);filter:blur(18px);mix-blend-mode:screen;
  opacity:0;transition:opacity 2.4s var(--ease) 1.1s;}
.is-lit .hero-img--lit{opacity:1;}
.is-lit .hero-beam{opacity:.85;}
.is-lit .hero-floor{opacity:.7;}

/* 装飾: 解読されていくコード */
.hero-code{position:absolute;margin:0;font-family:var(--en);font-size:.72rem;line-height:1.9;letter-spacing:.04em;color:rgba(210,225,255,.4);white-space:pre;pointer-events:none;z-index:2;text-shadow:0 0 12px rgba(0,0,0,.6);}
.hero-code--r{right:5%;top:20%;}
.hero-code--l{left:5%;bottom:16%;}

.hero-inner{position:relative;z-index:3;text-align:center;padding:0 var(--gutter);}
.hero-title{color:#fff;font-weight:900;font-size:clamp(2.5rem,7vw,5.4rem);line-height:1.5;letter-spacing:.14em;text-shadow:0 4px 40px rgba(0,0,0,.55);}
.ht-line{display:block;}
.hero-sub{margin-top:26px;color:rgba(255,255,255,.88);font-size:clamp(.95rem,1.8vw,1.15rem);letter-spacing:.22em;text-shadow:0 2px 20px rgba(0,0,0,.6);}
.hero-cta{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:46px;}
.hero-scroll{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:10px;color:rgba(255,255,255,.75);font-family:var(--en);font-size:.64rem;letter-spacing:.26em;}
.hero-scroll i{width:1px;height:44px;background:linear-gradient(rgba(255,255,255,.9),transparent);}
.is-lit .hero-scroll i,html:not(.js) .hero-scroll i{animation:scrollLine 2s ease-in-out infinite;}
@keyframes scrollLine{0%{transform:scaleY(0);transform-origin:top;}45%{transform:scaleY(1);transform-origin:top;}55%{transform:scaleY(1);transform-origin:bottom;}100%{transform:scaleY(0);transform-origin:bottom;}}

/* イントロ初期状態（JS有効時のみ隠す→光が差した後に出現） */
.js [data-hero]{opacity:0;transform:translateY(20px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease);}
.js [data-hero].is-in{opacity:1;transform:none;}
.js .hero-title.is-in{transition-delay:1.15s;}
.js .hero-sub.is-in{transition-delay:1.45s;}
.js .hero-cta.is-in{transition-delay:1.75s;}
.js .hero-scroll.is-in{transition-delay:2.1s;}

/* ---------- 7. Service: ホバーで背景が切り替わる ---------- */
.service{background:var(--bg-gray);overflow:hidden;}
.svc-bgs{position:absolute;inset:0;pointer-events:none;}
.svc-bg{position:absolute;inset:0;background-position:center;background-size:cover;opacity:0;transition:opacity .55s var(--ease);}
.svc-bg::after{content:"";position:absolute;inset:0;background:rgba(245,246,248,.55);}
.service.is-preview .svc-bg.is-active{opacity:1;}
/* 背景の弧の装飾 */
.svc-arc{position:absolute;border:1px solid var(--line);border-radius:50%;opacity:.7;}
.svc-arc--1{width:900px;height:900px;left:-320px;top:-200px;}
.svc-arc--2{width:1200px;height:1200px;right:-500px;bottom:-700px;}

.svc-head{position:relative;z-index:2;transition:opacity .5s var(--ease);}
.service.is-preview .svc-head{opacity:.25;}

.svc-grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);}
.svc-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;
  min-height:clamp(240px,30vw,380px);padding:32px 24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  transition:background .45s var(--ease),box-shadow .45s var(--ease),opacity .45s var(--ease);}
.svc-cell small{font-size:.78rem;color:var(--sub);letter-spacing:.06em;}
.svc-cell span{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--ink);letter-spacing:.04em;line-height:1.5;}
.svc-cell em{font-style:normal;font-family:var(--en);font-size:.7rem;letter-spacing:.22em;color:var(--blue);text-transform:uppercase;margin-top:6px;transition:transform .3s var(--ease);}
.svc-cell:hover em{transform:translateX(4px);}
/* プレビュー中: ホバー中のセルだけ白カード、他は沈む */
.service.is-preview .svc-cell{opacity:.34;}
.service.is-preview .svc-cell.is-hover{opacity:1;background:#fff;box-shadow:0 30px 70px -30px rgba(10,12,16,.28);}
.svc-cell--cta span{color:var(--blue);}

/* ---------- 8. Strength: ダーク帯 ---------- */
.strength{background:var(--dark);color:#fff;overflow:hidden;}
/* パララックス用に上下へ拡張（translateしても縁が見えない） */
.strength-bg{position:absolute;inset:-14% 0;background:url('https://images.unsplash.com/photo-1531297484001-80022131f5a1?q=80&w=1800&auto=format&fit=crop') center/cover;opacity:.34;filter:saturate(.6) brightness(.7);will-change:transform;}
.strength-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,12,16,.92) 0%,rgba(10,12,16,.55) 60%,rgba(10,12,16,.35) 100%);}
.strength-inner{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:clamp(28px,5vw,72px);flex-wrap:wrap;}
.strength-body{flex:1 1 520px;min-width:0;}
.strength-title{font-weight:900;font-size:clamp(1.9rem,4.6vw,3.2rem);line-height:1.55;letter-spacing:.04em;}
.strength-lead{margin-top:24px;max-width:54ch;color:rgba(255,255,255,.82);font-size:.96rem;}
.strength-stats{display:flex;gap:clamp(24px,4vw,56px);flex-wrap:wrap;margin-top:40px;border-top:1px solid rgba(255,255,255,.2);padding-top:28px;}
.strength-stats li{display:flex;flex-direction:column;gap:6px;}
.strength-stats b{font-family:var(--en);font-weight:700;font-size:clamp(1.9rem,3.6vw,2.8rem);line-height:1;color:#fff;}
.strength-stats b i{font-style:normal;font-family:var(--sans);font-size:.44em;font-weight:500;color:rgba(255,255,255,.8);margin-left:4px;}
.strength-stats small{font-size:.74rem;color:rgba(255,255,255,.65);letter-spacing:.04em;}
.strength-note{margin-top:18px;font-size:.72rem;color:rgba(255,255,255,.5);}
/* 円形CTA（madoguchiの円ボタン） */
.circle-cta{flex:none;width:clamp(170px,16vw,220px);aspect-ratio:1;border:1px solid rgba(255,255,255,.65);border-radius:50%;
  display:grid;place-items:center;text-align:center;color:#fff;font-size:.92rem;font-weight:500;letter-spacing:.08em;line-height:1.8;padding:20px;
  transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease),transform .4s var(--ease);}
.circle-cta:hover{background:#fff;color:var(--dark);transform:scale(1.04);}

/* カーソル追従モード（hover対応PCでJSが .is-follow を付与）
   通常は非表示、セクションにカーソルが載ると出現し追従する。
   位置・スケールはJS（rAF+lerp）が transform を専任管理するため、
   CSS transition から transform を除外（競合カクつき防止） */
.strength.is-follow .circle-cta{position:absolute;left:0;top:0;margin:0;z-index:6;opacity:0;pointer-events:auto;will-change:transform;
  transition:opacity .3s var(--ease),background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease);}
.strength.is-follow .circle-cta.is-on{opacity:1;}
.strength.is-follow .circle-cta:hover{transform:none;} /* JSが管理 */

/* ---------- 9. Reason: スタッキング写真カード ----------
   既定＝縦積みの写真カード（モバイル / JS無効 / reduced-motion）
   .stackfx.is-stack 時＝画面固定＋次のカードが下から覆う */
.reason{background:var(--bg);padding-top:clamp(80px,11vw,150px);}
.reason-head{margin-bottom:clamp(8px,2vw,24px);}
.rcard{position:relative;background:var(--dark);color:#fff;min-height:72vh;display:flex;align-items:center;overflow:hidden;padding-block:clamp(48px,7vw,80px);}
.rcard > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.55) saturate(.85);}
.rcard::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(6,8,13,.82) 0%,rgba(6,8,13,.45) 55%,rgba(6,8,13,.25) 100%);}
.rcard-inner{position:relative;z-index:2;}
.rc-no{font-family:var(--en);font-weight:500;font-size:clamp(1.2rem,2.2vw,1.7rem);letter-spacing:.08em;color:#9DB4FF;}
.rcard h3{margin-top:16px;font-weight:900;font-size:clamp(1.9rem,5vw,3.6rem);line-height:1.5;letter-spacing:.04em;text-shadow:0 4px 32px rgba(0,0,0,.5);}
.rcard p{margin-top:20px;max-width:54ch;font-size:clamp(.95rem,1.6vw,1.1rem);color:rgba(255,255,255,.88);line-height:2.1;text-shadow:0 2px 16px rgba(0,0,0,.5);}

/* ---------- 10. Flow ---------- */
.flow{background:var(--bg-gray);}
.flow-list{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.flow-list li{background:#fff;padding:clamp(22px,2.6vw,34px);}
.flow-list em{font-style:normal;font-family:var(--en);font-weight:700;font-size:1.5rem;color:var(--blue);}
.flow-list h3{margin-top:14px;font-size:1.02rem;font-weight:700;line-height:1.6;}
.flow-list p{margin-top:10px;font-size:.82rem;color:var(--sub);line-height:1.9;}

/* ---------- 11. Estimate ---------- */
.estimate{background:var(--bg);}
.estimate-wrap{display:grid;grid-template-columns:1.5fr 1fr;gap:28px;align-items:start;}
.estimate-form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:clamp(24px,3vw,40px);}
.est-block + .est-block{margin-top:32px;padding-top:32px;border-top:1px solid var(--line);}
.est-h{display:flex;align-items:center;gap:12px;font-size:1rem;font-weight:700;color:var(--ink);margin-bottom:20px;}
.est-h em{font-style:normal;font-family:var(--en);width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-size:.78rem;display:grid;place-items:center;flex:none;}
.est-field{display:block;}
.est-label{display:block;font-size:.8rem;color:var(--sub);margin-bottom:10px;}
.est-field select{width:100%;padding:15px 18px;font-family:inherit;font-size:.95rem;color:var(--ink);border:1px solid var(--line-2);border-radius:8px;background:#fff;appearance:none;cursor:pointer;transition:border-color .3s var(--ease);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%232E5BFF' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 18px center;}
.est-field select:focus{border-color:var(--blue);outline:none;}
.est-checks{display:grid;gap:10px;}
.est-check{display:flex;align-items:flex-start;gap:12px;padding:15px 18px;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:#fff;transition:border-color .3s var(--ease),background .3s var(--ease);}
.est-check:hover{border-color:var(--blue);background:var(--blue-soft);}
.est-check input{margin-top:.35em;width:18px;height:18px;accent-color:var(--blue);flex:none;cursor:pointer;}
.est-check span{font-size:.9rem;color:var(--ink);display:flex;flex-direction:column;gap:3px;}
.est-check em{font-style:normal;font-size:.76rem;color:var(--blue);font-weight:700;font-family:var(--en);letter-spacing:.03em;}
.est-check:has(input:checked){border-color:var(--blue);background:var(--blue-soft);box-shadow:0 0 0 1px var(--blue) inset;}
.estimate-result{position:sticky;top:calc(var(--header-h) + var(--header-gap) + 16px);background:var(--dark);color:#fff;border-radius:var(--radius);padding:clamp(24px,3vw,34px);}
.er-head{font-size:.88rem;letter-spacing:.08em;color:rgba(255,255,255,.8);}
.er-head small{font-size:.72rem;opacity:.75;margin-left:4px;}
.er-row{display:flex;align-items:baseline;justify-content:space-between;margin-top:20px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.16);}
.er-label{font-size:.84rem;color:rgba(255,255,255,.72);}
.er-val{font-family:var(--en);font-weight:700;font-size:2rem;line-height:1;color:#fff;}
.er-val small{font-size:.72rem;font-weight:500;margin-left:2px;opacity:.8;}
.er-row--month .er-val{font-size:1.5rem;}
.er-selected{margin-top:18px;display:grid;gap:8px;min-height:24px;}
.er-selected li{font-size:.8rem;color:rgba(255,255,255,.88);padding-left:16px;position:relative;line-height:1.6;}
.er-selected li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--blue);}
.er-selected .er-empty{color:rgba(255,255,255,.45);}
.er-selected .er-empty::before{display:none;}
.estimate-result .btn{margin-top:26px;}
.er-note{margin-top:14px;font-size:.72rem;color:rgba(255,255,255,.55);line-height:1.7;}

/* ---------- 12. FAQ ---------- */
.faq{background:var(--bg-gray);}
.faq-list{display:grid;gap:12px;}
.faq-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:border-color .3s var(--ease);}
.faq-item[open],.faq-item:hover{border-color:var(--blue);}
.faq-item summary{list-style:none;display:flex;align-items:baseline;gap:16px;padding:22px 60px 22px 26px;font-weight:500;font-size:1rem;color:var(--ink);cursor:pointer;position:relative;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary em{font-style:normal;font-family:var(--en);font-size:.78rem;color:var(--blue);letter-spacing:.08em;flex:none;}
.faq-item summary i{position:absolute;right:26px;top:50%;width:14px;height:14px;transform:translateY(-50%);}
.faq-item summary i::before,.faq-item summary i::after{content:"";position:absolute;inset:auto 0 50%;height:2px;background:var(--blue);transition:transform .35s var(--ease);}
.faq-item summary i::after{transform:rotate(90deg);}
.faq-item[open] summary i::after{transform:rotate(0);}
.faq-a{padding:0 26px 24px 26px;}
.faq-a p{font-size:.92rem;color:var(--sub);line-height:2;}

/* ---------- 13. Contact ---------- */
.contact{background:var(--bg);}
.contact-card{background:var(--bg-gray);border-radius:20px;padding:clamp(36px,6vw,80px);}
.contact-body{max-width:760px;}
.ct-en{font-family:var(--en);letter-spacing:.2em;color:var(--sub);margin-left:14px;font-size:.78rem;}
.contact-title{font-weight:900;font-size:clamp(1.8rem,4.4vw,3rem);line-height:1.5;}
.contact-lead{margin-top:22px;color:var(--sub);font-size:.96rem;}
.contact-actions{display:flex;flex-wrap:wrap;gap:16px;margin-top:36px;}
.contact-sub{margin-top:26px;font-size:.86rem;color:var(--sub);}
.contact-sub a{font-family:var(--en);font-weight:700;color:var(--ink);border-bottom:2px solid var(--blue);}

/* ---------- 14. Company ---------- */
.company{background:var(--bg);}
.company-table{border-top:1px solid var(--line);}
.company-table > div{display:grid;grid-template-columns:200px 1fr;gap:20px;padding:24px 8px;border-bottom:1px solid var(--line);}
.company-table dt{font-weight:700;color:var(--ink);font-size:.9rem;}
.company-table dd{color:var(--sub);font-size:.95rem;}

.company-more{margin-top:32px;}

/* ---------- 15. Footer（ダーク） ---------- */
.site-footer{background:var(--dark);color:#fff;}
.footer-inner{display:flex;justify-content:space-between;gap:44px;padding-block:64px;flex-wrap:wrap;}
.footer-brand{max-width:380px;}
.footer-addr{margin-top:18px;font-size:.84rem;color:rgba(255,255,255,.65);line-height:2;}
.footer-nav{display:grid;grid-template-columns:repeat(2,auto);gap:12px 44px;align-content:start;}
.footer-nav a{font-size:.86rem;color:rgba(255,255,255,.75);}
.footer-nav a:hover{color:#fff;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.14);}
.footer-bottom p{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter);font-size:.74rem;color:rgba(255,255,255,.5);}
.footer-bottom .footer-tag{padding-top:22px;color:rgba(255,255,255,.7);}
.footer-bottom p:last-child{padding-block:10px 24px;font-family:var(--en);letter-spacing:.06em;}

/* ---------- 15b. Unified corporate footer ---------- */
.dw-footer{position:relative;overflow:hidden;background:#111318;color:#fff;}
.dw-footer::before{content:"";position:absolute;right:-12vw;top:-18vw;width:46vw;aspect-ratio:1;border:1px solid rgba(255,255,255,.05);border-radius:50%;box-shadow:0 0 0 7vw rgba(255,255,255,.018),0 0 0 14vw rgba(255,255,255,.012);pointer-events:none;}
.dw-footer__top{position:relative;z-index:1;width:min(1280px,88vw);margin:auto;padding:clamp(76px,9vw,130px) 0 clamp(60px,7vw,96px);display:grid;grid-template-columns:minmax(230px,.72fr) minmax(0,1.55fr);gap:clamp(56px,9vw,140px);}
.dw-footer__brand>a{display:inline-block;}
.dw-footer__brand img{display:block;width:clamp(190px,17vw,240px);height:auto;filter:brightness(0) invert(1);}
.dw-footer__brand>p{max-width:27rem;margin-top:32px;font-size:.82rem;line-height:2;color:rgba(255,255,255,.62);}
.dw-footer__brand>span{display:block;margin-top:28px;font-family:var(--en);font-size:.59rem;letter-spacing:.17em;color:rgba(255,255,255,.35);}
.dw-footer__menu{display:grid;grid-template-columns:.8fr .8fr 1.2fr;gap:clamp(28px,4vw,58px);align-items:start;}
.dw-footer__group>p,.dw-footer__contact>p{margin-bottom:24px;font-family:var(--en);font-size:.6rem;letter-spacing:.16em;color:#8fa7ff;}
.dw-footer__group a{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.11);color:rgba(255,255,255,.78);transition:color .3s ease,border-color .3s ease,transform .3s var(--ease);}
.dw-footer__group a small{font-family:var(--en);font-size:.55rem;color:rgba(255,255,255,.28);}
.dw-footer__group a span{font-size:.8rem;line-height:1.5;}
.dw-footer__group a:hover,.dw-footer__group a:focus-visible{color:#fff;border-color:rgba(143,167,255,.65);transform:translateX(4px);}
.dw-footer__contact{min-height:285px;display:flex;flex-direction:column;padding:26px;background:#3159ee;}
.dw-footer__contact>p{color:rgba(255,255,255,.62);}
.dw-footer__contact>strong{font-size:clamp(1.02rem,1.35vw,1.15rem);font-weight:600;line-height:1.8;}
.dw-footer__contact-link{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:auto;padding:17px 0;border-block:1px solid rgba(255,255,255,.35);font-size:.78rem;font-weight:600;}
.dw-footer__contact-link i{font-style:normal;transition:transform .3s var(--ease);}.dw-footer__contact-link:hover i{transform:translateX(5px);}
.dw-footer__tel{display:flex;align-items:baseline;gap:12px;margin-top:18px;font-family:var(--en);font-size:1.28rem;letter-spacing:.02em;}
.dw-footer__tel small{font-size:.54rem;letter-spacing:.14em;color:rgba(255,255,255,.58);}
.dw-footer__bottom{position:relative;z-index:1;width:min(1280px,88vw);margin:auto;display:grid;grid-template-columns:1.2fr 1fr auto;gap:32px;align-items:end;padding:25px 0 30px;border-top:1px solid rgba(255,255,255,.13);}
.dw-footer__bottom address{font-style:normal;font-size:.68rem;line-height:1.8;color:rgba(255,255,255,.42);}
.dw-footer__bottom p{font-size:.65rem;line-height:1.8;color:rgba(255,255,255,.42);}
.dw-footer__bottom p:last-child{font-family:var(--en);letter-spacing:.05em;text-align:right;white-space:nowrap;}

@media (max-width:1024px){
  .dw-footer__top{grid-template-columns:1fr;gap:64px;}
  .dw-footer__brand>p{max-width:38rem;}
}

@media (max-width:760px){
  .dw-footer__top{width:88vw;padding-top:120px;}
  .dw-footer__menu{grid-template-columns:1fr 1fr;}
  .dw-footer__contact{grid-column:1/-1;min-height:260px;margin-top:14px;}
  .dw-footer__bottom{grid-template-columns:1fr;gap:14px;padding-bottom:88px;}
  .dw-footer__bottom p:last-child{text-align:left;}
}

@media (max-width:480px){
  .dw-footer__menu{grid-template-columns:1fr;gap:44px;}
  .dw-footer__contact{grid-column:auto;margin-top:0;}
}

/* ---------- 16. Floating CTA（PC右下） ---------- */
.float-ctas{position:fixed;right:20px;bottom:20px;z-index:120;display:flex;gap:12px;}
.float-card{display:flex;flex-direction:column;gap:2px;position:relative;width:230px;padding:18px 46px 18px 20px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 50px -18px rgba(10,12,16,.25);transition:transform .3s var(--ease),box-shadow .3s var(--ease);}
.float-card b{font-size:.92rem;color:var(--ink);}
.float-card small{font-size:.7rem;color:var(--sub);}
.float-card i{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:26px;height:26px;border-radius:50%;background:var(--dark);color:#fff;display:grid;place-items:center;font-style:normal;font-size:.8rem;transition:background .3s var(--ease),transform .3s var(--ease);}
.float-card:hover{transform:translateY(-3px);box-shadow:0 24px 60px -20px rgba(10,12,16,.35);}
.float-card:hover i{background:var(--blue);transform:translateY(-50%) translateX(2px);}
.float-card--main b{color:var(--blue);}
.fixed-cta{position:fixed;left:0;right:0;bottom:0;z-index:120;display:none;text-align:center;padding:16px;background:var(--blue);color:#fff;font-weight:700;font-size:.95rem;box-shadow:0 -8px 30px -12px rgba(46,91,255,.55);}

/* ---------- 16b. ロゴ画像 ---------- */
.logo-img{height:34px;width:auto;display:block;}
.logo-img--w{filter:brightness(0) invert(1);}

/* ---------- 16c. NEWS: お知らせ ---------- */
.news{background:var(--bg-gray);}
.news-head{margin-bottom:clamp(32px,5vw,60px);}
.news-list{max-width:940px;margin-left:auto;border-top:1px solid var(--line-2);}
.news-item{display:grid;grid-template-columns:150px 1fr auto;gap:clamp(18px,3vw,44px);align-items:center;padding:clamp(20px,2.6vw,30px) 4px;border-bottom:1px solid var(--line-2);}
.news-item figure{margin:0;width:150px;aspect-ratio:16/10;overflow:hidden;border-radius:6px;background:#fff;}
.news-item figure img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease);}
.news-item:hover figure img{transform:scale(1.06);}
.news-meta{display:flex;align-items:center;gap:14px;}
.news-chip{padding:3px 16px;border:1px solid var(--ink);border-radius:999px;font-size:.72rem;font-weight:500;color:var(--ink);}
.news-meta time{font-family:var(--en);font-size:.82rem;letter-spacing:.12em;color:var(--ink);}
.news-body h3{margin-top:12px;font-size:clamp(1rem,1.6vw,1.15rem);font-weight:700;line-height:1.7;transition:color .3s var(--ease);}
.news-item:hover .news-body h3{color:var(--blue);}
.news-item i{font-style:normal;font-size:1.1rem;color:var(--ink);transition:transform .3s var(--ease);}
.news-item:hover i{transform:translateX(6px);}
.news-note{max-width:940px;margin:14px 0 0 auto;font-size:.72rem;color:var(--sub);}

/* ---------- 16d. OUR VISION ----------
   既定＝静的フォールバック（モバイル / JS無効 / reduced-motion）:
   ダーク背景＋写真バナー＋テキスト
   .is-fx（PC×motion OK時にJSが付与）＝スクロールで円形写真が
   拡大→画面を覆い背景化→シェードが落ちて文字が浮かび上がる */
:root{--navy:#16233F;}
.vision{position:relative;background:var(--navy);color:#fff;padding-block:clamp(80px,11vw,150px);}
.vp-sticky{position:relative;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);}
.vp-circle{display:none;background:var(--navy);}
.vp-badge{display:none;}
.vp-content{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,6vw,84px);align-items:start;}
.vp-title{font-weight:900;font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.5;letter-spacing:.04em;margin-top:4px;}
.vp-logo{width:min(230px,60%);height:auto;margin-top:30px;filter:brightness(0) invert(1);opacity:.95;}
.vp-body h3{font-weight:900;font-size:clamp(1.25rem,2.4vw,1.7rem);line-height:1.9;margin-bottom:26px;}
.vp-body p{color:rgba(255,255,255,.85);line-height:2.2;margin-bottom:20px;font-size:.95rem;}

.vision.is-fx{background:var(--bg-gray);color:#fff;height:320vh;padding:0;}
.vision.is-fx .vp-sticky{position:sticky;top:0;height:100vh;max-width:none;padding:0;overflow:hidden;display:block;}
.vision.is-fx .vp-circle{display:block;position:absolute;left:50%;top:50%;width:min(40vmin,440px);aspect-ratio:1;border-radius:50%;margin:0;transform:translate(-50%,-50%);will-change:transform;}
.vision.is-fx .vp-badge{display:flex;flex-direction:column;align-items:center;gap:6px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;margin:0;color:#fff;text-align:center;text-shadow:0 2px 18px rgba(0,0,0,.65);}
.vp-badge em{font-style:normal;font-family:var(--en);font-weight:700;font-size:1.5rem;letter-spacing:.18em;}
.vp-badge span{font-size:.82rem;letter-spacing:.2em;}
.vision.is-fx .vp-content{position:absolute;inset:0;z-index:3;opacity:0;align-items:center;max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter);will-change:opacity,transform;}

/* ---------- 16e. 下層ページ: 会社概要（about.html） ---------- */
/* ページヘッダー: 左タイトル / 右写真 / 背景にゴースト英字 */
.page-hero{position:relative;background:#fff;padding-top:calc(var(--header-h) + var(--header-gap));overflow:hidden;}
.ph-ghost{position:absolute;left:-.03em;bottom:-.16em;z-index:0;font-family:var(--en);font-weight:700;line-height:1;
  font-size:clamp(6rem,17vw,15rem);letter-spacing:.02em;color:transparent;-webkit-text-stroke:1px var(--line);
  pointer-events:none;user-select:none;}
.ph-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(320px,1fr) 1.25fr;align-items:center;min-height:min(540px,62vh);}
.ph-title{padding:48px var(--gutter);}
.ph-title h1{font-weight:900;font-size:clamp(1.9rem,4.2vw,3.2rem);line-height:1.32;letter-spacing:.01em;}
.ph-en{font-family:var(--en);font-size:.8rem;letter-spacing:.24em;color:var(--sub);margin-top:16px;}
.ph-photo{margin:0;height:100%;min-height:320px;}
.ph-photo :is(img,video){display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(.28) brightness(.78) contrast(1.12);}

/* 会社概要テーブル（右寄せレイアウト） */
.prof-table{max-width:880px;margin-left:auto;border-top:1px solid var(--line-2);}
.prof-table > div{display:grid;grid-template-columns:190px 1fr;gap:20px;padding:24px 8px;border-bottom:1px solid var(--line-2);}
.prof-table dt{font-weight:700;color:var(--ink);font-size:.9rem;}
.prof-table dd{color:var(--sub);font-size:.95rem;line-height:2;}
.prof-table dd a{color:var(--ink);border-bottom:1px solid var(--line-2);}
.prof-table dd a:hover{color:var(--blue);border-color:var(--blue);}

/* 沿革 */
.history{background:var(--bg-gray);}
.hist-list{max-width:880px;margin-left:auto;border-top:1px solid var(--line-2);}
.hist-row{display:grid;grid-template-columns:150px 1fr;gap:24px;padding:28px 8px;border-bottom:1px solid var(--line-2);}
.hist-year{font-family:var(--en);font-weight:700;font-size:1.35rem;color:var(--ink);position:relative;padding-left:20px;line-height:1.6;}
.hist-year::before{content:"";position:absolute;left:0;top:.75em;width:11px;height:1px;background:var(--ink);}
.hist-row ul{display:grid;gap:8px;}
.hist-row li{display:grid;grid-template-columns:40px 1fr;gap:16px;align-items:baseline;}
.hist-row time{font-family:var(--en);font-size:.86rem;letter-spacing:.1em;color:var(--sub);}
.hist-row li p{font-size:.95rem;color:var(--ink);line-height:1.9;}

/* アクセス */
.access-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(28px,4vw,60px);align-items:start;}
.access-map{aspect-ratio:4/3;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg-gray);}
.access-map iframe{width:100%;height:100%;border:0;display:block;}
.access-info h3{font-size:1.15rem;font-weight:900;}
.access-addr{margin-top:14px;color:var(--sub);font-size:.95rem;line-height:2.1;}
.access-list{margin-top:24px;border-top:1px solid var(--line);}
.access-list > div{display:grid;grid-template-columns:90px 1fr;gap:16px;padding:14px 4px;border-bottom:1px solid var(--line);font-size:.9rem;}
.access-list dt{font-weight:700;color:var(--ink);}
.access-list dd{color:var(--sub);}
.access-list a{color:var(--ink);border-bottom:1px solid var(--line-2);}
.access-list a:hover{color:var(--blue);border-color:var(--blue);}

/* 想いを知る（2枚の写真カード） */
.more{padding-top:clamp(56px,8vw,90px);background:#fff;}
.more-label{text-align:center;font-size:.88rem;letter-spacing:.24em;font-weight:700;color:var(--ink);margin-bottom:clamp(24px,4vw,44px);}
.more-grid{display:grid;grid-template-columns:1fr 1fr;}
.more-card{position:relative;aspect-ratio:16/8;overflow:hidden;display:grid;place-items:center;color:#fff;}
.more-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.42) saturate(.85);transition:transform .8s var(--ease),filter .5s var(--ease);}
.more-card:hover img{transform:scale(1.05);filter:brightness(.52) saturate(.95);}
.mc-body{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;}
.mc-body b{font-size:clamp(1.3rem,2.6vw,1.9rem);font-weight:900;letter-spacing:.06em;text-shadow:0 2px 18px rgba(0,0,0,.5);}
.mc-body small{font-size:.8rem;letter-spacing:.08em;opacity:.9;border-bottom:1px solid rgba(255,255,255,.7);padding-bottom:3px;transition:opacity .3s var(--ease);}
.more-card:hover .mc-body small{opacity:1;}

/* お問い合わせ（ブルーグラデ帯） */
.contact-band{background:linear-gradient(120deg,#5A82FF 0%,#2E5BFF 45%,#1F44D6 100%);color:#fff;padding-block:clamp(64px,9vw,110px);}
.cb-inner{display:flex;justify-content:space-between;align-items:center;gap:clamp(28px,5vw,72px);flex-wrap:wrap;}
.contact-band--service{display:flex;align-items:center;min-height:clamp(520px,65svh,680px);padding-block:clamp(48px,6vw,76px);box-sizing:border-box;}
.contact-band--service .cb-inner{width:100%;}
.cb-body{flex:1 1 480px;}
.cb-tag{font-family:var(--en);font-size:.8rem;letter-spacing:.22em;opacity:.85;margin-bottom:14px;}
.cb-title{font-weight:900;font-size:clamp(1.9rem,4.4vw,3rem);line-height:1.4;}
.cb-lead{margin-top:18px;color:rgba(255,255,255,.88);font-size:.95rem;max-width:52ch;}
.cb-actions{display:flex;flex-direction:column;gap:14px;align-items:stretch;min-width:min(320px,100%);}
.cb-btn{background:#fff;color:var(--blue);}
.cb-btn:hover{background:var(--blue-soft);transform:translateY(-2px);}
.cb-btn--ghost{background:transparent;border:1px solid rgba(255,255,255,.7);color:#fff;}
.cb-btn--ghost:hover{background:rgba(255,255,255,.14);}
.cb-tel{font-size:.88rem;color:rgba(255,255,255,.9);text-align:center;}
.cb-tel a{font-family:var(--en);font-weight:700;font-size:1.15em;border-bottom:1px solid rgba(255,255,255,.6);}

/* ---------- 16f. 下層ページ: サービス紹介（service.html） ---------- */
.ph-lead{margin-top:22px;color:var(--sub);font-size:.95rem;line-height:2.1;}

/* 追従目次（スクロールスパイ） */
.sv-nav{position:sticky;top:calc(var(--header-h) + var(--header-gap));z-index:90;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-block:1px solid var(--line);}
.sv-nav-inner{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);display:flex;gap:clamp(6px,2vw,18px);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.sv-nav-inner::-webkit-scrollbar{display:none;}
.sv-nav a{flex:none;display:flex;align-items:center;gap:8px;padding:16px 10px;font-size:.86rem;font-weight:500;color:var(--sub);position:relative;white-space:nowrap;}
.sv-nav a em{font-style:normal;font-family:var(--en);font-size:.72rem;letter-spacing:.08em;color:var(--blue);}
.sv-nav a::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease);}
.sv-nav a:hover{color:var(--ink);}
.sv-nav a.is-active{color:var(--ink);font-weight:700;}
.sv-nav a.is-active::after{transform:scaleX(1);}

/* 各サービスセクション（見出し→ワイド写真→2カラム本文） */
.sv:nth-of-type(even){background:var(--bg-gray);}
.sv-head{margin-bottom:clamp(24px,3.6vw,40px);}
.sv-media{position:relative;margin-bottom:clamp(32px,5vw,56px);}
.sv-media figure{margin:0;overflow:hidden;border-radius:14px;aspect-ratio:21/9;box-shadow:0 40px 90px -46px rgba(10,12,16,.35);}
.sv-media img{width:100%;height:100%;object-fit:cover;will-change:transform;}
.sv-no{position:absolute;right:clamp(8px,2vw,24px);top:-.55em;z-index:2;font-family:var(--en);font-weight:700;font-size:clamp(3.4rem,7vw,6rem);line-height:1;color:transparent;-webkit-text-stroke:1.5px var(--ink);pointer-events:none;user-select:none;}
.sv-cols{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,6vw,90px);align-items:start;}
.sv-col .sv-h:first-child{margin-top:0;}
.sv-title{font-weight:900;font-size:clamp(1.8rem,3.8vw,2.8rem);line-height:1.5;letter-spacing:.03em;}
.sv-lead{margin-top:18px;font-size:clamp(1rem,1.8vw,1.15rem);font-weight:700;line-height:2;color:var(--ink);}
.sv-text{margin-top:16px;color:var(--sub);font-size:.95rem;line-height:2.1;}
.sv-h{margin-top:30px;font-size:.95rem;font-weight:700;color:var(--ink);padding-left:14px;position:relative;}
.sv-h::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:1.1em;background:var(--blue);border-radius:2px;}
.sv-list{margin-top:14px;display:grid;gap:8px;}
.sv-list li{position:relative;padding-left:22px;font-size:.92rem;color:var(--sub);line-height:1.9;}
.sv-list li::before{content:"";position:absolute;left:2px;top:.72em;width:8px;height:8px;border-radius:50%;background:var(--blue-soft);border:2px solid var(--blue);}
.sv-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px;}
.sv-tags span{padding:6px 16px;border:1px solid var(--line-2);border-radius:999px;font-size:.76rem;color:var(--ink);letter-spacing:.03em;background:#fff;}
.sv-cta{margin-top:30px;}
.sv-note{padding-block:0 clamp(48px,7vw,80px);font-size:.74rem;color:var(--sub);}

/* クリップ出現（[data-clip]）
   既定では隠さない（画像は常に表示）。
   JSが動作した時だけ .is-clip で初期非表示にし、IOで .is-shown を付与。
   → JSが失敗・キャッシュ切れでも画像が消えない */
[data-clip].is-clip{clip-path:inset(0 0 100% 0);}
[data-clip].is-clip.is-shown{clip-path:inset(0 0 0 0);transition:clip-path 1.1s var(--ease) .1s;}
@keyframes svImageScan{0%{opacity:0;transform:skewX(-16deg) translateX(-180%)}24%{opacity:.55}100%{opacity:0;transform:skewX(-16deg) translateX(560%)}}

/* ---------- 16g. 下層ページ: 代表挨拶（message.html・ダーク基調） ---------- */
.msg-page{background:var(--dark);color:#fff;}
.msg-glow{position:absolute;border-radius:50%;pointer-events:none;filter:blur(8px);}
.msg-glow--1{right:-14vw;top:-16vw;width:52vw;height:52vw;background:radial-gradient(circle,rgba(90,130,255,.16) 0%,transparent 62%);}
.msg-glow--2{left:-18vw;top:10%;width:56vw;height:56vw;background:radial-gradient(circle,rgba(255,255,255,.08) 0%,transparent 60%);}

.msg-hero{position:relative;padding-top:calc(var(--header-h) + var(--header-gap));overflow:hidden;}
.msg-hero-grid{display:grid;grid-template-columns:minmax(300px,1fr) 1.25fr;align-items:center;gap:clamp(28px,5vw,72px);padding-block:clamp(48px,7vw,90px);}
.msg-hero-title h1{font-weight:900;font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.4;letter-spacing:.04em;color:#fff;}
.ph-en--light{color:rgba(255,255,255,.6);}
.msg-hero-photo{margin:0;overflow:hidden;border-radius:14px;aspect-ratio:4/3;}
.msg-hero-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15) brightness(.9) contrast(1.05);will-change:transform;}

.msg-profile{border-block:1px solid rgba(255,255,255,.12);background:var(--dark-2);}
.msg-profile-inner{display:flex;align-items:center;gap:clamp(24px,4vw,48px);padding-block:clamp(32px,5vw,56px);flex-wrap:wrap;}
.msg-avatar{margin:0;width:clamp(96px,12vw,140px);aspect-ratio:1;border-radius:50%;overflow:hidden;flex:none;border:1px solid rgba(255,255,255,.2);}
.msg-avatar img{width:100%;height:100%;object-fit:cover;filter:grayscale(.3) brightness(.9);}
.msg-profile-body{flex:1;min-width:280px;}
.mp-role{font-size:.82rem;letter-spacing:.14em;color:rgba(255,255,255,.65);}
.mp-name{font-weight:900;font-size:clamp(1.4rem,2.6vw,1.9rem);margin-top:6px;}
.mp-name span{font-family:var(--en);font-size:.6em;font-weight:500;letter-spacing:.16em;color:rgba(255,255,255,.55);margin-left:14px;}
.mp-bio{margin-top:14px;font-size:.88rem;color:rgba(255,255,255,.75);line-height:2;max-width:64ch;}

.msg-block{position:relative;padding-block:clamp(64px,9vw,120px);overflow:hidden;}
.msg-block:nth-of-type(even){background:var(--dark-2);}
.msg-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,90px);align-items:center;}
.msg-block--rev .msg-grid .msg-photo{order:2;}
.msg-block--rev .msg-grid .msg-body{order:1;}
.msg-photo{margin:0;overflow:hidden;border-radius:14px;aspect-ratio:4/3;box-shadow:0 40px 90px -40px rgba(0,0,0,.7);}
.msg-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15) brightness(.85) contrast(1.05);will-change:transform;}
.msg-no{display:flex;align-items:center;gap:12px;font-family:var(--en);font-size:.8rem;letter-spacing:.2em;color:rgba(255,255,255,.65);text-transform:lowercase;margin-bottom:20px;}
.msg-no i{width:34px;height:1px;background:rgba(255,255,255,.5);}
.msg-no em{font-style:normal;font-weight:700;font-size:1.4em;color:#fff;}
.msg-body h2{font-weight:900;font-size:clamp(1.5rem,3.2vw,2.4rem);line-height:1.7;letter-spacing:.04em;color:#fff;}
.msg-body p{margin-top:18px;font-size:.94rem;color:rgba(255,255,255,.8);line-height:2.2;}
.msg-sign{margin-top:34px;font-size:.9rem;color:rgba(255,255,255,.75);line-height:2.1;}
.msg-sign b{font-size:1.15em;color:#fff;letter-spacing:.06em;}
.msg-note{padding-block:0 clamp(40px,6vw,64px);font-size:.74rem;color:rgba(255,255,255,.45);}

/* ダイウェブが目指す未来 */
.msg-future{position:relative;background:var(--dark-2);padding-block:clamp(80px,11vw,140px);overflow:hidden;border-block:1px solid rgba(255,255,255,.1);}
.mf-inner{position:relative;text-align:center;}
.mf-label{font-size:.88rem;letter-spacing:.24em;font-weight:700;color:rgba(255,255,255,.75);}
.mf-title{margin-top:22px;font-weight:900;font-size:clamp(1.7rem,4vw,2.9rem);line-height:1.7;letter-spacing:.04em;color:#fff;}
.mf-text{margin-top:24px;color:rgba(255,255,255,.82);font-size:clamp(.95rem,1.6vw,1.08rem);line-height:2.3;}
.mf-photo{margin:clamp(40px,6vw,64px) auto 0;max-width:960px;overflow:hidden;border-radius:14px;aspect-ratio:21/9;box-shadow:0 40px 90px -40px rgba(0,0,0,.7);}
.mf-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15) brightness(.85) contrast(1.05);will-change:transform;}

.more--dark{background:var(--dark);}
.more--dark .more-label{color:#fff;}

/* スタッキングパネル（.stackfx）
   既定＝通常の縦積み（モバイル / JS無効 / reduced-motion）
   .is-stack（PC×motion OK時にJSが付与）＝各パネルが position:sticky で
   画面に固定され、次のパネルが下から覆いかぶさる。
   前面パネルの「ぼかし・縮小」はJSが filter/transform で毎進行度更新 */
.stackfx.is-stack > *{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden;padding-block:0;will-change:filter,transform;}
.stackfx.is-stack > * > .container{width:100%;}
.stackfx.is-stack .msg-body p{line-height:2;}

/* ---------- 17. Reveal ---------- */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease);}
[data-reveal].is-in{opacity:1;transform:none;}
html:not(.js) [data-reveal]{opacity:1;transform:none;}

/* ---------- 18. Responsive ---------- */
@media (max-width:1180px){
  .gnav a em{display:none;}
}
@media (max-width:1024px){
  .gnav{display:none;}
  .nav-toggle{display:block;}
  .gnav.is-open{display:flex;position:fixed;inset:0;background:#fff;flex-direction:column;padding:calc(var(--header-h) + 40px) var(--gutter) 32px;overflow:auto;z-index:160;}
  .nav-toggle.is-open span{background:var(--ink);} /* 白パネル上では黒 */
  .gnav.is-open ul{flex-direction:column;gap:0;width:100%;}
  .gnav.is-open a{padding:18px 4px;font-size:1.05rem;border-bottom:1px solid var(--line);flex-direction:row;align-items:baseline;gap:12px;color:var(--ink);}
  .gnav.is-open a em{display:inline;width:80px;color:var(--blue);}
  .gnav.is-open a::after{background:var(--blue);}
  .estimate-wrap{grid-template-columns:1fr;}
  .estimate-result{position:static;}
  .flow-list{grid-template-columns:1fr 1fr;}
  .svc-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:900px){
  .msg-hero-grid{grid-template-columns:1fr;gap:24px;}
  .msg-grid{grid-template-columns:1fr;gap:28px;}
  .msg-block--rev .msg-grid .msg-photo{order:0;}
  .msg-block--rev .msg-grid .msg-body{order:1;}
  .sv-cols{grid-template-columns:1fr;gap:28px;}
  .sv-media figure{aspect-ratio:16/9;}
  .ph-grid{grid-template-columns:1fr;min-height:0;}
  .ph-photo{min-height:220px;max-height:320px;}
  .access-grid{grid-template-columns:1fr;}
  .more-grid{grid-template-columns:1fr;}
  .more-card{aspect-ratio:16/9;}
}
@media (max-width:768px){
  .sp-only{display:inline;}
  .prof-table > div,.hist-row{grid-template-columns:1fr;gap:8px;}
  .hist-year{padding-left:0;}
  .hist-year::before{display:none;}
  .news-item{grid-template-columns:104px 1fr auto;gap:14px;}
  .news-item figure{width:104px;}
  .vp-content{grid-template-columns:1fr;gap:24px;}
  .header-btns{display:none;}
  .fixed-cta{display:block;}
  .float-ctas{display:none;}
  body{padding-bottom:58px;}
  .hero-code{font-size:.6rem;opacity:.7;}
  .hero-code--l{display:none;}
  .hero-title{letter-spacing:.08em;}
  .svc-grid{grid-template-columns:1fr;}
  .svc-cell{min-height:0;padding:28px 20px;}
  .strength-inner{flex-direction:column;align-items:flex-start;}
  .circle-cta{align-self:center;}
  .flow-list{grid-template-columns:1fr;}
  .company-table > div{grid-template-columns:1fr;gap:6px;padding:18px 4px;}
  .footer-inner{flex-direction:column;gap:32px;}
  .js [data-reveal]{filter:blur(6px);transform:translate3d(0,44px,0) scale(.986);transition:opacity .78s var(--ease),transform .96s var(--ease),filter .78s ease;}
  .js [data-reveal].is-in{filter:none;transform:none;}
  .page-hero .ph-title h1{transition-delay:.04s;}
  .page-hero .ph-title .ph-en{transition-delay:.13s;}
  .page-hero .ph-title .ph-lead{transition-delay:.22s;}
  .page-hero .ph-photo{overflow:hidden;transition-delay:.12s;transform-origin:center top;}
  .page-hero .ph-photo :is(img,video){transition:transform 1.35s var(--ease),filter .9s ease;}
  .js .page-hero .ph-photo:not(.is-in) :is(img,video){filter:grayscale(.52) brightness(.62);transform:scale(1.12);}
  .page-hero .ph-photo.is-in :is(img,video){filter:grayscale(.2) brightness(.8) contrast(1.08);transform:scale(1);}
  .sv-media{perspective:900px;}
  .js .sv-media:not(.is-in){transform:translate3d(0,58px,0) rotateX(2deg) scale(.975);}
  .sv-media figure{position:relative;}
  .sv-media figure::after{content:"";position:absolute;z-index:2;inset:-30% auto -30% -45%;width:34%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);opacity:0;transform:skewX(-16deg) translateX(-180%);pointer-events:none;}
  .sv-media figure.is-shown::after{animation:svImageScan .9s var(--ease) .18s both;}
  .js .sv-media:not(.is-in) .sv-no{opacity:0;transform:translate3d(18px,-14px,0);}
  .sv-no{transition:opacity .65s ease .28s,transform .9s var(--ease) .28s;}
  .js .sv-list:not(.is-in) li,.js .sv-tags:not(.is-in) span{opacity:0;transform:translate3d(0,18px,0);}
  .sv-list li,.sv-tags span{transition:opacity .55s ease,transform .7s var(--ease);}
  .sv-list.is-in li,.sv-tags.is-in span{opacity:1;transform:none;}
  .sv-list li:nth-child(2),.sv-tags span:nth-child(2){transition-delay:.07s;}
  .sv-list li:nth-child(3),.sv-tags span:nth-child(3){transition-delay:.14s;}
  .sv-tags span:nth-child(4){transition-delay:.21s;}
  .sv-tags span:nth-child(5){transition-delay:.28s;}
  .sv-tags span:nth-child(6){transition-delay:.35s;}
}
@media (max-width:520px){
  .hero-cta .btn,.contact-actions .btn{width:100%;}
  .contact-band--service{min-height:auto;padding-block:64px;}
}

/* ---------- 19. Reduced Motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
  [data-reveal],.js [data-hero]{opacity:1!important;filter:none!important;transform:none!important;}
  .hero-img--lit{opacity:1!important;}
  .hero-beam{opacity:.85!important;}
  .hero-floor{opacity:.7!important;}
  .hero-scroll i{animation:none!important;}
  .ph-photo :is(img,video){transform:none!important;}
  /* Visionは静的フォールバック表示（is-fxはJSが付与しない） */
  .vision .vp-content{opacity:1!important;transform:none!important;}
  .js [data-clip]{clip-path:none!important;}
  [data-para]{transform:none!important;}
}

/* ---------- Unified site header ----------
   All pages use the same dimensions, official logo, navigation and CTA style. */
.site-header.site-header--unified{
  top:20px;
  width:calc(100% - 88px);
  max-width:none;
  height:68px;
  padding:0 28px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:7px;
  background:rgba(17,18,20,.62);
  box-shadow:none;
  backdrop-filter:blur(16px) saturate(130%);
  -webkit-backdrop-filter:blur(16px) saturate(130%);
}
.site-header.site-header--unified.is-scrolled{
  background:rgba(17,18,20,.82);
  box-shadow:0 12px 38px -24px rgba(0,0,0,.8);
}
.site-header--unified .logo-img{
  display:block;
  width:150px;
  height:auto;
  filter:none;
}
.site-header--unified .gnav ul{gap:clamp(14px,1.7vw,28px);}
.site-header--unified .gnav a{font-size:.75rem;}
.site-header--unified .gnav a em{display:none;}
.site-header--unified .gnav a[aria-current="page"]::after{width:100%;}
.site-header--unified .hbtn{
  height:40px;
  padding-inline:24px;
  border-radius:3px;
  font-size:.75rem;
}
.site-header--unified .hbtn--sub{background:rgba(72,100,218,.76);}

@media (max-width:1100px){
  .site-header.site-header--unified{width:calc(100% - 32px);}
}

@media (max-width:1024px){
  .site-header.site-header--unified{top:14px;height:68px;}
  .site-header.site-header--unified:has(.gnav.is-open){
    top:0;
    left:0;
    transform:none;
    width:100%;
    max-width:none;
    height:100svh;
    padding-top:14px;
    border-radius:0;
    background:#fff;
    align-items:flex-start;
  }
  .site-header.site-header--unified:has(.gnav.is-open) .logo{position:relative;z-index:171;margin-top:10px;}
  .site-header.site-header--unified:has(.gnav.is-open) .logo-img{filter:brightness(0);}
  .site-header.site-header--unified:has(.gnav.is-open) .nav-toggle{margin-left:auto;}
  .site-header--unified .gnav.is-open{position:absolute;inset:0;height:100%;padding-top:calc(var(--header-h) + 50px);}
  .site-header--unified .gnav.is-open a em{display:inline;}
}

@media (max-width:800px){
  .site-header.site-header--unified{
    top:14px;
    width:calc(100% - 20px);
    height:84px;
    padding-inline:18px;
  }
  .site-header--unified .logo-img{width:136px;}
}

/* ============================================================
   Shared typography mapping
   The seven roles are defined in TYPOGRAPHY.md and :root above.
   Decorative counters, prices and background lettering remain exceptions.
   ============================================================ */
.sec-tag,.tbc,.ct-en,.ph-en,.cb-tag,.more-label,.news-chip,.sv-tags span,
.dw-footer__group>p,.dw-footer__contact>p,.dw-footer__group a small,
.dw-footer__brand>span,.dw-footer__tel small,.dw-footer__bottom address,
.dw-footer__bottom p,.news-note,.sv-note,.hero-scroll,.svc-cell em,
.strength-stats small,.strength-note,.er-head small,.er-val small,.er-note,
.footer-bottom p,.msg-note,.sv-nav a em{font-size:var(--fs-label);}

.hero-title{font-size:var(--fs-first-view);line-height:1.15;}
.ph-title h1{font-size:var(--fs-page-title);line-height:1.3;}
.sec-title,.strength-title,.contact-title,.vp-title,.cb-title,.sv-title,.mf-title{
  font-size:var(--fs-section-title);line-height:1.42;
}
.svc-cell span,.flow-list h3,.vp-body h3,.access-info h3,.news-body h3,
.sv-h,.msg-body h2,.mp-name,.mc-body b{font-size:var(--fs-subheading);}

.hero-sub,.sec-lead,.strength-lead,.contact-lead,.cb-lead,.ph-lead,.sv-lead,.mf-text{
  font-size:var(--fs-lead);
}
.btn,.btn-lg,.hbtn,.faq-item summary,.faq-a p,.contact-sub,
.company-table dt,.company-table dd,.footer-addr,.footer-nav a,
.dw-footer__brand>p,.dw-footer__group a span,.dw-footer__contact-link,
.float-card b,.fixed-cta,.news-meta time,.prof-table dt,.prof-table dd,
.hist-row time,.hist-row li p,.access-addr,.access-list>div,.sv-nav a,
.sv-text,.sv-list li,.msg-bio,.msg-body p,.msg-sign,.cb-lead{
  font-size:var(--fs-body);
}
.gnav a,.gnav a em,.site-header--unified .gnav a,.site-header--unified .hbtn,
.hbtn,.float-card small{font-size:var(--fs-label);}
