@charset "utf-8";
/* ======================================================================
   TOKYO BAY DRIVING AGENT 357 -- 2026 Front Design（ホワイトベース）
   ----------------------------------------------------------------------
   ・トップページ／フッター／固定CTAバー用の独立スタイル
   ・style.css / responsive.css の後に読み込む（functions.php で制御）
   ・命名は tb- 接頭辞、CSS変数は --tbn- 接頭辞で既存と衝突させない
====================================================================== */

:root {
    --tbn-bg: #ffffff;
    --tbn-bg2: #f6f6f9;
    --tbn-bg3: #eef0f4;
    --tbn-ink: #0c0d12;
    --tbn-body: #4b5060;
    --tbn-mute: #8b909e;
    --tbn-dim: #a7abb7;
    --tbn-line: rgba(12, 13, 18, .14);
    --tbn-line-soft: rgba(12, 13, 18, .075);
    --tbn-pink: #e2237f;
    --tbn-pink-l: #ff4fa8;
    --tbn-violet: #6a3ff0;
    --tbn-grad: linear-gradient(100deg, #ff4fa8 0%, #e2237f 34%, #6a3ff0 100%);
    --tbn-grad-t: linear-gradient(100deg, #e2237f 0%, #a12ec9 52%, #5b3fe0 100%);
    --tbn-tint: linear-gradient(120deg, rgba(226, 35, 127, .07), rgba(106, 63, 240, .07));
    --tbn-jp: "Zen Kaku Gothic New", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
    --tbn-mincho: "Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", serif;
    --tbn-en: "Cormorant Garamond", "Times New Roman", serif;
    --tbn-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

/* ----------------------------------------------------------------------
   0. 旧テーマ／旧案件CSSの打ち消し（トップのみ）
---------------------------------------------------------------------- */
body.home {
    background: var(--tbn-bg) !important;
    color: var(--tbn-ink);
    font-family: var(--tbn-jp);
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

body.home a {
    color: inherit;
    text-decoration: none;
}

body.home .header {
    background: var(--tbn-bg);
}

body.home #site_wrap {
    background: var(--tbn-bg);
}

body.home img {
    max-width: 100%;
}

/* ----------------------------------------------------------------------
   1. ヘッダー（トップのみFVに重ねて透過／スクロールで白に反転）
---------------------------------------------------------------------- */
body.home .header-bar {
    position: fixed !important;
    top: 0;
    left: 0;
    z-index: 9000;
    width: 100%;
    background: transparent !important;
    color: #fff !important;
    border-bottom: 1px solid transparent;
    transition: background-color .45s ease, backdrop-filter .45s ease, border-color .45s ease, box-shadow .45s ease;
}

body.home.tb-scrolled .header-bar {
    background: rgba(255, 255, 255, .94) !important;
    -webkit-backdrop-filter: saturate(150%) blur(14px);
    backdrop-filter: saturate(150%) blur(14px);
    border-bottom-color: var(--tbn-line-soft);
    box-shadow: 0 10px 30px -22px rgba(12, 13, 18, .45);
}

body.home .header-bar .logo a,
body.home .global-nav a {
    color: #fff !important;
    text-shadow: 0 1px 12px rgba(0, 0, 0, .35);
    transition: color .35s ease;
}

body.home.tb-scrolled .header-bar .logo a,
body.home.tb-scrolled .global-nav a {
    color: var(--tbn-ink) !important;
    text-shadow: none;
}

body.home .global-nav a:hover,
body.home.tb-scrolled .global-nav a:hover { color: var(--tbn-pink) !important; }

body.home .header-bar-fixed ~ .top-slider-wrapper,
body.home .header-bar-fixed ~ .tbfv { margin-top: 0; }

/* ----------------------------------------------------------------------
   1-1. ハンバーガーメニュー：左のボーダーのみ消去（テーマ標準の挙動を維持）
---------------------------------------------------------------------- */
.global-nav-button {
    border-left: none !important;
}

/* ======================================================================
   2. ファーストビュー（全画面スライダー／Ken Burns）
   - PC : 画像を全面に敷き、コピーを重ねる
   - SP : 画像を 4:3 の横長バナーにし、キャッチのみ画像上／本文とボタンは白地
====================================================================== */
.tbfv {
    position: relative;
    display: grid;
    grid-template-columns: 100%;
    grid-template-rows: 1fr auto;
    min-height: clamp(600px, 100svh, 980px);
    overflow: hidden;
    background: #0a0b11;
}

.tbc-fv {
    width: min(1320px, 90%);
    margin: 0 auto;
}

/* --- スライダー --- */
.tbfv__slider {
    grid-column: 1;
    grid-row: 1 / -1;
    position: relative;
    z-index: 0;
    overflow: hidden;
    background: linear-gradient(150deg, #17181f, #0b0c12 58%, #1b1424);
}

.tbfv__slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    animation: tbFvFade 21s linear infinite;
    animation-delay: calc(var(--i) * 7s);
    will-change: opacity;
}

.tbfv__slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform-origin: 52% 46%;
    animation: tbKen 21s linear infinite;
    animation-delay: calc(var(--i) * 7s);
    will-change: transform;
}

.tbfv__slide:nth-child(2) img { transform-origin: 38% 58%; }
.tbfv__slide:nth-child(3) img { transform-origin: 64% 40%; }

@keyframes tbFvFade {
    0%   { opacity: 0; }
    3%   { opacity: 1; }
    31%  { opacity: 1; }
    36%  { opacity: 0; }
    100% { opacity: 0; }
}

@keyframes tbKen {
    from { transform: scale(1); }
    to   { transform: scale(1.42); }
}

/* YouTube背景（TCDテーマオプション type3）：再生開始でポスター画像からフェード */
.tbfv .tbfv__slider .header-youtube.tbfv__yt {
    position: absolute !important;
    inset: 0;
    z-index: 1;
    width: 100% !important;
    height: 100% !important;
    aspect-ratio: auto !important;
    overflow: hidden;
    background: transparent;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.6s ease;
}

.tbfv .tbfv__slider .header-youtube.tbfv__yt.is-playing { opacity: 1; }

/* マウスが乗ってもYouTubeの一時停止アイコン等を出さない */
.tbfv .tbfv__yt,
.tbfv .tbfv__yt * {
    pointer-events: none !important;
}

/* 読込み中は静止画を出さず、暗いグラデ＋光の筋＋ゆっくり呼吸するグローで動画までの間をつなぐ */
.tbfv .tbfv__slider.is-yt .tbfv__slide {
    opacity: 0;
    transition: opacity 1.2s ease;
}

.tbfv .tbfv__slider.is-yt.is-fallback .tbfv__slide { opacity: 1; }

.tbfv .tbfv__slider.is-yt::before {
    content: "";
    position: absolute;
    inset: -10%;
    z-index: 0;
    background:
        radial-gradient(42% 48% at 70% 42%, rgba(226, 35, 127, .22), transparent 70%),
        radial-gradient(46% 52% at 32% 70%, rgba(106, 63, 240, .2), transparent 72%);
    animation: tbYtWait 5.5s ease-in-out infinite alternate;
    pointer-events: none;
}

@keyframes tbYtWait {
    from { opacity: .35; transform: scale(1); }
    to   { opacity: 1; transform: scale(1.08) translateX(-2%); }
}

@media (prefers-reduced-motion: reduce) {
    .tbfv .tbfv__slider.is-yt::before { animation: none; opacity: .7; }
}

.tbfv .tbfv__yt-trigger {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}

/* サーバー内の動画を背景に表示（TCDテーマオプション type2）：再生開始で黒からフェードイン */
.tbfv .tbfv__slider .tbfv__video {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 50%;
    background: transparent;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.6s ease;
}

.tbfv .tbfv__slider .tbfv__video.is-playing { opacity: 1; }

/* 1枚のみでループする場合（ゆっくり拡大・縮小を連続ループ） */
.tbfv__slider.is-single .tbfv__slide,
.tbfv__slide.is-single {
    opacity: 1;
    animation: none;
}

.tbfv__slider.is-single .tbfv__slide img,
.tbfv__slide.is-single img {
    transform-origin: 52% 46%;
    animation: tbKenSingle 14s ease-in-out infinite alternate;
}

@keyframes tbKenSingle {
    0% {
        transform: scale(1);
    }
    100% {
        transform: scale(1.15);
    }
}


/* 画像が未配置のときも成立する光跡 */
.tbfv__streaks {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
    mask-image: linear-gradient(180deg, transparent, #000 20%, #000 74%, transparent);
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 20%, #000 74%, transparent);
}

.tbfv__streaks i {
    position: absolute;
    left: -40%;
    top: var(--t);
    width: 34%;
    height: 2px;
    border-radius: 99px;
    background: linear-gradient(90deg, transparent, var(--cl, rgba(255, 138, 212, .8)), transparent);
    filter: blur(.4px);
    transform: skewX(-22deg);
    opacity: 0;
    animation: tbStreak var(--d, 7s) linear var(--dl, 0s) infinite;
}

@keyframes tbStreak {
    0%   { transform: translateX(0) skewX(-22deg); opacity: 0; }
    14%  { opacity: .8; }
    72%  { opacity: .5; }
    100% { transform: translateX(420%) skewX(-22deg); opacity: 0; }
}

/* --- 覆い --- */
.tbfv__scrim {
    grid-column: 1;
    grid-row: 1 / -1;
    position: relative;
    z-index: 2;
    background:
        linear-gradient(180deg, rgba(6, 7, 11, .55) 0%, rgba(6, 7, 11, .1) 26%, rgba(6, 7, 11, .48) 68%, rgba(6, 7, 11, .82) 100%),
        linear-gradient(96deg, rgba(6, 7, 11, .66) 0%, rgba(6, 7, 11, .16) 54%, rgba(6, 7, 11, .02) 100%);
    pointer-events: none;
}

.tbfv__grain {
    grid-column: 1;
    grid-row: 1 / -1;
    position: relative;
    z-index: 2;
    background-image: var(--tbn-noise);
    opacity: .05;
    mix-blend-mode: overlay;
    pointer-events: none;
}

/* --- キャッチコピー（画像上） --- */
.tbfv__head {
    grid-column: 1;
    grid-row: 1;
    z-index: 4;
    display: flex;
    align-items: flex-end;
    padding-top: 150px;
}

.tbfv__title {
    margin: 0;
    font-family: var(--tbn-mincho);
    font-weight: 800;
    font-size: clamp(2.9rem, 8.8vw, 7.8rem);
    line-height: 1.02;
    letter-spacing: .01em;
    color: #fff;
    text-shadow: 0 18px 60px rgba(0, 0, 0, .5);
}

.tbfv__title .l { display: block; overflow: hidden; }

.tbfv__title .l > span {
    display: block;
    transform: translateY(110%);
    animation: tbUp 1.15s cubic-bezier(.16, 1, .3, 1) forwards;
}

.tbfv__title .l:nth-child(1) > span { animation-delay: .2s; }
.tbfv__title .l:nth-child(2) > span { animation-delay: .36s; }

.tbfv__title em {
    font-style: normal;
    background: linear-gradient(100deg, #ff8ad4 0%, #d69bff 52%, #a99bff 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

@keyframes tbUp { to { transform: translateY(0); } }

.tbfv__sp-sub { display: none; }

/* --- リード＋ボタン --- */
.tbfv__body {
    grid-column: 1;
    grid-row: 2;
    z-index: 4;
    padding: clamp(24px, 3vw, 34px) 0 clamp(86px, 11vh, 140px);
}

.tbfv__lead,
.tbfv__cta {
    opacity: 0;
    animation: tbFade 1s ease .75s forwards;
}

.tbfv__cta { animation-delay: .9s; }

@keyframes tbFade {
    from { opacity: 0; transform: translateY(18px); }
    to   { opacity: 1; transform: none; }
}

.tbfv__lead {
    max-width: 32em;
    margin: 0 0 clamp(24px, 3vw, 34px);
    font-size: clamp(13px, 1.25vw, 15.5px);
    line-height: 2.15;
    letter-spacing: .045em;
    color: #dcdfe8;
    text-shadow: 0 2px 16px rgba(0, 0, 0, .45);
}

.tbfv__cta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin: 0;
}

/* --- 縦のレール／スクロール表示 --- */
.tbfv__rail {
    position: absolute;
    z-index: 5;
    right: clamp(16px, 3vw, 42px);
    top: 50%;
    transform: translateY(-50%);
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    font-size: 9.5px;
    letter-spacing: .32em;
    color: rgba(255, 255, 255, .6);
    writing-mode: vertical-rl;
}

.tbfv__rail::after {
    content: "";
    width: 1px;
    height: 84px;
    background: linear-gradient(180deg, rgba(255, 255, 255, .5), transparent);
}

.tbfv__scroll {
    position: absolute;
    z-index: 5;
    left: 5%;
    bottom: clamp(38px, 5vw, 58px);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 9px;
    letter-spacing: .3em;
    color: rgba(255, 255, 255, .7);
}

.tbfv__scroll::after {
    content: "";
    width: 54px;
    height: 1px;
    background: rgba(255, 255, 255, .45);
    animation: tbScroll 2.4s ease-in-out infinite;
    transform-origin: left;
}

@keyframes tbScroll {
    0%   { transform: scaleX(0); opacity: 0; }
    35%  { transform: scaleX(1); opacity: 1; }
    100% { transform: scaleX(1); opacity: 0; transform-origin: right; }
}

/* ======================================================================
   3. 共通パーツ
====================================================================== */
.tbc {
    width: min(1240px, 88%);
    margin: 0 auto;
    position: relative;
    z-index: 2;
}

.tb-sec {
    position: relative;
    padding: clamp(84px, 11.5vw, 160px) 0;
}

.tb-sec--tint { background: var(--tbn-bg2); }

.tb-label {
    display: flex;
    align-items: center;
    gap: .9em;
    margin: 0 0 clamp(18px, 2.4vw, 26px);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .3em;
    color: var(--tbn-pink);
}

.tb-label::before {
    content: "";
    width: clamp(24px, 4vw, 52px);
    height: 1px;
    background: var(--tbn-grad);
}

.tb-h2 {
    margin: 0 0 clamp(22px, 3vw, 32px);
    font-family: var(--tbn-mincho);
    font-weight: 800;
    font-size: clamp(1.65rem, 3.9vw, 3.05rem);
    line-height: 1.55;
    letter-spacing: .035em;
    color: var(--tbn-ink);
}

.tb-h2 em {
    font-style: normal;
    background: var(--tbn-grad-t);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-p {
    margin: 0;
    font-size: clamp(13px, 1.25vw, 15px);
    line-height: 2.25;
    letter-spacing: .045em;
    color: var(--tbn-body);
}

.tb-p b { color: var(--tbn-ink); font-weight: 700; }

.tb-ghost {
    position: absolute;
    z-index: 0;
    font-family: var(--tbn-en);
    font-weight: 300;
    font-size: clamp(4.5rem, 15vw, 15rem);
    line-height: .8;
    letter-spacing: .02em;
    color: rgba(12, 13, 18, .045);
    pointer-events: none;
    user-select: none;
    white-space: nowrap;
}

/* ボタン */
.tb-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .8em;
    min-width: 210px;
    padding: 1.15em 2em;
    border-radius: 99px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .1em;
    line-height: 1;
    position: relative;
    overflow: hidden;
    transition: transform .35s cubic-bezier(.16, 1, .3, 1), box-shadow .35s ease, color .3s ease, border-color .3s ease, background-color .3s ease;
}

.tb-btn span { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: .7em; }

.tb-btn--fill,
.tb-btn--fill:link,
.tb-btn--fill:visited,
.tb-btn--fill:hover,
.tb-btn--fill:active,
.tb-btn--fill span {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
}

.tb-btn--fill {
    background: linear-gradient(105deg, #cc1166 0%, #8f17a8 48%, #4f21cc 100%);
    box-shadow: 0 16px 36px -14px rgba(204, 17, 102, .85);
    border: 1px solid rgba(255, 255, 255, .3);
}

.tb-btn--fill span {
    text-shadow: 0 1px 3px rgba(0, 0, 0, .65);
}

.tb-btn--fill::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, #4f21cc 0%, #cc1166 100%);
    opacity: 0;
    transition: opacity .4s ease;
}

.tb-btn--fill:hover {
    transform: translateY(-3px);
    box-shadow: 0 22px 46px -14px rgba(204, 17, 102, .95);
    border-color: rgba(255, 255, 255, .55);
}
.tb-btn--fill:hover::after { opacity: 1; }

.tb-ico-tel {
    width: 1.15em;
    height: 1.15em;
    flex-shrink: 0;
    fill: currentColor;
}

.tb-btn--ghost {
    color: var(--tbn-ink);
    border: 1px solid var(--tbn-line);
    background: #fff;
}

.tb-btn--ghost:hover {
    transform: translateY(-3px);
    border-color: var(--tbn-pink);
    color: var(--tbn-pink);
}

.tb-btn--line,
.tb-btn--line:hover,
.tb-btn--line:visited,
.tb-btn--line span {
    color: #fff !important;
}

.tb-btn--line {
    background: #06c755;
    box-shadow: 0 16px 34px -18px rgba(6, 199, 85, .9);
}

.tb-btn--line:hover { transform: translateY(-3px); background: #05b34c; }

/* LINE ロゴ（白い吹き出しの中に緑で LINE の文字が抜ける） */
.tb-ico-line {
    width: 1.7em;
    height: 1.7em;
    margin-right: -.15em;
    flex: none;
    fill: currentColor;
}

.tb-btn--sm { min-width: 0; padding: .95em 1.7em; font-size: 12px; }

/* 旧テーマ側で「デスクトップでは tel: リンクをクリック不可にする」設定が
   sitewide に入っているため、配車導線の主要CTAボタンだけは明示的に解除する。 */
a.tb-btn[href^="tel:"] { pointer-events: auto !important; }

/* テキストリンク */
.tb-more {
    display: inline-flex;
    align-items: center;
    gap: .9em;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .16em;
    color: var(--tbn-ink);
    transition: color .3s ease, gap .3s ease;
}

.tb-more::after {
    content: "";
    width: 44px;
    height: 1px;
    background: var(--tbn-grad);
    transition: width .35s cubic-bezier(.16, 1, .3, 1);
}

.tb-more:hover { color: var(--tbn-pink); gap: 1.3em; }
.tb-more:hover::after { width: 64px; }

/* スクロールリビール */
.tb-rv {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .95s cubic-bezier(.16, 1, .3, 1), transform .95s cubic-bezier(.16, 1, .3, 1);
    transition-delay: var(--dl, 0s);
    will-change: opacity, transform;
}

.tb-rv.is-in { opacity: 1; transform: none; }

/* 画像プレースホルダ（撮影素材が入るまでのフォールバック） */
.tb-figure {
    position: relative;
    overflow: hidden;
    background: linear-gradient(140deg, #eceef3, #f6f6f9 52%, #f2eaf6);
}

.tb-figure img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s cubic-bezier(.16, 1, .3, 1), opacity .4s ease;
}

.tb-figure.is-empty img { opacity: 0; }

.tb-figure.is-empty::before {
    content: attr(data-ph);
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-family: var(--tbn-en);
    font-size: clamp(1.5rem, 2.6vw, 2.4rem);
    letter-spacing: .2em;
    color: rgba(12, 13, 18, .13);
}

/* ======================================================================
   4. CONCEPT
====================================================================== */
.tb-concept { background: var(--tbn-bg); overflow: hidden; }
.tb-concept .tb-ghost { top: 5%; left: -2%; }

.tb-concept__grid {
    display: grid;
    grid-template-columns: 1fr minmax(0, 1.45fr);
    gap: clamp(30px, 6vw, 84px);
    align-items: start;
}

.tb-concept__lead {
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.5rem, 3.3vw, 2.7rem);
    line-height: 1.85;
    letter-spacing: .04em;
    color: var(--tbn-ink);
    margin: 0 0 clamp(26px, 3vw, 38px);
}

.tb-concept__lead em {
    font-style: normal;
    background: var(--tbn-grad-t);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-concept__side { position: sticky; top: 120px; }

.tb-concept__fig {
    aspect-ratio: 3 / 4;
    border-radius: 3px;
}

.tb-concept__cap {
    margin: 16px 0 0;
    font-size: 10.5px;
    letter-spacing: .2em;
    color: var(--tbn-dim);
}

.tb-concept__sign {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6em 1.2em;
    margin-top: clamp(30px, 4vw, 44px);
    padding-top: clamp(22px, 3vw, 32px);
    border-top: 1px solid var(--tbn-line-soft);
}

.tb-concept__sign b {
    font-family: var(--tbn-mincho);
    font-size: clamp(1rem, 1.6vw, 1.3rem);
    letter-spacing: .12em;
    color: var(--tbn-ink);
    font-weight: 700;
}

.tb-concept__sign span {
    font-size: 11.5px;
    letter-spacing: .12em;
    color: var(--tbn-mute);
}

/* ======================================================================
   5. REASON
====================================================================== */
.tb-reason { background: var(--tbn-bg2); overflow: hidden; }

.tb-reason__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 30px;
    flex-wrap: wrap;
    margin-bottom: clamp(36px, 5vw, 66px);
}

.tb-reason__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(20px, 2.5vw, 32px);
}

.tb-reason-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid var(--tbn-line-soft);
    border-radius: 4px;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(12, 13, 18, .04);
    transition: transform .5s cubic-bezier(.16, 1, .3, 1), box-shadow .5s ease, border-color .4s ease;
}

.tb-reason-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 44px -16px rgba(255, 79, 168, .2), 0 12px 28px -12px rgba(12, 13, 18, .08);
    border-color: rgba(255, 138, 196, .5);
}

.tb-reason-card__fig {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: #0a0b11;
    margin: 0;
}

.tb-reason-card__fig img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .7s cubic-bezier(.16, 1, .3, 1);
}

