/*
Theme Name:     KidsWorld Child Theme
Theme URI:      http://themeforest.net/user/Softwebmedia/portfolio
Description:    KidsWorld child theme for customization
Author:         Soft Web Media
Author URI:     http://themeforest.net/user/Softwebmedia
Template:       kids-world                             
Version: 		1.00
*/


/* Add your custom style below */

/* =========================================================================
   HEADER - compact logo + tidy sticky state
   =========================================================================
   The Campbell School logo is 315x56 natively. The theme forced
   .kidsworld_logo_img img to height:100px (and 80px when stuck), which
   upscaled it ~1.8x - blurry and far too heavy. Sized to 45px here, with a
   proportionally shorter logo row so the header does not carry dead space.

   !important is needed throughout: the parent rules are ID-qualified
   (#kidsworldHeader.kidsworld_smaller_menu ...) and load from layout.css.
   ------------------------------------------------------------------------- */

/* --- Vertical rhythm --------------------------------------------------
   Row heights are the single source of truth. The menu centres itself by
   matching line-height to the row, which is how the theme's own icon-less
   nav variant works; the alternative (padding-top) leaves the anchor's 28px
   bottom margin behind as dead space and makes the bar far taller than the
   text needs.

       normal : 36px top bar + 62px logo row  =  98px
       stuck  :  0 (top bar hidden) + 50px    =  50px
   ---------------------------------------------------------------------- */

/* Trim the contact strip: 30px line-height + 3px padding either side. */
.kidsworld_topbar {
	padding-top: 3px !important;
	padding-bottom: 3px !important;
}

.kidsworld_logo_img img {
	height: 45px !important;
	max-height: 45px !important;
	width: auto !important;
}

.kidsworld_logo_img a {
	padding-top: 8px !important;
	padding-bottom: 9px !important;
}

.kidsworld_logo_menu_holder {
	height: 62px !important;
}

/* Let each item fill the row so line-height alone centres the label. */
ul.kidsworld_top_nav > li > a {
	margin-bottom: 0 !important;
}

ul.kidsworld_top_nav > li > a > span {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	line-height: 62px !important;
}

/* The hover bar is absolutely positioned inside the span; anchor it to the
   top and push it to the vertical centre of the row (half the row, less half
   the bar's 14px height). */
ul.kidsworld_top_nav > li > a > span:after {
	top: 0 !important;
	bottom: auto !important;
	margin-top: 24px !important;
}

/* Active-item arrow sits on the bottom edge of the bar, pointing at content. */
ul.kidsworld_top_nav > li > a:before {
	bottom: 0 !important;
}

/* =========================================================================
   FOOTER
   =========================================================================
   The theme floats the copyright line left and a second line right. With the
   right-hand line removed, the remaining one has to be un-floated or it sits
   awkwardly against the left edge.
   ------------------------------------------------------------------------- */

/* --- Column headings ---------------------------------------------------
   The theme centres each footer heading and centres a 60px gold accent bar
   beneath it (an absolutely positioned span::after, offset with left:50%).
   Both are pulled to the left, and a full-width rule is added underneath so
   the three columns read as a set. The gold bar then sits on that rule. */

#footer .kidsworld_footer_widget h3 {
	text-align: left !important;
	padding-bottom: 14px !important;
	margin-bottom: 24px !important;
}

#footer .kidsworld_footer_widget h3 span {
	display: inline-block;
}

/* The theme draws TWO stacked accent bars under each title - an 80px
   span::before and a 60px span::after, both centred with left:50%. Moving
   only one of them leaves the other stranded mid-column, so both are pulled
   to the left edge and aligned to the same baseline, where they overlap into
   a single accent under the title. */
#footer .kidsworld_footer_widget h3 span:before,
#footer .kidsworld_footer_widget h3 span:after {
	left: 0 !important;
	right: auto !important;
	margin-left: 0 !important;
	bottom: -1px !important;
}

/* --- Link hover --------------------------------------------------------
   The hover COLOUR is not set here: the theme generates
   ".footer a:hover { color: ... }" into its inline CSS from the
   kidsworld_footer_links_hover_color option, which is now the brand blue.
   Fighting that generated rule with a more specific override would leave two
   sources of truth. Only the movement is added, which the theme has no
   opinion about. Links inherit the theme's 0.3s ease-out transition. */

/* Block-level so the whole row is a hover/click target, not just the few
   characters of the label. Scoped to .widget_nav_menu on purpose: the social
   icons live in the same .kidsworld_footer_widget wrapper and must stay
   inline, or they stack vertically.

   The nudge uses padding rather than translateX - a full-width block shifted
   by transform would overhang its column by 4px. */

#footer .widget_nav_menu ul li a {
	display: block;
	padding-left: 0;
	-webkit-transition: padding-left .3s ease-out, color .3s ease-out;
	transition: padding-left .3s ease-out, color .3s ease-out;
}

#footer .widget_nav_menu ul li a:hover,
#footer .widget_nav_menu ul li a:focus {
	padding-left: 4px;
}

#footer .kidsworld_footer_widget ul li {
	-webkit-transition: border-color .3s ease-out;
	transition: border-color .3s ease-out;
}

#footer .kidsworld_footer_widget ul li:hover {
	border-bottom-color: #015e9b;
}

