@charset "UTF-8";
/**
 * Revreel コーポレートサイト 共通スタイル
 *
 * 構成
 *  1. 変数・リセット・基本タイポグラフィ
 *  2. レイアウト共通
 *  3. ヘッダー / ドロワー
 *  4. フッター
 *  5. ボタン・見出しなどの共通パーツ
 *  6. トップページ
 *  7. 事業内容ページ
 *  8. eスポーツ（チーム詳細）
 *  9. スクール（詳細）
 * 10. ニュース / お問い合わせ / 汎用ページ
 * 11. レスポンシブ
 */

/* ============================================================
   1. 変数・リセット
   ============================================================ */
:root {
    --rev-black: #000000;
    --rev-ink: #111111;
    --rev-dark: #333333;
    --rev-dark-2: #3f3f3f;
    --rev-gray: #767676;
    --rev-line: #d8d8d8;
    --rev-bg: #ededed;
    --rev-bg-2: #f4f4f4;
    --rev-white: #ffffff;

    --rev-pink: #ff4fc1;
    --rev-accent: #ff4fc1;
    --rev-green: #7ce8b0;
    --rev-blue: #4aa8ff;
    --rev-red: #7a1a24;

    --rev-gradient: linear-gradient(130deg, #acffd4 30%, #78c5ff 50%, #ffbcf8 70%);

    --rev-font-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
    /* Anton はウェイト400のみ。英字見出しは常に font-weight: 400 で指定する */
    --rev-font-en: "Anton", "Lato", var(--rev-font-jp);

    --rev-w: 1080px;
    --rev-gutter: 24px;
    --rev-sidebar: 240px;
    --rev-header-h: 88px;

    --rev-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--rev-header-h) + 24px);
    /* タップ時にiOS・Androidが出す青いハイライトを消す（継承させて全体に効かせる） */
    -webkit-tap-highlight-color: transparent;
}

body {
    margin: 0;
    font-family: var(--rev-font-jp);
    font-weight: 400;
    font-size: 15px;
    line-height: 1.9;
    color: var(--rev-ink);
    background: var(--rev-white);
    -webkit-font-smoothing: antialiased;
    text-size-adjust: 100%;
    overflow-wrap: break-word;
}

body.rev-no-scroll {
    overflow: hidden;
}

img,
svg,
video,
picture {
    max-width: 100%;
    height: auto;
    vertical-align: middle;
}

picture {
    display: contents;
}

a {
    color: inherit;
    text-decoration: none;
    transition: opacity 0.25s var(--rev-ease), color 0.25s var(--rev-ease);
}

a:hover {
    opacity: 0.85;
}

button {
    font: inherit;
    color: inherit;
    cursor: pointer;
}

h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure {
    margin: 0;
    padding: 0;
}

ul, ol {
    list-style: none;
}

.screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

/* マウス操作でフォーカスが残った要素に枠を出さない
   （タブを切り替えて戻ったときにフォーカスリングが復活するのを防ぐ）
   キーボード操作のときは :focus-visible が効くので、目印は残る */
:focus:not(:focus-visible) {
    outline: none;
}

/* スマホのみ改行 */
.sp-br {
    display: none;
}

/* PCのみ改行 */
.pc-br {
    display: inline;
}

/* [[…]] 記法：黒帯（黒背景・白文字）で囲む */
.rev-mark {
    display: inline-block;
    padding: 0.15em 0.6em;
    background: var(--rev-black);
    color: var(--rev-white);
}


/* ============================================================
   1-2. ローディング（トップページ）
   ============================================================ */
body.is-loading {
    overflow: hidden;
}

.rev-loader {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
}

/* 幕。ヒーローのスライス演出と揃えて、完了時に上下交互へ引き上げる */
.rev-loader__curtain {
    position: absolute;
    inset: 0;
    display: flex;
}

.rev-loader__curtain span {
    flex: 1 1 0;
    background: var(--rev-black);
    transition: transform 0.85s cubic-bezier(0.72, 0, 0.24, 1);
    transition-delay: calc(var(--i) * 70ms);
}

.rev-loader.is-done .rev-loader__curtain span {
    transform: translateY(-101%);
}

.rev-loader.is-done .rev-loader__curtain span:nth-child(even) {
    transform: translateY(101%);
}

.rev-loader__inner {
    position: relative;
    z-index: 1;
    display: grid;
    justify-items: center;
}

/* Rマーク。セクション見出しと同じシェイプをマスクとして使う */
.rev-loader__mark {
    position: relative;
    display: block;
    width: min(34vw, 168px);
    aspect-ratio: 178.39 / 168.59;
    background: rgba(255, 255, 255, 0.14);
    -webkit-mask: var(--rev-r-mark) center / contain no-repeat;
    mask: var(--rev-r-mark) center / contain no-repeat;
}

/* 下から満ちていくグラデーション */
.rev-loader__mark-fill {
    position: absolute;
    inset: 0;
    background: var(--rev-gradient);
    background-size: 220% 220%;
    background-position: 0% 100%;
    clip-path: inset(100% 0 0 0);
    animation:
        rev-loader-fill 1.5s cubic-bezier(0.65, 0, 0.35, 1) forwards,
        rev-loader-hue 3.2s linear infinite;
}

@keyframes rev-loader-fill {
    to {
        clip-path: inset(0 0 0 0);
    }
}

/* グラデーションをゆっくり流して色を巡らせる */
@keyframes rev-loader-hue {
    to {
        background-position: 100% 0%;
    }
}

