/* ═══════════════════════════════════════════════════════════════
   GALILEO ── shared shell v2
   gnav (global header + fullscreen menu) / hero2 (unified page hero)
   全ページ共通。site.css / film-top.css の後に読み込む。
   ═══════════════════════════════════════════════════════════════ */

/* ─────────── a11y / SEO: visually-hidden（スクリーンリーダー・クローラー向けのみ） ─────────── */
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ─────────── GNAV ─────────── */
#gnav{ position:fixed; top:0; left:0; right:0; z-index:120;
  display:flex; justify-content:space-between; align-items:center;
  padding:26px clamp(18px,3.4vw,44px);
  transition:padding .45s cubic-bezier(.22,1,.36,1), background .45s ease, backdrop-filter .45s ease; }
#gnav::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:rgba(244,246,255,.08); opacity:0; transition:opacity .45s ease; }
#gnav.scrolled{ padding-top:13px; padding-bottom:13px;
  background:rgba(2,4,12,.62); backdrop-filter:blur(16px) saturate(1.3); -webkit-backdrop-filter:blur(16px) saturate(1.3); }
#gnav.scrolled::after{ opacity:1; }
#gnav .g-logo{ display:flex; align-items:center; position:relative; z-index:2; }
#gnav .g-logo img{ height:16px; transition:transform .4s cubic-bezier(.22,1,.36,1); }
#gnav .g-logo:hover img{ transform:translateY(-2px); }

#gnav .g-links{ display:flex; align-items:center; gap:clamp(18px,2.4vw,34px); }
#gnav .g-links>a:not(.g-cta){ position:relative; display:flex; align-items:baseline; gap:7px;
  text-decoration:none; padding:6px 2px; }
#gnav .g-links a i{ font-style:normal; font-size:8.5px; font-weight:600; letter-spacing:.1em; color:var(--orange, #FFBA42); transform:translateY(-4px); }
#gnav .g-links a .lw{ position:relative; display:block; height:1.4em; overflow:hidden; white-space:nowrap; }
#gnav .g-links a .lw span{ display:block; font-size:11.5px; font-weight:500; letter-spacing:.24em; text-transform:uppercase; line-height:1.4em; color:#F4F6FF; white-space:nowrap; transition:transform .45s cubic-bezier(.65,0,.35,1); }
#gnav .g-links a .lw .en{ position:absolute; inset:0; transform:translateY(110%); color:var(--orange,#FFBA42); font-size:11px; font-weight:400; letter-spacing:.14em; text-transform:none; white-space:nowrap; display:flex; align-items:center; }
#gnav .g-links a:hover .lw .jp{ transform:translateY(-110%); }
#gnav .g-links a:hover .lw .en{ transform:translateY(0); }
#gnav .g-links a::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--orange,#FFBA42); transform:scaleX(0); transform-origin:right; transition:transform .45s cubic-bezier(.65,0,.35,1); }
#gnav .g-links a:hover::after,#gnav .g-links a[aria-current]::after{ transform:scaleX(1); transform-origin:left; }
#gnav .g-links a[aria-current] .lw .jp{ color:var(--orange,#FFBA42); }

#gnav .g-cta{ position:relative; display:inline-flex; align-items:center; gap:10px;
  font-size:11px; font-weight:600; letter-spacing:.26em; text-transform:uppercase; color:#0D1F5C; text-decoration:none;
  background:var(--orange,#FFBA42); padding:12px 24px; border-radius:999px; overflow:hidden;
  transition:transform .35s cubic-bezier(.22,1,.36,1), box-shadow .35s ease; }
#gnav .g-cta em{ font-style:normal; transition:transform .35s cubic-bezier(.22,1,.36,1); }
#gnav .g-cta:hover{ transform:translateY(-2px); box-shadow:0 10px 30px rgba(255,186,66,.25); }
#gnav .g-cta:hover em{ transform:translateX(4px); }

