/* Shared semantic typography. All sizes are nominal, BEFORE page zoom.
   Layout/scaling remain in existing stylesheets. See TYPOGRAPHY.md. */
@font-face {
  font-family: 'Talina';
  src: url('../fonts/talina/Talina-DEMO-Separate.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
:root {
  --font-body: 'Geist', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-brand: 'Talina', var(--font-body);
  --font: var(--font-body);
  --text-primary: #1a1a1a;
  --text-secondary: #4d4d55;
  --text-muted: #60636d;
  --text-accent: #3554d8;
  --text-accent-hover: #2449bb;
  --text-inverse: #ffffff;
  --text-inverse-muted: #c8cbd3;
  --text-error: #9c2532;
  --text-success: #176343;
  --text-warning: #78501a;
  /* Existing palette names remain aliases, not a second colour system. */
  --red: var(--text-accent);
  --blue: var(--text-accent);
  --dark: var(--text-primary);
  --ink: var(--text-primary);
  --muted: var(--text-muted);
  --meet-muted: var(--text-muted);
  --type-brand-size: 64px;
  --type-title-size: 48px;
  --type-section-size: 32px;
  --type-subheading-size: 24px;
  --type-lead-size: 20px;
  --type-body-size: 16px;
  --type-ui-size: 14px;
  --type-caption-size: 12px;
  --type-brand: 400 var(--type-brand-size)/1.10 var(--font-brand);
  --type-title: 600 var(--type-title-size)/1.15 var(--font-body);
  --type-section: 600 var(--type-section-size)/1.20 var(--font-body);
  --type-subheading: 500 var(--type-subheading-size)/1.30 var(--font-body);
  --type-lead: 400 var(--type-lead-size)/1.50 var(--font-body);
  --type-body: 400 var(--type-body-size)/1.60 var(--font-body);
  --type-ui: 500 var(--type-ui-size)/1.40 var(--font-body);
  --type-caption: 400 var(--type-caption-size)/1.50 var(--font-body);
}
@media (max-width: 760px) {
  :root {
    --type-brand-size: 40px;
    --type-title-size: 32px;
    --type-section-size: 26px;
    --type-subheading-size: 20px;
    --type-lead-size: 18px;
  }
}
body {font:var(--type-body);letter-spacing:0;color:var(--text-primary);font-synthesis:none}
:where(h1,h2,h3,h4,h5,h6) {margin:0;overflow-wrap:break-word}
:where(h1) {font:var(--type-title);letter-spacing:-.02em}
:where(h2) {font:var(--type-section);letter-spacing:-.015em}
:where(h3) {font:var(--type-subheading);letter-spacing:-.01em}
:where(h4,h5,h6) {font:var(--type-body);font-weight:600;letter-spacing:0}
:where(strong,b) {font-weight:600}
:where(button,input,select,textarea) {font:inherit;letter-spacing:0}
:where(input:not([type=checkbox]):not([type=radio]),select,textarea) {font:var(--type-body);color:var(--text-primary)}
:where(input,textarea)::placeholder {color:var(--text-muted);opacity:1}
:where(button,[role=button]) {font:var(--type-ui);font-weight:600;letter-spacing:0}
:where(button,[role=button],input:not([type=checkbox]):not([type=radio]),select) {min-height:44px}
:where(button,[role=button]) {white-space:normal}
:where(a,button,input,select,textarea,summary):focus-visible {outline:3px solid var(--text-accent);outline-offset:4px}
:where(button:disabled,input:disabled,select:disabled) {opacity:1;color:var(--text-muted);background:#eceef3;cursor:not-allowed}
:where(summary) {font:var(--type-body);font-weight:600;letter-spacing:0}
:where(label) {font:var(--type-ui);letter-spacing:0}
:where(small) {font:var(--type-ui);letter-spacing:0}
/* Existing component classes map to roles; appearance never sets heading level. */
:where(.hero-copy>p:not(.meet-eyebrow):not(.p-eyebrow),.p-lead,.policy-subtitle,.policy-lead,
 .knowledge-intro,.conversation-section>p,.faq-section>p,.meet-lead,.meet-section-intro>p,
 .contact-hero-text>p,.setup-lead,.product-subtitle) {
  font:var(--type-lead);letter-spacing:0;
}
:where(.site-nav>a,.setup-header>a:last-child,.setup-links a,.footer-information a,.footer-bottom,.footer-bottom a,.back-link,.checkout-footer,
 .policy-toc a,.shipping-toc a,.shop-qty-label,.order-caption,.quantity-control output,.summary-toggle,
 .home-purchase-subscription,.shop-subscription,.shop-device-note,.shipping-note,.reassurance li,.secure-label,.checkout-reassurance,.sandbox-notice,.divider,
 .compatibility,.help-note,.secure-note,.legal-note,.loading-notice,.payment-error,.meet-signup-note,
 .meet-signup-status,.meet-series-invite,.footer-launch-note,.review-notice,.setup-footer,
 .policy-sidebar-card p,.policy-notice,.policy-small,.shipping-note-box,.shop-guarantee,.purchase-note) {
  font:var(--type-ui);letter-spacing:0;
}
/* Essential explanations use normal weight, never 12px captions. */
:where(.home-purchase-subscription,.shop-subscription,.shop-device-note,.compatibility,.help-note,
 .secure-note,.legal-note,.loading-notice,.payment-error,.meet-signup-note,.meet-signup-status,
 .footer-launch-note,.review-notice,.policy-sidebar-card p,.policy-notice,.policy-small,
 .shipping-note-box,.shop-guarantee,.purchase-note) {font-weight:400}
:where(.eyebrow,.p-eyebrow,.meet-eyebrow,.knowledge-eyebrow,.how-it-works .eyebrow,
 .parent-reassurance-eyebrow,.setup-eyebrow,.error-main .code) {
  font:var(--type-ui);font-weight:600;letter-spacing:.08em;color:var(--text-accent);
}
:where(.site-nav>.cta-btn,.cta-btn,.btn-primary,.btn-secondary,.product-cta,.shop-buy-btn,.button,.p-button,.p-text-link,
 .meet-button,.meet-text-link,.shipping-help-btn,.home-purchase-button,.footer-contact-link,
 .contact-submit-btn,.features-link,.series-explore-link,.parent-reassurance-link,.about-cta,
 .setup-button,.error-actions a,.shop-demo-link,.shop-faq-view-all a,.text-link) {
  font:var(--type-ui);font-weight:600;letter-spacing:0;min-height:44px;
}
:where(.knowledge-card h3,.policy-section h3,.parent-reassurance-points h3,.policy-sidebar-card h2,.policy-feature h5,.shipping-feature h5,
 .faq-question,.product-info h3,.bcc-title) {font:var(--type-body);font-weight:600;letter-spacing:0}
:where(.shipping-help-text h2,.home-purchase-text h2,.contact-form-card h2,.shipping-row-body>h2,.policy-section>h2,.form-section h2,.order-heading h2,.setup-card h2) {
  font:var(--type-subheading);letter-spacing:-.01em;
}
:where(.product-price,.shop-price,.home-purchase-price,.metrics strong) {font:var(--type-section);letter-spacing:-.015em;font-variant-numeric:tabular-nums}
:where(.totals,.pay-total,.pay-total strong,.grand-total dd,.summary-toggle strong) {font:var(--type-body);letter-spacing:0}
:where(.totals dd,.pay-total strong,.grand-total dt,.summary-toggle strong) {font-weight:600}
.product-price span,.grand-total dt span {font:var(--type-ui);letter-spacing:0}
:where(.meet-media-status,figcaption,.copyright) {font:var(--type-caption);letter-spacing:0}
:where(.faq-answer,.policy-section p,.policy-section li,.shipping-section p,.shipping-section li,
 .shop-details-body,.shipping-help-text p) {font:var(--type-body);letter-spacing:0}
/* Explicit roles override low-specificity component mappings. */
.type-brand {font:var(--type-brand);letter-spacing:0;font-synthesis:none}
.type-brand-section {font:400 var(--type-section-size)/1.20 var(--font-brand);letter-spacing:0;font-synthesis:none}
.type-title {font:var(--type-title);letter-spacing:-.02em}
.type-section {font:var(--type-section);letter-spacing:-.015em}
.type-subheading {font:var(--type-subheading);letter-spacing:-.01em}
.type-lead {font:var(--type-lead);letter-spacing:0}
.type-body {font:var(--type-body);letter-spacing:0}
.type-ui {font:var(--type-ui);letter-spacing:0}
.type-caption {font:var(--type-caption);letter-spacing:0;color:var(--text-muted)}
.type-compact {font:var(--type-body);font-weight:600;letter-spacing:0}
.type-button {font:var(--type-ui);font-weight:600;letter-spacing:0}
/* Shared text colours on actual surfaces. */
:is(.policy-section,.shipping-section,.about-copy,.meet-character-copy) p {color:var(--text-secondary)}
:is(.faq-answer,.shipping-help-text p,.home-purchase-subscription,.meet-signup-note,
 .shop-subscription,.shop-device-note,.compatibility,.help-note,.legal-note,.secure-note,
 .checkout-footer,.order-caption) {color:var(--text-muted)}
:is(.policy-section,.shipping-section,.faq-answer,.compatibility,.meet-signup-note,.legal-note) a {color:var(--text-accent);text-underline-offset:3px}
:is(.policy-section,.shipping-section,.faq-answer,.compatibility,.meet-signup-note,.legal-note) a:hover {color:var(--text-accent-hover)}
.site-footer {color:var(--text-inverse)}
.site-footer .footer-bottom {color:var(--text-inverse-muted)}
.site-footer :is(a,button):focus-visible {outline-color:var(--text-inverse)}
.knowledge-section {background:var(--text-accent);color:var(--text-inverse)}
.knowledge-section :is(.knowledge-eyebrow,.knowledge-intro) {color:var(--text-inverse)}
.meet-signup-status[data-error=true],.payment-error {color:var(--text-error)}
.meet-series-play>span:last-child {background:#1a1a1a;padding:6px 12px;border-radius:6px;color:var(--text-inverse);text-shadow:none}
/* Line lengths and minimal reflow support; no new page zoom. */
:is(.policy-section,.shipping-section)>:is(p,ul,ol),.terms-page .policy-section ul {max-width:70ch}
.policy-toc a,.shipping-toc a {overflow-wrap:anywhere}
.skip-link,.setup-skip {font:var(--type-ui);font-weight:600;letter-spacing:0}
.shop-title,.policy-h1,.talk-about>h2,.meet-title-line,.hero-copy h1 .accent {white-space:normal}
.hero-copy h1 {overflow-wrap:normal}
.meet-page .hero-system {--hero-copy-width:700px}
.home-page .hero-system {--hero-copy-width:620px}
.quantity-control {height:auto;min-height:44px}
.quantity-control button {min-width:44px;min-height:44px}
.reassurance {flex-wrap:wrap}
.meet-series-fields input {font:var(--type-body)}
.p-age>strong,.step-number {font:var(--type-section);letter-spacing:-.015em}
.page-marquee-item,.marquee-item,.note-label {font:var(--type-ui);font-weight:600;letter-spacing:0}
.shipping-row-note {font:var(--type-ui);font-weight:400;letter-spacing:0}
/* Disabled text stays legible rather than fading the whole control. */
body button:disabled {opacity:1;color:var(--text-muted);background:#eceef3}
@media(max-width:760px) {
  .checkout-footer nav {flex-wrap:wrap}
  .checkout-main .product-info {padding-right:0}
  .checkout-main .quantity-control {position:static;transform:none;margin-top:10px}
}
/* Cookie preferences share the same font and readable consent role. */
.bcc-banner {font:var(--type-body);color:var(--text-primary)}
.bcc-title {font:var(--type-body);font-weight:600;color:var(--text-primary)}
.bcc-body,.bcc-pref {font:var(--type-ui);font-weight:400;color:var(--text-secondary)}
.bcc-btn {font:var(--type-ui);font-weight:600;min-height:44px}
.bcc-body a,.bcc-btn.text {color:var(--text-accent)}
.bcc-pref strong {font-weight:600}
/* Internal admin uses the same roles without introducing marketing page zoom. */
.admin-page :is(.brand span,.badge,th,.status,.pagination,.footnote,.small,.metrics small,.detail-row b) {font:var(--type-ui);letter-spacing:0;color:var(--text-muted)}
.admin-page :is(.status.paid) {color:var(--text-success)}
.admin-page :is(.status.refund) {color:var(--text-warning)}
.admin-page :is(.status.problem,#notice.error) {color:var(--text-error)}
.admin-page .brand {font:var(--type-subheading);font-weight:600;letter-spacing:-.01em}
.admin-page :is(td small,.metrics span,footer) {color:var(--text-muted)}

/* Compact contact disclaimer; keep the link in the normal text flow. */
.contact-reply-note {font:var(--type-caption);letter-spacing:0;color:var(--text-muted)}
.contact-reply-note a {color:var(--text-accent);white-space:nowrap;text-underline-offset:2px}
