/* Product shell shared by Chat, Track, Profile and their existing detail screens.
   Matches the inspected v0.2 prototype: warm canvas, white rounded surfaces,
   black primary actions and quiet coral emphasis. */
.gs-product-layout {
  --font-display:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  --font-body:var(--font-display);
  --gs-sand:#f6f3ed;
  --gs-warm-cream:#f6f3ed;
  --gs-sand-light:#eeece6;
  --gs-card:#fff;
  --gs-card-elevated:#f6f3ed;
  --gs-border:#dcddd7;
  --gs-divider:#dcddd7;
  --gs-text-primary:#10110f;
  --gs-text-secondary:#555950;
  --gs-text-muted:#62665e;
  --gs-text-hint:#62665e;
  --gs-coral:#d93a3e;
  --gs-coral-deep:#b72f33;
  --gs-coral-light:#f4cdcb;
  --gs-coral-glow:#fde9e7;
  --gs-nav-bg:#fff;
  --gs-nav-active:#fde9e7;
  --gs-product-action:#10110f;
  --gs-product-on-action:#fff;
  --gs-page-px:18px;
  --gs-radius-lg:24px;
  --gs-radius-md:14px;
  font-family:var(--font-body);
  line-height:1.5;
}
.gs-product-layout .gs-app-shell { background:var(--gs-sand)!important; }
.gs-product-layout .gs-app-header {
  background:var(--gs-sand)!important;
  border-bottom:0!important;
  padding-top:calc(14px + env(safe-area-inset-top))!important;
  padding-bottom:14px!important;
}
.gs-product-layout .gs-app-header-title {
  color:var(--gs-text-primary);
  font-size:var(--gs-type-page-title-size);
  line-height:var(--gs-type-page-title-line);
  letter-spacing:-1px;
  font-weight:700;
}
.gs-product-header-subtitle {
  margin:4px 0 0;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  color:var(--gs-text-secondary);
}
.gs-product-layout .gs-app-avatar {
  background:var(--gs-product-action);
  color:var(--gs-product-on-action);
  border-color:transparent;
  width:44px;
  height:44px;
}
.gs-product-layout .gs-app-header > div > div:last-child > a {
  border-color:transparent!important;
  background:transparent!important;
}
.gs-product-layout .gs-card {
  border-radius:26px!important;
  padding:20px!important;
  margin-bottom:14px!important;
  box-shadow:none;
}
.gs-product-hub .gs-card-title { font-size:calc(var(--gs-type-card-title-size) + 4px); line-height:1.3; }
.gs-product-layout .gs-button {
  min-height:44px;
  border-radius:14px!important;
  font-weight:600;
}
.gs-product-layout .gs-button--primary {
  background:var(--gs-product-action)!important;
  color:var(--gs-product-on-action)!important;
}
.gs-product-hub { padding-top:20px; }
.gs-product-hub .gs-tab-inactive { --gs-segment-tab-inactive-bg:var(--gs-card); }
.gs-product-hub .gs-scrollbar-hide { padding-bottom:12px!important; }
.gs-product-hub .gs-tab-active,
.gs-product-hub .gs-tab-inactive {
  min-height:44px;
  border-radius:14px!important;
  border:1px solid var(--gs-border)!important;
  background:var(--gs-card);
  color:var(--gs-text-secondary);
}
.gs-product-hub .gs-tab-active {
  --gs-coral:var(--gs-coral-glow);
  --gs-on-coral:var(--gs-coral-deep);
  background:var(--gs-coral-glow);
  border-color:var(--gs-coral-light)!important;
  color:var(--gs-coral-deep);
}
.gs-copilot-intro { margin-bottom:18px!important; }
.gs-product-kicker {
  display:inline-flex;
  padding:5px 10px;
  border-radius:30px;
  background:var(--gs-coral-glow);
  color:var(--gs-coral-deep);
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  font-weight:500;
}
.gs-copilot-intro h2 {
  margin:18px 0 10px;
  font-size:calc(var(--gs-type-section-title-size) + 4px);
  line-height:1.15;
  letter-spacing:-.8px;
  font-weight:700;
  color:var(--gs-text-primary);
}
.gs-copilot-intro p {
  margin:0 0 24px;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  color:var(--gs-text-secondary);
}
.gs-product-quick-grid { gap:10px; }
.gs-product-layout .gs-quick-add-item {
  min-height:112px;
  border-radius:20px!important;
  background:var(--gs-card)!important;
  gap:10px!important;
}
.gs-product-layout .gs-quick-add-item > div { border-radius:50%!important; }
.gs-product-layout .gs-quick-add-item .gs-caption { font-size:13px; font-weight:500; }
.gs-product-layout .gs-row-separator { padding-top:14px!important; padding-bottom:14px!important; }
.gs-product-layout .gs-row-separator > div:first-child { border-radius:14px!important; }
.gs-product-layout .gs-row-subtitle { white-space:normal; }
.gs-product-profile { padding-top:12px; }
.gs-product-profile .gs-group-label {
  color:var(--gs-text-primary);
  font-size:var(--gs-type-section-title-size);
  line-height:var(--gs-type-section-title-line);
  letter-spacing:-.3px;
  text-transform:none;
  font-weight:600;
  margin-bottom:10px;
}
.gs-product-profile .gs-profile-identity { padding:22px!important; }
.gs-product-profile .gs-profile-name { font-size:calc(var(--gs-type-profile-name-size) + 4px); letter-spacing:-.5px; }
.gs-product-layout .gs-form-section { background:var(--gs-card); border-radius:24px; padding:18px; }
.gs-product-layout .gs-form-section-inner { background:var(--gs-sand); border-radius:16px; }
.gs-product-layout .gs-form-input { border-radius:12px; min-height:44px; background:var(--gs-card); }
.gs-product-layout .gs-form-section-heading { border-bottom:0; padding-bottom:0; }
.gs-product-layout .gs-choice-chip { border-radius:14px; min-height:44px; }
.gs-product-layout .gs-tracker-sticky-header {
  background:var(--gs-sand);
  border-bottom:1px solid var(--gs-border);
  border-radius:16px;
  color:var(--gs-text-primary);
  z-index:10;
}
.gs-product-layout .gs-tracker-sticky-header h1 { font-size:16px; }
.gs-product-layout .gs-tracker-sticky-header a { color:var(--gs-text-secondary); }
.dark .gs-product-layout {
  --gs-sand:#191a17;
  --gs-warm-cream:#191a17;
  --gs-sand-light:#2d2f29;
  --gs-card:#23251f;
  --gs-card-elevated:#2d2f29;
  --gs-border:#41443b;
  --gs-divider:#41443b;
  --gs-text-primary:#f3f4ed;
  --gs-text-secondary:#cccec4;
  --gs-text-muted:#b2b6a8;
  --gs-text-hint:#b2b6a8;
  --gs-coral:#ff8985;
  --gs-coral-deep:#ffaaa5;
  --gs-coral-light:#67443e;
  --gs-coral-glow:#402925;
  --gs-nav-bg:#23251f;
  --gs-nav-active:#402925;
  --gs-product-action:#f3f4ed;
  --gs-product-on-action:#191a17;
}

.gs-product-layout .gs-product-embedded-header { display:none; }

.gs-product-detail-layout .gs-app-header-title {
  font-size:var(--gs-type-section-title-size);
  line-height:var(--gs-type-section-title-line);
  letter-spacing:-.4px;
}

/* Default product hubs follow the reference hierarchy; full libraries remain
   available on their existing routes and in accessible bottom sheets. */
.gs-product-intro { margin:18px 0 24px; }
.gs-product-intro h2 { font-size:28px;line-height:1.15;letter-spacing:-1px;font-weight:700;color:var(--gs-text-primary);margin:0 0 10px; }
.gs-product-intro p,.gs-product-section-heading p { margin:4px 0 0;color:var(--gs-text-secondary);font-size:16px;line-height:1.5; }
.gs-product-section-heading { display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 12px; }
.gs-product-section-heading h2 { font-size:20px;line-height:1.25;letter-spacing:-.5px;color:var(--gs-text-primary);font-weight:650;margin:0; }
.gs-product-text-link { color:var(--gs-green,#2f6b55);font-size:14px;white-space:nowrap;text-decoration:none; }
.gs-product-carousel { margin:0 calc(-1 * var(--gs-page-px)); }
.gs-product-carousel-rail { position:relative;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gs-page-px);padding:0 var(--gs-page-px);scrollbar-width:none;overscroll-behavior-x:contain; }
.gs-product-carousel-rail::-webkit-scrollbar { display:none; }
.gs-product-carousel-slide { flex:0 0 calc(100% - 20px);min-width:0;scroll-snap-align:start; }
.gs-product-carousel-slide:only-child { flex-basis:100%; }
.gs-product-carousel-controls { display:flex;justify-content:center;align-items:center;gap:24px;padding:14px 0 22px;color:var(--gs-text-secondary); }
.gs-product-carousel-controls > button { width:44px;height:44px;display:grid;place-items:center; }
.gs-product-carousel-controls output { display:block;text-align:center;font-size:12px; }
.gs-product-carousel-dots { display:flex;justify-content:center;gap:5px;margin-top:8px; }
.gs-product-carousel-dots button { width:7px;height:7px;background:var(--gs-border);border-radius:99px; }
.gs-product-carousel-dots button[aria-current=true] { background:var(--gs-coral);width:18px; }
.gs-evidence-card { background:var(--gs-card);border:1px solid var(--gs-border);border-radius:28px;padding:20px 18px 24px;min-height:560px;display:flex;flex-direction:column;align-items:center;height:100%;text-align:center; }
.gs-product-meta { display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;font-size:12px; }
.gs-product-meta > span { display:flex;align-items:center;gap:6px; }
.gs-product-meta > span:last-child { max-width:48%;text-align:right; }
.gs-product-kicker { gap:5px;align-items:center; }
.gs-product-question { width:100%;padding:16px;background:var(--gs-coral-glow);border-radius:18px;text-align:left;margin:16px 0 20px; }
.gs-product-question > span { font-size:11px;text-transform:uppercase;color:var(--gs-coral-deep);letter-spacing:.6px; }
.gs-product-question p { margin:6px 0 0;font-size:16px;font-weight:600;line-height:1.35;color:var(--gs-text-primary); }
.gs-product-steps { display:flex;width:100%;justify-content:center;margin:0 0 22px; }
.gs-product-steps > div { position:relative;flex:1;max-width:110px;display:flex;flex-direction:column;align-items:center;gap:10px; }
.gs-product-steps > div:not(:last-child)::after { content:"";position:absolute;left:calc(50% + 25px);right:calc(-50% + 25px);height:3px;background:var(--gs-border);top:21px; }
.gs-product-step-icon { display:grid;place-items:center;border-radius:50%;background:var(--gs-sand-light);width:44px;height:44px;color:var(--gs-text-secondary); }
.gs-product-step-icon.is-first { background:var(--gs-coral);color:var(--gs-on-coral); }
.gs-product-steps small { font-size:12px;line-height:1.3;color:var(--gs-text-primary); }
.gs-evidence-card h2 { font-size:24px;font-weight:700;letter-spacing:-.7px;line-height:1.2;color:var(--gs-text-primary);margin:0 0 10px; }
.gs-evidence-description { font-size:16px;line-height:1.5;margin:0 0 14px; }
.gs-evidence-note { display:flex;align-items:flex-start;gap:8px;border-top:1px solid var(--gs-border);padding-top:14px;color:var(--gs-green,#2f6b55);font-size:15px;line-height:1.45;margin:0 0 18px;width:100%; }
.gs-evidence-note svg { flex-shrink:0;margin-top:3px; }
.gs-evidence-action { margin-top:auto;padding-top:16px; }
/* Track's lists (plan 018): Care's card surface holding rows, each row one link that does one thing. The divider
   starts at the text; a press tints the row at once and lets go over 150ms, a pointer that can hover tints it
   lightly, and a row never scales. Sizes are the guided tokens, so the larger-text setting grows the lists. */
.gs-track-section { margin-top:var(--guided-space-5); }
.gs-product-track-home > .gs-track-section:first-child { margin-top:0; }
/* The plan card's more: what the plan says about this record, as a list of facts. */
.gs-track-plan-facts { display:grid;gap:var(--guided-space-4);margin:0 0 var(--guided-space-5); }
.gs-track-plan-facts dt { margin:0;color:var(--gs-text-secondary);font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-small); }
.gs-track-plan-facts dd { margin:var(--guided-space-1) 0 0;color:var(--gs-text-primary);font-size:var(--guided-size-body);line-height:var(--guided-leading-body);overflow-wrap:anywhere;text-wrap:pretty; }
.gs-track-plan-facts ul { margin:0;padding-inline-start:20px;list-style:disc; }
.gs-track-group-label { margin:var(--guided-space-5) var(--guided-space-4) var(--guided-space-2);color:var(--gs-text-secondary);font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-label); }
.gs-product-section-heading + .gs-track-group > .gs-track-group-label { margin-top:0; }
.gs-track-list { padding:2px 12px;border:1px solid var(--gs-border);border-radius:var(--guided-radius-routine-card);background:var(--gs-card); }
.gs-track-row { position:relative;display:flex;align-items:center;gap:var(--guided-space-3);min-height:60px;padding:10px 4px;color:var(--gs-text-primary);text-decoration:none;-webkit-tap-highlight-color:transparent; }
.gs-track-row > * { position:relative; }
.gs-track-row::before { content:"";position:absolute;inset:3px -8px;border-radius:var(--guided-radius);background:color-mix(in srgb,var(--gs-text-primary) 7%,transparent);opacity:0;transition:opacity 150ms ease-out; }
.gs-track-row:active::before { opacity:1;transition:none; }
@media (hover:hover) { .gs-track-row:hover::before { opacity:.6; } }
.gs-track-list > * + .gs-track-row::after,.gs-records-day--continued > .gs-track-list > .gs-track-row:first-child::after { content:"";position:absolute;top:0;inset-inline:calc(4px + 40px + var(--guided-space-3)) 0;border-top:1px solid var(--gs-border); }
.gs-track-row:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:-2px;border-radius:var(--guided-radius); }
.gs-track-well { display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;background:color-mix(in srgb,var(--gs-text-primary) 6%,transparent);color:var(--gs-text-primary); }
.gs-track-row-text { display:grid;flex:1;gap:2px;min-width:0; }
.gs-track-row-title { font-size:var(--guided-size-body);font-weight:600;line-height:var(--guided-leading-label);overflow-wrap:anywhere; }
.gs-track-row-meta { color:var(--gs-text-secondary);font-size:var(--guided-size-small);line-height:var(--guided-leading-small);overflow-wrap:anywhere; }
.gs-track-row-chevron { display:grid;place-items:center;flex:none;color:var(--gs-text-hint); }
/* Recent records: small cards in Care's carousel, about two and a half to a 390px screen, growing with the text
   size. A card is one link that opens its record; a press tints it at once and a pointer that can hover tints it lightly (a layer, as on rows, so a theme switch never fades it),
   and its corners are concentric with the icon well (12px + 14px padding + 1px border). Show all sits by the heading. */