/* 満ちる境界を走る光の線 */
.rev-loader__scan {
    position: absolute;
    left: -10%;
    right: -10%;
    top: 100%;
    height: 3px;
    background: var(--rev-white);
    box-shadow: 0 0 20px 5px rgba(255, 255, 255, 0.55);
    animation: rev-loader-scan 1.5s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

@keyframes rev-loader-scan {
    0% {
        top: 100%;
        opacity: 1;
    }
    88% {
        opacity: 1;
    }
    100% {
        top: -3px;
        opacity: 0;
    }
}

.rev-loader__text {
    margin: 22px -0.34em 0 0;
    font-family: var(--rev-font-en);
    font-size: min(6vw, 24px);
    font-weight: 400;
    letter-spacing: 0.34em;
    color: var(--rev-white);
    opacity: 0;
    animation: rev-loader-text 1.1s 0.45s var(--rev-ease) forwards;
}

@keyframes rev-loader-text {
    from {
        opacity: 0;
        letter-spacing: 0.9em;
    }
    to {
        opacity: 1;
        letter-spacing: 0.34em;
    }
}

/* 完了時はマークごと少し拡大しながら消す */
.rev-loader.is-done .rev-loader__inner {
    opacity: 0;
    transform: scale(1.12);
    transition: opacity 0.4s ease, transform 0.7s var(--rev-ease);
}

/* 動きを減らす設定のときは演出を最小限にする */
@media (prefers-reduced-motion: reduce) {
    .rev-loader__mark-fill,
    .rev-loader__scan,
    .rev-loader__text {
        animation-duration: 0.01ms;
        animation-delay: 0ms;
    }

    .rev-loader__curtain span {
        transition-duration: 0.01ms;
        transition-delay: 0ms;
    }
}
/* ============================================================
   2. レイアウト共通
   ============================================================ */
.rev-container {
    width: min(95% - (var(--rev-gutter) * 2), var(--rev-w));
    margin-inline: auto;
}

.rev-main {
    display: block;
}

body.is-front .rev-main {
    margin-left: var(--rev-sidebar);
}

body.is-sub .rev-main {
    padding-top: var(--rev-header-h);
}

/* ?lp 表示。ヘッダーが無いので上の余白を詰める */
body.is-lp .rev-main {
    padding-top: 0;
}

/* ?lp のフッターはコピーライトのみ */
.rev-footer--lp {
    padding: 26px 20px !important;
    text-align: center;
}

/* ============================================================
   3. ヘッダー / ドロワー
   ============================================================ */
.rev-header {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 200;
    background: var(--rev-black);
    color: var(--rev-white);
}

/* --- トップページ：左固定サイドバー --- */
body.is-front .rev-header {
    width: var(--rev-sidebar);
    height: 100vh;
}

body.is-front .rev-header__inner {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 34px 0 34px 32px;
}

body.is-front .rev-header__logo {
    margin-bottom: 56px;
}

body.is-front .rev-header__logo img {
    width: 104px;
}

body.is-front .rev-gnav {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

body.is-front .rev-gnav__item > a {
    display: block;
    padding: 6px 0;
    font-family: var(--rev-font-en);
    font-size: 19px;
    font-weight: 400;
    letter-spacing: 0.04em;
}

body.is-front .rev-gnav__sub {
    margin: 2px 0 10px 14px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

body.is-front .rev-gnav__sub a {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 400;
    color: #e6e6e6;
}

body.is-front .rev-gnav__sub a::before {
    content: "";
    width: 10px;
    height: 1px;
    background: currentColor;
}

body.is-front .rev-burger {
    position: fixed;
    top: 34px;
    right: 30px;
}

/* --- 下層ページ：上部固定バー --- */
body.is-sub .rev-header {
    width: 100%;
    height: var(--rev-header-h);
}

body.is-sub .rev-header__inner {
    display: flex;
    align-items: center;
    gap: 24px;
    height: 100%;
    padding: 0 30px;
}

body.is-sub .rev-header__logo img {
    width: 60px;
}

body.is-sub .rev-header__nav {
    margin-left: auto;
}

body.is-sub .rev-gnav {
    display: flex;
    align-items: center;
    gap: 34px;
}

body.is-sub .rev-gnav__item > a {
    font-family: var(--rev-font-en);
    font-size: 17px;
    font-weight: 400;
    letter-spacing: 0.05em;
}

body.is-sub .rev-gnav__item.is-current > a,
body.is-sub .rev-gnav__item.current-menu-item > a,
body.is-sub .rev-gnav__item.current-menu-ancestor > a,
body.is-sub .rev-gnav__item.current-menu-parent > a {
    color: var(--rev-gray);
}

body.is-sub .rev-gnav__sub {
    display: none;
}

body.is-sub .rev-burger {
    position: relative;
    margin-left: 8px;
}

.rev-header__logo a {
    display: inline-block;
}

.rev-header__logo-text {
    font-family: var(--rev-font-en);
    font-size: 22px;
    font-weight: 400;
}

/* --- ハンバーガー --- */
.rev-burger {
    z-index: 300;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    width: 44px;
    height: 30px;
    padding: 0;
    border: 0;
    background: transparent;
}

.rev-burger span {
    display: block;
    width: 100%;
    height: 2px;
    background: var(--rev-white);
    transition: transform 0.3s var(--rev-ease), opacity 0.2s;
}

/* ドロワーを開いている間は、代わりに専用の閉じるボタンを見せる */
.rev-burger[aria-expanded="true"] {
    opacity: 0;
    pointer-events: none;
}

/* --- ドロワー --- */
.rev-drawer {
    position: fixed;
    inset: 0;
    z-index: 250;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    background: rgba(0, 0, 0, 0.96);
    color: var(--rev-white);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.35s var(--rev-ease), visibility 0.35s;
}

.rev-drawer.is-open {
    opacity: 1;
    visibility: visible;
}

/* 右上の閉じるボタン */
.rev-drawer__close {
    position: absolute;
    top: 24px;
    right: 26px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 8px;
    border: 0;
    background: transparent;
    color: var(--rev-white);
    transition: opacity 0.2s var(--rev-ease);
}

.rev-drawer__close:hover {
    opacity: 0.6;
}

.rev-drawer__close-icon {
    position: relative;
    display: block;
    width: 30px;
    height: 30px;
}

.rev-drawer__close-icon::before,
.rev-drawer__close-icon::after {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 100%;
    height: 2px;
    margin-top: -1px;
    background: currentColor;
}

.rev-drawer__close-icon::before {
    transform: rotate(45deg);
}

.rev-drawer__close-icon::after {
    transform: rotate(-45deg);
}

.rev-drawer__close-label {
    font-family: var(--rev-font-en);
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.14em;
    line-height: 1;
}

.rev-drawer__inner {
    width: min(100% - 48px, 500px);
    max-height: 80vh;
    overflow-y: auto;
}

.rev-drawer__nav > li {
    margin-bottom: .25em;
}

.rev-drawer__nav > li > a {
    display: block;
    font-family: var(--rev-font-en);
    font-size: min(5vw, 26px);
    font-weight: 400;
    letter-spacing: 0.06em;
}

.rev-drawer__sub {
    margin-top: .5em;
    margin-bottom: 2em;
    padding-left: 1.5em;
    width: 90%;
    display: flex;
    align-self: flex-end;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 20px;
    flex-direction: column;
    align-items: flex-start;
}

.rev-drawer__sub a {
    font-weight: 400;
    font-size: 15px;
    color: #ddd;
}

.rev-drawer__sub .current-menu-item a {
    display: flex;
    align-items: center;
    gap: 18px;
    font-size: min(3.5vw, 16px);
    font-weight: 400;
}

/* ============================================================
   4. フッター
   ============================================================ */
.rev-footer {
    padding: 62px 0 40px;
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-footer__top {
    display: flex;
    align-items: flex-start;
    gap: 60px;
}

.rev-footer__logo img {
    width: 92px;
}

.rev-footer__list {
    display: flex;
    align-items: flex-start;
    gap: 56px;
}

.rev-footer__list > li > a {
    font-family: var(--rev-font-en);
    font-size: 19px;
    font-weight: 400;
    letter-spacing: 0.05em;
}

.rev-footer__sub {
    margin-top: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rev-footer__sub a {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 400;
}

.rev-footer__sub a::before,
.rev-drawer__sub .current-menu-item a::before {
    content: "";
    width: 10px;
    height: 1px;
    background: currentColor;
}

.rev-footer__bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-top: 26px;
}

.rev-footer__copy {
    font-size: 13px;
    color: #b8b8b8;
    letter-spacing: 0.02em;
}

.rev-footer__privacy {
    font-size: min(2.5vw, 12px);
}

/* --- SNSリスト --- */
.rev-sns {
    display: flex;
    align-items: center;
    gap: 22px;
}

.rev-sns a {
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
}

.rev-sns svg {
    /* viewBoxの縦横比がまちまちなので、はみ出さない範囲で最大表示する */
    max-width: 88%;
    max-height: 88%;
    width: auto;
    height: auto;
    fill: currentColor;
}

.rev-sns--footer {
    margin-top: 42px;
}

.rev-sns--drawer {
    justify-content: center;
    margin-top: 34px;
}

/* ============================================================
   5. 共通パーツ
   ============================================================ */

/* --- ボタン --- */
.rev-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    min-height: 56px;
    padding: .5em 1.5em;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: min(3.2vw, 15px);
    font-weight: 700;
    letter-spacing: 0.04em;
    border: 1px solid var(--rev-black);
    transition: background 0.25s var(--rev-ease), color 0.25s var(--rev-ease), opacity 0.25s;
}

.rev-button:hover {
    opacity: 1;
    background: var(--rev-white);
    color: var(--rev-black);
}

.rev-button--pill {
    border-radius: 999px;
    min-height: 68px;
    padding: 12px 46px;
    font-size: 17px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}

.rev-button--outline {
    background: transparent;
    color: var(--rev-black);
    border-color: var(--rev-black);
}

.rev-button--outline:hover {
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-button--light {
    background: var(--rev-white);
    color: var(--rev-black);
    border-color: var(--rev-white);
}

.rev-button--light:hover {
    background: transparent;
    color: var(--rev-white);
}

.rev-button__icon {
    display: inline-flex;
    align-items: center;
    width: 24px;
}

.rev-button__icon svg {
    width: 100%;
    height: auto;
    fill: currentColor;
}

/* 矢印 */
.rev-arrow {
    display: inline-block;
    width: min(4.6vw, 34px);
    flex: 0 0 auto;
    vertical-align: middle;
    line-height: 0;
}

.rev-arrow svg {
    display: block;
    width: 100%;
    height: auto;
    fill: currentColor;
}

/* --- セクション見出し（Rの透かし付き） --- */
.rev-section-title {
    position: relative;
    display: flex;
    justify-content: center;
    padding: 46px 0 min(10vw, 100px);
    text-align: center;
}

.rev-section-title__mark {
    position: absolute;
    top: -6px;
    left: 50%;
    width: min(28vw, 176px);
    aspect-ratio: 178.39 / 168.59;
    transform: translateX(-50%);
    background: var(--rev-white);
    opacity: 1;
    -webkit-mask: var(--rev-r-mark) center / contain no-repeat;
    mask: var(--rev-r-mark) center / contain no-repeat;
    pointer-events: none;
}

.rev-section-title__text {
    position: relative;
    font-size: 27px;
    font-weight: 700;
    letter-spacing: 0.06em;
}

/* Rマーク（データURIのSVG） */
:root {
    /* ロゴのRマーク（支給データ icon-r.svg をデータURIで埋め込み） */
    --rev-r-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 178.39 168.59'%3E%3Cpath d='M178.39,168.53l-69.69.06L0,61.19h97.35c3.69-.37,6.06-3,5.99-6.44-.07-3.28-2.6-6.19-6.26-6.46h-39.41S8.59.04,8.59.04l90.04-.04c12.18.17,23.39,4.05,32.75,11.41,22.09,17.38,27.96,48.48,13.16,72.45-6.7,10.86-16.57,18.94-28.69,23.34l62.53,61.32Z' fill='%23000'/%3E%3C/svg%3E");

    /* 星＋弧線の装飾（支給データ star_deco.svg をデータURIで埋め込み） */
    --rev-star-deco: url("data:image/svg+xml,%3Csvg fill='%23ffffff' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 252.66 37.96'%3E%3Cg%3E%3Cg%3E%3Cpath d='M239.46,37.96c-.41,0-.8-.2-1.03-.54l-4.18-6.1-7.09-2.09c-.4-.12-.71-.42-.84-.81-.13-.39-.05-.82.2-1.15l4.78-6.21c.42-.55,1.21-.65,1.75-.23.55.42.65,1.21.23,1.75l-3.67,4.77,5.77,1.7c.28.08.52.26.68.49l3.4,4.96,3.4-4.96c.16-.24.4-.41.68-.49l5.77-1.7-3.67-4.77c-.18-.23-.27-.51-.26-.8l.17-6.01-5.67,2.02c-.27.1-.57.1-.84,0l-5.67-2.02.03,1.21c.02.69-.52,1.26-1.22,1.28-.71.03-1.26-.53-1.28-1.22l-.08-3.04c-.01-.41.18-.8.51-1.05.33-.24.77-.31,1.15-.17l6.97,2.48,6.97-2.48c.39-.14.82-.08,1.15.17.33.24.53.63.51,1.05l-.2,7.39,4.51,5.86c.25.33.33.76.2,1.15-.13.39-.44.7-.84.81l-7.09,2.09-4.18,6.1c-.23.34-.62.54-1.03.54Z'/%3E%3Cpath d='M107.7,14.93c-.2,0-.4-.05-.58-.14-.8-.42-1.71-.89-2.74-1.39-.62-.3-.88-1.05-.58-1.67.3-.62,1.05-.88,1.67-.58,1.05.51,1.99.99,2.82,1.43.61.32.84,1.08.52,1.69-.22.42-.66.67-1.11.67Z'/%3E%3Cpath d='M1.25,17.23c-.41,0-.81-.2-1.05-.56-.38-.58-.22-1.35.36-1.73.23-.15,23.04-14.94,55.91-14.94,11.38,0,22.74,1.74,33.76,5.16,3.13.97,6.24,2.09,9.24,3.32.64.26.94.99.68,1.63-.26.64-.99.95-1.63.68-2.93-1.2-5.97-2.29-9.04-3.24-10.78-3.35-21.89-5.05-33.02-5.05C24.39,2.5,2.16,16.88,1.94,17.02c-.21.14-.45.21-.69.21Z'/%3E%3Cpath d='M222.15,17.23c-.24,0-.47-.07-.69-.21,0,0-.76-.5-2.15-1.29-.6-.34-.81-1.1-.47-1.7.34-.6,1.1-.81,1.7-.47,1.48.84,2.27,1.35,2.3,1.38.58.38.74,1.15.36,1.73-.24.36-.64.56-1.05.56Z'/%3E%3Cpath d='M215.33,13.5c-.18,0-.37-.04-.54-.12-2.4-1.16-4.94-2.27-7.56-3.29-.64-.25-.96-.97-.71-1.62.25-.64.97-.96,1.62-.71,2.68,1.04,5.29,2.17,7.74,3.37.62.3.88,1.05.58,1.67-.22.45-.66.71-1.13.71Z'/%3E%3Cpath d='M111.7,17.23c-.41,0-.81-.2-1.05-.56-.38-.58-.22-1.35.36-1.73.23-.15,23.04-14.94,55.91-14.94,9.9,0,19.83,1.32,29.52,3.93.67.18,1.06.87.88,1.53s-.86,1.06-1.53.88c-9.48-2.55-19.19-3.85-28.87-3.85-32.09,0-54.32,14.38-54.54,14.52-.21.14-.45.21-.69.21Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");

    /* セレクトボックスの下矢印（ブラウザ標準の矢印は消して統一する） */
    --rev-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23111111' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");

    /* チェックボックスのチェックマーク */
    --rev-check-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5 4.6 8.6 11 1.6' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* --- 左罫線付き見出し --- */
.rev-rule-title {
    display: flex;
    align-items: center;
    gap: 26px;
    font-size: min(4vw, 22px);
    font-weight: 700;
    letter-spacing: 0.08em;
}

.rev-rule-title::before {
    content: "";
    /* 部門ブロック（.rev-division）の左右の余白と同じ幅にする */
    width: calc((100% - var(--rev-division-width, 90%)) / 2);
    height: 1px;
    background: currentColor;
    flex: 0 0 auto;
}

/* --- 左上に三角が付くカード見出し --- */
.rev-corner {
    position: relative;
}

.rev-corner::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    border-width: 15px;
    border-style: solid;
    border-color: var(--rev-black) transparent transparent var(--rev-black);
}

/* --- パンくず --- */
.rev-breadcrumb {
    padding: 12px 0;
    background: var(--rev-white);
    border-bottom: 1px solid #e6e6e6;
}

.rev-breadcrumb .rev-container {
    width: min(100% - (var(--rev-gutter) * 2), var(--rev-w));
}

.rev-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    font-size: min(2.4vw, 12px);
    color: var(--rev-ink);
}

.rev-breadcrumb li + li::before {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-right: 10px;
    border-right: 1.5px solid #999;
    border-bottom: 1.5px solid #999;
    transform: rotate(-45deg);
}

.rev-breadcrumb li {
    display: flex;
    align-items: center;
}

/* --- ページヘッダー --- */
.rev-page-header {
    display: flex;
    align-items: center;
    min-height: 240px;
    padding: 60px 0 120px;
    background: var(--rev-black) center / cover no-repeat;
    color: var(--rev-white);
}

.rev-page-header__en {
    font-family: var(--rev-font-en);
    font-size: 15px;
    font-weight: 400;
    letter-spacing: 0.1em;
}

.rev-page-header__title {
    margin-top: 4px;
    font-size: 42px;
    font-weight: 500;
    letter-spacing: 0.08em;
}

/* 記事詳細の見出し帯。本文が主役なので高さと文字を抑える */
.rev-page-header--min {
    min-height: 0;
    padding: 34px 0 38px;
}

.rev-page-header--min .rev-page-header__en {
    font-size: 12px;
    opacity: 0.7;
}

.rev-page-header--min .rev-page-header__title {
    margin-top: 2px;
    font-size: 22px;
}

/* --- ページリード（黒帯） --- */
.rev-page-intro {
    position: relative;
    margin-top: -60px;
    padding-bottom: 46px;
    background: linear-gradient(to bottom, transparent 0 60px, var(--rev-bg) 60px);
}

/* 会社概要は下に続くミッションが白背景なので、リード部分も白に揃える */
.page-template-page-company-php .rev-page-intro {
    background: linear-gradient(to bottom, transparent 0 60px, var(--rev-white) 60px);
    padding-bottom: 0;
}

.rev-page-intro__box {
    max-width: 690px;
    padding: 34px 40px;
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-page-intro__title {
    font-size: min(5vw, 22px);
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rev-page-intro__text {
    margin-top: 16px;
    font-size: min(3.2vw, 14px);
    line-height: 1.85;
}

/* --- ページヘッダー / リードの表示アニメーション --- */
/* ヘッダーは上から開き、中の文字が少し遅れてせり上がる */
.rev-page-header {
    clip-path: inset(0 0 100% 0);
    animation: rev-head-open 0.75s cubic-bezier(0.72, 0, 0.24, 1) forwards;
}

@keyframes rev-head-open {
    to {
        clip-path: inset(0 0 0 0);
    }
}

.rev-page-header__en,
.rev-page-header__title {
    overflow: hidden;
    /* 文字の下端が切れないよう少し余裕を持たせる */
    padding-bottom: 0.14em;
    margin-bottom: -0.14em;
}

.rev-page-header__en span,
.rev-page-header__title span {
    display: inline-block;
    transform: translateY(115%);
    animation: rev-head-rise 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.rev-page-header__en span {
    animation-delay: 0.32s;
}

.rev-page-header__title span {
    animation-delay: 0.42s;
}

@keyframes rev-head-rise {
    to {
        transform: translateY(0);
    }
}

/* リードの黒帯は左から幅を広げて現れる */
.rev-page-intro__box {
    clip-path: inset(0 100% 0 0);
    animation: rev-intro-open 0.7s 0.55s cubic-bezier(0.72, 0, 0.24, 1) forwards;
}

@keyframes rev-intro-open {
    to {
        clip-path: inset(0 0 0 0);
    }
}

.rev-page-intro__title,
.rev-page-intro__text {
    opacity: 0;
    animation: rev-intro-text 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.rev-page-intro__title {
    animation-delay: 0.85s;
}

.rev-page-intro__text {
    animation-delay: 0.95s;
}

@keyframes rev-intro-text {
    from {
        opacity: 0;
        transform: translateY(14px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 動きを減らす設定のときはアニメーションなしで表示する */
@media (prefers-reduced-motion: reduce) {
    .rev-page-header,
    .rev-page-header__en span,
    .rev-page-header__title span,
    .rev-page-intro__box,
    .rev-page-intro__title,
    .rev-page-intro__text {
        animation-duration: 0.01ms;
        animation-delay: 0ms;
    }
}

/* --- 共通CTA --- */
.rev-cta {
    padding: 74px 0 78px;
    background: var(--rev-white);
    text-align: center;
}

.rev-cta__title {
    font-family: var(--rev-font-en);
    font-size: 34px;
    font-weight: 400;
    letter-spacing: 0.06em;
}

.rev-cta__text {
    margin-top: 22px;
    font-size: min(3.4vw, 15px);
    font-weight: 700;
    line-height: 2;
}

.rev-cta__action {
    margin-top: 28px;
}

/* ============================================================
   6. トップページ
   ============================================================ */
.rev-top {
    background: var(--rev-black);
    color: var(--rev-white);
}

/* --- ヒーロー --- */
.rev-hero {
    position: relative;
    padding: 0 0 90px;
}

.rev-hero__visual {
    position: relative;
    display: grid;
    grid-template-columns: 1fr;
    justify-items: end;
    max-width: min(100%, 1500px);
}

.rev-hero__image {
    margin-left: 90px;
}

/* --- メインビジュアル（スライス切り替え） --- */
.rev-hero__slider {
    position: relative;
    width: min(90%, 1200px);
    height: min(70vw, 780px);
    overflow: hidden;
    background: var(--rev-black);
    --slices: 5;
    --slice-duration: 0.72s;
    --slice-stagger: 80ms;
}

.rev-hero__slide {
    position: absolute;
    inset: 0;
    z-index: 1;
}

/* 表示中のスライドを最前面へ */
.rev-hero__slide.is-active {
    z-index: 3;
}

/* 切り替え中、下敷きになる直前のスライド */
.rev-hero__slide.is-prev {
    z-index: 2;
}

/* 短冊状のスライス。奇数番目は上から、偶数番目は下から入る
   left / width で分割すると端数の丸めで継ぎ目に隙間が見えることがあるため、
   スライスは親と同じ大きさにしておき、clip-path で切り出す。
   さらに右側を1px重ねて、境界に線が出ないようにしている */
.rev-hero__slice {
    position: absolute;
    inset: 0;
    clip-path: inset(
        0
        calc(100% - (100% / var(--slices)) * (var(--i) + 1) - 1px)
        0
        calc((100% / var(--slices)) * var(--i))
    );
    --out: -101%;
    transform: translateY(var(--out));
    transition: transform var(--slice-duration) cubic-bezier(0.72, 0, 0.24, 1);
    transition-delay: calc(var(--i) * var(--slice-stagger));
    will-change: transform;
}

.rev-hero__slice:nth-child(even) {
    --out: 101%;
}

.rev-hero__slide.is-active .rev-hero__slice {
    transform: translateY(0);
}

/* 直前のスライドは動かさず、新しいスライスに覆われるのを待つ */
.rev-hero__slide.is-prev .rev-hero__slice {
    transform: translateY(0);
    transition: none;
}

/* 表示していないスライドは即座に待機位置へ戻す */
.rev-hero__slide:not(.is-active):not(.is-prev) .rev-hero__slice {
    transition: none;
}

/* スライスは親と同じ大きさなので、画像もそのまま全面に敷く */
.rev-hero__slice-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* 動きを減らす設定のときは瞬時に切り替える */
@media (prefers-reduced-motion: reduce) {
    .rev-hero__slice {
        transition-duration: 0.01ms;
        transition-delay: 0ms;
    }
}

.rev-hero__catch {
    position: absolute;
    top: 88px;
    left: 0;
    font-family: var(--rev-font-en);
    font-size: min(15vw, 140px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.18em;
    pointer-events: none;
    transform: translate(min(10vw, 30px),min(10vw, 40px));
    z-index: 5;
}

.rev-hero__catch span {
    display: block;
    transform: skewX(-8deg);
}

/* 3行目は白フチの中抜き文字にする */
.rev-hero__catch span:last-child {
    -webkit-text-stroke: 2px #000;
}

.rev-hero__body {
    position: relative;
    margin: -90px 0 0 min(5vw, 30px);
    max-width: 820px;
    z-index: 5;
}

.rev-hero__lead {
    font-size: min(4.8vw, 30px);
    font-weight: 500;
    line-height: 1.75;
    letter-spacing: 0.25em;
}

.rev-hero__lead strong {
    font-weight: 500;
}

.rev-hero__lead p {
    margin: 0;
}

.rev-hero__text {
    margin-top: 34px;
    font-size: min(3vw, 16px);
    line-height: 2.1;
    letter-spacing: 0.15em;
}

/* --- 事業カード --- */
.rev-top-business {
    padding: 0 0 90px;
}

.rev-top-business__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: min(3vw, 20px);
    align-items: start;
}

/* カードスタイル（白背景＋イラスト） */
.rev-bcard {
    position: relative;
    padding: 34px 30px 40px;
    background: var(--rev-white);
    color: var(--rev-ink);
    border-radius: min(15vw, 80px) 0 0 0;
}

.rev-bcard:nth-child(2) {
    margin-top: 46px;
}

.rev-bcard:nth-child(3) {
    margin-top: 92px;
}

.rev-bcard__en {
    font-family: var(--rev-font-en);
    font-size: 17px;
    font-weight: 400;
    letter-spacing: 0.18em;
    color: #b5b5b5;
    padding: min(4vw, 10px) 0 0 min(5vw, 15px);
}

.rev-bcard__figure {
    margin: 12px 0 6px;
    text-align: center;
}

.rev-bcard__figure img {
    max-height: 300px;
    width: auto;
}

.rev-bcard__title {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
    font-size: min(4vw, 19px);
    font-weight: 700;
    letter-spacing: 0.04em;
    padding-top: 1em;
}

.rev-bcard__catch {
    margin-top: 18px;
    font-size: min(3.5vw, 16px);
    font-weight: 700;
    line-height: 1.7;
    letter-spacing: 0.05em;
}

.rev-bcard__text {
    margin-top: 14px;
    padding-left: 20px;
    border-left: 2px solid var(--rev-ink);
    font-size: min(2.8vw, 13px);
    line-height: 1.95;
}

/* 写真スタイル */
.rev-top-business__photos {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 70px 44px;
    margin-top: 56px;
}

.rev-bphoto__link {
    display: block;
    position: relative;
}

.rev-bphoto__image img {
    position: relative;
    width: 100%;
    height: 310px;
    object-fit: cover;
}

.rev-bphoto__image::after {
    position: absolute;
    content: "";
    width: 100%;
    height: 100%;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
    top: 0;
    left: 0;
}

.rev-bphoto__en {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-family: var(--rev-font-en);
    font-size: clamp(30px, 3.4vw, 44px);
    font-weight: 400;
    letter-spacing: 0.2em;
    color: #fff;
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.4);
    text-align: center;
    line-height: 1.1;
}

.rev-bphoto__badge {
    position: absolute;
    left: 20px;
    bottom: -50px;
    width: 116px;
    height: 116px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--rev-dark);
}

.rev-bphoto__badge img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.rev-bphoto__title {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
    margin-top: 40px;
    font-size: 18px;
    font-weight: 700;
}

.rev-bphoto__title-link {
    display: inline-flex;
    align-items: center;
    gap: 16px;
    color: inherit;
    transition: opacity 0.25s var(--rev-ease);
}

.rev-bphoto__title-link:hover {
    opacity: 0.65;
}

.rev-bphoto__catch {
    margin-top: 14px;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.7;
}

.rev-bphoto__text {
    margin-top: 14px;
    padding-left: 20px;
    border-left: 1px solid #fff;
    font-size: min(2.8vw, 13px);
    line-height: 1.95;
}

/* --- プレスリリース --- */
.rev-top-news {
    padding: 62px 0 70px;
    background: var(--rev-bg) center / cover no-repeat;
    color: var(--rev-ink);
}

.rev-top-news__head {
    display: grid;
    grid-template-columns: .5fr 1fr;
    gap: 30px;
    align-items: start;
}

.rev-top-news__en {
    position: relative;
    padding: .5em .5em 0;
    font-family: var(--rev-font-en);
    font-size: min(12vw, 70px);
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: 0.06em;
}

.rev-top-news__en::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    border-width: 14px;
    border-style: solid;
    border-color: var(--rev-black) transparent transparent var(--rev-black);
}

.rev-top-news__label {
    margin-top: 12px;
    padding-left: 2em;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.1em;
}

.rev-top-news__more {
    margin-top: 32px;
}

/* カード並びの中に入るVIEW MORE（スマホでのみ使う） */
.rev-top-news__more--inline {
    display: none;
    margin-top: 0;
}

.rev-top-news__more .rev-button {
    justify-content: flex-end;
    width: 100%;
    font-family: var(--rev-font-en);
    font-weight: 400;
    font-size: 17px;
}

.rev-top-news__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-top: 26px;
}

/* --- ニュースカード --- */
.rev-news-card {
    background: var(--rev-white);
    box-shadow: 5px 5px 10px rgba(0,0,0,0.1);
}

.rev-news-card__link {
    display: block;
    height: 100%;
}

.rev-news-card__thumb {
    overflow: hidden;
    background: #d9d9d9;
    aspect-ratio: 3 / 2;
}

.rev-news-card__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s var(--rev-ease);
}

.rev-news-card__link:hover .rev-news-card__thumb img {
    transform: scale(1.05);
}

/* アイキャッチ未設定時はロゴをNoImageとして表示する */
.rev-noimage {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    padding: 14%;
}

/* サムネイルは object-fit: cover なので、ロゴだけは全体が入るようにする */
.rev-news-card__thumb .rev-noimage img,
.rev-work-card__thumb .rev-noimage img {
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 100%;
    object-fit: contain;
    opacity: 0.35;
}

/* ロゴは拡大させない */
.rev-news-card__link:hover .rev-news-card__thumb .rev-noimage img {
    transform: none;
}

.rev-news-card__body {
    padding: 1em;
}

.rev-news-card__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25em .8em;
    font-size: min(2.4vw, 10px);
    color: #555;
}

.rev-news-card__cat {
    padding: 0 .5em;
    border: 1px solid var(--rev-ink);
    font-size: min(2.4vw, 10px);
    color: var(--rev-ink);
}

.rev-news-card__tags {
    display: flex;
    gap: 8px;
    font-size: min(2.4vw, 10px);
    color: #666;
}

.rev-news-card__title {
    margin-top: .25em;
    font-size: min(2.6vw, 15px);
    font-weight: 700;
    line-height: 1.4;
}

/* 外部リンクのニュース */
.rev-external-icon {
    display: inline-block;
    width: 0.85em;
    height: 0.85em;
    margin-left: 0.35em;
    vertical-align: -0.05em;
    color: currentColor;
    opacity: 0.65;
}

.rev-external-icon svg {
    display: block;
    width: 100%;
    height: 100%;
}

/* 1件目の大きいカード */
.rev-news-card--large {
    position: relative;
    background: var(--rev-black);
}

.rev-news-card--large .rev-news-card__thumb {
    aspect-ratio: 16 / 11;
}

.rev-news-card--large .rev-news-card__thumb img {
    object-position: center top;
}

/* 大きいカードは下部にタイトルが重なるので、ロゴを上寄りに置く */
.rev-news-card--large .rev-news-card__noimage {
    padding: 6% 26% 30%;
}

.rev-news-card--large .rev-news-card__body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 26px 26px 22px;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0) 100%);
    color: var(--rev-white);
}

.rev-news-card--large .rev-news-card__meta {
    color: #eee;
}

.rev-news-card--large .rev-news-card__cat {
    border-color: #fff;
    color: #fff;
}

.rev-news-card--large .rev-news-card__title {
    font-size: min(3.6vw, 22px);
}

/* --- スクール訴求 --- */
.rev-top-promo {
    padding: 78px 0 min(8vw, 50px);
    border-bottom: solid 1px var(--rev-gray);
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-top-promo__inner {
    position: relative;
    display: grid;
    grid-template-columns: 0.5fr 1fr;
    gap: 0 4%;
    align-items: start;
}

/* セクション全体を覆うリンク。ボタンより手前に置いて、どこを押しても同じ行き先にする */
.rev-top-promo__cover {
    position: absolute;
    inset: 0;
    z-index: 3;
}

.rev-top-promo__label {
    font-size: min(3.5vw, 18px);
    font-weight: 700;
    font-style: italic;
    letter-spacing: 0.1em;
    line-height: 3;
    text-align: center;
    width: 78%;
    min-width: 282px;
    margin: auto;
}

.rev-top-promo__logo {
    margin: 0 auto;
    padding: 26px;
    background: var(--rev-white);
    width: 78%;
    max-width: 300px;
}

.rev-top-promo__figure img,
.rev-top-promo__figure video {
    display: block;
    width: 100%;
    height: 430px;
    object-fit: cover;
}

.rev-top-promo__body {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 18px;
    margin-top: -85px;
    padding: 2em 2em 0 0;
    background: var(--rev-black);
    max-width: 690px;
    position: relative;
    z-index: 2;
}

.rev-top-promo__catch {
    position: relative;
    padding-left: 168px;
    font-size: min(5vw, 29px);
    font-weight: 500;
    line-height: 1.75;
    letter-spacing: 0.2em;
    background: var(--rev-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.rev-top-promo__catch::before {
    content: "";
    position: absolute;
    left: 0;
    top: 22px;
    width: 140px;
    height: 1px;
    background: var(--rev-green);
}

.rev-top-promo__action {
    align-self: flex-end;
}

.rev-top-promo__action .rev-button {
    background: var(--rev-white);
    color: var(--rev-black);
    border-color: var(--rev-white);
    min-height: 50px;
    padding: 10px 26px;
    font-size: min(3.2vw, 14px);
}

/* ============================================================
   7. 事業内容ページ
   ============================================================ */
.rev-business {
    padding-bottom: 84px;
    background: var(--rev-bg);
}

/* タブ */
.rev-business__tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border: 1px solid var(--rev-ink);
    border-width: 1px 0 0 1px;
    margin-bottom: 46px;
    background: var(--rev-bg);
}

.rev-business__tab {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .8em;
    padding: .85em 1.5em;
    border: 1px solid var(--rev-ink);
    border-width: 0 1px 1px 0;
    font-size: min(3.5vw, 15px);
    font-weight: 500;
}

.rev-business__tab::after {
    content: "";
    width: 8px;
    height: 8px;
    border-right: 1.5px solid var(--rev-ink);
    border-bottom: 1.5px solid var(--rev-ink);
    transform: translateY(-2px) rotate(45deg);
}

/* 各事業ブロック */
.rev-bsec {
    margin-bottom: 34px;
}

.rev-bsec__head {
    position: relative;
    padding: 30px 40px 34px;
    background: var(--rev-white);
}

.rev-bsec__head::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    border-width: 16px;
    border-style: solid;
    border-color: var(--rev-black) transparent transparent var(--rev-black);
}

.rev-bsec__title {
    font-size: min(5vw, 25px);
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rev-bsec__body {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 40px;
    align-items: start;
    margin-top: 22px;
}

.rev-bsec__figure {
    text-align: center;
}

.rev-bsec__figure img {
    width: 100%;
    max-width: 450px;
}

.rev-bsec__catch {
    font-size: min(4vw, 16px);
    font-weight: 700;
    line-height: 1.7;
}

.rev-bsec__text {
    margin-top: 12px;
    font-size: min(3vw, 14px);
    line-height: 1.95;
}

/* 説明文の下の補足情報 */
.rev-bsec__notes {
    display: grid;
    gap: 4px;
    margin-top: 14px;
    padding: 0;
    list-style: none;
    font-size: 13px;
    line-height: 1.8;
    color: var(--rev-dark);
}

.rev-bsec__note-label {
    font-weight: 700;
    color: var(--rev-ink);
}

.rev-bsec__note-label::after {
    content: "：";
}

.rev-bsec__action {
    display: flex;
    justify-content: flex-end;
    margin-top: 22px;
}

.rev-bsec__action .rev-button {
    min-width: 250px;
    min-height: 54px;
    justify-content: space-between;
}

/* 実績アコーディオン */
.rev-works {
    display: flex;
    background: var(--rev-white);
    flex-wrap: wrap;
    flex-direction: row-reverse;
}

.rev-works__label {
    width: 95%;
    padding: .5em 1em;
    background: #8f8f8f;
    color: var(--rev-white);
    font-size: 14px;
    font-weight: 500;
}

.rev-works__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 26px 26px;
    padding: 24px 40px 32px 0;
    width: 95%;
}

.rev-work-card__thumb {
    background: #c9c9c9;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.rev-work-card__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* カテゴリは複数付くことがあるので、並べて折り返す */
.rev-work-card__types {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    margin-top: -1px;
}

.rev-work-card__type {
    display: inline-block;
    padding: .2em 1em;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: min(2.6vw, 10px);
}

.rev-work-card__title {
    font-size: min(3vw, 14px);
    font-weight: 500;
    line-height: 1.4;
    padding: .5em;
}

.rev-work-card__note {
    font-size: min(2.8vw, 12px);
    line-height: 1.4;
    color: var(--rev-gray);
}

.rev-works__more {
    display: flex;
    justify-content: center;
    margin: 0 auto;
    padding: 0 0 4em;
}

/* 全件表示しきったらボタンごと消す */
.rev-works__more[hidden] {
    display: none;
}

.rev-works__more button {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 40px;
    min-width: 220px;
    padding: .5em 2em;
    border: 1px solid var(--rev-ink);
    background: var(--rev-white);
    font-family: var(--rev-font-en);
    font-size: 14px;
    font-weight: 400;
    letter-spacing: 0.08em;
}

.rev-works__more button::after {
    position: absolute;
    content: "";
    width: 9px;
    height: 9px;
    border-right: 1.5px solid var(--rev-ink);
    border-bottom: 1.5px solid var(--rev-ink);
    right: 1em;
    transform: translateY(-3px) rotate(45deg);
}

/* 折りたたみ時に隠す行 */
.rev-work-card.is-hidden {
    display: none;
}

/* 実績を開く／閉じるトグル */
.rev-bsec__toggle {
    display: flex;
    justify-content: center;
    margin-top: -1px;
}

.rev-bsec__toggle button {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    min-width: 200px;
    padding: 14px 24px 12px;
    border: 0;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: min(3.2vw, 14px);
    font-weight: 700;
    border-radius: 6px;
    transform: translateY(-2em);
}

.rev-bsec__toggle button::after {
    content: "";
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 7px 0 7px;
    border-color: currentColor transparent transparent transparent;
}

.rev-bsec__toggle button[aria-expanded="true"] {
    background: var(--rev-white);
    color: var(--rev-black);
}

.rev-bsec__toggle button[aria-expanded="true"]::after {
    border-width: 0 7px 8px 7px;
    border-color: transparent transparent currentColor transparent;
}

/* 開閉状態でラベルを入れ替える */
.rev-bsec__toggle button[aria-expanded="false"] .rev-bsec__toggle-open,
.rev-bsec__toggle button[aria-expanded="true"] .rev-bsec__toggle-closed {
    display: none;
}

.rev-bsec__toggle button[aria-expanded="true"] {
    font-family: var(--rev-font-en);
    font-weight: 400;
    letter-spacing: 0.08em;
    transform: translateY(-5px);
}

.rev-bsec__panel[hidden] {
    display: none;
}

/* ============================================================
   8. eスポーツ（チーム詳細）
   ============================================================ */
.rev-team {
    background: var(--rev-black);
    color: var(--rev-white);
}

/* スライダー */
.rev-team-slider {
    position: relative;
    padding: 24px 0 0;
}

.rev-team-slider__viewport {
    overflow: hidden;
    /* 縦スクロールはブラウザに任せ、横方向のフリックだけ拾う */
    touch-action: pan-y;
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
}

.rev-team-slider__viewport:active {
    cursor: grabbing;
}

.rev-team-slider__slide img {
    -webkit-user-drag: none;
    pointer-events: none;
}

.rev-team-slider__track {
    display: flex;
    transition: transform 0.6s var(--rev-ease);
}

.rev-team-slider__slide {
    flex: 0 0 75%;
    padding: 0 1.5%;
}

/* 1000px以上では2.5枚見えるようにする（中央1枚＋左右に半分ずつ）
   JSはこのflex-basisを読んで位置を算出するので、値を変えるだけで追従する */
@media (min-width: 1000px) {
    .rev-team-slider__slide {
        flex-basis: 40%;
    }
}

.rev-team-slider__slide img {
    width: 100%;
    height: min(62vw, 632px);
    object-fit: cover;
    border-radius: min(3vw, 20px);
}

/* スライドが細くなるぶん、高さも抑えて写真の比率を保つ */
@media (min-width: 750px) {
    .rev-team-slider__slide img {
        height: clamp(350px, 24vw, 480px);
    }
}

.rev-team-slider__controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: min(2vw, 10px);
    width: min(95%, 1000px);
    margin: min(4vw, 20px) auto;
}

.rev-team-slider__dots {
    display: flex;
    gap: min(1.5vw, 5px);
}

.rev-team-slider__dots button {
    width: min(4vw, 20px);
    height: 2px;
    padding: 0;
    border: 0;
    background: #666;
}

.rev-team-slider__dots button.is-active {
    background: #fff;
}

.rev-team-slider__nav,
.rev-team-slider__play {
    width: min(5vw, 34px);
    height: 34px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #fff;
}

/* 自動再生中はポーズアイコンをグレーに、一時停止中は白にして状態を分かるようにする */
.rev-team-slider__play {
    color: var(--rev-gray);
    transition: color 0.2s var(--rev-ease);
}

.rev-team-slider__play.is-paused,
.rev-team-slider__play:hover,
.rev-team-slider__play:focus-visible {
    color: #fff;
}

.rev-team-slider__nav svg,
.rev-team-slider__play svg {
    width: 100%;
    height: 100%;
}

/* 紹介エリアの先頭に置き、負のマージンでスライダーに重ねる */
.rev-team__logo {
    position: relative;
    z-index: 3;
    width: min(25vw, 200px);
    height: min(25vw, 200px);
    margin: calc(min(25vw, 200px) * -1) 0 40px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--rev-dark);
}

.rev-team__logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.rev-team__intro {
    /* ロゴが通常フローに入ったので上の余白は不要 */
    padding: 34px 0 70px;
}

.rev-team__sns {
    width: 95%;
    margin: 0 auto 26px;
}

.rev-team__catch {
    width: 95%;
    margin: 0 auto;
    font-size: min(4vw, 26px);
    font-weight: 700;
    line-height: 1.7;
    letter-spacing: 0.04em;
}

.rev-team__text {
    width: 95%;
    margin: 22px auto 0;
    font-size: min(3.2vw, 14px);
    line-height: 2;
}

/* 部門 */
.rev-divisions {
    /* 部門ブロックの幅。見出しの罫線幅の算出にも使うので変数にしている */
    --rev-division-width: min(90%, 1000px);
    padding: 52px 0 70px;
    background: var(--rev-dark);
}

.rev-divisions .rev-container {
    margin: 0;
    width: 100%;
}

.rev-division {
    width: var(--rev-division-width);
    margin: 0 auto 1.5em;
}

.rev-divisions__title {
    margin-bottom: 40px;
    color: var(--rev-white);
}

.rev-division {
    margin-bottom: 34px;
}

.rev-division__head {
    position: relative;
    display: flex;
    align-items: stretch;
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-division__head::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    border-width: 15px;
    border-style: solid;
    border-color: var(--rev-white) transparent transparent var(--rev-white);
}

.rev-division__headmain {
    flex: 1 1 auto;
    padding: 26px 30px 26px 40px;
    /* この範囲のクリックでも開閉する */
    cursor: pointer;
    background-color: transparent;
    transition: background-color 0.25s var(--rev-ease);
}

.rev-division__headmain:hover {
    background-color: rgba(255, 255, 255, 0.08);
}

/* 休止中の部門。開閉できないので、押せる見た目にはしない */
.rev-division.is-inactive .rev-division__head {
    opacity: 0.5;
}

.rev-division.is-inactive .rev-division__headmain {
    cursor: default;
}

.rev-division.is-inactive .rev-division__headmain:hover {
    background-color: transparent;
}

.rev-division__name {
    font-size: min(4.5vw, 24px);
    font-weight: 700;
    letter-spacing: 0.04em;
}

/* 「活動休止中」などのステータス表記 */
.rev-division__status {
    display: inline-block;
    margin-top: 12px;
    padding: 0.25em 1em;
    border: 1px solid currentColor;
    font-size: min(2.8vw, 12px);
    font-weight: 700;
    letter-spacing: 0.08em;
    line-height: 1.6;
    opacity: 0.75;
}

.rev-division__catch {
    position: relative;
    margin-top: 10px;
    padding-left: 26px;
    font-size: min(3vw, 13px);
    line-height: 1.8;
}

.rev-division__catch::before {
    content: "";
    position: absolute;
    left: 0;
    top: 2px;
    width: 12px;
    height: 12px;
    border-left: 1px solid currentColor;
    border-bottom: 1px solid currentColor;
}

.rev-division__toggle {
    flex: 0 0 92px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-left: 1px solid #6a6a6a;
    background: transparent;
    color: var(--rev-white);
}

.rev-division__toggle::after {
    content: "";
    width: min(2vw, 16px);
    height: min(2vw, 16px);
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-5px) rotate(45deg);
    transition: transform 0.3s var(--rev-ease);
}

