/* Broadsheet identity, OKLCH tokens, light only. */
:root {
  --color-bg: oklch(96.5% 0.004 60);
  --color-surface: oklch(93.5% 0.005 60);
  --color-paper: oklch(99% 0.003 60);
  --color-text: oklch(23% 0.006 40);
  --color-muted: oklch(47% 0.008 40);
  --color-accent: oklch(58% 0.11 225);
  --color-accent-strong: oklch(46% 0.09 225);
  --color-accent-hover: oklch(38% 0.08 225);
  --color-accent-2: oklch(53% 0.21 0);
  --color-accent-2-tint: oklch(88% 0.06 0);
  --color-offer-bg: oklch(96% 0.05 90);
  --color-offer-line: oklch(72% 0.14 85);
  --color-wa: oklch(45% 0.11 155);
  --color-wa-hover: oklch(37% 0.09 155);
  --color-err: oklch(46% 0.18 0);
  --color-input-line: oklch(58% 0.008 40);
  --color-divider: oklch(23% 0.006 40 / 0.16);
  --font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px; --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px;
  --radius: 4px;
  --shadow-sm: 0 1px 2px oklch(23% 0.006 40 / 0.14);
  --section-y: var(--s-7);
  --bar-h: 76px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--s-4); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--color-bg); color: var(--color-text); font-family: var(--font-serif); font-size: 1.0625rem; line-height: 1.6; overflow-wrap: break-word; }
body.has-bar { padding-bottom: calc(var(--bar-h) + var(--s-4)); }
h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 600; margin: 0 0 var(--s-3); text-wrap: balance; }
h1 { font-size: 2.125rem; line-height: 1.1; letter-spacing: -0.015em; }
h2 { font-size: 1.625rem; line-height: 1.15; letter-spacing: -0.01em; }
h3 { font-size: 1.25rem; line-height: 1.25; }
p { margin: 0 0 var(--s-4); text-wrap: pretty; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--color-accent-strong); text-underline-offset: 0.15em; }
a:hover { color: var(--color-accent-hover); }
:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 2px; }
.wrap { max-width: 72rem; margin: 0 auto; padding-inline: var(--s-4); }
.nowrap { white-space: nowrap; }
.lede { font-size: 1.125rem; max-width: 38rem; }
.fine { font-size: 0.875rem; line-height: 1.5; color: var(--color-muted); max-width: 38rem; }
.hint { display: block; font-weight: 400; font-size: 0.9375rem; color: var(--color-muted); margin-top: 2px; }
.kicker { font-size: 0.8125rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-accent-2); font-weight: 700; margin-bottom: var(--s-2); }
.skip { position: absolute; left: -999px; top: 0; background: var(--color-text); color: var(--color-paper); padding: var(--s-2) var(--s-3); z-index: 100; }
.skip:focus { left: 0; }

/* header */
.site-head { border-bottom: 1px solid var(--color-divider); }
.head-row { display: flex; justify-content: space-between; align-items: center; min-height: 56px; }
.brand { font-weight: 700; font-size: 1.15rem; color: var(--color-text); text-decoration: none; }
.head-link { font-size: 0.9375rem; font-weight: 600; }
.brand, .head-link, .foot-links a { display: inline-flex; align-items: center; min-height: 44px; }

.banner { background: var(--color-text); color: var(--color-bg); padding: var(--s-3) var(--s-4); text-align: center; }
.banner p { margin: 0 0 var(--s-3); font-weight: 700; line-height: 1.5; }
.banner a { color: inherit; }
.banner-steps { max-width: 34rem; margin: 0 auto; padding-left: var(--s-5); text-align: left; line-height: 1.5; overflow-wrap: break-word; }
.banner-steps li + li { margin-top: var(--s-2); }

/* sections */
main > section { padding-block: var(--section-y); }
main > section + section { border-top: 1px solid var(--color-divider); }

/* buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: var(--s-3) var(--s-5); border: 0; border-radius: var(--radius); background: var(--color-accent-strong); color: var(--color-paper); font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; box-shadow: var(--shadow-sm); }
.btn:hover { background: var(--color-accent-hover); color: var(--color-paper); }
.btn:disabled { opacity: 0.6; cursor: progress; }
.btn-sm { min-height: 44px; padding-inline: var(--s-4); white-space: nowrap; }
.btn-wa { background: var(--color-wa); }
.btn-wa:hover { background: var(--color-wa-hover); }
.link-btn { background: none; border: 0; padding: var(--s-1) var(--s-2); font: inherit; font-size: 0.9375rem; color: var(--color-accent-strong); text-decoration: underline; cursor: pointer; min-height: 44px; min-width: 44px; white-space: nowrap; flex: none; }

/* forms */
.field { margin: 0 0 var(--s-4); border: 0; padding: 0; min-width: 0; }
label, legend { display: block; font-weight: 600; margin-bottom: var(--s-2); padding: 0; }
input[type="text"], input[type="email"], input[type="tel"], textarea { width: 100%; min-height: 48px; padding: var(--s-3); font: inherit; color: inherit; background: var(--color-paper); border: 1px solid var(--color-input-line); border-radius: var(--radius); }
textarea { min-height: 96px; resize: vertical; }
input[aria-invalid="true"] { border-color: var(--color-err); border-width: 2px; }
.choice { display: flex; gap: var(--s-3); align-items: flex-start; font-weight: 400; font-size: 0.9375rem; line-height: 1.45; min-height: 44px; padding-block: var(--s-2); cursor: pointer; }
.choice input { flex: none; width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--color-accent-strong); }
.err { color: var(--color-err); font-size: 0.9375rem; margin: var(--s-1) 0 0; font-weight: 600; }
.form-err { margin: var(--s-3) 0 0; }
.ok { color: var(--color-wa); font-size: 1rem; margin: var(--s-3) 0 0; font-weight: 600; }
.ok:focus { outline: none; }
.hp { position: absolute; left: -5000px; width: 1px; height: 1px; overflow: hidden; }
.test-note { margin: var(--s-3) 0 0; padding: var(--s-2) var(--s-3); background: var(--color-accent-2-tint); border-radius: var(--radius); font-size: 0.9375rem; }