.gs-track-show-all { position:relative;display:inline-flex;align-items:center;gap:2px;flex:none;color:var(--gs-text-primary);font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-label);text-decoration:none; }
.gs-track-show-all::after { content:"";position:absolute;inset:-12px -8px; }
.gs-track-show-all:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:4px;border-radius:4px; }
.gs-track-recent .gs-product-carousel-rail { align-items:stretch;padding-block:2px; }
.gs-track-recent .gs-product-carousel-slide,.gs-track-recent .gs-product-carousel-slide:only-child { display:flex;flex:0 0 calc(var(--guided-size-body) * 10.25); }
.gs-track-record-card { display:flex;flex:1;flex-direction:column;min-width:0;padding:14px;border:1px solid var(--gs-border);border-radius:calc(12px + 14px + 1px);background:var(--gs-card);color:var(--gs-text-primary);text-decoration:none;-webkit-tap-highlight-color:transparent;position:relative; }
.gs-track-record-card > * { position:relative; }
.gs-track-record-card::before { content:"";position:absolute;inset:0;border-radius:inherit;background:color-mix(in srgb,var(--gs-text-primary) 7%,transparent);opacity:0;transition:opacity 150ms ease-out; }
.gs-track-record-card:active::before { opacity:1;transition:none; }
@media (hover:hover) { .gs-track-record-card:hover::before { opacity:.6; } }
.gs-track-record-card:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:-2px; }
.gs-track-record-card .gs-track-well { margin-bottom:var(--guided-space-3); }
.gs-track-record-tracker { color:var(--gs-text-secondary);font-size:var(--guided-size-caption);font-weight:600;line-height:var(--guided-leading-label);overflow-wrap:anywhere; }
.gs-track-record-title { margin-top:2px;font-size:var(--guided-size-body);font-weight:650;line-height:var(--guided-leading-heading);overflow-wrap:anywhere;text-wrap:balance; }
.gs-track-record-when { margin-top:auto;padding-top:var(--guided-space-3);color:var(--gs-text-secondary);font-size:var(--guided-size-small);line-height:var(--guided-leading-small); }
.gs-track-recent-empty { margin:0;color:var(--gs-text-secondary);font-size:var(--guided-size-body);line-height:var(--guided-leading-body); }
/* All records (plan 021): one search field, two filters that open sheets, the count, the records by day as Track's
   lists, Show more as Care's secondary button, and a card when nothing matches. The field is 16px or more so iOS never
   zooms, and its ring is the whole field's. A filter that isn't its default takes a 2px ink border. */
.gs-records-field { display:flex;align-items:center;gap:var(--guided-space-2);min-height:48px;padding-inline:var(--guided-space-4) var(--guided-space-1);border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-secondary); }
.gs-records-field:focus-within { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
.gs-records-field input { flex:1;min-width:0;height:46px;margin:0;padding:0;border:0;background:transparent;color:var(--gs-text-primary);font:inherit;font-size:max(16px,var(--guided-size-body));outline:none;-webkit-appearance:none;appearance:none; }
.gs-records-field input:focus { border:0;box-shadow:none;outline:none; }
.gs-records-field input::placeholder { color:var(--gs-text-secondary);opacity:1; }
.gs-records-field input::-webkit-search-cancel-button { display:none; }
.gs-records-clear { display:grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--gs-text-secondary);cursor:pointer; }
.gs-records-clear[hidden] { display:none; }
.gs-records-clear:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:-2px; }
.gs-records-filters { display:flex;gap:var(--guided-space-2);margin-top:var(--guided-space-3); }
.gs-records-filter { flex:1 1 0;display:flex;align-items:center;justify-content:space-between;gap:var(--guided-space-2);min-width:0;min-height:44px;margin:0;padding:var(--guided-space-2) var(--guided-space-3) var(--guided-space-2) var(--guided-space-4);border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-primary);font:inherit;font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-label);text-align:start;cursor:pointer; }
.gs-records-filter > span { min-width:0;overflow-wrap:anywhere; }
.gs-records-filter[data-active] { border-color:var(--gs-text-primary);box-shadow:inset 0 0 0 1px var(--gs-text-primary); }
.gs-records-filter:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
.gs-records-summary { display:flex;align-items:center;justify-content:space-between;gap:var(--guided-space-3);min-height:44px;margin:var(--guided-space-2) var(--guided-space-1) 0; }
.gs-records-summary p { margin:0;color:var(--gs-text-secondary);font-size:var(--guided-size-small);line-height:var(--guided-leading-small);font-variant-numeric:tabular-nums; }
button.gs-track-show-all { margin:0;padding:0;border:0;background:none;font-family:inherit;cursor:pointer; }
.gs-records-day > .gs-track-group-label { margin-top:var(--guided-space-5); }
.gs-records-day:first-child > .gs-track-group-label { margin-top:var(--guided-space-2); }
/* A day continued from the page before joins the list above it: no corners or border between them, one divider. */
.gs-records-day:has(+ .gs-records-day--continued) > .gs-track-list { border-bottom:0;border-end-start-radius:0;border-end-end-radius:0;padding-bottom:0; }
.gs-records-day--continued > .gs-track-list { border-top:0;border-start-start-radius:0;border-start-end-radius:0;padding-top:0; }
.gs-records-more { display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin:var(--guided-space-4) 0 0;padding:var(--guided-space-2) var(--guided-space-4);border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-primary);font:inherit;font-size:var(--guided-size-body);font-weight:600;line-height:var(--guided-leading-label);text-decoration:none;cursor:pointer; }
.gs-records-more:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
.gs-records-empty { margin-top:var(--guided-space-4);padding:var(--guided-space-5) var(--guided-space-4) var(--guided-space-4);border:1px solid var(--gs-border);border-radius:var(--guided-radius-routine-card);background:var(--gs-card);text-align:center; }
.gs-records-empty h2 { margin:0;color:var(--gs-text-primary);font-size:var(--guided-size-count);font-weight:650;line-height:var(--guided-leading-heading);text-wrap:balance; }
.gs-records-empty p { margin:var(--guided-space-1) 0 0;color:var(--gs-text-secondary);font-size:var(--guided-size-body);line-height:var(--guided-leading-body);text-wrap:pretty; }
/* A filter sheet's choices are Track's rows as buttons; the tick, not colour, says which is chosen. */
button.gs-track-row { width:100%;margin:0;border:0;background:transparent;font:inherit;text-align:start;cursor:pointer; }
.gs-records-check { display:grid;place-items:center;flex:none;color:var(--gs-text-primary);visibility:hidden; }
[aria-current="true"] > .gs-records-check, [role="radio"][aria-checked="true"] > .gs-records-check { visibility:visible; }
.gs-records-plain .gs-track-row { min-height:52px; }
.gs-records-plain .gs-track-row + .gs-track-row::after { inset-inline-start:4px; }
.gs-product-sheet .gs-track-list + .gs-track-group > .gs-track-group-label { margin-top:var(--guided-space-5); }
/* Settings (2026-11-13, docs/prototypes/settings): Track's lists and rows. A setting shows its value on the right
   instead of a line that repeats its name; a switch or a choice saves as it's tapped; a short note sits under a
   list when it needs one. One group is a list with an optional label above it. */
.gs-settings { padding-top:2px; }
.gs-settings-group { margin-top:var(--guided-space-5); }
.gs-settings > .gs-settings-group:first-child, .gs-settings > turbo-frame > .gs-settings-group:first-child { margin-top:var(--guided-space-2); }
.gs-settings-group > .gs-track-group-label { margin-top:0; }
/* A row without an icon well starts its divider at the text, not where a well would be. */
.gs-settings .gs-track-list > * + .gs-track-row:not(:has(.gs-track-well))::after { inset-inline-start:4px; }
.gs-settings-note { margin:var(--guided-space-2) var(--guided-space-4) 0;color:var(--gs-text-secondary);font-size:var(--guided-size-small);line-height:var(--guided-leading-small);text-wrap:pretty; }
.gs-settings-value { flex:none;max-width:60%;color:var(--gs-text-secondary);font-size:var(--guided-size-body);line-height:var(--guided-leading-label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.gs-settings-plain .gs-track-row-title { font-weight:500; }
.gs-settings .gs-track-row.gs-settings-static { cursor:default; }
.gs-settings .gs-track-row.gs-settings-static::before { display:none; }
/* A value that only shows (your email) wraps rather than hiding its end. */
.gs-settings-static .gs-settings-value { max-width:70%;white-space:normal;overflow-wrap:anywhere;text-align:end; }
.gs-settings form.button_to, .gs-settings .gs-settings-form { display:contents; }
/* Your name at the top: the row that opens Account, your initials where the well would be. */
.gs-settings-account .gs-track-row { min-height:76px; }
.gs-settings-avatar { display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:50%;overflow:hidden;background:var(--gs-text-primary);color:var(--gs-card);font-size:var(--guided-size-body);font-weight:700;letter-spacing:.02em; }
.gs-settings-avatar img { width:100%;height:100%;object-fit:cover; }
.gs-settings-account .gs-track-row-title { font-size:var(--guided-size-count);font-weight:650; }
.gs-settings-avatar--large { width:72px;height:72px;margin:var(--guided-space-4) auto var(--guided-space-2);font-size:24px; }
/* Log out and Delete account: one centred word, Delete in the app's red. */
.gs-settings-center .gs-track-row { justify-content:center;min-height:52px; }
.gs-settings-center .gs-track-row-title { flex:none;text-align:center; }
.gs-settings-danger .gs-track-row-title { color:var(--gs-red); }
/* A switch: the guided players' (48 x 28, the knob white as on iOS), ink when on. The whole row is the switch. */
.gs-settings-switch { position:relative;flex:none;width:48px;height:28px;border-radius:var(--guided-radius-pill);background:color-mix(in srgb,var(--gs-text-primary) 16%,transparent); }
.gs-settings-switch::after { content:"";position:absolute;top:2px;inset-inline-start:2px;width:24px;height:24px;border-radius:50%;background:var(--guided-knob);box-shadow:0 1px 3px rgb(0 0 0 / .25); }
[aria-checked="true"] > .gs-settings-switch { background:var(--gs-product-action); }
[aria-checked="true"] > .gs-settings-switch::after { background:var(--gs-product-on-action);transform:translateX(20px); }
[aria-checked="true"] > .gs-settings-switch:dir(rtl)::after { transform:translateX(-20px); }
/* A switch that is a checkbox (Apple Health's, driven by the native bridge): the same look, from :checked. */
.gs-settings-switch-input { position:absolute;opacity:0;pointer-events:none; }
.gs-settings-switch-input:checked + .gs-settings-switch { background:var(--gs-product-action); }
.gs-settings-switch-input:checked + .gs-settings-switch::after { background:var(--gs-product-on-action);transform:translateX(20px); }
.gs-settings-switch-input:checked + .gs-settings-switch:dir(rtl)::after { transform:translateX(-20px); }
.gs-settings-switch-input:disabled + .gs-settings-switch { opacity:.45; }
.gs-settings-switch-row { cursor:pointer; }
.gs-settings-switch-row:has(.gs-settings-switch-input:disabled) { cursor:default; }
.gs-settings-switch-row:has(.gs-settings-switch-input:focus-visible) { outline:2px solid var(--gs-text-primary);outline-offset:-2px;border-radius:var(--guided-radius); }
.gs-settings-note--spaced { margin-top:var(--guided-space-5); }
@media (prefers-reduced-motion:no-preference) {
  .gs-settings-switch { transition:background-color 180ms var(--guided-ease-out); }
  .gs-settings-switch::after { transition:transform 180ms var(--guided-ease-out),background-color 180ms; }
}
/* A choice is a radio inside Track's row; the tick, not colour, says which is chosen. */
.gs-settings-choice input { position:absolute;opacity:0;pointer-events:none; }
.gs-settings-choice input:checked ~ .gs-records-check { visibility:visible; }
.gs-settings-choice:has(input:focus-visible) { outline:2px solid var(--gs-text-primary);outline-offset:-2px;border-radius:var(--guided-radius); }
.gs-settings-choice { cursor:pointer; }
/* Text size: a row at the size you picked. */
.gs-settings-preview { margin-top:var(--guided-space-3);padding:var(--guided-space-4);border:1px solid var(--gs-border);border-radius:var(--guided-radius-routine-card);background:var(--gs-card); }
.gs-settings-preview p { margin:0;color:var(--gs-text-primary);font-size:var(--guided-size-body);font-weight:600;line-height:var(--guided-leading-label); }
.gs-settings-preview p + p { margin-top:4px;color:var(--gs-text-secondary);font-size:var(--guided-size-small);font-weight:400;line-height:var(--guided-leading-small); }
.gs-settings-error { margin:var(--guided-space-2) var(--guided-space-4) 0;color:var(--gs-red);font-size:var(--guided-size-small);line-height:var(--guided-leading-small); }
.gs-settings-error[hidden] { display:none; }
.gs-settings-disclaimer { margin:var(--guided-space-6) var(--guided-space-4) 0;color:var(--gs-text-secondary);font-size:var(--guided-size-small);line-height:var(--guided-leading-small);text-wrap:pretty; }
/* A form's one field and its button (Account's name). */
.gs-settings-field { display:grid; }
.gs-settings-field label { display:block;margin:0 var(--guided-space-4) 6px;color:var(--gs-text-secondary);font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-label); }
.gs-settings-field input { width:100%;min-height:52px;padding:0 14px;border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-primary);font:inherit;font-size:var(--guided-size-body); }
.gs-settings-field :is(input, textarea):focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:1px; }
.gs-settings-field textarea { width:100%;min-height:160px;padding:12px 14px;border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-primary);font:inherit;font-size:var(--guided-size-body);line-height:var(--guided-leading-body);resize:vertical; }
.gs-settings-field [aria-invalid="true"] { border-color:var(--gs-red); }
.gs-settings-field .gs-settings-error { margin:6px var(--guided-space-4) 0; }
.gs-settings-field--spaced { margin-top:var(--guided-space-4); }
.gs-settings-heading { margin:var(--guided-space-6) var(--guided-space-4) 0;color:var(--gs-text-primary);font-size:var(--guided-size-body);font-weight:650;line-height:var(--guided-leading-label); }
.gs-settings-note--lead { margin-top:var(--guided-space-1); }
.gs-settings-heading + .gs-settings-note--lead + .gs-track-group-label, .gs-settings .gs-track-list + .gs-track-group-label { margin-top:var(--guided-space-4); }
.gs-settings-field textarea.gs-settings-other-text { min-height:72px;margin-top:var(--guided-space-3); }
.gs-settings-none { margin-top:var(--guided-space-3); }
.gs-settings-pair { grid-template-columns:1fr 1fr;gap:var(--guided-space-3); }
.gs-settings-intro { margin:var(--guided-space-4) var(--guided-space-4) 0; }
.gs-settings-intro h1 { margin:var(--guided-space-1) 0 0;color:var(--gs-text-primary);font-size:var(--guided-size-count);font-weight:650;line-height:var(--guided-leading-heading);text-wrap:balance; }
.gs-settings-intro p { margin:var(--guided-space-1) 0 0;color:var(--gs-text-secondary);font-size:var(--guided-size-body);line-height:var(--guided-leading-body);text-wrap:pretty; }
.gs-settings-intro .gs-settings-step { margin:0;font-size:var(--guided-size-small);font-weight:600;line-height:var(--guided-leading-label); }
/* Notifications (2026-11-13): one list. A row is a button inside its form (button_to), so the divider rule follows
   the forms; unread rows carry a dot and a bolder title; a message shows two lines at most. */