.rev-division__toggle[aria-expanded="true"]::after {
    transform: translateY(3px) rotate(-135deg);
}

.rev-division__panel {
    background: #4a4a4a;
    color: var(--rev-white);
    padding: 22px 30px 34px;
}

.rev-division__panel[hidden] {
    display: none;
}

.rev-division__label {
    padding: 10px 22px;
    margin-bottom: 18px;
    background: #5c5c5c;
    font-size: min(3.25vw, 14px);
    font-weight: 500;
}

.rev-results {
    display: grid;
    gap: 22px;
    margin-bottom: 30px;
    padding: 0 10px;
}

.rev-results__row {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 16px;
}

.rev-results__year {
    font-size: min(3.5vw, 16px);
    font-weight: 700;
    text-align: right;
}

.rev-results__items li {
    position: relative;
    padding-left: min(3.65vw, 22px);
    font-size: min(3.25vw, 14px);
    line-height: 1.9;
}

.rev-results__items li::before {
    content: "";
    position: absolute;
    left: 4px;
    top: 12px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: currentColor;
}

.rev-members {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 26px;
    padding: 0 10px;
}

.rev-member__badge {
    padding: 4px 10px;
    font-size: min(3vw, 13px);
    text-align: center;
    background: var(--rev-red);
    color: var(--rev-white);
}

