/* Shared navigation dimensions and touch controls. */
:root { --wt-top-height:64px; --wt-bottom-height:0px; }
html { scroll-padding-top:calc(var(--wt-top-height) + 64px); }
/* GRO-07 (#93): anything scrolled into view lands above the bottom tab bar and the consent banner while it is up. */
html.wt-shell-scroll, html:has(body.wt-shell) { scroll-padding-bottom:calc(var(--wt-bottom-height) + var(--wt-consent-height, 0px)) !important; }
body.wt-shell { padding-top:0 !important; padding-bottom:var(--wt-bottom-height) !important; }
/* GRO-07 desktop (#94): the consent bar's 56 px slot above the page, reserved by global-nav.js before first paint while the
   version 2 banner is owed, filled by cookie-consent.js at idle, released when the visitor answers. Phones keep the bottom form. */
@media (min-width:601px) { html.wt-consent-pending body.wt-shell { padding-top:var(--wt-consent-slot, 56px) !important; } }
/* #97: phones get the same slot (two rows, about 114 px at 390) so no option card or Next row can sit under the bar. */
@media (max-width:600px) { html.wt-consent-pending body.wt-shell { padding-top:var(--wt-consent-slot, 114px) !important; } }
/* The nav mounts by script into #nav-placeholder (top bar, then the parent bar on every page but Home). Reserve that
   flow height before any script runs so nothing below it moves after first paint (CLS, deploy-90 rehearsal 2026-09-15). */
body.wt-shell #nav-placeholder { min-height:calc(var(--wt-top-height) + var(--wt-parent-height)); }
body.wt-shell.wt-shell-home #nav-placeholder { min-height:var(--wt-top-height); }
/* --bg-0 and --text switch with data-theme in styles.css; the old --bg-primary/--text-primary names were defined nowhere,
   so the light theme painted dark logo text and menu controls on a header that stayed dark (NEW-DES-3, 2026-09-16). */
