/* -------------------------------------------
 * theme.css — Gaya Komponen Fallback Tema
 * 
 * Seluruh nilai warna, padding, font, dan spacing
 * menggunakan CSS Custom Properties var(--bali-*)
 * yang didefinisikan di inc/dynamic-styles.php.
 * 
 * Framework: CSS Grid + Flexbox native (tanpa Bootstrap).
 * Target: < 50 KB (seluruh aset dasar tema).
 *
 * @package bali-pink-light
 * @since   1.0
 * ------------------------------------------- */

/* ===========================================
   1. UTILITY & BASE LAYOUT
   =========================================== */

.site-header__inner,
.site-footer__inner {
	max-width: 1200px;
	margin: 0 auto;
	width: 100%;
}

/* ===========================================
   2. HEADER — Flexbox Layout
   =========================================== */

.site-header {
	padding:
		var(--bali-header-padding-top-desktop, 20px)
		var(--bali-header-padding-right-desktop, 30px)
		var(--bali-header-padding-bottom-desktop, 20px)
		var(--bali-header-padding-left-desktop, 30px);
	background-color: var(--bali-header-footer-bg, #FFF8FA);
	font-family: var(--bali-header-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
}

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 16px;
}

/* -- Branding -- */

.site-branding {
	flex-shrink: 0;
}

.site-title {
	margin: 0;
	font-size: 1.5em;
	font-weight: 700;
	line-height: 1.2;
}

.site-title a {
	color: inherit;
	text-decoration: none;
}

.site-title a:hover,
.site-title a:focus {
	text-decoration: underline;
}

.site-description {
	margin: 4px 0 0;
	font-size: 0.875em;
	opacity: 0.8;
}

/* -- Custom Logo -- */

.site-logo img {
	display: block;
	max-height: 80px;
	width: auto;
}

/* -- Primary Navigation (Desktop) -- */

.main-navigation {
	display: flex;
	align-items: center;
}

.menu-toggle {
	display: none;
}

.primary-menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: 8px;
}

.primary-menu li {
	position: relative;
}

.primary-menu a {
	display: block;
	padding: 8px 16px;
	color: inherit;
	text-decoration: none;
	font-size: 0.938rem;
	transition: color 0.15s ease, background-color 0.15s ease;
	border-radius: 4px;
}

