/* ===== Design tokens (populated per-site from catalog/site_config.py) ===== */
:root{ --maxw:1200px; --gap:18px; --ink:var(--text);
  --shadow:0 6px 24px rgba(0,0,0,.18);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-body);line-height:1.6;
  font-synthesis-weight:none;-webkit-font-smoothing:antialiased;
  overflow-x:hidden}
h1,h2,h3,h4,.brand{font-family:var(--font-head);
  letter-spacing:var(--head-spacing);line-height:1.15;margin:0 0 .5em}
h1{font-weight:var(--head-weight);font-size:clamp(1.7rem,4vw,2.6rem)}
h2{font-weight:var(--head-weight);font-size:clamp(1.3rem,2.6vw,1.9rem)}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
/* Центрирование задано здесь, но сосед по тому же тегу легко его
   затирает: margin:6px 0 2px заменяет и боковые auto тоже, и блок
   уезжает к левому краю. Стережёт catalog/test_layout_rules.py */
.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 clamp(14px,3vw,26px)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--primary);
  color:var(--primary-ink);padding:8px 14px;border-radius:8px;z-index:100}
.muted{color:var(--muted)}
svg.i{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round;vertical-align:-.14em}

/* ===== Header / nav ===== */
.site-head{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--border)}
.nav{display:flex;align-items:center;gap:16px;height:64px}
.brand{display:flex;align-items:center;gap:.28em;font-size:1.3rem;font-weight:800;white-space:nowrap}
.brand .a{color:var(--text)}.brand .b{color:var(--primary)}
.brand .dot{color:var(--accent)}
.nav-links{display:flex;gap:4px;list-style:none;margin:0;padding:0;flex:1}
.nav-mobile-search{display:none;list-style:none}
.nav-cta{margin-left:auto}
nav.nav-left .nav-links{flex:1;justify-content:flex-start;margin-left:12px}
nav.nav-center .nav-links{justify-content:center}
nav.nav-split .nav-links{justify-content:center}
.nav-links a{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border-radius:10px;
  color:var(--muted);font-weight:600;font-size:.93rem;line-height:1.1;white-space:nowrap;transition:.15s}
.nav-links a:hover{color:var(--text);background:var(--surface-2)}
.nav-links a.active{color:var(--primary-ink);background:var(--primary)}
.nav-links a.nav-live{color:var(--primary);font-weight:800;letter-spacing:.035em;text-transform:uppercase;
  background:color-mix(in srgb,var(--primary) 11%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 36%,transparent)}
.nav-links a.nav-live:hover{color:var(--primary-ink);background:var(--primary);box-shadow:var(--glow)}
.nav-links a.nav-live svg{flex:none}
.search{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);
  border-radius:999px;padding:4px 4px 4px 14px;max-width:230px;min-width:0}
.search input{border:0;background:transparent;color:var(--text);outline:0;width:100%;min-width:0;font:inherit}
.search button{border:0;background:var(--primary);color:var(--primary-ink);width:34px;height:34px;
  border-radius:999px;display:grid;place-items:center;cursor:pointer;flex:none}
.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:10px;
  border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;position:relative}
.icon-btn .count{position:absolute;top:-6px;right:-6px;background:var(--accent);color:#111;
  font-size:.7rem;font-weight:800;min-width:18px;height:18px;border-radius:9px;display:grid;place-items:center;padding:0 4px}
.burger{display:none}
.lang{position:relative}
.lang-menu{position:absolute;right:0;top:46px;background:var(--surface);border:1px solid var(--border);
  border-radius:12px;padding:6px;min-width:150px;box-shadow:var(--shadow);display:none;z-index:50}
.lang-menu a{display:block;padding:8px 12px;border-radius:8px;color:var(--text);font-size:.92rem}
.lang-menu a:hover{background:var(--surface-2)}
.lang.open .lang-menu{display:block}

/* ===== Hero ===== */
.hero{padding:clamp(26px,5vw,54px) 0 clamp(18px,3vw,30px)}
.hero .kick{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;font-size:.72rem;color:var(--primary);
  background:color-mix(in srgb,var(--primary) 14%,transparent);padding:6px 12px;border-radius:999px}
.hero h1{margin:.5em 0 .3em;max-width:20ch}
.hero .lead{color:var(--muted);max-width:62ch;font-size:clamp(1rem,1.4vw,1.12rem)}
.hero-stats{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
.hero-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:12px 18px;min-width:120px}
.hero-stat b{display:block;font-family:var(--font-head);font-size:1.5rem;color:var(--text)}
.hero-stat span{color:var(--muted);font-size:.82rem}
body.hero-pulse .hero{position:relative}
body.hero-pulse .hero:before{content:"";position:absolute;inset:-40% 30% auto auto;width:60vw;height:60vw;
  background:radial-gradient(circle,var(--primary),transparent 62%);opacity:.16;filter:blur(30px);z-index:-1}
body.hero-paper .hero{border-bottom:3px double var(--rule,var(--border));margin-bottom:8px}
body.hero-mono .hero .kick{border-radius:4px}

/* ===== Sort / toolbar ===== */
.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:8px 0 20px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;
  border:1px solid var(--border);background:var(--surface);color:var(--muted);font-weight:600;font-size:.86rem;cursor:pointer}
.chip:hover{color:var(--text)}
.chip.active{background:var(--primary);color:var(--primary-ink);border-color:transparent}

/* ===== Card grid ===== */
.grid{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}
body.layout-live .grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
body.layout-archive .grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.card{position:relative;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--card-radius);overflow:hidden;transition:transform .18s,box-shadow .18s,border-color .18s;
  display:flex;flex-direction:column}
.card:hover{transform:translateY(-4px);box-shadow:var(--glow,var(--shadow));border-color:color-mix(in srgb,var(--primary) 45%,var(--border))}
body.card-outline .card{background:transparent}
body.card-film .card{border-radius:4px;box-shadow:inset 0 0 0 1px var(--rule,var(--border))}
.thumb{position:relative;aspect-ratio:4/3;background:var(--surface-2);overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.card:hover .thumb img{transform:scale(1.05)}
.badge-live{position:absolute;top:8px;left:8px;display:inline-flex;align-items:center;gap:6px;
  background:#e11d48;color:#fff;font-size:.72rem;font-weight:800;padding:4px 9px;border-radius:999px;
  text-transform:uppercase;letter-spacing:.04em}
.badge-live .dotp{width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.fav{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;border:0;
  background:rgba(0,0,0,.42);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(4px)}
.fav[aria-pressed=true]{color:#ff3d71}
.fav[aria-pressed=true] svg{fill:#ff3d71;stroke:#ff3d71}
.followers{position:absolute;bottom:8px;left:8px;background:rgba(0,0,0,.5);color:#fff;
  font-size:.76rem;font-weight:700;padding:3px 9px;border-radius:999px;display:inline-flex;gap:5px;align-items:center;backdrop-filter:blur(4px)}
.card-body{padding:11px 13px 14px;display:flex;flex-direction:column;gap:6px;flex:1}
.card-name{display:flex;align-items:center;justify-content:space-between;gap:8px}
.card-name b{font-family:var(--font-head);font-size:1.02rem;font-weight:700;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gtag{font-size:.7rem;font-weight:800;padding:2px 7px;border-radius:6px;flex:none;
  background:var(--surface-2);color:var(--muted)}
.gtag.f{color:#ff6ea9}.gtag.m{color:#5aa9ff}.gtag.c{color:#c084fc}.gtag.s{color:#f7b955}
.card-sub{color:var(--muted);font-size:.82rem;display:flex;align-items:center;gap:5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-note{color:var(--muted);font-size:.8rem;font-style:italic;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:8px;font-weight:700;border-radius:12px;
  padding:11px 20px;border:1px solid transparent;cursor:pointer;font-family:var(--font-head)}
.btn-primary{background:var(--primary);color:var(--primary-ink)}
.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}
.btn-block{width:100%;justify-content:center}

/* ===== Pagination ===== */
.pager{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:34px 0 10px;list-style:none;padding:0}
.pager a,.pager span{display:grid;place-items:center;min-width:40px;height:40px;padding:0 12px;border-radius:10px;
  border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:600}
.pager .cur{background:var(--primary);color:var(--primary-ink);border-color:transparent}
.pager a:hover{border-color:var(--primary)}

/* ===== Prose / SEO copy ===== */
.prose{max-width:74ch;color:var(--muted)}
.prose p{margin:0 0 1em}
.seo-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:clamp(18px,3vw,30px);margin:30px auto}
.faq{display:grid;gap:10px;margin-top:14px}
.faq details{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2px 16px}
.faq summary{cursor:pointer;font-weight:700;padding:14px 0;color:var(--text);font-family:var(--font-head)}
.faq p{margin:0 0 14px;color:var(--muted)}

/* ===== How a profile compares with its peers ===== */
.standing{margin:22px 0}
.standing-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.standing-card{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:16px 18px}
.standing-card b{display:block;font-family:var(--font-head);font-size:1.9rem;
  line-height:1.1;color:var(--primary);font-variant-numeric:tabular-nums}
.standing-card span{display:block;color:var(--muted);font-size:.84rem;margin-top:4px}
.standing-note{font-size:.78rem;margin:12px 0 0}
.standing-note a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}
.site-modelsarchive .standing-card,.site-chaturlog .standing-card{border-radius:4px}

/* ===== Category leaders on the homepage ===== */
.champions{margin:14px auto 6px}
.champ-periods{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.champ-period{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column}
.champ-label{color:var(--primary);font-weight:800;font-size:.72rem;
  text-transform:uppercase;letter-spacing:.12em}
.champ-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;flex:1}
.champ-row{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px}
.champ-photo{width:44px;height:44px;border-radius:50%;overflow:hidden;background:var(--surface-2)}
.champ-photo img{width:100%;height:100%;object-fit:cover}
.champ-who{display:grid;gap:1px;min-width:0}
.champ-cat{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}
.champ-who b{font-family:var(--font-head);font-size:.96rem;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;display:block}
.champ-score{color:var(--primary);font-variant-numeric:tabular-nums;font-size:.9rem}
.champ-more{margin-top:12px;color:var(--muted);font-size:.8rem;font-weight:700}
.champ-more:hover{color:var(--primary)}
.champions-note{font-size:.78rem;margin:10px 0 0}
.site-modelsarchive .champ-period,.site-chaturlog .champ-period{border-radius:4px}
.site-modelsarchive .champ-photo,.site-chaturlog .champ-photo{border-radius:4px}

/* ===== Podium: first three places in every ranking ===== */
.rank-tabs-gender{margin-top:0}
.rank-tabs-gender a{font-size:.82rem;padding:7px 12px}
.ranking-row.medal{position:relative}
.ranking-row.medal .ranking-place{
  display:grid;place-items:center;width:34px;height:34px;border-radius:50%;
  color:#2a1e05;font-size:.95rem;font-weight:900;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.ranking-row.medal-gold{background:linear-gradient(90deg,color-mix(in srgb,#f4c04a 16%,transparent),transparent 62%)}
.ranking-row.medal-silver{background:linear-gradient(90deg,color-mix(in srgb,#c9d2dc 14%,transparent),transparent 62%)}
.ranking-row.medal-bronze{background:linear-gradient(90deg,color-mix(in srgb,#d08a4e 14%,transparent),transparent 62%)}
.ranking-row.medal-gold .ranking-place{background:linear-gradient(160deg,#ffdb70,#e0a020)}
.ranking-row.medal-silver .ranking-place{background:linear-gradient(160deg,#eef2f6,#aab6c2)}
.ranking-row.medal-bronze .ranking-place{background:linear-gradient(160deg,#e8a870,#b06a30)}
.ranking-row.medal .ranking-name b{font-size:1.06rem}
.site-modelsarchive .ranking-row.medal .ranking-place,
.site-chaturlog .ranking-row.medal .ranking-place{border-radius:4px}

/* ===== Generated listing copy ===== */
.listing-copy{margin:6px auto 2px}
.listing-copy p{color:var(--muted);line-height:1.75;max-width:74ch;margin:0 0 .8em}
.listing-copy p:first-child{color:var(--text);font-size:clamp(1rem,1.3vw,1.08rem)}

/* ===== Facts panel (tag + country hubs) ===== */
.facts-panel{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:clamp(16px,2.4vw,24px);margin:18px auto 26px}
.facts-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.fact{background:var(--surface-2);border:1px solid var(--border);
  border-radius:calc(var(--radius) - 6px);padding:12px 14px}
.fact b{display:block;font-family:var(--font-head);font-size:1.35rem;
  font-variant-numeric:tabular-nums;line-height:1.2}
.fact span{color:var(--muted);font-size:.78rem}
.facts-tags{margin-top:16px}
.facts-label{display:block;color:var(--muted);font-size:.76rem;font-weight:800;
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px}
.facts-tags .tagcloud a i{font-style:normal;opacity:.6;font-size:.82em;margin-left:3px}
.facts-note{font-size:.8rem;margin:14px 0 0}
.facts-note a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}

/* ===== Country index ===== */
.country-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  margin:8px 0 34px}
.country-card{display:grid;gap:3px;padding:14px 16px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--card-radius);transition:.15s}
.country-card:hover{border-color:var(--primary);transform:translateY(-2px)}
.country-card b{font-family:var(--font-head);font-size:1.02rem}
.country-card span{color:var(--muted);font-size:.84rem;font-variant-numeric:tabular-nums}
.country-card i{color:var(--muted);font-style:normal;font-size:.76rem;opacity:.8}
.site-modelsarchive .country-card,.site-chaturlog .country-card{border-radius:4px}

/* ===== Capture page ===== */
.day-stats{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin:14px 0}
.day-note{font-size:.86rem;margin:0 0 4px}
.photo-steps{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.photo-strip{display:flex;gap:10px;overflow-x:auto;padding:4px 0 12px;scroll-snap-type:x proximity}
.photo-strip a{flex:0 0 auto;scroll-snap-align:start;display:grid;gap:5px;text-decoration:none;
  border:1px solid var(--border);border-radius:var(--card-radius);padding:5px;background:var(--surface)}
.photo-strip a.current{border-color:var(--primary)}
.photo-strip img{display:block;width:140px;height:105px;object-fit:cover;border-radius:calc(var(--card-radius) - 4px)}
.photo-strip span{text-align:center;color:var(--muted);font-size:.74rem}

/* ===== Legal & methodology long-form pages ===== */
.legal-page,.methodology{max-width:78ch;margin-left:auto;margin-right:auto}
.legal-page h1,.methodology h1{font-size:clamp(1.7rem,3.4vw,2.6rem);margin:.3rem 0 .6rem}
.legal-page h2,.methodology h2{font-size:clamp(1.05rem,1.8vw,1.28rem);margin:1.9em 0 .5em;
  padding-top:1.1em;border-top:1px solid var(--border)}
.legal-page h2:first-of-type,.methodology h2:first-of-type{border-top:0;padding-top:0}
.legal-page p,.methodology p{color:var(--muted);line-height:1.75;margin:0 0 1em;max-width:72ch}
.legal-page .lead,.methodology .lead{color:var(--text);font-size:clamp(1rem,1.4vw,1.1rem)}
.legal-page .legal-meta{font-size:.82rem;margin-bottom:0}
.legal-page ul,.legal-page ol{color:var(--muted);line-height:1.75;max-width:72ch;
  margin:0 0 1em;padding-left:1.3em}
.legal-page li{margin:0 0 .55em}
.legal-page li b{color:var(--text);font-family:var(--font-head)}
.legal-page a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}
.legal-nav{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 6px}
.legal-nav a{padding:8px 13px;border:1px solid var(--border);border-radius:999px;
  color:var(--muted);font-weight:700;font-size:.84rem;text-decoration:none}
.legal-nav a:hover{border-color:var(--primary);color:var(--text)}
.legal-nav a.active{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
/* The archive and log sites square everything off; keep the pills in character. */
.site-modelsarchive .legal-nav a,.site-chaturlog .legal-nav a{border-radius:4px}

/* ===== Model page ===== */
.mp-head{display:grid;grid-template-columns:300px 1fr;gap:28px;margin:20px 0}
/* Кадры приходят только горизонтальные, поэтому и рамки горизонтальные:
   портретное соотношение срезало бы им края. */
.mp-photo{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);aspect-ratio:4/3;background:var(--surface-2)}
.mp-photo img{width:100%;height:100%;object-fit:cover}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;text-align:center}
.stat b{display:block;font-family:var(--font-head);font-size:1.4rem}
.stat span{color:var(--muted);font-size:.78rem}
.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0}
.info{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:flex;gap:12px;align-items:center}
.info .lbl{color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em}
.info .val{font-weight:700}
.video-wrap{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:var(--radius);border:1px solid var(--border);margin:18px 0}
.video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.section-title{display:flex;align-items:center;gap:10px;margin:30px 0 14px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.gallery a{border-radius:12px;overflow:hidden;aspect-ratio:4/3;background:var(--surface-2)}
.gallery img{width:100%;height:100%;object-fit:cover}
.tagcloud{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;max-width:100%}
.tagcloud a{padding:6px 12px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:.85rem;font-weight:600;overflow-wrap:anywhere}
.tagcloud a:hover{color:var(--primary-ink);background:var(--primary)}
.growth-panel{margin:28px 0;padding:clamp(18px,3vw,28px);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.growth-heading,.growth-layout,.growth-stats{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}
.growth-heading h2{margin:.2em 0 0}.growth-stats{align-items:stretch;justify-content:flex-start}
.growth-stats{display:grid;grid-template-columns:repeat(2,minmax(112px,1fr))}
.growth-stats .stat{min-width:112px}.spark-bars{height:150px;min-width:min(420px,52%);display:flex;align-items:flex-end;gap:2px;padding-top:10px;overflow:hidden}
/* A full year's observations can contain hundreds of bars.  They must shrink
   inside the chart instead of enforcing their individual minimum widths and
   widening the whole profile page. */
.spark-bars span{display:block;flex:1;min-width:0;max-width:14px;border-radius:4px 4px 1px 1px;background:linear-gradient(180deg,var(--accent),var(--primary));opacity:.82}
.spark-bars span:hover{opacity:1}.chart-range{display:flex;justify-content:space-between;margin:-2px 0 0 auto;width:min(420px,52%);color:var(--muted);font-size:.7rem}.data-note{margin:14px 0 0;color:var(--muted);font-size:.78rem}
/* Четыре месяца в ряд -- как на настенном календаре, где год ложится
   в 4x3. Число задаётся переменной, чтобы каждый сайт мог взять свою
   плотность, не переписывая раскладку. */
.year-calendar{--cal-cols:4;--cell:16px;--cell-gap:4px;display:grid;
  grid-template-columns:repeat(var(--cal-cols),minmax(0,1fr));
  gap:20px 16px;margin-top:16px;padding:18px;border:1px solid var(--border);
  border-radius:var(--radius);background:var(--surface)}
.calendar-month{display:flex;flex-direction:column;align-items:center;min-width:0}
@media(max-width:900px){.year-calendar{--cal-cols:3;--cell:20px;--cell-gap:4px}}
/* На телефоне месяцев в ряду меньше, значит клетка может быть даже крупнее, чем на десктопе -- палец должен в неё попадать. */
@media(max-width:620px){.year-calendar{--cell:20px;--cell-gap:5px}
  .calendar-dow{font-size:.66rem}
  .calendar-month>.muted{font-size:.92rem}}
@media(max-width:480px){.year-calendar{--cal-cols:1;--cell:34px;--cell-gap:5px;padding:16px 10px}
  .calendar-dow{font-size:.72rem}
  .calendar-month>.muted{font-size:1rem}}
/* Клетка задаётся переменной: месяц крупнее на десктопе, но на узком экране должен помещаться, поэтому размер меняется в одном месте. */
.calendar-month>.muted{font-size:.86rem;margin-bottom:8px;font-weight:600}.calendar-dow{display:grid;grid-template-columns:repeat(7,minmax(0,var(--cell)));justify-content:center;gap:var(--cell-gap);margin-bottom:4px;font-size:.6rem;line-height:1;color:var(--muted);text-align:center}.calendar-dow span{overflow:hidden;font-weight:600}.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,var(--cell)));gap:var(--cell-gap);justify-content:center}.calendar-days>span.lead{background:transparent;border-color:transparent}.calendar-days>span,.calendar-days .calendar-day{width:100%;max-width:var(--cell);height:var(--cell);border-radius:3px;background:var(--surface-2);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);padding:0}.calendar-days .calendar-day{position:relative;cursor:pointer;background:var(--primary);border-color:var(--primary);box-shadow:0 0 8px color-mix(in srgb,var(--primary) 35%,transparent)}.calendar-tooltip{display:none;position:absolute;z-index:12;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:max-content;max-width:220px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:400 .74rem/1.35 var(--font-body);box-shadow:var(--shadow)}.calendar-tooltip b{display:block;color:var(--muted);margin-bottom:3px}.calendar-day:hover .calendar-tooltip,.calendar-day:focus .calendar-tooltip,.calendar-day.show-tooltip .calendar-tooltip{display:block}
.forecast-panel{margin:28px 0;padding:clamp(18px,3vw,28px);border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--surface-2) 72%,var(--primary) 8%))}
.forecast-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.forecast-heading h2{margin:.2em 0 0}.forecast-basis{color:var(--muted);font-size:.78rem}
.forecast-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:18px}.forecast-day{min-width:0;padding:12px 9px;border:1px solid var(--border);border-radius:calc(var(--radius) * .72);background:var(--bg)}.forecast-day time,.forecast-prob{display:flex;justify-content:space-between;gap:4px;align-items:baseline}.forecast-day time span,.forecast-prob span{color:var(--muted);font-size:.68rem}.forecast-prob{margin-top:12px}.forecast-prob b{font-family:var(--font-head);font-size:1.16rem}.forecast-day.likely{border-color:color-mix(in srgb,var(--primary) 58%,var(--border));background:color-mix(in srgb,var(--primary) 7%,var(--bg))}.forecast-time{margin-top:10px;font-size:.72rem;white-space:nowrap}.forecast-meter{height:3px;margin-top:9px;border-radius:99px;background:var(--surface-2);overflow:hidden}.forecast-meter span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),var(--accent))}
.layout-terminal .forecast-day,.layout-terminal .growth-panel{border-style:dashed}.layout-archive .spark-bars span{border-radius:0;background:var(--primary)}.layout-live .forecast-day.likely{box-shadow:var(--neon,none)}.layout-magazine .growth-panel{border-left:4px solid var(--primary)}
.signal-badge{display:inline-flex;width:max-content;margin-bottom:7px;padding:4px 8px;border:1px solid var(--border);border-radius:999px;font-size:.7rem;font-weight:800}
.signal-badge.up{color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent)}
.signal-badge.steady{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}
@media(max-width:820px){.growth-layout{align-items:stretch;flex-wrap:wrap}.growth-layout .growth-stats{flex:1 1 100%}.growth-layout .spark-bars{width:100%;min-width:0}.growth-panel .chart-range{width:100%;margin-right:0}.forecast-week{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:620px){.growth-heading,.growth-layout,.forecast-heading{align-items:stretch;flex-direction:column}.growth-heading>.muted{align-self:flex-start}.growth-stats{grid-template-columns:1fr 1fr}.growth-stats .stat{min-width:0}.spark-bars{width:100%;min-width:0;height:112px}.chart-range{width:100%}.forecast-week{grid-template-columns:repeat(2,minmax(0,1fr))}.year-calendar{--cal-cols:2;overflow:hidden}}

/* ===== Footer ===== */
.site-foot{border-top:1px solid var(--border);margin-top:50px;padding:34px 0;color:var(--muted);font-size:.9rem}
.foot-grid{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:flex-start}
.foot-links{display:flex;gap:16px;flex-wrap:wrap}
.foot-links a:hover{color:var(--text)}

/* ===== Responsive ===== */
@media(max-width:820px){
  /* `shell-topnav` lives on <body>, so this must be a combined body class.
     The former descendant selector toggled aria-expanded but left the actual
     menu at display:none on phones. */
  body.shell-topnav .burger{display:grid}
  body.shell-topnav .nav-links{position:fixed;inset:64px 0 auto 0;flex-direction:column;background:var(--surface);
    border-bottom:1px solid var(--border);padding:10px;display:none;z-index:50}
  body.nav-open.shell-topnav .nav-links{display:flex}
  body.shell-topnav .nav-links a{padding:12px}
  body.shell-topnav .search{max-width:none;order:5;width:100%}
  body.shell-topnav .nav-mobile-search{display:block;margin:4px 0 0}
  body.nav-open.shell-topnav .nav-mobile-search .search{display:flex;max-width:none;width:100%;order:initial}
  .mp-head{grid-template-columns:1fr}
  .mp-photo{max-width:320px;margin:0 auto}
}
/* The flagship top navigation has room for its full editorial menu on wide
   desktops.  At laptop widths, preserving readable labels and the account
   actions is more useful than squeezing the last item off the edge. */
@media(min-width:821px) and (max-width:1500px){
  body.shell-topnav .nav{gap:10px}
  body.shell-topnav .burger{display:grid}
  body.shell-topnav .nav-links{position:fixed;inset:64px 0 auto 0;flex-direction:column;
    background:var(--surface);border-bottom:1px solid var(--border);padding:10px;display:none;z-index:50}
  body.nav-open.shell-topnav .nav-links{display:flex}
  body.shell-topnav .nav-links a{padding:12px}
  body.shell-topnav .search{max-width:180px}
}
/* A top navigation has more items than the catalogue content column.  Giving
   it a wider desktop rail keeps the visible search field intact; below this
   point the compact menu above takes over rather than squeezing the input
   down to an icon. */
@media(min-width:1501px){
  body.shell-topnav .site-head>.container{max-width:1600px}
}
/* The live wall keeps its search and account controls usable at intermediate
   desktop widths instead of pushing them outside the viewport. */
@media(min-width:901px) and (max-width:1500px){
  body.shell-wall .wallbar{gap:10px}
  body.shell-wall .wallbar .burger{display:grid}
  body.shell-wall .wallbar .nav-links{position:fixed;inset:64px 0 auto 0;flex-direction:column;
    background:var(--surface);border-bottom:1px solid var(--border);padding:10px;display:none;z-index:50}
  body.shell-wall.nav-open .wallbar .nav-links{display:flex}
  body.shell-wall .wallbar .nav-links a{padding:12px}
}
@media(max-width:520px){
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));--gap:12px}
  .hero-stat{flex:1}
}
/* ================= SHELLS (structurally different skeletons) ============= */
.actions{display:flex;gap:8px;align-items:center}

