/* =====================================================================
   蒼建 SOKEN — style.css  E系統（コーポレートブルー＋モーション / 動×硬）
   白基調 × vividブルー#2C7BD9 × グラデ帯 / 近代CSS濃用
===================================================================== */
:root{
  /* ベース */
  --color-bg:#FFFFFF;
  --color-bg-soft:#F0F4F8;      /* 淡いブルーグレー */
  --color-bg-deep:#0F2A4A;      /* ディープネイビー */
  /* テキスト */
  --color-text:#1A2B3D;
  --color-text-sub:#5E6E80;
  --color-text-inv:#FFFFFF;
  --color-text-inv-sub:rgba(255,255,255,.72);
  /* アクセント（動の主役） */
  --color-accent:#2C7BD9;
  --color-accent-2:#5BA3F5;
  --color-accent-deep:#1E5DA8;
  --gradient-blue:linear-gradient(135deg,#2C7BD9 0%,#5BA3F5 100%);
  --gradient-blue-soft:linear-gradient(135deg,rgba(44,123,217,.08),rgba(91,163,245,.04));
  /* 罫線 */
  --color-line:rgba(26,43,61,.12);
  --color-line-inv:rgba(255,255,255,.2);
  /* フォント */
  --font-jp:'Noto Sans JP',sans-serif;
  --font-en:'Inter',sans-serif;
  /* 流体スペース */
  --space-xs:clamp(8px,1vw,12px);
  --space-sm:clamp(16px,2vw,24px);
  --space-md:clamp(32px,4vw,56px);
  --space-lg:clamp(56px,8vw,96px);
  --space-xl:clamp(80px,12vw,140px);
  --section-padding:clamp(100px,13vw,180px);
  --container:min(1200px,90vw);
  --container-wide:min(1400px,94vw);
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-expo:cubic-bezier(.77,0,.175,1);
  --ease-fade:cubic-bezier(.4,0,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-jp);font-weight:400;
  line-height:1.85;letter-spacing:.03em;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
ul,ol{list-style:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
em,i,cite{font-style:normal;}

/* レイアウト */
.container{width:var(--container);margin-inline:auto;}
.container-wide{width:var(--container-wide);margin-inline:auto;}
.section{padding-block:var(--section-padding);position:relative;}
.section--soft{background:var(--color-bg-soft);}
.section--deep{background:var(--color-bg-deep);color:var(--color-text-inv);}
.center{text-align:center;}
.measure{max-width:640px;}.measure.center{margin-inline:auto;}

/* 英日並列見出し */
.section-title{display:flex;flex-direction:column;gap:clamp(10px,1.4vw,18px);}
.section-title.center{align-items:center;}
.title-en{font-family:var(--font-en);font-size:clamp(13px,1.4vw,16px);letter-spacing:.18em;
  color:var(--color-accent);font-weight:500;text-transform:uppercase;}
.section--deep .title-en{color:var(--color-accent-2);}
.title-jp{font-family:var(--font-jp);font-size:clamp(22px,3vw,36px);font-weight:700;line-height:1.4;letter-spacing:.04em;}
.section--deep .title-jp{color:var(--color-text-inv);}
.lead{color:var(--color-text-sub);font-size:clamp(15px,1.6vw,16px);line-height:2.0;}
.section--deep .lead{color:var(--color-text-inv-sub);}
.prose p{color:var(--color-text-sub);line-height:2.05;margin-bottom:1.4em;}
.prose p:last-child{margin-bottom:0;}
.section--deep .prose p{color:var(--color-text-inv-sub);}

/* 巨大透かし文字 */
.watermark{position:relative;isolation:isolate;}
.watermark__bg{position:absolute;font-family:var(--font-en);font-weight:700;font-size:clamp(100px,18vw,280px);
  color:var(--color-accent);opacity:.06;z-index:-1;line-height:.8;letter-spacing:-.04em;pointer-events:none;user-select:none;
  top:-.1em;left:50%;transform:translateX(-50%);white-space:nowrap;}

/* ボタン */
.btn{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-jp);font-weight:500;font-size:15px;
  padding:16px 34px;border-radius:999px;transition:transform .4s var(--ease),background .4s,color .4s,box-shadow .4s;}
.btn--primary{background:var(--color-accent);color:#fff;box-shadow:0 8px 24px rgba(44,123,217,.28);}
.btn--primary:hover{background:color-mix(in srgb,var(--color-accent) 85%,#000);transform:translateY(-2px);}
.btn--line{border:1px solid var(--color-line);color:var(--color-text);}
.btn--line:hover{border-color:var(--color-accent);color:var(--color-accent);}
.btn--ghost{border:1px solid var(--color-line-inv);color:#fff;}
.btn--ghost:hover{background:rgba(255,255,255,.12);}
.link-arrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-en);font-weight:500;font-size:14px;
  letter-spacing:.06em;color:var(--color-accent);transition:gap .4s var(--ease);}
.link-arrow:hover{gap:16px;}

/* 円形CTA */
.circle-cta{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  width:clamp(108px,13vw,158px);height:clamp(108px,13vw,158px);border-radius:50%;background:var(--gradient-blue);
  color:#fff;font-family:var(--font-en);font-size:13px;font-weight:500;letter-spacing:.1em;text-align:center;
  box-shadow:0 12px 30px rgba(44,123,217,.3);transition:transform .45s var(--ease),box-shadow .45s;}
.circle-cta:hover{transform:scale(1.07);box-shadow:0 18px 40px rgba(44,123,217,.4);}
.circle-cta__arrow{font-size:20px;transition:transform .4s;}
.circle-cta:hover .circle-cta__arrow{transform:translateX(3px);}

/* 波/曲線セクション境界 */
.wave-divider{display:block;width:100%;height:clamp(40px,6vw,80px);}

/* =====================================================================
   ヘッダー（ガラス）
===================================================================== */
.site-header{position:fixed;inset:0 0 auto 0;z-index:100;transition:background .4s,box-shadow .4s;}
.site-header-inner{width:var(--container-wide);margin-inline:auto;height:80px;display:flex;align-items:center;justify-content:space-between;gap:24px;}
.site-header.is-scrolled{background:rgba(255,255,255,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 20px rgba(15,42,74,.08);}
.site-header:not(.is-scrolled){background:rgba(255,255,255,.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);}
.site-logo{font-family:var(--font-en);font-weight:700;font-size:26px;letter-spacing:.04em;color:var(--color-text);display:flex;align-items:baseline;gap:8px;}
.site-logo small{font-family:var(--font-jp);font-weight:500;font-size:11px;letter-spacing:.2em;color:var(--color-text-sub);}
.header-right{display:flex;align-items:center;gap:clamp(18px,2.2vw,34px);}
.site-nav ul{display:flex;align-items:center;gap:clamp(14px,1.8vw,28px);}
.site-nav a{font-family:var(--font-en);font-weight:500;font-size:14px;letter-spacing:.04em;color:var(--color-text);position:relative;padding:6px 0;transition:color .3s;}
.site-nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--color-accent);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease);}
.site-nav a:hover::after,.site-nav a.is-current::after{transform:scaleX(1);transform-origin:left;}
.site-nav li:has(a.is-current) a{color:var(--color-accent);}
.header-cta{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;
  background:var(--gradient-blue);color:#fff;font-family:var(--font-en);font-size:11px;font-weight:600;letter-spacing:.06em;text-align:center;line-height:1.2;
  box-shadow:0 8px 20px rgba(44,123,217,.3);transition:transform .4s var(--ease);}
.header-cta:hover{transform:scale(1.08);}
.hamburger{display:none;width:30px;height:16px;position:relative;z-index:120;}
.hamburger span{position:absolute;left:0;width:100%;height:2px;background:var(--color-text);border-radius:2px;transition:transform .4s var(--ease),opacity .3s;}
.hamburger span:nth-child(1){top:0;}.hamburger span:nth-child(2){top:7px;}.hamburger span:nth-child(3){top:14px;}
.hamburger.is-open span:nth-child(1){top:7px;transform:rotate(45deg);}
.hamburger.is-open span:nth-child(2){opacity:0;}
.hamburger.is-open span:nth-child(3){top:7px;transform:rotate(-45deg);}

/* 全画面オーバーレイメニュー */
.overlay-menu{position:fixed;inset:0;z-index:110;background:var(--color-bg);
  clip-path:circle(0% at calc(100% - 46px) 40px);transition:clip-path .7s var(--ease-expo);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;visibility:hidden;}
.overlay-menu.is-open{clip-path:circle(150% at calc(100% - 46px) 40px);visibility:visible;}
.overlay-menu a{font-family:var(--font-en);font-weight:600;font-size:clamp(28px,7vw,42px);color:var(--color-text);
  opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease),transform .5s var(--ease);padding:4px 0;}
.overlay-menu a small{display:block;font-family:var(--font-jp);font-size:12px;font-weight:400;letter-spacing:.2em;color:var(--color-text-sub);margin-top:2px;}
.overlay-menu.is-open a{opacity:1;transform:none;}
.overlay-menu.is-open a:nth-child(1){transition-delay:.25s}.overlay-menu.is-open a:nth-child(2){transition-delay:.3s}.overlay-menu.is-open a:nth-child(3){transition-delay:.35s}.overlay-menu.is-open a:nth-child(4){transition-delay:.4s}.overlay-menu.is-open a:nth-child(5){transition-delay:.45s}.overlay-menu.is-open a:nth-child(6){transition-delay:.5s}.overlay-menu.is-open a:nth-child(7){transition-delay:.55s}
.overlay-menu__cta{margin-top:24px;}

/* =====================================================================
   HERO（pin+scrub でシュリンク）
===================================================================== */
.hero{position:relative;height:100vh;min-height:600px;overflow:hidden;will-change:transform;}
.hero__media{position:absolute;inset:0;z-index:0;}
.hero__media img{width:100%;height:100%;object-fit:cover;}
.hero__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(15,42,74,.28),rgba(15,42,74,.06) 40%,rgba(15,42,74,.34));}
.hero__inner{position:relative;z-index:2;height:100%;width:var(--container-wide);margin-inline:auto;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:clamp(70px,11vh,130px);color:#fff;}
.hero__label{font-family:var(--font-en);font-size:clamp(13px,1.4vw,16px);font-weight:500;letter-spacing:.2em;text-transform:uppercase;margin-bottom:20px;display:flex;align-items:center;gap:14px;}
.hero__label::before{content:"";width:40px;height:2px;background:var(--color-accent-2);}
.hero__title{font-family:var(--font-jp);font-weight:700;font-size:clamp(36px,6vw,72px);line-height:1.3;letter-spacing:.06em;}
.hero__title .line{display:block;overflow:hidden;}
.hero__title .line>span{display:inline-block;}
.hero__sub{margin-top:22px;font-size:clamp(14px,1.5vw,16px);line-height:2;color:rgba(255,255,255,.9);max-width:34em;}
.hero__scroll{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;font-family:var(--font-en);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.85);writing-mode:vertical-rl;}
.hero__scroll::after{content:"";display:block;width:1px;height:42px;background:rgba(255,255,255,.6);margin:10px auto 0;}
/* HEROキャッチ立ち上げ */
.hero__title .line>span,.hero__sub,.hero__label{will-change:transform,opacity;}
html.js-ready .hero__title .line>span{transform:translateY(115%);opacity:0;filter:blur(6px);transition:transform 1s var(--ease),opacity .8s,filter .8s;}
html.js-ready .hero__label,html.js-ready .hero__sub{opacity:0;transform:translateY(16px);transition:opacity 1s var(--ease),transform 1s var(--ease);}
html.js-ready .hero.is-revealed .hero__title .line>span{transform:none;opacity:1;filter:blur(0);}
html.js-ready .hero.is-revealed .hero__title .line:nth-child(1)>span{transition-delay:.1s}
html.js-ready .hero.is-revealed .hero__title .line:nth-child(2)>span{transition-delay:.25s}
html.js-ready .hero.is-revealed .hero__label{opacity:1;transform:none;transition-delay:.05s}
html.js-ready .hero.is-revealed .hero__sub{opacity:.9;transform:none;transition-delay:.4s}

