/*
Theme Name: Nurse Child — Jemas Healthcare
Theme URI: https://jemascare.com/
Description: Child theme for Jemas Healthcare. Holds the Arabic/RTL corrections and site-specific overrides so they survive Nurse theme updates. Arabic-only rules live in rtl-ar.css and load only on RTL pages.
Author: RAW Creative Solutions
Author URI: https://jemascare.com/
Template: nurse
Version: 1.0.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nurse-child
*/

/* The parent theme enqueues this file automatically (nurse_wp_styles_child,
   priority 1500, after 'nurse-style'). Do not re-enqueue it.

   Put rules that apply to BOTH languages here.
   Arabic / RTL-only rules belong in rtl-ar.css. */


/* ==========================================================================
   Migrated from Customizer -> Additional CSS (post 1221).

   WordPress stores Additional CSS per stylesheet, so it does not follow a
   theme switch. Keeping these rules in the child theme means they travel with
   the files instead of living in the database.

   Carried over verbatim except for the flag URL, which was absolute to
   jemascare.com and is now root-relative so it resolves on staging too.
   The !important flags are kept for now: the theme's responsive bundle loads
   after this file and would otherwise win.
   ========================================================================== */

/* Scroll-to-top button, clear of the floating chat widgets */
.trx_addons_scroll_to_top.trx_addons_scroll_to_top.trx_addons_scroll_to_top.show {
	bottom: 7em !important;
}

@media (max-width: 1023px) {
	.trx_addons_scroll_to_top.trx_addons_scroll_to_top.trx_addons_scroll_to_top.show {
		right: 2.5em !important;
		bottom: 7.5em !important;
	}
}

/* Qatar flag instead of the generic Arabic flag in the language switcher */
a[href*="/ar/"] .trp-flag-image {
	content: url('/wp-content/uploads/2026/07/flag-for-flag-qatar-svgrepo-com.svg') !important;
	width: 18px !important;
	height: auto !important;
}

/* Contact Form 7 fields fill their container at every width */
.wpcf7 input[type="text"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="email"],
.wpcf7 input[type="number"],
.wpcf7 input[type="search"],
.wpcf7 textarea,
.wpcf7-form input.wpcf7-form-control,
.wpcf7-form textarea.wpcf7-form-control {
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
	display: block !important;
}

.wpcf7 p,
.wpcf7-form p,
.wpcf7 .wpcf7-form-control-wrap,
.wpcf7 label {
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
	display: block !important;
}


/* ==========================================================================
   Header — social icons spacing

   Elementor is told to space these icons 15px apart and writes
   `gap: 5px 15px` onto the wrapper, but the theme also sets the wrapper to
   display: inline-block, and `gap` does nothing outside flex or grid. So the
   configured spacing was never applied and the icons sat on whatever the
   inline whitespace happened to give them.

   Making the wrapper a flex row lets Elementor's own setting take effect —
   the value still lives in the widget, not here.
   ========================================================================== */

.elementor-widget-social-icons .elementor-social-icons-wrapper {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
}


/* ==========================================================================
   Interaction polish

   Deliberately limited to hover, focus and transition. Entrance animations were
   tried and removed: Elementor marks any element carrying one with
   .elementor-invisible and only strips that class when its own observer fires,
   so a mismatched animation leaves the content permanently hidden. Nothing
   below can hide anything — the resting state is the normal state, and if a
   rule fails the page simply looks as it does today.

   Applies to both languages: none of it is direction-sensitive. The underline
   grows from the centre outwards precisely so it needs no mirroring.
   ========================================================================== */