/* The social icon is a link too, but it should not slide or go full width. */
#footer .swmsc_sm_wid_icons ul li a {
	display: block; /* fills its round chip, not the column */
}

#footer .swmsc_sm_wid_icons ul li a:hover,
#footer .swmsc_sm_wid_icons ul li a:focus {
	padding-left: 0;
	opacity: .85;
}

.kidsworld_footer_copyright p.left,
.kidsworld_footer_copyright p.right {
	float: none !important;
	width: 100% !important;
	text-align: center !important;
	margin: 0 !important;
}

/* Social icons sit directly under the About copy, so drop the widget's
   default top spacing and left-align them with the text above. */
#footer .swmsc_custom_social_widget {
	margin-top: -10px;
}

#footer .swmsc_sm_wid_icons ul {
	margin: 0;
	padding: 0;
	text-align: left;
}

#footer .swmsc_sm_wid_icons ul li {
	margin: 0 8px 0 0;
}

/* Give the two link columns a consistent rhythm. */
#footer .kidsworld_footer_widget ul li {
	line-height: 1.9;
}

/* =========================================================================
   SERVICE BOXES (Our Programs) - accent bar alignment
   =========================================================================
   Each box draws two 56px accent bars (.._icon_brd1 / .._icon_brd2). The
   shortcodes plugin positions them off the 80px icon block rather than the
   title, and staggers them 10px horizontally, so they start at 70px and 80px
   while the title starts at 106px - neither aligned to the title nor to each
   other.

   The title is offset by margin-left:106px and the bars are absolutely
   positioned against the 80px icon section, so a -82px pull puts each bar's
   leading edge exactly on the title:
       right edge 80 + 82 = 162, minus the 56px width = 106.

   The 3px vertical stagger is kept - that is the intended "double" look.
   ------------------------------------------------------------------------- */

.swmsc_school_service_icon_brd1,
.swmsc_school_service_icon_brd2 {
	margin-right: -82px;
}

/* Mirrored for right-aligned boxes, where the plugin flips the bars to
   left:0 and the title carries margin-right:106px. The bars' trailing edge
   then lands on the title's right edge: 271 - 82 + 56 = 245. */
@media only screen and (min-width: 980px) {

	.sss_right .swmsc_school_service_icon_brd1,
	.sss_right .swmsc_school_service_icon_brd2 {
		margin-right: 0;
		margin-left: -82px;
	}
}

/* =========================================================================
   HOMEPAGE - welcome section photo
   =========================================================================
   The school photo is served at 768px so it stays sharp on retina, but the
   demo image it replaced was 500px wide. Left uncapped it eats 69% of the
   column and crushes the mission text beside it, so it is displayed at 480px
   (about the original's footprint) while keeping the higher-resolution file.
   ------------------------------------------------------------------------- */

@media only screen and (min-width: 992px) {

	body.home .swmsc_image_lightbox.image_right {
		max-width: 480px;
	}

	body.home .swmsc_image_lightbox.image_right img {
		width: 100%;
		height: auto;
	}
}

/* --- Menu accent colour ------------------------------------------------
   styling.css gives every nav item its own colour, hard-coded per :nth-child
   (purple, yellow, red, green, light blue...) across four clusters: link
   text, border-top, hover background, and border. These unify the whole lot
   to the theme yellow, with two text colours forced by contrast (noted below).

   The #kidsworldHeader prefix is not decorative: brand-colors.css already
   carries generated !important rules for the :first-child item at specificity
   (0,2,5). An ID puts these at (1,1,5) so they win outright instead of losing
   to a more specific !important. */

/* Top bars + divider ticks (the span accents). */
#kidsworldHeader ul.kidsworld_top_nav > li > a > span:before,
#kidsworldHeader ul.kidsworld_top_nav > li > a > span:after {
	background-color: #fcb54d !important;
}

/* Active item's pointer, plus the line across the top of each drop-down. */
#kidsworldHeader ul.kidsworld_top_nav > li.kidsworld_m_active > a:before,
#kidsworldHeader.kidsworld_smaller_menu ul.kidsworld_top_nav > li.kidsworld_m_active > a:before,
#kidsworldHeader ul.kidsworld_top_nav > li > ul {
	border-top-color: #fcb54d !important;
}

/* The 2px accent border on the first drop-down row. */
#kidsworldHeader ul.kidsworld_top_nav > li > ul > li:first-child {
	border-top-color: #fcb54d !important;
}

/* Drop-down row hover: yellow fill. The theme pairs the fill with white text
   (#fff on #fcb54d is 1.8:1 - unreadable), so the row text goes dark navy
   here, which reaches 6.7:1. */
#kidsworldHeader ul.kidsworld_top_nav > li > ul li:hover {
	background-color: #fcb54d !important;
}

#kidsworldHeader ul.kidsworld_top_nav > li > ul li:hover > a,
#kidsworldHeader ul.kidsworld_top_nav > li > ul li:hover > a span {
	color: #013a5e !important;
}

/* Top-level active / hover text. Yellow text on the white header row is
   1.8:1 and would make the current page's menu item unreadable, so it stays
   dark - the yellow top bar is the active/hover indicator. This also clears
   the theme's per-item rainbow (purple / red / green / blue) active colours. */