/* =====================================================================
   数値カウント
===================================================================== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,40px);}
.stat{text-align:center;white-space:nowrap;}
.stat__num{font-family:var(--font-jp);font-weight:700;font-size:clamp(46px,6.4vw,92px);line-height:1.08;color:var(--color-accent);letter-spacing:.01em;font-variant-numeric:tabular-nums;display:inline-block;}
.stat__suffix{font-family:var(--font-jp);font-weight:700;font-size:clamp(20px,2.6vw,32px);color:var(--color-accent);margin-left:4px;}
.stat__label{display:block;font-size:13px;color:var(--color-text-sub);margin-top:10px;letter-spacing:.1em;}

/* 強みカード */
.strength-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.6vw,32px);margin-top:var(--space-lg);}
.strength-card{background:#fff;border:1px solid var(--color-line);border-radius:18px;padding:clamp(28px,3.4vw,44px);transition:transform .5s var(--ease),box-shadow .5s,border-color .5s;}
.strength-card:hover{transform:translateY(-6px);box-shadow:0 20px 44px rgba(15,42,74,.1);border-color:transparent;}
.strength-card__no{font-family:var(--font-en);font-weight:700;font-size:14px;color:var(--color-accent);letter-spacing:.1em;}
.strength-card__title{font-size:clamp(18px,2.2vw,24px);font-weight:700;margin:14px 0 12px;}
.strength-card__desc{font-size:14px;color:var(--color-text-sub);line-height:2;}

/* =====================================================================
   画像入り巨大マーキー
===================================================================== */
.image-marquee{overflow:hidden;padding:clamp(40px,6vw,80px) 0;background:var(--gradient-blue);color:#fff;
  -webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);}