/* hero */
.hero { padding-top: var(--s-7); }
.hero h1 { max-width: 16ch; }
.hero-facts { list-style: none; margin: 0 0 var(--s-5); padding: 0; display: grid; gap: var(--s-2); }
.hero-facts li { padding-left: var(--s-5); position: relative; }
.hero-facts li::before { content: "✓"; position: absolute; left: 0; color: var(--color-accent-strong); font-weight: 700; }
.hero-actions { display: flex; flex-direction: column; align-items: stretch; gap: var(--s-3); margin: 0; }
.hero-alt { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; font-weight: 600; }

/* shop */
.status { color: var(--color-muted); }
.includes { list-style: none; margin: var(--s-5) 0 0; padding: 0; display: grid; gap: var(--s-2); }
.includes li { display: flex; align-items: center; gap: var(--s-3); min-height: 44px; font-weight: 600; }
.includes svg { flex: none; color: var(--color-accent-strong); }
.group { margin: var(--s-7) 0 var(--s-4); padding-bottom: var(--s-2); border-bottom: 1px solid var(--color-divider); font-size: 0.875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-muted); }
.cards { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
/* mobile card: thumb left, text right, button full width below */
.card { position: relative; display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); grid-template-areas: "thumb title" "thumb meta" "btn btn"; column-gap: var(--s-3); row-gap: var(--s-2); align-content: start; padding: var(--s-3); background: var(--color-paper); border: 1px solid var(--color-divider); border-radius: var(--radius); }
.card.in-cart { border-color: var(--color-accent-strong); box-shadow: 0 0 0 1px var(--color-accent-strong) inset; }
.card .thumb { grid-area: thumb; width: 100%; aspect-ratio: 838 / 544; object-fit: cover; border-radius: 2px; background: var(--color-surface); }
.card h4 { grid-area: title; font-size: 1.0625rem; line-height: 1.3; margin: 0; }
.card .meta { grid-area: meta; display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-1) var(--s-3); margin: 0; color: var(--color-muted); font-size: 0.9375rem; }
.card .price { order: -1; font-weight: 700; font-size: 1.25rem; color: var(--color-text); white-space: nowrap; }
.card .price .was { font-weight: 400; font-size: 0.9375rem; color: var(--color-muted); }
.flag { position: absolute; top: var(--s-2); left: var(--s-2); z-index: 1; padding: 2px 6px; font-size: 0.625rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; line-height: 1.3; color: var(--color-paper); background: var(--color-accent-2); border-radius: 2px; }
.btn-add { grid-area: btn; width: 100%; min-height: 44px; margin-top: var(--s-1); background: var(--color-paper); color: var(--color-accent-strong); border: 2px solid var(--color-accent-strong); box-shadow: none; }
.btn-add:hover { background: var(--color-surface); color: var(--color-accent-hover); }
.btn-add[aria-pressed="true"] { background: var(--color-accent-strong); color: var(--color-paper); }
.offer-banner { margin: var(--s-7) 0 0; padding: var(--s-3) var(--s-4); font-weight: 600; background: var(--color-offer-bg); border: 1px solid var(--color-offer-line); border-radius: var(--radius); max-width: 48rem; }
.offer-banner + .group { margin-top: var(--s-4); }