@media (hover: hover) {

	/* service cards lift slightly toward the reader */
	.elementor-element-dbe06e3, .elementor-element-95735ef, .elementor-element-a66bf39,
	.elementor-element-78ff551, .elementor-element-e818781, .elementor-element-0a66ece,
	.elementor-element-1dfb08b, .elementor-element-2726b3c, .elementor-element-63e3075,
	.elementor-element-545bd7a, .elementor-element-839b748, .elementor-element-15cbd30,
	.elementor-element-a9bb884 {
		transition: transform .28s ease, box-shadow .28s ease;
	}

	.elementor-element-dbe06e3:hover, .elementor-element-95735ef:hover,
	.elementor-element-a66bf39:hover, .elementor-element-78ff551:hover,
	.elementor-element-e818781:hover, .elementor-element-0a66ece:hover,
	.elementor-element-1dfb08b:hover, .elementor-element-2726b3c:hover,
	.elementor-element-63e3075:hover, .elementor-element-545bd7a:hover,
	.elementor-element-839b748:hover, .elementor-element-15cbd30:hover,
	.elementor-element-a9bb884:hover {
		transform: translateY(-4px);
		box-shadow: 0 14px 34px -18px rgba(8, 64, 119, .32);
	}

	/* menu links: a rule that opens from the middle, so RTL needs no variant */
	.sc_layouts_menu_nav > li > a,
	.trx-addons-main-nav-menu > .trx-addons-nav-menu-item > .trx-addons-menu-link {
		position: relative;
	}

	.sc_layouts_menu_nav > li > a::after,
	.trx-addons-main-nav-menu > .trx-addons-nav-menu-item > .trx-addons-menu-link::after {
		content: "";
		position: absolute;
		bottom: .35em;
		left: 50%;
		width: 0;
		height: 2px;
		background: currentColor;
		opacity: .55;
		transform: translateX(-50%);
		transition: width .25s ease;
		pointer-events: none;
	}

	.sc_layouts_menu_nav > li > a:hover::after,
	.trx-addons-main-nav-menu > .trx-addons-nav-menu-item > .trx-addons-menu-link:hover::after {
		width: calc(100% - 1.2em);
	}

	/* buttons settle a touch on hover rather than only changing colour */
	a.elementor-button, .sc_button, .wpcf7 input[type="submit"] {
		transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
	}

	a.elementor-button:hover, .sc_button:hover, .wpcf7 input[type="submit"]:hover {
		transform: translateY(-2px);
		box-shadow: 0 10px 22px -12px rgba(8, 64, 119, .45);
	}
}

/* Keyboard users get the same affordance, which the theme currently omits. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
	border-radius: 2px;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
	}
}


/* ==========================================================================
   Inner page title band — reclaim the dead space

   The title row carries 128px of top padding against 99px of actual content
   (the H1 plus a 19px breadcrumb line), so more than half the band is empty.
   56px still reads as a deliberate band without the page opening on a void.

   Not direction-specific, so it applies to both languages.
   ========================================================================== */

.top_panel_title.sc_layouts_row {
	padding-top: 56px;
	padding-bottom: 24px;
}

@media (max-width: 767px) {
	.top_panel_title.sc_layouts_row {
		padding-top: 36px;
		padding-bottom: 18px;
	}
}


/* The blog archive's H1, added back by jemas_child_blog_archive_heading().
   Sized to sit as a section heading rather than compete with the post titles
   below it. */
.jemas-archive-title {
	font-size: clamp(26px, 3.4vw, 34px);
	line-height: 1.4;
	margin: 0 0 1.2em;
}


/* --------------------------------------------------------------------------
   The mid-page call to action on the Services page sits on a photograph.
   Its heading already carries a soft black glow so the white type stays
   readable over the bright parts of the image; the paragraph and the link
   below it were left without one. Same device, same values — nothing here
   changes the design, it only finishes what the heading already does.
   Both languages. */
.elementor-element-748d8304 p,
.elementor-element-748d8304 .trx-addons-icon-list-text,
.elementor-element-748d8304 .trx-addons-icon-list-icon {
	text-shadow: 0 0 10px rgba(0, 0, 0, 0.85);
}

.elementor-element-748d8304 .trx-addons-icon-list-icon svg {
	filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.85));
}