/* -- sidebar shell -- */
.app{display:flex;min-height:100vh;align-items:stretch}
.side{width:248px;flex:none;position:sticky;top:0;height:100vh;background:var(--surface);
  border-right:1px solid var(--border);display:flex;flex-direction:column;gap:6px;padding:16px 12px;overflow:auto}
.side-brand{padding:6px 10px 14px}
.side .nav-links{position:static;flex-direction:column;background:none;border:0;padding:0;flex:none}
.side .nav-links a{padding:11px 12px;border-radius:10px}
.side-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}
.app-main{flex:1;min-width:0;display:flex;flex-direction:column}
.app-bar{display:flex;align-items:center;gap:12px;padding:10px clamp(14px,3vw,24px);
  border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30;
  background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(10px)}
.app-bar .burger{display:none}
.app-bar .search{max-width:340px}
.app-bar-badge{margin-left:auto;color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.02em}
.app-main main{flex:1}

/* -- magazine shell -- */
/* Column width is themeable: sites set --pagew (modelsnotes runs wide, the
   archive keeps its narrow newspaper measure). */
.mag-wrap{max-width:var(--pagew,840px);margin:0 auto;padding:0 20px}
.mag-head{border-bottom:3px double var(--rule,var(--border));margin-bottom:26px;position:relative}
.mag-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.mag-date{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.14em}
.mag-top-actions{display:flex;gap:10px;align-items:center}
.mag-top-actions .search{max-width:200px}
.mag-masthead{text-align:center;padding:22px 0 2px}
.mag-masthead .brand{font-size:clamp(2.1rem,7vw,3.6rem);justify-content:center;gap:.2em}
.mag-sub{text-align:center;color:var(--muted);font-style:italic;margin:2px 0 16px}
.mag-nav{border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.mag-nav .nav-links{position:static;background:none;border:0;padding:6px 0;flex-wrap:wrap;justify-content:center;gap:2px}
.mag-head .burger{display:none;position:absolute;right:16px;top:14px}

/* -- wall shell (full-bleed) -- */
.wallbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;
  padding:12px clamp(14px,3vw,26px);border-bottom:1px solid var(--border);
  background:color-mix(in srgb,var(--bg) 66%,transparent);backdrop-filter:blur(16px)}
.wallbar .nav-links{position:static;background:none;border:0;padding:0;margin-left:6px}
.wallbar-right{margin-left:auto;display:flex;gap:10px;align-items:center}
.wallbar-right .search{max-width:200px}
.wallbar .burger{display:none}
.wallmain{padding-top:8px}
/* Only the cam wall itself runs full-bleed (body.grid-wall .sec-grid below);
   ordinary content — the model profile included — stays centred at --maxw. */

/* -- minimal shell -- */
.mini-head{border-bottom:1px solid var(--border)}
.mini-row{display:flex;align-items:center;gap:20px;height:56px}
.mini-head .nav-links{position:static;background:none;border:0;padding:0;gap:2px}
.mini-head .nav-links a{padding:6px 9px;color:var(--muted);font-size:.9rem}
.mini-head .nav-links a svg{display:none}
.mini-right{margin-left:auto;display:flex;gap:8px;align-items:center}
.mini-head .search{max-width:170px}
.mini-head .burger{display:none}

/* ================= SECTIONS ================= */
.sec-cats .cat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}
.cat-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px;
  border-radius:var(--card-radius);border:1px solid var(--border);background:var(--surface);font-weight:700;position:relative;overflow:hidden}
.cat-card svg{font-size:1.6rem}
.cat-card b{font-family:var(--font-head);font-size:1.3rem}
.cat-card:hover{border-color:var(--primary);box-shadow:var(--glow,var(--shadow))}
.cat-card.cf{color:#ff6ea9}.cat-card.cm{color:#5aa9ff}.cat-card.cc{color:#c084fc}.cat-card.cs{color:#f7b955}
.cat-card span{color:var(--text)}

.rail{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.rail-item{flex:0 0 140px;scroll-snap-align:start}
.rail-thumb{position:relative;aspect-ratio:4/3;border-radius:var(--card-radius);overflow:hidden;background:var(--surface-2);border:1px solid var(--border)}
.rail-thumb img{width:100%;height:100%;object-fit:cover}
.rail-name{display:block;margin-top:6px;font-weight:600;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.lb{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.lb-row{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--card-radius);padding:8px 14px}
.lb-rank{font-family:var(--font-head);font-weight:800;font-size:1.1rem;color:var(--primary);width:28px;text-align:center;flex:none}
.lb-ph{width:52px;height:52px;border-radius:50%;overflow:hidden;flex:none;background:var(--surface-2)}
.lb-ph img{width:100%;height:100%;object-fit:cover}
.lb-in{flex:1;min-width:0;display:flex;flex-direction:column}
.lb-in b{font-family:var(--font-head)}
.lb-in .muted{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-fol{display:flex;align-items:center;gap:6px;font-weight:700;color:var(--primary)}

.logrows{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.logrow{display:grid;grid-template-columns:1fr 1fr auto;gap:14px;padding:10px 14px;border-bottom:1px solid var(--border);font-size:.9rem}
.logrow:last-child{border-bottom:0}
.logrow:hover{background:var(--surface-2)}
.logname{font-weight:700;color:var(--text)}
.logloc,.logmeta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.statboard{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:18px 0}
.sb{background:var(--surface);border:1px solid var(--border);border-radius:var(--card-radius);padding:16px;text-align:center}
.sb b{display:block;font-family:var(--font-head);font-size:1.5rem}
.sb span{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.05em}
.sb.hot b{color:var(--primary)}

.editorial{max-width:70ch;margin:8px auto}
.editorial h2{font-size:clamp(1.5rem,3vw,2rem)}
.editorial p{color:var(--muted);font-size:1.06rem;line-height:1.8}
.editorial p::first-letter{font-family:var(--font-head);font-size:3.2em;float:left;line-height:.8;padding:6px 10px 0 0;color:var(--primary)}

.spotlight{display:grid;grid-template-columns:300px 1fr;gap:24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;padding:0}
.spot-ph{aspect-ratio:4/3}
.spot-ph img{width:100%;height:100%;object-fit:cover}
.spot-in{padding:24px;display:flex;flex-direction:column;gap:10px;justify-content:center}
.spot-in h2{font-size:clamp(1.6rem,3vw,2.4rem);margin:0}

.trust{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:18px 0}
.trust-i{background:var(--surface);border:1px solid var(--border);border-radius:var(--card-radius);padding:20px;display:flex;flex-direction:column;gap:8px}
.trust-i svg{font-size:1.8rem;color:var(--primary)}
.trust-i b{font-family:var(--font-head);font-size:1.1rem}

.favprompt{display:flex;gap:18px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;color:var(--primary)}
.favprompt h2{margin:0 0 4px}

/* ================= GRID STYLE VARIANTS ================= */
body.grid-masonry .grid{display:block;columns:220px;column-gap:var(--gap)}
body.grid-masonry .card{break-inside:avoid;margin-bottom:var(--gap);width:100%}
body.grid-masonry .thumb{aspect-ratio:auto}
body.grid-masonry .thumb img{height:auto}
body.grid-feed .grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}
body.grid-compact .grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));--gap:10px}
body.grid-wall .sec-grid{max-width:none;padding:0}
body.grid-wall .grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px}
body.grid-wall .card{border-radius:0;border-width:0 1px 1px 0}
body.grid-rows .grid{display:flex;flex-direction:column;gap:8px}
body.grid-rows .card{flex-direction:row;align-items:center}
body.grid-rows .thumb{width:120px;aspect-ratio:4/3;flex:none;border-radius:var(--card-radius) 0 0 var(--card-radius)}
body.grid-rows .card-body{flex-direction:row;align-items:center;justify-content:space-between;flex:1;gap:14px;flex-wrap:wrap}
body.grid-rows .card-note{display:none}

/* ================= SHELL RESPONSIVE ================= */
@media(max-width:900px){
  .side{position:fixed;left:0;top:0;bottom:0;z-index:60;transform:translateX(-100%);transition:transform .2s;width:260px}
  body.nav-open .side{transform:none}
  .app-bar .burger{display:grid}
  /* Keep the trigger above an opened sidebar.  Without this, the sidebar's
     z-index covers the only close control and a touch user has to navigate
     away just to dismiss the menu. */
  body.nav-open .app-bar{z-index:61}
  .wallbar .burger,.mini-head .burger,.mag-head .burger{display:grid}
  .wallbar .nav-links,.mini-head .nav-links,.mag-nav .nav-links{position:fixed;inset:56px 0 auto 0;flex-direction:column;
    background:var(--surface);border-bottom:1px solid var(--border);padding:10px;display:none;z-index:50}
  body.nav-open .wallbar .nav-links,body.nav-open .mini-head .nav-links,body.nav-open .mag-nav .nav-links{display:flex}
  .mini-head .nav-links a svg{display:inline}
  .sec-cats .cat-cards{grid-template-columns:repeat(2,1fr)}
  .statboard{grid-template-columns:repeat(3,1fr)}
  .spotlight{grid-template-columns:1fr}
  .spot-ph{max-height:340px}
  .trust{grid-template-columns:1fr}
  .logrow{grid-template-columns:1fr auto}
  .logloc{display:none}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== CBDMCA image banner (the original responsive creative) ===== */
/* The banner remains responsive even when a browser uses a sub-1280px desktop viewport. */
.cbdmca-banner{margin:34px 0 0}.cbdmca-banner-link,.cbdmca-banner picture{display:block;max-width:100%}.cbdmca-banner picture{aspect-ratio:6.5;background:var(--surface)}
.cbdmca-banner img{display:block;width:100%;max-width:100%;height:100%;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--glow);transition:transform .2s ease,filter .2s ease}

