/* Directory template, porntourist-style layout. Every colour and font comes from tokens.css. */
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url('/assets/fonts/Inter-Regular.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 700; font-display: swap; src: url('/assets/fonts/Inter-Bold.woff2') format('woff2'); }

*, *::before, *::after { box-sizing: border-box; }
html { font-size: var(--fs-base); -webkit-text-size-adjust: 100%; }
body { margin: 0; padding: calc(var(--header-h) + 4px) 0 0; font-family: var(--font); line-height: var(--lh); color: var(--text); background: var(--bg) var(--pattern); }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--link); text-decoration: none; }
a:hover { color: var(--brand); }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 700; color: var(--heading); line-height: 1.25; margin: 0 0 .5em; }
h1 { font-size: 24px; } h2 { font-size: 22px; } h3 { font-size: 18px; }
p { margin: 0 0 1em; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
input, select, textarea { font: inherit; }
:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.container { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter); }
.muted { color: var(--text-3); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

/* ---------- header: floating pill ---------- */
.header { position: fixed; top: 0; left: 0; right: 0; z-index: 300; height: var(--header-h); padding: 12px var(--gutter) 0; pointer-events: none; }
.header__inner { pointer-events: auto; width: 100%; max-width: var(--maxw); margin: 0 auto; height: calc(var(--header-h) - 24px); padding: 0 12px 0 20px; display: flex; align-items: center; gap: 10px; position: relative; background: var(--surface); border: 1px solid var(--border); border-radius: 50px; box-shadow: var(--header-shadow, 0 10px 30px -12px rgba(0,0,0,.45)); }
.logo { display: inline-flex; align-items: center; color: var(--heading); font-weight: 700; font-size: 22px; }
.logo img { width: calc(var(--logo-w) * .8); height: calc(var(--logo-h) * .8); object-fit: contain; object-position: left center; transform: translate(var(--logo-x, 0), var(--logo-y, 0)); }
.header__nav { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.nav { display: flex; align-items: center; gap: 4px; }
.nav__text { display: none; align-items: center; gap: 2px; margin-right: 12px; }
@media (min-width: 900px) { .nav__text { display: flex; position: absolute; left: 50%; transform: translateX(-50%); margin: 0; } }
.nav__text a { padding: 8px 14px; border-radius: 25px; color: var(--text); font-weight: 700; font-size: 15px; }
.nav__text a:hover, .nav__text a[aria-current] { color: var(--brand); }
.nav__link { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; background: var(--bg); color: var(--text); border: 1px solid var(--border); }
.nav__link:hover { color: var(--brand); border-color: var(--brand); }
.nav__link svg { width: 18px; height: 18px; }
.nav__cta { display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 20px; border-radius: 25px; background: var(--brand); color: #fff; font-weight: 700; font-size: 15px; white-space: nowrap; }
.nav__cta:hover { color: #fff; background: var(--brand-hover); }
.nav__cta svg { width: 16px; height: 16px; }
@media (max-width: 480px) { .nav__cta { display: none; } }
.nav__burger { display: none; }
@media (max-width: 899px) { .nav__burger { display: inline-flex; } }
.mnav { position: fixed; top: 0; bottom: 0; right: 0; z-index: 400; width: min(300px, 85vw); padding: 16px 14px; display: flex; flex-direction: column; gap: 4px; background: var(--surface); border-left: 1px solid var(--border); box-shadow: -12px 0 40px rgba(0,0,0,.35); transform: translateX(105%); transition: transform .25s ease; overflow-y: auto; }
.mnav.is-open { transform: none; }
.mnav__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.mnav__head img { width: 120px; height: 60px; object-fit: contain; object-position: left center; }
.mnav__close { width: 36px; height: 36px; border-radius: 50%; background: var(--bg); border: 1px solid var(--border); color: var(--text); font-size: 22px; line-height: 1; }
.mnav__link { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; color: var(--text); font-weight: 700; font-size: 16px; }
.mnav__link svg { width: 18px; height: 18px; color: var(--text-3); }
.mnav__link:hover, .mnav__link[aria-current] { color: var(--brand); background: var(--bg); }
.mnav__link[aria-current] svg { color: var(--brand); }
.mnav__cta { margin: 10px 0 0; display: flex; justify-content: center; align-items: center; height: 44px; border-radius: 25px; background: var(--brand); color: #fff; font-weight: 700; }
.mnav__cta:hover { color: #fff; background: var(--brand-hover); }
.mnav-dim { position: fixed; inset: 0; z-index: 390; background: rgba(10, 14, 22, .55); }
.mnav-dim[hidden] { display: none; }
@media (min-width: 900px) { .mnav, .mnav-dim { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .mnav { transition: none; } }
html.menu-lock { overflow: hidden; }
[data-theme="dark"] .ibtn__sun { display: none; }
[data-theme="light"] .ibtn__moon { display: none; }
.header__search { position: absolute; top: calc(100% + 8px); right: 12px; width: min(420px, calc(100vw - 2 * var(--gutter))); z-index: 100; background: var(--surface); border: 1px solid var(--border); border-radius: 18px; padding: 8px; box-shadow: 0 16px 40px -16px rgba(0,0,0,.5); }
.header__search[hidden] { display: none; }
.search { position: relative; display: flex; align-items: center; }
.search__icon { position: absolute; left: 13px; width: 16px; height: 16px; color: var(--text-3); pointer-events: none; }
.search__input { -webkit-appearance: none; appearance: none; flex: 1; height: 40px; padding: 0 40px 0 38px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg); color: var(--text); font-size: 14px; -webkit-appearance: none; appearance: none; }
.search__input::-webkit-search-cancel-button, .search__input::-webkit-search-decoration { -webkit-appearance: none; display: none; }
.search__input:focus { outline: none; border-color: var(--brand); }
.search__input::placeholder { color: var(--text-3); }
.search__close { position: absolute; right: 6px; width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: var(--text-3); font-size: 18px; line-height: 1; }
.search__close:hover { color: var(--brand); background: var(--surface-2); }
.search__hint { display: none; }
.search__list { list-style: none; margin: 6px 0 0; padding: 0; max-height: 50vh; overflow: auto; }
.search__list:empty { display: none; }
.search__list li a { display: flex; align-items: center; gap: 8px; padding: 7px 10px; color: var(--text); border-radius: 10px; font-size: 14px; }
.search__list li a:hover { color: var(--brand); background: var(--bg); }
.search__list img { width: 18px; height: 18px; border-radius: 4px; flex: none; }
.search__list em { margin-left: auto; font-style: normal; font-size: 11px; color: var(--text-3); }
.search__list .empty { padding: 8px 10px; color: var(--text-3); font-size: 13px; }
.search-dim { position: fixed; inset: 0; z-index: 250; background: rgba(10, 14, 22, .45); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
.search-dim[hidden] { display: none; }

/* ---------- main ---------- */
.main { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter) 30px; min-height: 600px; }
.main > .container { padding: 0; }

/* ---------- islands grid: first two cards are tall and sit at the sides ---------- */
.islands { display: grid; gap: 10px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .islands { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1025px) {
  .islands { grid-template-columns: repeat(4, 1fr); }
  .islands--home { grid-template-areas: "c1 c4 c3 c2" "c1 c5 c6 c2" "c1 c7 c8 c2"; }
  .islands--home > :nth-child(1) { grid-area: c1; } .islands--home > :nth-child(2) { grid-area: c2; }
  .islands--home > :nth-child(3) { grid-area: c3; } .islands--home > :nth-child(4) { grid-area: c4; }
  .islands--home > :nth-child(5) { grid-area: c5; } .islands--home > :nth-child(6) { grid-area: c6; }
  .islands--home > :nth-child(7) { grid-area: c7; } .islands--home > :nth-child(8) { grid-area: c8; }
  .islands--home > :nth-child(1) .island__list--long, .islands--home > :nth-child(2) .island__list--long { max-height: 1090px; }
}
.islands + .islands { margin-top: 10px; }

/* ---------- island card ---------- */
.island { --cc: var(--c1); --ci: #fff; position: relative; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; }
.island:has(.island__list--long)::after { content: ''; pointer-events: none; position: absolute; left: 0; right: 0; bottom: 48px; height: 40px; background: linear-gradient(to bottom, transparent, var(--surface)); }
.island__head { display: flex; align-items: center; justify-content: center; gap: 5px; height: 45px; padding: 0 20px; background: var(--cc); border-radius: var(--radius) var(--radius) 0 0; flex: none; }
.island__icon { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; font-size: 20px; line-height: 1; }
.island__title { margin: 0; font-size: 16px; font-weight: 700; color: #fff; text-transform: capitalize; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.island__title a { color: #fff; }
.island__title a:hover { color: #fff; opacity: .9; }
.island__count { display: none; }
.island__blurb { font-size: 12px; line-height: 1.45; padding: 8px 16px 0; margin: 0; text-align: center; color: var(--text-2); min-height: calc(3 * 1.45em + 8px); box-sizing: border-box; }
.island__list { list-style: none; margin: 10px 0 0; padding: 0; counter-reset: rating; scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
.island__list--long { max-height: 300px; overflow-y: auto; padding-bottom: 20px; }
@media (min-width: 1025px) { .island__list--long { max-height: 340px; } }
.island__list li { display: flex; align-items: center; font-size: 14px; padding: 2px 10px 2px 12px; }
.island__list li:hover { background: var(--bg); }
.island__list a { display: inline-flex; align-items: center; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.island__list .island__site { flex: 1; min-width: 0; height: 32px; gap: 8px; line-height: 1; }
.island__fav { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 1px var(--border); overflow: hidden; }
.island__fav .fav { width: 16px; height: 16px; margin: 0; border-radius: 3px; background: none; object-fit: contain; }
.island__fav .fav--empty { width: 100%; height: 100%; border-radius: 50%; background: var(--border); }
.island__go { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-left: auto; border-radius: 50%; background: var(--border); color: var(--text-3); transition: background .15s, color .15s; }
.island__go svg { width: 13px; height: 13px; }
.island__list li:hover .island__go { background: var(--brand); color: #fff; }
.island__list li:hover a { color: var(--brand); }
.fav { display: inline-flex; width: 18px; height: 18px; margin-right: 5px; border-radius: 4px; flex: none; object-fit: cover; background: var(--border); }
.island__n { flex: none; width: 18px; text-align: right; font-variant-numeric: tabular-nums; }
.island__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.4; }
.tag-new { display: inline-flex; align-items: center; margin-left: 0; padding: 1px 5px; border-radius: 4px; background: var(--brand-2); color: #fff; font-size: 9px; font-weight: 700; letter-spacing: .04em; }
.island__all { margin-top: auto; display: flex; align-items: center; justify-content: center; padding: 12px 10px 10px; }
.island__more { display: flex; padding: 5px 50px; border-radius: var(--radius-pill); background: var(--cc); color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.7), 0 0 6px rgba(0,0,0,.35); border: 1px solid var(--border); font-size: 16px; white-space: nowrap; }
.island__more:hover { color: #fff; animation: pulse-btn 1s; }
@keyframes pulse-btn { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--cc) 70%, transparent); } 100% { box-shadow: 0 0 0 12px transparent; } }

/* ---------- blog strip ---------- */
.strip { margin: 40px 0 0; }
.strip__head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 10px; }
.strip__head h2 { margin: 0; }
.strip__row { display: grid; grid-template-columns: 1fr; gap: 10px; }
@media (min-width: 640px) { .strip__row { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1025px) { .strip__row { grid-template-columns: repeat(3, 1fr); } }
.pcard { scroll-snap-align: start; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; color: var(--text); display: flex; flex-direction: column; }
.pcard:hover { color: var(--text); border-color: var(--brand); }
.pcard__img { aspect-ratio: 16/9; background: var(--border); object-fit: cover; width: 100%; }
.pcard__body { padding: 10px 12px 12px; }
.pcard__title { margin: 0 0 4px; font-size: 15px; }
.pcard__ex { margin: 0 0 4px; color: var(--text-2); font-size: 13px; }
.pcard__date { color: var(--text-3); font-size: 12px; }

/* ---------- prose / boxes ---------- */
.prose { max-width: 820px; line-height: 1.6; }
.prose h2 { margin-top: 1.5em; }
.prose img { border-radius: var(--radius-sm); }
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; }

/* ---------- breadcrumb ---------- */
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 16px; padding: 10px 15px; list-style: none; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); font-size: 14px; }
.crumbs li { display: flex; align-items: center; gap: 6px; color: var(--text-3); }
.crumbs li + li::before { content: '•'; color: var(--brand); }
.crumbs a { color: var(--text); }
.crumbs li:last-child { color: var(--brand); font-weight: 700; }

/* ---------- category page: sidebar + grid ---------- */
.cat-page { display: grid; gap: 20px; min-width: 0; }
.cat-main { min-width: 0; }
@media (min-width: 1025px) { .cat-page { grid-template-columns: 300px 1fr; } }
.cat-side { border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border); align-self: start; overflow: hidden; }
.cat-side__head { display: flex; align-items: center; gap: 5px; height: 45px; padding: 0 20px; background: var(--cc); color: #fff; font-weight: 700; }
.cat-mini { display: grid; grid-template-columns: 40px 1fr; gap: 10px; padding: 12px 15px; border-top: 1px solid var(--border); color: var(--text); font-size: 14px; }
.cat-mini:first-of-type { border-top: 0; }
.cat-mini:hover { color: var(--brand); }
.cat-mini__icon { width: 40px; height: 40px; border-radius: var(--radius-sm); display: inline-flex; align-items: center; justify-content: center; font-size: 22px; background: var(--cc); }
.cat-mini b { display: block; }
.cat-mini__favs { display: flex; gap: 5px; margin-top: 5px; }
.cat-mini__favs .fav { margin: 0; width: 16px; height: 16px; }
.cat-main { min-width: 0; }
.cat-hero { background: var(--cc); color: #fff; display: flex; align-items: center; gap: 10px; height: 45px; padding: 0 20px; border-radius: var(--radius) var(--radius) 0 0; }
.cat-hero h1 { margin: 0; font-size: 18px; color: #fff; text-transform: capitalize; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cat-hero .island__icon { width: 24px; height: 24px; font-size: 18px; }
.cat-hero .island__count { display: inline; margin-left: auto; font-size: 13px; opacity: .9; }
.cat-intro { padding: 10px; background: var(--surface); border: 1px solid var(--border); border-top: 0; color: var(--text); font-size: 14px; }
.cat-intro p { margin: 0; }
.cat-grid { display: grid; gap: 10px; grid-template-columns: minmax(0, 1fr); padding: 10px; margin: 0 0 20px; list-style: none; background: var(--surface); border: 1px solid var(--border); border-top: 0; border-radius: 0 0 var(--radius) var(--radius); }
@media (min-width: 480px) { .cat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1025px) { .cat-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.srow { display: flex; flex-direction: column; gap: 8px; padding: 10px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); color: var(--text); height: 100%; }
.srow:hover { color: var(--text); border-color: var(--brand); }
.srow__img { width: 100%; aspect-ratio: 2/1; border-radius: var(--radius-sm); object-fit: cover; object-position: top; background: var(--border); }
.srow__body { min-width: 0; }
.srow__top { display: flex; align-items: center; gap: 6px; font-size: 14px; min-width: 0; }
.srow__name { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }
.srow__tag { margin: 4px 0 0; font-size: 12px; color: var(--text-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cat-article { padding: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 20px; }
.pager { display: flex; gap: 6px; justify-content: center; margin: 20px 0; }
.pager a, .pager span { height: 35px; display: inline-flex; align-items: center; padding: 0 15px; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border); color: var(--text); }
.pager .is-current { background: var(--brand); color: #fff; border-color: var(--brand); }

/* ---------- review page ---------- */
.rev { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; align-items: stretch; }
@media (min-width: 1025px) { .rev { grid-template-columns: minmax(0, 1fr) 260px; } }
.rev__side > * { align-self: stretch; width: 100%; }
.rev__top { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); }
@media (min-width: 760px) { .rev__top { grid-template-columns: 300px 1fr; align-items: start; } }
.gal { position: relative; }
.gal__main { display: block; width: 100%; height: auto; aspect-ratio: 16/10; border-radius: var(--radius-sm); background: var(--border); }
img.gal__main { aspect-ratio: auto; }
.btn svg { width: 16px; height: 16px; }
.rev__head { min-width: 0; display: flex; flex-direction: column; align-self: stretch; }
.rev__title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 4px; font-size: 24px; }
.rev__domain { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; font-size: 14px; }
.rev__domain .badge, .rev__domain .tag-new { display: inline-flex; align-items: center; height: 32px; margin: 0; padding: 0 12px; border-radius: var(--radius-pill); font-size: 12px; letter-spacing: .04em; }
.chips { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0; padding: 0; list-style: none; }
.chips li { font-size: 12px; padding: 3px 9px; border-radius: 25px; background: var(--bg); color: var(--text-2); border: 1px solid var(--border); }
.stars { display: inline-flex; align-items: center; gap: 1px; color: var(--brand-3); }
.stars svg { width: 15px; height: 15px; fill: currentColor; }
.stars__txt { margin-left: 6px; color: var(--text-2); font-size: 13px; }
.rev__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 6px 0 10px; }
.badge { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 25px; background: var(--bg); color: var(--text-2); border: 1px solid var(--border); text-transform: uppercase; }
.rev__tagline { color: var(--text-2); font-size: 14px; margin: 0 0 10px; }
.btn { display: inline-flex; justify-content: center; align-items: center; gap: 8px; height: 40px; padding: 0 20px; color: #fff; border-radius: var(--radius); background: var(--brand-3); font-weight: 700; --cc: var(--brand-3); }
.btn:hover { color: #fff; animation: pulse-btn 1s; }
.btn--go { background: var(--brand-2); --cc: var(--brand-2); }
.btn--brand { background: var(--brand); --cc: var(--brand); }
.btn--ghost { background: var(--surface-2); --cc: var(--surface-2); }
.rev__body { margin-top: 12px; }
.rev__body h2 { font-size: 20px; margin-top: 1.4em; }
.rev__body h2:first-child { margin-top: 0; }
.proscons { display: grid; gap: 10px; margin: 20px 0; }
@media (min-width: 640px) { .proscons { grid-template-columns: 1fr 1fr; } }
.proscons > div { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 15px; }
.proscons ul { margin: 0; padding: 0 0 0 1.1em; font-size: 14px; }
.proscons h3 { font-size: 13px; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 6px; }
.pros h3 { color: var(--ok); } .cons h3 { color: var(--bad); }
.verdict { margin: 15px 0 12px; padding: 12px 15px; border-radius: var(--radius); background: var(--bg); border-left: 4px solid var(--brand); }
.verdict strong { color: var(--text-heading, var(--brand)); }
.rev__side { display: flex; flex-direction: column; gap: 15px; }
.sim { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.sim__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; height: 45px; padding: 0 15px; background: var(--cc); color: #fff; font-weight: 700; font-size: 14px; }
.sim__head a { color: #fff; font-weight: 400; font-size: 13px; }
.sim ol { list-style: none; margin: 10px 0; padding: 0; }
.sim li { display: flex; align-items: center; font-size: 14px; padding: 4px 14px; }
.sim li:hover { background: var(--bg); }
.sim li a { display: inline-flex; align-items: center; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sim li:hover a { color: var(--brand); }
.sim__n { width: 20px; margin-right: 6px; font-size: 11px; color: #939393; text-align: right; flex: none; }

/* ---------- blog ---------- */
.posts { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 640px) { .posts { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1025px) { .posts { grid-template-columns: repeat(4, 1fr); } }
.post__cover { border-radius: var(--radius); margin-bottom: 15px; }

/* ---------- 404 ---------- */
.nf { text-align: center; padding: 40px 0; }
.nf img { width: 160px; margin: 0 auto 15px; }
.nf h1 { font-size: 32px; text-transform: uppercase; text-shadow: 0 2px #ccc; }

/* ---------- ads ---------- */
.ad { display: flex; justify-content: center; margin: 15px 0; }
.ad:empty { display: none; }

/* ---------- SEO band + footer (PornDude structure: text band, mascot, icon row, link row, bottom bar) ---------- */
.seo { margin-top: 40px; padding: 50px 0 70px; background: var(--seo-bg); color: var(--seo-text); }
.seo__in { max-width: var(--maxw); font-size: 17px; line-height: 1.75; }
.seo__in h2, .seo__in h3 { color: inherit; }
.seo__in a { color: var(--brand-3); }
.seo__in p, .seo__in li { color: inherit; }
.ftr { position: relative; background: var(--ftr-bg); color: var(--ftr-text); text-align: center; padding: 90px 0 0; margin-top: 110px; }
.seo + .ftr { margin-top: 0; }
.ftr__mascot { position: absolute; left: 50%; top: -70px; transform: translateX(-50%); width: 140px; height: 140px; filter: drop-shadow(0 8px 16px rgba(0,0,0,.3)); }
.ftr__icons { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin-bottom: 28px; }
.ftr__icons a, .ftr__icons button { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; background: #fff; color: var(--ftr-bg); border: 0; }
.ftr__icons a, .ftr__icons button { color: var(--ftr-bg); transition: transform .15s; }
.ftr__icons a:hover, .ftr__icons button:hover { color: var(--brand); transform: translateY(-2px); }
.ftr__icons svg { width: 22px; height: 22px; }
.ftr__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 34px; font-size: 16px; text-transform: uppercase; margin-bottom: 20px; }
.ftr__links a { color: var(--ftr-text); }
.ftr__links a:hover { text-decoration: underline; color: var(--ftr-text); }
.ftr__rta { font-weight: 900; letter-spacing: -.04em; opacity: .9; }
.ftr__age { font-size: 13px; opacity: .85; max-width: 60ch; margin: 0 auto 30px; }
.ftr__bottom { background: var(--bg-2); color: #fff; font-size: 14px; padding: 22px var(--gutter); }
.totop { position: fixed; right: 24px; bottom: 24px; z-index: 200; width: 52px; height: 52px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--brand); color: #fff; border: 2px solid #fff; box-shadow: 0 6px 16px rgba(0,0,0,.3); }
.totop[hidden] { display: none; }
.totop:hover { color: #fff; background: var(--brand-hover); }
.totop svg { width: 22px; height: 22px; }

/* ---------- age gate ---------- */
.gate { position: fixed; inset: 0; z-index: 500; background: rgba(28, 37, 51, .9); display: flex; align-items: center; justify-content: center; padding: 20px; }
.gate[hidden] { display: none; }
.gate__box { width: 100%; max-width: 540px; background: var(--surface); border: 1px solid var(--border); border-radius: 20px; padding: 30px 25px; text-align: center; }
.gate__box img { width: 80px; margin: 0 auto 10px; }
.gate__box h2 { font-size: 24px; }
.gate__box p { font-size: 13px; color: var(--text-2); }
.gate__btns { display: flex; gap: 10px; justify-content: center; margin: 15px 0; flex-wrap: wrap; }
.gate__btns .btn { height: auto; padding: 18px 31px; }
.gate__small { color: var(--text-3); font-size: 11px; margin: 0; }
html.gate-lock { overflow: hidden; }

/* ---------- contact form ---------- */
.form { display: grid; gap: 12px; max-width: 560px; }
.form label { display: grid; gap: 4px; font-weight: 700; font-size: 14px; }
.form input, .form select, .form textarea { padding: 10px 12px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--bg); color: var(--text); font-weight: 400; }
.form .hp { position: absolute; left: -9999px; }
.notice { padding: 10px 14px; border-radius: var(--radius-sm); background: var(--bg); border-left: 4px solid var(--ok); }
.notice--err { border-color: var(--bad); }
.gal .btn { width: 100%; white-space: nowrap; margin-top: 10px; }
[data-theme="light"] .logo__dark:has(+ .logo__light), [data-theme="dark"] .logo__light { display: none; }

/* ---------- site hover popover (one shared element, filled by main.js) ---------- */
.pop { position: fixed; z-index: 300; width: 300px; padding: 12px; background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 12px 32px rgba(0, 0, 0, .35); pointer-events: none; opacity: 0; transform: translateY(4px); transition: opacity .12s ease, transform .12s ease; }
.pop.is-on { opacity: 1; transform: none; }
.pop__head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.pop__icon { width: 28px; height: 28px; border-radius: 6px; object-fit: cover; flex: none; }
.pop__icon--empty { background: var(--border); }
.pop__name { font-size: 15px; color: var(--heading); }
.pop__img { display: block; width: 100%; height: auto; margin: 2px 0 8px; border-radius: var(--radius-sm); background: var(--border); }
.pop__img[hidden], .pop__text[hidden] { display: none; }
.pop__text { margin: 0 0 6px; font-size: 12px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pop__meta { margin: 0 0 4px; font-size: 12px; color: var(--text-2); }
.pop__meta b { color: var(--brand-3); }
.pop__hint { margin: 0; font-size: 11px; font-style: italic; color: var(--text-3); }
@media (hover: none), (max-width: 760px) { .pop { display: none; } }

/* ---------- review page: jerkdude-style top card + related islands + sites-like grid ---------- */
.rev__left { display: flex; flex-direction: column; gap: 10px; }
.rev__open { width: 100%; height: 44px; font-size: 16px; padding: 0 14px; }
.rev__open-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rev__open svg { flex: none; }
/* Small phones: long names wrap instead of being cut (5 Nov 2026) */
@media (max-width: 480px) { .cat-hero { height: auto; min-height: 45px; padding: 8px 20px; } .cat-hero h1 { white-space: normal; line-height: 1.25; } .rev__open { height: auto; min-height: 44px; padding: 8px 14px; } .rev__open-name { white-space: normal; text-align: center; line-height: 1.25; } }
.rev__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.rev__pill { flex: 1 1 auto; min-width: 0; display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 10px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--bg); color: var(--text-2); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rev__pill svg { width: 14px; height: 14px; flex: none; }
.rev__pill:hover { color: var(--text); border-color: var(--cc); }
.rev__pill--ghost { flex: 1 0 auto; }
.rev__votes { display: flex; justify-content: center; height: 40px; align-items: center; border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--bg); }
.rev__domain a { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 12px; border-radius: var(--radius-pill); background: var(--bg); border: 1px solid var(--border); color: var(--text); font-weight: 600; text-decoration: none; }
.rev__domain a:hover { border-color: var(--brand); color: var(--brand); }
.rev__domain svg { width: 12px; height: 12px; opacity: .7; }
.rev__body--clamp { position: relative; flex: 1 1 0; min-height: 260px; max-height: 340px; overflow: hidden; }
@media (min-width: 1025px) { .rev__body--clamp { max-height: none; height: 0; } }
.rev__body--clamp::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 90px; background: linear-gradient(to bottom, transparent, var(--surface)); pointer-events: none; }
.rev__body.is-open { max-height: none; height: auto; flex: none; }
.rev__body.is-open::after { display: none; }
.rev__more { display: block; align-self: flex-start; margin: 8px 0 0; padding: 0; border: 0; background: none; outline-offset: 3px; color: var(--brand); font-weight: 700; font-size: 14px; }
.rev__more[hidden] { display: none; }
.cat-mini__body { min-width: 0; }
.cat-mini__row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cat-mini__count { font-size: 11px; padding: 1px 7px; border-radius: 25px; background: var(--bg); color: var(--text-3); border: 1px solid var(--border); }
.like { margin-top: 36px; }
/* Phone and tablet: related categories go below Sites like (owner, 5 Nov 2026) */
@media (max-width: 1024px) { .rev-page { display: flex; flex-direction: column; } .rev-page > .rev { display: contents; } .rev-page .like { order: 1; } .rev-page .rev__side { order: 2; margin-top: 36px; } }
.like__title { font-size: 22px; margin: 0 0 16px; }
.like__grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .like__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1025px) { .like__grid { grid-template-columns: repeat(4, 1fr); } }
.lcard { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; color: var(--text); height: 100%; }
.lcard:hover { color: var(--text); border-color: var(--cc); }
.lcard__img { display: block; width: 100%; aspect-ratio: 2/1; object-fit: cover; object-position: top; background: var(--border); }
.lcard__body { padding: 12px 14px 14px; }
.lcard__top { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.lcard__name { font-weight: 700; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lcard__ex { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 13px; color: var(--text-2); line-height: 1.45; }
.like__all { display: flex; justify-content: center; margin: 24px 0 0; }

/* ---------- every solid colour bar: darker fill + bottom edge + text shadow, so white text always reads ---------- */
.island__head, .cat-side__head, .cat-hero, .sim__head {
  background: var(--cc); /* fallback for browsers without color-mix (Safari < 16.2) */
  background: color-mix(in srgb, var(--cc) 86%, #000);
  box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--cc) 60%, #000);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .45);
}
.cat-hero h1, .island__title, .island__title a, .sim__head a, .cat-side__head a { color: #fff; }
.rev__listed { margin: 12px 0 0; font-size: .85rem; }
.proscons + .rev__listed, .prose + .rev__listed { margin-top: 12px; }

/* ---------- tablet: sidebars go below content and become a 2-col grid ---------- */
@media (max-width: 1024px) {
  .cat-side { order: 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-side__head { grid-column: 1 / -1; }
  .cat-mini:first-of-type, .cat-mini:nth-of-type(2) { border-top: 0; }
  .cat-mini:nth-of-type(odd) { border-right: 1px solid var(--border); }
  .rev__side .cat-side { order: 0; }
}
@media (max-width: 479px) { .cat-side { grid-template-columns: minmax(0, 1fr); } .cat-mini:nth-of-type(2) { border-top: 1px solid var(--border); } .cat-mini:nth-of-type(odd) { border-right: 0; } }

/* ---------- search panel on phones and tablets: full width under the header, bigger input, taller tap rows ---------- */
@media (max-width: 1024px) {
  .header__search { left: 12px; right: 12px; width: auto; padding: 10px; border-radius: 16px; }
  .search__input { height: 46px; font-size: 16px; padding: 0 44px 0 42px; border-radius: 14px; }
  .search__icon { left: 15px; width: 18px; height: 18px; }
  .search__close { width: 34px; height: 34px; right: 7px; }
  .search__list { max-height: calc(100vh - var(--header-h) - 100px); margin-top: 8px; }
  .search__list li a { padding: 11px 12px; font-size: 15px; }
  .search__list img { width: 22px; height: 22px; }
}

/* breadcrumb stays on one line on phones: last item truncates with an ellipsis */
@media (max-width: 760px) {
  .crumbs { flex-wrap: nowrap; overflow: hidden; }
  .crumbs li { flex: none; white-space: nowrap; }
  .crumbs li:last-child { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; display: block; }
  .crumbs li:last-child::before { display: inline; margin-right: 6px; }
}

/* ---------- info pages: left list + content, contact card on about and contact ---------- */
.info { display: grid; grid-template-columns: 230px minmax(0, 1fr); padding: 0; }
.info__nav { padding: 16px 12px; border-right: 1px solid var(--border); display: flex; flex-direction: column; gap: 2px; }
.info__nav a { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 12px; border-radius: var(--radius-sm); color: var(--text); font-weight: 600; font-size: 15px; }
.info__nav a svg { width: 14px; height: 14px; color: var(--text-3); flex: none; }
.info__nav a:hover, .info__nav a[aria-current="page"] { background: var(--bg); color: var(--brand); }
.info__nav a[aria-current="page"] svg { color: var(--brand); }
.info__main { padding: 24px 28px 30px; min-width: 0; }
.info__main .prose { max-width: none; }
.info__main .prose h1 { margin-top: 0; }
.info__main .prose a { color: var(--brand); }
.info__main .prose a:hover { text-decoration: underline; }
.ccard { display: flex; align-items: stretch; gap: 14px; margin-bottom: 26px; padding: 14px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); }
.ccard__who { flex: none; width: 150px; padding: 12px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; text-align: center; background: var(--surface); border-radius: var(--radius-sm); }
.ccard__who img { width: 72px; height: 72px; margin: 0; }
.ccard__status { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--brand-2); }
.ccard__status::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--brand-2); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-2) 30%, transparent); }
.ccard__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.ccard__rows { flex: 1; margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.ccard__rows li { position: relative; display: flex; align-items: center; gap: 12px; min-width: 0; padding: 12px 14px; background: var(--surface); border-radius: var(--radius-sm); transition: box-shadow .15s; }
.ccard__rows li:has(a):hover { box-shadow: inset 0 0 0 1px var(--brand); }
.ccard__ico { flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; color: var(--brand); background: color-mix(in srgb, var(--brand) 14%, transparent); }
.ccard__ico svg { width: 20px; height: 20px; }
.ccard__txt { min-width: 0; display: flex; flex-direction: column; gap: 1px; font-size: 13px; }
.ccard__txt a, .ccard__txt b { font-size: 15px; font-weight: 700; color: var(--heading); overflow-wrap: anywhere; }
.ccard__txt a::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
.ccard__rows li:hover .ccard__txt a { color: var(--brand); }
.ccard__note { margin: 0; padding: 10px 14px; font-size: 14px; border-left: 4px solid var(--brand-3); border-radius: var(--radius-sm); background: color-mix(in srgb, var(--brand-3) 12%, transparent); }
@media (max-width: 800px) {
  .info { grid-template-columns: minmax(0, 1fr); }
  .info__nav { flex-direction: row; flex-wrap: wrap; gap: 6px; padding: 12px; border-right: 0; border-bottom: 1px solid var(--border); }
  .info__nav a { padding: 7px 12px; font-size: 14px; background: var(--bg); border-radius: var(--radius-pill); }
  .info__nav a svg { display: none; }
  .info__main { padding: 16px 12px 24px; }
  .ccard { flex-direction: column; padding: 10px; }
  .ccard__who { width: auto; flex-direction: row; justify-content: flex-start; }
  .ccard__who img { width: 56px; height: 56px; }
  .ccard__rows { grid-template-columns: minmax(0, 1fr); }
  .ccard__rows li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 6px 8px; padding: 10px 12px; }
  .ccard__ico { width: 28px; height: 28px; }
  .ccard__ico svg { width: 15px; height: 15px; }
  .ccard__txt { display: contents; }
  .ccard__txt a, .ccard__txt b { grid-column: 1 / -1; font-size: clamp(12.5px, 3.9vw, 15px); overflow-wrap: normal; white-space: nowrap; }
}

/* Section headings in long text stand apart from the body text. */
.prose h1, .prose h2, .prose h3 { color: var(--text-heading, var(--heading)); }
.seo__in h1, .seo__in h2, .seo__in h3 { color: var(--band-heading, var(--heading)); }
.seo__in h1 { margin-top: 0; }
