/*
Theme Name: Outview Dental
Theme URI: https://www.outview.co.za
Author: Outview
Author URI: https://www.outview.co.za
Description: Conversion-focused block theme for South African dental and medical practices. One "Practice Details" screen feeds every phone, WhatsApp and directions button, the opening hours, map and Dentist schema. Built for Dr. N. Hay Dental Practice, Cravenby.
Requires at least: 6.6
Tested up to: 6.9
Requires PHP: 7.4
Version: 1.1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: outview-dental
Tags: full-site-editing, block-patterns, block-styles, one-column, custom-colors, editor-style, accessibility-ready
*/

/* ------------------------------------------------------------------
   Base
------------------------------------------------------------------- */
/* Back-compat: v1.0.0 used the colour slug "border" (clashed with core's .has-border-color). */
:root { --wp--preset--color--border: var(--wp--preset--color--line); }
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 96px; }
:focus-visible { outline: 3px solid var(--wp--preset--color--accent); outline-offset: 3px; }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute;
	width: 1px; word-wrap: normal !important;
}

/* No white strips between full-width sections. */
.wp-site-blocks > footer,
.wp-site-blocks > main { margin-block-start: 0; }

/* Headings follow the text colour of dark sections. */
.has-text-color :is(h1, h2, h3, h4, h5, h6):not(.has-text-color) { color: inherit; }

/* ------------------------------------------------------------------
   Header
------------------------------------------------------------------- */
.ov-topbar p { margin: 0; }
.ov-topbar .ov-icon::before { background-color: currentColor; }

@media (min-width: 782px) {
	header.ov-site-header { position: sticky; top: 0; z-index: 50; }
	.admin-bar header.ov-site-header { top: 32px; }
}
@media (max-width: 781px) {
	.ov-hide-mobile { display: none !important; }
}

/* ------------------------------------------------------------------
   Icons (CSS masks — variables live in the generated block at the end)
------------------------------------------------------------------- */
.ov-icon:not(.wp-block-button):not(.ov-icon--badge) { position: relative; padding-left: 1.75em; }
.ov-icon:not(.wp-block-button):not(.ov-icon--badge)::before,
.wp-block-button.ov-icon > .wp-block-button__link::before {
	content: "";
	width: 1.15em;
	height: 1.15em;
	background-color: var(--wp--preset--color--brand);
	-webkit-mask: var(--ov-icon) center / contain no-repeat;
	mask: var(--ov-icon) center / contain no-repeat;
	flex: none;
}
.ov-icon:not(.wp-block-button):not(.ov-icon--badge)::before { position: absolute; left: 0; top: 0.2em; }
.has-text-color .ov-icon:not(.wp-block-button)::before { background-color: currentColor; }

.wp-block-button.ov-icon > .wp-block-button__link { display: inline-flex; align-items: center; gap: 0.5em; justify-content: center; }
.wp-block-button.ov-icon > .wp-block-button__link::before { background-color: currentColor; }

.ov-icon--badge { position: relative; padding-top: 4rem; }
.ov-icon--badge::before {
	content: ""; position: absolute; top: 0; left: 0; width: 3rem; height: 3rem;
	border-radius: 14px; background: var(--wp--preset--color--brand-tint);
	transition: background-color .2s ease;
}
.ov-icon--badge::after {
	content: ""; position: absolute; top: 0.75rem; left: 0.75rem; width: 1.5rem; height: 1.5rem;
	background-color: var(--wp--preset--color--brand);
	-webkit-mask: var(--ov-icon) center / contain no-repeat;
	mask: var(--ov-icon) center / contain no-repeat;
	transition: background-color .2s ease;
}

/* ------------------------------------------------------------------
   Buttons
------------------------------------------------------------------- */
.wp-block-button__link { transition: background-color .15s ease, transform .15s ease, box-shadow .15s ease; }
.wp-block-button:not(.is-style-outline):not(.is-style-ghost):not(.is-style-light) > .wp-block-button__link:hover { transform: translateY(-1px); box-shadow: var(--wp--preset--shadow--lifted); }