.gs-settings-head-button { position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border:1px solid var(--gs-border);border-radius:50%;background:var(--gs-card);color:var(--gs-text-secondary);text-decoration:none;-webkit-tap-highlight-color:transparent; }
.gs-settings-head-button::after { content:"";position:absolute;inset:-2px;border-radius:50%; }
.gs-settings-head-button:active { background:color-mix(in srgb,var(--gs-text-primary) 6%,var(--gs-card)); }
.gs-settings-head-button:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
.gs-settings-group-head { display:flex;align-items:baseline;justify-content:space-between;gap:var(--guided-space-3); }
.gs-settings-group-head .gs-track-group-label { margin:0 0 var(--guided-space-2) var(--guided-space-4); }
.gs-settings-text-form { margin:0 var(--guided-space-4) 0 0; }
.gs-settings-text-button { min-height:44px;padding:0 4px;border:0;background:transparent;color:var(--gs-text-primary);font:inherit;font-size:var(--guided-size-small);font-weight:600;cursor:pointer; }
.gs-settings-text-button:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px;border-radius:8px; }
.gs-settings-inbox-item { margin:0; }
.gs-settings-inbox-row { align-items:flex-start; }
.gs-settings-inbox-row .gs-track-well { margin-top:2px; }
.gs-settings-inbox > .gs-settings-inbox-item + .gs-settings-inbox-item > .gs-track-row::after { content:"";position:absolute;top:0;inset-inline:calc(4px + 40px + var(--guided-space-3)) 0;border-top:1px solid var(--gs-border); }
.gs-settings-inbox-row .gs-track-row-title { display:flex;align-items:center;gap:var(--guided-space-2);min-width:0;font-weight:500; }
.gs-settings-inbox-row[data-unread] .gs-track-row-title { font-weight:700; }
.gs-settings-inbox-title { min-width:0;overflow-wrap:anywhere; }
.gs-settings-unread { flex:none;width:8px;height:8px;border-radius:50%;background:var(--gs-text-primary); }
.gs-settings-inbox-body { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.gs-settings-secondary { display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin:var(--guided-space-4) 0 0;padding:var(--guided-space-2) var(--guided-space-4);border:1px solid var(--gs-border);border-radius:var(--guided-radius);background:var(--gs-card);color:var(--gs-text-primary);font:inherit;font-weight:600;text-decoration:none;cursor:pointer; }
.gs-settings-secondary:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
.gs-settings-primary { display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--guided-primary-h);margin:var(--guided-space-4) 0 0;padding:var(--guided-space-2) var(--guided-space-4);border:1.5px solid var(--gs-product-action);border-radius:var(--guided-radius);background:var(--gs-product-action);color:var(--gs-product-on-action);font-family:var(--guided-font);font-size:var(--guided-size-body);font-weight:700;line-height:var(--guided-leading-label);cursor:pointer; }
.gs-settings-primary:focus-visible { outline:2px solid var(--gs-text-primary);outline-offset:2px; }
@media (prefers-reduced-motion:no-preference) {
  .gs-settings-primary { transition:transform var(--guided-press) var(--guided-ease-out); }
  .gs-settings-primary:active { transform:scale(.96); }
}
.gs-care-product-home,.gs-care-detail,.gs-product-track-home { padding-top:2px; }
.gs-care-support-card { border-radius:26px;padding:22px 20px;background:var(--gs-coral-glow);height:100%;min-height:246px;display:flex;align-items:flex-start;flex-direction:column; }
.gs-care-support-card h2 { margin:16px 0 10px;font-size:24px;line-height:1.2;letter-spacing:-.6px;font-weight:700;color:var(--gs-text-primary); }
.gs-care-support-card p { font-size:16px;line-height:1.45;margin:0 0 20px; }
.gs-care-support-card .gs-button { margin-top:auto; }
/* Let content determine the shared carousel height, without reserved blank rows. Its corner is its button's plus its
   padding and border (14 + 20 + 1), so the two curves are concentric (plans/024). */
.gs-care-support-card--compact { min-height:0; padding:20px; gap:12px; border:1px solid var(--gs-border); border-radius:calc(var(--guided-radius) + 21px); background:var(--gs-card); }
.gs-care-support-card--compact h2 { margin:0; font-size:1.125rem; font-weight:650; line-height:1.3; letter-spacing:-.4px; overflow-wrap:anywhere; }
/* Coral-deep on coral-glow: 5.19:1 light, 7.39:1 dark (on coral-light it was 4.16:1 at 12px; plans/024). */
.gs-care-status-pill { padding:4px 10px; font-size:.75rem; line-height:1.35; max-width:100%; background:var(--gs-coral-glow); color:var(--gs-coral-deep); border-radius:999px; }
.gs-care-support-context { margin:0 0 12px; }
.gs-care-support-preview { width:100%; }
.gs-care-support-preview p { margin:0; color:var(--gs-text-secondary); font-size:1rem; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; overflow-wrap:anywhere; }
.gs-care-support-more { min-height:44px; color:var(--gs-text-primary); font-size:.875rem; text-decoration:underline; text-underline-offset:3px; }
.gs-care-support-more:focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:3px; border-radius:4px; }
.gs-care-support-description { margin:0 0 24px; color:var(--gs-text-secondary); line-height:1.5; white-space:pre-line; overflow-wrap:anywhere; }
.gs-care-destinations { margin:24px 0; }
.gs-care-destinations > h2 { font-size:13px;font-weight:600;margin-bottom:12px; }
.gs-care-destination { display:flex;align-items:center;gap:14px;border:1px solid var(--gs-border);background:var(--gs-card);border-radius:22px;padding:16px 14px;margin-bottom:10px;color:var(--gs-text-primary);text-decoration:none; }
.gs-product-icon-well { width:48px;height:48px;border-radius:16px;background:var(--gs-sand-light);display:grid;place-items:center;flex-shrink:0;color:var(--gs-text-secondary); }
.gs-care-destination > span:nth-child(2) { flex:1;min-width:0; }
.gs-care-destination strong { font-size:18px;letter-spacing:-.4px;display:block;font-weight:650;line-height:1.25; }
.gs-care-destination > span > span { display:block;color:var(--gs-text-secondary);font-size:15px;line-height:1.4;margin-top:4px; }
.gs-care-destination > svg { flex-shrink:0; color:var(--gs-text-hint); }
.gs-care-home-destinations { display:grid; gap:12px; }
.gs-care-home-destinations > .gs-care-destination { margin:0; }
.gs-care-detail .gs-care-list-shell { border-radius:24px;background:var(--gs-card);border:1px solid var(--gs-border);padding:8px 14px; }
.gs-care-detail .gs-row-title,.gs-care-detail .gs-row-subtitle { white-space:normal; }
.gs-care-saved-visit { margin-bottom:22px; }
.gs-care-saved-visit .gs-section-title { margin-bottom:12px; }
.gs-product-layout .gs-product-sheet { background:var(--gs-card)!important;border-radius:28px 28px 0 0!important;box-shadow:0 -12px 40px #00000012; }
.gs-product-layout .gs-sheet-title { font-size:21px;line-height:1.25;letter-spacing:-.4px;color:var(--gs-text-primary); }
.gs-product-layout .gs-sheet-header { padding:12px 20px 18px; }
.gs-product-layout .gs-sheet-close { min-width:44px;min-height:44px; }
.gs-product-library-group { background:var(--gs-card);border:1px solid var(--gs-border);border-radius:18px;margin-bottom:10px;padding:10px; }
.gs-product-library-group summary { position:relative;cursor:pointer;list-style:none;min-height:48px;padding:5px 28px 5px 6px; }
.gs-product-library-group summary::-webkit-details-marker { display:none; }
.gs-product-library-group summary::after { content:"›";position:absolute;right:10px;top:6px;font-size:24px; }
.gs-product-library-group summary strong,.gs-product-library-group summary small { display:block; }
.gs-product-library-group summary strong { font-size:15px;color:var(--gs-text-primary); }
.gs-product-library-group summary small { font-size:12px;margin-top:2px; }
.gs-product-library-group .gs-row-separator { background:var(--gs-sand-light);border-radius:14px;margin-top:5px;padding:10px!important; }
/* Chat (plans/024, from the prototype's pc-* rules; simplified 2026-11-12 after Tolan). The home: the GI Copilot's
   intro with two pills that open sheets (Ask a specialist, Recent chats) centred in the middle, and the questions (one
   button each) just above one composer over the tab bar. Sizes are the guided tokens, so larger text grows them. The home fills the
   space <main> leaves (its --gs-main-top-space and --gs-main-bottom-space) and ends 12px above the composer, whose
   height chat_composer_controller.js publishes as --gs-chat-composer-h and whose offset from the screen's bottom is
   --gs-chat-composer-bottom (the composer's own bottom, per platform, below). A free account's home has no composer:
   the Premium bar stays first and the rest sits at the bottom of the page. */
.gs-chat-home { --gs-chat-composer-bottom:calc(70px + env(safe-area-inset-bottom)); display:flex; flex-direction:column; min-height:calc(100dvh - var(--gs-main-top-space, 0px) - var(--gs-main-bottom-space, 0px)); padding-top:2px; padding-bottom:calc(var(--gs-chat-composer-h, 76px) + var(--gs-chat-composer-bottom) - var(--gs-main-bottom-space, 0px) + var(--guided-space-3)); }
/* The iOS app (2026-11-13): iOS draws its tab bar over the bottom of the web view, while the page's own scrolling
   already leaves room for it (<main> has no bottom padding there). So what's fixed (the composer) clears the tab bar by
   the app's 90px, as the companion, sheets and Visits do, and the page counts only the part of that 90px the scroll
   doesn't already leave: the tab bar is 83px with a home indicator (taller-than-20:11 phones), 49px without. A home
   or new chat as tall as the screen kept scrolling by the tab bar's height; now it ends where the composer does. */
:is(.gs-chat-home, .gs-chat-conversation, .gs-chat-composer)[data-native-platform="ios"] { --gs-chat-ios-clearance:calc(90px + env(safe-area-inset-bottom, 0px)); --gs-chat-ios-tab-room:49px; }
@media (max-aspect-ratio: 11/20) { :is(.gs-chat-home, .gs-chat-conversation, .gs-chat-composer)[data-native-platform="ios"] { --gs-chat-ios-tab-room:83px; } }
.gs-chat-home[data-native-platform="ios"] { --gs-chat-composer-bottom:var(--gs-chat-ios-clearance); min-height:calc(100dvh - var(--gs-main-top-space, 0px) - var(--gs-chat-ios-clearance)); padding-bottom:calc(var(--gs-chat-composer-h, 76px) + var(--guided-space-3)); }
.gs-chat-home[data-native-platform="android"] { --gs-chat-composer-bottom:env(safe-area-inset-bottom); }
/* As a new chat, in two groups: the GI Copilot's intro and the pills, centred in the middle of the free space; the
   questions at the bottom, on top of the composer. */
.gs-chat-home-who { margin-block:auto; }
.gs-chat-home > .gs-chat-questions { margin-top:var(--guided-space-4); }
.gs-chat-home[data-locked] { padding-bottom:0; }
.gs-chat-section { margin-top:var(--guided-space-5); }
/* Ask a specialist and Recent chats: Chat's follow-up pills, side by side and centred under the GI Copilot's intro,
   each with its icon. The row is the intro's full width (its container needs one). Where it is too narrow for both
   with icons (about 305px in English, so 320px screens), the icons go and the labels stay on one line; they wrap
   only when the text itself is too large to fit. */
.gs-chat-doors { container-type:inline-size; display:flex; flex-wrap:wrap; justify-content:center; gap:8px; width:100%; margin-top:var(--guided-space-3); }
.gs-chat-door { display:inline-flex; align-items:center; gap:6px; }
.gs-chat-door svg { flex:none; color:var(--gs-text-secondary); }
@container (width < 19.5rem) { .gs-chat-door svg { display:none; } }
/* Free: the Premium bar comes first, in the page. No conversations yet: one row says who answers. */
.gs-chat-premium { display:flex; align-items:center; justify-content:space-between; gap:var(--guided-space-3); margin-bottom:var(--guided-space-3); padding:var(--guided-space-3) var(--guided-space-3) var(--guided-space-3) var(--guided-space-4); border:1px solid var(--gs-border); border-radius:calc(var(--guided-radius) + var(--guided-space-3) + 1px); background:var(--gs-card); color:var(--gs-text-primary); font-size:var(--guided-size-body); font-weight:600; line-height:var(--guided-leading-label); }
.gs-chat-premium > span { min-width:0; overflow-wrap:anywhere; }
.gs-chat-premium .gs-chat-primary { flex:none; width:auto; min-height:44px; padding-inline:var(--guided-space-4); white-space:nowrap; }
/* A question (2026-11-12), on the Chat home and in a new chat: a small card as one button with Track's small cards'
   corners and 16px all round, its question at body size and medium weight (quieter than the page's title), clamped
   to four lines (the whole question is in its name), and Send's arrow in the bottom corner. The cards are one fixed
   width (in rem, so larger text widens them), so their lines fill the same on every screen and the next card's first
   words show; they share one height, every question starting at the top so their first lines line up, the arrow
   filling the bottom. */
:is(.gs-chat-questions, .gs-chat-new-questions) .gs-product-carousel-slide { flex:0 0 15.5rem; }
:is(.gs-chat-questions, .gs-chat-new-questions) .gs-product-carousel-slide:only-child { flex-basis:100%; }
.gs-chat-question-form { height:100%; margin:0; }
.gs-chat-question { width:100%; margin:0; font:inherit; color:inherit; text-align:start; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:background-color .15s ease-out; }
.gs-chat-question.gs-care-support-card--compact { justify-content:flex-start; gap:var(--guided-space-2); padding:16px; border-radius:calc(12px + 14px + 1px); }
.gs-chat-question-ask { display:flex; align-self:flex-end; margin-top:auto; color:var(--gs-text-secondary); }
.gs-chat-question:active { background:color-mix(in srgb, var(--gs-text-primary) 6%, var(--gs-card)); }
.gs-chat-question:focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:2px; }
.gs-chat-question-text { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; margin:0; color:var(--gs-text-primary); font-size:var(--guided-size-body); font-weight:500; line-height:var(--guided-leading-body); overflow-wrap:anywhere; text-wrap:pretty; }
.gs-chat-question .gs-care-status-pill { align-self:flex-start; }
/* The Recent chats sheet: search, the rows, then All conversations. */
.gs-chat-recent-search { margin-bottom:var(--guided-space-3); }
.gs-chat-secondary.gs-chat-all-conversations { margin-top:var(--guided-space-4); text-decoration:none; }
/* The one filled button (ink) and the quiet one. */
.gs-chat-primary { display:flex; align-items:center; justify-content:center; gap:var(--guided-space-2); width:100%; min-width:0; min-height:var(--guided-primary-h); margin:0; padding:var(--guided-space-2) var(--guided-space-4); border:1.5px solid var(--gs-product-action); border-radius:var(--guided-radius); background:var(--gs-product-action); color:var(--gs-product-on-action); font-family:inherit; font-size:var(--guided-size-body); font-weight:700; line-height:var(--guided-leading-label); text-align:center; text-decoration:none; overflow-wrap:anywhere; cursor:pointer; }
.gs-chat-secondary { display:flex; align-items:center; justify-content:center; width:100%; min-height:48px; margin:0; padding:var(--guided-space-2) var(--guided-space-4); border:1px solid var(--gs-border); border-radius:var(--guided-radius); background:var(--gs-card); color:var(--gs-text-primary); font:inherit; font-size:var(--guided-size-body); font-weight:600; line-height:var(--guided-leading-label); cursor:pointer; }
.gs-chat-secondary:active { background:color-mix(in srgb, var(--gs-text-primary) 8%, var(--gs-card)); }
:is(.gs-chat-primary, .gs-chat-secondary, .gs-chat-send, .gs-chat-filter):focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:2px; }
/* A conversation's row: its question on one line with an ellipsis, an unread dot, a bookmark when pinned. */
.gs-chat-row .gs-track-row-text { grid-template-columns:minmax(0, 1fr); }
.gs-chat-row .gs-track-row-title { display:flex; align-items:center; gap:var(--guided-space-2); min-width:0; }
.gs-chat-row[data-unread] .gs-track-row-title { font-weight:700; }
.gs-chat-ellipsis { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gs-chat-unread { flex:none; width:8px; height:8px; border-radius:50%; background:var(--gs-text-primary); }
.gs-chat-pin { display:inline-grid; flex:none; color:var(--gs-text-secondary); }
/* A guide's card: Track's Recent records card at its width (the third still peeks at 390px), with 12px padding
   so the longest word ("Gastroenterology") fits whole, the corner concentric with the well (12 + 12 + 1). A name
   wraps to two lines at most and never inside a word (balanced wrapping split it). Not built yet: greyed, dashed. */
button.gs-track-record-card { width:100%; margin:0; font:inherit; text-align:start; cursor:pointer; }
.gs-chat-guide-card { padding:12px; border-radius:calc(12px + 12px + 1px); }
.gs-chat-guide-card .gs-track-record-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; overflow-wrap:break-word; text-wrap:pretty; }
.gs-chat-soon-card { border-style:dashed; color:var(--gs-text-secondary); }
.gs-chat-soon-card :is(.gs-track-well, .gs-track-record-title) { color:var(--gs-text-secondary); }
/* Conversations (chat_threads#index): Track's search field, four filters as pills, then Pinned and the days as Track's
   groups, Show more as Care's secondary button, and Care's card when nothing's listed. A filter is 36px with an
   invisible edge (44px tall) and 12px padding, so all four fit at 320px; the row scrolls if a translation runs longer,
   its 4px padding holding the edges and the focus ring. A group continued from the page before joins the list above. */