.wt-shell .gnav { position:sticky; top:0; height:var(--wt-top-height); background:var(--bg-0,#1a1520); color:var(--text,#f8f5f0); border-bottom:1px solid var(--border,#574b5f); }
.wt-shell .gnav__inner { height:100%; }
.wt-shell .gnav--report-page { display:block !important; }
.wt-shell .gnav__center { gap:4px; }
.wt-top-link { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:8px 12px; color:inherit; background:none; border:0; font:inherit; font-size:14px; text-decoration:none; cursor:pointer; }
.wt-top-link svg { width:18px; height:18px; }
.wt-current { color:var(--accent,#E07A6B) !important; font-weight:700; }
.wt-shell .gnav .wt-current { color:var(--accent-text,#E07A6B) !important; }
.wt-parent { padding:4px max(16px,env(safe-area-inset-left)); background:var(--bg-0,#1a1520); color:var(--text,#f8f5f0); }
.wt-parent a,.wt-next-steps a { display:inline-flex; align-items:center; min-height:44px; min-width:44px; font-size:14px; color:inherit; text-decoration:underline; text-underline-offset:4px; }
.wt-next-steps { display:flex; flex-wrap:wrap; gap:12px 24px; padding:24px; margin:24px auto; max-width:1100px; }
.wt-shell .gnav a,.wt-shell .gnav button,.wt-shell .gnav__mobile-overlay a,.wt-shell .gnav__mobile-overlay button { min-height:44px; min-width:44px; font-size:14px; }
.wt-shell .gnav__bottom-bar,.wt-shell .gnav__bottom-item { box-sizing:border-box; }
.wt-shell .gnav__bottom-item { font-size:14px; min-width:44px; min-height:60px; }
.wt-shell .gnav__mobile-label,.wt-shell .gnav__mega-desc,.wt-shell .gnav__badge { font-size:14px; }
.wt-shell .gnav__mobile-overlay { z-index:10030; }
.wt-shell .gnav__mobile-backdrop { z-index:10020; }
.wt-shell .tab-bar { top:var(--wt-top-height) !important; }
.wt-shell .tab-btn { min-height:44px; font-size:14px; }
.wt-shell .wt-pdf-download-btn { position:relative !important; right:auto !important; bottom:auto !important; z-index:auto !important; margin:16px; }
.wt-shell .wt-pdf-modal-overlay,.wt-shell .checkout-overlay { padding:16px; }
.wt-shell [role="dialog"] { max-height:calc(100dvh - 32px); overflow-y:auto; }
.wt-shell .gnav__mobile-overlay[aria-hidden="false"] { display:flex !important; }
.wt-shell #payment-gate { min-width:0; max-width:100%; }
.wt-shell #payment-gate * { min-width:0; max-width:100%; overflow-wrap:anywhere; }
.wt-shell .print-topbar { position:relative; top:auto; flex-wrap:wrap; gap:12px; padding:12px 16px; }
.wt-shell .print-doc { max-width:100%; overflow-x:auto; padding:24px 16px; }
.wt-shell .print-doc .page { margin-left:auto; margin-right:auto; }
.wt-shell .bar { position:sticky; top:var(--wt-top-height); }
.wt-shell .bar-home { display:inline-flex; }
.wt-shell .chapter { scroll-margin-top:calc(var(--wt-top-height) + 120px); }
.wt-shell .bar-back { display:inline-flex; align-items:center; min-height:44px; font-size:14px; white-space:nowrap; }
.wt-shell .reader-chapter-next { display:flex; flex-wrap:wrap; gap:16px; margin-top:32px; }
.wt-shell .reader-chapter-next a { min-height:44px; display:inline-flex; align-items:center; font-size:16px; }
@media(max-width:768px) {
  :root { --wt-bottom-height:calc(64px + env(safe-area-inset-bottom,0px)); }
  .wt-shell .gnav__center { display:none; }
  .wt-shell .gnav__bottom-bar { height:var(--wt-bottom-height); }
  .wt-shell .gnav__bottom-item { flex:1 1 20%; padding:4px 0; gap:2px; }
  .wt-shell .gnav__bottom-item span { font-size:14px; white-space:nowrap; }
  .wt-shell .gnav__cta { display:none; }
  .wt-shell .bar { flex-wrap:wrap; height:auto; padding:8px 12px; gap:4px; }
  .wt-shell .bar-title { flex:1 1 65%; order:-1; min-width:0; }
  .wt-shell .bar-title .bar-book { display:block; font-size:14px; }
  .wt-shell .bar-back { order:-2; }
  .wt-shell .bar .ibtn { width:auto; min-width:44px; min-height:44px; }
  .wt-shell .bar .lbl { display:inline; font-size:14px; }
  .wt-shell .bar-meta { display:block; font-size:14px; }
  .wt-shell #payment-gate h1 { font-size:32px; }
  .wt-shell .print-doc .page { margin-left:0; }
}
@media print {
  #global-nav,.gnav__bottom-bar,.gnav__mobile-overlay,.gnav__mobile-backdrop,.wt-parent,.wt-next-steps { display:none !important; }
  body.wt-shell { padding:0 !important; }
}

.wt-shell .wt-back-pill { display:none !important; }
.wt-shell .wt-parent { display:flex; align-items:center; justify-content:space-between; }
.wt-shell .vn-fab { position:relative !important; inset:auto !important; width:44px !important; height:44px !important; flex-shrink:0; z-index:auto !important; }
.wt-shell #payment-gate { padding-top:40px; }
.wt-shell #payment-gate .gate__content { width:100%; box-sizing:border-box; }
.wt-shell .gnav__mobile-backdrop--visible { display:block !important; }
.wt-shell .gnav__mobile-overlay[aria-hidden="true"] { visibility:hidden; }
.wt-shell .gnav__mobile-overlay[aria-hidden="false"] { visibility:visible; }
.wt-shell .sample-document { border-top:1px solid var(--border,#574b5f); }
@media screen { .wt-shell .print-doc { box-sizing:border-box; width:100%; } }

.wt-shell .wdv-co-close { position:relative; inset:auto; width:auto; height:auto; min-height:44px; padding:8px 12px; margin:12px; border-radius:8px; font-size:14px; }
.wt-shell .drawer,.wt-shell .scrim { z-index:10040; }
.wt-shell .drawer.rail { top:var(--wt-top-height); }
.wt-shell .gnav__bottom-bar { padding-right:4px !important; }

.wt-section-picker { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding:8px 16px; font-size:14px; }
.wt-section-picker select { min-height:44px; font-size:16px; max-width:100%; padding:8px; color:inherit; background:var(--surface,#2a232f); border:1px solid var(--border,#574b5f); }
.wt-shell .tab-bar { scrollbar-width:thin; }
.wt-shell .tab-bar::-webkit-scrollbar { display:block; height:6px; }
.wt-shell .tab-bar::-webkit-scrollbar-thumb { background:var(--accent,#E07A6B); }

/* Keep the way back visible after a result or chapter scrolls into view. */
:root { --wt-parent-height:52px; }
.wt-shell .wt-parent { position:sticky; top:var(--wt-top-height); z-index:9999; min-height:var(--wt-parent-height); box-sizing:border-box; }
.wt-shell .tab-bar,.wt-shell .bar { top:calc(var(--wt-top-height) + var(--wt-parent-height)) !important; }
.wt-shell .wt-pdf-download-btn { min-height:44px; }
.wt-shell .gnav__mobile-type-dot,.wt-shell .gnav__owned-line,.wt-shell .gnav__mobile-type-text,.wt-shell .wt-mode-toggle__btn { font-size:14px; }
.wt-shell .tier-overlay-close { position:relative; inset:auto; width:auto; height:auto; min-height:44px; padding:8px 12px; margin-bottom:16px; font-size:14px; border-radius:8px; }
.wt-shell .tier-overlay { z-index:10050; }

.wt-shell .print-preview-help { padding:16px; font-size:16px; color:#f8f5f0; }
.wt-shell .print-preview-help a { color:inherit; min-height:44px; display:inline-flex; align-items:center; }
@media(max-width:768px) { .wt-shell .sample-document .page { margin-left:16px; margin-right:16px; } }

.wt-shell .gnav__cmdk-kbd,.wt-shell .gnav__cmdk-cmd,.wt-shell .bar-sub { font-size:14px; }
.wt-shell .bar-home { min-width:44px; min-height:44px; }

:root { --wt-top-height:calc(64px + env(safe-area-inset-top,0px)); }
.wt-shell .gnav { padding-top:env(safe-area-inset-top,0px); box-sizing:border-box; }
.wt-shell .gnav__inner { height:64px; }
.wt-shell .bar-book,.wt-shell .bar-meta { font-size:14px; }
.wt-shell .wt-kbd-hint { display:none !important; }
.wt-shell .wt-mode-toggle__tooltip,.wt-shell .tab-btn .lock-price,.wt-shell .rv-progress-text,.wt-shell .rv-progress-name { font-size:14px; }

/* Fix round 1: the shell replaces the old fixed header and local return links. */
.wt-shell .wt-parent[hidden] { display:none !important; }
body.wt-shell-home { --wt-parent-height:0px; }
.wt-shell .wt-dash,.wt-shell .account-container,.wt-shell .learn-hero,
.wt-shell .welcome-wrap,.wt-shell .mw-wrap { padding-top:24px; }
.wt-shell .learn-hero { min-height:0; }
.wt-shell .bar-back,.wt-shell .bar-home,
.wt-shell #accountSection > div:first-child > a.auth-link,
.wt-shell .post-header__back,
.wt-shell #print-close,
.wt-shell .welcome-wrap a[href="/team/pricing.html"],
.wt-shell .mw-wrap a[href="/team/pricing.html"],
.wt-shell .nf-logo,.wt-shell .mw-wordmark { display:none !important; }
.wt-shell .mw-cobrand:has(> .mw-wordmark:only-child) { display:none; }
@media(max-width:768px) {
  .wt-shell .bar { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:4px; }
  .wt-shell .bar-title { grid-column:1 / 4; order:0; }
  .wt-shell .bar-meta { grid-column:4; grid-row:1; text-align:right; }
  .wt-shell .bar .ibtn { grid-row:2; padding:0 2px; gap:0; justify-content:center; }
  .wt-shell .bar .ibtn svg { display:none; }
  .wt-shell .bar-progress { position:absolute; }
}

@media(max-width:768px) { .wt-shell .bar-sub { display:none !important; } }

.wt-shell .dash,.wt-shell .blind,.wt-shell .lesson-breadcrumbs,
.wt-shell .conv-page,.wt-shell .exercises-page,.wt-shell .blog-hero,
.wt-shell .post-header,.wt-shell .full-assessment { padding-top:24px; }
.wt-shell .invite-wrap { margin-top:0; padding-top:24px; }
.wt-shell .print-topbar__meta { text-transform:none; }

.wt-shell .mw-note:empty,.wt-shell .mw-cobrand__sep { display:none; }

/* Remove the empty local masthead along with its duplicate logo. */
.wt-shell .nf-header { display:none; }
.wt-shell .conv-page { padding-top:0; }
.wt-shell .conv-hero,.wt-shell #payment-gate { padding-top:24px; }
@media(max-width:768px) { .wt-shell .hero { padding-top:24px; } }

/* NAV2: public offsets, five sections, and report subnavigation. */
:root { --wt-top-bar:var(--wt-top-height); --wt-bottom-bar:var(--wt-bottom-height); --wt-parent-bar:var(--wt-parent-height); --wt-report-picker:60px; }
.wt-shell .wt-section-picker { position:sticky; top:calc(var(--wt-top-bar) + var(--wt-parent-bar)); z-index:102; margin:0; min-height:var(--wt-report-picker); box-sizing:border-box; background:var(--bg-0); }
.wt-shell #tabBar { position:sticky; top:calc(var(--wt-top-bar) + var(--wt-parent-bar) + var(--wt-report-picker)) !important; z-index:101; }
.wt-shell .wt-pdf-row { display:flex; align-items:center; flex-wrap:wrap; gap:16px; padding:16px 0; min-height:76px; box-sizing:border-box; }
.wt-shell .wt-pdf-row a { display:inline-flex; align-items:center; min-height:44px; font-size:16px; color:var(--accent-text); }
.wt-shell .wt-pdf-row .wt-pdf-download-btn { margin:0; }
.wt-phone-more { display:none; }
.wt-shell .gnav__badge[data-wt-unread] { height:18px; min-width:18px; padding:0 5px; margin-left:6px; border-radius:9px; background:var(--accent); color:var(--bg-0); font-size:12px; line-height:18px; text-align:center; }
.wt-shell .gnav__badge[data-wt-unread][hidden] { display:none; }
#wt-account-menu { position:relative; }
#wt-account-menu summary { cursor:pointer; min-height:44px; display:flex; align-items:center; padding:8px; font-size:14px; }
.wt-account-menu-links { position:absolute; right:0; min-width:180px; background:var(--bg-0); border:1px solid var(--border); border-radius:8px; padding:8px; }
.wt-account-menu-links a { display:flex; align-items:center; padding:8px; gap:4px; color:var(--text-1); }
.wt-shell .gnav__right:has(#wt-account-menu) .gnav__cta { display:none; }
/* S13: one door for a signed-in person (global-nav.js memberMenu). Messages, then one menu under the initials; the gear
   and the phone drawer's button are gone for signed-in visitors, and on a phone the same menu carries the site links. */
.wt-shell.wt-member .us-gear-btn,.wt-shell.wt-member .gnav__hamburger { display:none !important; }
.wt-me-msg { position:relative; display:inline-flex; align-items:center; gap:6px; min-height:44px; min-width:44px; padding:8px 10px; box-sizing:border-box; border-radius:999px; color:var(--text); text-decoration:none; font-size:14px; font-weight:600; }
.wt-me-msg:hover,.wt-me-msg.wt-current { background:var(--bg-2); }
.wt-me-msg .gnav__badge[data-wt-unread] { position:absolute; top:2px; left:24px; margin:0; }
.wt-shell #wt-account-menu.wt-me { display:block !important; }
#wt-account-menu.wt-me summary { padding:4px; list-style:none; }
#wt-account-menu.wt-me summary::-webkit-details-marker { display:none; }
#wt-account-menu.wt-me summary::after { content:none; }
.wt-me__av { display:inline-grid; place-items:center; width:36px; height:36px; border-radius:50%; background:var(--accent); color:var(--on-accent,#1A1520); font:700 13px/1 var(--font-heading,var(--font-body)); letter-spacing:.02em; }
.wt-me__av--lg { width:44px; height:44px; font-size:15px; flex:none; }
.wt-nav-popover.wt-me__pop { width:min(340px,calc(100vw - 24px)); max-height:calc(100vh - 88px); overflow:auto; padding:8px; display:grid; gap:0; box-shadow:0 16px 40px rgba(0,0,0,.28); }
.wt-me__who { display:flex; gap:12px; align-items:center; padding:10px 10px 12px; }
.wt-me__who > div { display:grid; min-width:0; }
.wt-me__n { font-weight:700; font-size:15px; overflow-wrap:anywhere; }
.wt-me__e { font-size:13px; color:var(--text-muted); overflow-wrap:anywhere; }
.wt-me__sec { border-top:1px solid var(--border); padding:6px 0; display:grid; }
.wt-me__pop a.wt-me__link { display:grid; gap:2px; align-items:start; }
.wt-me__lt { font-weight:600; font-size:15px; }
.wt-me__ld { font-size:13px; color:var(--text-muted); font-weight:400; }
.wt-me__h,.wt-me__rl { margin:0; padding:6px 12px 2px; font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); }
.wt-me__row { border:0; margin:0; padding:4px 0; min-width:0; }
.wt-me__pills { display:flex; flex-wrap:wrap; gap:6px; padding:4px 12px; }
.wt-me__pill { position:relative; display:inline-flex; }
.wt-me__pill input { position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.wt-me__pill span { display:inline-flex; align-items:center; min-height:36px; padding:6px 12px; border:1.5px solid var(--border); border-radius:999px; font-size:13px; }
.wt-me__pill input:checked + span { border-color:var(--accent); background:color-mix(in srgb,var(--accent) 16%,transparent); font-weight:600; }
.wt-me__pill input:focus-visible + span { outline:3px solid var(--accent); outline-offset:2px; }
.wt-me__check { display:flex; gap:10px; align-items:center; min-height:44px; padding:4px 12px; font-size:14px; cursor:pointer; }
.wt-me__check input { width:24px; height:24px; accent-color:var(--accent); margin:0; flex:none; }
.wt-me__lang { margin:0; padding:4px 12px; font-size:13px; color:var(--text-muted); }
.wt-me__lang .wt-me__rl { padding:0; }
.wt-me__lang b { color:var(--text); }
.wt-me__sec > .wt-me__ld { padding:4px 12px 6px; margin:0; }
.wt-me__out { font-weight:600; }
.wt-me__go { display:none; }
@media (max-width:899px) {
  .wt-me__go { display:grid; }
  .wt-me-msg__l { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .wt-me-msg .gnav__badge[data-wt-unread] { left:22px; }
}
@media(max-width:768px) {
  .wt-shell .gnav__bottom-item span { font-size:12px; }
  .wt-shell .gnav__bottom-item svg { width:20px; height:20px; }
  .wt-phone-more { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:8px; color:inherit; background:none; border:0; font:inherit; }
  #wt-account-menu { display:none; }
  .wt-shell .wt-section-picker { flex-wrap:nowrap; gap:8px; font-size:14px; }
  .wt-shell .wt-section-picker select { min-width:0; flex:1; }
}

/* Admin-dashboard merge (2026-09-15): bug-report.js injects rules written for the old floating buttons
   (html .vn-fab, html .wt-pdf-download-btn with bottom and right, body padding for its rail). Under the shell the
   chat orb and the PDF action are in flow, so those offsets must not move them; the shell owns the body reservation
   and adds the desktop Feedback rail to it. On phones Feedback lives in the More sheet, so the rail is 0. */
html body.wt-shell .vn-fab { position:relative !important; top:auto !important; right:auto !important; bottom:auto !important; left:auto !important; width:44px !important; height:44px !important; z-index:auto !important; }
html body.wt-shell .wt-pdf-download-btn { position:relative !important; top:auto !important; right:auto !important; bottom:auto !important; left:auto !important; z-index:auto !important; }
/* The rail's 8 px of breathing room (bug-report.js) survives this rule; on phones the rail is 0 and so is the gap (W58). */
/* --wt-consent-height is set by cookie-consent.js while its banner is up, so the last price or button can scroll clear of it (GRO-07). */
html body.wt-shell { padding-bottom:calc(var(--wt-bottom-height) + var(--wt-feedback-rail-height, 0px) + var(--wt-feedback-gap, 8px) + var(--wt-consent-height, 0px)) !important; }
/* A11Y93 (#93): cookie-consent.js sets --wt-consent-height while its banner is up; the free assessment's controls scroll
   clear of it (assessment.js scrolls #btn-next with block nearest once an answer is ranked). */
.assessment__nav, #btn-next, #btn-start-assessment { scroll-margin-bottom:calc(var(--wt-consent-height, 0px) + 16px); }
@media(max-width:768px) {
  html:has(body.wt-shell) { --wt-feedback-rail-height:0px; --wt-feedback-gap:0px; }
}

/* Home hero under the sticky nav (CLS, deploy-90 5:35 AM): the hero's 80 px top padding was for the old fixed nav, and its
   decorative glow was sized from the hero's own height, which changes when the web fonts land. Pad for the shell and
   size the glow from the viewport so nothing moves when the fonts arrive. */
.wt-shell .hero { padding-top:24px; }
.wt-shell .hero::before { height:80vh; }

/* PLATFORM: component targets and measured report sticky stack. */
:root { --wt-report-tabs:45px; }
html:has(body.wt-shell #tabBar) {
  --wt-sticky-stack:calc(var(--wt-top-bar) + var(--wt-parent-bar) + var(--wt-report-picker) + var(--wt-report-tabs));
  scroll-padding-top:var(--wt-sticky-stack);
}
.wt-shell #tabBar { height:var(--wt-report-tabs); box-sizing:border-box; }
.wt-shell #tabBar .tab-btn { box-sizing:border-box; padding-top:0; padding-bottom:0; }
.wt-top-link,#wt-account-menu summary,.wt-phone-more { min-width:44px; }
@media(pointer:coarse) {
  :root { --wt-parent-height:56px; --wt-report-picker:64px; --wt-report-tabs:49px; }
  .wt-top-link,.wt-shell .gnav a,.wt-shell .gnav button,
  .wt-shell .gnav__mobile-overlay a,.wt-shell .gnav__mobile-overlay button,
  .wt-parent a,.wt-next-steps a,.wt-shell .tab-btn,.wt-shell .tier-overlay-close,
  #wt-account-menu summary,.wt-phone-more,.wt-section-picker select {
    min-height:48px; min-width:48px;
  }
  html body.wt-shell .vn-fab { width:48px !important; height:48px !important; }
}
@media(max-height:500px) {
  :root { --wt-report-picker:56px; }
  .wt-shell .wt-section-picker { padding-top:4px; padding-bottom:4px; }
  html:has(body.wt-shell #tabBar) { --wt-sticky-stack:calc(var(--wt-top-bar) + var(--wt-report-picker)); }
  .wt-shell .wt-parent,.wt-shell #tabBar { position:static; }
  .wt-shell .wt-section-picker { top:var(--wt-top-bar); }
  html body.wt-shell { padding-bottom:var(--wt-bottom-height) !important; }
  /* PLT-08: a phone on its side keeps the top bar (menu, search, settings, coach) and gives the bottom tabs' 64 px to the
     text; at 667 by 375 that is 243 px of reading area instead of 179. The More sheet carries the five sections. */
  :root { --wt-bottom-height:0px; }
  .wt-shell .gnav__bottom-bar { display:none !important; }
}

@media(pointer:coarse) and (max-width:480px) {
  .wt-shell .gnav__inner { padding-left:12px; padding-right:12px; }
  .wt-shell .gnav__right { gap:4px; }
}

/* NAV-03 (site review 2026-09-16): the one site footer, mounted by global-nav.js installFooter() on every page but Home. */
.wt-footer { margin:48px auto 0; padding:24px max(16px,env(safe-area-inset-left)) calc(24px + env(safe-area-inset-bottom,0px)); max-width:1100px; border-top:1px solid var(--border,#574b5f); color:var(--text-muted,#978C83); font-size:14px; }
.wt-footer__links { display:flex; flex-wrap:wrap; gap:4px 20px; margin:0 0 8px; }
.wt-footer__links a { display:inline-flex; align-items:center; min-height:44px; color:var(--text-secondary,#B8AFA5); text-decoration:none; }
.wt-footer__links a:hover { color:var(--text-primary,#f8f5f0); text-decoration:underline; text-underline-offset:4px; }
@media (pointer: coarse) { .wt-footer__links a { min-height:48px; } }
.wt-footer__copy { margin:0; font-size:13px; }
@media print { .wt-footer { display:none !important; }
/* UX93 (2026-09-16): the policies run under the three action links */
.wt-footer__policies { margin-top:4px; font-size:13px; }
.wt-footer__policies a { min-height:40px; }
.wt-footer__label { display:inline-flex; align-items:center; min-height:40px; margin-right:4px; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-muted,#978C83); }
@media (pointer: coarse) { .wt-footer__policies a { min-height:44px; } }
 }

/* A11Y93 (#93): the phone "Report section" select does not sit beside the full tab bar on desktop. */
@media(min-width:769px) {
  :root { --wt-report-picker:0px; }
  .wt-shell .wt-section-picker { display:none; }
}

/* PLT-08: short desktop layouts use the picker as their persistent selector. */
@media (min-width:769px) and (max-height:500px) {
  :root { --wt-report-picker:56px; }
  .wt-shell .wt-section-picker { display:flex; }
}

/* W98 (#94, 2026-09-16): --accent-solid is the accent mixed 30 percent toward black, the one background on which white
   text reaches 4.5:1 for all 26 type accents. report.css defines the same token for the report pages. */
.wt-shell{--accent-solid:var(--accent)}
@supports (background: color-mix(in srgb, red 70%, black)){ .wt-shell{--accent-solid:color-mix(in srgb, var(--accent) 70%, #000)} }

/* Friction audit: dialogs own the interaction layer. Consent keeps its place
   in document flow and becomes visible again after the last dialog closes. */
html.wt-panel-open .wt-consent-banner { visibility:hidden !important; pointer-events:none !important; }
.wt-shell .wt-cmdk__esc { min-width:64px; min-height:44px; font:inherit; font-size:14px; cursor:pointer; color:var(--text); background:var(--bg-1); }
.wt-shell .us-label,.wt-shell .us-swatch-name { font-size:14px; color:var(--text); }
.wt-shell .us-panel { color:var(--text); background:var(--bg-0); }
.wt-shell .us-swatch-name { overflow-wrap:anywhere; }
.wt-shell .vn-fab { color:var(--text); }
.wt-shell :is(button,input,select,textarea,a[href]) { scroll-margin-bottom:calc(var(--wt-bottom-height) + 16px); }
.wt-shell :is(.learn-sidebar__cta,.learn-cta .btn,.category-pill.active,.type-comparison__tab.active,#ge-email-result-open,.ge-email-modal__submit) { color:var(--on-accent,#1A1520) !important; background:var(--accent) !important; }
.wt-shell .sample-document .card p,.wt-shell .samples-grid .card p { color:var(--text); }
.wt-shell .category-pill,.wt-shell .breadcrumbs a,.wt-shell .breadcrumb a,.wt-shell .footer a,.wt-shell footer a { display:inline-flex; align-items:center; min-height:44px; min-width:44px; }
.wt-shell .card a[href$=".pdf"],.wt-shell .card a[href*="/samples/"] { display:inline-flex; align-items:center; min-height:44px; min-width:44px; }
.wt-field-error { color:var(--text); border-left:3px solid var(--accent); padding:6px 10px; font-size:14px; margin:6px 0; }
.wt-field-error:empty { display:none; }
/* Stage 1 item 10: the sign-in error's "reset your password" link keeps the message's own color (coral read at 2.52 on the
   light card) and is marked by its underline and weight. */
.wt-field-error a { color:inherit; font-weight:600; text-decoration:underline; text-underline-offset:3px; }
.wt-field-help { color:var(--text); font-size:14px; margin:6px 0; }
@media(max-width:768px) {
  .wt-shell .hero { min-height:calc(100svh - var(--wt-top-height) - var(--wt-bottom-height) - var(--wt-consent-slot,0px)); padding-top:24px; padding-bottom:24px; }
  .wt-shell .hero__subtitle { margin-bottom:20px; }
  .wt-shell .hero__overline,.wt-shell .hero__title { margin-bottom:16px; }
  .wt-shell .account-container { padding-top:24px; padding-bottom:calc(var(--wt-bottom-height) + 24px); }
  .wt-shell .brand-header { margin-bottom:16px; }
  .wt-shell .auth-card { padding:20px 18px; }
  .wt-shell .auth-card__subhead { margin-bottom:16px; }
}
@media(max-width:768px) {
  .wt-shell .hero { justify-content:flex-start; padding-top:8px; }
  .wt-shell .hero__title { font-size:clamp(36px,9vw,48px); }
}
.wt-shell .wrap .card p { color:var(--text); }
.wt-shell .ge-email-modal__close { min-width:44px; min-height:44px; }
@media(max-width:768px) {
  .wt-shell .brand-header { display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
  .wt-shell .brand-header__tagline { flex-basis:100%; margin-top:0; }
  .wt-shell .auth-tabs { margin-bottom:16px; }
  .wt-shell .auth-card .form-group { margin-bottom:12px; }
}
@media(max-width:768px) {
  .wt-shell .account-container { padding-top:8px; }
  .wt-shell .brand-header__ripple svg { width:24px; height:24px; }
  .wt-shell .brand-header__wordmark { font-size:20px; }
  .wt-shell .brand-header__tagline { flex-basis:auto; font-size:12px; letter-spacing:0; }
  .wt-shell .auth-card { padding:16px 18px; }
  .wt-shell .auth-card__subhead { font-size:14px; margin-bottom:8px; }
  .wt-shell .auth-tabs { margin-bottom:12px; }
  .wt-shell .auth-card .form-group { margin-bottom:8px; }
}
/* The bar measurement includes env(safe-area-inset-bottom). */
html body.wt-shell { padding-bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + var(--wt-feedback-rail-height,0px) + var(--wt-feedback-gap,0px) + 16px) !important; }
html:has(body.wt-shell) { scroll-padding-bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + 16px) !important; }
.wt-shell :is(button,input,select,textarea,a[href]) { scroll-margin-bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + 16px); }
.wt-shell [aria-label="Breadcrumb"] a,.wt-shell .card-actions .btn { display:inline-flex; align-items:center; min-height:44px; min-width:44px; }
.wt-shell .tts-control-bar { bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + 16px); }
.wt-shell .tts-control-bar :is(button,select) { min-width:44px; min-height:44px; }
.wt-shell .tts-control-bar { max-width:calc(100vw - 24px); box-sizing:border-box; }
.wt-shell .wt-cmdk__heading { font-size:18px; padding:16px 16px 0; margin:0; color:var(--text); }
.wt-shell .wt-cmdk__footer { font-size:14px; color:var(--text); flex-wrap:wrap; }
.wt-shell .gnav__mobile-header { height:auto; min-height:72px; flex-shrink:0; }

html.wt-panel-open :is(.gnav__mobile-backdrop--visible,.us-overlay.us-open) { z-index:11001 !important; }

/* Keep the hit area fixed while hover changes its appearance. Moving the button
   itself can repeatedly move its bottom edge across a stationary pointer. */
.wt-shell :is(.btn,.option-card):hover,.wt-shell :is(.btn,.option-card):active { transform:none; }

/* Visible primary navigation. Utilities come after destinations and the primary action. */
.wt-shell .gnav__inner { display:flex; justify-content:flex-start; gap:20px; max-width:1600px; padding:0 24px; }
.wt-shell .gnav__center { display:flex; flex:0 0 auto; gap:2px; }
.wt-shell .gnav__right { display:flex; align-items:center; gap:4px; margin-left:auto; flex:0 0 auto; }
.wt-shell .wt-top-link { padding:8px 10px; white-space:nowrap; color:var(--text); }
.wt-shell .wt-top-link svg,.wt-footer-link svg { display:none; }
.wt-shell .gnav__center [hidden],.wt-shell .gnav__right [hidden] { display:none !important; }
.wt-shell .gnav__hamburger,.wt-shell .gnav__theme-toggle { display:none !important; }
.wt-shell .gnav__cmdk { width:44px; height:44px; min-width:44px; padding:0; justify-content:center; border:0; background:transparent; }
.wt-shell .gnav__cmdk-label,.wt-shell .gnav__cmdk-kbd { display:none; }
.wt-shell .gnav__cta { display:inline-flex; justify-content:center; padding:10px 16px; border-radius:8px; background:var(--accent); color:var(--on-accent,#1A1520); white-space:nowrap; font-weight:700; }
.wt-shell .gnav__signin { display:inline-flex; padding:8px 12px; color:var(--text); white-space:nowrap; }
.wt-shell .gnav__cta--member { display:none; }
/* Stage 1 item 6 (REVIEW_FRAME P0 3): a signed-in free account with no result keeps the coral "Take the free test" beside
   the Account menu (global-nav.js adds gnav__cta--first); the rule above the menu hides the member button only. */
.wt-shell .gnav__right:has(#wt-account-menu) .gnav__cta.gnav__cta--first { display:inline-flex; }
.wt-shell .gnav__cta:hover { transform:none; }
/* Stage 2 item 39 (A11Y P2-8): at 320 with WCAG text spacing the header's test button wraps inside the bar. */
@media (max-width: 360px) { .wt-shell .gnav__cta { white-space:normal; text-align:center; line-height:1.2; min-width:0; flex-shrink:1; padding:8px 10px; } }
.wt-shell .gnav .wt-current { color:var(--text) !important; text-decoration:underline; text-decoration-thickness:3px; text-underline-offset:8px; }
.wt-shell .gnav a:focus-visible,.wt-shell .gnav button:focus-visible,.wt-shell .gnav summary:focus-visible { outline:2px solid var(--text); outline-offset:2px; }
#wt-top-more,#wt-account-menu { position:relative; flex-shrink:0; }
#wt-top-more summary,#wt-account-menu summary { display:flex; align-items:center; cursor:pointer; min-height:44px; padding:8px 10px; box-sizing:border-box; color:var(--text); }
#wt-top-more summary::after,#wt-account-menu summary::after { content:'⌄'; margin-left:6px; }
.wt-nav-popover { position:absolute; right:0; top:100%; width:280px; padding:12px; border:1px solid var(--border); border-radius:12px; background:var(--bg-0); color:var(--text); box-shadow:0 12px 30px #0003; max-height:calc(100dvh - 80px); overflow:auto; }
.wt-nav-popover a,.wt-nav-popover button,.wt-nav-group a,.wt-nav-group > button { display:flex; align-items:center; width:100%; min-height:44px; padding:10px 12px; box-sizing:border-box; border:0; background:none; color:inherit; font:inherit; text-decoration:none; text-align:left; cursor:pointer; }
.wt-nav-popover a:hover,.wt-nav-popover button:hover,.wt-nav-group a:hover { background:var(--bg-2); border-radius:6px; }
.wt-nav-group { border-top:1px solid var(--border); margin-top:16px; padding-top:12px; }
.wt-nav-group h3 { font-size:14px; margin:4px 12px 8px; color:inherit; }
[data-nav-tasks] { display:grid; }
[data-nav-tasks] svg { display:none; }
[data-nav-tasks] a { min-height:48px; color:inherit; }
[data-wt-display-modes] p { font-size:14px; line-height:1.5; margin:8px 12px; }
[data-wt-display-modes] .wt-mode-toggle { display:flex; width:max-content; max-width:100%; margin:8px 0; }
[data-wt-display-modes] .wt-mode-toggle__btn { min-height:44px; }
/* Q102-4: the menu's button rule (width 100%, flex) squeezed each toggle button below its words, so the locked
   button's padlock sat on its last letter. The toggle's buttons keep their own width. */
.wt-nav-popover [data-wt-display-modes] .wt-mode-toggle__btn { width:auto; flex:none; white-space:nowrap; }
.wt-footer-link { gap:8px; }
.report-history-menu { padding:.5rem 1rem; }
.report-history-menu summary { min-height:44px; padding:.75rem 0; cursor:pointer; }
.report-history-menu a { display:block; min-height:44px; padding:.75rem 0; }
@media (min-width:900px) {
  .wt-shell .gnav__center { display:flex !important; }
  .wt-shell .gnav__bottom-bar { display:none !important; }
}
@media (min-width:900px) and (max-width:1100px) {
  .wt-shell .gnav__inner { padding:0 16px; gap:12px; }
  .wt-shell .wt-top-link { padding:8px; }
  .wt-shell .gnav__cta { padding:10px 12px; }
}
@media (max-width:899px) {
  :root { --wt-bottom-height:calc(64px + env(safe-area-inset-bottom,0px)); }
  .wt-shell .gnav__inner { padding:0 12px; gap:8px; }
  .wt-shell .gnav__center,.wt-shell .gnav__signin,.wt-shell .gnav__cmdk,.wt-shell .us-gear-btn,.wt-shell #wt-account-menu,.wt-shell .gnav__admin-link,.wt-shell .disc-trial-badge { display:none !important; }
  .wt-shell .gnav__hamburger { display:flex !important; width:44px; height:44px; }
  .wt-shell .gnav__cta:not(.gnav__cta--member),.wt-shell .gnav__right:has(#wt-account-menu) .gnav__cta:not(.gnav__cta--member) { display:inline-flex; padding:10px 12px; font-size:13px; }
  .wt-shell .gnav__logo { min-width:0; }
  .wt-shell .gnav__logo-text { font-size:17px; }
  .wt-shell .gnav__bottom-bar { display:flex; height:var(--wt-bottom-height); }
  .wt-shell .gnav__bottom-item { flex:1; min-width:0; padding:4px 2px; gap:2px; }
  .wt-shell .gnav__bottom-item span { font-size:12px; white-space:normal; line-height:1.2; text-align:center; }
  .wt-shell .gnav__bottom-item svg { width:20px; height:20px; flex-shrink:0; }
}

@media (max-width:899px) {
  html body.wt-shell > .vn-fab { position:fixed !important; right:16px !important; bottom:calc(var(--wt-bottom-height) + 16px) !important; top:auto !important; left:auto !important; z-index:10001 !important; }
}
.wt-shell .vn-fab:hover { transform:none !important; }
.wt-shell .gnav__bottom-item { color:var(--text); }
.wt-shell :is(.gnav__bottom-bar,.gnav__mobile-overlay,.wt-footer) .wt-current { color:var(--text) !important; text-decoration:underline; text-underline-offset:4px; font-weight:700; }
html body.wt-shell .vn-fab { color:#f8f5f0; }
[data-wt-display-modes] .wt-mode-toggle__btn--active { background:#a33e30; color:#fff; }
.wt-shell .us-swatch { min-width:44px; min-height:44px; }

/* Reports retain the shared header and one site bottom bar. Section tabs stay above content. */
.wt-shell #global-nav { display:block !important; visibility:visible; }
.wt-shell.wt-report-page .wt-parent,.wt-shell.wt-report-page .wt-section-picker { display:none !important; }
.wt-shell.wt-report-page #tabBar { display:flex; position:sticky !important; top:var(--wt-header-measured) !important; bottom:auto !important; }
html:has(body.wt-report-page) { --wt-sticky-stack:var(--wt-report-stack); scroll-padding-top:var(--wt-report-stack); }
.wt-shell.wt-report-page .rv-progress { position:static; }
.wt-shell .ct-brand { display:none; }

/* One display gear; the distinct shield is the separate admin destination. */
html body.wt-shell .gnav__cmdk { background:transparent; color:var(--text); opacity:1; box-shadow:none; }
html body.wt-shell .gnav__cmdk:hover,html body.wt-shell .us-gear-btn:hover { background:var(--bg-2); }
html body.wt-shell .gnav__cmdk:focus-visible { outline:2px solid var(--text); outline-offset:2px; }
@media(max-width:899px) {
  .wt-shell .gnav__bottom-item span { white-space:nowrap; font-size:11px; }
  .wt-mobile-chat-row { display:flex; justify-content:flex-end; padding:16px; margin:16px 0; clear:both; }
  html body.wt-shell .wt-mobile-chat-row .vn-fab { position:relative !important; inset:auto !important; }
}
@media(min-width:900px) { .wt-mobile-chat-row { display:none; } }

/* Consent stays below content and never reserves space above the header. */
html.wt-consent-pending body.wt-shell { padding-top:0 !important; }
html body.wt-shell { --wt-parent-height:0px; --wt-parent-bar:0px; padding-bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + var(--wt-consent-height,0px) + 24px) !important; }
.wt-shell .wt-parent,.wt-shell .wt-back-pill { display:none !important; }
html:has(body.wt-shell) { scroll-padding-bottom:calc(var(--wt-bottom-inset,var(--wt-bottom-height)) + var(--wt-consent-height,0px) + 16px) !important; }
.wt-shell .tp-page { padding-top:16px; }
.wt-shell .tp-breadcrumbs { margin-bottom:12px; }
.wt-shell .tp-hero__badge { width:48px; height:48px; margin-bottom:8px; }
.wt-shell .tp-hero__overline { margin-bottom:8px; }

.wt-pledge-start { min-height:56px; width:100%; max-width:460px; white-space:normal; }
#fa-pledge-status { min-height:24px; color:var(--text); }
/* The collapsed voice controller is also an active panel with controls. */
html:has(.tts-control-bar.tts-bar-visible) .wt-consent-banner { visibility:hidden !important; pointer-events:none !important; }

.wt-consent-banner.wt-consent-action-covered { visibility:hidden !important; pointer-events:none !important; }
/* Reserve the kept-pledge line so the second tap lands on the same control (the 28-question start keeps its two steps). */
#fa-pledge-status { display:block !important; height:24px; margin:12px 0; }
#fa-btn-start.wt-pledge-start { height:88px; min-height:88px; box-sizing:border-box; }
/* Stage 1 item 4 (REVIEW_ENTRY P0 1): the free test starts on one tap; the honesty line sits right above the button. */
.wt-pledge-line { max-width:460px; margin:20px auto 12px; color:var(--text); font-size:.95rem; line-height:1.55; text-align:center; }
#btn-start-assessment.wt-pledge-start { height:auto; min-height:56px; box-sizing:border-box; }

/* Stage 1 item 5 (REVIEW_ENTRY P0 2): while the free test runs (assessment.js sets html.wt-testing), the phone tab bar, the
   header's test button, the chat button and the Feedback pill step aside, so nothing covers an answer, Back, Next or Undo. */
html.wt-testing { --wt-bottom-height:0px; --wt-bottom-inset:0px; --wt-feedback-rail-height:0px; }
html.wt-testing :is(#gnav-bottom-bar,.gnav__bottom-bar,#global-nav .gnav__cta,.vn-fab,.wt-mobile-chat-row,#wt-feedback-rail) { display:none !important; }

/* Launch fix B (EYES 4, 2026-09-21): the settings gear and the chat button dock themselves in whatever order a page loads
   their scripts, so Learn and the home page showed them in opposite orders. The header keeps one order everywhere:
   search, chat, then settings, with the menu button last. It lives in shell.css, which every shared-shell page loads
   (/samples/ and the Marston reader load no styles.css). */
html body.wt-shell #global-nav .gnav__right > .vn-fab { order: 20; }
html body.wt-shell #global-nav .gnav__right > .us-gear-btn { order: 21; }
html body.wt-shell #global-nav .gnav__right > .gnav__hamburger { order: 22; }
/* #98.12: the More control reads at the links' size, and between 900 and 1099 pixels the header links sit a little
   closer, so Pricing stays on the header beside the permanent More menu (bridge-ia) instead of folding into it. */
.wt-shell #wt-top-more summary { font-size:14px; padding:8px; }
@media (min-width:900px) and (max-width:1099px) {
  .wt-shell .gnav__center > a { padding-left:6px; padding-right:6px; }
  .wt-shell #wt-top-more summary { padding:8px 6px; }
}

/* The body reserves room for the fixed bar on the dashboard. */
body.wt-shell main.wt-dash { padding-bottom:0; }
.wt-shell .wt-dash #dashBody > .wt-zgrid { margin-bottom:0; }
@media(max-width:899px) {
  body.wt-shell:has(main.wt-dash) .wt-mobile-chat-row { padding:0 16px; margin:0; }
  /* `~`, not `+`: the fixed #vn-panel and #gnav-bottom-bar can sit between the row and the footer (Q105-R1). */
  body.wt-shell:has(main.wt-dash) .wt-mobile-chat-row ~ .wt-footer { margin-top:16px; }
}
