/* ===== Digistates revamp components (Oct 2026) ===== */
:root { --rv-red: #E83646; --rv-navy: #0D2648; --rv-ink: #121826; --rv-muted: #5b6475; --rv-bg: #f5f7fb; --rv-line: #e6e9f0; }

.rv-hero { position: relative; min-height: 560px; display: flex; align-items: flex-end; padding: 190px 0 80px; color: #fff; background: var(--rv-navy); overflow: hidden; }
.rv-hero.small { min-height: 420px; padding-bottom: 56px; }
.rv-hero > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .45; }
.rv-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,14,30,.92) 0%, rgba(6,14,30,.55) 55%, rgba(6,14,30,.2) 100%); }
.rv-hero .container { position: relative; z-index: 2; }
.rv-kicker { display: inline-block; font-size: 13px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--rv-red); margin-bottom: 14px; }
.rv-hero h1 { font-size: clamp(32px, 5vw, 58px); font-weight: 700; line-height: 1.12; max-width: 900px; margin: 0 0 18px; color: #fff; }
.rv-hero p { font-size: 18px; max-width: 680px; color: rgba(255,255,255,.86); margin-bottom: 28px; }
.rv-crumbs { list-style: none; padding: 0; margin: 0 0 18px; display: flex; gap: 8px; font-size: 14px; color: rgba(255,255,255,.7); }
.rv-crumbs a { color: #fff; }
.rv-crumbs li + li::before { content: "/"; margin-right: 8px; opacity: .6; }
.rv-btns { display: flex; flex-wrap: wrap; gap: 12px; }
.rv-btn-ghost { display: inline-flex; align-items: center; padding: 12px 26px; border: 1px solid rgba(255,255,255,.6); border-radius: 50px; color: #fff; font-weight: 500; }
.rv-btn-ghost:hover { background: #fff; color: var(--rv-navy); }

.rv-section { padding: 90px 0; }
.rv-section.alt { background: var(--rv-bg); }
.rv-section.dark { background: var(--rv-navy); color: #fff; }
.rv-head { max-width: 760px; margin: 0 auto 48px; text-align: center; }
.rv-head.left { margin-left: 0; text-align: left; }
.rv-head h2 { font-size: clamp(26px, 3.4vw, 40px); font-weight: 700; color: var(--rv-ink); margin: 0 0 12px; }
.rv-section.dark .rv-head h2 { color: #fff; }
.rv-head p { font-size: 17px; color: var(--rv-muted); margin: 0; }
.rv-section.dark .rv-head p { color: rgba(255,255,255,.75); }
.rv-lead { font-size: 18px; line-height: 1.75; color: #2d3445; }

.rv-split { display: grid; grid-template-columns: 1.1fr 1fr; gap: 56px; align-items: center; }
.rv-split img { width: 100%; border-radius: 18px; object-fit: cover; aspect-ratio: 4/3; }
@media (max-width: 991px) { .rv-split { grid-template-columns: 1fr; gap: 32px; } }

.rv-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 18px; }
.rv-stat { background: #fff; border: 1px solid var(--rv-line); border-radius: 16px; padding: 24px; }
.rv-section.dark .rv-stat, .rv-hero .rv-stat { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.14); }
.rv-stat b { display: block; font-size: 34px; font-weight: 700; color: var(--rv-red); line-height: 1.1; }
.rv-stat span { display: block; margin-top: 6px; font-size: 14px; color: var(--rv-muted); }
.rv-section.dark .rv-stat span, .rv-hero .rv-stat span { color: rgba(255,255,255,.78); }
.rv-hero .rv-stats { margin-top: 36px; max-width: 980px; }

.rv-grid { display: grid; gap: 24px; grid-template-columns: repeat(3, 1fr); }
.rv-grid.two { grid-template-columns: repeat(2, 1fr); }
.rv-grid.four { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1199px) { .rv-grid.four { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 991px) { .rv-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .rv-grid, .rv-grid.two, .rv-grid.four { grid-template-columns: 1fr; } }

.rv-card { background: #fff; border: 1px solid var(--rv-line); border-radius: 18px; padding: 28px; height: 100%; transition: transform .3s, box-shadow .3s; }
.rv-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(13,38,72,.08); }
.rv-card .num { font-size: 14px; font-weight: 700; color: var(--rv-red); }
.rv-card h3 { font-size: 20px; font-weight: 600; color: var(--rv-ink); margin: 10px 0; }
.rv-card p { color: var(--rv-muted); margin: 0; font-size: 15px; line-height: 1.65; }
.rv-card ul { margin: 12px 0 0; padding-left: 18px; color: var(--rv-muted); font-size: 15px; }
.rv-card a.more { display: inline-block; margin-top: 16px; color: var(--rv-red); font-weight: 600; }

.rv-service { display: block; position: relative; border-radius: 18px; overflow: hidden; min-height: 300px; color: #fff; background: var(--rv-navy); }
.rv-service img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; transition: transform .6s, opacity .4s; }
.rv-service:hover img { transform: scale(1.06); opacity: .4; }
.rv-service .in { position: relative; z-index: 2; padding: 26px; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; min-height: 300px; background: linear-gradient(0deg, rgba(6,14,30,.9) 0%, rgba(6,14,30,0) 75%); }
.rv-service h3 { font-size: 21px; font-weight: 600; margin: 6px 0 6px; color: #fff; }
.rv-service p { font-size: 14px; color: rgba(255,255,255,.85); margin: 0; }
.rv-service .num { color: var(--rv-red); font-weight: 700; font-size: 14px; }

/* Case studies */
.rv-case { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--rv-line); border-radius: 18px; overflow: hidden; height: 100%; transition: transform .3s, box-shadow .3s; }
.rv-case:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(13,38,72,.10); }
.rv-case .ph { position: relative; aspect-ratio: 16/10; overflow: hidden; background: #dfe4ee; }
.rv-case .ph img { width: 100%; height: 100%; object-fit: cover; }
.rv-case .tag { position: absolute; top: 14px; left: 14px; background: var(--rv-red); color: #fff; font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 30px; }
.rv-case .bd { padding: 22px 22px 24px; display: flex; flex-direction: column; flex: 1; }
.rv-case .client { font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--rv-red); }
.rv-case h3 { font-size: 19px; font-weight: 600; color: var(--rv-ink); margin: 6px 0 8px; line-height: 1.35; }
.rv-case .meta { font-size: 13px; color: var(--rv-muted); margin-bottom: 10px; }
.rv-case p { font-size: 14.5px; color: #4a5263; line-height: 1.65; margin: 0 0 12px; }
.rv-case .kpis { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.rv-case .kpis span { background: #fdecee; color: #b3202f; font-size: 12.5px; font-weight: 600; padding: 5px 10px; border-radius: 8px; }
.rv-case .watch { margin-top: 12px; font-weight: 600; color: var(--rv-red); font-size: 14px; }

.rv-feature { display: grid; grid-template-columns: 1.2fr 1fr; background: #fff; border: 1px solid var(--rv-line); border-radius: 22px; overflow: hidden; margin-bottom: 28px; }
.rv-feature .ph { min-height: 340px; }
.rv-feature .ph img { width: 100%; height: 100%; object-fit: cover; }
.rv-feature .bd { padding: 36px; }
.rv-feature h3 { font-size: 26px; font-weight: 700; color: var(--rv-ink); margin: 8px 0 10px; }
.rv-feature p { color: #4a5263; line-height: 1.75; }
.rv-feature .rv-stats { margin-top: 18px; grid-template-columns: repeat(2, 1fr); }
.rv-feature .rv-stat { padding: 16px; }
.rv-feature .rv-stat b { font-size: 24px; }
@media (max-width: 991px) { .rv-feature { grid-template-columns: 1fr; } .rv-feature .ph { min-height: 240px; } }

.rv-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-bottom: 36px; }
.rv-filters button { border: 1px solid var(--rv-line); background: #fff; border-radius: 40px; padding: 9px 20px; font-size: 14px; font-weight: 500; color: var(--rv-ink); cursor: pointer; }
.rv-filters button.active, .rv-filters button:hover { background: var(--rv-red); border-color: var(--rv-red); color: #fff; }
.rv-hide { display: none !important; }

/* AI block */
.rv-ai { background: linear-gradient(135deg, #0D2648 0%, #1a1446 100%); color: #fff; border-radius: 24px; padding: 48px; position: relative; overflow: hidden; }
.rv-ai::before { content: ""; position: absolute; width: 420px; height: 420px; right: -140px; top: -160px; border-radius: 50%; background: radial-gradient(circle, rgba(232,54,70,.45), rgba(232,54,70,0) 70%); }
.rv-ai .badge-ai { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); border-radius: 40px; padding: 6px 14px; font-size: 13px; font-weight: 600; letter-spacing: .08em; }
.rv-ai h2 { color: #fff; font-size: clamp(24px, 3vw, 34px); font-weight: 700; margin: 16px 0 10px; position: relative; }
.rv-ai > p { color: rgba(255,255,255,.8); max-width: 760px; position: relative; }
.rv-ai .rv-grid { margin-top: 28px; position: relative; }
.rv-ai .item { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); border-radius: 16px; padding: 22px; }
.rv-ai .item h4 { color: #fff; font-size: 17px; font-weight: 600; margin: 0 0 8px; }
.rv-ai .item p { color: rgba(255,255,255,.78); font-size: 14.5px; margin: 0; line-height: 1.6; }
@media (max-width: 600px) { .rv-ai { padding: 30px 22px; } }

.rv-logos img { width: 100%; border-radius: 16px; border: 1px solid var(--rv-line); background: #fff; }
.rv-logos h3 { font-size: 18px; font-weight: 600; margin: 32px 0 14px; color: var(--rv-ink); }
.rv-names { columns: 3 220px; column-gap: 32px; color: #3a4252; font-size: 15px; }
.rv-names li { break-inside: avoid; margin-bottom: 6px; }

.rv-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 16px; counter-reset: s; }
.rv-steps div { border-top: 3px solid var(--rv-red); padding-top: 14px; }
.rv-steps b { display: block; font-size: 17px; color: var(--rv-ink); margin-bottom: 6px; }
.rv-section.dark .rv-steps b { color: #fff; }
.rv-steps span { font-size: 14px; color: var(--rv-muted); }
.rv-section.dark .rv-steps span { color: rgba(255,255,255,.75); }

.rv-cta { background: var(--rv-red); color: #fff; border-radius: 24px; padding: 48px; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.rv-cta h2 { color: #fff; font-size: clamp(24px, 3vw, 34px); font-weight: 700; margin: 0 0 6px; }
.rv-cta p { margin: 0; color: rgba(255,255,255,.9); }
.rv-cta a { background: #fff; color: var(--rv-red); padding: 14px 30px; border-radius: 50px; font-weight: 600; }

.rv-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.rv-chips span { background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: 30px; padding: 6px 14px; font-size: 13.5px; color: #3a4252; }
.rv-note { font-size: 13px; color: var(--rv-muted); margin-top: 18px; }
.rv-ref h4 { font-size: 16px; font-weight: 600; color: var(--rv-ink); margin: 0 0 10px; }
.rv-ref ul { padding-left: 18px; color: var(--rv-muted); font-size: 14.5px; margin: 0; }
.rv-head h2, .rv-hero h1, .rv-feature h3, .rv-ai h2, .rv-cta h2 { line-height: 1.25; }
.rv-crumbs li { color: rgba(255,255,255,.8); }

/* ===== Cybersecurity-style icon cards & motion ===== */
.rv-card .ic, .rv-ai .item .ic { display: flex; align-items: center; justify-content: center; width: 72px; height: 72px; border-radius: 14px; background: #fdecee; margin-bottom: 16px; transition: background .4s ease, transform .6s ease; perspective: 400px; }
.rv-card .ic svg, .rv-ai .item .ic svg { width: 36px; height: 36px; stroke: var(--rv-red); fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: transform .7s cubic-bezier(.2,.8,.2,1), stroke .4s; }
.rv-card:hover .ic { background: var(--rv-red); transform: translateY(-4px); }
.rv-card:hover .ic svg { stroke: #fff; transform: rotateY(360deg); }
.rv-card.center { text-align: center; }
.rv-card.center .ic { margin-left: auto; margin-right: auto; }
.rv-ai .item .ic { width: 56px; height: 56px; background: rgba(232,54,70,.16); }
.rv-ai .item .ic svg { width: 28px; height: 28px; stroke: #ff8a95; }
.rv-ai .item { transition: transform .35s, background .35s, border-color .35s; }
.rv-ai .item:hover { transform: translateY(-6px); background: rgba(255,255,255,.1); border-color: rgba(232,54,70,.5); }
.rv-ai .item:hover .ic svg { animation: rvWiggle .8s ease; }
.rv-ai .badge-ai { animation: rvPulse 2.6s ease-in-out infinite; }
@keyframes rvWiggle { 0%,100% { transform: rotate(0) } 25% { transform: rotate(-12deg) scale(1.1) } 50% { transform: rotate(10deg) scale(1.1) } 75% { transform: rotate(-6deg) } }
@keyframes rvPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(232,54,70,.45) } 50% { box-shadow: 0 0 0 10px rgba(232,54,70,0) } }
@keyframes rvFloat { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-8px) } }

/* Gradient "governance" sections like the cybersecurity page */
.rv-section.gov { position: relative; background: #0D2648; color: #fff; overflow: hidden; }
.rv-section.gov::before { content: ""; position: absolute; inset: 0; background: var(--gov-bg, url(../images/governance.jpg)) fixed no-repeat center/cover; opacity: .12; }
.rv-section.gov .container { position: relative; z-index: 2; }
.rv-section.gov .rv-head h2 { color: #fff; }
.rv-section.gov .rv-head p { color: rgba(255,255,255,.75); }
.rv-section.gov .rv-card { background: #0D2648; border: 0; box-shadow: rgba(0,0,0,.18) 0 10px 25px; }
.rv-section.gov .rv-grid > .rv-card:nth-child(odd) { background-image: linear-gradient(120deg, #E83646 0%, #0D2648 100%); }
.rv-section.gov .rv-card h3 { color: #fff; }
.rv-section.gov .rv-card p, .rv-section.gov .rv-card ul { color: rgba(255,255,255,.8); }
.rv-section.gov .rv-card .num { color: #ffb3c0; }
.rv-section.gov .rv-card .ic { background: rgba(255,255,255,.12); }
.rv-section.gov .rv-card .ic svg { stroke: #ffb3db; }
.rv-section.gov .rv-card:hover .ic { background: #fff; }
.rv-section.gov .rv-card:hover .ic svg { stroke: var(--rv-red); }
.rv-head .slogin { margin-bottom: 10px; }

.rv-steps div { transition: transform .35s; }
.rv-steps div:hover { transform: translateY(-6px); }
.rv-steps .sic { display: inline-flex; width: 46px; height: 46px; border-radius: 50%; align-items: center; justify-content: center; background: rgba(232,54,70,.15); margin-bottom: 10px; }
.rv-steps .sic svg { width: 22px; height: 22px; stroke: var(--rv-red); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.rv-steps div:hover .sic svg { animation: rvWiggle .8s ease; }
.rv-stat { transition: transform .35s; }
.rv-stat:hover { transform: translateY(-5px); }

/* Products */
.rv-prod { display: grid; grid-template-columns: 1fr 1.1fr; gap: 48px; align-items: center; padding: 40px 0; border-bottom: 1px solid var(--rv-line); scroll-margin-top: 110px; }
.rv-prod:nth-child(even) .ph { order: 2; }
.rv-prod .ph { border-radius: 20px; overflow: hidden; aspect-ratio: 16/10; background: #dfe4ee; }
.rv-prod .ph img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s; }
.rv-prod:hover .ph img { transform: scale(1.06); }
.rv-prod h3 { font-size: 28px; font-weight: 700; color: var(--rv-ink); margin: 6px 0 10px; }
.rv-prod p { color: #4a5263; line-height: 1.7; }
.rv-items { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 18px 0 22px; }
.rv-items div { display: flex; align-items: center; gap: 10px; background: var(--rv-bg); border: 1px solid var(--rv-line); border-radius: 12px; padding: 10px 14px; font-size: 14.5px; font-weight: 500; color: var(--rv-ink); transition: transform .3s, border-color .3s; }
.rv-items div:hover { transform: translateX(4px); border-color: var(--rv-red); }
.rv-items svg { width: 20px; height: 20px; flex: none; stroke: var(--rv-red); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 991px) { .rv-prod { grid-template-columns: 1fr; gap: 24px; } .rv-prod:nth-child(even) .ph { order: 0; } }
@media (max-width: 480px) { .rv-items { grid-template-columns: 1fr; } }
.rv-gear { position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 4/3; }
.rv-gear img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s; }
.rv-gear:hover img { transform: scale(1.07); }
.rv-gear figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 16px 14px; background: linear-gradient(0deg, rgba(6,14,30,.92), rgba(6,14,30,0)); color: #fff; font-size: 14px; }
.rv-gear figcaption b { display: block; font-size: 16px; }

/* Social icons on light backgrounds */
.contactus-item .social a svg { fill: var(--rv-red); }
.footer .social { flex-wrap: wrap; }

/* ===== Home hero carousel ===== */
.rv-slider { position: relative; background: var(--rv-navy); }
.rv-slider .carousel-item { min-height: 720px; position: relative; }
.rv-slider .carousel-item > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .5; transform: scale(1.08); transition: transform 7s ease; }
.rv-slider .carousel-item.active > img { transform: scale(1); }
.rv-slider .carousel-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,14,30,.94) 0%, rgba(6,14,30,.6) 55%, rgba(6,14,30,.15) 100%); }
.rv-slider .cap { position: relative; z-index: 2; padding: 200px 0 150px; color: #fff; }
.rv-slider .cap h1, .rv-slider .cap h2 { font-size: clamp(32px, 5vw, 58px); font-weight: 700; line-height: 1.12; max-width: 860px; color: #fff; margin: 0 0 18px; }
.rv-slider .cap p { font-size: 18px; max-width: 640px; color: rgba(255,255,255,.86); margin-bottom: 28px; }
.rv-slider .carousel-item.active .cap > * { animation: rvUp .9s both; }
.rv-slider .carousel-item.active .cap > *:nth-child(2) { animation-delay: .15s; }
.rv-slider .carousel-item.active .cap > *:nth-child(3) { animation-delay: .3s; }
.rv-slider .carousel-item.active .cap > *:nth-child(4) { animation-delay: .45s; }
@keyframes rvUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: none; } }
.rv-slider .carousel-indicators { justify-content: flex-start; margin: 0 auto 36px; max-width: 1320px; padding: 0 12px; gap: 6px; flex-wrap: wrap; z-index: 3; }
.rv-slider .carousel-indicators [data-bs-target] { width: auto; height: auto; text-indent: 0; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.25); border-radius: 40px; padding: 6px 14px; font-size: 12.5px; color: #fff; opacity: 1; margin: 0; transition: background .3s; }
.rv-slider .carousel-indicators .active { background: var(--rv-red); border-color: var(--rv-red); }
.rv-slider .carousel-control-prev, .rv-slider .carousel-control-next { width: 5%; z-index: 3; }
.rv-slider .progress-bar-rv { position: absolute; left: 0; bottom: 0; height: 3px; background: var(--rv-red); z-index: 4; animation: rvProg 6s linear infinite; }
@keyframes rvProg { from { width: 0 } to { width: 100% } }
@media (max-width: 767px) { .rv-slider .carousel-item { min-height: 640px; } .rv-slider .cap { padding: 150px 0 170px; } .rv-slider .carousel-indicators [data-bs-target] { font-size: 11px; padding: 4px 10px; } }
.rv-statbar { position: relative; z-index: 5; margin-top: -50px; }
.rv-statbar .rv-stats { background: #fff; border-radius: 20px; box-shadow: 0 20px 50px rgba(13,38,72,.12); padding: 18px; }
.rv-statbar .rv-stat { border: 0; padding: 14px 18px; }

/* ===== Clickable case cards ===== */
.rv-case { position: relative; }
.rv-case .stretched { position: absolute; inset: 0; z-index: 1; }
.rv-case .watch { position: relative; z-index: 2; }
.rv-case .go { margin-top: 12px; font-weight: 600; color: var(--rv-red); font-size: 14px; }
.rv-case:hover h3 { color: var(--rv-red); }
.rv-case .ph img { transition: transform .7s; }
.rv-case:hover .ph img { transform: scale(1.06); }
.rv-feature .more-btn { display: inline-block; margin-top: 18px; }

/* ===== Case detail page ===== */
.rv-facts { background: #fff; border: 1px solid var(--rv-line); border-radius: 18px; padding: 26px; position: sticky; top: 110px; }
.rv-facts dl { margin: 0; }
.rv-facts dt { font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--rv-red); margin-top: 14px; }
.rv-facts dt:first-child { margin-top: 0; }
.rv-facts dd { margin: 4px 0 0; color: var(--rv-ink); font-weight: 500; }
.rv-detail { display: grid; grid-template-columns: 1.6fr 1fr; gap: 48px; align-items: start; }
.rv-detail .body p { font-size: 17px; line-height: 1.8; color: #2d3445; }
.rv-detail .body ul { padding-left: 20px; color: #2d3445; font-size: 16px; line-height: 1.8; }
@media (max-width: 991px) { .rv-detail { grid-template-columns: 1fr; } .rv-facts { position: static; } }
.rv-timeline { position: relative; padding-left: 28px; border-left: 2px solid rgba(232,54,70,.35); }
.rv-timeline div { position: relative; margin-bottom: 22px; }
.rv-timeline div::before { content: ""; position: absolute; left: -36px; top: 4px; width: 14px; height: 14px; border-radius: 50%; background: var(--rv-red); box-shadow: 0 0 0 5px rgba(232,54,70,.2); }
.rv-timeline b { display: block; color: #fff; font-size: 16px; }
.rv-timeline span { color: rgba(255,255,255,.78); font-size: 15px; }
.rv-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.rv-gallery a { display: block; border-radius: 14px; overflow: hidden; aspect-ratio: 4/3; background: #dfe4ee; }
.rv-gallery a img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.rv-gallery a:hover img { transform: scale(1.07); }
.rv-gallery.masonry { display: block; columns: 3 260px; column-gap: 14px; }
.rv-gallery.masonry a { aspect-ratio: auto; margin-bottom: 14px; break-inside: avoid; position: relative; }
.rv-gallery.masonry a img { height: auto; }
.rv-gallery a figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 30px 12px 10px; font-size: 13px; color: #fff; background: linear-gradient(0deg, rgba(6,14,30,.88), rgba(6,14,30,0)); opacity: 0; transition: opacity .3s; }
.rv-gallery a:hover figcaption { opacity: 1; }
@media (max-width: 767px) { .rv-gallery { grid-template-columns: repeat(2, 1fr); } }
.rv-video { position: relative; aspect-ratio: 16/9; border-radius: 18px; overflow: hidden; background: #000; }
.rv-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.rv-pn { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.rv-pn a { flex: 1; min-width: 240px; border: 1px solid var(--rv-line); border-radius: 16px; padding: 18px 22px; background: #fff; color: var(--rv-ink); transition: border-color .3s, transform .3s; }
.rv-pn a:hover { border-color: var(--rv-red); transform: translateY(-3px); }
.rv-pn small { display: block; color: var(--rv-red); font-weight: 700; letter-spacing: .1em; font-size: 12px; text-transform: uppercase; }
.rv-pn a.next { text-align: right; }

/* Lightbox */
.rv-lb { position: fixed; inset: 0; background: rgba(6,10,20,.94); z-index: 9999; display: none; align-items: center; justify-content: center; padding: 30px; }
.rv-lb.open { display: flex; }
.rv-lb img { max-width: 100%; max-height: 82vh; border-radius: 10px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.rv-lb .cap { position: absolute; bottom: 24px; left: 0; right: 0; text-align: center; color: #fff; font-size: 15px; }
.rv-lb button { position: absolute; background: rgba(255,255,255,.12); color: #fff; border: 0; width: 48px; height: 48px; border-radius: 50%; font-size: 22px; cursor: pointer; }
.rv-lb .x { top: 20px; right: 20px; } .rv-lb .pv { left: 20px; top: 50%; } .rv-lb .nx { right: 20px; top: 50%; }
.rv-slider .carousel-indicators { bottom: 70px; margin-bottom: 0; }
@media (max-width: 767px) { .rv-slider .carousel-indicators { bottom: 64px; } }
.rv-detail .body p { margin-bottom: 18px; }

/* Client logo grid (native-resolution logos) */
.rv-logogrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.rv-logogrid .lg { background: #fff; border: 1px solid var(--rv-line); border-radius: 14px; height: 104px; display: flex; align-items: center; justify-content: center; padding: 14px; transition: transform .3s, box-shadow .3s; }
.rv-logogrid .lg img { max-width: 100%; max-height: 64px; width: auto; height: auto; object-fit: contain; filter: grayscale(25%); transition: filter .3s, transform .3s; }
.rv-logogrid .lg:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(13,38,72,.10); }
.rv-logogrid .lg:hover img { filter: none; transform: scale(1.05); }
.rv-logos img { display: block; margin: 0 auto; image-rendering: auto; }

/* ===== Corporate gifts catalogue ===== */
.gf-tools { position: sticky; top: 84px; z-index: 20; background: rgba(245,247,251,.96); backdrop-filter: blur(8px); padding: 14px 0 10px; margin-bottom: 18px; border-bottom: 1px solid var(--rv-line); }
.gf-search { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid var(--rv-line); border-radius: 50px; padding: 4px 6px 4px 18px; box-shadow: 0 8px 24px rgba(13,38,72,.06); }
.gf-search svg { width: 20px; height: 20px; stroke: var(--rv-muted); fill: none; stroke-width: 2; flex: none; }
.gf-search input { flex: 1; border: 0; outline: 0; font-size: 16px; padding: 12px 0; background: transparent; min-width: 0; }
.gf-search .gf-count { font-size: 13px; color: var(--rv-muted); padding-right: 12px; white-space: nowrap; }
.gf-chips { display: flex; gap: 8px; overflow-x: auto; padding: 12px 0 2px; scrollbar-width: none; }
.gf-chips button { flex: none; border: 1px solid var(--rv-line); background: #fff; border-radius: 40px; padding: 8px 16px; font-size: 14px; font-weight: 500; color: var(--rv-ink); cursor: pointer; }
.gf-chips button small { color: var(--rv-muted); margin-left: 4px; }
.gf-chips button.active { background: var(--rv-red); border-color: var(--rv-red); color: #fff; }
.gf-chips button.active small { color: rgba(255,255,255,.8); }
.gf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.gf-card { background: #fff; border: 1px solid var(--rv-line); border-radius: 16px; overflow: hidden; display: flex; flex-direction: column; transition: transform .3s, box-shadow .3s, border-color .3s; animation: rvUp .5s both; }
.gf-card:hover { transform: translateY(-4px); box-shadow: 0 16px 34px rgba(13,38,72,.10); }
.gf-card.in { border-color: var(--rv-red); box-shadow: 0 0 0 2px rgba(232,54,70,.15); }
.gf-ph { position: relative; display: block; width: 100%; aspect-ratio: 1/1; background: #f6f7fa; border: 0; padding: 14px; cursor: zoom-in; }
.gf-ph img { width: 100%; height: 100%; object-fit: contain; transition: transform .5s; }
.gf-card:hover .gf-ph img { transform: scale(1.05); }
.gf-new { position: absolute; top: 10px; left: 10px; background: var(--rv-red); color: #fff; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 20px; }
.gf-bd { padding: 14px 16px 16px; display: flex; flex-direction: column; flex: 1; }
.gf-code { font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--rv-red); }
.gf-bd h3 { font-size: 15.5px; font-weight: 600; color: var(--rv-ink); margin: 4px 0 6px; line-height: 1.35; }
.gf-bd p { font-size: 13px; color: var(--rv-muted); margin: 0 0 12px; line-height: 1.5; }
.gf-act { margin-top: auto; }
.gf-add { width: 100%; border: 1px solid var(--rv-red); background: #fff; color: var(--rv-red); border-radius: 40px; padding: 9px; font-weight: 600; font-size: 14px; cursor: pointer; transition: background .25s, color .25s; }
.gf-add:hover { background: var(--rv-red); color: #fff; }
.gf-qty { display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--rv-red); border-radius: 40px; overflow: hidden; }
.gf-qty button { border: 0; background: var(--rv-red); color: #fff; width: 38px; height: 36px; font-size: 18px; cursor: pointer; }
.gf-qty span, .gf-qty input { flex: 1; text-align: center; font-weight: 700; color: var(--rv-ink); border: 0; width: 50px; font-size: 15px; -moz-appearance: textfield; }
.gf-qty input::-webkit-inner-spin-button { -webkit-appearance: none; }
.gf-empty { grid-column: 1/-1; text-align: center; color: var(--rv-muted); padding: 30px; }
#giftMore { display: block; margin: 30px auto 0; }
.gf-fab { position: fixed; right: 22px; bottom: 90px; z-index: 900; display: none; align-items: center; gap: 10px; background: var(--rv-red); color: #fff; border: 0; border-radius: 50px; padding: 14px 22px; font-weight: 600; box-shadow: 0 12px 30px rgba(232,54,70,.4); cursor: pointer; }
.gf-fab.show { display: inline-flex; }
.gf-fab b { background: #fff; color: var(--rv-red); border-radius: 20px; min-width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
.gf-fab.bump { animation: rvBump .45s; }
@keyframes rvBump { 30% { transform: scale(1.15); } 60% { transform: scale(.95); } }
.gf-drawer, .gf-modal { position: fixed; inset: 0; background: rgba(6,10,20,.55); z-index: 10000; display: none; }
.gf-drawer.open, .gf-modal.open { display: block; }
.gf-panel { position: absolute; right: 0; top: 0; bottom: 0; width: min(520px, 100%); background: #fff; display: flex; flex-direction: column; animation: gfIn .3s; }
@keyframes gfIn { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
.gf-ph2 { display: flex; align-items: center; justify-content: space-between; padding: 18px 22px; border-bottom: 1px solid var(--rv-line); }
.gf-ph2 h3 { margin: 0; font-size: 20px; font-weight: 700; }
.gf-close { border: 0; background: var(--rv-bg); width: 38px; height: 38px; border-radius: 50%; font-size: 20px; cursor: pointer; }
.gf-scroll { overflow-y: auto; padding: 16px 22px 24px; flex: 1; }
.gf-list { list-style: none; padding: 0; margin: 0 0 8px; }
.gf-list li { display: grid; grid-template-columns: 56px 1fr 120px 28px; gap: 10px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--rv-line); }
.gf-list li.gf-empty { display: block; }
.gf-list img { width: 56px; height: 56px; object-fit: contain; background: #f6f7fa; border-radius: 10px; }
.gf-list b { display: block; font-size: 14px; line-height: 1.3; }
.gf-list small { color: var(--rv-red); font-weight: 600; font-size: 12px; }
.gf-list .gf-qty button { width: 30px; height: 30px; font-size: 16px; }
.gf-rm { border: 0; background: none; font-size: 22px; color: var(--rv-muted); cursor: pointer; }
.gf-total { font-size: 14px; color: var(--rv-muted); margin: 6px 0 16px; }
.gf-form label { display: block; font-size: 13px; font-weight: 600; margin: 10px 0 4px; color: var(--rv-ink); }
.gf-form input, .gf-form select, .gf-form textarea { width: 100%; border: 1px solid var(--rv-line); border-radius: 10px; padding: 10px 12px; font-size: 15px; }
.gf-form .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.gf-form button[type=submit] { width: 100%; margin-top: 16px; }
.gf-msg { margin-top: 12px; font-size: 14px; border-radius: 10px; }
.gf-msg.ok { background: #e9f8ef; color: #1c7a43; padding: 12px; }
.gf-msg.err { background: #fdecee; color: #b3202f; padding: 12px; }
.gf-note { font-size: 12.5px; color: var(--rv-muted); margin-top: 10px; }
.gf-modal .gf-mwrap { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: min(900px, 94vw); max-height: 90vh; overflow: auto; background: #fff; border-radius: 20px; padding: 26px; animation: rvUp .3s; }
.gf-modal .gf-close { position: absolute; right: 16px; top: 16px; }
.gf-mbody { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; }
.gf-mimg { background: #f6f7fa; border-radius: 16px; padding: 16px; }
.gf-mimg img { width: 100%; max-height: 420px; object-fit: contain; }
.gf-mbody h3 { font-size: 22px; font-weight: 700; margin: 6px 0 12px; }
.gf-mbody h4 { font-size: 15px; margin: 12px 0 6px; }
.gf-mbody ul { padding-left: 18px; color: #3a4252; }
.gf-mbody dl { display: grid; grid-template-columns: 120px 1fr; gap: 6px 12px; font-size: 14px; margin: 12px 0; }
.gf-mbody dt { color: var(--rv-muted); font-weight: 600; }
.gf-avail { font-size: 13px; background: #fff6e5; color: #8a5a00; padding: 10px 12px; border-radius: 10px; }
@media (max-width: 767px) { .gf-mbody { grid-template-columns: 1fr; } .gf-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } .gf-bd h3 { font-size: 14px; } .gf-list li { grid-template-columns: 48px 1fr 100px 24px; } .gf-tools { top: 70px; } }
.gf-files { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
.gf-drop { display: flex !important; gap: 10px; align-items: flex-start; border: 1.5px dashed #c9cfdb; border-radius: 12px; padding: 12px; cursor: pointer; margin: 0 !important; transition: border-color .25s, background .25s; }
.gf-drop:hover, .gf-drop.has { border-color: var(--rv-red); background: #fff7f8; }
.gf-drop svg { width: 26px; height: 26px; flex: none; stroke: var(--rv-red); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.gf-drop span { display: flex; flex-direction: column; font-weight: 400; min-width: 0; }
.gf-drop b { font-size: 13.5px; }
.gf-drop small { color: var(--rv-muted); font-size: 12px; }
.gf-drop em { font-style: normal; font-size: 12px; color: var(--rv-red); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 2px; }
.gf-drop input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; }
@media (max-width: 480px) { .gf-files { grid-template-columns: 1fr; } }
.gf-ph { padding: 18px; }