/* basket */
.checkout { margin-top: var(--s-7); padding: var(--s-5) var(--s-4); background: var(--color-paper); border: 1px solid var(--color-divider); border-radius: var(--radius); max-width: 36rem; scroll-margin-top: var(--s-4); }
.checkout h3 { margin-bottom: var(--s-4); }
.cart-lines { list-style: none; margin: 0 0 var(--s-4); padding: 0; }
.cart-lines li { display: flex; justify-content: space-between; align-items: center; gap: var(--s-3); padding-block: var(--s-2); border-bottom: 1px solid var(--color-divider); }
.totals { margin: 0 0 var(--s-3); }
.totals div { display: flex; justify-content: space-between; padding-block: var(--s-1); }
.totals dt, .totals dd { margin: 0; }
.totals dd { white-space: nowrap; padding-left: var(--s-3); }
.totals div[hidden] { display: none; }
#t-disc-row, #t-code-row { color: var(--color-accent-2); font-weight: 600; }
.code-box { margin: 0 0 var(--s-4); }
.code-box label { margin-bottom: var(--s-1); }
.code-row { display: flex; gap: var(--s-2); align-items: stretch; }
.code-row input { flex: 1 1 auto; min-width: 0; text-transform: uppercase; }
.checkout .code-row .btn { width: auto; flex: none; min-height: 48px; }
.code-msg { margin: var(--s-2) 0 0; font-size: 0.9375rem; line-height: 1.45; color: var(--color-muted); }
.code-msg strong { color: var(--color-accent-2); }
.code-msg .link-btn { min-height: 0; min-width: 0; padding: 0 var(--s-1); }
.totals .grand { border-top: 1px solid var(--color-text); margin-top: var(--s-2); padding-top: var(--s-3); font-size: 1.25rem; font-weight: 700; }
.checkout form { margin-top: var(--s-5); }
.checkout .btn { width: 100%; }

/* sticky cart bar */
.cart-bar { position: fixed; inset: auto 0 0 0; z-index: 50; background: var(--color-paper); border-top: 1px solid var(--color-divider); box-shadow: 0 -4px 16px oklch(23% 0.006 40 / 0.12); padding-block: var(--s-3); padding-bottom: max(var(--s-3), env(safe-area-inset-bottom)); }
.cart-bar[hidden] { display: none; }
.cart-bar-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
.cart-bar-info { min-width: 0; }
.cart-bar p { margin: 0; }
.bar-msg { font-size: 1.25rem; font-weight: 700; color: var(--color-accent-2); line-height: 1.25; }
.bar-msg:empty { display: none; }
.bar-sum { font-size: 1.125rem; font-weight: 600; white-space: nowrap; }

/* free course side door */
.free-panel { display: grid; gap: var(--s-5); padding: var(--s-5) var(--s-4); background: var(--color-surface); border-radius: var(--radius); }
.free-copy > p:not(.kicker) { max-width: 38rem; }
.capture { max-width: 30rem; }
.capture .btn { width: 100%; }
.capture .fine { margin: var(--s-3) 0 0; }
.thanks { padding: var(--s-4); background: var(--color-paper); border: 1px solid var(--color-accent); border-radius: var(--radius); }
.thanks:focus { outline: none; }
.profile { margin: var(--s-4) 0; padding-top: var(--s-4); border-top: 1px solid var(--color-divider); }
.profile legend { font-size: 1rem; }
.profile .choice { min-height: 40px; padding-block: var(--s-1); }
.attended summary { cursor: pointer; font-weight: 600; min-height: 44px; display: flex; align-items: center; color: var(--color-accent-strong); }
.attended-list { display: grid; gap: 0; padding-bottom: var(--s-2); }
.attended-list .choice { font-size: 0.875rem; min-height: 36px; }
.profile-ok { color: var(--color-wa); font-weight: 600; }
.signup-dialog { position: fixed; inset: 0; margin: auto; width: min(32rem, calc(100vw - var(--s-5))); max-height: calc(100dvh - var(--s-5)); overflow-y: auto; padding: var(--s-5) var(--s-4) var(--s-4); border: 0; border-radius: var(--radius); background: var(--color-surface); color: inherit; box-shadow: 0 12px 40px oklch(23% 0.006 40 / 0.35); }
.signup-dialog::backdrop { background: oklch(23% 0.006 40 / 0.6); }
.signup-dialog h2 { margin-top: 0; padding-right: var(--s-7); }
.dialog-media { position: relative; width: min(100%, 15rem); aspect-ratio: 3 / 2; margin: 0 auto var(--s-4); border-radius: var(--radius); overflow: hidden; background: oklch(22% 0.08 265); box-shadow: var(--shadow-sm); }
.dialog-media.is-player { width: 100%; aspect-ratio: 16 / 9; }
.dialog-media iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.dialog-play { display: block; position: relative; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: pointer; }
.dialog-play[hidden] { display: none; }
.signup-dialog .dialog-thumb { display: block; width: 100%; height: 100%; object-fit: cover; }
.play-icon { position: absolute; top: 50%; left: 50%; width: 3.5rem; height: 3.5rem; transform: translate(-50%, -50%); transition: transform 0.15s ease; }
.dialog-play:hover .play-icon { transform: translate(-50%, -50%) scale(1.1); }
.dialog-play:focus-visible { outline: 3px solid var(--color-accent-strong); outline-offset: -3px; }
.dialog-close { position: absolute; z-index: 1; top: var(--s-3); right: var(--s-3); width: 44px; height: 44px; border: 0; border-radius: var(--radius); background: var(--color-paper); box-shadow: var(--shadow-sm); font-size: 1.75rem; line-height: 1; color: inherit; cursor: pointer; }
.dialog-close:hover { background: var(--color-surface); }
.video-frame { position: relative; aspect-ratio: 3 / 2; background: oklch(22% 0.08 265); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); }
.video-frame img { width: 100%; height: 100%; object-fit: cover; }
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-frame.is-player { aspect-ratio: 16 / 9; }
.video-frame.is-pending { aspect-ratio: auto; }
.video-frame.is-pending img { height: auto; aspect-ratio: 3 / 2; }
.video-pending { margin: 0; padding: var(--s-3) var(--s-4); background: oklch(22% 0.08 265); color: var(--color-paper); font-size: 0.9375rem; }