.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent; color: var(--wp--preset--color--brand);
	border: 2px solid currentColor; padding: calc(0.85rem - 2px) calc(1.4rem - 2px);
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--wp--preset--color--brand-tint); }

.wp-block-button.is-style-light > .wp-block-button__link { background: #fff; color: var(--wp--preset--color--brand-dark); }
.wp-block-button.is-style-light > .wp-block-button__link:hover { background: var(--wp--preset--color--brand-tint); }

.wp-block-button.is-style-ghost > .wp-block-button__link {
	background: transparent; color: inherit;
	border: 2px solid rgba(255, 255, 255, .65); padding: calc(0.85rem - 2px) calc(1.4rem - 2px);
}
.wp-block-button.is-style-ghost > .wp-block-button__link:hover { background: rgba(255, 255, 255, .12); }

.wp-block-button.is-style-urgent > .wp-block-button__link { background: var(--wp--preset--color--urgent); color: #fff; }
.wp-block-button.is-style-urgent > .wp-block-button__link:hover { background: #9f1239; }

.wp-block-button.ov-btn-whatsapp > .wp-block-button__link { background: #0b7a4b; color: #fff; }
.wp-block-button.ov-btn-whatsapp > .wp-block-button__link:hover { background: #075e3a; }

.wp-block-button.ov-btn-sm > .wp-block-button__link { padding: 0.55rem 1rem; font-size: 0.875rem; }
.wp-block-button.ov-btn-sm.is-style-outline > .wp-block-button__link,
.wp-block-button.ov-btn-sm.is-style-ghost > .wp-block-button__link { padding: calc(0.55rem - 2px) calc(1rem - 2px); }

/* ------------------------------------------------------------------
   Cards, labels, lists
------------------------------------------------------------------- */
.is-style-card {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 18px;
	padding: clamp(1.25rem, 3vw, 2rem);
	box-shadow: var(--wp--preset--shadow--soft);
}
.is-style-card-tint {
	background: var(--wp--preset--color--brand-tint);
	border: 1px solid #ccfbf1;
	border-radius: 14px;
	padding: 1rem 1.25rem;
}
.ov-urgent-note { background: #fff1f2; border-color: #fecdd3; }
.ov-urgent-note .ov-icon::before { background-color: var(--wp--preset--color--urgent); }

.ov-service { display: flex; flex-direction: column; transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.ov-service:hover { border-color: #99f6e4; box-shadow: 0 18px 40px -20px rgba(15, 118, 110, .45); transform: translateY(-2px); }
.ov-service:hover .ov-icon--badge::before { background: var(--wp--preset--color--brand); }
.ov-service:hover .ov-icon--badge::after { background-color: #fff; }
.ov-card-link { margin-top: auto !important; padding-top: 0.9rem; border-top: 1px solid var(--wp--preset--color--line); }
.ov-card-link a { font-weight: 700; text-decoration: none; }
.ov-card-link a:hover { text-decoration: underline; }

.is-style-eyebrow {
	width: fit-content;
	padding: 0.3rem 0.85rem;
	border-radius: 999px;
	background: #ccfbf1;
	color: var(--wp--preset--color--brand-dark);
	font-size: 0.8rem !important;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.is-style-eyebrow.has-text-align-center { margin-left: auto !important; margin-right: auto !important; }

ul.is-style-checklist { list-style: none; padding-left: 0 !important; }
ul.is-style-checklist li { position: relative; padding-left: 1.7em; margin-block: 0.45em; }
ul.is-style-checklist li::before {
	content: ""; position: absolute; left: 0; top: 0.3em; width: 1.05em; height: 1.05em;
	background-color: var(--wp--preset--color--brand);
	-webkit-mask: var(--ov-i-check) center / contain no-repeat;
	mask: var(--ov-i-check) center / contain no-repeat;
}
.has-text-color ul.is-style-checklist li::before { background-color: #5eead4; }

ol.ov-steps { list-style: none; counter-reset: ov-step; padding-left: 0 !important; }
ol.ov-steps li { counter-increment: ov-step; position: relative; padding-left: 2.6rem; margin-block: 0.75rem; min-height: 1.9rem; }
ol.ov-steps li::before {
	content: counter(ov-step); position: absolute; left: 0; top: -0.1rem;
	width: 1.9rem; height: 1.9rem; border-radius: 999px; display: grid; place-items: center;
	background: var(--wp--preset--color--brand); color: #fff; font-weight: 800; font-size: 0.875rem;
}

.ov-label { margin-bottom: 0.25rem !important; }
.ov-info-card > * + * { margin-block-start: 0.85rem; }

/* ------------------------------------------------------------------
   Opening hours table
------------------------------------------------------------------- */
.ov-hours { width: 100%; border-collapse: collapse; font-size: 0.95rem; margin: 0; }
.ov-hours th, .ov-hours td { padding: 0.45rem 0; border-bottom: 1px solid var(--wp--preset--color--line); }
.ov-hours th { text-align: left; font-weight: 500; }
.ov-hours td { text-align: right; font-weight: 700; white-space: nowrap; padding-left: 1rem; }
.ov-hours tr:last-child th, .ov-hours tr:last-child td { border-bottom: 0; }
.ov-hours .is-closed td { color: var(--wp--preset--color--urgent); }

.ov-footer .ov-hours th, .ov-footer .ov-hours td { border-color: rgba(255, 255, 255, .12); }
.ov-footer .ov-hours .is-closed td { color: #fda4af; }
.ov-footer .wp-block-separator { border-color: rgba(255, 255, 255, .15); opacity: 1; }
.ov-footer p { margin-block: 0.4rem; }

/* ------------------------------------------------------------------
   Map facade
------------------------------------------------------------------- */
.ov-map {
	position: relative; overflow: hidden; height: 100%;
	min-height: 340px; border-radius: 18px;
	border: 1px solid var(--wp--preset--color--line);
	background-color: var(--wp--preset--color--brand-tint);
	background-image:
		linear-gradient(rgba(15, 118, 110, .08) 1px, transparent 1px),
		linear-gradient(90deg, rgba(15, 118, 110, .08) 1px, transparent 1px);
	background-size: 32px 32px;
}
.ov-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ov-map__facade { position: absolute; inset: 0; display: grid; place-content: center; gap: 1.25rem; padding: 1.5rem; text-align: center; }
.ov-map__address { margin: 0; font-size: 1.05rem; }
.ov-map__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }
.ov-map__btn {
	font: inherit; font-weight: 700; line-height: 1.2; cursor: pointer; text-decoration: none;
	padding: calc(0.8rem - 2px) 1.2rem; border-radius: 12px;
	border: 2px solid var(--wp--preset--color--brand);
	background: #fff; color: var(--wp--preset--color--brand);
}
.ov-map__btn--primary { background: var(--wp--preset--color--brand); color: #fff; }
.ov-map__btn:hover { background: var(--wp--preset--color--brand-dark); border-color: var(--wp--preset--color--brand-dark); color: #fff; }

/* ------------------------------------------------------------------
   FAQ (core Details block)
------------------------------------------------------------------- */
.wp-block-details summary {
	display: flex; justify-content: space-between; align-items: center; gap: 1rem;
	font-weight: 700; cursor: pointer; list-style: none;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after {
	content: "+"; flex: none; width: 1.75rem; height: 1.75rem; border-radius: 999px;
	display: grid; place-items: center; font-size: 1.2rem;
	background: var(--wp--preset--color--brand-tint); color: var(--wp--preset--color--brand);
}
.wp-block-details[open] summary::after { content: "–"; }
.wp-block-details[open] summary { margin-bottom: 0.5rem; }
.wp-block-details > p { margin-bottom: 0; }

/* ------------------------------------------------------------------
   Booking
------------------------------------------------------------------- */
.ov-booking-fallback p { margin-top: 0; }
.ov-booking-fallback__buttons { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.ov-booking-fallback__buttons .ov-btn-whatsapp { background: #0b7a4b; color: #fff; }
.ov-booking-form :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]), select, textarea) {
	width: 100%; font: inherit; padding: 0.7rem 0.9rem;
	border: 1px solid #cbd5e1; border-radius: 10px; background: #fff;
}
.ov-booking-form :is(input, select, textarea):focus { border-color: var(--wp--preset--color--brand); outline: 2px solid #99f6e4; outline-offset: 0; }

/* ------------------------------------------------------------------
   Mobile call / WhatsApp / book bar
------------------------------------------------------------------- */
.ov-mobile-cta {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
	margin: 0 !important;
	padding: 0.55rem 0.75rem calc(0.55rem + env(safe-area-inset-bottom));
	background: rgba(255, 255, 255, .97);
	border-top: 1px solid var(--wp--preset--color--line);
	box-shadow: 0 -8px 24px rgba(15, 23, 42, .08);
}
.ov-mobile-cta .wp-block-buttons { width: 100%; gap: 0.5rem; }
.ov-mobile-cta .wp-block-button { flex: 1 1 0; }
.ov-mobile-cta .wp-block-button__link { width: 100%; padding: 0.75rem 0.4rem; font-size: 0.95rem; }
.ov-mobile-cta .is-style-light > .wp-block-button__link { border: 2px solid var(--wp--preset--color--brand); color: var(--wp--preset--color--brand); padding: calc(0.75rem - 2px) 0.4rem; }

@media (max-width: 781px) {
	.wp-site-blocks { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
}
@media (min-width: 782px) {
	.ov-mobile-cta { display: none !important; }
}

/* ------------------------------------------------------------------
   Motion
------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition: none !important; animation: none !important; }
	.ov-service:hover, .wp-block-button__link:hover { transform: none !important; }
}


/* ==================================================================
   Gemini design layer (v1.1)
   ================================================================== */

/* Top bar */
.ov-topbar p { margin: 0; }
.ov-pill-urgent {
	position: relative;
	padding: 0.2rem 0.6rem 0.2rem 1.75rem !important;
	border-radius: 6px;
	background: rgba(244, 63, 94, .9);
	color: #fff;
	font-weight: 600;
	font-size: 0.75rem;
	animation: ov-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;
}
.ov-pill-urgent.ov-icon::before { left: 0.55em !important; top: 50% !important; transform: translateY(-50%); width: 0.95em; height: 0.95em; background-color: #fff !important; }
@keyframes ov-pulse { 50% { opacity: .75; } }
.ov-topbar__hours { color: #ccfbf1; font-size: 0.75rem; }
.ov-topbar__hours.ov-icon::before { background-color: #ccfbf1 !important; }

.wp-block-button.is-style-textlink > .wp-block-button__link {
	background: none; padding: 0; color: inherit; font-weight: 600;
	text-decoration: underline; text-underline-offset: 3px; box-shadow: none !important; transform: none !important;
}
.ov-topbar .wp-block-button.is-style-textlink > .wp-block-button__link { font-size: 0.875rem; }
.ov-topbar .wp-block-button.is-style-textlink > .wp-block-button__link:hover { color: #99f6e4; }

/* Header */
.ov-header {
	background: rgba(255, 255, 255, .95);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	border-bottom: 1px solid #f1f5f9;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
}
.ov-header p:has(> .ov-brand) { margin: 0; }
.ov-brand { display: inline-flex; align-items: center; gap: 0.75rem; text-decoration: none !important; color: var(--wp--preset--color--contrast); }
.ov-brand__badge, .ov-brand__logo {
	width: 44px; height: 44px; border-radius: 12px; flex: none; transition: transform .2s ease;
}
.ov-brand__badge {
	position: relative;
	background: linear-gradient(135deg, #14b8a6, #0284c7);
	box-shadow: 0 4px 12px rgba(20, 184, 166, .25);
}
.ov-brand__badge::after {
	content: ""; position: absolute; inset: 11px; background: #fff;
	-webkit-mask: var(--ov-i-tooth) center / contain no-repeat; mask: var(--ov-i-tooth) center / contain no-repeat;
}
.ov-brand__logo { object-fit: contain; }
.ov-brand:hover .ov-brand__badge, .ov-brand:hover .ov-brand__logo { transform: scale(1.05); }
.ov-brand__text { display: flex; flex-direction: column; line-height: 1.1; }
.ov-brand__name { font-size: 1.25rem; font-weight: 800; letter-spacing: -0.02em; transition: color .15s ease; }
.ov-brand:hover .ov-brand__name { color: var(--wp--preset--color--brand); }
.ov-brand__sub { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--wp--preset--color--brand); margin-top: 2px; }

.wp-block-button.is-style-soft > .wp-block-button__link { background: transparent; color: #334155; }
.wp-block-button.is-style-soft > .wp-block-button__link:hover { background: #f1f5f9; color: var(--wp--preset--color--brand); transform: none; box-shadow: none; }
.wp-block-button.is-style-soft.ov-icon > .wp-block-button__link::before { background-color: var(--wp--preset--color--brand); }

.wp-block-button.ov-btn-glow > .wp-block-button__link { box-shadow: 0 10px 15px -3px rgba(13, 148, 136, .25); }
.wp-block-button.ov-btn-glow > .wp-block-button__link:hover { box-shadow: 0 20px 25px -5px rgba(13, 148, 136, .35) !important; transform: translateY(-2px) !important; }

.wp-block-button.is-style-white > .wp-block-button__link { background: #fff; color: #334155; border: 1px solid #e2e8f0; padding: calc(0.85rem - 1px) calc(1.4rem - 1px); box-shadow: 0 1px 2px rgba(15, 23, 42, .05); }
.wp-block-button.is-style-white > .wp-block-button__link:hover { background: #f8fafc; border-color: #cbd5e1; transform: none !important; }
.wp-block-button.is-style-white.ov-icon > .wp-block-button__link::before { background-color: var(--wp--preset--color--brand); }

.wp-block-button.is-style-dark > .wp-block-button__link { background: #0f172a; color: #fff; font-size: 0.8rem; padding: 0.7rem 1rem; border-radius: 10px; }
.wp-block-button.is-style-dark > .wp-block-button__link:hover { background: #0d9488; transform: none !important; box-shadow: none !important; }
.wp-block-button.ov-btn-block { width: 100%; }
.wp-block-button.ov-btn-block > .wp-block-button__link { width: 100%; }

/* Hero */
.ov-hero { position: relative; overflow: hidden; }
.ov-hero::before {
	content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .15;
	background-image: radial-gradient(#14b8a6 1px, transparent 1px); background-size: 24px 24px;
}
.ov-hero > * { position: relative; z-index: 1; }
.ov-pill {
	width: fit-content;
	padding: 0.4rem 0.95rem 0.4rem 2.15rem !important;
	border-radius: 999px;
	background: rgba(204, 251, 241, .7);
	border: 1px solid #99f6e4;
	color: #115e59;
	font-size: 0.875rem;
	font-weight: 600;
}
.ov-pill.ov-icon::before { left: 0.9em !important; top: 50% !important; transform: translateY(-50%); background-color: #f59e0b !important; }
h1.ov-hero__title { font-size: clamp(2.1rem, 1.2rem + 3.6vw, 3.75rem); line-height: 1.08; letter-spacing: -0.03em; }
.ov-gradient-text {
	background: linear-gradient(90deg, #0d9488, #0284c7);
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
}
.ov-stats {
	margin-top: var(--wp--preset--spacing--50) !important;
	padding-top: 1.5rem;
	border-top: 1px solid rgba(226, 232, 240, .8);
	max-width: 34rem;
	gap: 1rem !important;
}
.ov-stats > .wp-block-group > * { margin: 0 !important; }
.ov-stat__value { font-size: 1.5rem; font-weight: 800; line-height: 1.2; color: var(--wp--preset--color--contrast); }
.ov-stat__label { font-size: 0.75rem; font-weight: 500; color: #64748b; margin-top: 0.2rem !important; }

/* Quick practice info card */
.ov-glow { position: relative; }
.ov-glow::before {
	content: ""; position: absolute; inset: -8px; z-index: -1; border-radius: 28px;
	background: linear-gradient(90deg, #14b8a6, #0ea5e9); filter: blur(24px); opacity: .2; transform: rotate(-1deg);
}
.ov-info-card { box-shadow: 0 20px 25px -5px rgba(15, 23, 42, .08), 0 8px 10px -6px rgba(15, 23, 42, .06); border-color: #f1f5f9; }
.ov-info-card > * + * { margin-block-start: 1.1rem !important; }
.ov-info-card__head { padding-bottom: 1rem; border-bottom: 1px solid #f1f5f9; }
.ov-info-card__head > * { margin: 0 !important; }
.ov-info-card__head h2 { font-size: 1.125rem !important; }

.ov-tile-row { position: relative; padding-left: 3.1rem; min-height: 2.25rem; }
.ov-tile-row > * { margin: 0 !important; }
.ov-tile-row::before {
	content: ""; position: absolute; left: 0; top: 0.1rem; width: 2.25rem; height: 2.25rem; border-radius: 10px;
	background: var(--ov-tile-bg, #f0fdfa);
}
.ov-tile-row::after {
	content: ""; position: absolute; left: 0.6rem; top: 0.7rem; width: 1.05rem; height: 1.05rem;
	background-color: var(--ov-tile-fg, #0d9488);
	-webkit-mask: var(--ov-icon) center / contain no-repeat; mask: var(--ov-icon) center / contain no-repeat;
}
.ov-tile-row--green { --ov-tile-bg: #ecfdf5; --ov-tile-fg: #059669; }
.ov-tile-row--accent { --ov-tile-bg: #f0f9ff; --ov-tile-fg: #0284c7; }
.ov-tile-row__title { font-size: 0.9rem; font-weight: 600; color: var(--wp--preset--color--contrast); }
.ov-tile-row__text { font-size: 0.85rem; color: var(--wp--preset--color--contrast-2); margin-top: 0.15rem !important; }
.ov-tile-row .ov-hours { font-size: 0.8rem; margin-top: 0.2rem !important; }
.ov-tile-row .ov-hours th, .ov-tile-row .ov-hours td { padding: 0.25rem 0; }
.ov-phone-big > .wp-block-button__link { color: var(--wp--preset--color--brand) !important; font-weight: 800 !important; text-decoration: none !important; font-size: 1rem; }
.ov-phone-big > .wp-block-button__link:hover { text-decoration: underline !important; }

.ov-newpatients { background: #f8fafc; border: 1px solid #f1f5f9; border-radius: 12px; padding: 1rem; }
.ov-newpatients > * { margin: 0 !important; }
.ov-newpatients__text { font-size: 0.8rem; font-weight: 600; color: #334155; margin-bottom: 0.65rem !important; }

/* Feature banner (trust bar) */
.ov-trust > .wp-block-group { text-align: center; padding: 1rem; border-radius: 12px; transition: background-color .15s ease; }
.ov-trust > .wp-block-group:hover { background: #f8fafc; }
.ov-trust .ov-icon:not(.wp-block-button) { padding-left: 0; padding-top: 2.25rem; font-size: 0.95rem !important; }
.ov-trust .ov-icon:not(.wp-block-button)::before { left: 50%; top: 0; transform: translateX(-50%); width: 1.6rem; height: 1.6rem; background-color: #0d9488; }
.ov-trust p { font-size: 0.8rem !important; color: #64748b !important; margin-top: 0.3rem !important; }

/* Service cards */
.ov-service { border-color: #f1f5f9; box-shadow: 0 1px 2px rgba(15, 23, 42, .05); }
.ov-service:hover { box-shadow: 0 20px 25px -5px rgba(15, 23, 42, .1), 0 8px 10px -6px rgba(15, 23, 42, .06); border-color: #99f6e4; }
.ov-service h3 { font-size: 1.25rem !important; }
.ov-icon--badge { padding-top: 5rem; }
.ov-icon--badge::before { width: 3.5rem; height: 3.5rem; border-radius: 16px; }
.ov-icon--badge::after { left: 0.95rem; top: 0.95rem; width: 1.6rem; height: 1.6rem; }
.ov-service .ov-card-link a { color: #0d9488; }
.ov-service--urgent .ov-icon--badge::before { background: #fff1f2; }
.ov-service--urgent .ov-icon--badge::after { background-color: #e11d48; }
.ov-service--urgent:hover .ov-icon--badge::before { background: #e11d48; }
.ov-service--urgent:hover { border-color: #fecdd3; }
.ov-service--urgent .ov-card-link a { color: #e11d48; }

/* About dark panel watermark */
.ov-dark-panel { position: relative; overflow: hidden; box-shadow: 0 20px 25px -5px rgba(15, 23, 42, .2); }
.ov-dark-panel::after {
	content: ""; position: absolute; top: -40px; right: -40px; width: 240px; height: 240px; pointer-events: none;
	background: rgba(255, 255, 255, .05);
	-webkit-mask: var(--ov-i-tooth) center / contain no-repeat; mask: var(--ov-i-tooth) center / contain no-repeat;
}
.ov-dark-panel > * { position: relative; z-index: 1; }

/* Map card with dark header bar */
.ov-map-card { display: flex; flex-direction: column; height: 100%; overflow: hidden; background: #fff; border: 1px solid #f1f5f9; border-radius: 16px; box-shadow: 0 1px 2px rgba(15, 23, 42, .05); }
.ov-map-card > * { margin: 0 !important; }
.ov-map-card__bar { background: #0f172a; color: #fff; padding: 0.9rem 1rem; font-size: 0.75rem; font-weight: 500; }
.ov-map-card__bar p { margin: 0; }
.ov-map-card__bar .ov-icon::before { background-color: #2dd4bf !important; }
.ov-map-card__street { color: #94a3b8; }
.ov-map-card .ov-map { flex: 1; border: 0; border-radius: 0; min-height: 340px; }

/* Star row */
.ov-stars { position: relative; width: fit-content; margin: 0 auto !important; font-size: 1.75rem; line-height: 1; letter-spacing: 0.12em; color: #e2e8f0; }
.ov-stars::before { content: "★★★★★"; }
.ov-stars__fill { position: absolute; top: 0; left: 0; overflow: hidden; white-space: nowrap; color: #fbbf24; }
.ov-stars__fill::before { content: "★★★★★"; }

/* FAQ cards */
.wp-block-details { box-shadow: 0 1px 2px rgba(15, 23, 42, .05); }
.wp-block-details summary:hover { color: var(--wp--preset--color--brand); }

@media (max-width: 781px) {
	.ov-stat__value { font-size: 1.15rem; }
	.ov-stat__label { font-size: 0.68rem; }
	.ov-brand__name { font-size: 1.1rem; }
	.ov-brand__badge, .ov-brand__logo { width: 40px; height: 40px; }
	.ov-brand__badge::after { inset: 10px; }
}

/* ------------------------------------------------------------------
   Icon library (generated)
------------------------------------------------------------------- */
:root {
	--ov-i-tooth: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M8 3c-2.8 0-4.5 2.1-4.5 4.8 0 2.2 1 3.6 1.6 5.3.6 1.8.8 4.6 1.5 6.6.4 1.1 1.8 1.1 2.2 0l1.2-4c.4-1.3 1.6-1.3 2 0l1.2 4c.4 1.1 1.8 1.1 2.2 0 .7-2 .9-4.8 1.5-6.6.6-1.7 1.6-3.1 1.6-5.3C20.5 5.1 18.8 3 16 3c-1.6 0-2.6.8-4 .8S9.6 3 8 3z'/%3E%3C/svg%3E");
	--ov-i-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' x='3' y='3' width='18' height='18' rx='4'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 8v8M8 12h8'/%3E%3C/svg%3E");
	--ov-i-smile: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' cx='12' cy='12' r='9'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M8.5 14.5c.9 1.3 2.1 2 3.5 2s2.6-.7 3.5-2M9 9.5h.01M15 9.5h.01'/%3E%3C/svg%3E");
	--ov-i-sparkle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9zM19 16l.8 2.2L22 19l-2.2.8L19 22l-.8-2.2L16 19l2.2-.8z'/%3E%3C/svg%3E");
	--ov-i-crown: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M3 8l4.5 4L12 5l4.5 7L21 8l-2 11H5z'/%3E%3C/svg%3E");
	--ov-i-shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 3l8 3v6c0 4.8-3.4 8-8 9-4.6-1-8-4.2-8-9V6z'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M8.5 12l2.5 2.5 4.5-5'/%3E%3C/svg%3E");
	--ov-i-heart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 20s-7.5-4.5-7.5-10.2A4.3 4.3 0 0 1 12 7.2a4.3 4.3 0 0 1 7.5 2.6C19.5 15.5 12 20 12 20z'/%3E%3C/svg%3E");
	--ov-i-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' cx='12' cy='12' r='9'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 7v5l3.5 2'/%3E%3C/svg%3E");
	--ov-i-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M12 21s-7-6.2-7-11.5a7 7 0 0 1 14 0C19 14.8 12 21 12 21z'/%3E%3Ccircle stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E");
	--ov-i-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M5 4h3.5l2 5-2.5 1.5a11 11 0 0 0 5.5 5.5l1.5-2.5 5 2V19a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");
	--ov-i-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M20 11.5a8 8 0 0 1-11.6 7.1L4 20l1.4-4.2A8 8 0 1 1 20 11.5z'/%3E%3C/svg%3E");
	--ov-i-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E");
	--ov-i-card: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M3 10h18M7 15h4'/%3E%3C/svg%3E");
	--ov-i-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 2.8l2.8 5.8 6.3.9-4.6 4.4 1.1 6.3L12 17.2l-5.6 3 1.1-6.3L2.9 9.5l6.3-.9z'/%3E%3C/svg%3E");
	--ov-i-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");
}
.ov-icon--tooth { --ov-icon: var(--ov-i-tooth); }
.ov-icon--plus { --ov-icon: var(--ov-i-plus); }
.ov-icon--smile { --ov-icon: var(--ov-i-smile); }
.ov-icon--sparkle { --ov-icon: var(--ov-i-sparkle); }
.ov-icon--crown { --ov-icon: var(--ov-i-crown); }
.ov-icon--shield { --ov-icon: var(--ov-i-shield); }
.ov-icon--heart { --ov-icon: var(--ov-i-heart); }
.ov-icon--clock { --ov-icon: var(--ov-i-clock); }
.ov-icon--pin { --ov-icon: var(--ov-i-pin); }
.ov-icon--phone { --ov-icon: var(--ov-i-phone); }
.ov-icon--chat { --ov-icon: var(--ov-i-chat); }
.ov-icon--calendar { --ov-icon: var(--ov-i-calendar); }
.ov-icon--card { --ov-icon: var(--ov-i-card); }
.ov-icon--star { --ov-icon: var(--ov-i-star); }
.ov-icon--check { --ov-icon: var(--ov-i-check); }