.tb-reason-card:hover .tb-reason-card__fig img {
    transform: scale(1.06);
}

.tb-reason-card__num {
    position: absolute;
    bottom: 12px;
    right: 18px;
    font-family: var(--tbn-en);
    font-size: 3.2rem;
    font-weight: 300;
    line-height: .8;
    color: rgba(255, 255, 255, .95);
    text-shadow: 0 2px 14px rgba(0, 0, 0, .7);
    pointer-events: none;
    letter-spacing: .02em;
}

.tb-reason-card__body {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    padding: clamp(22px, 2.6vw, 32px);
}

.tb-reason-card__en {
    display: inline-block;
    font-family: var(--tbn-en);
    font-size: 11px;
    letter-spacing: .24em;
    color: var(--tbn-pink);
    margin-bottom: 8px;
}

.tb-reason-card__t {
    margin: 0 0 16px;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.2rem, 1.5vw, 1.42rem);
    line-height: 1.55;
    letter-spacing: .04em;
    color: var(--tbn-ink);
}

.tb-reason-card__d {
    margin: 0 0 22px;
    font-size: 13px;
    line-height: 2.05;
    letter-spacing: .03em;
    color: var(--tbn-body);
}

.tb-reason-card__d b {
    color: var(--tbn-ink);
}

