/*
 * VNK inner-page reskin overrides.
 *
 * Kept separate from kc-reskin.css (homepage + legacy sitewide fixes) on
 * purpose: the client hasn't reviewed these inner-page changes yet, so they
 * need to be revertable independently of the already-in-progress homepage
 * work. Delete this file + its enqueue in functions.php to fully revert.
 */

/* --- Page heading banner ---
 * Structural selectors only (no per-post element IDs): every inner page's
 * heading banner is a `section.header > .elementor-container >
 * .elementor-column` with a single centered `heading` widget inside, but
 * each page saved its own background_color/margin values individually when
 * it was built, so a class-only rule reaches all of them uniformly
 * regardless of what each page happens to have saved.
 *
 * Elementor doesn't actually paint the column's own box - it sets
 * background-color on the column's inner `.elementor-widget-wrap`, which
 * covers the column completely, so that's the element that has to be
 * targeted or the column-level color is invisible underneath it. Same story
 * for the heading's bottom spacing: it comes from `.elementor-widget-container`
 * (the h1's direct parent), not the h1 element itself.
 */
html .header {
	background-color: #83bc4c !important;
}
/* The nested .elementor-widget-wrap used to get this same green directly
   (see original comment below on why that was needed for column-level
   banners), but painting it there put an opaque layer directly over the
   watermark image living on the section itself, blocking it from view.
   The section-level rule above already forces green on every banner via
   !important regardless of what each page's own settings say, so the
   wrap can be left transparent and just let that same green show through
   from behind it - same visual result, minus the watermark being hidden. */
html .header .elementor-widget-wrap {
	background-color: transparent !important;
}
/* Decorative logo watermark - same asset/treatment originally meant for
   this banner (not the homepage's video hero, which got reverted). Lives
   on the section itself (`.header`), not the nested `.elementor-widget-
   wrap`; background-size is height-based on purpose so it overshoots and
   gets cut off top and bottom rather than being squeezed to fit. The
   SVG's own fill-opacity (15%) is what gives the blend into the green -
   a wrapper-level CSS opacity would fade the section's own text/children
   too, not just the watermark. */
html .header {
	background-image: url('https://vnk.ontwikkeling.ps.themindoffice.nl/wp-content/uploads/2026/08/kindcentra-logo-1-white.svg');
	background-repeat: no-repeat;
	background-position: right center;
	background-size: auto 120%;
}
/* Padding belongs on `.header` itself - the one element that's genuinely
 * full-bleed (spans the true viewport width, same as every other section on
 * the page). Putting it on the nested `.elementor-widget-wrap` instead (as a
 * first pass here did) still looks fine on its own, but it shifts the origin
 * point that the breadcrumbs' `max-width:1320px; margin:auto` below centers
 * against - that box is then 32px narrower than the page's real width, so
 * its centered content ends up offset from every other section's content on
 * the page, which anchors its own centering to the true full width. Since
 * background-color on an element isn't affected by that same element's own
 * padding (padding only repositions children, not the element's own paint
 * box), moving it here doesn't undo the full-bleed green above either.
 * `.elementor-widget-wrap` still needs its own padding forced to 0 - it's
 * where each page's original saved padding value actually lives, and it'd
 * otherwise add its own inset on top of this one. */
html .header {
	padding: 50px 16px 12px 16px !important;
}
html .header .elementor-widget-wrap {
	padding: 0 !important;
}
html .header .elementor-heading-title {
	color: #ffffff !important;
}
html .header .elementor-widget-container {
	margin-bottom: 0 !important;
}
/* Elementor's own "Background Overlay" control is set on several of the
 * container-based banners (from whatever template they were cloned from) -
 * a pale, ~40%-opacity fill that reads as a washed-out/bright film over the
 * green and over any text box beneath it. Two different implementations
 * depending on element type, so both need killing:
 *  - classic section/column: a real `.elementor-background-overlay` div.
 *  - the newer flexbox "container" type (`.e-con`, used by these banners):
 *    no such div at all - it's rendered via the container's own `::before`
 *    (`content: var(--background-overlay); opacity: var(--overlay-opacity)`),
 *    which the div-only rule below never touched. */
html .header .elementor-background-overlay {
	display: none !important;
}
html .header::before {
	display: none !important;
}