.image-marquee__track{display:flex;width:max-content;align-items:center;gap:clamp(24px,3vw,48px);animation:marqueeImage 40s linear infinite;}
.image-marquee__text{font-family:var(--font-en);font-size:clamp(48px,8vw,120px);font-weight:700;white-space:nowrap;letter-spacing:-.02em;}
.image-marquee__track img{height:clamp(64px,10vw,140px);width:auto;aspect-ratio:16/9;border-radius:10px;object-fit:cover;}
@keyframes marqueeImage{to{transform:translateX(-50%);}}
@media (prefers-reduced-motion:reduce){.image-marquee__track{animation:none;}}

/* =====================================================================
   Works グリッド（bento＋コンテナクエリ）
===================================================================== */
.works-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(16px,2vw,28px);}
.works-card{position:relative;border-radius:16px;overflow:hidden;background:#fff;}
.works-card--lg{grid-column:span 7;}
.works-card--sm{grid-column:span 5;}
.works-card__media{aspect-ratio:4/3;overflow:hidden;}
.works-card--lg .works-card__media{aspect-ratio:16/10;}
.works-card__media img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease);}
.works-card:hover .works-card__media img{transform:scale(1.05);}
.works-card:has(.works-card__media:hover){outline:2px solid var(--color-accent);outline-offset:3px;}
.works-card__body{padding:20px 4px 0;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;}
.works-card__cat{font-family:var(--font-en);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);}
.works-card__name{font-size:clamp(16px,1.8vw,19px);font-weight:700;margin-top:6px;}
.works-card__circle{flex:none;}
.works-card__circle .circle-cta{width:clamp(72px,8vw,92px);height:clamp(72px,8vw,92px);font-size:10px;}