#kidsworldHeader ul.kidsworld_top_nav > li.kidsworld_m_active > a,
#kidsworldHeader ul.kidsworld_top_nav > li.kidsworld_m_active > a span,
#kidsworldHeader ul.kidsworld_top_nav > li:hover > a,
#kidsworldHeader ul.kidsworld_top_nav > li:hover > a span {
	color: #333 !important;
}

/* =========================================================================
   HOMEPAGE - centred "Welcome" section
   =========================================================================
   The CTA sits in a swmsc_text_block; WPBakery strips the wrapping <p>, so
   the centring has to come from the text block itself. :has() limits it to
   the block that actually holds a button. */
body.home .swmsc_text_block:has(> .swmsc_button_div) {
	text-align: center;
}

body.home .swmsc_button_div {
	text-align: center;
}

/* =========================================================================
   RESPONSIVE - stop sideways scrolling
   =========================================================================
   WPBakery inner rows carry -15px side margins that the parent column's
   padding normally cancels out. Once the columns stack (below 768px) that
   compensation disappears and the row pokes ~15px past the container, which
   makes the whole page scroll sideways. Clipping the content wrapper is the
   safe fix: the fixed header and top bar live OUTSIDE this element, so
   nothing sticky is affected. */
.kidsworld_containers_holder {
	overflow-x: hidden;
}

/* --- Dropdown parents are labels, not links ----------------------------
   "About" and "Admissions" only open their submenu - they point at "#" and
   must not look or behave clickable. The submenu opens on li:hover in pure
   CSS (no JS), so switching off pointer events on the anchor alone does not
   stop the dropdown from appearing. On mobile the theme adds a separate
   .kidsworld-mini-menu-arrow span outside the anchor to expand the submenu,
   so this does not trap touch users either. */
#kidsworldHeader ul.kidsworld_top_nav > li.menu-item-has-children > a,
#kidsworld_mobi_nav li.kidsworld-has-sub-menu > a {
	cursor: default;
	pointer-events: none;
}

/* --- Scrolled / stuck state ------------------------------------------- */

@media only screen and (min-width: 768px) {

	/* Animate between the two heights so the shrink is not a hard jump. */
	.kidsworld_logo_menu_holder,
	.kidsworld_logo_img img,
	.kidsworld_logo_img a {
		-webkit-transition: all .25s ease;
		transition: all .25s ease;
	}

	/* Reclaim the top bar's 45px once the user has scrolled. */
	#kidsworldHeader.kidsworld_smaller_menu .kidsworld_topbar {
		display: none !important;
	}

	#kidsworldHeader.kidsworld_smaller_menu .kidsworld_logo_img img {
		height: 34px !important;
		max-height: 34px !important;
	}

	#kidsworldHeader.kidsworld_smaller_menu .kidsworld_logo_img a {
		padding-top: 8px !important;
		padding-bottom: 8px !important;
	}

	#kidsworldHeader.kidsworld_smaller_menu .kidsworld_logo_menu_holder {
		height: 50px !important;
	}

	/* Same rule as above, against the 50px stuck row. */
	#kidsworldHeader.kidsworld_smaller_menu ul.kidsworld_top_nav > li > a > span {
		padding-top: 0 !important;
		padding-bottom: 0 !important;
		line-height: 50px !important;
	}

	#kidsworldHeader.kidsworld_smaller_menu ul.kidsworld_top_nav > li > a {
		margin-bottom: 0 !important;
	}

	#kidsworldHeader.kidsworld_smaller_menu ul.kidsworld_top_nav > li > a > span:after {
		top: 0 !important;
		bottom: auto !important;
		margin-top: 18px !important;
	}

	/* Drop-downs hang off the nav row, so they must follow its new height. */
	#kidsworldHeader.kidsworld_smaller_menu ul.kidsworld_top_nav > li > ul {
		top: auto !important;
	}

	/* A soft shadow separates the stuck header from the content behind it. */
	#kidsworldHeader.kidsworld_smaller_menu {
		-webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
		box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
	}
}

/* Mobile: the header is not fixed below 768px, so let it size naturally. */
@media only screen and (max-width: 767px) {

	.kidsworld_logo_menu_holder {
		height: auto !important;
	}

	.kidsworld_logo_img a {
		padding-top: 12px !important;
		padding-bottom: 12px !important;
	}

	/* The theme caps the logo's width here (280px, then 240px under 480px).
	   Forcing an explicit height as well would stretch it, so cap the height
	   instead and let the width follow the aspect ratio. */
	.kidsworld_logo_img img {
		height: auto !important;
		max-height: 45px !important;
		width: auto !important;
		max-width: 100% !important;
	}

	/* The desktop line-height would leave a huge gap in the slide-down menu. */
	ul.kidsworld_top_nav > li > a > span {
		line-height: 1.4 !important;
	}

	/* Announcement bar: on phones show only the phone number and the social
	   icon. The email is the only left-side item carrying a link (a mailto),
	   so :has() targets it regardless of position - it will not catch the
	   plain-text phone number. */
	.kidsworld_topbar_left li:has(a[href^="mailto:"]) {
		display: none !important;
	}

	/* With just the phone left and the social icon right, keep them on one
	   compact row instead of stacked full-width blocks. */
	.kidsworld_topbar_left,
	.kidsworld_topbar_right {
		display: inline-block !important;
		width: auto !important;
	}

	.kidsworld_topbar_left {
		float: left !important;
	}

	.kidsworld_topbar_right {
		float: right !important;
	}

	.kidsworld_topbar_left li {
		display: inline-block !important;
	}
}