/* --- Breadcrumbs inside the banner ---
 * Rendered via the [kc_menu_breadcrumbs] shortcode (functions.php) instead
 * of Elementor's own breadcrumbs widget - that one follows WP page-parent
 * hierarchy, not this site's nav menu, and is a Pro-licensed feature that
 * isn't active here anyway. Sits as a widget right after the heading (JSON
 * order), so it already renders below the title - this just aligns it left
 * (to match the page content's own alignment) and keeps it legible against
 * the green banner. No horizontal padding of its own - that comes from the
 * banner-level padding above, so it lines up with the heading/subtitle
 * instead of being inset an extra step further.
 */
html .kc-breadcrumbs {
	max-width: 1320px;
	width: 100% !important;
	margin: 8px auto 0 auto;
	text-align: left !important;
	align-self: stretch !important;
}
html .header #breadcrumbs {
	margin-bottom: 0 !important;
}
html .kc-breadcrumbs,
html .kc-breadcrumbs a,
html .header #breadcrumbs,
html .header #breadcrumbs .breadcrumb_last {
	color: #ffffff !important;
}

/* --- Per-widget one-offs from client feedback ---
 * Elementor Pro's own per-widget "Custom CSS" control is a licensed feature
 * (ElementorPro\Modules\CustomCss - gated on an active Pro license, which
 * this install doesn't have) and silently no-ops, so these are done as
 * plain element-ID rules instead - the same approach used everywhere else
 * in this stylesheet.
 */

/* integratie: decorative icon image above the page, client wants it hidden
   for now until a real design for it exists. */
html .elementor-element-0f1c9c6 {
	display: none !important;
}

/* pact-voor-kindcentra: TextMedia's title-color dropdown (geel/paars/blauw/
   groen, where "groen" already means lichtgroen elsewhere) has no plain
   "dark green" option, so this can't just be a settings change - "PACT voor
   kindcentra" itself goes to the site's actual dark green, and its subtitle
   (which the widget never gives a color control at all - see
   widgets/text-media.php, the <h3> is unstyled by design) goes lichtgroen. */
html .elementor-element-d5cfc9b h2.title {
	color: #037d36 !important;
}

/* platformkc: the "Deelnemende Partijen" Overzicht-teams title (team.php's
   plain, unclassed <h2>) is unstyled by the widget itself - default color
   and whatever margin the theme's base h2 style gives it, which reads as
   too much gap before the actual list. Scoped to this one instance so it
   doesn't affect the same widget on the other overzicht pages. */
html .elementor-element-cdfd6ed .newsitems h2 {
	color: #037d36 !important;
	margin-bottom: 8px !important;
}
/* The actual gap wasn't the h2's own margin - it's team.php always printing
   an <h3> (subtitle) and <p> (text) after the title regardless of whether
   those fields have content; both are empty here, but an empty tag still
   takes up its own line-height + margin. Hiding them (ID-scoped - the same
   widget on other pages does use these fields for real content). */
html .elementor-element-cdfd6ed .newsitems h3,
html .elementor-element-cdfd6ed .newsitems > .component-title > div > p {
	display: none !important;
}
html .elementor-element-d5cfc9b h3 {
	color: #83bc4c !important;
}

/* partners-overzicht: card spacing (.team_item h4/h3, hardcoded in
   team.php's own <style> block - h4 currently has margin-bottom:15px !important,
   h3 has none at all). Tightening the gap above h3, opening one up below it
   before the phone/email icons. Scoped to this widget instance - other
   overzicht pages haven't been reviewed yet. */
html .elementor-element-25965d0 .team_item h4 {
	margin-bottom: 6px !important;
}
html .elementor-element-25965d0 .team_item h3 {
	margin-bottom: 12px !important;
	color: #83bc4c !important;
}
/* Pin the icons row to the bottom of each card regardless of how much
   contact-name/text each one has above it. */
html .elementor-element-25965d0 .team_item {
	display: flex;
	flex-direction: column;
}
html .elementor-element-25965d0 .team_item .content {
	flex-grow: 1;
	display: flex;
	flex-direction: column;
}
html .elementor-element-25965d0 .team_item .content > a {
	margin-bottom: auto;
}

