/*
Theme Name:        オアイテ (Oaite)
Theme URI:         https://oaite.net/
Author:            ECDAO
Author URI:        https://oaite.net/about/
Description:       パパ活アプリ・出会い系・交際クラブ比較メディア「オアイテ」の公式テーマ。ヌキドコ流SEO/AIOノウハウ完全継承＋18問×60タイプ診断機能＋AI凛イメージキャラクター搭載。ecdao-design Skill v0.5準拠。
Version:           1.1.0
Requires at least: 6.4
Requires PHP:      8.1
License:           GPL v2 or later
License URI:       https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:       oaite
Tags:              custom-menu, custom-logo, featured-images, threaded-comments, translation-ready
*/

/* ==========================================================================
   Google Fonts（ecdao-design Skill 規定の5系統）
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Kiwi+Maru:wght@300;400;500&family=Inter:wght@400;500;700&family=Montserrat:wght@300;400;500;600;700&family=Noto+Sans+JP:wght@300;400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap');

/* ==========================================================================
   01. :root 変数（ecdao-design Skill v0.5「オアイテ」セクション完全準拠）
   ========================================================================== */

:root {
    /* ===== 背景階層（4段） ===== */
    --bg:          #ffffff;
    --bg-soft:     #fafafc;
    --bg-cream:    #fdfcf9;
    --bg-card:     #ffffff;
    --bg2:         #fafafc;
    --bg3:         #f3f3f7;
    --bg4:         #ececf0;

    /* ===== アクセント階層（5段・オアイテはベージュゴールド） ===== */
    --accent:        #b69e84;
    --accent-soft:   #f5efe7;
    --accent-deep:   #9d8770;
    --accent-dark:   #6b5d4b;
    --accent-glow:   rgba(182, 158, 132, 0.15);
    --accent-subtle: rgba(182, 158, 132, 0.06);

    /* ===== 暖色階層（オアイテ固有） ===== */
    --warm-1: #fdf6ed;
    --warm-2: #f7ead8;
    --warm-3: #e8d4b3;
    --warm-4: #d4a87a;
    --warm-5: #b8825e;

    /* ===== ブランドカラー（ロゴ固有・限定使用） =====
       ピンクは「凛のアクセント」「重要な注意喚起」「新着バッジ」など、ここぞの場面でのみ使う。
       テーマのベース配色はあくまでベージュゴールド系（--accent）で統一。 */
    --brand-black: #0F0F0F;
    --brand-pink:  #ED5672;
    --brand-pink-soft: #fde9ed;
    --brand-pink-deep: #d9405b;

    /* ===== テキスト階層（4段・純黒禁止） ===== */
    --t1: #1a1a24;
    --t2: #4a4a56;
    --t3: #8a8a96;
    --t4: #b8b8c0;

    /* ===== ボーダー階層（3段） ===== */
    --line:      #ececf0;
    --line-soft: #f4f4f7;
    --b3:        #dadae0;

    /* ===== シャドウ階層（4段・極軽） ===== */
    --s1: 0 1px 4px rgba(0,0,0,0.04);
    --s2: 0 4px 20px rgba(0,0,0,0.04);
    --s3: 0 12px 32px rgba(0,0,0,0.06);
    --s-accent: 0 8px 24px var(--accent-glow);

    /* ===== レイアウト ===== */
    --max-w:    1400px;
    --pad-x:    40px;
    --pad-x-sp: 16px;

    /* ===== 角丸階層（6段） ===== */
    --r1:     6px;
    --r2:     10px;
    --r3:     14px;
    --r4:     20px;
    --r5:     28px;
    --r-full: 999px;

    /* ===== トランジション（3段） ===== */
    --t-fast: 0.1s ease;
    --t-base: 0.2s ease;
    --t-slow: 0.3s ease;

    /* ===== フォント（5系統） ===== */
    --font-kiwi:  'Kiwi Maru', 'Noto Sans JP', sans-serif;
    --font-sans:  'Noto Sans JP', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --font-serif: 'Noto Serif JP', serif;
    --font-inter: 'Inter', 'Noto Sans JP', sans-serif;
    --font-mont:  'Montserrat', 'Inter', sans-serif;
    --font:       var(--font-sans);

    /* ===== ヘッダー高さ ===== */
    --h-bar:   28px;
    --h-main:  60px;
    --h-gnav:  40px;
    --h-total: 128px;
}

/* ==========================================================================
   02. リセット・ベース
   ========================================================================== */

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

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    font-family: var(--font);
    font-size: 15px;
    line-height: 1.7;
    color: var(--t1);
    background: var(--bg);
    word-break: break-word;
    overflow-x: hidden;
}

img,
svg,
video {
    max-width: 100%;
    height: auto;
    display: block;
}

a {
    color: var(--accent-dark);
    text-decoration: none;
    transition: color var(--t-base);
}

a:hover { color: var(--accent-deep); }

button {
    font-family: inherit;
    cursor: pointer;
    background: none;
    border: none;
    color: inherit;
}

input,
textarea,
select {
    font-family: inherit;
    font-size: inherit;
    color: inherit;
}

ul, ol { list-style: none; }

table {
    border-collapse: collapse;
    width: 100%;
}

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

/* ==========================================================================
   03. レイアウト・コンテナ
   ========================================================================== */

.oai-container {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 var(--pad-x);
}

.oai-container-narrow {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 var(--pad-x);
}

.oai-section          { padding: 60px 0; }
.oai-section--tight   { padding: 32px 0; }
.oai-section--wide    { padding: 100px 0; }
.oai-section--cream   { background: var(--bg-cream); }
.oai-section--accent-soft { background: var(--accent-soft); }

@media (max-width: 767px) {
    .oai-container,
    .oai-container-narrow { padding: 0 var(--pad-x-sp); }
    .oai-section { padding: 40px 0; }
    .oai-section--wide { padding: 60px 0; }
}

/* ==========================================================================
   04. タイポグラフィ
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font);
    font-weight: 700;
    color: var(--t1);
    line-height: 1.3;
    letter-spacing: 0.05em;
}

h1 { font-size: 32px; }
h2 { font-size: 26px; }
h3 { font-size: 18px; }
h4 { font-size: 16px; }

p { line-height: 1.8; margin-bottom: 1em; }
p:last-child { margin-bottom: 0; }

strong { font-weight: 700; color: var(--t1); }
em     { font-style: italic; }
small  { font-size: 12px; color: var(--t3); }

mark {
    background: var(--accent-soft);
    color: var(--accent-dark);
    padding: 1px 4px;
    border-radius: 3px;
}

.text-mont {
    font-family: var(--font-mont);
    letter-spacing: 0.1em;
}

.text-serif { font-family: var(--font-serif); }
.text-kiwi  { font-family: var(--font-kiwi); }

.text-accent      { color: var(--accent-dark); }
.text-accent-deep { color: var(--accent-deep); }
.text-muted       { color: var(--t3); }
.text-muted-strong{ color: var(--t2); }

@media (max-width: 767px) {
    h1 { font-size: 24px; }
    h2 { font-size: 20px; }
    h3 { font-size: 16px; }
}

/* ==========================================================================
   05. ヘッダー（18歳バー + メインヘッダー + グローバルナビ）
   ========================================================================== */

.oai-age-bar {
    background: var(--t1);
    color: #fff;
    text-align: center;
    font-size: 11px;
    font-family: var(--font-mont);
    letter-spacing: 0.05em;
    padding: 7px var(--pad-x);
    line-height: 1.6;
    overflow: hidden;
}
.oai-age-bar__track {
    display: inline;
}
.oai-age-bar__text {
    display: inline;
}
/* PC: 2つ目のテキストは非表示・静的表示 */
@media (min-width: 768px) {
    .oai-age-bar__text:nth-child(2) { display: none; }
}
/* SP: マーキー化（2つのテキストが継ぎ目なくループ） */
@media (max-width: 767px) {
    .oai-age-bar {
        font-size: 10px;
        padding: 6px 0;
        line-height: 1.5;
        white-space: nowrap;
    }
    .oai-age-bar__track {
        display: inline-block;
        animation: oaiMarquee 28s linear infinite;
    }
    .oai-age-bar__text {
        display: inline-block;
        padding-right: 60px; /* 文末から次のテキスト開始までの余白 */
    }
    @keyframes oaiMarquee {
        0%   { transform: translateX(0); }
        100% { transform: translateX(-50%); }
    }
}
@media (prefers-reduced-motion: reduce) {
    .oai-age-bar__track { animation: none !important; }
}

.oai-header {
    background: var(--bg);
    border-bottom: 1px solid var(--line);
    position: relative;
    z-index: 100;
}

.oai-header__inner {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 var(--pad-x);
    height: var(--h-main);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.oai-header__logo {
    display: flex;
    align-items: center;
    margin: 0;
    flex-shrink: 0;
}

.oai-header__logo a {
    display: inline-flex;
    align-items: center;
    color: var(--t1);
    text-decoration: none;
    font-family: var(--font-mont);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: 0.05em;
}

.oai-header__logo img,
.oai-header__logo svg {
    height: 30px;
    width: auto;
    display: block;
}

/* インラインSVGロゴ（class="oai-logo-svg"）の色制御 */
.oai-logo-svg .oai-logo__text  { fill: var(--brand-black); transition: fill var(--t-base); }
.oai-logo-svg .oai-logo__heart { fill: var(--brand-pink);  transition: fill var(--t-base); }

/* ホバーで微妙にトーン変化（控えめ・ECDAOデザインSkill準拠） */
.oai-header__logo a:hover .oai-logo__heart { fill: var(--brand-pink-deep); }

@media (max-width: 767px) {
    .oai-header__inner { padding: 0 var(--pad-x-sp); }
    .oai-header__logo a { font-size: 18px; }
    .oai-header__logo img,
    .oai-header__logo svg { height: 24px; }
}

.oai-gnav {
    border-bottom: 1px solid var(--line);
    background: var(--bg);
    height: var(--h-gnav);
}

.oai-gnav__inner {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 var(--pad-x);
    height: 100%;
    display: flex;
    align-items: center;
    gap: 28px;
    overflow-x: auto;
    scrollbar-width: none;
}

.oai-gnav__inner::-webkit-scrollbar { display: none; }

.oai-gnav__item {
    font-family: var(--font-mont);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: 0.1em;
    color: var(--t2);
    text-transform: uppercase;
    white-space: nowrap;
    padding: 4px 0;
    border-bottom: 2px solid transparent;
    transition: color var(--t-base), border-color var(--t-base);
}

.oai-gnav__item:hover,
.oai-gnav__item.is-current {
    color: var(--accent-dark);
    border-bottom-color: var(--accent);
}

@media (max-width: 767px) {
    .oai-gnav__inner { padding: 0 var(--pad-x-sp); gap: 20px; }
    .oai-gnav__item { font-size: 11px; }
}

.oai-header__cta {
    display: inline-flex;
    align-items: center;
    padding: 8px 18px;
    background: var(--accent-deep);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    border-radius: var(--r-full);
    letter-spacing: 0.05em;
    transition: transform var(--t-base), box-shadow var(--t-base);
}

.oai-header__cta:hover {
    transform: translateY(-1px);
    box-shadow: var(--s-accent);
    color: #fff;
}

@media (max-width: 767px) {
    .oai-header__cta { padding: 6px 14px; font-size: 11px; }
}

/* ==========================================================================
   06. HEROエリア（PC: 凛右側 + SVGコピー左 / SP: 凛上半身 + SVGコピー下グラデ重ね）
   ========================================================================== */

.hero {
    position: relative;
    overflow: hidden;
    background: var(--warm-1);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

/* 背景画像（PC/SP共通基底） */
.hero-bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-repeat: no-repeat;
    z-index: 0;
    pointer-events: none; /* 背景画像はクリック奪わない */
    /* 福井海鮮シネマティック演出：blurからの自動着地（JSなしでも動く） */
    filter: brightness(0.97) contrast(1.08) saturate(1.02) blur(10px);
    transform: scale(1.15) translateY(20px);
    animation: heroBgLand 2.2s cubic-bezier(.19, 1, .22, 1) 0.15s forwards;
    will-change: transform, filter;
}

@keyframes heroBgLand {
    to {
        filter: brightness(1.0) contrast(1.05) saturate(1.02) blur(0);
        transform: scale(1) translateY(0);
    }
}

/* JS制御版（.active）も保険として残す */
.hero-bg.active {
    filter: brightness(1.0) contrast(1.05) saturate(1.02) blur(0);
    transform: scale(1) translateY(0);
}

.hero-bg--pc { background-position: center center; }
.hero-bg--sp { background-position: center top; display: none; }

@media (max-width: 767px) {
    .hero-bg--pc { display: none; }
    .hero-bg--sp { display: block; }
}

/* SP用 下からのオフホワイトグラデ（文字視認性確保） */
.hero-gradient-sp {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        180deg,
        rgba(253, 246, 237, 0)    0%,
        rgba(253, 246, 237, 0)    30%,
        rgba(253, 246, 237, 0.45) 50%,
        rgba(253, 246, 237, 0.85) 75%,
        rgba(253, 246, 237, 0.96) 100%
    );
    display: none;
    opacity: 0;
}