/* One-time adult entry check: active site colours, no catalogue imagery. */
.age-gate-page{
  min-height:100vh;min-height:100svh;margin:0;color:var(--text);
  background:var(--bg);
  background:
    radial-gradient(circle at 18% 8%,color-mix(in srgb,var(--primary) 24%,transparent),transparent 36rem),
    radial-gradient(circle at 88% 92%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 30rem),
    var(--bg);
}
.age-gate-shell{
  min-height:100vh;min-height:100svh;display:grid;place-items:center;
  padding:max(24px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right))
    max(24px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));
}
.age-gate-card{
  width:min(100%,560px);padding:clamp(24px,5vw,48px);
  border:1px solid var(--border);border-radius:calc(var(--radius) * 1.35);
  background:color-mix(in srgb,var(--surface) 94%,transparent);
  box-shadow:0 28px 90px rgba(0,0,0,.28);backdrop-filter:blur(18px);
}
.age-gate-brand{
  display:inline-flex;align-items:center;gap:10px;margin-bottom:30px;
  color:var(--text);font-weight:800;text-decoration:none;letter-spacing:-.02em;
}
.age-gate-mark{
  width:72px;height:72px;display:grid;place-items:center;margin-bottom:22px;
  border-radius:50%;background:var(--primary);color:var(--on-primary,#fff);
  font-size:1.35rem;font-weight:900;
  box-shadow:0 12px 32px color-mix(in srgb,var(--primary) 35%,transparent);
}
.age-gate-card h1{margin:.3rem 0 .8rem;font-size:clamp(2rem,6vw,3.25rem);line-height:1.02}
.age-gate-lead{margin:0 0 24px;color:var(--muted);font-size:1.05rem;line-height:1.65}
.age-gate-form{display:grid;gap:18px}
.age-gate-confirm{
  display:flex;align-items:flex-start;gap:12px;padding:15px 16px;
  border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2,var(--surface));
  font-weight:650;line-height:1.45;cursor:pointer;
}
.age-gate-confirm input{width:20px;height:20px;flex:0 0 auto;margin-top:1px;accent-color:var(--primary)}
.age-gate-form .cf-turnstile{min-height:65px;max-width:100%;overflow:hidden}
.age-gate-submit{width:100%;justify-content:center;min-height:50px;font-size:1rem}
.age-gate-note{margin:22px 0 0;color:var(--muted);font-size:.82rem;line-height:1.55}
@media(max-width:520px){
  .age-gate-shell{align-items:end;padding-left:12px;padding-right:12px}
  .age-gate-card{padding:24px 20px;border-radius:calc(var(--radius) * 1.1)}
  .age-gate-brand{margin-bottom:22px}.age-gate-mark{width:62px;height:62px}
}
.cbdmca-banner-link:hover img{transform:translateY(-2px);filter:brightness(1.04)}
@media(max-width:1023px){.cbdmca-banner picture{aspect-ratio:2.56}}
@media(max-width:599px){.cbdmca-banner picture{aspect-ratio:1}}

/* ===== Live-room stage ===== */
.live-stage{margin:26px 0 34px;padding:clamp(14px,2.4vw,24px);border:1px solid color-mix(in srgb,var(--primary) 45%,var(--border));
  border-radius:var(--radius);background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 12%,var(--surface)),var(--surface));box-shadow:var(--glow)}
.live-stage-top,.live-stage-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.live-stage .kick{display:flex;align-items:center;gap:7px;color:var(--primary);font-size:.75rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.live-stage h2{margin:5px 0 0;font-size:clamp(1.2rem,2.4vw,1.8rem)}
.live-audience{padding:8px 11px;border-radius:999px;background:color-mix(in srgb,var(--primary) 16%,var(--surface-2));color:var(--text);font-weight:800;font-size:.88rem}
.live-topic{margin:16px 0;padding:11px 13px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--surface-2) 74%,transparent);border-radius:0 9px 9px 0;line-height:1.55;overflow-wrap:anywhere}
.live-stage .video-wrap{margin:14px 0;border-color:color-mix(in srgb,var(--primary) 52%,var(--border));background:#07070a;box-shadow:0 20px 44px rgba(0,0,0,.28)}
.live-stage-foot{color:var(--muted);font-size:.8rem}.live-stage-foot a{color:var(--primary);font-weight:800;white-space:nowrap}
.site-dmcatalog .live-stage{border-radius:12px;background:linear-gradient(110deg,color-mix(in srgb,var(--primary) 13%,var(--surface)),var(--surface) 56%)}
.site-chaturlog .live-stage{border-radius:8px;box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 18%,transparent)}
.site-modelsarchive .live-stage{border-radius:4px;box-shadow:none}.site-modelsarchive .live-stage .video-wrap{box-shadow:none}
.site-mycamslist .live-stage{border-radius:22px}
@media(max-width:640px){.live-stage{padding:14px}.live-stage-top{align-items:flex-start;flex-direction:column}.live-stage-foot{align-items:flex-start;flex-direction:column}}

/* ===== Public audience ranking ===== */
.ranking-page{padding-top:clamp(26px,5vw,56px);padding-bottom:48px}.ranking-page h1{font-size:clamp(2rem,4vw,3.4rem);margin:.3rem 0}.ranking-page .lead{max-width:70ch;color:var(--muted);line-height:1.7}
.rank-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0 10px}.rank-tabs a{padding:9px 13px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-weight:800}.rank-tabs a.active,.rank-tabs a:hover{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
.ranking-list{list-style:none;margin:22px 0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.ranking-row{display:grid;grid-template-columns:54px 48px 1fr auto;align-items:center;gap:13px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border)}.ranking-row:last-child{border-bottom:0}.ranking-row:hover{background:var(--surface-2)}
.ranking-place{font-family:var(--font-head);font-weight:900;font-size:1.05rem;color:var(--primary)}.ranking-photo{width:48px;height:48px;overflow:hidden;border-radius:50%;background:var(--surface-2)}.ranking-photo img{width:100%;height:100%;object-fit:cover}.ranking-name{display:grid;gap:3px;min-width:0}.ranking-name a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-name span{color:var(--muted);font-size:.8rem}.ranking-score{color:var(--primary);font-variant-numeric:tabular-nums}
.site-modelsarchive .ranking-list{border-radius:4px}.site-chaturlog .ranking-row{border-radius:0}.site-modelsonlive .ranking-page{max-width:1240px;margin:0 auto}.site-modelsonlive .ranking-score{text-shadow:var(--neon,none)}
@media(max-width:520px){.ranking-row{grid-template-columns:38px 42px 1fr;gap:9px;padding:9px}.ranking-photo{width:42px;height:42px}.ranking-score{grid-column:3;grid-row:2;font-size:.84rem}.ranking-name{grid-row:1 / span 2}.ranking-place{font-size:.9rem}}

/* ===== Account / model workspace ===== */
.account-wrap{width:min(100% - 28px,620px);margin:clamp(28px,6vw,72px) auto}
.account-wide{width:min(100% - 28px,960px)}
.account-wrap .kick{display:inline-block;color:var(--primary);font-weight:800;text-transform:uppercase;
  letter-spacing:.12em;font-size:.72rem;margin-bottom:8px}
.account-card,.account-panel{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:clamp(18px,4vw,30px);margin:20px 0}
.account-card p,.account-card label{display:grid;gap:7px;color:var(--muted);font-weight:600}
.account-card input,.account-card textarea{width:100%;border:1px solid var(--border);
  border-radius:10px;background:var(--surface-2);color:var(--text);font:inherit;padding:11px 13px}
.account-card .helptext,.account-card ul{color:var(--muted);font-size:.78rem}
.account-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.saved-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.saved-list a{display:flex;flex-direction:column;padding:13px;border:1px solid var(--border);
  border-radius:10px;background:var(--surface-2)}
.saved-list a:hover{border-color:var(--primary)}
.saved-list span{color:var(--muted);font-size:.8rem}
.saved-item{display:grid;gap:7px;padding:11px;border:1px solid var(--border);border-radius:10px}
.saved-item>a:first-child{padding:0;border:0}
.saved-item p{margin:0;color:var(--muted);font-size:.86rem;white-space:pre-wrap}
.saved-item .mini-link{display:inline;padding:0;border:0;color:var(--primary);font-size:.78rem}
.checkline{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:9px!important}
.checkline input{width:auto!important;margin-top:.2em}
.account-buttons{display:flex;gap:10px;flex-wrap:wrap}
.live-panel{box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 45%,transparent),var(--glow)}
.form-message{padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:9px}
.verified-chip{color:var(--primary);border-color:color-mix(in srgb,var(--primary) 55%,var(--border))}
.verified-statement{margin:24px 0;padding:18px 20px;background:var(--surface);
  border:1px solid color-mix(in srgb,var(--primary) 45%,var(--border));border-radius:var(--card-radius)}
.verified-statement .kick{display:flex;align-items:center;gap:7px;color:var(--primary);font-weight:800}
.verified-statement p{white-space:pre-wrap;line-height:1.65}
.verified-schedule{padding:12px 14px;background:var(--surface-2);border-left:3px solid var(--primary)}
.editorial-note,.profile-discussion{margin:28px 0;padding:clamp(18px,3vw,28px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.editorial-note{border-left:3px solid var(--primary)}
.editorial-note h2,.profile-discussion h2{margin:.22rem 0 .55rem;font-size:clamp(1.25rem,2.3vw,1.7rem)}
.editorial-note>p:not(.editorial-note-source){max-width:74ch;line-height:1.65;color:var(--text)}
.editorial-note-source{font-size:.8rem;line-height:1.5;margin:14px 0 0}
.discussion-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,38%);align-items:end;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.discussion-heading>p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.55}
.discussion-posts{display:grid;gap:10px;list-style:none;margin:16px 0;padding:0}
.discussion-posts li{padding:14px 15px;background:var(--surface-2);border:1px solid var(--border);border-radius:calc(var(--radius) * .7)}
.discussion-posts header{display:flex;justify-content:space-between;gap:12px;align-items:baseline;font-size:.86rem}.discussion-posts time{color:var(--muted);font-size:.78rem;white-space:nowrap}
.discussion-posts p{margin:8px 0 0;line-height:1.6;overflow-wrap:anywhere}.discussion-empty{margin:18px 0;line-height:1.55}
.discussion-form{max-width:720px;border-top:1px solid var(--border);padding-top:18px}.discussion-form .cf-turnstile{min-height:65px}.discussion-login{margin:18px 0 0}.profile-discussion .form-message{max-width:720px}
@media(max-width:620px){.discussion-heading{grid-template-columns:1fr;gap:6px;align-items:start}.discussion-posts header{align-items:flex-start;flex-direction:column;gap:3px}.discussion-posts time{white-space:normal}}
.compact-form{margin:16px 0 0;padding:0;border:0;background:transparent}.compact-form label{display:grid;gap:6px;color:var(--muted);font-weight:600}.compact-form input{border:1px solid var(--border);border-radius:10px;background:var(--surface-2);color:var(--text);font:inherit;padding:9px 11px}.time-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0}.calendar-list{margin-top:14px}
.activity-panel{margin:28px 0;padding:clamp(16px,3vw,26px);min-width:0;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.activity-summary{margin:2px 0 15px;color:var(--muted);line-height:1.55}.activity-heatmap{width:100%;min-width:0;overflow-x:auto;padding-bottom:4px}
/* Двадцать четыре часа в строке не помещаются в телефон, а панель
   вокруг обрезала их по краю: половина суток была не просто не
   видна, а недостижима. Теперь карта прокручивается вбок внутри
   своей рамки, а страница по горизонтали не едет. */
.activity-heatmap{overflow-x:auto;overflow-y:hidden;max-width:100%;
  padding-bottom:6px}
.heat-hours,.heat-row{display:grid;grid-template-columns:40px repeat(24,minmax(16px,1fr));gap:3px;align-items:center;min-width:630px}.heat-hours{margin:0 0 4px;color:var(--muted);font-size:.62rem;text-align:center}.heat-row{margin:3px 0}.heat-row>b{font-size:.72rem;color:var(--muted);font-weight:700}.heat-row span{display:block;min-height:17px;border-radius:3px;background:color-mix(in srgb,var(--surface-2) 88%,transparent)}
.heat-row .heat-1{background:color-mix(in srgb,var(--primary) 22%,var(--surface-2))}.heat-row .heat-2{background:color-mix(in srgb,var(--primary) 42%,var(--surface-2))}.heat-row .heat-3{background:color-mix(in srgb,var(--primary) 67%,var(--surface-2))}.heat-row .heat-4{background:var(--primary);box-shadow:0 0 8px color-mix(in srgb,var(--primary) 45%,transparent)}
.compare-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:22px 0}.compare-form label{display:grid;gap:6px;min-width:min(100%,390px);color:var(--muted);font-weight:700}.compare-form input{padding:11px 13px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;font:inherit}.compare-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.compare-card{padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.compare-card h2{font-size:1.25rem;margin:0 0 14px}.compare-card dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:9px 14px}.compare-card dt{color:var(--muted);font-size:.82rem}.compare-card dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}

@media(max-width:640px){
  .account-heading{align-items:flex-start;flex-direction:column}
  .app-bar-badge{display:none}
  .mag-top-actions .search{max-width:160px}
}
@media(max-width:520px){
  .nav,.mini-row,.wallbar{gap:8px;min-width:0}
  .nav .brand,.mini-row .brand,.wallbar .brand{font-size:1.05rem;min-width:0}
  .nav .search{display:none}
  .nav .search input{min-width:0}
  .nav-cta{margin-left:0}
  .mini-right,.wallbar-right{gap:4px;min-width:0}
  .mini-head .search{width:44px;min-width:44px;padding-left:4px}
  .wallbar-right .search{display:none}
  .mini-head .search input,.wallbar-right .search input{display:none}
}

/* ================= modelsnotes: wide modern profile ================= */
/* Scoped restyle only — markup stays shared. Wide 1200px column, editorial
   hero card with soft gradient blobs, ringed portrait, glassy stat pills. */
.site-modelsnotes .mp-head{
  grid-template-columns:minmax(280px,360px) 1fr;gap:clamp(22px,3.5vw,44px);
  margin:26px 0 34px;padding:clamp(20px,3.5vw,36px);
  border:1px solid color-mix(in srgb,var(--primary) 22%,var(--border));
  border-radius:26px;position:relative;overflow:hidden;
  background:
    radial-gradient(130% 150% at 0% 0%,color-mix(in srgb,var(--primary) 17%,transparent),transparent 55%),
    radial-gradient(130% 150% at 100% 8%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 58%),
    var(--surface);
  box-shadow:0 30px 70px rgba(0,0,0,.35)}
.site-modelsnotes .mp-photo{
  border-radius:20px;border:0;aspect-ratio:4/3;
  box-shadow:0 22px 50px rgba(0,0,0,.5),0 0 0 1px color-mix(in srgb,var(--primary) 40%,transparent),
    0 0 0 6px color-mix(in srgb,var(--primary) 12%,transparent)}
.site-modelsnotes .mp-head h1{
  font-size:clamp(2rem,3.6vw,3.1rem);letter-spacing:-.03em;margin-bottom:.25em}
.site-modelsnotes .mp-head .btn-primary{
  border-radius:14px;padding:14px 22px;font-size:1.02rem;
  box-shadow:0 14px 34px color-mix(in srgb,var(--primary) 35%,transparent)}
.site-modelsnotes .stat-row{grid-template-columns:repeat(3,minmax(110px,1fr));gap:14px}
.site-modelsnotes .stat{
  border:0;border-radius:18px;padding:16px 12px;
  background:color-mix(in srgb,var(--surface-2) 74%,transparent);
  backdrop-filter:blur(8px);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 16%,transparent)}
