/*
 * inner-pages.css — shared component vocabulary for the two "inner" pages
 * (ติดต่อเรา / ทำไมต้อง Inspire Wellness), ported from the approved
 * standalone mockups `contact-page-mockup.html` and
 * `why-inspire-page-mockup.html`.
 *
 * Same pattern as faq-section.css / quote-section.css: a self-contained
 * stylesheet only enqueued on the page(s) that need it (see
 * iw_enqueue_assets() in functions.php), not loaded sitewide.
 *
 * All classes are prefixed `.ip-` (Inner Page) — the mockups used bare
 * names like `.hero`, `.space-grid`, `.space-card`, `.scallop` which
 * already collide with unrelated sitewide rules in style.css (the
 * homepage's own `.hero`, "Our Space" `.space-grid`/`.space-card`, etc.)
 * — since style.css loads on every page, reusing those bare names here
 * would have silently broken the homepage or this page depending on load
 * order. Prefixing avoids that without needing an iframe/shadow-DOM.
 *
 * Colors: reuses sitewide CI tokens from style.css's :root wherever the
 * mockup's local palette matched exactly (--blush, --blush-soft, --gold,
 * --gold-deep, --mauve, --white, and --heading-rose/--heading-rose-mid
 * for the mockup's --rose/--pink — confirmed identical hex values, not a
 * coincidence, the mockup was built against this same CI). Only 4 tones
 * the mockup used that don't already exist sitewide are added below as
 * new `--ip-*` custom properties, so nothing here silently diverges from
 * the rest of the site's color system.
 *
 * Font: the mockups specified 'Alex Brush' for the eyebrow script text;
 * per the brief this is replaced with the theme's actual cursive font,
 * 'Mrs Saint Delafield' (already enqueued sitewide as --font-script, see
 * style.css :root — no new font-loading needed here). The mockup's own
 * eyebrow component (heart icon + gradient line + script text) is kept
 * as designed — reproduced below as `.ip-eyebrow` (namespaced: the
 * sitewide bare `.eyebrow` class already means something else, a plain
 * Montserrat uppercase label with no icon, used on the homepage's Why
 * Inspire/Contact Banner sections — reusing that name here would have
 * collided) — just with the correct font swapped in, so both new pages
 * share one consistent eyebrow between themselves.
 *
 * Sep 2026 retheme (per `our-space-page-mockup.html`, which ships with
 * this palette already applied — used as the reference for retrofitting
 * the two earlier inner pages too): base background pink→ivory
 * (`--ip-pearl` now IS `--ivory`, not a separate near-duplicate tone),
 * eyebrow line + heading/CTA gradients drop their pink end-stop for
 * gold. `--heading-rose-mid` ("pink") is NOT retired sitewide — sparkles
 * still alternate gold/pink per the original brief, only the specific
 * spots below changed.
 */

:root{
	--ip-pearl:var(--ivory);
	--ip-blush-pale:#FDEBF0;
	--ip-mauve-deep:#9C6E7A;
	--ip-ink:#4A3B3F;
}

.ip-page{overflow-x:hidden;background:var(--ip-pearl);}
.ip-page section{position:relative;}

.ip-section{padding:96px 24px;position:relative;}
.ip-section.ip-bg-white{background:var(--white);}
.ip-section.ip-bg-pearl{background:var(--ip-pearl);}

.ip-wrap{max-width:1120px;margin:0 auto;position:relative;z-index:2;}

.ip-gradient-text{
	background:linear-gradient(90deg, var(--heading-rose) 0%, var(--gold-deep) 70%, var(--gold) 100%);
	-webkit-background-clip:text;background-clip:text;color:transparent;
}

/* ---------- eyebrow (heart icon + gradient line + script text) ----------
   Ported as-is from the mockup, just namespaced `.ip-` and with the
   font swapped to the theme's real script font (Mrs Saint Delafield,
   --font-script — already loaded sitewide, see style.css :root). */
.ip-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:10px;}
.ip-eyebrow-heart{width:15px;height:15px;flex-shrink:0;}
.ip-eyebrow-heart path{fill:none;stroke:var(--heading-rose);stroke-width:1.6;}
.ip-eyebrow .ip-line{width:44px;height:1px;background:linear-gradient(90deg, transparent, var(--gold));position:relative;}
.ip-eyebrow .ip-line::before{content:'';position:absolute;top:-2px;left:-6px;width:4px;height:4px;border-radius:50%;background:var(--gold);}
/* .ip-right: second line on the opposite side of a heart (used when a
   hero eyebrow has heart—text—heart flanked by lines both sides, e.g.
   Our Space's hero — see page-our-space.php). Gradient + dot direction
   both flip so it still fades outward from the text. */
