/* ==========================================================================
 * HUNDRED Theme — motion.css
 * v1.3.0 — Voyeur Vérité流スクロールモーション＋背景メディアレイヤ
 * ========================================================================== */


/* --------------------------------------------------------------------------
 * 共通：セクションが背景メディアを持つ場合の下地
 *   overflowは各セクションで個別指定（.pillarsはsticky運用のためoverflow:hidden不可）
 * -------------------------------------------------------------------------- */
.has-media-bg {
    position: relative;
    isolation: isolate;
}
.manifesto.has-media-bg,
.news-teaser.has-media-bg {
    overflow: hidden;
}
/* .pillars.has-media-bg には overflow:hidden をかけない：sticky動作を壊すため */


/* --------------------------------------------------------------------------
 * reveal-slide-x：Voyeur Vérité流「右→左フレームイン」
 *   マスク：overflow:hidden で切り取り
 *   内側：初期位置 translateX(110%) → in で translateX(0)
 * -------------------------------------------------------------------------- */
.reveal-slide-x {
    display: block;
}
.reveal-slide-x__mask {
    display: block;
    overflow: hidden;
    padding-bottom: 0.05em; /* descender clipping対策 */
}
.reveal-slide-x__inner {
    display: inline-block;
    transform: translateX(110%);
    opacity: 0;
    will-change: transform;
    transition:
        transform 1.35s cubic-bezier(0.16, 1, 0.3, 1),
        opacity 0.75s ease-out;
}
.reveal-slide-x.in .reveal-slide-x__mask:nth-child(1) .reveal-slide-x__inner { transition-delay: 0.00s; }
.reveal-slide-x.in .reveal-slide-x__mask:nth-child(2) .reveal-slide-x__inner { transition-delay: 0.14s; }
.reveal-slide-x.in .reveal-slide-x__mask:nth-child(3) .reveal-slide-x__inner { transition-delay: 0.28s; }
.reveal-slide-x.in .reveal-slide-x__mask:nth-child(4) .reveal-slide-x__inner { transition-delay: 0.42s; }

.reveal-slide-x.in .reveal-slide-x__inner {
    transform: translateX(0);
    opacity: 1;
}

/* JS未実行時（no-js）は即表示 */
html.no-js .reveal-slide-x__inner {
    transform: none;
    opacity: 1;
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    .reveal-slide-x__inner {
        transform: none !important;
        opacity: 1 !important;
        transition: none !important;
    }
}


/* --------------------------------------------------------------------------
 * MANIFESTO（002）背景画像＋パララックス＋スクリム
 * -------------------------------------------------------------------------- */
.manifesto.has-media-bg {
    background: var(--hundred-bg); /* フォールバック */
}
.manifesto__bg {
    position: absolute;
    inset: -12%;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.manifesto__bg-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.34;
    filter: saturate(0.6) contrast(1.08) brightness(0.72);
    will-change: transform;
    transform: translate3d(0, 0, 0) scale(1.06);
    transition: transform 0.2s linear;
}
.manifesto__scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        radial-gradient(ellipse at 30% 20%, rgba(110, 231, 255, 0.06), transparent 55%),
        linear-gradient(180deg,
            rgba(5, 5, 5, 0.72) 0%,
            rgba(5, 5, 5, 0.55) 40%,
            rgba(5, 5, 5, 0.85) 100%);
}
.manifesto__inner {
    position: relative;
    z-index: 2;
}


/* --------------------------------------------------------------------------
 * SERVICES（003）— 行ホバー時の Ice Cyan グロウ強化
 * -------------------------------------------------------------------------- */