.site-modelsnotes .stat b{font-size:1.55rem;
  background:linear-gradient(120deg,var(--text),color-mix(in srgb,var(--primary) 70%,var(--text)));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.site-modelsnotes .info{
  border-radius:14px;border-color:color-mix(in srgb,var(--border) 70%,transparent);
  background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
.site-modelsnotes .section-title{
  margin:38px 0 16px;padding-left:14px;position:relative}
.site-modelsnotes .section-title:before{
  content:"";position:absolute;left:0;top:.18em;bottom:.18em;width:4px;border-radius:4px;
  background:linear-gradient(180deg,var(--primary),var(--accent))}
.site-modelsnotes .video-wrap{
  border-radius:22px;border:0;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 35%,transparent),
    0 26px 60px rgba(0,0,0,.45)}
.site-modelsnotes .seo-block{
  border-radius:22px;
  border-color:color-mix(in srgb,var(--primary) 16%,var(--border));
  background:linear-gradient(160deg,var(--surface),color-mix(in srgb,var(--surface-2) 82%,var(--primary) 5%))}
.site-modelsnotes .gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.site-modelsnotes .gallery a{border-radius:16px;transition:transform .18s}
.site-modelsnotes .gallery a:hover{transform:translateY(-4px) scale(1.02)}
.site-modelsnotes .tagcloud a{
  background:color-mix(in srgb,var(--surface-2) 80%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 14%,transparent)}
.site-modelsnotes .growth-panel,.site-modelsnotes .forecast-panel,
.site-modelsnotes .year-calendar{border-radius:22px}
@media(max-width:900px){
  .site-modelsnotes .mp-head{grid-template-columns:1fr;padding:18px}
  .site-modelsnotes .mp-photo{max-width:340px;margin:0 auto}
  .site-modelsnotes .stat-row{grid-template-columns:repeat(3,1fr);gap:10px}
}

/* ================= modelsonlive: neon stage profile ================= */
/* Centred 1240px; the live player is the stage, everything else is the
   control deck underneath. Identity: night club neon (pink/cyan). */
.site-modelsonlive main{
  background:
    radial-gradient(60% 40% at 50% 0%,color-mix(in srgb,var(--primary) 10%,transparent),transparent 70%),
    none}
.site-modelsonlive .video-wrap{
  margin:22px 0 30px;border:0;border-radius:20px;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent),
    0 0 70px color-mix(in srgb,var(--primary) 35%,transparent),
    0 30px 70px rgba(0,0,0,.55)}
.site-modelsonlive .mp-head{
  grid-template-columns:230px 1fr;gap:clamp(18px,3vw,34px);
  margin:8px 0 30px;padding:clamp(16px,2.6vw,26px);
  border-radius:20px;position:relative;overflow:hidden;
  background:linear-gradient(135deg,color-mix(in srgb,var(--surface) 92%,var(--primary) 8%),var(--surface) 55%);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}
.site-modelsonlive .mp-head:after{
  content:"";position:absolute;inset:auto -20% -70% auto;width:60%;height:120%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 25%,transparent),transparent 65%);
  pointer-events:none}
.site-modelsonlive .mp-photo{
  aspect-ratio:1;border-radius:18px;border:0;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 60%,transparent),
    0 0 30px color-mix(in srgb,var(--primary) 45%,transparent)}
.site-modelsonlive .mp-head h1{
  text-transform:uppercase;font-size:clamp(1.5rem,3vw,2.3rem);
  text-shadow:0 0 24px color-mix(in srgb,var(--primary) 55%,transparent)}
.site-modelsonlive .stat-row{grid-template-columns:repeat(3,minmax(100px,220px));gap:12px}
.site-modelsonlive .stat{
  border:0;border-radius:14px;background:color-mix(in srgb,var(--surface-2) 80%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 26%,transparent)}
.site-modelsonlive .stat b{color:var(--accent);text-shadow:var(--neon,none);font-size:1.4rem}
.site-modelsonlive .info{
  border-radius:12px;border:0;
  background:color-mix(in srgb,var(--surface-2) 62%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 80%,transparent)}
.site-modelsonlive .info-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));max-width:1000px}
.site-modelsonlive .section-title{
  text-transform:uppercase;letter-spacing:.12em;font-size:.95rem;margin:34px 0 14px;
  display:flex;align-items:center;gap:10px}
.site-modelsonlive .section-title:after{
  content:"";flex:1;height:1px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 50%,transparent),transparent)}
.site-modelsonlive .mp-head .btn-primary{
  border-radius:12px;text-transform:uppercase;letter-spacing:.06em;font-size:.92rem;
  box-shadow:0 0 26px color-mix(in srgb,var(--primary) 50%,transparent)}
.site-modelsonlive .seo-block{
  border-radius:18px;border-color:color-mix(in srgb,var(--accent) 18%,var(--border))}
.site-modelsonlive .forecast-panel,.site-modelsonlive .growth-panel,
.site-modelsonlive .year-calendar{border-radius:18px}
@media(max-width:820px){
  .site-modelsonlive .mp-head{grid-template-columns:minmax(0,1fr)}
  .site-modelsonlive .mp-photo{max-width:250px;margin:0 auto}
  .site-modelsonlive .stat-row{grid-template-columns:repeat(3,1fr)}
}

/* ===== Per-site identities (generated per site, scoped) ===== */
/* camgirlscatalog — glossy flagship catalog: warm pink→amber wash, glass cards, generous rhythm.
   SiteProfile scheme is "dark" (bg #120810, surface #1d1018), so the dark surfaces below match.
   Every selector is scoped to .site-camgirlscatalog (the body class from shells/_root.html).
   --ink-bright is the ink for bright pink/amber fills: --primary-ink is #ffffff and white on
   the accent #ffb03a is only ~1.8:1, so any gradient reaching the accent needs dark ink. */
.site-camgirlscatalog{--ink-bright:#180a12}

/* Rhythm: the flagship breathes more than the rest of the network. */
.site-camgirlscatalog main>section{margin-bottom:clamp(24px,4vw,48px)}
.site-camgirlscatalog .grid{gap:clamp(12px,2vw,24px)}
.site-camgirlscatalog .site-head{box-shadow:0 1px 0 color-mix(in srgb,var(--primary) 16%,transparent),0 10px 30px rgba(0,0,0,.25)}
.site-camgirlscatalog .nav-links a.active,.site-camgirlscatalog .chip.active,
.site-camgirlscatalog .pager .cur,.site-camgirlscatalog .rank-tabs a.active{
  background:linear-gradient(120deg,var(--primary),var(--accent));color:var(--ink-bright);box-shadow:var(--glow)}

/* Hero: a warm gradient wash — pink at the top left, amber off to the right. */
.site-camgirlscatalog .hero{padding-bottom:clamp(24px,4vw,44px);margin-bottom:clamp(12px,2.4vw,26px);
  border-bottom:1px solid color-mix(in srgb,var(--primary) 18%,transparent);
  background:radial-gradient(120% 150% at 6% -10%,color-mix(in srgb,var(--primary) 26%,transparent),transparent 58%),
    radial-gradient(110% 130% at 94% 6%,color-mix(in srgb,var(--accent) 19%,transparent),transparent 62%),
    linear-gradient(180deg,color-mix(in srgb,var(--surface) 62%,transparent),transparent 86%)}
/* Solid `color` is kept as the fallback so the title can never render invisible. */
.site-camgirlscatalog .hero h1{font-size:clamp(1.9rem,4.4vw,3.1rem);letter-spacing:-.02em;color:var(--text);
  background:linear-gradient(104deg,var(--text) 18%,color-mix(in srgb,var(--primary) 78%,var(--text)) 62%,var(--accent));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.site-camgirlscatalog .hero .kick{color:color-mix(in srgb,var(--primary) 55%,var(--text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 34%,transparent);
  background:linear-gradient(120deg,color-mix(in srgb,var(--primary) 22%,transparent),color-mix(in srgb,var(--accent) 16%,transparent))}
.site-camgirlscatalog .hero-stat{border-radius:999px;padding:12px 22px;background:color-mix(in srgb,var(--surface-2) 78%,transparent);border-color:color-mix(in srgb,var(--primary) 20%,var(--border))}
.site-camgirlscatalog .hero-stat b{color:var(--accent);font-size:1.35rem}

/* Section headings sit on a hairline rule with a lit icon. */
.site-camgirlscatalog .section-title{margin:clamp(30px,4.6vw,50px) 0 18px;padding-bottom:12px;border-bottom:1px solid color-mix(in srgb,var(--primary) 20%,var(--border))}
.site-camgirlscatalog .section-title svg{color:var(--primary);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--primary) 55%,transparent))}

/* Glass cards with a top sheen and a rich, warm lift on hover. */
.site-camgirlscatalog .card,.site-camgirlscatalog .cat-card,.site-camgirlscatalog .country-card{
  border-color:color-mix(in srgb,var(--primary) 15%,var(--border));
  background:linear-gradient(168deg,color-mix(in srgb,var(--surface-2) 88%,transparent),var(--surface) 64%);
  box-shadow:inset 0 1px 0 color-mix(in srgb,#ffffff 8%,transparent),0 8px 24px rgba(0,0,0,.26)}
.site-camgirlscatalog .card:hover,.site-camgirlscatalog .cat-card:hover,.site-camgirlscatalog .country-card:hover{
  transform:translateY(-6px);border-color:color-mix(in srgb,var(--accent) 52%,transparent);
  box-shadow:var(--glow),0 26px 52px rgba(0,0,0,.44),inset 0 1px 0 color-mix(in srgb,#ffffff 14%,transparent)}
.site-camgirlscatalog .card:hover .thumb img{transform:scale(1.08)}
.site-camgirlscatalog .card-body{padding:14px 16px 18px;gap:8px}
.site-camgirlscatalog .card-name b{font-size:1.08rem;letter-spacing:-.01em}
.site-camgirlscatalog .gtag{border-radius:999px;padding:3px 9px;background:color-mix(in srgb,var(--surface-2) 82%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 20%,transparent)}
.site-camgirlscatalog .followers{color:var(--ink-bright);background:linear-gradient(120deg,var(--primary),var(--accent))}
.site-camgirlscatalog .country-grid,.site-camgirlscatalog .facts-grid,.site-camgirlscatalog .day-stats{gap:14px}
.site-camgirlscatalog .country-card span{color:var(--accent)}

/* Listing copy reads as a pull quote against a warm rule. */
.site-camgirlscatalog .listing-copy{margin:22px auto 8px;padding-left:20px;border-left:3px solid color-mix(in srgb,var(--primary) 70%,var(--accent))}
.site-camgirlscatalog .listing-copy p:first-child{font-size:clamp(1.04rem,1.6vw,1.22rem);line-height:1.65}

/* Facts panel: a glossy showcase slab, not a table. */
.site-camgirlscatalog .facts-panel{padding:clamp(20px,3vw,34px);margin:24px auto 36px;box-shadow:0 20px 46px rgba(0,0,0,.3);
  border-color:color-mix(in srgb,var(--primary) 20%,var(--border));
  background:radial-gradient(120% 170% at 100% 0%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 58%),
    linear-gradient(160deg,color-mix(in srgb,var(--surface-2) 78%,transparent),var(--surface))}
.site-camgirlscatalog .fact{border:0;border-radius:14px;padding:16px 18px;background:color-mix(in srgb,var(--bg) 52%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 17%,transparent)}
.site-camgirlscatalog .fact b,.site-camgirlscatalog .stat b{font-size:1.5rem;color:var(--accent)}
.site-camgirlscatalog .facts-label{color:color-mix(in srgb,var(--primary) 62%,var(--text))}

/* Stats, buttons, chips and tags all share the same lacquered finish. */
.site-camgirlscatalog .stat,.site-camgirlscatalog .chip{border-color:color-mix(in srgb,var(--primary) 17%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 90%,transparent),var(--surface))}
.site-camgirlscatalog .btn{border-radius:14px;padding:13px 22px}
.site-camgirlscatalog .btn-primary{box-shadow:var(--glow);color:var(--ink-bright);background:linear-gradient(120deg,var(--primary),color-mix(in srgb,var(--accent) 55%,var(--primary)))}
.site-camgirlscatalog .tagcloud a{background:color-mix(in srgb,var(--surface-2) 84%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 18%,transparent)}
.site-camgirlscatalog .tagcloud a:hover{color:var(--ink-bright);background:linear-gradient(120deg,var(--primary),var(--accent))}
.site-camgirlscatalog .seo-block,.site-camgirlscatalog .faq details{border-color:color-mix(in srgb,var(--primary) 15%,var(--border));
  background:linear-gradient(160deg,color-mix(in srgb,var(--surface-2) 70%,transparent),var(--surface))}
.site-camgirlscatalog .seo-block{padding:clamp(22px,3.4vw,38px);margin:clamp(28px,4vw,46px) auto}

/* Profile + capture pages: framed portrait, filmstrip in lacquered mounts.
   minmax(0,1fr) so the wide charts and tables in the right column cannot push the page. */
.site-camgirlscatalog .mp-head{grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:clamp(22px,3.8vw,46px);margin:26px 0 36px}
.site-camgirlscatalog .mp-photo{border:0;border-radius:22px;box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 42%,transparent),0 0 0 7px color-mix(in srgb,var(--primary) 9%,transparent),0 26px 58px rgba(0,0,0,.5)}
.site-camgirlscatalog .mp-head h1{font-size:clamp(1.9rem,3.4vw,2.9rem);letter-spacing:-.02em;overflow-wrap:anywhere}
.site-camgirlscatalog .info{border-radius:14px;background:color-mix(in srgb,var(--surface-2) 66%,transparent)}
.site-camgirlscatalog .video-wrap,.site-camgirlscatalog .gallery a{border-radius:18px}
/* .photo-strip keeps the base overflow-x:auto — the filmstrip scrolls inside its own box. */
.site-camgirlscatalog .photo-strip{gap:14px;padding:6px 0 16px}
.site-camgirlscatalog .photo-strip a{padding:6px;box-shadow:0 8px 20px rgba(0,0,0,.28);background:linear-gradient(168deg,var(--surface-2),var(--surface))}
.site-camgirlscatalog .photo-strip a.current{border-color:transparent;box-shadow:0 0 0 2px var(--primary),var(--glow)}

@media(max-width:900px){.site-camgirlscatalog .mp-head{grid-template-columns:minmax(0,1fr)}
  .site-camgirlscatalog .mp-photo{max-width:330px;margin:0 auto}}
@media(max-width:520px){.site-camgirlscatalog .hero-stat{padding:10px 16px;flex:1}
  .site-camgirlscatalog .listing-copy{padding-left:14px}}

/* dmcatalog — the scoreboard: tabular figures, ranked rows, gold for position.
   scheme:dark (bg #0b0d12, gold #f5c451 on ink #1a1408, teal #5ad1c7). */

/* One numeric voice, wherever a number appears. */
.site-dmcatalog .hero-stat b,.site-dmcatalog .sb b,.site-dmcatalog .stat b,.site-dmcatalog .fact b,
.site-dmcatalog .lb-rank,.site-dmcatalog .lb-fol,.site-dmcatalog .followers,.site-dmcatalog .gtag,
.site-dmcatalog .ranking-place,.site-dmcatalog .ranking-score,.site-dmcatalog .country-card span,
.site-dmcatalog .info .val,.site-dmcatalog .forecast-prob b,.site-dmcatalog .signal-badge,
.site-dmcatalog .pager a,.site-dmcatalog .pager span,.site-dmcatalog .photo-strip span{
  font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1;letter-spacing:-.01em}
/* Anything labelling a figure reads as a column header. */
.site-dmcatalog .hero-stat span,.site-dmcatalog .sb span,.site-dmcatalog .stat span,
.site-dmcatalog .fact span,.site-dmcatalog .info .lbl,.site-dmcatalog .facts-label{
  text-transform:uppercase;letter-spacing:.12em;font-size:.69rem;font-weight:800;color:var(--muted)}
.site-dmcatalog .section-title{text-transform:uppercase;letter-spacing:.1em;font-size:.92rem;
  padding-bottom:10px;border-bottom:1px solid var(--border);margin:32px 0 14px}

/* Every block of figures is one ruled panel — the 1px gaps are the rules. */
.site-dmcatalog .hero-stats,.site-dmcatalog .statboard,.site-dmcatalog .stat-row,
.site-dmcatalog .day-stats,.site-dmcatalog .growth-stats,.site-dmcatalog .facts-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:1px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.site-dmcatalog .hero-stat,.site-dmcatalog .sb,.site-dmcatalog .stat,.site-dmcatalog .fact{
  min-width:0;border:0;border-radius:0;background:var(--surface);padding:14px 15px;text-align:left;
  box-shadow:0 0 0 1px var(--border)}
.site-dmcatalog .hero-stat b,.site-dmcatalog .sb b,.site-dmcatalog .stat b,.site-dmcatalog .fact b{
  font-size:clamp(1.3rem,2.3vw,1.72rem);line-height:1.1;margin-bottom:4px;overflow-wrap:anywhere}
.site-dmcatalog .hero-stats{margin-top:24px}
.site-dmcatalog .stat-row{grid-template-columns:repeat(auto-fit,minmax(104px,1fr))}
/* Flex child beside the sparkline — indefinite space, so auto-fit collapses to one column. */
.site-dmcatalog .growth-stats{grid-template-columns:repeat(2,minmax(104px,1fr))}

/* Gold is position, teal is movement. Nothing else gets an accent. */
.site-dmcatalog .ranking-score,.site-dmcatalog .lb-fol,
.site-dmcatalog .growth-stats .stat b{color:var(--accent)}
.site-dmcatalog .signal-badge{border-radius:7px}
.site-dmcatalog .signal-badge.up{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--border));
  background:color-mix(in srgb,var(--accent) 12%,transparent)}
.site-dmcatalog .signal-badge.steady{color:var(--muted);background:transparent}

/* Leaderboard: a table of standings, medals for the top three. */
.site-dmcatalog .lb{gap:0;border:1px solid var(--border);border-radius:var(--radius);
  background:var(--surface);overflow:hidden}
.site-dmcatalog .lb-row{border:0;border-radius:0;border-top:1px solid var(--border);padding:9px 16px 9px 10px;gap:12px}
.site-dmcatalog .lb-row:first-child{border-top:0}
.site-dmcatalog .lb-row:hover{background:var(--surface-2)}
.site-dmcatalog .lb-rank{width:34px;padding:4px 0;border-radius:7px;font-size:1.06rem;color:var(--muted)}
.site-dmcatalog .lb-row:nth-child(-n+3) .lb-rank{background:var(--primary);color:var(--primary-ink)}
.site-dmcatalog .lb-ph{width:46px;height:46px;border-radius:9px}
.site-dmcatalog .ranking-row:nth-child(-n+3) .ranking-place{background:var(--primary);color:var(--primary-ink);
  border-radius:7px;padding:4px 0;text-align:center}