.rev-member__badge--coach,
.rev-member__badge--staff,
.rev-member__badge--manager {
    background: var(--rev-black);
}

.rev-member__photo {
    background: #2a2a2a;
    aspect-ratio: 1 / 1;
    overflow: hidden;
}

.rev-member__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 写真が未登録のときはチームロゴを薄く出す */
.rev-member__logo {
    padding: 18%;
}

.rev-member__photo .rev-member__logo img {
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 100%;
    object-fit: contain;
    opacity: 0.4;
}

.rev-member__name {
    margin-top: 12px;
    font-size: min(3.5vw, 18px);
    font-weight: 400;
    text-align: center;
}

.rev-member__note {
    font-size: min(2.8vw, 12px);
    color: #ddd;
}

.rev-member .rev-sns {
    justify-content: center;
    gap: 14px;
    margin-top: 8px;
}

.rev-member .rev-sns a {
    width: 20px;
    height: 20px;
}

/* ============================================================
   9. スクール（詳細）
   ============================================================ */
.rev-school {
    background: var(--rev-bg-2);
}

/* ヒーロー */
.rev-school-hero {
    position: relative;
    background: var(--rev-bg);
    min-height: 540px;
}

.rev-school-hero + .rev-container {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.rev-school-hero__media {
    display: grid;
    grid-template-columns: 30% 70%;
    align-items: stretch;
}

.rev-school-hero__logo {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    height: 58%;
    min-height: 287px;
    padding: 30px;
    background: var(--rev-white);
}

.rev-school-hero__logo-caption {
    font-size: min(1.85vw, 15px);
    font-weight: 700;
    letter-spacing: 0.06em;
    line-height: 1.4;
    text-align: center;
}

.rev-school-hero__logo img {
    max-width: 220px;
}

.rev-school-hero__photo {
    overflow: hidden;
}

.rev-school-hero__photo img,
.rev-school-hero__photo video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.rev-school-hero__catch {
    position: absolute;
    left: 0;
    bottom: 45px;
    max-width: 720px;
    padding: 26px 60px 26px 0;
    background: var(--rev-black);
}

.rev-school-hero__catch-inner {
    position: relative;
    padding-left: 168px;
    font-size: min(5.3vw, 29px);
    font-weight: 500;
    line-height: 1.8;
    letter-spacing: 0.2em;
    background: var(--rev-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.rev-school-hero__catch-inner::before {
    content: "";
    position: absolute;
    left: 0;
    top: 24px;
    width: 140px;
    height: 1px;
    background: var(--rev-green);
}

.rev-school-hero__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin: -24px 0 0 40px;
    position: relative;
    z-index: 3;
}

.rev-school-badge {
    display: inline-flex;
    align-items: center;
    padding: .25em 1.5em;
    border-radius: 999px;
    border: 2px solid var(--rev-black);
    font-size: 17px;
    font-weight: 700;
    color: var(--rev-ink);
}

.rev-school-badge + .rev-school-badge {
    margin-left: -18px;
}

/* おすすめ */
.rev-school-recommend {
    padding: 62px 0 70px;
    background: var(--rev-bg);
}

.rev-school-recommend__title {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: min(5vw, 54px);
    text-align: center;
    font-size: min(4.6vw, 21px);
    font-weight: 700;
    line-height: 1.7;
    z-index: 1;
}

/* 見出しの左右に斜めの線を添える */
.rev-school-recommend__title::before,
.rev-school-recommend__title::after {
    content: "";
    flex: 0 0 auto;
    width: 2px;
    height: min(17vw, 92px);
    background: currentColor;
}

.rev-school-recommend__title::before {
    transform: rotate(-20deg);
}

.rev-school-recommend__title::after {
    transform: rotate(20deg);
}

.rev-school-recommend__list {
    --rev-card-pop: min(4vw, 42px);
    --rev-card-gap: min(5vw, 30px);
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--rev-card-gap);
    max-width: 960px;
    margin: -93px auto 0;
    align-items: start;
}

/* 2列のときは、余る3つ目を中央に置く */
@media (min-width: 768px) and (max-width: 1024px) {
    .rev-school-recommend__item:nth-child(3) {
        grid-column: 1 / -1;
        justify-self: center;
        width: calc((100% - var(--rev-card-gap)) / 2);
    }
}

.rev-school-recommend__item {
    position: relative;
    margin-top: var(--rev-card-pop);
    padding: 0;
    background: var(--rev-white);
    border-radius: 16px;
}

.rev-school-recommend__item:nth-child(2) {
    margin-top: calc(var(--rev-card-pop) + min(9vw, 92px));
}

.rev-school-recommend__item img {
    display: block;
    width: 100%;
    max-width: min(50%, 180px);
    height: min(64vw, 330px);
    margin: calc(var(--rev-card-pop) * -1) auto -30px;
    object-fit: contain;
    object-position: center top;
}

.rev-school-recommend__text {
    position: absolute;
    left: min(2.4vw, 24px);
    right: max(-1vw, -8px);
    bottom: min(3vw, 30px);
    display: flex;
    align-items: flex-start;
    gap: min(1vw, 8px);
    font-size: min(3vw, 16px);
    font-weight: 700;
    line-height: 1.85;
    letter-spacing: 0.08em;
}

.rev-school-recommend__text-body {
    flex: 1 1 auto;
    min-width: 0;
}

.rev-school-recommend__text-body span {
    background: var(--rev-black);
    color: var(--rev-white);
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    padding: 1px 4px;
}

.rev-school-recommend__check {
    display: block;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    margin-top: 3px;
    border-radius: 50%;
    background: #ffb6e3;
    position: relative;
}

.rev-school-recommend__check::after {
    content: "";
    position: absolute;
    left: 12px;
    top: 0px;
    width: 13px;
    height: 19px;
    border-right: 4px solid #fff;
    border-bottom: 4px solid #fff;
    transform: rotate(45deg);
}

/* 訴求バナー（色帯） */
.rev-school-appeal {
    padding: 46px 0 54px;
    color: var(--rev-ink);
}

.rev-school-appeal__inner {
    display: grid;
    grid-template-columns: 200px 1fr;
    align-items: start;
}

.rev-school-appeal__badge {
    display: flex;
    align-items: center;
    justify-content: center;
    width: min(38vw, 180px);
    height: min(38vw, 180px);
    border-radius: 50%;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: min(5vw, 24px);
    font-weight: 700;
    line-height: 1.5;
    text-align: center;
    transform: translateY(-100px);
}

.rev-school-appeal__title {
    font-size: min(4.5vw, 26px);
    font-weight: 700;
    line-height: 1.7;
}

.rev-school-appeal__text {
    margin-top: 16px;
    font-size: min(3.2vw, 16px);
    font-weight: 700;
    line-height: 1.9;
    letter-spacing: 0.1em;
}

/* LINE CTA */
.rev-school-cta {
    margin-top: 26px;
    text-align: center;
}

/* 定期的に小さく跳ねさせてボタンに気づいてもらう */
@keyframes rev-cta-bounce {
    0% {
        transform: translateX(0);
        animation-timing-function: cubic-bezier(0.28, 0.84, 0.42, 1);
    }
    5% {
        transform: translateX(16px);
        animation-timing-function: cubic-bezier(0.55, 0, 0.68, 0.53);
    }
    10% {
        transform: translateX(0);
        animation-timing-function: cubic-bezier(0.28, 0.84, 0.42, 1);
    }
    13% {
        transform: translateX(7px);
        animation-timing-function: cubic-bezier(0.55, 0, 0.68, 0.53);
    }
    16%, 100% {
        transform: translateX(0);
    }
}

/* 動きを減らす設定のときは跳ねさせない */
@media (prefers-reduced-motion: reduce) {
    .rev-line-button {
        animation: none;
    }
}

.rev-line-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    min-width: 380px;
    padding: 12px 34px;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.1em;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    background-image: linear-gradient(var(--rev-black), var(--rev-black)), var(--rev-gradient);
    background-origin: border-box;
    background-clip: padding-box, border-box;
    animation: rev-cta-bounce 5s ease infinite;
}

