/* 株式会社Shinonome トップページ 基本スタイル
   Claude Design の書き出し(トップページ v2)より。デザインが正。
   ※ 各要素の細かなレイアウトは index.html 内のインライン style で定義されています。 */

html, body { margin: 0; padding: 0; background: #0E0E10; }
body { font-family: 'Noto Sans JP', sans-serif; color: #1A1A1C; -webkit-font-smoothing: antialiased; }
a { color: #35648F; text-decoration: none; }
a:hover { color: #2A5175; }
::selection { background: rgba(130, 130, 140, 0.22); }
::-moz-selection { background: rgba(130, 130, 140, 0.22); }
/* 液体テキスト演出(assets/js/liquid-text.js)の下準備。
   JSが動くのを待っていると、その前に白い文字が一瞬見えてしまう(リフレッシュ時のちらつき)。
   最初の描画の時点で文字を透明にしておくことで、これを防ぐ。
   - html.liquid-ready は、各ページの<head>の小さなスクリプトが「WebGLが使える」ときだけ付ける
     → WebGLが使えない環境ではクラスが付かず、通常の文字色のまま表示される
   - data-liquid-off は、演出をやめたとき(スマホで折り返す等)にJSが付ける → 通常の文字色に戻る */
html.liquid-ready [data-liquid-text]:not([data-liquid-off]) { color: transparent; }
@keyframes bg-drift-a { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(90px, -60px) scale(1.15); } 66% { transform: translate(-50px, 40px) scale(0.95); } }
@keyframes bg-drift-b { 0%, 100% { transform: translate(0, 0) scale(1); } 40% { transform: translate(-110px, 50px) scale(1.1); } 75% { transform: translate(60px, -40px) scale(1.05); } }
@keyframes bg-drift-c { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(70px, 70px) scale(1.2); } }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; } }

/* ヘッダーは画面右上のMENUボタン方式(assets/js/nav-menu.js が生成)。
   旧・固定ヘッダー(#site-header)は使わなくなったため、HTML・CSS・JSごと削除した(2026-08-05)。
   MENUボタンとロゴの白/黒の切り替えは nav-menu.js が行う
   (背景の明るさを見て判定。固定したい場所には data-header-tone="light|dark" を付ける)。 */

/* 最終CTA(Start with a conversation.)を画面いっぱいで見せるための止まり方(2026-07-23)。
   スクロールが近づいたときだけ、そっと画面いっぱいの位置へ吸い寄せる。
   - proximity(近づいたときだけ) にしてあるので、途中で止まりたいときは止まれる
   - 目印(scroll-snap-align)を付けているのはこのセクションだけ。他は今までどおり
   ※以前ページ全体に mandatory(必ず吸い寄せる) を入れて「スクロールが進まない」
     不具合が出たため、ここでは弱い方の指定にしている。合わなければこの2行を消せば元に戻る
   - 止める位置は「画面の中央にセクションの中央を合わせる」(center)。
     上端合わせ(start)だと、画面の高さによっては上に寄って見えるため(MacBookで発生) */
html { scroll-snap-type: y proximity; }
#final-cta { scroll-snap-align: center; }

/* トップページ最終CTA「枠を走る光」(assets/js/cta-line.js)。
   canvasはボタンより一回り大きく、線がふちからはみ出しても切れないようにしてある。
   ホバー時はボタンが手前に浮き出し、まわりにValueの3色の霧のような光が出る。 */
/* 背景色・影・動きの指定は、HTML側(インライン)ではなくここに書くこと。
   インラインの指定はCSSより強く、下の .is-hover で上書きできなくなるため
   (最初インラインに書いてしまい、ホバーの光が出ずに判明) */
[data-cta-line] { isolation: isolate; overflow: visible; will-change: transform;
  background: #131317; box-shadow: 0 6px 18px rgba(0,0,0,0.45);
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.32s ease, background 0.32s ease; }
[data-cta-line] > canvas { position: absolute; left: 0; top: 0; z-index: 1; pointer-events: none; }
[data-cta-line] > [data-cta-line-label],
[data-cta-line] > [data-cta-line-arrow] { position: relative; z-index: 2;
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1); }
/* まわりの光は、紫の背景に埋もれないよう明るめにしてある(2026-07-23) */
[data-cta-line].is-hover { transform: translateY(-5px) scale(1.02); background: #17171C;
  box-shadow: 0 12px 24px rgba(0,0,0,0.5),
              0 0 18px rgba(184,171,245,0.55),
              0 4px 38px rgba(120,171,235,0.42),
              0 0 70px rgba(214,168,219,0.30); }
[data-cta-line].is-hover > [data-cta-line-arrow] { transform: translateX(4px); }