.ip-eyebrow .ip-line.ip-right{background:linear-gradient(90deg, var(--gold), transparent);}
.ip-eyebrow .ip-line.ip-right::before{left:auto;right:-6px;}
.ip-script{font-family:var(--font-script);color:var(--heading-rose);font-size:2rem;font-weight:400;letter-spacing:.02em;line-height:1;}

/* ---------- section heading (eyebrow + h2, centered or left) ---------- */
.ip-section-heading{text-align:center;max-width:640px;margin:0 auto 56px;}
.ip-section-heading .ip-eyebrow{justify-content:center;}
.ip-section-heading h2{font-family:var(--font-th-display);font-size:clamp(1.5rem, 3.4vw, 2.3rem);font-weight:600;color:var(--heading-rose);margin-bottom:14px;}
.ip-section-heading > p{color:var(--ip-ink);opacity:.8;font-size:1rem;}
.ip-section-heading.ip-left{text-align:left;margin:0 0 30px;}
.ip-section-heading.ip-left .ip-eyebrow{justify-content:flex-start;}

/* ---------- portrait placeholder (reusable — swaps to a real photo
   automatically once one exists on disk, see get_theme_file_uri() +
   file_exists() checks in the page templates; no code changes needed
   later, just drop the file in with the expected filename). ---------- */
.ip-portrait-frame{
	position:relative;border-radius:28px;overflow:hidden;
	background:linear-gradient(160deg, var(--blush-soft), var(--mauve));
	border:1px solid rgba(217,140,168,0.32);
	display:flex;align-items:center;justify-content:center;
}
.ip-portrait-frame.ip-tall{aspect-ratio:3/4;}
.ip-portrait-frame.ip-wide{aspect-ratio:16/10;}
.ip-portrait-frame.ip-stretch{height:100%;min-height:380px;}
.ip-portrait-frame.ip-has-photo{background:var(--ip-blush-pale);}
.ip-portrait-frame img{width:100%;height:100%;object-fit:cover;display:block;}
.ip-portrait-note{text-align:center;color:var(--white);font-family:var(--font-latin);font-size:.82rem;padding:20px;opacity:.95;}
.ip-portrait-note strong{display:block;font-family:var(--font-th-display);font-size:.95rem;margin-bottom:4px;}
.ip-portrait-icon{width:52px;height:52px;margin:0 auto 10px;opacity:.9;}
.ip-portrait-icon svg{width:100%;height:100%;stroke:var(--white);fill:none;stroke-width:1.2;}
.ip-portrait-badge{
	position:absolute;top:16px;right:16px;background:rgba(255,255,255,0.94);
	padding:8px 15px;border-radius:999px;display:flex;align-items:center;gap:6px;
	font-family:var(--font-latin);font-size:.7rem;font-weight:600;color:var(--heading-rose);
	box-shadow:0 6px 16px rgba(0,0,0,0.12);z-index:2;
}
.ip-portrait-badge svg{width:11px;height:11px;stroke:var(--heading-rose);fill:none;stroke-width:1.8;}
.ip-portrait-frame::after{
	content:'';position:absolute;bottom:14px;left:14px;width:12px;height:15px;
	background:linear-gradient(135deg, rgba(255,255,255,0.85), var(--gold));
	border-radius:0 60% 0 60%;opacity:.55;transform:rotate(-20deg);pointer-events:none;
}

/* ---------- hero (shared chrome — background wash, petal/sparkle field,
   grid layout, heading). Each page supplies its own copy/CTA markup
   inside .ip-hero-grid. ---------- */
.ip-hero{
	padding-top:88px;padding-bottom:70px;overflow:hidden;
	background:
		radial-gradient(ellipse 55% 45% at 50% 5%, rgba(253,214,223,0.55), transparent 70%),
		radial-gradient(ellipse 55% 45% at 15% 78%, rgba(249,214,223,0.5), transparent 70%),
		radial-gradient(ellipse 55% 45% at 85% 78%, rgba(200,162,172,0.28), transparent 70%),
		var(--ip-pearl);
}
.ip-hero-grid{display:grid;grid-template-columns:1.05fr 0.95fr;gap:52px;align-items:center;text-align:left;}
.ip-hero h1{font-family:var(--font-th-display);font-weight:600;font-size:clamp(1.9rem, 4.2vw, 3rem);color:var(--heading-rose);margin-bottom:18px;}
.ip-hero p.ip-lead{max-width:480px;font-size:1.05rem;color:var(--ip-ink);opacity:.85;}
.ip-hero .ip-quick-row{margin-top:36px;}

