/*
Theme Name: RevivaClinic
Theme URI: https://rahoclub.id
Author: Kang Ni'am (kangniam.com)
Author URI: https://kangniam.com
Description: Custom WordPress theme for Reviva Cellular Therapy — a premier medical tourism clinic in Yogyakarta & Semarang specializing in Nanobubble Medicine, Meridian Therapy, and Regenerative Wellness. Built with a "Clinical Luxury & Peaceful Healing" design system, Customizer-driven content, CPT-based doctor/service management, and dynamic JSON-LD schema for medical E-E-A-T / AEO / GEO.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 6.6
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: revivaclinic
Tags: custom-colors, custom-menu, custom-logo, translation-ready, threaded-comments, healthcare, medical, one-column

RevivaClinic WordPress Theme, Copyright kangniam.com
RevivaClinic is distributed under the terms of the GNU GPL.
*/

/* =========================================================
   1. DESIGN TOKENS — CSS CUSTOM PROPERTIES
   ========================================================= */
:root {
	/* Primary / Clean Base */
	--rc-white: #FFFFFF;
	--rc-slate-soft: #F6F7F3;

	/* Secondary / Trust — deep sage green, from the Reviva logo wall panel */
	--rc-navy-deep: #3E4A3D;
	--rc-navy-royal: #576457;

	/* Accent / Luxury — warm brushed gold, sampled from the Reviva logo lettering */
	--rc-gold-muted: #C9A961;
	--rc-champagne: #D9BB87;

	/* Health / Wellness */
	--rc-sage: #10B981;
	--rc-sage-bg: #E6F4EA;

	/* Typography */
	--rc-font-heading: 'Plus Jakarta Sans', sans-serif;
	--rc-font-accent: 'Cormorant Garamond', serif;
	--rc-font-body: 'Inter', sans-serif;

	/* Spacing / Radius */
	--rc-radius-sm: 8px;
	--rc-radius-md: 16px;
	--rc-radius-lg: 28px;
	--rc-shadow-soft: 0 10px 40px rgba(15, 23, 42, 0.08);
	--rc-shadow-hover: 0 16px 50px rgba(15, 23, 42, 0.14);

	/* Layout */
	--rc-container: 1280px;
	--rc-header-height: 84px;
	--rc-mobile-bar-height: 68px;
}

/* =========================================================
   2. BASE / RESET
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
	font-family: var(--rc-font-body);
	color: var(--rc-navy-deep);
	background: var(--rc-white);
	margin: 0;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	padding-bottom: 0;
}

body.rc-has-mobile-bar {
	padding-bottom: var(--rc-mobile-bar-height);
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--rc-font-heading);
	color: var(--rc-navy-deep);
	line-height: 1.2;
	margin: 0 0 0.6em;
	font-weight: 700;
}

.rc-accent-text {
	font-family: var(--rc-font-accent);
	font-style: italic;
	color: var(--rc-champagne);
}

a { color: var(--rc-navy-royal); text-decoration: none; }

img { max-width: 100%; height: auto; display: block; }

.rc-container {
	max-width: var(--rc-container);
	margin: 0 auto;
	padding: 0 24px;
}

.rc-section {
	padding: 80px 0;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.screen-reader-text:focus {
	position: static !important;
	width: auto; height: auto;
	clip: auto;
	background: var(--rc-gold-muted);
	padding: 8px 16px;
	z-index: 100000;
}

/* Focus visibility for WCAG 2.1 AA */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
	outline: 3px solid var(--rc-gold-muted);
	outline-offset: 2px;
}

/* =========================================================
   3. BUTTONS
   ========================================================= */
.rc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 28px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 15px;
	border: 2px solid transparent;
	cursor: pointer;
	transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.rc-btn-primary {
	background: var(--rc-gold-muted);
	color: var(--rc-navy-deep);
}
.rc-btn-primary:hover { transform: translateY(-2px); box-shadow: var(--rc-shadow-hover); }
.rc-btn-secondary {
	background: transparent;
	border-color: var(--rc-white);
	color: var(--rc-white);
}
.rc-btn-secondary:hover { background: rgba(255,255,255,.12); }
.rc-btn-outline-navy {
	background: transparent;
	border-color: var(--rc-navy-deep);
	color: var(--rc-navy-deep);
}

/* =========================================================
   4. HEADER
   ========================================================= */