/* burger ── 明るい映像上でも見えるようガラス円背景 */
#gnav .g-burger{ display:none; position:relative; z-index:130; width:44px; height:44px; border:none; cursor:pointer;
  background:rgba(2,4,12,.38); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-radius:50%; box-shadow:inset 0 0 0 1px rgba(244,246,255,.14); }
#gnav .g-burger span{ position:absolute; left:11px; right:11px; height:1.5px; background:#F4F6FF; transition:transform .4s cubic-bezier(.65,0,.35,1), top .4s, opacity .3s; }
#gnav .g-burger span:nth-child(1){ top:18px; }
#gnav .g-burger span:nth-child(2){ top:26px; }
html.menu-open #gnav .g-burger span:nth-child(1){ top:22px; transform:rotate(45deg); }
html.menu-open #gnav .g-burger span:nth-child(2){ top:22px; transform:rotate(-45deg); }

@media (max-width:920px){
  #gnav .g-links{ display:none; }
  #gnav .g-burger{ display:block; }
}

/* fullscreen menu */
#gmenu{ position:fixed; inset:0; z-index:110; background:rgba(3,5,16,.97);
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  display:flex; flex-direction:column; justify-content:center; padding:0 9vw;
  opacity:0; visibility:hidden; transition:opacity .55s cubic-bezier(.22,1,.36,1), visibility 0s linear .55s; }
html.menu-open #gmenu{ opacity:1; visibility:visible; transition:opacity .55s cubic-bezier(.22,1,.36,1); }
html.menu-open{ overflow:hidden; }
#gmenu a{ position:relative; display:flex; align-items:baseline; gap:18px; text-decoration:none;
  padding:clamp(10px,2.2vh,18px) 0; border-bottom:1px solid rgba(244,246,255,.08);
  opacity:0; transform:translateY(26px); transition:opacity .5s ease, transform .6s cubic-bezier(.22,1,.36,1); }
html.menu-open #gmenu a{ opacity:1; transform:none; transition-delay:calc(var(--i,0)*60ms + 120ms); }
#gmenu a i{ font-style:normal; font-size:10px; font-weight:600; letter-spacing:.14em; color:var(--orange,#FFBA42); min-width:22px; }
#gmenu a .jp{ font-size:clamp(24px,3.6vh,32px); font-weight:200; letter-spacing:.16em; text-transform:uppercase; color:#F4F6FF; }
#gmenu a .en{ font-size:11px; font-weight:300; letter-spacing:.2em; color:rgba(244,246,255,.45); }
#gmenu a:active .jp{ color:var(--orange,#FFBA42); }
#gmenu .gm-cta{ border:none; margin-top:26px; }
#gmenu .gm-cta .jp{ display:inline-flex; align-items:center; justify-content:center; width:100%;
  background:var(--orange,#FFBA42); color:#0D1F5C; font-size:15px; font-weight:600; letter-spacing:.2em;
  padding:17px 0; border-radius:999px; }
#gmenu .gm-foot{ margin-top:36px; font-size:9px; letter-spacing:.3em; color:rgba(244,246,255,.35); text-transform:uppercase; }

/* ─────────── HERO2 ─────────── */
.hero2{ position:relative; overflow:hidden; background:#04060f;
  min-height:66vh; display:flex; align-items:flex-end;
  padding:150px clamp(18px,8vw,120px) 78px; }
.hero2.compact{ min-height:52vh; padding-bottom:60px; }
.h2-bg{ position:absolute; inset:0; }
.h2-bg img{ width:100%; height:100%; object-fit:cover; transform-origin:50% 40%; }
@media (prefers-reduced-motion:no-preference){
  .h2-bg img{ animation:h2kb 9s cubic-bezier(.16,1,.3,1) forwards; }
  @keyframes h2kb{ from{ transform:scale(1.16); } to{ transform:scale(1.03); } }
}
.h2-scrim{ position:absolute; inset:0;
  background:linear-gradient(to top, rgba(3,5,15,.92) 0%, rgba(3,5,15,.46) 42%, rgba(3,5,15,.30) 100%); }