.rev-line-button__mark svg {
    width: 40px;
    height: auto;
}

.rev-school-cta__form {
    margin-top: 12px;
    font-size: min(3vw, 15px);
    font-weight: 500;
    letter-spacing: 0.04em;
}

.rev-school-cta__form a {
    font-weight: 700;
    text-decoration: underline;
}

.rev-school-cta__form .rev-arrow {
    width: 15px;
}

/* クラス */
.rev-school-classes {
    padding: 54px 0;
}

.rev-class {
    position: relative;
    max-width: 900px;
    margin: 0 auto 40px;
    padding: 50px 40px;
    background: var(--rev-white);
    border-left: 10px solid var(--rev-class-color, var(--rev-pink));
    border-radius: 22px;
    overflow: hidden;
    box-shadow: 0 0 18px rgba(0,0,0,0.1);
}

.rev-class__top {
    display: grid;
    grid-template-columns: 1fr 400px;
    gap: 45px;
    align-items: start;
}

.rev-class__lead {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.6;
}

/* [[…]]：黒帯で囲む */
.rev-class__lead .rev-mark {
    padding: 4px 14px;
    line-height: 1.5;
}

/* **…**：クラスカラー（既定はピンク）の大きい文字 */
.rev-class__lead strong {
    color: var(--rev-class-color, var(--rev-pink));
    font-size: 1.45em;
    font-weight: 700;
}

/* __…__：小さい文字 */
.rev-class__lead small {
    font-size: 0.8em;
    font-weight: 700;
}

.rev-class__name {
    position: relative;
    display: inline-block;
    width: 132%;
    max-width: 650px;
    margin: 14px 0 0 -40px;
    padding: 0 30px;
    background: var(--rev-class-color, var(--rev-pink));
    color: var(--rev-white);
    font-size: min(5vw, 37px);
    font-weight: 700;
    font-style: italic;
    letter-spacing: 0.1em;
    text-align: right;
}

.rev-class__text {
    margin-top: 22px;
    font-size: 15px;
    line-height: 1.95;
}

.rev-class__photo,
.rev-class__teacher-photo {
    text-align: center;
}

.rev-class__photo img {
    width: 100%;
    max-width: 520px;
    aspect-ratio: 1/1;
    object-fit: cover;
    border-radius: min(3vw, 10px);
}

.rev-class__subtitle {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 34px -50px 18px 40px;
    font-size: min(3.8vw, 16px);
    font-weight: 700;
    color: var(--rev-class-color, var(--rev-pink));
}

.rev-class__subtitle::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: var(--rev-class-color, var(--rev-pink));
}

.rev-class__benefits {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px 40px;
    margin: 34px 0 18px 40px;
    padding-left: 20px;
}

.rev-class__benefit {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.rev-class__benefit-check {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    margin-top: 3px;
    border-radius: 50%;
    background: #ffc2e8;
    position: relative;
}

.rev-class__benefit-check::after {
    content: "";
    position: absolute;
    left: 8px;
    top: 4px;
    width: 6px;
    height: 11px;
    border-right: 2px solid #fff;
    border-bottom: 2px solid #fff;
    transform: rotate(45deg);
}

.rev-class__benefit-title {
    font-size: min(3.5vw, 16px);
    font-weight: 700;
    line-height: 1.6;
}

.rev-class__benefit-text {
    font-size: min(2.85vw, 12.5px);
    color: #444;
    line-height: 1.7;
}

.rev-class__schedule {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 24px;
    align-items: start;
    margin: 34px 0 18px 40px;
    padding-left: 26px;
}

.rev-class__day {
    line-height: 1;
    font-size: min(5vw, 20px);
    font-weight: 700;
    letter-spacing: 0.1em;
}

.rev-class__day em {
    font-size: min(7vw, 28px);
    font-style: normal;
}

.rev-class__times {
    display: grid;
    gap: 12px;
}

.rev-class__time-row {
    display: flex;
    align-items: center;
    gap: 24px;
}

.rev-class__time {
    flex: 0 0 auto;
    min-width: 150px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #7a7a7a;
    color: var(--rev-white);
    font-size: min(3.6vw, 16px);
    font-weight: 700;
    text-align: center;
    letter-spacing: 0.06em;
}

.rev-class__time-name {
    font-size: min(4vw, 18px);
    font-weight: 700;
    color: var(--rev-class-color, var(--rev-pink));
}

.rev-class__prices {
    display: grid;
    grid-template-columns: 90px auto auto 1fr;
    align-items: baseline;
    gap: 6px 20px;
    margin: 34px 0 18px 40px;
    padding-left: 26px;
}

.rev-class__price-label {
    grid-row: 1 / -1;
    align-self: start;
    font-size: min(3.2vw, 15px);
    font-weight: 500;
}

.rev-class__price-name {
    font-size: min(3vw, 14px);
    line-height: 1.4;
}

.rev-class__price-value {
    font-size: min(3.5vw, 14px);
}

/* 自動で付ける税表記 */
.rev-class__price-tax {
    font-size: 0.8em;
}

/* 割引などの案内。金額の下に赤字で添える */
.rev-class__price-note {
    display: block;
    margin-top: 2px;
    color: #d7000f;
    font-size: 0.9em;
    font-weight: 700;
    line-height: 1.5;
}

.rev-class__trial {
    grid-column: 2;
    justify-self: start;
    font-size: min(3.8vw, 17px);
    font-weight: 700;
    padding-top: 1em;
}

.rev-class__trial mark {
    background: linear-gradient(transparent 62%, #fff59a 62%);
    color: inherit;
}

/* 講師 */
.rev-class__teacher {
    display: grid;
    grid-template-columns: 1fr 180px;
    gap: 0;
    margin: 34px 0 34px 40px;
}

.rev-class__teacher-head {
    display: flex;
    align-items: center;
    gap: 30px;
    margin: 20px 0;
    padding: 14px 26px;
    background: var(--rev-bg);
}

.rev-class__teacher-label {
    font-size: min(3.5vw, 14px);
}

.rev-class__teacher-name {
    flex: 1 1 auto;
    text-align: right;
    font-size: min(4vw, 18px);
    font-weight: 700;
}

.rev-class__teacher-catch {
    margin-top: 18px;
    padding: 1em 4em 2em 2em;
    font-size: min(3.65vw, 15px);
    font-weight: 700;
    line-height: 1.7;
}

.rev-class__teacher-text {
    padding: 0 4em 1em 2em;
    font-size: min(3.2vw, 13px);
    line-height: 1.9;
}

.rev-class__teacher-photo img {
    width: 100%;
    max-width: 245px;
    height: auto;
    object-fit: cover;
    aspect-ratio: 2/2.8;
}

.rev-class__teacher .rev-sns {
    justify-content: center;
    margin-top: 12px;
}

/* 体験の流れ */
.rev-school-flow {
    padding: 58px 0 70px;
    background: var(--rev-dark) top center / cover no-repeat;
    background-size: 100% auto;
    color: var(--rev-white);
}

.rev-school-flow .rev-section-title__mark {
    background: var(--rev-black);
    opacity: 0.7;
}

.rev-school-flow .rev-section-title__text {
    color: var(--rev-white);
}

.rev-flow {
    max-width: 900px;
    margin: 0 auto;
    padding: 50px 60px 0;
    background: var(--rev-white);
    color: var(--rev-ink);
    border-radius: 22px;
}

.rev-flow__list {
    position: relative;
    padding-left: 47px;
}

.rev-flow__list:last-of-type {
    padding-bottom: 80px;
}

.rev-flow__list::before {
    content: "";
    position: absolute;
    left: 9px;
    top: 10px;
    bottom: 0;
    width: 4px;
    background: var(--rev-black);
}

.rev-flow__item {
    position: relative;
    padding-bottom: 42px;
}

.rev-flow__item:last-child {
    padding-bottom: 0;
}

.rev-flow__item::before {
    content: "";
    position: absolute;
    left: -46px;
    top: 3px;
    width: 20px;
    height: 20px;
    border: 3px solid var(--rev-black);
    border-radius: 50%;
    background: var(--rev-white);
}

.rev-flow__step {
    font-family: var(--rev-font-en);
    font-size: min(3.5vw, 15px);
    font-weight: 400;
    color: #9a9a9a;
    letter-spacing: 0.06em;
}

.rev-flow__title {
    margin: .25em .5em 1em;
    font-size: min(4vw, 19px);
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.4;
}

.rev-flow__body {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: min(4vw, 40px);
    margin-top: min(2vw, 14px);
    align-items: start;
}

.rev-flow__figure img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 8px;
}

.rev-flow__text {
    font-size: min(3.2vw, 14px);
    line-height: 1.85;
}

.rev-flow__buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 18px;
    max-width: 300px;
}

.rev-flow__buttons a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 14px 20px;
    border: 2px solid var(--rev-ink);
    font-size: min(3.2vw, 14px);
    font-weight: 700;
    box-shadow: 5px 5px 10px rgba(0,0,0,0.15);
}

.rev-flow__buttons a .rev-arrow,
.rev-faq__buttons a .rev-arrow {
    width: min(3vw, 15px);
}

/* スタジオ情報 */
.rev-school-studio {
    padding: 58px 0;
}

.rev-school-studio .rev-section-title__mark {
    background: var(--rev-black);
    opacity: 0.05;
}

.rev-studio {
    display: grid;
    grid-template-columns: 470px 1fr;
    gap: 50px;
    align-items: start;
    margin-top: 22px;
}

.rev-studio__photo img {
    width: 100%;
    height: 320px;
    object-fit: cover;
    border-radius: min(3vw, 10px);
}

.rev-studio__rows {
    display: grid;
    gap: 18px;
}

.rev-studio__row {
    display: grid;
    grid-template-columns: 110px 1fr;
    gap: 16px;
    align-items: start;
}

.rev-studio__label {
    font-size: 14px;
    font-weight: 700;
}

.rev-studio__value {
    font-size: 14px;
    line-height: 1.75;
}

.rev-map-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    padding: 7px 16px;
    background: var(--rev-white);
    border: 1px solid var(--rev-black);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
    font-size: 13px;
    font-weight: 700;
    color: var(--rev-ink);
}

.rev-map-button::before {
    content: "";
    width: 12px;
    height: 16px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M6 0C2.7 0 0 2.7 0 6c0 4.5 6 10 6 10s6-5.5 6-10c0-3.3-2.7-6-6-6zm0 8.2A2.2 2.2 0 1 1 6 3.8a2.2 2.2 0 0 1 0 4.4z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M6 0C2.7 0 0 2.7 0 6c0 4.5 6 10 6 10s6-5.5 6-10c0-3.3-2.7-6-6-6zm0 8.2A2.2 2.2 0 1 1 6 3.8a2.2 2.2 0 0 1 0 4.4z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* SNS訴求 */
.rev-school-social {
    padding: 0 0 56px;
    background: var(--rev-pink);
    color: var(--rev-ink);
    text-align: center;
}

.rev-school-social__balloon {
    position: relative;
    display: inline-block;
    padding: .5em 30px;
    border: 3px solid var(--rev-black);
    border-radius: 99px;
    background: var(--rev-white);
    font-size: min(4vw, 18px);
    font-weight: 700;
    line-height: 1.5;
    transform: translateY(-24px);
}

/* しっぽは黒（縁取り）と白の三角を重ねて作る */
.rev-school-social__balloon::before,
.rev-school-social__balloon::after {
    content: "";
    position: absolute;
    border-style: solid;
}

.rev-school-social__balloon::before {
    left: 50%;
    bottom: -14px;
    border-width: 14px 11px 0 13px;
    border-color: var(--rev-black) transparent transparent transparent;
    transform: translateX(-50%);
}

.rev-school-social__balloon::after {
    left: 50%;
    bottom: -10px;
    border-width: 12px 9px 0px 9px;
    border-color: var(--rev-white) transparent transparent transparent;
    transform: translateX(-50%);
}

.rev-school-social__main {
    position: relative;
    z-index: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 26px;
    margin-top: 8px;
}

/* 背景の星＋曲線の装飾（管理画面のチェックで表示） */
.rev-school-social.is-decorated .rev-school-social__main::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 100%;
    translate: -50% -8%;
    width: min(100%, 800px);
    aspect-ratio: 252.66 / 37.96;
    background: var(--rev-star-deco) center / contain no-repeat;
    opacity: 0.5;
    pointer-events: none;
    z-index: -1;
    opacity: 0.2;
}