.gs-chat-conversations { padding-top:2px; }
.gs-chat-filters { display:flex; gap:var(--guided-space-2); margin:calc(var(--guided-space-3) - 4px) calc(-1 * var(--gs-page-px)) 0; padding:4px var(--gs-page-px); overflow-x:auto; scrollbar-width:none; }
.gs-chat-filters::-webkit-scrollbar { display:none; }
.gs-chat-filter { position:relative; flex:none; min-height:36px; margin:0; padding:0 12px; border:1px solid var(--gs-border); border-radius:var(--gs-radius-pill); background:var(--gs-card); color:var(--gs-text-primary); font:inherit; font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-label); white-space:nowrap; cursor:pointer; }
.gs-chat-filter::after { content:""; position:absolute; inset:-4px -2px; }
.gs-chat-filter[aria-pressed="true"] { border-color:var(--gs-text-primary); background:var(--gs-text-primary); color:var(--gs-card); }
.gs-chat-filter[aria-pressed="false"]:active { background:color-mix(in srgb, var(--gs-text-primary) 8%, var(--gs-card)); }
.gs-chat-group > .gs-track-group-label { margin-top:var(--guided-space-5); }
.gs-chat-group:first-child > .gs-track-group-label { margin-top:var(--guided-space-4); }
.gs-chat-group:has(+ .gs-chat-group--continued) > .gs-track-list { border-bottom:0; border-end-start-radius:0; border-end-end-radius:0; padding-bottom:0; }
.gs-chat-group--continued > .gs-track-list { border-top:0; border-start-start-radius:0; border-start-end-radius:0; padding-top:0; }
.gs-chat-group--continued > .gs-track-list > .gs-track-row:first-child::after { content:""; position:absolute; top:0; inset-inline:calc(4px + 40px + var(--guided-space-3)) 0; border-top:1px solid var(--gs-border); }
a.gs-chat-secondary { text-decoration:none; }
.gs-chat-more { margin-top:var(--guided-space-4); }
.gs-chat-empty { margin-top:var(--guided-space-4); padding:var(--guided-space-5) var(--guided-space-4) var(--guided-space-4); border:1px solid var(--gs-border); border-radius:var(--guided-radius-routine-card); background:var(--gs-card); }
.gs-chat-empty h2 { margin:0; color:var(--gs-text-primary); font-size:var(--guided-size-count); font-weight:650; line-height:var(--guided-leading-heading); overflow-wrap:anywhere; text-wrap:balance; }
.gs-chat-empty p { margin:var(--guided-space-1) 0 0; color:var(--gs-text-secondary); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); text-wrap:pretty; }
.gs-chat-empty .gs-chat-secondary { margin-top:var(--guided-space-4); }
/* The composer: + (records, test results, Fast or Deep), the field and Send, with chips above the text. On the Chat
   home it's fixed above the tab bar, under the web tab bar (z-index 19), which grows to 73px with larger text, so the
   bar's edge always shows and only the composer's 10px foot can tuck beneath it. In a conversation the web tab bar
   steps aside and it's fixed at the bottom with the safe area under it. iOS draws its tab bar over the web view;
   Android insets the web view above its own. The field's corner is the round buttons' plus its padding and border
   (20 + 6 + 1); the text is 16px or more so iOS never zooms. */
.gs-chat-composer { position:fixed; z-index:19; left:50%; bottom:calc(70px + env(safe-area-inset-bottom)); transform:translateX(-50%); width:100%; max-width:var(--gs-max-width); padding:8px var(--gs-page-px) 10px; background:linear-gradient(180deg, transparent, var(--gs-sand) 22%); }
/* iOS app: above the tab bar, or on the keyboard while one is open (it covers the tab bar), which
   chat_composer_controller.js measures into --gs-chat-keyboard-bottom (2026-11-13). */
.gs-chat-composer[data-native-platform="ios"] { bottom:var(--gs-chat-keyboard-bottom, var(--gs-chat-ios-clearance)); }
.gs-chat-composer[data-native-platform="android"] { bottom:env(safe-area-inset-bottom); }
.gs-chat-composer[data-place="thread"][data-native-platform="web"] { bottom:0; padding-bottom:calc(10px + env(safe-area-inset-bottom)); }
.gs-chat-field { display:flex; flex-direction:column; margin:0; padding:6px; border:1px solid var(--gs-border); border-radius:27px; background:var(--gs-card); box-shadow:var(--gs-shadow-md); }
.gs-chat-field:focus-within { border-color:var(--gs-text-primary); box-shadow:var(--gs-shadow-md), 0 0 0 1px var(--gs-text-primary); }
.gs-chat-field-row { display:flex; align-items:flex-end; gap:var(--guided-space-1); }
.gs-chat-field textarea { flex:1; min-width:0; max-height:136px; margin:0; padding:9px 4px; border:0; background:transparent; color:var(--gs-text-primary); font:inherit; font-size:max(16px, var(--guided-size-body)); line-height:1.4; resize:none; overflow-y:hidden; outline:none; box-shadow:none; }
.gs-chat-field textarea:focus { border:0; box-shadow:none; outline:none; }
.gs-chat-field textarea::placeholder { color:var(--gs-text-secondary); opacity:1; }
.gs-chat-add, .gs-chat-send { position:relative; display:grid; place-items:center; flex:none; width:40px; height:40px; margin:0; padding:0; border:0; border-radius:50%; cursor:pointer; }
.gs-chat-add { background:transparent; color:var(--gs-text-secondary); }
@media (hover:hover) { .gs-chat-add:hover { background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); } }
.gs-chat-add:active { background:color-mix(in srgb, var(--gs-text-primary) 8%, transparent); }
.gs-chat-send { background:var(--gs-text-primary); color:var(--gs-card); }
.gs-chat-send:disabled { background:color-mix(in srgb, var(--gs-text-primary) 10%, transparent); color:var(--gs-text-secondary); cursor:default; }
/* Small controls reach 44px with an invisible edge; the chip's remove reaches 32px, its chip's height, so it never
   covers the field below. */
:is(.gs-chat-add, .gs-chat-send)::after { content:""; position:absolute; inset:-2px; border-radius:50%; }
.gs-chat-chip-remove::after { content:""; position:absolute; inset:-4px; border-radius:50%; }
/* Chips above the text: Deep (removable) and a group chat's guides (one chip naming them, which opens the Guides
   sheet; dashed, Choose guides, when there are none). 32px, their names on one line. */
.gs-chat-chips { display:flex; flex-wrap:wrap; gap:6px; padding:2px 2px 6px; }
.gs-chat-chips[hidden], .gs-chat-chip[hidden], .gs-chat-chip-icon[hidden] { display:none; }
.gs-chat-chip-icon { display:grid; flex:none; }
.gs-chat-chip-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gs-chat-chip.gs-chat-chip--removable { padding:0 4px 0 10px; background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); }
.gs-chat-chip-remove { position:relative; display:grid; place-items:center; flex:none; width:24px; height:24px; margin:0; padding:0; border:0; border-radius:50%; background:transparent; color:var(--gs-text-secondary); cursor:pointer; }
.gs-chat-chip-remove:active { background:color-mix(in srgb, var(--gs-text-primary) 8%, transparent); }
button.gs-chat-chip { position:relative; margin:0; border:0; font:inherit; font-size:var(--guided-size-small); font-weight:600; cursor:pointer; }
.gs-chat-chip.gs-chat-chip--guides { padding:0 8px 0 10px; background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); }
.gs-chat-chip.gs-chat-chip--guides:active { background:color-mix(in srgb, var(--gs-text-primary) 12%, transparent); }
.gs-chat-chip-more { color:var(--gs-text-secondary); }
.gs-chat-chip.gs-chat-chip--guides.gs-chat-chip--add { padding:0 12px 0 8px; border:1px dashed var(--gs-text-secondary); background:transparent; }
.gs-chat-count { margin:6px var(--guided-space-2) 0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); text-align:end; font-variant-numeric:tabular-nums; }
.gs-chat-count[hidden] { display:none; }
/* Under the composer: the guides are AI and not medical advice, one quiet centred line. */
.gs-chat-note { margin:6px var(--guided-space-2) 0; color:var(--gs-text-secondary); font-size:12px; line-height:16px; text-align:center; text-wrap:balance; }
/* A free account's conversation: the Premium bar in the composer's place, opening the trial sheet. */
.gs-chat-lock { display:flex; align-items:center; justify-content:space-between; gap:var(--guided-space-3); padding:var(--guided-space-3) var(--guided-space-3) var(--guided-space-3) var(--guided-space-4); border:1px solid var(--gs-border); border-radius:calc(var(--guided-radius) + var(--guided-space-3) + 1px); background:var(--gs-card); box-shadow:var(--gs-shadow-md); color:var(--gs-text-primary); font-size:var(--guided-size-body); font-weight:600; line-height:var(--guided-leading-label); }
.gs-chat-lock > span { min-width:0; overflow-wrap:anywhere; }
.gs-chat-lock .gs-chat-primary { flex:none; width:auto; min-height:44px; padding-inline:var(--guided-space-4); white-space:nowrap; }
/* Sheets: a line of text and their buttons. */
.gs-chat-sheet-text { margin:0 0 var(--guided-space-4); color:var(--gs-text-secondary); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); text-wrap:pretty; }
.gs-chat-sheet-buttons { display:grid; gap:var(--guided-space-2); }
/* The Share sheet (chat/sheets/_share): a link older than the newest messages says so in a tinted line above Update
   link, so it isn't read as the body's small print. */
.gs-chat-share-stale { margin-top:calc(-1 * var(--guided-space-2)); padding:var(--guided-space-3) var(--guided-space-4); border-radius:var(--guided-radius); background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); }
/* The Add and Guides sheets: groups of Track rows; a choice's check (filled when ticked); the Guides sheet's note when
   a send needed more guides; and its Done, which rides the sheet's bottom edge while the list scrolls beneath (the
   sheet's own bottom padding moves into the bar, so nothing scrolls past below it). */
.gs-chat-sheet .gs-track-group:first-of-type > .gs-track-group-label { margin-top:0; }
.gs-chat-sheet .gs-track-group + .gs-track-group > .gs-track-group-label { margin-top:var(--guided-space-5); }
.gs-chat-check { display:grid; place-items:center; flex:none; width:24px; height:24px; border:1.5px solid var(--gs-border); border-radius:50%; color:transparent; }
[aria-checked="true"] > .gs-chat-check { border-color:var(--gs-text-primary); background:var(--gs-text-primary); color:var(--gs-card); }
.gs-chat-sheet-note { margin:0 0 var(--guided-space-4); padding:var(--guided-space-3) var(--guided-space-4); border-radius:var(--guided-radius); background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); font-size:var(--guided-size-body); font-weight:600; line-height:var(--guided-leading-body); }
.gs-chat-sheet-note:empty { display:none; }
.gs-chat-sheet-sticky { position:sticky; bottom:0; z-index:1; margin:var(--guided-space-3) calc(-1 * var(--gs-page-px)) 0; padding:var(--guided-space-3) var(--gs-page-px) max(var(--gs-sheet-bottom-padding, 32px), calc(var(--guided-space-4) + env(safe-area-inset-bottom))); background:var(--gs-card); box-shadow:0 -1px 0 var(--gs-border); }
.gs-sheet-panel:has(.gs-chat-sheet-sticky), .gs-sheet-panel:has(.gs-chat-sheet-sticky) .gs-sheet-panel-content { padding-bottom:0 !important; }
/* Every button answers the press: it shrinks to 0.96 when motion is allowed (the quiet ones also tint, above).
   Controls don't select their text, open a callout on a long press, or wait for a double tap; text stays selectable. */
:is(.gs-chat-primary, .gs-chat-secondary, .gs-chat-send, .gs-chat-add, .gs-chat-filter, button.gs-chat-chip, .gs-chat-chip-remove) { -webkit-tap-highlight-color:transparent; }
@media (prefers-reduced-motion:no-preference) {
  :is(.gs-chat-primary, .gs-chat-secondary, .gs-chat-send, .gs-chat-add, .gs-chat-filter, button.gs-chat-chip, .gs-chat-chip-remove) { transition:transform var(--guided-press) var(--guided-ease-out); }
  :is(.gs-chat-primary, .gs-chat-secondary, .gs-chat-send, .gs-chat-add, .gs-chat-filter, button.gs-chat-chip, .gs-chat-chip-remove):not(:disabled):active { transform:scale(.96); }
}
:is(.gs-chat-add, button.gs-chat-chip, .gs-chat-chip-remove):focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:2px; }
:is(.gs-chat-home, .gs-chat-sheet, .gs-chat-conversations, .gs-chat-composer) :is(button, .gs-chat-primary, .gs-chat-secondary, a.gs-track-row, .gs-track-record-card, .gs-track-show-all) { -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; touch-action:manipulation; }
/* A conversation (plans/024, the prototype's pc-* rules renamed): your messages in an ink bubble, answers as plain text
   with their guide named when it changes, a guide's actions as tinted pills, which records it used, then Copy and More.
   The page scrolls, not the log; its bottom padding follows the composer's height (and, in the native apps, the tab
   bar the composer rides above), so the last message always clears it. The log spans the page's width so the tools'
   and pills' edges and focus rings never clip, its content on the page's gutters, and clips sideways without becoming
   a scroller of its own. */
.gs-chat-conversation { position:relative; display:flex; flex-direction:column; padding-bottom:calc(var(--gs-chat-composer-h, 76px) + var(--gs-chat-composer-lift, 0px)); color:var(--gs-text-primary); }
.gs-chat-conversation[data-native-platform="ios"] { --gs-chat-composer-lift:calc(var(--gs-chat-ios-clearance) - var(--gs-chat-ios-tab-room) + var(--guided-space-3)); }
.gs-chat-conversation[data-native-platform="android"] { --gs-chat-composer-lift:env(safe-area-inset-bottom); }
.gs-chat-conversation-body { display:flex; flex-direction:column; }
.gs-chat-thread { position:relative; display:flex; flex-direction:column; gap:var(--guided-space-4); margin:0 calc(-1 * var(--gs-page-px)); padding:var(--guided-space-2) var(--gs-page-px) var(--guided-space-4); overflow-x:clip; }
.gs-chat-thread > * { flex-shrink:0; }
.gs-chat-native-more { display:flex; justify-content:flex-end; padding:2px 0 6px; }
html[data-bridge-components~="overflow-menu"] .gs-chat-native-more { display:none; }
.gs-chat-item { display:flex; flex-direction:column; gap:var(--guided-space-4); margin:0; }
.gs-chat-day { align-self:center; margin:var(--guided-space-2) 0 0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-label); }
/* Your message: ink on the page, card-coloured text, so it holds in dark mode too (the coral bubble measured 2.29:1). */
.gs-chat-user-wrap { align-self:flex-end; display:flex; flex-direction:column; align-items:flex-end; gap:6px; max-width:82%; }
.gs-chat-attached { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.gs-chat-user { margin:0; padding:10px 14px; border-radius:20px 20px 6px 20px; background:var(--gs-text-primary); color:var(--gs-card); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); white-space:pre-wrap; overflow-wrap:anywhere; }
.gs-chat-user:dir(rtl) { border-radius:20px 20px 20px 6px; }
.gs-chat-photo { max-width:240px; border:1px solid var(--gs-border); border-radius:var(--guided-radius); }
.gs-chat-chip { display:inline-flex; align-items:center; gap:6px; max-width:100%; min-height:32px; padding:0 10px; border-radius:var(--gs-radius-pill); color:var(--gs-text-primary); font-size:var(--guided-size-small); font-weight:600; line-height:1.2; }
.gs-chat-chip svg { flex:none; }
.gs-chat-chip--static { border:1px solid var(--gs-border); background:var(--gs-card); }
.gs-chat-by { display:flex; align-items:center; gap:6px; margin:0 0 var(--guided-space-2); color:var(--gs-text-secondary); font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-label); }
.gs-chat-by svg { flex:none; }
/* An answer's words: the markdown helper's HTML, styled here once (it was a 501-line <style> with every answer). Its
   tooltips and track:/add: links keep their controllers; the links become tinted pills like a guide's actions. */
