/*
Theme Name: Gigglezz
Theme URI: https://gigglezz.com/
Author: WordPress Theme Architect
Author URI: https://gigglezz.com/
Description: Minimal & Premium presentation theme for Gigglezz — a child-centred preschool & women-centric teacher-training academy in JP Nagar, Bengaluru. A pure presentation layer: all settings, SEO/AEO/GEO, blog/comment moderation and the automation endpoint live in the companion "Gigglezz Engine" (wpta-engine) plugin. The theme degrades gracefully when the plugin is inactive.
Version: 1.1.7
Requires at least: 6.0
Tested up to: 6.5
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: gigglezz
Tags: education, preschool, custom-colors, custom-menu, featured-images, threaded-comments, translation-ready

Gigglezz is distributed under the terms of the GNU GPL v2 or later.

All visual design tokens live in assets/css/colors_and_type.css (the single
source of truth). The bulk of the styles are enqueued from assets/css/* in
functions.php; this file (loaded last) only adds the glue needed for
WordPress-generated markup and a couple of theme atoms.
*/

/* ---- Page-level reset ----
   Every other rule is namespaced under .gz-site/.gz-page, so the browser's
   default 8px body margin was never reset — visible as a white frame around
   the site once installed in WordPress. */
html, body { margin: 0; padding: 0; }

/* ---- Accessibility ---- */
.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; word-wrap: normal !important;
}
.skip-link {
	position: absolute; left: -9999px; top: 0; z-index: 100000;
	background: var(--color-primary); color: #fff; padding: 12px 20px; border-radius: 0 0 var(--radius-md) 0;
	font-family: var(--font-display); font-weight: 700;
}
.skip-link:focus { left: 0; }

/* ---- Real images / videos dropped into placeholder slots ---- */
.gz-site .gz-photo.is-real { padding: 0; }
.gz-site .gz-photo.is-real img,
.gz-site .gz-photo.is-real video,
.gz-site .gz-media-video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gz-site .gz-logo { max-height: 44px; width: auto; display: block; }

/* ---- Post card links inherit cleanly ---- */
.gz-site .post-card h3 a,
.gz-site .blog-feature h2 a { color: inherit; }
.gz-site .post-card .pc-media-link { display: block; }