/* ==========================================================================
   Callback strip above the footer

   Lives inside footer layout 93, which every page shares, so it appears
   sitewide without touching a single page. The content sits in Elementor —
   the client can edit the wording and swap the form there — while the look
   is here, because expressing an overlapping card through Elementor's
   setting JSON by hand is far more fragile than a screen of CSS.

   Two things about how this is written. It hooks Elementor's own element
   ids, not custom classes: the container's "CSS classes" setting is not
   emitted for elements created outside the editor, but the id in the stored
   JSON always is, so the ids were named readably on purpose. And it sets
   Elementor's custom properties rather than the plain properties — layout
   on a container comes from --width, --flex-direction and friends, so a
   plain flex-direction here loses to the theme's own rule and the card
   collapses to a sliver.

   The card straddles the footer edge rather than stacking above it. That is
   the site's own device, not a new one: the hero form on the home page is
   already a card floating over a photograph.
   ========================================================================== */

#jemas-cta {
	--padding-top: 54px;
	--padding-bottom: 0px;
	position: relative;
	z-index: 2;
	margin-bottom: -78px;   /* pulls the footer up under the card's lower third */
}

#jemas-cta > .e-con-inner { max-width: 1180px; }

/* the footer has to make room for the part of the card now sitting on it */
#jemas-cta + .e-con { --padding-top: 126px; }

.elementor-element-jemasctacard {
	--width: 100%;
	--padding-top: 30px;
	--padding-bottom: 30px;
	--padding-left: 34px;
	--padding-right: 34px;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 18px 40px rgba(8, 64, 119, 0.16);
}

.elementor-element-jemasctacard > .e-con-inner {
	--flex-direction: row;
	--flex-wrap: wrap;
	/* Top, not centre. Centred, the taller form column reaches higher than
	   the text beside it, and the heading reads as if it has slipped down.
	   Aligned to the top, the heading and the first field start together. */
	--align-items: flex-start;
	--gap: 32px;
	--row-gap: 24px;
	--column-gap: 32px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
}

.elementor-element-jemasctaintro { --width: 40%; }
.elementor-element-jemasctaform  { --width: 52%; }

.elementor-element-jemasctaintro > .e-con-inner,
.elementor-element-jemasctaform > .e-con-inner {
	--gap: 0px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
}

.elementor-element-jemasctaintro h3 {
	font-size: 1.3em;
	line-height: 1.5;
	margin-top: 6px;
	margin-bottom: 8px;
}

.elementor-element-jemasctaintro p { margin: 0 0 6px; }
.jemas-cta__phone { font-size: 0.94em; }
.jemas-cta__phone a { font-weight: 500; unicode-bidi: plaintext; }

/* --- the three fields ---------------------------------------------------- */

.elementor-element-jemasctaform .wpcf7 p { margin: 0 0 10px; }
.elementor-element-jemasctaform .wpcf7 p:last-child { margin-bottom: 0; }

/* Name and mobile share one row. Two things fight that: something in the
   stack forces display:block on form paragraphs with !important — it beat a
   selector three classes deep and an inline style, so this has to answer in
   kind — and Contact Form 7 sprinkles <br> between fields, which would stack
   them even inside a flex row. The offending sheet is served from the CDN
   and cross-origin, so it cannot be read from the page to be named here. */
.elementor-element-jemasctaform .wpcf7 p.jemas-cta__row {
	display: flex !important;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
}
.jemas-cta__row > br { display: none !important; }
.jemas-cta__row > span { flex: 1 1 150px; min-width: 0; }

.elementor-element-jemasctaform input[type="text"],
.elementor-element-jemasctaform input[type="tel"],
.elementor-element-jemasctaform input[type="submit"] {
	width: 100%;
	margin: 0;
}

/* The contact page already carries the full form; a second one under it
   would be asking the same question twice on the same screen. */
.page-id-24 #jemas-cta { display: none; }
.page-id-24 #jemas-cta + .e-con { --padding-top: 100px; }   /* the footer's own value */