/* floating petals — decorative, aria-hidden, absolutely positioned
   within the (overflow:hidden) hero so they can never cause horizontal
   scroll on mobile. */
.ip-petal{position:absolute;width:14px;height:18px;background:linear-gradient(135deg, var(--blush-soft), var(--mauve));border-radius:0 60% 0 60%;opacity:.55;animation:ipDrift 14s linear infinite;z-index:1;pointer-events:none;}
.ip-petal:nth-child(1){left:8%;top:-5%;animation-delay:0s;animation-duration:16s;}
.ip-petal:nth-child(2){left:22%;top:-8%;animation-delay:3s;animation-duration:13s;transform:scale(.7);}
.ip-petal:nth-child(3){left:48%;top:-6%;animation-delay:6s;animation-duration:18s;}
.ip-petal:nth-child(4){left:68%;top:-9%;animation-delay:1.5s;animation-duration:15s;transform:scale(.8);}
.ip-petal:nth-child(5){left:85%;top:-5%;animation-delay:8s;animation-duration:17s;}
.ip-petal:nth-child(6){left:35%;top:-10%;animation-delay:10s;animation-duration:14s;transform:scale(.6);}
@keyframes ipDrift{0%{transform:translateY(0) rotate(0deg);opacity:0;}10%{opacity:.55;}90%{opacity:.4;}100%{transform:translateY(680px) rotate(240deg);opacity:0;}}

.ip-sparkle{position:absolute;opacity:0;animation:ipTwinkle 3.4s ease-in-out infinite;z-index:1;pointer-events:none;}
.ip-sparkle svg{width:100%;height:100%;}
.ip-sparkle.ip-gold path{fill:var(--gold);}
.ip-sparkle.ip-pink path{fill:var(--heading-rose-mid);}
.ip-sparkle:nth-child(7){width:12px;height:12px;top:16%;left:8%;animation-delay:.2s;}
.ip-sparkle:nth-child(8){width:9px;height:9px;top:28%;left:44%;animation-delay:1.4s;}
.ip-sparkle:nth-child(9){width:10px;height:10px;top:66%;left:5%;animation-delay:2.1s;}
.ip-sparkle:nth-child(10){width:8px;height:8px;top:9%;left:59%;animation-delay:.8s;}
@keyframes ipTwinkle{0%,100%{opacity:0;transform:scale(.4) rotate(0deg);}50%{opacity:.9;transform:scale(1) rotate(20deg);}}

/* ---------- deco rings (Sep 2026 retheme) — two faint gold circles
   drifting in the hero background, top-left + bottom-right, one solid
   hairline + one dashed, low-opacity so they never compete with the
   copy/photo on top. Same decorative language as the homepage's Quote
   Band signature-mark orbit rings (quote-section.css .mark-orbit), just
   static (no spin) since these sit loose in open background rather than
   ringing a fixed mark. */
.ip-deco-ring{position:absolute;border-radius:50%;z-index:0;pointer-events:none;}
.ip-deco-ring.ip-r1{width:260px;height:260px;left:-90px;top:10%;border:1px solid rgba(212,175,55,0.22);}
.ip-deco-ring.ip-r2{width:190px;height:190px;right:-70px;bottom:6%;border:1px dashed rgba(212,175,55,0.28);}

/* ---------- section divider ----------
   Sep 2026: the old `.ip-scallop` (lace-edge) divider that used to live
   here, and this file's own copy of `.ip-divider-fade` ("Soft Fade
   Blend", added when page-about.php was first built), were both
   replaced/promoted to a single sitewide component — see
   `.ip-divider-fade` in style.css (not scoped to inner-pages.css
   anymore, since the homepage needs it too and doesn't load this
   file). page-contact.php / page-why-inspire.php / page-our-space.php
   / page-about.php all use that sitewide version now; nothing left to
   declare here. */

/* ---------- quick contact row (layout only — button look now comes
   from the shared button system below) ---------- */
.ip-quick-row{display:flex;flex-wrap:wrap;gap:16px;}

/* ===================================================================
   BUTTON SYSTEM (Sep 2026) — ported verbatim from the approved mockup
   `button-redesign-preview.html`. These 5 classes are the ONLY button
   styling used across page-contact.php / page-why-inspire.php /
   page-our-space.php — replaces the old bespoke .ip-quick-pill,
   .ip-submit-btn, .ip-lightbox-close, ".ip-space-more a" rules
   (removed) so a future style change happens in one place instead of
   three. Rose→pink gradient only — gold is intentionally NOT used
   anywhere in this system; gold stays reserved for the eyebrow
   line / deco-ring decorative vocabulary elsewhere on these pages.
   =================================================================== */