/* ---- Form status notices ---- */
.gz-site .form-note { border-radius: var(--radius-md); padding: 14px 18px; margin-bottom: 20px; font-size: 14.5px; font-family: var(--font-body); }
.gz-site .form-note.ok  { background: var(--color-success-bg); color: var(--color-success-text); border: 1px solid #b6ddc0; }
.gz-site .form-note.err { background: #fdecea; color: #8a1c12; border: 1px solid #f3c2bd; }

/* Honeypot anti-spam field — hidden from people, present for bots */
.gz-site .gz-hp { position: absolute !important; left: -9999px !important; top: auto; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }

/* On-page success confirmation (replaces the form, then auto-redirects home) */
.gz-site .gz-form-confirm { text-align: center; }
.gz-site .gz-form-confirm .gz-confirm-ic { font-size: 56px; color: #1d7a3a; line-height: 1; }
.gz-site .gz-form-confirm h3 { font-family: var(--font-display); font-weight: 800; font-size: 24px; color: var(--color-text-heading); margin: 14px 0 8px; }
.gz-site .gz-form-confirm p { color: var(--color-neutral-500); font-size: 15px; margin: 0; }
.gz-site .gz-form-confirm .gz-redirect-note { margin-top: 6px; font-size: 13px; }
.gz-site .gz-form-confirm .btn-pill { margin-top: 22px; }

/* ---- Pagination ---- */
.gz-site .pagination,
.gz-site .nav-links { display: inline-flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.gz-site .pagination .page-numbers {
	font-family: var(--font-display); font-weight: 700; font-size: 14px;
	padding: 9px 15px; border-radius: var(--radius-full); border: 1px solid #eef0f7;
	color: var(--color-neutral-700); background: #fff; transition: all .15s;
}
.gz-site .pagination .page-numbers:hover,
.gz-site .pagination .page-numbers.current { background: var(--color-primary); color: #fff; border-color: transparent; }

/* ---- WordPress content alignments & embeds (entry-content) ---- */
.gz-site .entry-content { font-size: 16.5px; line-height: 1.8; color: var(--color-neutral-700); }
.gz-site .entry-content > * + * { margin-top: 20px; }
.gz-site .entry-content h2 { font-family: var(--font-display); font-weight: 800; font-size: 26px; color: var(--color-text-heading); margin-top: 40px; }
.gz-site .entry-content h3 { font-family: var(--font-display); font-weight: 700; font-size: 21px; color: var(--color-text-heading); margin-top: 32px; }
.gz-site .entry-content a { color: var(--color-primary); text-decoration: underline; text-underline-offset: 2px; }
.gz-site .entry-content img { height: auto; max-width: 100%; border-radius: var(--radius-lg); }
.gz-site .entry-content blockquote {
	font-family: var(--font-accent); font-style: italic; font-size: 20px; line-height: 1.6;
	color: var(--color-text-heading); border-left: 4px solid var(--color-gold);
	padding-left: 24px; margin-left: 0;
}
.gz-site .entry-content ul, .gz-site .entry-content ol { padding-left: 24px; }
.gz-site .entry-content li { margin-top: 8px; }
.gz-site .alignleft { float: left; margin: 6px 28px 20px 0; }
.gz-site .alignright { float: right; margin: 6px 0 20px 28px; }
.gz-site .aligncenter { display: block; margin-left: auto; margin-right: auto; }
.gz-site .wp-caption-text, .gz-site figcaption { font-size: 13px; color: var(--color-neutral-500); margin-top: 8px; text-align: center; }

/* ---- Comments ---- */
.gz-site .comment-list .children { list-style: none; margin: 16px 0 0 28px; display: flex; flex-direction: column; gap: 16px; }
.gz-site .comment-body { background: var(--color-neutral-100); border: 1px solid #eef0f7; border-radius: var(--radius-lg); padding: 22px 24px; }
.gz-site .comment-author { display: flex; align-items: center; gap: 12px; }
.gz-site .comment-author .avatar { border-radius: 50%; }
.gz-site .comment-author .fn { font-family: var(--font-display); font-weight: 700; color: var(--color-text-heading); font-style: normal; }
.gz-site .comment-meta { font-size: 12.5px; color: var(--color-neutral-500); margin: 4px 0 12px; }
.gz-site .comment-content { font-size: 15px; line-height: 1.7; color: var(--color-neutral-700); }
.gz-site .comment-respond .comment-form { display: flex; flex-direction: column; gap: 14px; max-width: 640px; }
.gz-site .comment-respond label { font-family: var(--font-display); font-weight: 600; font-size: 13.5px; color: var(--color-text-heading); }
.gz-site .comment-respond input[type="text"],
.gz-site .comment-respond input[type="email"],
.gz-site .comment-respond input[type="url"],
.gz-site .comment-respond textarea {
	width: 100%; font-family: var(--font-body); font-size: 15px; padding: 12px 14px;
	border: 1.5px solid var(--color-neutral-300); border-radius: var(--radius-sm); background: #fff;
}
.gz-site .comment-respond input:focus, .gz-site .comment-respond textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(80,118,244,0.18); }

/* The plugin's video-comment field + embed (rendered for approved comments) */
.gz-site .gz-video-field { background: var(--color-accent-light); border-radius: var(--radius-md); padding: 14px 16px; }
.gz-site .gz-video-field .desc { font-size: 12.5px; color: #0E7A7E; margin-top: 6px; }
.gz-site .gz-comment-video { margin-bottom: 14px; border-radius: var(--radius-md); overflow: hidden; }
.gz-site .gz-comment-video video, .gz-site .gz-comment-video iframe { width: 100%; display: block; border: 0; aspect-ratio: 16 / 9; }

/* ---- Blog sidebar widgets (minimal) ---- */
.gz-site .widget { margin-bottom: 28px; }
.gz-site .widget-title { font-family: var(--font-display); font-weight: 800; font-size: 16px; color: var(--color-text-heading); margin-bottom: 12px; }

/* ---- Tag links (single) ---- */
.gz-site .entry-content + .tag-row a,
.gz-site .tag-row a { font-size: 13px; font-weight: 600; color: var(--color-neutral-700); background: var(--color-neutral-100); border: 1px solid #eef0f7; padding: 7px 14px; border-radius: var(--radius-full); }

/* =====================================================================
   v1.0.1 FIXES (loaded last; .gz-site specificity guarantees they win)
   1) Home-hero decorative blobs were painting OVER the headline because
      absolute (positioned) elements paint above static content. Give the
      hero content its own stacking context so text sits on top.
   2) Mobile header: collapse to the hamburger only — hide the inline nav
      links + the "Contact" ghost link below 1024px (robust, high-specificity).
   3) A smooth open/close animation for the mobile menu (animatable
      max-height/opacity instead of a hard display swap).
   ===================================================================== */

/* 1) Hero blobs behind the copy */
.gz-site .hh > .wrap,
.gz-site .hh .hh-grid { position: relative; z-index: 1; }
.gz-site .hh .gz-accent { z-index: 0; }

/* 1b) GENERAL SAFEGUARD — decorative accents are positioned elements, so by
   default they paint ON TOP of static sibling content. Force every accent to
   the back, and lift the real content of every accent-bearing panel above it.
   Covers the Director message panel, the CTA band, the subscribe card and any
   future section that drops a blob/sparkle/cloud next to its text. */
.gz-site .gz-accent { z-index: 0; }
.gz-site .msg-panel > *:not(.gz-accent),
.gz-site .cta-card > *:not(.gz-accent),
.gz-site .page-hero .ph-inner,
.gz-site .hh-copy,
.gz-site .hh-media { position: relative; z-index: 1; }

@media (max-width: 760px) {
	/* Keep the blobs as a soft background accent, never over the copy. */
	.gz-site .hh .gz-accent { opacity: 0.45; }
	.gz-site .hh-copy { position: relative; z-index: 2; }
}

/* 2) Mobile header — hamburger only (collapse at the design's 1024px). */
@media (max-width: 1024px) {
	.gz-site .nav-links { display: none !important; }
	.gz-site .nav-ghost { display: none !important; }
	.gz-site .nav-toggle { display: inline-flex !important; align-items: center; justify-content: center; }
}

/* 3) Smooth mobile-menu reveal + hamburger icon transition */
@media (max-width: 1024px) {
	.gz-site .mobile-menu {
		display: block;            /* present but collapsed */
		max-height: 0;
		opacity: 0;
		overflow: hidden;
		transition: max-height .35s var(--ease-entry), opacity .25s ease;
	}
	.gz-site .mobile-menu.open {
		max-height: 80vh;
		opacity: 1;
		overflow-y: auto;
	}
	.gz-site .mobile-menu a {
		transform: translateY(-6px);
		transition: transform .3s var(--ease-entry), color .15s, background .15s;
	}
	.gz-site .mobile-menu.open a { transform: translateY(0); }
	.gz-site .nav-toggle i { transition: transform .25s var(--ease-entry); display: inline-block; }
	.gz-site .nav-toggle[aria-expanded="true"] i { transform: rotate(90deg); }
}