/* contact: code-generated dawn (no photo) */
.hero2.dawn .h2-bg{ background:
  radial-gradient(120% 90% at 50% 118%, rgba(255,186,66,.55) 0%, rgba(200,110,30,.35) 26%, rgba(13,31,92,.28) 55%, transparent 75%),
  linear-gradient(180deg, #04060f 0%, #071030 58%, #1a2a66 100%); }
.hero2.dawn .h2-scrim{ background:linear-gradient(to top, rgba(3,5,15,.55) 0%, transparent 55%); }

.h2-outline{ position:absolute; right:-.5vw; top:clamp(70px,13vh,120px); z-index:1;
  font-weight:900; font-size:clamp(64px,14vw,200px); line-height:1; letter-spacing:.01em;
  color:transparent; -webkit-text-stroke:1px rgba(244,246,255,.14); user-select:none; pointer-events:none; white-space:nowrap; }
@media (prefers-reduced-motion:no-preference){
  .h2-outline{ animation:h2ol 1.6s cubic-bezier(.22,1,.36,1) both .15s; }
  @keyframes h2ol{ from{ opacity:0; transform:translateX(60px); } to{ opacity:1; transform:none; } }
}

.hero2 .ph-inner{ position:relative; z-index:2; max-width:1180px; margin:0 auto; width:100%; }
.hero2 .ph-breadcrumb{ position:static; font-size:10px; letter-spacing:.22em; color:rgba(244,246,255,.5); margin-bottom:clamp(26px,4vh,44px); }
.hero2 .ph-breadcrumb a{ color:rgba(244,246,255,.5); text-decoration:none; transition:color .3s; }
.hero2 .ph-breadcrumb a:hover{ color:var(--orange,#FFBA42); }
.hero2 .ph-en{ font-size:10px; font-weight:700; letter-spacing:.42em; color:var(--orange,#FFBA42); text-transform:uppercase; margin-bottom:16px; }
.hero2 .ph-title{ font-size:clamp(32px,5vw,58px); font-weight:200; letter-spacing:.14em; color:#F4F6FF; line-height:1.3; }
.hero2 .ph-lead{ max-width:620px; margin-top:20px; font-size:14px; font-weight:300; line-height:2.3; letter-spacing:.05em; color:rgba(244,246,255,.76); }
@media (prefers-reduced-motion:no-preference){
  .hero2 .ph-breadcrumb,.hero2 .ph-en,.hero2 .ph-title,.hero2 .ph-lead{ animation:h2up .9s cubic-bezier(.22,1,.36,1) both; }
  .hero2 .ph-en{ animation-delay:.25s; } .hero2 .ph-title{ animation-delay:.35s; } .hero2 .ph-lead{ animation-delay:.5s; }
  @keyframes h2up{ from{ opacity:0; transform:translateY(30px); } to{ opacity:1; transform:none; } }
}
.h2-line{ position:absolute; left:0; bottom:0; z-index:3; height:2px; width:100%;
  background:linear-gradient(90deg, var(--orange,#FFBA42) 0%, rgba(255,186,66,.25) 45%, transparent 80%); }

@media (max-width:760px){
  .hero2{ min-height:58vh; padding:120px 6vw 52px; }
  .hero2.compact{ min-height:46vh; }
  .h2-outline{ top:90px; font-size:clamp(52px,17vw,90px); -webkit-text-stroke-color:rgba(244,246,255,.1); }
  .hero2 .ph-lead{ font-size:13px; line-height:2.15; }
  /* 横スクロールテーブルにスワイプの手がかりを表示 */
  .svc-wrap{ position:relative; }
  .svc-wrap::after{ content:'← 横にスワイプできます →'; display:block; padding:8px 0 0;
    font-size:10px; letter-spacing:.14em; color:var(--gray-400,#A0A09A); text-align:center; }
}

/* ─────────── typography guard ───────────
   1文字だけの改行（orphan）を防ぎ、行を均等に折り返す */
h1,h2,h3,.pj-title,.wk-title,.fx-row .rt,.mvv-text,.arch-jp{ text-wrap:balance; }