/* トップページ最終CTAのオーロラ演出(assets/js/cta-aurora.js)。
   ※2026-07-22に一旦見送り。別案(上の「枠を走る光」)と入れ替えられるよう残してある。
   canvasはボタンより一回り大きく、紙吹雪がボタンの外へ舞い出せるようにしてある。
   ホバー時は文字が明るく浮き出る(光の玉はcanvas側で描いている)。 */
[data-cta-aurora] { isolation: isolate; overflow: visible; }
[data-cta-aurora] > canvas { position: absolute; left: 0; top: 0; z-index: 0; pointer-events: none; }
[data-cta-aurora] > [data-cta-aurora-label] { position: relative; z-index: 2;
  transition: color 0.3s ease, text-shadow 0.3s ease, transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
[data-cta-aurora].is-hover { box-shadow: 0 14px 34px rgba(20,16,40,0.5), 0 0 34px rgba(183,172,245,0.30), 0 12px 44px rgba(120,170,235,0.22); }
[data-cta-aurora].is-hover > [data-cta-aurora-label] { text-shadow: 0 0 16px rgba(255,255,255,0.8), 0 0 38px rgba(183,172,245,0.55); transform: translateY(-1px); }

/* /contact ページ専用のスタイルは contact/index.html 内の <style> にあります(トップページに影響させないため)。 */

/* =========================================================
   スマホ対応(2026-07-30) 画面幅720px以下で適用
   トップページの見た目はHTMLのインライン指定が主のため、
   ここでは !important を付けて上書きする(インラインより優先させるため)。
   セクションごとにまとめてあり、消したい場合はブロックごと削除でよい。
   ========================================================= */
@media (max-width: 720px) {

  /* --- 横スクロールの封じ込め(2026-07-30) ---
     光のにじみ(Valueの光だまり等)が画面幅を超えて右へはみ出し、
     スマホで横にスクロールできてしまうため、横方向を丸ごと切り落とす。
     clip対応ブラウザではclip(スクロール自体が発生しない)、
     非対応では hidden が効く */
  html, body { overflow-x: hidden; overflow-x: clip; }

  /* --- 物語: Beyond outsourcing 見出しが画面からはみ出すのを防ぐ --- */
  #empathy-heading { font-size: clamp(34px, 12vw, 56px) !important; }
  #empathy-content { gap: 26px !important; }
  #empathy-content > p:nth-of-type(1) { letter-spacing: 0.06em !important; gap: 8px !important; }
  #empathy-content > p:nth-of-type(2) { font-size: 15px !important; line-height: 2 !important; }

  /* --- 物語: Achievements 見出し縮小・統計は2列に --- */
  #ach-heading { font-size: clamp(30px, 9.6vw, 44px) !important; }
  #ach-layer > div:first-child { padding: 80px 20px 0 !important; }
  #ach-layer div[style*="auto-fit"] { grid-template-columns: repeat(2, 1fr) !important; gap: 18px 14px !important; }
  #ach-layer div[style*="auto-fit"] span[style*="clamp(36px"] { font-size: 30px !important; }
  #ach-layer div[style*="auto-fit"] span[style*="clamp(20px"] { font-size: 15px !important; }

  /* --- 物語: Value 1画面に収まるよう圧縮(補足文はスマホでは非表示) --- */
  /* 高さ固定をやめたので(縦に伸びてよい)、各項目の余白は広めに取る(2026-07-30) */
  #value-layer { padding: 80px 20px 80px !important; }
  #value-layer > div:first-child { margin-bottom: 36px !important; }
  #value-layer h2 { font-size: 32px !important; }
  #value-layer [data-value-grid] { gap: 52px !important; }
  #value-layer [data-value-grid] > div { gap: 10px !important; }
  #value-layer [data-value-grid] canvas[data-value-orb] { width: 64px !important; height: 64px !important; }
  #value-layer [data-value-grid] [data-orb-fly] { margin-bottom: 12px !important; }
  #value-layer [data-value-grid] h3 { font-size: 19px !important; }
  #value-layer [data-value-grid] > div > p:nth-of-type(1) { font-size: 13px !important; line-height: 1.8 !important; }
  #value-layer [data-value-grid] > div > p:nth-of-type(2) { font-size: 11.5px !important; line-height: 1.7 !important; }
  #value-layer [data-value-grid] > div > p:nth-of-type(3) { display: none !important; }

  /* --- Service: 2列(見出し+説明)を縦積みに --- */
  #services [data-reveal] { padding: 64px 20px !important; }
  #services div[style*="minmax(300px"] { grid-template-columns: 1fr !important; gap: 10px !important; padding: 30px 0 !important; }
  #services p br { display: none; } /* 手動改行はスマホでは解除(変な位置で折れるため) */

  /* --- Process: 4列を1列に --- */
  #process [data-reveal] { padding: 64px 20px !important; }
  #process ol { grid-template-columns: 1fr !important; gap: 28px !important; }
  #process p br { display: none; }

  /* --- News: 日付・種別・タイトルを2行組みに --- */
  #blog [data-reveal] { padding: 64px 20px !important; }
  #blog a > span:first-child { display: flex !important; flex-wrap: wrap !important; align-items: center !important; gap: 8px 12px !important; padding: 20px 36px 20px 0 !important; }
  #blog a > span:first-child > span:nth-child(3) { flex-basis: 100% !important; font-size: 15px !important; line-height: 1.9 !important; }

  /* --- Partners: ロゴを2列に --- */
  #partners [data-reveal] { padding: 64px 16px !important; }
  #partners div[style*="repeat(5"] { grid-template-columns: repeat(2, 1fr) !important; gap: 10px !important; }
  #partners div[style*="repeat(5"] a { height: 84px !important; padding: 14px 18px !important; }

  /* --- 最終CTA: 見出しがはみ出すのを防ぐ --- */
  #final-cta [data-reveal] { padding: 90px 20px !important; }
  #final-cta h2 { font-size: clamp(34px, 10.4vw, 56px) !important; }
  #final-cta p[style*="max-width: 600px"] { font-size: 15px !important; }

  /* --- フッター: 3列を縦積みに --- */
  #footer > div { padding: 56px 20px 32px !important; gap: 40px !important; }
  #footer > div > div:first-child { grid-template-columns: 1fr !important; row-gap: 36px !important; }
  #footer > div > div:last-child { flex-wrap: wrap !important; }

  /* --- 物語パートを「完成形を並べた普通のページ」にする(2026-07-30) ---
     パソコンではスクロール量で演出が進む作りだが、スマホでは重く進みも
     悪いため、各場面の完成形をそのまま縦に並べる。
     main.js側もスマホではスクロール演出を起動しない(この切り替えとセット)。
     並び順は order で ヒーロー→Beyond→Achievements→Value にしている */
  #intro-story { height: auto !important; }
  #intro-sticky { position: static !important; height: auto !important; overflow: visible !important; display: flex; flex-direction: column; }
  /* 高さは「最低1画面・中身が多ければ伸びる」。固定にすると小さい画面で
     Contactボタンが入りきらず、次のセクションに隠れてしまう(2026-07-30修正)。
     svh=ブラウザのバーが出ている状態の高さ。バーの出入りで高さが変わらないので、
     スクロール中に画面がガタつかない */
  #hero-layer { position: relative !important; inset: auto !important; order: -1; height: auto; min-height: 100vh; min-height: 100svh; }
  #empathy, #ach-layer, #value-layer { position: relative !important; inset: auto !important; opacity: 1 !important; pointer-events: auto !important; transform: none !important; }
  /* 中身(Beyondの文字)を画面の上下中央に置く(2026-07-30) */
  #empathy { height: auto; min-height: 100vh; min-height: 100svh; display: flex !important; align-items: center !important; }
  #empathy-content { height: auto !important; width: 100%; }
  /* ギャラリー(実績カードの床)はスマホでは使わないため、高さは中身なりに */
  #ach-layer { padding-bottom: 72px; }
  #value-layer { min-height: 100vh; min-height: 100svh; }
  /* #empathy-content の表示は「ふわっと表示」(main.jsがdata-revealを付与)が担当する(2026-07-30) */
  #empathy-heading [data-anim-line], #ach-heading [data-anim-line] { transform: translateY(0) !important; }
  /* 三原色の光・白転換の覆いは、スマホの静的表示では使わない */
  #rgb-halos, #white-flash { display: none !important; }
  /* Beyondの背景のWebGL(円体)は、画面全体を覆う大きさで表示する。
     130vmax=画面の対角より大きい円になり、四隅まで色が届く。
     はみ出た分は#empathyのoverflow:hiddenが切り落とす */
  #empathy-orb { width: 130vmax !important; height: 130vmax !important; transform: translate(-50%, -50%) !important; }
  /* Valueのオブジェクトの光だまり・影は最初から点けておく */
  #value-layer [data-orb-spot] { opacity: 1 !important; }
  /* Achievementsのギャラリー(実績カードの流れる床)はスマホでは表示しない(2026-07-30 担当者指示)。
     main.js側もスマホではカード自体を作らない(画像23枚の読み込みも発生しない) */
  #ach-layer [data-ach-gallery] { display: none !important; }
  /* ヒーローの「事業の夜明けを〜」と説明文の左の字下げは、スマホでは無し */
  #hero-content p { padding-left: 0 !important; }
}