.gs-chat-answer { color:var(--gs-text-primary); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); overflow-wrap:anywhere; }
.gs-chat-answer[hidden] { display:none; }
.gs-chat-answer > :first-child { margin-top:0; }
.gs-chat-answer > :last-child { margin-bottom:0; }
.gs-chat-answer p { margin:0 0 var(--guided-space-3); text-wrap:pretty; }
.gs-chat-answer :is(h1, h2, h3, h4, h5, h6) { margin:var(--guided-space-5) 0 var(--guided-space-2); color:var(--gs-text-primary); font-size:var(--guided-size-count); font-weight:650; line-height:var(--guided-leading-heading); letter-spacing:-0.01em; text-wrap:balance; }
.gs-chat-answer :is(h3, h4, h5, h6) { font-size:var(--guided-size-body); }
.gs-chat-answer :is(ul, ol) { margin:0 0 var(--guided-space-3); padding-inline-start:1.25em; }
.gs-chat-answer ul { list-style:disc; }
.gs-chat-answer ol { list-style:decimal; }
.gs-chat-answer li::marker { color:var(--gs-text-secondary); }
.gs-chat-answer li + li { margin-top:var(--guided-space-2); }
.gs-chat-answer li > :is(ul, ol, p) { margin:var(--guided-space-2) 0 0; }
.gs-chat-answer :is(strong, b) { font-weight:650; }
.gs-chat-answer em { font-style:italic; }
.gs-chat-answer del { text-decoration:line-through; opacity:.75; }
.gs-chat-answer a:not([class]) { color:var(--gs-text-primary); text-decoration:underline; text-underline-offset:2px; }
.gs-chat-answer code { padding:1px 5px; border:1px solid var(--gs-border); border-radius:6px; background:var(--gs-sand-light); font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size:.875em; overflow-wrap:anywhere; }
.gs-chat-answer pre { margin:0 0 var(--guided-space-3); padding:12px; border:1px solid var(--gs-border); border-radius:var(--guided-radius); background:var(--gs-sand-light); white-space:pre-wrap; overflow-wrap:anywhere; }
.gs-chat-answer pre code { padding:0; border:0; background:none; font-size:inherit; }
.gs-chat-answer blockquote { margin:0 0 var(--guided-space-3); padding:var(--guided-space-1) 0 var(--guided-space-1) var(--guided-space-3); border-inline-start:3px solid var(--gs-border); color:var(--gs-text-secondary); }
.gs-chat-answer hr { margin:var(--guided-space-4) 0; border:0; border-top:1px solid var(--gs-border); }
.gs-chat-answer table { width:100%; margin:0 0 var(--guided-space-3); border:1px solid var(--gs-border); border-radius:var(--guided-radius); border-collapse:separate; border-spacing:0; table-layout:fixed; overflow:hidden; font-size:var(--guided-size-small); line-height:var(--guided-leading-small); }
.gs-chat-answer :is(th, td) { padding:8px 10px; border-bottom:1px solid var(--gs-border); text-align:start; vertical-align:top; overflow-wrap:anywhere; }
.gs-chat-answer th { background:var(--gs-sand-light); font-weight:650; }
.gs-chat-answer tr:last-child td { border-bottom:0; }
.gs-chat-answer :is([class*="text-gray-"], [class*="text-slate-"], [class*="text-zinc-"], [class*="text-neutral-"], [class*="text-stone-"]) { color:var(--gs-text-primary) !important; }
.gs-chat-answer :is(.font-thin, .font-extralight, .font-light) { font-weight:400 !important; }
.gs-chat-answer span[data-controller~="chat-tooltip"] { display:inline; color:inherit; text-decoration:underline dotted var(--gs-text-secondary); text-underline-offset:3px; cursor:pointer; }
.gs-chat-answer a[class*="inline-flex"], .gs-chat-answer form.inline-block > button { display:inline-flex; align-items:center; gap:6px; min-height:32px; margin:2px 0; padding:4px 12px; border:0; border-radius:var(--gs-radius-pill); background:color-mix(in srgb, var(--gs-text-primary) 7%, transparent); box-shadow:none; color:var(--gs-text-primary); font-size:var(--guided-size-small); font-weight:600; line-height:1.3; text-decoration:none; vertical-align:middle; transform:none; }
.gs-chat-answer form.inline-block { display:inline; margin:0; }
/* Answer | Shorter | More detail: pressed buttons, the version showing; each reaches 44px with an invisible edge. */
.gs-chat-versions { display:inline-flex; gap:2px; margin-bottom:var(--guided-space-3); padding:3px; border-radius:var(--gs-radius-pill); background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); }
.gs-chat-versions button { position:relative; min-height:32px; margin:0; padding:0 12px; border:0; border-radius:var(--gs-radius-pill); background:transparent; color:var(--gs-text-secondary); font:inherit; font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-label); cursor:pointer; }
.gs-chat-versions button[aria-pressed="true"] { background:var(--gs-card); color:var(--gs-text-primary); box-shadow:var(--gs-shadow-sm); }
.gs-chat-versions button::after { content:""; position:absolute; inset:-6px 0; }
/* A guide's action opens a place in the app (a filled tint and an arrow); a follow-up asks (a white pill). */
.gs-chat-guide-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:var(--guided-space-3); }
.gs-chat-action { position:relative; display:inline-flex; align-items:center; gap:6px; max-width:100%; min-height:40px; padding:8px 12px 8px 14px; border:0; border-radius:var(--gs-radius-pill); background:color-mix(in srgb, var(--gs-text-primary) 7%, transparent); color:var(--gs-text-primary); font-size:var(--guided-size-small); font-weight:600; line-height:1.3; text-decoration:none; }
.gs-chat-action svg { flex:none; }
.gs-chat-action:dir(rtl) svg { transform:scaleX(-1); }
.gs-chat-from { margin:var(--guided-space-2) 0 0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); }
/* A step done from an answer's button: a quiet 40px line (a check, what was done, a chevron after its last word) that
   opens the record; a check-in that noted blood or a worrying colour adds its care line, in the words' own colour and
   an icon. A line that wraps keeps the check on its first line. */
.gs-chat-steps { display:flex; flex-direction:column; align-items:flex-start; margin-top:var(--guided-space-1); }
.gs-chat-steps[hidden] { display:none; }
.gs-chat-step { position:relative; display:inline-flex; align-items:flex-start; gap:6px; max-width:100%; min-height:40px; margin:0; padding-block:10px; box-sizing:border-box; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); text-decoration:none; text-wrap:pretty; }
.gs-chat-step > svg { flex:none; margin-top:2px; color:var(--gs-text-primary); }
.gs-chat-step > span > svg { display:inline; vertical-align:-2px; }
.gs-chat-step:dir(rtl) > span > svg { transform:scaleX(-1); }
.gs-chat-step-flag { display:flex; align-items:flex-start; gap:6px; margin:0 0 var(--guided-space-1); color:var(--gs-text-primary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); text-wrap:pretty; }
.gs-chat-step-flag svg { flex:none; margin-top:2px; }
/* An answer's sources: "N sources" beside Copy and More, a quiet 40px text button that opens the Sources sheet. */
.gs-chat-sources-button { position:relative; display:inline-flex; align-items:center; min-height:40px; margin:0; padding:0 10px; border:0; border-radius:20px; background:transparent; color:var(--gs-text-secondary); font:inherit; font-size:var(--guided-size-small); line-height:var(--guided-leading-small); cursor:pointer; -webkit-tap-highlight-color:transparent; -webkit-touch-callout:none; user-select:none; }
@media (hover:hover) { .gs-chat-sources-button:hover { background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); } }
.gs-chat-sources-button:active { background:color-mix(in srgb, var(--gs-text-primary) 10%, transparent); }
.gs-chat-sections { margin-top:var(--guided-space-3); }
.gs-chat-section > summary { list-style:none; cursor:pointer; }
.gs-chat-section > summary::-webkit-details-marker { display:none; }
.gs-chat-section + .gs-chat-section > summary::after { content:""; position:absolute; top:0; inset-inline:calc(4px + 40px + var(--guided-space-3)) 0; border-top:1px solid var(--gs-border); }
.gs-chat-section-body { padding:0 4px var(--guided-space-4); }
.gs-chat-section[open] > summary .gs-chat-disclose svg { rotate:180deg; }
@media (prefers-reduced-motion:no-preference) { .gs-chat-disclose svg { transition:rotate .2s ease-out; } }
/* Copy and More: 40px, 4px apart, so their 44px edges meet without overlapping; set 10px in so the icons line up
   with the words. Copy's icon turns into a check for a moment (both stay in place and cross-fade). */
.gs-chat-tools { display:flex; gap:4px; margin:2px 0 0 -10px; }
.gs-chat-tools:dir(rtl) { margin:2px -10px 0 0; }
.gs-chat-icon-button { position:relative; display:grid; place-items:center; width:40px; height:40px; margin:0; padding:0; border:0; border-radius:50%; background:transparent; color:var(--gs-text-secondary); cursor:pointer; }
.gs-chat-swap { display:grid; place-items:center; }
.gs-chat-swap > span { grid-area:1 / 1; display:grid; }
.gs-chat-swap > span:last-child, [data-copied] .gs-chat-swap > span:first-child { opacity:0; }
[data-copied] .gs-chat-swap > span:last-child { opacity:1; }
@media (prefers-reduced-motion:no-preference) {
  .gs-chat-swap > span { transition:opacity .3s cubic-bezier(.2, 0, 0, 1), scale .3s cubic-bezier(.2, 0, 0, 1), filter .3s cubic-bezier(.2, 0, 0, 1); }
  .gs-chat-swap > span:last-child, [data-copied] .gs-chat-swap > span:first-child { scale:.25; filter:blur(4px); }
  [data-copied] .gs-chat-swap > span:last-child { scale:1; filter:blur(0); }
}
@media (prefers-reduced-motion:reduce) { .gs-chat-swap > span { transition:opacity .2s ease-out; } }
.gs-chat-follows { flex-direction:row; flex-wrap:wrap; gap:8px; margin-top:var(--guided-space-1); }
.gs-chat-follow { position:relative; min-height:40px; margin:0; padding:8px 14px; border:1px solid var(--gs-border); border-radius:var(--gs-radius-pill); background:var(--gs-card); color:var(--gs-text-primary); font:inherit; font-size:var(--guided-size-small); font-weight:600; line-height:1.4; text-align:start; cursor:pointer; }
/* A hand-off: the guide it asks on the first line, the ready question under it. */
.gs-chat-handoff { display:flex; flex-direction:column; align-items:flex-start; gap:2px; border-radius:16px; }
.gs-chat-handoff-name { display:inline-flex; align-items:center; gap:6px; }
.gs-chat-handoff-name svg { flex:none; }
.gs-chat-handoff-question { color:var(--gs-text-secondary); font-weight:400; text-wrap:pretty; }
/* An answer that didn't come: said under the question, which stays, with Try again. The words carry it, not colour. */
.gs-chat-failed { align-self:flex-end; display:flex; flex-direction:column; align-items:flex-end; gap:8px; max-width:82%; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); text-align:end; }
.gs-chat-failed p { margin:0; text-wrap:pretty; }
.gs-chat-retry-form { margin:0; }
.gs-chat-retry { position:relative; min-height:40px; margin:0; padding:8px 14px; border:1px solid var(--gs-border); border-radius:var(--gs-radius-pill); background:var(--gs-card); color:var(--gs-text-primary); font:inherit; font-size:var(--guided-size-small); font-weight:600; line-height:1.3; cursor:pointer; }
/* Thinking…, and an answer's "Writing a shorter version…": the dots pulse only when motion is allowed. */
.gs-chat-thinking { flex-direction:row; align-items:center; gap:10px; margin:0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-label); }
p.gs-chat-thinking { display:flex; }
.gs-chat-pending { margin-top:var(--guided-space-3); }
.gs-chat-dots { display:inline-flex; gap:4px; }
.gs-chat-dots i { width:6px; height:6px; border-radius:50%; background:currentColor; opacity:.35; }
@media (prefers-reduced-motion:no-preference) {
  .gs-chat-dots i { animation:gs-chat-dot 1.2s ease-in-out infinite; }
  .gs-chat-dots i:nth-child(2) { animation-delay:.15s; }
  .gs-chat-dots i:nth-child(3) { animation-delay:.3s; }
}
@keyframes gs-chat-dot { 0%, 80%, 100% { opacity:.35; } 40% { opacity:1; } }
/* After 20 seconds, Thinking… says it can take a minute: a step, not motion, so it shows with reduced motion too. */
.gs-chat-thinking-text { display:grid; }
.gs-chat-thinking-text > span { grid-area:1 / 1; }
.gs-chat-thinking-text > span:first-child { animation:gs-chat-later-hide 0s 20s both; }
.gs-chat-thinking-text > span:last-child { animation:gs-chat-later-show 0s 20s both; }
@keyframes gs-chat-later-hide { to { visibility:hidden; } }
@keyframes gs-chat-later-show { from { visibility:hidden; } }
/* A new chat: who you're asking (the guide's icon in a 48px well, its name and line) with the disclaimer, and the Chat
   home's question cards in a carousel. */
.gs-chat-new { gap:0; }
/* A new chat fills the space <main> leaves, as the Chat home does: who you're asking and the disclaimer centred in the
   middle of the free space, the question cards ending 12px above the composer (whose top is --gs-chat-composer-h
   plus its lift from the screen's bottom). */
.gs-chat-conversation[data-new] { min-height:calc(100dvh - var(--gs-main-top-space, 0px) - var(--gs-main-bottom-space, 0px)); padding-bottom:calc(var(--gs-chat-composer-h, 76px) + var(--gs-chat-composer-lift, 0px) - var(--gs-main-bottom-space, 0px) + var(--guided-space-3)); }
.gs-chat-conversation[data-new][data-native-platform="ios"] { min-height:calc(100dvh - var(--gs-main-top-space, 0px) - var(--gs-chat-ios-clearance)); padding-bottom:calc(var(--gs-chat-composer-h, 76px) + var(--guided-space-3)); }
.gs-chat-conversation[data-new] :is(.gs-chat-conversation-body, .gs-chat-thread, .gs-chat-new) { flex:1 0 auto; }
.gs-chat-conversation[data-new] .gs-chat-thread { padding-bottom:0; }
.gs-chat-conversation[data-new] .gs-chat-new-who { margin-block:auto; }
.gs-chat-new-questions { margin-top:var(--guided-space-4); }
.gs-chat-intro { display:flex; flex-direction:column; align-items:center; gap:6px; padding:var(--guided-space-4) var(--guided-space-4) var(--guided-space-2); text-align:center; }
/* The intro's well: Track's well (its tint, an icon half its width) at 48px with the lg icon, as Care's destination
   wells; the icon at one of the system's sizes, so it draws the same line as every other. */