@media (max-width: 767px) {
    .hero-gradient-sp {
        display: block;
        animation: heroGradFade 1.4s ease 0.8s forwards;
    }
}

@keyframes heroGradFade {
    to { opacity: 1; }
}

/* JS制御版（.active）も保険として残す */
.hero-bg.active ~ .hero-gradient-sp { opacity: 1; }

/* キャプション領域 */
.hero-caption {
    position: relative;
    z-index: 3;
    max-width: var(--max-w);
    width: 100%;
    margin: 0 auto;
    padding: 40px var(--pad-x);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

/* h1 ヘッドライン（SVGコピー埋め込み） */
.hero-headline {
    margin: 0 0 24px;
    line-height: 0;
    opacity: 0;
    transform: translateY(20px);
    filter: blur(4px);
    animation: heroHeadlineFade 1.0s ease 0.4s forwards;
}

@keyframes heroHeadlineFade {
    0%   { opacity: 0; transform: translateY(20px); filter: blur(4px); }
    100% { opacity: 1; transform: translateY(0);    filter: blur(0); }
}

.hero-headline__visual {
    display: block;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
    pointer-events: none;
}

.hero-headline__visual--pc {
    width: clamp(420px, 42vw, 620px);
    max-width: 100%;
}

.hero-headline__visual--sp { display: none; }

@media (max-width: 767px) {
    .hero-headline__visual--pc { display: none; }
    .hero-headline__visual--sp {
        display: block;
        width: 92vw;
        max-width: 540px;
    }
}

/* 説明文 */
.hero-caption .hero-desc {
    font-size: 14px;
    line-height: 1.9;
    color: #ffffff;
    text-shadow: 0 0px 10px rgba(0, 0, 0, 0.45);
    max-width: 540px;
    margin: 0 0 28px;
    opacity: 0;
    transform: translateY(16px);
    animation: heroHeadlineFade 1.0s ease 0.8s forwards;
}

/* CTAボタン群 */
.hero-caption .hero-cta {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    opacity: 0;
    transform: translateY(12px);
    animation: heroHeadlineFade 1.0s ease 1.1s forwards;
    position: relative;
    z-index: 4;
}

/* CTA内の各ボタンも明示的にクリック領域確保 */
.hero-caption .hero-cta .btn {
    position: relative;
    z-index: 4;
    pointer-events: auto;
}

/* ====== PCレイアウト調整 ====== */
@media (min-width: 768px) {
    .hero-caption {
        /* PC: 左寄せ・右半分は凛が見えるよう空ける + 上に余白 */
        padding-right: 48%;
        padding-top: 10%;
    }
}

/* ====== SPレイアウト調整 ====== */
@media (max-width: 767px) {
    .hero {
        /* SP: ファーストビューにぴったりフィット */
        min-height: 100svh;
        height: 100svh;
        max-height: 100svh;
        position: relative;
        align-items: stretch;
    }
    .hero-caption {
        /* キャプションを画面下に絶対配置（凛画像は上半分が見える） */
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        padding: 0 var(--pad-x-sp) 20px;
        align-items: stretch;
    }
    .hero-headline {
        margin: 0 0 12px;
        text-align: center;
    }
    .hero-headline__visual--sp { margin: 0 auto; }
    .hero-caption .hero-desc {
        font-size: 11px;
        line-height: 1.7;
        text-align: center;
        margin: 0 auto 14px;
        color: #fff; /* SPは白文字 */
        text-shadow: 0 1px 6px rgba(60, 50, 40, 0.35);
        white-space: nowrap; /* 改行しない */
        max-width: 100%;
        overflow: visible;
    }
    .hero-caption .hero-desc br { display: none; } /* PC用<br>はSPで非表示 */
    .hero-caption .hero-cta {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        width: 100%;
    }
    .hero-caption .hero-cta .btn {
        padding: 11px 8px;
        font-size: 11px;
        white-space: nowrap;
    }
}

/* ==========================================================================
   07. section-head-v5（最頻出コンポーネント・ecdao-design準拠）
   ========================================================================== */

.section-head-v5 {
    max-width: var(--max-w);
    margin: 0 auto 24px;
    padding: 0 var(--pad-x);
    position: relative;
}

.section-kicker {
    font-family: var(--font-mont);
    font-weight: 400;
    font-size: 11px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 8px;
    display: inline-block;
}

.section-kicker::before {
    content: '';
    display: inline-block;
    width: 24px;
    height: 1px;
    background: var(--accent);
    vertical-align: middle;
    margin-right: 10px;
}

.section-title {
    font-size: 26px;
    font-weight: 700;
    color: var(--t1);
    margin-bottom: 6px;
    line-height: 1.3;
    letter-spacing: 0.05em;
}

.section-desc {
    font-size: 13px;
    color: var(--t2);
    line-height: 1.8;
    max-width: 720px;
}

.section-more {
    display: inline-flex;
    align-items: center;
    margin-top: 14px;
    font-family: var(--font-mont);
    font-size: 12px;
    color: var(--accent-dark);
    letter-spacing: 0.08em;
    gap: 4px;
    transition: gap var(--t-base);
}

.section-more:hover { gap: 8px; color: var(--accent-deep); }

@media (max-width: 767px) {
    .section-head-v5 { padding: 0 var(--pad-x-sp); }
    .section-title { font-size: 20px; }
}

/* ==========================================================================
   08. カード
   ========================================================================== */

.card {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r3);
    box-shadow: var(--s1);
    padding: 26px;
    transition: transform var(--t-base), box-shadow var(--t-base), border-color var(--t-base);
}

.card:hover {
    transform: translateY(-2px);
    box-shadow: var(--s2);
    border-color: var(--accent-soft);
}

.card--cream  { background: var(--bg-cream); }
.card--soft   { background: var(--accent-soft); border-color: transparent; }
.card--ghost  { background: transparent; border-color: var(--line); box-shadow: none; }

.card__head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}

.card__title {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.4;
    color: var(--t1);
}

.card__title a { color: inherit; }
.card__title a:hover { color: var(--accent-dark); }

.card__body {
    font-size: 14px;
    line-height: 1.8;
    color: var(--t2);
}

.card__meta {
    font-size: 11px;
    color: var(--t3);
    letter-spacing: 0.05em;
    font-family: var(--font-mont);
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--line-soft);
}

@media (max-width: 767px) {
    .card { padding: 20px; }
}

/* ==========================================================================
   09. ボタン
   ========================================================================== */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 28px;
    border-radius: var(--r2);
    font-family: var(--font);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.05em;
    text-decoration: none;
    cursor: pointer;
    border: none;
    white-space: nowrap;
    line-height: 1;
    transition: transform var(--t-base), box-shadow var(--t-base), background var(--t-base);
}

.btn-primary {
    background: var(--accent-deep);
    color: #fff;
}

.btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: var(--s-accent);
    color: #fff;
    background: var(--accent-dark);
}

.btn-secondary {
    background: var(--bg-cream);
    color: var(--accent-dark);
    border: 1px solid var(--line);
}

.btn-secondary:hover {
    transform: translateY(-1px);
    background: var(--accent-soft);
    border-color: var(--accent);
    color: var(--accent-dark);
}

.btn-ghost {
    background: transparent;
    color: var(--accent-dark);
    border: 1px solid var(--accent);
}

.btn-ghost:hover {
    background: var(--accent);
    color: #fff;
}

.btn-pill  { border-radius: var(--r-full); }
.btn-lg    { padding: 18px 36px; font-size: 14px; }
.btn-sm    {
    padding: 15px 18px;
    font-size: 12px;
    border-radius: 10px;
    width: 90% !important;
    margin: 0 auto;
}
.btn-block { display: flex; width: 100%; }