/* =========================================================================
   OUR MISSION PAGE (page id 1746)
   ========================================================================= */

/* "What We Believe In" values: bigger icons + text, stacked and centred so
   each value reads as a badge instead of floating left in a wide column.
   Scoped to the page so it can't touch the icon_list on other pages. */
body.page-id-1746 .swmsc_the_icons {
	text-align: center;
	list-style: none;
	margin-left: 0;
	padding-left: 0;
}

body.page-id-1746 .swmsc_the_icons li {
	text-align: center;
	font-size: 20px;
	line-height: 1.5;
	margin-bottom: 20px;
	/* Theme reserves 26px left padding for the inline-icon layout; the stacked
	   layout doesn't need it, and it would push the pair off-centre. */
	padding-left: 0 !important;
	padding-right: 0 !important;
}

body.page-id-1746 .swmsc_the_icons li i {
	display: block;
	font-size: 30px;
	margin: 0 auto 10px;
}

/* Centre the "Enroll Your Child" button. Its swmsc_button_div is inline-block,
   so it only centres when its parent .wpb_wrapper is centred. :has() scopes this
   to just the wrapper that holds the button, so body paragraphs stay left. */
body.page-id-1746 .swmsc_button_div {
	text-align: center;
}

body.page-id-1746 .wpb_wrapper:has(> .swmsc_button_div) {
	text-align: center;
}

/* =========================================================================
   MEET OUR STAFF PAGE (page id 1748)
   =========================================================================
   "Our Team of Experts" style cards (swmsc_content_box + service image),
   two per row. Source photos vary in aspect ratio, so normalise them into
   equal circular headshots. */

body.page-id-1748 .swmsc_services_item_holder img {
	width: 150px !important;
	height: 150px !important;
	object-fit: cover;
	object-position: center 25%;
	box-shadow: 0 4px 14px rgba(0, 0, 0, .12);
}

/* Subtle lift on hover for each card. */
body.page-id-1748 .swmsc_service_box {
	transition: transform .2s ease, box-shadow .2s ease;
	height: 100%;
}

body.page-id-1748 .swmsc_service_box:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 26px rgba(0, 0, 0, .10);
}

/* =========================================================================
   DAILY SCHEDULE & ACTIVITIES (page id 1750)
   =========================================================================
   Theme has no timeline/schedule component, so these two small patterns are
   custom - kept in the theme's blue (#015e9b) / gold (#fcb54d) palette. */