/* tools */
.tool-grid { display: grid; gap: var(--s-5); margin-top: var(--s-5); }
.tool-card { display: flex; flex-direction: column; color: inherit; text-decoration: none; background: var(--color-paper); border: 1px solid var(--color-divider); border-radius: var(--radius); overflow: hidden; }
.tool-card:hover { box-shadow: var(--shadow-sm); border-color: var(--color-text); color: inherit; }
.tool-art { position: relative; overflow: hidden; border-bottom: 1px solid var(--color-divider); }
.tool-art > img { display: block; width: 100%; aspect-ratio: 8 / 5; object-fit: cover; }
.tool-body { padding: var(--s-5) var(--s-4); display: flex; flex-direction: column; flex: 1; }
.tool-body h3 { font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-muted); margin-bottom: var(--s-2); }
.tool-line { font-weight: 600; font-size: 1.1875rem; line-height: 1.3; margin-bottom: var(--s-3); }
.tool-cta { margin-top: auto; padding-top: var(--s-2); font-weight: 700; color: var(--color-accent-strong); text-decoration: underline; text-underline-offset: 0.15em; }

/* contact */
.contact .field, .contact .lede { max-width: 38rem; }
.contact .btn-wa { width: 100%; }

/* footer */
.site-foot { border-top: 1px solid var(--color-divider); padding-block: var(--s-6); }
.foot-links { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-5); margin-bottom: var(--s-3); }