/* themadag-2025-2: the Quote widget's own "Text Color" control targets a
   ".hello-world" class its own render() never actually outputs (dead
   control - see widgets/quote.php), so the quote text was just falling
   through to kc-reskin.css's sitewide "section.quote .text{color:#037d36}"
   rule - dark green text on the widget's own light green background,
   unreadable. First attempt at overriding this used "html
   .elementor-element-0ec09bc .text" - both rules use !important, so it comes
   down to specificity, and that selector (2 classes + 1 type) actually loses
   to kc-reskin's "html section.quote .text" (2 classes + 2 types). Keeping
   "section.quote" in the selector here too so it wins outright. */
html .elementor-element-0ec09bc section.quote .text {
	color: #ffffff !important;
}

/* voor-ouders + week-van-de-kindprofessional: the subtitle text-editor widget
   living inside the green heading banner (shared element id - both pages
   were cloned from the same template) - centered and white to match the
   banner instead of the default left-aligned black body text. This widget
   also carries its own saved background-color (#F3F9EC, from whatever
   template it was cloned from) directly on its widget-container - a second,
   separate source of the same "whitish box" look, independent of the
   banner's own overlay fixed above, so it needs clearing too. */
html .elementor-element-067a6ba,
html .elementor-element-067a6ba p {
	text-align: center !important;
	color: #ffffff !important;
}
html .elementor-element-067a6ba .elementor-widget-container {
	background-color: transparent !important;
}

/* partners-overzicht: the "subtitle" paragraph moved out of the Overzicht
   teams widget into its own text-editor inside the banner. */
html .elementor-element-ea15711,
html .elementor-element-ea15711 p {
	text-align: center !important;
	color: #ffffff !important;
}

/* vraag-antwoord: the nested-accordion widgets' border color is driven by
   Elementor's own --n-accordion-border-color custom property (default
   #d5d8dc, a neutral gray - widget-nested-accordion.min.css), not a JSON
   setting, so it's overridden the same way rather than guessing at a
   border-color property to fight. Scoped to this page's own Elementor
   wrapper class so it doesn't affect the other 2 pages using this widget
   elsewhere on the site. */
html .elementor-13340 .elementor-widget-n-accordion {
	--n-accordion-border-color: #037d36;
}

/* Search results template: the "Je zocht naar" line between the banner and
   the results. */
html .elementor-element-aeb1538,
html .elementor-element-aeb1538 p {
	text-align: center !important;
}

/* Search results banner: the only banner with no breadcrumbs by design (the
   "Je zocht naar" line lives in its own section below instead - see above),
   so the standard 12px bottom padding (sized to sit close under a
   breadcrumb line) looks lopsided against the 50px top with nothing there. */
html .elementor-element-28adec0 {
	padding-bottom: 50px !important;
}

/* nieuwspagina: the "Nieuws all" widget hardcodes its own "Nieuws" <h2>
   above the results grid (widgets/newsall.php) - redundant now that the
   page has its own heading banner above it. Individual news items use h4,
   not h2, so this only hides that one hardcoded heading. */
html .elementor-element-510a2e7 h2 {
	display: none !important;
}

/* vnk-infobulletins: the theme's own reset.css sets a blanket "a{text-
   decoration:none}" with no hover state at all, so the plain links listing
   each bulletin edition (TextMedia widgets' .text-body content) currently
   give no hover feedback whatsoever. */
html .elementor-7597 .text-body a:hover {
	text-decoration: underline !important;
}

/* dashboard: kc-reskin.css's sitewide "html .elementor-button{font-size:1rem
   !important}" (button reconciliation is still pending sitewide, see task
   #14) forces these buttons down from their own global typography's 18px/
   1.125rem. These 3 CTA buttons are meant to read larger/more prominent
   than that default, so bump them back up here rather than touching the
   sitewide rule. */
html .elementor-10562 .elementor-button {
	font-size: 1.125rem !important;
}

/* blog: card template (JetEngine Listing Item post 3214, shared by every
   card the archive renders) - the real source of the gap between date/
   title/text/link turned out to be Elementor's own default "space between
   widgets" (20px), which lands on the widget's ".elementor-element"
   wrapper and/or its ".elementor-widget-container" depending on the
   widget - not the inner h2/p tags' own margin (confirmed via computed
   styles in the browser; overriding the inner tags alone did nothing).
   Overriding both possible targets per widget to be safe regardless of
   which one actually carries it for that widget. */
