/* ==========================================================================
   HFT Single Product (PDP) — WS7 redesign (approved from HFT-PDP-Mockup.html)
   Brand-kit tokens (hft-brand-2026.css); About-Us section language; mobile-first.
   NOTE: grade/subject/skill chip COLORS are owned by the SAF plugin
   (.hft-pdp-chips .hft-card-chip) so they always match the list view — this
   file only lays them out.
   ========================================================================== */

.hft-pdp-main{ background:var(--hft-cream-50,#FFFCF6); }
.hft-pdp-top{ padding:24px 22px 8px; }

/* ---- Breadcrumb ---- */
.hft-pdp-crumbs{ margin:2px 0 18px; }
.hft-pdp-crumbs ol{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; align-items:center; gap:2px 4px; font-family:var(--hft-font-body); font-size:13px; color:var(--hft-slate,#5A6B7D); }
.hft-pdp-crumbs li{ display:inline-flex; align-items:center; gap:6px; }
.hft-pdp-crumbs a{ color:var(--hft-slate,#5A6B7D); text-decoration:none; }
.hft-pdp-crumbs a:hover{ color:var(--hft-navy); text-decoration:underline; }
.hft-pdp-crumbs li[aria-current] span{ color:var(--hft-navy); font-weight:700; }
.hft-pdp-sep{ color:var(--hft-taupe,#93A0AD); font-weight:700; }
.hft-pdp-crumbs li:last-child .hft-pdp-sep{ display:none; }

/* ---- Grid ---- */
.hft-pdp-grid{ display:grid; grid-template-columns:1fr; gap:28px; align-items:start; padding:6px 0 8px; }
@media(min-width:900px){ .hft-pdp-grid{ grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:52px; } }

/* ---- Media / gallery ---- */
@media(min-width:900px){ .hft-pdp-media{ position:sticky; top:20px; } }
/* Video/song products: a legacy snippet hides the standard gallery (expecting the
   old Elementor facade). Un-hide it so the poster shows (native facade = later). */
.hft-pdp .woocommerce-product-gallery{ display:block !important; }
.hft-pdp-media .woocommerce-product-gallery{ margin:0; background:#fff; border:1px solid var(--hft-line,#E9E0D4); border-radius:var(--hft-r-lg,22px); padding:18px; box-shadow:0 26px 60px -34px rgba(18,48,90,.42); }
.hft-pdp-media .woocommerce-product-gallery__wrapper{ margin:0; }
.hft-pdp-media .woocommerce-product-gallery__image{ background:var(--hft-cream,#FBF5EC); border-radius:12px; overflow:hidden; }
.hft-pdp-media .woocommerce-product-gallery img{ border-radius:12px; }
.hft-pdp-media .flex-control-thumbs{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 0; padding:0; list-style:none; }
.hft-pdp-media .flex-control-thumbs li{ width:64px; margin:0; }
.hft-pdp-media .flex-control-thumbs img{ border:2px solid var(--hft-line,#E9E0D4); border-radius:10px; padding:2px; background:var(--hft-cream,#FBF5EC); cursor:pointer; opacity:.82; transition:.15s; }
.hft-pdp-media .flex-control-thumbs img.flex-active,
.hft-pdp-media .flex-control-thumbs img:hover{ border-color:var(--hft-navy); opacity:1; }
.hft-pdp-media .onsale{ background:var(--hft-cta); color:#fff; border-radius:var(--hft-r-pill,999px); font-family:var(--hft-font-body); font-weight:800; padding:5px 13px; min-height:0; min-width:0; }

/* ---- Summary ---- */
.hft-pdp-summary{ float:none !important; width:100% !important; margin:0 !important; padding:0 !important; }
.hft-pdp-toprow{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:0 0 12px; }
.hft-pdp-fmt{ display:inline-flex; align-items:center; font-family:var(--hft-font-display); font-weight:600; font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:#fff; background:var(--fmt,var(--hft-navy)); border-radius:var(--hft-r-pill,999px); padding:6px 14px; line-height:1; }
.hft-pdp-rating{ display:inline-flex; align-items:center; gap:8px; text-decoration:none; }
.hft-pdp-rating .star-rating{ color:var(--hft-sail-yellow,#FBB915); font-size:15px; }
.hft-pdp-rating .hft-pdp-rating-n{ color:var(--hft-slate,#5A6B7D); font-weight:700; font-size:13.5px; }

.hft-pdp-summary .product_title,
.hft-pdp-summary h1.product_title{ font-family:var(--hft-font-display); font-weight:600; line-height:1.12; color:var(--hft-navy); margin:0 0 14px; font-size:clamp(1.7rem,3.6vw,2.35rem); }

.hft-pdp-chips{ display:flex; flex-wrap:wrap; gap:9px; margin:0 0 18px; }
.hft-pdp-summary .woocommerce-product-details__short-description{ font-family:var(--hft-font-body); color:var(--hft-ink,#231F20); line-height:1.6; font-size:15.5px; margin:0 0 20px; }

/* Buy-box card */
.hft-pdp-buybox{ background:#fff; border:1px solid var(--hft-line,#E9E0D4); border-radius:var(--hft-r-lg,22px); box-shadow:0 26px 60px -34px rgba(18,48,90,.42); padding:22px; }
/* SOW #13: price is black like the product cards (Nunito 900, ink), not green. */
.hft-pdp-buybox .price,
.hft-pdp-buybox p.price{ font-family:var(--hft-font-body); font-weight:900; color:var(--hft-ink,#231F20); -webkit-text-fill-color:var(--hft-ink,#231F20); font-size:2rem; margin:0 0 4px; }
.hft-pdp-buybox .price del{ color:var(--hft-muted,#93A0AD); font-weight:400; font-size:1.05rem; margin-right:8px; }
.hft-pdp-buybox .price ins{ text-decoration:none; }
.hft-pdp-freehint{ color:var(--hft-slate,#5A6B7D); font-size:13.5px; margin:0 0 16px; }
.hft-pdp-freehint b{ color:var(--hft-navy); }
.hft-pdp-freehint a{ color:var(--hft-blue,#0758A1); font-weight:700; }

/* Add to Cart / Download */
.hft-pdp-summary form.cart{ margin:0 0 4px; display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
/* The member Download button lives in a plain <form class="somdn-download-form"> that
   defaults to display:block, so the button rendered auto-width (tiny). Make it flex so
   the button fills the row like the guest Add-to-Cart. */
.hft-pdp-summary .somdn-download-form{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:0 0 4px; width:100%; }
.hft-pdp-summary .somdn-download-form .somdn-download-button{ width:100%; flex:1 1 100%; }
.hft-pdp-summary form.cart .quantity .qty{ width:66px; height:54px; text-align:center; font-family:var(--hft-font-body); font-weight:700; border:1.5px solid var(--hft-line,#E9E0D4); border-radius:12px; background:#fff; color:var(--hft-ink); }
/* Add to Cart + Download = brand-kit BUY role: sail yellow, navy ink, pill.
   (Mark, 2026-07-21: brand-kit Button system — Buy is the one non-white-on-colour
   button; supersedes the Round-3 pink.) Checkout/Place-Order remain pink Primary. */
.hft-pdp-summary .single_add_to_cart_button,
.hft-pdp-summary .somdn-download-button{
	display:inline-flex !important; align-items:center; justify-content:center; gap:9px;
	font-family:var(--hft-font-body) !important; font-weight:800 !important; font-size:16px !important;
	line-height:1 !important; letter-spacing:normal !important; text-transform:none !important;
	color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important;
	background-color:var(--buy,#FBB915) !important; background-image:none !important; border:0 !important;
	border-radius:var(--hft-r-pill,999px) !important; padding:16px 30px !important; min-height:56px !important; height:auto !important;
	box-shadow:var(--buy-shadow,0 14px 28px -16px rgba(251,185,21,.9)); cursor:pointer; transition:.15s; flex:1 1 auto;
}
/* Hover = darken the fill only; KEEP the navy ink (Amazon-style). */
.hft-pdp-summary .single_add_to_cart_button:hover,
.hft-pdp-summary .somdn-download-button:hover{ background-color:var(--buy-hover,#F2AE0C) !important; }

/* Trust cluster */
.hft-pdp-trust{ display:grid; grid-template-columns:1fr 1fr; gap:10px 16px; margin:18px 0 0; padding-top:16px; border-top:1px solid var(--hft-line,#E9E0D4); }
.hft-pdp-ti{ display:flex; align-items:center; gap:8px; font-size:13px; font-weight:700; color:var(--hft-slate,#5A6B7D); }
.hft-pdp-ti .hft-pdp-ck{ color:var(--hft-green-deep,#1F8551); flex:none; }

/* Social share */
.hft-pdp-share{ display:flex; align-items:center; gap:10px; margin:18px 0 0; }
.hft-pdp-share-label{ font-family:var(--hft-font-body); font-weight:800; font-size:13px; color:var(--hft-slate,#5A6B7D); }
.hft-pdp-share-btn{ display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:var(--hft-r-pill,999px); background:#fff; border:1.6px solid var(--hft-line,#E9E0D4); color:var(--hft-navy); transition:.15s; }
.hft-pdp-share-btn:hover{ background:var(--hft-navy); color:#fff; border-color:var(--hft-navy); transform:translateY(-1px); }
.hft-pdp-share-btn svg{ width:18px; height:18px; }

/* ---- Shared brand buttons (band + mobile bar) ---- */
.hft-pdp-btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; font-family:var(--hft-font-body); font-weight:800; font-size:16px; border-radius:var(--hft-r-pill,999px); padding:15px 28px; min-height:52px; text-decoration:none; border:0; cursor:pointer; transition:.15s; }
.hft-pdp-btn--cta{ background:var(--hft-cta); color:#fff; -webkit-text-fill-color:#fff; }
.hft-pdp-btn--cta:hover{ background:var(--hft-cta-hover); transform:translateY(-1px); }

/* ---- Membership band ---- */
.hft-pdp-memband{ margin:44px auto; max-width:1180px; }
.hft-pdp-memband-in{ position:relative; overflow:hidden; background:var(--hft-navy); border-radius:26px; color:#fff; padding:44px 40px; text-align:center; }
.hft-pdp-memband-in::before{ content:""; position:absolute; right:-40px; top:-50px; width:200px; height:200px; border-radius:50%; background:var(--hft-sail-pink,#F0619E); opacity:.9; }
.hft-pdp-memband-in::after{ content:""; position:absolute; left:-40px; bottom:-70px; width:160px; height:160px; border-radius:50%; background:var(--hft-sail-yellow,#FBB915); opacity:.9; }
.hft-pdp-memband h2{ position:relative; z-index:2; font-family:var(--hft-font-display); font-weight:600; color:#fff; font-size:clamp(1.5rem,3.4vw,2rem); margin:0 0 8px; }
.hft-pdp-memband h2 em{ color:var(--hft-sail-yellow,#FBB915); font-style:normal; }
.hft-pdp-memband p{ position:relative; z-index:2; color:#dbe6f4; max-width:620px; margin:0 auto 20px; }
.hft-pdp-memband .hft-pdp-btn{ position:relative; z-index:2; }
.hft-pdp-memband-note{ font-size:12.5px !important; color:#b9c9dd !important; margin:14px 0 0 !important; }

/* ---- Sections (About-Us language) ---- */
.hft-pdp-tail{ padding:8px 0 46px; }
.hft-pdp-tail-in{ max-width:820px; margin-inline:auto; padding:0 22px; }
.hft-pdp-eyebrow{ color:var(--hft-cta); font-family:var(--hft-font-display); font-weight:600; font-size:12.5px; letter-spacing:.06em; text-transform:uppercase; margin:0 0 6px; }
.hft-pdp-h2{ font-family:var(--hft-font-display); font-weight:600; color:var(--hft-navy); font-size:clamp(1.35rem,3vw,1.7rem); margin:0 0 16px; }
.hft-pdp-desc{ padding-top:14px; }
.hft-pdp-prose{ font-family:var(--hft-font-body); color:var(--hft-ink,#231F20); line-height:1.7; font-size:16px; }
.hft-pdp-prose p{ margin:0 0 15px; }
.hft-pdp-prose h2,.hft-pdp-prose h3{ font-family:var(--hft-font-display); color:var(--hft-navy); font-weight:600; }
.hft-pdp-prose h3{ color:var(--hft-purple,#7A3FA8); margin:22px 0 8px; }
.hft-pdp-prose ul,.hft-pdp-prose ol{ padding-left:22px; }
.hft-pdp-prose img{ max-width:100%; height:auto; border-radius:12px; }
.hft-pdp-prose a{ color:var(--hft-blue,#0758A1); }

/* Reviews */
.hft-pdp-reviews{ margin-top:34px; padding-top:24px; border-top:1px solid var(--hft-line,#E9E0D4); }
.hft-pdp-revhead{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; background:#fff; border:1px solid var(--hft-line,#E9E0D4); border-radius:var(--hft-r-md,16px); padding:20px 24px; margin:0 0 8px; }
.hft-pdp-revbig{ font-family:var(--hft-font-display); font-weight:600; color:var(--hft-navy); font-size:2.4rem; line-height:1; }
.hft-pdp-revmeta{ display:flex; flex-direction:column; gap:4px; }
.hft-pdp-revmeta .star-rating{ color:var(--hft-sail-yellow,#FBB915); font-size:18px; }
.hft-pdp-revcount{ color:var(--hft-slate,#5A6B7D); font-size:13.5px; font-weight:700; }
.hft-pdp-reviews .comment-form input[type=submit],
.hft-pdp-reviews #respond .submit{ background-color:var(--hft-cta) !important; color:#fff !important; border:0 !important; border-radius:var(--hft-r-pill,999px) !important; padding:12px 26px !important; font-weight:800 !important; font-family:var(--hft-font-body) !important; min-height:44px; cursor:pointer; }
.hft-pdp-reviews .comment-form input[type=submit]:hover{ background-color:var(--hft-cta-hover) !important; }

/* ---- Related band ---- */
.hft-pdp-related{ background:var(--hft-cream,#FBF5EC); border-top:1px solid var(--hft-line,#E9E0D4); padding:42px 0 50px; margin-top:10px; }
.hft-pdp-related .hft-rslider-title{ font-family:var(--hft-font-display); color:var(--hft-navy); }

/* ---- Sticky mobile buy bar ---- */
.hft-pdp-mbar{ position:fixed; left:0; right:0; bottom:0; z-index:60; display:none; align-items:center; gap:12px; background:#fff; border-top:1px solid var(--hft-line,#E9E0D4); box-shadow:0 -10px 30px -18px rgba(18,48,90,.4); padding:10px 16px; }
.hft-pdp-mbar-price{ font-family:var(--hft-font-body); font-weight:900; color:var(--hft-ink,#231F20); -webkit-text-fill-color:var(--hft-ink,#231F20); font-size:1.2rem; white-space:nowrap; }
.hft-pdp-mbar-price .amount{ color:inherit; }
.hft-pdp-mbar-go{ flex:1; min-height:48px; padding:12px; }
/* WS13: the sticky mobile CTA is a Buy action (Download / Add to Cart) → yellow Buy,
   navy ink, no lift, to match the in-page buybox. (0,2,0) beats the .hft-pdp-btn--cta base. */
.hft-pdp-mbar-go.hft-pdp-btn--cta{ background:var(--buy,#FBB915); color:var(--buy-ink,#1B437D); -webkit-text-fill-color:var(--buy-ink,#1B437D); }
.hft-pdp-mbar-go.hft-pdp-btn--cta:hover{ background:var(--buy-hover,#F2AE0C); color:var(--buy-ink,#1B437D); -webkit-text-fill-color:var(--buy-ink,#1B437D); transform:none; }
/* Membership / subscription products are a Primary "Sign Up" → keep the mbar pink to match §1b. */
body.postid-987986073 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-987840537 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-987836574 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-987836566 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-16450 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-16451 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-16453 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-9993 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-9992 .hft-pdp-mbar-go.hft-pdp-btn--cta, body.postid-987890122 .hft-pdp-mbar-go.hft-pdp-btn--cta{ background:var(--hft-cta); color:#fff; -webkit-text-fill-color:#fff; }
body.postid-987986073 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-987840537 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-987836574 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-987836566 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-16450 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-16451 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-16453 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-9993 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-9992 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover, body.postid-987890122 .hft-pdp-mbar-go.hft-pdp-btn--cta:hover{ background:var(--hft-cta-hover); }
@media(max-width:760px){ body.hft-mbar-on .hft-pdp-mbar{ display:flex; } .hft-pdp-trust{ grid-template-columns:1fr; } body.hft-mbar-on{ padding-bottom:74px; } }

/* ---- Per-format accent (--fmt), reused from SAF card palette ---- */
.hft-pdp[data-format="worksheets"]{ --fmt:#1F8551; }
.hft-pdp[data-format="graphic-organizers"]{ --fmt:#0F7A63; }
.hft-pdp[data-format="assessments"]{ --fmt:#0758A1; }
.hft-pdp[data-format="digital-learning"]{ --fmt:#2A72B5; }
.hft-pdp[data-format="google-classroom"]{ --fmt:#1D6A94; }
.hft-pdp[data-format="workbooks"]{ --fmt:#1B437D; }
.hft-pdp[data-format="curriculum"]{ --fmt:#12305A; }
.hft-pdp[data-format="bundles"]{ --fmt:#3F6FB5; }
.hft-pdp[data-format="activities"]{ --fmt:#D6337B; }
.hft-pdp[data-format="micro-lessons"]{ --fmt:#9E3C74; }
.hft-pdp[data-format="songs"]{ --fmt:#7A3FA8; }
.hft-pdp[data-format="videos"]{ --fmt:#CC2E2E; }
.hft-pdp[data-format="summer-school"]{ --fmt:#D2470B; }
.hft-pdp[data-format="flash-cards"]{ --fmt:#5A6B7D; }
.hft-pdp[data-format="lesson-plans"]{ --fmt:#3E4C5A; }
.hft-pdp[data-format="common-core-lessons"]{ --fmt:#617488; }
.hft-pdp[data-format="relief-packs"]{ --fmt:#7A6459; }
.hft-pdp[data-format="music-cds"]{ --fmt:#7A3FA8; }
.hft-pdp[data-format="video-dvds"]{ --fmt:#CC2E2E; }

/* ---- Mobile ---- */
@media(max-width:560px){
	.hft-pdp-top{ padding:16px 16px 4px; }
	.hft-pdp-tail-in{ padding:0 16px; }
	.hft-pdp-summary .single_add_to_cart_button,
	.hft-pdp-summary .somdn-download-button{ width:100%; flex:1 1 100%; }
	.hft-pdp-memband-in{ padding:34px 22px; }
}

/* ==========================================================================
   AUTHORITY OVERRIDES — beat legacy global CSS (old Elementor-era product rules
   in hft-brand-2026.css + the Customizer's wp-custom-css: serif product title,
   navy button text-fill, ID-level #somdn-form-submit-button background). The
   native PDP owns its own look, so these win with root-scoped specificity.
   ========================================================================== */
.hft-pdp.product .hft-pdp-summary h1.product_title{
	font-family:var(--hft-font-display) !important;
	-webkit-text-fill-color:var(--hft-navy) !important;
	color:var(--hft-navy) !important;
}
.hft-pdp .hft-pdp-h2,
.hft-pdp .hft-pdp-eyebrow,
.hft-pdp .hft-rslider-title{ font-family:var(--hft-font-display) !important; }

/* Add to Cart (guest) and Download (member) = brand-kit BUY (sail yellow, navy ink).
   Navy ink wins over the ghost/kit -webkit-text-fill-color. */
.hft-pdp.product .hft-pdp-summary .single_add_to_cart_button{
	background-color:var(--buy,#FBB915) !important; background-image:none !important;
	color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important;
}
.hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover{ background-color:var(--buy-hover,#F2AE0C) !important; color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important; }
.hft-pdp .hft-pdp-summary #somdn-form-submit-button,
.hft-pdp.product .hft-pdp-summary .somdn-download-button{
	background-color:var(--buy,#FBB915) !important; background-image:none !important;
	color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important;
	border:0 !important;
}
.hft-pdp .hft-pdp-summary #somdn-form-submit-button:hover,
.hft-pdp.product .hft-pdp-summary .somdn-download-button:hover{ background-color:var(--buy-hover,#F2AE0C) !important; color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important; }

/* ==========================================================================
   Native video/song/micro-lesson facade (replaces Snippet #42; theme-owned).
   ========================================================================== */
.hft-vfacade{ position:relative; aspect-ratio:16/9; border-radius:var(--hft-r-lg,22px); overflow:hidden; background:#000; box-shadow:0 26px 60px -34px rgba(18,48,90,.42); }
.hft-vfacade-btn{ position:absolute; inset:0; width:100%; height:100%; margin:0; padding:0; border:0; background:none; cursor:pointer; display:block; }
.hft-vfacade-poster{ width:100%; height:100%; object-fit:cover; display:block; }
.hft-vfacade-play{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:74px; height:74px; padding-left:5px; border-radius:50%; background:var(--hft-cta); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 12px 34px -8px rgba(0,0,0,.55); transition:.15s; }
.hft-vfacade-btn:hover .hft-vfacade-play{ transform:translate(-50%,-50%) scale(1.08); background:var(--hft-cta-hover); }
.hft-vfacade-iframe{ width:100%; height:100%; border:0; display:block; }

/* ==========================================================================
   ROUND 3 fixes (Mark) — identical buttons, gallery placement, footer-style
   share icons, brand-navy links, single Reviews heading.
   ========================================================================== */

/* 1. Add to Cart (guest) and Download (member) are IDENTICAL except text —
      both the brand-kit BUY pill (sail yellow, navy ink). */
.hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
.hft-pdp.product .hft-pdp-summary .somdn-download-button{
	background-color:var(--buy,#FBB915) !important; background-image:none !important;
	color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important;
	border:0 !important;
	box-shadow:var(--buy-shadow,0 14px 28px -16px rgba(251,185,21,.9)) !important;
}
.hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
.hft-pdp.product .hft-pdp-summary .somdn-download-button:hover{ background-color:var(--buy-hover,#F2AE0C) !important; color:var(--buy-ink,#1B437D) !important; -webkit-text-fill-color:var(--buy-ink,#1B437D) !important; }

/* 1b. Membership / subscription products are a "Sign Up" = brand-kit PRIMARY
       (CTA pink, white ink), NOT a Buy. Override the yellow Buy on the known
       membership product pages. body.postid-{id} bumps specificity past the
       Buy rules above. (Membership IDs incl. retired-for-existing-subscribers.) */
body.postid-987986073 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-987986073 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-987840537 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-987840537 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-987836574 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-987836574 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-987836566 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-987836566 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-16450 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-16450 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-16451 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-16451 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-16453 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-16453 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-9993 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-9993 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-9992 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-9992 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button,
body.postid-987890122 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button, body.postid-987890122 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button {
	background-color:var(--hft-cta) !important; background-image:none !important;
	color:#fff !important; -webkit-text-fill-color:#fff !important;
	box-shadow:0 14px 30px -16px rgba(214,51,123,.8) !important;
}
body.postid-987986073 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-987986073 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-987840537 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-987840537 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-987836574 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-987836574 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-987836566 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-987836566 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-16450 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-16450 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-16451 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-16451 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-16453 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-16453 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-9993 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-9993 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-9992 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-9992 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover,
body.postid-987890122 .hft-pdp.product .hft-pdp-summary .single_add_to_cart_button:hover, body.postid-987890122 .hft-pdp.product .hft-pdp-summary #somdn-form-submit-button:hover {
	background-color:var(--hft-cta-hover) !important; color:#fff !important; -webkit-text-fill-color:#fff !important;
}

/* 2. Gallery/image fills its column instead of floating stranded to the left,
      and the media column flows with the page (no sticky "hanging" up top). */
.hft-pdp-media{ position:static !important; }
.hft-pdp.product .woocommerce-product-gallery{ width:100% !important; float:none !important; max-width:100% !important; }

/* 3. Share icons match the footer: soft circle, navy glyph, navy-fill on hover.
      (Beats the Elementor kit's sage `a` tint that was making them blue/green.) */
.hft-pdp .hft-pdp-share-btn{
	background:var(--hft-cream,#FBF5EC) !important; border-color:transparent !important;
	color:var(--hft-navy) !important; -webkit-text-fill-color:var(--hft-navy) !important;
}
.hft-pdp .hft-pdp-share-btn:hover{ background:var(--hft-navy) !important; color:#fff !important; -webkit-text-fill-color:#fff !important; }
.hft-pdp .hft-pdp-share-btn svg{ fill:currentColor; }

/* 4. Text hyperlinks = brand navy (hover pink) — never the kit's sage. */
.hft-pdp .product_meta a,
.hft-pdp .hft-pdp-prose a,
.hft-pdp .hft-pdp-reviews a,
.hft-pdp .woocommerce-noreviews a{ color:var(--hft-navy) !important; text-decoration:underline; }
.hft-pdp .product_meta a:hover,
.hft-pdp .hft-pdp-prose a:hover,
.hft-pdp .hft-pdp-reviews a:hover{ color:var(--hft-cta) !important; }

/* 5. "Reviews" appears once — hide WooCommerce's own title (we render the H2). */
.hft-pdp-reviews .woocommerce-Reviews-title{ display:none !important; }

/* 6. Kill the page-wide magnifier cursor: legacy Snippet #109 (old gallery,
      enqueued only on products) sets `.hft-main{cursor:zoom-in}`, which collides
      with the theme's site <main class="hft-main"> and — cursor being inherited —
      turns the whole PDP into a magnifier. Reset it. (Retire #109 in the sweep;
      its lightbox is a Deploy-2 native rebuild.) */
main.hft-main{ cursor:auto !important; }

/* ==========================================================================
   SOW round (2026-07-22): #8 mobile image, #10 native video embed,
   #14 spacing, #15 membership note centering.
   ========================================================================== */

/* #8 — the media/summary columns must be allowed to shrink inside the grid, or
   the gallery/slider overflows the right edge on mobile. */
.hft-pdp-media,
.hft-pdp-summary{ min-width:0; }
.hft-pdp-media .woocommerce-product-gallery,
.hft-pdp-media .hft-gallery,
.hft-pdp-media .hft-slider,
.hft-pdp-media .hft-vembed,
.hft-pdp-media .hft-vfacade{ max-width:100%; }
@media(max-width:899px){
	/* Stack cleanly (media first = the video/poster sits at the top) and pin the
	   media column + everything inside it to the viewport width so wide product
	   images and the video never spill off the right edge, and a collapsed media
	   column can't hide the video. */
	.hft-pdp-grid{ min-width:0; display:block; }
	.hft-pdp-media{ width:100%; max-width:100%; margin:0 0 22px; overflow:hidden; }
	.hft-pdp-media img,
	.hft-pdp-media .woocommerce-product-gallery,
	.hft-pdp-media .woocommerce-product-gallery__wrapper,
	.hft-pdp-media .flex-viewport,
	.hft-pdp-media .woocommerce-product-gallery__image,
	.hft-pdp-media .hft-vembed,
	.hft-pdp-media .hft-vembed .rll-youtube-player{ max-width:100% !important; width:100% !important; }
	.hft-pdp-media img{ height:auto !important; }
}

/* #10 — native YouTube embed on the PDP (no facade overlay). */
.hft-vembed{ position:relative; aspect-ratio:16/9; width:100%; border-radius:var(--hft-r-lg,22px);
	overflow:hidden; background:#000; box-shadow:0 26px 60px -34px rgba(18,48,90,.42); }
.hft-vembed-frame{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
/* SOW #6 — the video vanished on mobile: WP Rocket's LazyLoad swaps the <iframe>
   for a preview element (.rll-youtube-player) whose relative height collapsed to
   0 in the narrow single-column layout. Force whatever child sits inside the
   aspect-ratio box to fill it, at every width. */
.hft-vembed > *,
.hft-vembed iframe,
.hft-vembed .rll-youtube-player,
.hft-vembed .rll-youtube-player img,
.hft-vembed picture,
.hft-vembed img{ position:absolute !important; inset:0 !important; width:100% !important; height:100% !important; }
/* WP Rocket's facade sizes itself with a padding-bottom aspect hack. The parent
   .hft-vembed already owns the 16/9 box, so kill that padding — otherwise
   height:100% ADDS to it and the facade renders double-tall. */
.hft-vembed > *,
.hft-vembed .rll-youtube-player{ padding:0 !important; margin:0 !important; }
.hft-vembed .rll-youtube-player img,
.hft-vembed img{ object-fit:cover; }

/* #14 — padding between the buy box and the Categories links; and between the
   Add-to-Favorites control and whatever follows it (e.g. "Want a discount?"). */
.hft-pdp-summary .product_meta{ margin-top:24px !important; padding-top:18px; border-top:1px solid var(--hft-line,#E9E0D4); }
.hft-pdp-summary .hft-fav-single,
.hft-pdp-summary .hft-fav--single{ margin:16px 0 22px !important; }

/* #15 — center the "No commitment · Cancel anytime · …" note in the blue band. */
.hft-pdp-memband-note{ text-align:center !important; margin-left:auto !important; margin-right:auto !important; max-width:560px; }

/* ==========================================================================
   SOW batch A–H (2026-07-26): A = PDP image sizing + drag/save deterrent +
   mobile overflow for portrait/square. (Video embed .hft-vembed untouched.)
   ========================================================================== */

/* A1 — Make the product image smaller. Cap the gallery CARD (image lives inside
   .woocommerce-product-gallery, which carries the 18px padding + border) so the
   visible image reads ~480px on desktop, centered in its column. Thumbnail row
   inside the card is unaffected. Desktop only — mobile keeps full width.
   NOTE: must out-rank the earlier `.hft-pdp.product .woocommerce-product-gallery
   { max-width:100% !important }` rule, so this matches its specificity, adds
   !important, and sits later in the file (later !important wins on a tie). */
@media(min-width:900px){
	.hft-pdp.product .hft-pdp-media .woocommerce-product-gallery,
	.hft-pdp-media .woocommerce-product-gallery{ max-width:512px !important; margin-inline:auto !important; }
}

/* A2 — Deter dragging the image off-page / casual right-click-save. This does NOT
   make the image truly unsavable; it only stops drag-to-desktop, text/image
   selection, and the iOS long-press "Save Image" callout. Paired with
   `img.draggable=false` + the `contextmenu` cancel in inc/product-gallery.php.
   KEEP THIS BLOCK — it survived the 1.0.195 lightbox removal on purpose; the
   `.hft-lb-imgwrap img` selector was dropped because the lightbox no longer exists.
   `pointer-events` stays auto (clicks are swallowed in JS, not by CSS, so the
   mobile swipe slider keeps working). */
.hft-pdp-media img,
.hft-gallery img,
.hft-slider img,
.hft-gmain img{
	-webkit-user-drag:none; -khtml-user-drag:none; -moz-user-drag:none; user-drag:none;
	-webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none;
	-webkit-touch-callout:none;
}

/* A2b — the main image is click-inert since 1.0.195; make sure nothing in the
   cascade re-advertises a zoom affordance. */
.hft-pdp-media .hft-gmain,
.hft-pdp-media .hft-gmain img,
.hft-pdp-media .hft-slider .hft-slide,
.hft-pdp-media .hft-slider .hft-slide img{ cursor:default !important; }

/* A3 — Portrait & square images still spilled off the right edge on mobile
   (landscape/video were already fixed). Box the card + every media wrapper to the
   viewport width and let images scale down. REQUIRES a real mobile check by Mark. */
@media(max-width:899px){
	.hft-pdp-media .woocommerce-product-gallery{ box-sizing:border-box; max-width:100%; overflow:hidden; }
	.hft-pdp-media .hft-gallery,
	.hft-pdp-media .hft-stage,
	.hft-pdp-media .hft-slider,
	.hft-pdp-media .hft-slide,
	.hft-pdp-media .hft-gmain{ max-width:100%; box-sizing:border-box; min-width:0; }
	.hft-pdp-media .hft-slide img,
	.hft-pdp-media .hft-gmain img{ max-width:100% !important; width:100% !important; height:auto !important; box-sizing:border-box; }
}

/* ==========================================================================
   FREE RESOURCE CLAIM CARD (.hft-fc) — 1.0.214
   Renders inside #hft-buybox at woocommerce_single_product_summary prio 32,
   after the trust cluster (@31), before hft_pdp_buybox_close (@34).
   Pink = brand Primary/CTA role, so it never competes with the yellow Buy
   button (Add to Cart / Download keep the brand-kit Buy role).
   ========================================================================== */
.hft-fc{ margin:18px -6px -6px; background:#FFF4F8; border:1.5px solid #F6D2E2; border-radius:var(--hft-r-md,16px); padding:18px 17px 16px; position:relative; overflow:hidden; }
.hft-fc::after{ content:""; position:absolute; right:-38px; top:-46px; width:120px; height:120px; border-radius:50%; background:var(--hft-sail-pink,#F0619E); opacity:.09; pointer-events:none; }
.hft-fc-head{ display:flex; align-items:flex-start; gap:11px; margin:0 0 13px; position:relative; z-index:1; }
.hft-fc-ico{ flex:none; width:36px; height:36px; border-radius:50%; background:var(--hft-cta,#D6337B); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 10px 20px -12px rgba(214,51,123,.9); }
.hft-fc-ico svg{ width:19px; height:19px; }
.hft-fc-h{ font-family:var(--hft-font-display); font-weight:600; font-size:17.5px; line-height:1.2; color:var(--hft-navy,#1B437D); margin:1px 0 3px; }
.hft-fc-sub{ font-size:13px; line-height:1.5; color:var(--hft-slate,#5A6B7D); margin:0; }
.hft-fc-row{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:0 0 9px; }
.hft-fc-f{ position:relative; }
.hft-fc-f--email{ margin:0 0 9px; }
.hft-fc input[type=text],
.hft-fc input[type=email],
.hft-fc input[type=password]{ width:100%; font-family:var(--hft-font-body); font-weight:600; font-size:14.5px; color:var(--hft-ink,#231F20); background:#fff; border:1.5px solid #EDD9E4; border-radius:11px; padding:12px 13px; min-height:46px; transition:.15s; outline:0; }
.hft-fc input::placeholder{ color:#B9A9B1; font-weight:600; }
.hft-fc input:focus{ border-color:var(--hft-cta,#D6337B); box-shadow:0 0 0 3px rgba(214,51,123,.13); }
.hft-fc input[aria-invalid="true"]{ border-color:var(--hft-error,#C9584E); background:#FDF6F5; }
.hft-fc-err{ display:none; font-size:11.5px; font-weight:800; color:var(--hft-error,#C9584E); margin:5px 2px 0; }
.hft-fc-f.is-bad .hft-fc-err{ display:block; }
.hft-fc-hp{ position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }
.hft-fc-ts{ margin:0; }
/* 1.0.281: spacing only when Cloudflare actually draws the box (JS adds .is-shown) —
   once rendered the container always holds a 0-height wrapper, so :empty can't tell. */
.hft-fc-ts.is-shown{ margin:12px 0 0; }
.hft-fc-btn{ display:inline-flex; align-items:center; justify-content:center; gap:9px; width:100%; margin:3px 0 0; font-family:var(--hft-font-body); font-weight:800; font-size:15.5px; line-height:1; color:#fff; -webkit-text-fill-color:#fff; background:var(--hft-cta,#D6337B); border:0; border-radius:var(--hft-r-pill,999px); padding:15px 24px; min-height:52px; box-shadow:0 14px 28px -16px rgba(214,51,123,.85); cursor:pointer; transition:.15s; }
.hft-fc-btn:hover{ background:var(--hft-cta-hover,#B62A67); transform:translateY(-1px); }
.hft-fc-spin{ display:none; width:16px; height:16px; border:2.5px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:hftfcspin .7s linear infinite; }
@keyframes hftfcspin{ to{ transform:rotate(360deg); } }
.hft-fc.is-busy .hft-fc-spin{ display:block; }
.hft-fc.is-busy .hft-fc-btn{ pointer-events:none; opacity:.72; }
.hft-fc-fine{ font-size:11.5px; line-height:1.5; color:#9E8E96; margin:11px 0 0; text-align:center; }
.hft-fc-formerr{ display:none; font-size:12.5px; font-weight:700; color:var(--hft-error,#C9584E); background:#FDF1EF; border:1.5px solid #F3D6D1; border-radius:10px; padding:9px 12px; margin:0 0 11px; }
.hft-fc.has-error .hft-fc-formerr{ display:block; }

/* ---- Success ---- */
.hft-fc--done{ background:#F3F8F4; border-color:#CFE6D8; text-align:center; padding:24px 18px 22px; }
.hft-fc--done::after{ background:var(--hft-sail-green,#34B26A); }
.hft-fc-pop{ width:54px; height:54px; margin:0 auto 12px; border-radius:50%; background:var(--hft-green-deep,#1F8551); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 12px 24px -12px rgba(31,133,81,.9); animation:hftfcpop .5s cubic-bezier(.2,1.5,.4,1) both; }
.hft-fc-pop svg{ width:28px; height:28px; }
@keyframes hftfcpop{ 0%{ transform:scale(.2) rotate(-25deg); opacity:0; } 60%{ transform:scale(1.12) rotate(6deg); } 100%{ transform:scale(1) rotate(0); opacity:1; } }
.hft-fc-done-h{ font-family:var(--hft-font-display); font-weight:600; font-size:20px; color:var(--hft-navy,#1B437D); margin:0 0 7px; animation:hftfcrise .45s .1s ease both; }
.hft-fc-done-p{ font-size:13.5px; line-height:1.6; color:var(--hft-slate,#5A6B7D); margin:0 auto; max-width:335px; animation:hftfcrise .45s .18s ease both; }
.hft-fc-done-p b{ color:var(--hft-navy,#1B437D); }
.hft-fc-done-sub{ font-size:12px; color:#9E8E96; margin:13px 0 0; animation:hftfcrise .45s .26s ease both; }
.hft-fc-done-sub a{ color:var(--hft-blue,#0758A1); font-weight:800; }
@keyframes hftfcrise{ from{ opacity:0; transform:translateY(7px); } to{ opacity:1; transform:none; } }
/* confetti */
.hft-fc-conf{ position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:2; }
.hft-fc-conf i{ position:absolute; top:-12px; width:8px; height:13px; border-radius:2px; opacity:0; animation:hftfcfall 2.2s ease-in forwards; }
@keyframes hftfcfall{ 0%{ opacity:1; transform:translateY(-10px) rotate(0); } 100%{ opacity:0; transform:translateY(230px) rotate(540deg); } }
@media(prefers-reduced-motion:reduce){
	.hft-fc-conf{ display:none; }
	.hft-fc-pop,.hft-fc-done-h,.hft-fc-done-p,.hft-fc-done-sub{ animation:none; }
}

/* ---- Already claimed — 1.0.235 ------------------------------------------
   🔴 THE PANEL KEEPS THE BASE .hft-fc LOOK ON PURPOSE. It used to override the
   pink for cream #FFFCF6, switch the border to DASHED and hide the corner blob.
   Mark, 2026-09-12, supplied a screenshot of what he wants and it is the base
   pink panel, left-aligned: "Just make sure it looks like that screenshot."

   ⚠️ NOTE FOR ANYONE CHECKING THIS AGAINST THE DESIGN RECORD: the cream/dashed
   version was NOT a bug — it is what HFT-FreeClaim-Mockup.html (the approved
   7-state mockup, line 134) specified, and it shipped that way in 1.0.214. This
   is a deliberate change of mind, not a fix. Do not "restore" the mockup.

   📌 Why the pink is better here: dashed + cream is the visual vocabulary of an
   empty placeholder, and this panel is an OFFER. Keeping the base fill also
   means the card does not visually disappear at the moment the form is swapped
   out — the slot looks continuous, which is the whole point of putting a CTA
   there instead of leaving a hole.

   Overrides are now only what the state actually needs: left alignment (the
   base is left-aligned; the old rule centred it) and slightly roomier type.
   Background, border and ::after blob are all INHERITED from .hft-fc. */
.hft-fc--used{ text-align:left; padding:18px 17px 17px; }
.hft-fc-used-h{ font-family:var(--hft-font-display); font-weight:600; font-size:17px; line-height:1.25; color:var(--hft-navy,#1B437D); margin:0 0 6px; position:relative; z-index:1; }
.hft-fc-used-p{ font-size:13.5px; line-height:1.55; color:var(--hft-slate,#5A6B7D); margin:0 0 15px; position:relative; z-index:1; }
.hft-fc-used-p b{ color:var(--hft-navy,#1B437D); font-weight:800; }
/* 🔴 1.0.237 — THE BUTTON WAS 76px TALL WHEN THIS RULE SAYS 48px. MEASURED ON THE
   LIVE PAGE, NOT GUESSED (Mark: "it's the button styling that is standing out as
   looking bad").

   CAUSE: `<a>` defaults to box-sizing:content-box; `<button>` defaults to
   border-box. So on the form's submit button — `.hft-fc-btn`, a real <button> —
   min-height:52px is the OUTER height and the padding is absorbed. On this
   anchor, min-height:48px was the CONTENT height and the 14+14px of padding was
   ADDED on top: 48 + 28 = 76. The rule read correct and rendered 58% too tall.

   ⚠️ THIS IS THE SECOND TIME THIS EXACT TRAP HAS BITTEN THIS CARD. 1.0.216 fixed
   the same thing on `.hft-fc input` ("the inputs were resolving to content-box;
   the theme has no global border-box reset that reaches them") — and the comment
   recording that is ~40 lines further down this file. 🔴 THERE IS NO GLOBAL
   BORDER-BOX RESET IN THIS THEME. Any NEW element in .hft-fc that sets both
   padding and a height MUST declare box-sizing:border-box itself.

   SECOND FIX, SAME RULE — WIDTH. The pill sat at its natural 222px inside a
   623px card, leaving 366px of dead space directly under a 611px full-width
   Download button. Measured on a 1920px viewport, where the buy box is 657px
   wide — NOT the ~372px this card was originally designed against.

   📌 The answer was already in the file: this link REPLACES `.hft-fc-btn` in the
   same slot of the same card, so it now mirrors it exactly — full width, 52px,
   15.5px, same shadow. The used state then looks like the form it replaced
   rather than like a different component, which is the continuity the whole card
   is for. Keep these two rules in sync. */
.hft-fc-used-cta{ box-sizing:border-box; display:flex; align-items:center; justify-content:center; gap:9px; width:100%; font-family:var(--hft-font-body); font-weight:800; font-size:15.5px; line-height:1; color:#fff; -webkit-text-fill-color:#fff; background:var(--hft-cta,#D6337B); border-radius:var(--hft-r-pill,999px); padding:15px 24px; min-height:52px; text-decoration:none; box-shadow:0 14px 28px -16px rgba(214,51,123,.85); transition:.15s; position:relative; z-index:1; }
.hft-fc-used-cta:hover,
.hft-fc-used-cta:focus{ background:var(--hft-cta-hover,#B62A67); color:#fff; -webkit-text-fill-color:#fff; text-decoration:none; transform:translateY(-1px); }
.hft-fc-used-cta:focus-visible{ outline:3px solid var(--hft-sail-yellow,#FBB915); outline-offset:2px; }
@media(prefers-reduced-motion:reduce){ .hft-fc-used-cta:hover,.hft-fc-used-cta:focus{ transform:none; } }

/* 🔴 1.0.238 — AT 320px THE BUTTON LABEL WRAPPED TO TWO LINES (61px instead of 52px).
   Measured, not predicted: the live page loaded in a 320px-wide same-origin iframe, so
   the real media queries fire and the real stylesheet applies.

   At 320px the buy box is 288px, the card 254px, leaving 217px inside it. "Start my 3
   free days →" at 15.5px plus 24px of padding each side needs ~234px. It wrapped, and a
   two-line pill under a two-line paragraph is exactly the "looks bad" this card has
   already been through once.

   📌 320px still matters (iPhone SE 1st gen, older Androids, and any browser at 50% zoom
   on a small laptop). 375px — every current iPhone — was always fine.

   ⚠️ 280px (Galaxy Fold, outer screen) still wraps at 59px. NOT fixed here on purpose:
   at 280px the WHOLE PAGE already scrolls sideways (measured: documentElement.scrollWidth
   exceeds clientWidth, and no child of this card passes the card's right edge), so the
   card is a symptom there, not the cause. Fixing it in this rule would hide a site-wide
   layout problem behind a patch on one button. */
@media(max-width:360px){
	.hft-fc-used-cta{ font-size:14.5px; padding:15px 14px; gap:6px; }
}

/* Cookie says this visitor already claimed — hide with NO flash. The inline
   head script sets .hft-fc-claimed on <html> before first paint. */
/* A paid claim hides the card site-wide — but NEVER on a $0 resource, which is
   always claimable and never spends the allowance (1.0.222). */
html.hft-fc-claimed .hft-fc:not(.hft-fc--used):not(.hft-fc--done):not([data-free]){ display:none; }

@media(max-width:899px){
	.hft-fc-row{ grid-template-columns:1fr; }
}

/* ==========================================================================
   1.0.216 — buy-box fixes found while testing 1.0.215 on the live site.
   Only the first one is a free-claim bug; the other three are pre-existing
   defects that the new card simply made visible.
   ========================================================================== */

/* 1. 🔴 FREE-CLAIM BUG. The inputs were resolving to content-box (a legacy
      rule; the theme has no global border-box reset that reaches them), so
      width:100% + 13px padding + 1.5px border rendered them 29px WIDER than
      their grid cell and they spilled ~10px past the pink panel. Measured
      live: cell 288.7px, input 317.7px = 288.7 + 26 + 3. */
.hft-fc input[type=text],
.hft-fc input[type=email],
.hft-fc input[type=password]{ box-sizing:border-box; }

/* 2. PRE-EXISTING. `.woocommerce div.product form.cart{margin-bottom:2em}`
      (specificity 0,3,2) was beating `.hft-pdp-summary form.cart` (0,2,1), so
      the theme's intended 4px never applied — that 32px hole is what left the
      "Add to My Favorites" heart marooned between the CTA and the notice.
      Raised to 0,4,2 so the theme wins. Verify by computed style, per the
      house rule about legacy CSS. */
.woocommerce div.product .hft-pdp-summary form.cart,
.woocommerce div.product .hft-pdp-summary .somdn-download-form{ margin-bottom:4px; }

/* 3. PRE-EXISTING. WooCommerce Subscriptions emits an EMPTY <p
      class="first-payment-date"> on non-subscription products: zero height,
      but 16px top + 16px bottom margin = 32px of dead space.
      ⚠️ `:empty` DOES NOT WORK HERE and was tried first — the node is not
      empty, it contains `<small></small>`. Neither does `:not(:has(*))`, for
      the same reason. Both were measured live returning 16px/16px.
      Two selectors, either of which is sufficient:
        · `.product-type-simple` — a simple product has no first payment date,
          ever, so this can never hide a real one on a subscription product;
        · `:has(> small:empty)` — collapses only while the <small> is empty.
      Verified live: computed margin 0px/0px. */
.product-type-simple .hft-pdp-buybox p.first-payment-date,
.hft-pdp-buybox p.first-payment-date:has(> small:empty){ margin:0 !important; }

/* 4. PRE-EXISTING + WRONG COPY (Mark, 2026-09-04): the Memberships notice
      "Want a discount? Become a member!" is inaccurate — members get every
      downloadable resource FREE and INCLUDED, not discounted — and it renders
      as unclickable plain text with no link.
      hft_pdp_freehint() (summary @27) already states this correctly, with a
      working "See plans" link, a few lines ABOVE it, so the notice was both
      wrong and a duplicate. Hiding the message collapses the whole block: the
      wrapper `div.woocommerce` measured 0 margin and took all its height from
      this child.
      To bring it back or reword it instead, no code needed:
      WooCommerce → Settings → Memberships → Messages. */
.hft-pdp-buybox .wc-memberships-member-discount-message{ display:none !important; }

/* ==========================================================================
   1.0.279 — "Create a password" field + the success card's sign-in button
   ========================================================================== */
.hft-fc-f--pw{ margin:0 0 9px; }
.hft-fc .hft-pwf input{ padding-right:64px; }
.hft-pwf-eye{ position:absolute; right:6px; top:7px; height:32px; min-height:0; padding:0 10px; margin:0; border:0; border-radius:8px; background:transparent; font-family:var(--hft-font-body); font-size:12px; font-weight:800; line-height:32px; color:var(--hft-blue,#0758A1); cursor:pointer; box-shadow:none; }
.hft-pwf-eye:hover{ background:rgba(7,88,161,.08); }
.hft-pwf-eye:focus-visible{ outline:2px solid var(--hft-sail-yellow,#FBB915); outline-offset:1px; }
/* the <a> is content-box by default — this theme has no global reset */
.hft-fc-done-cta{ box-sizing:border-box; max-width:300px; margin:16px auto 0; animation:hftfcrise .45s .24s ease both; }
@media(prefers-reduced-motion:reduce){ .hft-fc-done-cta{ animation:none; } }

/* 1.0.282 — why the form became the membership offer (submit-time only). */
.hft-fc-used-note{ position:relative; z-index:1; margin:0 0 11px; padding:8px 11px; border-radius:9px; background:#fff; border:1.5px solid #F6D2E2; font-size:12.5px; font-weight:700; line-height:1.45; color:#8A3B5E; }