.tb-reason-card__action {
    margin-top: auto;
    padding-top: 10px;
}

.tb-reason-card__btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 13px 20px;
    border: 1px solid var(--tbn-line);
    border-radius: 99px;
    background: #ffffff;
    color: var(--tbn-ink);
    font-size: 13.5px;
    font-weight: 700;
    letter-spacing: .08em;
    text-decoration: none;
    box-sizing: border-box;
    transition: all .35s cubic-bezier(.16, 1, .3, 1);
}

.tb-reason-card__btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--tbn-bg2);
    color: var(--tbn-body);
    transition: all .35s cubic-bezier(.16, 1, .3, 1);
}

.tb-reason-card__btn-arrow svg {
    width: 13px;
    height: 13px;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
    fill: none;
    transition: transform .35s cubic-bezier(.16, 1, .3, 1);
}

.tb-reason-card__btn:hover {
    border-color: var(--tbn-pink);
    color: var(--tbn-pink);
    background: #fff;
    transform: translateY(-2px);
    box-shadow: 0 10px 24px -8px rgba(226, 35, 127, .25);
}

.tb-reason-card__btn:hover .tb-reason-card__btn-arrow {
    background: var(--tbn-pink);
    color: #fff;
}

.tb-reason-card__btn:hover .tb-reason-card__btn-arrow svg {
    transform: translateX(2px);
}

.tb-reason-card__line {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 3px;
    background: var(--tbn-grad);
    transition: width .6s cubic-bezier(.16, 1, .3, 1);
}

.tb-reason-card:hover .tb-reason-card__line {
    width: 100%;
}

@media (max-width: 860px) {
    .tb-reason__grid {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .tb-reason-card__t br {
        display: none;
    }
}

/* ======================================================================
   6. SCENE
====================================================================== */
.tb-scene { background: var(--tbn-bg); overflow: hidden; }
.tb-scene .tb-ghost { right: -2%; bottom: 3%; }

.tb-scene__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(24px, 3vw, 44px);
    margin-top: clamp(36px, 5vw, 60px);
}

.tb-card {
    position: relative;
    display: block;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--tbn-line-soft);
    cursor: default;
}

.tb-card__fig {
    aspect-ratio: 16 / 10.5;
    margin-bottom: clamp(16px, 2vw, 22px);
    border-radius: 3px;
}

.tb-card__no {
    display: block;
    margin-bottom: .9em;
    font-family: var(--tbn-en);
    font-size: 13px;
    letter-spacing: .22em;
    color: var(--tbn-pink);
}

.tb-card__t {
    margin: 0 0 .8em;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1rem, 1.5vw, 1.3rem);
    line-height: 1.6;
    letter-spacing: .04em;
    color: var(--tbn-ink);
}

.tb-card__d {
    margin: 0;
    font-size: 12.5px;
    line-height: 2.05;
    letter-spacing: .04em;
    color: var(--tbn-body);
}

/* ======================================================================
   7. AREA（ページ内で唯一の反転セクション）
====================================================================== */
.tb-area {
    position: relative;
    background: #0a0b11;
    color: #b6bbc9;
    overflow: hidden;
}