/* Arrival & dismissal time list */
body.page-id-1750 .tcs-times {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.page-id-1750 .tcs-times li {
	padding: 10px 0;
	border-bottom: 1px dashed #cfddea;
	color: #555;
}

body.page-id-1750 .tcs-times li:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

body.page-id-1750 .tcs-times li span {
	display: inline-block;
	min-width: 104px;
	font-weight: 700;
	color: #015e9b;
}

/* Daily-flow timeline */
body.page-id-1750 .tcs-timeline {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.page-id-1750 .tcs-timeline li {
	position: relative;
	padding: 0 0 20px 34px;
	color: #555;
	line-height: 1.55;
}

body.page-id-1750 .tcs-timeline li:before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	width: 15px;
	height: 15px;
	border-radius: 50%;
	background: #015e9b;
	border: 3px solid #fff;
	box-shadow: 0 0 0 2px #015e9b;
	z-index: 1;
}

body.page-id-1750 .tcs-timeline li:after {
	content: "";
	position: absolute;
	left: 7px;
	top: 7px;
	width: 2px;
	height: 100%;
	background: #dbe4ee;
}

body.page-id-1750 .tcs-timeline li:last-child {
	padding-bottom: 0;
}

body.page-id-1750 .tcs-timeline li:last-child:after {
	display: none;
}

body.page-id-1750 .tcs-timeline li strong {
	color: #333;
}

/* =========================================================================
   SCHOOL CALENDAR (page id 1760)
   =========================================================================
   Month cards with events colour-coded by type - custom pattern in the
   theme's blue / coral / green accents. */

body.page-id-1760 .tcs-cal-legend {
	text-align: center;
}

body.page-id-1760 .tcs-cal-legend span {
	display: inline-block;
	margin: 0 12px;
	color: #555;
	font-size: 14px;
}

body.page-id-1760 .tcs-cal-legend i {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	display: inline-block;
	margin-right: 6px;
	vertical-align: middle;
}

body.page-id-1760 .tcs-cal-head {
	background: #015e9b;
	color: #fff;
	font-size: 18px;
	font-weight: 700;
	padding: 12px 20px;
	border-radius: 14px 14px 0 0;
}

body.page-id-1760 .tcs-cal-body {
	padding: 14px 20px 18px;
}

body.page-id-1760 .tcs-cal {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.page-id-1760 .tcs-cal li {
	padding: 8px 0 8px 12px;
	border-left: 3px solid #ccc;
	margin-bottom: 4px;
	color: #555;
	line-height: 1.45;
}

body.page-id-1760 .tcs-cal li:last-child {
	margin-bottom: 0;
}

body.page-id-1760 .tcs-cal .cal-day {
	display: inline-block;
	font-weight: 700;
	margin-right: 7px;
}

body.page-id-1760 .tcs-cal li.cal-event {
	border-left-color: #015e9b;
}

body.page-id-1760 .tcs-cal li.cal-event .cal-day {
	color: #015e9b;
}

body.page-id-1760 .tcs-cal li.cal-closed {
	border-left-color: #fc5b4e;
}

body.page-id-1760 .tcs-cal li.cal-closed .cal-day {
	color: #fc5b4e;
}

body.page-id-1760 .tcs-cal li.cal-resume {
	border-left-color: #6fae3a;
}

body.page-id-1760 .tcs-cal li.cal-resume .cal-day {
	color: #6fae3a;
}

/* =========================================================================
   REGISTRATION FORMS - form only, no other page sections.
   Shared by: page id 1754 (Registration) and 1756 (Toddler Registration) -
   same PDF-derived pattern, so both pages share one styling pass.
   ========================================================================= */

body.page-id-1754 .wpcf7-form p,
body.page-id-1756 .wpcf7-form p {
	margin-bottom: 18px;
}

body.page-id-1754 .wpcf7-form input[type="text"],
body.page-id-1754 .wpcf7-form input[type="tel"],
body.page-id-1754 .wpcf7-form input[type="email"],
body.page-id-1754 .wpcf7-form input[type="date"],
body.page-id-1754 .wpcf7-form textarea,
body.page-id-1756 .wpcf7-form input[type="text"],
body.page-id-1756 .wpcf7-form input[type="tel"],
body.page-id-1756 .wpcf7-form input[type="email"],
body.page-id-1756 .wpcf7-form input[type="date"],
body.page-id-1756 .wpcf7-form textarea {
	width: 100%;
	border: 1px solid #dbe4ee;
	border-radius: 8px;
	padding: 12px 14px;
	font-size: 15px;
}

body.page-id-1754 .wpcf7-form input:focus,
body.page-id-1754 .wpcf7-form textarea:focus,
body.page-id-1756 .wpcf7-form input:focus,
body.page-id-1756 .wpcf7-form textarea:focus {
	border-color: #015e9b;
	outline: none;
}

/* Phone + email side by side on desktop.
   CF7 auto-wraps every tag in the paragraph it finds it in, so both fields
   end up inside ONE <p> (joined by the <br> that separated them in the
   source), not as two separate flex items. The <p> itself - not the
   .tcs-reg-row div around it - is what actually needs to become the flex
   row; the <br> is hidden since flex-direction handles the split instead. */
body.page-id-1754 .tcs-reg-row p,
body.page-id-1756 .tcs-reg-row p {
	display: flex;
	gap: 16px;
	margin-bottom: 18px;
}

body.page-id-1754 .tcs-reg-row p br,
body.page-id-1756 .tcs-reg-row p br {
	display: none;
}

body.page-id-1754 .tcs-reg-row p > span.wpcf7-form-control-wrap,
body.page-id-1756 .tcs-reg-row p > span.wpcf7-form-control-wrap {
	flex: 1;
}

@media only screen and (max-width: 600px) {
	body.page-id-1754 .tcs-reg-row p,
	body.page-id-1756 .tcs-reg-row p {
		flex-direction: column;
		gap: 0;
	}
}

/* Radio / checkbox groups (program preference, additional care) as big,
   clearly readable selectable cards rather than tiny native controls. */
body.page-id-1754 .wpcf7-list-item,
body.page-id-1756 .wpcf7-list-item {
	display: block;
	margin: 0 0 12px;
	border: 2px solid #e6ecf2;
	border-radius: 12px;
	transition: border-color .15s ease, background-color .15s ease;
	cursor: pointer;
}

/* use_label_element wraps the input + text in a real <label>, so the padding
   moves there - it becomes the actual click/box area inside the border. */
body.page-id-1754 .wpcf7-list-item label,
body.page-id-1756 .wpcf7-list-item label {
	display: block;
	padding: 14px 18px;
	cursor: pointer;
}

body.page-id-1754 .wpcf7-list-item:hover,
body.page-id-1756 .wpcf7-list-item:hover {
	border-color: #b9d4e8;
	background: #f8fbfd;
}

body.page-id-1754 .wpcf7-list-item:has(input:checked),
body.page-id-1756 .wpcf7-list-item:has(input:checked) {
	border-color: #015e9b;
	background: #eef5fb;
}

body.page-id-1754 .wpcf7-list-item input[type="radio"],
body.page-id-1754 .wpcf7-list-item input[type="checkbox"],
body.page-id-1756 .wpcf7-list-item input[type="radio"],
body.page-id-1756 .wpcf7-list-item input[type="checkbox"] {
	width: 22px;
	height: 22px;
	accent-color: #015e9b;
	cursor: pointer;
	vertical-align: middle;
	position: relative;
	top: -1px;
}

body.page-id-1754 .wpcf7-list-item-label,
body.page-id-1756 .wpcf7-list-item-label {
	margin-left: 12px;
	font-size: 17px;
	line-height: 1.5;
	color: #333;
	vertical-align: middle;
	cursor: pointer;
}

body.page-id-1754 .wpcf7-list-item:has(input:checked) .wpcf7-list-item-label,
body.page-id-1756 .wpcf7-list-item:has(input:checked) .wpcf7-list-item-label {
	color: #015e9b;
	font-weight: 600;
}

body.page-id-1754 .tcs-reg-note,
body.page-id-1756 .tcs-reg-note {
	background: #fef8ec;
	border: 1px solid #f6e4c4;
	border-radius: 10px;
	padding: 14px 18px;
	color: #7a5a10;
	font-size: 14px;
}

body.page-id-1754 .wpcf7-submit,
body.page-id-1756 .wpcf7-submit {
	background: #015e9b;
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 13px 42px;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: background .2s ease;
}

body.page-id-1754 .wpcf7-submit:hover,
body.page-id-1756 .wpcf7-submit:hover {
	background: #01477a;
}

body.page-id-1754 .wpcf7-not-valid-tip,
body.page-id-1756 .wpcf7-not-valid-tip {
	color: #d9534f;
	font-size: 13px;
}

body.page-id-1754 .wpcf7-response-output,
body.page-id-1756 .wpcf7-response-output {
	border-radius: 10px;
	padding: 14px 18px;
}

/* =========================================================================
   TUITION (page id 1758)
   =========================================================================
   Theme pricing tables + tabs do the heavy lifting; these rules cover the
   sub-headings, additional-care rows and payment-option list. */

body.page-id-1758 .tcs-tuition-subhead {
	color: #015e9b;
	font-size: 20px;
	margin: 0 0 4px;
	padding-bottom: 10px;
	border-bottom: 2px solid #eef2f6;
}

body.page-id-1758 .tcs-tuition-subhead i {
	color: #fcb54d;
	margin-right: 8px;
}

body.page-id-1758 .tcs-tuition-subhead span {
	color: #999;
	font-size: 14px;
	font-weight: 400;
	margin-left: 6px;
}

/* Additional-care rows: icon, label + hours, then the hourly rate. */
body.page-id-1758 .tcs-care-card {
	display: flex;
	align-items: center;
	gap: 14px;
}

body.page-id-1758 .tcs-care-icon {
	width: 46px;
	height: 46px;
	min-width: 46px;
	border-radius: 50%;
	color: #fff;
	font-size: 18px;
	display: flex;
	align-items: center;
	justify-content: center;
}

body.page-id-1758 .tcs-care-text {
	flex: 1;
}

body.page-id-1758 .tcs-care-text h5 {
	margin: 0 0 2px;
	font-size: 17px;
	color: #333;
}

body.page-id-1758 .tcs-care-text span {
	color: #888;
	font-size: 13px;
}

body.page-id-1758 .tcs-care-rate {
	font-size: 19px;
	font-weight: 700;
	white-space: nowrap;
}

/* Numbered payment options inside the blue fee band. */
body.page-id-1758 .tcs-pay-options {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 18px;
}

body.page-id-1758 .tcs-pay-options > div {
	flex: 1 1 210px;
	max-width: 300px;
	background: rgba(255, 255, 255, .12);
	border: 1px solid rgba(255, 255, 255, .25);
	border-radius: 12px;
	padding: 16px 18px;
	color: #fff;
	font-size: 15px;
	line-height: 1.45;
	text-align: center;
}

body.page-id-1758 .tcs-pay-options > div span {
	display: block;
	width: 30px;
	height: 30px;
	line-height: 30px;
	margin: 0 auto 8px;
	border-radius: 50%;
	background: #fcb54d;
	color: #fff;
	font-weight: 700;
}

body.page-id-1758 .tcs-tuition-note {
	text-align: center;
	color: #cfe3f2;
	font-size: 13px;
	font-style: italic;
	margin: 16px 0 0;
}

/* Centre the "Register Now" button in the fee band. Its swmsc_button_div is
   inline-block, so it only centres when its parent .wpb_wrapper is centred -
   same pattern as the Mission page CTA. */
body.page-id-1758 .swmsc_button_div {
	text-align: center;
}

body.page-id-1758 .wpb_wrapper:has(> .swmsc_button_div) {
	text-align: center;
}

/* Pricing tables: even height + a clearer price. */
body.page-id-1758 .swmsc_pricing_tables {
	margin-bottom: 20px;
}

/* =========================================================================
   CONTACT US (page id 637)
   =========================================================================
   Layout follows the KidsWorld "contact-us-3" demo: a mirrored 2x2 grid of
   icon info blocks, then map + form side by side. */

body.page-id-637 .tcs-map iframe {
	display: block;
	border-radius: 14px;
	box-shadow: 0 3px 14px rgba(0, 0, 0, .08);
}

body.page-id-637 .tcs-contact-formtitle {
	color: #015e9b;
	font-size: 22px;
	margin: 0 0 18px;
	padding-bottom: 10px;
	border-bottom: 2px solid #eef2f6;
}

/* Two fields per row on desktop; CF7 wraps each tag in the paragraph it
   sits in, so the <p> itself becomes the flex row (same as the
   registration forms). */
body.page-id-637 .tcs-form-row p {
	display: flex;
	gap: 14px;
	margin-bottom: 16px;
}

body.page-id-637 .tcs-form-row p br {
	display: none;
}

body.page-id-637 .tcs-form-row p > span.wpcf7-form-control-wrap {
	flex: 1;
}

@media only screen and (max-width: 600px) {
	body.page-id-637 .tcs-form-row p {
		flex-direction: column;
		gap: 0;
	}
}

body.page-id-637 .wpcf7-form p {
	margin-bottom: 16px;
}

body.page-id-637 .wpcf7-form input[type="text"],
body.page-id-637 .wpcf7-form input[type="tel"],
body.page-id-637 .wpcf7-form input[type="email"],
body.page-id-637 .wpcf7-form textarea {
	width: 100%;
	border: 1px solid #dbe4ee;
	border-radius: 8px;
	padding: 12px 14px;
	font-size: 15px;
}

body.page-id-637 .wpcf7-form textarea {
	height: 120px;
}

body.page-id-637 .wpcf7-form input:focus,
body.page-id-637 .wpcf7-form textarea:focus {
	border-color: #015e9b;
	outline: none;
}

body.page-id-637 .wpcf7-submit {
	background: #015e9b;
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 13px 42px;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: background .2s ease;
}

body.page-id-637 .wpcf7-submit:hover {
	background: #01477a;
}

body.page-id-637 .wpcf7-not-valid-tip {
	color: #d9534f;
	font-size: 13px;
}

body.page-id-637 .wpcf7-response-output {
	border-radius: 10px;
	padding: 14px 18px;
}

/* Info blocks: keep the icon and text vertically aligned in the 2x2 grid. */
body.page-id-637 .swmsc_services_icon_content h5 {
	margin-bottom: 8px;
}

body.page-id-637 .swmsc_sm_icons_sc ul {
	margin: 0;
	padding: 0;
}

body.page-id-1758 .swmsc_pt_price_amount {
	font-size: 30px;
	font-weight: 700;
}
/* ==========================================================================
   26/27 additions — toddler programme, classrooms, school at a glance,
   enrichment & partners
   ========================================================================== */

/* --- New programme announcement ------------------------------------------ */

.tcs-announce {
	background: linear-gradient(135deg, #fef4e2 0%, #fdf9f0 100%);
	border: 1px solid #f6e4c4;
	border-radius: 18px;
	padding: 38px 32px 32px;
	text-align: center;
}

.tcs-announce-flag {
	display: inline-block;
	background: #6fae3a;
	color: #ffffff;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: 6px 16px;
	border-radius: 100px;
	margin-bottom: 16px;
}

.tcs-announce h3 {
	color: #015e9b;
	font-size: 30px;
	line-height: 1.25;
	margin: 0 0 14px;
}

.tcs-announce p {
	color: #666666;
	font-size: 17px;
	line-height: 1.7;
	max-width: 740px;
	margin: 0 auto;
}

.tcs-age-cards {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	justify-content: center;
	margin-top: 30px;
}

.tcs-age-card {
	flex: 1 1 260px;
	max-width: 340px;
	background: #ffffff;
	border: 1px solid #e6ecf2;
	border-radius: 14px;
	padding: 24px 22px;
	text-align: center;
}

.tcs-age-card .tcs-age-label {
	display: block;
	color: #015e9b;
	font-size: 20px;
	font-weight: 700;
	margin-bottom: 4px;
}

.tcs-age-card .tcs-age-range {
	display: block;
	color: #e0930a;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	margin-bottom: 12px;
}

.tcs-age-card p {
	font-size: 15.5px;
	line-height: 1.65;
	margin: 0;
}

/* --- Classrooms ----------------------------------------------------------- */

.tcs-rooms {
	display: flex;
	flex-wrap: wrap;
	gap: 22px;
}

.tcs-room {
	flex: 1 1 220px;
	border: 1px solid #e6ecf2;
	border-radius: 16px;
	padding: 28px 22px;
	text-align: center;
	background: #ffffff;
}

.tcs-room-badge {
	width: 62px;
	height: 62px;
	line-height: 62px;
	border-radius: 100%;
	margin: 0 auto 16px;
	color: #ffffff;
	font-size: 19px;
	font-weight: 700;
}

.tcs-room h4 {
	color: #015e9b;
	font-size: 19px;
	margin: 0 0 6px;
}

.tcs-room .tcs-room-age {
	display: block;
	color: #e0930a;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	margin-bottom: 12px;
}

.tcs-room p {
	color: #666666;
	font-size: 15px;
	line-height: 1.6;
	margin: 0;
}

/* --- School at a glance --------------------------------------------------- */

.tcs-glance {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
}

.tcs-glance-item {
	flex: 1 1 260px;
	background: #ffffff;
	border: 1px solid #e6ecf2;
	border-radius: 16px;
	padding: 26px 24px;
}

.tcs-glance-item h4 {
	color: #015e9b;
	font-size: 18px;
	margin: 0 0 12px;
	padding-bottom: 10px;
	border-bottom: 2px solid #fcb54d;
	display: inline-block;
}

.tcs-hours {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tcs-hours li {
	display: flex;
	justify-content: space-between;
	gap: 14px;
	padding: 9px 0;
	border-bottom: 1px dashed #e6ecf2;
	color: #666666;
	font-size: 15.5px;
}

.tcs-hours li:last-child {
	border-bottom: 0;
}

.tcs-hours li strong {
	color: #015e9b;
	font-weight: 700;
	white-space: nowrap;
}

.tcs-glance-item p {
	color: #666666;
	font-size: 15.5px;
	line-height: 1.7;
	margin: 0;
}

/* --- Enrichment & partners ------------------------------------------------ */

.tcs-partners {
	display: flex;
	flex-wrap: wrap;
	gap: 22px;
}

.tcs-partner {
	flex: 1 1 300px;
	background: #ffffff;
	border: 1px solid #e6ecf2;
	border-radius: 16px;
	padding: 28px 26px;
	text-align: center;
}

.tcs-partner-icon {
	width: 64px;
	height: 64px;
	line-height: 64px;
	border-radius: 100%;
	margin: 0 auto 16px;
	color: #ffffff;
	font-size: 24px;
}

.tcs-partner h4 {
	color: #015e9b;
	font-size: 19px;
	margin: 0 0 8px;
}

.tcs-partner p {
	color: #666666;
	font-size: 15.5px;
	line-height: 1.65;
	margin: 0 0 16px;
}

.tcs-partner .tcs-partner-link {
	display: inline-block;
	color: #015e9b;
	font-weight: 700;
	font-size: 15px;
	border-bottom: 2px solid #fcb54d;
	padding-bottom: 2px;
	text-decoration: none;
	transition: color .2s ease, border-color .2s ease;
}

.tcs-partner .tcs-partner-link:hover {
	color: #e0930a;
	border-bottom-color: #015e9b;
}

/* --- Responsive ----------------------------------------------------------- */

@media (max-width: 767px) {

	.tcs-announce {
		padding: 30px 20px 26px;
	}

	.tcs-announce h3 {
		font-size: 24px;
	}

	.tcs-announce p,
	.tcs-glance-item p {
		font-size: 16px;
	}

	.tcs-age-cards,
	.tcs-rooms,
	.tcs-glance,
	.tcs-partners {
		gap: 16px;
	}

	.tcs-age-card,
	.tcs-room,
	.tcs-glance-item,
	.tcs-partner {
		flex: 1 1 100%;
		max-width: none;
	}

	.tcs-hours li {
		flex-direction: column;
		gap: 2px;
	}
}

/* --- Photo strip & inline photos (26/27 client photos) -------------------- */

.tcs-photos {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
}

.tcs-photo {
	flex: 1 1 280px;
}

.tcs-photo img {
	display: block;
	width: 100%;
	height: 250px;
	object-fit: cover;
	border-radius: 16px;
	border: 4px solid #ffffff;
	box-shadow: 0 4px 16px rgba(1, 94, 155, .12);
}

.tcs-photo span {
	display: block;
	text-align: center;
	margin-top: 12px;
	color: #015e9b;
	font-weight: 700;
	font-size: 15px;
}

.tcs-inline-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 16px;
	border: 4px solid #ffffff;
	box-shadow: 0 4px 16px rgba(1, 94, 155, .12);
}

@media (max-width: 767px) {

	.tcs-photos {
		gap: 16px;
	}

	.tcs-photo {
		flex: 1 1 100%;
	}

	.tcs-photo img {
		height: 220px;
	}
}

/* Portrait inline photos (e.g. the school sign) stay a sensible size. */
.tcs-inline-photo--portrait img {
	max-width: 430px;
	margin: 0 auto;
}

/* Daily Schedule banner: fill the strip rather than sit at natural size.
   The theme prints its sub-header rule inline in <head>, hence !important.
   background-attachment is dropped back to scroll — fixed + cover misbehaves on mobile. */
body.page-id-1750 #kidsworld_sub_header {
	background-size: cover !important;
	background-position: center center !important;
	background-attachment: scroll !important;
}

/* Daily Schedule banner: darken the photo so the white title stays legible.
   Reuses the themes own overlay div rather than adding a pseudo-element. Cowork/ EY All Banners & Posts/ Keshav Combos/ Keshav/ The Repair Guy/ Third Elite Group 6 to 20/ WhatsApp Unknown 2026-08-13 at 12.07.54 PM/ campabell/ mir images/ puzz/ wetransfer_freisteller_2026-08-03_1108/

/* Daily Schedule banner: darken the photo so the white title stays legible.
   Reuses the theme's own overlay div rather than adding a pseudo-element. */
body.page-id-1750 #kidsworld_sub_header {
	position: relative;
}

body.page-id-1750 #kidsworld_sub_header .kidsworld_sub_header_bg {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: rgba(0, 20, 40, .42);
	z-index: 1;
}

body.page-id-1750 #kidsworld_sub_header .kidsworld_container {
	position: relative;
	z-index: 2;
}

/* Pre-footer contact bar: keep the email address on a single line.
   Four columns at 17px leaves it roughly 30px short, so the column padding
   comes down and the email alone drops a size. Mobile stacks to full width,
   so it returns to the normal size there. */
.kidsworld_cotact_footer .kidsworld_cotact_footer_wrap .kidsworld_column_gap {
	padding: 0 4px;
}

.kidsworld_cotact_footer .cf_email p,
.kidsworld_cotact_footer .cf_email a {
	/* Fluid: the 4 columns stay side by side down to 768px but get narrow,
	   so the size tracks the viewport to avoid overflowing with nowrap. */
	font-size: clamp(13px, 1.2vw, 15px);
	white-space: nowrap;
}

@media (max-width: 767px) {

	.kidsworld_cotact_footer .cf_email p,
	.kidsworld_cotact_footer .cf_email a {
		font-size: 17px;
		white-space: normal;
	}
}