.gs-chat-intro-well { display:grid; place-items:center; width:48px; height:48px; margin-bottom:8px; border-radius:16px; background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); }
.gs-chat-intro h2 { margin:0; color:var(--gs-text-primary); font-size:var(--guided-size-count); font-weight:650; line-height:var(--guided-leading-heading); text-wrap:balance; }
.gs-chat-intro p { margin:0; color:var(--gs-text-secondary); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); text-wrap:balance; }
/* Bello, the GI Copilot's face (ChatConversationHelper#chat_bello): his head on a transparent ground, never clipped,
   all of him seated (110px wide) in the hello, his face 20px in a by-line, 28px while he thinks (a slow breath, still when motion is reduced) and 18px on
   a finished practice's line. */
.gs-bello { display:block; flex:none; object-fit:contain; }
/* Bello's hello (ChatConversationHelper#chat_bello_hello): frames as tall as he is standing, stacked, one shown. The
   top 42px are empty while he sits, so the box is pulled up by them and takes only his seated height. */
.gs-bello-hello { position:relative; flex:none; width:114px; height:159px; margin-top:-42px; margin-bottom:8px; pointer-events:none; }
.gs-bello-hello > img { position:absolute; inset:0; width:100%; height:100%; opacity:0; }
.gs-bello-hello > img[data-shown] { opacity:1; }
.gs-chat-by .gs-bello { width:20px; height:20px; }
.gs-chat-thinking-bello { width:28px; height:28px; transform-origin:50% 85%; }
@media (prefers-reduced-motion:no-preference) { .gs-chat-thinking-bello { animation:gs-bello-breath 5.9s ease-in-out infinite; } }
@keyframes gs-bello-breath { 50% { transform:scale(1.05); } }
.gs-chat-step > .gs-bello { width:18px; height:18px; margin-top:1px; }
.gs-chat-plain .gs-track-row { min-height:52px; }
.gs-chat-plain .gs-track-row-title { font-weight:500; text-wrap:pretty; }
.gs-chat-plain > * + .gs-track-row::after { inset-inline-start:4px; }
.gs-chat-disclaimer { margin:var(--guided-space-4) var(--guided-space-2) 0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-small); text-align:center; text-wrap:balance; }
/* The header's More: the app's 40px round button. */
.gs-chat-head-button { position:relative; display:flex; align-items:center; justify-content:center; flex-shrink:0; width:40px; height:40px; margin:0; padding:0; border:1px solid var(--gs-border); border-radius:50%; background:var(--gs-card); color:var(--gs-text-secondary); cursor:pointer; }
.gs-chat-head-button:active { background:color-mix(in srgb, var(--gs-text-primary) 6%, var(--gs-card)); }
/* Thanks, said for a moment below the header (the words stay for screen readers, who heard them once). */
.gs-chat-status { position:fixed; z-index:30; top:calc(var(--gs-main-top-space, 76px) + 4px); left:50%; width:calc(100% - 2 * var(--gs-page-px)); max-width:calc(var(--gs-max-width) - 2 * var(--gs-page-px)); margin:0; transform:translateX(-50%); text-align:center; pointer-events:none; }
.gs-chat-status:empty { display:none; }
.gs-chat-toast { display:inline-block; padding:10px 16px; border-radius:var(--gs-radius-pill); background:var(--gs-text-primary); box-shadow:var(--gs-shadow-lg); color:var(--gs-card); font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-small); animation:gs-chat-toast 4s forwards; }
@keyframes gs-chat-toast { 0%, 85% { opacity:1; } 100% { opacity:0; visibility:hidden; } }
/* Sheets: Delete in coral (its text on coral is the theme's: white in light, near-black in dark), Something else's line. */
.gs-chat-danger { color:var(--gs-coral-deep) !important; }
.gs-chat-danger-button { border-color:var(--gs-coral-deep); background:var(--gs-coral-deep); color:var(--gs-on-coral); }
.gs-chat-sheet-form { margin:0; }
.gs-chat-report-other { display:grid; gap:var(--guided-space-2); margin-top:var(--guided-space-4); }
.gs-chat-report-other[hidden] { display:none; }
.gs-chat-report-other label { color:var(--gs-text-primary); font-size:var(--guided-size-small); font-weight:600; line-height:var(--guided-leading-label); }
.gs-chat-report-other textarea { width:100%; min-height:88px; margin:0; padding:10px 12px; border:1px solid var(--gs-border); border-radius:var(--guided-radius); background:var(--gs-card); color:var(--gs-text-primary); font:inherit; font-size:max(16px, var(--guided-size-body)); line-height:var(--guided-leading-body); resize:vertical; }
.gs-chat-report-other textarea:focus { border-color:var(--gs-text-primary); outline:none; box-shadow:0 0 0 1px var(--gs-text-primary); }
/* Rings, hover, the press and hit areas, as the home's: every control shrinks to 0.96 over 150ms when motion is allowed
   and the quiet ones also tint; small ones reach 44px with an invisible edge; none selects its text or opens a callout
   on a long press. Answers and messages stay selectable. */
:is(.gs-chat-icon-button, .gs-chat-follow, .gs-chat-head-button, .gs-chat-versions button, .gs-chat-action, a.gs-chat-step, .gs-chat-retry, .gs-chat-answer a, .gs-chat-answer button, .gs-chat-sources-button, .gs-chat-section > summary):focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:2px; }
@media (hover:hover) { .gs-chat-icon-button:hover { background:color-mix(in srgb, var(--gs-text-primary) 6%, transparent); color:var(--gs-text-primary); } }
:is(.gs-chat-icon-button, .gs-chat-head-button)::after { content:""; position:absolute; inset:-2px; border-radius:50%; }
:is(.gs-chat-follow, .gs-chat-action, .gs-chat-retry)::after { content:""; position:absolute; inset:-2px 0; }
:is(.gs-chat-follow, .gs-chat-action, .gs-chat-step, .gs-chat-icon-button, .gs-chat-head-button, .gs-chat-versions button, .gs-chat-retry) { -webkit-tap-highlight-color:transparent; }
@media (hover:hover) { a.gs-chat-step:hover { color:var(--gs-text-primary); } }
a.gs-chat-step:active { color:var(--gs-text-primary); }
@media (prefers-reduced-motion:no-preference) {
  :is(.gs-chat-follow, .gs-chat-action, .gs-chat-icon-button, .gs-chat-head-button, .gs-chat-versions button, .gs-chat-retry) { transition:transform var(--guided-press) var(--guided-ease-out); }
  :is(.gs-chat-follow, .gs-chat-action, .gs-chat-icon-button, .gs-chat-head-button, .gs-chat-versions button, .gs-chat-retry):not(:disabled):active { transform:scale(.96); }
}
:is(.gs-chat-icon-button, .gs-chat-versions button[aria-pressed="false"]):active { background:color-mix(in srgb, var(--gs-text-primary) 8%, transparent); }
:is(.gs-chat-follow, .gs-chat-retry):active { background:color-mix(in srgb, var(--gs-text-primary) 8%, var(--gs-card)); }
.gs-chat-action:active { background:color-mix(in srgb, var(--gs-text-primary) 12%, transparent); }
:is(.gs-chat-conversation, .gs-chat-sheet) :is(button, a.gs-chat-action, a.gs-chat-step, a.gs-track-row, summary), .gs-chat-head-button { -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; touch-action:manipulation; }
.gs-product-demo-note { font-size:12px;line-height:1.4;border-radius:10px;padding:6px 10px;background:var(--gs-coral-glow);color:var(--gs-coral-deep);margin:8px 0 -10px; }
.gs-product-layout .gs-product-confirm-panel { background:var(--gs-card)!important;border-radius:28px 28px 0 0!important;padding-bottom:env(safe-area-inset-bottom);max-height:90dvh;overflow-y:auto; }
.gs-product-layout .gs-product-confirm-panel h3 { font-size:21px; }
.gs-product-layout .gs-product-confirm-panel button[aria-label=Close] { min-height:44px;min-width:44px; }
@media (prefers-reduced-motion:reduce) { .gs-product-carousel-rail { scroll-behavior:auto; } }

/* Preview the source text at a consistent height; the View Plan link above the
   carousel keeps full instructions available without making every slide tall. */
