/* The website's transactional pages (P07): checkout, return, apply, free enrollment, contact, confirmations,
   certificate verification, email preferences, expired links, ratings. "Ivy" (DESIGN_SPECS §4.10) with the clarity
   of Stripe Checkout: navy text and buttons, ivory bands, gold hairlines and overlines, Cormorant Garamond titles,
   Inter for everything you read or type. Classes are prefixed tx- ; the Ivy tokens come from site.css (each has a
   fallback so these pages stay right if a token moves). */

.site-body {
  --tx-navy: var(--ivy-navy, #0B1F3A);
  --tx-navy-2: var(--ivy-navy-2, #16305A);
  --tx-text: var(--ivy-text, #243247);
  --tx-text-2: var(--ivy-text-2, #465265);
  --tx-text-3: var(--ivy-text-3, #646D7E);
  --tx-ivory: var(--ivy-ivory, #FAF8F3);
  --tx-ivory-2: var(--ivy-ivory-2, #F4F0E6);
  --tx-line: var(--ivy-line, #E8E2D5);
  --tx-line-2: var(--ivy-line-2, #D8CFBD);
  --tx-gold: var(--ivy-gold, #B08D3C);
  --tx-gold-text: var(--ivy-gold-text, #876625);
  --tx-gold-wash: var(--ivy-gold-wash, #F6EEDC);
  --tx-green: var(--ivy-green, #0E7A4F);
  --tx-green-wash: #E9F4EE;
  --tx-red: var(--ivy-red, #B42318);
  --tx-red-wash: #FDF1EF;
  --tx-amber: var(--ivy-amber, #A15C07);
  --tx-amber-wash: #FDF5E7;
  --tx-serif: var(--ivy-serif, "Cormorant Garamond", Georgia, serif);
  --tx-sans: var(--ivy-sans, "Inter", system-ui, sans-serif);
  --tx-radius: 4px;
  --tx-radius-card: 6px;
  --tx-gutter: var(--ivy-gutter, clamp(20px, 4vw, 40px));
  --tx-ease: cubic-bezier(.2, .7, .2, 1);
}

/* ------------------------------------------------------------------ type and small parts */
.tx-overline { margin: 0; font: 650 12px/1.4 var(--tx-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--tx-gold-text); }
.tx-title { margin: 12px 0 0; font-family: var(--tx-serif); font-weight: 500; font-size: clamp(34px, 3.4vw, 46px); line-height: 1.08; letter-spacing: -.01em; color: var(--tx-navy); text-wrap: balance; }
.tx-title em { font-style: italic; color: var(--ivy-gold-accent, #A07F31); }
.tx-lede { margin: 14px 0 0; font-size: 17px; line-height: 1.6; color: var(--tx-text-2); text-wrap: pretty; }
.tx-lede strong { color: var(--tx-navy); font-weight: 600; overflow-wrap: anywhere; }
.tx-small { font-size: 14px; line-height: 1.55; color: var(--tx-text-3); }
.tx-small a, .tx-lede a, .tx-authorize a, .tx-hint a { color: var(--tx-navy); text-decoration: underline; text-decoration-color: rgba(176, 141, 60, .6); text-underline-offset: 3px; font-weight: 550; }
.tx-small a:hover, .tx-lede a:hover, .tx-authorize a:hover, .tx-hint a:hover { text-decoration-color: var(--tx-gold); }
.tx-center { text-align: center; }
.tx-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.tx-center .tx-actions, .tx-actions.is-center { justify-content: center; }
.tx-actions-stack { flex-direction: column; }
.tx-actions-stack .ivy-btn { width: 100%; }
.tx-linkbtn {
  appearance: none; display: inline-flex; align-items: center; gap: 7px; padding: 0; border: 0; background: none;
  font: 600 14.5px/1.4 var(--tx-sans); color: var(--tx-navy); cursor: pointer; text-decoration: underline;
  text-decoration-color: rgba(176, 141, 60, .6); text-underline-offset: 4px; text-decoration-thickness: 1px;
}
.tx-linkbtn:hover { text-decoration-color: var(--tx-gold); }
.tx-linkbtn .icon { width: 15px; height: 15px; color: var(--tx-gold-text); }
.tx-linkbtn[hidden] { display: none; }
.tnum { font-variant-numeric: tabular-nums lining-nums; }

/* status marks above confirmation titles */
.tx-mark { display: grid; place-items: center; width: 60px; height: 60px; margin: 0 auto 22px; border-radius: 50%; }
.tx-mark .icon { width: 26px; height: 26px; stroke-width: 2.2; }
.tx-mark-success { background: var(--tx-green-wash); color: var(--tx-green); box-shadow: 0 0 0 8px #F5FAF7; }
.tx-mark-error { background: var(--tx-red-wash); color: var(--tx-red); box-shadow: 0 0 0 8px #FEF8F7; }
.tx-mark-pending, .tx-mark-warn { background: var(--tx-amber-wash); color: var(--tx-amber); box-shadow: 0 0 0 8px #FEFAF3; }
.tx-mark-info, .tx-mark-mail, .tx-mark-star { background: var(--tx-ivory); color: var(--tx-gold-text); box-shadow: 0 0 0 1px rgba(176, 141, 60, .45), 0 0 0 8px #FCFBF8; }
@media (prefers-reduced-motion: no-preference) {
  .tx-mark-success .icon { stroke-dasharray: 30; stroke-dashoffset: 30; animation: tx-draw .5s .15s var(--tx-ease) forwards; }
}
@keyframes tx-draw { to { stroke-dashoffset: 0; } }

/* alerts */
.tx-alert { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 12px 14px; border: 1px solid; border-radius: var(--tx-radius); font-size: 14.5px; line-height: 1.5; text-align: start; }
.tx-alert[hidden] { display: none; }
.tx-alert .icon { width: 17px; height: 17px; flex: none; margin-top: 2px; }
.tx-alert-error { background: var(--tx-red-wash); border-color: #F2C8C2; color: #8F1D13; }
.tx-alert-warn { background: var(--tx-amber-wash); border-color: #EFD9AE; color: #6E4405; }
.tx-alert-info { background: var(--tx-ivory); border-color: var(--tx-line-2); color: var(--tx-text); }
.tx-alert-success { background: var(--tx-green-wash); border-color: #BFE0CD; color: #0B5E3D; }

/* ------------------------------------------------------------------ fields */
.tx-form { display: flex; flex-direction: column; gap: 22px; margin-top: 30px; text-align: start; }
.tx-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px; }
.tx-span-2 { grid-column: 1 / -1; }
.tx-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; margin: 0; }
.tx-label { display: block; font: 600 14.5px/1.35 var(--tx-sans); color: var(--tx-navy); }
.tx-opt { margin-inline-start: 6px; font-size: 13px; font-weight: 450; color: var(--tx-text-3); }
.tx-hint { margin: 0; font-size: 13.5px; line-height: 1.5; color: var(--tx-text-3); }
.tx-error { display: flex; align-items: flex-start; gap: 6px; margin: 0; font-size: 13.5px; line-height: 1.45; font-weight: 550; color: var(--tx-red); }
.tx-error[hidden] { display: none; }
.tx-error .icon { width: 15px; height: 15px; flex: none; margin-top: 2px; }
.site-body .tx-input { width: 100%; min-height: 50px; border-radius: var(--tx-radius); font-size: 16px; }
.site-body .tx-input::placeholder, .site-body .tx-textarea::placeholder { color: #9AA1AE; }
.site-body .tx-input.is-invalid, .site-body .tx-textarea.is-invalid, .site-body .tx-select.is-invalid { border-color: var(--tx-red); box-shadow: 0 0 0 1px var(--tx-red) inset; }
.site-body .tx-input.is-valid { border-color: #9CC9B1; }
.site-body .tx-textarea { width: 100%; min-height: 132px; padding: 12px 14px; border-radius: var(--tx-radius); font-size: 16px; line-height: 1.55; resize: vertical; }
.site-body .tx-select { width: 100%; min-height: 50px; border-radius: var(--tx-radius); font-size: 16px; }
.tx-counter { align-self: flex-end; margin-top: -2px; font-size: 12.5px; color: var(--tx-text-3); }
.tx-fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.tx-legend { display: block; width: 100%; margin: 0 0 18px; padding: 0 0 10px; border-bottom: 1px solid var(--tx-line); font: 600 13px/1.4 var(--tx-sans); color: var(--tx-text-3); }
.tx-check { display: flex; align-items: flex-start; gap: 11px; font-size: 15px; line-height: 1.5; color: var(--tx-text-2); cursor: pointer; }
.tx-check input { width: 18px; height: 18px; margin: 2px 0 0; flex: none; accent-color: var(--tx-navy); cursor: pointer; }

/* choice cards: radios that look like cards (contact topics, apply questions) */
.tx-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; border: 0; }
.tx-choices.is-stack { grid-template-columns: 1fr; }
.tx-choices.is-row { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); }
.tx-choice { position: relative; display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 12px 14px; border: 1px solid var(--tx-line-2); border-radius: var(--tx-radius-card); background: #fff; font-size: 15px; line-height: 1.35; color: var(--tx-text); cursor: pointer; transition: border-color .15s, box-shadow .15s, background-color .15s; }
.tx-choice:hover { border-color: rgba(11, 31, 58, .45); }
.tx-choice input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.tx-choice:has(input:checked) { border-color: var(--tx-navy); box-shadow: inset 0 0 0 1px var(--tx-navy); background: #FCFCFD; }
.tx-choice:has(input:focus-visible) { outline: 3px solid var(--tx-navy); outline-offset: 2px; }
.tx-choice-icon { display: grid; place-items: center; width: 34px; height: 34px; flex: none; border-radius: 50%; background: var(--tx-ivory); color: var(--tx-gold-text); }
.tx-choice-icon .icon { width: 17px; height: 17px; }
.tx-choice:has(input:checked) .tx-choice-icon { background: var(--tx-navy); color: #fff; }
.tx-choice-text { display: flex; flex-direction: column; min-width: 0; }
.tx-choice-text strong { font-weight: 600; color: var(--tx-navy); }
.tx-choice-text span { font-size: 13px; color: var(--tx-text-3); }
.tx-choices.is-row .tx-choice { justify-content: center; text-align: center; min-height: 46px; padding: 10px 12px; }
.tx-choices.has-error .tx-choice { border-color: rgba(180, 35, 24, .55); }

/* buttons with a pending state */
.tx-btn { position: relative; gap: 10px; }
.tx-btn .icon { width: 16px; height: 16px; }
.tx-spinner { display: none; width: 18px; height: 18px; border: 2px solid rgba(255, 255, 255, .35); border-top-color: #fff; border-radius: 50%; animation: tx-spin .7s linear infinite; }
.ivy-btn-secondary .tx-spinner { border-color: rgba(11, 31, 58, .2); border-top-color: var(--tx-navy); }
.tx-btn.is-loading { pointer-events: none; }
.tx-btn.is-loading .tx-spinner { display: inline-block; }
.tx-btn.is-loading .icon { display: none; }
.tx-btn[disabled]:not(.is-loading) { opacity: .5; cursor: not-allowed; }
@keyframes tx-spin { to { transform: rotate(360deg); } }

/* ------------------------------------------------------------------ the checkout */
.tx-co-body { background: #fff; }
.tx-co { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 100vh; }
.tx-co::before { content: ""; position: absolute; inset: 0 50% 0 0; background: var(--tx-ivory); border-inline-end: 1px solid var(--tx-line); }
.tx-co-left { position: relative; display: flex; flex-direction: column; }
.tx-co-left .tx-co-inner { width: 100%; max-width: 552px; margin-inline-start: auto; padding-inline: clamp(28px, 4.5vw, 72px); }
.tx-co-main .tx-co-inner { width: 100%; max-width: 552px; padding-inline: clamp(28px, 4.5vw, 72px); }
.tx-co-summary .tx-co-inner { padding-top: 36px; }
.tx-co-brand { display: flex; align-items: center; gap: 14px; height: 40px; }
.tx-co-back { display: grid; place-items: center; width: 36px; height: 36px; margin-inline-start: -8px; border-radius: 50%; color: var(--tx-text-2); transition: background-color .15s, color .15s; }
.tx-co-back:hover { background: rgba(11, 31, 58, .06); color: var(--tx-navy); }
.tx-co-back .icon { width: 18px; height: 18px; }
.tx-co-logo { display: inline-flex; color: var(--tx-navy); }
.tx-co-logo svg { height: 28px; width: auto; }
.tx-co-secure-sm { display: none; }
.tx-co-product { display: flex; gap: 18px; align-items: flex-start; margin-top: 40px; }
.tx-co-thumb { width: 112px; height: 84px; flex: none; object-fit: cover; border-radius: var(--tx-radius); border: 1px solid var(--tx-line); background: #fff; }
.tx-co-product-text { min-width: 0; }
.tx-co-title { margin: 8px 0 0; font-family: var(--tx-serif); font-weight: 500; font-size: clamp(32px, 2.6vw, 42px); line-height: 1.05; letter-spacing: -.01em; color: var(--tx-navy); text-wrap: balance; }
.tx-co-tag { margin: 10px 0 0; font-size: 15.5px; line-height: 1.55; color: var(--tx-text-2); }

.tx-plans { display: grid; gap: 10px; margin: 32px 0 0; padding: 0; border: 0; min-width: 0; }
.tx-plans-legend { padding: 0; margin: 0 0 12px; font: 600 14.5px/1.35 var(--tx-sans); color: var(--tx-navy); }
.tx-plan { position: relative; display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 14px; align-items: start; padding: 16px 18px; border: 1px solid var(--tx-line-2); border-radius: var(--tx-radius-card); background: #fff; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.tx-plan:hover { border-color: rgba(11, 31, 58, .45); }
.tx-plan.is-selected, .tx-plan:has(input:checked) { border-color: var(--tx-navy); box-shadow: inset 0 0 0 1px var(--tx-navy); }
.tx-plan:has(input:focus-visible) { outline: 3px solid var(--tx-navy); outline-offset: 2px; }
.tx-plan-input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.tx-plan-radio { width: 18px; height: 18px; margin-top: 2px; border: 1.5px solid var(--tx-line-2); border-radius: 50%; background: #fff; transition: border-color .15s, box-shadow .15s; }
.tx-plan:has(input:checked) .tx-plan-radio { border-color: var(--tx-navy); box-shadow: inset 0 0 0 4px #fff, inset 0 0 0 9px var(--tx-navy); }
.tx-plan-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.tx-plan-name { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 15.5px; font-weight: 650; line-height: 1.35; color: var(--tx-navy); }
.tx-flag { padding: 2px 8px; border-radius: 999px; background: var(--tx-gold-wash); border: 1px solid rgba(176, 141, 60, .35); font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--tx-gold-text); line-height: 1.5; }
.tx-plan-terms { font-size: 13.5px; line-height: 1.45; color: var(--tx-text-3); }
.tx-plan-note { font-size: 13px; font-weight: 600; color: var(--tx-gold-text); }
.tx-plan-price { display: flex; flex-direction: column; align-items: flex-end; text-align: end; }
.tx-plan-amount { font-family: var(--tx-serif); font-size: 25px; font-weight: 600; line-height: 1.05; color: var(--tx-navy); white-space: nowrap; }
.tx-plan-per { margin-top: 3px; font-size: 12px; color: var(--tx-text-3); }

.tx-co-ledger { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--tx-line-2); transition: opacity .15s; }
.tx-co-ledger.is-updating { opacity: .45; pointer-events: none; }
.tx-sched-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.tx-ledger-h { margin: 0; font: 600 14.5px/1.35 var(--tx-sans); color: var(--tx-navy); }
.tx-ledger-meta { font-size: 13px; color: var(--tx-text-3); }
.tx-sched { position: relative; list-style: none; margin: 12px 0 0; padding: 0; }
.tx-sched::before { content: ""; position: absolute; inset-inline-start: 4px; top: 18px; bottom: 18px; width: 1px; background: var(--tx-line-2); }
.tx-sched-row { position: relative; display: grid; grid-template-columns: 9px 72px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 7px 0; font-size: 14.5px; color: var(--tx-text-2); }
.tx-sched-dot { position: relative; z-index: 1; width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--tx-line-2); background: var(--tx-ivory); }
.tx-sched-row.is-today { color: var(--tx-navy); font-weight: 600; }
.tx-sched-row.is-today .tx-sched-dot { background: var(--tx-gold); border-color: var(--tx-gold); box-shadow: 0 0 0 3px rgba(176, 141, 60, .18); }
.tx-sched-when { white-space: nowrap; font-variant-numeric: tabular-nums; }
.tx-sched-what { min-width: 0; font-size: 13.5px; font-weight: 400; color: var(--tx-text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tx-sched-amt { text-align: end; white-space: nowrap; color: var(--tx-navy); font-variant-numeric: tabular-nums; }
.tx-was { margin-inline-end: 6px; font-weight: 400; color: var(--tx-text-3); text-decoration-thickness: 1px; }
.tx-sched-more { margin: 0; }
.tx-sched-more summary { display: inline-flex; align-items: center; gap: 6px; margin: 4px 0 0 23px; font-size: 13.5px; font-weight: 600; color: var(--tx-navy); cursor: pointer; list-style: none; }
.tx-sched-more summary::-webkit-details-marker { display: none; }
.tx-sched-more summary .icon { width: 14px; height: 14px; transition: transform .2s; }
.tx-sched-more[open] summary .icon { transform: rotate(180deg); }
.tx-sched-more .tx-more-open, .tx-sched-more[open] .tx-more-closed { display: none; }
.tx-sched-more[open] .tx-more-open { display: inline; }
.tx-sched-more[open] summary { margin-top: 8px; }
.tx-sched-rest { margin-top: 0; }
.tx-sched-rest::before { top: 0; }
.tx-lines { margin: 14px 0 0; }
.tx-line { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 7px 0; font-size: 15px; }
.tx-line dt { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; margin: 0; color: var(--tx-text-2); }
.tx-line dd { margin: 0; color: var(--tx-navy); white-space: nowrap; }
.tx-line-discount dt .icon { width: 15px; height: 15px; color: var(--tx-green); }
.tx-line-discount dt > span:first-of-type { padding: 1px 7px; border-radius: 3px; background: var(--tx-green-wash); font-size: 12.5px; font-weight: 650; letter-spacing: .04em; color: #0B5E3D; }
.tx-line-note { font-size: 13px; color: var(--tx-text-3); }
.tx-line-discount dd { color: var(--tx-green); font-weight: 600; }
.tx-code { margin-top: 12px; }
.tx-code-form { display: flex; flex-direction: column; gap: 7px; margin-top: 2px; }
.tx-code-form[hidden] { display: none; }
.tx-code-row { display: flex; gap: 8px; }
.site-body .tx-code-input { min-height: 46px; flex: 1; text-transform: uppercase; letter-spacing: .06em; font-size: 15px; }
.tx-code-apply { min-height: 46px; padding: 0 18px; font-size: 14.5px; background: #fff; }
.tx-code-applied { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 14px; color: var(--tx-text-2); }
.tx-code-applied > .icon { width: 17px; height: 17px; color: var(--tx-green); }
.tx-code-applied strong { color: var(--tx-navy); letter-spacing: .04em; }
.tx-code-applied .tx-linkbtn { margin-inline-start: auto; font-size: 13.5px; }
.tx-due { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--tx-line-2); }
.tx-due-label { font: 650 15.5px/1.3 var(--tx-sans); color: var(--tx-navy); }
.tx-due-amount { font-family: var(--tx-serif); font-size: clamp(32px, 2.6vw, 38px); font-weight: 600; line-height: 1; color: var(--tx-navy); }
.tx-ledger-note { margin: 12px 0 0; font-size: 13px; line-height: 1.55; color: var(--tx-text-3); }

.tx-co-extras .tx-co-inner { padding-top: 32px; padding-bottom: 56px; }
.tx-extras-h { margin: 0; font: 600 14.5px/1.35 var(--tx-sans); color: var(--tx-navy); }
.tx-included { list-style: none; display: grid; gap: 11px; margin: 14px 0 0; padding: 0; font-size: 14.5px; line-height: 1.5; color: var(--tx-text-2); }
.tx-included li { display: flex; gap: 11px; }
.tx-included .icon { width: 17px; height: 17px; flex: none; margin-top: 2px; color: var(--tx-gold-text); }
.tx-helpline { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin: 26px 0 0; font-size: 14px; color: var(--tx-text-3); }
.tx-helpline a { display: inline-flex; align-items: center; gap: 7px; color: var(--tx-navy); font-weight: 550; text-decoration: none; }
.tx-helpline a:hover { text-decoration: underline; text-decoration-color: rgba(176, 141, 60, .6); text-underline-offset: 3px; }
.tx-helpline .icon { width: 15px; height: 15px; color: var(--tx-gold-text); }
.tx-center .tx-helpline { justify-content: center; }

.tx-co-main { position: relative; }
.tx-co-form { padding-top: 40px; padding-bottom: 64px; display: flex; flex-direction: column; gap: 16px; }
.tx-co-secure { display: inline-flex; align-items: center; gap: 8px; height: 40px; margin: 0; font-size: 13.5px; font-weight: 600; color: var(--tx-text-2); }
.tx-co-secure .icon, .tx-co-secure-sm .icon { width: 15px; height: 15px; color: var(--tx-green); }
.tx-offer { margin: 8px 0 4px; padding: 2px 0 2px 18px; border-inline-start: 2px solid var(--tx-gold); }
.tx-offer-head { display: flex; align-items: flex-start; gap: 9px; margin: 0; font-size: 14.5px; font-weight: 600; color: var(--tx-navy); }
.tx-offer-head .icon { width: 17px; height: 17px; flex: none; margin-top: 2px; color: var(--tx-gold-text); }
.tx-offer-message { margin: 10px 0 0; font-family: var(--tx-serif); font-style: italic; font-size: 21px; line-height: 1.4; color: var(--tx-navy); white-space: pre-line; }
.tx-step { padding: 24px 0 4px; border-top: 1px solid var(--tx-line); }
.tx-co-secure + .tx-step, .tx-alert + .tx-step, .tx-offer + .tx-step { margin-top: 8px; }
.tx-step-head { display: flex; align-items: center; gap: 12px; min-height: 36px; }
.tx-step-num { position: relative; display: grid; place-items: center; width: 26px; height: 26px; flex: none; border-radius: 50%; border: 1px solid var(--tx-line-2); background: #fff; font-size: 13px; font-weight: 650; color: var(--tx-text-3); }
.tx-step-num .icon { display: none; width: 14px; height: 14px; stroke-width: 2.6; }
.tx-step.is-active .tx-step-num { background: var(--tx-navy); border-color: var(--tx-navy); color: #fff; }
.tx-step.is-done .tx-step-num { background: var(--tx-green); border-color: var(--tx-green); color: #fff; }
.tx-step.is-done .tx-step-num span { display: none; }
.tx-step.is-done .tx-step-num .icon { display: block; }
.tx-step-title { flex: 1; margin: 0; font-family: var(--tx-serif); font-size: 28px; font-weight: 600; line-height: 1.15; color: var(--tx-navy); }
.tx-step-title:focus { outline: none; }
.tx-step:not(.is-active):not(.is-done) .tx-step-title { color: #8B93A1; }
.tx-step-methods { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--tx-text-3); }
.tx-step-methods .icon { width: 16px; height: 16px; }
.tx-step.is-active .tx-step-methods { display: none; }
.tx-step-done { margin: 8px 0 0 38px; font-size: 15px; line-height: 1.55; color: var(--tx-text-2); overflow-wrap: anywhere; }
.tx-step-done[hidden] { display: none; }
.tx-step-done strong { color: var(--tx-navy); font-weight: 600; }
.tx-step-lede { margin: 10px 0 0; font-size: 16px; line-height: 1.6; color: var(--tx-text-2); }
.tx-step-edit { font-size: 14px; }
.tx-details { display: flex; flex-direction: column; gap: 20px; margin: 20px 0 20px; }
.tx-details[hidden] { display: none; }
.tx-pay { display: flex; flex-direction: column; gap: 18px; margin: 20px 0 24px; }
.tx-pay[hidden] { display: none; }
.tx-payment-element { position: relative; min-height: 180px; transition: opacity .2s; }
.tx-payment-element.is-ready { min-height: 0; }
.tx-co.is-paying .tx-payment-element, .tx-co.is-paying .tx-plans, .tx-co.is-paying .tx-code { opacity: .55; pointer-events: none; }
.tx-skeleton { display: flex; flex-direction: column; gap: 12px; }
.tx-skeleton[hidden] { display: none; }
.tx-skeleton span { display: block; height: 50px; border-radius: var(--tx-radius); background: linear-gradient(90deg, var(--tx-ivory-2) 0%, var(--tx-ivory) 50%, var(--tx-ivory-2) 100%); background-size: 200% 100%; animation: tx-shimmer 1.3s ease-in-out infinite; }
.tx-skeleton span.half { width: 55%; }
@keyframes tx-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
.tx-embedded { min-height: 420px; }
.tx-pay-btn { margin-top: 2px; }
.tx-authorize { margin: 12px 0 0; font-size: 13px; line-height: 1.6; color: var(--tx-text-3); text-wrap: pretty; }
.tx-secure-note { display: flex; gap: 10px; margin: 8px 0 0; padding-top: 20px; border-top: 1px solid var(--tx-line); font-size: 13px; line-height: 1.55; color: var(--tx-text-3); }
.tx-secure-note .icon { width: 17px; height: 17px; flex: none; color: var(--tx-green); }
.tx-closed { padding-top: 20px; border-top: 1px solid var(--tx-line); }

@media (min-width: 901px) and (max-height: 760px) { .tx-co-summary .tx-co-inner, .tx-co-form { padding-top: 24px; } .tx-co-product { margin-top: 28px; } }

@media (max-width: 900px) {
  .tx-co { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .tx-co::before { display: none; }
  .tx-co-left { display: contents; }
  .tx-co-summary { order: 1; background: var(--tx-ivory); border-bottom: 1px solid var(--tx-line); }
  .tx-co-main { order: 2; }
  .tx-co-extras { order: 3; background: var(--tx-ivory); border-top: 1px solid var(--tx-line); }
  .tx-co-left .tx-co-inner, .tx-co-main .tx-co-inner, .tx-co-summary .tx-co-inner, .tx-co-extras .tx-co-inner { max-width: 640px; margin-inline: auto; padding-inline: 20px; }
  .tx-co-summary .tx-co-inner { padding-top: 14px; padding-bottom: 26px; }
  .tx-co-brand { gap: 10px; }
  .tx-co-logo svg { height: 24px; }
  .tx-co-secure-sm { display: inline-flex; align-items: center; gap: 6px; margin-inline-start: auto; font-size: 12.5px; font-weight: 600; color: var(--tx-text-2); }
  .tx-co-secure { display: none; }
  .tx-co-product { margin-top: 22px; gap: 14px; }
  .tx-co-thumb { width: 72px; height: 54px; }
  .tx-co-title { font-size: 30px; }
  .tx-co-tag { font-size: 15px; }
  .tx-plans { margin-top: 24px; }
  .tx-co-form { padding-top: 8px; padding-bottom: 40px; }
  .tx-step { padding-top: 22px; }
  .tx-co-form > .tx-step:first-of-type, .tx-co-form > .tx-offer:first-child { border-top: 0; }
  .tx-step-title { font-size: 26px; }
  .tx-co-extras .tx-co-inner { padding-top: 26px; padding-bottom: 40px; }
}
@media (max-width: 480px) {
  .tx-grid { grid-template-columns: minmax(0, 1fr); }
  .tx-plan { grid-template-columns: 20px minmax(0, 1fr); padding: 14px 14px; }
  .tx-plan-price { grid-column: 2; flex-direction: row; align-items: baseline; gap: 6px; text-align: start; }
  .tx-plan-amount { font-size: 22px; }
  .tx-sched-row { grid-template-columns: 9px 58px minmax(0, 1fr) auto; gap: 10px; font-size: 14px; }
  .tx-step-methods { display: none; }
  .tx-step-done { margin-inline-start: 0; }
}

/* ------------------------------------------------------------------ task pages: one job each */
.tx-page { background: var(--tx-ivory); padding: clamp(28px, 6vw, 88px) var(--tx-gutter) clamp(56px, 8vw, 120px); min-height: calc(100vh - 160px); }
.tx-page.is-white { background: #fff; }
.tx-sheet { width: 100%; max-width: 640px; margin: 0 auto; padding: clamp(28px, 5vw, 56px); background: #fff; border: 1px solid var(--tx-line); border-top: 2px solid var(--tx-gold); border-radius: var(--tx-radius-card); box-shadow: 0 1px 2px rgba(11, 31, 58, .04), 0 24px 48px -32px rgba(11, 31, 58, .18); }
.tx-sheet-sm { max-width: 580px; }
.tx-sheet > :first-child { margin-top: 0; }
.tx-sheet-foot { margin: 32px 0 0; padding-top: 22px; border-top: 1px solid var(--tx-line); }
.tx-below { max-width: 640px; margin: 22px auto 0; text-align: center; }
.tx-below .tx-helpline { justify-content: center; margin-top: 0; }
.tx-back { display: inline-flex; align-items: center; gap: 8px; margin: 0 auto 18px; font-size: 14.5px; font-weight: 550; color: var(--tx-text-2); text-decoration: none; }
.tx-back:hover { color: var(--tx-navy); }
.tx-back .icon { width: 16px; height: 16px; }
.tx-backbar { max-width: 640px; margin: 0 auto; }

/* a course in one line */
.tx-course { display: flex; align-items: center; gap: 16px; margin-top: 26px; padding: 14px; border: 1px solid var(--tx-line); border-radius: var(--tx-radius-card); background: var(--tx-ivory); text-align: start; }
.tx-course-img { width: 84px; height: 63px; flex: none; object-fit: cover; border-radius: var(--tx-radius); background: #fff; border: 1px solid var(--tx-line); }
.tx-course-mono { display: grid; place-items: center; }
.tx-course-mono img { width: 26px; height: 26px; opacity: .85; }
.tx-course-body { min-width: 0; }
.tx-course-body .tx-overline { font-size: 11px; }
.tx-course-name { margin: 3px 0 0; font-family: var(--tx-serif); font-size: 22px; font-weight: 600; line-height: 1.15; color: var(--tx-navy); }
.tx-course-name a { color: inherit; text-decoration: none; }
.tx-course-name a:hover { text-decoration: underline; text-decoration-color: rgba(176, 141, 60, .6); text-underline-offset: 3px; }
.tx-course-facts { margin: 4px 0 0; font-size: 13.5px; line-height: 1.45; color: var(--tx-text-3); }

/* what happens next */
.tx-next { margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--tx-line); text-align: start; }
.tx-next-h { margin: 0 0 16px; font: 600 13px/1.4 var(--tx-sans); color: var(--tx-text-3); }
.tx-next-list { list-style: none; margin: 0; padding: 0; }
.tx-next-item { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 14px; padding-bottom: 20px; }
.tx-next-item:last-child { padding-bottom: 0; }
.tx-next-item:not(:last-child)::before { content: ""; position: absolute; inset-inline-start: 13.5px; top: 32px; bottom: 4px; width: 1px; background: var(--tx-line-2); }
.tx-next-dot { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--tx-line-2); background: #fff; font-size: 13px; font-weight: 650; color: var(--tx-text-3); }
.tx-next-dot .icon { width: 14px; height: 14px; stroke-width: 2.6; }
.tx-next-item.is-done .tx-next-dot { background: var(--tx-green); border-color: var(--tx-green); color: #fff; }
.tx-next-item.is-current .tx-next-dot { background: var(--tx-navy); border-color: var(--tx-navy); color: #fff; }
.tx-next-text { display: flex; flex-direction: column; gap: 2px; padding-top: 3px; min-width: 0; }
.tx-next-text strong { font-size: 15.5px; font-weight: 600; line-height: 1.4; color: var(--tx-navy); }
.tx-next-text span { font-size: 14.5px; line-height: 1.55; color: var(--tx-text-2); overflow-wrap: anywhere; }
.tx-next-item.is-next .tx-next-text strong { color: var(--tx-text); font-weight: 550; }

/* facts as label / value rows */
.tx-facts { margin: 26px 0 0; border-top: 1px solid var(--tx-line); text-align: start; }
.tx-facts > div { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--tx-line); font-size: 15px; }
.tx-facts dt { margin: 0; color: var(--tx-text-3); }
.tx-facts dd { margin: 0; color: var(--tx-navy); font-weight: 550; text-align: end; overflow-wrap: anywhere; }
.tx-mono { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: .92em; letter-spacing: .03em; }

/* apply: questions */
.tx-q-label { display: block; font: 600 15px/1.45 var(--tx-sans); color: var(--tx-navy); margin-bottom: 2px; }

/* ------------------------------------------------------------------ contact */
.tx-contact { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; max-width: 1200px; margin: 0 auto; }
.tx-contact-aside { padding-top: 8px; }
.tx-contact-aside .tx-title { font-size: clamp(40px, 4.4vw, 60px); }
.tx-ways { list-style: none; margin: 32px 0 0; padding: 0; border-top: 1px solid var(--tx-line-2); }
.tx-way { display: flex; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--tx-line-2); color: var(--tx-text); text-decoration: none; }
a.tx-way:hover .tx-way-value { text-decoration: underline; text-decoration-color: rgba(176, 141, 60, .6); text-underline-offset: 3px; }
.tx-way-icon { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 50%; background: #fff; border: 1px solid var(--tx-line-2); color: var(--tx-gold-text); }
.tx-way-icon .icon { width: 18px; height: 18px; }
.tx-way.is-primary .tx-way-icon { background: var(--tx-navy); border-color: var(--tx-navy); color: #fff; }
.tx-way-text { display: flex; flex-direction: column; min-width: 0; }
.tx-way-label { font-size: 13px; color: var(--tx-text-3); }
.tx-way-value { font-size: 16px; font-weight: 600; color: var(--tx-navy); overflow-wrap: anywhere; }
.tx-way-note { margin-inline-start: auto; font-size: 13px; color: var(--tx-green); font-weight: 550; white-space: nowrap; }
.tx-contact .tx-sheet { max-width: none; }
.tx-contact-note { margin: 22px 0 0; }
.tx-choices[data-topics] .tx-choice { min-height: 58px; }
@media (max-width: 960px) {
  .tx-contact { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .tx-contact-aside .tx-title { font-size: 40px; }
}
@media (max-width: 560px) {
  .tx-choices { grid-template-columns: minmax(0, 1fr); }
  .tx-choices.is-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tx-way-note { display: none; }
  .tx-page { padding-top: 20px; }
  .tx-sheet { padding: 24px 20px 28px; }
  .tx-title { font-size: 34px; }
  .tx-actions .ivy-btn { width: 100%; }
}

/* ------------------------------------------------------------------ certificates */
.tx-verify-form { display: flex; gap: 10px; margin-top: 28px; }
.site-body .tx-verify-input { flex: 1; min-height: 54px; font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: 18px; letter-spacing: .1em; text-transform: uppercase; }
.tx-verify-form .ivy-btn { min-height: 54px; }
.tx-cert { position: relative; max-width: 880px; margin: 0 auto; padding: 12px; background: #fff; border: 1px solid rgba(176, 141, 60, .55); box-shadow: 0 30px 70px -40px rgba(11, 31, 58, .35); }
.tx-cert-inner { padding: clamp(32px, 6vw, 72px) clamp(20px, 6vw, 72px); border: 1px solid rgba(176, 141, 60, .35); text-align: center; }
.tx-cert-status { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px 6px 10px; border-radius: 999px; font-size: 14px; font-weight: 650; }
.tx-cert-status .icon { width: 17px; height: 17px; }
.tx-cert-status.is-valid { background: var(--tx-green-wash); color: #0B5E3D; }
.tx-cert-status.is-revoked { background: var(--tx-red-wash); color: #8F1D13; }
.tx-cert-status.is-missing { background: var(--tx-ivory-2); color: var(--tx-text-2); }
.tx-cert-lede { margin: 16px auto 0; max-width: 34em; font-size: 16px; line-height: 1.6; color: var(--tx-text-2); }
.tx-cert-name { margin: 30px 0 0; padding-bottom: 14px; font-family: var(--tx-serif); font-style: italic; font-weight: 500; font-size: clamp(36px, 5vw, 60px); line-height: 1.08; color: var(--tx-navy); }
.tx-cert-rule { width: min(360px, 70%); height: 1px; margin: 0 auto; background: rgba(176, 141, 60, .55); }
.tx-cert-for { margin: 16px 0 0; font-size: 17px; color: var(--tx-text-2); }
.tx-cert-for strong { color: var(--tx-navy); font-weight: 600; }
.tx-cert-facts { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 48px; margin: 32px 0 0; }
.tx-cert-facts dt { font-size: 11px; font-weight: 650; letter-spacing: .14em; text-transform: uppercase; color: var(--tx-text-3); }
.tx-cert-facts dd { margin: 5px 0 0; font-size: 16px; font-weight: 600; color: var(--tx-navy); }
.tx-cert-issuer { margin: 30px 0 0; font-size: 13px; letter-spacing: .06em; color: var(--tx-gold-text); }
.tx-cert.is-revoked .tx-cert-name { color: var(--tx-text-3); text-decoration: line-through; text-decoration-thickness: 1px; }
.tx-cert-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 28px; max-width: 880px; margin: 28px auto 0; }

/* ------------------------------------------------------------------ ratings */
.tx-stars { display: inline-flex; gap: 6px; margin: 4px 0 0; }
.tx-star { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: #C9C2B2; text-decoration: none; transition: color .15s, transform .15s; }
.tx-star .icon { width: 28px; height: 28px; }
.tx-star.is-on { color: var(--tx-gold); }
.tx-star.is-on .icon { fill: currentColor; }
.tx-star:hover { transform: translateY(-1px); color: var(--tx-gold); }

/* ------------------------------------------------------------------ email preferences */
.tx-pref { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 26px; padding: 16px 18px; border: 1px solid var(--tx-line); border-radius: var(--tx-radius-card); background: var(--tx-ivory); text-align: start; }
.tx-pref-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tx-pref-text strong { font-size: 15.5px; color: var(--tx-navy); }
.tx-pref-text span { font-size: 13.5px; color: var(--tx-text-3); }
.tx-state { display: inline-flex; align-items: center; gap: 7px; flex: none; padding: 4px 11px; border-radius: 999px; font-size: 13px; font-weight: 600; }
.tx-state::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.tx-state.is-on { background: var(--tx-green-wash); color: #0B5E3D; }
.tx-state.is-off { background: var(--tx-ivory-2); color: var(--tx-text-2); }
.tx-state.is-blocked { background: var(--tx-red-wash); color: #8F1D13; }

@media print {
  .ivy-header, .ivy-footer, .tx-cert-actions, .tx-below { display: none !important; }
  .tx-page { background: #fff; padding: 0; }
  .tx-cert { box-shadow: none; }
}

/* small layout helpers */
.tx-stack { display: flex; flex-direction: column; gap: 24px; }
.tx-sheet > .tx-alert { margin-top: 24px; }