/* ===== btn-cv: コンバージョン誘導専用（アフィリリンクCTA） =====
   ベージュ系の本体カラーに対し、アクション喚起をピンクで強調する。
   既存の btn-primary に追加で付与する形で使う。
   例: <a class="btn btn-primary btn-cv btn-pill btn--arrow">公式サイトでチェック</a>
*/
.btn-cv {
    background: #e94e6d !important;
    background-image: linear-gradient(135deg, #ee5d7b, #e94e6d) !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 4px 14px rgba(233, 78, 109, 0.28);
}
.btn-cv:hover {
    background: #d63d5b !important;
    background-image: linear-gradient(135deg, #e94e6d, #d63d5b) !important;
    color: #fff !important;
    box-shadow: 0 8px 20px rgba(233, 78, 109, 0.38);
    transform: translateY(-2px);
}
.btn-cv:active {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(233, 78, 109, 0.3);
}
/* btn--arrow との組み合わせ時、矢印も白に */
.btn-cv.btn--arrow::after {
    background-color: #fff;
}

/* ===== Chevron アイコン（マスク方式・currentColor継承） ===== */

/* 単体アイコンとして使う場合 */
.oai-chevron-right,
.oai-chevron-left {
    display: inline-block;
    width: 0.7em;
    height: 0.7em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    vertical-align: -1px;
    flex-shrink: 0;
}

.oai-chevron-right {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 18 15 12 9 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 18 15 12 9 6'/></svg>");
}

.oai-chevron-left {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='15 18 9 12 15 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='15 18 9 12 15 6'/></svg>");
}

/* ボタンに自動矢印を付けるモディファイア（オプトイン） */
.btn--arrow::after,
.btn--arrow-left::before,
.section-more::after {
    content: '';
    display: inline-block;
    width: 0.7em;
    height: 0.7em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    flex-shrink: 0;
    transition: transform var(--t-base);
}

.btn--arrow::after,
.section-more::after {
    margin-left: 0.4em;
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 18 15 12 9 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 18 15 12 9 6'/></svg>");
}

.btn--arrow-left::before {
    margin-right: 0.4em;
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='15 18 9 12 15 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='15 18 9 12 15 6'/></svg>");
}

/* ホバー時の控えめな動き */
.btn--arrow:hover::after,
.section-more:hover::after { transform: translateX(2px); }
.btn--arrow-left:hover::before { transform: translateX(-2px); }

/* section-more 既存の transition gap は不要に */
.section-more { display: inline-flex; align-items: center; }

/* ==========================================================================
   10. ピル / バッジ
   ========================================================================== */

.pill {
    display: inline-flex;
    align-items: center;
    padding: 4px 12px;
    background: var(--accent-soft);
    color: var(--accent-dark);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.05em;
    border-radius: var(--r-full);
    line-height: 1.4;
}

.pill--outline { background: transparent; border: 1px solid var(--line); color: var(--t2); }
.pill--accent  { background: var(--accent); color: #fff; }
.pill--warm    { background: var(--warm-2); color: var(--warm-5); }

.badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    font-family: var(--font-mont);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: var(--r1);
}

.badge--new    { background: var(--brand-pink); color: #fff; }
.badge--hot    { background: var(--warm-5); color: #fff; }
.badge--accent { background: var(--accent-deep); color: #fff; }

/* ==========================================================================
   11. グリッド
   ========================================================================== */

.grid { display: grid; gap: 20px; }
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
.grid-cols-5 { grid-template-columns: repeat(5, 1fr); }

@media (max-width: 1024px) {
    .grid-cols-4 { grid-template-columns: repeat(3, 1fr); }
    .grid-cols-5 { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 767px) {
    .grid-cols-2,
    .grid-cols-3,
    .grid-cols-4,
    .grid-cols-5 { grid-template-columns: 1fr; }
}

.grid-scroll-sp {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(4, 1fr);
}

/* タイプから探すなど5列対応 */
.grid-scroll-sp.grid-cols-5 { grid-template-columns: repeat(5, 1fr); }

@media (max-width: 1024px) {
    .grid-scroll-sp,
    .grid-scroll-sp.grid-cols-5 { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 767px) {
    .grid-scroll-sp {
        display: flex;
        overflow-x: auto;
        gap: 12px;
        padding: 0 var(--pad-x-sp);
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .grid-scroll-sp::-webkit-scrollbar { display: none; }
    .grid-scroll-sp > * {
        flex: 0 0 240px;
        scroll-snap-align: start;
    }
}

/* ==========================================================================
   12. パンくず
   ========================================================================== */

.oai-breadcrumb {
    max-width: 1400px;
    margin: 0 auto;
    padding: 12px var(--pad-x);
    box-sizing: border-box;
    font-size: 12px;
    font-family: var(--font);
    color: var(--t3);
}

@media (max-width: 767px) {
    .oai-breadcrumb { padding: 12px var(--pad-x-sp); }
}

.oai-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.oai-breadcrumb a {
    color: var(--t2);
    transition: color var(--t-base);
}

.oai-breadcrumb a:hover { color: var(--accent-dark); }

.oai-breadcrumb .sep {
    color: var(--t4);
    margin: 0 4px;
    font-family: var(--font-mont);
}

.oai-breadcrumb li:last-child span {
    color: var(--t1);
    font-weight: 500;
}

/* ==========================================================================
   13. ページネーション
   ========================================================================== */

.pagination,
.oai-pagination .nav-links {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
    margin: 40px 0;
}

.pagination .page-numbers,
.oai-pagination .nav-links > * {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: 50%;
    color: var(--t2);
    font-family: var(--font-inter);
    font-weight: 500;
    font-size: 13px;
    text-decoration: none;
    transition: all var(--t-base);
}

.pagination .page-numbers.current,
.oai-pagination .nav-links .current {
    background: var(--accent-deep);
    color: #fff;
    border-color: var(--accent-deep);
}

.pagination .page-numbers:hover:not(.current),
.oai-pagination .nav-links a:hover {
    border-color: var(--accent);
    color: var(--accent-dark);
    transform: translateY(-1px);
}

.pagination .dots {
    border-color: transparent;
    background: transparent;
}

/* ==========================================================================
   14. アプリ詳細ページ
   ========================================================================== */

.oai-app-header {
    display: flex;
    align-items: flex-start;
    gap: 28px;
    padding: 32px 0;
    border-bottom: 1px solid var(--line);
    margin-bottom: 40px;
}

.oai-app-header__logo {
    flex: 0 0 120px;
    width: 120px;
    height: 120px;
    border-radius: var(--r3);
    background: var(--bg-cream);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.oai-app-header__logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.oai-app-header__body { flex: 1; }

.oai-app-header__name {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: 0.05em;
    margin-bottom: 8px;
}

.oai-app-header__sub {
    font-size: 13px;
    color: var(--t2);
    margin-bottom: 16px;
    line-height: 1.8;
}

.oai-app-header__meta {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}

.oai-app-header__cta {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.oai-app-header__updated {
    font-size: 11px;
    color: var(--t3);
    font-family: var(--font-mont);
    letter-spacing: 0.05em;
    margin-top: 12px;
}

@media (max-width: 767px) {
    .oai-app-header {
        flex-direction: column;
        gap: 20px;
        padding: 24px 0;
    }
    .oai-app-header__logo {
        flex: 0 0 100px;
        width: 100px;
        height: 100px;
    }
    .oai-app-header__name { font-size: 22px; }
}

.oai-data-table {
    width: 100%;
    border-collapse: collapse;
    margin: 24px 0;
    background: var(--bg-cream);
    border-radius: var(--r3);
    overflow: hidden;
}

.oai-data-table th,
.oai-data-table td {
    padding: 14px 18px;
    text-align: left;
    font-size: 14px;
    line-height: 1.7;
    border-bottom: 1px solid var(--line);
    vertical-align: top;
}

.oai-data-table th {
    width: 32%;
    background: var(--accent-soft);
    color: var(--accent-dark);
    font-weight: 700;
    letter-spacing: 0.05em;
    font-size: 13px;
}

.oai-data-table td { color: var(--t2); }

.oai-data-table tr:last-child th,
.oai-data-table tr:last-child td { border-bottom: none; }

@media (max-width: 767px) {
    .oai-data-table th,
    .oai-data-table td {
        display: block;
        width: 100%;
        padding: 10px 16px;
        border-bottom: none;
    }
    .oai-data-table th { padding-bottom: 4px; }
    .oai-data-table td {
        padding-top: 4px;
        padding-bottom: 14px;
        border-bottom: 1px solid var(--line);
    }
    .oai-data-table tr:last-child td { border-bottom: none; }
}

.oai-score-block {
    background: var(--bg-cream);
    border-radius: var(--r3);
    padding: 32px;
    margin: 32px 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    align-items: center;
}

@media (max-width: 767px) {
    .oai-score-block {
        grid-template-columns: 1fr;
        padding: 20px;
        gap: 20px;
    }
}

.oai-score-chart {
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
}

.oai-score-chart svg {
    width: 100%;
    height: auto;
    overflow: visible; /* 軸ラベルが viewBox の外まで出る場合への保険 */
}

.oai-score-axes { display: grid; gap: 12px; }

.oai-score-axis {
    display: grid;
    grid-template-columns: 100px 1fr 32px;
    gap: 12px;
    align-items: center;
    font-size: 13px;
}

.oai-score-axis__label { color: var(--t2); font-weight: 500; }

.oai-score-axis__bar {
    height: 6px;
    background: var(--line);
    border-radius: var(--r-full);
    overflow: hidden;
    position: relative;
}

.oai-score-axis__fill {
    position: absolute;
    inset: 0;
    width: var(--score, 60%);
    background: linear-gradient(90deg, var(--accent), var(--accent-deep));
    border-radius: var(--r-full);
    transition: width 1.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* スコア帯ごとに色トーンを変える（単調さの解消） */
.oai-score-axis[data-tone="high"] .oai-score-axis__fill {
    background: linear-gradient(90deg, #d4a87a, #9d8770); /* warm-4 → accent-deep */
}
.oai-score-axis[data-tone="high"] .oai-score-axis__val {
    color: var(--accent-deep);
}
.oai-score-axis[data-tone="mid"] .oai-score-axis__fill {
    background: linear-gradient(90deg, #e8d4b3, #b69e84); /* warm-3 → accent */
}
.oai-score-axis[data-tone="low"] .oai-score-axis__fill {
    background: linear-gradient(90deg, #f7ead8, #c5b39c); /* warm-2 → 中間トーン */
}
.oai-score-axis[data-tone="low"] .oai-score-axis__val {
    color: #b8b0a4;
}

.oai-score-axis__val {
    text-align: right;
    font-family: var(--font-mont);
    font-size: 12px;
    color: var(--accent-dark);
    font-weight: 700;
}

@media (max-width: 767px) {
    .oai-score-block {
        grid-template-columns: 1fr;
        padding: 20px;
    }
    .oai-score-axis {
        grid-template-columns: 80px 1fr 28px;
        font-size: 12px;
        gap: 8px;
    }
}

/* ==========================================================================
   15. 凛コンポーネント
   ========================================================================== */

.rin-quote {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 18px;
    align-items: flex-start;
    background: var(--accent-soft);
    border-radius: var(--r3);
    padding: 20px 24px;
    margin: 24px 0;
    position: relative;
}

.rin-quote__avatar {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--bg-cream);
    border: 2px solid #fff;
    box-shadow: var(--s1);
}

.rin-quote__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}

.rin-quote__body {
    font-size: 14px;
    line-height: 1.8;
    color: var(--t1);
}

.rin-quote__name {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 6px;
}

.rin-quote__name::before {
    content: '';
    width: 14px;
    height: 1px;
    background: var(--accent);
}

.rin-portrait {
    border-radius: var(--r4);
    overflow: hidden;
    box-shadow: var(--s2);
}

.rin-portrait img {
    width: 100%;
    height: auto;
    display: block;
}

.rin-thumb {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid #fff;
    box-shadow: var(--s1);
    flex-shrink: 0;
}

.rin-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.rin-thumb--lg { width: 80px; height: 80px; }
.rin-thumb--sm { width: 32px; height: 32px; }

@media (max-width: 767px) {
    .rin-quote {
        grid-template-columns: 60px 1fr;
        padding: 16px 18px;
        gap: 14px;
    }
    .rin-quote__avatar { width: 60px; height: 60px; }
    .rin-quote__body { font-size: 13px; }
}

/* ==========================================================================
   16. 動物キャラカード（60体）
   ========================================================================== */

.animal-card {
    background: var(--bg-card);
    border-radius: var(--r3);
    overflow: hidden;
    box-shadow: var(--s1);
    transition: transform var(--t-base), box-shadow var(--t-base);
    text-align: center;
}

.animal-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--s2);
}

.animal-card__img {
    aspect-ratio: 1 / 1;
    background: var(--warm-1);
    overflow: hidden;
}

/* 画像のhover時拡大ルールは L2796 周辺の統一定義に集約（重複削除）*/

.animal-card__body {
    padding: 16px 14px 20px;
}

.animal-card__name {
    font-family: var(--font-kiwi);
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.05em;
    color: var(--t1);
    margin-bottom: 4px;
    line-height: 1.4;
}

.animal-card__meta {
    font-family: var(--font-mont);
    font-size: 10px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
}

.animal-detail-hero {
    aspect-ratio: 1 / 1;
    max-width: 480px;
    margin: 0 auto 32px;
    border-radius: var(--r4);
    overflow: hidden;
    background: var(--warm-1);
    box-shadow: var(--s2);
}

.animal-detail-hero img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ==========================================================================
   17. 診断ページ（質問フォーム）
   ========================================================================== */

.shindan-wrap {
    max-width: 720px;
    margin: 0 auto;
    padding: 40px var(--pad-x-sp) 80px;
    min-height: 80vh;
}

.shindan-header {
    text-align: center;
    margin-bottom: 32px;
}

.shindan-header__kicker {
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    margin-bottom: 8px;
}

.shindan-header__title {
    font-size: 28px;
    letter-spacing: 0.08em;
    line-height: 1.4;
    margin-bottom: 12px;
}

.shindan-header__desc {
    font-size: 14px;
    color: var(--t2);
    line-height: 1.8;
}

.shindan-progress {
    margin: 32px 0;
}

.shindan-progress__bar {
    height: 4px;
    background: var(--line);
    border-radius: var(--r-full);
    overflow: hidden;
    margin-bottom: 8px;
}

.shindan-progress__fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent), var(--accent-deep));
    border-radius: var(--r-full);
    width: 0%;
    transition: width 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.shindan-progress__meta {
    display: flex;
    justify-content: space-between;
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--t3);
    letter-spacing: 0.05em;
}

.shindan-q {
    background: var(--bg-cream);
    border-radius: var(--r4);
    padding: 32px;
    margin-bottom: 24px;
    box-shadow: var(--s1);
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.shindan-q.is-active {
    opacity: 1;
    transform: translateY(0);
}

.shindan-q__num {
    font-family: var(--font-mont);
    font-size: 12px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    margin-bottom: 10px;
}

.shindan-q__title {
    font-size: 20px;
    line-height: 1.5;
    letter-spacing: 0.05em;
    margin-bottom: 20px;
    color: var(--t1);
}

.shindan-q__choices {
    display: grid;
    gap: 10px;
}

.shindan-choice {
    display: block;
    width: 100%;
    text-align: left;
    padding: 16px 20px;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--r2);
    font-size: 14px;
    color: var(--t1);
    line-height: 1.6;
    cursor: pointer;
    transition: all var(--t-base);
}

.shindan-choice:hover {
    border-color: var(--accent);
    background: var(--accent-soft);
    transform: translateY(-1px);
}

.shindan-choice.is-selected {
    border-color: var(--accent-deep);
    background: var(--accent-soft);
    color: var(--accent-dark);
    font-weight: 700;
}

.shindan-nav {
    display: flex;
    justify-content: space-between;
    margin-top: 28px;
    gap: 12px;
}

@media (max-width: 767px) {
    .shindan-wrap { padding: 24px var(--pad-x-sp) 60px; }
    .shindan-header__title { font-size: 22px; }
    .shindan-q { padding: 20px; }
    .shindan-q__title { font-size: 16px; }
}

/* ==========================================================================
   18. 診断結果ページ
   ========================================================================== */

.shindan-result {
    max-width: 920px;
    margin: 0 auto;
    padding: 40px var(--pad-x) 80px;
}

.shindan-result__hero {
    text-align: center;
    margin-bottom: 48px;
}

.shindan-result__kicker {
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    margin-bottom: 12px;
}

.shindan-result__title {
    font-family: var(--font-kiwi);
    font-size: 36px;
    letter-spacing: 0.08em;
    line-height: 1.4;
    margin-bottom: 20px;
    opacity: 0;
    transform: translateY(20px);
    filter: blur(4px);
    animation: heroHeadlineFade 1.2s ease 0.3s forwards;
}

.shindan-result__sub {
    font-size: 14px;
    color: var(--t2);
    line-height: 1.8;
}

.shindan-result__animal {
    max-width: 360px;
    margin: 32px auto;
    aspect-ratio: 1 / 1;
    border-radius: var(--r4);
    overflow: hidden;
    background: var(--warm-1);
    box-shadow: var(--s2);
    animation: shindanAnimalFade 1.4s ease 0.3s both;
}

@keyframes shindanAnimalFade {
    0%   { opacity: 0; filter: blur(6px); }
    100% { opacity: 1; filter: blur(0); }
}

.shindan-result__animal img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.shindan-result__share {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-top: 24px;
    flex-wrap: wrap;
}

.shindan-recommended-apps {
    margin-top: 60px;
}

.shindan-app-rank {
    display: grid;
    grid-template-columns: 60px 80px 1fr auto;
    gap: 16px;
    align-items: center;
    padding: 20px;
    background: var(--bg-cream);
    border-radius: var(--r3);
    margin-bottom: 14px;
    transition: transform var(--t-base), box-shadow var(--t-base);
}

.shindan-app-rank:hover {
    transform: translateY(-2px);
    box-shadow: var(--s2);
}

.shindan-app-rank__role {
    font-family: var(--font-mont);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: var(--accent-dark);
    text-align: center;
    padding: 6px 0;
    background: var(--accent-soft);
    border-radius: var(--r1);
}

.shindan-app-rank__logo {
    width: 80px;
    height: 80px;
    border-radius: var(--r2);
    overflow: hidden;
    background: var(--bg);
}

.shindan-app-rank__logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.shindan-app-rank__name {
    font-size: 16px;
    font-weight: 700;
    margin-bottom: 4px;
}

.shindan-app-rank__reason {
    font-size: 12px;
    color: var(--t2);
    line-height: 1.6;
}

@media (max-width: 767px) {
    .shindan-result { padding: 24px var(--pad-x-sp) 60px; }
    .shindan-result__title { font-size: 24px; }
    .shindan-app-rank {
        grid-template-columns: 60px 1fr;
        gap: 12px;
    }
    .shindan-app-rank__logo { width: 60px; height: 60px; }
    .shindan-app-rank__cta {
        grid-column: 1 / -1;
        margin-top: 8px;
    }
    .shindan-app-rank__cta .btn { width: 100%; }
}

/* ==========================================================================
   19. AI生成FAQ アコーディオン
   ========================================================================== */

.faq-list {
    display: grid;
    gap: 8px;
    margin: 24px 0;
}

.faq-item {
    background: var(--bg-cream);
    border-radius: var(--r3);
    border: 1px solid var(--line);
    overflow: hidden;
    transition: border-color var(--t-base);
}

.faq-item:hover { border-color: var(--accent-soft); }

.faq-item summary {
    list-style: none;
    cursor: pointer;
    padding: 16px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--t1);
    line-height: 1.5;
    user-select: none;
}

.faq-item summary::-webkit-details-marker { display: none; }

.faq-item summary::before {
    content: 'Q';
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--accent-deep);
    color: #fff;
    border-radius: 50%;
    font-family: var(--font-mont);
    font-size: 11px;
    font-weight: 700;
}

.faq-item summary::after {
    content: '+';
    margin-left: auto;
    font-size: 18px;
    color: var(--accent-dark);
    transition: transform var(--t-base);
}

.faq-item[open] summary::after {
    transform: rotate(45deg);
}

.faq-item__body {
    padding: 0 20px 18px 56px;
    font-size: 13px;
    color: var(--t2);
    line-height: 1.9;
}

/* ==========================================================================
   20. アプリ比較（vs）
   ========================================================================== */

.vs-grid {
    display: grid;
    grid-template-columns: 1fr 56px 1fr;
    gap: 20px;
    align-items: stretch;
    margin: 32px 0;
}

.vs-side {
    background: var(--bg-cream);
    border-radius: var(--r3);
    padding: 24px;
    text-align: center;
}

.vs-side__logo {
    width: 80px;
    height: 80px;
    margin: 0 auto 14px;
    border-radius: var(--r2);
    overflow: hidden;
    background: var(--bg);
}

.vs-side__logo img { width: 100%; height: 100%; object-fit: cover; }

.vs-side__name {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 4px;
}

.vs-side__meta {
    font-size: 11px;
    color: var(--t3);
    font-family: var(--font-mont);
    letter-spacing: 0.05em;
    margin-bottom: 14px;
}

.vs-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-mont);
    font-weight: 700;
    font-size: 18px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
}

.vs-compare-table {
    width: 100%;
    margin: 24px 0;
    border-collapse: collapse;
}

.vs-compare-table th,
.vs-compare-table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--line);
    font-size: 13px;
    line-height: 1.7;
    text-align: center;
    vertical-align: top;
}

.vs-compare-table th {
    background: var(--accent-soft);
    color: var(--accent-dark);
    font-weight: 700;
}

.vs-compare-table th:first-child,
.vs-compare-table td:first-child {
    text-align: left;
    width: 140px;
    color: var(--t2);
}

@media (max-width: 767px) {
    .vs-grid { grid-template-columns: 1fr; }
    .vs-divider { padding: 8px 0; }
    .vs-compare-table th:first-child,
    .vs-compare-table td:first-child { width: 100px; }
}

/* ==========================================================================
   21. 用語集
   ========================================================================== */

.glossary-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin: 32px 0;
}