.primary-menu a:hover,
.primary-menu a:focus {
	background-color: rgba(0, 0, 0, 0.04);
	color: var(--bali-accent, #E8638F);
}

/* -- Dropdown sub-menu -- */

.primary-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 100;
	display: none;
	min-width: 200px;
	list-style: none;
	margin: 0;
	padding: 8px 0;
	background-color: #fff;
	border: 1px solid rgba(0, 0, 0, 0.08);
	border-radius: 6px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.primary-menu li:hover > .sub-menu,
.primary-menu li:focus-within > .sub-menu {
	display: block;
}

.primary-menu .sub-menu a {
	padding: 8px 20px;
	white-space: nowrap;
}

/* -- CTA Button -- */

.header-cta {
	flex-shrink: 0;
}

.header-cta-button {
	display: inline-block;
	padding: 10px 24px;
	background-color: var(--bali-cta-bg, #E8638F);
	color: var(--bali-cta-text, #FFFFFF);
	border-radius: var(--bali-cta-radius, 4px);
	font-size: 0.938rem;
	font-weight: 600;
	text-decoration: none;
	line-height: 1.4;
	transition: opacity 0.2s ease, transform 0.15s ease;
}

.header-cta-button:hover,
.header-cta-button:focus {
	opacity: 0.9;
	transform: translateY(-1px);
	color: var(--bali-cta-text, #FFFFFF);
	text-decoration: none;
}

/* ===========================================
   3. MOBILE HAMBURGER MENU
   =========================================== */

@media (max-width: 768px) {

	.site-header__inner {
		gap: 12px;
	}

	/* Tampilkan hamburger, sembunyikan menu */
	.menu-toggle {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 5px;
		width: 40px;
		height: 40px;
		padding: 0;
		border: none;
		background: none;
		cursor: pointer;
		position: relative;
		z-index: 200;
	}

	.hamburger-line {
		display: block;
		width: 24px;
		height: 2px;
		background-color: #333;
		border-radius: 2px;
		transition: transform 0.25s ease, opacity 0.25s ease;
		transform-origin: center;
	}

	/* Hamburger → X saat aktif */
	.menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(1) {
		transform: translateY(7px) rotate(45deg);
	}

	.menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(2) {
		opacity: 0;
	}

	.menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(3) {
		transform: translateY(-7px) rotate(-45deg);
	}

	/* Menu panel mobile */
	.primary-menu {
		display: none;
		flex-direction: column;
		width: 100%;
		padding: 16px 0;
		background-color: var(--bali-header-footer-bg, #FFF8FA);
		border-top: 1px solid rgba(0, 0, 0, 0.06);
	}

	/* Saat toggle aktif, tampilkan menu */
	.menu-toggle[aria-expanded="true"] + .primary-menu,
	.primary-menu.primary-menu--open {
		display: flex;
	}

	.primary-menu a {
		padding: 12px 16px;
		font-size: 1rem;
	}

	/* Sub-menu mobile: flat, tanpa dropdown */
	.primary-menu .sub-menu {
		position: static;
		display: block;
		border: none;
		box-shadow: none;
		background: none;
		padding-left: 16px;
		min-width: auto;
	}

	/* Sembunyikan teks screen-reader di dalam hamburger */
	.menu-toggle .hamburger-text {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
	}
}

/* ===========================================
   4. FOOTER — CSS Grid Layout
   =========================================== */

.site-footer {
	padding:
		var(--bali-footer-padding-top-desktop, 40px)
		var(--bali-footer-padding-right-desktop, 30px)
		var(--bali-footer-padding-bottom-desktop, 20px)
		var(--bali-footer-padding-left-desktop, 30px);
	background-color: var(--bali-header-footer-bg, #FFF8FA);
	font-family: var(--bali-footer-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
	font-size: 0.938rem;
}

.site-footer__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
}

.footer-column-title {
	margin: 0 0 16px;
	font-size: 1.125em;
	font-weight: 700;
	color: var(--bali-accent, #E8638F);
}

/* -- Company Info -- */

.footer-company-info {
	font-size: 0.938rem;
	line-height: 1.6;
}

.footer-address {
	margin-bottom: 8px;
}

.footer-phone,
.footer-email {
	margin-bottom: 6px;
}

.footer-phone a,
.footer-email a {
	color: inherit;
	text-decoration: none;
}

.footer-phone a:hover,
.footer-email a:hover {
	color: var(--bali-accent, #E8638F);
	text-decoration: underline;
}

/* -- Social Media -- */

.social-links {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.social-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background-color: var(--bali-accent, #E8638F);
	color: #fff;
	transition: opacity 0.2s ease, transform 0.15s ease;
}

.social-link:hover,
.social-link:focus {
	opacity: 0.85;
	transform: translateY(-2px);
	color: #fff;
}

.social-icon {
	display: block;
}

/* -- Newsletter -- */

.newsletter-form {
	margin-top: 12px;
}

.newsletter-form__field {
	margin-bottom: 10px;
}

.newsletter-form__input {
	width: 100%;
	padding: 10px 14px;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 4px;
	font-size: 0.938rem;
	background-color: #fff;
	transition: border-color 0.2s ease;
}

.newsletter-form__input:focus {
	border-color: var(--bali-accent, #E8638F);
	outline: none;
	box-shadow: 0 0 0 3px rgba(232, 99, 143, 0.15);
}

.newsletter-form__button {
	width: 100%;
	padding: 10px 20px;
	border: none;
	border-radius: 4px;
	background-color: var(--bali-accent, #E8638F);
	color: #fff;
	font-size: 0.938rem;
	font-weight: 600;
	cursor: pointer;
	transition: opacity 0.2s ease;
}

.newsletter-form__button:hover,
.newsletter-form__button:focus {
	opacity: 0.9;
}

.newsletter-form__button:disabled {
	opacity: 0.6;
	cursor: not-allowed;
}

/* -- Newsletter Response Message -- */

.bali-pink-light-newsletter-response {
	display: none;
	margin-top: 12px;
	padding: 10px 14px;
	border-radius: 4px;
	font-size: 0.875rem;
	line-height: 1.4;
}

.bali-pink-light-newsletter-response--success {
	display: block;
	background-color: #e8f5e9;
	color: #2e7d32;
	border: 1px solid #c8e6c9;
}

.bali-pink-light-newsletter-response--error {
	display: block;
	background-color: #fbe9e7;
	color: #c62828;
	border: 1px solid #ffccbc;
}

/* -- Google Maps -- */

.footer-map__embed {
	margin-top: 12px;
	overflow: hidden;
	border-radius: 6px;
}

.footer-map__embed iframe {
	display: block;
	width: 100%;
	height: 250px;
	border: 0;
}

/* -- Copyright -- */

.site-footer__copyright {
	margin-top: 32px;
	padding-top: 16px;
	border-top: 1px solid rgba(0, 0, 0, 0.08);
	text-align: center;
	font-size: 0.813rem;
	opacity: 0.7;
}

.footer-copyright-text {
	margin: 0;
}

/* -- Grid Responsive -- */

@media (max-width: 768px) {
	.site-footer__grid {
		grid-template-columns: 1fr;
		gap: 24px;
	}
}

/* ===========================================
   5. WHATSAPP FLOATING BUTTON
   =========================================== */

.whatsapp-floating {
	position: fixed;
	bottom: 24px;
	z-index: 999;
}

.whatsapp-floating.whatsapp-button--right {
	right: 24px;
	left: auto;
}

.whatsapp-floating.whatsapp-button--left {
	left: 24px;
	right: auto;
}

.whatsapp-button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background-color: var(--bali-wa-bg, #E8638F);
	color: var(--bali-wa-icon, #FFFFFF);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
	transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
	text-decoration: none;
	opacity: 0;
	transform: scale(0.6);
}

.whatsapp-button--visible {
	opacity: 1;
	transform: scale(1);
}

.whatsapp-button:hover,
.whatsapp-button:focus {
	opacity: 0.92;
	transform: scale(1.05);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
	color: var(--bali-wa-icon, #FFFFFF);
}

.whatsapp-icon {
	display: block;
	color: var(--bali-wa-icon, #FFFFFF);
}

/* -- Reduced Motion: skip WhatsApp entrance animation -- */
@media (prefers-reduced-motion: reduce) {
	.whatsapp-button {
		opacity: 1;
		transform: scale(1);
		transition: none;
	}
}

/* -- WhatsApp visibility toggles -- */

@media (max-width: 480px) {
	.whatsapp-button--hide-mobile .whatsapp-button {
		display: none;
	}
}

@media (min-width: 769px) {
	.whatsapp-button--hide-desktop .whatsapp-button {
		display: none;
	}
}

/* ===========================================
   6. ACCESSIBILITY
   =========================================== */

/* -- Focus visible: outline jelas, jangan di-nol-kan -- */

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.menu-toggle:focus-visible,
.whatsapp-button:focus-visible,
.social-link:focus-visible {
	outline: 2px solid var(--bali-accent, #E8638F);
	outline-offset: 2px;
}

/* -- Skip link (tampil saat focus, dari style.css) -- */

/* ===========================================
   7. TABLET RESPONSIVE (max-width: 768px)
   =========================================== */

@media (max-width: 768px) {

	.site-header {
		padding:
			var(--bali-header-padding-top-tablet, 20px)
			var(--bali-header-padding-right-tablet, 20px)
			var(--bali-header-padding-bottom-tablet, 20px)
			var(--bali-header-padding-left-tablet, 20px);
	}

	.site-footer {
		padding:
			var(--bali-footer-padding-top-tablet, 40px)
			var(--bali-footer-padding-right-tablet, 20px)
			var(--bali-footer-padding-bottom-tablet, 20px)
			var(--bali-footer-padding-left-tablet, 20px);
	}

	/* CTA hide-mobile: via class .cta-button--hide-mobile + @media (max-width: 480px) di bawah */
}

/* ===========================================
   8. MOBILE RESPONSIVE (max-width: 480px)
   =========================================== */

@media (max-width: 480px) {

	.site-header {
		padding:
			var(--bali-header-padding-top-mobile, 15px)
			var(--bali-header-padding-right-mobile, 15px)
			var(--bali-header-padding-bottom-mobile, 15px)
			var(--bali-header-padding-left-mobile, 15px);
	}

	.site-footer {
		padding:
			var(--bali-footer-padding-top-mobile, 30px)
			var(--bali-footer-padding-right-mobile, 15px)
			var(--bali-footer-padding-bottom-mobile, 15px)
			var(--bali-footer-padding-left-mobile, 15px);
	}

	.whatsapp-floating {
		bottom: 16px;
	}

	.whatsapp-floating.whatsapp-button--right {
		right: 16px;
	}

	.whatsapp-floating.whatsapp-button--left {
		left: 16px;
	}

	.whatsapp-button {
		width: 48px;
		height: 48px;
	}

	/* CTA hide on mobile — konsisten dengan pola WhatsApp */
	.cta-button--hide-mobile .header-cta-button {
		display: none;
	}
}

/* ===========================================
   9. PRINT STYLES
   =========================================== */

@media print {
	.site-header,
	.site-footer,
	.whatsapp-floating {
		display: none;
	}

	#content {
		margin: 0;
		padding: 0;
	}
}
