/* PrivyJp トップ共通。色・書体は各サイトの :root のトークン（--bg --ink --accent --accent-ink --font-text）を使う */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; }
img, video { display: block; max-width: 100%; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--focus, var(--accent)); outline-offset: 3px; }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.nb { white-space: nowrap; }
.kw { word-break: keep-all; overflow-wrap: anywhere; }

/* 年齢確認：トップの上にすりガラスで重ねる（後ろのページは動いたまま）。見た目は各サイトの src/age.html */
#age { position: fixed; inset: 0; z-index: 100; overscroll-behavior: contain; }
#age[hidden] { display: none; }
#age .age-glass { position: absolute; inset: 0; -webkit-backdrop-filter: var(--glass); backdrop-filter: var(--glass); }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { #age .age-glass { background: var(--glass-solid) !important; } }
#age button { cursor: pointer; }
html.age-on, body.is-gated { overflow: hidden; }
html.age-on #ld { animation: none !important; visibility: hidden !important; }

/* 出てくる動き */
.js [data-rv] [data-rv-i] { opacity: 0; transform: translateY(24px);
  transition: opacity .7s cubic-bezier(.2,.7,.2,1) var(--rv-delay, 0ms), transform .7s cubic-bezier(.2,.7,.2,1) var(--rv-delay, 0ms); }
.js [data-rv].is-in [data-rv-i] { opacity: 1; transform: none; }

/* 写真の切り替え */
[data-fade] { position: relative; }
[data-fade] img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.6s cubic-bezier(.4,0,.2,1); }
[data-fade] img:first-child, [data-fade] img.is-on { opacity: 1; }
.js [data-fade] img:first-child:not(.is-on) { opacity: 0; }
.js [data-fade]:not(:has(.is-on)) img:first-child { opacity: 1; }

/* PR の札（広告のブロックに1つ） */
.pr { font: 600 13px/1 var(--font-text, inherit); padding: 4px 6px; background: var(--pr-bg, #fff); color: var(--pr-ink, #141414); display: inline-block; vertical-align: middle; letter-spacing: 0; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js [data-rv] [data-rv-i] { opacity: 1; transform: none; transition: none; }
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}

/* 見出しは行の長さをそろえる（1〜2字だけ次の行に落ちないように） */
:where(h1, h2, h3, h4) { text-wrap: balance; }
/* 上のメニュー（各サイトの nav の span の中のリンク） */
:where(nav) span { display: flex; gap: 24px; align-items: center; }
nav span a { color: inherit; text-decoration: none; white-space: nowrap; padding: 13px 0; }
nav span a:hover { text-decoration: underline; text-underline-offset: 4px; }
nav span i { font-style: normal; }
/* 紹介サイトのフッター：このサイトについて・18歳未満のお断り */
.sf { position: relative; z-index: 1; padding: 64px 36px 48px; font-size: 15px; line-height: 1.85; }
.sf p { max-width: 34em; }
.sf b { display: block; font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.sf small { display: block; margin-top: 16px; font-size: 13px; opacity: .78; }
@media (max-width: 700px) { .sf { padding: 40px 16px 32px; } }