.glossary-item {
    position: relative;
    background: var(--warm-1);
    padding: 22px 24px 20px;
    border-left: 3px solid var(--accent);
    transition: transform var(--t-base), box-shadow var(--t-base), background var(--t-base);
}

.glossary-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(157, 135, 112, 0.14);
    background: var(--warm-2);
}

.glossary-item::before {
    content: "";
    position: absolute;
    top: 0;
    left: -3px;
    width: 3px;
    height: 0;
    background: var(--accent-deep);
    transition: height var(--t-slow);
}

.glossary-item:hover::before {
    height: 100%;
}

.glossary-item__cat {
    display: inline-block;
    font-family: var(--font-mont);
    font-size: 10px;
    letter-spacing: 0.14em;
    color: var(--accent-dark);
    margin-bottom: 8px;
    text-transform: uppercase;
}

.glossary-item__term {
    font-family: var(--font-kiwi);
    font-size: 17px;
    font-weight: 500;
    color: var(--t1);
    letter-spacing: 0.03em;
    line-height: 1.45;
    margin-bottom: 4px;
}

.glossary-item__term a {
    color: inherit;
    text-decoration: none;
    display: block;
}

.glossary-item__term a::after {
    content: " →";
    color: var(--accent);
    opacity: 0;
    transition: opacity var(--t-base);
    font-family: var(--font-mont);
}

.glossary-item:hover .glossary-item__term a::after {
    opacity: 1;
}

.glossary-item__yomi {
    font-family: var(--font-mont);
    font-size: 10px;
    color: var(--accent-dark);
    letter-spacing: 0.08em;
    margin-bottom: 10px;
}

.glossary-item__desc {
    font-size: 12.5px;
    color: var(--t3);
    line-height: 1.85;
    margin: 0;
}

@media (max-width: 900px) {
    .glossary-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .glossary-grid {
        grid-template-columns: 1fr;
        gap: 14px;
        margin: 24px 0;
    }
    .glossary-item {
        padding: 18px 20px 16px;
    }
}

/* ==========================================================================
   22. 都道府県別アーカイブ
   ========================================================================== */

.pref-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: 8px;
    margin: 24px 0;
}

.pref-cell {
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-cream);
    border-radius: var(--r2);
    font-size: 12px;
    color: var(--t2);
    transition: all var(--t-base);
}

.pref-cell:hover {
    background: var(--accent-soft);
    color: var(--accent-dark);
    transform: scale(1.03);
}

.pref-cell--popular {
    background: var(--accent);
    color: #fff;
    font-weight: 700;
}