html .elementor-element-18e7bd7,
html .elementor-element-18e7bd7 > .elementor-widget-container {
	margin-bottom: 4px !important;
}
html .elementor-element-76c6f07,
html .elementor-element-76c6f07 > .elementor-widget-container {
	margin-bottom: 8px !important;
}
html .elementor-element-d52e9b9,
html .elementor-element-d52e9b9 > .elementor-widget-container {
	margin-bottom: 8px !important;
}
/* "Lees meer" itself sits last so its own ".elementor-element" already has
   no bottom margin - but its ".elementor-widget-container" still carried
   the same default 20px, which was the actual "space underneath Lees meer"
   the card's border was leaving before its bottom edge. */
html .elementor-element-30cb595 > .elementor-widget-container {
	margin-bottom: 0 !important;
}

/* blog: sitewide "html .jet-listing-grid__item .elementor-heading-title
   {color:#037d36 !important}" (kc-reskin.css) catches every heading in
   this card - including the date and "Lees meer", both of which need a
   different color here. Same "!important beats !important via specificity"
   fight as the agenda page's card heading; keeping the ".jet-listing-
   grid__item" ancestor in the selector too (on top of the element ID)
   beats that rule's specificity outright instead of relying on these two
   stylesheets' load order. */
html .jet-listing-grid__item .elementor-element-18e7bd7 .elementor-heading-title {
	color: #83bc4c !important;
}
html .jet-listing-grid__item .elementor-element-30cb595 .elementor-heading-title {
	color: #EA5461 !important;
}

/* blog: card image - Elementor's own width/height number-field controls
   were stripped from the widget's settings (they were producing
   inconsistent per-card rendered widths, since a "%"-unit width control
   doesn't reliably resolve the way a plain CSS width does) in favor of a
   plain aspect-ratio here, which also uniformly fixes the card height
   mismatch that came from it - every card's image now scales to the same
   proportions instead of each card's image finding its own width. */
html .elementor-element-00cda6e a {
	display: block !important;
	width: 100% !important;
}
html .elementor-element-00cda6e img {
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	aspect-ratio: 3 / 2 !important;
	object-fit: cover !important;
}

/* blog: JetEngine's grid (".jet-listing-grid__items", display:flex) already
   stretches each row's ".jet-listing-grid__item" cells to equal height -
   confirmed via computed styles, two cells in the same row already report
   the same cellH. The card that's actually visible (the bordered section,
   ".elementor-element-d4a24e3") sits several plain block-display wrappers
   deep inside that cell (".jet-engine-listing-overlay-wrap" >
   ".elementor-3214" > the section), and none of them stretch to fill it -
   each just sits at its own auto/content height, so the border ends
   wherever that card's own content happens to end. Elementor's own section
   > container > column > widget-wrap chain below the section is already
   flex/stretching correctly (confirmed too) - it's only these three outer
   wrappers that need height:100% to actually pass the cell's full height
   down to the section the border lives on. */
html .jet-listing-grid__item .jet-engine-listing-overlay-wrap,
html .jet-listing-grid__item .elementor-3214,
html .jet-listing-grid__item .elementor-element-d4a24e3 {
	height: 100% !important;
}
/* The section itself now stretches (above), but its own direct child
   ".elementor-container" doesn't inherit that automatically - a display:
   block parent doesn't pass its height down to a flex child just because
   the parent has one. Without this, the container (and everything below
   it: column, widget-wrap) stayed at its own content height, leaving a
   visible gap between the actual widgets and the section's bottom border -
   and leaving margin-top:auto on "Lees meer" nothing to push against,
   since its own flex container (the widget-wrap) never had free space. */
html .jet-listing-grid__item .elementor-element-d4a24e3 > .elementor-container {
	height: 100% !important;
}

/* blog: "Lees meer" card link - matching the nieuwspagina cards' arrow-
   link look (Nunito 700/16px, no underline, arrow instead of the literal
   ">" that used to be typed into the title text - stripped that from the
   widget's own "title" setting, since CSS can't hide part of a plain text
   run). This is an Elementor heading widget, not raw markup like
   newsall.php, so an <i> icon tag typed into the title field would just
   print as literal escaped text instead of an icon - a CSS ::after with
   the Font Awesome arrow glyph gets the same look without needing to
   touch the (shared, per-card) widget markup itself. */
