:root {
  --mo-bg: #080b10;
  --mo-panel: #0e141b;
  --mo-panel-2: #141b24;
  --mo-line: #293440;
  --mo-text: #f5f1e8;
  --mo-muted: #9aa4b1;
  --mo-gold: #f4c24f;
  --mo-gold-dark: #7e6428;
  --mo-danger: #da6659;
  --mo-radius: 10px;
  --mo-shadow: 0 18px 54px rgba(0,0,0,.28);
}

html { scroll-behavior: smooth; }
body.mo-catalog-route,
body.mo-standalone-shell { max-width:100%; margin:0; overflow-x:hidden; color:var(--mo-text); background:var(--mo-bg); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Yu Gothic UI","Yu Gothic",Meiryo,sans-serif; -webkit-font-smoothing:antialiased; }
body.mo-standalone-shell::before,
body.mo-standalone-shell::after { display:none; }
.mo-site-frame { min-width:320px; min-height:70vh; overflow:clip; background:var(--mo-bg); }
.mo-skip-link { position:fixed; z-index:99999; top:8px; left:8px; padding:9px 14px; color:#111; background:#fff; border-radius:5px; transform:translateY(-150%); }
.mo-skip-link:focus { transform:none; }
.screen-reader-text { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
.mo-db, .mo-db * { box-sizing: border-box; }
.mo-db { min-height: 70vh; color: var(--mo-text); background: var(--mo-bg); font-size: 16px; line-height: 1.7; }
.mo-db a { color: inherit; text-decoration: none; }
.mo-db img { max-width: 100%; }
.mo-shell { width: min(1280px, calc(100% - 40px)); margin-inline: auto; }
.mo-db-main { min-height: 70vh; padding-bottom: 80px; }
.mo-db-main.mo-shell { padding-top: 58px; }

.mo-db-header,
.mo-db-header * { box-sizing:border-box; }
.mo-db-header { position:sticky; z-index:90; top:0; color:#f7f2e8; background:rgba(8,11,16,.97); border-bottom:1px solid #2a333d; box-shadow:0 14px 38px rgba(0,0,0,.24); backdrop-filter:blur(18px); }
body.admin-bar .mo-db-header { top:32px; }
.mo-db-header a { color:inherit; text-decoration:none; }
/* 上の細い帯。10pxは小さすぎて読めていなかった。 */
.mo-db-utility { color:#9aa5b1; background:#05070a; border-bottom:1px solid #1d252d; font-size:12px; font-weight:500; letter-spacing:.06em; }
.mo-db-utility .mo-shell { display:flex; justify-content:space-between; align-items:center; min-height:34px; }
.mo-db-header-main { display:grid; grid-template-columns:auto minmax(280px,1fr) auto; gap:30px; align-items:center; min-height:76px; }
.mo-db-header-main > * { min-width:0; }
.mo-db-brand { display:flex; align-items:center; gap:11px; min-width:max-content; }
.mo-db-brand > b { display:grid; place-items:center; width:43px; height:43px; color:#17130a; background:var(--mo-gold); border-radius:8px; font:800 16px/1 Georgia,serif; box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }
.mo-db-brand > span { display:grid; color:#f7f2e8; }
.mo-db-brand strong { font:700 19px/1.1 Georgia,"Yu Mincho",serif; letter-spacing:.055em; }
.mo-db-brand small { margin-top:4px; color:#7f8995; font:750 8px/1 system-ui,sans-serif; letter-spacing:.21em; }
.mo-db-global-search { display:grid; grid-template-columns:1fr 72px; width:min(620px,100%); justify-self:center; }
.mo-db-global-search input { width:100%; min-width:0; min-height:42px; padding:0 15px; color:#f4f5f6; background:#111820; border:1px solid #333e49; border-right:0; border-radius:7px 0 0 7px; outline:0; font:500 13px system-ui,sans-serif; }
.mo-db-global-search input:focus { border-color:#8d7536; box-shadow:0 0 0 3px rgba(244,194,79,.08); }
.mo-db-global-search button { min-height:42px; padding:0 12px; color:#17130a; background:var(--mo-gold); border:1px solid var(--mo-gold); border-radius:0 7px 7px 0; font:800 12px system-ui,sans-serif; cursor:pointer; }
.mo-db-quick { display:flex; align-items:stretch; gap:7px; }
.mo-db-quick a { display:grid; min-width:82px; padding:7px 10px; color:#c4cbd3; background:#121921; border:1px solid #2d3843; border-radius:7px; text-align:center; font-size:11px; font-weight:750; }
.mo-db-quick a:hover { color:#fff; border-color:#695a34; }
.mo-db-quick a.is-sale { color:#ffe0da; border-color:#63352e; background:#22120f; }
.mo-db-quick small { color:#747f8b; font-size:8px; letter-spacing:.16em; }
.mo-db-nav { max-width:100%; overflow:hidden; border-top:1px solid #1f2831; }
/* 横スクロールするバーは、指の動きを横だけに固定する。
   touch-action:pan-x が無いと、横へ払った指が縦スクロールも拾ってしまい、
   バーの先を見ようとするたびにページが上下に動く（スマホで特に顕著）。
   overscroll-behavior-x:contain は、端まで来たときに背後のページへ
   スクロールが連鎖するのを止める。 */
.mo-db-nav-links { display:flex; flex-wrap:nowrap; align-items:stretch; min-height:54px; overflow-x:auto; overflow-y:hidden; scrollbar-width:none; touch-action:pan-x; overscroll-behavior-x:contain; overscroll-behavior-y:none; -webkit-overflow-scrolling:touch; }
.mo-db-nav-links > a { flex:0 0 auto; white-space:nowrap; }
.mo-db-nav-links::-webkit-scrollbar { display:none; }
/*
 * ナビの文字。実測で比べて決めた値。
 *
 *   こちら（変更前）  12px / 太さ700 / リンクの高さ43px
 *   参考サイト        16px / 太さ400 / リンクの高さ60px
 *
 * 12pxを太字にしていたのは小ささを補うためで、太らせるほど字が
 * つぶれて余計に読みにくくなっていた。**大きくして太さを戻す。**
 */
.mo-db-nav-links a { position:relative; display:grid; place-items:center; min-width:max-content; padding:0 18px; color:#c3ccd6; font-size:15px; font-weight:500; letter-spacing:.02em; }
.mo-db-nav-links a:first-child { padding-left:0; padding-right:20px; }
.mo-db-nav-links a:hover,
.mo-db-nav-links a.is-active { color:#fff; }
.mo-db-nav-links a.is-active { font-weight:700; }
.mo-db-nav-links a.is-active::after { content:""; position:absolute; right:16px; bottom:-1px; left:16px; height:3px; background:var(--mo-gold); }
.mo-db-nav-links a:first-child.is-active::after { left:0; }

.mo-db-footer,
.mo-db-footer * { box-sizing:border-box; }
.mo-db-footer { color:#aab3bd; background:#05080c; border-top:1px solid #28313b; }
.mo-db-footer a { color:inherit; text-decoration:none; }
.mo-db-footer-grid { display:grid; grid-template-columns:2fr repeat(3,1fr); gap:54px; padding-top:62px; padding-bottom:50px; }
.mo-db-footer-brand > a { display:flex; align-items:center; gap:11px; color:#f5f1e8; font:700 19px Georgia,"Yu Mincho",serif; }
.mo-db-footer-brand > a > b { display:grid; place-items:center; width:42px; height:42px; color:#17130a; background:var(--mo-gold); border-radius:8px; }
.mo-db-footer-brand > a span { display:grid; }
.mo-db-footer-brand > a small { margin-top:3px; color:#737e89; font:750 8px system-ui,sans-serif; letter-spacing:.18em; }
.mo-db-footer-brand p { max-width:390px; margin:18px 0 0; color:#7f8994; font-size:13px; line-height:1.8; }
.mo-db-footer nav { display:grid; align-content:start; gap:10px; }
.mo-db-footer nav strong { margin-bottom:5px; color:#e9e4db; font-size:12px; letter-spacing:.08em; }
.mo-db-footer nav a { color:#87919c; font-size:12px; }
.mo-db-footer nav a:hover { color:var(--mo-gold); }
.mo-db-footer-bottom { display:flex; justify-content:space-between; gap:20px; padding-top:18px; padding-bottom:22px; color:#59636e; border-top:1px solid #1e2730; font-size:10px; }

.mo-page-head { padding: 20px 0 44px; border-bottom: 1px solid var(--mo-line); }
.mo-page-head > p, .mo-kicker, .mo-section-head > p, .mo-filter-title p, .mo-sale-head > p, .mo-work-hero .mo-kicker { margin: 0; color: var(--mo-gold); font-size: 12px; font-weight: 800; letter-spacing: .17em; }
.mo-page-head h1, .mo-sale-head h1 { margin: 8px 0 10px; font: 600 clamp(38px,5vw,66px)/1.2 Georgia,"Yu Mincho",serif; }
.mo-page-head > span, .mo-sale-head > span { color: var(--mo-muted); font-size: 16px; }
.mo-page-head-inline { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; }
.mo-page-head-inline b { padding:7px 13px; color:#17130a; background:var(--mo-gold); border-radius:99px; font-size:12px; }
.mo-alert, .mo-feedback-notice { margin: 28px 0; padding: 15px 18px; color:#e8d79d; background:#17160f; border:1px solid #554922; border-radius:8px; }
.mo-muted { color: var(--mo-muted); }

.mo-filter-panel, .mo-actress-filters { margin: 30px 0 40px; padding: 24px; background:linear-gradient(145deg,#121923,#0d1219); border:1px solid var(--mo-line); border-radius:var(--mo-radius); box-shadow:var(--mo-shadow); }
.mo-search-row { display:grid; grid-template-columns:1fr 150px 170px 130px; gap:10px; }
.mo-db input, .mo-db select, .mo-db textarea { color:#f1f2f4; background:#0a0f15; border:1px solid #35414e; border-radius:7px; font:inherit; }
.mo-db input, .mo-db select { min-height:46px; padding:0 13px; }
.mo-db textarea { width:100%; padding:12px; resize:vertical; }
.mo-db button, .mo-button { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:0 18px; color:#17130a; background:var(--mo-gold); border:1px solid var(--mo-gold); border-radius:7px; font:750 14px system-ui,sans-serif; cursor:pointer; }
.mo-db button:hover, .mo-button:hover { filter:brightness(1.08); }
.mo-filter-panel details { margin-top:18px; padding-top:16px; border-top:1px solid var(--mo-line); }
.mo-filter-panel summary { color:#d9dde2; cursor:pointer; font-weight:700; }
.mo-filter-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.mo-filter-tags label input { position:absolute; opacity:0; }
.mo-filter-tags label span { display:block; padding:7px 11px; color:#b9c1cb; background:#141b24; border:1px solid #303b47; border-radius:99px; font-size:13px; cursor:pointer; }
.mo-filter-tags label input:checked + span { color:#17130a; background:var(--mo-gold); border-color:var(--mo-gold); }
.mo-inline-filter { display:flex; gap:8px; margin:28px 0; }
.mo-inline-filter a, .mo-inline-filter button { min-height:40px; padding:0 15px; color:#bdc5ce; background:#121923; border:1px solid var(--mo-line); border-radius:99px; }
.mo-inline-filter .is-active { color:#18140c; background:var(--mo-gold); border-color:var(--mo-gold); }
.mo-result-summary { margin:24px 0 16px; color:var(--mo-muted); }
.mo-result-summary strong { margin-right:5px; color:var(--mo-gold); font:600 25px Georgia,serif; }

.mo-product-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:22px 16px; }
.mo-product-card { min-width:0; overflow:hidden; background:var(--mo-panel); border:1px solid #242f3b; border-radius:var(--mo-radius); transition:transform .18s,border-color .18s,box-shadow .18s; }
.mo-product-card:hover { transform:translateY(-4px); border-color:#594b29; box-shadow:var(--mo-shadow); }
.mo-product-image { position:relative; display:grid; place-items:center; width:100%; aspect-ratio:2/3; overflow:hidden; background:radial-gradient(circle,#1c2530,#090d12 70%); }
.mo-product-image img { width:100%; height:100%; object-fit:contain; transition:transform .25s; }
.mo-product-card:hover .mo-product-image img { transform:scale(1.025); }
.mo-card-overlay { position:absolute; inset:auto 8px 8px; padding:8px; color:#fff; background:rgba(7,10,14,.82); border:1px solid rgba(255,255,255,.15); border-radius:6px; text-align:center; font-size:12px; opacity:0; transform:translateY(6px); transition:.18s; }
.mo-product-card:hover .mo-card-overlay { opacity:1; transform:none; }
.mo-sale-badge { position:absolute; top:9px; left:9px; padding:5px 8px; color:#fff; background:#b83c32; border-radius:5px; font-size:12px; font-weight:800; }
/* 素人バッジ。セールバッジと同時に出ることがあるので右上へ逃がす。 */
.mo-amateur-badge { position:absolute; top:9px; right:9px; padding:5px 8px; color:#1b1b1b; background:#e6c86e; border-radius:5px; font-size:12px; font-weight:800; letter-spacing:.04em; }
/* 販売元バッジ。統合済み作品は2つ並ぶので画像左下へ横並びで置く。 */
.mo-source-badges { position:absolute; left:9px; bottom:9px; display:flex; gap:4px; }
.mo-source-badges b { padding:3px 7px; border-radius:4px; font-size:11px; font-weight:800; letter-spacing:.06em; color:#fff; background:rgba(20,20,20,.82); }
.mo-source-badges b.is-fanza { background:#c8102e; }
.mo-source-badges b.is-mgs { background:#1f5fa9; }
.mo-product-body { padding:13px; }
.mo-card-meta { margin:0 0 5px; color:#6f7c89; font-size:11px; font-weight:700; letter-spacing:.08em; }
.mo-product-card h2 { min-height:3.1em; margin:0 0 8px; font:600 16px/1.55 Georgia,"Yu Mincho",serif; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.mo-product-card h2 a:hover, .mo-actress-line a:hover { color:var(--mo-gold); }
.mo-actress-line { min-height:1.7em; margin:0 0 9px; color:#c0c7cf; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mo-chips { display:flex; flex-wrap:wrap; gap:5px; }
.mo-chips a, .mo-chips span, .mo-chips b { display:inline-flex; padding:3px 7px; color:#c2cad3; background:#171f29; border:1px solid #2d3945; border-radius:99px; font-size:11px; font-weight:650; }
.mo-chips a:hover { color:#18140c; background:var(--mo-gold); border-color:var(--mo-gold); }
.mo-card-price { display:flex; align-items:end; justify-content:space-between; gap:8px; margin-top:12px; padding-top:10px; border-top:1px solid #26303a; }
.mo-card-price strong { color:#f0cd72; font-size:16px; }
.mo-card-price span { color:#7e8995; font-size:11px; }
.mo-image-placeholder { display:grid; place-items:center; align-content:center; gap:4px; width:100%; height:100%; min-height:120px; color:#697480; background:radial-gradient(circle,#1a222c,#0b1016 70%); }
.mo-image-placeholder b { color:#9d8750; font:650 16px Georgia,serif; }
.mo-image-placeholder small { font-size:10px; letter-spacing:.18em; }

.mo-pagination { display:flex; justify-content:center; gap:7px; margin:46px 0 0; }
.mo-pagination a { min-width:42px; min-height:42px; display:grid; place-items:center; padding:0 12px; color:#bbc3cc; background:#111820; border:1px solid #2b3642; border-radius:6px; }
.mo-pagination a.is-current { color:#17130a; background:var(--mo-gold); border-color:var(--mo-gold); }

.mo-actress-filters { margin-bottom:62px; }
.mo-filter-title { display:flex; justify-content:space-between; align-items:end; gap:20px; margin-bottom:20px; }
.mo-filter-title h2 { margin:2px 0 0; font:600 27px Georgia,"Yu Mincho",serif; }
.mo-filter-title > div > span { display:block; margin-top:5px; color:#8f99a5; font-size:13px; }
.mo-filter-title input { width:min(360px,100%); }
.mo-visual-filter-tabs { display:flex; flex-wrap:nowrap; gap:8px; margin:25px 0 16px; padding-bottom:5px; overflow-x:auto; overflow-y:hidden; scrollbar-width:thin; touch-action:pan-x; overscroll-behavior-x:contain; overscroll-behavior-y:none; -webkit-overflow-scrolling:touch; }
.mo-visual-filter-tabs button { flex:0 0 auto; min-height:42px; padding:7px 14px; color:#a8b0ba; background:#141b23; border:1px solid #303a45; border-radius:7px; white-space:nowrap; }
.mo-visual-filter-tabs button.is-active { color:#17130a; background:var(--mo-gold); border-color:var(--mo-gold); }
.mo-visual-filter-tabs small { display:inline-grid; place-items:center; min-width:18px; min-height:18px; margin-left:6px; color:#17130a; background:#fff1c8; border-radius:50%; font-size:10px; }
.mo-visual-filter-panels fieldset { margin:0; padding:0; border:0; }
.mo-visual-filter-panels fieldset[hidden] { display:none; }
.mo-visual-filter-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(135px,1fr)); gap:10px; }
.mo-actress-visual-option { min-width:0; min-height:148px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:10px; color:#d5d9dd; background:#121922; border:1px solid #303a46; border-radius:9px; cursor:pointer; transition:border-color .18s,box-shadow .18s; }
.mo-actress-visual-option:hover { border-color:#716033; }
.mo-actress-visual-option.is-selected, .mo-actress-visual-option:has(input:checked) { color:#f5d98d; border-color:var(--mo-gold); box-shadow:inset 0 0 0 2px rgba(244,194,79,.12); }
.mo-actress-visual-option input { position:absolute; width:1px; height:1px; min-height:0; opacity:0; pointer-events:none; }
.mo-option-visual { display:block; width:112px; height:80px; overflow:hidden; background:#0a0f15; border:1px solid rgba(255,255,255,.12); border-radius:6px; }
.mo-option-visual img, .mo-option-visual i { display:block; width:100%; height:100%; object-fit:cover; }
.mo-option-visual i { background-image:url("breast-guide-sprite.png"); background-repeat:no-repeat; background-size:400% 200%; }
.mo-actress-visual-option strong { font-size:13px; }
.mo-actress-visual-option small { color:#737e89; font-size:11px; }
.mo-actress-filter-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; }
.mo-actress-filter-grid label span { display:block; margin-bottom:5px; color:#9fa9b5; font-size:12px; }
.mo-actress-filter-grid select { width:100%; }
.mo-profile-filter-grid { grid-template-columns:repeat(2,minmax(180px,260px)); margin-top:18px; padding-top:18px; border-top:1px solid var(--mo-line); }
/* 熟女はチェックボックス1つ。プルダウンの隣に並べても浮かないよう高さを合わせる。 */
.mo-filter-check { display:flex; align-items:center; gap:8px; }
.mo-filter-check input { width:16px; height:16px; margin:0; flex:0 0 auto; }
.mo-filter-check span { display:inline; margin:0; color:#e6ebf2; font-size:13px; }
.mo-filter-actions { display:flex; align-items:center; gap:16px; margin-top:20px; }
.mo-filter-actions a { color:#aab3bd; font-size:13px; text-decoration:underline; }
.mo-directory-section { margin-top:68px; }
.mo-section-head { position:relative; display:flex; align-items:end; gap:18px; margin-bottom:24px; padding-bottom:14px; border-bottom:1px solid var(--mo-line); }
.mo-section-head h2 { margin:0 auto 0 0; font:600 29px Georgia,"Yu Mincho",serif; }
.mo-section-head p { position:absolute; margin-bottom:37px; }
.mo-section-head > span { color:#8b96a3; font-size:13px; }
.mo-section-head > a { color:var(--mo-gold); font-size:13px; font-weight:700; }
.mo-actress-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:18px; }
.mo-actress-card { position:relative; overflow:hidden; background:var(--mo-panel); border:1px solid #26313d; border-radius:var(--mo-radius); }
.mo-actress-image { display:grid; place-items:center; aspect-ratio:1/1.15; overflow:hidden; background:#0a0f15; }
.mo-actress-image img { width:100%; height:100%; object-fit:contain; }
.mo-actress-image.is-square { aspect-ratio:1; }
.mo-actress-image.is-poster { aspect-ratio:2/3; }
.mo-actress-image.is-landscape { aspect-ratio:4/3; }
.mo-actress-card > div:last-child { padding:13px; }
.mo-actress-card h2 { margin:0; font:600 18px Georgia,"Yu Mincho",serif; }
.mo-actress-card h2 small { display:block; margin-top:2px; color:#76818e; font:500 11px system-ui,sans-serif; }
.mo-actress-card p { margin:7px 0; color:#939eaa; font-size:13px; }
.mo-rank-number { position:absolute; z-index:2; top:8px; left:8px; display:grid; place-items:center; width:35px; height:35px; color:#17130a; background:var(--mo-gold); border-radius:50%; font:700 18px Georgia,serif; }

.mo-actress-hero { padding:58px 0; background:radial-gradient(circle at 16% 30%,rgba(244,194,79,.1),transparent 30%),linear-gradient(#0d131a,#080b10); border-bottom:1px solid var(--mo-line); }
.mo-actress-profile-grid { display:grid; grid-template-columns:minmax(240px,360px) 1fr; gap:48px; align-items:start; }
.mo-profile-image { display:grid; place-items:center; min-height:420px; overflow:hidden; background:#0a0f15; border:1px solid #343f4b; border-radius:10px; }
.mo-profile-image img { width:100%; max-height:560px; object-fit:contain; }
.mo-profile-image.is-square { aspect-ratio:1; min-height:0; }
.mo-actress-profile-grid h1 { margin:6px 0 15px; font:600 clamp(39px,5vw,62px)/1.2 Georgia,"Yu Mincho",serif; }
.mo-actress-profile-grid h1 small { display:block; margin-top:9px; color:#8d98a5; font:500 14px system-ui,sans-serif; }
.mo-profile-count { color:#b8c0c9; }
.mo-profile-count strong { display:block; margin-top:8px; color:#f0cc70; font-size:20px; }
.mo-profile-data { margin:22px 0; border-top:1px solid var(--mo-line); }
.mo-profile-data div { display:grid; grid-template-columns:130px 1fr; gap:18px; padding:12px 0; border-bottom:1px solid var(--mo-line); }
.mo-profile-data dt { color:#7f8b98; font-size:13px; }
.mo-profile-data dd { margin:0; color:#d7dce1; }
.mo-profile-data a { color:var(--mo-gold); }
.mo-profile-tags > span { display:block; margin-bottom:8px; color:#7e8995; font-size:12px; }

.mo-fetish-hero { padding:82px 0 62px; text-align:center; background:radial-gradient(circle at 50% 20%,rgba(244,194,79,.13),transparent 34%),linear-gradient(#0d131a,#080b10); border-bottom:1px solid var(--mo-line); }
.mo-fetish-hero p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:800; letter-spacing:.19em; }
.mo-fetish-hero h1 { margin:8px 0; font:600 clamp(42px,6vw,72px)/1.22 Georgia,"Yu Mincho",serif; }
.mo-fetish-hero h1 em { color:var(--mo-gold); font-style:normal; }
.mo-fetish-hero span { color:var(--mo-muted); }
.mo-ontology-intro { display:grid; grid-template-columns:290px 1fr; gap:30px; margin-top:48px; padding:25px; background:#10161e; border:1px solid #403921; border-radius:10px; }
.mo-ontology-intro p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:800; letter-spacing:.15em; }
.mo-ontology-intro h2 { margin:4px 0; font:600 27px Georgia,"Yu Mincho",serif; }
.mo-ontology-intro ol { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; margin:0; padding:0; list-style:none; }
.mo-ontology-intro li { display:flex; align-items:center; gap:7px; padding:8px; color:#b8c1cb; background:#151c24; border:1px solid #2c3742; border-radius:6px; font-size:12px; }
.mo-ontology-intro li b { color:var(--mo-gold); font:600 17px Georgia,serif; }
.mo-ontology-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-top:28px; }
.mo-ontology-card { overflow:hidden; background:var(--mo-panel); border:1px solid #2a3541; border-radius:11px; }
.mo-ontology-card-head { position:relative; display:flex; align-items:end; min-height:230px; padding:24px; background:linear-gradient(140deg,#1a222d,#0a0f15); background-size:cover; background-position:center; }
.mo-ontology-card-head > div { position:relative; z-index:2; }
.mo-ontology-card-head > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.65; }
.mo-ontology-card-head.has-breast-guide::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent,rgba(7,10,15,.9)); }
.mo-ontology-card-head span { display:inline-flex; padding:4px 8px; color:#17130a; background:var(--mo-gold); border-radius:99px; font-size:11px; font-weight:800; }
.mo-ontology-card-head h2 { margin:8px 0 2px; font:600 29px Georgia,"Yu Mincho",serif; }
.mo-ontology-card-head p { margin:0; color:#bdc5ce; font-size:14px; }
.mo-ontology-sections { display:grid; gap:18px; padding:22px; }
.mo-ontology-sections section { display:grid; grid-template-columns:130px 1fr; gap:14px; }
.mo-ontology-sections h3 { margin:7px 0 0; color:#dfca8d; font-size:14px; }
.mo-ontology-sections section > div { display:flex; flex-wrap:wrap; gap:7px; }
.mo-ontology-sections a { display:inline-flex; align-items:center; gap:8px; padding:7px 9px; color:#c1c9d2; background:#151d26; border:1px solid #303b47; border-radius:6px; font-size:13px; }
.mo-ontology-sections a:hover { color:#17130a; background:var(--mo-gold); border-color:var(--mo-gold); }
.mo-ontology-sections small { color:#7b8794; }

.mo-work-hero { padding:28px 0 56px; background:radial-gradient(circle at 75% 20%,rgba(244,194,79,.09),transparent 32%),linear-gradient(#0d131a,#080b10); border-bottom:1px solid var(--mo-line); }
.mo-breadcrumb { display:flex; gap:9px; align-items:center; margin-bottom:24px; color:#7f8a97; font-size:12px; white-space:nowrap; overflow:hidden; }
.mo-breadcrumb b { overflow:hidden; text-overflow:ellipsis; }
.mo-work-hero-grid { display:grid; grid-template-columns:minmax(270px,430px) 1fr; gap:46px; align-items:center; }

/* 公式サンプル動画がある作品のヒーロー (v0.8.1)
   パッケージ画像は2:3の縦長、サンプル動画は16:9の横長で形が違う。
   縦長用の列にそのまま動画を入れると潰れるので、動画用に列幅を組み替える。
   パッケージ画像はヒーローから外し、「作品イメージ」の先頭へ移した。 */
/* v0.10.0: 動画がある作品は2カラムをやめ、縦積みにした。
   右カラムに情報を置くと、その幅のぶん動画が縮むため。
   動画は本文カラム幅いっぱい。ただし4:3のFANZA動画は
   幅1200pxだと高さ900pxになり、価格とCTAが画面外へ落ちる。
   高さ72vhを上限に、縦横比から逆算した横幅で頭打ちにする。 */
.mo-work-stage { display:flex; flex-direction:column; gap:14px; }
.mo-work-stage .mo-work-hero-title { margin:0; }
.mo-work-stage .mo-detail-movie { width:100%; max-width:calc(72vh * var(--mo-movie-ar, 1.7778)); margin-inline:auto; }
.mo-work-stage .mo-detail-movie-note { margin:-6px 0 0; }
.mo-work-stage .mo-work-lead { margin:0; }
.mo-work-stage .mo-affiliate-note { margin:0; }

/* 価格とCTAの帯。動画の真下・メタ情報より前に置く。
   動画 → 価格 → 購入 の順で視線が止まらないようにするため。 */
.mo-purchase-bar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px; padding:14px 18px; background:#0d1219; border:1px solid #35404c; border-radius:10px; }
.mo-purchase-bar-price { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; min-width:0; }
.mo-purchase-bar-price strong { font-size:clamp(21px,2.2vw,29px); font-weight:700; line-height:1.1; }
.mo-purchase-bar-price span { font-size:11px; color:#8b97a5; }
.mo-purchase-bar .mo-button { flex:0 0 auto; }

@media (max-width:600px) {
  .mo-purchase-bar { flex-direction:column; align-items:stretch; text-align:center; }
  .mo-purchase-bar-price { justify-content:center; }
  .mo-purchase-bar .mo-button { width:100%; }
}
.mo-detail-movie { position:relative; width:100%; aspect-ratio:16/9; overflow:hidden; background:#090d12; border:1px solid #35404c; border-radius:10px; box-shadow:var(--mo-shadow); }
.mo-detail-movie iframe { position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
.mo-detail-movie-note { margin:0; font-size:11px; color:#8b97a5; }

/* 作品イメージ側に移したパッケージ */
.mo-package-grid { grid-template-columns:repeat(2,minmax(0,1fr)); margin-bottom:18px; }
.mo-package-grid .is-package { max-width:280px; }
/* v0.19.0: 高さはリンクではなく figure が持つ（画像をリンクの外へ出したため） */
.mo-package-grid .is-package { min-height:0; }

/* 長い作品タイトルの改行を減らす (v0.8.1)
   AV作品のタイトルは60〜100字になることがあり、44pxのままだと
   動画で狭くなった右カラムで5〜6行に折り返してヒーローが崩れる。
   動画がある場合だけ一段落として、行間も詰める。 */
.mo-work-summary h1 { overflow-wrap:anywhere; text-wrap:pretty; }


.mo-detail-poster { position:relative; display:grid; place-items:center; width:100%; max-width:430px; aspect-ratio:2/3; min-height:0; overflow:hidden; background:#090d12; border:1px solid #35404c; border-radius:10px; box-shadow:var(--mo-shadow); }
/* v0.19.0: 画像はリンクの子ではなくなったので、この枠は自分で寸法を持つ。
   リンクは .mo-media-link として上に重ねる（下の定義を参照）。 */
.mo-detail-poster > img { width:100%; height:100%; min-height:0; }
.mo-detail-poster img { width:100%; height:100%; object-fit:contain; }
.mo-affiliate-overlay { position:absolute; inset:auto 14px 14px; padding:12px; color:#17130a; background:rgba(244,194,79,.94); border-radius:7px; text-align:center; font-size:14px; font-weight:800; }
.mo-work-summary h1 { margin:13px 0 16px; font:600 clamp(27px,3.2vw,44px)/1.28 Georgia,"Yu Mincho",serif; }
.mo-work-lead { max-width:820px; margin:0 0 18px; color:#abb4be; font-size:15px; line-height:1.85; }
.mo-work-meta { display:flex; flex-wrap:wrap; gap:8px 16px; color:#9ca6b2; font-size:14px; }
.mo-work-meta a { color:#e5ca80; }
.mo-editor-score { display:flex; align-items:baseline; gap:7px; width:max-content; margin-top:22px; padding:12px 16px; background:#141a20; border:1px solid #4f4325; border-radius:8px; }
.mo-editor-score span { margin-right:4px; color:#aab2bc; font-size:12px; }
.mo-editor-score strong { color:var(--mo-gold); font:700 31px Georgia,serif; }
.mo-editor-score small { color:#7f8994; font-size:12px; }
.mo-purchase-box { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:28px; padding:20px; background:#121921; border:1px solid #3b4651; border-radius:9px; }
.mo-purchase-box strong { color:#f2ce72; font-size:28px; }
.mo-purchase-box p { margin:1px 0 0; color:#8994a0; font-size:12px; }
.mo-button-primary { min-width:210px; }
.mo-affiliate-note { color:#737e8b; font-size:11px; }
.mo-detail-section { padding-top:62px; }
.mo-section-note { margin:-10px 0 20px; color:#87919d; font-size:13px; }
.mo-rich-copy { padding:25px 28px; color:#d3d8de; background:#0f151c; border:1px solid #2b3540; border-radius:9px; font-size:16px; line-height:2; }
.mo-rich-copy > :first-child { margin-top:0; }
.mo-rich-copy > :last-child { margin-bottom:0; }
.mo-rich-copy h3 { color:#e7d18e; }
.mo-review-copy { background:radial-gradient(circle at 100% 0,rgba(244,194,79,.08),transparent 35%),#0f151c; border-color:#4f4326; }
.mo-review-score { padding:6px 10px; color:#aeb6bf; background:#17160f; border:1px solid #554725; border-radius:99px; }
.mo-review-score b { color:var(--mo-gold); font-size:17px; }
.mo-price-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.mo-price-grid article { position:relative; padding:19px; background:var(--mo-panel); border:1px solid #2b3641; border-radius:9px; }
.mo-price-grid article.is-recommended { border-color:#776226; background:radial-gradient(circle at 100% 0,rgba(244,194,79,.12),transparent 42%),#11160f; }
.mo-price-grid article > small { position:absolute; top:-11px; right:10px; padding:3px 8px; color:#17130a; background:var(--mo-gold); border-radius:99px; font-size:10px; font-weight:800; }
.mo-price-grid p { margin:0; color:#7f8a97; font-size:11px; }
.mo-price-grid h3 { min-height:3.2em; margin:7px 0; font-size:15px; }
.mo-price-grid strong { display:block; color:#f2ce72; font-size:23px; }
.mo-price-grid a { display:inline-block; margin-top:10px; color:var(--mo-gold); font-size:12px; }
/* サンプル画像は2列（画面の半分程度）まで大きくする v0.9.0
   3列だと1枚が小さく、何が写っているか判断できないため。 */
.mo-media-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
/* v0.19.0: 寸法はリンクではなく figure が持つ。
   画像をリンクの外へ出したので、リンクが消えても枠は保たれる。 */
.mo-media-grid figure { position:relative; display:grid; place-items:center; align-content:start; min-height:300px; margin:0; overflow:hidden; background:#090d12; border:1px solid #28333f; border-radius:8px; }
.mo-media-grid img, .mo-media-grid video { width:100%; max-height:640px; object-fit:contain; }
/* v0.4.2: 旧実装は inset:auto 9px 9px で左右に張り付き、帯状に画像を覆っていた。
   右下の小さなバッジに変更して画像を見やすくする。 */
.mo-media-grid figure .mo-media-link span { position:absolute; inset:auto 8px 8px auto; display:inline-flex; align-items:center; gap:.25em; min-width:0; padding:4px 7px; color:#17130a; background:rgba(212,175,55,.92); border-radius:4px; font-size:10px; font-weight:700; line-height:1; letter-spacing:.02em; opacity:.85; transition:opacity .18s ease; pointer-events:none; }
.mo-media-grid figure .mo-media-link:hover span { opacity:1; }
.mo-media-grid figcaption { padding:8px 10px; color:#9da7b3; font-size:12px; }
.mo-cast-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.mo-cast-card { display:grid; grid-template-columns:180px 1fr; min-width:0; overflow:hidden; background:#0f151c; border:1px solid #2c3641; border-radius:9px; }
.mo-cast-image { display:grid; place-items:center; min-height:250px; overflow:hidden; background:#0a0f15; }
.mo-cast-image img { width:100%; height:100%; object-fit:contain; }
.mo-cast-card > div { padding:20px; }
.mo-cast-card > div > p { margin:0; color:var(--mo-gold); font-size:11px; font-weight:800; letter-spacing:.12em; }
.mo-cast-card h3 { margin:7px 0 13px; font:600 27px Georgia,"Yu Mincho",serif; }
.mo-cast-card h3 small { display:block; margin-top:4px; color:#7f8995; font:500 11px system-ui,sans-serif; }
.mo-cast-card dl { margin:0 0 13px; border-top:1px solid #28323d; }
.mo-cast-card dl div { display:grid; grid-template-columns:85px 1fr; gap:10px; padding:7px 0; border-bottom:1px solid #28323d; }
.mo-cast-card dt { color:#75808c; font-size:11px; }
.mo-cast-card dd { margin:0; color:#c8ced5; font-size:12px; }
.mo-cast-link { display:inline-block; margin-top:14px; color:var(--mo-gold); font-size:12px; font-weight:700; }
.mo-profile-ontology { display:grid; grid-template-columns:1.3fr .7fr; gap:18px; }
.mo-ontology-assigned { display:grid; gap:11px; }
.mo-ontology-assigned section { display:grid; grid-template-columns:135px 1fr; gap:12px; padding:14px; background:var(--mo-panel); border:1px solid #293440; border-radius:8px; }
.mo-ontology-assigned h3 { margin:3px 0; color:#dfca8d; font-size:13px; }
.mo-score-card { padding:21px; background:radial-gradient(circle at 100% 0,rgba(244,194,79,.11),transparent 38%),#11150f; border:1px solid #554725; border-radius:9px; }
.mo-score-card h3 { margin:0 0 15px; color:var(--mo-gold); font-size:13px; letter-spacing:.13em; }
.mo-score-card > div { margin:12px 0; }
.mo-score-card p { display:flex; justify-content:space-between; margin:0 0 4px; font-size:13px; }
.mo-score-card i { display:block; height:7px; overflow:hidden; background:#2a3024; border-radius:99px; }
.mo-score-card i b { display:block; height:100%; background:linear-gradient(90deg,#d69222,#ffd66d); border-radius:inherit; }
.mo-community { margin-top:65px; padding:28px; background:#0e141b; border:1px solid #303b46; border-radius:10px; }
.mo-community-head { display:flex; justify-content:space-between; gap:20px; align-items:center; padding-bottom:22px; border-bottom:1px solid var(--mo-line); }
.mo-community-head p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:800; letter-spacing:.15em; }
.mo-community-head h2 { margin:4px 0; font:600 27px Georgia,"Yu Mincho",serif; }
.mo-community-head span { color:#8d98a4; font-size:13px; }
.mo-community-head button { min-width:190px; }
.mo-community-head button b { margin-left:8px; }
.mo-comment-layout { display:grid; grid-template-columns:1fr 360px; gap:26px; margin-top:26px; }
.mo-comment-layout h3 { margin-top:0; }
.mo-comment { padding:14px 0; border-top:1px solid #26313c; }
.mo-comment header { display:flex; justify-content:space-between; gap:10px; }
.mo-comment time { color:#77828f; font-size:11px; }
.mo-comment p { margin:7px 0 0; color:#c3cbd3; }
.mo-comment-form { padding:18px; background:#121921; border:1px solid #2b3641; border-radius:8px; }
.mo-comment-form label { display:block; margin-bottom:12px; color:#aab3bd; font-size:13px; }
.mo-comment-form input { display:block; width:100%; margin-top:5px; }
.mo-comment-form textarea { display:block; margin-top:5px; }
.mo-comment-form p { color:#7d8895; font-size:11px; }

.mo-ranking-list { display:grid; gap:10px; margin-top:34px; }
.mo-ranking-list article { display:grid; grid-template-columns:55px 86px 1fr 150px; gap:18px; align-items:center; padding:11px 17px; background:var(--mo-panel); border:1px solid #26313d; border-radius:8px; }
.mo-rank { color:#9da7b3; text-align:center; font:600 25px Georgia,serif; }
.mo-rank-image { display:grid; place-items:center; width:86px; height:116px; overflow:hidden; background:#090d12; }
.mo-rank-image img { width:100%; height:100%; object-fit:contain; }
.mo-ranking-list article h2 { margin:3px 0 8px; font:600 18px Georgia,"Yu Mincho",serif; }
.mo-ranking-list article p { margin:0; color:#7d8895; font-size:11px; }
.mo-ranking-list aside { display:grid; justify-items:end; }
.mo-ranking-list aside strong { color:var(--mo-gold); font-size:28px; }
.mo-ranking-list aside span { color:#77828f; font-size:10px; }
.mo-ranking-list aside b { margin-top:8px; color:#e7c979; }
.mo-sale-head { margin:10px 0 35px; padding:42px; background:radial-gradient(circle at 100% 0,rgba(218,102,89,.18),transparent 35%),linear-gradient(140deg,#18120f,#0d1218); border:1px solid #53352f; border-radius:11px; }
.mo-maker-list { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin-top:30px; }
.mo-maker-list a { display:flex; justify-content:space-between; gap:10px; padding:12px; color:#c0c8d1; background:#121921; border:1px solid #293440; border-radius:7px; }
.mo-maker-list a.is-active { border-color:var(--mo-gold); }
.mo-maker-list span { color:#7e8996; font-size:12px; }
.mo-section-title { margin:50px 0 20px; font:600 30px Georgia,"Yu Mincho",serif; }

.mo-post-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.mo-post-card { overflow:hidden; background:var(--mo-panel); border:1px solid #27323e; border-radius:9px; }
.mo-post-thumb { display:grid; place-items:center; aspect-ratio:16/9; overflow:hidden; background:#0a0f15; }
.mo-post-thumb img { width:100%; height:100%; object-fit:cover; }
.mo-post-card > div { padding:16px; }
.mo-post-card p { margin:0; color:#7b8794; font-size:11px; }
.mo-post-card h2 { margin:5px 0 8px; font:600 19px/1.5 Georgia,"Yu Mincho",serif; }
.mo-post-card span { color:#9ea8b3; font-size:13px; }
.mo-feature-hero { padding:84px 0; background:radial-gradient(circle at 20% 50%,rgba(244,194,79,.13),transparent 34%),linear-gradient(120deg,#0d131a,#080b10); border-bottom:1px solid var(--mo-line); }
.mo-feature-hero p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:800; letter-spacing:.17em; }
.mo-feature-hero h1 { margin:8px 0 15px; font:600 clamp(43px,6vw,70px)/1.25 Georgia,"Yu Mincho",serif; }
.mo-feature-hero span { color:var(--mo-muted); }

.mo-home-hero { padding:100px 0 90px; background:radial-gradient(circle at 70% 20%,rgba(244,194,79,.14),transparent 32%),linear-gradient(135deg,#0d141c,#070a0e 70%); border-bottom:1px solid var(--mo-line); }
.mo-home-hero p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:850; letter-spacing:.22em; }
.mo-home-hero h1 { margin:12px 0 18px; font:600 clamp(48px,7vw,86px)/1.18 Georgia,"Yu Mincho",serif; }
.mo-home-hero h1 em { color:var(--mo-gold); font-style:normal; }
.mo-home-hero > div > span { color:#adb6c0; font-size:17px; }
.mo-home-hero form { display:grid; grid-template-columns:1fr 130px; width:min(760px,100%); margin-top:30px; }
.mo-home-hero form input { min-height:56px; border-radius:8px 0 0 8px; }
.mo-home-hero form button { min-height:56px; border-radius:0 8px 8px 0; }
.mo-hero-links { display:flex; gap:18px; margin-top:18px; color:#aeb7c1; font-size:13px; }
.mo-hero-links a:hover { color:var(--mo-gold); }
.mo-home-section { padding-top:76px; padding-bottom:76px; }
.mo-home-dark { background:#0b1016; border-block:1px solid #202a34; }
.mo-editorial-hero { min-height:440px; display:flex; align-items:end; padding:70px 0; background-color:#0d131a; background-position:center; background-size:cover; border-bottom:1px solid var(--mo-line); }
.mo-editorial-hero p { margin:0; color:var(--mo-gold); font-size:12px; font-weight:800; letter-spacing:.18em; }
.mo-editorial-hero h1 { max-width:960px; margin:9px 0 13px; font:600 clamp(38px,6vw,72px)/1.28 Georgia,"Yu Mincho",serif; }
.mo-editorial-hero div div { color:#a0aab5; font-size:13px; }
/*
 * 本文の色。#d4d9df は黒地に対して比12あり読めてはいたが、
 * 見出し（#f5f1e8）より暗いぶん、並ぶと沈んで見えていた。
 * 見出しと同じ明るさに揃える。差は大きさと太さで付ける。
 */
.mo-editorial-body { max-width:860px; padding-top:58px; color:var(--mo-text, #f5f1e8); font-size:17px; }
/*
 * 見出しと本文の見分け。
 *
 * 本文を見出しと同じ明るさにしたので、色では区別が付かなくなった。
 * 区別を線で付ける。
 *
 * 変更前の下線は 1px の var(--mo-line) で、黒地に対して
 * **コントラスト比1.56**（実測）。ほとんど見えていなかった。
 *
 *   #293440（変更前）  1.56
 *   #5b6874（変更後）  3.45   境界線の目安3.0を超える
 *   #f4c24f（金の帯）  11.9
 *
 * 目安は WCAG 1.4.11（非テキストのコントラスト）の3.0。
 *
 * 全幅の線を見える濃さにしたうえで、頭に金の帯を重ねる。
 * 全幅を金にすると強すぎて、見出しのたびに視線が止まる。
 */
.mo-editorial-body h2 { position:relative; margin:2.4em 0 .9em; padding-bottom:.34em; color:var(--mo-text); font:600 32px Georgia,"Yu Mincho",serif; border-bottom:2px solid #5b6874; }
.mo-editorial-body h2::after { content:""; position:absolute; bottom:-2px; left:0; width:104px; height:2px; background:var(--mo-gold); }

/*
 * h3 は金の文字で、色だけでも本文と区別が付く。
 * ただし h2 と同じ「区切り」には見えないので、左に細い帯を足す。
 * 下線にすると h2 と紛らわしくなる。
 */
.mo-editorial-body h3 { margin:2em 0 .7em; padding-left:.55em; color:#ebd492; font-size:23px; border-left:3px solid var(--mo-gold); }
.mo-editorial-body a { color:var(--mo-gold); text-decoration:underline; }
.mo-editorial-body img { height:auto; border-radius:8px; }

@media (max-width:1120px) {
  .mo-db-header-main { gap:18px; }
  .mo-db-quick a { min-width:70px; }
  .mo-product-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .mo-actress-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .mo-actress-filter-grid { grid-template-columns:repeat(3,1fr); }
  .mo-price-grid { grid-template-columns:repeat(2,1fr); }
  .mo-ontology-intro ol { grid-template-columns:repeat(3,1fr); }
  .mo-maker-list { grid-template-columns:repeat(3,1fr); }
}

@media (max-width:860px) {
  .mo-shell { width:min(100% - 28px,1280px); }
  .mo-db-utility { display:none; }
  .mo-db-header-main { grid-template-columns:1fr auto; gap:12px; padding-top:12px; padding-bottom:12px; }
  .mo-db-global-search { grid-column:1/-1; grid-row:2; }
  .mo-db-quick a { min-width:68px; padding:6px 8px; }
  .mo-db-nav-links { min-height:42px; }
  .mo-db-nav-links a { padding:0 13px; font-size:12px; }
  .mo-db-nav-links a:first-child { padding-left:0; padding-right:16px; }
  .mo-db-footer-grid { grid-template-columns:2fr repeat(3,1fr); gap:24px; }
  .mo-search-row { grid-template-columns:1fr 1fr; }
  .mo-search-row input { grid-column:1/-1; }
  .mo-product-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .mo-actress-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .mo-ontology-grid { grid-template-columns:1fr; }
  .mo-ontology-intro { grid-template-columns:1fr; }
  .mo-work-hero-grid, .mo-actress-profile-grid { grid-template-columns:1fr; }
  .mo-detail-poster, .mo-detail-poster>a { min-height:0; }
  .mo-detail-poster { max-width:430px; width:100%; margin:auto; }
  .mo-profile-image { max-width:480px; width:100%; margin:auto; }
  .mo-profile-ontology { grid-template-columns:1fr; }
  .mo-media-grid { grid-template-columns:repeat(2,1fr); }
  .mo-cast-grid { grid-template-columns:1fr; }
  .mo-comment-layout { grid-template-columns:1fr; }
  .mo-ranking-list article { grid-template-columns:42px 76px 1fr; }
  .mo-rank-image { width:76px; height:104px; }
  .mo-ranking-list aside { grid-column:3; justify-items:start; display:flex; gap:8px; align-items:baseline; }
  .mo-post-grid { grid-template-columns:repeat(2,1fr); }
  .mo-maker-list { grid-template-columns:repeat(2,1fr); }
}

@media (max-width:600px) {
  body.admin-bar .mo-db-header { top:46px; }
  .mo-db-header-main { grid-template-columns:1fr auto; }
  .mo-db-brand { gap:8px; }
  .mo-db-brand > b { width:38px; height:38px; font-size:14px; }
  .mo-db-brand strong { font-size:16px; }
  .mo-db-brand small { font-size:7px; }
  .mo-db-quick { gap:4px; }
  .mo-db-quick a { min-width:48px; padding:5px 4px; font-size:10px; }
  .mo-db-quick small { display:none; }
  .mo-db-global-search { grid-template-columns:1fr 62px; }
  .mo-db-nav-links a { padding-inline:11px; }
  .mo-db-footer-grid { grid-template-columns:1fr 1fr; gap:32px 20px; padding-top:44px; }
  .mo-db-footer-brand { grid-column:1/-1; }
  .mo-db-footer-bottom { display:grid; }
  .mo-db { font-size:15px; }
  .mo-db-main.mo-shell { padding-top:36px; }
  .mo-page-head h1, .mo-sale-head h1 { font-size:36px; }
  .mo-page-head-inline { display:block; }
  .mo-page-head-inline b { display:inline-block; margin-top:12px; }
  .mo-filter-panel, .mo-actress-filters { padding:16px; }
  .mo-search-row { grid-template-columns:1fr; }
  .mo-search-row input { grid-column:auto; }
  .mo-product-grid, .mo-grid-five { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 9px; }
  .mo-product-body { padding:10px; }
  .mo-product-card h2 { font-size:14px; }
  .mo-card-price { display:block; }
  .mo-actress-filter-grid { grid-template-columns:repeat(2,1fr); }
  .mo-filter-title { display:block; }
  .mo-filter-title input { width:100%; margin-top:12px; }
  .mo-actress-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .mo-section-head h2 { font-size:25px; }
  .mo-section-head p { margin-bottom:34px; }
  .mo-ontology-intro ol { grid-template-columns:repeat(2,1fr); }
  .mo-ontology-sections section { grid-template-columns:1fr; gap:5px; }
  .mo-ontology-card-head { min-height:205px; }
  .mo-work-hero { padding-top:18px; }
  .mo-work-summary h1 { font-size:27px; }
  .mo-purchase-box { display:block; }
  .mo-button-primary { width:100%; margin-top:12px; }
  .mo-price-grid { grid-template-columns:1fr; }
  .mo-media-grid { grid-template-columns:1fr; }
  .mo-cast-card { grid-template-columns:120px 1fr; }
  .mo-cast-image { min-height:190px; }
  .mo-cast-card > div { padding:14px; }
  .mo-cast-card h3 { font-size:22px; }
  .mo-ontology-assigned section { grid-template-columns:1fr; }
  .mo-community { padding:18px; }
  .mo-community-head { display:block; }
  .mo-community-head form { margin-top:14px; }
  .mo-ranking-list article { grid-template-columns:28px 64px 1fr; gap:9px; padding:9px; }
  .mo-rank-image { width:64px; height:90px; }
  .mo-ranking-list aside { grid-column:2/-1; }
  .mo-ranking-list aside strong { font-size:20px; }
  .mo-maker-list, .mo-post-grid { grid-template-columns:1fr; }
  .mo-profile-data div { grid-template-columns:95px 1fr; }
  .mo-home-hero { padding:70px 0 64px; }
  .mo-home-hero h1 { font-size:44px; }
  .mo-home-hero form { grid-template-columns:1fr; }
  .mo-home-hero form input, .mo-home-hero form button { border-radius:7px; }
  .mo-home-hero form button { margin-top:8px; }
  .mo-hero-links { flex-wrap:wrap; }
}

/* ============================================================
   v0.4.0 追加
   ランキングのタブ / 順位変動 / 管理者向け注記 / 流出ページ
   既存のトークンに合わせ、色は極力継承する。
   ============================================================ */

.mo-rank-tabs{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:0 0 1.1rem}
.mo-rank-tabs a{display:inline-block;padding:.4rem 1rem;border:1px solid rgba(255,255,255,.18);border-radius:999px;font-size:.85rem;text-decoration:none;line-height:1.4;transition:background .18s ease,border-color .18s ease}
.mo-rank-tabs a:hover{border-color:rgba(255,255,255,.4)}
.mo-rank-tabs a.is-active{background:#e0245e;border-color:transparent;color:#fff;font-weight:600}
.mo-rank-tabs--fetish{margin-top:-.4rem;padding-top:.6rem;border-top:1px solid rgba(255,255,255,.08)}
.mo-rank-tabs--fetish a{font-size:.8rem;padding:.32rem .8rem}
.mo-rank-tabs-label{font-size:.72rem;letter-spacing:.12em;opacity:.6;margin-right:.35rem;text-transform:uppercase}

.mo-ranking-list aside .mo-move-up{color:#39d353}
.mo-ranking-list aside .mo-move-down{color:#ff6b6b}
.mo-ranking-list aside .mo-move-new{color:#4aa3ff}
.mo-ranking-list aside .mo-move-same{opacity:.45}

.mo-admin-note{margin-top:1rem;padding:.6rem .9rem;border-left:3px solid #f0b849;background:rgba(240,184,73,.08);font-size:.82rem;line-height:1.6;border-radius:0 4px 4px 0}

/* サイトポリシー（固定ページ側） */
.mo-site-policy__section{margin:0 0 2.2rem}
.mo-site-policy__heading{margin:0 0 .6rem;font-size:1.15rem;line-height:1.5}
.mo-site-policy__body{line-height:1.9}
.mo-site-policy__body p{margin:0 0 .9rem}

@media (max-width:640px){
    .mo-rank-tabs{gap:.35rem}
    .mo-rank-tabs a{padding:.34rem .8rem;font-size:.78rem}
}

/* v0.5.0: プレビュー（GIF/MP4/WebP）。作品イメージより先に表示する。 */
.mo-preview-grid { margin-bottom:14px; }
.mo-preview-grid figure { border-color:var(--mo-gold); }
.mo-preview-grid figure { min-height:230px; }
.mo-preview-grid video { width:100%; max-height:460px; object-fit:contain; display:block; }
.mo-preview-grid .mo-media-badge { background:rgba(212,175,55,.95); }

/* ============================================================
   v0.6.0 フェチの複数選択
   旧実装は単一リンクだったため、チェックボックス選択へ変更。
   見た目は従来のタグと揃え、選択状態だけ強調する。
   ============================================================ */

.mo-fetish-picks { display:flex; flex-wrap:wrap; gap:6px; }

.mo-fetish-pick { position:relative; display:inline-flex; align-items:center; gap:.3em; padding:.4em .5em .4em .75em; border:1px solid rgba(255,255,255,.16); border-radius:999px; font-size:.86rem; line-height:1.3; cursor:pointer; transition:background .16s ease, border-color .16s ease; }
.mo-fetish-pick:hover { border-color:rgba(255,255,255,.42); }
.mo-fetish-pick input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.mo-fetish-pick span { white-space:nowrap; }
.mo-fetish-pick.is-selected { background:var(--mo-gold); border-color:transparent; color:#17130a; font-weight:700; }
.mo-fetish-pick.is-selected::before { content:"✓"; font-size:.8em; font-weight:700; }

/* 単独で見るリンク。チェック操作と競合しないよう小さく右端へ。 */
.mo-fetish-solo { display:inline-flex; align-items:center; justify-content:center; width:1.5em; height:1.5em; margin-left:.1em; border-radius:50%; font-size:.78em; text-decoration:none; opacity:.45; transition:opacity .16s ease, background .16s ease; }
.mo-fetish-solo:hover { opacity:1; background:rgba(255,255,255,.16); }
.mo-fetish-pick.is-selected .mo-fetish-solo { color:#17130a; opacity:.6; }
.mo-fetish-pick.is-selected .mo-fetish-solo:hover { background:rgba(0,0,0,.14); opacity:1; }

/* 選択状況バー。選択があるときだけ画面下部へ固定表示する。 */
.mo-fetish-bar { position:fixed; z-index:80; right:0; bottom:0; left:0; padding:.85rem 0; background:rgba(8,11,16,.97); border-top:1px solid var(--mo-gold); box-shadow:0 -10px 34px rgba(0,0,0,.4); backdrop-filter:blur(14px); }
.mo-fetish-bar .mo-shell { display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:space-between; }
.mo-fetish-bar-info { font-size:.9rem; }
.mo-fetish-bar-info strong { color:var(--mo-gold); font-size:1.25rem; margin-right:.15em; }
.mo-fetish-bar-note { display:block; font-size:.75rem; opacity:.6; margin-top:.15em; }
.mo-fetish-bar-actions { display:flex; gap:8px; align-items:center; }
.mo-fetish-clear { padding:.5em 1em; color:inherit; background:transparent; border:1px solid rgba(255,255,255,.28); border-radius:6px; font-size:.85rem; cursor:pointer; }
.mo-fetish-clear:hover { border-color:rgba(255,255,255,.55); }

/* バーが出ている間、下端のコンテンツが隠れないよう余白を足す */
body.mo-has-fetish-bar .mo-db-footer { padding-bottom:5rem; }

@media (max-width:640px){
    .mo-fetish-bar .mo-shell { justify-content:center; text-align:center; }
    .mo-fetish-bar-actions { width:100%; }
    .mo-fetish-bar-actions .mo-button { flex:1; }
}

/* ===== 作品ページ ヒーローのタイトル (v0.9.0) =====
   動画がある場合はタイトルをヒーロー最上部に単独で出す。
   右カラムに置くと動画で幅を取られて折り返しが増えるため。 */
.mo-work-hero-title { margin:0 0 22px; }
.mo-work-hero-title h1 { margin:10px 0 0; font:600 clamp(21px,2.1vw,32px)/1.4 Georgia,"Yu Mincho",serif; overflow-wrap:anywhere; text-wrap:pretty; }
.mo-work-hero-title .mo-chips { margin:0; }

/* ===== 関連作品 (v0.9.0) ===== */
.mo-related-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.mo-related-card { margin:0; }
.mo-related-card > a { display:block; color:inherit; text-decoration:none; }
.mo-related-thumb { position:relative; display:grid; place-items:center; aspect-ratio:2/3; overflow:hidden; background:#090d12; border:1px solid #28333f; border-radius:8px; }
.mo-related-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }
.mo-related-card > a:hover .mo-related-thumb img { transform:scale(1.04); }
.mo-related-noimage { font-size:11px; color:#5d6774; letter-spacing:.08em; }
.mo-related-card h3 { margin:9px 0 0; font-size:13px; font-weight:600; line-height:1.5; overflow-wrap:anywhere; }
.mo-related-meta { margin:4px 0 0; font-size:11px; color:#8b97a5; }

/* ===== 関連記事 (v0.9.0) ===== */
.mo-related-posts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.mo-related-post > a { display:grid; grid-template-columns:132px 1fr; gap:13px; align-items:center; padding:10px; color:inherit; text-decoration:none; background:#0d1219; border:1px solid #28333f; border-radius:8px; transition:border-color .18s ease; }
.mo-related-post > a:hover { border-color:#4a5a6b; }
.mo-related-post-thumb { display:grid; place-items:center; aspect-ratio:16/9; overflow:hidden; background:#090d12; border-radius:6px; }
.mo-related-post-thumb img { width:100%; height:100%; object-fit:cover; }
.mo-related-post-body h3 { margin:0; font-size:13px; font-weight:600; line-height:1.55; overflow-wrap:anywhere; }
.mo-related-post-body time { display:block; margin-top:5px; font-size:11px; color:#8b97a5; }

@media (max-width:900px) {
  .mo-related-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .mo-related-posts { grid-template-columns:1fr; }
}
@media (max-width:600px) {
  .mo-related-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mo-related-post > a { grid-template-columns:104px 1fr; }
  /* 縦1列だとサンプル画像が大きくなりすぎるので上限を戻す */
  .mo-media-grid img, .mo-media-grid video { max-height:460px; }
}


/* ===== 横長DVDジャケットの扱い (v0.11.0) =====
   MGSのパッケージは「裏表紙＋背＋表紙」が1枚になった横長画像で、
   縦長の枠にそのまま入れると余白だらけになる。表紙は右側にあるので、
   一覧・関連作品では右端を基準に切り抜いて縦長として見せる。
   判定は catalog.js が画像の実寸を測って付けるクラスで行う
   （ファイル名の規則には依存しない）。 */

/* --- 一覧・関連作品: 右側の表紙だけを縦長に切り出す --- */
.mo-product-image.is-wide-jacket img,
.mo-related-thumb.is-wide-jacket img {
  object-fit:cover;
  /* 背表紙の帯を巻き込まないよう、右端から少しだけ内側を基準にする。
     100%だと裁ち落とし側のフチが出る個体があるため 98%。 */
  object-position:98% center;
}

/* --- 作品ページ: 切り抜かず1枚の全体を見せる ---
   裏表紙にシーン写真が入っていて情報として有用なため。
   2:3の枠を外し、画像本来の比率で表示する。 */
.mo-detail-poster.is-wide-jacket-full,
.mo-package-grid .is-package.is-wide-jacket-full {
  aspect-ratio:auto;
  min-height:0;
  max-width:min(100%, 620px);
}
.mo-detail-poster.is-wide-jacket-full img,
.mo-package-grid .is-package.is-wide-jacket-full img {
  height:auto;
  object-fit:contain;
}

/* ===== 価格プラン (v0.13.0) =====
   販売元の価格表と同じリスト形式にし、高い順に並べる。

   ボタンの文字が消えていた原因は .mo-price-grid a { color:var(--mo-gold) }。
   セレクタの詳細度が勝っていて、金色の背景に金色の文字が乗っていた。
   同じ轍を踏まないよう、ここでは詳細度を上げたうえで
   全ての状態（link/visited/hover/active）に色を明示する。 */
.mo-price-list { list-style:none; margin:0; padding:0; border:1px solid #2b3641; border-radius:10px; overflow:hidden; background:var(--mo-panel); }
.mo-price-row + .mo-price-row { border-top:1px solid #2b3641; }

.mo-price-list .mo-price-row > a,
.mo-price-list .mo-price-row > a:link,
.mo-price-list .mo-price-row > a:visited {
  display:grid;
  grid-template-columns:64px minmax(0,1fr) 92px 116px 92px;
  align-items:center; gap:14px;
  padding:15px 18px;
  color:#e8edf3;
  text-decoration:none;
  transition:background .16s ease;
}
.mo-price-list .mo-price-row > a:hover,
.mo-price-list .mo-price-row > a:focus-visible { background:#141b24; color:#ffffff; }

.mo-price-row.is-cheapest { background:radial-gradient(circle at 100% 0,rgba(244,194,79,.10),transparent 46%); }

.mo-price-source { font-size:10px; font-weight:800; letter-spacing:.06em; color:#8b97a5; }
.mo-price-plan { font-size:14px; font-weight:600; line-height:1.45; overflow-wrap:anywhere; }
/* プランの性格づけ。価格だけ並べても選べないので、
   何を優先する人向けかを一言添える。最安値は別バッジで重ねる。 */
.mo-price-tags { display:inline-flex; flex-wrap:wrap; gap:5px; margin-left:8px; vertical-align:middle; }
.mo-price-tag { display:inline-block; padding:2px 8px; border-radius:99px; font-size:10px; font-weight:700; white-space:nowrap; color:#cdd6e0; background:#26313d; }
.mo-price-tag.is-cheapest-tag { color:#17130a; background:var(--mo-gold); font-weight:800; }
.mo-price-term { font-size:12px; color:#8b97a5; text-align:center; }
.mo-price-yen { font-size:20px; font-weight:700; color:#f2ce72; text-align:right; white-space:nowrap; }

/* 購入ボタン。背景が金なので文字は必ず濃色で固定する。 */
.mo-price-list .mo-price-row > a .mo-price-go {
  padding:9px 12px; border-radius:6px;
  background:var(--mo-gold);
  color:#141414;
  font-size:12px; font-weight:800; text-align:center; white-space:nowrap;
}
.mo-price-list .mo-price-row > a:hover .mo-price-go { filter:brightness(1.08); color:#141414; }

@media (max-width:780px) {
  .mo-price-list .mo-price-row > a,
  .mo-price-list .mo-price-row > a:link,
  .mo-price-list .mo-price-row > a:visited {
    grid-template-columns:1fr auto;
    grid-template-areas:"source term" "plan plan" "yen go";
    gap:8px 12px;
  }
  .mo-price-source { grid-area:source; }
  .mo-price-term   { grid-area:term; text-align:right; }
  .mo-price-plan   { grid-area:plan; }
  .mo-price-yen    { grid-area:yen; text-align:left; }
  .mo-price-list .mo-price-row > a .mo-price-go { grid-area:go; }
}

/* ===== 素人作品 (v0.15.0) =====
   素人作品のパッケージはDVDジャケットではなく横長のサムネイル
   （FANZA: chp003jp.jpg / MGS: pb_e_300mium-xxxx.jpg）。
   縦長2:3の枠に入れると上下が余白だらけになるため、
   素人一覧だけ16:9のカードにする。通常作品の一覧は縦長のまま。 */
.mo-amateur-view .mo-product-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.is-amateur-grid .mo-product-card h2 { font-size:14px; }

/* v0.19.0
   枠の形はグリッドではなく作品の属性で決める。
   素人作品は女優ページ・フェチ検索・作品一覧でも通常作品と混ざって出るので、
   /amateur/ の中かどうかでは判断できない。

   さらに重要なのは object-position を中央へ戻すこと。
   素人のサムネイルは16:9の写真1枚（例 840x472）であって、
   MGSのDVDジャケットのような「裏表紙＋背＋表紙」の合成画像ではない。
   横長だからと右端を基準に切り抜くと、写真の右の端だけが出てしまう。 */
.mo-product-image.is-amateur,
.mo-related-thumb.is-amateur { aspect-ratio:16/9; }

.mo-product-image.is-amateur img,
.mo-related-thumb.is-amateur img { object-fit:cover; object-position:center center; }

/* 横長ジャケットの切り抜きは素人作品には当てない。
   詳細度で確実に勝たせるため、両方のクラスを並べて書く。 */
.mo-product-image.is-amateur.is-wide-jacket img,
.mo-related-thumb.is-amateur.is-wide-jacket img { object-position:center center; }

@media (max-width:900px) { .mo-amateur-view .mo-product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px) { .mo-amateur-view .mo-product-grid { grid-template-columns:1fr; } }

/* ============================================================
   フェチ1件ページの絞り込みパネル
   起点となるフェチに条件を足して、すべてに合致する作品だけを出す。
   /fetishes/ の一覧と見た目を揃えつつ、こちらは常に画面内へ置く
   （固定バーだと作品グリッドと視線が競合するため）。
   ============================================================ */

.mo-fetish-refine { margin:20px 0 4px; padding:16px 18px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.12); border-radius:10px; }
.mo-fetish-refine-head { display:flex; flex-wrap:wrap; gap:10px; align-items:baseline; justify-content:space-between; font-size:.92rem; }
.mo-fetish-refine-head strong { color:var(--mo-gold); }
.mo-fetish-refine-note { display:block; margin-top:.2em; font-size:.78rem; opacity:.62; }
.mo-fetish-reset { font-size:.82rem; text-decoration:underline; opacity:.75; }
.mo-fetish-reset:hover { opacity:1; }

/* いま効いている条件。起点だけ色を変えて外せないことを示す。 */
.mo-fetish-active { display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.mo-fetish-active b { padding:.32em .8em; border-radius:999px; font-size:.82rem; font-weight:700; color:#17130a; background:var(--mo-gold); }
.mo-fetish-active b.is-base { color:var(--mo-gold); background:transparent; border:1px solid var(--mo-gold); }

.mo-fetish-refine-body { margin-top:12px; }
.mo-fetish-refine-body > summary { cursor:pointer; padding:.45em 0; font-size:.88rem; color:var(--mo-gold); }
.mo-fetish-refine-axis { margin-top:14px; }
.mo-fetish-refine-axis-name { margin:0 0 7px; font-size:.82rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; opacity:.6; }
.mo-fetish-refine-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,.1); }
.mo-fetish-refine-count { font-size:.82rem; opacity:.7; }

.mo-result-cond { margin-left:.6em; padding:.2em .7em; border:1px solid rgba(255,255,255,.22); border-radius:999px; font-size:.76rem; opacity:.8; }

@media (max-width:600px) {
    .mo-fetish-refine { padding:14px; }
    .mo-fetish-refine-actions .mo-button-primary { width:100%; }
}


/* ===== アフィリエイトリンクを画像に重ねる (v0.19.0) =====
   以前は <a href="アフィリエイト"><img></a> の形だった。
   コンテンツブロッカーはアフィリエイトのドメインを含む要素ごと
   消すことがあり、その場合リンクの子である画像も一緒に消えていた。
   ブロックされて困るのはリンクだけで十分なので、
   画像は画像として置き、リンクを上に重ねる。 */
/* 画像とリンクを同じグリッドセルへ重ねる。
   絶対配置で figure 全体を覆うと説明文の上まで塞いでしまうので、
   重ねるのは画像のセルだけにする。 */
.mo-detail-poster > img,
.mo-detail-poster > .mo-media-link,
.mo-media-grid figure > img,
.mo-media-grid figure > video,
.mo-media-grid figure > .mo-media-link {
  grid-area:1 / 1;
}

.mo-detail-poster > .mo-media-link,
.mo-media-grid figure > .mo-media-link {
  position:relative;
  z-index:2;
  display:block;
  width:100%;
  height:100%;
  text-decoration:none;
  /* 画像を隠さない。押せる範囲は画像全体のまま。 */
  background:transparent;
}
.mo-media-link:focus-visible { outline:2px solid var(--mo-gold); outline-offset:-2px; }

/* 説明文は2行目。リンクの重なりには入らない。 */
.mo-media-grid figcaption { grid-area:2 / 1; width:100%; }

/* 記事から女優ページへの導線 (v0.21.0)
   作品はカードを使い回せるが、女優はリンク1本で足りるので専用に組む。 */
.mo-post-actress-links { display:flex; flex-wrap:wrap; gap:10px; }
.mo-post-actress-link { display:flex; align-items:center; gap:10px; padding:8px 14px 8px 8px; border:1px solid var(--mo-line); border-radius:999px; background:rgba(255,255,255,.03); text-decoration:none; }
.mo-post-actress-link img { width:36px; height:36px; border-radius:50%; object-fit:cover; flex:0 0 auto; }
.mo-post-actress-link span { font-size:13px; color:var(--mo-text); }
.mo-post-actress-link:hover { border-color:var(--mo-gold); }

/* 追従購入バー (v0.22.0)
   作品ページの下86%に購入導線が無かったので足したもの。
   画面内に別の購入導線があるときは JS が is-visible を外す。 */
.mo-sticky-buy { position:fixed; left:0; right:0; bottom:0; z-index:70;
  background:rgba(14,20,27,.97); border-top:1px solid var(--mo-line);
  box-shadow:0 -10px 30px rgba(0,0,0,.35);
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  transform:translateY(110%); transition:transform .18s ease; }
.mo-sticky-buy.is-visible { transform:translateY(0); }
.mo-sticky-buy-inner { display:flex; align-items:center; gap:12px; max-width:900px; margin:0 auto; }
.mo-sticky-buy-price { flex:1 1 auto; min-width:0; line-height:1.25; }
.mo-sticky-buy-price strong { display:block; font-size:19px; color:var(--mo-gold); }
.mo-sticky-buy-price span { display:block; font-size:11px; color:var(--mo-muted);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* CSS詳細度の事故を避けるため、要素セレクタまで含めて指定する。
   .mo-price-grid a{color:gold} に負けた過去がある。

   width と min-width を明示しているのは、テーマの .mo-button が
   min-width:210px を持っていて、そのままだと CTA が横幅を全部取り、
   価格側が幅0に潰れて「998円」が縦1文字ずつになったため（実測で確認）。
   バーの高さは 130px → 79px（375px幅の画面で16% → 9.7%）。 */
a.mo-sticky-buy-cta { flex:0 0 auto; width:auto; min-width:0; max-width:62%;
  padding:11px 18px; font-size:14px; white-space:nowrap; }
/* 追従バーがフッターを隠さないよう、作品ページだけ下に余白を足す（実測79px＋余裕） */
body.mo-catalog-view-work { padding-bottom:84px; }
@media (prefers-reduced-motion: reduce) {
  .mo-sticky-buy { transition:none; }
}
@media (min-width: 782px) {
  .mo-sticky-buy { padding-left:24px; padding-right:24px; }
}

/* 作品イメージの折りたたみ (v0.23.0)
   display:none にしているのは、隠した画像を読み込ませないため。
   visibility:hidden や opacity:0 だと通信は発生する。 */
.mo-media-grid.is-collapsed > figure:nth-of-type(n+7) { display:none; }
.mo-media-more { display:block; width:100%; margin-top:14px; padding:13px 18px;
  background:transparent; border:1px solid var(--mo-line); border-radius:var(--mo-radius);
  color:var(--mo-text); font-size:14px; cursor:pointer; }
.mo-media-more:hover { border-color:var(--mo-gold); color:var(--mo-gold); }

/* 開催中セールのカード (v0.24.0)
   割引率を主役にする。セールを探している人が最初に見るのは
   キャンペーン名ではなく「何%引きか」なので、数字を大きく出す。 */
.mo-campaign-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; }
.mo-campaign-card { display:flex; gap:12px; padding:12px; border:1px solid var(--mo-line);
  border-radius:var(--mo-radius); background:var(--mo-panel); text-decoration:none; }
.mo-campaign-card:hover { border-color:var(--mo-gold); }
.mo-campaign-thumb { flex:0 0 64px; }
.mo-campaign-thumb img { width:64px; height:88px; object-fit:cover; border-radius:6px; display:block; }
.mo-campaign-body { display:flex; flex-direction:column; gap:4px; min-width:0; }
.mo-campaign-off { display:inline-block; align-self:flex-start; padding:2px 8px; border-radius:999px;
  background:var(--mo-danger); color:#fff; font-size:12px; font-weight:700; }
.mo-campaign-body strong { color:var(--mo-text); font-size:14px; line-height:1.35;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.mo-campaign-meta { color:var(--mo-muted); font-size:12px; }
.mo-campaign-deadline { color:var(--mo-gold); font-size:12px; }
/* 個別キャンペーンページの見出し脇の数字 */
.mo-campaign-facts { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 6px; }
.mo-campaign-facts b { padding:4px 10px; border:1px solid var(--mo-line); border-radius:999px;
  font-size:13px; color:var(--mo-text); }
.mo-campaign-facts b.is-discount { background:var(--mo-danger); border-color:var(--mo-danger); color:#fff; }
.mo-campaign-facts b.is-deadline { color:var(--mo-gold); border-color:var(--mo-gold-dark); }
.mo-section-head .mo-count { margin-left:8px; color:var(--mo-muted); font-size:14px; }

/* 作品ページの関連記事の抜粋。
   作品ページは記事への入口なので、抜粋は3行までで切る。
   ここが長いと、記事を開く理由が無くなる。 */
.mo-related-post-excerpt {
    margin: 6px 0 8px;
    color: #9aa5b1;
    font-size: 13px;
    line-height: 1.75;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