/* 1. Primary — main CTA / form submit (rose→pink diagonal gradient,
   shine sweep + lift on hover). */
.btn-primary{
	position:relative;overflow:hidden;
	display:inline-flex;align-items:center;justify-content:center;gap:10px;
	padding:16px 34px;border:none;border-radius:999px;cursor:pointer;
	font-family:var(--font-latin);font-weight:600;font-size:.95rem;letter-spacing:.01em;
	color:var(--white);text-decoration:none;
	background:linear-gradient(135deg, var(--heading-rose) 0%, #BD6580 45%, var(--heading-rose-mid) 100%);
	box-shadow:0 10px 24px rgba(165,79,98,0.3), 0 2px 0 rgba(255,255,255,0.25) inset;
	transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease;
}
.btn-primary::before{
	content:'';position:absolute;inset:0;
	background:linear-gradient(180deg, rgba(255,255,255,0.35), transparent 55%);
	opacity:.8;pointer-events:none;
}
.btn-primary::after{
	content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;
	background:linear-gradient(120deg, transparent, rgba(255,255,255,0.55), transparent);
	transform:skewX(-20deg);transition:left .7s ease;pointer-events:none;
}
.btn-primary:hover,
.btn-primary:focus-visible{transform:translateY(-3px) scale(1.015);box-shadow:0 16px 34px rgba(217,140,168,0.4), 0 2px 0 rgba(255,255,255,0.3) inset;}
.btn-primary:hover::after,
.btn-primary:focus-visible::after{left:130%;}
.btn-primary svg{width:16px;height:16px;position:relative;z-index:2;flex-shrink:0;}
.btn-primary span{position:relative;z-index:2;}

/* 2. Quick-pill — phone/LINE/FB/TikTok on a light background (hero
   areas). Icon sits in its own circle; on hover the whole pill fills
   rose→pink and the icon flips to white. */
.btn-pill{
	display:inline-flex;align-items:center;gap:11px;
	padding:10px 22px 10px 10px;border-radius:999px;text-decoration:none;
	background:var(--white);border:1px solid rgba(200,162,172,0.3);
	box-shadow:0 6px 16px rgba(200,162,172,0.18);
	font-family:var(--font-latin);font-weight:600;font-size:.88rem;color:var(--heading-rose);
	transition:transform .3s ease, box-shadow .3s ease, background .3s ease, border-color .3s ease;
}
.btn-pill .ip-btn-pill-icon{
	width:34px;height:34px;border-radius:50%;flex-shrink:0;
	background:linear-gradient(145deg, var(--blush-soft), var(--white));
	display:flex;align-items:center;justify-content:center;
	transition:background .3s ease;
}
.btn-pill .ip-btn-pill-icon svg{width:16px;height:16px;stroke:var(--heading-rose);fill:none;stroke-width:1.8;}
.btn-pill:hover,
.btn-pill:focus-visible{
	transform:translateY(-3px);
	background:linear-gradient(135deg, var(--heading-rose), var(--heading-rose-mid));
	border-color:transparent;color:var(--white);
	box-shadow:0 14px 26px rgba(217,140,168,0.35);
}
.btn-pill:hover .ip-btn-pill-icon,
.btn-pill:focus-visible .ip-btn-pill-icon{background:rgba(255,255,255,0.25);}
.btn-pill:hover .ip-btn-pill-icon svg,
.btn-pill:focus-visible .ip-btn-pill-icon svg{stroke:var(--white);}

/* 3. On-banner — same job as .btn-pill but for a colored/gradient
   section background (CTA banners): solid white, hover flips to
   transparent + white outline instead of filling with color (a filled
   rose pill would clash with a rose/mauve banner behind it). */
.btn-onbanner{
	display:inline-flex;align-items:center;gap:10px;
	padding:14px 30px;border-radius:999px;text-decoration:none;
	background:var(--white);color:var(--heading-rose);
	font-family:var(--font-latin);font-weight:600;font-size:.9rem;
	box-shadow:0 10px 26px rgba(0,0,0,0.15);
	border:2px solid transparent;
	transition:transform .3s ease, box-shadow .3s ease, background .3s ease, color .3s ease;
}
.btn-onbanner svg{width:16px;height:16px;flex-shrink:0;}
.btn-onbanner:hover,
.btn-onbanner:focus-visible{
	transform:translateY(-3px);
	background:transparent;color:var(--white);border-color:var(--white);
	box-shadow:0 14px 30px rgba(0,0,0,0.2);
}

/* 4. Ghost / secondary text link (e.g. "ดูพื้นที่ทั้งหมดของเรา →") —
   gradient underline always visible, arrow nudges right on hover. */
.btn-ghost{
	display:inline-flex;align-items:center;gap:8px;
	font-family:var(--font-latin);font-weight:600;font-size:.88rem;color:var(--heading-rose);
	text-decoration:none;padding-bottom:3px;position:relative;
}
.btn-ghost::after{
	content:'';position:absolute;left:0;bottom:0;width:100%;height:1.5px;
	background:linear-gradient(90deg, var(--heading-rose), var(--heading-rose-mid));
	transform:scaleX(1);transform-origin:left;transition:transform .3s ease;
}
.btn-ghost svg{width:14px;height:14px;transition:transform .3s ease;flex-shrink:0;}
.btn-ghost:hover svg,
.btn-ghost:focus-visible svg{transform:translateX(4px);}

/* 5. Small circular icon-only button (e.g. lightbox close) — tilts on
   hover. */
.btn-icon-only{
	width:44px;height:44px;border-radius:50%;border:none;cursor:pointer;
	background:linear-gradient(135deg, var(--heading-rose), var(--heading-rose-mid));color:var(--white);
	display:inline-flex;align-items:center;justify-content:center;
	box-shadow:0 8px 18px rgba(165,79,98,0.3);
	transition:transform .3s ease;
}
.btn-icon-only svg{width:18px;height:18px;}
.btn-icon-only:hover,
.btn-icon-only:focus-visible{transform:translateY(-3px) rotate(-6deg);}

/* Touch devices don't have real :hover — without this, tapping a
   button on some mobile browsers can leave its :hover state visually
   "stuck" until the user taps elsewhere. All 5 hover effects above are
   enhancements on top of an already-legible base state, so it's safe
   to just suppress them here rather than needing JS. */
@media (hover: none){
	.btn-primary:hover,.btn-primary:focus-visible{transform:none;box-shadow:0 10px 24px rgba(165,79,98,0.3), 0 2px 0 rgba(255,255,255,0.25) inset;}
	.btn-primary:hover::after,.btn-primary:focus-visible::after{left:-70%;}
	.btn-pill:hover,.btn-pill:focus-visible{transform:none;background:var(--white);border-color:rgba(200,162,172,0.3);color:var(--heading-rose);box-shadow:0 6px 16px rgba(200,162,172,0.18);}
	.btn-pill:hover .ip-btn-pill-icon,.btn-pill:focus-visible .ip-btn-pill-icon{background:linear-gradient(145deg, var(--blush-soft), var(--white));}
	.btn-pill:hover .ip-btn-pill-icon svg,.btn-pill:focus-visible .ip-btn-pill-icon svg{stroke:var(--heading-rose);}
	.btn-onbanner:hover,.btn-onbanner:focus-visible{transform:none;background:var(--white);color:var(--heading-rose);border-color:transparent;box-shadow:0 10px 26px rgba(0,0,0,0.15);}
	.btn-icon-only:hover,.btn-icon-only:focus-visible{transform:none;}
}

@media (prefers-reduced-motion: reduce){
	.ip-petal,.ip-sparkle{animation:none !important;opacity:0 !important;}
}

/* ---------- shared responsive scaffolding ---------- */
@media (max-width:1024px){
	.ip-hero-grid{gap:36px;}
	.ip-section{padding:80px 24px;}
}
@media (max-width:860px){
	.ip-hero-grid{grid-template-columns:1fr;text-align:center;}
	.ip-hero p.ip-lead{margin-left:auto;margin-right:auto;}
	.ip-hero .ip-quick-row{justify-content:center;}
	.ip-hero .ip-portrait-frame{max-width:340px;margin:36px auto 0;}
	.ip-section-heading.ip-left{text-align:center;}
}
@media (max-width:768px){
	.ip-section{padding:60px 20px;}
	.ip-hero{padding-top:64px;padding-bottom:52px;}
}
@media (max-width:480px){
	.btn-pill,.btn-onbanner{padding:10px 18px 10px 8px;font-size:.85rem;}
	.btn-onbanner{padding:12px 22px;}
	.btn-primary{padding:14px 26px;font-size:.9rem;}
	.ip-eyebrow .ip-line{width:26px;}
	.ip-script{font-size:1.6rem;}
}