.rc-header {
	position: sticky;
	top: 0;
	z-index: 999;
	background: rgba(255,255,255,.92);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid rgba(15,23,42,.06);
	height: var(--rc-header-height);
	display: flex;
	align-items: center;
}
.rc-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: 100%;
}
.rc-logo img { max-height: 44px; }
.rc-logo-img { border-radius: 6px; }
.rc-primary-nav ul {
	display: flex;
	list-style: none;
	gap: 28px;
	margin: 0; padding: 0;
}
.rc-primary-nav a {
	font-weight: 600;
	font-size: 15px;
	color: var(--rc-navy-royal);
}
.rc-primary-nav a:hover { color: var(--rc-gold-muted); }

.rc-header-utils {
	display: flex;
	align-items: center;
	gap: 14px;
}
.rc-switcher select {
	border: 1px solid rgba(15,23,42,.15);
	border-radius: 999px;
	padding: 6px 12px;
	font-size: 13px;
	background: var(--rc-white);
	font-family: var(--rc-font-body);
}
.rc-header-cta {
	background: var(--rc-navy-deep);
	color: var(--rc-white);
	padding: 10px 20px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 600;
}
.rc-menu-toggle {
	display: none;
	background: none;
	border: none;
	cursor: pointer;
}

@media (max-width: 900px) {
	.rc-primary-nav { display: none; }
	.rc-menu-toggle { display: block; }
}

/* =========================================================
   5. HERO SECTION
   ========================================================= */
.rc-hero {
	position: relative;
	min-height: 88vh;
	display: flex;
	align-items: center;
	overflow: hidden;
	color: var(--rc-white);
}
.rc-hero-media {
	position: absolute;
	inset: 0;
	z-index: 0;
}
.rc-hero-media video,
.rc-hero-media img,
.rc-hero-slider {
	width: 100%; height: 100%;
	object-fit: cover;
}
.rc-hero-overlay {
	position: absolute;
	inset: 0;
	background: var(--rc-navy-deep);
	z-index: 1;
}
.rc-hero-content {
	position: relative;
	z-index: 2;
	max-width: 720px;
}
.rc-hero-content .rc-eyebrow {
	text-transform: uppercase;
	letter-spacing: 2px;
	font-size: 13px;
	color: var(--rc-gold-muted);
	font-weight: 700;
	margin-bottom: 16px;
	display: inline-block;
}
.rc-hero-content h1 {
	color: var(--rc-white);
	font-size: clamp(32px, 5vw, 58px);
	margin-bottom: 20px;
}
.rc-hero-content p {
	font-size: 18px;
	color: rgba(255,255,255,.85);
	margin-bottom: 32px;
	max-width: 560px;
}
.rc-hero-cta-group {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
}
.rc-hero-slider { position: relative; }
.rc-hero-slider .rc-slide {
	position: absolute; inset: 0;
	opacity: 0; transition: opacity 1.2s ease;
}
.rc-hero-slider .rc-slide.is-active { opacity: 1; }

/* =========================================================
   6. TRUST BADGES
   ========================================================= */
.rc-trust-strip {
	background: var(--rc-slate-soft);
	padding: 28px 0;
}
.rc-trust-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
	text-align: center;
}
.rc-trust-item {
	display: flex; flex-direction: column; align-items: center; gap: 8px;
	font-size: 13px; font-weight: 700; color: var(--rc-navy-royal);
}
.rc-trust-item .dashicons { color: var(--rc-gold-muted); font-size: 28px; width: 28px; height: 28px; }
@media (max-width: 780px) { .rc-trust-grid { grid-template-columns: repeat(2, 1fr); } }

/* =========================================================
   7. SERVICES GRID
   ========================================================= */