.pref-cell--popular:hover { background: var(--accent-deep); color: #fff; }

@media (max-width: 1024px) {
    .pref-grid { grid-template-columns: repeat(6, 1fr); }
}

@media (max-width: 767px) {
    .pref-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ==========================================================================
   23. コラム単体・一覧
   ========================================================================== */

.column-hero {
    padding: 40px 0 24px;
    text-align: left;
}

.column-hero__kicker {
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    margin-bottom: 10px;
}

.column-hero__title {
    font-size: 32px;
    line-height: 1.4;
    letter-spacing: 0.05em;
    margin-bottom: 20px;
}

.column-hero__meta {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    color: var(--t3);
}

.column-body {
    font-size: 15px;
    line-height: 1.9;
    color: var(--t1);
}

.column-body h2 {
    font-size: 22px;
    letter-spacing: 0.05em;
    margin: 48px 0 20px;
    padding-left: 14px;
    border-left: 3px solid var(--accent);
    line-height: 1.5;
}

.column-body h3 {
    font-size: 17px;
    margin: 32px 0 12px;
    color: var(--accent-dark);
}

.column-body p { margin-bottom: 1.4em; }

.column-body ul,
.column-body ol {
    margin: 0 0 1.4em 1.6em;
}

.column-body ul { list-style: disc; }
.column-body ol { list-style: decimal; }

.column-body li {
    line-height: 1.9;
    margin-bottom: 6px;
}

.column-body blockquote {
    background: var(--accent-soft);
    border-left: 3px solid var(--accent);
    padding: 16px 20px;
    margin: 24px 0;
    color: var(--t2);
    font-style: italic;
    border-radius: 0 var(--r2) var(--r2) 0;
}

.column-body a {
    color: var(--accent-deep);
    border-bottom: 1px solid var(--accent-soft);
}

.column-body a:hover {
    border-bottom-color: var(--accent);
}

@media (max-width: 767px) {
    .column-hero__title { font-size: 22px; }
    .column-body { font-size: 14px; }
    .column-body h2 { font-size: 18px; }
    .column-body h3 { font-size: 15px; }
}

/* ==========================================================================
   24. サイドバー・ウィジェット
   ========================================================================== */

.oai-sidebar {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 28px;
    padding: 40px 0 20px;
}

.widget {
    background: var(--bg-cream);
    border-radius: var(--r3);
    padding: 24px;
}

.widget-title {
    font-family: var(--font-mont);
    font-size: 11px;
    font-weight: 700;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 14px;
}

.widget ul li {
    padding: 8px 0;
    border-bottom: 1px solid var(--line-soft);
    font-size: 13px;
}

.widget ul li:last-child { border-bottom: none; }

.widget a {
    color: var(--t2);
    transition: color var(--t-base);
}

.widget a:hover { color: var(--accent-dark); }

/* サイドバー内のCTAボタンは白文字を優先（.widget a 上書き対策） */
.widget a.btn-primary,
.widget a.btn-primary:hover,
.oai-sidebar a.btn-primary,
.oai-sidebar a.btn-primary:hover {
    color: #fff;
}

/* ==========================================================================
   25. フッター
   ========================================================================== */

.oai-footer {
    background: var(--bg-cream);
    border-top: 1px solid var(--line);
    padding: 60px 0 40px;
    margin-top: 80px;
}

.oai-footer__inner {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 var(--pad-x);
}

.oai-footer__cols {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
    gap: 40px;
    margin-bottom: 40px;
}

.oai-footer__brand img,
.oai-footer__brand svg {
    height: 32px;
    width: auto;
    margin-bottom: 16px;
}

.oai-footer__tagline {
    font-size: 12px;
    color: var(--t2);
    line-height: 1.8;
    margin-bottom: 16px;
}

.oai-footer__col h4 {
    font-family: var(--font-mont);
    font-size: 11px;
    font-weight: 700;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 14px;
}

.oai-footer__col ul {
    display: grid;
    gap: 8px;
}

.oai-footer__col a {
    font-size: 13px;
    color: var(--t2);
    transition: color var(--t-base);
}

.oai-footer__col a:hover { color: var(--accent-dark); }

.oai-footer__bottom {
    padding-top: 24px;
    border-top: 1px solid var(--line);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.oai-footer__copyright {
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--t3);
    letter-spacing: 0.05em;
}

.oai-footer__family {
    display: flex;
    gap: 16px;
    font-size: 11px;
    font-family: var(--font-mont);
    letter-spacing: 0.05em;
}

.oai-footer__family a { color: var(--t3); }
.oai-footer__family a:hover { color: var(--accent-dark); }

@media (max-width: 767px) {
    .oai-footer { padding: 40px 0 32px; margin-top: 48px; }
    .oai-footer__inner { padding: 0 var(--pad-x-sp); }
    .oai-footer__cols {
        grid-template-columns: 1fr 1fr;
        gap: 28px;
    }
    .oai-footer__brand { grid-column: 1 / -1; }
}

/* ==========================================================================
   26. 全ページ共通注意文（コンプラ自動挿入される）
   ========================================================================== */

.oai-compliance-notice {
    background: var(--bg-soft);
    border-left: 3px solid var(--warm-5);
    border-radius: 0 var(--r2) var(--r2) 0;
    padding: 14px 18px;
    margin: 32px 0 0;
    font-size: 12px;
    line-height: 1.8;
    color: var(--t2);
}

.oai-compliance-notice strong {
    color: var(--warm-5);
    font-weight: 700;
}

/* ==========================================================================
   27. CTAブロック（診断誘導など）
   ========================================================================== */

.oai-diagnose-cta {
    background: linear-gradient(135deg, var(--warm-1) 0%, var(--accent-soft) 100%);
    border-radius: var(--r4);
    padding: 40px 32px;
    text-align: center;
    margin: 48px 0;
    box-shadow: var(--s1);
}

.oai-diagnose-cta__lead {
    font-family: var(--font-kiwi);
    font-size: 22px;
    letter-spacing: 0.08em;
    color: var(--t1);
    margin-bottom: 12px;
    line-height: 1.5;
}

.oai-diagnose-cta__desc {
    font-size: 13px;
    color: var(--t2);
    line-height: 1.8;
    margin-bottom: 24px;
}

.oai-diagnose-cta .btn {
    padding: 26px 30px;
    width: 50%;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 500;
}

@media (max-width: 767px) {
    .oai-diagnose-cta { padding: 28px 20px; }
    .oai-diagnose-cta__lead { font-size: 18px; }
    .oai-diagnose-cta .btn {
        padding: 16px 15px;
        width: 80%;
        border-radius: 12px;
        font-size: 13px;
        font-weight: 500;
    }
    button.btn.btn-primary.btn-pill.btn-sm {
        width: 26% !important;
    }
}

/* ==========================================================================
   28. アニメーション（subtlePop / fade-in / stagger）
   ========================================================================== */

.fade-in {
    opacity: 0;
    transform: translateY(18px) scale(0.97);
    filter: blur(6px);
    transition:
        opacity 1s ease,
        transform 1s cubic-bezier(0.25, 0.1, 0.25, 1),
        filter 0.8s ease-out;
}

.fade-in.visible {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
    animation: subtlePop 0.6s ease-out;
}

@keyframes subtlePop {
    0%   { transform: translateY(0)    scale(1); }
    40%  { transform: translateY(-2px) scale(1.03); }
    100% { transform: translateY(0)    scale(1); }
}

.stagger-item {
    opacity: 0;
    transform: translateY(18px) scale(0.97);
    filter: blur(6px);
    transition:
        opacity 0.9s ease,
        transform 0.9s cubic-bezier(0.25, 0.1, 0.25, 1),
        filter 0.8s ease-out;
}

.stagger-item.visible {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
    animation: subtlePop 0.6s ease-out;
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .hero-bg { transform: none !important; filter: none !important; }
}

/* ==========================================================================
   29. ユーティリティ
   ========================================================================== */

.d-none        { display: none !important; }
.d-block       { display: block; }
.d-flex        { display: flex; }
.d-inline      { display: inline; }
.d-inline-flex { display: inline-flex; }
.d-grid        { display: grid; }

.flex-col        { flex-direction: column; }
.flex-wrap       { flex-wrap: wrap; }
.items-center    { align-items: center; }
.items-start     { align-items: flex-start; }
.justify-center  { justify-content: center; }
.justify-between { justify-content: space-between; }

.gap-1 { gap: 4px; }
.gap-2 { gap: 8px; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
.gap-5 { gap: 24px; }
.gap-6 { gap: 32px; }

.mt-1 { margin-top: 4px; }   .mb-1 { margin-bottom: 4px; }
.mt-2 { margin-top: 8px; }   .mb-2 { margin-bottom: 8px; }
.mt-3 { margin-top: 12px; }  .mb-3 { margin-bottom: 12px; }
.mt-4 { margin-top: 16px; }  .mb-4 { margin-bottom: 16px; }
.mt-5 { margin-top: 24px; }  .mb-5 { margin-bottom: 24px; }
.mt-6 { margin-top: 32px; }  .mb-6 { margin-bottom: 32px; }
.mt-8 { margin-top: 48px; }  .mb-8 { margin-bottom: 48px; }

.pt-2 { padding-top: 8px; }
.pt-4 { padding-top: 16px; }
.pt-6 { padding-top: 32px; }

.text-center { text-align: center; }
.text-left   { text-align: left; }
.text-right  { text-align: right; }

.text-xs  { font-size: 11px; }
.text-sm  { font-size: 13px; }
.text-md  { font-size: 15px; }
.text-lg  { font-size: 18px; }
.text-xl  { font-size: 22px; }
.text-2xl { font-size: 26px; }

.font-bold   { font-weight: 700; }
.font-medium { font-weight: 500; }

.sp-only { display: none; }
@media (max-width: 767px) {
    .pc-only { display: none !important; }
    .sp-only { display: block; }
}

/* ==========================================================================
   30. WordPress標準スタイル補完
   ========================================================================== */

.alignleft   { float: left; margin: 0 1.5em 1em 0; }
.alignright  { float: right; margin: 0 0 1em 1.5em; }
.aligncenter { display: block; margin: 0 auto 1em; }
.alignwide   { max-width: 1200px; margin-left: auto; margin-right: auto; }
.alignfull   { width: 100vw; max-width: none; margin-left: calc(50% - 50vw); }

.wp-caption-text,
figcaption {
    font-size: 12px;
    color: var(--t3);
    text-align: center;
    margin-top: 8px;
}

/* ==========================================================================
   31. プリント
   ========================================================================== */

@media print {
    .oai-age-bar,
    .oai-header,
    .oai-gnav,
    .oai-footer,
    .hero-bg,
    .hero__rin,
    .oai-diagnose-cta,
    .oai-pagination,
    .pagination {
        display: none !important;
    }
    body {
        font-size: 11pt;
        color: #1a1a24;
        background: #fff;
    }
    .column-body { max-width: 100%; }
}

/* ==========================================================================
   End of oaite/style.css v1.1.0
   ========================================================================== */


/* ==========================================================================
   TOPページ限定スタイル (body.home)
   - ヘッダーをHEROの上に半透明オーバーレイ表示
   - ヘッダーロゴ・ナビ文字を白系に（フッターには影響させない）
   ========================================================================== */

/* === 共通: TOPページのみ ヘッダーを半透明 + HEROにかぶせる === */
body.home .oai-age-bar {
    /* HEROがmargin-top: -110pxでせり上がるため、age-barを最前面に */
    position: relative;
    z-index: 110;
}
body.home .oai-header {
    background: rgba(0, 0, 0, 0.18);
    border-bottom: 0;
    position: relative;
    z-index: 100;
}
body.home .oai-gnav {
    border-bottom: 0;
    background: rgba(0, 0, 0, 0.08);
    height: var(--h-gnav);
    /* 修正: position+z-indexを明示してHEROのせり上がりに負けないようにする */
    position: relative;
    z-index: 100;
}

/* ヘッダー配下のロゴだけを白に（フッターのロゴは黒のまま維持） */
body.home .oai-header .oai-logo-svg .oai-logo__text {
    fill: #ffffff;
    transition: fill var(--t-base);
}

body.home .oai-gnav__item {
    color: #ebd9ca;
}

/* HEROをヘッダーの裏にもぐらせる（HERO自体は通常z-indexで、CTAクリック可能を維持） */
body.home .hero {
    position: relative;
    overflow: hidden;
    background: var(--warm-1);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin-top: -110px;
    /* z-index指定なし: HERO内CTAをクリック可能にするため、HERO自体は通常スタッキング */
}
/* ヘッダー類はz-index:100で前面確保（既存）、HERO背景はpadding-top含めヘッダー下に潜り込む形 */

/* === TOPページ PCのみ === */
@media (min-width: 768px) {
    body.home .oai-header__nav.pc-only a {
        color: #fff !important;
    }
    body.home .oai-gnav__item {
        font-size: 11px;
        letter-spacing: 0.1em;
        background: #ed5672ad;
        padding: 6px 12px;
        border-radius: 999px;
        color: #ffffffd6;
        border-bottom: 0;
    }
}

/* === TOPページ SPのみ === */
@media (max-width: 767px) {
    body.home .hero {
        margin-top: -105px;
    }
    body.home .oai-gnav__item {
        font-size: 11px;
        letter-spacing: 0.1em;
        background: #ed5672ad;
        padding: 6px 12px;
        border-radius: 999px;
        color: #ffffffd6;
        border-bottom: 0;
    }
    /* SP説明文：改行を許可（white-space: normal） */
    body.home .hero-caption .hero-desc {
        font-size: 11px;
        line-height: 1.7;
        text-align: center;
        margin: 0 auto 14px;
        color: #fff;
        text-shadow: 0 1px 6px rgba(60, 50, 40, 0.35);
        white-space: normal;
        max-width: 100%;
        overflow: visible;
    }
    body.home .hero-caption .hero-desc br { display: none; }
    /* SP用グラデ：薄め調整版 */
    body.home .hero-gradient-sp {
        background: linear-gradient(180deg, rgba(253, 246, 237, 0) 0%, rgba(253, 246, 237, 0) 30%, rgb(187 166 144 / 12%) 50%, rgb(192 173 152 / 51%) 75% 75%, rgb(187 166 144 / 97%) 100%);
    }
    /* SP SVGコピー幅を 92vw → 76vw に */
    body.home .hero-headline__visual--sp {
        width: 76vw;
        max-width: 540px;
    }
    /* TOP SPのCTAボタンを縦並びの中央寄せに（窮屈解消） */
    body.home .hero-caption .hero-cta {
        display: grid;
        gap: 10px;
        width: 70%;
        text-align: center;
        margin: 0 auto;
        grid-template-columns: auto;
    }
    body.home .hero-caption .hero-cta .btn {
        padding: 16px 8px;
        font-size: 12px;
        white-space: nowrap;
    }
}


/* ==========================================================================
   一覧ページ用 グリッド（SP時2列縦並び・横フリックなし）
   ========================================================================== */

.grid-cols-sp-2 {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 1024px) {
    .grid-cols-sp-2 { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 767px) {
    .grid-cols-sp-2 {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }
}

/* ==========================================================================
   カード高さ揃え（SP上下ガタガタ防止）
   ========================================================================== */

.grid-scroll-sp .animal-card,
.grid-cols-sp-2 .animal-card,
.grid-scroll-sp .oai-card,
.grid-cols-sp-2 .oai-card,
.grid-scroll-sp .type-card,
.grid-cols-sp-2 .type-card {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.animal-card__img,
.oai-card__thumb,
.type-card__img {
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--warm-2);
}

.animal-card__img img,
.oai-card__thumb img,
.type-card__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.animal-card__body,
.oai-card__body,
.type-card__body {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* カード内テキストの行数固定（ガタガタ防止） */
.oai-card__title,
.animal-card__name,
.type-card__title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.8em;
}

.oai-card__desc,
.animal-card__desc,
.type-card__desc {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ==========================================================================
   見出しサイズ（SP最適化）
   ========================================================================== */

@media (max-width: 767px) {
    .oai-main h1 {
        font-size: 24px !important;
        line-height: 1.4 !important;
    }
    .oai-main h2 {
        font-size: 18px !important;
        line-height: 1.4 !important;
    }
    .oai-main h3 {
        font-size: 15px !important;
    }
}

/* ==========================================================================
   ECDAO標準 2カラムレイアウト v1.0 (ヌキドコ流・最大幅 .oai-layout 自身に)
   - <main> 直下に .oai-layout（パンくずは .oai-layout の外側上）
   - .oai-layout 自身が max-width 1400px + 中央寄せ + 左右padding
   - 本文(.oai-layout-main) と サイドバー(.oai-sidebar) に上下padding
   - PC(1024+): 1fr + 300px Grid (gap: 40px)
   - モバイル(〜1023): 縦並び
   - カラム内スクロール禁止
   ========================================================================== */

.oai-layout {
    display: block;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 var(--pad-x);
    box-sizing: border-box;
}

.oai-layout-main {
    min-width: 0;
    padding: 24px 0;
}

@media (min-width: 1024px) {
    .oai-layout {
        display: grid;
        grid-template-columns: 1fr 300px;
        gap: 40px;
        align-items: start;
    }
}

@media (max-width: 1023px) {
    .oai-sidebar {
        margin-top: 24px;
        padding-top: 0;
    }
}

@media (max-width: 767px) {
    .oai-layout { padding: 0 var(--pad-x-sp); }
    .oai-layout-main { padding: 16px 0; }
}



/* ==========================================================================
   HEROボタンのクリック確保（z-index: -1 でも操作可能に）
   ========================================================================== */

body.home .hero {
    pointer-events: none;
}
body.home .hero a,
body.home .hero button,
body.home .hero .hero-cta,
body.home .hero .hero-cta * {
    pointer-events: auto;
}

/* ==========================================================================
   画像ヌルッと拡大（カード hover時）
   SKILL v0.7 準拠: cubic-bezier(0.16, 1, 0.3, 1) / duration 0.8s / scale 1.08
   ========================================================================== */

.animal-card__img,
.oai-card__thumb,
.type-card__img,
.card a[href] {
    overflow: hidden;
}

.animal-card__img img,
.oai-card__thumb img,
.type-card__img img,
.card a img,
.app-card__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) !important;
    will-change: transform;
    transform-origin: center;
    backface-visibility: hidden;     /* GPUレンダリング有効化（フリッカー防止） */
    -webkit-backface-visibility: hidden;
}

.animal-card:hover .animal-card__img img,
.oai-card:hover .oai-card__thumb img,
.type-card:hover .type-card__img img,
.card:hover a img,
.app-card:hover .app-card__img img {
    transform: scale(1.08);
}

/* カード本体の浮き上がりも同じ曲線で揃える（ヌルッと感の統一） */
.animal-card,
.oai-card,
.type-card,
.card,
.app-card {
    transition:
        transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
        box-shadow 0.4s ease;
}


/* ==========================================================================
   データテーブルのSP対応
   ========================================================================== */

@media (max-width: 767px) {
    .oai-data-table th,
    .oai-data-table td {
        padding: 10px 12px;
        font-size: 13px;
    }
    .oai-data-table th {
        width: 38%;
    }
}


/* ==========================================================================
   カード全体クリック化（ユーザビリティ改善・2026-05-14）
   ========================================================================== */

/* 親カードに position: relative を付与 */
.card,
.animal-card,
.type-card,
.oai-card,
.app-card,
.shindan-app-rank {
    position: relative;
}

/* タイトル内の最初のリンクで擬似要素を絶対配置 → カード全体がクリック可能に */
.card .card__title > a:first-child::after,
.shindan-app-rank__name > a:first-child::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    cursor: pointer;
}

/* CTAボタンや他のリンクは前面に出す（疑似要素より上） */
.card .btn,
.card a:not(.card__title a),
.shindan-app-rank__cta a,
.shindan-app-rank__cta {
    position: relative;
    z-index: 2;
}

/* ホバー時にカード全体がカーソル変化 */
.card:hover,
.animal-card:hover,
.type-card:hover,
.oai-card:hover,
.app-card:hover,
.shindan-app-rank:hover {
    cursor: pointer;
}


/* ==========================================================================
   アプリ詳細のサイトキャプチャ表示（メインカラム幅いっぱい）
   ========================================================================== */

.oai-app-screenshot {
    margin: 32px 0 48px;
    border-radius: var(--r3);
    overflow: hidden;
    box-shadow: var(--s2);
    background: var(--bg-cream);
}

.oai-app-screenshot img {
    width: 100%;
    height: auto;
    display: block;
}

.oai-app-screenshot__caption {
    padding: 12px 18px;
    font-size: 12px;
    color: var(--t3);
    text-align: right;
    background: var(--bg-cream);
    border-top: 1px solid var(--line);
}

@media (max-width: 767px) {
    .oai-app-screenshot {
        margin: 24px 0 32px;
        border-radius: var(--r2);
    }
}


/* ==========================================================================
   ボタン文字色の継承問題修正（btn-block で flex 化した時の対策）
   ========================================================================== */

.btn-primary,
.btn-primary.btn-block,
.btn-primary.btn-sm,
.btn-primary.btn-pill,
.btn-primary.btn-pill.btn-sm.btn-block,
a.btn-primary {
    color: #fff;
}

.btn-secondary,
.btn-secondary.btn-block,
.btn-secondary.btn-sm,
.btn-secondary.btn-pill,
a.btn-secondary {
    color: var(--t1);
}


/* ==========================================================================
   アプリ系統ピルの色分け（カテゴリ別の視覚的差別化）
   ========================================================================== */

/* デフォルト（specified なしの場合） */
.pill[data-kind] {
    background: var(--accent-soft);
    color: var(--accent-dark);
    font-weight: 600;
}

/* 専門アプリ - メインアクセント（ベージュゴールド） */
.pill[data-kind="senmon"] {
    background: var(--accent-soft);
    color: var(--accent-dark);
    border: 1px solid var(--accent);
}

/* 出会い系 - 落ち着いた青系 */
.pill[data-kind="deaikei"] {
    background: #e8eef5;
    color: #4a6789;
    border: 1px solid #c5d4e5;
}

/* 交際クラブ - 高級感ある深いゴールド */
.pill[data-kind="kousai"] {
    background: #f7eed8;
    color: #8b6914;
    border: 1px solid #d4b454;
}

/* ニッチ - 柔らかい紫系 */
.pill[data-kind="niche"] {
    background: #f0e8f5;
    color: #6e4a89;
    border: 1px solid #c5b0d4;
}

/* 特化型 - オレンジ・テラコッタ系 */
.pill[data-kind="tokka"],
.pill[data-kind="特化型"] {
    background: #fae5d6;
    color: #a04e1e;
    border: 1px solid #e8b890;
}


/* ==========================================================================
   アプリ系統ピルの色分け（視覚識別性向上）
   ========================================================================== */

/* 専門アプリ：深いベージュゴールド（オアイテの主軸カラー） */
.pill[data-kind="senmon"] {
    background: var(--accent-soft);
    color: var(--accent-dark);
    border: 1px solid var(--accent);
}

/* 交際クラブ：ネイビーディープ（高級・落ち着き） */
.pill[data-kind="kousai"] {
    background: #e8ebf2;
    color: #2c3e50;
    border: 1px solid #c5cbd9;
}

/* 出会い系：セージグリーン（一般・幅広い） */
.pill[data-kind="deaikei"] {
    background: #ecf0e6;
    color: #5a7048;
    border: 1px solid #c5d2b8;
}

/* ニッチ：淡パープル（隠れた・少数） */
.pill[data-kind="niche"] {
    background: #efe9f0;
    color: #6e4f73;
    border: 1px solid #d3c2d8;
}

/* 特化型：アンバー（特別・尖った） */
.pill[data-kind="tokka"] {
    background: #f5ebd9;
    color: #8a6321;
    border: 1px solid #e0c891;
}

/* ホバー時は背景濃く */
.pill[data-kind]:hover {
    filter: brightness(0.97);
}


/* ==========================================================================
   お問い合わせフォーム
   ========================================================================== */

.oai-contact-form {
    background: var(--bg-cream);
    padding: 28px;
    border-radius: var(--r3);
    margin: 24px 0;
    border: 1px solid var(--line);
}

.oai-form-row {
    margin-bottom: 18px;
}

.oai-form-row label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--t1);
    margin-bottom: 6px;
}

