/* ==========================================================================
   RankVex — Case Studies (listing + single). Uses theme tokens only.
   Motion: interactions 200–350ms, reveals via theme [data-reveal],
   ambient loops 18–30s, paused off screen and for reduced motion.
   ========================================================================== */

.rvcs { --cs-ease: cubic-bezier(.22, .8, .24, 1); }
.rvcs-arrow .rv-icon { transition: transform .28s var(--cs-ease); }
.rvcs-arrow:hover .rv-icon, .rvcs-arrow:focus-visible .rv-icon { transform: translateX(4px); }
.rvcs-hero__ctas .rvcs-arrow:hover .rv-icon[class*="arrow-down"] { transform: translateY(3px); }
.rvcs-kick { margin: 0 0 6px; font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--rv-violet-600); }
.rvcs-h2 { margin: 0 0 18px; font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem); line-height: 1.12; letter-spacing: -.02em; text-wrap: balance; }
.rvcs-sub { margin: -8px 0 22px; color: var(--rv-muted); }
.rvcs-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.rvcs-tags span { padding: 3px 10px; border-radius: 999px; background: var(--rv-violet-50); color: var(--rv-violet-700); font-size: .74rem; font-weight: 700; }
.rvcs-tags span:nth-child(2n) { background: var(--rv-teal-50); color: var(--rv-teal-700); }