.gs-evidence-card .gs-product-question p,.gs-evidence-card h2 { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.gs-evidence-card .gs-evidence-description { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.gs-evidence-note span { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.gs-product-steps small { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.gs-product-sheet .gs-sheet-panel-content { background:var(--gs-card); }

.gs-evidence-card > * { flex-shrink:0; }

/* Self-care plan cards keep their content and actions together; Track retains
   its existing evidence-card layout. */
.gs-care-plan-section .gs-evidence-card { min-height:0; padding:18px; }
.gs-care-plan-section .gs-product-question { margin:12px 0; padding:12px; }
.gs-care-plan-section .gs-evidence-note { margin-bottom:0; padding-top:12px; }
.gs-care-plan-section .gs-evidence-action { padding-top:12px; }

/* Morning bowel player: C01 shelf grammar on product tokens, not .cr-player. */
.mb-session {
  --mb-card-surface:var(--gs-card);
  display:flex;
  flex-direction:column;
  flex:1;
  min-height:0;
  height:100%;
}
.dark .mb-session {
  --mb-card-surface:var(--gs-card-elevated);
}
.mb-session__chrome {
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:2px 0 8px;
}
.mb-session__ticks {
  display:flex;
  gap:4px;
  width:100%;
}
.mb-session__tick {
  flex:1;
  height:3px;
  border-radius:99px;
  background:var(--gs-border);
}
.mb-session__tick.is-filled {
  background:var(--gs-product-action);
}
.mb-session__chrome-row {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 12px;
  min-height:44px;
}
.mb-session__chrome-row--progress {
  min-height:auto;
}
.mb-session__part,
.mb-session__status {
  margin:0;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--gs-text-muted);
}
.mb-session__part {
  flex-shrink:0;
}
.mb-session__status {
  flex:1;
  min-width:0;
  text-align:right;
}
.mb-session__safety-exit {
  display:flex;
  justify-content:flex-end;
}
.mb-session__safety-exit form {
  margin:0;
}
.mb-session__chrome-care {
  display:inline-flex;
  align-items:center;
  justify-content:flex-end;
  min-height:44px;
  margin:0;
  padding:8px 0 8px 12px;
  border:0;
  background:transparent;
  color:var(--gs-text-secondary);
  font:inherit;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
  text-align:right;
  cursor:pointer;
}
.mb-session__chrome-care:hover {
  color:var(--gs-text-primary);
}
.mb-session__chrome-care:focus-visible,
.mb-session .mb-info-btn:focus-visible,
.mb-overview__quiet:focus-visible,
.gs-morning-bowel-layout .mb-sheet-care summary:focus-visible {
  outline:2px solid var(--gs-product-action);
  outline-offset:2px;
}
.mb-session__body {
  flex:1;
  min-height:0;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  gap:1.25rem;
  padding-bottom:8px;
  scroll-padding-block:16px;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.mb-session__shelf,
.mb-overview__shelf {
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  gap:12px;
  width:100%;
  margin-top:auto;
  padding:12px 0 max(16px, env(safe-area-inset-bottom));
  background:var(--gs-sand);
}
.mb-session__shelf > form,
.mb-session__shelf > a,
.mb-session__shelf > .gs-button,
.mb-overview__shelf > form,
.mb-overview__shelf > a,
.mb-overview__shelf > .gs-button {
  width:100%;
  margin:0;
}
.mb-session__shelf .gs-button,
.mb-overview__shelf .gs-button {
  min-height:48px;
  white-space:normal;
  text-align:center;
}
.mb-session__shelf .gs-product-text-link {
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:44px;
  white-space:normal;
  text-align:center;
}
.mb-session .mb-step {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:16px;
  width:100%;
  min-height:0;
  flex-shrink:0;
  padding:8px 0 16px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.mb-session .mb-step__title-row {
  display:flex;
  align-items:flex-start;
  gap:8px;
  width:100%;
  margin:0;
}
.mb-session .mb-step__title-row h2 {
  flex:1;
  min-width:0;
  margin:0;
  font-size:var(--gs-type-page-title-size);
  line-height:1.12;
  font-weight:700;
  letter-spacing:-0.035em;
  color:var(--gs-text-primary);
}
.mb-session .mb-step__visual {
  width:100%;
  max-width:184px;
  margin:0 auto;
}
.mb-session .mb-step__copy {
  display:flex;
  flex-direction:column;
  gap:8px;
  width:100%;
}
.mb-session .mb-step__copy > * {
  margin:0;
}
.mb-session .mb-step--outcome {
  padding-bottom:0;
}
.mb-session .gs-care-support-card {
  height:auto;
  min-height:0;
  flex-shrink:0;
  align-items:stretch;
  background:var(--mb-card-surface);
  border:1px solid var(--gs-border);
  box-shadow:none;
  padding:20px;
  border-radius:24px;
}
.mb-session .gs-care-support-card > .mb-session__eyebrow,
.mb-session .gs-care-support-card > .mb-session__cue,
.mb-session .gs-care-support-card .mb-session__cue-note {
  margin-bottom:0;
}
.mb-session__eyebrow {
  display:block;
  margin:0;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--gs-text-muted);
}
.mb-session .mb-card-title-row {
  display:flex;
  align-items:center;
  gap:4px;
  width:100%;
  margin:16px 0 10px;
}
.mb-session .gs-care-support-card > h2,
.mb-session .mb-card-title-row h2,
.mb-session .gs-care-support-card .mb-card-title-row h2 {
  margin:0;
  flex:1;
  min-width:0;
  font-size:var(--gs-type-page-title-size);
  font-weight:700;
  letter-spacing:-0.035em;
  line-height:1.12;
}
.mb-session .gs-care-support-card > h2 {
  margin:10px 0;
}
.mb-session__cue {
  margin:0;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  font-weight:400;
  color:var(--gs-text-secondary);
}
.mb-session__cue-note {
  margin:8px 0 0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
  color:var(--gs-text-muted);
}
.mb-remembered {
  width:100%;
  margin-top:18px;
  padding-top:16px;
}
.mb-remembered h3 {
  margin:0 0 6px;
  font-size:var(--gs-type-card-title-size);
  line-height:var(--gs-type-card-title-line);
  font-weight:700;
  letter-spacing:0.01em;
  color:var(--gs-text-primary);
}
.mb-remembered__list {
  margin:0;
}
.mb-remembered__row {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px;
  min-height:44px;
  padding:6px 0;
}
.mb-remembered__row dt,
.mb-remembered__row dd {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
}
.mb-remembered__row dt {
  color:var(--gs-text-muted);
}
.mb-remembered__row dd {
  text-align:right;
  font-weight:700;
  color:var(--gs-text-primary);
}
.mb-remembered__row a {
  display:inline-flex;
  align-items:center;
  justify-content:flex-end;
  min-height:44px;
  max-width:220px;
  color:var(--gs-link, var(--gs-text-primary));
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
.mb-edit-record {
  width:100%;
  padding:4px 16px;
  border:1px solid var(--gs-border);
  border-radius:24px;
  background:var(--gs-card);
}
.mb-edit-record__heading {
  width:100%;
  padding:4px 0 8px;
}
.mb-edit-record__heading .mb-card-title-row {
  margin:8px 0;
}
.mb-edit-record__heading .mb-card-title-row h2 {
  margin:0;
  flex:1;
  min-width:0;
  color:var(--gs-text-primary);
  font-size:var(--gs-type-page-title-size);
  line-height:var(--gs-type-page-title-line);
  font-weight:700;
  letter-spacing:-0.035em;
}
.dark .mb-edit-record {
  background:var(--gs-card-elevated);
}
.mb-edit-record__list {
  margin:0;
}
.mb-edit-record__row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  min-height:68px;
  padding:12px 0;
}
.mb-edit-record__row dt,
.mb-edit-record__row dd {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
}
.mb-edit-record__row dt {
  color:var(--gs-text-muted);
}
.mb-edit-record__row dd {
  margin-top:3px;
  font-weight:700;
  color:var(--gs-text-primary);
}
.mb-edit-record__change {
  flex:none;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  padding:0 4px;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
  color:var(--gs-link, var(--gs-text-primary));
  text-decoration:underline;
  text-underline-offset:3px;
}
.mb-session__field {
  display:flex;
  flex-direction:column;
  gap:6px;
  width:100%;
  margin-top:14px;
}
.mb-session__field label {
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-session .gs-care-support-card .mb-session__quiet {
  width:auto;
  max-width:100%;
  padding:10px 0;
  text-align:left;
}
.mb-session .mb-info-btn {
  flex-shrink:0;
  width:44px;
  height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0;
  padding:0;
  border:none;
  background:none;
  cursor:pointer;
  color:var(--gs-text-muted);
}
.mb-session .mb-info-btn span {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  border-radius:999px;
  border:1.4px solid var(--gs-text-muted);
  font-size:11px;
  font-weight:800;
  line-height:1;
  font-style:normal;
}
.mb-session .mb-safety-topics,
#mb-session-care .mb-safety-topics,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topics {
  width:100%;
}
.mb-session .mb-safety-topic,
#mb-session-care .mb-safety-topic,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topic {
  width:100%;
}
.mb-session .mb-safety-topic summary,
#mb-session-care .mb-safety-topic summary,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topic summary {
  cursor:pointer;
  list-style:none;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 0;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-session .mb-safety-topic summary::-webkit-details-marker,
#mb-session-care .mb-safety-topic summary::-webkit-details-marker,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topic summary::-webkit-details-marker { display:none; }
.mb-session .mb-safety-topic summary::after,
#mb-session-care .mb-safety-topic summary::after,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topic summary::after {
  content:"›";
  flex-shrink:0;
  font-size:20px;
  font-weight:400;
  color:var(--gs-text-muted);
}
.mb-session .mb-safety-topic .mb-sheet-body,
#mb-session-care .mb-safety-topic .mb-sheet-body,
.gs-morning-bowel-layout .mb-sheet-care .mb-safety-topic .mb-sheet-body {
  margin:0 0 14px;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  color:var(--gs-text-secondary);
}
.mb-session__quiet {
  display:block;
  width:100%;
  margin:0;
  padding:12px 0;
  border:none;
  background:none;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
  color:var(--gs-text-secondary);
  text-align:center;
  cursor:pointer;
  text-decoration:none;
}
.mb-session__quiet:active {
  opacity:0.6;
}
.mb-session__shelf .mb-session__quiet {
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  white-space:normal;
}
.mb-session__caption {
  margin:0;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  color:var(--gs-text-muted);
  text-align:center;
}
.mb-session__quiet-row {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:8px 16px;
  padding-top:4px;
  width:100%;
}
.mb-session__quiet-row .mb-session__quiet,
.mb-session__quiet-row form {
  display:inline-flex;
  width:auto;
  margin:0;
}
.mb-session__quiet-row .mb-session__quiet {
  padding:10px 8px;
  min-height:44px;
}
.mb-session__choice-row {
  display:flex;
  flex-wrap:wrap;
  justify-content:stretch;
  align-items:stretch;
  gap:8px;
  width:100%;
}
.mb-session__choice-row form {
  display:flex;
  flex:1 1 0;
  min-width:0;
  margin:0;
}
.mb-session__choice-row .gs-button {
  width:100%;
  min-height:44px;
}
.mb-session .mb-sheet-body {
  margin:6px 0 0;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  color:var(--gs-text-secondary);
}
.mb-outcome {
  display:flex;
  flex-direction:column;
  gap:12px;
  width:100%;
}
.mb-outcome__set {
  margin:0;
  padding:0;
  border:0;
  width:100%;
}
.mb-outcome__legend {
  margin:0 0 8px;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-outcome__choice {
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  min-height:52px;
  margin-top:8px;
  padding:12px 14px;
  border:1px solid var(--gs-border);
  border-radius:14px;
  background:var(--mb-card-surface);
  cursor:pointer;
}
.mb-outcome__radio {
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}
.mb-outcome__indicator {
  flex:none;
  width:20px;
  height:20px;
  border:2px solid var(--gs-text-muted);
  border-radius:999px;
  background:transparent;
  box-shadow:inset 0 0 0 4px transparent;
}
.mb-outcome__label {
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-outcome__choice:has(.mb-outcome__radio:checked) {
  border-color:var(--gs-product-action);
  background:var(--gs-sand-light);
}
.dark .mb-outcome__choice:has(.mb-outcome__radio:checked) {
  background:var(--gs-card);
}
.mb-outcome__radio:checked + .mb-outcome__indicator {
  border-color:var(--gs-product-action);
  background:var(--gs-product-action);
  box-shadow:inset 0 0 0 4px var(--mb-card-surface);
}
.mb-outcome__choice:has(.mb-outcome__radio:focus-visible) {
  outline:3px solid color-mix(in srgb, var(--gs-product-action) 28%, transparent);
  outline-offset:2px;
}
.mb-outcome__tracker-status {
  display:flex;
  align-items:center;
  min-height:44px;
  margin:4px 0 0;
  padding:10px 12px;
  border:1px solid var(--gs-border);
  border-radius:14px;
  background:var(--gs-sand-light);
  color:var(--gs-text-secondary);
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
}
.mb-session-record {
  width:100%;
  padding:12px 0 16px;
}
.mb-session-record__title {
  margin:0 0 10px;
  font-size:var(--gs-type-card-title-size);
  line-height:var(--gs-type-card-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-session-record .mb-session__caption {
  text-align:left;
  margin:0 0 12px;
}
.mb-session-record > summary.mb-session-record__title {
  cursor:pointer;
  list-style:none;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0;
  padding:8px 0;
}
.mb-session-record > summary.mb-session-record__title::-webkit-details-marker { display:none; }
.mb-session-record > summary.mb-session-record__title::after {
  content:"›";
  flex-shrink:0;
  font-size:20px;
  font-weight:400;
  color:var(--gs-text-muted);
}
.mb-session-record__list {
  margin:0;
}
.mb-session-record__row {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px;
  min-height:36px;
  padding:8px 0;
}
.mb-session-record__row dt {
  margin:0;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  color:var(--gs-text-muted);
}
.mb-session-record__row dd {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  text-align:right;
  color:var(--gs-text-primary);
}
.mb-session-record__recent {
  list-style:none;
  margin:0;
  padding:0;
}
.mb-session-record__morning + .mb-session-record__morning {
  margin-top:16px;
  padding-top:16px;
}
.mb-session-record__date {
  margin:0 0 8px;
  font-size:var(--gs-type-card-title-size);
  line-height:var(--gs-type-card-title-line);
  font-weight:700;
  color:var(--gs-text-primary);
}
.mb-session-record__sessions {
  list-style:none;
  margin:0;
  padding:0;
}
.mb-session-record__session + .mb-session-record__session {
  margin-top:8px;
}
.mb-session-record__when {
  margin:0 0 6px;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  color:var(--gs-text-muted);
}
.mb-session-record__session a {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:56px;
  padding:8px 0;
  color:inherit;
  text-decoration:none;
}
.mb-session-record__session a::after {
  content:"›";
  flex-shrink:0;
  font-size:20px;
  font-weight:400;
  color:var(--gs-text-muted);
}
.mb-session-record__summary {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  color:var(--gs-text-primary);
}

/* Morning bowel overview: 3-page intro deck on product tokens. */
.mb-overview {
  display:flex;
  flex-direction:column;
  flex:1;
  min-height:0;
  height:100%;
}
.mb-overview__body {
  flex:1;
  min-height:0;
  overflow-y:auto;
  padding-bottom:8px;
  scroll-padding-block:16px;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.mb-overview--landing {
  justify-content:flex-start;
}
.mb-overview__landing-state {
  display:flex;
  flex-direction:column;
  flex:1;
  min-height:0;
  width:100%;
  margin:0;
}
.mb-overview__landing-copy {
  display:flex;
  flex-direction:column;
  gap:16px;
  padding:24px 0 16px;
}
.mb-guidance-notice {
  display:flex;
  flex-direction:column;
  gap:4px;
  margin:4px 0 0;
  padding:12px 14px;
  border:0;
  border-radius:14px;
  background:var(--gs-sand-light);
}
.dark .mb-guidance-notice {
  background:var(--gs-card);
}
.mb-guidance-notice__label {
  margin:0;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--gs-text-muted);
}
.mb-guidance-notice__body {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:400;
  color:var(--gs-text-secondary);
}
.mb-guidance-notice--full {
  margin-top:0;
}
.mb-overview__landing-actions {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:8px;
}
.mb-overview__landing-actions form,
.mb-overview__landing-actions .mb-overview__quiet {
  width:100%;
  margin:0;
}
.mb-overview__landing-help {
  padding-top:8px;
}
.mb-overview__page {
  display:flex;
  flex-direction:column;
  gap:12px;
  min-height:0;
}
.mb-overview__page[hidden] {
  display:none;
}
.mb-overview__eyebrow-row {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
}
.mb-overview__eyebrow,
.mb-overview__kicker {
  margin:0;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--gs-text-muted);
}
.mb-overview__counter {
  margin:0;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  font-weight:600;
  color:var(--gs-text-hint);
  white-space:nowrap;
}
.mb-overview__visual {
  width:100%;
  max-width:220px;
  margin:14px auto 2px;
}
.mb-overview__title {
  margin:8px 0 0;
  font-size:var(--gs-type-page-title-size);
  line-height:var(--gs-type-page-title-line);
  font-weight:700;
  letter-spacing:-0.035em;
  line-height:1.12;
  color:var(--gs-text-primary);
}
.mb-overview__cue {
  margin:0;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  font-weight:400;
  color:var(--gs-text-secondary);
}
.mb-overview__beats,
.mb-overview__note {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:400;
  color:var(--gs-text-muted);
}
.mb-overview__parts {
  list-style:none;
  margin:8px 0 0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:14px;
}
.mb-overview__part {
  display:flex;
  align-items:flex-start;
  gap:12px;
}
.mb-overview__part-num {
  flex-shrink:0;
  width:28px;
  padding-top:2px;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  font-weight:600;
  letter-spacing:0.04em;
  color:var(--gs-text-hint);
}
.mb-overview__part strong {
  display:block;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-overview__part small {
  display:block;
  margin-top:3px;
  font-size:var(--gs-type-row-subtitle-size);
  line-height:var(--gs-type-row-subtitle-line);
  color:var(--gs-text-muted);
}
.mb-overview__limits {
  list-style:none;
  margin:4px 0 0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:18px;
}
.mb-overview__limit strong {
  display:block;
  margin:8px 0 4px;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-overview__limit p {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  color:var(--gs-text-secondary);
}
.mb-overview__chip {
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:2px 10px;
  border:1px solid var(--gs-border);
  border-radius:999px;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  font-weight:600;
  color:var(--gs-text-secondary);
  background:var(--gs-card);
}
.mb-overview__shelf .gs-button--primary {
  width:100%;
}
.mb-overview__dots {
  display:flex;
  justify-content:center;
  align-items:center;
  gap:2px;
  width:100%;
}
.mb-overview__dot {
  display:grid;
  place-items:center;
  min-width:44px;
  min-height:44px;
  margin:0;
  padding:0;
  border:none;
  background:none;
  cursor:pointer;
}
.mb-overview__dot span {
  width:7px;
  height:7px;
  border-radius:999px;
  background:var(--gs-border);
}
.mb-overview__dot.is-current span {
  width:22px;
  background:var(--gs-product-action);
}
.mb-overview__cta-row {
  display:flex;
  align-items:stretch;
  gap:10px;
  width:100%;
}
.mb-overview__back {
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:52px;
  min-height:44px;
  margin:0;
  padding:0;
  border:1px solid var(--gs-border);
  border-radius:14px;
  background:var(--gs-card);
  color:var(--gs-text-primary);
  cursor:pointer;
}
.mb-overview__back[hidden] {
  display:none;
}
.mb-overview__cluster {
  flex:1;
  min-width:0;
  width:100%;
}
.mb-overview [hidden] {
  display:none !important;
}
.mb-overview__cluster form,
.mb-overview__cluster .gs-button {
  width:100%;
  margin:0;
}
.mb-overview__quiet {
  display:block;
  width:100%;
  margin:0;
  padding:12px 0;
  border:none;
  background:none;
  min-height:44px;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  font-weight:600;
  color:var(--gs-text-secondary);
  text-align:center;
  cursor:pointer;
  text-decoration:none;
}
.mb-overview__quiet:active {
  opacity:0.6;
}
.mb-overview__shortcuts {
  width:100%;
}
.mb-overview__quiet-row {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:8px 16px;
  padding-top:4px;
  width:100%;
}
.mb-overview__quiet-row .mb-overview__quiet,
.mb-overview__quiet-row form {
  display:inline-flex;
  width:auto;
  margin:0;
}
.mb-overview__quiet-row .mb-overview__quiet {
  padding:10px 8px;
}
.mb-overview__shortcuts .mb-overview__quiet-row {
  padding-top:0;
  gap:0 16px;
}
.mb-overview__sheet-list {
  display:flex;
  flex-direction:column;
}
.mb-overview__sheet-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  width:100%;
  margin:0;
  padding:14px 0;
  border:none;
  background:none;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
  text-align:left;
  cursor:pointer;
}
.mb-overview__sheet-row::after {
  content:"›";
  flex-shrink:0;
  font-size:20px;
  font-weight:400;
  color:var(--gs-text-muted);
}

/* Morning bowel sheets: C01 evidence rhythm on product tokens. */
.gs-product-sheet .mb-sheet-subtitle {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  color:var(--gs-text-secondary);
}
.gs-product-sheet .mb-sheet-callout-title {
  margin:0;
  font-size:var(--gs-type-heading-lg-size);
  line-height:var(--gs-type-heading-lg-line);
  font-weight:700;
  letter-spacing:-0.025em;
  line-height:1.25;
  color:var(--gs-text-primary);
}
.gs-product-sheet .mb-sheet-label {
  margin:20px 0 0;
  font-size:var(--gs-type-label-size);
  line-height:var(--gs-type-label-line);
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--gs-text-muted);
}
.gs-product-sheet .mb-sheet-label:first-child,
.gs-product-sheet .mb-sheet-subtitle + .mb-sheet-label {
  margin-top:16px;
}
.gs-product-sheet .mb-sheet-body {
  margin:6px 0 0;
  font-size:var(--gs-type-body-size);
  line-height:var(--gs-type-body-line);
  color:var(--gs-text-secondary);
}
.gs-product-sheet .mb-sheet-body:first-child {
  margin-top:0;
}
.gs-product-sheet .mb-sheet-body + .mb-sheet-body {
  margin-top:16px;
}
.gs-product-sheet .mb-sheet-footer {
  margin:16px 0 0;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  color:var(--gs-text-hint);
}
.gs-product-sheet .mb-sheet-footer--compact {
  margin-top:0;
}
.gs-product-sheet .mb-sheet-actions {
  display:flex;
  flex-direction:column;
  margin-top:16px;
}
.gs-product-sheet .mb-sheet-action {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:52px;
  padding:12px 0;
  color:var(--gs-text-primary);
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  text-decoration:none;
}
.gs-product-sheet .mb-sheet-action::after {
  content:"›";
  flex-shrink:0;
  color:var(--gs-text-muted);
  font-size:20px;
  font-weight:400;
}
.gs-product-sheet .mb-sheet__section + .mb-sheet__section {
  margin-top:24px;
  padding-top:4px;
}
.mb-overview__learn-more > section + section {
  margin-top:24px;
  padding-top:4px;
}
.mb-overview__limits--sheet {
  margin-top:12px;
}
.mb-overview__learn-section > summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:52px;
  cursor:pointer;
  list-style:none;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-overview__learn-section > summary::-webkit-details-marker {
  display:none;
}
.mb-overview__learn-section > summary::after {
  content:"›";
  flex-shrink:0;
  font-size:20px;
  font-weight:400;
  color:var(--gs-text-muted);
  transform:rotate(90deg);
  transition:transform .15s ease;
}
.mb-overview__learn-section[open] > summary::after {
  transform:rotate(-90deg);
}
.mb-overview__learn-section > .mb-sheet-label:first-of-type {
  margin-top:8px;
}
.mb-overview__learn-more .mb-safety-topics {
  width:100%;
  margin-top:12px;
}
.mb-overview__learn-more .mb-safety-topic summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:48px;
  padding:12px 0;
  cursor:pointer;
  list-style:none;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
}
.mb-overview__learn-more .mb-safety-topic summary::-webkit-details-marker {
  display:none;
}
.mb-overview__learn-more .mb-safety-topic summary::after {
  content:"›";
  flex-shrink:0;
  color:var(--gs-text-muted);
}
.mb-overview__learn-more .mb-safety-topic .mb-sheet-body {
  margin:0 0 14px;
}
.mb-care-summary-note {
  margin:14px 0 2px;
  padding:12px 14px;
  border:1px solid var(--gs-border);
  border-radius:14px;
  background:var(--gs-sand-light);
}
.dark .mb-care-summary-note {
  background:var(--gs-card);
}
.mb-care-summary-note p {
  margin:0;
  text-align:left;
  color:var(--gs-text-secondary);
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
}
.mb-care-summary-composer .mb-card-title-row {
  margin-top:0;
  margin-bottom:8px;
}
.mb-care-summary-composer .mb-session__cue + .mb-session__cue {
  margin-top:6px;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
}
.mb-care-summary-composer .mb-session__field {
  margin-top:12px;
}
.mb-care-summary-composer .gs-form-textarea {
  min-height:80px;
  resize:vertical;
}
.mb-care-summary-composer #review_question {
  min-height:72px;
}
.mb-care-summary-sheet .mb-care-summary-editor {
  min-height:clamp(220px, 32dvh, 300px);
  max-height:40dvh;
  resize:vertical;
  line-height:1.5;
  border-color:var(--gs-border);
  box-shadow:none;
  caret-color:var(--gs-text-primary);
}
.mb-care-summary-sheet .mb-care-summary-editor:focus {
  border-color:var(--gs-product-action);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--gs-product-action) 18%, transparent);
}
.mb-sheet-prompt-actions {
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:16px;
}
.mb-sheet-prompt-actions .gs-button {
  min-height:48px;
}
.mb-tracker-context {
  margin:0 0 16px;
  padding:16px;
  border:1px solid var(--gs-border);
  border-radius:14px;
  background:var(--gs-card);
  color:var(--gs-text-secondary);
}
.mb-tracker-context p {
  margin:0;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
}
.mb-tracker-context p:first-child {
  color:var(--gs-text-primary);
  font-weight:600;
}
.mb-tracker-context p + p {
  margin-top:8px;
}
.gs-morning-bowel-layout .gs-product-sheet .gs-sheet-header {
  padding-top:8px;
  padding-bottom:16px;
}
.gs-morning-bowel-layout .gs-product-sheet .gs-sheet-title {
  font-weight:700;
}
.gs-morning-bowel-layout .gs-product-sheet .gs-sheet-close {
  min-width:44px;
  min-height:44px;
}

@media (max-height:760px) {
  .mb-session .mb-step__visual,
  .mb-overview__visual {
    max-width:144px;
  }
  .mb-session__body {
    gap:16px;
  }
}

.gs-morning-bowel-layout .gs-app-shell > nav {
  border-top:0!important;
}
.gs-morning-bowel-layout main {
  height:100dvh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.gs-morning-bowel-layout #flash_messages:empty {
  display:none;
}
.gs-morning-bowel-layout .mb-session,
.gs-morning-bowel-layout .mb-overview {
  flex:1;
  min-height:0;
}
.gs-product-sheet .mb-sheet-source {
  margin:12px 0 0;
}
.gs-product-sheet .mb-sheet-source-title {
  min-height:44px;
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 0;
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  color:var(--gs-text-primary);
  text-decoration:underline;
  text-underline-offset:3px;
}
a.mb-sheet-source-title:hover {
  color:var(--gs-text-primary);
}
.gs-product-sheet .mb-sheet-source-org {
  margin:0 0 8px;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  color:var(--gs-text-muted);
}
.gs-product-sheet .mb-sheet-source-limits {
  margin:0 0 14px;
}
.gs-product-sheet .mb-sheet-source-limits summary {
  cursor:pointer;
  list-style:none;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  font-size:var(--gs-type-caption-size);
  line-height:var(--gs-type-caption-line);
  font-weight:600;
  color:var(--gs-text-secondary);
}
.gs-product-sheet .mb-sheet-source-limits summary::-webkit-details-marker { display:none; }
.gs-product-sheet .mb-sheet-source-limits-body {
  margin:0 0 8px;
  white-space:pre-line;
  font-size:var(--gs-type-body-small-size);
  line-height:var(--gs-type-body-small-line);
  color:var(--gs-text-secondary);
}
.gs-morning-bowel-layout .mb-sheet-care {
  margin:16px 0 8px;
}
.gs-morning-bowel-layout .mb-sheet-care > summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:44px;
  padding:12px 0;
  color:var(--gs-text-primary);
  font-size:var(--gs-type-row-title-size);
  line-height:var(--gs-type-row-title-line);
  font-weight:600;
  cursor:pointer;
  list-style:none;
}
.gs-morning-bowel-layout .mb-sheet-care > summary::-webkit-details-marker { display:none; }
.gs-morning-bowel-layout .mb-sheet-care > summary::after {
  content:"›";
  color:var(--gs-text-muted);
  font-size:20px;
  font-weight:400;
}
.gs-morning-bowel-layout .mb-sheet-care__content {
  padding-bottom:12px;
}