.oai-form-req {
    color: var(--warm-5);
    font-size: 11px;
    margin-left: 4px;
}

.oai-form-row input[type="text"],
.oai-form-row input[type="email"],
.oai-form-row textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: var(--r2);
    background: var(--bg);
    font-family: var(--font);
    font-size: 14px;
    color: var(--t1);
    transition: border-color var(--t-base);
    box-sizing: border-box;
}

.oai-form-row input:focus,
.oai-form-row textarea:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-glow);
}

.oai-form-row textarea {
    resize: vertical;
    line-height: 1.7;
}

.oai-form-submit-row {
    margin-top: 24px;
    text-align: center;
}

.oai-form-note {
    font-size: 11px;
    color: var(--t3);
    line-height: 1.7;
    margin-top: 14px;
    text-align: center;
}

.oai-form-note a {
    color: var(--accent-dark);
    text-decoration: underline;
}

.oai-form-msg {
    padding: 14px 18px;
    border-radius: var(--r2);
    margin-bottom: 18px;
    font-size: 14px;
    line-height: 1.7;
}

.oai-form-msg--success {
    background: #e8f5e9;
    color: #2d5a2d;
    border: 1px solid #b3d9b3;
}

.oai-form-msg--error {
    background: #ffebee;
    color: #8b2a2a;
    border: 1px solid #f0c0c0;
}

@media (max-width: 767px) {
    .oai-contact-form {
        padding: 20px;
    }
}


/* ==========================================================================
   カードサムネ（コラム・アプリ等のカード上部画像）
   PCはカード端まで広げ、SPはpaddingに合わせて調整（はみ出し防止）
   ========================================================================== */

.card .card-thumb {
    display: block;
    aspect-ratio: 16/9;
    border-radius: var(--r2);
    overflow: hidden;
    margin: -26px -26px 16px;
    background: var(--bg-cream);
}

.card .card-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.card:hover .card-thumb img {
    transform: scale(1.05);
}

/* SPはcard padding=20pxに合わせる */
@media (max-width: 767px) {
    .card .card-thumb {
        margin: -20px -20px 14px;
    }
}

/* card-thumb--wide: 16:9を明示するマーカークラス（既定の .card-thumb と同等） */
.card-thumb.card-thumb--wide {
    aspect-ratio: 16/9;
}

/* ==========================================================================
   アプリカード共通画像枠（16:9・3パターンフォールバック）
   - card-app-thumb: ヒーロー画像 / アイコンセンター配置 / 準備中 を一括ハンドル
   - TOPページ「いま注目のアプリ」、アプリ一覧 archive-apps.php で使用
   ========================================================================== */