/* tablet+ */
@media (min-width: 48rem) {
  :root { --section-y: var(--s-9); }
  .wrap { padding-inline: var(--s-6); }
  h1 { font-size: 3.25rem; }
  h2 { font-size: 2.25rem; }
  h3 { font-size: 1.375rem; }
  .hero { padding-top: var(--s-8); padding-bottom: var(--s-8); }
  .hero-facts { grid-auto-flow: column; justify-content: start; gap: var(--s-5); }
  .includes { grid-auto-flow: column; justify-content: start; gap: var(--s-7); }
  .hero-actions { flex-direction: row; align-items: center; gap: var(--s-5); }
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-5); }
  /* desktop card: full-bleed thumb on top */
  .card { grid-template-columns: minmax(0, 1fr); grid-template-areas: "thumb" "title" "meta" "btn"; grid-template-rows: auto 1fr auto auto; padding: 0 0 var(--s-4); row-gap: var(--s-3); overflow: hidden; }
  .card .thumb { border-radius: 0; }
  .card h4, .card .meta, .btn-add { margin-inline: var(--s-4); width: auto; }
  .card h4 { font-size: 1.125rem; margin-top: var(--s-1); }
  .flag { top: var(--s-3); left: var(--s-3); padding-inline: var(--s-2); font-size: 0.6875rem; letter-spacing: 0.08em; }
  .free-panel { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s-7); align-items: center; padding: var(--s-7); }
  .tool-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact .btn-wa { width: auto; min-width: 18rem; }
  .checkout { padding: var(--s-6); }
}
@media (min-width: 64rem) {
  .cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- Live thumbnails: the moving parts of the Teleprompter and Coach Sites heroes ----------
   A 1280x800 stage sits on top of each screenshot and is scaled to the card by app.js (--s).
   Hidden until JS marks the card data-live (so reduced-motion visitors and no-JS see the plain screenshot). */
.live-stage { position: absolute; left: 0; top: 0; width: 1280px; height: 800px; transform-origin: 0 0; transform: scale(var(--s, 1)); visibility: hidden; pointer-events: none; }
.tool-art[data-live] .live-stage { visibility: visible; }
.tool-art[data-paused] .live-stage * { animation-play-state: paused !important; }

/* Teleprompter: "Look at your audience, not your notes." lights up word by word (from teleprompter.chatgenius24x7.com) */
@font-face { font-family: "Bricolage TP"; src: url(/fonts/bricolage-tp.woff2) format("woff2"); font-weight: 700; font-display: swap; }
.live-tp { --hl: #fdd22a; --hl-ink: #1c1309; --tx: #f3efe6; --ease-out: cubic-bezier(.25, 1, .5, 1); --ease-expo: cubic-bezier(.16, 1, .3, 1); }
@supports (color: lab(50% 0 0)) { .live-tp { --hl: lab(86.6585% 2.60085 78.3921); --hl-ink: lab(7.24693% 2.75926 8.53851); --tx: lab(94.261% -.00292063 4.59521); } }
.live-tp .rl { position: absolute; left: 40px; top: 205px; width: 560px; height: 305px; padding: 0 0 0 18px; background: rgb(18, 15, 9); font-family: "Bricolage TP", "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif; font-size: 100px; font-weight: 700; line-height: 1.02; letter-spacing: -.02em; color: var(--tx); }
.live-tp .rl-line { display: block; white-space: nowrap; }
.live-tp .rl-w { border-radius: 6px; -webkit-box-decoration-break: clone; box-decoration-break: clone; margin-inline: -.07em; padding-inline: .07em; }
.live-tp .rl-hl { color: var(--hl-ink); border-radius: 6px; -webkit-box-decoration-break: clone; box-decoration-break: clone; background-image: linear-gradient(90deg, var(--hl) 50%, transparent 50%); background-position: 0 0; background-repeat: no-repeat; background-size: 200% 100%; margin-inline: -.02em; padding: 0 .14em; }
@media (prefers-reduced-motion: no-preference) {
  .tool-art[data-live] .live-tp .rl { --rl-start: .9s; --rl-step: .26s; }
  .tool-art[data-live] .live-tp .rl[data-play=idle] .rl-w { opacity: .35; }
  .tool-art[data-live] .live-tp .rl[data-play=idle] .rl-hl { color: var(--tx); background-position: 100% 0; }
  .tool-art[data-live] .live-tp .rl[data-play=run] .rl-w { animation: tp-rl-word .4s var(--ease-out) calc(var(--i) * 60ms) both, tp-rl-lit var(--rl-step) var(--ease-out) calc(var(--rl-start) + var(--i) * var(--rl-step)) both; }
  .tool-art[data-live] .live-tp .rl[data-play=run] .rl-hl { animation: tp-rl-sweep .52s var(--ease-expo) calc(var(--rl-start) + 7 * var(--rl-step)) both, tp-rl-ink .52s var(--ease-expo) calc(var(--rl-start) + 7 * var(--rl-step)) both; }
}
@keyframes tp-rl-lit { 12%, 88% { background-color: var(--hl); color: var(--hl-ink); } }
@keyframes tp-rl-word { 0% { opacity: .35; } to { opacity: 1; } }
@keyframes tp-rl-sweep { 0% { background-position: 100% 0; } to { background-position: 0 0; } }
@keyframes tp-rl-ink { 0% { color: var(--tx); } to { color: var(--hl-ink); } }

/* Coach & Trainer Sites: the phone with the revolving icons (from coachsites.chatgenius24x7.com) */
.live-cs { --bg: #0B0B0C; --s1: #17171A; --s2: #202024; --line: #2C2C31; --text-2: #BDBAB2; --lime: #C8F060; --lime-line: rgba(200, 240, 96, .5); --orchid: #F0A8D4; --glow-c: rgba(200, 240, 96, .16);
  --screen: #F4F1EA; --screen-2: #E8E3D7; --screen-ink: #1B1A17; --screen-ink-2: #5A564E; --screen-bubble: #E6F5BF;
  --font-display: Georgia, "Times New Roman", serif; --font-body: "Helvetica Neue", Arial, sans-serif; --ease-out: cubic-bezier(.2, .75, .2, 1); }
.live-cs .hv { position: absolute; left: 640px; top: 120px; width: 570px; height: 600px; background: rgb(12, 12, 12); display: flex; justify-content: center; align-items: center; --orb: 460px; --orb-icon: 97px; --tilt: -16deg; --squash: .5; font-family: var(--font-body); }
.live-cs .glow { position: absolute; left: 50%; top: 50%; width: 440px; height: 440px; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, var(--glow-c), transparent 62%); }
.live-cs .sticker { position: absolute; z-index: 6; background: var(--s1); border: 1px solid var(--line); border-radius: 12px; padding: 8px 12px; font-size: 13.4px; line-height: 1.25; color: var(--text-2); box-shadow: 0 14px 30px rgba(0, 0, 0, .45); max-width: 140px; }
.live-cs .sticker b { display: block; color: var(--lime); font-size: 15.2px; font-variant-numeric: tabular-nums; }
.live-cs .sticker-a { left: 40px; top: 104px; }
.live-cs .sticker-b { left: 425px; top: 425px; }
.live-cs .orbit-rings, .live-cs .orbit-icons { position: absolute; left: 50%; top: 50%; width: var(--orb); height: var(--orb); margin: calc(var(--orb) / -2) 0 0 calc(var(--orb) / -2); pointer-events: none; rotate: var(--tilt); scale: 1 var(--squash); }
.live-cs .orbit-rings { z-index: 0; }
.live-cs .orbit-rings-front { z-index: 2; clip-path: inset(50% 0 0 0); }
.live-cs .orbit-spin { position: absolute; inset: 0; animation: cs-orbitSpin 20s linear infinite; }
.live-cs .orbit-icons-back { z-index: 0; clip-path: inset(-300px -300px 50% -300px); }
.live-cs .orbit-icons-front { z-index: 5; clip-path: inset(50% -300px -300px -300px); }
.live-cs .ring { position: absolute; border-radius: 50%; border: 2px dotted rgba(200, 240, 96, .38); }
.live-cs .ring-outer { inset: 0; animation: cs-orbitSpin 20s linear infinite; }
.live-cs .ring-inner { inset: 14%; border-color: rgba(200, 240, 96, .2); animation: cs-orbitSpin 27.5s linear infinite reverse; }
.live-cs .ring-inner::before { content: ""; position: absolute; left: 50%; top: 0; width: 9px; height: 9px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--orchid); opacity: .8; }
.live-cs .orbit-slot { position: absolute; inset: 0; transform: rotate(var(--a)); }
.live-cs .orbit-item { position: absolute; left: 50%; top: 0; width: var(--orb-icon); height: var(--orb-icon); margin: calc(var(--orb-icon) / -2) 0 0 calc(var(--orb-icon) / -2); animation: cs-orbitUpright 20s linear infinite; }
.live-cs .orbit-badge { display: block; width: 100%; height: 100%; border-radius: 50%; overflow: hidden; background: #E9F6C8; border: 3px solid var(--bg); box-shadow: 0 0 0 1.5px var(--lime-line), 0 12px 28px rgba(0, 0, 0, .5); animation: cs-orbitBob 3.4s ease-in-out infinite, cs-orbitBreathe 2.4s ease-in-out infinite; }
.live-cs .orbit-slot:nth-child(2) .orbit-badge { animation-delay: -1.1s; }
.live-cs .orbit-slot:nth-child(3) .orbit-badge { animation-delay: -2.2s; }
.live-cs .orbit-badge img { display: block; width: 138%; height: 138%; margin: -19% 0 0 -19%; max-width: none; }
.live-cs .orbit-slot:nth-child(2) .orbit-badge img { width: 172%; height: 172%; margin: -36% 0 0 -36%; }
.live-cs .orbit-tag { position: absolute; left: 50%; top: calc(100% + 10px); transform: translateX(-50%); padding: 2.4px 12px; border-radius: 999px; background: var(--lime); color: #0B0B0C; font: 700 15.2px/1.3 var(--font-body); letter-spacing: .04em; white-space: nowrap; }
.live-cs .phone { --phone-w: 230px; width: var(--phone-w); aspect-ratio: 9 / 18.6; margin: 0; padding: 8px; border: 1.5px solid #3A3A40; border-radius: 30px; background: #050506; box-shadow: 0 0 0 1px #000, 0 30px 70px -20px rgba(0, 0, 0, .8), 0 0 60px -10px rgba(200, 240, 96, .12); flex: none; text-align: left; position: relative; z-index: 1; rotate: -3deg; animation: cs-phoneBounce 4.2s var(--ease-out) 1.2s infinite; }
.live-cs .ph-screen { position: relative; height: 100%; border-radius: 22px; background: var(--screen); overflow: hidden; padding: 12px 12px 18px; display: flex; flex-direction: column; gap: 10px; font-size: 9.9px; line-height: 1.3; color: var(--screen-ink); }
.live-cs .ph-bar { display: flex; align-items: center; justify-content: space-between; font-family: var(--font-display); font-size: 11.2px; font-weight: 600; }
.live-cs .ph-menu { display: inline-flex; flex-direction: column; gap: 3px; }
.live-cs .ph-menu i { width: 14px; height: 1.5px; background: var(--screen-ink); display: block; }
.live-cs .ph-hero { display: grid; gap: 7px; padding-top: 2px; }
.live-cs .ph-avatar { width: 42px; height: 42px; border-radius: 14px 14px 14px 4px; background: var(--screen-ink); color: var(--lime); display: grid; place-items: center; font-family: var(--font-display); font-weight: 600; font-size: 13.6px; }
.live-cs .ph-head { font-family: var(--font-display); font-weight: 500; font-size: 16px; line-height: 1.06; letter-spacing: -.02em; }
.live-cs .ph-btn { display: inline-block; justify-self: start; padding: 5px 10px; border-radius: 999px; background: var(--screen-ink); color: var(--lime); font-weight: 700; font-size: 9.6px; }
.live-cs .ph-bubble { margin-top: auto; display: grid; gap: 5px; }
.live-cs .ph-q, .live-cs .ph-a { display: block; padding: 6px 8px; border-radius: 11px; max-width: 88%; }
.live-cs .ph-q { background: var(--screen-2); justify-self: end; border-bottom-right-radius: 3px; }
.live-cs .ph-a { background: var(--screen-bubble); color: var(--screen-ink); border-bottom-left-radius: 3px; }
.live-cs .ph-week { display: grid; grid-template-columns: repeat(5, 1fr); gap: 3px; padding-top: 6px; border-top: 1px dashed #CFC8B8; font-size: 8.8px; text-align: center; color: var(--screen-ink-2); }
.live-cs .ph-week > span { padding: 5px 2px; border-radius: 7px; display: grid; gap: 1px; align-content: center; min-height: 34px; }
.live-cs .ph-week .is-booked { background: var(--lime); color: var(--screen-ink); position: relative; font-weight: 700; }
.live-cs .ph-week .is-booked em { font-style: normal; }
.live-cs .ph-week .is-booked b { font-size: 9.9px; }
.live-cs .ph-week .stamp { position: absolute; left: 50%; bottom: -8px; transform: translateX(-50%) rotate(-6deg); background: var(--screen-ink); color: var(--lime); font-style: normal; font-size: 8px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 2px 6px; border-radius: 4px; white-space: nowrap; }
@keyframes cs-orbitSpin { to { transform: rotate(360deg); } }
@keyframes cs-orbitUpright { from { transform: rotate(calc(var(--a) * -1)) scaleY(calc(1 / var(--squash))) rotate(calc(var(--tilt) * -1)); } to { transform: rotate(calc(var(--a) * -1 - 360deg)) scaleY(calc(1 / var(--squash))) rotate(calc(var(--tilt) * -1)); } }
@keyframes cs-orbitBreathe { 0%, 100% { scale: 1; } 50% { scale: 1.14; } }
@keyframes cs-orbitBob { 0%, 100% { translate: 0 0; } 50% { translate: 0 -6px; } }
@keyframes cs-phoneBounce { 0%, 100% { translate: 0; } 10% { translate: 0 -16px; } 20% { translate: 0; } 28% { translate: 0 -7px; } 36% { translate: 0; } }

/* contact: Jeff's photo as a big round icon before the heading */
.ask-head { display: flex; align-items: center; gap: var(--s-4); margin: var(--s-6) 0 var(--s-4); }
.ask-head h2 { margin-bottom: var(--s-2); }
.ask-head .lede { margin: 0; }
.ask-photo { flex: none; width: 96px; height: 96px; border-radius: 50%; object-fit: cover; border: 3px solid var(--color-paper); box-shadow: 0 0 0 2px var(--color-accent-strong), var(--shadow-sm); background: var(--color-surface); }
@media (min-width: 48rem) {
  .ask-head { gap: var(--s-6); }
  .ask-photo { width: 160px; height: 160px; }
}

/* ---------- Hero globe: Earth, laptops tuning in, four orbiting flags (transform/opacity only) ---------- */
.hero-globe { display: grid; justify-items: center; gap: var(--s-4); margin-top: var(--s-6); }
.globe-stage { position: relative; width: 100%; max-width: 340px; aspect-ratio: 1; overflow: clip; overflow-clip-margin: 14px; }
.globe-svg { position: relative; z-index: 2; display: block; width: 100%; height: 100%; overflow: visible; }
.globe-spin { animation: globe-spin 24s linear infinite; }
.globe-pulse { transform-origin: 170px 170px; animation: globe-pulse 4s ease-out infinite; }
.globe-dust { animation: globe-twinkle 5s ease-in-out infinite alternate; }
.globe-lap { transform: translate(var(--x), var(--y)) scale(.85); }
.globe-screen { animation: globe-flicker 2.8s ease-in-out infinite; animation-delay: var(--d); }
.globe-arc { animation: globe-ping 2.1s ease-out infinite; animation-delay: var(--d); }
.globe-x, .globe-y { position: absolute; inset: 0; pointer-events: none; }
/* One lap = 16s on a true ellipse (sine easing on both axes), tilted -11deg. x = wide swing, y = shallow swing a quarter-lap later,
   scale = same swing as y, so the flag is biggest at the bottom/front of the ellipse and smallest at the top/behind the Earth.
   --tilt rotates the whole orbit; .globe-z turns the flag back upright. */
.globe-x { --tilt: -11deg; rotate: var(--tilt); animation: globe-ox 8s cubic-bezier(.37, 0, .63, 1) infinite alternate, globe-depth 16s linear infinite; animation-delay: calc(var(--d) - 4s), var(--d); }
.globe-y { animation: globe-oy 8s cubic-bezier(.37, 0, .63, 1) infinite alternate; animation-delay: var(--d); }
.globe-z { position: absolute; left: 50%; top: 50%; width: 15%; margin: -5% 0 0 -7.5%; rotate: 11deg; animation: globe-scale 8s cubic-bezier(.37, 0, .63, 1) infinite alternate; animation-delay: var(--d); }
.globe-flag { position: relative; display: block; }
.globe-flag svg { display: block; width: 100%; height: auto; border-radius: 2px; box-shadow: 0 0 0 1px oklch(23% 0.006 40 / .35), 0 3px 6px oklch(23% 0.006 40 / .3); }
.globe-flag::after { content: ""; position: absolute; inset: -4px; border: 2px solid var(--c); border-radius: 6px; opacity: 0; animation: globe-ring 2s ease-out infinite; }
.globe-cta { width: 100%; max-width: 20rem; text-align: center; }
@keyframes globe-spin { to { transform: translateX(-220px); } }
@keyframes globe-pulse { from { transform: scale(.92); opacity: .6; } to { transform: scale(1.22); opacity: 0; } }
@keyframes globe-twinkle { to { opacity: .25; } }
@keyframes globe-flicker { 50% { opacity: .65; } }
@keyframes globe-ping { 0% { opacity: 0; } 30% { opacity: 1; } 100% { opacity: 0; } }
@keyframes globe-ring { from { transform: scale(.9); opacity: .9; } to { transform: scale(1.6); opacity: 0; } }
@keyframes globe-ox { from { transform: translateX(-44%); } to { transform: translateX(44%); } }
@keyframes globe-oy { from { transform: translateY(-11%); } to { transform: translateY(11%); } }
/* y > 0 (front, lower arc) for the middle half of the 16s lap (4s to 12s): flags cross in front of the Earth, then behind it */
@keyframes globe-depth { 0%, 24.99% { z-index: 1; } 25%, 74.99% { z-index: 3; } 75%, 100% { z-index: 1; } }
@keyframes globe-scale { from { transform: scale(.5); } to { transform: scale(1.5); } }
@media (min-width: 48rem) {
  .hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: var(--s-6); align-items: center; }
  .hero-globe { margin-top: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-globe *, .hero-globe *::after { animation: none !important; }
  .globe-stage > .globe-x:nth-of-type(1) { transform: translate(-40%, 6%); z-index: 3; }
  .globe-stage > .globe-x:nth-of-type(2) { transform: translate(38%, 7%); z-index: 3; }
  .globe-stage > .globe-x:nth-of-type(3) { transform: translate(-24%, -33%); z-index: 3; }
  .globe-stage > .globe-x:nth-of-type(4) { transform: translate(26%, -34%); z-index: 3; }
}
.globe-paused, .globe-paused * { animation-play-state: paused !important; }

/* phones: the animated Earth (and its button) comes first, above the headline */
@media (max-width: 47.99rem) {
  .hero { display: flex; flex-direction: column; padding-top: var(--s-5); }
  .hero-globe { order: -1; margin: 0 0 var(--s-6); }
}

/* contact: Send button, then a divider bar above Jeff's intro */
.ask-send-row { margin: var(--s-4) 0 0; }
.ask-send { width: 100%; max-width: 20rem; }
.section-bar { border: 0; border-top: 1px solid var(--color-divider); margin: var(--s-6) 0 0; }

/* Sign-up pop-up on phones: name, email, tick box and button all show without scrolling (375 x 667). */
@media (max-width: 30rem) {
  .signup-dialog { padding: var(--s-4) var(--s-4) var(--s-3); }
  .signup-dialog .dialog-media { width: 7rem; margin-bottom: var(--s-2); }
  .signup-dialog .kicker { margin-bottom: 0; }
  .signup-dialog h2 { font-size: 1.375rem; margin-bottom: var(--s-1); }
  .signup-dialog > p { margin-bottom: var(--s-2); font-size: 1rem; line-height: 1.4; }
  .signup-dialog .field { margin-bottom: var(--s-2); }
  .signup-dialog label { margin-bottom: var(--s-1); }
  .signup-dialog .choice { min-height: 0; padding-block: var(--s-1); font-size: 0.875rem; }
  .signup-dialog .capture .btn { padding-inline: var(--s-2); font-size: 0.96875rem; }
  .signup-dialog .capture .fine { margin-top: var(--s-2); }
}

/* Cookie notice + settings panel */
.cookie-bar { position: fixed; inset: auto 0 0 0; z-index: 50; display: flex; flex-direction: column; gap: var(--s-3); max-height: 55vh; max-height: 55dvh; padding: var(--s-3) 16px; background: var(--color-paper); border-top: 1px solid var(--color-divider); box-shadow: 0 -4px 16px oklch(23% 0.006 40 / 0.12); }
.cookie-bar[hidden] { display: none; }
.cookie-text { margin: 0; font-size: 0.875rem; line-height: 1.45; overflow-y: auto; min-height: 0; max-width: 60rem; }
.cookie-actions { display: flex; flex-wrap: wrap; gap: var(--s-2); flex: none; }
.cookie-actions .btn { min-height: 44px; }
.cookie-bar .cookie-actions { order: -1; } /* buttons above the text (owner request); DOM keeps text first for screen readers */
@media (min-width: 48rem) { .cookie-bar { align-items: center; padding-inline: var(--s-6); } .cookie-text { font-size: 0.9375rem; } }
.cookie-dialog { width: min(32rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); overflow-y: auto; padding: var(--s-5); border: 1px solid var(--color-divider); border-radius: var(--radius); background: var(--color-paper); color: var(--color-text); }
.cookie-dialog::backdrop { background: oklch(23% 0.006 40 / 0.55); }
.cookie-dialog h2 { font-size: 1.375rem; }
.cookie-row { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--s-4); padding-block: var(--s-3); border-top: 1px solid var(--color-divider); }
.cookie-row p { margin: var(--s-1) 0 0; font-size: 0.875rem; color: var(--color-muted); }
.cookie-row input[type="checkbox"] { width: 24px; height: 24px; flex: none; margin: 2px 0 0; accent-color: var(--color-accent-strong); }
.cookie-dialog .cookie-actions { margin: var(--s-4) 0; }
.btn-ghost { background: transparent; color: var(--color-text); border: 1px solid var(--color-divider); }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: var(--color-accent-strong); text-decoration: underline; cursor: pointer; }

/* FAQ */
.faq h3 { font-size: 1.125rem; margin: var(--s-5) 0 var(--s-2); }
.faq p { max-width: 38rem; margin: 0; }

/* SiteRAG chat bubble (injected by the embed script): sit above the cart bar and cookie bar */
body > div[style*="2147483001"] { bottom: calc(var(--chat-lift, 0px) + 16px) !important; right: 16px !important; }
body > iframe[title="Chat"] { bottom: calc(var(--chat-lift, 0px) + 92px) !important; right: 16px !important; max-height: calc(100dvh - var(--chat-lift, 0px) - 108px) !important; }
/* Phones: the cookie banner is tall, so keep the bubble away until the visitor answers it (it would cover page buttons). */
@media (max-width: 600px) { html.cookie-open body > div[style*="2147483001"] { display: none !important; } }
