/* ==========================================================================
   Typography guard — loaded LAST.
   Elementor's global (kit) fonts and sizes are made for the Elementor pages; this file keeps the
   theme's own pages (shop, product, COA, cart, checkout, account, policies, popups) on the brand scale.
   It only targets theme containers, so Elementor-built pages are not touched.
   Path: wp-content/themes/arch-research/assets/css/guard.css — New file
   ========================================================================== */

/* Base text inside theme areas */
body.arc :is(.arc-section, .arc-banner, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate, .arc-stickybuy, .arc-fbheader, .arc-fbfooter) {
	font-family: var(--font) !important;
	font-size: 16px;
	line-height: 1.6;
	letter-spacing: normal;
}
body.arc :is(.arc-section, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate) :is(p, li, dd, dt, td, th, label, span, a, small, address) {
	letter-spacing: normal;
}
body.arc :is(.arc-section, .arc-banner, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate, .arc-stickybuy) :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--font-head) !important;
	font-weight: 700 !important;
	letter-spacing: 0 !important;
	line-height: 1.25 !important;
	color: var(--ink);
	margin-top: 0;
}
body.arc :is(.arc-section, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate) p { font-size: inherit; line-height: inherit; }

/* Scale (desktop → mobile) */
body.arc .arc-banner__title { font-size: clamp(28px, 3.3vw, 48px) !important; line-height: 1.1 !important; }
body.arc .arc-banner__intro { font-size: clamp(14px, 1.1vw, 16px) !important; }
body.arc .arc-crumbs ol { font-size: clamp(14px, 1.15vw, 17px) !important; }
body.arc .arc-h2 { font-size: clamp(24px, 2.4vw, 34px) !important; }
body.arc .arc-h3 { font-size: clamp(20px, 1.7vw, 24px) !important; }
body.arc .arc-h4 { font-size: clamp(17px, 1.4vw, 20px) !important; }
body.arc .arc-h5 { font-size: 16px !important; }
body.arc .arc-lead { font-size: clamp(15px, 1.1vw, 17px) !important; }
body.arc .arc-sechead { margin-bottom: clamp(20px, 2.4vw, 32px); }

/* Product cards */
body.arc .arc-card__title { font-size: clamp(19px, 1.6vw, 23px) !important; font-weight: 700 !important; line-height: 1.25 !important; }
body.arc .arc-card__price { font-size: clamp(18px, 1.4vw, 21px) !important; }
body.arc .arc-card__body { gap: 8px; }
body.arc .arc-card__btn { font-size: 16px !important; }
body.arc .arc-shophead .arc-lead { font-size: 16px !important; }

/* Product page */
body.arc .arc-buy__title { font-size: clamp(24px, 2.3vw, 34px) !important; }
body.arc .arc-buy__price { font-size: clamp(22px, 1.9vw, 28px) !important; }
body.arc .arc-buy__short { font-size: 15.5px !important; }
body.arc .arc-buy { gap: 14px; }
body.arc .arc-ptabs__btn { font-size: 15px !important; }
body.arc .arc-ptabs__panel :is(h2, h3) { font-size: 19px !important; margin: 1.2em 0 .5em !important; }
body.arc .arc-ptabs__panel :is(h2, h3):first-child { margin-top: 0 !important; }
body.arc .arc-ptabs__panel { font-size: 15.5px; }
body.arc .arc-qd__title { font-size: 13px !important; }

/* Prose / policies */
body.arc .arc-prose { font-size: 16px !important; line-height: 1.7 !important; }
body.arc .arc-prose h2 { font-size: clamp(20px, 1.7vw, 24px) !important; }
body.arc .arc-prose h3 { font-size: 18px !important; }
body.arc .arc-policy__body h2.arc-policy__h { font-size: clamp(18px, 1.5vw, 22px) !important; }
body.arc .arc-policy__body h2.arc-policy__h::before { min-width: 38px; height: 38px; font-size: 14px; border-radius: 10px; }
body.arc .arc-keypoints li { font-size: 15px; }