.services__item.glow-row {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.glow-row__glow {
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0;
    background:
        radial-gradient(ellipse at var(--gx, 50%) 50%,
            rgba(110, 231, 255, 0.22) 0%,
            rgba(110, 231, 255, 0.08) 30%,
            transparent 70%),
        linear-gradient(90deg,
            rgba(110, 231, 255, 0.0) 0%,
            rgba(110, 231, 255, 0.05) 50%,
            rgba(110, 231, 255, 0.0) 100%);
    transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.services__item.glow-row::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 3px;
    height: 100%;
    background: var(--hundred-accent);
    transform: scaleY(0);
    transform-origin: top;
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
    z-index: 3;
}
.services__item.glow-row:hover {
    padding-left: 32px;
    background: rgba(110, 231, 255, 0.03);
    box-shadow: inset 0 0 60px rgba(110, 231, 255, 0.06);
}
.services__item.glow-row:hover .glow-row__glow {
    opacity: 1;
}
.services__item.glow-row:hover::before {
    transform: scaleY(1);
}
.services__item.glow-row:hover .services__name {
    text-shadow: 0 0 24px rgba(110, 231, 255, 0.4);
}
.services__item.glow-row:hover .services__arrow {
    transform: translateX(14px);
    text-shadow: 0 0 12px rgba(110, 231, 255, 0.6);
}


/* --------------------------------------------------------------------------
 * PILLARS（004）— 4枚背景クロスフェード
 * -------------------------------------------------------------------------- */
.pillars__bg-stack {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.pillars__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-color: #050505;
    opacity: 0;
    filter: saturate(0.55) contrast(1.1) brightness(0.6);
    transform: scale(1.08);
    transition:
        opacity 1.4s cubic-bezier(0.4, 0, 0.2, 1),
        transform 3.5s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}
.pillars__bg.active {
    opacity: 0.55;
    transform: scale(1);
}
/* Pillarごとに微妙にトーンを変える（画像差替時も色差を保つ） */
.pillars__bg[data-i="0"] { background-color: #1a0f1e; }
.pillars__bg[data-i="1"] { background-color: #0e1420; }
.pillars__bg[data-i="2"] { background-color: #1f0d0d; }
.pillars__bg[data-i="3"] { background-color: #0d1a18; }

.pillars__scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        radial-gradient(ellipse at 50% 20%, rgba(110, 231, 255, 0.04), transparent 60%),
        linear-gradient(180deg,
            rgba(5, 5, 5, 0.72) 0%,
            rgba(5, 5, 5, 0.5) 40%,
            rgba(5, 5, 5, 0.8) 100%);
}
.pillars__meta,
.pillars__stage,
.pillars__progress {
    position: relative;
    z-index: 2;
}


/* --------------------------------------------------------------------------
 * NEWS TEASER（006）— 縦長動画背景ループ＋シネマフォールバック
 * -------------------------------------------------------------------------- */
.news-teaser.has-media-bg {
    background: var(--hundred-bg-soft);
}
.news-teaser__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.news-teaser__bg-video {
    position: absolute;
    top: 50%; left: 50%;
    min-width: 100%;
    min-height: 100%;
    width: auto; height: auto;
    transform: translate(-50%, -50%);
    object-fit: cover;
    opacity: 0.28;
    filter: saturate(0.7) contrast(1.05) brightness(0.75);
}
/* 動画未設定時のシネマティックCSSフォールバック */
.news-teaser__bg-fallback {
    position: absolute;
    inset: 0;
    overflow: hidden;
}
.news-teaser__bg-poster {
    position: absolute;
    top: 50%; left: 50%;
    width: 100%;
    height: 100%;
    transform: translate(-50%, -50%) scale(1.08);
    object-fit: cover;
    opacity: 0.28;
    filter: saturate(0.55) contrast(1.1) brightness(0.65);
    animation: hundred-news-drift 22s ease-in-out infinite alternate;
}
@keyframes hundred-news-drift {
    0%   { transform: translate(-50%, -50%) scale(1.08) translateY(0); }
    100% { transform: translate(-50%, -50%) scale(1.14) translateY(-3%); }
}
/* VHSっぽい微振動フリッカー */
.news-teaser__bg-vhs {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 50% 50%, transparent 0%, rgba(0, 0, 0, 0.4) 100%),
        linear-gradient(180deg, rgba(110, 231, 255, 0.03) 0%, transparent 8%, transparent 92%, rgba(255, 100, 100, 0.04) 100%);
    animation: hundred-news-flicker 4s steps(24) infinite;
    mix-blend-mode: screen;
}
@keyframes hundred-news-flicker {
    0%, 100% { opacity: 0.85; }
    50%      { opacity: 1;    }
}
/* スキャンライン */
.news-teaser__bg-scanlines {
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(
        180deg,
        rgba(0, 0, 0, 0) 0px,
        rgba(0, 0, 0, 0) 2px,
        rgba(0, 0, 0, 0.06) 3px,
        rgba(0, 0, 0, 0) 4px
    );
    pointer-events: none;
    opacity: 0.6;
    mix-blend-mode: multiply;
}

.news-teaser__scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        radial-gradient(ellipse at 30% 30%, rgba(110, 231, 255, 0.05), transparent 55%),
        linear-gradient(180deg,
            rgba(5, 5, 5, 0.78) 0%,
            rgba(5, 5, 5, 0.6) 40%,
            rgba(5, 5, 5, 0.85) 100%);
}
.news-teaser__inner {
    position: relative;
    z-index: 2;
}

/* NEWS行のグロウ強化（services__itemと同ロジック） */
.news-teaser__item.glow-row {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition: padding 0.5s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.5s ease;
}
.news-teaser__item.glow-row::before {
    content: '';
    position: absolute;
    left: 0; top: 0;
    width: 3px;
    height: 100%;
    background: var(--hundred-accent);
    transform: scaleY(0);
    transform-origin: top;
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
    z-index: 3;
}
.news-teaser__item.glow-row:hover {
    padding-left: 24px;
    background: rgba(110, 231, 255, 0.04);
    box-shadow: inset 0 0 40px rgba(110, 231, 255, 0.05);
}
.news-teaser__item.glow-row:hover::before {
    transform: scaleY(1);
}
.news-teaser__item.glow-row:hover .news-teaser__ttl {
    text-shadow: 0 0 18px rgba(110, 231, 255, 0.35);
}
.news-teaser__item.glow-row:hover .news-teaser__arrow {
    text-shadow: 0 0 10px rgba(110, 231, 255, 0.5);
}


/* --------------------------------------------------------------------------
 * モバイル調整
 * -------------------------------------------------------------------------- */
@media (max-width: 900px) {
    .pillars__bg.active { opacity: 0.4; }
    .manifesto__bg-img  { opacity: 0.25; }
    .news-teaser__bg-video, .news-teaser__bg-poster { opacity: 0.22; }
    .services__item.glow-row:hover { padding-left: 20px; }
    .news-teaser__item.glow-row:hover { padding-left: 16px; }
}


/* ==========================================================================
 * v1.5.0 追加：TALENT詳細ページ グラフィック背景＋顔クロップ改善＋SNSアイコン
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * SVGシェーダー系背景：ノイズ×Ice Cyanライトレイ
 * -------------------------------------------------------------------------- */
.single-member__hero { position: relative; overflow: hidden; isolation: isolate; }

.single-member__bg-graphic {
    position: absolute;
    inset: 0;
    z-index: -2;
    pointer-events: none;
    background: radial-gradient(ellipse at 25% 15%, #10222A 0%, #050506 65%);
}
.single-member__bg-graphic::before,
.single-member__bg-graphic::after {
    content: '';
    position: absolute;
    inset: 0;
}
.single-member__bg-graphic::before {
    background:
        linear-gradient(115deg, transparent 40%, rgba(110, 231, 255, 0.10) 50%, transparent 60%),
        linear-gradient(120deg, transparent 65%, rgba(110, 231, 255, 0.06) 72%, transparent 80%);
    mix-blend-mode: screen;
    opacity: 0.9;
    animation: hundred-rays 22s ease-in-out infinite alternate;
}
.single-member__bg-graphic::after {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.4 0'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.55'/></svg>");
    opacity: 0.08;
    mix-blend-mode: overlay;
}
.single-member__bg-noise {
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n2'><feTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n2)' opacity='0.5'/></svg>");
    mix-blend-mode: overlay;
    opacity: 0.14;
    pointer-events: none;
}
.single-member__bg-rays {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 78% 30%, rgba(110, 231, 255, 0.16) 0%, transparent 40%),
        radial-gradient(circle at 15% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%);
    mix-blend-mode: screen;
    pointer-events: none;
}
@keyframes hundred-rays {
    0%   { transform: translateX(-2%) translateY(-1%); opacity: 0.85; }
    100% { transform: translateX( 2%) translateY( 1%); opacity: 1;   }
}

/* --------------------------------------------------------------------------
 * ポートレート画像の顔クロップ改善（上寄せ）
 * -------------------------------------------------------------------------- */
/* v1.5.17：黒い下地ボックス問題の根治。幅を 50% に絞り、下地は透過（銀河背景に溶け込ませる） */
.single-member__portrait { position: absolute; top: 0; right: 0; width: 50%; height: 100%; z-index: -1; overflow: hidden; }
.single-member__portrait::after { content: none; }
.single-member__img {
    width: 100%; height: 100%;
    /* v1.5.17：contain の左右デッドスペース（黒帯）を根絶するため cover に戻す。
     *          頭見切れは object-position: center 20% で回避。 */
    object-fit: cover;
    object-position: center 20%;
    filter: brightness(1.08) contrast(1.05) saturate(1.05);
}

/* --------------------------------------------------------------------------
 * SNSアイコン（SVGインライン）
 * -------------------------------------------------------------------------- */
.single-member__sns {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}
.single-member__sns-item {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 14px 22px;
    border: 1px solid var(--hundred-line);
    color: var(--hundred-text);
    background: rgba(255,255,255,0.02);
    text-decoration: none;
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.single-member__sns-item:hover {
    color: var(--hundred-accent);
    border-color: var(--hundred-accent);
    background: rgba(110, 231, 255, 0.06);
    box-shadow: 0 0 24px rgba(110, 231, 255, 0.25);
    transform: translateY(-2px);
}
.single-member__sns-icon {
    display: inline-flex;
    width: 22px;
    height: 22px;
    align-items: center;
    justify-content: center;
}
.single-member__sns-icon svg {
    width: 100%;
    height: 100%;
    display: block;
}
.single-member__sns-label { line-height: 1; }

/* サービスごとのブランドカラーホバー（オプション） */
.single-member__sns-item--instagram:hover  { border-color: #E4405F; color: #E4405F; box-shadow: 0 0 24px rgba(228, 64, 95, 0.35); }
.single-member__sns-item--twitter:hover    { border-color: #FFFFFF; color: #FFFFFF; }
.single-member__sns-item--youtube:hover    { border-color: #FF0000; color: #FF3333; box-shadow: 0 0 24px rgba(255, 0, 0, 0.35); }
.single-member__sns-item--soundcloud:hover { border-color: #FF5500; color: #FF7733; box-shadow: 0 0 24px rgba(255, 85, 0, 0.35); }
.single-member__sns-item--mixcloud:hover   { border-color: #5000FF; color: #7733FF; }
.single-member__sns-item--tiktok:hover     { border-color: #25F4EE; color: #25F4EE; box-shadow: 0 0 24px rgba(37, 244, 238, 0.35); }

/* フッターロゴ */
.site-footer__logo-link { display: inline-block; }
.site-footer__logo-img {
    /* v1.5.12: SVGにwidth/height属性が無いため width: auto では 0x0 になる。
     *          明示的な幅指定で表示を確保。aspect-ratio で高さ自動。 */
    width: 220px;
    max-width: 220px;
    height: auto;
    aspect-ratio: 389.84 / 68.81;
    filter: brightness(0) invert(1);
    opacity: 0.95;
    transition: opacity 0.3s ease, filter 0.3s ease;
}
.site-footer__logo-link:hover .site-footer__logo-img {
    opacity: 1;
    filter: brightness(0) invert(1) drop-shadow(0 0 10px rgba(110, 231, 255, 0.5));
}

/* モバイル */
@media (max-width: 700px) {
    /* v1.5.15：モバイルでも減光せずくっきり表示 */
    .single-member__portrait { width: 100%; opacity: 1; }
    .single-member__sns-item { padding: 12px 16px; font-size: 11px; }
    .site-footer__logo-img { width: 180px; max-width: 180px; }
}


/* ==========================================================================
 * v1.5.1 追加：/talents/ カード顔クロップ調整＋詳細ページ斜線削除＋3D旋回ロゴ枠
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * カード（archive-member）内画像の顔クロップ改善
 * すべての画像を上寄せ表示、スラッグ別に微調整
 * -------------------------------------------------------------------------- */
.card__img {
    object-position: center 15%;
    transform: scale(1.06);
    transform-origin: center 20%;
    transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
}
.card:hover .card__img { transform: scale(1.1); }

/* 個別チューニング：顔が小さく写ってしまうメンバーはより強いズーム */
.card[data-slug="nanami"]  .card__img { object-position: center 8%;  transform: scale(1.6); }
.card:hover[data-slug="nanami"]  .card__img { transform: scale(1.66); }

.card[data-slug="trid3nt"] .card__img { object-position: center 10%; transform: scale(1.35); }
.card:hover[data-slug="trid3nt"] .card__img { transform: scale(1.4); }

.card[data-slug="taisei"]  .card__img,
.card[data-slug="philly"]  .card__img,
.card[data-slug="ryo2"]    .card__img { object-position: center 12%; transform: scale(1.22); }
.card:hover[data-slug="taisei"]  .card__img,
.card:hover[data-slug="philly"]  .card__img,
.card:hover[data-slug="ryo2"]    .card__img { transform: scale(1.28); }

.card[data-slug="tomo"]    .card__img,
.card[data-slug="soju"]    .card__img,
.card[data-slug="lann"]    .card__img,
.card[data-slug="tsumi"]   .card__img,
.card[data-slug="teto"]    .card__img,
.card[data-slug="doremi"]  .card__img { object-position: center 14%; transform: scale(1.15); }
.card:hover[data-slug="tomo"]    .card__img,
.card:hover[data-slug="soju"]    .card__img,
.card:hover[data-slug="lann"]    .card__img,
.card:hover[data-slug="tsumi"]   .card__img,
.card:hover[data-slug="teto"]    .card__img,
.card:hover[data-slug="doremi"]  .card__img { transform: scale(1.2); }


/* --------------------------------------------------------------------------
 * 詳細ページ：斜線グラフィック削除＋クリーンなラジアル背景
 * -------------------------------------------------------------------------- */
.single-member__bg-graphic::before {
    /* 斜線のlinear-gradientを廃止し、微かなラジアルグラデのみに */
    background:
        radial-gradient(circle at 30% 30%, rgba(110, 231, 255, 0.10), transparent 55%),
        radial-gradient(circle at 80% 80%, rgba(110, 231, 255, 0.06), transparent 60%);
    mix-blend-mode: screen;
    opacity: 1;
    animation: none;
}
.single-member__bg-graphic::after {
    /* ノイズテクスチャのみ残す */
    opacity: 0.06;
}


/* --------------------------------------------------------------------------
 * 3D旋回ロゴキャンバス（人物詳細ページ内）
 * -------------------------------------------------------------------------- */
.talent-logo-3d {
    position: absolute;
    top: 40%;
    left: 22%;
    transform: translate(-50%, -50%);
    width: min(40vw, 520px);
    height: min(40vw, 520px);
    z-index: 1;
    pointer-events: none;
    filter: drop-shadow(0 8px 40px rgba(110, 231, 255, 0.35));
}
.talent-logo-3d canvas { width: 100% !important; height: 100% !important; display: block; }

@media (max-width: 900px) {
    .talent-logo-3d { top: 25%; left: 50%; width: 60vw; height: 60vw; }
}


/* --------------------------------------------------------------------------
 * v1.5.1：カードSNSアイコンをSVGバッジ化
 * -------------------------------------------------------------------------- */
.card__sns {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 1px solid var(--hundred-line);
    border-radius: 50%;
    color: var(--hundred-text);
    background: rgba(255,255,255,0.03);
    transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease, transform 0.3s ease;
}
.card__sns svg { width: 14px; height: 14px; display: block; }
.card__sns:hover {
    color: var(--hundred-accent);
    border-color: var(--hundred-accent);
    background: rgba(110, 231, 255, 0.10);
    transform: translateY(-2px);
}
.card__sns--instagram:hover  { color: #E4405F; border-color: #E4405F; }
.card__sns--youtube:hover    { color: #FF3333; border-color: #FF0000; }
.card__sns--soundcloud:hover { color: #FF7733; border-color: #FF5500; }
.card__sns--mixcloud:hover   { color: #7733FF; border-color: #5000FF; }
.card__sns--tiktok:hover     { color: #25F4EE; border-color: #25F4EE; }
.card__portrait { cursor: pointer; }
.card__portrait::before {
    content: 'DBL·CLICK TO ENTER';
    position: absolute;
    right: 12px;
    bottom: 46px;
    z-index: 4;
    font-family: 'Inter', sans-serif;
    font-size: 9px;
    letter-spacing: 0.2em;
    color: rgba(255,255,255,0.5);
    opacity: 0;
    transition: opacity 0.4s ease;
    pointer-events: none;
}
.card:hover .card__portrait::before { opacity: 1; }


/* --------------------------------------------------------------------------
 * v1.5.1：/talents/ カード背景をグラフィック化
 * .card__portrait の単色bgを、ノイズ×Ice Cyanグラデ×斜光の多層シェーダーに置換
 * -------------------------------------------------------------------------- */
.card__portrait {
    background:
        radial-gradient(circle at 30% 25%, rgba(110, 231, 255, 0.14) 0%, transparent 40%),
        radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%),
        linear-gradient(180deg, #101820 0%, #060810 100%);
}
/* ノイズ層（ss疑似要素の代わりに .card__noise を強化） */
.card__noise {
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='n3'><feTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n3)' opacity='0.6'/></svg>");
    mix-blend-mode: overlay;
    opacity: 0.14;
    pointer-events: none;
    z-index: 0;
}
/* スラッグごとに背景トーンをずらして個別色差を出す */
.card[data-slug="doremi"]  .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(255, 100, 200, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #1a0f18 0%, #06060a 100%); }
.card[data-slug="ryo2"]    .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(120, 200, 255, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #0e1420 0%, #060810 100%); }
.card[data-slug="philly"]  .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(255, 200, 100, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #1a1210 0%, #060506 100%); }
.card[data-slug="taisei"]  .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(150, 255, 180, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #0f1a13 0%, #050805 100%); }
.card[data-slug="trid3nt"] .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(200, 150, 255, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #14101a 0%, #060608 100%); }
.card[data-slug="nanami"]  .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(255, 150, 200, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #18101a 0%, #060608 100%); }
.card[data-slug="soju"]    .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(200, 255, 220, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #101a16 0%, #060808 100%); }
.card[data-slug="tomo"]    .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(180, 220, 255, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #101418 0%, #060608 100%); }
.card[data-slug="lann"]    .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(255, 180, 150, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #1a1310 0%, #060506 100%); }
.card[data-slug="teto"]    .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(180, 255, 240, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #101a19 0%, #060808 100%); }
.card[data-slug="tsumi"]   .card__portrait { background: radial-gradient(circle at 30% 25%, rgba(255, 220, 150, 0.14) 0%, transparent 40%), radial-gradient(circle at 75% 80%, rgba(110, 231, 255, 0.08) 0%, transparent 45%), linear-gradient(180deg, #191510 0%, #060606 100%); }


/* ==========================================================================
 * v1.5.2 追加：粒子背景統一・PILLARS強化・斜線削除・日本語文字サイズ・DOREMI3D
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * PC日本語文字を微増（+1〜2px）— PC(>=900px)のみ、モバイル維持
 * -------------------------------------------------------------------------- */
@media (min-width: 900px) {
    body {
        font-size: 16px; /* base 14→16px */
        line-height: 1.85;
    }
    .manifesto__hint,
    .manifesto__def-body,
    .pillar-slide__body,
    .lineage__sub,
    .lineage__desc,
    .lineage__closing-body,
    .members-teaser__hint {
        font-size: 15px;
    }
    .services__desc { font-size: 14px; }
    .single-member__prose,
    .single-member__prose p { font-size: 15px; line-height: 1.95; }
    .single-member__info-value { font-size: 14px; }
    .card__name  { font-size: 20px; }
    .card__role  { font-size: 11px; }
    .card__bio-catch { font-size: 14px; line-height: 1.75; }
    .card__bio-body,
    .card__bio-body p { font-size: 13px; line-height: 1.85; }
}


/* --------------------------------------------------------------------------
 * PILLARS背景をもう少し見せる（0.55 → 0.72）＆スクリムを薄く
 * -------------------------------------------------------------------------- */
.pillars__bg.active { opacity: 0.72; }
.pillars__scrim {
    background:
        radial-gradient(ellipse at 50% 20%, rgba(110, 231, 255, 0.03), transparent 60%),
        linear-gradient(180deg,
            rgba(5, 5, 5, 0.58) 0%,
            rgba(5, 5, 5, 0.32) 40%,
            rgba(5, 5, 5, 0.7)  100%);
}


/* --------------------------------------------------------------------------
 * 詳細ページ：斜線残骸削除
 * -------------------------------------------------------------------------- */
.single-member__portrait::after {
    /* v1.5.2：linear-gradientの直線が中央左に線として見えるので撤廃。
     *          代わりに右へ暗くフェードする放射状スクリムで自然につなぐ。
     */
    background:
        radial-gradient(ellipse 90% 100% at 85% 50%, transparent 30%, rgba(5,5,5,0.55) 78%, rgba(5,5,5,0.95) 100%),
        linear-gradient(180deg, rgba(5,5,5,0.4) 0%, transparent 20%, transparent 80%, rgba(5,5,5,0.6) 100%);
}


/* --------------------------------------------------------------------------
 * v1.5.2：全アー写背景を白+Ice Cyan粒子の統一グラフィックへ
 *   カラフルなスラッグ別グラデをオフにし、共通の粒子SVGパターンに置換
 * -------------------------------------------------------------------------- */
/* 高精細な粒子パターン（白＋Ice Cyan、複数密度） */
:root {
    --hundred-particles-pattern:
        radial-gradient(1.4px 1.4px at 20% 30%, rgba(255,255,255,0.6) 100%, transparent),
        radial-gradient(1.2px 1.2px at 40% 70%, rgba(110,231,255,0.55) 100%, transparent),
        radial-gradient(0.9px 0.9px at 60% 20%, rgba(255,255,255,0.5) 100%, transparent),
        radial-gradient(1.6px 1.6px at 80% 60%, rgba(110,231,255,0.4) 100%, transparent),
        radial-gradient(0.8px 0.8px at 15% 85%, rgba(255,255,255,0.5) 100%, transparent),
        radial-gradient(1.2px 1.2px at 90% 15%, rgba(110,231,255,0.5) 100%, transparent),
        radial-gradient(0.7px 0.7px at 35% 45%, rgba(255,255,255,0.4) 100%, transparent),
        radial-gradient(1.0px 1.0px at 70% 90%, rgba(110,231,255,0.4) 100%, transparent),
        radial-gradient(1.1px 1.1px at 50% 10%, rgba(255,255,255,0.5) 100%, transparent),
        radial-gradient(0.9px 0.9px at 5% 55%, rgba(110,231,255,0.5) 100%, transparent);
    --hundred-particles-tile-w: 200px;
    --hundred-particles-tile-h: 200px;
}

/* カード：スラッグ別のカラフルグラデを撤廃し、共通の粒子背景で統一 */
.card[data-slug] .card__portrait,
.card__portrait {
    background:
        var(--hundred-particles-pattern),
        radial-gradient(ellipse at 50% 30%, rgba(20,28,40,0.85) 0%, #050810 100%);
    background-size:
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        100% 100%;
    background-repeat: repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, no-repeat;
}
/* カードノイズは薄めに残して質感を維持 */
.card__noise { opacity: 0.08; }

/* 詳細ページ：グラフィック層に粒子パターン重ね */
.single-member__bg-graphic {
    background:
        var(--hundred-particles-pattern),
        radial-gradient(ellipse at 25% 15%, #0e1a24 0%, #050506 65%);
    background-size:
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        var(--hundred-particles-tile-w) var(--hundred-particles-tile-h),
        100% 100%;
    background-repeat: repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, repeat, no-repeat;
    animation: hundred-particles-drift 40s linear infinite;
}
@keyframes hundred-particles-drift {
    0%   { background-position: 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0; }
    100% { background-position:
        -200px 200px, 200px -200px, -200px -200px, 200px 200px,
        -200px 200px, 200px -200px, -200px -200px, 200px 200px,
        -200px 200px, 200px -200px, 0 0; }
}


/* ==========================================================================
 * v1.5.3 追加
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * アー写のフェードグラデーション撤廃＋z-index整理
 * -------------------------------------------------------------------------- */
.single-member__hero { position: relative; overflow: hidden; isolation: isolate; }

/* 背景グラフィックは最背面 */
.single-member__bg-graphic { z-index: 0; }
.single-member__bg-noise,
.single-member__bg-rays { z-index: 0; }

/* ポートレートはグラフィックより前（v1.5.17：幅 50%） */
.single-member__portrait {
    position: absolute;
    top: 0; right: 0;
    width: 50%;
    height: 100%;
    z-index: 2;
    overflow: hidden;
}
/* v1.5.3：フェードグラデーション撤廃。アー写は前面にクリーンに置く */
.single-member__portrait::after { content: none; }

.single-member__img {
    position: relative;
    z-index: 3;
}

/* 3D旋回ロゴはポートレートより後ろ、bg-graphicより前 */
.talent-logo-3d { z-index: 1; }


/* --------------------------------------------------------------------------
 * タイトルwrap：hero直下、独立ブロックに（アー写にかぶらない）
 * -------------------------------------------------------------------------- */
.single-member__title-wrap {
    padding: 60px clamp(24px, 5vw, 80px) 40px;
    max-width: 100%;
    position: relative;
    z-index: 3;
    background: linear-gradient(180deg, transparent 0%, rgba(5, 5, 5, 0.6) 40%, var(--hundred-bg) 100%);
    margin-top: -80px; /* heroの下端に少し食い込ませる */
}
.single-member__reading {
    font-family: 'Inter', sans-serif;
    font-size: 11px;
    letter-spacing: 0.5em;
    color: var(--hundred-accent);
    text-transform: none;
    margin-bottom: 12px;
}
.single-member__title {
    font-family: 'Inter', sans-serif;
    font-size: clamp(56px, 10vw, 148px);
    font-weight: 900;
    letter-spacing: -0.02em;
    line-height: 0.92;
    color: var(--hundred-text);
    margin-bottom: 20px;
}
.single-member__catch {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: clamp(14px, 1.4vw, 18px);
    letter-spacing: 0.1em;
    color: var(--hundred-muted);
    max-width: 720px;
}

/* HEROの下部余白を少し詰め、タイトルとの繋ぎを自然に */
.single-member__hero {
    padding-bottom: 40px;
    min-height: 78vh;
}


/* --------------------------------------------------------------------------
 * カードナンバリング：メンバー個別・視覚を強調
 * -------------------------------------------------------------------------- */
.card__meta-idx {
    font-family: 'Inter', sans-serif;
    font-weight: 900;
    font-size: 14px;
    letter-spacing: 0.05em;
    color: var(--hundred-accent);
    text-shadow: 0 0 10px rgba(110, 231, 255, 0.4);
}


/* --------------------------------------------------------------------------
 * モバイル対応
 * -------------------------------------------------------------------------- */
@media (max-width: 900px) {
    .single-member__portrait { width: 100%; opacity: 1; }
    .single-member__title-wrap { margin-top: -40px; padding-top: 40px; }
}


/* ==========================================================================
 * v1.5.4：銀河風背景・3Dロゴ拡大・PROFILEラベル演出・ジャンルカラー統一
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * 銀河風の粒子背景（密度差＋ネビュラクラウド）
 * ドット柄からリアルな星雲＋星団に置換
 * -------------------------------------------------------------------------- */
:root {
    /* ネビュラクラウド（複数の柔らかい光の塊で密度差を演出） */
    --hundred-nebula-clouds:
        radial-gradient(ellipse 45% 35% at 22% 28%, rgba(110,231,255,0.14) 0%, rgba(110,231,255,0.06) 40%, transparent 70%),
        radial-gradient(ellipse 38% 42% at 78% 62%, rgba(200,180,255,0.10) 0%, rgba(160,140,240,0.04) 45%, transparent 75%),
        radial-gradient(ellipse 55% 25% at 45% 82%, rgba(80,180,255,0.09) 0%, transparent 65%),
        radial-gradient(ellipse 30% 40% at 88% 18%, rgba(255,255,255,0.06) 0%, transparent 60%);
    /* 密な星団：小さめのtileに多数のdotで局所的な集中を作る */
    --hundred-stars-dense: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='420' height='420' viewBox='0 0 420 420'><g fill='%23ffffff'><circle cx='45' cy='60' r='0.7' opacity='0.85'/><circle cx='80' cy='55' r='0.5' opacity='0.6'/><circle cx='115' cy='72' r='0.9' opacity='0.9'/><circle cx='145' cy='45' r='0.4' opacity='0.5'/><circle cx='170' cy='80' r='0.6' opacity='0.7'/><circle cx='200' cy='68' r='1.1' opacity='0.95'/><circle cx='230' cy='38' r='0.5' opacity='0.6'/><circle cx='268' cy='75' r='0.7' opacity='0.8'/><circle cx='305' cy='42' r='0.6' opacity='0.7'/><circle cx='340' cy='68' r='0.8' opacity='0.85'/><circle cx='375' cy='55' r='0.5' opacity='0.6'/><circle cx='55' cy='125' r='0.6' opacity='0.7'/><circle cx='90' cy='140' r='0.4' opacity='0.5'/><circle cx='130' cy='118' r='0.8' opacity='0.85'/><circle cx='175' cy='135' r='0.5' opacity='0.65'/><circle cx='210' cy='105' r='0.7' opacity='0.8'/><circle cx='245' cy='142' r='0.4' opacity='0.55'/><circle cx='280' cy='118' r='0.9' opacity='0.9'/><circle cx='320' cy='105' r='0.5' opacity='0.65'/><circle cx='362' cy='138' r='0.6' opacity='0.75'/><circle cx='68' cy='195' r='0.5' opacity='0.7'/><circle cx='105' cy='210' r='0.9' opacity='0.9'/><circle cx='142' cy='188' r='0.6' opacity='0.75'/><circle cx='188' cy='198' r='0.4' opacity='0.55'/><circle cx='222' cy='215' r='0.7' opacity='0.8'/><circle cx='260' cy='192' r='0.5' opacity='0.65'/><circle cx='298' cy='210' r='1' opacity='0.95'/><circle cx='340' cy='195' r='0.4' opacity='0.55'/><circle cx='380' cy='215' r='0.7' opacity='0.8'/><circle cx='42' cy='268' r='0.8' opacity='0.85'/><circle cx='85' cy='285' r='0.5' opacity='0.65'/><circle cx='125' cy='262' r='0.4' opacity='0.55'/><circle cx='160' cy='275' r='0.6' opacity='0.75'/><circle cx='198' cy='290' r='0.9' opacity='0.9'/><circle cx='238' cy='265' r='0.5' opacity='0.65'/><circle cx='278' cy='282' r='0.7' opacity='0.8'/><circle cx='318' cy='268' r='0.5' opacity='0.65'/><circle cx='358' cy='285' r='0.4' opacity='0.55'/><circle cx='60' cy='340' r='0.6' opacity='0.75'/><circle cx='100' cy='355' r='0.5' opacity='0.65'/><circle cx='138' cy='332' r='0.9' opacity='0.9'/><circle cx='178' cy='348' r='0.4' opacity='0.55'/><circle cx='220' cy='362' r='0.7' opacity='0.8'/><circle cx='258' cy='335' r='0.5' opacity='0.65'/><circle cx='295' cy='352' r='0.6' opacity='0.75'/><circle cx='335' cy='340' r='0.8' opacity='0.85'/><circle cx='378' cy='358' r='0.5' opacity='0.65'/></g><g fill='%236ee7ff'><circle cx='125' cy='95' r='1.2' opacity='0.9'/><circle cx='262' cy='158' r='1.1' opacity='0.85'/><circle cx='55' cy='232' r='0.9' opacity='0.75'/><circle cx='188' cy='245' r='1.3' opacity='0.95'/><circle cx='330' cy='232' r='0.9' opacity='0.75'/><circle cx='95' cy='378' r='1.1' opacity='0.85'/><circle cx='265' cy='388' r='0.9' opacity='0.75'/></g></svg>");
    /* 疎な遠景の星：大きめtileでランダム感 */
    --hundred-stars-sparse: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='700' height='700' viewBox='0 0 700 700'><g fill='%23ffffff' opacity='0.5'><circle cx='58' cy='142' r='0.4'/><circle cx='215' cy='85' r='0.5'/><circle cx='388' cy='198' r='0.4'/><circle cx='562' cy='105' r='0.5'/><circle cx='648' cy='285' r='0.4'/><circle cx='92' cy='398' r='0.4'/><circle cx='268' cy='465' r='0.5'/><circle cx='452' cy='352' r='0.4'/><circle cx='595' cy='510' r='0.5'/><circle cx='138' cy='608' r='0.4'/><circle cx='325' cy='642' r='0.4'/><circle cx='498' cy='595' r='0.5'/></g></svg>");
}

/* カード：銀河風多層背景 */
.card[data-slug] .card__portrait,
.card__portrait {
    background:
        var(--hundred-stars-sparse),
        var(--hundred-stars-dense),
        var(--hundred-nebula-clouds),
        radial-gradient(ellipse at 30% 25%, #101820 0%, #050810 100%);
    background-size:
        700px 700px,
        420px 420px,
        100% 100%,
        100% 100%;
    background-repeat: repeat, repeat, no-repeat, no-repeat;
    background-position: center, center, center, center;
}

/* 詳細ページ：同じ銀河背景に置換＋ゆっくりドリフト */
.single-member__bg-graphic {
    background:
        var(--hundred-stars-sparse),
        var(--hundred-stars-dense),
        var(--hundred-nebula-clouds),
        radial-gradient(ellipse at 25% 15%, #0e1a24 0%, #050506 65%);
    background-size:
        700px 700px,
        420px 420px,
        100% 100%,
        100% 100%;
    background-repeat: repeat, repeat, no-repeat, no-repeat;
    background-position: center, center, center, center;
    animation: hundred-galaxy-drift 60s linear infinite;
}
@keyframes hundred-galaxy-drift {
    0%   { background-position: 0 0, 0 0, 0 0, 0 0; }
    100% { background-position: -700px 350px, 420px -420px, 0 0, 0 0; }
}


/* --------------------------------------------------------------------------
 * TRID3NT詳細でアー写を粒子・3Dロゴより完全前面へ
 * -------------------------------------------------------------------------- */
.single-member__hero {
    position: relative;
    z-index: 5;
    isolation: isolate;
}
.hundred-particles-bg { display: none; }
body.single-member .hundred-particles-bg,
.single-member .hundred-particles-bg { display: none !important; }
.single-member__portrait { z-index: 4; }
.single-member__img { z-index: 5; position: relative; }


/* --------------------------------------------------------------------------
 * 3D旋回ロゴをPCでもっと大きく
 * -------------------------------------------------------------------------- */
.talent-logo-3d {
    width:  min(52vw, 720px);
    height: min(52vw, 720px);
    top: 42%;
    left: 24%;
}
@media (max-width: 900px) {
    .talent-logo-3d { width: 70vw; height: 70vw; top: 30%; left: 50%; }
}


/* --------------------------------------------------------------------------
 * タイトル位置：アー写にかぶらないよう左寄せ・独立ブロック化
 * -------------------------------------------------------------------------- */
.single-member__title-wrap {
    margin-top: 0;
    padding: 100px clamp(24px, 5vw, 80px) 60px;
    max-width: 62%;
    background: linear-gradient(180deg, transparent 0%, rgba(5, 5, 5, 0.6) 30%, var(--hundred-bg) 100%);
}
@media (max-width: 900px) {
    .single-member__title-wrap { max-width: 100%; padding-top: 60px; }
}


/* --------------------------------------------------------------------------
 * — PROFILE ラベルを大型化＋モーション
 * -------------------------------------------------------------------------- */
.single-member__block-label--display {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 40px;
    font-family: 'Inter', sans-serif;
    color: var(--hundred-accent);
}
.single-member__block-label--display .single-member__block-label-dash {
    display: inline-block;
    font-size: clamp(48px, 6vw, 92px);
    font-weight: 300;
    line-height: 1;
    letter-spacing: -0.05em;
    color: var(--hundred-accent);
    text-shadow: 0 0 30px rgba(110, 231, 255, 0.4);
    animation: hundred-dash-slide 2.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    transform-origin: right center;
}
@keyframes hundred-dash-slide {
    0%   { transform: scaleX(0); opacity: 0; }
    60%  { transform: scaleX(1.3); opacity: 1; }
    100% { transform: scaleX(1); opacity: 1; }
}
.single-member__block-label--display .single-member__block-label-text {
    display: inline-block;
    font-size: clamp(38px, 5vw, 76px);
    font-weight: 900;
    letter-spacing: 0.02em;
    line-height: 1;
    color: var(--hundred-accent);
    text-shadow: 0 0 20px rgba(110, 231, 255, 0.35);
}
/* 本文とのコントラスト強化 */
.single-member__prose,
.single-member__prose p {
    font-size: clamp(14px, 1.1vw, 16px);
    line-height: 2;
    color: var(--hundred-text);
    max-width: 780px;
}


/* --------------------------------------------------------------------------
 * ジャンルタグ：ジャンル別カラー統一
 * -------------------------------------------------------------------------- */
.tag { transition: color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease; }

/* HIP HOP / HIPHOP 系 → 赤 */
.tag--hip-hop, .tag--hiphop, .tag--rap, .tag--trap {
    color: #ff4d4d;
    border-color: rgba(255,77,77,0.55);
    box-shadow: 0 0 12px rgba(255,77,77,0.25);
}
/* House 系 → Ice Cyan */
.tag--house, .tag--tech-house, .tag--deep-house, .tag--future-house {
    color: #6ee7ff;
    border-color: rgba(110,231,255,0.55);
    box-shadow: 0 0 12px rgba(110,231,255,0.25);
}
/* Techno 系 → 濃い青紫 */
.tag--techno, .tag--big-room-techno, .tag--minimal-techno {
    color: #9d7dff;
    border-color: rgba(157,125,255,0.55);
    box-shadow: 0 0 12px rgba(157,125,255,0.25);
}
/* Trance → ピンク */
.tag--trance, .tag--psy-trance {
    color: #ff6ec7;
    border-color: rgba(255,110,199,0.55);
    box-shadow: 0 0 12px rgba(255,110,199,0.25);
}
/* Big Room → オレンジ */
.tag--big-room, .tag--edm, .tag--electro-house {
    color: #ff9d4d;
    border-color: rgba(255,157,77,0.55);
    box-shadow: 0 0 12px rgba(255,157,77,0.25);
}
/* Drum & Bass / DnB → 黄緑 */
.tag--drum-and-bass, .tag--dnb, .tag--jungle {
    color: #b8ff4d;
    border-color: rgba(184,255,77,0.55);
    box-shadow: 0 0 12px rgba(184,255,77,0.25);
}
/* Garage → シアン */
.tag--garage, .tag--uk-garage, .tag--2-step {
    color: #4dfff5;
    border-color: rgba(77,255,245,0.55);
    box-shadow: 0 0 12px rgba(77,255,245,0.25);
}
/* Latin/Afro → 温かい黄 */
.tag--latin, .tag--laten, .tag--afro, .tag--amapiano, .tag--reggaeton {
    color: #ffe14d;
    border-color: rgba(255,225,77,0.55);
    box-shadow: 0 0 12px rgba(255,225,77,0.25);
}
/* Pop/Open Format → 白 */
.tag--pop, .tag--pops, .tag--open-format, .tag--top-40 {
    color: #ffffff;
    border-color: rgba(255,255,255,0.55);
    box-shadow: 0 0 12px rgba(255,255,255,0.15);
}


/* --------------------------------------------------------------------------
 * v1.5.5：サイトヘッダー左上に HUNDRED アイコンロゴ
 * -------------------------------------------------------------------------- */
.site-header__logo-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    transition: opacity 0.3s ease;
}
.site-header__logo-icon {
    width: 52px;
    height: auto;
    max-height: 40px;
    object-fit: contain;
    display: block;
    filter: brightness(0) invert(1);
    opacity: 0.98;
    transition: filter 0.3s ease, transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.site-header__logo-link:hover .site-header__logo-icon {
    filter: brightness(0) invert(1) drop-shadow(0 0 12px rgba(110, 231, 255, 0.7));
    transform: scale(1.08) rotate(-2deg);
}

/* WPカスタムロゴが以前の設定でセットされている場合の互換 */
.site-header .custom-logo-link { display: none; }

@media (max-width: 700px) {
    .site-header__logo-icon { width: 44px; max-height: 34px; }
}


/* --------------------------------------------------------------------------
 * v1.5.6：PROFILEラベルのハンギングダッシュ配置
 *   — を左にはみ出させ、「P」を本文開始位置と垂直揃え
 * -------------------------------------------------------------------------- */
.single-member__block-label--display {
    display: block;              /* flexを解除 */
    position: relative;
    padding-left: 0;
    margin-bottom: 40px;
}
.single-member__block-label--display .single-member__block-label-dash {
    position: absolute;
    right: calc(100% + 24px);    /* コンテナ左端の外側に配置 */
    top: 0;
    line-height: 1;
    white-space: nowrap;
}
.single-member__block-label--display .single-member__block-label-text {
    display: inline-block;       /* PROFILE テキストは本文と同じ 0 位置スタート */
}

/* コンテナが端に張り付きすぎるとダッシュがビューポート外に出るので
   小画面では通常のインライン配置に戻す */
@media (max-width: 900px) {
    .single-member__block-label--display .single-member__block-label-dash {
        position: static;
        display: inline-block;
        margin-right: 16px;
    }
    .single-member__block-label--display { padding-left: 0; }
}


/* --------------------------------------------------------------------------
 * v1.5.6：HUNDREDアイコン拡大＋TRID3NTアー写位置＋TOP→MANIFESTOフェード
 * -------------------------------------------------------------------------- */

/* サイトヘッダーアイコンをもう少し大きく */
.site-header__logo-icon {
    width: 72px;
    max-height: 56px;
}
@media (max-width: 700px) {
    .site-header__logo-icon { width: 56px; max-height: 44px; }
}

/* TRID3NTのアー写を右寄せ表示（左端切れ回避） */
.single-member[data-slug="trid3nt"] .single-member__img {
    object-position: 78% 22%;
}

/* TOP HERO → MANIFESTO へのフェードトランジション（scrollでhero粒子が消える） */
.hero {
    transition: opacity 0.9s ease-out;
    will-change: opacity;
}
.hero.is-fading {
    opacity: 0.2;
}
.hero__particles,
.hero__overlay {
    transition: opacity 1.1s ease-out, transform 1.5s ease-out;
}
.hero.is-fading .hero__particles {
    opacity: 0.05;
    transform: scale(0.92);
}
.hero.is-fading .hero__overlay {
    opacity: 0.2;
}

/* MANIFESTO側：スクロールで背景がふわりと現れる */
.manifesto {
    position: relative;
}
.manifesto__bg-img {
    opacity: 0;
    transition: opacity 1.6s ease-out, transform 1.6s ease-out;
}
.manifesto.is-emerging .manifesto__bg-img {
    opacity: 0.42;
}
.manifesto__scrim {
    opacity: 0.65;
    transition: opacity 1.4s ease-out;
}
.manifesto.is-emerging .manifesto__scrim {
    opacity: 1;
}


/* --------------------------------------------------------------------------
 * v1.5.6：HUNDREDアイコンを100シルエット版に切替＋サイズ拡大
 * -------------------------------------------------------------------------- */
.site-header__logo-icon {
    width: 80px !important;
    height: 80px !important;
    max-height: 80px !important;
    object-fit: contain;
    /* white-black反転は正方形アイコンだと不自然なので撤廃、原色そのまま */
    filter: none;
}
@media (max-width: 700px) {
    .site-header__logo-icon {
        width: 60px !important;
        height: 60px !important;
        max-height: 60px !important;
    }
}


/* --------------------------------------------------------------------------
 * v1.5.6：銀河背景をSVG大サイズ＋粒子密度で表現（タイル露見を解消）
 *   従来のネビュラCSSとSVGパターン背景を撤廃、単一の大画像で完結
 * -------------------------------------------------------------------------- */

/* 既存のパターン変数を無効化するオーバーライド */
.card[data-slug] .card__portrait,
.card__portrait {
    background:
        url('../images/galaxy-bg.svg'),
        radial-gradient(ellipse at 30% 25%, #101820 0%, #050810 100%) !important;
    background-size: cover, 100% 100% !important;
    background-position: center, center !important;
    background-repeat: no-repeat, no-repeat !important;
}

/* v1.5.17：銀河を2レイヤー重ねで濃密化（Parallax風視差＋逆方向スロードリフト） */
.single-member__bg-graphic {
    background:
        url('../images/galaxy-bg.svg'),
        radial-gradient(ellipse at 25% 15%, #0e1a24 0%, #050506 65%) !important;
    background-size: cover, 100% 100% !important;
    background-position: center, center !important;
    background-repeat: no-repeat, no-repeat !important;
    animation: hundred-galaxy-pan 120s linear infinite alternate;
}
/* layer2：同SVGを60%スケールで screen 合成、60秒周期の逆方向ドリフトで奥行き演出 */
.single-member__bg-graphic::before {
    content: '' !important;
    position: absolute;
    inset: -10%;
    background: url('../images/galaxy-bg.svg') !important;
    background-size: 60% auto !important;
    background-repeat: repeat !important;
    mix-blend-mode: screen;
    opacity: 0.55;
    animation: hundred-galaxy-pan-rev 60s linear infinite alternate;
}
@keyframes hundred-galaxy-pan {
    0%   { background-position: 20% 30%, center; }
    100% { background-position: 80% 70%, center; }
}
@keyframes hundred-galaxy-pan-rev {
    0%   { background-position: 80% 70%; }
    100% { background-position: 20% 30%; }
}


/* --------------------------------------------------------------------------
 * v1.5.8：アー写を絶対最前面に。3Dロゴ・タイトル・グラフィックすべてを後ろに
 * -------------------------------------------------------------------------- */
.single-member__hero {
    position: relative;
    z-index: 5;
    isolation: isolate;
    overflow: visible; /* 下タイトルとオーバーラップさせないため */
}

/* 背景・3Dロゴを完全後方に */
.single-member__bg-graphic { z-index: 0 !important; }
.single-member__bg-noise,
.single-member__bg-rays { z-index: 0 !important; }
.talent-logo-3d { z-index: 2 !important; }

/* アー写を最前面（v1.5.15：絶対値 200/201 に固定。他オーバーレイは全てそれ以下）
 * v1.5.17：aspect-ratio 箱を撤廃し 幅50% 固定。cover ＋ 顔上部アンカーで
 *          左右の黒帯・境界線を構造的に発生させない。 */
.single-member__portrait {
    position: absolute;
    top: 0; right: 0;
    width: 50%;
    height: 100%;
    z-index: 200 !important;
    overflow: hidden;
    pointer-events: none;
}
.single-member__portrait::after { content: none !important; }
.single-member__img {
    position: relative;
    z-index: 201 !important;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 20%;
}

/* metaはアー写より前でOK（画面上部の "T · 4199 / UNIT" テキスト） */
.single-member__meta { position: relative; z-index: 210; }

/* タイトルwrap：hero外のブロックとして完全独立、hero下に配置 */
.single-member__title-wrap {
    margin-top: 0 !important;
    padding-top: 60px !important;
    z-index: 3;
}

@media (max-width: 900px) {
    .single-member__portrait { opacity: 1; }
}


/* --------------------------------------------------------------------------
 * v1.5.17：ポートレート下地（#050708 の黒い箱）を完全撤廃。
 *   透過PNGの透明ピクセルはそのまま銀河背景を透過させ、写真が背景に
 *   自然に溶け込むデザインに変更。::before の黒塗りオーバーレイも撤去。
 * v1.5.20：黒背景の非透過アー写（PHILLY）は星空と溶け合い顔しか見えない
 *   問題があったため、data-slug で個別に微radial-gradient と写真明度補正を
 *   付与し、写真の輪郭が浮き上がるよう調整。透過PNG勢には影響なし。
 * -------------------------------------------------------------------------- */
.single-member__portrait {
    background: transparent !important;
}
.single-member__portrait::before {
    content: none !important;
}

/* v1.5.20〜v1.5.34：黒背景写真タレント（PHILLY / TRID3NT）の露出補正
   歴史：
     v1.5.27 solid下地 → 中央に境界線が見える問題
     v1.5.29 radial薄化 / v1.5.30 solid内側 / v1.5.31 drop-shadow → いずれも視認性不足
     v1.5.32/33 linear-gradient左フェード → PHILLYは成功
   v1.5.34：TRID3NTはユーザー指示により明度加工・下地一切なし（素のまま）に。
     PHILLYのみ引き続き linear-gradient 左フェード＋控えめ明度補正で
     "縦線ゼロ+写真クッキリ"を維持。 */
.single-member[data-slug="philly"] .single-member__portrait {
    background: linear-gradient(
        to right,
        rgba(0, 0, 0, 0) 0%,
        rgba(10, 13, 20, 0.30) 12%,
        rgba(10, 13, 20, 0.78) 32%,
        rgba(10, 13, 20, 0.85) 100%
    ) !important;
}
.single-member[data-slug="philly"] .single-member__img {
    filter: brightness(1.22) contrast(1.10) saturate(1.05) !important;
}
/* TRID3NTは素のまま（下地・フィルタ加工なし・ユーザー指示による） */


/* --------------------------------------------------------------------------
 * v1.5.11：TRID3NT写真中央寄せ＋3Dロゴイベント確保＋MANIFESTO初期状態
 * -------------------------------------------------------------------------- */

/* v1.5.15：TRID3NT個別調整は contain 化により不要のため撤廃 */

/* 3Dロゴ：ポインターイベント受け入れ（追従用） */
.talent-logo-3d {
    pointer-events: auto !important;
}
/* portraitはpointer-events noneのままで、3Dロゴが cursor を捕捉できる */

/* MANIFESTO 背景初期は完全に隠す（JSでscrollに応じて出す） */
.manifesto__bg-img {
    opacity: 0;
    will-change: opacity;
}
.manifesto__scrim {
    opacity: 0.5;
    will-change: opacity;
}


/* ==========================================================================
 * v1.5.14: 顔クロップ再調整（cap切れ防止・胸元まで美しく）＋
 *          single-memberヒーローに左側スクリム追加＋
 *          細部タイポグラフィ／余白のリファイン
 * ========================================================================== */

/* v1.5.17：全タレント共通 — cover＋顔上部アンカー（center 20%）に統一。
   contain 時代の左右黒帯を根絶しつつ、頭見切れも防ぐ
   v1.5.21→v1.5.25：全タレント共通で顔アップ強化＋左シフト。
   黒背景写真タレントを画面外に飛ばさないよう scale/translateX は控えめ。 */
.single-member .single-member__img {
    object-fit: cover !important;
    object-position: center 16% !important;
    filter: brightness(1.08) contrast(1.05) saturate(1.05) !important;
    transform: scale(1.10) translateX(-3%) !important;
    transform-origin: center center !important;
}

/* v1.5.21→v1.5.23：黒背景写真勢（TRID3NT / PHILLY）は translateX を打ち消し
   scale も控えめにして、明部（顔）が画面外に飛ばないようにする。
   透過PNG勢は base rule の顔アップ＋左シフトをそのまま享受する。 */
.single-member[data-slug="trid3nt"] .single-member__img {
    object-position: 78% 55% !important;
    transform: scale(1.02) translateX(0) !important;
}
.single-member[data-slug="philly"] .single-member__img {
    object-position: 60% 22% !important;
    transform: scale(1.05) translateX(0) !important;
}
/* v1.5.29：NANAMI は全身ショットで顔が他メンバーより小さく写る。
   個別 scale を上げて顔まわりをタイトにクロップ。 */
.single-member[data-slug="nanami"] .single-member__img {
    object-position: center 10% !important;
    transform: scale(1.35) translateX(-4%) !important;
}

/* --------------------------------------------------------------------------
 * v1.5.15: 左側ダークスクリムは「かっこ悪い」とのユーザー評価により完全撤去。
 * ヒーロー背景は銀河背景一枚のみ。
 * -------------------------------------------------------------------------- */
.single-member__hero { position: relative; }
.single-member__hero::before,
.single-member__hero::after { content: none !important; }
/* meta と title-wrap をスクリムより上に */
.single-member__meta       { position: relative; z-index: 4; }
.single-member__title-wrap { position: relative; z-index: 4; }

/* タイトルwrapの追加スクリムを軽量化（縦上塗りだけ担わせる） */
.single-member__title-wrap {
    background: linear-gradient(180deg,
        transparent 0%,
        rgba(5,5,5,0.35) 40%,
        var(--hundred-bg) 100%) !important;
}

/* --------------------------------------------------------------------------
 * v1.5.14: single-member hero — reading/title/catch のタイポ調整
 * -------------------------------------------------------------------------- */
.single-member__reading {
    font-size: 12px !important;
    letter-spacing: 0.42em !important;
    text-transform: none;
    margin-bottom: 14px !important;
}
.single-member__title {
    letter-spacing: -0.025em !important;
    line-height: 0.9 !important;
    margin-bottom: 26px !important;
}
.single-member__catch {
    letter-spacing: 0.12em !important;
    line-height: 1.85 !important;
    max-width: 640px !important;
}

/* --------------------------------------------------------------------------
 * v1.5.14: talent-archive featured cards — 顔クロップ微調整
 * -------------------------------------------------------------------------- */
@media (min-width: 640px) {
    .card[data-slug="philly"] .card__img,
    .card[data-slug="taisei"] .card__img { object-position: center 14%; }
}

/* --------------------------------------------------------------------------
 * v1.5.14: contact-page 追加ポリッシュ
 * -------------------------------------------------------------------------- */
.contact-page__title em { display: inline-block; }
.contact-page__title .reveal-slide-x__mask { padding-bottom: 0.08em; }
.contact-form__notice {
    padding: 24px 28px !important;
    margin-bottom: 40px !important;
    border-radius: 2px !important;
}
.contact-form__notice--success {
    background: linear-gradient(180deg, rgba(110,231,255,0.08), rgba(110,231,255,0.02)) !important;
    box-shadow: 0 0 32px rgba(110,231,255,0.12);
}
.contact-form__submit {
    min-width: 260px;
    justify-content: space-between !important;
    padding: 22px 32px !important;
    font-size: 13px !important;
    letter-spacing: 0.28em !important;
}
.contact-form__submit:hover { transform: translateY(-2px); }

/* --------------------------------------------------------------------------
 * v1.5.14: teaser-card (TOP MEMBERS ROSTER) — hover を柔らかく
 * -------------------------------------------------------------------------- */
.teaser-card { transition: border-color 0.4s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1); }
.teaser-card:hover { transform: translateY(-6px); }
.teaser-card__img { transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1); }
.teaser-card:hover .teaser-card__img { transform: scale(1.06); }

/* --------------------------------------------------------------------------
 * v1.5.14: manifesto def-body — 行末孤立防止 + max-widthを絞る
 * -------------------------------------------------------------------------- */
.manifesto__def-body {
    max-width: 460px;
    text-align: justify;
    text-justify: inter-ideograph;
    word-break: normal;
    overflow-wrap: break-word;
}

/* --------------------------------------------------------------------------
 * v1.5.14: services list item — マージン揃え + hoverの詰め感を軽減
 * -------------------------------------------------------------------------- */
.services__item {
    padding-top: 44px !important;
    padding-bottom: 44px !important;
}
.services__item:hover {
    padding-left: 16px !important;
    padding-right: 16px !important;
}
.services__idx { opacity: 0.7; }
.services__item:hover .services__idx { opacity: 1; color: var(--hundred-accent); }

/* --------------------------------------------------------------------------
 * v1.5.14: news-teaser — カード上でのhover安定化
 * -------------------------------------------------------------------------- */
.news-teaser__item:hover { padding-left: 12px !important; }
.news-teaser__ttl { line-height: 1.5; }

/* --------------------------------------------------------------------------
 * v1.5.14: lineage — closing-title のブランド感を上げる
 * -------------------------------------------------------------------------- */
.lineage__closing-title { letter-spacing: -0.025em; }
.lineage__closing-title em {
    color: var(--hundred-accent) !important;
    font-style: italic;
    font-weight: 400;
}

/* --------------------------------------------------------------------------
 * v1.5.14: contact-cta — italic emに ice cyanを乗せる
 * -------------------------------------------------------------------------- */
.contact-cta__title em { color: var(--hundred-accent) !important; }
.contact-cta__mail a {
    font-weight: 700;
    letter-spacing: 0.06em;
    padding-bottom: 6px !important;
    border-bottom-width: 2px !important;
}

/* --------------------------------------------------------------------------
 * v1.5.14: page-header / archives — メタ間隔統一
 * -------------------------------------------------------------------------- */
.services-hero__title,
.members-hero__title { line-height: 0.82; }

/* --------------------------------------------------------------------------
 * v1.5.14: モバイル @media (max-width: 700px) 微調整
 * -------------------------------------------------------------------------- */
@media (max-width: 700px) {
    /* v1.5.15：モバイルのスクリム・減光を撤廃。アー写はフル表示 */
    .single-member__portrait { width: 100% !important; opacity: 1 !important; }
    .single-member__title { font-size: clamp(48px, 14vw, 90px) !important; }
    .single-member__title-wrap { padding-top: 40px !important; }
    .contact-form__submit { min-width: 100%; }
}

/* --------------------------------------------------------------------------
 * /contact/ フォームスタイル
 * -------------------------------------------------------------------------- */
.contact-page {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    background: var(--hundred-bg);
}
.contact-page__bg-graphic {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        url('../images/galaxy-bg.svg'),
        radial-gradient(ellipse at 30% 20%, #0e1a24 0%, #050506 65%);
    background-size: cover, 100% 100%;
    background-position: center, center;
    background-repeat: no-repeat, no-repeat;
    opacity: 0.5;
}
/* v1.5.19：コンテンツ列を 900px に絞り、読みやすい1カラムのエディトリアル構成に */
.contact-page__hero,
.contact-form-section,
.contact-info {
    position: relative;
    z-index: 2;
    padding: 120px clamp(24px, 5vw, 80px) 80px;
    max-width: 900px;
    margin: 0 auto;
}
.contact-page__hero { padding-top: 160px; }
.contact-info { padding-bottom: 120px; }

.contact-page__meta {
    display: flex;
    justify-content: space-between;
    margin-bottom: 100px;
    font-family: 'Inter', sans-serif;
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--hundred-muted);
}
.contact-page__num { color: var(--hundred-accent); font-weight: 700; }
.contact-page__title {
    font-family: 'Inter', sans-serif;
    font-weight: 900;
    font-size: clamp(56px, 12vw, 200px);
    letter-spacing: -0.03em;
    line-height: 0.88;
    color: var(--hundred-text);
    margin-bottom: 60px;
}
.contact-page__title em {
    font-style: italic;
    font-weight: 400;
    color: var(--hundred-muted);
}
.contact-page__lead {
    font-size: 15px;
    line-height: 2;
    color: var(--hundred-muted);
    max-width: 780px;
}
.contact-page__lead a { color: var(--hundred-accent); text-decoration: underline; }

/* v1.5.16：セクション余白 80px に統一 */
.contact-form-section { padding-top: 80px; padding-bottom: 80px; }
.contact-form__notice {
    padding: 40px clamp(24px, 4vw, 60px);
    border: 1px solid var(--hundred-line);
    margin-bottom: 60px;
    background: rgba(255,255,255,0.02);
}
.contact-form__notice--success { border-color: var(--hundred-accent); background: rgba(110,231,255,0.06); }
.contact-form__notice--error   { border-color: #ff4d4d; background: rgba(255,77,77,0.06); }
.contact-form__notice-label {
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    letter-spacing: 0.4em;
    color: var(--hundred-accent);
    margin-bottom: 16px;
}
.contact-form__notice--error .contact-form__notice-label { color: #ff4d4d; }
.contact-form__notice h2 {
    font-family: 'Inter', sans-serif;
    font-size: clamp(24px, 3vw, 40px);
    font-weight: 900;
    margin-bottom: 16px;
    color: var(--hundred-text);
}
.contact-form__notice p { font-size: 14px; line-height: 1.9; color: var(--hundred-muted); }

/* v1.5.19：honeypot は完全隠蔽（可視化事故防止のため多重に遮断） */
.contact-form__honeypot {
    position: absolute !important;
    left: -9999px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0;
    pointer-events: none;
}

/* v1.5.19：12カラムグリッドを確実に組む。余白階層 32px(行間)/24px(列間) */
.contact-form__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 32px 24px;
}
.contact-form__field { grid-column: span 12; }
.contact-form__field--half { grid-column: span 6; }
/* モバイル（900px以下）：全フィールドをフル幅の span 12 に統一 */
@media (max-width: 900px) {
    .contact-form__field,
    .contact-form__field--half { grid-column: span 12; }
    .contact-form__submit { min-width: 100%; width: 100%; }
}

/* v1.5.19：label + input は縦積み（labelはブロックでinputの上） */
.contact-form__label {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 12px;
    font-family: 'Inter', sans-serif;
}
.contact-form__label-num {
    font-size: 11px;
    font-weight: 700;
    color: var(--hundred-accent);
    letter-spacing: 0.2em;
    min-width: 24px;
}
.contact-form__label-text {
    /* v1.5.16：ラベル英字は Inter 12px / letter-spacing 0.25em で統一 */
    font-size: 12px;
    font-weight: 700;
    color: var(--hundred-text);
    letter-spacing: 0.25em;
    text-transform: uppercase;
}
.contact-form__label em {
    font-style: normal;
    color: var(--hundred-accent);
    margin-left: 4px;
}

.contact-form__input,
.contact-form__textarea,
.contact-form__select {
    display: block;
    width: 100%;
    min-height: 52px; /* v1.5.19：タップサイズ52pxで余裕を確保 */
    padding: 16px 20px;
    /* v1.5.19：仕様値に統一。薄いガラス質の下地＋白24%ボーダー */
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.24);
    color: #F5F7F8;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 15px;
    line-height: 1.6;
    transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
    border-radius: 0;
    appearance: none;
    -webkit-appearance: none;
}
.contact-form__input::placeholder,
.contact-form__textarea::placeholder {
    /* v1.5.16：プレースホルダは Noto Sans JP 15px */
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 15px;
    color: rgba(255,255,255,0.32);
}

.contact-form__input:focus,
.contact-form__textarea:focus,
.contact-form__select:focus {
    outline: none;
    border-color: #6EE7FF;
    background: rgba(110,231,255,0.04);
    box-shadow: 0 0 0 3px rgba(110,231,255,0.15);
}
.contact-form__textarea { min-height: 200px; resize: vertical; }
.contact-form__hint {
    font-size: 11px;
    color: var(--hundred-muted);
    text-align: right;
    margin-top: 8px;
    letter-spacing: 0.1em;
}

.contact-form__select-wrap { position: relative; }
.contact-form__select { padding-right: 50px; cursor: pointer; }
.contact-form__select-arrow {
    position: absolute;
    top: 50%;
    right: 20px;
    transform: translateY(-50%);
    color: var(--hundred-accent);
    pointer-events: none;
    font-family: 'Inter', sans-serif;
    font-size: 14px;
}
.contact-form__select option {
    background: #0a0d12;
    color: var(--hundred-text);
}

.contact-form__field--consent { margin-top: 40px; }
.contact-form__checkbox {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    cursor: pointer;
    font-size: 13px;
    line-height: 1.7;
    color: var(--hundred-muted);
}
.contact-form__checkbox input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.contact-form__checkbox-mark {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    border: 1px solid var(--hundred-line);
    position: relative;
    transition: border-color 0.25s ease, background 0.25s ease;
    margin-top: 2px;
}
.contact-form__checkbox-mark::after {
    content: '✓';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0);
    color: var(--hundred-accent);
    font-size: 14px;
    font-weight: 900;
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}
.contact-form__checkbox input:checked ~ .contact-form__checkbox-mark {
    border-color: var(--hundred-accent);
    background: rgba(110,231,255,0.08);
}
.contact-form__checkbox input:checked ~ .contact-form__checkbox-mark::after { transform: translate(-50%, -50%) scale(1); }
.contact-form__checkbox-text a { color: var(--hundred-accent); text-decoration: underline; }

.contact-form__submit-wrap {
    /* v1.5.16：グリッドの半カラムに落ちて左に寄っていた送信ボタン行を全幅化・中央配置 */
    grid-column: 1 / -1;
    margin-top: 40px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}
.contact-form__submit {
    min-width: 320px;
    justify-content: center;
    font-size: 14px;
    letter-spacing: 0.3em;
    padding: 22px 40px;
}
.contact-form__submit-hint {
    font-size: 11px;
    color: var(--hundred-muted);
    letter-spacing: 0.15em;
}

.contact-info { padding-top: 100px; padding-bottom: 160px; border-top: 1px solid var(--hundred-line); margin-top: 80px; }
.contact-info__meta {
    display: flex;
    justify-content: space-between;
    margin-bottom: 60px;
    font-family: 'Inter', sans-serif;
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--hundred-muted);
}
.contact-info__num { color: var(--hundred-accent); font-weight: 700; }
.contact-info__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px 32px;
}
@media (max-width: 900px) { .contact-info__grid { grid-template-columns: 1fr; } }
.contact-info__label {
    font-family: 'Inter', sans-serif;
    font-size: 11px;
    letter-spacing: 0.3em;
    color: var(--hundred-muted);
    margin-bottom: 16px;
}
.contact-info__value {
    font-size: 15px;
    color: var(--hundred-text);
    font-style: normal;
    line-height: 1.9;
}
.contact-info__value a { color: var(--hundred-text); text-decoration: none; transition: color 0.25s ease; }
.contact-info__value a:hover { color: var(--hundred-accent); }