html .elementor-element-30cb595 .elementor-heading-title {
	font-family: 'Nunito', sans-serif !important;
	font-weight: 700 !important;
	font-size: 16px !important;
}
html .elementor-element-30cb595 .elementor-heading-title a {
	text-decoration: none !important;
	display: inline-flex;
	align-items: center;
	gap: 10px;
}
html .elementor-element-30cb595 .elementor-heading-title a::after {
	content: "\f061";
	font-family: "Font Awesome 5 Free";
	font-weight: 900;
	font-size: 12px;
	transition: transform 0.15s ease;
}
html .elementor-element-30cb595 .elementor-heading-title a:hover::after {
	transform: translateX(4px);
}
/* Pin "Lees meer" to the bottom of the card now that the card itself
   stretches to match its row (see the height:100% rule above). The
   column's ".elementor-widget-wrap" turned out to be flex-direction:row
   (each widget just forced to width:100% so it wraps onto its own line
   and visually looks like a column) - margin-top:auto only distributes
   free space along the main axis, which on a row is horizontal, so it
   had no effect here. Forcing an actual column direction (each widget
   already defaults to align-items:stretch, i.e. full width, so nothing
   else changes) makes margin-top:auto work as a real bottom-pin. */
html .jet-listing-grid__item .elementor-element-a0adff8 .elementor-widget-wrap {
	flex-direction: column !important;
}
html .elementor-element-30cb595 {
	margin-top: auto !important;
}

/* doe-agenda: Elementor's own frontend.min.css sets a blanket ".elementor
   hr{margin:0}" (styling for its Divider widget, but it matches any plain
   <hr> inside Elementor-rendered content too) - this content's <hr> is
   plain pasted-from-Word markup with no margin of its own, so it lost the
   browser's native default entirely (confirmed as 8px 0 via a bare <hr>
   with no CSS applied at all) instead of just losing Elementor's version
   of it. */
html .elementor-element-1befa66 hr {
	margin: 8px 0 !important;
}

/* over-ons: "Vanuit ervaring" and "Vanuit de praktijk" need darkgreen, which
   TextMedia's own color dropdown doesn't offer (only geel/paars/blauw/groen,
   where "groen" is already lightgreen elsewhere in this project). */
html .elementor-element-4298b3d h2.title,
html .elementor-element-a31a4a2 h2.title {
	color: #037d36 !important;
}
/* "Het bestuur" / "Het coördinatieteam" - the Personen widget hardcodes
   "text-white paars" directly on its <h3> (personen.php), not a setting,
   so this can only be reached with a scoped override. */
html .elementor-element-2cffd20 .person-title {
	color: #83bc4c !important;
}
html .elementor-element-16d43cc .person-title {
	color: #037d36 !important;
}

/* Personen widget's card row is "display:flex; flex-wrap:nowrap" with each
   .team_item free to flex-shrink, so it always renders as a single row and
   just squeezes every card equally as more are added (7 members ended up
   at 171px each). Capping it at 5 columns and letting it wrap instead. */
html .elementor-element-2cffd20 .row.justify-content-center,
html .elementor-element-16d43cc .row.justify-content-center {
	flex-wrap: wrap;
	row-gap: 20px;
}
html .elementor-element-2cffd20 .team_item,
html .elementor-element-16d43cc .team_item {
	flex: 0 0 calc((100% - 80px) / 5);
	max-width: calc((100% - 80px) / 5);
}

/* aanmeldformulier-lidmaatschap: the submit button's typography is linked
   to the sitewide "Buttons & Knoppen" global (used across hundreds of
   posts), so it's scoped to this one widget instance rather than bumping
   that global's size for the whole site. */
html .elementor-element-23c1111 .jet-form__submit {
	font-size: 1.125rem !important;
}

/* delen: "Vragenlijst" heading, legacy blue - TextMedia's color dropdown
   has no plain darkgreen option (only geel/paars/blauw/groen). */
html .elementor-element-660326f h2.title {
	color: #037d36 !important;
}