.rc-section-heading { text-align: center; max-width: 640px; margin: 0 auto 56px; }
.rc-section-heading .rc-eyebrow-navy {
	text-transform: uppercase; letter-spacing: 2px; font-size: 13px;
	font-weight: 700; color: var(--rc-sage); display: block; margin-bottom: 12px;
}
.rc-services-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}
.rc-service-card {
	background: var(--rc-white);
	border-radius: var(--rc-radius-lg);
	box-shadow: var(--rc-shadow-soft);
	padding: 36px 28px;
	transition: transform .25s ease, box-shadow .25s ease;
}
.rc-service-card:hover { transform: translateY(-6px); box-shadow: var(--rc-shadow-hover); }
.rc-service-icon {
	width: 56px; height: 56px; border-radius: 16px;
	background: var(--rc-sage-bg); color: var(--rc-sage);
	display: flex; align-items: center; justify-content: center;
	margin-bottom: 20px; font-size: 24px;
}
.rc-service-card h3 { font-size: 20px; margin-bottom: 10px; }
.rc-service-card p { font-size: 14.5px; color: #475569; margin-bottom: 20px; }
@media (max-width: 900px) { .rc-services-grid { grid-template-columns: 1fr; } }

/* =========================================================
   8. MEDICAL TOURISM BANNER
   ========================================================= */
.rc-mt-banner {
	background: linear-gradient(120deg, var(--rc-navy-deep), var(--rc-navy-royal));
	color: var(--rc-white);
	border-radius: var(--rc-radius-lg);
	padding: 56px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
	flex-wrap: wrap;
}
.rc-mt-banner h2 { color: var(--rc-white); max-width: 480px; }
.rc-mt-banner p { color: rgba(255,255,255,.8); max-width: 420px; }

/* =========================================================
   9. PATIENT JOURNEY MAP
   ========================================================= */
.rc-journey {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 20px;
	position: relative;
}
.rc-journey-step {
	background: var(--rc-slate-soft);
	border-radius: var(--rc-radius-md);
	padding: 24px 18px;
	text-align: center;
	position: relative;
}
.rc-journey-step .rc-step-num {
	width: 36px; height: 36px; border-radius: 50%;
	background: var(--rc-gold-muted); color: var(--rc-navy-deep);
	display: flex; align-items: center; justify-content: center;
	font-weight: 800; margin: 0 auto 14px;
}
.rc-journey-step h4 { font-size: 15px; margin-bottom: 6px; }
.rc-journey-step p { font-size: 13px; color: #64748B; }
@media (max-width: 1000px) { .rc-journey { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .rc-journey { grid-template-columns: 1fr; } }

/* =========================================================
   10. DOCTORS CAROUSEL
   ========================================================= */
.rc-doctors-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding-bottom: 12px;
}
.rc-doctor-card {
	flex: 0 0 280px;
	scroll-snap-align: start;
	background: var(--rc-white);
	border-radius: var(--rc-radius-lg);
	box-shadow: var(--rc-shadow-soft);
	overflow: hidden;
}
.rc-doctor-photo { aspect-ratio: 3/4; overflow: hidden; }
.rc-doctor-photo img { width: 100%; height: 100%; object-fit: cover; }
.rc-doctor-info { padding: 20px; }
.rc-doctor-info h3 { font-size: 17px; margin-bottom: 4px; }
.rc-doctor-info .rc-doctor-role { color: var(--rc-sage); font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.rc-doctor-info .rc-doctor-license { font-size: 12px; color: #64748B; }

/* =========================================================
   11. TESTIMONIALS
   ========================================================= */
.rc-testimonials-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}
.rc-testimonial-card {
	background: var(--rc-slate-soft);
	border-radius: var(--rc-radius-md);
	padding: 28px;
}
.rc-testimonial-card .rc-quote {
	font-family: var(--rc-font-accent);
	font-size: 19px;
	font-style: italic;
	color: var(--rc-navy-royal);
	margin-bottom: 16px;
}
@media (max-width: 900px) { .rc-testimonials-grid { grid-template-columns: 1fr; } }

/* =========================================================
   11B. TESTIMONIAL & DOCTOR MESSAGE MEDIA GALLERY
   ========================================================= */
.rc-gallery-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}
.rc-gallery-item {
	position: relative;
	border-radius: var(--rc-radius-md);
	overflow: hidden;
	box-shadow: var(--rc-shadow-soft);
	background: var(--rc-navy-deep);
	border: none;
	padding: 0;
	cursor: pointer;
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
}
.rc-gallery-item img,
.rc-gallery-item video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.rc-gallery-video { cursor: default; aspect-ratio: 16/9; }
.rc-gallery-caption {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	background: linear-gradient(0deg, rgba(15,23,42,.75), transparent);
	color: var(--rc-white);
	font-size: 13px;
	font-weight: 600;
	padding: 24px 14px 12px;
	text-align: left;
}
.rc-gallery-video .rc-gallery-caption { position: static; background: none; color: var(--rc-navy-royal); padding: 10px 2px 0; }
.rc-gallery-photo:hover img { transform: scale(1.04); }
.rc-gallery-photo img { transition: transform .3s ease; }

.rc-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	background: rgba(15,23,42,.92);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 32px;
}
.rc-lightbox[hidden] { display: none; }
.rc-lightbox img { max-width: 90vw; max-height: 85vh; border-radius: var(--rc-radius-sm); }
.rc-lightbox-close {
	position: absolute;
	top: 20px; right: 24px;
	background: none;
	border: none;
	color: var(--rc-white);
	font-size: 36px;
	line-height: 1;
	cursor: pointer;
}
@media (max-width: 900px) { .rc-gallery-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .rc-gallery-grid { grid-template-columns: 1fr; } }

/* =========================================================
   12. FAQ ACCORDION
   ========================================================= */
.rc-faq-item {
	border-bottom: 1px solid rgba(15,23,42,.1);
}
.rc-faq-question {
	width: 100%;
	text-align: left;
	background: none;
	border: none;
	padding: 20px 0;
	font-weight: 700;
	font-size: 16px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	cursor: pointer;
	color: var(--rc-navy-deep);
}
.rc-faq-answer {
	max-height: 0;
	overflow: hidden;
	transition: max-height .3s ease;
	font-size: 14.5px;
	color: #475569;
}
.rc-faq-answer-inner { padding-bottom: 20px; }
.rc-faq-item.is-open .rc-faq-answer { max-height: 600px; }
.rc-faq-item.is-open .rc-faq-icon { transform: rotate(45deg); }
.rc-faq-icon { transition: transform .2s ease; font-size: 20px; color: var(--rc-gold-muted); }

/* =========================================================
   13. MOBILE FLOATING ACTION BAR
   ========================================================= */
.rc-mobile-bar {
	position: fixed;
	bottom: 0; left: 0; right: 0;
	z-index: 998;
	display: none;
	height: var(--rc-mobile-bar-height);
}
.rc-mobile-bar-inner {
	display: flex; height: 100%;
}
.rc-mobile-bar a {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font-weight: 700;
	font-size: 14px;
	color: var(--rc-white);
}
.rc-mobile-bar .rc-mb-whatsapp { background: #10B981; }
.rc-mobile-bar .rc-mb-teleconsult { background: var(--rc-navy-deep); }
@media (max-width: 780px) { .rc-mobile-bar { display: block; } }

/* =========================================================
   14. FOOTER
   ========================================================= */
.rc-footer {
	background: var(--rc-navy-deep);
	color: rgba(255,255,255,.75);
	padding: 72px 0 32px;
}
.rc-footer-grid {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr 1fr;
	gap: 40px;
	margin-bottom: 48px;
}
.rc-footer h4 { color: var(--rc-white); font-size: 15px; margin-bottom: 18px; }
.rc-footer ul { list-style: none; margin: 0; padding: 0; }
.rc-footer li { margin-bottom: 10px; font-size: 14px; }
.rc-footer a { color: rgba(255,255,255,.75); }
.rc-footer a:hover { color: var(--rc-gold-muted); }
.rc-footer-badges { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 16px; }
.rc-footer-badges img { height: 40px; }
.rc-footer-bottom {
	border-top: 1px solid rgba(255,255,255,.1);
	padding-top: 24px;
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	font-size: 13px;
}
@media (max-width: 900px) { .rc-footer-grid { grid-template-columns: 1fr 1fr; } }

/* =========================================================
   15. AEO / DIRECT ANSWER CALLOUT
   ========================================================= */
.rc-direct-answer {
	background: var(--rc-sage-bg);
	border-left: 4px solid var(--rc-sage);
	border-radius: var(--rc-radius-sm);
	padding: 20px 24px;
	margin: 0 0 32px;
	font-size: 15px;
}
.rc-direct-answer strong { color: var(--rc-navy-deep); }

/* =========================================================
   16. CURRENCY PACKAGE CARDS
   ========================================================= */
.rc-package-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 28px;
}
.rc-package-card {
	border: 2px solid rgba(15,23,42,.08);
	border-radius: var(--rc-radius-lg);
	padding: 36px;
	position: relative;
}
.rc-package-card.is-featured { border-color: var(--rc-gold-muted); }
.rc-package-price { font-size: 34px; font-weight: 800; margin: 12px 0; }
.rc-package-price .rc-price-currency { font-size: 16px; font-weight: 600; vertical-align: super; }
@media (max-width: 780px) { .rc-package-grid { grid-template-columns: 1fr; } }

/* =========================================================
   17. RESPONSIVE — GLOBAL FALLBACKS
   ========================================================= */
@media (max-width: 780px) {
	.rc-section { padding: 56px 0; }
	.rc-mt-banner { padding: 32px; }
}