.tb-area::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px);
    background-size: 62px 62px;
    -webkit-mask-image: radial-gradient(72% 62% at 50% 45%, #000, transparent 80%);
    mask-image: radial-gradient(72% 62% at 50% 45%, #000, transparent 80%);
}

.tb-area::after {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    background:
        radial-gradient(58% 68% at 88% 12%, rgba(255, 79, 168, .26), transparent 62%),
        radial-gradient(56% 66% at 8% 88%, rgba(106, 63, 240, .3), transparent 64%);
    pointer-events: none;
}

.tb-area .tb-label { color: #ff8ac4; }
.tb-area .tb-h2 { color: #fff; }
.tb-area .tb-h2 em {
    background: linear-gradient(100deg, #ff8ad4 0%, #d69bff 52%, #a99bff 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
.tb-area .tb-p { color: #b6bbc9; }

/* ---- 1. 重点待機・配車エリア（KEY AREA） ---- */
.tb-keyarea__head {
    margin-top: clamp(44px, 6vw, 74px);
    padding-top: clamp(26px, 3.4vw, 38px);
    border-top: 1px solid rgba(255, 255, 255, .12);
}

.tb-keyarea__kicker {
    display: inline-block;
    font-family: var(--tbn-en);
    font-size: 12px;
    letter-spacing: .3em;
    color: #ff8ac4;
}

.tb-keyarea__title {
    margin: .5em 0 0;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.4rem, 2.6vw, 2rem);
    letter-spacing: .08em;
    line-height: 1.5;
    color: #fff;
}

.tb-keyarea__lead {
    margin: .9em 0 0;
    max-width: 40em;
    font-size: 13.5px;
    letter-spacing: .04em;
    line-height: 2;
    color: #b6bbc9;
}

.tb-keyarea__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(18px, 2.2vw, 28px);
    margin-top: clamp(26px, 3.4vw, 40px);
}

.tb-keyarea {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: rgba(10, 11, 17, .72);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 3px;
    transition: border-color .45s ease, transform .6s cubic-bezier(.16, 1, .3, 1), box-shadow .6s ease;
}

.tb-keyarea:hover {
    border-color: rgba(255, 138, 196, .5);
    transform: translateY(-4px);
    box-shadow: 0 28px 50px -34px rgba(255, 79, 168, .55);
}

.tb-keyarea__fig {
    aspect-ratio: 16 / 10;
    background: linear-gradient(140deg, #161824, #0d0e16 54%, #1b1029);
}

.tb-keyarea:hover .tb-keyarea__fig img { transform: scale(1.06); }

.tb-keyarea__fig.is-empty::before {
    color: rgba(255, 255, 255, .16);
    font-size: clamp(1.2rem, 2.2vw, 1.9rem);
}

.tb-keyarea__fig::after {
    content: "";
    position: absolute;
    z-index: 1;
    inset: 0;
    background: linear-gradient(180deg, rgba(10, 11, 17, 0) 38%, rgba(10, 11, 17, .78) 100%);
    pointer-events: none;
}

.tb-keyarea__body {
    flex: 1;
    padding: clamp(22px, 2.4vw, 32px);
}

.tb-keyarea__en {
    margin: 0;
    font-family: var(--tbn-en);
    font-size: clamp(1.35rem, 2.4vw, 1.85rem);
    letter-spacing: .2em;
    line-height: 1;
    background: linear-gradient(100deg, #ff8ad4 0%, #d69bff 52%, #a99bff 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-keyarea__jp {
    margin: .7em 0 0;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.05rem, 1.7vw, 1.25rem);
    letter-spacing: .07em;
    line-height: 1.6;
    color: #fff;
}

.tb-keyarea__d {
    margin: 1em 0 0;
    font-size: 13px;
    letter-spacing: .03em;
    line-height: 2;
    color: #b6bbc9;
}

.tb-keyarea__spots {
    margin: 1.3em 0 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.tb-keyarea__spots li {
    font-size: 11px;
    letter-spacing: .06em;
    color: #cfd3de;
    padding: .35em .75em;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 3px;
    background: rgba(255, 255, 255, .035);
}

.tb-keyarea__line {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 2px;
    background: var(--tbn-grad);
    transition: width .6s cubic-bezier(.16, 1, .3, 1);
}

.tb-keyarea:hover .tb-keyarea__line { width: 100%; }

/* 旧クラス（下層ページで使用中の .tb-area__spots）互換 */
.tb-area__spots {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.tb-area__spots li {
    font-size: 11.5px;
    letter-spacing: .06em;
    color: #cfd3de;
    padding: .4em .85em;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 3px;
    background: rgba(255, 255, 255, .035);
}

/* ---- 2. 連動対応エリア（COVER AREA） ---- */
.tb-cover {
    margin-top: clamp(30px, 4vw, 46px);
    padding: clamp(28px, 3.4vw, 44px);
    background: rgba(255, 255, 255, .04);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 3px;
}

.tb-cover__kicker {
    margin: 0;
    font-family: var(--tbn-en);
    font-size: 12px;
    letter-spacing: .3em;
    color: #ff8ac4;
}

.tb-cover__title {
    margin: .6em 0 0;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.15rem, 2.1vw, 1.6rem);
    letter-spacing: .07em;
    line-height: 1.75;
    color: #fff;
}

.tb-cover__title em {
    font-style: normal;
    background: linear-gradient(100deg, #ff8ad4 0%, #d69bff 52%, #a99bff 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-cover__d {
    margin: 1.1em 0 0;
    max-width: 46em;
    font-size: 13.5px;
    letter-spacing: .04em;
    line-height: 2.1;
    color: #b6bbc9;
}

.tb-cover__tags {
    margin: clamp(18px, 2.2vw, 26px) 0 0;
    padding: clamp(18px, 2.2vw, 26px) 0 0;
    border-top: 1px solid rgba(255, 255, 255, .1);
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.tb-cover__tags li {
    font-size: 11.5px;
    letter-spacing: .06em;
    color: #cfd3de;
    padding: .4em .85em;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 3px;
    background: rgba(255, 255, 255, .035);
    transition: border-color .35s ease, color .35s ease, background-color .35s ease;
}

.tb-cover__tags li:hover {
    border-color: rgba(255, 138, 196, .45);
    background: rgba(255, 79, 168, .1);
    color: #fff;
}

.tb-area__note {
    margin: clamp(22px, 3vw, 32px) 0 0;
    font-size: 12px;
    letter-spacing: .04em;
    line-height: 2;
    color: #8b909e;
}

/* ======================================================================
   8. PRICE
====================================================================== */
.tb-price { background: var(--tbn-bg); overflow: hidden; }
.tb-price .tb-ghost { top: 7%; right: 0; }

.tb-price__wrap {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 1px;
    margin-top: clamp(36px, 5vw, 58px);
    background: var(--tbn-line-soft);
    border: 1px solid var(--tbn-line-soft);
    border-radius: 3px;
    overflow: hidden;
}

.tb-price__hero {
    padding: clamp(32px, 4vw, 54px);
    background:
        radial-gradient(95% 85% at 15% 0%, rgba(226, 35, 127, .10), transparent 62%),
        radial-gradient(85% 80% at 100% 100%, rgba(106, 63, 240, .10), transparent 62%),
        #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.tb-price__hero span {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .24em;
    color: var(--tbn-pink);
    margin-bottom: 1.4em;
}

.tb-price__big {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: .12em;
    margin: 0;
    font-family: var(--tbn-en);
    font-size: clamp(3.4rem, 7.5vw, 5.8rem);
    line-height: 1;
    color: var(--tbn-ink);
}

.tb-price__big i {
    font-style: normal;
    font-size: .3em;
    letter-spacing: .06em;
    font-family: var(--tbn-jp);
    color: var(--tbn-body);
    margin-left: .4em;
    white-space: nowrap;
}

.tb-price__sub {
    margin: 1.4em 0 0;
    font-size: 13px;
    line-height: 2;
    letter-spacing: .05em;
    color: var(--tbn-body);
}

.tb-price__table {
    background: #fff;
    padding: clamp(10px, 1.5vw, 16px) clamp(22px, 3vw, 42px);
}

.tb-price__table dl {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1.5em;
    margin: 0;
    padding: clamp(14px, 1.6vw, 19px) 0;
    border-bottom: 1px dashed var(--tbn-line-soft);
}

.tb-price__table dl:last-child { border-bottom: 0; }

.tb-price__table dt {
    font-size: 12.5px;
    letter-spacing: .08em;
    color: var(--tbn-body);
    white-space: nowrap;
}

.tb-price__table dd {
    margin: 0;
    text-align: right;
    font-size: clamp(13px, 1.5vw, 15.5px);
    letter-spacing: .03em;
    color: var(--tbn-ink);
    font-weight: 500;
}

.tb-price__table dd em {
    font-style: normal;
    font-family: var(--tbn-en);
    font-size: 1.4em;
    color: var(--tbn-pink);
    margin-right: .1em;
}

.tb-price__foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-top: clamp(24px, 3vw, 36px);
}

.tb-promise {
    margin: 0;
    max-width: 46em;
    font-size: 12.5px;
    line-height: 2.05;
    letter-spacing: .04em;
    color: var(--tbn-body);
}

.tb-promise b {
    color: var(--tbn-ink);
    font-weight: 700;
    white-space: nowrap;
}

/* ======================================================================
   9. FAQ
====================================================================== */
.tb-faq { background: var(--tbn-bg2); }

.tb-faq__grid {
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.4fr);
    gap: clamp(30px, 6vw, 80px);
    align-items: start;
}

.tb-acc {
    border-top: 1px solid var(--tbn-line-soft);
    background: #fff;
    border-radius: 3px;
    padding: 0 clamp(18px, 2.2vw, 30px);
    border: 1px solid var(--tbn-line-soft);
}

.tb-acc details { border-bottom: 1px solid var(--tbn-line-soft); }
.tb-acc details:last-child { border-bottom: 0; }

.tb-acc summary {
    display: flex;
    align-items: center;
    gap: 1em;
    padding: clamp(20px, 2.3vw, 27px) 46px clamp(20px, 2.3vw, 27px) 0;
    position: relative;
    cursor: pointer;
    list-style: none;
    font-size: clamp(13px, 1.35vw, 15px);
    font-weight: 700;
    letter-spacing: .05em;
    line-height: 1.7;
    color: var(--tbn-ink);
    transition: color .3s ease;
}

.tb-acc summary::-webkit-details-marker { display: none; }
.tb-acc summary:hover { color: var(--tbn-pink); }

.tb-acc summary::before {
    content: "Q";
    font-family: var(--tbn-en);
    font-size: 1.5em;
    line-height: 1;
    background: var(--tbn-grad-t);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-acc summary::after {
    content: "";
    position: absolute;
    right: 6px;
    top: 50%;
    width: 13px;
    height: 1px;
    background: var(--tbn-ink);
    opacity: .55;
}

.tb-acc .tb-acc__i {
    position: absolute;
    right: 6px;
    top: 50%;
    width: 13px;
    height: 1px;
    background: var(--tbn-ink);
    opacity: .55;
    transform: rotate(90deg);
    transition: transform .4s ease, opacity .4s ease;
}

.tb-acc details[open] .tb-acc__i { transform: rotate(0deg); opacity: 0; }

.tb-acc details > div {
    padding: 0 46px clamp(22px, 2.4vw, 28px) calc(1em + .85em);
    font-size: 13px;
    line-height: 2.15;
    letter-spacing: .04em;
    color: var(--tbn-body);
    animation: tbFade .5s ease;
}

/* ======================================================================
   10. CREW / RECRUIT（ダーク帯：ページ内で唯一の反転セクション）
====================================================================== */
.tb-crew {
    position: relative;
    padding: clamp(84px, 11.5vw, 156px) 0;
    overflow: hidden;
    background: #0a0b11;
    color: #d5d8e2;
}

.tb-crew::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(72% 90% at 82% 38%, rgba(106, 63, 240, .38), transparent 62%),
        radial-gradient(62% 80% at 12% 72%, rgba(255, 79, 168, .26), transparent 64%);
    pointer-events: none;
}

.tb-crew::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: var(--tbn-noise);
    opacity: .05;
    mix-blend-mode: overlay;
    pointer-events: none;
}

.tb-crew .tb-label { color: #ff8ac4; }
.tb-crew .tb-p { color: #b6bbc9; }
.tb-crew .tb-p b { color: #fff; }

.tb-crew__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, .92fr);
    gap: clamp(30px, 5vw, 78px);
    align-items: center;
}

.tb-crew__copy {
    margin: 0 0 clamp(22px, 3vw, 30px);
    font-family: var(--tbn-mincho);
    font-weight: 800;
    font-size: clamp(1.7rem, 4.2vw, 3.1rem);
    line-height: 1.55;
    letter-spacing: .04em;
    color: #fff;
}

.tb-crew__copy em {
    font-style: normal;
    background: linear-gradient(100deg, #ff8ad4 0%, #d69bff 52%, #a99bff 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tb-crew__cta { margin: clamp(28px, 3.5vw, 40px) 0 0; }

.tb-crew .tb-btn--ghost {
    color: #fff;
    background: rgba(255, 255, 255, .05);
    border-color: rgba(255, 255, 255, .3);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}

.tb-crew .tb-btn--ghost:hover {
    color: #ff8ac4;
    border-color: #ff8ac4;
}

.tb-crew__fig {
    aspect-ratio: 4 / 3.3;
    border-radius: 3px;
    background: linear-gradient(140deg, #1a1c25, #0d0e15 55%, #1d1526);
    box-shadow: 0 40px 90px -50px rgba(0, 0, 0, .9);
}

.tb-crew__fig.is-empty::before { color: rgba(255, 255, 255, .12); }

/* ======================================================================
   11. NEWS
====================================================================== */
.tb-news { background: var(--tbn-bg); }

.tb-news__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 24px;
    margin-bottom: clamp(28px, 4vw, 44px);
}

.tb-news__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(18px, 2.4vw, 34px);
}

.tb-news__item {
    display: block;
    border-top: 1px solid var(--tbn-line);
    padding-top: 20px;
    transition: border-color .4s ease;
}

.tb-news__item:hover { border-top-color: var(--tbn-pink); }

.tb-news__thumb {
    aspect-ratio: 16 / 10;
    margin-bottom: 18px;
    border-radius: 6px;
    background: #f8f9fc;
    border: 1px solid rgba(12, 13, 18, .06);
}

.tb-news__thumb img {
    object-fit: contain !important;
    width: 100% !important;
    height: 100% !important;
    padding: 8px;
    box-sizing: border-box;
}

.tb-news__item:hover .tb-figure img { transform: scale(1.05); }

.tb-news__meta {
    display: flex;
    align-items: center;
    gap: 1em;
    margin-bottom: .8em;
    font-family: var(--tbn-en);
    font-size: 13px;
    letter-spacing: .16em;
    color: var(--tbn-mute);
}

.tb-news__t {
    margin: 0;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.85;
    letter-spacing: .04em;
    color: var(--tbn-ink);
    transition: color .3s ease;
}

.tb-news__item:hover .tb-news__t { color: var(--tbn-pink); }

/* ======================================================================
   12. CONTACT
====================================================================== */
.tb-contact {
    position: relative;
    padding: clamp(84px, 10.5vw, 150px) 0;
    overflow: hidden;
    background:
        radial-gradient(75% 70% at 50% 15%, rgba(226, 35, 127, .20), transparent 65%),
        linear-gradient(180deg, rgba(10, 12, 20, .76) 0%, rgba(8, 10, 16, .90) 100%),
        var(--tb-contact-bg, url(img/contact-bg.jpg)) center center / cover no-repeat;
    border-top: 1px solid rgba(255, 255, 255, .1);
    text-align: center;
}

.tb-contact .tbc {
    position: relative;
    z-index: 2;
}

.tb-contact::before {
    display: none;
}

.tb-contact .tb-label { justify-content: center; }
.tb-contact .tb-label::after {
    content: "";
    width: clamp(24px, 4vw, 52px);
    height: 1px;
    background: var(--tbn-grad);
}

.tb-contact__h {
    margin: 0 0 clamp(16px, 2vw, 22px);
    font-family: var(--tbn-mincho);
    font-weight: 800;
    font-size: clamp(1.5rem, 3.6vw, 2.65rem);
    line-height: 1.6;
    letter-spacing: .05em;
    color: #ffffff;
    text-shadow: 0 2px 24px rgba(0, 0, 0, .6);
}

.tb-contact__p {
    margin: 0 auto clamp(32px, 4.2vw, 48px);
    max-width: 40em;
    font-size: 13.5px;
    line-height: 2.15;
    letter-spacing: .05em;
    color: #d0d4e4;
    text-shadow: 0 1px 12px rgba(0, 0, 0, .5);
}

.tb-contact__tel {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: .35em;
    margin-bottom: clamp(26px, 3.4vw, 40px);
    font-style: normal;
}

.tb-contact__tel a,
.tb-contact__tel a:link,
.tb-contact__tel a:visited {
    font-family: var(--tbn-en);
    font-weight: 700;
    font-size: clamp(2.6rem, 7vw, 4.8rem);
    line-height: 1;
    letter-spacing: .03em;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff;
    text-shadow: 0 4px 28px rgba(0, 0, 0, .85);
    transition: color .35s ease, transform .35s ease;
}

.tb-contact__tel a:hover {
    color: var(--tbn-pink) !important;
    -webkit-text-fill-color: var(--tbn-pink);
    transform: translateY(-2px);
}

.tb-contact__tel small {
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .24em;
    color: #ffffff !important;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .85);
}

.tb-contact__btns {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px;
}

.tb-contact .tb-btn--ghost {
    background: #ffffff;
    color: #11131a;
    border-color: #ffffff;
    box-shadow: 0 16px 34px -16px rgba(0, 0, 0, .5);
}

.tb-contact .tb-btn--ghost:hover {
    background: var(--tbn-pink);
    border-color: var(--tbn-pink);
    color: #ffffff;
    transform: translateY(-3px);
}

/* ======================================================================
   13. FOOTER（全ページ共通・ダーク）
====================================================================== */
.tbf {
    position: relative;
    background: #0a0b11;
    color: #b6bbc9;
    font-family: var(--tbn-jp);
    overflow: hidden;
    margin: 0;
    padding: 0;
}

.tbf::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(85% 65% at 50% 0%, rgba(106, 63, 240, .18), transparent 66%);
    pointer-events: none;
}

.tbf__top {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, .85fr);
    gap: clamp(34px, 5vw, 68px);
    padding: clamp(54px, 7vw, 88px) 0 clamp(38px, 5vw, 56px);
}

.tbf__brand-logo {
    display: inline-block;
    margin: 0 0 22px;
    max-width: 210px;
}

.tbf__brand-logo img { display: block; width: 100%; height: auto; }

.tbf__brand-name {
    margin: 0 0 20px;
    font-family: var(--tbn-mincho);
    font-weight: 700;
    font-size: clamp(1.05rem, 1.7vw, 1.35rem);
    letter-spacing: .12em;
    color: #fff;
    line-height: 1.6;
}

.tbf__brand-en {
    display: block;
    margin-top: .6em;
    font-family: var(--tbn-en);
    font-size: .72em;
    letter-spacing: .22em;
    color: #7d8291;
    font-weight: 400;
}

.tbf__info {
    margin: 0 0 24px;
    font-size: 12.5px;
    line-height: 2.1;
    letter-spacing: .05em;
    color: #a2a7b5;
    font-style: normal;
}

.tbf__info b { color: #fff; font-weight: 700; }

.tbf__sns { display: flex; flex-wrap: wrap; gap: 10px; }

.tbf__sns a {
    display: inline-flex;
    align-items: center;
    gap: .6em;
    padding: .75em 1.3em;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 99px;
    font-size: 11.5px;
    font-weight: 500;
    letter-spacing: .12em;
    color: #d5d8e2;
    transition: border-color .35s ease, color .35s ease, transform .35s ease;
}

.tbf__sns a:hover { border-color: #ff8ac4; color: #ff8ac4; transform: translateY(-2px); }

.tbf__sns .tb-ico-line { width: 1.35em; height: 1.35em; fill: #06c755; }

.tbf__navttl,
.tbf__ttl {
    margin: 0 0 20px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .26em;
    color: #ff8ac4;
}

.tbf__nav ul,
.tbf .footer-menu-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.tbf__nav li,
.tbf .footer-menu-list li { margin: 0; padding: 0; }

.tbf__nav a,
.tbf .footer-menu-list a {
    position: relative;
    display: inline-block;
    padding: 2px 0;
    font-size: 12.5px;
    letter-spacing: .08em;
    color: #a2a7b5;
    transition: color .3s ease;
}

.tbf__nav a::before,
.tbf .footer-menu-list a::before,
.tbf .footer-menu-list li a::before,
.home ul.footer-menu-list li a::before {
    content: none !important;
    display: none !important;
}

.tbf__nav a::after,
.tbf .footer-menu-list a::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 1px;
    background: linear-gradient(100deg, #ff8ad4, #a99bff);
    transition: width .4s cubic-bezier(.16, 1, .3, 1);
}

.tbf__nav a:hover,
.tbf .footer-menu-list a:hover { color: #fff; }
.tbf__nav a:hover::after,
.tbf .footer-menu-list a:hover::after { width: 100%; }

.tbf__cta-card {
    padding: clamp(24px, 3vw, 32px);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 4px;
    background: linear-gradient(160deg, rgba(255, 79, 168, .14), rgba(106, 63, 240, .1));
}

.tbf__cta-tel,
.tbf__cta-tel:link,
.tbf__cta-tel:visited {
    display: block;
    margin: 0 0 .3em;
    font-family: var(--tbn-en);
    font-weight: 700;
    font-size: clamp(1.9rem, 3.4vw, 2.4rem);
    line-height: 1.05;
    letter-spacing: .02em;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff;
    transition: color .3s ease;
}

.tbf__cta-tel:hover {
    color: #ff8ac4 !important;
    -webkit-text-fill-color: #ff8ac4;
}

.tbf__cta-note {
    margin: 0 0 18px;
    font-size: 11px;
    letter-spacing: .16em;
    color: #7d8291;
}

.tbf__cta-btns {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}

.tbf__cta-btns .tb-btn--line {
    width: 100%;
    justify-content: center;
    box-sizing: border-box;
}

.tbf__btn-insta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .65em;
    width: 100%;
    padding: .95em 1.7em;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 99px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .08em;
    color: #e6e9f2;
    background: rgba(255, 255, 255, .05);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-sizing: border-box;
    transition: border-color .35s ease, background .35s ease, color .35s ease, box-shadow .35s ease, transform .35s ease;
}

.tbf__btn-insta .tb-ico-insta {
    width: 1.35em;
    height: 1.35em;
    fill: currentColor;
    flex-shrink: 0;
}

.tbf__btn-insta:hover {
    border-color: rgba(255, 138, 196, .75);
    color: #ffffff;
    background: linear-gradient(135deg, rgba(225, 48, 108, .35), rgba(131, 58, 180, .28));
    box-shadow: 0 10px 24px -10px rgba(225, 48, 108, .5);
    transform: translateY(-2px);
}

@media (min-width: 641px) and (max-width: 960px) {
    .tbf__cta-btns {
        grid-template-columns: 1fr 1fr;
    }
}

.tbf__bottom {
    position: relative;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 20px 0 24px;
    border-top: 1px solid rgba(255, 255, 255, .1);
}

.tbf__copy {
    margin: 0;
    font-family: var(--tbn-en);
    font-size: 12px;
    letter-spacing: .14em;
    color: #7d8291;
}

.tbf__totop {
    display: inline-flex;
    align-items: center;
    gap: .8em;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .22em;
    color: #7d8291;
    transition: color .3s ease;
}

.tbf__totop:hover { color: #ff8ac4; }

.tbf__totop::before {
    content: "";
    width: 7px;
    height: 7px;
    border-top: 1px solid currentColor;
    border-right: 1px solid currentColor;
    transform: rotate(-45deg);
}

/* ======================================================================
   14. 固定CTAバー（スマホ・ダーク）
====================================================================== */
.tb-bar {
    position: fixed;
    z-index: 9500;
    left: 0;
    bottom: 0;
    width: 100%;
    display: none;
    background: rgba(10, 11, 17, .95);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    border-top: 1px solid rgba(255, 255, 255, .15);
    padding-bottom: env(safe-area-inset-bottom);
    transform: translateY(110%);
    transition: transform .5s cubic-bezier(.16, 1, .3, 1);
    box-shadow: 0 -6px 24px rgba(0, 0, 0, .45);
}

.tb-bar.is-on { transform: none; }

.tb-bar ul {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    margin: 0;
    padding: 0;
    list-style: none;
}

.tb-bar li + li { border-left: 1px solid rgba(255, 255, 255, .12); }

.tb-bar a,
.tb-bar a:link,
.tb-bar a:visited,
.tb-bar a:hover,
.tb-bar a:active {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 10px 4px 11px;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .08em;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    text-shadow: 0 1px 3px rgba(0, 0, 0, .75);
    text-decoration: none !important;
    transition: background-color .2s ease;
}

.tb-bar a:active {
    background-color: rgba(255, 255, 255, .08);
}

.tb-bar a svg {
    width: 20px;
    height: 20px;
    fill: #e8ecf4;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .5));
}
.tb-bar .is-tel svg { fill: #ff8ac4 !important; }
.tb-bar .is-line svg { fill: #06c755 !important; }

/* ======================================================================
   15. レスポンシブ
====================================================================== */
@media only screen and (max-width: 1100px) {
    .tbfv { min-height: clamp(560px, 92svh, 860px); }
    .tbfv__rail { display: none; }
    .tb-scene__grid { grid-template-columns: repeat(3, 1fr); gap: 20px; }
    .tb-keyarea__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tb-price__wrap { grid-template-columns: 1fr; }
    .tb-faq__grid { grid-template-columns: 1fr; }
    .tb-concept__grid { grid-template-columns: 1fr; }
    .tb-concept__side { position: static; order: -1; }
    .tb-concept__fig { aspect-ratio: 16 / 9; }
    .tb-crew__grid { grid-template-columns: 1fr; }
    .tb-crew__fig { order: -1; aspect-ratio: 16 / 9; }
    .tbf__top { grid-template-columns: 1fr 1fr; }
    .tbf__cta-card { grid-column: 1 / -1; }
}

@media only screen and (max-width: 767px) {
    .tbc { width: 88%; }

    /* --- FV（スマホ：6:4の横長画像バナー内にキャッチ＋2行サブテキスト、FV下の本文は削除） --- */
    .tbfv {
        min-height: 0;
        grid-template-rows: auto;
        background: transparent;
    }
    .tbc-fv { width: 88%; }
    .tbfv__slider,
    .tbfv__scrim,
    .tbfv__grain {
        grid-row: 1;
    }
    .tbfv__slider {
        aspect-ratio: 6 / 4;
    }
    .tbfv__scrim {
        background: linear-gradient(180deg, rgba(10, 11, 17, .55) 0%, rgba(10, 11, 17, .25) 30%, rgba(10, 11, 17, .75) 68%, rgba(10, 11, 17, .94) 100%);
    }
    .tbfv__scroll { display: none; }
    .tbfv__head {
        grid-row: 1;
        display: flex;
        align-items: flex-end;
        padding: 0 0 clamp(12px, 3.5vw, 18px);
    }
    .tbfv__title {
        font-size: clamp(2.4rem, 10.6vw, 3.25rem);
        line-height: 1.16;
        letter-spacing: .045em;
        color: #fff;
        text-shadow: 0 4px 20px rgba(0, 0, 0, .75);
    }
    .tbfv__sp-sub {
        display: block !important;
        margin: 10px 0 0;
        font-size: clamp(10.5px, 3.1vw, 12px);
        line-height: 1.68;
        letter-spacing: .03em;
        color: rgba(255, 255, 255, .92);
        text-shadow: 0 2px 10px rgba(0, 0, 0, .9);
        font-weight: 500;
    }
    .tbfv__body {
        display: none !important;
    }

    /* --- セクション --- */
    .tb-sec { padding: 70px 0; }
    .tb-row { grid-template-columns: 1fr; gap: 12px; padding: 28px 0; }
    .tb-row__num { font-size: 3.2rem; }
    .tb-scene__grid { grid-template-columns: 1fr; gap: 26px; }
    .tb-card__fig { aspect-ratio: 16 / 10; }
    .tb-keyarea__grid { grid-template-columns: 1fr; }
    .tb-keyarea__body { padding: 22px; }
    .tb-keyarea__fig { aspect-ratio: 16 / 9; }
    .tb-news__list { grid-template-columns: 1fr; gap: 20px; }
    .tb-news__item { display: grid; grid-template-columns: 112px 1fr; gap: 16px; align-items: center; }
    .tb-news__thumb { margin-bottom: 0; aspect-ratio: 16 / 10 !important; border-radius: 6px; background: #f8f9fc; border: 1px solid rgba(12, 13, 18, .06); }
    .tb-news__thumb img { object-fit: contain !important; width: 100% !important; height: 100% !important; padding: 4px; box-sizing: border-box; }
    .tb-price__hero { padding: 30px 24px; }
    .tb-price__table { padding: 6px 22px; }
    .tb-acc { padding: 0 18px; }
    .tb-acc summary { font-size: 13.5px; }
    .tb-contact__btns .tb-btn { flex: 1 1 100%; }

    /* --- フッター --- */
    .tbf__top { grid-template-columns: 1fr; padding: 48px 0 32px; }
    .tbf__nav ul,
    .tbf .footer-menu-list { grid-template-columns: 1fr 1fr; }
    .tbf__bottom { flex-direction: column; align-items: flex-start; padding-bottom: 20px; }

    /* --- 固定バー --- */
    .tb-bar { display: block; }
    .tbf { padding-bottom: 62px; }
}

@media (prefers-reduced-motion: reduce) {
    .tb-rv { opacity: 1 !important; transform: none !important; }
    .tbfv__title .l > span { transform: none; animation: none; }
    .tbfv__lead, .tbfv__cta { opacity: 1; animation: none; }
    .tbfv__streaks i, .tbfv__slide img { animation: none !important; }
    .tbfv__slide { opacity: 1; animation: none; }
    .tbfv__scroll::after { animation: none; }
}

/* ======================================================================
   16. 下層ページ共通（page-contact / page-faq / page-greeting /
       page-information / page-menu など、固定ページ全般に適用）
   ----------------------------------------------------------------------
   ・style.css 内の旧カラー変数（--tb-* / --font-sub / --font-eng /
     --color-line）をブランドカラーに上書きし、既存の下層ページ用CSS
     （.faq / .price_box / .menu_item / .greeting_* / table.info_tbl /
     .con_* / .wpcf7 など）をそのまま新デザインで使えるようにする。
   ・body 全体の背景（旧テーマの黒背景 #111 が既定値）と、ヘッダーの
     既定背景（同じく黒）を、フロントページと同じ白ベースに統一する。
====================================================================== */

/* --- 旧カラー変数の上書き（角丸を大幅に縮小し、直線的なトンマナへ） --- */
:root {
    --tb-aqua: var(--tbn-pink-l);
    --tb-aqua-light: #ffb6df;
    --tb-aqua-pale: #fdf1f8;
    --tb-aqua-deep: var(--tbn-pink);
    --tb-green: var(--tbn-violet);
    --tb-green-deep: #5631d6;
    --tb-ink: var(--tbn-ink);
    --tb-ink-soft: var(--tbn-body);
    --tb-white: #ffffff;
    --tb-radius: 3px;
    --tb-shadow: 0 30px 60px -40px rgba(12, 13, 18, .35);
    --tb-shadow-sm: 0 18px 36px -26px rgba(12, 13, 18, .3);
    --font-sub: var(--tbn-mincho);
    --font-eng: var(--tbn-en);
    --color-line: #06c755;
}

/* --- ページ全体（下層ページ含む全ページ共通の土台） --------------- */
body {
    background-color: var(--tbn-bg) !important;
    color: var(--tbn-body) !important;
    font-family: var(--tbn-jp) !important;
    font-weight: 400 !important;
}

/* --- ヘッダー（トップ以外は常時：白背景・濃色文字） --------------- */
body:not(.home) .header {
    background: var(--tbn-bg);
}

body:not(.home) .header-bar,
body:not(.home) .header-bar-fixed {
    background: rgba(255, 255, 255, .96) !important;
    -webkit-backdrop-filter: saturate(150%) blur(14px);
    backdrop-filter: saturate(150%) blur(14px);
    border-bottom: 1px solid var(--tbn-line-soft);
    color: var(--tbn-ink) !important;
}

body:not(.home) .header-bar .logo a,
body:not(.home) .header-bar .logo-text,
body:not(.home) .global-nav a {
    color: var(--tbn-ink) !important;
}

body:not(.home) .global-nav a:hover { color: var(--tbn-pink) !important; }

/* --- ページ見出し帯（signage）：背景画像 + ブランドオーバーレイ --- */
.signage {
    position: relative;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
    padding: 168px 0 74px !important;
    overflow: hidden;
}

.signage::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(10, 11, 17, .65) 0%, rgba(10, 11, 17, .84) 100%),
        radial-gradient(85% 130% at 14% 12%, rgba(255, 79, 168, .22), transparent 60%),
        radial-gradient(75% 120% at 86% 88%, rgba(106, 63, 240, .22), transparent 62%);
    pointer-events: none;
    z-index: 1;
}

.signage::after {
    display: none !important;
}

.signage-content,
.header-bar-fixed ~ .signage .signage-content {
    position: relative;
    z-index: 2;
}

.breadcrumb {
    position: relative;
    z-index: 2;
}

.header-bar-fixed ~ .signage { margin-top: 0 !important; }

.signage-title {
    font-family: var(--tbn-mincho) !important;
    font-weight: 800 !important;
    letter-spacing: .06em !important;
}

p.signage-title-sub {
    font-family: var(--tbn-en) !important;
    letter-spacing: .22em !important;
    text-transform: uppercase;
}

/* --- 本文冒頭のページタイトル（post-header） -----------------------
   ページヘッダー（signage）側にタイトルが入っている場合は、本文冒頭の
   見出しと二重表示になるため自動的に非表示にする（:has() 対応ブラウザ）。
   固定ページ編集画面の「ページヘッダー」欄が未入力の場合は、こちらの
   post-title がそのままページの唯一の見出しとして表示される。 ------- */
.post-header { margin: 0 auto 0; }

/* 固定ページ（page.php）でページヘッダー（signage）にタイトルがある場合のみ非表示 */
body.page:has(.signage-content) .post-header { display: none; }

.post-title {
    font-family: var(--tbn-mincho) !important;
    font-weight: 800 !important;
    color: var(--tbn-ink) !important;
    letter-spacing: .05em;
    margin-top: 0 !important;
}

/* --- 単一記事ページ（single.php）の見出し・余白・本文 -------------- */
body.single .main {
    padding-top: clamp(40px, 6vw, 72px) !important;
    padding-bottom: clamp(60px, 8vw, 100px) !important;
}

body.single .main > .inner {
    max-width: 860px;
    width: 90%;
}

body.single .main > .inner > .flex_layout > .primary {
    width: 100%;
    float: none;
    margin: 0 auto;
}

body.single .post-header {
    display: block !important;
    margin: 0 auto clamp(32px, 5vw, 48px) !important;
    padding-bottom: clamp(20px, 3vw, 28px) !important;
    border-bottom: 1px solid var(--tbn-line-soft, rgba(12, 13, 18, .1)) !important;
}

body.single .post-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px !important;
}

body.single .post-meta .post-date {
    font-family: var(--tbn-en);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .12em;
    color: var(--tbn-mute);
}

body.single .post-meta .post-category,
body.single .post-meta .post-category a {
    display: inline-flex;
    align-items: center;
    padding: 3px 12px;
    font-size: 11.5px;
    font-family: var(--tbn-sans);
    letter-spacing: .04em;
    color: var(--tbn-pink, #cf2e6c) !important;
    background: rgba(207, 46, 108, .08);
    border-radius: 999px;
    text-decoration: none;
    font-weight: 600;
}

body.single .post-title {
    font-family: var(--tbn-mincho) !important;
    font-weight: 800 !important;
    font-size: clamp(1.55rem, 3.2vw, 2.3rem) !important;
    line-height: 1.5 !important;
    letter-spacing: .03em !important;
    color: var(--tbn-ink) !important;
    margin: 0 !important;
}

body.single .post-content {
    font-family: var(--tbn-sans);
    font-size: 16px !important;
    line-height: 2.1 !important;
    letter-spacing: .04em;
    color: #2c2f38;
}

body.single .post-content p {
    margin-bottom: 1.9em !important;
}

@media only screen and (max-width: 767px) {
    body.single .main > .inner {
        width: 92%;
    }
    body.single .post-content {
        font-size: 15px !important;
        line-height: 1.95 !important;
    }
}

/* --- 下層ページの本文幅・余白（テーマ既定の content_inner は使わず、
       tb-sec 側で余白を管理する） ---------------------------------- */
.tb-page { width: 100%; }
.tb-page .tb-sec:first-child { padding-top: clamp(56px, 8vw, 100px); }

.tb-page a[href^="tel:"]:not(.tb-btn) {
    color: var(--tbn-ink) !important;
}

/* 旧テーマの ".post-content h2 / h3" が汎用の記事見出しスタイル
   （中央寄せ・茶色・行間広め）を強制してくるため、.tb-h2 を使った
   独自見出し（h2 でも h3 でも）はここで確実に勝たせる。 */
.post-content .tb-h2 {
    text-align: left;
    padding-top: 0;
    font-family: var(--tbn-mincho);
    font-weight: 800;
    font-size: clamp(1.65rem, 3.9vw, 3.05rem);
    line-height: 1.55;
    letter-spacing: .035em;
    color: var(--tbn-ink);
    margin-bottom: clamp(22px, 3vw, 32px);
}

/* --- お問い合わせ：連絡手段カード ----------------------------------- */
.tb-info-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px;
    background: var(--tbn-line-soft);
    border: 1px solid var(--tbn-line-soft);
    border-radius: 3px;
    overflow: hidden;
}

.tb-info-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 14px;
    padding: clamp(34px, 4vw, 48px) clamp(20px, 3vw, 30px);
    background: #fff;
}

.tb-info-card__label {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .24em;
    color: var(--tbn-pink);
}

.tb-info-card__value {
    font-family: var(--tbn-en);
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    color: var(--tbn-ink);
    line-height: 1.2;
}

.tb-info-card__note {
    margin: 0;
    font-size: 12px;
    line-height: 1.9;
    color: var(--tbn-mute);
}

.tb-info-card .tb-btn { margin-top: 6px; }

/* 旧テーマの ".post-content p"（font-size:.95rem 強制）が、
   価格の大きな数字やカード内テキストなど tb- 系コンポーネントの
   文字サイズを踏みつぶしてしまうため、該当クラスだけ明示的に勝たせる。 */
.post-content .tb-p {
    font-size: clamp(13px, 1.25vw, 15px);
    margin-bottom: 0;
    line-height: 2.25;
}

.post-content .tb-price__big {
    font-size: clamp(3.4rem, 7.5vw, 5.8rem);
    margin-bottom: 0;
}

.post-content .tb-price__sub {
    font-size: 13px;
    margin-bottom: 0;
    line-height: 2;
}

.post-content .tb-promise {
    font-size: 12.5px;
    margin-bottom: 0;
    line-height: 2.05;
}

.post-content .tb-info-card__label {
    font-size: 10.5px;
    margin-bottom: 0;
}

.post-content .tb-info-card__value {
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    margin-bottom: 0;
}

.post-content .tb-info-card__note {
    font-size: 12px;
    margin-bottom: 0;
    line-height: 1.9;
}

.post-content .tb-label {
    font-size: 10.5px;
    margin-bottom: clamp(18px, 2.4vw, 26px);
}

.post-content .tb-contact__p {
    font-size: 13px;
    margin-bottom: 0;
    line-height: 2.15;
}

/* 旧テーマの ".post-content ul{list-style:disc}" がチップ状のタグ
   リスト（丸ポツ非表示のはず）にも点を出してしまうための対策。 */
.post-content .tb-row__tags,
.post-content .tb-area__spots,
.post-content .tb-keyarea__spots,
.post-content .tb-cover__tags {
    list-style: none;
}

/* --- 単一列の情報テーブル（tb-price__wrap の1カラム版） ------------ */
.tb-price__wrap--single { grid-template-columns: 1fr; }

/* --- 地図埋め込み --------------------------------------------------- */
.tb-map {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 8;
    border: 1px solid var(--tbn-line-soft);
    border-radius: 3px;
    overflow: hidden;
    filter: grayscale(.15) contrast(1.02);
}

.tb-map iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* --- メールフォーム（wpcf7 を新ブランド向けに微調整） -------------- */
.tb-form-wrap {
    padding: clamp(28px, 4vw, 46px);
    background: #fff;
    border: 1px solid var(--tbn-line-soft);
    border-radius: 3px;
}

.wpcf7 input[type=text],
.wpcf7 input[type=email],
.wpcf7 input[type=tel],
.wpcf7 textarea {
    border-radius: 2px !important;
    border-color: var(--tbn-line) !important;
    font-family: var(--tbn-jp);
}

.wpcf7 input.wpcf7-submit {
    border-radius: 99px !important;
    background: var(--tbn-grad) !important;
    letter-spacing: .14em;
}

@media only screen and (max-width: 767px) {
    .tb-info-cards { grid-template-columns: 1fr; }
    .signage { padding: 128px 0 54px !important; }
}

/* 2026-10: tax note and fare guides */
.post-content .tb-price__tax {
    margin: 0;
    padding: 14px 18px;
    border-left: 3px solid var(--tbn-pink);
    background: rgba(226, 35, 127, .05);
    color: var(--tbn-ink);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.8;
    text-align: left;
}
.tb-fares__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
    margin-top: 32px;
}
.tb-fare {
    min-width: 0;
    padding: clamp(22px, 2.5vw, 32px);
    border: 1px solid var(--tbn-line-soft);
    border-top: 3px solid var(--tbn-pink);
    border-radius: 3px;
    background: #fff;
}
.post-content .tb-fare__label {
    margin: 0 0 14px;
    color: var(--tbn-pink);
    font-family: var(--tbn-sans);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    line-height: 1.7;
    text-align: left;
}
.post-content .tb-fare__title {
    margin: 0 0 10px;
    padding: 0;
    border: 0;
    background: none;
    font-family: var(--tbn-mincho);
    color: var(--tbn-ink);
    font-size: clamp(18px, 1.7vw, 22px);
    font-weight: 700;
    line-height: 1.6;
    text-align: left;
}
/* Legacy h4 decoration overlaps these unindented card titles. */
.post-content .tb-fare__title::before {
    content: none;
    display: none;
}
.post-content .tb-fare__condition,
.post-content .tb-fare__note {
    margin: 0;
    color: var(--tbn-body);
    font-size: 12px;
    line-height: 1.9;
    text-align: left;
}
.tb-fare__rows { margin: 20px 0; }
.tb-fare__rows > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: baseline;
    gap: 6px 12px;
    padding: 12px 0;
    border-top: 1px dashed var(--tbn-line-soft);
    font-size: 12px;
    line-height: 1.8;
}
.tb-fare__rows dt { color: var(--tbn-body); font-weight: 400; }
.tb-fare__rows dd { margin: 0; color: var(--tbn-ink); font-weight: 700; }
@media (max-width: 1100px) {
    .tb-fares__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
    .tb-fares__grid { grid-template-columns: 1fr; gap: 16px; }
    .tb-fares .tb-h2 em { display: block; }
    .tb-price__table dl { gap: 12px; }
    .tb-price__table dd { overflow-wrap: anywhere; }
}

/* 2026-10-14: four time bands and surcharge conditions */
.post-content .tb-price__table-label {
    margin: 14px 0 4px;
    color: var(--tbn-pink);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.8;
    text-align: left;
}
.post-content .tb-fare__minimum {
    margin: 16px 0 0;
    padding: 12px 14px;
    background: rgba(226, 35, 127, .05);
    color: var(--tbn-ink);
    font-size: 14px;
    line-height: 1.8;
    text-align: left;
}
.tb-fare__minimum strong { color: var(--tbn-pink); }
.tb-fare--extra { margin-top: 24px; }
.tb-fare--extra .tb-fare__rows { max-width: 680px; }

/* Recruitment: concise job outline, shared with the existing site. */
.tb-recruit__hero {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    align-items: center;
    gap: clamp(24px, 5vw, 70px);
}
.tb-recruit__hero .tb-figure { aspect-ratio: 4 / 3; }
.post-content .tb-recruit .tb-row__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 24px 0 0;
    padding: 0;
}
.post-content .tb-recruit .tb-row__tags li {
    margin: 0;
    padding: 6px 10px;
    background: rgba(226, 35, 127, .05);
    border: 1px solid var(--tbn-line-soft);
    border-radius: 3px;
    color: var(--tbn-body);
    font-size: 12px;
    line-height: 1.7;
}
.tb-recruit__facts { border-top: 1px solid var(--tbn-line-soft); }
.tb-recruit__facts dl {
    display: grid;
    grid-template-columns: 140px minmax(0, 1fr);
    gap: 20px;
    margin: 0;
    padding: 20px 0;
    border-bottom: 1px solid var(--tbn-line-soft);
    font-size: 15px;
    line-height: 1.9;
}
.tb-recruit__facts dt { color: var(--tbn-body); font-weight: 500; }
.tb-recruit__facts dd { margin: 0; color: var(--tbn-ink); overflow-wrap: anywhere; }
.tb-recruit__work {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 30px;
    margin-top: 36px;
}
.post-content .tb-recruit__heading {
    margin: 0 0 14px;
    padding: 0;
    border: 0;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.8;
    color: var(--tbn-ink);
    text-align: left;
}
.post-content .tb-recruit__heading::before { content: none; display: none; }
@media (max-width: 767px) {
    .tb-recruit__hero, .tb-recruit__work { grid-template-columns: 1fr; }
    .tb-recruit__hero .tb-figure { max-height: 300px; }
    .tb-recruit__facts dl { grid-template-columns: 80px minmax(0, 1fr); gap: 12px; font-size: 13px; }
}

/* Keep eight main menu items clear of the logo on smaller desktops. */
@media (min-width: 1101px) and (max-width: 1350px) {
    .header .global-nav > ul > li > a { padding-left: 8px; padding-right: 8px; }
}

/* Original logo: compensate for the vertically elongated source image at display time. */
.header .logo.logo-image { top: 0; height: 80px; }
.header .logo.logo-image > a {
    display: flex;
    align-items: center;
    height: 80px;
    text-decoration: none;
}
.header .logo.logo-image > a > img {
    display: block;
    flex: 0 0 auto;
    width: 100%;
    height: auto;
    aspect-ratio: 3.3 / 1;
    max-width: 100%;
    max-height: none;
    object-fit: fill;
}
/* Readable telephone numerals. */
a.tb-info-card__value[href^="tel:"],
.tb-contact__tel a[href^="tel:"],
.tbf__cta-tel[href^="tel:"],
.tb-price__table a[href^="tel:"] {
    font-family: "Helvetica Neue", Arial, sans-serif;
    font-weight: 600;
    font-style: normal;
    font-variant-numeric: lining-nums tabular-nums;
    letter-spacing: .015em;
}
.tb-contact__tel a[href^="tel:"] { font-size: clamp(28px, 5.7vw, 64px); line-height: 1.25; }
.tbf__cta-tel[href^="tel:"] { font-size: clamp(24px, 2.5vw, 32px); line-height: 1.3; }
a.tb-info-card__value[href^="tel:"] { font-size: clamp(19px, 1.8vw, 26px); white-space: nowrap; }
@media (max-width: 1200px) {
    .header .logo.logo-image { width: 154px; height: 54px; }
    .header .logo.logo-image > a { height: 54px; }
}

/* Recruitment entry: keep the heading, copy and buttons readable within post-content. */
.post-content .tb-recruit .tb-contact__h {
    margin: 0 0 22px;
    padding: 0;
    font-size: clamp(24px, 3.6vw, 42px);
    font-weight: 700;
    line-height: 1.6;
    text-align: center;
    color: #fff;
}
.post-content .tb-recruit .tb-contact__h::before,
.post-content .tb-recruit .tb-contact__h::after { content: none; display: none; }
.post-content .tb-recruit .tb-contact__p {
    width: 100%;
    max-width: 44em;
    margin: 0 auto clamp(28px, 4vw, 40px);
    text-align: center;
}
.post-content .tb-recruit .tb-contact .tb-btn--ghost {
    color: #11131a !important;
    -webkit-text-fill-color: #11131a;
    background: #fff;
}
.post-content .tb-recruit .tb-contact .tb-btn--ghost:hover,
.post-content .tb-recruit .tb-contact .tb-btn--ghost:focus-visible {
    color: #fff !important;
    -webkit-text-fill-color: #fff;
    background: var(--tbn-pink);
    border-color: var(--tbn-pink);
}
.post-content .tb-recruit .tb-contact .tb-btn--ghost span {
    color: inherit !important;
    -webkit-text-fill-color: inherit;
}

/* Greeting introduction without the driver photo: one readable text column. */
.tb-page.tb-greeting .greeting_sec {
    padding-top: clamp(48px, 6vw, 80px);
    padding-bottom: clamp(48px, 6vw, 80px);
}
.tb-greeting .greeting_sec > .content_inner { padding-top: 0; padding-bottom: 0; }
.tb-greeting .greeting__intro {
    display: block;
    max-width: 880px;
    margin: 0 auto clamp(48px, 6vw, 80px);
    padding-bottom: clamp(32px, 4vw, 48px);
    border-bottom: 1px solid var(--tbn-line-soft);
}
.tb-greeting .greeting__intro .greeting_text {
    width: 100%;
    padding: 0;
    margin: 0;
}
.post-content .tb-greeting .greeting__intro-label {
    color: var(--tbn-pink);
    margin: 0 0 20px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .12em;
}
.post-content .tb-greeting .greeting__intro-heading {
    padding: 0;
    margin: 0 0 clamp(24px, 3vw, 32px);
    font-family: var(--tbn-mincho);
    font-size: clamp(22px, 2.7vw, 36px);
    font-weight: 700;
    line-height: 1.65;
    letter-spacing: .02em;
    text-align: left;
    color: var(--tbn-ink);
}
.tb-greeting .greeting__intro-heading::before,
.tb-greeting .greeting__intro-heading::after { content: none; display: none; }
.tb-greeting .greeting__intro-phrase { white-space: nowrap; }
.post-content .tb-greeting .greeting__intro .greeting_text > p:not(.tb-label) {
    font-size: clamp(14px, 1.2vw, 15px);
    line-height: 2.1;
    margin: 0 0 16px;
}
.post-content .tb-greeting .greeting__intro .greeting_text > p:last-child { margin-bottom: 0; }

/* Default news thumbnails use the same logo and proportions as the header. */
.tb-news__thumb--logo {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 16 / 10;
    height: auto;
    padding: 0;
    overflow: hidden;
    background: #f8f9fc;
    border-radius: 6px;
}
.tb-news__thumb--logo img.tb-news-logo {
    display: block;
    position: static;
    width: 84% !important;
    height: auto !important;
    aspect-ratio: 3.3 / 1;
    max-width: none;
    max-height: none;
    padding: 0 !important;
    margin: 0;
    object-fit: fill !important;
    transform: none !important;
}