/* Worksフィルター */
.filter{display:flex;gap:10px;flex-wrap:wrap;margin-top:var(--space-md);}
.filter button{font-family:var(--font-en);font-size:13px;letter-spacing:.06em;padding:9px 22px;border-radius:999px;border:1px solid var(--color-line);color:var(--color-text-sub);transition:all .3s;}
.filter button.is-active,.filter button:hover{background:var(--color-accent);color:#fff;border-color:var(--color-accent);}

/* =====================================================================
   Voice カルーセル（scroll-snap・JS不要）
===================================================================== */
.voice-carousel{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:clamp(16px,2vw,32px);padding-bottom:16px;-webkit-overflow-scrolling:touch;scrollbar-width:thin;}
.voice-carousel>*{scroll-snap-align:start;flex:0 0 min(85%,440px);}
.voice-card{background:#fff;border:1px solid var(--color-line);border-radius:18px;overflow:hidden;}
.voice-card__media{aspect-ratio:16/10;overflow:hidden;position:relative;}
.voice-card__media img{width:100%;height:100%;object-fit:cover;}
.voice-card__play{position:absolute;inset:0;margin:auto;}
.voice-card__body{padding:clamp(20px,2.4vw,30px);}
.voice-card__text{font-size:15px;line-height:1.9;}
.voice-card__name{font-size:12px;color:var(--color-text-sub);margin-top:14px;letter-spacing:.08em;}

/* =====================================================================
   ニュース（:has() フィルター）
===================================================================== */
.news-list{border-top:1px solid var(--color-line);}
.news-item{display:grid;grid-template-columns:130px 120px 1fr auto;gap:22px;align-items:center;padding:22px 4px;border-bottom:1px solid var(--color-line);transition:padding-left .4s var(--ease);}
.news-item:hover{padding-left:12px;}
.news-item__date{font-family:var(--font-en);font-size:15px;color:var(--color-text-sub);}
.news-item__cat{font-family:var(--font-en);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);border:1px solid var(--color-accent);border-radius:999px;padding:4px 12px;justify-self:start;}
.news-item__title{font-size:15px;}
.news-item__arrow{font-family:var(--font-en);font-size:12px;color:var(--color-text-sub);letter-spacing:.1em;}

/* ページヘッダー */
.page-hero{position:relative;padding-top:clamp(150px,18vh,210px);padding-bottom:var(--space-lg);overflow:hidden;}
.breadcrumb{display:flex;gap:10px;font-family:var(--font-en);font-size:12px;letter-spacing:.08em;color:var(--color-text-sub);margin-bottom:18px;}
.breadcrumb a:hover{color:var(--color-accent);}

/* 交互スプリット */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,80px);align-items:center;}
.split--rev .split__media{order:2;}
.split__media{overflow:hidden;border-radius:16px;}
.split__media img{width:100%;height:100%;object-fit:cover;}