/* Cards are entries in the table: they highlight, they do not lift. */
.site-dmcatalog .card:hover{transform:none;box-shadow:none;background:var(--surface-2);
  border-color:color-mix(in srgb,var(--primary) 45%,var(--border))}
.site-dmcatalog .card:hover .thumb img{transform:none}
.site-dmcatalog .card-body{padding:10px 13px 13px}
.site-dmcatalog .followers{border-radius:8px;background:rgba(0,0,0,.62);color:var(--primary)}
.site-dmcatalog .chip{border-radius:8px;text-transform:uppercase;letter-spacing:.07em;font-size:.74rem}
.site-dmcatalog .chip.active{background:var(--surface-2);color:var(--text);border-color:var(--border);
  box-shadow:inset 0 -2px 0 var(--primary)}
.site-dmcatalog .pager a,.site-dmcatalog .pager span{border-radius:8px}

/* Sidebar: a standings menu, marked with a position bar. */
.site-dmcatalog .side{background:var(--bg)}
.site-dmcatalog .side .nav-links a{border-radius:8px;font-size:.92rem}
.site-dmcatalog .side .nav-links a.active{color:var(--primary);box-shadow:inset 3px 0 0 var(--primary);
  background:color-mix(in srgb,var(--primary) 13%,transparent)}
.site-dmcatalog .app-bar-badge{text-transform:uppercase;letter-spacing:.16em;font-size:.68rem;color:var(--primary)}

/* Hub + capture surfaces: the figures carry the panel, the frame gets out of the way. */
.site-dmcatalog .facts-panel{background:transparent;border:0;border-radius:0;
  padding:0 clamp(14px,3vw,26px);margin:16px auto 28px}
.site-dmcatalog .listing-copy p:first-child{padding-left:14px;border-left:2px solid var(--border)}
.site-dmcatalog .country-grid{gap:8px}
.site-dmcatalog .country-card{padding:12px 15px;border-radius:10px}
.site-dmcatalog .country-card:hover{transform:none;background:var(--surface-2);
  border-color:color-mix(in srgb,var(--primary) 45%,var(--border))}
.site-dmcatalog .country-card span{color:var(--text);font-weight:700}
/* The capture strip is the one wide block: it scrolls inside its own box. */
.site-dmcatalog .photo-strip{max-width:100%;overflow-x:auto;padding-bottom:14px;border-bottom:1px solid var(--border)}
.site-dmcatalog .photo-strip a{border-radius:9px}
.site-dmcatalog .photo-strip a.current{box-shadow:inset 0 0 0 2px var(--primary)}
.site-dmcatalog .photo-strip span{text-transform:uppercase;letter-spacing:.08em;font-size:.66rem}

/* Profile: portrait left, the scoreline beside it. */
.site-dmcatalog .mp-head{grid-template-columns:minmax(0,290px) minmax(0,1fr);gap:clamp(20px,3vw,34px)}
.site-dmcatalog .info{border-radius:10px}
@media(max-width:820px){.site-dmcatalog .mp-head{grid-template-columns:minmax(0,1fr)}}

/* chaturlog — broadcast status console: mono readouts, square corners, hairline
   rules, no shadows. Every selector is anchored on the .site-chaturlog body class,
   so nothing here can reach the other nine domains. site_config.py declares this
   site scheme="dark" (bg #06090c, primary #22e08a), so dark surfaces are correct. */

/* A log speaks in fixed-width figures; inherited from the body class down. */
.site-chaturlog{font-variant-numeric:tabular-nums}

/* Everything squares off; rules do the work shadows do elsewhere. */
.site-chaturlog :is(.card,.btn,.chip,.stat,.sb,.fact,.info,.hero-stat,.facts-panel,
  .seo-block,.rail-thumb,.mp-photo,.video-wrap,.growth-panel,.forecast-panel,.forecast-day,
  .year-calendar,.logrows,.search,.icon-btn,.badge-live,.followers,.fav,.signal-badge,
  .tagcloud a,.pager a,.pager span,.photo-strip a,.photo-strip img,.calendar-days span,
  .nav-links a){border-radius:0;box-shadow:none}

/* One voice: the mono body face, even in headings, buttons and figures. */
.site-chaturlog :is(h1,h2,h3,.btn){font-family:var(--font-body);letter-spacing:-.01em}
.site-chaturlog :is(.card-name,.stat,.fact,.sb,.hero-stat,.country-card,.forecast-prob) b{font-family:var(--font-body)}
.site-chaturlog :is(.section-title,.facts-label,.lbl,.app-bar-badge,.chip,.btn){text-transform:uppercase;letter-spacing:.14em;font-size:.72rem}
.site-chaturlog .section-title{color:var(--primary);font-size:.78rem;margin:32px 0 14px;padding-bottom:9px;border-bottom:1px solid var(--border)}
.site-chaturlog .btn{padding:11px 18px;font-size:.76rem}
.site-chaturlog .btn-ghost{background:transparent}

/* Hero reads like a prompt line. */
.site-chaturlog .hero{padding-bottom:22px;border-bottom:1px solid var(--border)}
.site-chaturlog .hero h1:after{content:"_";color:var(--primary);animation:chaturlog-caret 1.1s steps(1) infinite}
@keyframes chaturlog-caret{50%{opacity:0}}
.site-chaturlog .hero .kick{background:transparent;border:1px solid color-mix(in srgb,var(--primary) 40%,var(--border))}
.site-chaturlog .hero-stat{background:transparent;border:0;border-left:2px solid var(--primary);padding:6px 14px;min-width:110px}
.site-chaturlog .hero-stat b{color:var(--primary);font-size:1.3rem}

/* Instrument panel: a faint measuring grid, gauges divided by hairlines. */
.site-chaturlog .facts-panel{border-color:color-mix(in srgb,var(--primary) 22%,var(--border));
  background:repeating-linear-gradient(90deg,var(--grid-line,transparent) 0 1px,transparent 1px 34px),repeating-linear-gradient(180deg,var(--grid-line,transparent) 0 1px,transparent 1px 34px),var(--surface)}
.site-chaturlog :is(.facts-grid,.statboard,.day-stats,.stat-row,.growth-stats){gap:1px;background:var(--border);border:1px solid var(--border)}
.site-chaturlog .statboard{grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}
.site-chaturlog :is(.fact,.sb,.stat){background:var(--bg);border:0;text-align:left;padding:13px 14px;min-width:0;overflow:hidden}
.site-chaturlog :is(.fact,.sb,.stat) b{color:var(--primary);font-size:clamp(1.05rem,3.1vw,1.45rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-chaturlog .sb.hot b{color:var(--accent)}
.site-chaturlog :is(.fact,.sb,.stat) span{display:block;margin-top:4px;color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;overflow-wrap:anywhere}
.site-chaturlog .facts-note{margin-top:16px;padding-top:12px;border-top:1px solid var(--border);font-size:.74rem}

/* Generated copy = a commented block in the log. */
.site-chaturlog .listing-copy{padding-left:14px;border-left:2px solid color-mix(in srgb,var(--primary) 45%,var(--border))}
.site-chaturlog .listing-copy p:first-child:before{content:"// ";color:var(--primary)}

/* Listings are entries, not tiles: a lit left rule marks the active line. */
.site-chaturlog.grid-rows .thumb{border-radius:0;width:84px}
.site-chaturlog .grid .card{background:transparent;border:0;border-bottom:1px solid var(--border);border-left:2px solid transparent}
.site-chaturlog .grid .card:hover{transform:none;background:var(--surface);border-left-color:var(--primary)}
.site-chaturlog .card:hover .thumb img{transform:none;filter:brightness(1.15)}
.site-chaturlog .card-sub{font-size:.75rem}
.site-chaturlog .logrow{font-size:.8rem;border-left:2px solid transparent}
.site-chaturlog .logrow:hover{border-left-color:var(--primary);background:var(--surface-2)}
.site-chaturlog .logname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.site-chaturlog .logmeta{color:var(--primary)}
.site-chaturlog .country-card{background:transparent;border-left:2px solid transparent}
.site-chaturlog .country-card:hover{transform:none;background:var(--surface);border-color:var(--border);border-left-color:var(--primary)}
.site-chaturlog .country-card span{color:var(--primary)}

/* Capture strip: contact sheet, only the current frame is in colour. It keeps the
   base sheet's own overflow-x box, so wide strips scroll instead of the page. */
.site-chaturlog .photo-strip a{background:transparent;padding:4px}
.site-chaturlog .photo-strip img{filter:grayscale(.4)}
.site-chaturlog .photo-strip a.current img{filter:none}
.site-chaturlog .photo-strip span{text-transform:uppercase;letter-spacing:.1em;font-size:.66rem}

/* Profile: square portrait beside a readout column. */
.site-chaturlog .mp-head{grid-template-columns:250px minmax(0,1fr);gap:26px;padding-bottom:24px;border-bottom:1px solid var(--border)}
.site-chaturlog .mp-photo{aspect-ratio:1}
.site-chaturlog .info{background:transparent;border-left:2px solid color-mix(in srgb,var(--primary) 35%,var(--border))}
.site-chaturlog .spark-bars span{border-radius:0;background:var(--primary);opacity:.55}
.site-chaturlog .spark-bars span:hover{opacity:1}
.site-chaturlog .tagcloud a{background:transparent;border:1px solid var(--border);font-size:.78rem}
/* Filled states keep their fill: --primary-ink is near-black, so clearing the
   background would leave black ink on a black surface. */
.site-chaturlog .chip:not(.active){background:transparent}
.site-chaturlog .pager :not(.cur){background:transparent}

/* Sidebar chrome: a device menu, active item marked by a lit rule. */
.site-chaturlog .side{background:var(--bg)}
.site-chaturlog .side .nav-links a{border-left:2px solid transparent;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}
.site-chaturlog .side .nav-links a.active{background:transparent;color:var(--primary);border-left-color:var(--primary)}
.site-chaturlog .app-bar-badge{color:var(--primary)}

@media(max-width:820px){
  .site-chaturlog .mp-head{grid-template-columns:minmax(0,1fr)}
  .site-chaturlog .hero-stat{min-width:0}
}

/* ===== modelsarchive: printed matter — paper stock, hairline rules, plate numbers ===== */
/* Nothing lifts or glows: structure is hairline/dotted/double rules, small caps, token serif. */
.site-modelsarchive{background-image:linear-gradient(180deg,color-mix(in srgb,var(--rule,var(--border)) 22%,transparent),transparent 360px);background-repeat:no-repeat}

/* -- masthead & nav: set text, not chrome -- */
.site-modelsarchive .mag-sub{font-style:normal;font-variant:small-caps;letter-spacing:.07em}
.site-modelsarchive .mag-nav .nav-links a{border-radius:0;font-variant:small-caps;letter-spacing:.05em;font-size:1rem}
.site-modelsarchive .mag-nav .nav-links a.active{background:transparent;color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary)}

/* -- hero: standfirst + a ruled statistics line, no pills -- */
.site-modelsarchive .hero .kick{background:transparent;padding:0;border-radius:0;color:var(--muted);font-variant:small-caps;letter-spacing:.16em;font-size:.82rem}
.site-modelsarchive .hero h1{max-width:24ch;letter-spacing:-.015em}
.site-modelsarchive .hero .lead{font-style:italic;color:var(--text);max-width:56ch}
.site-modelsarchive .hero-stats{gap:0;margin-top:20px;padding:9px 0;border-top:1px solid var(--rule,var(--border));border-bottom:1px solid var(--rule,var(--border))}
.site-modelsarchive .hero-stat{flex:1 1 128px;min-width:0;padding:2px 16px;background:transparent;border:0;border-left:1px solid var(--rule,var(--border));border-radius:0}
.site-modelsarchive .hero-stat:first-child{border-left:0;padding-left:0}
.site-modelsarchive .hero-stat b{font-size:1.3rem;font-variant-numeric:tabular-nums}
.site-modelsarchive .hero-stat span{font-variant:small-caps;letter-spacing:.08em;font-size:.88rem}

/* -- section headings: small caps over a double rule -- */
.site-modelsarchive .section-title{margin:34px 0 15px;padding-bottom:7px;border-bottom:3px double var(--rule,var(--border));font-variant:small-caps;letter-spacing:.04em}

/* -- cards: contact prints, numbered as they are filed -- */
.site-modelsarchive .grid{counter-reset:plate}
.site-modelsarchive .card{border-radius:0;border-color:var(--rule,var(--border));box-shadow:none}
.site-modelsarchive .card:hover{transform:none;box-shadow:none;border-color:var(--text)}.site-modelsarchive .card:hover .thumb img{transform:none}
.site-modelsarchive .thumb{border-bottom:1px solid var(--rule,var(--border))}
.site-modelsarchive .card-body{padding:9px 11px 12px;gap:4px}
.site-modelsarchive .grid .card-body:before{counter-increment:plate;content:"\2116\A0" counter(plate,decimal-leading-zero);color:var(--muted);font-size:.66rem;letter-spacing:.14em;font-variant-numeric:tabular-nums}
.site-modelsarchive .card-sub{font-variant:small-caps;letter-spacing:.03em;font-size:.88rem}
.site-modelsarchive .gtag{border-radius:0;background:transparent;box-shadow:inset 0 0 0 1px var(--rule,var(--border))}
.site-modelsarchive .badge-live{border-radius:0;background:var(--primary);color:var(--primary-ink);letter-spacing:.1em}
.site-modelsarchive .fav,.site-modelsarchive .followers{border-radius:0;color:var(--text);background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:none}
.site-modelsarchive .fav{box-shadow:inset 0 0 0 1px var(--rule,var(--border))}

/* -- controls: letterpress, square, hairline -- */
.site-modelsarchive .btn{border-radius:0;letter-spacing:.03em}
.site-modelsarchive .btn-primary{border-color:var(--primary)}.site-modelsarchive .btn-ghost{border-color:var(--rule,var(--border))}
.site-modelsarchive .chip,.site-modelsarchive .pager a,.site-modelsarchive .pager span{border-radius:0;background:transparent;border-color:var(--rule,var(--border));font-variant:small-caps;letter-spacing:.04em}
.site-modelsarchive .chip.active,.site-modelsarchive .pager .cur{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}
.site-modelsarchive .tagcloud a{border-radius:0;background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--rule,var(--border))}
.site-modelsarchive .tagcloud a:hover{background:var(--primary);color:var(--primary-ink)}

/* -- running text: a newspaper column, indents instead of gaps -- */
.site-modelsarchive .listing-copy p{max-width:64ch;margin:0 0 .25em;line-height:1.8}
.site-modelsarchive .listing-copy p:first-child{font-size:1.1rem}
.site-modelsarchive .listing-copy p+p{text-indent:1.6em}
.site-modelsarchive .seo-block{padding:18px 0 0;background:transparent;border:0;border-top:1px solid var(--rule,var(--border));border-radius:0}

/* -- figures: ledger columns under a heavy rule (facts panel, day stats, profile stats) -- */
.site-modelsarchive .facts-panel{padding:16px 0 14px;background:transparent;border:0;border-radius:0;border-top:3px double var(--rule,var(--border));border-bottom:3px double var(--rule,var(--border))}
.site-modelsarchive .facts-grid,.site-modelsarchive .day-stats{gap:12px 20px}
.site-modelsarchive .fact,.site-modelsarchive .stat{padding:8px 12px 0 0;background:transparent;border:0;border-radius:0;border-top:2px solid var(--text);text-align:left}
.site-modelsarchive .fact b,.site-modelsarchive .stat b{font-size:1.4rem;font-variant-numeric:tabular-nums}
.site-modelsarchive .fact span,.site-modelsarchive .stat span{font-variant:small-caps;letter-spacing:.07em;font-size:.84rem;text-transform:none}
.site-modelsarchive .facts-label{color:var(--text);font-variant:small-caps;text-transform:none;letter-spacing:.09em;font-size:.9rem}
.site-modelsarchive .facts-note,.site-modelsarchive .day-note{font-style:italic}