/* COA */
body.arc .arc-coa__title { font-size: 17px !important; }
body.arc .arc-coa__meta > div { font-size: 14px !important; }
body.arc .arc-coalib__intro .arc-h2 { font-size: clamp(22px, 2.2vw, 32px) !important; }
body.arc .arc-coalib__stats dd { font-size: clamp(18px, 1.6vw, 24px) !important; line-height: 1.15 !important; }
body.arc .arc-coalib__stats dd.is-date { font-size: clamp(15px, 1.25vw, 18px) !important; }
body.arc .arc-howto__steps h3 { font-size: 17px !important; }
/* COA search: one border only */
body.arc .arc-coasearch input, body.arc .arc-search__bar input, body.arc .arc-minisearch input[type="search"] { font-family: var(--font) !important; }
body.arc .arc-coasearch input, body.arc .arc-search__bar input {
	border: 0 !important; outline: 0 !important; box-shadow: none !important; background: transparent !important;
	border-radius: 0 !important; height: 100% !important; padding: 0 12px !important; margin: 0 !important; font-size: 16px !important;
}
body.arc .arc-coasearch input:focus, body.arc .arc-search__bar input:focus { border: 0 !important; box-shadow: none !important; outline: 0 !important; }
body.arc .arc-minisearch input:focus { outline: 0 !important; }

/* Popups: COA viewer, cart drawer, auth, search */
body.arc .arc-viewer__head h2 { font-size: clamp(18px, 1.6vw, 22px) !important; text-transform: none !important; }
body.arc .arc-drawer__head h2 { font-size: 18px !important; text-transform: uppercase; line-height: 1.2 !important; }
body.arc .arc-modal__head h2 { font-size: 22px !important; }
body.arc .arc-gate__title { font-size: clamp(20px, 2.2vw, 26px) !important; }
body.arc .arc-cline__name { font-size: 15px !important; font-family: var(--font-head) !important; font-weight: 700 !important; }
body.arc .arc-sum strong { font-size: 18px !important; }

/* Counter badges — always a perfect circle with the number centred */
body.arc .arc-cart-count {
	display: inline-flex !important; align-items: center; justify-content: center;
	min-width: 20px; height: 20px; padding: 0 6px; box-sizing: border-box;
	border-radius: 999px; font: 700 11px/1 var(--font) !important; text-align: center; letter-spacing: 0;
}
body.arc .arc-drawer__head .arc-cart-count { position: static; min-width: 24px; height: 24px; font-size: 12px !important; vertical-align: middle; }
body.arc .arc-ptabs__count { display: inline-flex; align-items: center; justify-content: center; line-height: 1 !important; }