/* --- "Ready to get started?" jumps down here ----------------------------- */

html { scroll-behavior: smooth; }
#jemas-cta { scroll-margin-top: 110px; }   /* clears the sticky header */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}

@media (max-width: 1024px) {
	.elementor-element-jemasctaintro,
	.elementor-element-jemasctaform { --width: 100%; }
}

@media (max-width: 767px) {
	#jemas-cta {
		--padding-top: 36px;
		margin-bottom: -56px;
	}
	#jemas-cta + .e-con { --padding-top: 100px; }
	.elementor-element-jemasctacard {
		--padding-left: 20px;
		--padding-right: 20px;
		--padding-top: 24px;
		--padding-bottom: 24px;
	}
	.elementor-element-jemasctacard > .e-con-inner { --gap: 20px; --row-gap: 20px; }
	.jemas-cta__row > span { flex: 1 1 100%; }
}


/* ==========================================================================
   Language switcher in the menu

   It is a menu item so that both headers pick it up — the home page uses
   layout 99, every other page uses 12, and both render the same menu.

   No box. The pill read as a button promising an action on this page, which
   is not what it does; stripped back to a marked word, it reads as what it
   is — a way out to the other language. What sets it apart from the page
   links is a hairline, a globe, and the accent colour, none of which any
   other item in the bar uses.

   No flag either. A flag names a country, not a language: the US flag beside
   "English" is wrong on a Qatari clinic's site, where English is a working
   language rather than an American one, and a Qatari flag beside "العربية"
   would suggest the Arabic pages are Qatar-only. Flags are off in the
   plugin's settings; the globe below is drawn in CSS.
   ========================================================================== */

:root {
	--jemas-globe: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3c2.5 2.7 2.5 15.3 0 18M12 3c-2.5 2.7-2.5 15.3 0 18'/%3E%3C/svg%3E");
}

/* TranslatePress marks the language you are already reading; the theme's menu
   walker renders it anyway, so it is hidden and one item remains. */
.jemas-lang.current-language-menu-item { display: none !important; }

/* Spacing is expressed through the link's own padding, the way every other
   item in this menu is spaced — the items butt together and their 15px of
   link padding does the work. Putting the gap on the <li> instead broke that
   rhythm and showed up as a cramped bar on the inner pages. */
.trx-addons-nav-menu .jemas-lang {
	position: relative;
	margin-inline-start: 0;
	padding-inline-start: 16px;
}

.trx-addons-nav-menu .jemas-lang::before {
	content: "";
	position: absolute;
	inset-inline-start: 7px;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 18px;
	background: currentColor;
	opacity: 0.2;
}

/* The accent colour needs !important: the menu link colour is set that way
   further up the stack, and it beat every selector tried against it. */
.trx-addons-nav-menu .jemas-lang > a,
.jemas-lang > a {
	color: #017C7A !important;
	font-weight: 500;
	padding-inline: 10px;
	transition: color 0.2s ease;
}

/* The theme draws its menu underline with a pseudo-element on the link and
   positions it absolutely. Reusing that same pseudo-element for the globe is
   what made the icon float across the label on hover — so the globe hangs off
   TranslatePress's own label span, which nothing else styles, and the theme's
   two are switched off here. */
.jemas-lang > a::before,
.jemas-lang > a::after { display: none !important; }

.jemas-lang .trp-ls-language-name::before {
	content: "";
	position: static;
	display: inline-block;
	width: 14px;
	height: 14px;
	vertical-align: -2px;
	margin-inline-end: 7px;
	background-color: currentColor;
	-webkit-mask: var(--jemas-globe) center / contain no-repeat;
	mask: var(--jemas-globe) center / contain no-repeat;
}

.trx-addons-nav-menu .jemas-lang > a:hover,
.trx-addons-nav-menu .jemas-lang > a:focus-visible,
.jemas-lang > a:hover,
.jemas-lang > a:focus-visible {
	color: #01AFAC !important;
}