.rev-school-social__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 108px;
    height: 108px;
    border-radius: 26px;
    background: var(--rev-black);
    color: var(--rev-white);
    box-shadow: 6px 5px 10px rgba(0,0,0,0.2);
}

.rev-school-social__icon svg {
    width: 58px;
    height: auto;
    fill: currentColor;
}

.rev-school-social__title {
    font-size: min(5.5vw, 25px);
    font-weight: 700;
    line-height: 1.7;
    text-align: left;
    letter-spacing: 0.1em;
}

/* **…** で囲んだ部分は大きい文字＋圏点 */
.rev-school-social__title strong {
    font-size: 1.28em;
    font-weight: 700;
    -webkit-text-emphasis: filled dot currentColor;
    text-emphasis: filled dot currentColor;
    -webkit-text-emphasis-position: over right;
    text-emphasis-position: over right;
}

.rev-school-social__note {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: min(6vw, 46px);
    margin-top: 22px;
    font-size: min(4vw, 18px);
    font-weight: 700;
    line-height: 1.8;
}

/* 左右に斜めの線を添える（オススメ見出しと同じ処理） */
.rev-school-social__note::before,
.rev-school-social__note::after {
    content: "";
    flex: 0 0 auto;
    width: 2px;
    height: min(14vw, 76px);
    background: currentColor;
}

.rev-school-social__note::before {
    transform: rotate(-20deg);
}

.rev-school-social__note::after {
    transform: rotate(20deg);
}

/* お知らせ */
.rev-school-news {
    padding: 58px 0 min(20vw, 100px);
    background: var(--rev-white);
}

.rev-school-news .rev-section-title__mark {
    background: var(--rev-black);
    opacity: 0.06;
}

.rev-school-news__list {
    max-width: 750px;
    margin: 0 auto;
    padding: 0;
    list-style: none;
    border-top: 1px solid var(--rev-line);
}

.rev-school-news__item {
    border-bottom: 1px solid var(--rev-line);
}

.rev-school-news__link {
    display: flex;
    align-items: baseline;
    gap: 4px 20px;
    padding: 18px 4px;
    color: inherit;
    transition: opacity 0.25s var(--rev-ease);
}

.rev-school-news__link:hover {
    opacity: 0.6;
}

.rev-school-news__date {
    flex: 0 0 auto;
    font-size: 13px;
    letter-spacing: 0.04em;
    color: var(--rev-gray);
}

.rev-school-news__title {
    font-size: 14.5px;
    font-weight: 700;
    line-height: 1.7;
}

/* モーダルの中身 */
.rev-news-modal__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 14px;
    margin: 0 0 16px;
    font-size: 13px;
    color: var(--rev-gray);
}


.rev-news-modal__thumb {
    margin-bottom: 22px;
    text-align: center;
}

/* 元画像の縦横比のまま出す。縦長でもモーダルが埋まらないよう高さを抑える */
.rev-news-modal__thumb img,
.rev-modal__body .wp-block-image img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 52vh;
    object-fit: contain;
}

/* FAQ */
.rev-school-faq {
    padding: 58px 0;
    background: var(--rev-bg);
}

.rev-faq {
    display: grid;
    gap: 14px;
    max-width: 750px;
    margin: 0 auto;
}

.rev-faq__q {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
    padding: 1em 1.5em;
    border: 0;
    background: var(--rev-dark);
    color: var(--rev-white);
    font-size: min(3.4vw, 15px);
    font-weight: 700;
    text-align: left;
}

.rev-faq__q span:first-child {
    display: flex;
    align-items: baseline;
    gap: 14px;
}

.rev-faq__q .rev-faq__mark {
    font-family: var(--rev-font-en);
    font-weight: 400;
    font-size: min(3.6vw, 17px);
}

.rev-faq__icon {
    position: relative;
    flex: 0 0 auto;
    width: 12px;
    height: 12px;
    font-size: min(3.5vw, 16px);
}

.rev-faq__icon::before,
.rev-faq__icon::after {
    content: "";
    position: absolute;
    left: 0;
    top: 7px;
    width: 16px;
    height: 2px;
    background: currentColor;
    transition: transform 0.3s var(--rev-ease);
}

.rev-faq__icon::after {
    transform: rotate(90deg);
}

.rev-faq__q[aria-expanded="true"] .rev-faq__icon::after {
    transform: rotate(0deg);
}

.rev-faq__a {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 18px 26px 6px;
    font-size: min(3.2vw, 14px);
    line-height: 1.85;
}

.rev-faq__a[hidden] {
    display: none;
}

.rev-faq__a .rev-faq__mark {
    font-family: var(--rev-font-en);
    font-size: min(3.6vw, 17px);
    font-weight: 400;
}

.rev-faq__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 14px;
}

.rev-faq__buttons a {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-width: 300px;
    padding: 13px 20px;
    border: 2px solid var(--rev-ink);
    background: var(--rev-white);
    font-size: min(3.2vw, 14px);
    font-weight: 700;
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);
}

/* ============================================================
   10. ニュース / 会社概要 / 汎用ページ
   ============================================================ */
.rev-page-body {
    padding: 54px 0 76px;
    background: var(--rev-bg);
}

.rev-news-archive {
    padding: 46px 0 76px;
    background: var(--rev-bg);
}

.rev-news-archive__filter {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 28px;
}

.rev-news-archive__filter a {
    padding: 8px 20px;
    border: 1px solid var(--rev-ink);
    background: var(--rev-white);
    font-size: 13px;
    font-weight: 500;
}

.rev-news-archive__filter a.is-current {
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-news-archive__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 26px;
}

/* 読み込み中は一覧を薄くして操作を受け付けない */
[data-rev-news].is-loading .rev-news-archive__list {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.2s var(--rev-ease);
}

[data-rev-news].is-loading .rev-news-archive__filter {
    pointer-events: none;
}

.rev-news-archive__empty {
    margin-top: 20px;
    font-size: 14px;
}

/* もっと読み込む */
.rev-news-archive__more {
    display: flex;
    justify-content: center;
    margin-top: 46px;
}

.rev-news-more {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 260px;
    padding: 14px 56px 14px 32px;
    border: 1px solid var(--rev-ink);
    background: var(--rev-white);
    font-family: var(--rev-font-en);
    font-size: 15px;
    font-weight: 400;
    letter-spacing: 0.08em;
    color: var(--rev-ink);
    transition: background-color 0.25s var(--rev-ease), color 0.25s var(--rev-ease);
}

.rev-news-more:hover {
    opacity: 1;
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-news-more::after {
    content: "";
    position: absolute;
    right: 28px;
    width: 9px;
    height: 9px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: translateY(-3px) rotate(45deg);
}

[data-rev-news].is-loading .rev-news-more {
    pointer-events: none;
    opacity: 0.6;
}

[data-rev-news].is-loading .rev-news-more::after {
    display: none;
}

.rev-pagination {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 46px;
}

.rev-pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 10px;
    border: 1px solid var(--rev-ink);
    background: var(--rev-white);
    font-size: 14px;
}

.rev-pagination .page-numbers.current {
    background: var(--rev-black);
    color: var(--rev-white);
}

/* 記事詳細 */
.rev-single {
    padding: 46px 0 76px;
    background: var(--rev-bg);
}

.rev-single__inner {
    max-width: 820px;
    margin-inline: auto;
    padding: 40px 46px 50px;
    background: var(--rev-white);
}

.rev-single__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    font-size: 13px;
    color: #555;
}

.rev-single__title {
    margin-top: 12px;
    font-size: 26px;
    font-weight: 700;
    line-height: 1.6;
}

.rev-single .wp-block-image {
    text-align: center;
}

.rev-single .wp-block-image img {
    max-width: min(90%, 450px);
}

.rev-single__thumb {
    margin-top: 24px;
    text-align: center;
}

/* 元画像の縦横比のまま出す */
.rev-single__thumb img {
    display: block;
    width: 100%;
    max-width: 450px;
    height: auto;
    margin: 0 auto;
}

.rev-single__content {
    margin-top: 28px;
    font-size: 15px;
    line-height: 2;
}

.rev-single__content > * + * {
    margin-top: 1.4em;
}

.rev-single__content h2 {
    margin-top: 2em;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--rev-black);
    font-size: 21px;
}

.rev-single__content h3 {
    margin-top: 1.8em;
    font-size: 18px;
}

.rev-single__content ul,
.rev-single__content ol {
    padding-left: 1.4em;
    list-style: revert;
}

.rev-single__content a {
    text-decoration: underline;
}

.rev-single__back {
    margin-top: 40px;
    text-align: center;
}

/* --- 記事の見出し上の行（日付・カテゴリ ＋ シェア） --- */
.rev-single__head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 20px;
}

/* --- 記事のシェアボタン --- */
.rev-share {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    width: 100%;
}

.rev-share--bottom {
    margin-top: 34px;
    padding-top: 24px;
    border-top: 1px solid var(--rev-line);
}

.rev-share__label {
    font-size: min(2.4vw, 10px);
    letter-spacing: 0.08em;
    color: var(--rev-gray);
}

.rev-share__list {
    display: flex;
    align-items: center;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* コピーの手前に入れる縦の区切り線 */
.rev-share__divider {
    width: 1px;
    height: 20px;
    margin: 0 6px;
    background: var(--rev-line);
}

.rev-share__button {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    transition: opacity 0.25s var(--rev-ease);
}

.rev-share__button:hover {
    opacity: 0.65;
}

.rev-share__button svg {
    /* viewBoxの縦横比がまちまちなので、はみ出さない範囲で最大表示する */
    max-width: 52%;
    max-height: 52%;
    width: auto;
    height: auto;
}

/* サービスごとの色。アイコンは白抜きにする */
.rev-share__button--x,
.rev-share__button--facebook,
.rev-share__button--line {
    color: var(--rev-white);
}

.rev-share__button--x {
    background: #000000;
}

.rev-share__button--facebook {
    background: #0866FF;
}

.rev-share__button--facebook svg {
    /* 縦長の形なので、高さを他のアイコンとそろえる */
    max-width: none;
    max-height: 58%;
}

.rev-share__button--line {
    background: #06C755;
}

.rev-share__button--line svg {
    max-width: 63%;
    max-height: 63%;
    transform: translate(0.2px, 0.65px);
}

/* コピーは下地の丸を持たせず、線画のまま置く */
.rev-share__button--copy {
    color: var(--rev-ink);
}

.rev-share__button--copy svg {
    max-width: 74%;
    max-height: 74%;
}

/* コピー完了の吹き出し。押されるまでは隠しておく */
.rev-share__done {
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    padding: 5px 10px;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: 11px;
    white-space: nowrap;
    border-radius: 3px;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s var(--rev-ease);
    pointer-events: none;
}

.rev-share__button--copy.is-copied .rev-share__done {
    opacity: 1;
    visibility: visible;
}

/* 会社概要 */
.rev-company {
    background: var(--rev-bg);
}

.rev-mission {
    position: relative;
    padding: 40px 0 70px;
    background: var(--rev-white);
    overflow: hidden;
}

.rev-mission__en {
    position: absolute;
    top: 25px;
    left: 50%;
    transform: translateX(-50%);
    font-family: var(--rev-font-en);
    font-size: min(10vw, 60px);
    font-weight: 400;
    line-height: 0;
    letter-spacing: 0.08em;
    color: #e8e8e8;
    white-space: nowrap;
    pointer-events: none;
}

/* スクロールで表示する要素
   読み込み直後に一瞬見えてしまわないよう、CSSの時点で隠しておく。
   目印の html.rev-anim は head のインラインスクリプトで付けるので、
   JSが動かない環境やスクロール監視が使えない環境では通常表示のままになる */
.rev-anim .rev-mission__en,
.rev-anim .rev-mission__item,
.rev-anim .rev-bcard,
.rev-anim .rev-bphoto,
.rev-anim .rev-top-promo__label,
.rev-anim .rev-top-promo__logo,
.rev-anim .rev-top-promo__figure {
    opacity: 0;
    transform: translateY(34px);
    transition: opacity 0.8s var(--rev-ease), transform 0.9s var(--rev-ease);
    /* 同じ並びの中で少しずつ遅らせる（JSが順番に応じて値を入れる） */
    transition-delay: var(--rev-reveal-delay, 0ms);
}

.rev-anim .rev-mission__en.is-inview,
.rev-anim .rev-mission__item.is-inview,
.rev-anim .rev-bcard.is-inview,
.rev-anim .rev-bphoto.is-inview,
.rev-anim .rev-top-promo__label.is-inview,
.rev-anim .rev-top-promo__logo.is-inview,
.rev-anim .rev-top-promo__figure.is-inview {
    opacity: 1;
    transform: translateY(0);
}

/* 事業紹介・スクール訴求はテンポよく見せたいので、動きを短めにする */
.rev-anim .rev-bcard,
.rev-anim .rev-bphoto,
.rev-anim .rev-top-promo__label,
.rev-anim .rev-top-promo__logo,
.rev-anim .rev-top-promo__figure {
    transform: translateY(26px);
    transition: opacity 0.55s var(--rev-ease), transform 0.65s var(--rev-ease);
    transition-delay: var(--rev-reveal-delay, 0ms);
}

/* スクール訴求の本文側は、左から流れ込むように出す */
.rev-anim .rev-top-promo__catch,
.rev-anim .rev-top-promo__action {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity 0.5s var(--rev-ease), transform 0.6s var(--rev-ease);
    transition-delay: var(--rev-reveal-delay, 0ms);
}

.rev-anim .rev-top-promo__catch.is-inview,
.rev-anim .rev-top-promo__action.is-inview {
    opacity: 1;
    transform: translateX(0);
}

/* 中央寄せの transform を持つ要素は、それを保ったまま動かす */
.rev-anim .rev-mission__en {
    transform: translate(-50%, 26px);
}

.rev-anim .rev-mission__en.is-inview {
    transform: translateX(-50%);
}

.rev-mission__list {
    position: relative;
    display: grid;
    gap: 54px;
    margin-top: 70px;
}

.rev-mission__item {
    display: grid;
    grid-template-columns: 120px 0.8fr 0.6fr;
    gap: 0;
    align-items: start;
    width: 100%;
    max-width: 750px;
    margin: 0 auto;
}

.rev-mission__item > div {
    position: relative;
}

.rev-mission__item:nth-child(even) {
    grid-template-columns: 0.6fr 120px 0.8fr;
}

.rev-mission__item:nth-child(even) .rev-mission__figure {
    order: -1;
    transform: translateX(100px);
    z-index: 2;
}

/* イラスト未設定のときは画像用の列を作らない */
.rev-mission__item--noimage,
.rev-mission__item--noimage:nth-child(even) {
    grid-template-columns: 150px 1fr;
}

.rev-mission__num {
    font-family: var(--rev-font-en);
    font-size: min(20vw, 120px);
    font-weight: 400;
    line-height: 1;
    color: #e2e2e2;
    text-align: right;
    transform: translate(12px, -40px);
}

.rev-mission__title {
    font-size: min(4.2vw, 24px);
    font-weight: 700;
    line-height: 1.6;
}

.rev-mission__text {
    margin-top: 14px;
    font-size: min(2.8vw, 13px);
    line-height: 1.85;
}

.rev-mission__figure {
    max-width: 320px;
    text-align: center;
}

.rev-mission__figure img {
    width: 80%;
}

/* 会社情報テーブル */
.rev-company-info {
    padding: 58px 0 70px;
    background: var(--rev-bg);
}

/* 会社情報のテーブルは幅を絞る */
.rev-company-info .rev-container {
    max-width: 800px;
}

.rev-company-info__title {
    margin-bottom: 20px;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.06em;
}

.rev-company-info__table {
    border: 1px solid #dcdcdc;
}

.rev-company-info__row {
    display: grid;
    grid-template-columns: 176px 1fr;
    border-bottom: 1px solid #dcdcdc;
    background: var(--rev-white);
}

.rev-company-info__row:last-child {
    border-bottom: 0;
}

.rev-company-info__label {
    padding: 18px 22px;
    background: var(--rev-black);
    color: var(--rev-white);
    font-size: 14px;
    font-weight: 700;
}

.rev-company-info__value {
    padding: 18px 24px;
    font-size: min(3.4vw, 14px);
    line-height: 1.8;
}

.rev-company-info__value ol {
    padding-left: 1.6em;
    list-style: decimal;
}

.rev-company-info__value ol li {
    margin-bottom: 4px;
}

/* お問い合わせ */
.rev-contact {
    padding: 0 0 80px;
    background: var(--rev-bg);
}

.rev-contact__inner {
    max-width: 750px;
    margin-inline: auto;
    padding: 40px 46px 50px;
    background: var(--rev-white);
}

.rev-contact input[type="text"],
.rev-contact input[type="email"],
.rev-contact input[type="tel"],
.rev-contact input[type="url"],
.rev-contact select,
.rev-contact textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #cfcfcf;
    border-radius: 4px;
    font: inherit;
    font-size: 15px;
    background: var(--rev-white);
}