.card-app-thumb {
    display: block;
    aspect-ratio: 16/9;
    border-radius: var(--r2);
    overflow: hidden;
    margin: -26px -26px 14px;
    background: linear-gradient(135deg, var(--warm-1, #faf5ec), var(--warm-2, #f4ead8));
    position: relative;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s ease;
}
.card-app-thumb > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.card:hover .card-app-thumb > img {
    transform: scale(1.05);
}

/* アイコンしかない場合: 16:9枠の中央にアイコンを配置 */
.card-app-thumb__icon-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    padding: 8%;
    box-sizing: border-box;
}
.card-app-thumb__icon-fallback img {
    width: auto;
    max-width: 50%;
    height: 75%;
    aspect-ratio: 1/1;
    object-fit: cover;
    border-radius: var(--r1, 10px);
    box-shadow: 0 4px 14px rgba(107, 93, 75, 0.15);
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.card:hover .card-app-thumb__icon-fallback img {
    transform: scale(1.04);
}

/* 「準備中」プレースホルダ: 画像もアイコンも無いとき */
.card-app-thumb__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: var(--t3, #9d8770);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.18em;
}

/* SP: わずかに角丸を抑える + cardのpadding 20px に合わせる */
@media (max-width: 600px) {
    .card-app-thumb {
        margin: -20px -20px 12px;
        border-radius: 12px;
    }
    .card-app-thumb__placeholder { font-size: 12px; letter-spacing: 0.14em; }
}

/* ==========================================================================
   アプリ詳細ページ・ヒーロー画像枠（16:9・8軸スコア直上）
   ========================================================================== */
.oai-app-hero-image__frame {
    display: block;
    width: 100%;
    aspect-ratio: 16/9;
    border-radius: var(--r3, 18px);
    overflow: hidden;
    background: linear-gradient(135deg, var(--warm-1, #faf5ec), var(--warm-2, #f4ead8));
    box-shadow: 0 4px 18px rgba(107, 93, 75, 0.10);
    border: 1px solid var(--line, #e8e0d4);
}
.oai-app-hero-image__frame img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
@media (max-width: 600px) {
    .oai-app-hero-image__frame { border-radius: 14px; }
}

/* コラムカード（cream）の最小高さ調整 */
.grid-cols-sp-2 .card.card--cream {
    display: flex;
    flex-direction: column;
    height: 100%;
}


/* ==========================================================================
   サイドバー 強化版（2026-05-14）
   ========================================================================== */

/* --- POPULAR TYPES: 動物画像丸サムネ横並び（2列×6行 = 12キャラ） --- */
.oai-popular-types {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px 10px;
}

.oai-popular-types__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    text-decoration: none;
    color: var(--t2);
    font-size: 11px;
    line-height: 1.3;
    text-align: center;
    transition: color var(--t-base);
}

.oai-popular-types__item:hover {
    color: var(--accent-dark);
}

.oai-popular-types__avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--warm-2);
    flex-shrink: 0;
    box-shadow: var(--s1);
    transition: transform var(--t-base), box-shadow var(--t-base);
}

.oai-popular-types__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.oai-popular-types__avatar--blank {
    background: linear-gradient(135deg, var(--warm-2), var(--warm-3));
}

.oai-popular-types__item:hover .oai-popular-types__avatar {
    transform: scale(1.05);
    box-shadow: var(--s2);
}

.oai-popular-types__name {
    font-size: 11px;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    word-break: break-all;
    max-width: 100%;
}

/* --- サイドバー共通: 一覧ボタン --- */
/* widget内の「アプリ一覧へ／タイプ一覧へ／コラム一覧へ／動物キャラ60体」ボタン共通スタイル */
.oai-sidebar-more {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 14px 18px;
    font-size: 12px;
    font-weight: 500;
    width: 90%;
    margin-top: 10px;
    background: var(--bg);
    border: 1px solid var(--line);
    color: var(--t2);
    border-radius: 10px;
    box-shadow: none;
    transition: all var(--t-base);
}
.oai-sidebar-more:hover {
    border-color: var(--accent);
    background: var(--accent-soft);
    color: var(--accent-dark);
    transform: translateY(-1px);
    box-shadow: var(--s1);
}
.oai-sidebar-more.btn--arrow::after {
    width: 0.6em;
    height: 0.6em;
    margin-left: 0.3em;
}

/* --- USE-CASE: SVGアイコン付きリスト --- */
.oai-usecase-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.oai-usecase-list li {
    border-bottom: 1px solid var(--line-soft);
}

.oai-usecase-list li:last-child {
    border-bottom: none;
}

.oai-usecase-list a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 4px;
    font-size: 13px;
    color: var(--t2);
    text-decoration: none;
    transition: color var(--t-base), padding-left var(--t-base);
}

.oai-usecase-list a:hover {
    color: var(--accent-dark);
    padding-left: 8px;
}

.oai-usecase-icon {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    color: var(--accent);
    transition: color var(--t-base), transform var(--t-base);
}

.oai-usecase-list a:hover .oai-usecase-icon {
    color: var(--accent-dark);
    transform: scale(1.1);
}

/* --- LATEST COLUMNS: サムネ+抜粋2行 --- */
.oai-latest-columns {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.oai-latest-columns__item {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: 10px;
    text-decoration: none;
    color: inherit;
    transition: opacity var(--t-base);
}

.oai-latest-columns__item:hover {
    opacity: 0.85;
}

.oai-latest-columns__thumb {
    display: block;
    width: 64px;
    height: 64px;
    border-radius: var(--r2);
    overflow: hidden;
    background: var(--warm-2);
    flex-shrink: 0;
}

.oai-latest-columns__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform var(--t-slow);
}

.oai-latest-columns__item:hover .oai-latest-columns__thumb img {
    transform: scale(1.06);
}

.oai-latest-columns__thumb--blank {
    background: linear-gradient(135deg, var(--warm-1), var(--accent-soft));
}

.oai-latest-columns__body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
    justify-content: center;
}

.oai-latest-columns__title {
    font-size: 12px;
    font-weight: 700;
    line-height: 1.5;
    color: var(--t1);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.oai-latest-columns__excerpt {
    font-size: 11px;
    line-height: 1.5;
    color: var(--t3);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}


/* ==========================================================================
   SP カラム落ち修正
   ========================================================================== */

/* アプリ詳細「アプリ基本データ」テーブル SP対応 */
@media (max-width: 767px) {
    .oai-data-table {
        font-size: 12px;
    }
    .oai-data-table th,
    .oai-data-table td {
        display: table-cell !important;
        padding: 10px 8px !important;
    }
    .oai-data-table th {
        width: 38% !important;
        background: var(--accent-soft) !important;
        font-weight: 700;
        white-space: nowrap;
    }
    .oai-data-table td {
        word-break: break-word;
    }
}

/* タイプ詳細「このタイプにおすすめ」 SP対応 */
@media (max-width: 767px) {
    .shindan-app-rank {
        grid-template-columns: 60px 1fr !important;
        gap: 12px !important;
        padding: 14px !important;
    }
    .shindan-app-rank__role {
        grid-column: 1 / 2;
        font-size: 10px;
        padding: 4px 6px;
    }
    .shindan-app-rank__logo {
        grid-column: 1 / 2;
        grid-row: 2;
        width: 48px;
        height: 48px;
    }
    .shindan-app-rank__logo img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        border-radius: var(--r2);
    }
    .shindan-app-rank > div:nth-child(3) {
        grid-column: 2 / 3;
        grid-row: 1 / 3;
    }
    .shindan-app-rank__name {
        font-size: 14px;
        line-height: 1.4;
    }
    .shindan-app-rank__name a {
        display: inline;
    }
    .shindan-app-rank__reason {
        font-size: 11px;
        margin-top: 6px;
    }
    .shindan-app-rank__cta {
        grid-column: 1 / 3;
        grid-row: 3;
        text-align: right;
        margin-top: 8px;
    }
}


/* ==========================================================================
   都道府県一覧（page-area.php）
   ========================================================================== */

.area-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 8px;
}

.area-cell {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 12px;
    background: var(--bg-cream);
    border: 1px solid var(--line);
    border-radius: var(--r2);
    text-decoration: none;
    color: var(--t1);
    font-size: 13px;
    transition: all var(--t-base);
}

.area-cell:hover {
    border-color: var(--accent);
    background: var(--accent-soft);
    transform: translateY(-1px);
    box-shadow: var(--s1);
}

.area-cell__name {
    font-weight: 500;
}

.area-cell__count {
    font-size: 10px;
    color: var(--accent-dark);
    font-family: var(--font-mont);
}

@media (max-width: 1024px) {
    .area-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

@media (max-width: 767px) {
    .area-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
    }
    .area-cell {
        padding: 10px;
        font-size: 12px;
    }
}


/* ==========================================================================
   SPスティッキーCTAバー（アプリ詳細ページ専用）
   1個目のCTAを通過したら下からふわっと出現
   フッターCTA可視範囲では引っ込む
   ========================================================================== */

.oai-sticky-cta {
    /* PCでは非表示 */
    display: none;
}

@media (max-width: 767px) {
    .oai-sticky-cta {
        display: block;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 200;
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
        background: rgba(255, 255, 255, 0.96);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        box-shadow: 0 -4px 20px rgba(107, 93, 75, 0.12);
        border-top: 1px solid var(--line);
        /* 初期状態: 画面外（下）にスタンバイ */
        transform: translateY(100%);
        opacity: 0;
        pointer-events: none;
        transition:
            transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
            opacity 0.35s ease;
    }

    /* 1個目のCTA通過後に出現 */
    .oai-sticky-cta.is-visible {
        transform: translateY(0);
        opacity: 1;
        pointer-events: auto;
    }

    /* フッターCTA可視時には引っ込む */
    .oai-sticky-cta.is-hiding {
        transform: translateY(100%);
        opacity: 0;
        pointer-events: none;
    }

    .oai-sticky-cta__inner {
        display: flex;
        align-items: center;
        gap: 10px;
    }

    .oai-sticky-cta__label {
        flex: 1;
        min-width: 0;
        font-size: 12px;
        line-height: 1.35;
        color: var(--t2);
    }
    .oai-sticky-cta__label strong {
        display: block;
        font-size: 13px;
        color: var(--t1);
        font-weight: 600;
        margin-bottom: 2px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .oai-sticky-cta__btn {
        flex-shrink: 0;
        padding: 12px 18px;
        font-size: 13px;
        font-weight: 600;
        white-space: nowrap;
    }
}


/* ==========================================================================
   関連アプリ「上手くいかない人向け」セクション
   app-liv.jp式の訴求型レイアウト
   ========================================================================== */

.oai-alt-apps {
    margin-bottom: 48px;
}

.oai-alt-apps__list {
    display: grid;
    gap: 16px;
}

.oai-alt-apps__item {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 16px;
    align-items: center;
    padding: 16px;
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r3);
    box-shadow: var(--s1);
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s ease;
}

.oai-alt-apps__item:hover {
    transform: translateY(-2px);
    box-shadow: var(--s2);
}

.oai-alt-apps__thumb {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 80px;
    height: 80px;
    border-radius: var(--r2);
    overflow: hidden;
    background: var(--warm-1);
    flex-shrink: 0;
}

.oai-alt-apps__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.oai-alt-apps__body {
    min-width: 0;
}

.oai-alt-apps__reason {
    font-size: 11px;
    color: var(--accent-dark);
    margin-bottom: 4px;
    font-weight: 500;
    letter-spacing: 0.05em;
}

.oai-alt-apps__name {
    font-size: 15px;
    font-weight: 600;
    margin-bottom: 6px;
    line-height: 1.4;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.oai-alt-apps__name a {
    color: var(--t1);
    text-decoration: none;
}

.oai-alt-apps__name a:hover {
    color: var(--accent-dark);
}

.oai-alt-apps__score {
    font-family: var(--font-mont);
    font-size: 11px;
    color: var(--accent-dark);
    font-weight: 500;
}

.oai-alt-apps__desc {
    font-size: 12px;
    color: var(--t3);
    line-height: 1.5;
    margin: 0;
}

.oai-alt-apps__cta {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex-shrink: 0;
}

.oai-alt-apps__cta .btn {
    white-space: nowrap;
    min-width: 64px;
    justify-content: center;
}

/* SP: 縦並びへ */
@media (max-width: 600px) {
    .oai-alt-apps__item {
        grid-template-columns: 64px 1fr;
        grid-template-areas:
            "thumb body"
            "cta cta";
        gap: 12px;
    }
    .oai-alt-apps__thumb {
        grid-area: thumb;
        width: 64px;
        height: 64px;
    }
    .oai-alt-apps__body {
        grid-area: body;
    }
    .oai-alt-apps__cta {
        grid-area: cta;
        flex-direction: row;
        margin-top: 4px;
    }
    .oai-alt-apps__cta .btn {
        flex: 1;
    }
    .oai-alt-apps__name {
        font-size: 14px;
    }
}


/* ==========================================================================
   App Store公式スクリーンショット表示
   横スクロール、9:16比率カード、t-ocul.com 級の賑やかさを実現
   ========================================================================== */

.oai-app-shots {
    /* セクション本体 */
}

.oai-app-shots__scroll {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 8px 4px 16px;
    /* スクロールバーをミニマルに */
    scrollbar-width: thin;
    scrollbar-color: var(--accent) transparent;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    margin: 16px 0 0;
}
.oai-app-shots__scroll::-webkit-scrollbar {
    height: 6px;
}
.oai-app-shots__scroll::-webkit-scrollbar-track {
    background: transparent;
}
.oai-app-shots__scroll::-webkit-scrollbar-thumb {
    background: var(--accent);
    border-radius: 3px;
}

.oai-app-shots__item {
    flex-shrink: 0;
    width: 220px;
    aspect-ratio: 9 / 16;
    border-radius: 18px;
    overflow: hidden;
    background: linear-gradient(135deg, var(--warm-1), var(--warm-2));
    box-shadow: 0 4px 16px rgba(107, 93, 75, 0.12);
    scroll-snap-align: start;
    display: block;
    border: 1px solid var(--line);
}
/* ホバー効果は意図的に削除：このカードはクリック不能（リンクなし）のため、
   動きをつけるとユーザーがクリックを期待してしまう */
.oai-app-shots__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.oai-app-shots__caption {
    font-size: 11px;
    color: var(--t4);
    margin: 8px 0 0;
    text-align: right;
}

/* SP: 少し小さめ */
@media (max-width: 600px) {
    .oai-app-shots__item {
        width: 180px;
        border-radius: 14px;
    }
}


/* ==========================================================================
   PICK UP APPS サイドバー（アイコン付き）
   ========================================================================== */

.oai-pick-apps {
    list-style: none;
    margin: 0;
    padding: 0;
}

.oai-pick-apps__item {
    border-bottom: 1px solid var(--line);
}
.oai-pick-apps__item:last-child {
    border-bottom: none;
}

.oai-pick-apps__link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    text-decoration: none;
    color: var(--t1);
    transition: color 0.2s ease;
}
.oai-pick-apps__link:hover {
    color: var(--accent-dark);
}