/* Account */
body.arc .arc-acc-head h2 { font-size: clamp(22px, 2vw, 28px) !important; }
body.arc .arc-panel__head h3 { font-size: 16px !important; }
body.arc .arc-dash__main :is(h2, h3) { font-size: 18px !important; }
body.arc .arc-dash__main .arc-acc-head h2 { font-size: clamp(22px, 2vw, 28px) !important; }
body.arc .arc-dash__main legend { font-family: var(--font-head); font-size: 16px; font-weight: 700; }
body.arc .arc-loginpage__aside h2 { font-size: clamp(22px, 2.2vw, 30px) !important; color: #fff !important; }

/* Order confirmation (thank-you) + view order */
body.arc .arc-thanks__head h2 { font-size: clamp(22px, 2.2vw, 28px) !important; margin-bottom: 4px !important; }
body.arc .arc-thanks__head p { font-size: 15px; margin: 0; }
body.arc .woocommerce-order-details__title, body.arc .woocommerce-column__title, body.arc .woocommerce-customer-details h2, body.arc .woocommerce-order-details h2 { font-size: 20px !important; margin: 0 0 12px !important; }
body.arc .woocommerce-order-details, body.arc .woocommerce-customer-details { margin-top: 32px; }
body.arc .woocommerce-table--order-details { font-size: 15px; }
body.arc .woocommerce-table--order-details .product-name a { font-family: var(--font-head); font-weight: 700; }
body.arc .woocommerce-customer-details address { font-size: 15px; }
body.arc .woocommerce-customer-details .woocommerce-column { min-width: 0; }

/* P2P payment instructions (Zelle) */
body.arc .arc-pay { margin: 24px 0 28px; padding: clamp(18px, 2.4vw, 26px); border-radius: var(--r-lg); border: 1px solid var(--line); background: linear-gradient(180deg, #fff, var(--mist)); position: relative; overflow: hidden; }
body.arc .arc-pay::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--brand, var(--navy)); }
body.arc .arc-pay__brand { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px; border-radius: 99px; background: var(--brand, var(--navy)); color: #fff; font: 700 12px/1.4 var(--font-head); letter-spacing: .04em; margin-bottom: 10px; }
body.arc .arc-pay__head h2 { font-size: clamp(18px, 1.6vw, 22px) !important; margin: 0 0 6px !important; }
body.arc .arc-pay__head p { font-size: 14.5px; color: var(--muted); margin: 0 0 16px; }
body.arc .arc-pay__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; }
body.arc .arc-pay__grid > div { padding: 12px 14px; border-radius: var(--r); background: #fff; border: 1px solid var(--line); min-width: 0; }
body.arc .arc-pay__grid dt { font-size: 12.5px; color: var(--muted); margin-bottom: 4px; }
body.arc .arc-pay__grid dd { margin: 0; font-weight: 700; font-size: 16px; overflow-wrap: anywhere; }
body.arc .arc-pay__grid dd small { display: block; font-weight: 400; color: var(--muted); font-size: 13px; }
body.arc .arc-pay__grid .arc-copy { display: inline-flex; align-items: center; gap: 6px; border: 0; }
body.arc .arc-pay__grid .arc-copy .arc-i { width: 15px; height: 15px; color: var(--teal); }
body.arc .arc-pay__amount { font-size: 20px !important; color: var(--navy); }
body.arc .arc-pay__app { margin-top: 14px; }
body.arc .arc-pay__foot { margin: 14px 0 0; font-size: 13.5px; color: var(--muted); }
@media (max-width: 700px) { body.arc .arc-pay__grid { grid-template-columns: 1fr; } }
body.arc .arc-next li strong { font-size: 14px; }

/* Checkout: terms text + payment methods */
body.arc .wc-block-checkout__terms, body.arc .wc-block-checkout__terms * { font-family: var(--font) !important; font-size: 14px !important; line-height: 1.6 !important; letter-spacing: normal !important; }
body.arc .wc-block-checkout__terms { margin: 22px 0 18px !important; padding-top: 18px; border-top: 1px solid var(--line); color: var(--muted); }
body.arc .wc-block-checkout__terms a { color: var(--teal-text) !important; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
body.arc .wc-block-checkout__add-note { margin: 18px 0 0 !important; }
body.arc .wc-block-checkout__payment-method .wc-block-components-radio-control { gap: 12px !important; }
body.arc .wc-block-components-radio-control-accordion-option { overflow: hidden; }
body.arc .wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__option { padding: 16px 18px 16px 56px !important; }
body.arc .wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__input { left: 18px !important; }
body.arc .wc-block-components-radio-control-accordion-content { padding: 0 18px 16px 56px !important; font-size: 14px; line-height: 1.55; color: var(--muted); }
body.arc .wc-block-components-radio-control-accordion-content p { margin: 0 0 8px; }
body.arc .wc-block-components-radio-control__label { font-size: 15px !important; font-family: var(--font) !important; }
body.arc .wc-block-components-radio-control__option-layout { gap: 4px; }
body.arc .wc-block-components-checkout-step__title, body.arc .wc-block-components-title { font-size: 19px !important; }
body.arc .wc-block-components-checkout-step__description { font-size: 14px !important; }
body.arc .wc-block-components-product-name { font-size: 15.5px !important; }
body.arc .wc-block-cart__totals-title { font-size: 16px !important; }

/* Spacing tidy-up */
body.arc .arc-section--page { padding-top: clamp(32px, 4vw, 56px); }
body.arc .arc-section--pdp { padding-top: clamp(28px, 3.5vw, 48px); }
body.arc .arc-related { padding-top: clamp(32px, 4vw, 56px); }
body.arc .arc-banner { min-height: clamp(200px, 19vw, 360px); padding: clamp(28px, 4vw, 52px) 0; }
body.arc .arc-banner__in { gap: 12px; }
@media (max-width: 767px) {
	body.arc .arc-section { padding-block: 36px; }
	body.arc .arc-ptabs__panel { padding: 20px 16px; }
}

/* Fonts on inline elements & form controls.
   Elementor's kit can set its own font on buttons/links (".elementor-kit-N button", etc.),
   so everything inside theme areas inherits its parent's font, then the elements that use the
   heading font get it back. */
body.arc :is(.arc-section, .arc-banner, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate, .arc-stickybuy, .arc-fbheader, .arc-fbfooter) :is(a, button, input, select, textarea, label, span, strong, b, em, small, li, dt, dd, td, th, p, summary, legend, address, time) {
	font-family: inherit;
}
.arc-h1,
.arc-h2,
.arc-h3,
.arc-h4,
.arc-h5,
.arc-kicker,
.arc-banner__title,
.arc-acctmenu__who strong,
.arc-gate__kicker,
.arc-gate__title,
.arc-modal__kicker,
.arc-cline__name,
.arc-drawer__label,
.arc-sum strong,
.arc-search__label,
.arc-sres__name,
.arc-viewer__kicker,
.arc-acc__btn,
.arc-card__flag,
.arc-card__title,
.arc-shophead__coa strong,
.arc-buy__cat,
.arc-buy__title,
.arc-opts legend,
.arc-ptabs__btn,
.arc-stickybuy__txt strong,
.arc-qd__title,
.arc-qd__qty,
.arc-coalib__stats dd,
.arc-match strong,
.arc-coa__verified,
.arc-howto__n,
.arc-toc__title,
.arc-toc__list a span,
.arc-keypoints__title,
.arc-policy__body h2.arc-policy__h::before,
.arc-404__code,
.arc-post__date,
.arc-dash__main h2,
 .arc-dash__main h3,
.arc-kpi strong,
.arc-dash__avatar,
.arc-steps li,
.wc-block-components-title,
 .wc-block-components-checkout-step__title,
 .wc-block-cart__totals-title,
 .wc-block-components-order-summary__button-text,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value .wc-block-components-formatted-money-amount,
.wc-block-cart-items th,
 .wc-block-cart-items__header,
.wc-block-components-product-name,
.wp-block-woocommerce-cart-cross-sells-block .wp-block-heading {
	font-family: var(--font-head) !important;
}
body.arc .arc-btn,
body.arc .arc-hicons .arc-cart-count,
body.arc .arc-acctmenu__panel a { font-family: var(--font) !important; }

/* Keep the side cart below the WordPress admin bar (logged-in admins). */
body.admin-bar .arc-drawer__panel { top: 32px; }
@media (max-width: 782px) { body.admin-bar .arc-drawer__panel { top: 46px; } }


/* --------------------------------------------------------------------------
   Links & buttons.
   The Elementor kit can give every <a> / <button> its own font size and weight
   (that made the grid titles thin and the filter chips, contents list and
   e-mail links too big). Inside theme areas links and buttons now follow the
   text around them, then the theme's own link/button sizes are put back below.
   -------------------------------------------------------------------------- */
body.arc :is(.arc-section, .arc-banner, .arc-drawer, .arc-modal, .arc-search, .arc-viewer, .arc-gate, .arc-stickybuy, .arc-hicons) :is(a:not([class]), a[class*="arc-"], button:not([class]), button[class*="arc-"]) {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
}
.arc-link { font-weight: 600 !important; }
.arc-btn { font-weight: 400 !important; font-size: 17px !important; line-height: 1 !important; }
.arc-btn--sm { font-size: 15px !important; }
.arc-btn--lg { font-size: 18px !important; }
.arc-chip { font-size: 15px !important; }
.arc-copy { font: inherit !important; font-weight: 600 !important; }
.arc-pagination a { font-weight: 600 !important; }
.arc-acctmenu__panel a { font-size: 15px !important; }
.arc-fbheader__list a { font-size: 17px !important; }
.arc-gate__exit { font-size: 14px !important; }
.arc-modal__skip { font-size: 14px !important; }
.arc-tabs__btn { font-weight: 600 !important; font-size: 15px !important; }
.arc-auth__back { font-size: 14px !important; }
.arc-cline__name { font-weight: 700 !important; font-size: 15px !important; line-height: 1.3 !important; }
.arc-cline__remove { font-size: 13px !important; }
.arc-acc__btn { font: 600 clamp(16px, 1.4vw, 20px)/1.35 var(--font-head) !important; }
.arc-card__btn { font-size: 18px !important; }
.arc-grid--4 .arc-card__btn { font-size: 16px !important; }
.arc-buy__chips li.is-ok a { font-weight: 600 !important; }
.arc-ptabs__btn { font: 600 15.5px/1 var(--font-head) !important; }
.arc-coa__actions .arc-btn { font-size: 14.5px !important; }
.arc-toc__list a { font-size: 14px !important; line-height: 1.35 !important; }
.arc-toc__list a.is-active { font-weight: 600 !important; }
.arc-otherpol a { font-size: 14.5px !important; }
.arc-dash__nav a { font-weight: 520 !important; font-size: 15px !important; }
@media (max-width: 900px) { .arc-dash__nav a { font-size: 12.5px !important; line-height: 1.2 !important; } }
.arc-orders a { font-size: 14.5px !important; }
.arc-shortcuts a { font-size: 13px !important; }
.arc-dash__main .woocommerce-Address-title a { font-size: 14px !important; }
.arc-wc-page button[type="submit"]:not(.arc-btn) { font-weight: 400 !important; font-size: 16px !important; }

/* Product grid title — bold and a little bigger */
body.arc .arc-card__title { font-size: clamp(21px, 1.8vw, 26px) !important; font-weight: 700 !important; }
body.arc .arc-card__title a { font-weight: 700 !important; font-size: inherit !important; }
body.arc .arc-grid--4 .arc-card__title { font-size: clamp(19px, 1.55vw, 23px) !important; }

/* Filter chip counter — number centred in its circle */
body.arc .arc-chip { font-size: 15px !important; line-height: 1 !important; }
body.arc .arc-chip span {
	display: inline-flex !important; align-items: center; justify-content: center;
	min-width: 22px; height: 22px; padding: 0 6px !important; margin: 0;
	font: 600 11.5px/1 var(--font) !important; letter-spacing: 0 !important;
	box-sizing: border-box;
}

/* Policy pages: contents list smaller (active item too), help card heading white */
body.arc .arc-toc__list a,
body.arc .arc-toc__list a.is-active { font-size: 13.5px !important; line-height: 1.35 !important; padding: 6px 10px; }
body.arc .arc-toc__list a.is-active { font-weight: 600 !important; }
body.arc .arc-toc__list a span { font-size: 11px !important; line-height: 1.7 !important; }
body.arc .arc-otherpol a { font-size: 14px !important; }
body.arc .arc-policy__help :is(h2, h3, h4, .arc-h4) { color: #fff !important; }
body.arc .arc-policy__help a { color: #fff; }

/* Lists (ul / ol li) — a little smaller */
body.arc :is(.arc-prose, .arc-policy__body, .arc-ptabs__panel, .arc-content, .entry-content) :is(ul, ol) > li { font-size: 15px !important; line-height: 1.65 !important; }
body.arc .arc-keypoints li { font-size: 14.5px !important; line-height: 1.55 !important; }
body.arc .arc-buy__short li,
body.arc .arc-buy__short :is(ul, ol) > li { font-size: 14.5px !important; line-height: 1.55 !important; }
body.arc .arc-loginpage__aside :is(h1, h2, h3) { color: #fff !important; }
body.arc .arc-buy__chips li { font-size: 13.5px !important; line-height: 1.3 !important; }
body.arc .arc-crumbs li { font-size: inherit !important; line-height: 1.4 !important; }
body.arc :is(.arc-qd, .arc-howto__steps, .arc-coa__meta, .arc-kv) li { font-size: inherit; }
body.arc .arc-policy__help :is(li, a, span, p) { font-size: 15.5px !important; line-height: 1.5 !important; }

/* Policy pages: the side column runs the full height of the policy; the left box is kept
   in view by assets/js/core.js (JavaScript, not CSS sticky). */
body.arc .arc-policy__grid { align-items: stretch; }
body.arc .arc-policy__side { align-self: stretch; height: auto; position: relative; }
body.arc .arc-policy__sticky { position: static; top: auto; max-height: none; overflow: visible; }
body.arc .arc-policy__sticky .arc-toc__list { max-height: none !important; overflow: visible !important; padding-right: 0; }
body.arc .arc-policy__sticky.is-compact .arc-otherpol { display: none; }
body.arc .arc-policy__sticky.is-compact .arc-toc { padding-top: 14px; padding-bottom: 12px; }
body.arc .arc-policy__sticky.is-compact .arc-toc__list a { padding-top: 4px !important; padding-bottom: 4px !important; }

/* reCAPTCHA v3 note under the sign-up button */
body.arc .arc-rc-note { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 10px 0 0 !important; font-size: 12.5px !important; line-height: 1.4 !important; color: var(--muted); text-align: center; }
body.arc .arc-rc-note .arc-i { width: 15px; height: 15px; color: var(--teal); flex: none; }
body.arc .arc-rc-note a { color: var(--teal-text); text-decoration: underline; }
/* Keep Google's reCAPTCHA badge above the members-only wall / popups (they use a very high z-index) */
.grecaptcha-badge { z-index: 2147483000 !important; visibility: visible !important; }

/* --------------------------------------------------------------------------
   All headings on the whole site (theme pages + Elementor pages):
   Playfair Display, Capitalized (no ALL CAPS). Small labels / eyebrows / buttons keep their style.
   -------------------------------------------------------------------------- */
:root { --font-display: "Playfair Display", Sans-serif; }
html body.arc :is(
	h1, h2, h3, h4, h5, h6,
	.elementor-heading-title,
	.arc-h1, .arc-h2, .arc-h3, .arc-h4, .arc-h5,
	.arc-banner__title, .arc-gate__title, .arc-buy__title, .arc-card__title, .arc-coa__title,
	.arc-toc__title, .arc-keypoints__title, .arc-qd__title,
	.wc-block-components-title, .wc-block-components-checkout-step__title, .wc-block-cart__totals-title
) {
	font-family: var(--font-display) !important;
	text-transform: capitalize !important;
	letter-spacing: normal !important;
	font-variant-numeric: lining-nums; /* Playfair draws "20mg" like "2omg" without this */
	font-feature-settings: "lnum" 1;
}
html body.arc .arc-card__title a { font-family: inherit !important; }