.jemas-lang > a:hover .trp-ls-language-name,
.jemas-lang > a:focus-visible .trp-ls-language-name {
	text-decoration: underline;
	text-underline-offset: 5px;
	text-decoration-thickness: 1px;
}

/* a language name keeps its own reading direction */
.jemas-lang .trp-menu-ls-label,
.jemas-lang .trx-addons-menu-link-text {
	unicode-bidi: plaintext;
}

/* --- the mobile drawer ---------------------------------------------------- */

@media (max-width: 1023px) {
	.trx-addons-mobile-menu-outer-container .jemas-lang,
	.trx-addons-nav-slide .jemas-lang,
	.trx-addons-mobile-menu .jemas-lang {
		padding-inline-start: 0;
		margin-top: 6px;
	}

	.trx-addons-mobile-menu-outer-container .jemas-lang::before,
	.trx-addons-nav-slide .jemas-lang::before,
	.trx-addons-mobile-menu .jemas-lang::before {
		inset-inline-start: auto;
		inset-inline-end: 0;
		top: -2px;
		transform: none;
		width: 44px;
		height: 1px;
		opacity: 0.28;
	}

	.trx-addons-mobile-menu-outer-container .jemas-lang > a,
	.trx-addons-nav-slide .jemas-lang > a,
	.trx-addons-mobile-menu .jemas-lang > a {
		color: #fff !important;
		opacity: 0.85;
		padding-inline: 0;
	}

	.trx-addons-mobile-menu-outer-container .jemas-lang > a:hover,
	.trx-addons-nav-slide .jemas-lang > a:hover,
	.trx-addons-mobile-menu .jemas-lang > a:hover {
		color: #fff !important;
		opacity: 1;
	}
}


/* ==========================================================================
   Where the heart badge lands

   The badge jumps to the "about" passage. Its anchor sits flush against the
   top of that section, so the browser parked the section's heading right
   under the header and the visitor arrived looking at the middle of a block
   with no idea what they had jumped to.

   120px clears the 96px header and leaves a little air above the heading, so
   the section announces itself. Both languages — the anchor is the same
   element on both.
   ========================================================================== */

#anchor-container-02 {
	/* Negative on purpose. The anchor sits on the section's outer edge, but the
	   section carries 150px of its own padding before anything is drawn — so
	   stopping 120px *above* the anchor parked the reader in front of the
	   previous section's tail, with the "about" content starting 270px down the
	   screen. Measured: content begins at 1135, anchor at 985. -20px lands the
	   first thing you see about 130px below the header, with the whole passage
	   on screen. */
	scroll-margin-top: -20px;
}


/* ==========================================================================
   Home hero — the booking bar

   The hero was rebuilt in Elementor as a single scene: the photograph is the
   section's background, a navy gradient overlay carries the text, and the
   form sits in a solid white bar along the bottom edge. Everything that could
   be an Elementor setting is one — width, padding, colour, radius, the pill
   around the eyebrow. Three things could not be, and they are here.

   Both languages; the RTL mirror for the gradient lives in rtl-ar.css.
   ========================================================================== */

/* 1. The dot in front of the eyebrow label. Elementor's Heading widget has no
      icon control, and adding an Icon widget beside it would have meant a
      second element for the client to keep aligned. */
.elementor-element-32100d5 .elementor-heading-title::before {
	content: "";
	display: inline-block;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #01AFAC;
	margin-inline-end: 9px;
	vertical-align: middle;
	position: relative;
	top: -1px;
}

/* 2. The form lies down into a row. Contact Form 7 has no layout controls, so
      the three fields and the button are laid out here — the form's own
      template supplies the wrapper and the class names, nothing else.

      The !important is forced, not preferred: the block near the top of this
      file sets `display: block !important; width: 100% !important` on every
      .wpcf7 label, to stop CF7's fields overflowing narrow cards. That rule is
      still right everywhere else on the site, so it is overridden only here.

      Below 1025px the bar stacks and the fields go back to full width, which
      is CF7's own behaviour — nothing to override. */