/* -- country index: entries in a back-of-book list, not cards -- */
.site-modelsarchive .country-grid{gap:0 24px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.site-modelsarchive .country-grid .country-card{padding:9px 0;gap:1px;background:transparent;border:0;border-radius:0;border-bottom:1px dotted var(--rule,var(--border))}
.site-modelsarchive .country-grid .country-card:hover{transform:none;border-bottom-color:var(--text)}
.site-modelsarchive .country-grid .country-card i{font-style:italic}

/* -- plates: mounted prints, captioned -- */
.site-modelsarchive .photo-strip a{padding:6px 6px 4px;border-radius:0;border-color:var(--rule,var(--border))}
.site-modelsarchive .photo-strip a.current{border-color:var(--text)}.site-modelsarchive .photo-strip img{border-radius:0}
.site-modelsarchive .photo-strip span{color:var(--text);font-variant:small-caps;letter-spacing:.08em}
.site-modelsarchive .gallery{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.site-modelsarchive .gallery a{border-radius:0;border:1px solid var(--rule,var(--border))}

/* -- profile: a record sheet, portrait in a paper mount -- */
.site-modelsarchive .mp-head{grid-template-columns:270px 1fr;gap:clamp(20px,3vw,34px);padding-bottom:22px;border-bottom:3px double var(--rule,var(--border))}
.site-modelsarchive .mp-photo{padding:7px;background:var(--surface);border-radius:0;border-color:var(--rule,var(--border))}
.site-modelsarchive .info{padding:7px 0;background:transparent;border:0;border-radius:0;border-bottom:1px dotted var(--rule,var(--border))}
.site-modelsarchive .info .lbl{font-variant:small-caps;text-transform:none;letter-spacing:.08em;font-size:.84rem}
.site-modelsarchive .growth-panel,.site-modelsarchive .forecast-panel,.site-modelsarchive .year-calendar,
.site-modelsarchive .activity-panel,.site-modelsarchive .video-wrap{background:var(--surface);border-radius:0;border-color:var(--rule,var(--border));box-shadow:none}
.site-modelsarchive .forecast-day{border-radius:0;border-color:var(--rule,var(--border))}

/* -- the archive measure is only ~700px: stack the year chart, let day times wrap -- */
.site-modelsarchive .growth-layout{flex-wrap:wrap}.site-modelsarchive .spark-bars,.site-modelsarchive .chart-range{width:100%;min-width:0}
.site-modelsarchive .forecast-time{white-space:normal}

@media(max-width:820px){
  .site-modelsarchive .mp-head{grid-template-columns:1fr}
  .site-modelsarchive .mp-photo{max-width:300px;margin:0 auto}
  .site-modelsarchive .hero-stat{padding:2px 12px}
}

/* modelscatalog — airy white directory: hairlines, soft shadows, calm grid.
   Scoped to body.site-modelscatalog. Light scheme (#f6f8fc bg / #ffffff surface),
   so every surface here stays white or tinted and every ink stays dark. */
.site-modelscatalog{
  --gap:22px;
  --soft:0 1px 2px rgba(15,23,42,.04),0 8px 24px rgba(15,23,42,.055);
  --soft-hi:0 2px 6px rgba(15,23,42,.05),0 16px 40px color-mix(in srgb,var(--primary) 16%,transparent);
  --hair:color-mix(in srgb,var(--border) 62%,transparent)}
/* -- sidebar: white, no hard rule, tinted pills instead of filled ones -- */
.site-modelscatalog .side{width:min(266px,84vw);padding:22px 16px;border-right:0;box-shadow:1px 0 0 var(--hair)}
.site-modelscatalog .side-brand{padding:4px 10px 22px}
.site-modelscatalog .side-foot{border-top:1px solid var(--hair)}
.site-modelscatalog .side .nav-links{gap:2px}
.site-modelscatalog .side .nav-links a{border-radius:11px;padding:10px 13px}
.site-modelscatalog .side .nav-links a:hover{background:color-mix(in srgb,var(--primary) 7%,transparent);color:var(--primary)}
.site-modelscatalog .side .nav-links a.active{background:color-mix(in srgb,var(--primary) 10%,transparent);
  color:var(--primary);box-shadow:inset 2px 0 0 var(--primary)}
.site-modelscatalog .app-bar{padding-top:14px;padding-bottom:14px;border-bottom:1px solid var(--hair);
  background:color-mix(in srgb,var(--surface) 88%,transparent)}
.site-modelscatalog .icon-btn{border-color:var(--hair);border-radius:12px}
.site-modelscatalog .app-bar .search{border-color:var(--hair);border-radius:12px;background:var(--surface-2)}
.site-modelscatalog .app-bar-badge{text-transform:uppercase;letter-spacing:.12em;font-size:.68rem}
/* -- hero: a pale wash that dissolves into the page, never a colour block -- */
.site-modelscatalog .hero{padding:clamp(34px,6vw,66px) 0 clamp(24px,4vw,38px);
  margin-bottom:clamp(18px,3vw,30px);border-bottom:1px solid var(--hair);
  background:linear-gradient(170deg,color-mix(in srgb,var(--primary) 6%,var(--bg)),var(--bg) 62%)}
.site-modelscatalog .hero .kick{background:var(--surface);box-shadow:var(--soft);padding:7px 14px;letter-spacing:.16em}
.site-modelscatalog .hero h1{letter-spacing:-.03em;max-width:17ch}
.site-modelscatalog .hero .lead{font-size:clamp(1.02rem,1.5vw,1.18rem);line-height:1.7}
.site-modelscatalog .hero-stats{gap:14px;margin-top:28px}
.site-modelscatalog .hero-stat{padding:14px 20px}
.site-modelscatalog .hero-stat b{letter-spacing:-.02em;font-variant-numeric:tabular-nums}
/* -- nothing is a bordered box; every surface is a sheet floating on white -- */
.site-modelscatalog .card,.site-modelscatalog .cat-card,.site-modelscatalog .hero-stat,
.site-modelscatalog .pager a,.site-modelscatalog .country-card,.site-modelscatalog .photo-strip a,
.site-modelscatalog .seo-block,.site-modelscatalog .facts-panel,.site-modelscatalog .growth-panel,
.site-modelscatalog .forecast-panel,.site-modelscatalog .year-calendar,.site-modelscatalog .activity-panel,
.site-modelscatalog .faq details,.site-modelscatalog .video-wrap,.site-modelscatalog .stat,
.site-modelscatalog .info{border:0;background:var(--surface);box-shadow:var(--soft)}
.site-modelscatalog .card:hover,.site-modelscatalog .cat-card:hover,
.site-modelscatalog .country-card:hover,.site-modelscatalog .pager a:hover{transform:translateY(-3px);box-shadow:var(--soft-hi)}
/* -- listing grid: wider cells, inset photo, no zoom on hover -- */
.site-modelscatalog .chip{border-color:var(--hair);border-radius:10px;padding:8px 14px;
  background:var(--surface);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.site-modelscatalog .chip.active{box-shadow:0 6px 16px color-mix(in srgb,var(--primary) 22%,transparent)}
.site-modelscatalog .grid{grid-template-columns:repeat(auto-fill,minmax(min(218px,100%),1fr))}
.site-modelscatalog .card:hover .thumb img{transform:none}
.site-modelscatalog .thumb{margin:6px 6px 0;border-radius:calc(var(--card-radius) - 5px)}
.site-modelscatalog .card-body{padding:12px 14px 15px;gap:7px}
.site-modelscatalog .card-note{font-style:normal}
/* -- facts panel: a calm reading table, tinted tiles, no chrome -- */
.site-modelscatalog .facts-panel{padding:clamp(20px,3vw,30px);margin:22px auto 32px}
.site-modelscatalog .fact{border:0;border-radius:12px;padding:15px 16px;background:var(--surface-2)}
.site-modelscatalog .fact b{color:var(--primary);letter-spacing:-.02em}
.site-modelscatalog .facts-label{letter-spacing:.14em}
.site-modelscatalog .tagcloud a{border-radius:9px;font-weight:600}
.site-modelscatalog .tagcloud a:hover{background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}
/* -- generated copy reads like documentation: one wide lead, quiet body -- */
.site-modelscatalog .listing-copy{margin:4px auto 26px}
.site-modelscatalog .listing-copy p:first-child{max-width:60ch;line-height:1.65;font-size:clamp(1.04rem,1.5vw,1.2rem)}
.site-modelscatalog .listing-copy p+p{font-size:.95rem}
/* -- country index, capture day, photo strip -- */
.site-modelscatalog .country-grid,.site-modelscatalog .day-stats,.site-modelscatalog .facts-grid{gap:14px}
.site-modelscatalog .pager span:not(.cur){border:0;background:transparent;color:var(--muted)}
.site-modelscatalog .country-card{padding:16px 18px}
.site-modelscatalog .day-stats .stat b,.site-modelscatalog .country-card span{font-variant-numeric:tabular-nums}
.site-modelscatalog .photo-strip{gap:14px;padding:4px 2px 16px}
.site-modelscatalog .photo-strip a.current{box-shadow:0 0 0 2px var(--primary),var(--soft)}
/* -- profile -- */
.site-modelscatalog .mp-head{grid-template-columns:minmax(0,318px) minmax(0,1fr);
  gap:clamp(24px,4vw,44px);margin:8px 0 30px}
.site-modelscatalog .mp-photo{border:0;border-radius:18px;box-shadow:var(--soft)}
.site-modelscatalog .stat b{color:var(--primary);letter-spacing:-.02em}
.site-modelscatalog .section-title{margin:40px 0 16px;gap:12px;font-size:clamp(1.15rem,2vw,1.45rem)}
.site-modelscatalog .section-title svg{flex:none;box-sizing:content-box;padding:8px;border-radius:10px;
  color:var(--primary);background:var(--surface);box-shadow:var(--soft)}
.site-modelscatalog .btn{border-radius:11px}
.site-modelscatalog .btn-primary{box-shadow:0 8px 20px color-mix(in srgb,var(--primary) 24%,transparent)}
.site-modelscatalog .btn-ghost{border-color:var(--hair);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.site-modelscatalog .site-foot{margin-top:64px;border-top:1px solid var(--hair)}
@media(max-width:900px){
  .site-modelscatalog .mp-head{grid-template-columns:minmax(0,1fr)}
  .site-modelscatalog .mp-photo{max-width:320px;margin:0 auto}}
@media(max-width:520px){
  .site-modelscatalog .grid{grid-template-columns:repeat(auto-fill,minmax(min(148px,100%),1fr))}}

/* mycamslist — a warm personal watchlist of punched, saved tickets (light scheme) */

/* --- hero: mint wash, sticker kicker --- */
.site-mycamslist .hero{
  background-image:radial-gradient(120% 80% at 88% 0%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 62%),
    linear-gradient(180deg,color-mix(in srgb,var(--primary) 13%,var(--bg)),var(--bg) 78%);
  border-bottom:1px solid color-mix(in srgb,var(--primary) 20%,var(--border))}
.site-mycamslist .hero h1{letter-spacing:-.035em}
.site-mycamslist .hero .kick{
  border-radius:10px;transform:rotate(-1.6deg);background:var(--accent);color:var(--primary-ink);
  box-shadow:0 6px 14px color-mix(in srgb,var(--accent) 30%,transparent)}

/* --- every stub shares one perforated edge --- */
.site-mycamslist .hero-stat,.site-mycamslist .fact,.site-mycamslist .stat,
.site-mycamslist .country-card,.site-mycamslist .photo-strip a{
  border-style:dashed;border-radius:15px;
  border-color:color-mix(in srgb,var(--primary) 30%,var(--border))}
.site-mycamslist .hero-stat{background:color-mix(in srgb,var(--primary) 6%,var(--surface))}
.site-mycamslist .fact{background:var(--surface)}
.site-mycamslist .country-card:hover{
  border-style:solid;background:color-mix(in srgb,var(--primary) 8%,var(--surface))}
/* .photo-strip already scrolls inside its own overflow-x box in the base sheet */
.site-mycamslist .photo-strip a.current{
  border-style:solid;border-color:var(--accent);
  box-shadow:0 6px 16px color-mix(in srgb,var(--accent) 22%,transparent)}

/* --- cards read as tear-off tickets: perforated rule + punched notches --- */
.site-mycamslist .card{
  border-color:color-mix(in srgb,var(--primary) 22%,var(--border));
  box-shadow:0 2px 0 color-mix(in srgb,var(--primary) 14%,transparent)}
.site-mycamslist .card:hover{transform:translateY(-3px) rotate(-.4deg)}
.site-mycamslist .card-body{
  position:relative;margin-top:2px;padding-top:15px;
  border-top:2px dashed color-mix(in srgb,var(--primary) 32%,var(--border))}
/* notches are clipped by .card (overflow:hidden in base) so they never widen the page */
.site-mycamslist .card-body:before,.site-mycamslist .card-body:after{
  content:"";position:absolute;top:-9px;width:16px;height:16px;border-radius:50%;background:var(--bg)}
.site-mycamslist .card-body:before{left:-9px}
.site-mycamslist .card-body:after{right:-9px}
.site-mycamslist .card-note{
  padding-left:9px;border-left:2px solid color-mix(in srgb,var(--accent) 40%,transparent)}
.site-mycamslist .gtag{border-radius:8px;background:color-mix(in srgb,var(--primary) 10%,var(--surface-2))}

/* --- the save control is the friendly one --- */
.site-mycamslist .fav{
  width:38px;height:38px;color:var(--muted);
  background:color-mix(in srgb,var(--surface) 90%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--border));
  box-shadow:0 3px 10px color-mix(in srgb,var(--text) 18%,transparent);
  transition:transform .15s,background .15s,color .15s}
.site-mycamslist .fav:hover{transform:scale(1.09);color:var(--accent)}
.site-mycamslist .fav[aria-pressed=true]{
  background:var(--accent);border-color:var(--accent);color:var(--primary-ink)}
.site-mycamslist .fav[aria-pressed=true] svg{fill:var(--primary-ink);stroke:var(--primary-ink)}
.site-mycamslist .favprompt{
  color:var(--text);background:color-mix(in srgb,var(--accent) 8%,var(--surface));
  border:2px dashed color-mix(in srgb,var(--accent) 45%,var(--border))}
.site-mycamslist .favprompt svg{color:color-mix(in srgb,var(--accent) 78%,var(--text))}

/* --- generated copy reads like a note in the margin --- */
.site-mycamslist .listing-copy{
  padding-left:18px;border-left:3px solid color-mix(in srgb,var(--primary) 38%,transparent)}
.site-mycamslist .listing-copy p:first-child{font-weight:600}
.site-mycamslist .facts-panel{
  border-color:color-mix(in srgb,var(--primary) 24%,var(--border));
  background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 8%,var(--surface)),var(--surface) 45%);
  box-shadow:0 10px 24px color-mix(in srgb,var(--primary) 10%,transparent)}
.site-mycamslist .facts-label{color:color-mix(in srgb,var(--accent) 55%,var(--text))}
.site-mycamslist .facts-tags .tagcloud a{background:color-mix(in srgb,var(--primary) 9%,var(--surface-2))}

/* --- profile: the ticket you kept, blown up --- */
.site-mycamslist .mp-head{
  grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:clamp(20px,3vw,34px);
  margin:22px 0 30px;padding:clamp(18px,3vw,28px);border-radius:26px;
  border:1px solid color-mix(in srgb,var(--primary) 20%,var(--border));
  background:linear-gradient(170deg,color-mix(in srgb,var(--primary) 10%,var(--surface)),var(--surface) 58%);
  box-shadow:0 14px 34px color-mix(in srgb,var(--primary) 12%,transparent)}
.site-mycamslist .mp-photo{
  border-radius:20px;border-color:color-mix(in srgb,var(--primary) 26%,var(--border))}
.site-mycamslist .info{border-radius:14px;background:color-mix(in srgb,var(--surface-2) 62%,var(--surface))}
.site-mycamslist .btn{border-radius:14px}
.site-mycamslist .btn-primary{box-shadow:0 8px 18px color-mix(in srgb,var(--primary) 26%,transparent)}
.site-mycamslist .day-stats .stat{
  text-align:left;border-style:solid;border-left:4px solid var(--accent);
  background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
/* must restack here: the scoped .mp-head rule outranks the base sheet's own mobile rule */
@media(max-width:900px){
  .site-mycamslist .mp-head{grid-template-columns:minmax(0,1fr);padding:16px}
  .site-mycamslist .mp-photo{max-width:320px;margin:0 auto}
}

/* camdmca — compliance register: stamped panels, ledger figures, badge chips, no sparkle.
   SiteProfile "camdmca" is scheme=dark; tints derive from --primary/--border, so contrast tracks the theme. */

/* Masthead reads as a ruled document header, not a floating bar. */
.site-camdmca .mini-head{border-top:3px solid var(--primary);background:var(--surface)}
.site-camdmca .mini-head .nav-links a{border-radius:4px;font-size:.82rem;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase}
.site-camdmca .search,.site-camdmca .icon-btn,.site-camdmca .btn,
.site-camdmca .pager a,.site-camdmca .pager span{border-radius:6px}
.site-camdmca .search button{border-radius:4px}.site-camdmca .btn{font-weight:700;letter-spacing:.04em}

/* Hero: sober statement plus a ledger strip of figures. */
.site-camdmca .hero{border-bottom:1px solid var(--border);padding-bottom:clamp(20px,3vw,30px)}
.site-camdmca .hero .kick{border-radius:3px;background:transparent;color:var(--primary);
  letter-spacing:.2em;border:1px solid color-mix(in srgb,var(--primary) 45%,var(--border))}
.site-camdmca .hero-stats{gap:0;margin-top:24px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.site-camdmca .hero-stat{flex:1 1 132px;min-width:0;background:transparent;border:0;border-radius:0;
  border-left:1px solid var(--border);padding:14px 18px}
.site-camdmca .hero-stat:first-child{border-left:0}.site-camdmca .hero-stat b{font-size:1.35rem}
.site-camdmca .hero-stat span,.site-camdmca .fact span,.site-camdmca .stat span,
.site-camdmca .facts-label,.site-camdmca .info .lbl{
  text-transform:uppercase;letter-spacing:.1em;font-size:.68rem;font-weight:700}

/* Cards are file entries: flat, outlined, no lift and no zoom. */
.site-camdmca .card:hover{transform:none;box-shadow:none;background:var(--surface);
  border-color:color-mix(in srgb,var(--primary) 60%,var(--border))}
.site-camdmca .card:hover .thumb img{transform:none}
.site-camdmca .card-body{border-top:1px solid var(--border);padding:12px 14px 14px;gap:7px}
.site-camdmca .card-note{font-style:normal}.site-camdmca .followers{border-radius:3px}
.site-camdmca .gtag,.site-camdmca .signal-badge{border-radius:3px;background:transparent;
  border:1px solid var(--border);text-transform:uppercase;letter-spacing:.06em}
/* On a protection site "live" is a verified status, not an alarm. */
.site-camdmca .badge-live{border-radius:3px;background:var(--primary);color:var(--primary-ink);
  letter-spacing:.12em}
.site-camdmca .fav{border-radius:4px;background:color-mix(in srgb,var(--bg) 72%,transparent)}
/* Chips and tags are badges: square, bordered, never filled loud. */
.site-camdmca .chip,.site-camdmca .tagcloud a,.site-camdmca .legal-nav a,.site-camdmca .rank-tabs a{
  border-radius:4px;border:1px solid var(--border);background:transparent;
  font-size:.77rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.site-camdmca .chip.active,.site-camdmca .legal-nav a.active,.site-camdmca .rank-tabs a.active,
.site-camdmca .tagcloud a:hover,.site-camdmca .rank-tabs a:hover{
  background:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--primary);
  border-color:color-mix(in srgb,var(--primary) 55%,var(--border))}
/* Every panel carries the same stamp along its top edge. */
.site-camdmca .facts-panel,.site-camdmca .seo-block,.site-camdmca .growth-panel,
.site-camdmca .forecast-panel,.site-camdmca .activity-panel,.site-camdmca .year-calendar,
.site-camdmca .mp-head{background:var(--surface);border-radius:0 0 var(--radius) var(--radius);
  border-top:2px solid color-mix(in srgb,var(--primary) 62%,var(--border))}
.site-camdmca .facts-grid,.site-camdmca .day-stats{gap:0 22px}
.site-camdmca .fact,.site-camdmca .stat{background:transparent;border:0;border-radius:0;
  border-left:2px solid color-mix(in srgb,var(--primary) 42%,var(--border));
  text-align:left;padding:5px 0 5px 14px;margin:7px 0;min-width:0}
.site-camdmca .fact b,.site-camdmca .stat b{font-size:1.28rem}
.site-camdmca .facts-note{border-top:1px solid var(--border);padding-top:12px}
.site-camdmca .spark-bars span{border-radius:0;background:color-mix(in srgb,var(--primary) 72%,transparent)}
/* Listing copy is a filed statement, ruled paragraph by paragraph. That block also carries
   .container, so its centring and responsive gutter must be left intact. */
.site-camdmca .listing-copy{margin:16px auto 20px}
.site-camdmca .listing-copy p{padding-left:14px;
  border-left:2px solid color-mix(in srgb,var(--primary) 42%,var(--border))}
/* Trust panel is the signature block: sealed clause, framed icon. */
.site-camdmca .trust-i{border-radius:6px;border-left:3px solid var(--primary);padding:18px 20px;gap:9px}
.site-camdmca .trust-i svg{display:block;width:34px;height:34px;padding:7px;
  border:1px solid var(--border);border-radius:4px;color:var(--primary)}
.site-camdmca .trust-i b{font-size:.95rem;text-transform:uppercase;letter-spacing:.08em}
.site-camdmca .section-title{margin:32px 0 16px;padding-bottom:9px;font-size:.98rem;
  text-transform:uppercase;letter-spacing:.12em;border-bottom:1px solid var(--border)}
.site-camdmca .section-title svg{color:var(--primary)}

/* Country index: jurisdictions keyed on the left edge. Capture strip keeps the base
   overflow-x scroller untouched; only the frames go square. */
.site-camdmca .country-card{border-radius:6px;border-left:3px solid var(--border);padding:13px 15px}
.site-camdmca .country-card:hover{transform:none;background:var(--surface-2);
  border-color:var(--border);border-left-color:var(--primary)}
.site-camdmca .photo-strip a{border-radius:4px;padding:4px;background:transparent}
.site-camdmca .photo-strip img{border-radius:2px}.site-camdmca .photo-strip a.current{box-shadow:inset 0 -3px 0 0 var(--primary)}

/* Profile: a two-column record sheet split by a hairline. */
.site-camdmca .mp-head{grid-template-columns:minmax(0,258px) minmax(0,1fr);gap:26px;
  padding:clamp(16px,2.4vw,24px);margin:22px 0 30px}
.site-camdmca .mp-head>div:last-child{padding-left:26px;border-left:1px solid var(--border);min-width:0}
.site-camdmca .mp-photo{border-radius:6px}
.site-camdmca .info{background:transparent;border-radius:6px;align-items:flex-start}
.site-camdmca .info svg{color:var(--primary);margin-top:.2em}
@media(max-width:900px){
  .site-camdmca .mp-head{grid-template-columns:minmax(0,1fr);gap:18px}
  .site-camdmca .mp-head>div:last-child{padding-left:0;border-left:0}
  .site-camdmca .mp-photo{max-width:300px;margin:0 auto}
}

/* ===== camgirls_cbdmca: a dense directory index — hairline mesh, numbered records, zebra rows ===== */
/* Scheme is dark; every surface below stays on the dark ramp. The body prefix is deliberate: body.card-outline / body.grid-compact are (0,2,1) and would outrank a bare .site- scope. */
body.site-camgirls_cbdmca{font-size:.93rem;line-height:1.46}

/* -- shell: a thin index bar, no ornament -- */
body.site-camgirls_cbdmca .mini-row{height:46px;gap:14px}
body.site-camgirls_cbdmca .brand{font-size:1.02rem;letter-spacing:-.02em}
body.site-camgirls_cbdmca .mini-head .nav-links a{padding:5px 8px;border-radius:2px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em}
body.site-camgirls_cbdmca .search,body.site-camgirls_cbdmca .search button,body.site-camgirls_cbdmca .icon-btn{border-radius:2px}

/* -- hero: a masthead line over a rule of counters, not a banner -- */
body.site-camgirls_cbdmca .hero{padding:16px 0 8px;border-bottom:1px solid var(--border)}
body.site-camgirls_cbdmca .hero .kick{border-radius:0;padding:3px 7px;font-size:.68rem;letter-spacing:.18em;color:var(--accent);background:transparent;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,transparent)}
body.site-camgirls_cbdmca .hero h1{font-size:clamp(1.25rem,2.2vw,1.75rem);letter-spacing:-.02em;margin:.5em 0 .2em}
body.site-camgirls_cbdmca .hero .lead{font-size:.87rem;max-width:80ch}
body.site-camgirls_cbdmca .hero-stats{gap:0;margin-top:11px;border-top:1px solid var(--border)}
body.site-camgirls_cbdmca .hero-stat{min-width:0;padding:7px 15px 7px 0;margin-right:15px;border:0;border-right:1px solid var(--border);border-radius:0;background:transparent;display:flex;align-items:baseline;gap:7px}
body.site-camgirls_cbdmca .hero-stat b{font-size:1rem;font-variant-numeric:tabular-nums}
body.site-camgirls_cbdmca .hero-stat span{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em}

/* -- filters: small hard tabs, rose reserved for the active one -- */
body.site-camgirls_cbdmca .toolbar{margin:10px 0 8px;gap:8px}
body.site-camgirls_cbdmca .chip{padding:4px 9px;border-radius:2px;font-size:.73rem;text-transform:uppercase;letter-spacing:.07em}
body.site-camgirls_cbdmca .chip.active{background:var(--accent);border-color:var(--accent);color:var(--primary-ink)}

/* -- the index itself: cells welded by 1px rules, numbered, zebra-filled -- */
/*
   This catalogue is deliberately compact, but it must not turn a profile into a
   126px-wide tile on large displays.  A readable record needs room for the
   numbered name, the gender badge and a real location.  At the configured
   1560px content width this makes eight calm columns (rather than eleven
   cramped ones); smaller screens still get a useful two-column index below.
*/
body.site-camgirls_cbdmca .grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);counter-reset:idx}
body.site-camgirls_cbdmca .card{border:0;border-radius:0;background:var(--bg)}
body.site-camgirls_cbdmca .card:nth-child(2n){background:color-mix(in srgb,var(--surface) 82%,var(--bg))}
body.site-camgirls_cbdmca .card:hover{transform:none;box-shadow:none;background:var(--surface-2)}
body.site-camgirls_cbdmca .card:hover .thumb img{transform:none}
body.site-camgirls_cbdmca .thumb{aspect-ratio:1;border-radius:0}
body.site-camgirls_cbdmca .card-body{padding:7px 9px 9px;gap:3px}
body.site-camgirls_cbdmca .card-name{align-items:flex-start;min-height:2.35em}
body.site-camgirls_cbdmca .card-name b{font-size:.84rem;letter-spacing:-.01em;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2}
body.site-camgirls_cbdmca .card-name b::before{counter-increment:idx;content:counter(idx) ".";margin-right:4px;color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}
body.site-camgirls_cbdmca .card-sub{font-size:.76rem;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25;min-height:2.5em}
body.site-camgirls_cbdmca .card-note{display:none}
body.site-camgirls_cbdmca .gtag{padding:1px 4px;border-radius:2px;font-size:.68rem}
body.site-camgirls_cbdmca .badge-live{top:0;left:0;padding:2px 6px;border-radius:0;font-size:.68rem}
body.site-camgirls_cbdmca .followers{bottom:0;left:0;padding:2px 6px;border-radius:0;font-size:.7rem;backdrop-filter:none}
body.site-camgirls_cbdmca .fav{top:0;right:0;width:28px;height:28px;border-radius:0;backdrop-filter:none}
body.site-camgirls_cbdmca .pager{gap:2px;margin:18px 0 6px}
body.site-camgirls_cbdmca .pager a,body.site-camgirls_cbdmca .pager span{min-width:32px;height:32px;padding:0 8px;border-radius:2px;font-size:.8rem}

