@charset "UTF-8";
/* =========================================================================
   TECHNICO 40th Anniversary — 代表挨拶 特設ページ
   白ベース / 原稿主体 / 中央寄せ
   スクロール演出：ロゴが拡大＋ぼかしで背景化、本文は1行ずつ浮かび上がる
   ========================================================================= */

:root {
  --bg:        #ffffff;
  --paper:     #fbfbf9;
  --ink:       #25303f;
  --ink-strong:#141c2b;
  --navy:      #173a7a;
  --blue:      #1f5fc0;
  --red:       #d8132b;
  --muted:     #7c8696;
  --line:      #e6e8ee;

  --maxw: 1140px;
  --gutter: clamp(22px, 5vw, 56px);

  --font-jp: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --font-en: "Cormorant Garamond", "Times New Roman", serif;
  --font-ui: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", sans-serif;

  --ease: cubic-bezier(.22, 1, .36, 1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  font-family: var(--font-ui);
  background: var(--bg);
  color: var(--ink);
  line-height: 1.9;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "palt" 1;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
::selection { background: var(--navy); color: #fff; }

.wrap { width: min(100% - var(--gutter) * 2, var(--maxw)); margin-inline: auto; }

/* ---------- reveal（JS有効時のみ初期非表示） ---------- */
.js .rv { opacity: 0; transform: translateY(18px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.rv.in { opacity: 1; transform: none; }
.rv[data-d="1"] { transition-delay: .1s; }
.rv[data-d="2"] { transition-delay: .2s; }
.rv[data-d="3"] { transition-delay: .3s; }

/* =========================================================================
   HEADER
   ========================================================================= */
.hd {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px;
  padding: 15px var(--gutter);
  background: rgba(255, 255, 255, .82);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid transparent;
  transition: border-color .4s, box-shadow .4s;
}
.hd.is-scrolled { border-bottom-color: var(--line); box-shadow: 0 6px 24px -18px rgba(20, 28, 43, .5); }
.hd__brand { display: inline-flex; align-items: center; }
.hd__logo { width: auto; height: clamp(22px, 2.4vw, 28px); }
.hd__link {
  flex-shrink: 0;
  font-size: 12.5px; letter-spacing: .1em; color: var(--ink-strong);
  display: inline-flex; align-items: center; gap: .5em;
  padding: 9px 16px; border: 1px solid var(--line); border-radius: 999px;
  background: rgba(255,255,255,.6);
  transition: border-color .3s, color .3s;
}
.hd__link:hover { border-color: var(--navy); color: var(--navy); }
.hd__link .a { transition: transform .3s var(--ease); }
.hd__link:hover .a { transform: translate(2px, -2px); }

/* =========================================================================
   背景ロゴ（JSで生成・スクロールで拡大＋ぼかし）
   ========================================================================= */
.bglogo {
  position: fixed; inset: 0; z-index: -1;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.bglogo img {
  width: min(82vw, 460px);
  transform-origin: center center;
  will-change: transform, filter, opacity;
}

/* =========================================================================
   HERO（1画面目：ロゴが主役）
   ========================================================================= */
.hero {
  position: relative;
  min-height: 100svh;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  text-align: center;
  padding: clamp(96px, 14vh, 150px) var(--gutter) clamp(70px, 10vh, 110px);
  border-bottom: 1px solid var(--line);
}
.hero__mark { width: min(82vw, 460px); margin: 0 auto; }
.hero__mark img { width: 100%; }
.fx .hero__mark { visibility: hidden; }            /* 演出時は固定ロゴに置換 */
.hero__jp {
  font-family: var(--font-jp);
  font-weight: 500;
  font-size: clamp(14px, 1.7vw, 19px);
  letter-spacing: .22em;
  color: var(--ink-strong);
  margin-top: clamp(24px, 3.5vw, 40px);
}
.hero__rule {
  width: 56px; height: 2px; margin: clamp(22px, 3vw, 32px) auto 0;
  background: linear-gradient(90deg, var(--navy), var(--red));
}
.hero__cue {
  position: absolute; left: 50%; transform: translateX(-50%);
  bottom: clamp(20px, 4vh, 36px);
  display: flex; flex-direction: column; align-items: center; gap: 9px;
  font-family: var(--font-en); letter-spacing: .3em; font-size: 11px; color: var(--muted);
}
.hero__cue i { width: 1px; height: 46px; background: linear-gradient(var(--muted), transparent); position: relative; overflow: hidden; }
.hero__cue i::after { content: ""; position: absolute; inset: 0 auto auto 0; width: 100%; height: 45%; background: var(--navy); animation: cue 2s ease-in-out infinite; }
@keyframes cue { 0% { transform: translateY(-110%); } 100% { transform: translateY(240%); } }

/* =========================================================================
   GREETING（中央寄せ・1カラム）— 本文はロゴの上を流れる
   ========================================================================= */
.greeting { position: relative; padding: clamp(64px, 11vw, 130px) 0 clamp(70px, 11vw, 140px); }
.gb {
  max-width: 880px;
  margin-inline: auto;
  text-align: center;
}
.gb__title {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: clamp(30px, 5vw, 54px);
  line-height: 1.5;
  letter-spacing: .06em;
  color: var(--ink-strong);
  margin-bottom: clamp(40px, 5.5vw, 72px);
  text-wrap: balance;
}
.gb__title em { font-style: normal; color: var(--navy); }

/* 本文：フォント大きめ */
.gb p {
  font-family: var(--font-jp);
  font-size: clamp(18px, 2.05vw, 27px);
  line-height: 2.5;
  letter-spacing: .04em;
  color: var(--ink);
  margin-bottom: 1.7em;
  /* 改行位置を整える */
  word-break: auto-phrase;
  line-break: strict;
  text-wrap: balance;
}
.gb p:first-of-type { color: var(--ink-strong); }

/* 行ごとの浮かび上がり（JSで .ln に分割） */
.gb p .ln { display: block; }
.fx .gb p .ln__in { opacity: .12; transition: opacity .7s var(--ease); will-change: opacity; }
.fx .gb p .ln.is-on .ln__in { opacity: 1; }

.gb__sign {
  margin-top: clamp(40px, 5vw, 64px);
  padding-top: clamp(26px, 3vw, 36px);
  border-top: 1px solid var(--line);
}
.gb__sign span { display: block; font-size: 13px; letter-spacing: .2em; color: var(--muted); margin-bottom: 10px; }
.gb__sign b {
  font-family: var(--font-jp); font-weight: 600;
  font-size: clamp(20px, 2.6vw, 28px); letter-spacing: .24em; color: var(--ink-strong);
}

/* =========================================================================
   FOOTER
   ========================================================================= */
.ft {
  position: relative;
  border-top: 1px solid var(--line);
  background: var(--paper);
  padding: clamp(44px, 6vw, 68px) 0;
}
.ft__inner {
  display: flex; flex-direction: column; align-items: center;
  gap: clamp(26px, 4vw, 38px); text-align: center;
}
.ft__brand { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ft__logo { height: 26px; width: auto; }
.ft__40 { font-family: var(--font-en); font-size: 12px; letter-spacing: .22em; color: var(--muted); }
.ft__copy { width: 100%; padding-top: clamp(22px, 3vw, 30px); border-top: 1px solid var(--line); }
.ft__copy small { font-size: 12px; letter-spacing: .08em; color: var(--muted); }

/* =========================================================================
   RESPONSIVE
   ========================================================================= */
@media (max-width: 520px) {
  .gb p { line-height: 2.3; }
}

/* 監査用（スクリーンショット時のみヒーロー高さを詰める・本番無影響） */
html.audit .hero { min-height: auto; padding-block: clamp(56px, 8vw, 88px); }

/* =========================================================================
   REDUCED MOTION（演出を無効化し静的表示）
   ========================================================================= */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .rv { opacity: 1; transform: none; transition: none; }
  .fx .hero__mark { visibility: visible; }
  .bglogo { display: none; }
  .fx .gb p .ln__in { opacity: 1 !important; }
  .hero__cue { display: none; }
}