.elementor-element-he7f0c1 .jemas-herof br { display: none; }
.elementor-element-he7f0c1 .wpcf7-form p { margin: 0; }
.elementor-element-he7f0c1 .jemas-herof__f { font-size: 13.5px; }

@media (min-width: 1025px) {
	.elementor-element-he7f0c1 .jemas-herof {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr)) 168px;
		gap: 14px;
		align-items: end;
	}

	.elementor-element-he7f0c1 .jemas-herof__f {
		width: auto !important;
		margin: 0;
	}

	/* The submit sits in its own span so the template can name it. Dissolving
	   that span makes the input itself the grid item, which is what lets the
	   row bottom-align it with the three inputs beside it — align-self on the
	   span left it stretched to the full row instead. */
	.elementor-element-he7f0c1 .jemas-herof__b {
		display: contents;
	}
}

/* 3. The response line CF7 prints after a submission. It is a grid child now,
      so without this it would try to sit in the first column. */
.elementor-element-he7f0c1 .wpcf7-response-output {
	grid-column: 1 / -1;
	margin: 12px 0 0;
}

/* 4. WordPress wraps the whole form body in a single <p> before CF7 prints it,
      so the grid above had one child instead of four and the fields stacked
      inside it. display: contents dissolves that wrapper without touching the
      markup CF7 generates. The !important answers the same top-of-file rule as
      point 2. */
.elementor-element-he7f0c1 .jemas-herof > p {
	display: contents !important;
}

/* 5. Below the desktop breakpoint the bar stacks and the form goes back to one
      column. The <br> tags CF7 leaves between the fields are hidden (point 2),
      so the spacing has to come from somewhere: a flex column with a gap gives
      an even rhythm instead of the fields and the button sitting flush against
      each other. */
@media (max-width: 1024px) {
	.elementor-element-he7f0c1 .jemas-herof {
		display: flex;
		flex-direction: column;
		gap: 14px;
	}
}

/* 6. CF7's loading spinner is a real element, not a pseudo one, and it was
      taking a whole grid cell of its own — which pushed a second, empty row
      under the fields at every width. Lifting it out of flow puts it over the
      end of the submit button, which is where a loading indicator belongs.

      inset-inline-end, not right: the button is the last column, so it lands on
      the left in Arabic and the right in English without a second rule. */
.elementor-element-he7f0c1 .jemas-herof {
	position: relative;
}

.elementor-element-he7f0c1 .wpcf7-spinner {
	position: absolute;
	bottom: 15px;
	inset-inline-end: 16px;
	margin: 0;
}

/* 7. On phones the scrim has to run top-to-bottom, not side-to-side: the text
      spans the full width there, so the horizontal gradient Elementor holds
      left the end of every line sitting on the bright part of the photograph.

      It is here rather than in Elementor because the gradient's colour stops
      are not responsive controls — only the angle would have followed the
      breakpoint, and the angle alone does not fix it. Both languages: the
      layout is identical on phones. */
@media (max-width: 767px) {
	.elementor-element.elementor-element-5db7d5c5::before {
		background-image: linear-gradient(
			180deg,
			rgba(6, 51, 94, 0.9) 0%,
			rgba(6, 51, 94, 0.82) 55%,
			rgba(6, 51, 94, 0.5) 100%
		) !important;
	}
}

/* 8. The ring caption around the heart changes ground with the breakpoint. On
      desktop and tablet the badge sits on the photograph — a light part of it
      in both languages — so Elementor holds the caption in navy. On phones the
      scrim covers the whole width and that navy disappears into it, so the
      caption goes light again. One rule, both languages. */
@media (max-width: 767px) {
	.elementor-element-324f0045 .e-text-path text {
		fill: #DCEDEE;
	}
}