/* Intake choice chips retain a visible keyboard focus indicator. */
[data-controller~="medication-intake"] input.peer:focus-visible + label {
  outline: 2px solid var(--gs-coral-deep);
  outline-offset: 2px;
}

/* Care breathing uses the same neutral card and dot vocabulary as Today. */
.gs-care-breathing .gs-product-section-heading { align-items:flex-start; flex-wrap:wrap; }
.gs-care-breathing .gs-product-section-heading > div { min-width:0; flex:1 1 220px; }
.gs-care-breathing .gs-product-carousel-rail { gap:10px; padding:0 42px 3px 16px; padding-inline:16px 42px; scroll-padding-inline:16px; }
.gs-care-breathing .gs-product-carousel-slide { flex-basis:calc(100% - 26px); }
.gs-care-breathing-card { background:var(--gs-card); border:1px solid var(--gs-border); border-radius:28px; padding:20px; min-height:560px; height:100%; display:flex; flex-direction:column; text-align:center; gap:14px; }
.gs-care-breathing-card header { display:flex; align-items:center; gap:8px; text-align:start; }
.gs-care-breathing-card :is(h3,h4) { flex:1; min-width:0; font-size:18px; line-height:1.3; font-weight:650; margin:0; color:var(--gs-text-primary); overflow-wrap:anywhere; }
.gs-care-breathing-options { flex:0 0 44px; width:44px; height:44px; display:grid; place-items:center; color:var(--gs-text-secondary); }
.gs-care-breathing-card img { width:100%; max-width:260px; aspect-ratio:1; height:auto; object-fit:contain; align-self:center; margin:auto 0; }
.gs-care-breathing-card p { margin:0; color:var(--gs-text-secondary); line-height:1.5; overflow-wrap:anywhere; }
.gs-care-breathing-card footer { display:flex; flex-direction:column; gap:8px; margin-top:auto; }
/* One row of secondary links, like the Today cards (docs/references/guided/DESIGN.md, Templates: Card). */
.gs-care-breathing-secondary { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:8px; }
.gs-care-breathing-secondary > a { font-size:var(--guided-size-small); display:flex; align-items:center; justify-content:center; min-width:0; min-height:44px; text-align:center; overflow-wrap:anywhere; }
.gs-care-breathing-start { background:var(--gs-text-primary); color:var(--gs-card); border-radius:16px; padding:16px; text-align:center; font-weight:600; text-decoration:none; min-height:48px; }
.gs-care-breathing-card .gs-product-text-link { padding:10px; white-space:normal; color:var(--gs-text-secondary); }
.gs-care-breathing .gs-product-carousel-controls { gap:14px; padding:8px 16px; }
.gs-care-breathing .gs-product-carousel-controls button { border:0; background:transparent; }
.gs-care-breathing .gs-product-carousel-dots { margin:0; align-items:center; gap:6px; }
.gs-care-breathing .gs-product-carousel-dots span { width:6px; height:6px; border-radius:99px; background:var(--gs-border); }
.gs-care-breathing .gs-product-carousel-dots [aria-current=true] { width:22px; background:var(--gs-text-primary); }
.gs-care-breathing:dir(rtl) .gs-product-carousel-controls svg { transform:scaleX(-1); }
.gs-care-breathing-library { display:grid; gap:12px; }
.gs-care-breathing-library .gs-care-breathing-card { min-height:0; text-align:start; }
.gs-care-breathing a:focus-visible,.gs-care-breathing button:focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:3px; }

.gs-care-breathing .gs-product-carousel-controls [aria-disabled=true] { opacity:.18; }

/* Care exposes the same collections with content-sized cards. Keep horizontal
   padding and artwork sizing identical to Self-care, including narrow phones. */
.gs-care-home-routines { margin-top:24px; }
.gs-care-collection--compact .gs-product-section-heading h3 { font-size:18px; line-height:1.3; font-weight:650; margin:0; color:var(--gs-text-primary); }
.gs-care-collection--compact + .gs-care-collection--compact { margin-top:24px; }
.gs-care-collection--compact .gs-care-breathing-card { min-height:0; padding-block:16px; gap:8px; }
.gs-care-collection--compact .gs-care-breathing-card > img { margin-block:0; }

/* Care › Guided as shelves (docs/references/guided/DESIGN.md, Redesign proposal, decision 5):
   Resume, the plan's suggestion, then ways in by need, above the carousels. 44px targets;
   logical properties for RTL; everything wraps at 320px. */
.gs-care-shelves { display:grid; gap:16px; margin-bottom:24px; }
/* With neither Resume nor a suggestion the shelves take no room; they stay in the page so a refresh can fill them. */
.gs-care-shelves:not(:has(a)) { display:none; }
.gs-care-resume,.gs-care-hero { display:flex; align-items:center; gap:12px; min-height:56px; border:1px solid var(--gs-border); background:var(--gs-card); color:var(--gs-text-primary); text-decoration:none; }
.gs-care-resume { border-radius:22px; padding:12px 14px; }
.gs-care-resume-icon { flex:0 0 40px; width:40px; height:40px; display:grid; place-items:center; border-radius:99px; background:var(--gs-coral-glow); color:var(--gs-text-primary); }
.gs-care-resume-text,.gs-care-hero-text { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; overflow-wrap:anywhere; }
.gs-care-resume-text > span:first-child { font-size:13px; font-weight:600; color:var(--gs-text-secondary); }
.gs-care-resume-text strong,.gs-care-hero-text strong { font-size:18px; line-height:1.3; font-weight:650; }
.gs-care-resume-text > span:last-child,.gs-care-hero-text > span { font-size:15px; line-height:1.4; color:var(--gs-text-secondary); }
.gs-care-resume-chevron { flex-shrink:0; color:var(--gs-text-secondary); }
.gs-care-resume-chevron:dir(rtl) svg { transform:scaleX(-1); }
.gs-care-hero { border-radius:28px; padding:12px; }
.gs-care-hero > img { flex:0 0 auto; width:clamp(64px,22vw,88px); height:auto; aspect-ratio:1; object-fit:contain; border-radius:20px; }
.gs-care-hero-play { flex:0 0 52px; width:52px; height:52px; display:grid; place-items:center; border-radius:99px; background:var(--gs-text-primary); color:var(--gs-card); }
.gs-care-shelves a:focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:3px; }

/* A shared link's page (layouts/shared_conversation, 2026-11-13): a slim top bar (Gutsphere, one small action) and one
   readable column (680px on a desktop, the page's gutters on a phone) holding the conversation as Chat draws it, then
   Bello's invitation and the AI note. Chat's own styles do the messages; this only places them. */
.gs-shared-body { margin:0; min-height:100dvh; background:var(--gs-sand); color:var(--gs-text-primary); }
.gs-shared-top { position:sticky; top:0; z-index:10; background:color-mix(in srgb, var(--gs-sand) 86%, transparent); -webkit-backdrop-filter:blur(16px) saturate(160%); backdrop-filter:blur(16px) saturate(160%); border-bottom:1px solid color-mix(in srgb, var(--gs-border) 60%, transparent); }
.gs-shared-top-inner { display:flex; align-items:center; justify-content:space-between; gap:var(--guided-space-3); max-width:calc(680px + 2 * var(--gs-page-px)); margin:0 auto; padding:calc(10px + env(safe-area-inset-top, 0px)) var(--gs-page-px) 10px; }
.gs-shared-brand { display:inline-flex; align-items:center; gap:10px; min-height:44px; color:var(--gs-text-primary); font-size:var(--guided-size-body); font-weight:700; text-decoration:none; }
.gs-shared-brand img { flex:none; border-radius:8px; }
.gs-shared-pill { display:inline-flex; align-items:center; justify-content:center; min-height:40px; padding:0 16px; border:1px solid var(--gs-border); border-radius:999px; background:var(--gs-card); color:var(--gs-text-primary); font-size:14px; font-weight:600; line-height:1.2; text-decoration:none; white-space:nowrap; transition:background-color 150ms ease-out; }
@media (hover:hover) { .gs-shared-pill:hover { background:color-mix(in srgb, var(--gs-text-primary) 6%, var(--gs-card)); } }
:is(.gs-shared-brand, .gs-shared-pill, .gs-shared-cta):focus-visible { outline:2px solid var(--gs-text-primary); outline-offset:3px; }
.gs-shared { width:100%; max-width:calc(680px + 2 * var(--gs-page-px)); margin:0 auto; padding:0 var(--gs-page-px) calc(var(--guided-space-6) + env(safe-area-inset-bottom, 0px)); }
.gs-shared-head { padding:var(--guided-space-6) 0 var(--guided-space-2); }
.gs-shared-head h1 { margin:0; color:var(--gs-text-primary); font-size:clamp(1.375rem, 4.6vw, 1.75rem); font-weight:700; line-height:1.2; letter-spacing:-0.01em; text-wrap:balance; }
.gs-shared-head p { margin:var(--guided-space-2) 0 0; color:var(--gs-text-secondary); font-size:var(--guided-size-small); line-height:var(--guided-leading-body); }
.gs-shared-end { display:flex; flex-direction:column; align-items:center; gap:var(--guided-space-3); margin-top:var(--guided-space-6); padding:28px var(--guided-space-4) var(--guided-space-5); border-radius:24px; background:var(--gs-card); text-align:center; }
.gs-shared-end h2 { margin:0; color:var(--gs-text-primary); font-size:var(--guided-size-count); font-weight:650; line-height:var(--guided-leading-heading); text-wrap:balance; }
.gs-shared-cta { width:auto; min-width:min(240px, 100%); padding-inline:28px; }
.gs-shared-note { margin-top:var(--guided-space-4); }
.gs-shared-gone { display:flex; flex-direction:column; align-items:center; gap:var(--guided-space-3); padding:clamp(48px, 16vh, 140px) 0 var(--guided-space-6); text-align:center; }
.gs-shared-gone h1 { margin:var(--guided-space-2) 0 0; font-size:clamp(1.25rem, 4.4vw, 1.5rem); font-weight:700; line-height:1.25; text-wrap:balance; }
.gs-shared-gone p { margin:0 0 var(--guided-space-3); max-width:36ch; color:var(--gs-text-secondary); font-size:var(--guided-size-body); line-height:var(--guided-leading-body); text-wrap:pretty; }