.oai-pick-apps__icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    overflow: hidden;
    background: var(--warm-1);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 3px rgba(107, 93, 75, 0.08);
}
.oai-pick-apps__icon img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.oai-pick-apps__icon-placeholder {
    font-size: 16px;
    opacity: 0.4;
}

.oai-pick-apps__name {
    flex: 1;
    min-width: 0;
    font-size: 13px;
    line-height: 1.4;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.oai-pick-apps__score {
    flex-shrink: 0;
    font-family: var(--font-mont);
    font-size: 11px;
    font-weight: 600;
    color: var(--rating-gold);
    letter-spacing: 0.02em;
}

/* ==========================================================================
   評価★の色統一（黄金）
   サイト全体で「★ X.X」表記を視認性高くする
   ========================================================================== */

:root {
    --rating-gold:      #e8a73c;   /* 評価★メインカラー */
    --rating-gold-soft: #f5c971;   /* ホバー・サブ */
}

/* HERO・カード等で「★ X.X」を含む要素はこのクラスで色付け */
.oai-rating-star,
.oai-rating,
.card__rating,
.oai-app-shots .rating,
.oai-alt-apps__score {
    color: var(--rating-gold) !important;
}

/* pill--rating: 評価★を含むpillの色をゴールドに */
.pill--rating {
    color: var(--rating-gold) !important;
    border-color: var(--rating-gold) !important;
    background: rgba(232, 167, 60, 0.08);
}

/* ========================================
   オアイテ アプリ詳細「関連コラム」セクション
   - コラム⇔アプリ紐付け表示
   - 回遊性UPの中核UI
   - コラム一覧と統一感のある縦積みカード（3カラム）
   ======================================== */
.oai-related-columns__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-top: 24px;
}

.oai-related-columns__item {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r2);
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
    text-decoration: none;
    color: inherit;
}

.oai-related-columns__item:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 28px rgba(107, 93, 75, 0.12);
    border-color: var(--accent);
}

.oai-related-columns__thumb {
    width: 100%;
    aspect-ratio: 16/9;
    background: linear-gradient(135deg, var(--warm-1), var(--warm-2));
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.oai-related-columns__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.oai-related-columns__item:hover .oai-related-columns__thumb img {
    transform: scale(1.06);
}

.oai-related-columns__thumb-placeholder {
    font-family: var(--font-mont);
    font-size: 12px;
    letter-spacing: 0.15em;
    color: var(--accent-dark);
    opacity: 0.5;
}

.oai-related-columns__body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 18px 20px 20px;
    flex: 1;
}

.oai-related-columns__title {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.6;
    color: var(--t1);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.oai-related-columns__excerpt {
    font-size: 12px;
    line-height: 1.7;
    color: var(--t3);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.oai-related-columns__date {
    font-family: var(--font-mont);
    font-size: 10px;
    letter-spacing: 0.12em;
    color: var(--t4);
    margin-top: auto;
    padding-top: 4px;
}

/* タブレット: 2カラム */
@media (max-width: 960px) {
    .oai-related-columns__list {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
    }
}

/* SP: 1カラム */
@media (max-width: 640px) {
    .oai-related-columns__list {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .oai-related-columns__body {
        padding: 14px 16px 16px;
    }
    .oai-related-columns__title {
        font-size: 14px;
    }
    .oai-related-columns__excerpt {
        font-size: 12px;
    }
}

/* ========================================
   R18（18禁）表記スタイル
   - PCMAX事務局指摘の予防的対応
   - 全アダルト系アプリのCTAリンク周辺に表記
   ======================================== */
.oai-r18-badge {
    display: inline-block;
    padding: 2px 6px;
    background: #d44343;
    color: #fff;
    font-family: var(--font-mont);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.06em;
    border-radius: 4px;
    line-height: 1.2;
    vertical-align: middle;
    margin-left: 4px;
}

.oai-r18-badge--inline {
    font-size: 9px;
    padding: 1px 5px;
}

.oai-r18-badge--sticky {
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
    margin-left: 6px;
    padding: 1px 5px;
    font-size: 8px;
}

.oai-r18-note {
    font-size: 10px;
    color: var(--t4);
    margin-top: 8px;
    margin-bottom: 0;
    text-align: center;
    letter-spacing: 0.04em;
    line-height: 1.5;
}

.oai-sticky-cta__sub {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

@media (max-width: 600px) {
    .oai-r18-note {
        font-size: 9px;
    }
}

/* ==========================================================================
   VS比較ページ 強化（比較した2アプリCTA / 関連VS）
   ========================================================================== */
.oai-vs-apps-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin: 20px 0;
}
.oai-vs-apps-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    background: var(--warm-1);
    border: 1px solid var(--accent-soft);
    border-left: 3px solid var(--accent);
    transition: transform var(--t-base), background var(--t-base), box-shadow var(--t-base);
    text-decoration: none;
    color: var(--t1);
}
.oai-vs-apps-card:hover {
    transform: translateY(-2px);
    background: var(--warm-2);
    box-shadow: 0 6px 18px rgba(157, 135, 112, 0.14);
}
.oai-vs-apps-card img {
    width: 48px;
    height: 48px;
    object-fit: cover;
    flex-shrink: 0;
}
.oai-vs-apps-card__title {
    font-family: var(--font-kiwi);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.03em;
    color: var(--t1);
    line-height: 1.5;
}

.oai-related-vs__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin: 20px 0;
}
.oai-related-vs__card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    background: #fff;
    border: 1px solid var(--accent-soft);
    text-decoration: none;
    color: var(--t1);
    transition: background var(--t-base), border-color var(--t-base), transform var(--t-base);
}
.oai-related-vs__card:hover {
    background: var(--warm-1);
    border-color: var(--accent);
    transform: translateX(4px);
}
.oai-related-vs__label {
    font-family: var(--font-mont);
    font-size: 10px;
    font-weight: 700;
    color: var(--accent-dark);
    letter-spacing: 0.1em;
    background: var(--accent-soft);
    padding: 3px 8px;
}
.oai-related-vs__title {
    font-size: 13px;
    line-height: 1.5;
    color: var(--t1);
    font-weight: 500;
}

/* VS比較表の強化 */
.vs-compare-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    margin: 16px 0;
    font-size: 13.5px;
}
.vs-compare-table th,
.vs-compare-table td {
    padding: 12px 14px;
    text-align: left;
    border-bottom: 1px solid var(--accent-soft);
    vertical-align: top;
    line-height: 1.6;
}
.vs-compare-table thead th {
    background: var(--warm-1);
    color: var(--accent-dark);
    font-family: var(--font-mont);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 600;
}
.vs-compare-table tbody th {
    background: var(--warm-1);
    width: 30%;
    color: var(--t2);
    font-weight: 600;
}

/* 本文中のtable（AI生成記事のHTML table）に同じスタイルを適用 */
.column-body table,
.oai-aeo-quick__body table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-size: 13.5px;
}
.column-body table th,
.column-body table td {
    padding: 12px 14px;
    text-align: left;
    border-bottom: 1px solid var(--accent-soft);
    vertical-align: top;
    line-height: 1.6;
}
.column-body table thead th {
    background: var(--warm-1);
    color: var(--accent-dark);
    font-family: var(--font-mont);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 600;
}
.column-body table tbody tr:nth-child(even) {
    background: var(--warm-1);
}

/* ==========================================================================
   カテゴリページ 関連コラム / 他カテゴリ移動
   ========================================================================== */
.oai-cat-columns-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin: 20px 0;
}
.oai-cat-column-card {
    display: block;
    background: #fff;
    border: 1px solid var(--accent-soft);
    text-decoration: none;
    color: var(--t1);
    transition: transform var(--t-base), box-shadow var(--t-base), border-color var(--t-base);
}
.oai-cat-column-card:hover {
    transform: translateY(-2px);
    border-color: var(--accent);
    box-shadow: 0 6px 18px rgba(157, 135, 112, 0.12);
}
.oai-cat-column-card__thumb img {
    width: 100%;
    aspect-ratio: 16/9;
    object-fit: cover;
    display: block;
}
.oai-cat-column-card__body {
    padding: 16px 18px 18px;
}
.oai-cat-column-card__body h3 {
    font-size: 14px;
    font-weight: 700;
    line-height: 1.5;
    margin-bottom: 8px;
    color: var(--t1);
}
.oai-cat-column-card__body p {
    font-size: 12px;
    line-height: 1.7;
    color: var(--t3);
    margin: 0;
}

.oai-other-cats__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin: 20px 0;
}
.oai-other-cats__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 14px 18px;
    background: var(--warm-1);
    border-left: 3px solid var(--accent);
    text-decoration: none;
    color: var(--t1);
    transition: background var(--t-base), transform var(--t-base);
    font-family: var(--font-kiwi);
    font-size: 13px;
    letter-spacing: 0.03em;
}
.oai-other-cats__item:hover {
    background: var(--warm-2);
    transform: translateX(4px);
}
.oai-other-cats__arrow {
    color: var(--accent);
    font-family: var(--font-mont);
}

@media (max-width: 768px) {
    .oai-vs-apps-grid,
    .oai-related-vs__grid,
    .oai-cat-columns-grid { grid-template-columns: 1fr; }
    .oai-other-cats__grid { grid-template-columns: repeat(2, 1fr); }
}

/* ==========================================================================
   カテゴリガイド本文（taxonomy archive 上部の AI生成記事）
   - max-width 制約なし、メインカラム幅いっぱい
   - 見出し・段落・リストにメリハリ
   ========================================================================== */
.oai-cat-guide {
    font-size: 14.5px;
    line-height: 1.95;
    color: var(--t2);
    margin: 16px 0 24px;
    padding: 0;
}
.oai-cat-guide p {
    margin: 0 0 14px;
}
.oai-cat-guide h2 {
    font-family: var(--font-kiwi);
    font-size: 19px;
    font-weight: 500;
    color: var(--t1);
    letter-spacing: 0.04em;
    margin: 32px 0 14px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--accent-soft);
    line-height: 1.5;
    position: relative;
}
.oai-cat-guide h2::before {
    content: "";
    position: absolute;
    bottom: -2px;
    left: 0;
    width: 48px;
    height: 2px;
    background: var(--accent);
}
.oai-cat-guide h3 {
    font-size: 15px;
    font-weight: 700;
    color: var(--t1);
    margin: 22px 0 10px;
    padding-left: 12px;
    border-left: 3px solid var(--accent);
    line-height: 1.55;
}
.oai-cat-guide ul,
.oai-cat-guide ol {
    margin: 14px 0 18px;
    padding-left: 22px;
}
.oai-cat-guide ul li,
.oai-cat-guide ol li {
    margin-bottom: 8px;
    line-height: 1.85;
}
.oai-cat-guide ul {
    list-style: none;
    padding-left: 0;
}
.oai-cat-guide ul li {
    padding-left: 22px;
    position: relative;
}
.oai-cat-guide ul li::before {
    content: "";
    position: absolute;
    left: 4px;
    top: 0.85em;
    width: 8px;
    height: 8px;
    background: var(--accent);
    transform: translateY(-50%);
}
.oai-cat-guide strong {
    color: var(--t1);
    font-weight: 700;
}

@media (max-width: 600px) {
    .oai-cat-guide {
        font-size: 13.5px;
        line-height: 1.85;
    }
    .oai-cat-guide h2 {
        font-size: 17px;
        margin: 28px 0 12px;
    }
    .oai-cat-guide h3 {
        font-size: 14px;
    }
}