/* -- listing copy sets in newspaper columns so the index stays high on the page -- */
body.site-camgirls_cbdmca .listing-copy{columns:27em;column-gap:30px;margin:12px auto 4px}
body.site-camgirls_cbdmca .listing-copy p{max-width:none;font-size:.85rem;line-height:1.62;break-inside:avoid}
body.site-camgirls_cbdmca .listing-copy p:first-child{font-size:.9rem}

/* -- facts read as a data strip: rules top and bottom, cells in a mesh -- */
body.site-camgirls_cbdmca .facts-panel{padding:12px 0;margin:12px auto 18px;border-width:1px 0;border-radius:0;background:transparent}
body.site-camgirls_cbdmca .facts-grid{gap:1px;background:var(--border);grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}
body.site-camgirls_cbdmca .fact{padding:9px 11px;border:0;border-radius:0;background:var(--bg)}
body.site-camgirls_cbdmca .fact:nth-child(2n){background:color-mix(in srgb,var(--surface) 82%,var(--bg))}
body.site-camgirls_cbdmca .fact b{font-size:1.05rem}
body.site-camgirls_cbdmca .tagcloud{gap:4px}
body.site-camgirls_cbdmca .tagcloud a{padding:3px 7px;border-radius:2px;font-size:.75rem;background:transparent;box-shadow:inset 0 0 0 1px var(--border)}
body.site-camgirls_cbdmca .tagcloud a:hover{background:var(--accent);color:var(--primary-ink)}

/* -- countries stop being cards and become a zebra index list -- */
body.site-camgirls_cbdmca .country-grid{grid-template-columns:1fr;gap:0;margin:10px 0 26px;border:1px solid var(--border)}
body.site-camgirls_cbdmca .country-card{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding:6px 12px;border:0;border-radius:0;background:transparent}
body.site-camgirls_cbdmca .country-card:nth-child(2n){background:color-mix(in srgb,var(--surface) 82%,var(--bg))}
body.site-camgirls_cbdmca .country-card:hover{transform:none;background:var(--surface-2)}
body.site-camgirls_cbdmca .country-card b{min-width:13ch;font-size:.9rem}
body.site-camgirls_cbdmca .country-card i{font-size:.74rem}
body.site-camgirls_cbdmca .country-card span{order:3;margin-left:auto;font-size:.78rem}
body.site-camgirls_cbdmca .ranking-row{padding:6px 11px;background:var(--bg)}
body.site-camgirls_cbdmca .ranking-row:nth-child(2n){background:color-mix(in srgb,var(--surface) 82%,var(--bg))}
body.site-camgirls_cbdmca .ranking-place,body.site-camgirls_cbdmca .ranking-score{color:var(--accent)}

/* -- capture page and profile: contact-sheet strip, ledger stats -- */
body.site-camgirls_cbdmca .photo-strip{gap:1px;padding:2px 0 10px}
body.site-camgirls_cbdmca .photo-strip a{gap:0;padding:0;border-radius:0;background:transparent}
body.site-camgirls_cbdmca .photo-strip img{width:94px;height:70px;border-radius:0}
body.site-camgirls_cbdmca .photo-strip span{padding:3px 0;font-size:.7rem}
body.site-camgirls_cbdmca .day-stats,body.site-camgirls_cbdmca .stat-row{gap:1px;margin:12px 0;background:var(--border);border:1px solid var(--border)}
body.site-camgirls_cbdmca .stat{padding:9px 11px;border-radius:2px;text-align:left}
body.site-camgirls_cbdmca .day-stats .stat,body.site-camgirls_cbdmca .stat-row .stat{border:0;border-radius:0;background:var(--bg)}
body.site-camgirls_cbdmca .stat b{font-size:1.1rem;font-variant-numeric:tabular-nums}
body.site-camgirls_cbdmca .stat span,body.site-camgirls_cbdmca .fact span{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em}
body.site-camgirls_cbdmca .mp-head{grid-template-columns:220px 1fr;gap:20px;margin:16px 0}
body.site-camgirls_cbdmca .info-grid{gap:6px;grid-template-columns:repeat(auto-fit,minmax(142px,1fr))}
body.site-camgirls_cbdmca .info{padding:8px 10px;gap:9px;border-radius:2px}
body.site-camgirls_cbdmca .btn{padding:8px 14px;border-radius:2px;font-size:.86rem}
body.site-camgirls_cbdmca .gallery{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:1px}
body.site-camgirls_cbdmca .section-title{margin:22px 0 9px;padding-bottom:5px;font-size:1rem;border-bottom:1px solid var(--border)}
body.site-camgirls_cbdmca .mp-photo,body.site-camgirls_cbdmca .video-wrap,body.site-camgirls_cbdmca .gallery a,body.site-camgirls_cbdmca .seo-block,body.site-camgirls_cbdmca .faq details,body.site-camgirls_cbdmca .legal-nav a,body.site-camgirls_cbdmca .growth-panel,body.site-camgirls_cbdmca .forecast-panel,body.site-camgirls_cbdmca .year-calendar,body.site-camgirls_cbdmca .activity-panel{border-radius:2px}
/* Base drops the mobile nav panel at top:56px; this index bar is 46px. */ @media(max-width:820px){body.site-camgirls_cbdmca .mp-head{grid-template-columns:1fr}body.site-camgirls_cbdmca .mp-photo{max-width:260px;margin:0 auto}body.site-camgirls_cbdmca .mini-head .nav-links{top:46px}}
@media(max-width:620px){body.site-camgirls_cbdmca .grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}body.site-camgirls_cbdmca .card-body{padding:6px 8px 8px}body.site-camgirls_cbdmca .card-name{min-height:2.25em}body.site-camgirls_cbdmca .card-name b{font-size:.8rem}body.site-camgirls_cbdmca .card-sub{font-size:.73rem}}
.country-filter{display:flex;align-items:center;margin-left:auto}.country-filter select{max-width:180px;min-height:34px;padding:0 28px 0 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit}@media(max-width:720px){.toolbar{align-items:flex-start}.country-filter{order:3;width:100%;margin:0}.country-filter select{width:100%;max-width:none}}

/* ===== Broadcast history by year =====
   Сетка та же, что была у годового календаря, и потому уже подхватывает
   оформление каждого сайта. Новое здесь только год как сворачиваемый
   блок: архив бывает в несколько лет, и раскрывать их все сразу значит
   утопить в них текущий. */
.yearcal-lede{max-width:70ch;margin:0 0 14px}
.yearcal-year{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:12px 16px;margin:0 0 12px}
.yearcal-year>summary{display:flex;align-items:baseline;gap:12px;
  flex-wrap:wrap;cursor:pointer;list-style:none}
.yearcal-year>summary::-webkit-details-marker{display:none}
.yearcal-year>summary::after{content:"";width:8px;height:8px;margin-left:auto;
  border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
  transform:rotate(45deg);transition:transform .18s}
.yearcal-year[open]>summary::after{transform:rotate(225deg)}
.yearcal-year>summary:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.yearcal-yr{font-family:var(--font-head);font-size:1.3rem;color:var(--primary);
  font-variant-numeric:tabular-nums}
.yearcal-facts{font-size:.88rem}
.yearcal-year>summary em{font-style:normal;font-size:.72rem;font-weight:700;
  letter-spacing:.06em;color:var(--muted);background:var(--surface-2);
  border-radius:999px;padding:2px 9px}
.yearcal-summary{margin:8px 0 0;font-size:.86rem;color:var(--muted);max-width:70ch}
.yearcal-year .year-calendar{margin-top:12px}
/* День эфира без подсказки -- архив, где почасовую детализацию не держим. */
.calendar-days>span.on{background:var(--primary);
  border-color:var(--primary);
  box-shadow:0 0 8px color-mix(in srgb,var(--primary) 35%,transparent)}

/* Плотность календаря под характер каждого сайта. Просторные,
   редакторские макеты берут три месяца в ряд, плотные каталожные -- четыре,
   и в обоих случаях это остаётся классической календарной сеткой. */
/* Только на широком экране. Правило с классом сайта специфичнее
   медиазапроса по .year-calendar, поэтому вне такой обёртки оно
   побеждало и на телефоне: три колонки по сотне пикселей при ширине
   месяца в сто семьдесят -- месяцы наезжали друг на друга. */
@media(min-width:621px){
  .site-modelsnotes .year-calendar,
  .site-modelsonlive .year-calendar,
  .site-camdmca .year-calendar{--cal-cols:3;gap:24px 20px}
}
.site-modelsarchive .year-calendar,
.site-chaturlog .year-calendar{gap:14px 12px;padding:14px}
.site-modelsarchive .calendar-month>.muted,
.site-chaturlog .calendar-month>.muted{text-transform:uppercase;
  letter-spacing:.1em;font-size:.66rem}
.site-modelsnotes .calendar-month>.muted,
.site-modelsonlive .calendar-month>.muted{font-family:var(--font-head);
  font-size:.86rem;color:var(--text)}