.rev-contact textarea {
    min-height: 180px;
}

.rev-contact__lead {
    margin-bottom: 34px;
    font-size: 15px;
    line-height: 1.95;
}

/* ---- 独自実装のお問い合わせフォーム ---- */
.rev-form button {
    -webkit-appearance: none;
    appearance: none;
    font: inherit;
}

.rev-form__fields {
    display: grid;
    grid-template-columns: 1fr;
    gap: 26px 24px;
}

.rev-form__field--full {
    grid-column: 1 / -1;
}

.rev-form__field fieldset {
    margin: 0;
    padding: 0;
    border: 0;
}

.rev-form__label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 8px;
    padding: 0;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.rev-form__required,
.rev-form__optional {
    flex: 0 0 auto;
    padding: 2px 9px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rev-form__required {
    background: var(--rev-black);
    color: var(--rev-white);
}

.rev-form__optional {
    background: #e4e4e4;
    color: #5a5a5a;
}

.rev-form__note {
    margin: -4px 0 8px;
    font-size: 12px;
    color: var(--rev-gray);
}

/* 入力欄。ブラウザ標準の装飾（iOSの内側の影・角丸など）を消して見た目を揃える */
.rev-form input[type="text"],
.rev-form input[type="email"],
.rev-form input[type="tel"],
.rev-form input[type="url"],
.rev-form select,
.rev-form textarea {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    max-width: 100%;
    padding: 13px 14px;
    border: 1px solid #cfcfcf;
    border-radius: 4px;
    background-color: var(--rev-white);
    background-clip: padding-box;
    font: inherit;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rev-ink);
    transition: border-color 0.2s var(--rev-ease), box-shadow 0.2s var(--rev-ease);
}

/* プレースホルダーの色はブラウザ差があるので明示する */
.rev-form input::placeholder,
.rev-form textarea::placeholder {
    color: #9a9a9a;
    opacity: 1;
}

/* Chromeの自動入力で背景が黄色くならないようにする */
.rev-form input:-webkit-autofill,
.rev-form input:-webkit-autofill:hover,
.rev-form input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px var(--rev-white) inset;
    -webkit-text-fill-color: var(--rev-ink);
}

/* セレクトボックス。標準の矢印を消して独自のアイコンを描く */
.rev-form select {
    padding-right: 44px;
    background-image: var(--rev-select-arrow);
    background-repeat: no-repeat;
    background-position: right 16px center;
    background-size: 12px 8px;
    text-overflow: ellipsis;
    cursor: pointer;
}

.rev-form select::-ms-expand {
    display: none;
}

.rev-form__field.has-error select {
    background-image: var(--rev-select-arrow);
}

.rev-form textarea {
    min-height: 190px;
    resize: vertical;
}

.rev-form input:focus,
.rev-form select:focus,
.rev-form textarea:focus {
    outline: none;
    border-color: var(--rev-black);
    box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.08);
}

.rev-form__field.has-error input,
.rev-form__field.has-error select,
.rev-form__field.has-error textarea {
    border-color: #d63638;
    background-color: #fff7f7;
}

/* 選択肢。枠全体がクリックできるカード型にする */
.rev-form__choices {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 10px;
    padding: 4px 0;
}

.rev-form__choice {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 15px 18px;
    border: 2px solid var(--rev-black);
    background: var(--rev-white);
    font-size: 14.5px;
    font-weight: 700;
    line-height: 1.55;
    cursor: pointer;
    transition: border-color 0.25s var(--rev-ease), background-color 0.25s var(--rev-ease), color 0.25s var(--rev-ease);
}

.rev-form__choice:hover {
    border-color: var(--rev-black);
    background: var(--rev-bg-2);
}

/* ○□ もブラウザ標準を使わず自前で描く */
.rev-form__choice input {
    -webkit-appearance: none;
    appearance: none;
    position: relative;
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid var(--rev-black);
    background: var(--rev-white);
    cursor: pointer;
}

.rev-form__choice input[type="radio"] {
    border-radius: 50%;
}

.rev-form__choice input[type="radio"]:checked::after {
    content: "";
    position: absolute;
    inset: 3px;
    border-radius: 50%;
    background: var(--rev-black);
}

.rev-form__choice input[type="checkbox"]:checked {
    background-color: var(--rev-black);
    background-image: var(--rev-check-mark);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 11px 9px;
}

/* 選択中のカードは黒地なので、白抜きに反転させる */
.rev-form__choice:has(input:checked) input {
    border-color: var(--rev-white);
    background-color: transparent;
}

.rev-form__choice:has(input:checked) input[type="radio"]:checked::after {
    background: var(--rev-white);
}

/* 選択中は黒く塗って現在地をはっきりさせる */
.rev-form__choice:has(input:checked) {
    border-color: var(--rev-black);
    background: var(--rev-black);
    color: var(--rev-white);
    font-weight: 700;
}


/* :has() が使えない場合でも選択中が分かるようにしておく */
.rev-form__choice input:checked + span {
    font-weight: 700;
}

.rev-form__choice:has(input:focus-visible) {
    outline: 2px solid var(--rev-pink);
    outline-offset: 2px;
}

/* 種別が未選択のときの案内 */
.rev-form__guide {
    margin: 16px 0 0;
    font-size: 13.5px;
    line-height: 1.7;
    color: var(--rev-gray);
}

/* 表示条件で隠れている項目 */
.rev-form__field[hidden],
.rev-form__agree[hidden],
.rev-form__turnstile[hidden],
.rev-form__submit[hidden] {
    display: none;
}

/* エラー */
.rev-form__error {
    margin: 6px 0 0;
    font-size: 13px;
    font-weight: 700;
    color: #d63638;
}

.rev-form__error--global {
    margin: 0 0 26px;
    padding: 14px 18px;
    border-left: 4px solid #d63638;
    background: #fff2f2;
}

/* ハニーポット（画面には出さない） */
.rev-form__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* 同意チェック */
.rev-form__agree {
    margin-top: 34px;
    padding: 20px 22px;
    background: var(--rev-bg);
    border-radius: 4px;
    text-align: center;
}

.rev-form__agree.has-error {
    background: #fff2f2;
}

.rev-form__checkbox {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 14.5px;
    font-weight: 700;
    cursor: pointer;
}

/* 同意チェックも自前で描く */
.rev-form__checkbox input {
    -webkit-appearance: none;
    appearance: none;
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid var(--rev-black);
    border-radius: 2px;
    background: var(--rev-white);
    cursor: pointer;
}

.rev-form__checkbox input:checked {
    background-color: var(--rev-black);
    background-image: var(--rev-check-mark);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 11px 9px;
}

.rev-form__checkbox input:focus-visible {
    outline: 2px solid var(--rev-pink);
    outline-offset: 2px;
}

.rev-form__checkbox a {
    text-decoration: underline;
}

/* 文中のリンクが不自然に離れないよう、テキストは通常のインライン扱いにする */
.rev-form__checkbox > span {
    display: inline;
}

.rev-form__checkbox .rev-form__required {
    display: inline-block;
    margin-left: 10px;
    vertical-align: 1px;
}

/* Turnstile */
.rev-form__turnstile {
    display: flex;
    justify-content: center;
    margin-top: 26px;
}

.rev-form__submit {
    margin-top: 30px;
    text-align: center;
}

.rev-form__submit .rev-button {
    min-width: 280px;
    border: 0;
}

/* プライバシーポリシーに同意するまでは押せない */
.rev-form__submit .rev-button:disabled,
.rev-form__submit .rev-button:disabled:hover {
    background: #c4c4c4;
    color: #fff;
    opacity: 1;
    box-shadow: none;
    cursor: not-allowed;
}

.rev-form__notice {
    padding: 16px 20px;
    background: #fff8e5;
    border-left: 4px solid #dba617;
    font-size: 14px;
}

/* ---- モーダル ---- */
.rev-modal {
    position: fixed;
    inset: 0;
    z-index: 400;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    transition: opacity 0.25s var(--rev-ease);
}

.rev-modal[hidden] {
    display: none;
}

.rev-modal.is-open {
    opacity: 1;
}

.rev-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
}

.rev-modal__panel {
    position: relative;
    display: flex;
    flex-direction: column;
    width: min(100%, 640px);
    max-height: min(86vh, 900px);
    background: var(--rev-white);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
    transform: translateY(12px);
    transition: transform 0.25s var(--rev-ease);
}

.rev-modal.is-open .rev-modal__panel {
    transform: translateY(0);
}

.rev-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 24px;
    border-bottom: 1px solid #e4e4e4;
}

.rev-modal__title {
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rev-modal__close {
    position: relative;
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 0;
    background: transparent;
    border-radius: 50%;
    transition: background-color 0.2s var(--rev-ease);
}

.rev-modal__close:hover {
    background-color: rgba(0, 0, 0, 0.06);
}

.rev-modal__close::before,
.rev-modal__close::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 17px;
    height: 1.5px;
    margin: -1px 0 0 -8.5px;
    background: var(--rev-ink);
}

.rev-modal__close::before {
    transform: rotate(45deg);
}

.rev-modal__close::after {
    transform: rotate(-45deg);
}

.rev-modal__body {
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 26px 30px 30px;
}

.rev-modal__body .rev-single__content {
    margin-top: 0;
    font-size: 14px;
    line-height: 1.9;
}

.rev-modal__body h2 {
    margin-top: 1.8em;
    padding-bottom: 6px;
    border-bottom: 2px solid var(--rev-black);
    font-size: 17px;
}

.rev-modal__body h3 {
    margin-top: 1.4em;
    font-size: 15px;
}

.rev-modal__foot {
    flex: 0 0 auto;
    padding: 16px 24px 22px;
    border-top: 1px solid #e4e4e4;
    text-align: center;
}

.rev-modal__foot .rev-button {
    min-height: 46px;
    padding: 10px 40px;
    font-size: 14px;
}

/* 送信完了 */
.rev-form-thanks {
    padding: 40px 0 20px;
    text-align: center;
}