/* 2025-vnk-aanmeldingsformulier: same sitewide "html .elementor-button
   {font-size:1rem !important}" (kc-reskin.css) as the dashboard page's
   buttons - scoped bump instead of touching that still-pending sitewide
   default. */
html .elementor-element-2e9fa84 .elementor-button {
	font-size: 1.125rem !important;
}

/* voor-professionals: carousel tab buttons currently just left-align and
   wrap; spacing them out evenly across the row instead. */
html .elementor-element-9c601fe .tabsbuttons {
	justify-content: space-between;
}

/* "Agenda" block title - the Blokken widget hardcodes font-family:'Poppins'
   on all its h5 titles (widgets/blokken.php), but Poppins is never actually
   enqueued anywhere on this site (only Nunito and Roboto are) - so it was
   silently falling back to the browser default instead. Using the site's
   actual heading font here instead of the dead Poppins reference. */
html .elementor-element-251e92f .blok-title {
	font-family: 'Nunito', sans-serif !important;
}

/* voor-bestuur: the widget's own Advanced-tab margin only reaches its
   ".elementor-widget-container" - the actual visible gap between widgets
   comes from the outer ".elementor-element" wrapper's own default 20px
   margin instead (same mechanism as the blog page cards), so the 50px
   set via settings had no visible effect until overridden here directly. */
html .elementor-element-1dd67e4 {
	margin-bottom: 50px !important;
}

/* voor-bestuur: same carousel-tab spacing fix as voor-professionals. */
html .elementor-element-42b75f9 .tabsbuttons {
	justify-content: space-between;
}

/* voor-bestuur: "Succesverhalen" cards - tmo.css's shared ".row{align-
   items:center}" (used by several widgets' Bootstrap-style row/col
   markup) vertically centers these cards; scoped to flex-start for this
   instance only since other widgets rely on the centered default. */
html .elementor-element-251e92f .row {
	align-items: flex-start;
}

/* nieuwsbrief-inschrijven: Laposta's signup form button ships with its own
   brand pink/magenta (#CC3366) - transparent background with pink text/
   border normally, solid pink background on :hover. Needs an explicit
   background (not just text/border) to read as a real button, and the
   :hover state overridden separately since Laposta sets its own
   background-color there too. */
html .lsb-form-button {
	background-color: #037d36 !important;
	color: #ffffff !important;
	border-color: #037d36 !important;
}
html .lsb-form-button:hover {
	background-color: #83bc4c !important;
	color: #ffffff !important;
	border-color: #83bc4c !important;
}

/* blog single template: the share-buttons widget's "minimal" skin paints
   its icon span's background from --e-share-buttons-primary-color and the
   icon itself from --e-share-buttons-secondary-color - normally primary is
   transparent so the (darkgreen) icon reads fine, but on hover a template-
   level rule reassigns primary to the same darkgreen global color as the
   icon, so the icon disappears into its own hover background. Forcing the
   icon color to white on hover instead, with a transition on both so the
   color swap animates rather than jumping. */
html .elementor-element-56eb611b .elementor-share-btn__icon {
	transition: color 0.2s ease, background-color 0.2s ease;
}
html .elementor-element-56eb611b .elementor-share-btn:hover {
	--e-share-buttons-secondary-color: #ffffff;
}

/* nieuws single template: same share-buttons hover fix as the blog template. */
html .elementor-element-7d057a2 .elementor-share-btn__icon {
	transition: color 0.2s ease, background-color 0.2s ease;
}
html .elementor-element-7d057a2 .elementor-share-btn:hover {
	--e-share-buttons-secondary-color: #ffffff;
}

/* agenda single template: same share-buttons hover fix again. */
html .elementor-element-82aa69a .elementor-share-btn__icon {
	transition: color 0.2s ease, background-color 0.2s ease;
}
html .elementor-element-82aa69a .elementor-share-btn:hover {
	--e-share-buttons-secondary-color: #ffffff;
}

/* ambassadeurs single template: Elementor's own default icon-list styling
   puts an 8px top padding on the item link, which just misaligns it since
   this item has no text label, only the email icon. */
html .elementor-element-78029d2 a[href^="mailto:"] {
	padding-top: 0 !important;
}