/* ===== Related blocks on a profile =====
   Три подборки подряд легко сливаются в стену карточек, поэтому каждая
   получает заголовок и строку о том, по какому признаку она собрана --
   это же и есть текст, ради которого блок имеет смысл для поиска. */
.relblock{margin:26px 0}
.relblock-note{font-size:.84rem;margin:-4px 0 14px;max-width:74ch}
.relblock-note a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}

/* Имя часового пояса называется один раз на блок, а не рядом с каждым
   временем: в прогнозе оно повторялось семь раз и вылезало за карточку. */
.tz-note{font-size:.68rem;color:var(--muted);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.forecast-day .js-local-window{overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;display:block}
.profile-origin{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.origin-label{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;
  border:1px solid var(--border);border-radius:999px;font-size:.72rem;
  line-height:1.35;background:var(--surface)}
.origin-label .i{width:12px;height:12px}
.growth-target{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;margin:12px 0 4px}
.growth-target>div{display:flex;align-items:baseline;justify-content:space-between;
  gap:12px;padding:9px 12px;border:1px solid var(--border);
  border-radius:calc(var(--radius) * .65);background:var(--surface-2)}
.growth-target b{font-family:var(--font-head);font-size:1.05rem;
  color:var(--primary);font-variant-numeric:tabular-nums}
.growth-target span{font-size:.75rem;color:var(--muted);text-align:right}
@media(max-width:520px){
  .growth-target{grid-template-columns:1fr}
}

/* Размытые превью моделей, отключивших показ. Размытие сделано в пикселях
   на сервере -- здесь только подпись поверх, чтобы читатель понимал, что
   это не плохое качество, а осознанный выбор модели. */
.thumb .blurred,.mp-photo .blurred{filter:saturate(.85)}
.mp-photo{position:relative}
.mp-photo .blurred+.mp-hidden-note,.thumb .blurred+.mp-hidden-note{position:absolute}

/* ===== Блоки, которые есть только у своего сайта =====
   Разная разметка, а не разный цвет: одинаковая страница под десятью
   брендами и есть та склейка, ради ухода от которой всё это делается. */
.blog-sec,.slen-sec,.arch-sec,.mile-sec,.wrap-sec,.passport-sec{margin:26px 0}
.blog-list{list-style:none;margin:14px 0 8px;padding:0;
  border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.blog-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;
  align-items:baseline;padding:9px 14px;font-size:.86rem;
  border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.blog-list li:last-child{border-bottom:0}
.blog-list li:nth-child(odd){background:color-mix(in srgb,var(--surface) 60%,transparent)}
.blog-list b{font-weight:600}
.blog-when{color:var(--muted);font-variant-numeric:tabular-nums}
.blog-list em{font-style:normal;color:var(--primary);font-weight:700;
  font-variant-numeric:tabular-nums}
.blog-list small{grid-column:2 / -1;color:var(--muted);font-size:.75rem;line-height:1.35}
.slen-lead{max-width:70ch;margin:0 0 14px}
.slen-bars{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.slen-bars li{display:grid;grid-template-columns:110px 1fr 44px;gap:12px;
  align-items:center;font-size:.82rem}
.slen-bars span{height:10px;border-radius:999px;background:var(--surface-2);
  position:relative;overflow:hidden}
.slen-bars span::after{content:"";position:absolute;inset:0 auto 0 0;
  width:var(--w);background:var(--primary);border-radius:999px}
.slen-bars em{font-style:normal;color:var(--muted);text-align:right;
  font-variant-numeric:tabular-nums}
.arch-note{margin:12px 0 0;max-width:74ch;color:var(--muted);font-size:.88rem}
.mile-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.mile-list li{display:grid;grid-template-columns:auto 1fr;gap:14px;
  align-items:baseline;padding-bottom:9px;
  border-bottom:1px dashed color-mix(in srgb,var(--border) 70%,transparent)}
.mile-list b{font-family:var(--font-head);font-size:1.15rem;color:var(--primary);
  font-variant-numeric:tabular-nums}
.mile-list span{color:var(--muted);font-size:.86rem}
@media(max-width:620px){
  .blog-list li{grid-template-columns:1fr auto;row-gap:2px}
  .blog-list em{grid-column:2}
  .blog-list small{grid-column:1 / -1}
  .slen-bars li{grid-template-columns:88px 1fr 40px;font-size:.78rem}
}

/* ===== Формы =====
   Разметка формы ссылалась на .account-form, .form-row и .form-grid, для
   которых не было написано ни одного правила: поля выводились сырыми,
   подписи слипались со строками ввода. Оформление берёт токены темы,
   поэтому форма выглядит своей на каждом из десяти сайтов. */
.account-form{display:grid;gap:16px;max-width:760px;margin-top:20px}
.form-row{display:grid;gap:6px;min-width:0}
.form-row>label,.form-row label:not(.check-row){font-size:.82rem;font-weight:600;
  color:var(--muted);letter-spacing:.01em}
.account-form input[type=text],.account-form input[type=email],
.account-form input[type=url],.account-form input[type=tel],
.account-form input[type=password],.account-form textarea,
.account-form select{width:100%;box-sizing:border-box;padding:11px 13px;
  font:inherit;font-size:.94rem;color:var(--text);background:var(--bg);
  border:1px solid var(--border);border-radius:calc(var(--radius) * .5);
  transition:border-color .15s,box-shadow .15s}
.account-form textarea{min-height:96px;resize:vertical;line-height:1.5}
.account-form input:focus,.account-form textarea:focus,.account-form select:focus{
  outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent)}
.account-form input::placeholder,.account-form textarea::placeholder{color:var(--muted);opacity:.7}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.form-row small{font-size:.78rem;color:var(--muted);line-height:1.5}
/* Django печатает ошибки полей списком; без правил он выглядел маркерами. */
.account-form ul.errorlist{list-style:none;margin:2px 0 0;padding:0;
  color:var(--danger,#e5484d);font-size:.8rem}
.check-row{display:grid;grid-template-columns:auto 1fr;gap:10px;
  align-items:start;font-size:.88rem;line-height:1.5;color:var(--text)}
.check-row input[type=checkbox]{width:18px;height:18px;margin-top:2px;
  accent-color:var(--primary)}
.account-form .btn{justify-self:start}
.form-message{padding:11px 14px;border-radius:calc(var(--radius) * .5);
  background:color-mix(in srgb,var(--primary) 10%,var(--surface));
  border:1px solid color-mix(in srgb,var(--primary) 32%,var(--border));
  font-size:.88rem;margin:0 0 14px}
@media(max-width:620px){.form-grid{grid-template-columns:1fr}}

/* ===== Чарт: ряд по неделям и соседи ===== */
.chart-sec,.neigh-sec{margin:26px 0}
.chart-record{max-width:70ch;margin:0 0 12px;font-size:.95rem}
.chart-weeks{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:7px}
.chart-weeks li{display:grid;grid-template-columns:52px 1fr auto;gap:12px;
  align-items:center;font-size:.8rem}
.chart-weeks b{color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}
.chart-weeks span{height:9px;border-radius:999px;background:var(--surface-2);
  position:relative;overflow:hidden}
.chart-weeks span::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);
  background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:999px}
.chart-weeks em{font-style:normal;font-variant-numeric:tabular-nums;
  color:var(--text);font-weight:600}
.neigh-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:12px}
.neigh-card{display:grid;gap:3px;padding:14px 16px;border:1px solid var(--border);
  border-radius:var(--radius);background:var(--surface);text-decoration:none;
  color:var(--text);transition:border-color .15s,transform .15s}
.neigh-card:hover{border-color:var(--primary);transform:translateY(-2px)}
.neigh-dir{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);font-weight:700}
.neigh-card b{font-family:var(--font-head);font-size:1.05rem}
.neigh-meta{font-size:.78rem;color:var(--muted)}
@media(max-width:620px){.neigh-pair{grid-template-columns:1fr}
  .chart-weeks li{grid-template-columns:44px 1fr auto;font-size:.75rem}}

/* ===== Оставшиеся блоки сайтов ===== */
.spec-sec,.mchange-sec,.drift-sec,.rely-sec,.prov-sec,.aud-sec,.today-sec{margin:26px 0}
.spec-table{margin:14px 0 0;border:1px solid var(--border);border-radius:var(--radius);
  overflow:hidden}
.spec-row{display:grid;grid-template-columns:minmax(140px,32%) 1fr;gap:0;
  border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.spec-row:last-child{border-bottom:0}
.spec-row:nth-child(odd){background:color-mix(in srgb,var(--surface) 55%,transparent)}
.spec-row dt{padding:10px 14px;font-size:.8rem;font-weight:600;color:var(--muted);
  border-right:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.spec-row dd{margin:0;padding:10px 14px;font-size:.9rem}
.mchange-lead,.drift-lead,.today-lead{max-width:74ch;margin:0;font-size:.98rem;line-height:1.65}
.rely-panel{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;
  margin-top:12px;padding:16px 18px;border:1px solid var(--border);
  border-radius:var(--radius);background:var(--surface)}
.rely-panel>b{font-family:var(--font-head);font-size:2.4rem;line-height:1;
  font-variant-numeric:tabular-nums}
.rely-high>b{color:#2fbf71}.rely-medium>b{color:var(--primary)}.rely-low>b{color:var(--muted)}
.rely-verdict{margin:0 0 4px;font-weight:600}
.prov-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:9px}
.prov-list li{display:grid;grid-template-columns:minmax(150px,30%) 1fr;gap:12px;
  padding-bottom:9px;font-size:.88rem;
  border-bottom:1px dashed color-mix(in srgb,var(--border) 70%,transparent)}
.prov-list b{color:var(--muted);font-weight:600}
.passport-lead,.wrap-highlight{max-width:74ch;margin:0 0 14px;line-height:1.6}
.passport-table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:14px 0 0;
  border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.passport-table>div{padding:12px 14px;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.passport-table>div:nth-child(odd){border-right:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.passport-table>div:nth-last-child(-n+2){border-bottom:0}
.passport-table dt{font-size:.76rem;color:var(--muted);font-weight:600}.passport-table dd{margin:4px 0 0;font-weight:700;font-variant-numeric:tabular-nums}
.passport-windows{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.passport-windows li,.wrap-grid>div{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.passport-windows b,.passport-windows span,.wrap-grid span{display:block}.passport-windows b,.wrap-grid b{font-variant-numeric:tabular-nums}.passport-windows span,.wrap-grid span{margin-top:4px;color:var(--muted);font-size:.78rem;line-height:1.35}
.wrap-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.wrap-grid b{font-family:var(--font-head);font-size:1.35rem;color:var(--primary)}
@media(max-width:620px){
  .spec-row{grid-template-columns:1fr}
  .spec-row dt{border-right:0;padding-bottom:2px}
  .spec-row dd{padding-top:0}
  .prov-list li{grid-template-columns:1fr;gap:2px}
  .rely-panel{grid-template-columns:1fr;gap:10px}
  .passport-table,.passport-windows,.wrap-grid{grid-template-columns:1fr}
  .passport-table>div,.passport-table>div:nth-child(odd){border-right:0}
  .passport-table>div:nth-last-child(2){border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
}

/* ===== Пьедестал: своя разметка у каждого сайта =====
   Одинаковый рейтинг под десятью брендами -- та же склейка, что и
   одинаковые страницы моделей, только заметнее: это первое, что видит
   человек, пришедший по запросу «лучшие». */
.podium{display:grid;gap:14px;margin:18px 0 22px}
.podium-card{position:relative;display:grid;gap:4px;padding:16px 18px;
  text-decoration:none;color:var(--text);background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);
  transition:transform .16s,border-color .16s}
.podium-card:hover{transform:translateY(-3px);border-color:var(--primary)}
.podium-card img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;
  margin-bottom:6px}
.podium-place{font-family:var(--font-head);font-size:1.5rem;line-height:1;
  color:var(--primary);font-variant-numeric:tabular-nums}
.podium-card b{font-size:1.05rem}
.podium-score{font-weight:700;font-variant-numeric:tabular-nums}
.podium-where{font-size:.78rem;color:var(--muted)}
.podium-bar{display:block;height:5px;margin-top:8px;border-radius:999px;
  background:var(--surface-2);overflow:hidden;position:relative}
.podium-bar::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);
  border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--accent))}

/* Крупные карточки с полосами -- чарт и живой. */
.podium-chart,.podium-live{grid-template-columns:repeat(3,minmax(0,1fr))}
.podium-live .podium-card{background:linear-gradient(160deg,
  color-mix(in srgb,var(--primary) 12%,var(--surface)),var(--surface))}
.podium-chart .place-1 .podium-place,.podium-live .place-1 .podium-place{font-size:2.1rem}

/* Лог: строгая таблица без картинок. */
.podium-log{grid-template-columns:1fr}
.podium-log .podium-card{grid-template-columns:44px 1fr auto;align-items:baseline;
  border-radius:4px;padding:11px 14px}
.podium-log img,.podium-log .podium-bar,.podium-log .podium-where{display:none}

/* Архив: сдержанный нумерованный список. */
.podium-ledger{grid-template-columns:1fr;gap:0}
.podium-ledger .podium-card{grid-template-columns:36px 1fr auto;align-items:baseline;
  border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;
  padding:12px 4px}
.podium-ledger .podium-card:hover{transform:none;background:var(--surface)}
.podium-ledger img,.podium-ledger .podium-bar{display:none}

/* Промежуточные варианты остальных. */
.podium-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.podium-cards .podium-bar{display:none}
.podium-editorial{grid-template-columns:1fr}
.podium-editorial .podium-card{grid-template-columns:auto 1fr auto;align-items:center;
  border-left:4px solid var(--primary);border-radius:0 var(--radius) var(--radius) 0}
.podium-editorial img{width:88px;aspect-ratio:4/3;margin:0}
.podium-compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.podium-compact .podium-card{padding:11px 13px}
.podium-compact img,.podium-compact .podium-where{display:none}
.podium-plain{grid-template-columns:1fr}
.podium-plain .podium-card{grid-template-columns:40px 1fr auto;align-items:baseline;
  background:transparent;border-style:dashed}
.podium-plain img,.podium-plain .podium-bar{display:none}

@media(max-width:820px){
  .podium-chart,.podium-live,.podium-cards,.podium-compact{grid-template-columns:1fr}
  .podium-chart .podium-card,.podium-live .podium-card,
  .podium-cards .podium-card{grid-template-columns:auto 1fr auto;align-items:center}
  .podium-chart img,.podium-live img,.podium-cards img{width:96px;margin:0}
}

/* ===== Часовые хабы ===== */
.hour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));
  gap:12px;margin-top:20px}
.hour-card{display:grid;gap:3px;padding:14px 16px;text-decoration:none;
  color:var(--text);background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);transition:border-color .15s,transform .15s}
.hour-card:hover{border-color:var(--primary);transform:translateY(-2px)}
.hour-card b{font-family:var(--font-head);font-size:1.2rem;
  font-variant-numeric:tabular-nums}
.hour-card span{font-size:.76rem;color:var(--muted)}
.hour-card.empty{opacity:.45}

/* ===== Local schedule finder + observed-audience cards ===== */
.schedule-finder{padding-top:clamp(22px,4vw,46px);padding-bottom:32px}
.schedule-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:12px;align-items:end;margin:24px 0 0;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.schedule-form label{display:grid;gap:6px;min-width:0;color:var(--muted);font-size:.82rem;font-weight:700}
.schedule-form select{width:100%;min-width:0;padding:11px 12px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:9px;font:inherit}
.schedule-form .btn{min-height:43px;white-space:nowrap}
.online-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:12px;align-items:end;margin:24px 0 0;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.online-filters label{display:grid;gap:6px;min-width:0;color:var(--muted);font-size:.82rem;font-weight:700}.online-filters select{width:100%;min-width:0;padding:11px 12px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:9px;font:inherit}.online-filters .btn{min-height:43px;white-space:nowrap}.online-local-note{margin-top:14px}.online-local-note a{font-weight:800}
.empty-state{margin:16px 0;padding:clamp(18px,3vw,28px);border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface);color:var(--muted)}
.empty-state h2{margin:0 0 8px;color:var(--text);font-size:1.15rem}.empty-state p{margin:0;max-width:62ch}
.audience-summary{margin:30px 0;padding:clamp(18px,3vw,28px);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.audience-heading{display:flex;justify-content:space-between;gap:18px;align-items:end}.audience-heading h2{margin:.35rem 0 0}.audience-heading p{max-width:31ch;margin:0;color:var(--muted);font-size:.82rem}
.audience-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}.audience-card{min-width:0;padding:15px;border:1px solid var(--border);border-radius:calc(var(--radius) * .72);background:var(--bg)}
.audience-card h3{margin:0 0 10px;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.audience-card>b{display:block;font:700 clamp(1.35rem,3vw,2rem)/1 var(--font-head);font-variant-numeric:tabular-nums}.audience-card>b+span{display:block;margin:5px 0 13px;color:var(--muted);font-size:.72rem}
.audience-card dl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;margin:0;font-size:.78rem}.audience-card dt{min-width:0;color:var(--muted)}.audience-card dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:920px){.schedule-form,.online-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-form .btn,.online-filters .btn{grid-column:span 2}.audience-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.schedule-form,.online-filters{grid-template-columns:1fr}.schedule-form .btn,.online-filters .btn{grid-column:auto;width:100%;justify-content:center}.audience-heading{align-items:flex-start;flex-direction:column}.audience-grid{grid-template-columns:1fr}}

.arch-vintage{margin:12px 0 0;font-size:.88rem}
.arch-vintage a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}

.neigh-compare{margin:12px 0 0;font-size:.88rem}
.neigh-compare a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}