/* ---- Ambient mesh ------------------------------------------------------- */
.rvcs-mesh { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.rvcs-mesh i { position: absolute; width: 46vmax; height: 46vmax; border-radius: 50%; filter: blur(80px); opacity: .55; animation: rvcs-drift 26s ease-in-out infinite alternate; }
.rvcs-mesh i:nth-child(1) { left: -12vmax; top: -18vmax; background: #CFC6FB; }
.rvcs-mesh i:nth-child(2) { right: -14vmax; top: -6vmax; background: #BDEDE5; animation-duration: 30s; animation-delay: -8s; }
.rvcs-mesh i:nth-child(3) { left: 30%; bottom: -28vmax; background: #E3DCFF; animation-duration: 22s; animation-delay: -4s; }
.rvcs-mesh i:nth-child(4) { right: 22%; top: 30%; width: 24vmax; height: 24vmax; background: #FCD9CE; opacity: .35; animation-duration: 28s; animation-delay: -12s; }
.rvcs-mesh--soft i { opacity: .38; }
@keyframes rvcs-drift { 0% { transform: translate3d(0, 0, 0) scale(1); } 50% { transform: translate3d(4vmax, 3vmax, 0) scale(1.08); } 100% { transform: translate3d(-3vmax, -2vmax, 0) scale(.94); } }
.is-paused i, .is-paused .rv-fx__aurora, .is-paused .rv-fx__orb, .rv-fx.is-paused * { animation-play-state: paused !important; }

/* ---- Listing hero ------------------------------------------------------- */
.rvcs-hero { position: relative; isolation: isolate; overflow: hidden; padding: clamp(3rem, 2rem + 4vw, 6rem) 0 clamp(3rem, 2rem + 3vw, 5rem); border-bottom: 1px solid var(--rv-border); background: linear-gradient(120deg, #F3F0FF 0%, #F8F6FF 40%, #EEF8F5 75%, #F5F1FF 100%); }
.rvcs-hero .rv-fx { z-index: -1; opacity: .7; }
.rvcs-hero__inner { display: grid; gap: clamp(2rem, 4vw, 4rem); align-items: center; }
@media (min-width: 1000px) { .rvcs-hero__inner { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); } }
.rvcs-hero__copy { display: grid; gap: 18px; justify-items: start; }
.rvcs-eyebrow { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-size: .78rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--rv-violet-700); }
.rvcs-eyebrow::before { content: ""; width: 28px; height: 2px; background: linear-gradient(90deg, var(--rv-violet-500), var(--rv-teal-500)); }
.rvcs-hero__title { margin: 0; max-width: 13ch; font-size: clamp(2.5rem, 1.3rem + 4.4vw, 5rem); line-height: 1.02; letter-spacing: -.035em; text-wrap: balance; }
.rvcs-hero__lead { margin: 0; max-width: 54ch; font-size: clamp(1.05rem, 1rem + .3vw, 1.25rem); line-height: 1.65; color: var(--rv-muted); }
.rvcs-hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; }
.rvcs-hero__art { position: relative; min-height: 320px; display: grid; place-items: center; }
.rvcs-stack { position: relative; width: min(100%, 480px); aspect-ratio: 4 / 3.2; }
.rvcs-stack__item { position: absolute; margin: 0; width: 78%; border-radius: 18px; overflow: hidden; border: 1px solid rgba(255,255,255,.8); box-shadow: 0 40px 70px -30px rgba(36,28,92,.45); background: #fff; }
.rvcs-stack__item .rvcs-cover { border-radius: 0; }
.rvcs-stack__item--0 { left: 0; top: 8%; z-index: 3; }
.rvcs-stack__item--1 { right: 0; top: 0; width: 62%; z-index: 2; transform: rotate(3deg); }
.rvcs-stack__item--2 { right: 6%; bottom: 0; width: 58%; z-index: 1; transform: rotate(-3deg); }
.rvcs-orbit { position: relative; width: min(100%, 380px); aspect-ratio: 1; }
.rvcs-orbit__ring { position: absolute; inset: 0; border-radius: 50%; border: 1.5px dashed rgba(106,85,227,.35); animation: rvcs-spin 30s linear infinite; }
.rvcs-orbit__ring--b { inset: 18%; border-color: rgba(15,156,140,.35); animation-duration: 22s; animation-direction: reverse; }
.rvcs-orbit__core { position: absolute; inset: 38%; display: grid; place-items: center; border-radius: 28px; background: #fff; box-shadow: 0 30px 60px -24px rgba(36,28,92,.45); }
.rvcs-orbit__core svg { width: 56%; height: 56%; }
.rvcs-orbit__node { position: absolute; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px; background: #fff; color: var(--rv-violet-600); box-shadow: 0 16px 30px -16px rgba(36,28,92,.5); animation: rv-float-b 6s ease-in-out infinite; }
.rvcs-orbit__node--1 { left: 6%; top: 22%; }
.rvcs-orbit__node--2 { right: 2%; top: 46%; color: var(--rv-teal-500); animation-delay: -2s; }
.rvcs-orbit__node--3 { left: 30%; bottom: 0; color: var(--rv-coral-500); animation-delay: -4s; }
@keyframes rvcs-spin { to { transform: rotate(360deg); } }

/* ---- Cover image system (16:9, focal point, fallback) ------------------- */
.rvcs-cover { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 16px 16px 0 0; background: var(--rv-violet-50); }
.rvcs-cover__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--cs-ease); }
.rvcs-cover--fallback { display: grid; place-items: center; background: radial-gradient(120% 120% at 0% 0%, #DCD5FF 0%, transparent 55%), radial-gradient(100% 100% at 100% 100%, #C9F0E8 0%, transparent 55%), #F4F1FF; }
.rvcs-cover__mark { position: relative; z-index: 1; width: 64px; height: 64px; }
.rvcs-cover__mark svg { width: 100%; height: 100%; }
.rvcs-cover__lines { position: absolute; inset: 0; background-image: linear-gradient(to right, rgba(72,58,114,.08) 1px, transparent 1px), linear-gradient(to bottom, rgba(72,58,114,.08) 1px, transparent 1px); background-size: 28px 28px; -webkit-mask-image: radial-gradient(circle at 50% 50%, #000 20%, transparent 70%); mask-image: radial-gradient(circle at 50% 50%, #000 20%, transparent 70%); }

/* ---- Featured ----------------------------------------------------------- */
.rvcs-featured { padding: clamp(2.5rem, 2rem + 2vw, 4rem) 0 0; }
.rvcs-feat { display: grid; gap: 0; overflow: hidden; border-radius: 26px; background: #fff; border: 1px solid var(--rv-border); box-shadow: 0 40px 80px -48px rgba(36,28,92,.5); }
@media (min-width: 900px) { .rvcs-feat { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); } }
.rvcs-feat__media .rvcs-cover { height: 100%; aspect-ratio: auto; min-height: 260px; border-radius: 0; }
@media (max-width: 899px) { .rvcs-feat__media .rvcs-cover { aspect-ratio: 16 / 9; min-height: 0; } }
.rvcs-feat:hover .rvcs-cover__img { transform: scale(1.03); }
.rvcs-feat__body { display: grid; gap: 14px; align-content: center; justify-items: start; padding: clamp(22px, 3vw, 44px); }
.rvcs-feat__title { margin: 0; font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.3rem); line-height: 1.15; letter-spacing: -.02em; }
.rvcs-feat__title a { color: var(--rv-ink); text-decoration: none; }
.rvcs-feat__title a:hover { color: var(--rv-violet-700); }
.rvcs-feat__sum { margin: 0; color: var(--rv-muted); line-height: 1.65; }
.rvcs-feat__metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; width: 100%; margin: 0; }
.rvcs-feat__metrics div { padding: 12px; border-radius: 14px; background: var(--rv-violet-25); border: 1px solid var(--rv-violet-100); }
.rvcs-feat__metrics dt { font-size: .74rem; font-weight: 600; color: var(--rv-muted); }
.rvcs-feat__metrics dd { margin: 2px 0 0; font-family: var(--rv-font-display); font-size: 1.5rem; font-weight: 700; color: var(--rv-ink); }
.rvcs-feat__metrics small { font-family: var(--rv-font-body); font-size: .75rem; font-weight: 600; color: var(--rv-muted); }

/* ---- Collection --------------------------------------------------------- */
.rvcs-collection { padding: clamp(3rem, 2rem + 3vw, 5rem) 0; scroll-margin-top: calc(var(--rv-header-h) + 10px); }
.rvcs-col__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 18px; }
.rvcs-col__head .rv-h2 { margin: 0; }
.rvcs-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 22px; padding: 12px; border-radius: 16px; background: var(--rv-violet-25); border: 1px solid var(--rv-violet-100); }
.rvcs-filters input, .rvcs-filters select { min-height: 42px; padding: 0 12px; border: 1px solid var(--rv-border-strong); border-radius: 12px; background: #fff; font: inherit; font-size: .92rem; color: var(--rv-ink); }
.rvcs-filters input { flex: 1 1 220px; }
.rvcs-filters select.is-active { border-color: var(--rv-violet-500); box-shadow: 0 0 0 3px rgba(106,85,227,.15); color: var(--rv-violet-700); font-weight: 600; }
.rvcs-filters input:focus, .rvcs-filters select:focus { outline: none; border-color: var(--rv-violet-500); box-shadow: 0 0 0 3px rgba(106,85,227,.18); }
.rvcs-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 700px) { .rvcs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .rvcs-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.rvcs-card { position: relative; display: flex; flex-direction: column; border-radius: 18px; background: #fff; border: 1px solid var(--rv-border); box-shadow: 0 20px 40px -34px rgba(36,28,92,.45); transition: transform .3s var(--cs-ease), box-shadow .3s var(--cs-ease), border-color .3s; }
.rvcs-card:hover, .rvcs-card:focus-within { transform: translateY(-4px); border-color: rgba(106,85,227,.3); box-shadow: 0 30px 60px -34px rgba(36,28,92,.5); }
.rvcs-card:hover .rvcs-cover__img { transform: scale(1.04); }
.rvcs-card__body { display: flex; flex: 1; flex-direction: column; gap: 10px; padding: 18px 20px 20px; }
.rvcs-card__client { margin: 0; font-size: .8rem; font-weight: 700; color: var(--rv-muted); }
.rvcs-card__title { margin: 0; font-size: 1.2rem; line-height: 1.3; }
.rvcs-card__title a { color: var(--rv-ink); text-decoration: none; }
.rvcs-card__title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.rvcs-card__title a:focus-visible { outline: none; }
.rvcs-card:focus-within { outline: 2px solid var(--rv-violet-500); outline-offset: 3px; }
.rvcs-card__sum { margin: 0; font-size: .93rem; line-height: 1.6; color: var(--rv-muted); }
.rvcs-card__foot { display: grid; gap: 10px; margin-top: auto; padding-top: 6px; }
.rvcs-card__outcome { display: flex; align-items: center; gap: 6px; margin: 0; padding: 8px 10px; border-radius: 10px; background: var(--rv-green-50); color: var(--rv-green-700); font-size: .85rem; font-weight: 700; }
.rvcs-card__go { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: .9rem; color: var(--rv-violet-700); }
.rvcs-card:hover .rvcs-card__go .rv-icon { transform: translateX(4px); }
.rvcs-pages { margin-top: 28px; }
.rvcs-pages ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin: 0; padding: 0; list-style: none; }
.rvcs-pages a, .rvcs-pages span { display: inline-grid; place-items: center; min-width: 42px; min-height: 42px; padding: 0 12px; border-radius: 12px; border: 1px solid var(--rv-border); background: #fff; color: var(--rv-ink); text-decoration: none; font-weight: 600; }
.rvcs-pages .current { background: var(--rv-violet-600); border-color: var(--rv-violet-600); color: #fff; }
.rvcs-pages a:hover { border-color: var(--rv-violet-500); color: var(--rv-violet-700); }
.rvcs-empty { display: grid; justify-items: center; gap: 12px; padding: clamp(28px, 5vw, 56px); text-align: center; border-radius: 22px; border: 1px dashed var(--rv-border-strong); background: var(--rv-violet-25); }
.rvcs-empty h3 { margin: 0; font-size: 1.4rem; }
.rvcs-empty p { margin: 0; max-width: 58ch; color: var(--rv-muted); }
.rvcs-empty__icon { display: grid; place-items: center; width: 60px; height: 60px; border-radius: 18px; background: #fff; color: var(--rv-violet-600); box-shadow: var(--rv-shadow-sm); }
.rvcs-empty .rvcs-hero__ctas { justify-content: center; margin-top: 6px; }

/* ---- Closing CTA -------------------------------------------------------- */
.rvcs-final { padding: 0 0 clamp(3rem, 2rem + 3vw, 5rem); }
.rvcs-final__panel { position: relative; isolation: isolate; overflow: hidden; display: grid; justify-items: center; gap: 14px; padding: clamp(36px, 6vw, 80px) clamp(20px, 5vw, 64px); border-radius: 30px; text-align: center; color: #fff; background: linear-gradient(135deg, #2A1F6E 0%, #483A72 45%, #0E5E57 100%); box-shadow: 0 50px 90px -50px rgba(36,28,92,.8); }
.rvcs-final__glow { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.rvcs-final__glow i { position: absolute; width: 420px; height: 420px; border-radius: 50%; filter: blur(70px); opacity: .5; animation: rvcs-drift 22s ease-in-out infinite alternate; }
.rvcs-final__glow i:nth-child(1) { left: -120px; top: -160px; background: #7C66F2; }
.rvcs-final__glow i:nth-child(2) { right: -120px; bottom: -180px; background: #1FB8A6; animation-duration: 26s; animation-delay: -6s; }
.rvcs-final__glow i:nth-child(3) { left: 40%; top: 20%; width: 260px; height: 260px; background: #EE6247; opacity: .22; animation-duration: 30s; animation-delay: -12s; }
.rvcs-final__panel::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,.16) 1px, transparent 0); background-size: 26px 26px; -webkit-mask-image: radial-gradient(ellipse 70% 70% at 50% 50%, #000 20%, transparent 75%); mask-image: radial-gradient(ellipse 70% 70% at 50% 50%, #000 20%, transparent 75%); }
.rvcs-final__panel h2 { margin: 0; max-width: 20ch; color: #fff; font-size: clamp(1.8rem, 1.2rem + 2.2vw, 3rem); line-height: 1.1; letter-spacing: -.025em; text-wrap: balance; }
.rvcs-final__panel p { margin: 0; max-width: 56ch; color: rgba(240,238,255,.86); font-size: 1.06rem; }
.rvcs-final__mail { color: #fff; font-weight: 700; user-select: all; }
.rvcs-final__panel .rvcs-hero__ctas { justify-content: center; margin-top: 8px; }
.rvcs-final__panel .rv-btn--primary { background: #fff; color: #2A1F6E; box-shadow: 0 14px 30px -12px rgba(0,0,0,.45); }
.rvcs-final__panel .rv-btn--primary:hover { background: #F3F0FF; color: #2A1F6E; }
.rvcs-final__ghost { color: #fff !important; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.34); transition: background-color .25s, border-color .25s; }
.rvcs-final__ghost:hover { background: rgba(255,255,255,.18); border-color: rgba(255,255,255,.6); }

/* ---- Single: header ----------------------------------------------------- */
.rvcs-head { position: relative; isolation: isolate; overflow: hidden; padding: clamp(1.75rem, 1rem + 2vw, 3rem) 0 clamp(2rem, 1rem + 2.5vw, 3.5rem); background: linear-gradient(180deg, #F5F2FF 0%, var(--rv-bg) 100%); }
.rvcs-crumbs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; font-size: .88rem; color: var(--rv-muted); }
.rvcs-crumbs a { color: var(--rv-muted); text-decoration: none; }
.rvcs-crumbs a:hover { color: var(--rv-violet-700); text-decoration: underline; }
.rvcs-head__grid { display: grid; gap: 24px; align-items: start; }
@media (min-width: 1000px) { .rvcs-head__grid { grid-template-columns: minmax(0, 1fr) 340px; gap: 48px; } }
.rvcs-head__copy { display: grid; gap: 16px; justify-items: start; }
.rvcs-head__title { margin: 0; font-size: clamp(2.1rem, 1.2rem + 3.2vw, 3.9rem); line-height: 1.05; letter-spacing: -.03em; text-wrap: balance; }
.rvcs-head__sum { margin: 0; max-width: 62ch; font-size: clamp(1.05rem, 1rem + .3vw, 1.2rem); line-height: 1.7; color: var(--rv-muted); }
.rvcs-panel { display: grid; gap: 16px; padding: 20px; border-radius: 20px; background: rgba(255,255,255,.9); border: 1px solid var(--rv-border); box-shadow: 0 24px 50px -36px rgba(36,28,92,.45); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.rvcs-panel dl { display: grid; gap: 12px; margin: 0; }
.rvcs-panel dl div { display: grid; gap: 2px; padding-bottom: 12px; border-bottom: 1px solid var(--rv-border); }
.rvcs-panel dl div:last-child { padding-bottom: 0; border-bottom: 0; }
.rvcs-panel dt { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--rv-subtle); }
.rvcs-panel dd { margin: 0; font-weight: 600; color: var(--rv-ink); overflow-wrap: anywhere; }
.rvcs-panel dd a { color: var(--rv-violet-700); }
.rvcs-head__cover { margin: clamp(24px, 4vw, 40px) 0 0; }
.rvcs-head__cover figcaption { margin-top: 8px; font-size: .85rem; color: var(--rv-muted); }

/* ---- Evidence image (uncropped, zoomable) ------------------------------- */
.rvcs-shot { position: relative; display: block; width: 100%; padding: 0; border: 1px solid var(--rv-border); border-radius: 16px; overflow: hidden; background: #F7F6FB; cursor: zoom-in; box-shadow: 0 24px 50px -40px rgba(36,28,92,.5); }
.rvcs-shot__img { display: block; width: auto; max-width: 100%; height: auto; max-height: 85vh; margin: 0 auto; }
.rvcs-shot__zoom { position: absolute; right: 10px; bottom: 10px; display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; background: rgba(23,19,43,.78); color: #fff; font-size: .78rem; font-weight: 600; opacity: 0; transform: translateY(4px); transition: opacity .25s, transform .25s; }
.rvcs-shot:hover .rvcs-shot__zoom, .rvcs-shot:focus-visible .rvcs-shot__zoom { opacity: 1; transform: none; }
.rvcs-shot:focus-visible { outline: 3px solid var(--rv-violet-500); outline-offset: 3px; }
@media (hover: none) { .rvcs-shot__zoom { opacity: 1; transform: none; } }

/* ---- Single: sections --------------------------------------------------- */
.rvcs-sec { position: relative; padding: clamp(2.5rem, 1.6rem + 3vw, 4.5rem) 0; }
.rvcs-sec + .rvcs-sec { border-top: 1px solid var(--rv-border); }
.rvcs-metrics { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.rvcs-metric { display: grid; gap: 6px; align-content: start; padding: 20px; border-radius: 18px; border: 1px solid var(--rv-border); background: #fff; }
.rvcs-metric--delivered { background: linear-gradient(180deg, #F7F5FF, #fff); border-color: var(--rv-violet-100); }
.rvcs-metric--observed { background: linear-gradient(180deg, #F0FAF7, #fff); border-color: #CDEDE6; }
.rvcs-metric__kind { justify-self: start; padding: 2px 9px; border-radius: 999px; font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; background: var(--rv-violet-100); color: var(--rv-violet-800); }
.rvcs-metric--observed .rvcs-metric__kind { background: var(--rv-teal-50); color: var(--rv-teal-700); }
.rvcs-metric__label { margin: 4px 0 0; font-weight: 600; color: var(--rv-text); }
.rvcs-metric__value { margin: 0; font-family: var(--rv-font-display); font-size: clamp(2rem, 1.6rem + 1.4vw, 2.8rem); font-weight: 700; line-height: 1.05; color: var(--rv-ink); font-variant-numeric: tabular-nums; }
.rvcs-metric__value small { font-family: var(--rv-font-body); font-size: .9rem; font-weight: 600; color: var(--rv-muted); }
.rvcs-metric__change { margin: 0; font-weight: 700; font-size: .92rem; color: var(--rv-text); font-variant-numeric: tabular-nums; }
.rvcs-metric__change--up { color: var(--rv-green-700); }
.rvcs-metric__change--down { color: var(--rv-coral-700); }
.rvcs-metric__meta { margin: 0; font-size: .8rem; color: var(--rv-subtle); }
.rvcs-metric__note { margin: 0; padding-top: 8px; border-top: 1px dashed var(--rv-border); font-size: .85rem; color: var(--rv-muted); line-height: 1.5; }

.rvcs-story__grid { display: grid; gap: clamp(28px, 4vw, 56px); }
@media (min-width: 960px) { .rvcs-story__grid { grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); } }
.rvcs-prose { max-width: 70ch; }
.rvcs-prose p { margin: 0 0 14px; font-size: 1.04rem; line-height: 1.8; color: var(--rv-text); }
.rvcs-figure { margin: 18px 0 0; }
.rvcs-goals { align-self: start; padding: 24px; border-radius: 22px; background: var(--rv-violet-25); border: 1px solid var(--rv-violet-100); }
.rvcs-goals .rvcs-h2 { font-size: 1.5rem; margin-bottom: 6px; }
.rvcs-goals__note { margin: 0 0 14px; font-size: .85rem; color: var(--rv-muted); }
.rvcs-goals ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.rvcs-goals li { display: flex; gap: 10px; align-items: flex-start; font-weight: 500; color: var(--rv-ink); }
.rvcs-goals li .rv-icon { flex: none; margin-top: 2px; color: var(--rv-violet-600); }

.rvcs-steps-sec { overflow: hidden; }
.rvcs-dots { position: absolute; inset: 0; z-index: -1; pointer-events: none; background-image: radial-gradient(circle at 1px 1px, rgba(84,64,201,.14) 1px, transparent 0); background-size: 24px 24px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 30%, #000 70%, transparent); mask-image: linear-gradient(90deg, transparent, #000 30%, #000 70%, transparent); opacity: .7; }
.rvcs-steps { position: relative; display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; counter-reset: cs; max-width: 860px; }
.rvcs-steps::before { content: ""; position: absolute; left: 21px; top: 10px; bottom: 10px; width: 2px; background: linear-gradient(180deg, var(--rv-violet-300), var(--rv-teal-500)); }
.rvcs-steps li { position: relative; padding: 16px 18px 16px 70px; border-radius: 16px; background: #fff; border: 1px solid var(--rv-border); counter-increment: cs; }
.rvcs-steps li::before { content: counter(cs, decimal-leading-zero); position: absolute; left: 0; top: 14px; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: linear-gradient(135deg, var(--rv-violet-500), #4533AB); color: #fff; font-family: var(--rv-font-display); font-weight: 700; font-size: .95rem; box-shadow: 0 0 0 5px var(--rv-bg); }
.rvcs-steps h3 { margin: 0 0 4px; font-size: 1.08rem; }
.rvcs-steps p { margin: 0; color: var(--rv-muted); line-height: 1.65; }

.rvcs-evidence, .rvcs-compare-sec, .rvcs-place-sec { background: #fff; }
.rvcs-gallery { display: grid; gap: clamp(26px, 4vw, 44px); max-width: 1120px; }
.rvcs-ev { margin: 0; display: grid; gap: 10px; }
.rvcs-ev figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.rvcs-ev__label { padding: 2px 10px; border-radius: 999px; font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; background: var(--rv-violet-50); color: var(--rv-violet-700); }
.rvcs-ev__label--before { background: #FFF5E0; color: var(--rv-amber-700); }
.rvcs-ev__label--after, .rvcs-ev__label--results { background: var(--rv-green-50); color: var(--rv-green-700); }
.rvcs-ev__label--feedback { background: var(--rv-coral-50); color: var(--rv-coral-700); }
.rvcs-ev__cap { flex: 1 1 320px; font-weight: 600; color: var(--rv-ink); line-height: 1.5; }
.rvcs-ev__meta { flex-basis: 100%; font-size: .82rem; color: var(--rv-subtle); }

.rvcs-compare { display: grid; gap: 12px; margin-bottom: 36px; }
.rvcs-compare:last-child { margin-bottom: 0; }
.rvcs-compare h3 { margin: 0; font-size: 1.2rem; }
.rvcs-compare__pair { display: grid; gap: 16px; align-items: start; }
@media (min-width: 900px) { .rvcs-compare__pair { grid-template-columns: 1fr 1fr; } }
.rvcs-compare__pair figure { margin: 0; display: grid; gap: 8px; }
.rvcs-compare__tag { justify-self: start; margin: 0; padding: 3px 12px; border-radius: 999px; font-size: .78rem; font-weight: 800; background: #FFF5E0; color: var(--rv-amber-700); }
.rvcs-compare__tag--after { background: var(--rv-green-50); color: var(--rv-green-700); }
.rvcs-compare__note { margin: 0; padding: 12px 14px; border-left: 3px solid var(--rv-teal-500); border-radius: 0 12px 12px 0; background: var(--rv-teal-50); color: var(--rv-ink); }

.rvcs-table-wrap { overflow-x: auto; border: 1px solid var(--rv-border); border-radius: 16px; }
.rvcs-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.rvcs-table th { background: var(--rv-violet-25); color: var(--rv-subtle); text-align: left; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; padding: 11px 14px; white-space: nowrap; }
.rvcs-table td { padding: 12px 14px; border-top: 1px solid var(--rv-border); vertical-align: top; color: var(--rv-text); }
.rvcs-table td a { color: var(--rv-violet-700); font-weight: 600; }
.rvcs-table td small { display: block; color: var(--rv-subtle); font-size: .75rem; }
.rvcs-attr { padding: 2px 9px; border-radius: 999px; font-size: .74rem; font-weight: 700; background: #F1F0F5; color: #55526B; }
.rvcs-attr--dofollow { background: var(--rv-green-50); color: var(--rv-green-700); }
.rvcs-attr--sponsored { background: #FFF5E0; color: var(--rv-amber-700); }
@media (max-width: 720px) {
  .rvcs-table thead { display: none; }
  .rvcs-table, .rvcs-table tbody, .rvcs-table tr, .rvcs-table td { display: block; }
  .rvcs-table tr { padding: 12px 14px; border-top: 1px solid var(--rv-border); }
  .rvcs-table tr:first-child { border-top: 0; }
  .rvcs-table td { padding: 4px 0; border: 0; display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px; }
  .rvcs-table td::before { content: attr(data-th); font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--rv-subtle); padding-top: 2px; }
}

.rvcs-interp__grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.rvcs-interp__col { padding: 22px; border-radius: 18px; background: #fff; border: 1px solid var(--rv-border); }
.rvcs-interp__col--ctx { background: var(--rv-violet-25); border-style: dashed; }
.rvcs-interp__col h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; font-size: 1.05rem; }
.rvcs-interp__col h3 .rv-icon { color: var(--rv-violet-600); }
.rvcs-interp__col p { margin: 0 0 10px; line-height: 1.7; color: var(--rv-text); }

.rvcs-quotes { display: grid; gap: 18px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.rvcs-quote { margin: 0; display: grid; gap: 14px; padding: 24px; border-radius: 20px; background: #fff; border: 1px solid var(--rv-border); }
.rvcs-quote blockquote { margin: 0; }
.rvcs-quote blockquote p { margin: 0; font-family: var(--rv-font-display); font-size: 1.2rem; line-height: 1.5; color: var(--rv-ink); }
.rvcs-quote blockquote p::before { content: "“"; color: var(--rv-violet-500); }
.rvcs-quote blockquote p::after { content: "”"; color: var(--rv-violet-500); }
.rvcs-quote figcaption { font-size: .88rem; font-weight: 600; color: var(--rv-muted); }

/* ---- Viewer ------------------------------------------------------------- */
.rvcs-locked, .rvcs-locked body { overflow: hidden; }
.rvcs-lightbox { position: fixed; inset: 0; z-index: 9999; display: flex; flex-direction: column; background: rgba(14,11,28,.94); }
.rvcs-lightbox[hidden] { display: none; }
.rvcs-lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: calc(env(safe-area-inset-top, 0px) + 10px) 14px 10px; color: #fff; }
.rvcs-lightbox__cap { margin: 0; font-size: .92rem; opacity: .9; }
.rvcs-lightbox__tools { display: flex; gap: 6px; flex: none; }
.rvcs-lightbox__tools button { min-width: 44px; min-height: 44px; padding: 0 12px; border-radius: 12px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.08); color: #fff; font: inherit; font-size: 1rem; font-weight: 700; cursor: pointer; }
.rvcs-lightbox__tools button:hover { background: rgba(255,255,255,.18); }
.rvcs-lightbox__tools button:focus-visible { outline: 2px solid #B3A6FF; outline-offset: 2px; }
.rvcs-lightbox__stage { flex: 1; overflow: auto; display: grid; place-items: center; padding: 10px 14px calc(env(safe-area-inset-bottom, 0px) + 14px); touch-action: pinch-zoom pan-x pan-y; }
.rvcs-lightbox__stage img { max-width: 100%; max-height: calc(100dvh - 90px); width: auto; height: auto; border-radius: 8px; background: #fff; cursor: zoom-in; }
.rvcs-lightbox.is-zoomed .rvcs-lightbox__stage { place-items: start; }
.rvcs-lightbox.is-zoomed .rvcs-lightbox__stage img { max-width: none; max-height: none; cursor: zoom-out; }

@media (prefers-reduced-motion: reduce) {
  .rvcs-mesh i, .rvcs-final__glow i, .rvcs-orbit__ring, .rvcs-orbit__node { animation: none; }
  .rvcs-card, .rvcs-cover__img, .rvcs-arrow .rv-icon, .rvcs-shot__zoom { transition: none; }
  .rvcs-card:hover { transform: none; }
  .rvcs-card:hover .rvcs-cover__img, .rvcs-feat:hover .rvcs-cover__img { transform: none; }
}
@media (max-width: 700px) { .rvcs-mesh i { filter: blur(50px); } .rvcs-hero__art { min-height: 0; } }

.rvcs-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: .9rem; }
.rvcs-metric__kind--obs { background: var(--rv-teal-50); color: var(--rv-teal-700); }

/* Project overview (description written in the editor) */
.rvcs-overview__grid { display: grid; gap: 12px 48px; }
@media (min-width: 960px) { .rvcs-overview__grid { grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); } }
.rvcs-overview__body { font-size: 1.08rem; }
.rvcs-overview__body p:first-child { font-size: 1.2rem; color: var(--rv-ink); }
.rvcs-overview__body strong { color: var(--rv-ink); }
.rvcs-overview__body img { max-width: 100%; height: auto; border-radius: 14px; border: 1px solid var(--rv-border); }
.rvcs-overview__body ul, .rvcs-overview__body ol { padding-left: 20px; line-height: 1.8; }