.rev-form-thanks__title {
    font-size: 23px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rev-form-thanks__text {
    margin-top: 18px;
    font-size: 15px;
    line-height: 1.95;
}

.rev-form-thanks__action {
    margin-top: 30px;
}

/* ============================================================
   11. レスポンシブ
   ============================================================ */
@media (max-width: 1180px) {
    :root {
        --rev-sidebar: 200px;
    }

    body.is-sub .rev-gnav {
        gap: 22px;
    }

    body.is-sub .rev-gnav__item > a {
        font-size: 15px;
    }
}

@media (max-width: 1024px) {
    :root {
        --rev-header-h: 68px;
    }

    /* トップも上部バーに切り替える */
    body.is-front .rev-header,
    body.is-sub .rev-header {
        width: 100%;
        height: var(--rev-header-h);
    }

    body.is-front .rev-header__inner,
    body.is-sub .rev-header__inner {
        flex-direction: row;
        align-items: center;
        height: 100%;
        padding: 0 18px;
    }

    body.is-front .rev-header__logo {
        margin-bottom: 0;
    }

    body.is-front .rev-header__logo img,
    body.is-sub .rev-header__logo img {
        width: 50px;
    }

    body.is-front .rev-header__nav,
    body.is-sub .rev-header__nav {
        display: none;
    }

    body.is-front .rev-burger {
        position: relative;
        top: auto;
        right: auto;
        margin-left: auto;
    }

    body.is-sub .rev-burger {
        margin-left: auto;
    }

    body.is-front .rev-main {
        margin-left: 0;
        padding-top: var(--rev-header-h);
    }

    /* 2カラム系を1カラムへ */
    .rev-top-business__grid,
    .rev-top-business__photos,
    .rev-top-news__list,
    .rev-news-archive__list,
    .rev-school-recommend__list,
    .rev-members,
    .rev-works__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .rev-top-news__head,
    .rev-top-promo__inner,
    .rev-bsec__body,
    .rev-class__top,
    .rev-class__teacher,
    .rev-flow__body,
    .rev-studio,
    .rev-school-hero__media {
        grid-template-columns: 1fr;
    }

    .rev-bcard:nth-child(2),
    .rev-bcard:nth-child(3),
    .rev-school-recommend__item:nth-child(2),
    .rev-school-recommend__item:nth-child(3) {
        margin-top: 0;
    }
    

    .rev-hero__image,
    .rev-hero__body {
        margin-left: 0;
    }

    .rev-hero__catch {
        position: static;
        width: 98%;
        margin-top: -26vw;
        margin-bottom: 0;
    }

    .rev-class__teacher {
        gap: 30px;
    }


    /* サイドバーが無くなるぶん、左右の余白を確保する */
    .rev-hero__catch,
    .rev-hero__body {
        margin-top: -45vw;
        padding-inline: var(--rev-gutter);
        transform: translate(0);
    }

    .rev-hero__body {
        width: 90%;
        margin: 8vw auto;
    }

    .rev-bsec__toggle button {
        width: 90%;
        border-radius: 0 0 6px 6px;
        transform: translateY(0);
    }

    .rev-top-promo .rev-container {
        width: 100%;
        margin: 0;
    }

    .rev-top-promo__figure video {
        height: min(63vw, 430px);
    }

    .rev-top-promo__logo {
        margin: 0 auto 47px;
        width: 50%;
    }

    .rev-top-promo__label {
        margin: 0 auto;
        width: 100%;
    }

    .rev-top-promo__body {
        padding-right: 0;
    }

    .rev-top-promo__catch,
    .rev-school-hero__catch-inner {
        padding-left: 0;
    }

    .rev-top-promo__catch::before,
    .rev-school-hero__catch-inner::before {
        display: none;
    }

    .rev-school-hero__catch {
        position: relative;
        max-width: 550px;
        padding: 24px 1.5em 50px;
        margin-top: -10vh;
        bottom: 3vh;
    }

    .rev-top-promo__body {
        gap: 40px;
        padding: 2em 0 2em 2em;
    }

    /* 1カラムになるので行高・ロゴ枠の高さ指定を解除する */
    .rev-school-hero__media {
        grid-template-rows: auto;
    }

    .rev-school-hero {
        min-height: auto;
    }

    .rev-school-hero__logo {
        height: auto;
        min-height: auto;
        padding: min(2.5vw, 20px);
    }

    .rev-school-hero + .rev-container {
        width: 95%;
    }

    .rev-school-hero__badges {
        margin: -48px 0 0 0;
        gap: 6px 0;
    }

    .rev-school-badge {
        font-size: min(2.8vw, 14px);
        padding: .6em 2em .6em 1.5em;
    }

    .rev-school-hero__logo img {
        max-width: 75px;
    }

    .rev-school-hero__photo img,
    .rev-school-hero__photo video {
        height: clamp(240px, 64vw, 520px);
    }

    .rev-school-recommend {
        padding-top: 30px;
    }

    .rev-school-recommend__list {
        margin-top: 3vw;
    }
}

@media (max-width: 767px) {
    body {
        font-size: 14px;
    }

    .sp-br {
        display: inline;
    }

    .pc-br {
        display: none;
    }

    :root {
        --rev-gutter: 10px;
    }

    .rev-page-header {
        min-height: 170px;
        padding: 36px 0 80px;
    }

    /* 記事詳細の見出し帯は、スマホでも控えめのまま */
    .rev-page-header--min {
        min-height: 0;
        padding: 26px 0 30px;
    }

    .rev-page-header--min .rev-page-header__title {
        font-size: 20px;
    }

    .rev-page-header__title {
        font-size: 30px;
    }

    .rev-page-intro {
        margin-top: -50px;
        background: linear-gradient(to bottom, transparent 0 50px, var(--rev-bg) 50px);
    }

    .rev-page-intro__box {
        padding: 24px 22px;
    }

    .rev-top-business__grid,
    .rev-top-business__photos,
    .rev-school-recommend__list,
    .rev-class__benefits,
    .rev-business__tabs {
        grid-template-columns: 1fr;
    }

    .rev-school-hero__catch {
        margin-top: 0;
    }

    .rev-school-recommend {
        padding-top: 4vw;
    }

    .rev-school-recommend__list {
        justify-items: center;
        --rev-card-gap: 15vw;
        margin-top: 5vw;
    }

    .rev-school-recommend__item {
        width: 100%;
        max-width: 460px;
    }

    .rev-school-recommend__text {
        font-size: min(4vw, 20px);
    }

    .rev-school-appeal {
        padding-top: 0;
    }

    .rev-school-appeal__badge {
        transform: translateY(-22px);
    }

    /* --- プレスリリース --- */

    /* 見出し下のVIEW MOREは隠し、カードの並びの中に入れる */
    .rev-top-news__head .rev-top-news__more {
        display: none;
    }

    .rev-top-news__more--inline {
        display: flex;
        align-items: stretch;
    }

    .rev-top-news__more--inline .rev-button {
        justify-content: center;
        height: 100%;
        min-height: 0;
        padding: 16px;
        font-size: 15px;
    }

    /* 1件目の大きいカードは正方形に */
    .rev-news-card--large .rev-news-card__thumb {
        aspect-ratio: 16 / 16;
    }

    /* 2列にして、3件目の右隣にVIEW MOREが入るようにする */
    .rev-top-news__list {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
    }

    .rev-business__tabs {
        border-width: 1px 0 0 1px;
    }

    .rev-mission__en {
        top: 4vw;
    }

    .rev-mission__list {
        margin: 70px auto 0;
        max-width: 420px;
    }

    .rev-mission__item {
        grid-template-columns: auto;
        gap: 12px;
        max-width: 640px;
        margin: 0 auto;
    }

    .rev-mission__item:nth-child(even) {
        grid-template-columns: auto;
    }

    .rev-mission__num {
        text-align: left;
        transform: translate(0);
    }

    .rev-mission__body {
        padding-left: min(15vw, 180px);
        margin-top: -15vw;
    }

    .rev-mission__figure {
        left: 50%;
        transform: translateX(-50%);
    }

    .rev-mission__item:nth-child(even) .rev-mission__figure {
        order: 0;
        left: 50%;
        transform: translateX(-50%);
    }

    .rev-footer__top {
        flex-direction: column;
        gap: 28px;
    }

    .rev-footer__list {
        flex-wrap: wrap;
        gap: 18px 34px;
    }

    .rev-footer__bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }

    .rev-hero {
        padding-bottom: 20px;
    }

    .rev-hero__slider {
        height: 110vw;
        --slice-stagger: 60ms;
    }

    .rev-hero__catch span:last-child {
        -webkit-text-stroke: 1px #000;
    }

    .rev-bcard,
    .rev-bsec__head,
    .rev-flow,
    .rev-single__inner,
    .rev-contact__inner {
        padding-left: 30px;
        padding-right: 30px;
    }

    .rev-works__grid {
        padding-left: 0;
        padding-right: 20px;
        gap: 26px 8px;
    }

    .rev-line-button {
        min-width: 0;
        width: 100%;
        font-size: min(4.85vw, 22px);
        padding: 10px 18px;
    }

    .rev-class {
        padding-left: min(8vw, 30px);
        padding-right: min(5vw, 30px);
    }

    .rev-class__lead {
        font-size: min(4vw, 20px);
    }

    .rev-class__lead .rev-mark {
        padding: 4px 10px;
    }

    .rev-class__name {
        margin-left: -30px;
        width: 116%;
        padding: .25em 1.5em;
        text-align: left;
    }

    .rev-class__subtitle {
        margin-left: 0;
    }

    .rev-class__schedule,
    .rev-class__prices,
    .rev-class__benefits {
        padding-left: 0;
        grid-template-columns: auto;
        margin: 1.5em 0 1.5em 1.5em;
    }

    .rev-class__text {
        font-size: min(3.25vw, 14px);
    }

    /* 料金は「クラス名 ： 金額」を1行として縦に積む
       （PHP側でインラインの grid 指定があるため !important で打ち消す） */
    .rev-class__prices {
        grid-template-columns: 0.85fr 1fr;
        gap: 6px 10px;
    }

    .rev-class__price-label {
        grid-column: 1 / -1;
        grid-row: auto;
    }

    .rev-class__price-name {
        grid-column: 1 !important;
        grid-row: auto !important;
        padding-left: 1em;
    }

    .rev-class__price-value {
        grid-column: 2 !important;
        grid-row: auto !important;
    }

    .rev-class__trial {
        grid-column: 1 / -1 !important;
        grid-row: auto !important;
        margin-top: 8px;
    }

    .rev-class__teacher {
        margin-left: 0;
    }

    .rev-class__teacher-head {
        gap: 0;
        flex-direction: column;
        align-items: flex-start;
        margin-right: -50px;
    }

    .rev-class__teacher-catch,
    .rev-class__teacher-text {
        padding: 1em 0 1em 1.5em;
    }

    .rev-class__teacher-photo img {
        width: 58%;
        height: auto;
    }

    .rev-class__time-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }

    .rev-class__time {
        width: 100%;
        max-width: 400px;
        text-align: left;
        padding: .25em 1em;
    }

    .rev-class__time-name {
        padding-left: 1.5em;
    }

    .rev-results__row {
        grid-template-columns: 1fr;
    }

    .rev-results__year {
        text-align: left;
    }

    .rev-division__headmain {
        padding: 22px 16px 22px 26px;
    }

    .rev-division__toggle {
        flex-basis: 48px;
    }

    .rev-division__panel {
        padding: 18px 16px 26px;
    }

    .rev-team-slider__controls {
        justify-content: center;
    }

    .rev-team__logo {
        left: 50%;
        bottom: 0;
        top: auto;
        width: 120px;
        height: 120px;
        margin: 0;
        transform: translateX(-50%);
    }

    .rev-team__intro {
        padding-top: min(4vw, 54px);
    }

    .rev-team-slider__slide {
        flex-basis: 100%;
    }

    .rev-school-appeal__inner {
        grid-template-columns: 1fr;
        justify-items: center;
        text-align: center;
    }

    /* お知らせは日付を上に置く */
    .rev-school-news__link {
        flex-direction: column;
        gap: 4px;
    }

    .rev-school-social__main {
        flex-direction: column;
        gap: 16px;
    }

    /* 見出しに被らないよう装飾を少し下げる */
    .rev-school-social.is-decorated .rev-school-social__main::after {
        translate: -50% 10%;
    }

    .rev-school-social__title {
        text-align: center;
    }

    .rev-studio__rows {
        width: 85%;
        margin: 0 auto;
    }

    .rev-studio__row {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .rev-faq__buttons a {
        min-width: 0;
        width: 100%;
    }

    /* iOSは16px未満の入力欄でフォーカスすると自動でズームするため、スマホでは16pxにする */
    .rev-form input[type="text"],
    .rev-form input[type="email"],
    .rev-form input[type="tel"],
    .rev-form input[type="url"],
    .rev-form select,
    .rev-form textarea {
        font-size: 16px;
    }

    /* フォームは1カラムにする */
    .rev-form__fields {
        gap: 22px;
    }

    .rev-form__submit .rev-button {
        min-width: 0;
        width: 100%;
    }

    .rev-form__checkbox {
        align-items: flex-start;
        text-align: left;
    }

    .rev-form__checkbox > span {
        display: inline;
    }

    .rev-form__checkbox input {
        margin-top: 3px;
    }

    .rev-modal {
        padding: 14px;
    }

    .rev-modal__panel {
        max-height: 90vh;
    }

    .rev-modal__head {
        padding: 16px 18px;
    }

    .rev-modal__body {
        padding: 20px 18px 24px;
    }

    /* 会社情報は項目名と内容を縦並びにする */
    .rev-company-info__row {
        grid-template-columns: 1fr;
    }

    .rev-company-info__label {
        padding: 12px 18px;
    }

    .rev-company-info__value {
        padding: 16px 18px;
    }

    .rev-cta__title {
        font-size: 26px;
    }

    .rev-button--pill {
        min-height: 58px;
        padding: .5em 1em;
        font-size: min(3.5vw, 15px);
        width: 100%;
    }

    .rev-single__title {
        font-size: 21px;
    }
}

/* ============================================================
   画面下部に追従するボタン（スクール詳細）
   ============================================================ */
.rev-sticky-cta {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 180;
    display: flex;
    justify-content: center;
    gap: 10px;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.12);
    /* JSがスクロール量を見て is-visible を付けるまでは隠しておく */
    transform: translateY(110%);
    transition: transform 0.45s var(--rev-ease);
}

.rev-sticky-cta.is-visible {
    transform: translateY(0);
}

.rev-sticky-cta__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    flex: 1 1 0;
    max-width: 380px;
    padding: 14px 18px;
    font-size: min(3.8vw, 15px);
    font-weight: 700;
    letter-spacing: 0.06em;
    line-height: 1.4;
    text-align: center;
    transition: opacity 0.25s var(--rev-ease);
}

.rev-sticky-cta__button:hover {
    opacity: 0.8;
}

/* グラデーションの枠付き。上下の帯は申し込みボタンと揃えている */
/* 色は管理画面から上書きできる（未指定なら見た目ごとの既定色） */
.rev-sticky-cta__button--line {
    background-color: var(--rev-btn-bg, var(--rev-black));
    color: var(--rev-btn-text, var(--rev-white));
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    background-image:
        linear-gradient(var(--rev-btn-bg, var(--rev-black)), var(--rev-btn-bg, var(--rev-black))),
        var(--rev-gradient);
    background-origin: border-box;
    background-clip: padding-box, border-box;
}

.rev-sticky-cta__button--accent {
    background: var(--rev-btn-bg, var(--rev-pink));
    color: var(--rev-btn-text, var(--rev-white));
    border: 2px solid var(--rev-btn-border, var(--rev-black));
}

.rev-sticky-cta__button--plain {
    border: 1px solid var(--rev-btn-border, var(--rev-black));
    background: var(--rev-btn-bg, var(--rev-white));
    color: var(--rev-btn-text, var(--rev-ink));
}

/* アイコン。色は管理画面で指定できるよう currentColor に任せる */
.rev-sticky-cta__mark {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
}

.rev-sticky-cta__mark svg {
    width: 24px;
    height: auto;
    fill: currentColor;
}

/* 追従ボタンの分だけ、ページ末尾に余白を足す */
body.has-sticky-cta {
    padding-bottom: 84px;
}

@media (prefers-reduced-motion: reduce) {
    .rev-sticky-cta {
        transition-duration: 0.01ms;
    }
}

/* 画面が広いときは帯をやめて、ボタンだけを右端に寄せる */
@media (min-width: 1200px) {
    .rev-sticky-cta {
        justify-content: flex-end;
        gap: 8px;
        padding: 0 20px 24px 0;
        background: none;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        box-shadow: none;
        pointer-events: none;
    }

    .rev-sticky-cta__button {
        flex: 0 0 auto;
        max-width: none;
        padding: 16px 26px;
        font-size: 15px;
        pointer-events: auto;
        box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
    }

    /* 帯がなくなるので、本文の下余白も不要 */
    body.has-sticky-cta {
        padding-bottom: 0;
    }
}