/* タイムライン */
.timeline{position:relative;padding-left:32px;}
.timeline::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--gradient-blue);}
.timeline__item{position:relative;padding-bottom:var(--space-md);}
.timeline__item::before{content:"";position:absolute;left:-32px;top:7px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--color-accent);}
.timeline__year{font-family:var(--font-en);font-weight:700;font-size:18px;color:var(--color-accent);}
.timeline__text{font-size:14px;color:var(--color-text-sub);margin-top:6px;line-height:1.9;}

/* インフォ表・地図 */
.info-table{width:100%;}.info-table tr{border-bottom:1px solid var(--color-line);}
.info-table th,.info-table td{text-align:left;padding:16px 4px;vertical-align:top;font-size:15px;}
.info-table th{width:28%;font-family:var(--font-en);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);font-weight:500;padding-top:19px;}
.info-table td{color:var(--color-text-sub);}
.map{border-radius:16px;overflow:hidden;border:1px solid var(--color-line);aspect-ratio:16/10;}
.map iframe{width:100%;height:100%;border:0;display:block;}

/* フォーム */
.form-field{margin-bottom:22px;}
.form-field label{display:block;font-size:13px;font-weight:500;margin-bottom:8px;letter-spacing:.06em;}
.form-field input,.form-field textarea,.form-field select{width:100%;font-family:inherit;font-size:15px;padding:14px 16px;border:1px solid var(--color-line);border-radius:10px;background:#fff;transition:border-color .3s;}
.form-field input:focus,.form-field textarea:focus,.form-field select:focus{outline:none;border-color:var(--color-accent);}
.form-field:has(input:focus) label,.form-field:has(textarea:focus) label{color:var(--color-accent);}

/* =====================================================================
   フッター（ディープネイビー）
===================================================================== */
.site-footer{background:var(--color-bg-deep);color:var(--color-text-inv);padding-block:clamp(70px,9vw,110px) 34px;}
.footer-cta{width:var(--container-wide);margin-inline:auto;display:flex;justify-content:center;gap:clamp(20px,4vw,56px);padding-bottom:clamp(50px,7vw,80px);}
.footer-top{width:var(--container-wide);margin-inline:auto;display:grid;grid-template-columns:1.8fr 1fr 1fr;gap:40px;padding-block:48px;border-top:1px solid var(--color-line-inv);border-bottom:1px solid var(--color-line-inv);}
.footer-logo{font-family:var(--font-en);font-weight:700;font-size:30px;letter-spacing:.04em;}
.footer-tag{color:var(--color-text-inv-sub);font-size:13px;margin:12px 0 18px;}
.footer-addr{font-size:13px;line-height:2;color:var(--color-text-inv-sub);}
.footer-col h4{font-family:var(--font-en);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent-2);margin-bottom:16px;}
.footer-col a{display:block;font-size:14px;color:var(--color-text-inv-sub);padding:6px 0;transition:color .3s;}
.footer-col a:hover{color:#fff;}
.footer-bottom{width:var(--container-wide);margin-inline:auto;padding-top:24px;display:flex;justify-content:space-between;font-family:var(--font-en);font-size:11px;letter-spacing:.08em;color:var(--color-text-inv-sub);}

/* モバイル下部固定CTAバー */
.mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:90;display:none;grid-template-columns:1fr 1fr 1fr;
  background:#fff;box-shadow:0 -4px 20px rgba(15,42,74,.12);}
.mobile-cta a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:11px 4px;font-size:11px;font-weight:500;letter-spacing:.04em;border-right:1px solid var(--color-line);}
.mobile-cta a:last-child{border-right:none;}
.mobile-cta a.is-primary{background:var(--gradient-blue);color:#fff;}
.mobile-cta svg{width:20px;height:20px;}

/* =====================================================================
   アニメーション（fade-up堅牢方式・reveal・clip-path）
===================================================================== */
.fade-up{opacity:1;transform:none;}
html.js-ready .fade-up{opacity:0;transform:translateY(30px);transition:opacity 1.1s var(--ease-fade),transform 1.2s var(--ease);}
html.js-ready .fade-up.is-visible{opacity:1;transform:translateY(0);}
.fade-up.d1{transition-delay:.1s}.fade-up.d2{transition-delay:.2s}.fade-up.d3{transition-delay:.3s}
.reveal-img{opacity:1;transform:none;}
html.js-ready .reveal-img{opacity:0;transform:translateY(26px);transition:opacity 1.25s var(--ease-fade),transform 1.25s var(--ease);}
html.js-ready .reveal-img.is-visible{opacity:1;transform:none;}

.loader{position:fixed;inset:0;z-index:9999;background:#fff;display:grid;place-items:center;transition:opacity .7s var(--ease),visibility .7s;}
.loader.is-done{opacity:0;visibility:hidden;}.loader.is-hidden{display:none;}
.loader__logo{font-family:var(--font-en);font-weight:700;font-size:clamp(34px,6vw,56px);color:var(--color-accent);letter-spacing:.1em;
  opacity:0;animation:loIn 1s var(--ease) forwards;}
@keyframes loIn{0%{opacity:0;letter-spacing:.4em}100%{opacity:1;letter-spacing:.1em}}

.below-fold{content-visibility:auto;contain-intrinsic-size:1px 800px;}

/* =====================================================================
   レスポンシブ
===================================================================== */
@media (max-width:900px){
  .site-nav,.header-cta{display:none;}
  .hamburger{display:block;}
  .stats{grid-template-columns:1fr 1fr;gap:36px 20px;}
  .strength-grid{grid-template-columns:1fr;}
  .works-card--lg,.works-card--sm{grid-column:span 12;}
  .split,.split--rev{grid-template-columns:1fr;gap:30px;}
  .split--rev .split__media{order:-1;}
  .footer-top{grid-template-columns:1fr;gap:30px;}
  .footer-bottom{flex-direction:column;gap:8px;}
  .footer-cta{gap:20px;}
  .mobile-cta{display:grid;}
  body{padding-bottom:60px;}
  .news-item{grid-template-columns:auto 1fr;gap:6px 16px;}
  .news-item__title{grid-column:1/-1;}.news-item__arrow{display:none;}
}
@media (max-width:600px){
  .image-marquee__track{animation-duration:24s;}
  .hero__title{letter-spacing:.04em;}
}
@media (hover:none){
  .circle-cta:hover{transform:none;}
  .works-card:hover .works-card__media img{transform:none;}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}
}

/* 動画モーダル開状態 */
#video-modal.is-open{opacity:1!important;visibility:visible!important;}

/* スキップリンク（アクセシビリティ） */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;background:var(--color-accent);color:#fff;padding:10px 18px;border-radius:0 0 8px 0;font-size:13px;}
.skip-link:focus{left:0;}
:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;}

/* opacity のみのソフトフェード（ヒーロー大写真・マーキー帯など） */
.reveal-soft{opacity:1;}
html.js-ready .reveal-soft{opacity:0;transition:opacity 1.4s var(--ease-fade);}
html.js-ready .reveal-soft.is-visible{opacity:1;}
html.js-ready .hero__media.reveal-soft{transform:scale(1.06);transition:opacity 1.6s var(--ease-fade),transform 2.2s var(--ease);}
html.js-ready .hero__media.reveal-soft.is-visible{transform:scale(1);}
