/* --- mobile.css --- */
@media (max-width: 900px) {
  .nav {
    justify-content: flex-start;
    gap: 2px;
    scroll-padding-inline: max(8px, env(safe-area-inset-left));
  }

  .nav-item[data-mobile-priority] {
    flex: 1 0 92px;
    min-width: 92px;
    color: var(--ink);
    font-weight: 750;
  }

  .nav-item:not([data-mobile-priority]) {
    flex: 0 0 76px;
  }

  .nav-item.active {
    color: var(--green);
  }

  input,
  textarea,
  button,
  summary {
    scroll-margin-bottom: calc(92px + env(safe-area-inset-bottom));
  }
}

@media(min-width:901px) {
  .nav {
    overflow-y: auto;
    overscroll-behavior-y: contain;
  }
}

@media (max-width: 430px) {
  .nav-item[data-mobile-priority] {
    flex-basis: 88px;
    min-width: 88px;
  }
}

/* Touch targets
 *
 * Arc is phone-first for everyone except the front desk, and an audit of all 26
 * screens at 375px found controls that are unusable with a thumb: the Work
 * Queue's bulk-select checkboxes rendered at 13x13px, its Approve and Skip
 * buttons at 34px, and several selects under 20px. Those are the primary
 * actions of the busiest screen in the product.
 *
 * One rule for the whole class rather than per-screen patches, so a control
 * added later inherits a usable size instead of needing to be found by the next
 * audit. 44px is Apple's minimum; buttons that were already 41-43px round up.
 */
@media (max-width: 900px) {
  .shell button,
  .shell select,
  .shell input:not([type="checkbox"]):not([type="radio"]),
  .shell summary {
    min-height: 44px;
  }

  /* A checkbox cannot be 44px without looking absurd, so it takes the largest
   * size that still reads as a checkbox and relies on its row for the rest of
   * the target. 24px is nearly double what it was. */
  .shell input[type="checkbox"],
  .shell input[type="radio"] {
    width: 24px;
    height: 24px;
    /* Inline workflow labels use flex rows. Match their basis to the touch
     * size too, or an inherited 18px basis makes this a tall rectangle. */
    flex-basis: 24px;
    /* Safari sizes the glyph rather than the box without this. */
    -webkit-appearance: none;
    appearance: none;
    border: 2px solid var(--border, rgba(15, 23, 42, 0.28));
    border-radius: 6px;
    flex-shrink: 0;
    display: grid;
    place-content: center;
    background: var(--surface, #fff);
  }

  .shell input[type="radio"] {
    border-radius: 50%;
  }

  .shell input[type="checkbox"]:checked,
  .shell input[type="radio"]:checked {
    background: #0b6b4c;
    border-color: #0b6b4c;
  }

  .shell input[type="checkbox"]:checked::after {
    content: "";
    width: 11px;
    height: 6px;
    border: 2px solid #fff;
    border-top: 0;
    border-right: 0;
    transform: rotate(-45deg) translate(1px, -2px);
  }

  .shell input[type="radio"]:checked::after {
    content: "";
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #fff;
  }

  /* Rows carrying a control need the height to hold it. */
  .queue-row {
    min-height: 44px;
  }
}

@media (max-width: 640px) {
  /* Three action buttons in a nowrap flex row at 375px gave each about 100px
   * and wrapped every label onto three lines, making them 81px tall. Let them
   * wrap and fill the row instead. */
  .queue-actions {
    flex-wrap: wrap;
  }

  .queue-actions button {
    flex: 1 1 100%;
  }

  /* The checkbox column was sized for a 13px control. */
  .queue-row {
    grid-template-columns: 28px 1fr;
    align-items: start;
  }
}

@media (max-width: 760px) {
  /* Wide tables scroll themselves rather than being cut off.
   *
   * The practice-hours table is 638px of columns on a 375px screen, and its
   * container clipped rather than scrolled — so the closing times and the
   * weekend simply were not reachable on a phone. Making the table its own
   * scroller keeps every column available without reflowing a grid that is
   * genuinely tabular. */
  .shell table {
    display: block;
    max-width: 100%;
    /* Load-bearing. The hours table carries min-width: 544px so its columns
     * stay readable on a desktop, and a min-width beats a max-width — so the
     * box stayed 544px wide inside a 301px parent and overflowed instead of
     * scrolling. Releasing the floor lets the block shrink to the screen while
     * its own content keeps the width it needs. */
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* A scrolling table needs its cells to stop wrapping, or the columns
   * collapse to one character wide instead of scrolling. */
  .shell table th,
  .shell table td {
    white-space: nowrap;
  }
}

/* iOS zooms the whole page when you focus a field whose text is under 16px,
 * and it does not zoom back out. Every text field in Arc measured 12.8-14px,
 * so the first tap on the Quarterback box would have left the page magnified
 * and side-scrolling for the rest of the demo. 16px is the documented
 * threshold, not a preference, so it is set rather than nudged.
 *
 * The 44px min-height above already reserves room for the larger text.
 */
@media (max-width: 900px) {
  .shell input:not([type="checkbox"]):not([type="radio"]),
  .shell textarea,
  .shell select {
    font-size: 16px;
  }
}

/* An icon button is square, so the 44px floor has to apply to both sides or it
 * becomes a tall thin sliver rather than a bigger target. */
@media (max-width: 900px) {
  .chat-icon-btn {
    min-width: 44px;
  }
}

/* The launcher is the only navigation on a phone — the dock is hidden and the
 * home button is the single affordance — so its own controls have to be
 * thumb-sized too. They sit outside .shell, which is why the rule above missed
 * them: the search box measured 21px tall and the two tabs 29px.
 */
@media (max-width: 900px) {
  .launcher-panel input,
  #launcherHomeTab,
  #launcherAllTab {
    min-height: 44px;
    font-size: 16px;
  }
}

/* The composer on a phone.
 *
 * Four controls plus the field is a desktop layout: on a 375px screen the
 * paperclip, the camera, the microphone and the send button left about 120px
 * for the text, so the placeholder wrapped to two lines inside a box built for
 * one and "Ask anything" was cut in half.
 *
 * The camera goes. It is the one control with a duplicate — the paperclip
 * opens the same picker and a phone's picker offers the camera anyway — so
 * removing it costs nothing and gives the field back forty pixels.
 */
@media (max-width: 480px) {
  #chatCameraButton { display: none; }

  .chat-input button.chat-attach-button {
    flex: 0 0 34px; width: 34px; height: 34px;
  }

  /* Room for a descender and a second line if somebody writes one, rather than
   * a fixed height the content can exceed. */
  .chat-input textarea {
    min-height: 46px;
    padding: 11px 8px;
  }
}

/* The sidebar toggle sat on top of the panel's own heading.
 *
 * On a phone the toggle is pinned to the top-left of the chat area and the
 * panel starts at the same corner, so "ARC HAS DONE THE READING" ran
 * underneath it. The panel is the thing being read, so it wins — and while one
 * is open the toggle is not what anybody is reaching for. */
@media (max-width: 760px) {
  .qb-chat-screen.is-working #chatSidebarOpen { display: none; }
  .app-panel-bar { padding-right: 4px; }
}

/* --- shell.css --- */
/* The app shell.
 *
 * The sidebar was a launcher sitting permanently beside the thing it launches,
 * eating 240px of the screen the Quarterback needs for widgets. Neither macOS
 * nor iOS does that: both keep the launcher out of the way until it is asked
 * for. This is that, in two shapes.
 *
 * DESKTOP is the Dock. A thin strip of icons for the apps someone actually
 * uses, floating over the content, with the full set a keystroke away.
 *
 * MOBILE is the iOS home screen. The Quarterback fills the display with no
 * chrome at all, and one affordance at the bottom reveals every app in a grid.
 * That is genuinely a different interface, not the desktop squeezed.
 */

/* The legacy nav still drives routing and role gating, so it stays in the DOM
 * and stops being visible rather than being deleted. */
.nav[data-legacy-nav] {
  display: none !important;
}

/* Author display:grid/flex rules override the browser's default [hidden].
 * Signed-out chrome must be absent visually and from keyboard navigation,
 * regardless of viewport or a late navigation repaint. */
#staffIdentity[hidden], #feedbackButton[hidden], #logoutButton[hidden],
#dock[hidden], #homeButton[hidden],
body.auth-locked :is(#staffIdentity, #feedbackButton, #logoutButton, #dock, #homeButton, #launcher) {
  display: none !important;
}

/* Reclaim the column the sidebar occupied, and centre what is left.
 *
 * `margin-inline: auto`, not `margin-left: 0`. The base rule offset the shell
 * by the old 208px sidebar, so there was never an auto margin to preserve, and
 * zeroing the left one alone pinned a 78rem column to the left edge of every
 * screen wider than it. At 1440px that dumped 177px of dead space on the
 * right; on a 27in display it is closer to 1300px, with the whole app squeezed
 * into the left half and the dock — which is fixed to the viewport centre —
 * visibly disagreeing with it. First thing a new pair of eyes noticed. */
body.shell-modern main.shell {
  margin-inline: auto;
  max-width: 78rem;
}

/* The dock's landing space, only when there is a dock.
 *
 * The dock is hidden until someone signs in, so reserving 6.5rem for it on the
 * sign-in screen gave a page holding one card a scrollbar and 104px of dead
 * space under it. */
body.shell-modern:not(.auth-locked) main.shell {
  padding-bottom: 6.5rem;
}

/* -- the dock (desktop) --------------------------------------------------- */

.dock {
  position: fixed;
  left: 50%;
  bottom: 1.1rem;
  transform: translateX(-50%);
  z-index: 40;
  padding: 0;
  border: none;
  background: none;
}

.dock-inner {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.4rem;
  border-radius: 18px;
  background: color-mix(in srgb, var(--surface, #fff) 82%, transparent);
  border: 1px solid var(--border, rgba(15, 23, 42, 0.1));
  box-shadow: 0 12px 34px rgba(15, 23, 42, 0.14);
  /* Frosted so content scrolling underneath stays legible without the dock
   * becoming a solid bar that reintroduces the sidebar's problem. */
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
}

.dock-item {
  position: relative;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: none;
  border-radius: 13px;
  background: transparent;
  color: var(--muted, #64748b);
  cursor: pointer;
  transition: background 0.14s ease, color 0.14s ease, transform 0.14s ease;
}

.dock-item:hover {
  background: rgba(15, 23, 42, 0.06);
  color: var(--text, #0f172a);
  transform: translateY(-2px);
}

.dock-item.active {
  background: color-mix(in srgb, var(--accent, #107a57) 14%, transparent);
  color: var(--accent, #107a57);
}

/* The Quarterback is the home screen rather than one app among many, so it is
 * separated from the rest instead of sitting in the row. */
.dock-item[data-view='quarterback'] {
  margin-right: 0.35rem;
}

.dock-divider {
  width: 1px;
  height: 26px;
  margin: 0 0.15rem 0 0;
  background: var(--border, rgba(15, 23, 42, 0.14));
}

.dock-item .app-icon {
  width: 21px;
  height: 21px;
}

/* Label on hover only, so the dock stays thin but nothing is a mystery. */
.dock-label {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  padding: 0.2rem 0.5rem;
  border-radius: 7px;
  background: var(--text, #0f172a);
  color: #fff;
  font-size: 0.72rem;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.12s ease;
}

.dock-item:hover .dock-label,
.dock-item:focus-visible .dock-label {
  opacity: 1;
}

.dock-more {
  font-size: 1.15rem;
  line-height: 1;
}

.dock-hint {
  margin-left: 0.15rem;
  padding: 0 0.4rem;
  font-size: 0.68rem;
  color: var(--muted, #64748b);
  font-variant-numeric: tabular-nums;
}

/* -- the launcher (both) -------------------------------------------------- */

.launcher {
  border: none;
  background: none;
  padding: 0;
  max-width: 100vw;
  max-height: 100vh;
  width: 100%;
  height: 100%;
}

.launcher::backdrop {
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(3px);
}

.launcher-panel {
  width: min(46rem, calc(100% - 2rem));
  margin: 12vh auto 0;
  background: var(--surface, #fff);
  border-radius: 18px;
  box-shadow: 0 30px 70px rgba(15, 23, 42, 0.28);
  padding: 1rem 1rem 1.1rem;
  max-height: 74vh;
  display: flex;
  flex-direction: column;
}

.launcher-search {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.75rem;
  border: 1px solid var(--border, rgba(15, 23, 42, 0.12));
  border-radius: 11px;
  margin-bottom: 0.9rem;
  color: var(--muted, #64748b);
}

.launcher-search input {
  flex: 1;
  border: none;
  background: none;
  font: inherit;
  color: var(--text, #0f172a);
  outline: none;
}

.launcher-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(6.4rem, 1fr));
  gap: 0.4rem;
  overflow-y: auto;
  padding-bottom: 0.2rem;
}

.launcher-tile {
  display: grid;
  justify-items: center;
  gap: 0.4rem;
  padding: 0.85rem 0.4rem 0.7rem;
  border: none;
  border-radius: 13px;
  background: transparent;
  cursor: pointer;
  color: var(--text, #0f172a);
  text-align: center;
}

.launcher-tile:hover,
.launcher-tile.selected {
  background: rgba(15, 23, 42, 0.05);
}

/* The keyboard selection has to be distinguishable from hover, or arrowing
 * through the grid while the mouse rests somewhere reads as two selections. */
.launcher-tile.selected {
  outline: 2px solid var(--accent, #107a57);
  outline-offset: -2px;
}

.launcher-tile .app-icon {
  width: 26px;
  height: 26px;
  color: var(--accent, #107a57);
}

.launcher-name {
  font-size: 0.78rem;
  line-height: 1.25;
}

.launcher-empty {
  margin: 1rem 0 0.4rem;
  text-align: center;
  color: var(--muted, #64748b);
  font-size: 0.9rem;
}

/* -- mobile --------------------------------------------------------------- */

.home-button {
  display: none;
}

@media (max-width: 900px) {
  .dock {
    display: none;
  }

  body.shell-modern:not(.auth-locked) main.shell {
    padding-bottom: 5.5rem;
  }

  /* One affordance, bottom centre, thumb height. The iOS home indicator. */
  .home-button {
    display: block;
    position: fixed;
    left: 50%;
    bottom: max(0.65rem, env(safe-area-inset-bottom));
    transform: translateX(-50%);
    z-index: 45;
    width: 8.5rem;
    height: 2.1rem;
    border: none;
    border-radius: 999px;
    background: color-mix(in srgb, var(--surface, #fff) 88%, transparent);
    border: 1px solid var(--border, rgba(15, 23, 42, 0.1));
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.16);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    cursor: pointer;
  }

  .home-button::after {
    content: '';
    display: block;
    width: 4.2rem;
    height: 4px;
    margin: 0 auto;
    border-radius: 999px;
    background: var(--text, #0f172a);
    opacity: 0.5;
  }

  .launcher-panel {
    width: 100%;
    margin: 0;
    margin-top: auto;
    max-height: 88vh;
    border-radius: 20px 20px 0 0;
    padding: 0.9rem 0.9rem calc(1.4rem + env(safe-area-inset-bottom));
  }

  /* Scoped to [open], because a bare `display: flex` overrides the browser's
   * default `display: none` for a closed <dialog>. The closed launcher was
   * still being laid out — absolutely positioned one full viewport down — which
   * doubled the scroll height of every screen on mobile and left a dead
   * viewport of empty space under each one. */
  .launcher[open] {
    display: flex;
    align-items: flex-end;
  }

  .launcher-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 0.2rem;
  }

  .launcher-tile .app-icon {
    width: 30px;
    height: 30px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .dock-item,
  .dock-label {
    transition: none;
  }
}

/* -- home / all apps ------------------------------------------------------- */

/* Android's split, because it is the right one: the home screen holds what you
 * chose, and everything else is one pull away. Arc ships with only the
 * Quarterback on the home screen, so the drawer is how the other twenty-one
 * are found until someone puts the ones they want on it. */
.launcher-modes {
  display: flex;
  gap: 0.25rem;
  margin: 0 0 0.75rem;
  padding: 0.2rem;
  border-radius: 10px;
  background: rgba(15, 23, 42, 0.05);
}

.launcher-mode {
  flex: 1;
  padding: 0.42rem 0.6rem;
  border: none;
  border-radius: 8px;
  background: transparent;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 650;
  color: var(--muted, #64748b);
  cursor: pointer;
}

.launcher-mode.selected {
  background: var(--surface, #fff);
  color: var(--text, #0f172a);
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12);
}

/* The add tile is an affordance, not an app, so it reads as an outline rather
 * than competing with the real icons beside it. */
.launcher-add .app-icon { color: var(--muted, #64748b); }
.launcher-add .launcher-name { color: var(--muted, #64748b); }

/* --- motion.css --- */
/* Arc's motion vocabulary.
 *
 * One file, loaded last, so that motion is a layer over screens rather than a
 * property of any one of them. Twenty-one stylesheets were written at
 * different times and between them held six transitions; every screen change,
 * every card arrival and every button press happened instantly and without
 * comment, which is what makes a fast app feel cheap rather than quick.
 *
 * THE RULES THIS FILE OBEYS — all of them learned the hard way elsewhere in
 * this codebase (see the wf-step-in notes in quarterback.css), and none of
 * them negotiable:
 *
 *  1. AN ENTRANCE IS MOVEMENT, NEVER A FADE. An animation does not run in a
 *     tab the browser has throttled. Content that starts at opacity 0 and
 *     waits for an animation to reveal it is content that can be invisible
 *     forever. Sliding cannot fail that way: the worst case is that the thing
 *     appears without having moved.
 *
 *  2. NO `animation-fill-mode: both` AND NO `backwards`, ON ANYTHING THAT
 *     CARRIES CONTENT. A backwards fill parks the element on its `from`
 *     keyframe until the animation starts, which is the same failure wearing
 *     a different hat. Without a fill, the resting style is the element's own.
 *     That is also why the stagger below is built out of timers rather than
 *     `animation-delay`: a delay needs a backwards fill to look right, and a
 *     timer that never fires simply leaves the element where it already was.
 *
 *  3. TRANSITIONS ARE THE SAFE PRIMITIVE. A transition only runs on a change
 *     of state and has no start-state of its own, so it can never strand
 *     anything. Most of what follows is transitions for exactly that reason;
 *     keyframes are reserved for arrivals.
 *
 *  4. prefers-reduced-motion TURNS ALL OF IT OFF, and every layout here is
 *     correct without a single frame of it having run.
 */

:root{
  /* Two easings and four durations. Everything in the app picks from these,
   * so a screen built next year moves like the ones built last year. */
  --arc-ease: cubic-bezier(.22,.61,.36,1);      /* the house curve: quick out, soft landing */
  --arc-ease-in: cubic-bezier(.45,0,.9,.6);     /* leaving; the mirror of the above */
  --arc-ease-soft: cubic-bezier(.16,1,.3,1);    /* long, expensive settle for arrivals */

  --arc-t-press: 90ms;    /* the finger is still down; anything slower reads as lag */
  --arc-t-fast: 140ms;    /* hover, focus, colour */
  --arc-t-base: 220ms;    /* panels, disclosure, state */
  --arc-t-enter: 320ms;   /* a screen arriving */

  --arc-lift: 0 18px 44px rgba(31,51,40,.13);
  --arc-lift-soft: 0 6px 18px rgba(31,51,40,.09);
  --arc-ring: 0 0 0 3px rgba(27,107,75,.18);

  /* The chat cards were written against a second, undeclared palette
   * (--border/--surface/--text/--accent) and fell back to hard-coded slate:
   * #e2e8f0 borders and #64748b text, which are blue where the rest of Arc is
   * warm green-grey. Declaring them here is what makes a card printed into
   * the chat look like it belongs to the same product as the screen behind
   * it, without touching the card markup the Swift client shares. */
  --border: var(--line, #dce3dc);
  --surface: var(--card, #fff);
  --text: var(--ink, #17231e);
  --accent: var(--green, #1b6b4b);
  --brand: var(--green, #1b6b4b);
  --danger: var(--red, #9c4037);
  --warning: var(--amber, #a35f10);
}

/* ---------------------------------------------------------------------------
 * ARRIVALS
 *
 * A screen is a handful of top-level sections, and they come in one after the
 * other rather than all at once. The stagger is what separates "the data
 * loaded" from "the page arrived", and it is the single cheapest thing in this
 * file that makes the app feel like it cost money.
 *
 * motion.js sets data-arc-in on each section on its own timer. The attribute
 * is the trigger, not the state: nothing here depends on it being present
 * afterwards, and a timer that never fires leaves the section exactly where
 * the layout already put it.
 * ------------------------------------------------------------------------- */
@keyframes arc-rise{
  from{ transform: translate3d(0, 12px, 0) scale(.996); }
  to{ transform: none; }
}

[data-arc-in]{
  animation: arc-rise var(--arc-t-enter) var(--arc-ease-soft);
}

/* A single row, card or notice arriving into a list that is already on screen.
 * Shorter and sideways, so it reads as an addition rather than as the whole
 * screen redrawing. */
@keyframes arc-slide-in{
  from{ transform: translate3d(-10px, 0, 0); }
  to{ transform: none; }
}

[data-arc-in="row"]{
  animation: arc-slide-in var(--arc-t-base) var(--arc-ease);
}

/* ---------------------------------------------------------------------------
 * WAITING
 *
 * Every screen in the app opens by throwing away what was on it and putting up
 * one grey line of text. Measured: between 46ms and 603ms of that per screen.
 * Two problems, and they pull in opposite directions — the long waits need
 * something to look at, the short ones need nothing at all, because a card
 * that appears and vanishes inside three frames reads as a fault.
 *
 * So: the card is held back for 140ms and only the waits that are actually
 * long ever show one. This is the one place in this file where something
 * starts at opacity 0, and it is deliberate — a loading card is not content.
 * If the animation never runs the reader sees an empty panel for a moment
 * instead of a grey box, and the screen's real markup arrives regardless,
 * because it is written by JavaScript and not by this stylesheet. Rule 1
 * protects content; there is no content here to protect.
 * ------------------------------------------------------------------------- */
@keyframes arc-wait-in{ to{ opacity: 1; } }

.loading-card{
  opacity: 0;
  animation: arc-wait-in var(--arc-t-base) var(--arc-ease) 140ms forwards;
  /* Shaped like the page that is coming, rather than a single line floating in
   * a white box: a heading bar and a few body bars, so the panel has roughly
   * the mass of the screen that replaces it and the swap is not a jolt. */
  min-height: 168px;
  position: relative;
  overflow: hidden;
}

.loading-card::after{
  content: "";
  display: block;
  margin-top: 20px;
  height: 96px;
  border-radius: 8px;
  background-image:
    linear-gradient(90deg, rgba(31,51,40,.09) 0 46%, transparent 46%),
    linear-gradient(90deg, rgba(31,51,40,.06) 0 78%, transparent 78%),
    linear-gradient(90deg, rgba(31,51,40,.06) 0 64%, transparent 64%),
    linear-gradient(90deg, rgba(31,51,40,.06) 0 71%, transparent 71%);
  background-repeat: no-repeat;
  background-size: 100% 13px;
  background-position: 0 0, 0 32px, 0 56px, 0 80px;
}

/* The sheen. Paints only, moves nothing, and if it never runs the bars above
 * are still there doing their job. */
.loading-card::before{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, transparent 20%, rgba(255,255,255,.85) 50%, transparent 80%);
  transform: translate3d(-100%, 0, 0);
  animation: arc-sheen 1500ms linear infinite;
  pointer-events: none;
}

@keyframes arc-sheen{
  to{ transform: translate3d(100%, 0, 0); }
}

/* A card that is NOT waiting for anything.
 *
 * Three places were using .loading-card to say something final — a screen that
 * is not built yet, and the two perio failure paths that print the error
 * message. That was already wrong before this file existed: a message that
 * says charting failed should not be dressed as a spinner. It became visibly
 * wrong once .loading-card started shimmering, because a shimmer that never
 * stops is a screen that never loads.
 *
 * Same box, no delay, no sheen, and a red key line when it is a failure. */
.notice-card{
  padding: 24px 28px;
  border: 1px solid var(--line, #dce3dc);
  border-radius: 16px;
  background: var(--card, #fff);
  color: var(--muted, #68736d);
  line-height: 1.55;
}

.notice-card.is-error{
  border-left: 3px solid var(--red, #9c4037);
  color: var(--ink, #17231e);
}

/* An inline skeleton a screen can use for one region rather than the whole
 * page. Same bars, no card around them. */
.arc-skeleton{
  border-radius: 8px;
  background-image: linear-gradient(90deg, rgba(31,51,40,.08) 0 100%);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  min-height: 13px;
}

/* ---------------------------------------------------------------------------
 * PRESS, HOVER AND FOCUS
 *
 * Nothing in the app acknowledged a finger. A button that does not move when
 * pressed is the single loudest tell that a screen is a prototype, and it is
 * also the thing a person notices a hundred times an hour.
 * ------------------------------------------------------------------------- */
.primary-btn,
.secondary-btn,
.install-app,
.feedback-button,
.row-actions button,
.drawer-close,
.launcher-mode,
.workflow-template,
.qsurface-chip,
.app-tile,
button.patient-link{
  transition:
    transform var(--arc-t-press) var(--arc-ease),
    box-shadow var(--arc-t-fast) var(--arc-ease),
    background-color var(--arc-t-fast) var(--arc-ease),
    border-color var(--arc-t-fast) var(--arc-ease),
    color var(--arc-t-fast) var(--arc-ease),
    opacity var(--arc-t-fast) linear;
}

.primary-btn:hover:not(:disabled),
.secondary-btn:hover:not(:disabled),
.install-app:hover:not(:disabled),
.feedback-button:hover:not(:disabled){
  transform: translate3d(0, -1px, 0);
  box-shadow: var(--arc-lift-soft);
}

/* Down, not up. The press is the one moment the control should feel physical,
 * and 97% with no shadow is the whole trick. */
.primary-btn:active:not(:disabled),
.secondary-btn:active:not(:disabled),
.install-app:active:not(:disabled),
.feedback-button:active:not(:disabled),
.row-actions button:active:not(:disabled),
.launcher-mode:active,
.app-tile:active,
button.patient-link:active{
  transform: scale(.972);
  box-shadow: none;
}

.row-actions button:hover:not(:disabled){
  border-color: #9fb5a7;
  background: var(--green-soft, #e5f1e9);
}

/* A control that cannot be used, saying so.
 *
 * `disabled` had no styling anywhere in the app: a button mid-submit, or one
 * gated on a choice the reader has not made yet, looked exactly like a button
 * that works. Pressing it and getting nothing is how an app teaches someone
 * not to trust it. */
:where(.primary-btn, .secondary-btn, .install-app, .feedback-button, .row-actions button):disabled{
  opacity: .5;
  cursor: not-allowed;
  box-shadow: none;
}

/* A control that is working, said in the control rather than in a banner.
 *
 * A form that has been submitted and shows no sign of it gets submitted
 * again, which on a screen that sends messages to patients is not a cosmetic
 * problem. Any button can carry this by taking [data-arc-busy]; the sign-in
 * button is the one that does today, being the first control anyone in a
 * practice ever presses. */
[data-arc-busy]{
  position: relative;
  pointer-events: none;
  opacity: .72;
}

[data-arc-busy]::after{
  content: "";
  position: absolute;
  inset: auto 10px 6px 10px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  opacity: .35;
  transform-origin: left center;
  animation: arc-busy-bar 1100ms var(--arc-ease) infinite;
}

@keyframes arc-busy-bar{
  0%{ transform: scaleX(0); }
  55%{ transform: scaleX(1); }
  100%{ transform: scaleX(1) translate3d(100%, 0, 0); }
}

/* One focus ring, everywhere, and only for keyboards. The app had the
 * browser's default outline in some places and nothing at all in others.
 *
 * No border-radius here. An outline already follows the element's own radius,
 * and setting one would square off every pill — the launcher tabs, the
 * template chips and the badges are all 999px — the moment they took focus. */
:where(button, a, input, select, textarea, summary, [tabindex]):focus-visible{
  outline: 2px solid var(--green, #1b6b4b);
  outline-offset: 2px;
}

.login-card input,
.staff-form input,
.staff-form select,
.rule-builder textarea,
.rule-builder select,
.apps-search input,
.launcher-search input{
  transition:
    border-color var(--arc-t-fast) var(--arc-ease),
    box-shadow var(--arc-t-fast) var(--arc-ease);
}

.login-card input:focus,
.staff-form input:focus,
.staff-form select:focus,
.rule-builder textarea:focus,
.rule-builder select:focus{
  border-color: var(--green, #1b6b4b);
  box-shadow: var(--arc-ring);
  outline: none;
}

/* ---------------------------------------------------------------------------
 * SURFACES
 *
 * Cards, rows and list items. Restrained on purpose: a screen where everything
 * lifts is a screen where nothing does.
 * ------------------------------------------------------------------------- */
.card,
.worklist-card,
.queue-row,
.rule-card,
.staff-card,
.suggested-rule-card,
.clock-card,
.saved-rules article{
  transition:
    transform var(--arc-t-base) var(--arc-ease),
    box-shadow var(--arc-t-base) var(--arc-ease),
    border-color var(--arc-t-fast) var(--arc-ease);
}

/* styles.css already lifts .card.clickable by 2px over 160ms. Same gesture,
 * given a shadow so the lift has somewhere to come from, and extended to the
 * rows that are just as clickable but were never told so. */
.card.clickable:hover,
.queue-row:hover,
.worklist-card:hover{
  transform: translate3d(0, -2px, 0);
  box-shadow: var(--arc-lift);
  border-color: #9fb5a7;
}

.patient-row,
.top-list li,
.provider-table tbody tr,
.timeline-item{
  transition: background-color var(--arc-t-fast) var(--arc-ease);
}

.patient-row:hover,
.provider-table tbody tr:hover{
  background: rgba(27,107,75,.045);
}

/* Disclosure. <details> cannot animate its own height without JavaScript, so
 * the panel arrives by moving instead — which is the rule-1 behaviour anyway. */
details[open] > *:not(summary){
  animation: arc-rise var(--arc-t-base) var(--arc-ease);
}

.staff-card summary,
details > summary{
  transition: background-color var(--arc-t-fast) var(--arc-ease);
}

/* ---------------------------------------------------------------------------
 * NAVIGATION
 * ------------------------------------------------------------------------- */
.nav-item{
  transition:
    background-color var(--arc-t-fast) var(--arc-ease),
    color var(--arc-t-fast) var(--arc-ease),
    transform var(--arc-t-press) var(--arc-ease);
}

.nav-item:active{ transform: scale(.98); }

.launcher-tile{
  transition:
    transform var(--arc-t-press) var(--arc-ease),
    background-color var(--arc-t-fast) var(--arc-ease);
}

.launcher-tile:hover{ transform: translate3d(0, -2px, 0); }
.launcher-tile:active{ transform: scale(.94); }

/* ---------------------------------------------------------------------------
 * DIALOGS
 *
 * The drawer and the launcher appeared fully formed, which on a phone is
 * indistinguishable from a page navigation. They now come from the edge they
 * belong to. Movement only, and no fill: a dialog that does not animate is a
 * dialog that is simply open, which is the correct fallback.
 * ------------------------------------------------------------------------- */
@keyframes arc-drawer-in{
  from{ transform: translate3d(28px, 0, 0); }
  to{ transform: none; }
}

@keyframes arc-sheet-in{
  from{ transform: translate3d(0, 22px, 0); }
  to{ transform: none; }
}

.drawer[open]{
  animation: arc-drawer-in var(--arc-t-base) var(--arc-ease);
}

.launcher[open] .launcher-panel{
  animation: arc-sheet-in var(--arc-t-base) var(--arc-ease);
}

/* The scrim is chrome rather than content, so it may fade. */
.drawer::backdrop,
.launcher::backdrop{
  animation: arc-wait-in var(--arc-t-base) var(--arc-ease) forwards;
  opacity: 0;
}

/* ---------------------------------------------------------------------------
 * EMPTY AND ERROR STATES
 *
 * Consistent shape across screens that were each given their own idea of what
 * "nothing here" looks like.
 * ------------------------------------------------------------------------- */
.empty,
.launcher-empty{
  animation: arc-rise var(--arc-t-base) var(--arc-ease);
}

/* ---------------------------------------------------------------------------
 * OFF
 *
 * Every rule above decorates a layout that is already right. Someone who has
 * asked for less movement loses movement and nothing else — including the
 * loading card, which is given back its opacity here because the animation
 * that would have revealed it is gone.
 * ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  [data-arc-in],
  [data-arc-in="row"],
  .loading-card,
  .loading-card::before,
  .drawer[open],
  .launcher[open] .launcher-panel,
  .drawer::backdrop,
  .launcher::backdrop,
  .empty,
  .launcher-empty,
  [data-arc-busy]::after,
  details[open] > *:not(summary){
    animation: none;
  }

  .loading-card,
  .drawer::backdrop,
  .launcher::backdrop{
    opacity: 1;
  }

  .primary-btn,
  .secondary-btn,
  .install-app,
  .feedback-button,
  .row-actions button,
  .drawer-close,
  .launcher-mode,
  .launcher-tile,
  .workflow-template,
  .qsurface-chip,
  .app-tile,
  button.patient-link,
  .nav-item,
  .card,
  .worklist-card,
  .queue-row,
  .rule-card,
  .staff-card,
  .suggested-rule-card,
  .clock-card,
  .saved-rules article,
  .patient-row,
  .top-list li,
  .provider-table tbody tr,
  .timeline-item{
    transition: none;
  }

  .primary-btn:hover:not(:disabled),
  .secondary-btn:hover:not(:disabled),
  .install-app:hover:not(:disabled),
  .feedback-button:hover:not(:disabled),
  .card.clickable:hover,
  .queue-row:hover,
  .worklist-card:hover,
  .launcher-tile:hover,
  .primary-btn:active:not(:disabled),
  .secondary-btn:active:not(:disabled),
  .install-app:active:not(:disabled),
  .feedback-button:active:not(:disabled),
  .row-actions button:active:not(:disabled),
  .launcher-mode:active,
  .launcher-tile:active,
  .app-tile:active,
  .nav-item:active,
  button.patient-link:active{
    transform: none;
  }
}

/* --- premium.css --- */
/* Arc's shared workspace finish. Flat, cool-neutral surfaces, deliberate
   typography and a consistent control grammar; clinical state colours and
   all approval/disclosure content remain owned by the feature. */
:root {
  --ink: #1d2b28;
  --muted: #667571;
  --paper: #fff;
  --card: #fff;
  --line: #dce3e0;
  --green: #225b4a;
  --green-soft: #edf4f0;
  --surface: #fff;
  --text: var(--ink);
  --border: var(--line);
  --accent: var(--green);
  --shadow: 0 2px 8px rgba(29, 43, 40, .025);
  --arc-radius: 8px;
  --arc-ease: cubic-bezier(.2, .7, .3, 1);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}
.launcher-customize { display: block; margin: 0 20px 12px auto; min-height: 44px; border: 0; background: transparent; color: var(--green); font-size: 13px; font-weight: 600; cursor: pointer; }
.launcher-order-status { margin: 12px 8px 0; min-height: 1.4em; font-size: 12px; line-height: 1.4; color: var(--muted); }
.launcher-tile[data-reorder] { cursor: grab; user-select: none; -webkit-user-select: none; touch-action: none; position: relative; }
.launcher-tile[data-reorder] svg { pointer-events: none; }
.launcher-tile.is-dragging { z-index: 2; pointer-events: none; cursor: grabbing; background: var(--surface, #fff); box-shadow: 0 8px 24px rgba(24, 53, 44, .14); transition: none; }
.launcher-tile.drop-before::before, .launcher-tile.drop-after::after { content: ''; position: absolute; top: 12%; bottom: 12%; width: 3px; border-radius: 2px; background: var(--green); }
.launcher-tile.drop-before::before { left: 0; }
.launcher-tile.drop-after::after { right: 0; }
.apps-picker > .section-title { display: block; margin-bottom: 24px; }
.apps-picker > .section-title h2 { margin: 0 0 8px; }
.apps-picker > .section-title > span { display: block; font-size: 13px; line-height: 1.6; }
.apps-order-section { margin: 24px 0; }
.apps-order-section h3 { margin: 0; font-size: 15px; }
.apps-order { padding: 0; margin: 12px 0 0; list-style: none; border-top: 1px solid var(--line); }
.apps-order-row { display: flex; align-items: center; gap: 8px; min-height: 56px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.apps-order-grip { color: var(--muted); cursor: grab; padding: 8px; }
.apps-order-name { flex: 1; min-width: 0; font-size: 14px; font-weight: 550; }
.apps-order-row button { width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid var(--line); border-radius: 7px; background: #fff; color: var(--ink); font-size: 18px; }
.apps-order-row button:disabled { opacity: .3; }
.apps-order-row.is-dragging { background: var(--green-soft); opacity: .6; }
.reception-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; }
.reception-heading-actions, .reception-rules-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.reception-heading-actions button { min-height: 44px; white-space: nowrap; }
.reception-rules-panel { margin: 24px 0; padding: 24px 0; border-block: 1px solid var(--line); }
.reception-rules-panel h2 { margin: 0; font-size: 21px; font-weight: 600; letter-spacing: -.025em; }
.reception-rules-panel .detail { max-width: 78ch; line-height: 1.6; }
.reception-rules-panel textarea { display: block; box-sizing: border-box; width: 100%; margin: 10px 0; padding: 14px; border: 1px solid var(--line); border-radius: 8px; font: 14px/1.65 ui-monospace, SFMono-Regular, monospace; resize: vertical; }
.reception-rules-confirm { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; margin-bottom: 16px; }
.reception-rules-confirm input { appearance: auto; width: 20px; height: 20px; min-width: 20px; padding: 0; margin: 0; }
.reception-customize-intro { margin-bottom: 28px; }
.reception-customize-section { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(0, 2.4fr); gap: 36px; padding: 24px 0; border-top: 1px solid var(--line); }
.reception-customize-section h3 { margin: 0; font-size: 16px; font-weight: 600; }
.reception-customize-section label { font-size: 14px; font-weight: 550; }
.reception-customize-section button { min-height: 44px; }
.reception-customize-section .detail { font-size: 13px; }
.reception-voice-picker { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.reception-voice-picker select { flex: 1 1 160px; min-width: 0; min-height: 44px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); }
.reception-customize-section audio { max-width: 100%; margin-top: 8px; }
.reception-guide-review { margin-top: 20px; padding: 20px; background: var(--green-soft); border-radius: 8px; }
.reception-guide-review h4 { margin: 0; font-size: 15px; }
.reception-guide-review pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 300px; overflow: auto; font-family: inherit; font-size: 14px; line-height: 1.65; }
.reception-guide-review .reception-rules-confirm { align-items: flex-start; font-weight: 400; line-height: 1.6; }
.reception-guide-review .reception-rules-confirm input { flex: 0 0 20px; margin-top: 2px; }
@media (max-width: 680px) { .reception-customize-section { grid-template-columns: 1fr; gap: 16px; } .reception-voice-picker select { flex-basis: 100%; } .reception-voice-picker button { flex: 1; } }
@media (max-width: 680px) { .reception-heading { flex-direction: column; gap: 16px; } .reception-heading-actions { width: 100%; } .reception-heading-actions button { flex: 1; } }
button, input, select, textarea { font-family: inherit; }
button, summary, a { -webkit-tap-highlight-color: transparent; }
:where(button, input, select, textarea, summary, a):focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 3px;
}
:where(input, textarea)::placeholder { color: #7c8984; opacity: 1; }
.topbar {
  height: calc(56px + env(safe-area-inset-top));
  background: rgba(255,255,255,.96);
  border-bottom-color: #e0e6e3;
  backdrop-filter: blur(12px);
}
/* A quiet release notice in document flow. It never covers an editor, steals
   focus, animates indefinitely or changes the fixed app dock. */
.arc-update-notice {
  display: flex; align-items: center; justify-content: center; gap: 16px;
  padding: 3px 16px; min-height: 44px; border-bottom: 1px solid #d4e2d9;
  background: #edf4f0; color: var(--green); font-size: 12px; line-height: 1.5;
}
.arc-update-notice[hidden] { display: none; }
.arc-update-notice button {
  min-height: 38px; padding: 7px 3px; border: 0; background: transparent;
  color: inherit; font-size: 12px; font-weight: 650; cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px; white-space: nowrap;
}
.arc-update-dialog {
  width: min(460px, calc(100vw - 32px)); max-height: calc(100dvh - 48px);
  padding: 28px; border: 1px solid var(--line); border-radius: 12px;
  color: var(--ink); background: #fff; box-shadow: 0 16px 60px #183f3420;
}
.arc-update-dialog::backdrop { background: #1d2b2859; }
.arc-update-dialog h2 { margin: 0 0 14px; font-size: 23px; font-weight: 620; letter-spacing: -.03em; }
.arc-update-dialog p { margin: 0 0 16px; font-size: 14px; line-height: 1.6; }
.arc-update-dialog p + p { color: var(--muted); font-size: 13px; }
.arc-update-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.arc-update-actions :is(button,a) {
  display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: 4px; min-height: 44px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 7px; background: #fff; color: var(--ink); font-size: 12px;
  font-weight: 600; line-height: 1.5; text-decoration: none; cursor: pointer;
}
.arc-update-actions a { background: var(--green); border-color: var(--green); color: #fff; }
.arc-update-actions a span { font-weight: 400; }
@media(max-width:480px) {
  .arc-update-notice { justify-content: space-between; gap: 8px; font-size: 11px; }
  .arc-update-notice button { min-height: 44px; font-size: 11px; }
  .arc-update-dialog { padding: 24px; }
  .arc-update-actions { flex-direction: column; }
}
body.shell-modern main.shell { max-width: 1200px; padding-top: 32px; }
.hero { margin-bottom: 24px; }
.hero h1, .scribe-hero h1 {
  font-family: inherit;
  font-size: clamp(28px, 3vw, 36px);
  font-weight: 620;
  line-height: 1.17;
  letter-spacing: -.035em;
}
.hero > p:last-child { line-height: 1.6; font-size: 14px; }
.section-title h2, .section-title h3 { font-family: inherit; font-weight: 620; letter-spacing: -.02em; }
.primary-btn, .secondary-btn, .icon-btn, .record-scribe, .file-btn {
  border-radius: 9px;
  font-size: 13px;
  font-weight: 600;
  min-height: 40px;
  transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.primary-btn { background: var(--green); border-color: var(--green); color: #fff; box-shadow: 0 2px 4px #1d2b2810; }
.primary-btn:hover:not(:disabled) { background: #194b3c; }
.secondary-btn { background: #fff; border-color: var(--line); }
.secondary-btn:hover:not(:disabled) { background: var(--green-soft); border-color: #b8ccc2; }
button:disabled { cursor: not-allowed; }
.card, .reception-demo, .reception-knowledge, .scribe-compose-main,
.scribe-template-pane, .scribe-template-make, .scribe-rules, .agent-item {
  border-radius: var(--arc-radius);
  box-shadow: var(--shadow);
}
.loading-card { padding: 24px; font-size: 14px; color: var(--muted); }

/* Quarterback: a quiet sidebar and one well-aligned working column. */
body.shell-modern:not(.auth-locked) main.shell.is-chat { padding: 0; }
.chat-sidebar { width: 244px; min-width: 244px; padding: 18px 16px 16px; background: #f7f9f8; gap: 14px; }
.chat-sidebar-action { justify-content: center; min-height: 40px; border-radius: 7px; color: var(--green); background: transparent; border-color: #b9c8c1; font-size: 13px; font-weight: 560; }
.chat-sidebar-action:hover { color: var(--green); background: #edf3ef; }
.chat-sidebar-search { min-height: 44px; border-radius: 9px; background: #fff; }
.chat-sidebar-search input { font-size: 13px; }
.chat-sidebar-heading { text-transform: none; letter-spacing: 0; font-size: 12px; font-weight: 600; margin: 8px 0 0; }
.chat-history-row { border-radius: 9px; }
.chat-history-open { padding: 11px 8px; }
.chat-history-open strong { font-size: 13px; font-weight: 550; line-height: 1.4; }
.chat-history-open small { font-size: 11px; line-height: 1.6; opacity: .8; }
.chat-history-row.is-active { background: #e4eee8; }
.chat-history-empty { font-size: 13px; line-height: 1.8; padding: 24px 10px; color: var(--muted); }
.chat-sidebar-foot { padding-top: 18px; gap: 11px; }
.chat-avatar { width: 36px; height: 36px; color: var(--green); background: #dfe9e3; font-size: 13px; font-weight: 600; }
.chat-main { padding-inline: 40px; padding-bottom: 108px; }
.chat-main > * { max-width: 760px; }
.chat-greeting { padding: 0; align-items: flex-start; text-align: left; gap: 9px; }
.chat-greeting h1 { font-family: inherit; font-size: 20px; font-weight: 500; line-height: 1.4; letter-spacing: -.025em; }
.chat-greeting p { font-size: clamp(30px, 3vw, 38px); line-height: 1.2; letter-spacing: -.045em; color: #183f34; font-weight: 620; margin-top: 9px; }
.chat-greeting small { font-size: 14px; line-height: 1.75; max-width: 62ch; opacity: 1; margin-top: 14px; }
.qb-chat-screen:not(.has-history) .chat-messages { padding: 0 0 26px; }
.qb-chat-screen .suggested-questions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 0; gap: 0 24px; }
.qb-chat-screen .suggested-questions button {
  display: flex; align-items: center; text-align: left; gap: 12px;
  min-height: 66px; padding: 12px 2px; white-space: normal;
  border-radius: 0; border: 0; border-bottom: 1px solid var(--line);
  background: transparent; color: var(--ink); font-size: 13px; font-weight: 500; line-height: 1.5;
  transition: border-color .15s ease, background .15s ease;
}
.qb-chat-screen .suggested-questions button:hover { background: #f7faf8; border-color: #9fb8ac; }
.chat-suggestion-icon { width: 20px; height: 20px; flex: 0 0 20px; color: #61736b; }
.chat-suggestion-arrow { width: 16px; height: 16px; margin-left: auto; flex: 0 0 16px; color: #87958e; }
.qb-chat-screen .suggested-questions .workflow-launch { grid-column: 1 / -1; justify-self: start; min-height: 44px; margin-top: 12px; padding-left: 2px; background: none; border-color: transparent; color: var(--green); }
.qb-chat-screen .chat-input {
  display: grid; grid-template-columns: auto auto 1fr auto auto; align-items: end;
  gap: 6px; padding: 12px; margin-top: 12px; border: 1px solid #d3ded8;
  background: #fff; border-radius: 8px; box-shadow: 0 2px 5px #1d2b2805;
  transition: border-color .15s, box-shadow .15s;
}
.qb-chat-screen .chat-input:focus-within { border-color: #8cae9e; box-shadow: 0 0 0 3px #225b4a08; }
.qb-chat-screen .chat-input textarea { grid-column: 1 / -1; grid-row: 1; min-height: 66px; width: 100%; padding: 4px 5px; font-size: 15px; line-height: 1.6; background: transparent; border: 0; outline: 0; resize: none; }
.qb-chat-screen #chatAttachButton { grid-column: 1; }
.qb-chat-screen #chatCameraButton { grid-column: 2; }
.qb-chat-screen #chatDictateButton { grid-column: 4; }
.qb-chat-screen .chat-input button[aria-label='Send message'] { grid-column: 5; width: 40px; height: 40px; border-radius: 8px; background: var(--green); display: grid; place-items: center; }
.qb-chat-screen .chat-input .chat-attach-button { width: 38px; height: 38px; background: none; color: var(--muted); }
.qb-chat-screen .chat-privacy { font-size: 11px; line-height: 1.5; text-align: left; max-width: 760px; margin-top: 12px; }
.qb-chat-screen.has-history .chat-messages { padding: 24px 0; }
.qb-chat-screen.has-history .chat-input textarea { min-height: 30px; }
.chat-message { max-width: 94%; }
.message-bubble { font-size: 14px; border-color: #e0e7e3; padding: 14px 17px; }
.chat-message.user .message-bubble { background: #e8f0eb; border-color: #e1eae4; color: var(--ink); }
.app-panel { border-radius: 14px; border-color: var(--line); box-shadow: var(--shadow); }
.app-panel-bar { background: #fff; padding: 20px 24px; }
.app-panel-bar h2 { font-family: inherit; font-size: 24px; font-weight: 600; letter-spacing: -.025em; }
.app-panel-bar .eyebrow { font-size: 10px; letter-spacing: .08em; color: var(--muted); }
.agent-headline { font-size: 18px; font-weight: 550; line-height: 1.5; }

/* Scribe: compact hierarchy, a legible patient list and one capture surface. */
.scribe-hero { margin: 0 0 16px; padding: 0; }
.scribe-title-line { display: flex; align-items: baseline; gap: 24px; margin-bottom: 10px; }
.scribe-title-line h1 { font-size: 25px; line-height: 1.2; letter-spacing: -.035em; margin: 0; }
.scribe-title-line p { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.5; }
.scribe-hero #scribeOpenSummary { font-size: 12px; }
.scribe-tabs { display: flex; width: 100%; gap: 20px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: 0; margin-bottom: 16px; box-shadow: none; background: transparent; }
.scribe-tab { flex: 0 0 auto; min-height: 44px; padding: 10px 14px; border-radius: 0; border: 0; border-bottom: 2px solid transparent; font-size: 12px; font-weight: 500; }
.scribe-tab.is-active { background: transparent; border-bottom-color: var(--green); color: var(--green); font-weight: 650; box-shadow: none; }
.scribe-tab span { font-size: 10px; min-width: 18px; background: #1d2b2809; }
.scribe-tab.is-active span { background: #edf3ef; color: var(--green); }
.scribe-write > [role='alert'] { margin-bottom: 10px; padding: 12px 16px; border-width: 1px; border-radius: 6px; box-shadow: none; font-size: 12px; line-height: 1.6; }
.scribe-modes { display: flex; gap: 24px; margin-bottom: 2px; border: 0; border-radius: 0; background: none; }
.scribe-mode { display: flex; align-items: center; gap: 9px; min-height: 40px; padding: 6px 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
.scribe-mode::before { content: ''; width: 16px; height: 16px; border: 1px solid #aebdb5; border-radius: 50%; box-shadow: inset 0 0 0 3px #fff; flex: 0 0 16px; }
.scribe-mode strong { font-size: 13px; font-weight: 500; }
.scribe-mode.is-chosen { border: 0; background: none; box-shadow: none; }
.scribe-mode.is-chosen::before { background: var(--green); border-color: #9ab6a7; }
.scribe-mode-note { display: block; margin: 0 0 16px; font-size: 12px; line-height: 1.65; color: var(--muted); }
.scribe-compose-main { display: grid; grid-template-columns: 280px minmax(0,1fr); gap: 0; padding: 0; border-color: var(--line); overflow: hidden; }
.scribe-patient-rail { padding: 20px; border-right: 1px solid var(--line); min-width: 0; }
.scribe-capture-work { display: grid; align-content: start; gap: 18px; padding: 20px 24px; min-width: 0; }
.scribe-tab-body { padding-bottom: 32px; }
.scribe-patient-pick { display: grid; grid-template-columns: minmax(0,1fr); gap: 12px; }
.scribe-patient-pick-head { grid-column: 1; grid-row: 1; display: grid; gap: 5px; align-content: center; }
.scribe-patient-pick-head strong { font-size: 14px; }
.scribe-patient-pick-head small { font-size: 12px; }
.scribe-patient-search { grid-column: 1; grid-row: 2; margin: 0; min-height: 40px; border-radius: 6px; background: #fff; }
.scribe-patient-search svg { flex: 0 0 16px; }
.scribe-patient-search input { min-width: 0; font-size: 12px; }
.scribe-patient-chips { grid-column: 1; grid-row: 3; display: grid; grid-template-columns: minmax(0,1fr); gap: 0; max-height: 264px; border: 0; border-radius: 0; overflow-y: auto; }
.scribe-chip { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; border: 0; border-bottom: 1px solid #e9eeeb; border-radius: 0; padding: 10px 2px; background: #fff; text-align: left; }
.scribe-chip:nth-child(odd) { border-right: 0; }
.scribe-chip strong { font-weight: 500; font-size: 13px; color: var(--ink); }
.scribe-chip span { font-variant-numeric: tabular-nums; color: var(--muted); font-size: 12px; }
.scribe-chip:hover { background: var(--green-soft); }
.scribe-patient-results, .manual-patient-entry { grid-column: 1 / -1; }
.scribe-patient-results:empty { display: none; }
.scribe-patient-chips[hidden] { display: none; }
.scribe-patient-results { display: grid; gap: 0; }
.scribe-patient-identity { display: grid; gap: 3px; min-width: 0; }
.scribe-patient-identity small { font-size: 11px; color: var(--muted); }
.scribe-patient-results>[data-scribe-search-retry] { justify-self: start; margin-top: 8px; }
.manual-patient-entry { margin: 0; font-size: 12px; }
.scribe-record-row { margin: 0; padding: 0; border: 0; border-radius: 0; background: none; gap: 16px; }
.scribe-record-row .record-scribe { display: inline-flex; align-items: center; justify-content: center; width: auto; height: 44px; min-height: 44px; padding: 0 16px; border-width: 1px; border-radius: 9px; box-shadow: none; gap: 9px; flex-shrink: 0; }
.scribe-record-row .record-scribe .record-icon { width: 12px; height: 12px; }
.scribe-record-side { display: flex; align-items: center; gap: 18px; }
.scribe-record-side .scribe-timer { font-size: 14px; font-weight: 500; font-variant-numeric: tabular-nums; }
.scribe-record-side .detail { font-size: 12px; line-height: 1.55; max-width: 66ch; }
.scribe-transcript > span { font-size: 13px; font-weight: 600; }
.scribe-transcript textarea { border-radius: 6px; padding: 14px; font-size: 14px; font-weight: 400; line-height: 1.7; min-height: 164px; border-color: #d2ddd6; background: #fff; }
.scribe-compose-actions { margin-top: 0; gap: 12px; }
.scribe-template-pick { font-size: 12px; font-weight: 600; letter-spacing: 0; }
.scribe-template-pick select { min-height: 38px; border-radius: 8px; font-size: 13px; font-weight: 400; }
.scribe-processing-details { margin-top: 14px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 6px; background: #fff; font-size: 12px; }
.scribe-processing-details > summary { color: var(--green); font-weight: 600; cursor: pointer; }
.scribe-live-empty { padding: 16px 18px; border-radius: 6px; background: #fafbfa; font-size: 13px; line-height: 1.6; }
.scribe-patient-chosen { display: grid; align-content: start; justify-content: stretch; padding: 0; gap: 18px; border: 0; border-radius: 0; background: none; }
.scribe-patient-chosen span { font-size: 11px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.scribe-patient-chosen strong { display: block; margin-top: 5px; font-size: 17px; font-weight: 600; letter-spacing: -.025em; overflow-wrap: anywhere; }
.scribe-patient-chosen .scribe-encounter-date { margin: 0; min-width: 0; }
.scribe-patient-chosen .scribe-encounter-date input { width: 100%; min-width: 0; font-size: 13px; }
.scribe-patient-chosen .link-btn { justify-self: start; padding: 0; min-height: 36px; text-underline-offset: 3px; }
.scribe-live-empty strong { font-size: 14px; font-weight: 600; }
.scribe-source-evidence { margin: 12px 0; padding: 12px 14px; border-left: 3px solid #a2bba9; background: #f2f6f3; border-radius: 0 8px 8px 0; }
.scribe-source-evidence strong { font-size: 11px; color: var(--green); }
.scribe-source-evidence blockquote { margin: 6px 0; font-size: 13px; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
.scribe-source-evidence p { margin: 0; font-size: 11px; color: var(--muted); line-height: 1.5; }
.scribe-revise { display:grid; gap:10px; margin:18px 0; padding:16px; border:1px solid var(--line); border-radius:8px; background:#f8faf9; }
.scribe-revise label { display:grid; gap:8px; font-size:13px; font-weight:600; }
.scribe-revise textarea { width:100%; min-height:72px; resize:vertical; border:1px solid #d2ddd6; border-radius:6px; padding:10px 12px; font:inherit; font-weight:400; line-height:1.5; background:#fff; }
.scribe-revise-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.scribe-revise small, .scribe-revise-state { font-size:12px; line-height:1.5; color:var(--muted); }
.scribe-revise-state:empty { display:none; }
.scribe-revision-context { padding:0 0 14px; border-bottom:1px solid var(--line); }
.scribe-revision-context[hidden], .scribe-revision-reset[hidden], .scribe-revision-answers[hidden] { display:none; }
.scribe-revision-original { margin:0 0 8px; color:var(--muted); font-size:13px; line-height:1.5; overflow-wrap:anywhere; }
.scribe-revision-question { display:block; font-size:16px; font-weight:600; line-height:1.5; overflow-wrap:anywhere; }
.scribe-revision-answers { margin-top:10px; font-size:13px; line-height:1.5; }
.scribe-revision-answers div { white-space:pre-wrap; padding-top:8px; overflow-wrap:anywhere; }
.scribe-revise .scribe-revision-reset { margin-right:auto; border:0; padding:0; min-height:36px; background:transparent; color:var(--muted); font-size:13px; }
.scribe-revise-hint[hidden] { display:none; }
/* An editing conversation needs its question, reply and action together.
   Do not trap it below the focused workflow's pinned documentation prompt. */
.workflow-host[data-step='review']:has(.scribe-revision-context:not([hidden])) .workflow { overflow-y:auto; }
.workflow-host[data-step='review']:has(.scribe-revision-context:not([hidden])) .workflow-bar { position:sticky; top:0; z-index:3; }
.workflow-host[data-step='review']:has(.scribe-revision-context:not([hidden])) .workflow-body { overflow:visible; flex:none; }
.workflow-host[data-step='review']:has(.scribe-revision-context:not([hidden])) .workflow-actions { position:static; }
.scribe-note-field.is-ai-revised textarea { border-color:#8eafa0; }
@media(max-width:680px){ .scribe-revise textarea { font-size:16px; } }

/* Scribe clarification: one reading column, not a card inside a card.
   Scope this to the full Scribe review; the shared legacy question classes
   are also used by the focused workflow. */
body.shell-modern:not(.auth-locked):has(.scribe-title-line) main.shell {
  height: calc(100dvh - 148px - var(--arc-update-height, 0px) - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  overflow-y: auto; overscroll-behavior-y: contain; scroll-padding-block: 24px;
}
.scribe-row:has(.scribe-open-review) { border: 0; border-radius: 0; box-shadow: none; background: #fff; }
.scribe-open-review { max-width: 680px; margin: 32px auto 0; }
.scribe-questions.scribe-clarify { display: block; margin: 0; padding: 0 0 24px; border: 0; border-radius: 0; background: #fff; box-shadow: none; scroll-margin-top: 0; }
.scribe-back-to-note { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin: 0 0 20px -6px; padding: 0 6px; border: 0; background: none; color: var(--green); font: inherit; font-size: 14px; cursor: pointer; }
.scribe-back-to-note svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.scribe-clarify-heading h3 { margin: 0; font-size: 28px; line-height: 1.18; font-weight: 550; letter-spacing: -.035em; }
.scribe-clarify-heading p { margin: 12px 0 20px; max-width: 48ch; font-size: 14px; line-height: 1.55; color: var(--muted); }
.scribe-clarify-heading > span { font-size: 13px; color: var(--muted); }
.scribe-clarify .scribe-question { display: grid; grid-template-columns: 26px minmax(0,1fr); column-gap: 12px; margin: 0; padding: 24px 0; border: 0; }
.scribe-clarify .scribe-question + .scribe-question { border-top: 1px solid #e2e8e5; }
.scribe-question-number { padding-top: 2px; font-size: 13px; line-height: 1.6; color: var(--muted); font-variant-numeric: tabular-nums; }
.scribe-clarify .scribe-question-prompt { margin: 0; font-size: 16px; line-height: 1.5; font-weight: 500; letter-spacing: -.012em; }
.scribe-question-help { margin: 4px 0 8px; }
.scribe-question-help > summary { display: flex; align-items: center; gap: 9px; width: fit-content; min-height: 36px; font-size: 13px; color: var(--muted); cursor: pointer; list-style: none; }
.scribe-question-help > summary::-webkit-details-marker, .scribe-context-disclosure > summary::-webkit-details-marker { display: none; }
.scribe-question-help > summary::after, .scribe-context-disclosure > summary::after { content: ''; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform .15s ease; flex: 0 0 auto; }
.scribe-question-help[open] > summary::after, .scribe-context-disclosure[open] > summary::after { transform: rotate(225deg); }
.scribe-clarify .scribe-question-why { margin: 0 0 12px; font-size: 13px; line-height: 1.65; }
.scribe-clarify .scribe-answer-row { position: relative; display: block; }
.scribe-clarify textarea.scribe-answer { display: block; width: 100%; min-height: 112px; padding: 14px 60px 14px 14px; resize: vertical; border: 1px solid #d9e1dd; border-radius: 9px; background: #f8faf9; color: var(--ink); font: inherit; font-size: 16px; line-height: 1.55; }
.scribe-clarify textarea.scribe-answer:focus { background: #fff; border-color: var(--green); outline: 2px solid #225b4a22; outline-offset: 2px; }
.scribe-clarify .scribe-answer-mic { position: absolute; right: 10px; bottom: 10px; width: 44px; height: 44px; min-height: 44px; padding: 10px; border-radius: 50%; color: var(--green); box-shadow: none; }
.scribe-clarify .scribe-answer-mic.is-listening { color: var(--red); border-color: var(--red); }
.scribe-clarify .scribe-question-actions { display: grid; gap: 8px; }
.scribe-clarify .scribe-question-actions button { width: 100%; min-height: 48px; font-size: 14px; box-shadow: none; }
.scribe-clarify .scribe-skip-answers { border: 0; background: none; color: var(--green); font-weight: 500; }
.scribe-clarify .scribe-question-state:empty { display: none; }
.scribe-clarify .scribe-question-state { line-height: 1.5; padding: 4px 0; }
.scribe-chart-context.scribe-context-disclosure { display: block; padding: 0; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: none; margin: 0; }
.scribe-context-disclosure > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 58px; padding: 14px 0; font-size: 14px; font-weight: 500; cursor: pointer; list-style: none; }
.scribe-context-disclosure > div { display: grid; gap: 8px; padding: 0 0 20px; font-size: 13px; line-height: 1.65; }
.scribe-open-review .scribe-checklist { border: 0; border-top: 1px solid var(--line); border-radius: 0; padding: 20px 0; box-shadow: none; }
.scribe-open-review .scribe-checklist .section-title { display: grid; gap: 6px; }
.scribe-open-review .scribe-verdict { padding: 0; background: none; font-weight: 400; line-height: 1.6; }
.scribe-note-editor { scroll-margin-top: 80px; }

/* Note-first review. Keep editor and check host as siblings: revision and
   preview binding deliberately use that ownership boundary. */
.scribe-row-open:not([hidden]):has(> .scribe-open-review),
.scribe-draft-host:has(> .scribe-note-editor):has(> .scribe-open-review) {
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr);
  align-items: start; gap: 36px; padding-top: 28px;
}
:is(.scribe-row-open, .scribe-draft-host) > .scribe-open-note { min-width: 0; }
:is(.scribe-row-open, .scribe-draft-host) .scribe-note-editor {
  min-width: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none;
  background: #fff; gap: 20px;
}
:is(.scribe-row-open, .scribe-draft-host) > .scribe-open-review {
  width: 100%; max-width: none; min-width: 0; margin: 0; padding: 0 6px 0 28px;
  border-left: 1px solid var(--line); position: sticky; top: 0;
  max-height: calc(100dvh - 200px); overflow-y: auto; overflow-x: hidden; scrollbar-width: thin;
  overscroll-behavior-y: contain; scroll-padding-block: 12px;
}
.scribe-note-editor .scribe-signing-identity strong { font-size: 18px; font-weight: 600; }
.scribe-document-title { margin: 0 0 4px; font-size: 28px; line-height: 1.2; font-weight: 550; letter-spacing: -.035em; }
:is(.scribe-row-open, .scribe-draft-host) .scribe-note-editor { scroll-margin-top: 0; }
.scribe-note-editor .scribe-signing-identity > span { font-size: 13px; font-weight: 400; color: var(--muted); }
.scribe-note-editor .scribe-note-field { font-size: 14px; font-weight: 550; color: var(--ink); gap: 8px; }
.scribe-note-editor .scribe-note-field textarea {
  font-size: 16px; font-weight: 400; line-height: 1.6; background: #fff;
  border-color: #e2e8e5; border-radius: 6px; min-height: 90px;
  field-sizing: content; max-height: 420px; padding: 10px 12px;
}
.scribe-note-editor .scribe-note-field.is-question-target textarea {
  border-color: var(--green); outline: 2px solid #225b4a18; outline-offset: 2px;
}
.scribe-note-editor :is(.scribe-source, .scribe-codes, .scribe-revise) {
  background: none; border: 0; border-top: 1px solid var(--line);
  border-radius: 0; padding: 16px 0; margin: 0; box-shadow: none;
}
.scribe-jump-to-checks, .scribe-show-section, .scribe-request-correction {
  background: none; border: 0; padding: 6px 0; min-height: 36px;
  color: var(--green); font: inherit; font-size: 13px; cursor: pointer;
  text-align: left; text-underline-offset: 4px;
}
.scribe-jump-to-checks:hover, .scribe-show-section:hover, .scribe-request-correction:hover { text-decoration: underline; }
.scribe-correction-links { display:flex; flex-wrap:wrap; gap:4px 20px; }
.scribe-correction-links button { min-height:44px; }
.scribe-held-answers { border-block:1px solid var(--line); padding:12px 0; margin:16px 0; font-size:13px; }
.scribe-held-answers summary { cursor:pointer; min-height:36px; color:var(--green); }
.scribe-held-answers p { color:var(--muted); line-height:1.6; }
.scribe-held-answers pre { font:inherit; white-space:pre-wrap; overflow-wrap:anywhere; }
.scribe-open-review .scribe-clarify-heading h3 { font-size: 24px; }
.scribe-open-review .scribe-back-to-note { margin-bottom: 8px; }
.scribe-open-review .scribe-clarify-heading p { margin: 8px 0 10px; }
.scribe-open-review .scribe-clarify textarea.scribe-answer { background: #fff; }
.scribe-note-editor .scribe-review-confirm { background: none; border: 0; padding: 8px 0; font-weight: 400; }
@media (min-width: 981px) { .scribe-open-review .scribe-back-to-note { display: none; } }
@media (max-width: 980px) {
  .scribe-row-open:not([hidden]):has(> .scribe-open-review),
  .scribe-draft-host:has(> .scribe-note-editor):has(> .scribe-open-review) { grid-template-columns: minmax(0,1fr); gap: 32px; }
  :is(.scribe-row-open, .scribe-draft-host) > .scribe-open-review {
    border-left: 0; border-top: 1px solid var(--line); padding: 24px 0 0;
    position: static; max-height: none; overflow: visible;
  }
}

/* Navigation stays labelled. It should never need guessing or hover. */
.dock-inner { padding: 5px; border-radius: 9px; gap: 4px; background: #fffffff2; border-color: #dce3e0; box-shadow: 0 3px 12px #1d2b2808; }
.dock-item { display: flex; align-items: center; justify-content: center; gap: 9px; width: auto; min-width: 44px; height: 44px; padding: 0 14px; border-radius: 8px; font-size: 12px; }
.dock-item:hover { transform: none; }
.dock-item .dock-label { position: static; opacity: 1; transform: none; padding: 0; background: none; color: inherit; font-size: 12px; font-weight: 500; }
body.shell-modern:has(.qb-chat-screen:not(.is-collapsed)) .dock { transform: translateX(calc(-50% + 122px)); }
.dock-hint { display: none; }
.chat-dock-toggle { border-radius: 12px; font-size: 12px; box-shadow: 0 4px 18px #1d2b2812; border-color: var(--line); }
.chat-dock-panel { border-radius: 14px; box-shadow: 0 12px 48px #1d2b2820; }
.reception-layout { gap: 20px; }
.reception-demo { padding: 0; overflow: hidden; }
.reception-demo > header { padding: 18px 20px; border-bottom-color: var(--line); }
.reception-transcript { padding: 22px; height: 280px; }
.reception-demo .voice-controls { margin: 0 20px; }
.reception-knowledge { padding: 24px; }
.reception-knowledge dd { font-size: 13px; line-height: 1.65; }
.reception-form { border-radius: 10px; margin: 0 20px 20px; }
.reception-form input { font-size: 14px; }
.reception-form button { display: grid; place-items: center; background: var(--green); }

/* Staff work leads; the separately consented microphone demo is a disclosure. */
.reception-heading h1 { margin: 0; font-size: 32px; font-weight: 600; letter-spacing: -.035em; }
.reception-heading p { margin: 10px 0 0; font-size: 16px; line-height: 1.6; color: var(--muted); }
.reception-overview { display: flex; flex-wrap: wrap; gap: 12px 28px; padding: 24px 0 30px; border-bottom: 1px solid var(--line); font-size: 14px; color: var(--muted); }
.reception-overview strong { font-weight: 600; color: var(--ink); }
.reception-workspace > .section-title { margin: 30px 0 10px; align-items: baseline; }
.reception-workspace > .section-title h2 { font-size: 19px; }
.reception-workspace > .detail { max-width: 80ch; font-size: 13px; line-height: 1.6; }
.reception-workspace :is(.reception-bookings, .reception-drafts, .call-list) { display: grid; grid-template-columns: minmax(0,1fr); gap: 0; }
.reception-workspace :is(.reception-booking, .reception-draft, .call-card, .empty.card) {
  border: 0; border-bottom: 1px solid var(--line); border-radius: 0;
  box-shadow: none; background: #fff; margin: 0; padding: 20px 0;
}
.reception-workspace .call-card { padding: 0; }
.reception-workspace .call-card > summary { padding: 20px 0; }
.reception-workspace .call-card.needs-attention { border-left: 0; }
.reception-workspace .reception-draft-words { font-size: 16px; line-height: 1.6; max-width: 80ch; }
.reception-workspace .reception-draft-head { flex-wrap: wrap; }
.reception-workspace .reception-draft-head .badge { background: none; border: 0; padding-left: 0; color: #805118; font-weight: 500; }
.reception-outcome { font-size: 13px; line-height: 1.5; color: var(--muted); max-width: 30ch; }
.reception-test, .reception-recent { margin-top: 28px; border-top: 1px solid var(--line); }
:is(.reception-test, .reception-recent) > summary { padding: 22px 0; font-size: 16px; font-weight: 550; cursor: pointer; }
.reception-workspace .calls-empty { padding: 20px 0; }
.reception-workspace .empty.card { min-height: 0; text-align: left; color: var(--muted); }
.reception-workspace .reception-draft { grid-template-columns: minmax(0,1fr); justify-content: stretch; }
.reception-workspace .reception-draft-head { align-items: flex-start; }
@media(max-width:760px) {
  .reception-heading h1 { font-size: 28px; }
  .reception-overview { display: grid; gap: 10px; padding-block: 20px; }
  .reception-workspace > .section-title { display: grid; gap: 6px; }
  .reception-workspace .reception-booking { display: grid; gap: 12px; }
  .reception-workspace .reception-draft-foot { flex-wrap: wrap; gap: 12px; }
  .reception-workspace .call-card > summary { grid-template-columns: minmax(0,1fr) auto; gap: 12px; }
  .reception-workspace .call-card > summary > div:first-child { grid-column: 1 / -1; }
}

@media (max-width: 1000px) {
  .chat-main { padding-inline: 24px; }
  .chat-sidebar { width: 232px; min-width: 232px; }
  body.shell-modern:has(.qb-chat-screen:not(.is-collapsed)) .dock { transform: translateX(calc(-50% + 116px)); }
  .qb-chat-screen .suggested-questions button { gap: 8px; padding: 11px 2px; font-size: 12px; }
  .chat-suggestion-icon { display: none; }
}
@media (max-width: 900px) {
  .dock:not([hidden]) { display: block; }
  .home-button { display: none; }
  .dock-item:not([data-view='quarterback']):not(.dock-more) { display: none; }
  .dock { max-width: calc(100vw - 24px); }
}
@media (max-width: 760px) {
  body.shell-modern:not(.auth-locked) main.shell { padding: 20px 16px 152px; }
  .hero h1, .scribe-hero h1 { font-size: 28px; }
  .hero { margin-bottom: 20px; }
  .chat-sidebar, .qb-chat-screen.is-collapsed .chat-sidebar { width: 264px; min-width: 264px; padding: 14px; }
  .chat-sidebar { box-shadow: 8px 0 30px #1d2b2814; }
  .chat-main { padding: 44px 20px 96px; overflow-y: auto; }
  .qb-chat-screen:not(.has-history) .chat-main { justify-content: flex-start; }
  .qb-chat-screen:not(.has-history) .chat-messages { margin-top: auto; padding-bottom: 22px; }
  .qb-chat-screen:not(.has-history) .chat-privacy { margin-bottom: auto; }
  .chat-greeting h1 { font-size: 18px; }
  .chat-greeting p { font-size: 31px; }
  .chat-greeting small { font-size: 13px; line-height: 1.6; }
  .qb-chat-screen .suggested-questions { gap: 0 16px; }
  .qb-chat-screen .suggested-questions button { min-height: 62px; font-size: 12px; padding: 10px 2px; }
  .chat-suggestion-arrow { display: none; }
  .qb-chat-screen .suggested-questions .workflow-launch { margin-top: 2px; min-height: 40px; }
  .qb-chat-screen .chat-input { margin-top: 8px; padding: 9px; }
  .qb-chat-screen .chat-input textarea { font-size: 16px; min-height: 42px; }
  .qb-chat-screen.has-history .chat-main { padding-top: 36px; }
  .qb-chat-screen.has-history .chat-messages { flex: 1; }
  .qb-chat-screen .chat-privacy { font-size: 10px; line-height: 1.5; margin-top: 10px; }
  .dock { bottom: max(12px, env(safe-area-inset-bottom)); }
  .dock-inner { padding: 5px; }
  .dock .dock-item[data-view='quarterback'], .dock .dock-more { display: flex; height: 42px; min-width: 44px; padding: 0 12px; border-radius: 8px; }
  .dock .dock-item .dock-label { display: inline; opacity: 1; font-size: 11px; }
  body.shell-modern:has(.qb-chat-screen:not(.is-collapsed)) .dock { transform: translateX(-50%); }
  .chat-dock { bottom: calc(80px + env(safe-area-inset-bottom)); right: 16px; }
  .chat-dock-toggle { min-height: 40px; padding: 8px 12px; font-size: 11px; }
  .chat-dock-panel { width: min(380px, calc(100vw - 32px)); max-height: calc(100dvh - 180px); }
  /* One compact navigation row, not two floating bars over the work. The
     Ask label remains accessible while its visual text is tucked away. */
  body.shell-modern:has(.chat-dock:not([hidden])):not(:has(.scribe-title-line)) .dock {
    transform: translateX(calc(-50% - 28px));
  }
  .chat-dock:not([data-open='1']) {
    left: auto;
    right: max(16px, env(safe-area-inset-right));
    bottom: max(16px, env(safe-area-inset-bottom));
  }
  .chat-dock:not([data-open='1']) .chat-dock-toggle {
    width: 44px; height: 44px; padding: 7px; gap: 0;
    justify-content: center;
  }
  .chat-dock:not([data-open='1']) .chat-dock-toggle-label {
    position: absolute; width: 1px; height: 1px; padding: 0;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap;
  }
  .scribe-title-line { display: grid; gap: 4px; margin-bottom: 8px; }
  .scribe-title-line h1 { font-size: 25px; }
  .scribe-title-line p { font-size: 13px; }
  .scribe-tabs { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 0 12px; padding: 0; overflow: visible; }
  .scribe-tab { font-size: 12px; padding: 9px 8px; min-height: 44px; min-width: 0; white-space: nowrap; }
  .scribe-tab span { min-width: 16px; margin-left: 4px; font-size: 10px; }
  .scribe-modes { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; margin-bottom: 2px; }
  .scribe-mode { min-height: 48px; padding: 6px 0; }
  .scribe-modes .scribe-mode + .scribe-mode { border: 0; }
  .scribe-mode strong { font-size: 12px; line-height: 1.5; }
  .scribe-mode-note { font-size: 12px; line-height: 1.6; }
  .scribe-compose-main { padding: 0; grid-template-columns: minmax(0,1fr); }
  .scribe-patient-rail { padding: 16px; border-right: 0; border-bottom: 1px solid var(--line); }
  .scribe-capture-work { padding: 18px 16px; gap: 16px; }
  .scribe-patient-chosen { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 8px 12px; }
  .scribe-patient-chosen .scribe-encounter-date input { font-size: 16px; }
  .scribe-patient-chosen .link-btn { grid-column: 1 / -1; }
  .scribe-patient-pick { grid-template-columns: 1fr; gap: 12px; }
  .scribe-patient-pick-head { grid-column: 1; grid-row: 1; }
  .scribe-patient-search { grid-column: 1; grid-row: 2; }
  .scribe-patient-search input { font-size: 16px; }
  .scribe-patient-chips { grid-row: 3; grid-template-columns: 1fr; max-height: 176px; }
  .scribe-chip { min-height: 44px; }
  .scribe-chip:nth-child(odd) { border-right: 0; }
  .scribe-record-row { flex-wrap: wrap; gap: 12px; }
  .scribe-write { padding-bottom: 32px; }
  .scribe-record-side { gap: 12px; align-items: flex-start; }
  .scribe-record-side .detail { font-size: 11px; }
  .scribe-transcript textarea { font-size: 16px; min-height: 150px; }
  .scribe-processing-details { padding: 14px; line-height: 1.6; }
  .scribe-live-empty { padding: 16px; }
  .app-panel-bar { padding: 16px; flex-wrap: wrap; gap: 12px; }
  .app-panel-bar h2 { font-size: 22px; }
  .app-panel-actions { flex-wrap: wrap; gap: 6px; }
  .app-panel-actions .secondary-btn { font-size: 11px; padding: 8px 10px; }
  .reception-demo > header { padding: 16px; font-size: 12px; }
  .reception-demo > header > div { gap: 8px; }
  .reception-transcript { padding: 16px; height: 240px; font-size: 13px; }
  .reception-demo .voice-controls { margin: 0 16px; }
  .reception-form { margin: 0 16px 16px; }
  .reception-form input { font-size: 16px; }
}
@media (max-width: 760px) {
  /* The Scribe viewport ends above navigation. Padding alone permits a
     floating dock to cover controls in the middle of a long note. */
  body.shell-modern:not(.auth-locked):has(.scribe-title-line) main.shell {
    height: calc(100dvh - 128px - var(--arc-update-height, 0px) - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow-y: auto; overscroll-behavior-y: contain; scroll-padding-block: 24px;
    padding: 24px 24px 40px;
  }
  body.shell-modern:has(.scribe-title-line) .dock {
    left: 0; right: 0; bottom: 0; transform: none; width: 100%; max-width: none;
    height: calc(72px + env(safe-area-inset-bottom)); padding: 10px 76px 10px 16px;
    padding-bottom: calc(10px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--line);
  }
  body.shell-modern:has(.scribe-title-line) .dock-inner { justify-content: space-around; padding: 0; height: 50px; border: 0; border-radius: 0; background: none; box-shadow: none; }
  body.shell-modern:has(.scribe-title-line) .dock .dock-item { padding-inline: 8px; height: 48px; }
  body.shell-modern:has(.scribe-title-line) .chat-dock:not([data-open='1']) { right: 20px; bottom: calc(14px + env(safe-area-inset-bottom)); }
  .scribe-row:has(.scribe-open-review) { padding-inline: 0; }
  .scribe-open-review { margin-top: 24px; }
  .scribe-questions.scribe-clarify, .scribe-note-editor { scroll-margin-top: 0; }
  .scribe-clarify-heading h3 { font-size: 27px; }
  .scribe-clarify .scribe-question { grid-template-columns: 22px minmax(0,1fr); column-gap: 10px; }
  .scribe-clarify .scribe-procedure-tag { display: block; width: fit-content; max-width: 100%; margin: 6px 0 0; white-space: normal; }
}
@media (max-height: 720px) and (min-width: 761px) {
  .chat-greeting h1 { font-size: 18px; }
  .chat-greeting p { font-size: 32px; }
  .chat-greeting small { margin-top: 4px; font-size: 13px; }
  .qb-chat-screen:not(.has-history) .chat-messages { padding-bottom: 16px; }
  .qb-chat-screen .suggested-questions button { min-height: 50px; }
  .qb-chat-screen .suggested-questions .workflow-launch { min-height: 36px; margin-top: 2px; }
  .qb-chat-screen .chat-input textarea { min-height: 38px; }
  .chat-main { padding-bottom: 84px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* --- chat-workflows.css --- */
/* Conversation-specific surfaces. No standalone app selectors or layouts. */
.chat-workflow-event { display: flex; gap: 10px; margin: 8px 0; padding: 12px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; line-height: 1.65; }
.chat-workflow-event > span { color: var(--green); flex: 0 0 18px; }
.chat-workflow-event p { margin: 2px 0 0; }
.chat-workflow-event small { font-size: 11px; }
.chat-receipt-retry { display:block; min-height:44px; margin:8px 0; padding:8px 12px; border:1px solid var(--line); background:transparent; color:var(--green); border-radius:6px; font:inherit; font-size:12px; text-align:left; }
.chat-message:has(.qwork) { width: 100%; max-width: 100%; min-width: 0; }
.chat-message:has(.qwork) > .brand-mark { display: none; }
.chat-message .message-bubble:has(.qwork) { width: 100%; min-width: 0; padding: 0; border: 0; background: transparent; }
.chat-message .message-bubble:has(.qwork) > p { font-size: 13px; color: var(--muted); margin-bottom: 14px; }
.qwork { margin: 12px 0 8px; border: 1px solid var(--line, #dce4e1); border-radius: 12px; background: var(--surface, #fff); overflow: hidden; color: var(--text, #20302b); text-align: left; }
.qwork *, .qwork *::before, .qwork *::after { box-sizing: border-box; }
.qwork-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 22px; border-bottom: 1px solid var(--line, #dce4e1); }
.qwork-heading span { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.qwork .qwork-heading h3 { margin: 5px 0 0; font-size: 20px; line-height: 1.25; font-weight: 600; letter-spacing: -.025em; }
.qwork button { font: inherit; font-size: 13px; min-height: 44px; cursor: pointer; }
.qwork button:disabled { opacity: .5; cursor: default; }
.qwork-toggle { padding: 8px 0 8px 12px; border: 0; background: transparent; color: var(--muted); }
.qwork-body { padding: 20px 22px; animation: qwork-arrive .18s ease-out; }
.qwork .qwork-intro { margin: 0 0 18px; font-size: 15px; line-height: 1.6; }
.qwork-field { display: grid; gap: 8px; margin: 16px 0; }
.qwork label, .qwork-field > span { font-size: 12px; font-weight: 500; }
.qwork textarea, .qwork select, .qwork input[type="text"], .qwork input[type="search"] { font: inherit; font-size: 14px; line-height: 1.6; width: 100%; max-width: 100%; min-width: 0; border: 1px solid var(--line, #dce4e1); background: transparent; border-radius: 8px; color: inherit; padding: 10px 12px; }
.qwork textarea { resize: vertical; min-height: 86px; }
.qwork :is(button,textarea,select,input):focus-visible { outline: 2px solid var(--green, #245f50); outline-offset: 3px; }
.qwork-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 14px; }
.qwork-primary { border: 1px solid var(--green, #245f50); background: var(--green, #245f50); color: #fff; padding: 10px 16px; border-radius: 8px; }
.qwork-secondary { padding: 10px 12px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: inherit; }
.qwork-secondary:hover { background: #f1f5f3; }
.qwork .qwork-steps { display: flex; gap: 20px; list-style: none; margin: 0 0 22px; padding: 0; counter-reset: workstep; color: var(--muted); font-size: 12px; }
.qwork-steps li { counter-increment: workstep; display: flex; align-items: center; gap: 6px; }
.qwork li + li { margin-top: 0; }
.qwork li::marker { content: ''; }
.qwork small { margin: 0; padding: 0; border: 0; }
.qwork-steps li::before { content: counter(workstep); width: 20px; height: 20px; display: grid; place-items: center; border: 1px solid var(--line, #dce4e1); border-radius: 50%; font-size: 10px; }
.qwork-steps [aria-current] { color: var(--green, #245f50); font-weight: 600; }
.qwork-steps [aria-current]::before { background: var(--green, #245f50); border-color: transparent; color: white; }
.qwork pre { white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: 13px; line-height: 1.7; margin: 10px 0 0; max-height: 300px; overflow-y: auto; }
.qwork-existing, .qwork-diff { margin: 22px 0 12px; font-size: 12px; }
.qwork summary { cursor: pointer; min-height: 32px; color: var(--muted); }
.qwork-diff > div { margin-top: 14px; background: #f7f9f7; border-left: 2px solid var(--green, #245f50); padding: 14px 16px; }
.qwork-diff ins { text-decoration: none; background: #e2efe7; color: #214c3b; }
.qwork .qwork-check { display: flex; align-items: flex-start; gap: 10px; line-height: 1.6; margin-top: 20px; }
.qwork input[type="checkbox"] { appearance: auto; width: 18px; height: 18px; min-width: 18px; min-height: 18px; padding: 0; margin: 1px 0 0; flex: 0 0 18px; accent-color: var(--green, #245f50); }
.qwork .qwork-boundary { font-size: 11px; line-height: 1.65; color: var(--muted); border-top: 1px solid var(--line, #dce4e1); margin: 20px 0 0; padding-top: 14px; }
.qwork-notice { color: #85551f; font-size: 13px; line-height: 1.6; margin: 14px 0 0; }
.qwork[data-kind="reception.calls"] .qwork-body > .qwork-notice:first-child { margin: 0 0 16px; }
.qwork-receipt { padding: 14px 0; color: var(--green, #245f50); font-size: 14px; line-height: 1.6; }
.qwork-receipt p { margin: 8px 0; font-size: 13px; color: var(--muted); }
.qwork-collapsed { padding: 14px 22px; margin: 0; color: var(--muted); font-size: 12px; }
.qwork-call-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; font-size: 12px; color: var(--muted); }
.qwork-call-toolbar label { display: flex; align-items: center; gap: 8px; }
.qwork-call-toolbar select { width: auto; }
.qwork-call-layout { display: grid; grid-template-columns: 170px minmax(0,1fr); gap: 20px; }
.qwork-call-list { border-right: 1px solid var(--line, #dce4e1); padding-right: 14px; display: flex; flex-direction: column; gap: 4px; }
.qwork-call-list button { text-align: left; display: grid; gap: 5px; width: 100%; border: 0; border-radius: 6px; background: transparent; padding: 12px 10px; color: inherit; }
.qwork-call-list button { transition: background-color .14s ease, box-shadow .14s ease; }
.qwork-receipt { animation: qwork-arrive .18s ease-out; }
.qwork-call-list button[aria-pressed="true"] { background: #edf3ef; box-shadow: inset 2px 0 var(--green, #245f50); }
.qwork-call-list :is(span,small) { font-size: 10px; color: var(--muted); }
.qwork-call-list strong { font-size: 12px; font-weight: 500; }
.qwork-call-facts { display: grid; gap: 4px; font-size: 14px; }
.qwork-call-facts span { font-size: 11px; color: var(--muted); }
.qwork-call-followup { margin: 22px 0; padding: 18px 0; border-block: 1px solid var(--line, #dce4e1); }
.qwork-call-followup + .qwork-call-followup { margin-top: 0; border-top: 0; padding-top: 0; }
.qwork-call-followup h4 { margin: 6px 0 10px; font-size: 17px; font-weight: 550; letter-spacing: -.015em; }
.qwork-call-followup p { font-size: 13px; line-height: 1.65; color: var(--muted); }
.qwork-call-followup > small { font-size: 10px; letter-spacing: .06em; color: var(--green); }
.qwork-call-followup pre { padding-left: 14px; border-left: 2px solid var(--green); }
.qcall-audio { margin:18px 0; padding-block:14px; border-block:1px solid var(--line,#dce4e1); }
.qcall-audio-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.qcall-audio-heading strong { font-size:13px; font-weight:500; }
.qcall-audio button { min-height:44px; padding:8px 12px; font:500 14px/1.4 Arial,sans-serif; color:var(--green,#225b4a); background:#fff; border:1px solid var(--line,#dce4e1); border-radius:6px; cursor:pointer; }
.qcall-player { display:grid; grid-template-columns:auto minmax(80px,1fr) auto; align-items:center; gap:8px 12px; margin-top:12px; }
.qcall-player[hidden],.qcall-audio [hidden] { display:none!important; }
.qcall-seek { font-size:12px; color:var(--muted); }
.qcall-seek input { display:block; width:100%; min-height:44px; margin:0; padding:0; accent-color:var(--green,#225b4a); }
.qcall-player output { font:400 12px/1.4 Arial,sans-serif; font-variant-numeric:tabular-nums; white-space:nowrap; }
.qcall-player select { min-height:44px; font-size:16px; }
.qcall-player [data-audio-close] { grid-column:3; justify-self:end; border-color:transparent; }
.qcall-audio .qcall-audio-note { font-size:12px; line-height:1.6; margin:10px 0 0; color:var(--muted); }
.qcall-player button:disabled { opacity:.5; cursor:default; }
.qwork .qwork-transcript { list-style: none; margin: 18px 0 22px; padding: 0; max-height: 330px; overflow: auto; }
.qwork-transcript li { border-left: 2px solid var(--line, #dce4e1); padding: 0 0 18px 12px; }
.qwork-transcript li[data-speaker="arc"] { border-left-color: #83b3a1; }
.qwork-transcript strong { font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.qwork-transcript p { margin: 5px 0 0; font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
.qwork-review-fields { display: grid; grid-template-columns: 1fr 100px; gap: 12px; }
.qwork-review-fields label { display: grid; gap: 6px; }
.qwork-labels { font-size: 12px; }
.qwork-labels label { display: inline-flex; align-items: center; gap: 6px; margin: 6px 14px 6px 0; min-height: 32px; }
.qwork-pagination { display: flex; justify-content: space-between; margin-top: 16px; }
.qwork-menu { position: relative; margin: 0 auto 6px; width: min(100%,760px); font-size: 12px; color: var(--muted); }
.qwork-menu summary { cursor: pointer; padding: 8px 0; }
.qwork-menu > div { position: absolute; z-index: 5; bottom: 100%; left: 0; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 8px 28px #183f3412; max-width: 100%;
  /* Search and count stay visible; only the growing task catalogue scrolls. */
  max-height: min(480px, 50dvh, var(--task-space, 50dvh)); overflow: hidden; width: min(380px, 100%);
}
.qwork-menu[data-task-placement="below"] > div { bottom: auto; top: 100%; }
.qwork-menu [hidden] { display: none !important; }
.qwork-task-search { display: flex; align-items: center; flex: 0 0 auto; padding: 4px 8px 4px 16px; border-bottom: 1px solid var(--line); }
.qwork-task-search input { width: 100%; min-width: 0; min-height: 48px; padding: 8px 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; font: inherit; font-size: 16px; color: var(--ink); }
.qwork-task-search input:focus { outline: none; box-shadow: none; }
.qwork-task-search:focus-within { box-shadow: inset 0 -2px var(--green); }
.qwork-task-search input::-webkit-search-cancel-button { display: none; }
.qwork-menu .qwork-task-search button { flex: 0 0 44px; text-align: center; font-size: 20px; }
.qwork-task-results { min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding: 4px 8px 8px; }
.qwork-task-results section + section { margin-top: 8px; }
.qwork-task-results h3 { margin: 12px 12px 4px; font: inherit; font-size: 11px; font-weight: 650; letter-spacing: .035em; color: var(--muted); }
.qwork-task-results button { display: block; width: 100%; }
.qwork-task-results p { padding: 12px; margin: 0; font-size: 13px; line-height: 1.5; }
.qwork-task-footer { display: flex; flex: 0 0 auto; justify-content: space-between; gap: 12px; padding: 10px 16px; border-top: 1px solid var(--line); font-size: 11px; color: var(--muted); }
.qwork-menu button { min-height: 44px; font: inherit; font-size: 13px; text-align: left; color: var(--green, #245f50); background: transparent; border: 0; border-radius: 6px; padding: 10px 12px; cursor: pointer; }
.qwork-menu button:hover,.qwork-menu button:focus-visible { background: var(--green-soft, #edf3ef); }
.qwork-menu button:focus-visible { outline: 2px solid var(--green, #245f50); outline-offset: -2px; }
.rinbox-tabs,.rinbox-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.rinbox-tabs { justify-content:flex-start; gap:16px; border-bottom:1px solid var(--line); }
.rinbox-tabs button.qwork-secondary { min-height:44px; padding:8px 0; border:0; border-bottom:2px solid transparent; border-radius:0; color:var(--muted); background:transparent; white-space:nowrap; }
.rinbox-tabs button[aria-pressed=true] { color:var(--green); border-bottom-color:var(--green); }
.rinbox-count { font-size:11px; font-variant-numeric:tabular-nums; }
.rinbox-toolbar { gap:8px; }
.rinbox-toolbar label { display:flex; align-items:center; gap:8px; flex:1; min-width:0; }
.rinbox-toolbar select { width:100%; min-width:0; max-width:220px; font-size:16px; }
.rinbox-toolbar button { flex:none; }
.rinbox-search { display:flex; align-items:flex-end; gap:8px; margin-bottom:12px; }
.rinbox-search label { display:grid; gap:6px; flex:1; min-width:0; }
.rinbox-search label span { font-size:12px; color:var(--muted); }
.rinbox-search input { width:100%; min-width:0; min-height:44px; font:inherit; font-size:16px; padding:10px 12px; border:1px solid var(--line); border-radius:6px; background:#fff; color:var(--text); }
.rinbox-search input:focus-visible { outline:2px solid var(--green); outline-offset:1px; }
.rinbox-search button { flex:none; min-height:44px; }
@media(max-width:400px) { .rinbox-search { gap:4px; } .rinbox-search button { padding-inline:8px; } }
.rinbox-strip { display:flex; gap:8px; overflow-x:auto; padding-bottom:12px; border-bottom:1px solid var(--line); scrollbar-width:thin; scrollbar-color:#b5c8bf transparent; }
.rinbox-strip button { flex:0 0 150px; display:grid; gap:6px; text-align:left; background:transparent; border:0; border-bottom:2px solid transparent; padding:12px; color:var(--text); }
.rinbox-strip button[aria-pressed=true] { border-bottom-color:var(--green); background:#f2f6f3; }
.rinbox-strip strong { font-size:12px; font-weight:500; }
.rinbox-strip small { font-size:11px; }
.qwork .rinbox-source-context { margin:0 0 16px; font-size:13px; line-height:1.5; color:var(--muted); }
.rinbox-source-detail { padding-top:16px; }
.rinbox-request { padding:24px 0; animation:qwork-arrive .18s ease-out; }
.rinbox-request h3 { margin:12px 0; font-size:21px; font-weight:500; letter-spacing:-.025em; }
.rinbox-request p { font-size:14px; line-height:1.7; overflow-wrap:anywhere; }
.rinbox-request small { font-size:11px; }
.rinbox-visits { display:grid; gap:16px; margin:20px 0 12px; }
.rinbox-visits > div { display:grid; gap:5px; border-left:2px solid var(--line); padding-left:12px; }
.rinbox-visits > div + div { border-left-color:var(--green); }
.rinbox-visits dt { color:var(--muted); font-size:12px; }
.rinbox-visits dd { margin:0; font-size:15px; line-height:1.6; overflow-wrap:anywhere; }
.rinbox-visits dd small { display:block; color:var(--muted); }
.rinbox-message { white-space:pre-wrap; }
.rinbox-message-heading { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:16px 28px; margin:22px 0; }
.rinbox-message-heading > div { flex:1 1 200px; min-width:0; }
.rinbox-message-heading h3 { margin:6px 0 0; overflow-wrap:anywhere; }
.rinbox-message-heading dl { margin:0; flex:0 1 auto; }
.rinbox-message-heading :is(small,dt),.rinbox-message-body > small { font-size:12px; color:var(--muted); }
.rinbox-message-heading dd { margin:8px 0 0; font-size:16px; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.rinbox-message-body { margin:20px 0; }
.rinbox-message-body .rinbox-message { margin:6px 0 0; }
.rinbox-outcome { border-left:2px solid var(--green); padding-left:12px; }
.rinbox-confirm { padding:16px 0 0; border-top:1px solid var(--line); }
.rinbox-confirm h4 { margin:8px 0; font-size:17px; }
.rinbox-empty { padding:28px 0; font-size:14px; color:var(--muted); }
.rinbox-outcomes { display:flex; flex-wrap:wrap; }
.rinbox-history { margin-top:20px; border-top:1px solid var(--line); padding-top:16px; }
.rinbox-caller-updates { margin-top:24px; border-top:2px solid var(--line); padding-top:20px; }
.rinbox-caller-updates h4 { margin:8px 0 12px; font-size:18px; font-weight:500; letter-spacing:-.02em; }
.rinbox-caller-updates ol { list-style:none; padding:0; margin:16px 0; }
.rinbox-caller-updates li { border-left:2px solid var(--line); padding:0 0 18px 16px; }
.rinbox-caller-updates li + li { padding-top:16px; }
.rinbox-caller-updates li small { display:block; color:var(--muted); }
.rinbox-caller-updates li .qwork-secondary { margin-top:12px; }
.rinbox-history ol { padding-left:18px; }
.rinbox-history li { padding:10px 0; }
.rinbox-history li small { display:block; margin-top:4px; color:var(--muted); }
@media(max-width:400px) { .rinbox-toolbar { flex-wrap:nowrap; } .rinbox-toolbar label { font-size:12px; gap:6px; } .rinbox-toolbar button { padding-inline:6px; } }
@media(prefers-reduced-motion:reduce) { .rinbox-request { animation:none; } }
/* Use the shared workflow marker, not a list of app-specific visual classes:
   newly designed workspaces need the same compact composer and empty states. */
.qb-chat-screen:has([data-chat-workspace]) .chat-input { align-items: center; padding: 8px; margin-top: 0; }
.qb-chat-screen:has([data-chat-workspace]) .chat-input textarea { grid-column: 3; grid-row: 1; min-height: 44px; max-height: 120px; padding-top: 9px; }
.qb-chat-screen:has([data-chat-workspace]) .chat-input button { grid-row: 1; min-width: 44px; min-height: 44px; }
.qb-chat-screen:has([data-chat-workspace]) :is(.chat-error,.chat-attach-error):empty { display: none; }
.qb-chat-screen:has([data-chat-workspace]) .chat-privacy { margin-top: 2px; }
@keyframes qwork-arrive { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
@media(max-width:600px) {
  .qwork-heading, .qwork-body { padding: 16px; }
  .qwork .qwork-heading h3 { font-size: 18px; }
  .qwork-call-layout { grid-template-columns: minmax(0,1fr); gap: 18px; }
  .qwork-call-list { flex-direction: row; overflow-x: auto; padding: 0 0 10px; border-right: 0; border-bottom: 1px solid var(--line, #dce4e1); }
  .qwork-call-list::-webkit-scrollbar { height: 3px; background: transparent; }
  .qwork-call-list::-webkit-scrollbar-thumb { background: #b8c9bf; border-radius: 3px; }
  .qwork-call-list button { flex: 0 0 150px; }
  .qwork-call-list button[aria-pressed="true"] { box-shadow: inset 0 -2px var(--green, #245f50); }
  .qwork :is(textarea,select,input[type="text"]) { font-size: 16px; }
  .qwork-call-toolbar { flex-wrap: wrap; gap: 8px; }
}
@media(max-width:360px) { .qwork-review-fields { grid-template-columns: minmax(0,1fr); } }
@media(prefers-reduced-motion:reduce) { .qwork-body, .qwork-receipt { animation: none; } .qwork-call-list button { transition: none; } }
.qwork-call-requests{padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:14px}
.qwork-call-requests>span{font-size:12px;font-weight:600;color:var(--muted)}
.qwork-call-requests .qwork-actions{margin:7px 0}
.qwork-call-requests>p{font-size:12px;color:var(--muted);line-height:1.5;margin:6px 0 0}
.qwork-call-search{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:end;margin:0 0 16px}
.qwork-call-search label{min-width:0;display:grid;gap:6px;font-size:12px;color:var(--muted)}
.qwork .qwork-call-search input{width:100%;min-width:0;min-height:44px;font-size:16px}
.qwork-call-search button{min-height:44px}
.qwork-call-requests>.qwork-link-unavailable{padding-left:12px;border-left:2px solid var(--line);font-size:13px}
.qwork-call-handoff>nav{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:16px 20px;border-bottom:1px solid var(--line)}
.qwork-call-handoff>nav>span{font-size:12px;color:var(--muted)}
.qwork-call-handoff>[data-call-handoff-notice]:empty{display:none}
.qwork-call-handoff>[data-call-handoff-notice]{margin:12px 20px}
.qwork-call-handoff [data-call-request]>.rinbox{border:0;margin:0;box-shadow:none;border-radius:0}
.qwork-call-handoff .rinbox-call-tools{margin:0 0 12px;padding:0;justify-content:space-between}
.qwork-call-handoff .rinbox-call-tools button{padding:4px 0;min-height:36px;font-size:12px}
.qwork-call-handoff .rinbox-call-tools+.rinbox-request{margin-top:0;padding-top:8px}
.qsetup-return{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 24px;padding-top:12px;border-top:1px solid var(--line,#dce4e1)}
.qsetup-return button{min-height:44px;padding:8px 14px;color:var(--forest,#235d4d);background:transparent;border:1px solid var(--line,#dce4e1);border-radius:8px;font:inherit;cursor:pointer}
.qsetup-return small{color:var(--muted,#64756f);font-size:12px;line-height:1.5;flex:1 1 160px}
[data-reception-setup][aria-busy="true"]{cursor:progress;opacity:.65}
.rinbox-patient-matches{display:grid;border-top:1px solid var(--border,#dce3e0)}
.rinbox-patient-matches button{display:grid;gap:.35rem;text-align:left;border:0;border-bottom:1px solid var(--border,#dce3e0);background:transparent;padding:1rem .6rem;color:inherit;cursor:pointer;overflow-wrap:anywhere}
.rinbox-patient-matches button span{font-size:.85rem;color:var(--muted,#64736e)}
.rinbox-patient-matches button[aria-pressed="true"]{background:#edf4f0;box-shadow:inset 3px 0 #245e4d}
.rinbox-patient-matches button:focus-visible{outline:2px solid #245e4d;outline-offset:-2px}
.rinbox-patient-choice{padding:1.2rem 0 0;animation:receptionPatientReveal 140ms ease-out}
.rinbox-patient-choice dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.8rem;margin:1rem 0}
.rinbox-patient-choice dt{font-size:.78rem;color:var(--muted,#64736e)}
.rinbox-patient-choice dd{margin:.3rem 0;overflow-wrap:anywhere}
@keyframes receptionPatientReveal{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rinbox-patient-choice{animation:none}}

/* --- scribe-chat.css --- */
/* Scribe's conversation-native document, not the standalone screen. */
.chat-message:has(.snote), .chat-message:has(.snote) .message-bubble { width:100%; max-width:100%; min-width:0; }
.chat-message:has(.snote) > .brand-mark { display:none; }
.chat-message .message-bubble:has(.snote) { padding:0; border:0; background:transparent; }
.snote { color:var(--text); border-block:1px solid var(--line); margin:16px 0; text-align:left; }
.snote * { box-sizing:border-box; }
.snote header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 0; }
.snote header strong { display:block; font-size:17px; font-weight:600; letter-spacing:-.03em; }
.snote header small, .snote small { color:var(--muted); font-size:12px; line-height:1.6; }
/* Chat's generic footer styling must not turn document labels into footers. */
.snote small { display:inline; margin:0; padding:0; border:0; }
.snote button { min-height:44px; padding:9px 14px; border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--text); font:inherit; font-size:13px; cursor:pointer; }
.snote button:hover:not(:disabled) { background:var(--surface); border-color:var(--green); }
.snote-deferred { border-bottom:1px solid var(--line); padding:0 0 20px; margin:0 0 24px; }
.snote-deferred summary { min-height:44px; padding:12px 0; color:var(--muted); font-size:13px; cursor:pointer; }
.snote-deferred>p { color:var(--muted); font-size:13px; line-height:1.6; margin:0 0 12px; }
.snote-deferred ul { list-style:none; padding:0; margin:0; }
.snote-deferred li+li { border-top:1px solid var(--line); }
.snote-deferred button { display:flex; flex-direction:column; align-items:flex-start; gap:4px; width:100%; padding:12px 0; text-align:left; border:0; border-radius:0; overflow-wrap:anywhere; }
.snote-deferred button span { font-weight:500; }
.snote button:disabled { opacity:.45; cursor:default; }
.snote button.is-primary { background:var(--green); color:white; border-color:var(--green); }
.snote button:focus-visible,.snote input:focus-visible,.snote textarea:focus-visible,.snote select:focus-visible { outline:2px solid var(--green); outline-offset:3px; }
/* Step headings receive programmatic focus for reading, not as controls. */
.snote .snote-body h3[tabindex="-1"]:focus { outline:none; }
.snote-edit-review[tabindex="-1"]:focus { outline:none; }
.snote-body { padding:0 0 20px; animation:snote-enter 180ms ease-out; }
.snote h3 { font-size:21px; letter-spacing:-.04em; line-height:1.25; font-weight:500; margin:8px 0 18px; }
.snote label { display:block; font-size:12px; color:var(--muted); }
.snote input:not([type=checkbox]),.snote textarea,.snote select { display:block; width:100%; min-width:0; max-width:100%; min-height:44px; margin:7px 0 14px; padding:11px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface,#fff); color:var(--text); font:inherit; font-size:14px; line-height:1.6; }
.snote textarea { resize:vertical; }
.snote .snote-narrative { min-height:150px; }
.snote-actions { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0; }
.snote-patients { display:grid; gap:0; margin:8px 0; }
.snote-patient-page { display:grid; min-width:0; animation:snote-enter 160ms ease-out; }
.snote-patients [data-snote-patient] { width:100%; text-align:left; display:flex; align-items:center; justify-content:space-between; gap:12px; border:0; border-top:1px solid var(--line); border-radius:0; padding:13px 4px; }
.snote-patients [data-snote-patient]>span { min-width:0; overflow-wrap:anywhere; }
.snote-patients [data-snote-patient]>small { flex-shrink:0; white-space:nowrap; }
.snote-patients small { display:block; }
.snote-patient-heading { margin:0; padding:4px 4px 12px; color:var(--muted); font-size:12px; }
.snote-patient-pager { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; padding-top:8px; border-top:1px solid var(--line); }
.snote-patient-pager button { border-color:transparent; padding:9px 8px; }
.snote-patient-pager button:first-child { justify-self:start; }
.snote-patient-pager button:last-child { justify-self:end; }
.snote-patient-pager small { font-variant-numeric:tabular-nums; white-space:nowrap; }
.snote-visit { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.snote-anchor { border-left:2px solid var(--green); padding:0 0 0 12px; margin:0 0 18px; }
.snote-anchor strong { font-size:14px; display:block; }
.snote-tabs { display:flex; gap:20px; border-bottom:1px solid var(--line); margin-bottom:22px; }
.snote-correction { padding:0 0 22px; }
.snote-correction h3 { margin-bottom:8px; }
.snote-correction>.snote-notice { margin-top:0; }
.snote-correction .snote-revise { margin:18px 0 0; padding:0; border:0; }
.snote-correction .scribe-revision-context { border-left:2px solid var(--green); padding:2px 0 2px 14px; margin-bottom:18px; }
.snote-correction .scribe-revision-original { color:var(--muted); font-size:13px; line-height:1.6; margin:0 0 10px; }
.snote-correction .scribe-revision-question { display:block; font-size:17px; font-weight:500; line-height:1.5; }
.snote-correction .scribe-revision-answers div { white-space:pre-wrap; font-size:13px; line-height:1.6; }
.snote-reply-location{display:none;font-size:13px;color:var(--muted);line-height:1.6}
.snote.is-replying .snote-reply-location{display:block}
.snote.is-replying .snote-correction>h3,.snote.is-replying .snote-correction>.snote-notice,
.snote.is-replying [data-snote-action="reply-box"]{display:none}
.has-private-reply #chatForm,.has-private-reply #chatFile,.has-private-reply #chatCamera,
.has-private-reply #chatAttachments,.has-private-reply #chatAttachError,
.has-private-reply .chat-privacy,.has-private-reply .qwork-menu{display:none!important}
.snote-private-reply[hidden]{display:none!important}
.snote-private-reply{flex:0 1 auto;min-height:0;max-height:50dvh;overflow:auto;margin:12px 0 0;padding:0 16px 12px;border:1px solid var(--line);border-top:2px solid var(--green);border-radius:10px;background:var(--surface,#fff);animation:snote-enter 180ms ease-out}
.snote-private-reply header{position:sticky;top:0;z-index:1;background:var(--surface,#fff);gap:12px;padding:12px 0}
.snote-private-reply header>div{min-width:0;overflow-wrap:anywhere}
.snote-private-reply header strong{font-size:14px;letter-spacing:0}
.snote-private-reply header span{display:block;color:var(--muted);font-size:11px;line-height:1.5}
.snote-private-reply header button{flex-shrink:0;font-size:11px;padding:8px}
.snote-private-reply .snote-correction{padding:0}
.snote-private-reply .snote-revise{margin:0}
.snote-private-reply .snote-actions{margin:8px 0}
.snote-private-reply [data-private-status]:empty{display:none}
.snote-private-reply [data-private-status]{font-size:12px;color:var(--muted);line-height:1.5}
@media(max-width:480px){.snote-private-reply{padding-inline:12px;max-height:55dvh}.snote-private-reply header{align-items:flex-start}.snote-private-reply header button{max-width:100px;white-space:normal}}
.snote-correction [data-snote-status]:empty { display:none; }
.snote-correction:has(.scribe-revision-context:not([hidden]))>h3,
.snote-correction:has(.scribe-revision-context:not([hidden]))>.snote-notice { display:none; }
.snote-tabs button { border:0; border-radius:0; padding:10px 0; border-bottom:2px solid transparent; }
.snote-tabs button[aria-current=step] { border-bottom-color:var(--green); }
.snote-question { padding:4px 0 18px; }
.snote-question h3 { font-size:19px; margin-bottom:8px; }
.snote-question p,.snote-notice { font-size:13px; line-height:1.65; color:var(--muted); }
.snote-question textarea { min-height:76px; }
.snote-document { background:var(--surface,#fff); padding:20px; border:1px solid var(--line); border-radius:10px; }
.snote-document details { border-top:1px solid var(--line); padding:12px 0; }
.snote-document details:first-of-type { border:0; }
.snote summary { cursor:pointer; font-size:13px; font-weight:500; padding:8px 0; }
.snote-document textarea { border-color:transparent; padding:8px 0; margin-bottom:0; background:transparent; }
.snote-document textarea:focus { border-color:var(--line); padding:8px; }
.snote-document .snote-edit-review { border-block:1px solid var(--line); margin:14px 0; padding:4px 0 10px; }
.snote-edit-review>summary { color:var(--green); min-height:44px; }
.snote-edit-review>summary small { margin-left:8px; font-weight:400; }
.snote-edit-review>p { font-size:12px; line-height:1.6; color:var(--muted); margin:0 0 18px; }
.snote-edit-section { margin:18px 0; }
.snote-edit-section h4 { font-size:13px; font-weight:600; margin:0 0 12px; }
.snote-edit-values { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
.snote-edit-values>section { min-width:0; border-left:2px solid var(--line); padding-left:12px; }
.snote-edit-values>section+section { border-color:var(--green); }
.snote-edit-values h5 { color:var(--muted); font-size:11px; font-weight:500; margin:0 0 6px; }
.snote-edit-values pre { white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; font-size:13px; line-height:1.7; margin:0; }
.snote-edit-review[open] .snote-edit-section { animation:snote-enter 160ms ease-out; }
.snote-edit-review summary:focus-visible { outline:2px solid var(--green); outline-offset:3px; }
.snote-evidence { margin:16px 0; font-size:13px; line-height:1.65; }
.snote-evidence ul { padding-left:18px; }
.snote-pre { white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; font-size:14px; line-height:1.85; padding:18px 0; }
.snote-check { display:flex!important; gap:10px; align-items:flex-start; font-size:13px!important; margin:18px 0; color:var(--text)!important; }
.snote-check input[type=checkbox] { width:18px!important; height:18px!important; min-height:18px!important; flex:0 0 18px; margin:2px 0!important; }
.snote-revise { padding-top:24px; }
.snote-busy { font-size:13px; padding:10px 0; }
.twork-comparison { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin:20px 0; }
.twork-comparison section { min-width:0; border-top:1px solid var(--line); padding-top:14px; }
.twork-comparison h4 { font-size:15px; margin:6px 0; }
.twork pre { white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; font-size:14px; line-height:1.7; }
.rwork .rwork-list { margin-top:20px; }
.rwork .rwork-list button { display:flex; flex-direction:column; align-items:flex-start; width:100%; gap:6px; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; box-shadow:none; padding:18px 0; text-align:left; }
.rwork-list span,.rwork-list small { font-weight:400; line-height:1.6; }
.rwork-list small,.rwork-rule dt { color:var(--muted); font-size:12px; }
.rwork-rule { margin:20px 0; }
.rwork-rule dd { margin:4px 0 20px; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
.rwork-previous,.rwork-secondary { border-top:1px solid var(--line); margin-top:24px; padding-top:16px; }
.rwork-scope { border-left:2px solid var(--green); padding-left:14px; line-height:1.65; }
.rwork-step { animation:rwork-enter 160ms ease-out; }
@keyframes rwork-enter { from { opacity:.65; transform:translateY(3px); } to { opacity:1; transform:none; } }
@media(prefers-reduced-motion:reduce) { .rwork-step { animation:none; } }
@media(max-width:600px) { .twork-comparison { grid-template-columns:1fr; gap:16px; } }
.snote-resume-entry { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; padding-bottom:16px; margin-bottom:20px; border-bottom:1px solid var(--line); font-size:14px; }
.snote-library-search { display:flex; flex-wrap:wrap; align-items:end; gap:12px; margin:20px 0; }
.snote-library-search label:first-child { flex:1 1 180px; }
.snote-library-search input,.snote-library-search select { margin-bottom:0!important; }
.snote-library-list { border-top:1px solid var(--line); }
.snote-library-list>button { display:flex; width:100%; text-align:left; justify-content:space-between; align-items:center; gap:16px; padding:18px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; }
.snote-library-list span { min-width:0; }
.snote-library-list small { display:block; margin-top:5px; color:var(--muted); font-size:12px; }
.snote-library-list>button>span:last-child { text-align:right; font-size:13px; }
@media(max-width:480px) { .snote-library-list>button { align-items:start; flex-direction:column; gap:8px; } .snote-library-list>button>span:last-child { text-align:left; } }
@keyframes snote-enter { from {opacity:.5;transform:translateY(3px)} to {opacity:1;transform:none} }
@media(max-width:600px) {
  .snote-edit-values { grid-template-columns:minmax(0,1fr); gap:14px; }
  .snote-visit {grid-template-columns:1fr;} .snote-document {padding:14px;} .snote h3 {font-size:20px;}
  .snote input:not([type=checkbox]),.snote textarea,.snote select {font-size:16px;}
}
@media(prefers-reduced-motion:reduce) { .snote-body,.snote-private-reply,.snote-patient-page,.snote-edit-review[open] .snote-edit-section {animation:none;} }
.snote-recovery { border-top:2px solid #99733c; padding:20px 0; margin:16px 0 24px; }
.snote-recovery>p { font-size:14px; color:var(--muted); line-height:1.6; }
.snote-recovery details { border-bottom:1px solid var(--line); padding:14px 0; }
.snote-recovery summary { font-weight:600; font-size:14px; cursor:pointer; }
.snote-recovery-values { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px; margin:16px 0; }
.snote-recovery-values section { min-width:0; border-left:2px solid var(--line); padding-left:14px; }
.snote-recovery-values section+section { border-color:#295c4d; }
.snote-recovery-values h4 { font-size:12px; color:var(--muted); margin:0 0 8px; }
.snote-recovery-values pre { font:inherit; font-size:14px; line-height:1.6; margin:0; white-space:pre-wrap; overflow-wrap:anywhere; }
.snote-recovery select { min-height:44px; width:100%; max-width:100%; }
@media(max-width:600px) { .snote-recovery-values { grid-template-columns:minmax(0,1fr); gap:16px; } }
.snote-source-review { margin:24px 0; border-block:1px solid var(--line,#d8e1dc); padding:16px 0; }
.snote-source-review summary { cursor:pointer; font-weight:600; line-height:1.5; }
.snote-source-review summary small { display:block; margin-left:18px; color:var(--muted,#55706d); font-weight:400; }
.snote-source-review>p { font-size:13px; line-height:1.6; color:var(--muted,#55706d); }
.snote-source-review section { padding:18px 0; border-top:1px solid var(--line,#d8e1dc); }
.snote-source-review section>small { color:var(--muted,#55706d); }
.snote-source-review h4 { font-size:16px; line-height:1.5; font-weight:500; margin:8px 0 14px; }
.snote-source-review section strong { font-size:12px; font-weight:500; color:var(--muted,#55706d); }
.snote-source-review blockquote { margin:6px 0 14px; padding:0 0 0 12px; border-left:2px solid var(--green,#245f4b); white-space:pre-wrap; overflow-wrap:anywhere; font-size:14px; line-height:1.6; }

/* --- perio-chat.css --- */
/* Flat, conversation-sized chart work. No standalone page or nested cards. */
.chat-message:has(.pchat),.chat-message:has(.pchat) .message-bubble{width:100%;max-width:100%;min-width:0}
.chat-message:has(.pchat)>.brand-mark{display:none}
.chat-message .message-bubble:has(.pchat){padding:0;border:0;background:transparent}
.pchat{--pc-green:#225b4a;--pc-ink:#1f302b;--pc-muted:#63766e;--pc-line:#dce4df;color:var(--pc-ink);background:#fff;text-align:left;border-block:1px solid var(--pc-line);margin:16px 0;padding:0 4px;font:400 16px/1.55 Arial,sans-serif;min-width:0;scroll-margin-block-start:40px}
.pchat *{box-sizing:border-box}
.pchat header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 0}
.pchat h2{font:600 22px/1.25 Arial,sans-serif;letter-spacing:-.035em;margin:0}
.pchat h3{font:600 21px/1.3 Arial,sans-serif;letter-spacing:-.025em;margin:12px 0 20px;scroll-margin-block-start:40px}
.pchat h4{font:600 16px/1.5 Arial,sans-serif;margin:0 0 8px}
.pchat p{margin:12px 0 18px;overflow-wrap:anywhere}
.pchat small{display:block;font-size:12px;color:var(--pc-muted);font-weight:400;line-height:1.5;margin:0;padding:0;border:0}
.pchat button{font:500 15px/1.4 Arial,sans-serif;min-height:44px;min-width:44px;padding:10px 14px;border:1px solid var(--pc-line);border-radius:8px;background:#fff;color:var(--pc-green);cursor:pointer;box-shadow:none}
.pchat button:hover:not(:disabled){background:#eef3ef;border-color:var(--pc-green)}
.pchat button:disabled{opacity:.45;cursor:default}
.pchat button.is-primary{background:var(--pc-green);border-color:var(--pc-green);color:#fff}
.pchat button.is-primary:hover:not(:disabled){background:#173f32}
.pchat header button{border-color:transparent;padding-inline:8px}
.pchat button:focus-visible,.pchat input:focus-visible,.pchat select:focus-visible,.pchat textarea:focus-visible{outline:2px solid var(--pc-green);outline-offset:2px}
.pchat input:not([type=checkbox]),.pchat select,.pchat textarea{font:400 16px/1.4 Arial,sans-serif;color:var(--pc-ink);width:100%;min-width:0;min-height:44px;padding:10px 12px;background:#fff;border:1px solid var(--pc-line);border-radius:8px;box-shadow:none;margin:6px 0}
.pchat textarea{resize:vertical}
.pchat input[type=checkbox]{appearance:auto;-webkit-appearance:checkbox;accent-color:var(--pc-green);width:18px!important;height:18px!important;min-height:18px!important;padding:0!important;border-radius:3px;flex:0 0 18px;margin:0!important}
.pchat input:disabled,.pchat select:disabled{background:#f5f7f5;color:var(--pc-muted)}
.pchat label{font-size:14px;color:var(--pc-muted);display:block}
.pchat form{display:flex;gap:12px;align-items:end;margin:16px 0}
.pchat form label{flex:1;min-width:0}.pchat form button{margin-bottom:6px}
.pchat-body{padding-bottom:14px;animation:pchat-enter 160ms ease-out}
.pchat-anchor{margin:0 0 18px!important;padding-bottom:18px;border-bottom:1px solid var(--pc-line);color:var(--pc-muted);scroll-margin-block-start:40px}
.pchat-anchor small{margin-top:5px}
.pchat-tabs{display:flex;gap:22px;border-bottom:1px solid var(--pc-line);margin-bottom:12px}
.pchat-tabs button{border:0;border-radius:0;border-bottom:2px solid transparent;padding-inline:4px;color:var(--pc-muted)}
.pchat-tabs button[aria-pressed=true]{border-bottom-color:var(--pc-green);color:var(--pc-green);font-weight:600}
.pchat-list>button{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--pc-line);border-radius:0;padding:22px 0;color:var(--pc-ink)}
.pchat-list strong{font-size:16px;font-weight:500;overflow-wrap:anywhere}.pchat-list span{font-size:14px;color:var(--pc-muted)}
.pchat-pages{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;color:var(--pc-muted);margin-top:16px}
.pchat-pages button{border-color:transparent;padding-inline:0}
.pchat-actions{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 16px}
.pchat-actions .is-primary{flex:1 1 200px}
.pchat-tooth-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:12px 0}
.pchat-tooth-heading h3{margin:0}.pchat-tooth-heading button{padding:10px}
.pchat-teeth{display:grid;grid-template-columns:repeat(16,minmax(44px,1fr));grid-template-rows:repeat(2,44px);gap:1px;max-width:100%;overflow-x:auto;padding:3px 2px 9px;margin-bottom:20px;scrollbar-width:thin}
.pchat-teeth button{border-color:transparent;font-size:14px;padding:8px;border-radius:5px}
.pchat-teeth button[aria-pressed=true]{background:var(--pc-green);color:#fff}
.pchat table{border-collapse:collapse;width:100%;table-layout:fixed;font-variant-numeric:tabular-nums;margin:8px 0 18px}
.chat-message .message-bubble .pchat table{display:table}
.pchat th,.pchat td{padding:8px 6px;border-bottom:1px solid var(--pc-line);text-align:left;vertical-align:middle;overflow-wrap:anywhere}
.pchat thead th{font-size:13px;font-weight:500;color:var(--pc-ink)}
.pchat tbody th{font-size:14px;font-weight:400}
.pchat-measures th:first-child{width:12%}.pchat-measures th:nth-child(2),.pchat-measures th:nth-child(3){width:24%}.pchat-measures th:nth-child(4),.pchat-measures th:nth-child(5){width:20%}
.pchat-measures input:not([type=checkbox]){margin:0;padding:8px;min-width:0;font-variant-numeric:tabular-nums}
.pchat-check-target{display:flex!important;align-items:center;justify-content:center;min-height:44px;min-width:44px}
.pchat-measures td:nth-child(4),.pchat-measures td:nth-child(5){padding-inline:0}
.pchat-tooth-state{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;border-bottom:1px solid var(--pc-line);padding-bottom:18px}
.pchat-tooth-state .pchat-check-target{justify-content:start;margin-top:6px}
.pchat-note{font-size:14px;color:var(--pc-muted);line-height:1.65}
.pchat-confirm{display:flex!important;align-items:start;gap:12px;min-height:44px;margin:22px 0;color:var(--pc-ink)!important;cursor:pointer}
.pchat-confirm input{margin-top:3px!important}
.pchat-review th:first-child{width:40%}.pchat-review td{font-size:15px}
.pchat .pchat-review thead th{font-size:13px}
.pchat pre{white-space:pre-wrap;overflow-wrap:anywhere;font:400 16px/1.75 Arial,sans-serif;margin:12px 0}
.pchat-wording{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.pchat-wording section{min-width:0}
.pchat-statement{border-block:1px solid var(--pc-line);padding:20px 0}
.pchat-prior,.pchat-recovery{border-top:1px solid var(--pc-line);padding:18px 0;font-size:14px}
.pchat details summary{min-height:44px;cursor:pointer;color:var(--pc-muted);padding:8px 0}
.pchat-sr{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* Keep chat available while giving an active chart more working room. Focus
   restores the regular multiline composer; no input or action is removed. */
.qb-chat-screen:has(.pchat-body) .chat-input:not(:focus-within){align-items:center}
.qb-chat-screen:has(.pchat-body) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:10px}
.qb-chat-screen:has(.pchat-body) .chat-input:not(:focus-within) button{grid-row:1}
.qb-chat-screen:has(.pchat-body) .chat-error:empty,.qb-chat-screen:has(.pchat-body) .chat-attach-error:empty{display:none}
@keyframes pchat-enter{from{opacity:.65;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:480px){.pchat{padding-inline:0;scroll-margin-block-start:8px}.pchat h2{font-size:20px}.pchat header{gap:8px;padding-block:10px}.pchat .pchat-anchor{margin-bottom:10px!important;padding-bottom:10px;font-size:14px}.pchat-tooth-heading{margin-block:6px}.pchat-teeth{margin-bottom:10px}.pchat th,.pchat td{padding-inline:3px}.pchat thead th{font-size:11px}.pchat-measures input:not([type=checkbox]){padding-inline:5px}.pchat-list>button{grid-template-columns:minmax(0,1fr) auto;gap:8px}.pchat-list small{grid-column:1/-1}.pchat-tooth-state{gap:12px}.pchat-wording{grid-template-columns:1fr;gap:12px}}
@media(prefers-reduced-motion:reduce){.pchat-body{animation:none}.pchat *{scroll-behavior:auto!important}}

/* --- reception-test-chat.css --- */
.qtest{background:#fff;color:#202c29;border-top:2px solid #225b4a;margin:18px 0;font:16px/1.5 Arial,sans-serif;max-width:640px;min-width:0}
.chat-message:has(.qtest),.chat-message:has(.qtest) .message-bubble{width:100%;max-width:100%;min-width:0}
.chat-message .message-bubble:has(.qtest){padding:0;border:0;background:transparent}
.chat-message:has(.qtest)>.brand-mark{display:none}
.qtest .qtest-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border:0}
.qtest .qtest-heading h3{font:600 22px/1.25 Arial,sans-serif;letter-spacing:-.025em;margin:0}
.qtest .qtest-heading h3:focus{outline:none}
.qtest button{font:600 16px/1.3 Arial,sans-serif;min-height:44px;padding:10px 16px;border:1px solid #dce3df;border-radius:8px;background:#fff;color:#225b4a;cursor:pointer;box-shadow:none}
.qtest .qtest-heading button{font-weight:400;border-color:transparent;padding:8px;flex-shrink:0}
.qtest button:disabled{opacity:.5;cursor:not-allowed}.qtest button:focus-visible,.qtest summary:focus-visible{outline:2px solid #225b4a;outline-offset:3px}
.qtest .qtest-primary{background:#225b4a;color:#fff;border-color:#225b4a}
.qtest .qtest-body{padding:0 0 20px;animation:qtest-enter 160ms ease-out}
.qtest p{font:400 16px/1.5 Arial,sans-serif;margin:0 0 20px;color:inherit;overflow-wrap:anywhere}
.qtest .qtest-mode{font-size:14px;font-weight:600;color:#225b4a;margin:0 0 8px}
.qtest .qtest-intro{margin-bottom:12px}
.qtest .qtest-processing{font-size:14px;color:#596b63;margin-bottom:0}
.qtest .qtest-setup{margin:14px 0;padding:0;border-block:1px solid #dce3df}
.qtest .qtest-setup[open]{padding-bottom:12px}
.qtest .qtest-setup summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;font-size:14px}
.qtest .qtest-setup summary span{color:#596b63;flex-shrink:0}
.qtest .qtest-setup summary strong{font-weight:500;text-align:right;overflow-wrap:anywhere}
.qtest .qtest-setup summary strong::after{content:' +';padding-left:8px}
.qtest .qtest-setup[open] summary strong::after{content:' −'}
.qtest .qtest-setup-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.qtest .qtest-setup[open] .qtest-setup-heading{margin-top:10px}
.qtest .qtest-setup h4{font-size:14px;margin:0;color:#596b63}
.qtest .qtest-setup button{font-size:14px;border:0;padding:8px 0;flex-shrink:0}
.qtest .qtest-setup dl{margin:6px 0 10px}
.qtest .qtest-setup dl>div{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;padding:3px 0}
.qtest .qtest-setup dt,.qtest .qtest-setup dd{font-size:14px}
.qtest .qtest-setup dt{color:#596b63}
.qtest .qtest-setup p{font-size:13px;color:#596b63;margin:8px 0 0}
.qtest .qtest-editors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin-top:14px;border-top:1px solid #dce3df}
.qtest .qtest-editors button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;text-align:left;border-radius:0;border-bottom:1px solid #dce3df;font-weight:500;padding:10px 0}
.qtest .qtest-editors button:hover{color:#153f32;background:#f5f8f6}
.qtest .qtest-details{border-top:1px solid #dce3df;margin-top:16px;padding-top:12px}
.qtest .qtest-details summary{display:list-item;min-height:44px;padding:8px 0;box-sizing:border-box}
.qtest .qtest-details p{font-size:14px;margin:8px 0 16px}
.qtest .qtest-details .qtest-facts{margin:16px 0 0}
.qtest .qtest-facts{margin:24px 0;border-top:1px solid #dce3df}
.qtest .qtest-facts>div{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,1.7fr);gap:16px;padding:14px 0;border-bottom:1px solid #dce3df}
.qtest dt,.qtest dd{margin:0;font:400 16px/1.5 Arial,sans-serif;overflow-wrap:anywhere}
.qtest .qtest-consent{display:flex;align-items:flex-start;gap:12px;margin:12px 0;min-height:44px;font:400 16px/1.5 Arial,sans-serif;cursor:pointer}
.qtest .qtest-consent input{appearance:auto;flex:0 0 20px;width:20px;height:20px;min-height:20px;margin:2px 0 0;accent-color:#225b4a;box-shadow:none}
.qtest .qtest-microphone{font-size:14px;color:#687671;margin:12px 0}
.qtest .qtest-state{display:flex;align-items:baseline;gap:10px;margin-top:12px}
.qtest .qtest-live{width:8px;height:8px;border-radius:50%;background:#225b4a;flex:0 0 8px}
.qtest .qtest-call-controls{border-top:1px solid #dce3df;margin-top:28px;padding-top:20px}
.qtest h4{font:600 20px/1.3 Arial,sans-serif;margin:12px 0}
.qtest .qtest-transcript{margin:24px 0;border:0;padding:0}.qtest summary{font:400 16px/1.4 Arial,sans-serif;color:#225b4a;min-height:44px;cursor:pointer}
.qtest .qtest-transcript ol{list-style:none;margin:0;padding:0;max-height:360px;overflow:auto}.qtest .qtest-transcript li{padding:14px 0;border-top:1px solid #dce3df}
.qtest .qtest-transcript strong{font-size:16px}.qtest .qtest-transcript p{margin:6px 0 0}
.qtest .qtest-saved{margin:28px 0;border-top:1px solid #dce3df;padding-top:16px;min-width:0}
.qtest .qtest-evidence{font-size:14px;color:#596b63;margin:10px 0 18px}
.qtest .qtest-request{border-top:1px solid #dce3df;padding:18px 0;min-width:0}
.qtest .qtest-request header{display:flex;align-items:baseline;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}
.qtest .qtest-request h5{font:600 16px/1.4 Arial,sans-serif;margin:0}
.qtest .qtest-request header span{font-size:13px;color:#596b63}
.qtest .qtest-request .qtest-facts{margin:14px 0}
.qtest .qtest-request .qtest-facts>div{padding:9px 0}
.qtest .qtest-caution,.qtest .qtest-changes{border-left:3px solid #a66b25;padding:4px 0 4px 14px;color:#704615;font-size:14px;margin:18px 0}
.qtest .qtest-changes p,.qtest .qtest-changes li{font-size:14px;margin:8px 0;overflow-wrap:anywhere}
.qtest .qtest-changes ol{padding-left:18px;margin:0}
.qtest .qtest-message{white-space:pre-wrap;margin:14px 0 0}
.qb-chat-screen:has(.qtest-body) .chat-input:not(:focus-within){align-items:center}
.qb-chat-screen:has(.qtest-body) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:10px}
.qb-chat-screen:has(.qtest-body) .chat-input:not(:focus-within) button{grid-row:1}
.qb-chat-screen:has(.qtest-body) .chat-error:empty,.qb-chat-screen:has(.qtest-body) .chat-attach-error:empty{display:none}
@keyframes qtest-enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:520px){.qtest .qtest-heading{gap:8px}.qtest .qtest-heading h3{font-size:20px}.qtest .qtest-heading button{font-size:14px;padding:8px 0}.qtest .qtest-facts>div{grid-template-columns:90px minmax(0,1fr);gap:12px}.qtest .qtest-body>button,.qtest-call-controls>button{width:100%}}
@media(prefers-reduced-motion:reduce){.qtest .qtest-body{animation:none}}

/* --- queue-workflow.css --- */
.qqueue{max-width:680px;margin:18px 0;color:#202c29;background:#fff;border-top:2px solid #225b4a;font:16px/1.55 Arial,sans-serif;overflow-wrap:anywhere}
.qqueue header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0}
.qqueue header button{white-space:nowrap;flex-shrink:0}.qqueue header h3{min-width:0}
.qqueue h3{font:600 22px/1.25 Arial,sans-serif;margin:0}.qqueue h4{font:600 21px/1.3 Arial,sans-serif;margin:24px 0 12px}
.qqueue nav{display:flex;border-bottom:1px solid #dce3df;gap:18px}.qqueue nav button:last-child{margin-left:auto}.qqueue nav [aria-current]{border-bottom:2px solid #225b4a;border-radius:0}
.qqueue button{min-height:44px;padding:8px 12px;border:0;border-radius:6px;background:transparent;color:#225b4a;font:500 15px/1.35 Arial,sans-serif;box-shadow:none;cursor:pointer}
.qqueue button:disabled{opacity:.45;cursor:default}.qqueue button:focus-visible,.qqueue select:focus-visible,.qqueue input:focus-visible{outline:2px solid #225b4a;outline-offset:3px}
.qqueue .qqueue-primary{background:#225b4a;color:#fff;padding:10px 18px}.qqueue-count{color:#687671;margin:20px 0 10px}
.qqueue-list{border-top:1px solid #dce3df}.qqueue-list button{display:grid;grid-template-columns:1fr 1fr 16px;text-align:left;align-items:center;gap:14px;width:100%;border-radius:0;border-bottom:1px solid #dce3df;color:#202c29;padding:12px;min-height:52px}
.qqueue-list button.is-selected{background:#eff5f1}.qqueue-list strong{font-weight:600}.qqueue-list span{font-size:14px;color:#687671}.qqueue-list svg{width:16px;height:16px}
.qqueue-facts{margin:16px 0}.qqueue-facts>div{display:grid;grid-template-columns:minmax(80px,1fr) 2fr;gap:20px;padding:12px 0;border-bottom:1px solid #dce3df}.qqueue-facts>div:first-child{border-top:1px solid #dce3df}.qqueue-facts dt{font-size:14px;color:#687671}.qqueue-facts dd{margin:0}
.qqueue blockquote{margin:18px 0 24px 10px;padding:8px 0 8px 20px;border-left:1px solid #bcc8c1;white-space:pre-wrap;color:#202c29;font:16px/1.6 Arial,sans-serif}
.qqueue-consent{display:flex;align-items:flex-start;gap:12px;min-height:44px;margin:16px 0}.qqueue-consent input{appearance:auto!important;flex:0 0 20px!important;width:20px!important;height:20px!important;min-height:20px!important;margin:3px 0!important;accent-color:#225b4a}
.qqueue-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:16px 0}.qqueue-reason{display:block;margin:20px 0;color:#687671;font-size:14px}.qqueue-reason select{display:block;width:100%;margin-top:6px;min-height:44px;border:1px solid #bcc8c1;border-radius:6px;background:#fff;color:#202c29;padding:8px;font:16px/1.4 Arial,sans-serif}
.qqueue-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0}.qqueue-pagination span{font-size:14px;color:#687671}
.qqueue-batch-bar,.qqueue-batch-add{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #dce3df;font-size:14px;color:#687671}.qqueue-batch-add{border-top:1px solid #dce3df;border-bottom:0;flex-wrap:wrap}.qqueue-batch-bar button,.qqueue-batch-add button{flex-shrink:0}
.qqueue-batch article{padding:8px 0 20px;border-bottom:1px solid #dce3df}.qqueue-batch article h4{font-size:18px}.qqueue-batch article button{text-align:left}.qqueue-check{padding:12px 0;border-bottom:1px solid #dce3df}.qqueue-check button{display:block;text-align:left}.qqueue-outcome+.qqueue-outcome{margin-top:28px}.qqueue-outcome h4{margin-bottom:4px}.qqueue-outcome>p{font-size:14px;color:#687671;margin:4px 0 12px}
.qqueue-contact-link{margin:24px 0;padding:16px 0;border-block:1px solid #dce3df;display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 16px}.qqueue-contact-link p{margin:0;font-weight:600}.qqueue-contact-link p:last-child{grid-column:1/-1;font-size:14px;color:#687671;font-weight:400}.qqueue-contact-link button{border:1px solid #bcc8c1}.qqueue [data-queue-contact]>.qcontact{border-top:0;margin:0}
@media(max-width:450px){.qqueue-contact-link{grid-template-columns:1fr}.qqueue-contact-link button{justify-self:start}}
.qqueue [data-queue-contact] .qcontact>header{position:sticky;top:0;z-index:2;background:#fff;border-bottom:1px solid #dce3df}.qqueue [data-queue-contact] .qcontact-patient{scroll-margin-top:78px}
.qqueue-enter{animation:qqueue-enter 150ms ease-out}.qqueue [role=alert]{color:#824d25}
.qqueue-edit-label{display:block;margin:18px 0;font-size:14px;color:#687671}.qqueue-edit-label input,.qqueue-edit-label textarea{display:block;box-sizing:border-box;width:100%;min-height:44px;margin-top:6px;padding:12px;border:1px solid #bcc8c1;border-radius:6px;background:#fff;color:#202c29;font:16px/1.6 Arial,sans-serif}.qqueue-edit-label textarea{resize:vertical;min-height:180px}.qqueue-edit-label textarea:focus-visible{outline:2px solid #225b4a;outline-offset:3px}
.qqueue-revision-note{margin:24px 0;padding:18px 0;border-block:1px solid #dce3df}.qqueue-revision-note h5{margin:0;font:600 16px/1.4 Arial,sans-serif}.qqueue-revision-note p,.qqueue-revision>p{font-size:14px;color:#687671}.qqueue-revision-note button{padding-left:0;text-decoration:underline;text-underline-offset:4px}.qqueue-revision details{border-block:1px solid #dce3df;margin:20px 0}.qqueue-revision summary{padding:12px 0;min-height:44px;box-sizing:border-box;cursor:pointer;color:#687671;font-size:14px}.qqueue-revision summary:focus-visible{outline:2px solid #225b4a;outline-offset:3px}.qqueue-revision .qqueue-revision-label{margin:24px 0 0;color:#225b4a;font-weight:600}.qqueue-revision h4{margin-top:8px}.qqueue-revision blockquote{margin-left:0;border-left:2px solid #225b4a}.qqueue-revision details blockquote{font-size:14px;color:#687671;border-left:1px solid #bcc8c1}
.qqueue-revision-recipient{display:grid;gap:3px;margin:20px 0}.qqueue-revision-recipient strong{font-size:16px;color:#202c29}.qqueue-revision .qqueue-revision-recipient+.qqueue-revision-label{margin-top:18px}
.chat-message:has(.qqueue) .message-bubble{background:transparent;border:0;box-shadow:none;padding:0;max-width:100%;width:100%}.chat-message:has(.qqueue){max-width:100%;width:100%;min-width:0}.chat-message:has(.qqueue)>.brand-mark{display:none}
.qb-chat-screen:has(.qqueue-body) .chat-input:not(:focus-within){align-items:center}.qb-chat-screen:has(.qqueue-body) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.qqueue-body) .chat-input:not(:focus-within) button{grid-row:1}.qb-chat-screen:has(.qqueue-body) .chat-error:empty,.qb-chat-screen:has(.qqueue-body) .chat-attach-error:empty{display:none}
@keyframes qqueue-enter{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:600px){.qqueue{margin:14px 0}.qqueue h3{font-size:20px}.qqueue header{gap:10px}.qqueue-list button{grid-template-columns:1fr 16px;gap:3px 8px}.qqueue-list span{grid-column:1}.qqueue-list svg{grid-column:2;grid-row:1/3}.qqueue-facts>div{grid-template-columns:80px 1fr;gap:10px}.qqueue-actions{gap:8px}.qqueue-actions .qqueue-primary{flex:1}.qqueue nav{gap:6px}}
@media(prefers-reduced-motion:reduce){.qqueue-body{animation:none}}

/* --- contact-workflow.css --- */
.qcontact{max-width:680px;margin:18px 0;border-top:2px solid #225b4a;background:#fff;color:#202c29;font:16px/1.55 Arial,sans-serif;overflow-wrap:anywhere}
.qcontact-guide{margin:20px 0;border-block:1px solid #dce3df;min-width:0}.qcontact-guide summary{font-weight:600;line-height:1.5}.qcontact-guide summary small{font-weight:400;color:#687671;margin-left:8px}.qcontact-guide-choices{display:flex;gap:8px;flex-wrap:wrap}.qcontact-guide-choices button{border-color:#dce3df}.qcontact-guide-choices button[aria-pressed=true]{background:#eaf1ed;border-color:#225b4a}.qcontact-guide-source{font-size:13px;color:#687671;margin:18px 0 8px}.qcontact-guide-text{white-space:pre-wrap;overflow-wrap:anywhere;font:16px/1.7 Arial,sans-serif;padding:0 0 0 16px;border-left:2px solid #225b4a;margin:0 0 16px}.qcontact-guide>.qcontact-muted,.qcontact-guide-empty{font-size:13px;line-height:1.6;color:#687671}.qcontact-guide summary:focus-visible{outline:2px solid #225b4a;outline-offset:3px}
.qcontact header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0}.qcontact h3{font:600 22px/1.25 Arial,sans-serif;margin:0}.qcontact h4{font:600 22px/1.3 Arial,sans-serif;margin:24px 0 12px}.qcontact h5{font:600 20px/1.3 Arial,sans-serif;margin:24px 0 12px}
.qcontact button{font:500 15px/1.4 Arial,sans-serif;min-height:44px;padding:10px 14px;border:1px solid #225b4a;border-radius:6px;box-shadow:none;background:#fff;color:#225b4a;cursor:pointer}.qcontact header button,.qcontact-count button{border:0;padding-inline:0}.qcontact .qcontact-primary{background:#225b4a;color:white}.qcontact button:disabled{opacity:.45;cursor:default}.qcontact :is(button,select,input,textarea):focus-visible{outline:2px solid #225b4a;outline-offset:3px}
.qcontact-field{display:block;font-size:14px;color:#687671;margin:14px 0}.qcontact-field :is(select,input,textarea){display:block;box-sizing:border-box;width:100%;min-height:44px;padding:9px 12px;margin-top:5px;border:1px solid #bcc8c1;border-radius:6px;background:#fff;color:#202c29;font:16px/1.5 Arial,sans-serif}.qcontact-field textarea{resize:vertical;min-height:100px}
.qcontact-count{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:12px 0}.qcontact-count button{text-decoration:underline}.qcontact-list{border-top:1px solid #dce3df}.qcontact-list button{display:grid;grid-template-columns:1fr 1fr 16px;align-items:center;gap:14px;width:100%;min-height:52px;text-align:left;border:0;border-bottom:1px solid #dce3df;border-radius:0;color:#202c29}.qcontact-list .is-selected{background:#eff5f1}.qcontact-list span{font-size:14px;color:#687671}.qcontact-list svg{width:16px;height:16px}
.qcontact-facts{margin:16px 0}.qcontact-facts>div{display:grid;grid-template-columns:minmax(95px,1fr) 2fr;gap:18px;padding:9px 0;border-bottom:1px solid #dce3df}.qcontact-facts>div:first-child{border-top:1px solid #dce3df}.qcontact-facts dt,.qcontact-muted{color:#687671}.qcontact-facts dt{font-size:14px}.qcontact-facts dd{margin:0}.qcontact details article{border-top:1px solid #dce3df;padding:8px 0}.qcontact details article p{margin:4px 0}.qcontact summary{min-height:44px;cursor:pointer;padding:10px 0}.qcontact blockquote{margin:18px 0;padding:0 0 0 20px;white-space:pre-wrap;border-left:1px solid #bcc8c1}
.qcontact-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:24px 0}.qcontact-actions button{flex:1}.qcontact-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:12px 0;font-size:14px}.qcontact-pagination button{border:0}
.qcontact-consent{display:flex;align-items:flex-start;gap:12px;min-height:44px;margin:20px 0}.qcontact-consent input{appearance:auto!important;flex:0 0 20px!important;width:20px!important;height:20px!important;min-height:20px!important;margin:3px 0!important;accent-color:#225b4a}.qcontact [role=alert]{color:#824d25}.qcontact-enter{animation:qcontact-enter 150ms ease-out}
.chat-message:has(.qcontact) .message-bubble{background:transparent;border:0;box-shadow:none;padding:0;max-width:100%;width:100%}.chat-message:has(.qcontact){max-width:100%;width:100%;min-width:0}.chat-message:has(.qcontact)>.brand-mark{display:none}
.qb-chat-screen:has(.qcontact-body,.qcompose) .chat-input:not(:focus-within){align-items:center}.qb-chat-screen:has(.qcontact-body,.qcompose) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.qcontact-body,.qcompose) .chat-input:not(:focus-within) button{grid-row:1}.qb-chat-screen:has(.qcontact-body,.qcompose) .chat-error:empty,.qb-chat-screen:has(.qcontact-body,.qcompose) .chat-attach-error:empty{display:none}
@keyframes qcontact-enter{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:600px){.qcontact{margin:14px 0}.qcontact h3,.qcontact h4{font-size:20px}.qcontact header{gap:10px}.qcontact header button{flex-shrink:0}.qcontact-count{font-size:14px;align-items:flex-start}.qcontact-list button{grid-template-columns:1fr 16px;gap:3px 8px}.qcontact-list span{grid-column:1}.qcontact-list svg{grid-column:2;grid-row:1/3}.qcontact-facts>div{grid-template-columns:90px 1fr;gap:10px}.qcontact-actions{gap:8px}}
@media(prefers-reduced-motion:reduce){.qcontact-enter{animation:none}}
.qguide-selectors{display:grid;grid-template-columns:2fr 1fr;gap:16px}.qguide-selectors select{min-width:0}.qguide-variants{display:flex;gap:8px}.qguide-variants [aria-pressed=true]{background:#eaf1ed}.qguide-copy{white-space:pre-wrap;overflow-wrap:anywhere;border-left:2px solid #bcc8c1;padding-left:16px;line-height:1.7}.qguide-comparison{display:grid;grid-template-columns:1fr 1fr;gap:24px}.qguide-comparison>section{min-width:0}.qguide-comparison h5{font-size:16px}.qguide details article{padding:14px 0}@media(max-width:600px){.qguide-selectors,.qguide-comparison{grid-template-columns:1fr;gap:0}.qguide-variants{flex-wrap:wrap}}
.qcontact .qcontact-guide-source{margin:14px 0 10px}
.qcontact-requests{margin:24px 0;padding-block:16px;border-block:1px solid #dce3df}
.qcontact-requests h5{font:600 16px/1.4 Arial,sans-serif;margin:0}
.qcontact-requests ol{list-style:none;margin:16px 0;padding:0 0 0 16px;border-left:2px solid #dce3df}
.qcontact-requests li{padding:0 0 8px;min-width:0}
.qcontact-requests summary{display:grid;grid-template-columns:minmax(0,1fr) 12px;gap:2px 12px;align-items:center}
.qcontact-requests summary span{grid-column:1;font-weight:600}
.qcontact-requests small{margin:0;padding:0;border:0;font-size:12px;color:#687671}
.qcontact-requests summary small{grid-column:1}
.qcontact-requests summary::after{content:"";grid-column:2;grid-row:1/3;width:6px;height:6px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg)}
.qcontact-requests details[open]>summary::after{transform:rotate(225deg)}
.qcontact-requests summary:focus-visible{outline:2px solid #225b4a;outline-offset:2px}
.qcontact-requests details>p{margin:4px 0 8px}
.qcontact-requests .qcontact-request-warning{color:#824d25}
.qcontact-search-form{display:flex;align-items:flex-end;gap:12px;margin:20px 0 8px}.qcontact-search-form .qcontact-field{flex:1;min-width:0;margin:0}.qcontact-search-form>button{flex-shrink:0;margin-bottom:1px}.qcontact-search-privacy{font-size:13px;margin:8px 0 24px}

/* --- contact-message-composer.css --- */
.qcompose>button:first-child{border:0;padding-inline:0;color:#687671;margin:8px 0 10px}
.qcompose h4{margin:24px 0;font-size:22px}.qcompose p{margin:12px 0}.qcompose .qcontact-field{margin:20px 0}
.qcompose-recipients{margin:20px 0}.qcompose-recipients article,.qcompose-pick{padding:20px 0;border-bottom:1px solid #dce3df}.qcompose-recipients article p{margin:5px 0}.qcompose-recipients strong{font-weight:600}.qcompose-pick{display:flex;align-items:flex-start;gap:16px;min-height:44px;cursor:pointer}.qcompose-pick>span{flex:1;min-width:0}.qcompose-pick>span>span{display:block;color:#687671;font-size:14px;margin-top:4px}
.qcompose-pick input{appearance:auto!important;flex:0 0 20px!important;width:20px!important;height:20px!important;min-height:20px!important;margin:3px 0!important;accent-color:#225b4a}
.qcompose .qcompose-label{font-weight:600;margin-top:26px}.qcompose .qcompose-text{white-space:pre-wrap}.qcompose-actions{display:grid;gap:12px;margin:28px 0 16px}.qcompose-actions button{width:100%}.qcompose-receipt-line{display:flex;justify-content:space-between;gap:18px}.qcompose-receipt-line>span{color:#687671;font-size:14px}.qcompose-recipients article button{border:0;padding-inline:0;text-decoration:underline;display:block;margin-left:auto}
.qcompose .qcontact-consent{margin-top:32px}.qcompose .qqueue{border-top:0}.qcompose .qcontact-muted{font-size:14px}
@media(max-width:600px){.qcompose h4{font-size:20px}.qcompose-pick{gap:12px}.qcompose-receipt-line{flex-wrap:wrap;gap:4px 16px}}
.qcompose-plan{display:grid;gap:32px;margin-block:32px}.qcompose-plan section{min-width:0;border-top:1px solid #cdd8d1;padding-top:18px}.qcompose-plan header{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.qcompose-plan h5,.qcompose-plan-work h5{font-size:17px;font-weight:600;margin:0}.qcompose-plan header>span{color:#687671;font-variant-numeric:tabular-nums}.qcompose-plan-person{padding:12px 0;overflow-wrap:anywhere}.qcompose-plan-person>strong,.qcompose-plan-person>span{display:block}.qcompose-plan-person>span,.qcompose-plan-person p{font-size:14px;color:#687671}.qcompose-plan-person p{margin:5px 0}.qcompose-plan-person button{margin-top:8px}.qcompose-plan-work{border-top:1px solid #cdd8d1;padding-top:20px}.qcompose-plan-work>div{padding:16px 0;border-bottom:1px solid #e4e9e6;overflow-wrap:anywhere}.qcompose-plan-work p{margin:5px 0}.qcompose-plan-work button{margin-top:10px}.qcompose-offpage button{display:block;margin-top:6px;overflow-wrap:anywhere}
.qcontact.qcompose .qcompose-plan{gap:22px;margin-block:24px}.qcontact.qcompose .qcompose-plan section{padding-top:14px}.qcontact.qcompose .qcompose-plan header{justify-content:flex-start;padding:0;margin:0 0 8px}.qcontact.qcompose .qcompose-plan h5,.qcontact.qcompose .qcompose-plan-work h5{font-size:16px;margin:0}.qcontact.qcompose .qcompose-plan-person{position:relative;padding:8px 0}.qcontact.qcompose .qcompose-plan-person p{margin:4px 0;font-size:13px}.qcontact.qcompose .qcompose-plan section>.qcontact-muted{font-size:12px;margin:8px 0 0}.qcontact.qcompose .qcompose-plan section>button{margin-top:4px}
@media(min-width:650px){.qcontact.qcompose .qcompose-plan-person:has(>button:only-of-type):not(:has(.qcompose-methods)){padding-right:190px;min-height:74px}.qcontact.qcompose .qcompose-plan-person:not(:has(.qcompose-methods))>button:only-of-type{position:absolute;right:0;top:8px;margin:0;max-width:180px}}
.qcompose-work-actions{display:flex;flex-wrap:wrap;gap:8px 12px}.qcompose-plan-work .qcompose-work-actions button{margin-top:8px}
.qcompose-methods{border:0;margin:14px 0 6px;padding:0;min-width:0}.qcompose-methods legend{font-size:13px;font-weight:600;color:#344e43;padding:0}.qcompose-methods>div{display:flex;flex-wrap:wrap;gap:8px}.qcompose-methods button{min-height:40px}.qcompose-method-status:empty{display:none}.qcompose-method-status{font-size:13px;color:#245746}
.qcompose-proposal{margin:20px 0 24px;padding:16px 0;border-block:1px solid #dce3df;min-width:0;overflow-wrap:anywhere}.qcompose-proposal>span,.qcompose-proposal>small{display:block;color:#687671;font-size:12px;line-height:1.5}.qcompose-proposal>strong{display:block;font-size:15px;margin-top:12px}.qcompose-proposal>p{white-space:pre-wrap;font-size:15px;line-height:1.6;margin:12px 0}

/* --- contact-sequence.css --- */
/* White canvas, forest ink, open patient rows and a single temporal rail. */
.qcontact.qsequence h4{font:600 22px/1.3 Arial,sans-serif;margin:24px 0 8px;letter-spacing:-.025em}.qcontact.qsequence h5{font:600 16px/1.4 Arial,sans-serif;margin:0 0 18px}.qcontact.qsequence button{font:500 15px/1.4 Arial,sans-serif}.qtoday-focused:has(.qsequence)>button{position:static}
.qsequence{--sequence-ink:#22352e;--sequence-muted:#687671;--sequence-line:#dce3df;--sequence-green:#225b4a;background:#fff;color:var(--sequence-ink)}
.qsequence h4{font-size:22px;line-height:1.3;font-weight:600;margin:24px 0 8px;letter-spacing:-.025em}.qsequence p{font-size:15px;line-height:1.5;margin:8px 0}.qsequence .qsequence-subtitle{font-size:16px;margin-bottom:24px}.qsequence .qsequence-muted{color:var(--sequence-muted);font-size:14px}
.qsequence h5{font-size:16px;font-weight:600;line-height:1.4;margin:0 0 18px}.qsequence h6{font-size:15px;line-height:1.45;font-weight:600;margin:0 0 6px}.qsequence button{font-family:inherit;font-size:15px;font-weight:500;line-height:1.4;min-height:44px;border-radius:6px}.qsequence button:focus-visible,.qsequence input:focus-visible{outline:2px solid var(--sequence-green);outline-offset:4px}
.qsequence-patients{margin:28px 0 20px;border-top:1px solid var(--sequence-line)}.qsequence-patients label{display:flex;align-items:flex-start;gap:16px;min-height:44px;padding:20px 0;border-bottom:1px solid var(--sequence-line);cursor:pointer}.qsequence-patients label>span{display:flex;flex:1;min-width:0;justify-content:space-between;gap:12px}.qsequence-patients strong{font-size:15px;font-weight:600}.qsequence-patients label>span>span{color:var(--sequence-muted);font-size:14px;line-height:1.5}
.qsequence input[type=checkbox]{appearance:auto!important;width:18px!important;height:18px!important;min-height:18px!important;flex:0 0 18px!important;margin:3px 0!important;accent-color:var(--sequence-green)}
.qsequence-person{margin:28px 0 32px}.qsequence-timeline{list-style:none!important;padding:0!important;margin:0!important}.qsequence-timeline li{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;padding:0 0 24px;margin:0!important}.qsequence-timeline li:not(:last-child):before{content:'';position:absolute;top:36px;bottom:0;left:17px;width:1px;background:var(--sequence-line)}.qsequence-step{display:grid;place-items:center;width:36px;height:36px;border:1px solid #bbc8c1;border-radius:50%;background:#fff;font-size:14px;line-height:1}.qsequence-timeline li>div{min-width:0;padding:4px 0 20px;border-bottom:1px solid var(--sequence-line)}.qsequence-timeline li:last-child{padding-bottom:0}.qsequence-timeline li:last-child>div{border-bottom:0;padding-bottom:0}.qsequence-timeline p{overflow-wrap:anywhere}.qsequence .qsequence-message{white-space:pre-wrap;margin:10px 0}.qsequence .qsequence-state{color:var(--sequence-green);font-weight:500}.qsequence .qsequence-stop{color:#77582c;font-size:14px}.qsequence-timeline button,.qsequence-history button{border:0!important;padding-inline:0;color:var(--sequence-green);background:transparent!important;text-align:left}
.qsequence-actions{display:grid;gap:12px;margin:24px 0 16px}.qsequence-actions button{width:100%}.qsequence .qcontact-consent{margin:24px 0 0;font-size:15px;line-height:1.5}.qsequence [data-sequence-action=cancel-review],.qsequence [data-sequence-action=cancel]{color:#8b4037}.qsequence-cancel{border-top:1px solid var(--sequence-line);padding-top:24px}.qsequence-history article{padding:24px 0;border-bottom:1px solid var(--sequence-line)}.qsequence-history h5{margin-bottom:8px}
@media(max-width:600px){.qcontact.qsequence h4{font-size:20px}.qsequence-patients label>span{display:block}.qsequence-patients label>span>span{display:block;margin-top:4px}.qsequence-timeline li{grid-template-columns:30px minmax(0,1fr);gap:12px}.qsequence-step{width:30px;height:30px}.qsequence-timeline li:not(:last-child):before{left:14px;top:30px}.qsequence-timeline p{font-size:14px}.qsequence-timeline h6{font-size:14px}}
.qrevision-accepted,.qrevision-original{border-block:1px solid var(--sequence-line);padding:16px 0;margin:20px 0 24px}
.qsequence summary{cursor:pointer;min-height:44px;align-content:center;font:500 15px/1.5 Arial,sans-serif;color:var(--sequence-green)}
.qsequence summary:focus-visible{outline:2px solid var(--sequence-green);outline-offset:4px}.qrevision-accepted>div{margin:20px 0;padding-left:16px;border-left:1px solid var(--sequence-line)}
.qrevision-accepted>summary{display:flex;align-items:center;gap:16px;list-style:none}.qrevision-accepted>summary::-webkit-details-marker{display:none}.qrevision-accepted>summary>span{flex:1;min-width:0}.qrevision-check{width:36px;height:36px;flex-shrink:0}.qrevision-chevron{width:20px;height:20px;flex-shrink:0}.qrevision-accepted[open] .qrevision-chevron{transform:rotate(180deg)}.qrevision-caption{display:block;font-size:14px;font-weight:400;color:var(--sequence-muted);margin-top:4px}.qrevision-timeline .qsequence-step{border-color:var(--sequence-green);color:var(--sequence-green)}
.qcontact.qsequence .qrevision-check{width:36px;height:36px}.qcontact.qsequence .qrevision-chevron{width:20px;height:20px}
.qrevision-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--sequence-line);border-radius:6px;margin-top:12px;overflow:hidden}
.qrevision-compare>section{min-width:0;padding:16px}.qrevision-compare>section+section{border-left:1px solid var(--sequence-line)}
.qrevision-compare>section>h6{color:var(--sequence-green);border-bottom:1px solid var(--sequence-line);padding-bottom:12px;margin-bottom:16px}
.qrevision-compare .qsequence-message{border-top:1px solid var(--sequence-line);padding-top:16px;margin-top:16px}
.qrevision-added{grid-template-columns:minmax(0,1fr)}.qrevision-timeline>li>div{border-bottom:0}.qrevision-timeline>li{padding-bottom:12px}
@container(max-width:570px){.qrevision-compare{grid-template-columns:minmax(0,1fr)}.qrevision-compare>section+section{border-left:0;border-top:1px solid var(--sequence-line)}}
.qsequence{container-type:inline-size}
@media(max-width:600px){.qrevision-compare{grid-template-columns:minmax(0,1fr)}.qrevision-compare>section+section{border-left:0;border-top:1px solid var(--sequence-line)}.qrevision-compare>section{padding:14px}}

/* --- today-workflow.css --- */
.qtoday{max-width:680px;margin:20px 0;background:#fff;color:#22312d;font:15px/1.5 Arial,sans-serif;overflow-wrap:anywhere}
.qtoday>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 0 0}
.qtoday h3{font:600 22px/1.3 Arial,sans-serif;margin:0}.qtoday h4{font:600 17px/1.35 Arial,sans-serif;margin:0 0 8px}
.qtoday button{min-height:44px;padding:10px 12px;border:1px solid #dce3df;border-radius:6px;background:#fff;color:#235e4f;font:500 14px/1.4 Arial,sans-serif;cursor:pointer;box-shadow:none}
.qtoday button:disabled{opacity:.45;cursor:default}.qtoday button:focus-visible,.qtoday summary:focus-visible{outline:2px solid #235e4f;outline-offset:3px}
.qtoday>header button,.qtoday-agenda button,.qtoday-focused>button{border:0;padding-inline:0;display:flex;align-items:center;gap:10px;text-align:left}
.qtoday svg{flex-shrink:0;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.qtoday-muted,.qtoday-agenda p{color:#677671}.qtoday>p{margin:8px 0 20px}.qtoday-error{color:#963d31}
.qtoday-agenda article{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,180px);gap:24px;align-items:center;padding:26px 0;border-bottom:1px solid #dce3df}
.qtoday-agenda p{margin:0}.qtoday-agenda button{justify-content:space-between}.qtoday-agenda>article>span{font-size:14px}
.qtoday footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 0;color:#677671;font-size:13px}.qtoday footer>div{display:flex;gap:10px}
.qtoday-opened{border-top:1px solid #dce3df;padding:12px 0}.qtoday-opened summary{padding:10px 0;min-height:44px;box-sizing:border-box;cursor:pointer}.qtoday-opened>button{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;margin:8px 0;text-align:left}
.qtoday-focused>button{margin-bottom:16px}.qtoday-focused>button svg{transform:rotate(180deg)}.qtoday-focused>.qtoday-muted{margin:10px 0 22px}
.qtoday-focused>button{position:sticky;top:0;z-index:2;width:100%;background:#fff}
.qtoday-self-titled>.qtoday-child>:is(.qcalendar,.qperformance,.rwork){border-top:0;padding-top:8px}
.qtoday-self-titled .rwork:has(.rwork-sections)>header [data-rule-action="toggle"]{display:none}
.qtoday-self-titled .qcalendar:has(.qcalendar-boundary)>header>button,.qtoday-self-titled .qperformance:has(.qperformance-controls)>header>button{display:none}
.qtoday-child>.qqueue,.qtoday-child>.qcontact{border-top:0;margin-top:0}
.qtoday-child>.qqueue>header,.qtoday-child>.qcontact>header{display:none}
.qtoday-child>.rinbox{border:0;border-radius:0;box-shadow:none;margin:0}
.qtoday-child>.rinbox>.qwork-heading{padding:8px 0 12px}
.qtoday-child>.rinbox>.qwork-body{padding:12px 0 0}
.qtoday-child>.rinbox:has(.qwork-body)>.qwork-heading>.qwork-toggle{display:none}
.qtoday .rinbox .qwork-primary{background:var(--green,#245f50);color:#fff;border-color:var(--green,#245f50)}
.qtoday-child .qqueue-body:has(.qqueue-message)>.qqueue-list,.qtoday-child .qqueue-body:has(.qqueue-message)>.qqueue-count,.qtoday-child .qqueue-body:has(.qqueue-message)>.qqueue-pagination{display:none}
.chat-message:has(.qtoday) .message-bubble{background:transparent;border:0;box-shadow:none;padding:0;max-width:100%;width:100%}.chat-message:has(.qtoday){max-width:100%;width:100%;min-width:0}.chat-message:has(.qtoday)>.brand-mark{display:none}
.qtoday :is(h3,h4):focus{outline:none;box-shadow:none}
.qb-chat-screen:has(.qtoday) .chat-input:not(:focus-within){align-items:center;padding:8px;margin-top:0}.qb-chat-screen:has(.qtoday) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.qtoday) .chat-input:not(:focus-within) button{grid-row:1;min-width:44px;min-height:44px}.qb-chat-screen:has(.qtoday) .chat-error:empty,.qb-chat-screen:has(.qtoday) .chat-attach-error:empty{display:none}.qb-chat-screen:has(.qtoday) .chat-privacy{margin-top:2px}
.qtoday-focused{animation:qtoday-enter 150ms ease-out}@keyframes qtoday-enter{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:600px){.qtoday-agenda article{grid-template-columns:1fr;gap:10px;padding:22px 0}.qtoday-agenda button{justify-content:flex-start}.qtoday h3{font-size:20px}.qtoday footer{align-items:flex-start;flex-direction:column}.qtoday footer>div{width:100%;justify-content:space-between}}
@media(prefers-reduced-motion:reduce){.qtoday-focused{animation:none}}

/* --- rules-workflow.css --- */
.rwork{--rule-ink:#23332e;--rule-muted:#697671;--rule-line:#dce3df;--rule-green:#245e4e;background:#fff;color:var(--rule-ink);border-top:1px solid var(--rule-line);padding:24px 0;font:15px/1.5 Arial,sans-serif;width:100%;min-width:0;overflow-wrap:anywhere}
.rwork header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 20px}.rwork header>div{display:flex;flex-wrap:wrap;gap:4px}.rwork h3{font-size:22px;line-height:1.25;letter-spacing:-.35px;margin:0;font-weight:650}.rwork h4{font-size:18px;line-height:1.3;margin:28px 0 16px}.rwork h3,.rwork h4{scroll-margin-top:24px}.rwork p{margin:8px 0 16px}.rwork .rwork-muted,.rwork-row p{color:var(--rule-muted);font-size:14px}.rwork button{background:#fff;color:var(--rule-green);border:1px solid transparent;border-radius:6px;min-height:44px;padding:10px 14px;font:600 14px/1.35 Arial,sans-serif;cursor:pointer}.rwork button.is-primary{background:var(--rule-green);color:white;padding:12px 22px}.rwork button:hover{background:#f0f5f2}.rwork button.is-primary:hover{background:#1b4d3f}.rwork button:disabled{opacity:.5;cursor:default}.rwork :is(button,input,textarea,select,summary):focus-visible{outline:2px solid var(--rule-green);outline-offset:3px}.rwork-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:20px 0 0}.rwork-page{justify-content:space-between;font-size:13px}.rwork-list{margin:24px 0 0}.rwork-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0;border-bottom:1px solid var(--rule-line)}.rwork-row:first-child{border-top:1px solid var(--rule-line)}.rwork-row>div{min-width:0}.rwork-row strong{font-size:15px;font-weight:650}.rwork-row p{margin:4px 0 0}.rwork-editor{margin-top:28px}.rwork label{display:flex;flex-direction:column;gap:8px;margin:20px 0;font:400 15px/1.45 Arial,sans-serif}.rwork textarea,.rwork select{box-sizing:border-box;width:100%;max-width:100%;min-width:0;border:1px solid #bdc9c2;border-radius:6px;padding:12px;font:400 15px/1.5 Arial,sans-serif;color:var(--rule-ink);background:#fff}.rwork textarea{resize:vertical;min-height:100px}.rwork select{min-height:44px}.rwork .rwork-check{display:flex;flex-direction:row;align-items:flex-start;gap:12px;min-height:44px;margin:24px 0 0;cursor:pointer}.rwork .rwork-check input{appearance:auto;flex:0 0 18px;width:18px;height:18px;min-height:18px;margin:3px 0 0;padding:0;accent-color:var(--rule-green)}.rwork-check span{min-width:0}.rwork-instruction{font-size:20px;line-height:1.5;margin:28px 0!important}.rwork dl{margin:24px 0}.rwork dl>div{display:grid;grid-template-columns:120px 1fr;gap:24px;border-bottom:1px solid var(--rule-line);padding:18px 0}.rwork dt{font-weight:400}.rwork dd{margin:0}.rwork-count{font-size:18px}.rwork details{margin:24px 0}.rwork summary{min-height:44px;cursor:pointer;align-content:center;font-size:14px;font-weight:600}.rwork li{margin:10px 0}.rwork pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.5 monospace;background:#fff;margin:18px 0;padding:0;color:var(--rule-muted)}.rwork-receipt{border-left:2px solid var(--rule-green);padding:2px 0 2px 16px;margin:20px 0}.rwork-receipt p{font-size:14px;margin:8px 0}.rwork-body{animation:rule-step-in 140ms ease-out}.rwork [role=alert]{color:#824320}
@keyframes rule-step-in{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:600px){.rwork{padding:20px 0}.rwork header{align-items:flex-start;gap:8px}.rwork header>div{justify-content:flex-end}.rwork header button{padding:10px 8px}.rwork h3{font-size:20px}.rwork h4{font-size:17px}.rwork dl>div{grid-template-columns:1fr;gap:6px}.rwork dt{font-size:13px;color:var(--rule-muted)}.rwork textarea,.rwork select{font-size:16px}.rwork-instruction{font-size:18px}.rwork-row{gap:8px}.rwork-row button{padding:10px}.rwork-actions{gap:6px}.rwork-check{font-size:14px!important}}
@media(prefers-reduced-motion:reduce){.rwork-body{animation:none}}
.rwork-undo{border-left:2px solid var(--rule-green);padding:2px 0 2px 16px;margin:20px 0 24px}.rwork-undo p,.rwork-undo-entry p{font-size:14px;color:var(--rule-muted);margin:8px 0}.rwork-undo-entry{margin:12px 0 24px}
.rwork h3:focus,.rwork h4:focus{outline:none}
.rwork-sections{flex-wrap:wrap}
.sword[data-transition=true]>h4{animation:rule-step-in 140ms ease-out}@media(prefers-reduced-motion:reduce){.sword[data-transition=true]>h4{animation:none}}
.sword{min-width:0}.sword>h4{font-size:24px;letter-spacing:-.35px}.sword-usage{margin:20px 0;border-block:1px solid var(--rule-line);padding:16px 0}.sword-usage p{font-size:14px;color:var(--rule-muted);margin:12px 0}.sword-steps{display:flex;gap:6px;flex-wrap:wrap;margin:24px 0 12px}.sword-steps button[aria-pressed=true]{background:#e9f0ec;color:var(--rule-green)}.sword input[data-wording-field]{box-sizing:border-box;width:100%;border:1px solid #bdc9c2;border-radius:6px;padding:12px;font:inherit;color:var(--rule-ink);background:#fff}.sword-comparison{padding:22px 0;border-bottom:1px solid var(--rule-line)}.sword h5{font-size:15px;margin:0 0 16px;font-weight:600}.sword-text{white-space:pre-wrap;line-height:1.65}.sword-comparison details{color:var(--rule-muted);font-size:14px}.sword>details>p{font-size:14px}.sword .rwork-check{margin-top:24px}@media(max-width:600px){.sword>h4{font-size:21px}.sword input[data-wording-field]{font-size:16px}.sword .rwork-actions{align-items:stretch}.sword .rwork-actions>.is-primary{width:100%}.rwork-sections{gap:4px 20px}}
.rwork .dwork-review dl{display:grid;grid-template-columns:1fr 1fr;gap:24px;border-block:1px solid var(--rule-line);margin:24px 0}.rwork .dwork-review dl>div{display:flex;flex-direction:column;gap:8px;min-width:0;border:0;padding:16px 0}.rwork .dwork-review dt{font-size:13px;color:var(--rule-muted)}.rwork .dwork-review dd{font-size:26px;line-height:1.2;font-weight:500;font-variant-numeric:tabular-nums}
@media(max-width:600px){.rwork header{flex-wrap:wrap}.rwork header h3{flex:1 0 100%}.rwork header>div{justify-content:flex-start;gap:12px}.rwork header button{padding-left:0;padding-right:12px}}
.chat-message:has(.rwork) .message-bubble{background:transparent;border:0;box-shadow:none;padding:0;max-width:100%;width:100%}.chat-message:has(.rwork){max-width:100%;width:100%;min-width:0}.chat-message:has(.rwork)>.brand-mark{display:none}
.rwork-sections{display:flex;gap:20px;border-bottom:1px solid var(--rule-line);margin-bottom:24px}.rwork-sections button{border-radius:0;padding:10px 0;border-bottom:2px solid transparent;color:var(--rule-muted)}.rwork-sections button[aria-pressed=true]{color:var(--rule-green);border-bottom-color:var(--rule-green)}.dwork{min-width:0}.dwork-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.dwork h4{margin:0 0 12px}.dwork-intro>div{max-width:560px;min-width:0}.dwork-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:22px 0;border-bottom:1px solid var(--rule-line)}.dwork-row p{margin:5px 0 0}.dwork-meta,.dwork-eyebrow{color:var(--rule-green);font-size:13px}.dwork-eyebrow{letter-spacing:.03em;font-weight:600}.dwork-review h4{font-size:24px;letter-spacing:-.35px}.dwork pre{max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.65 monospace;padding:16px;background:#f6f8f6;border-radius:4px}.dwork-history{padding:18px 0;border-bottom:1px solid var(--rule-line)}.dwork-history p{font-size:13px;color:var(--rule-muted)}.dwork-review{animation:drafting-review-in 140ms ease-out}.dwork h4:focus{outline:none}.dwork h4{scroll-margin-top:24px}@keyframes drafting-review-in{from{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.dwork-review{animation:none}}@media(max-width:600px){.dwork-intro{display:block}.dwork-intro>button{padding-left:0}.dwork-row{grid-template-columns:minmax(0,1fr);gap:8px}.dwork-row>button{justify-self:start;padding-left:0}.rwork-sections{gap:24px}.rwork-sections button{font-size:14px}.dwork-review h4{font-size:22px}}
.qb-chat-screen:has(.rwork-body) .chat-input:not(:focus-within){align-items:center;padding:8px;margin-top:0}.qb-chat-screen:has(.rwork-body) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.rwork-body) .chat-input:not(:focus-within) button{grid-row:1;min-width:44px;min-height:44px}.qb-chat-screen:has(.rwork-body) .chat-error:empty,.qb-chat-screen:has(.rwork-body) .chat-attach-error:empty{display:none}.qb-chat-screen:has(.rwork-body) .chat-privacy{margin-top:2px}

/* --- suggestion-workflow.css --- */
.swork{min-width:0;animation:suggestion-enter 140ms ease-out}
.swork h4{margin:0 0 16px;font-size:24px;line-height:1.25;font-weight:550;letter-spacing:-.4px}
.swork h4:focus{outline:none}
.swork .swork-eyebrow{color:var(--rule-muted);font-size:11px;letter-spacing:.08em;margin:0 0 10px}
.swork-instruction{max-width:620px;line-height:1.65}
.swork .swork-evidence{display:flex;align-items:baseline;gap:12px;margin-top:28px}
.swork-evidence strong{font-size:32px;font-weight:500;letter-spacing:-.8px;font-variant-numeric:tabular-nums}
.swork-evidence span{color:var(--rule-muted);font-size:14px}
.swork .swork-caution{border-left:2px solid #a18c65;padding:2px 0 2px 14px;font-size:14px;color:#635c4e;line-height:1.6}
.swork-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;padding:22px 0;border-bottom:1px solid var(--rule-line)}
.swork-row:first-of-type{border-top:1px solid var(--rule-line)}
.swork-row strong{font-weight:550;font-size:16px}.swork-row p{font-size:13px;color:var(--rule-muted);margin:6px 0 0}
.swork-intro{max-width:620px}.swork-refresh{margin:20px 0}.swork-refresh button{padding-left:0;font-weight:400}
.swork-review{border-top:1px solid var(--rule-line);padding-top:24px;margin-top:28px}
.swork-review h4{font-size:20px}.swork-step{border-top:1px solid var(--rule-line);padding-top:18px;margin-top:18px}.swork-step strong{font-size:13px;color:var(--rule-muted)}.swork-step p{white-space:pre-wrap}
.rwork-sections{flex-wrap:wrap}
@keyframes suggestion-enter{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.swork{animation:none}}
@media(max-width:600px){.swork h4{font-size:22px}.swork-row{grid-template-columns:1fr;gap:8px}.swork-row>button{justify-self:start;padding-left:0}.swork-evidence{flex-wrap:wrap;gap:4px 12px!important}.rwork-sections{gap:12px 20px}.rwork-sections button{font-size:13px}.swork .rwork-actions{gap:8px}}

/* --- intake-workflow.css --- */
/* Conversation Intake: white field, forest controls, open comparison/list. */
.chat-message:has(.qintake){width:100%;max-width:100%;min-width:0}.chat-message:has(.qintake)>.brand-mark{display:none}.chat-message:has(.qintake) .message-bubble{width:100%;max-width:100%;padding:0;border:0;background:transparent;box-shadow:none}
.qb-chat-screen:has(.qintake-body) .chat-input:not(:focus-within){align-items:center}.qb-chat-screen:has(.qintake-body) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.qintake-body) .chat-input:not(:focus-within) button{grid-row:1}.qb-chat-screen:has(.qintake-body) .chat-error:empty,.qb-chat-screen:has(.qintake-body) .chat-attach-error:empty{display:none}
.qintake{--qi-ink:#20312b;--qi-muted:#687671;--qi-line:#dce3df;--qi-green:#225b4a;background:#fff;color:var(--qi-ink);border:1px solid var(--qi-line);border-radius:8px;font-size:15px;line-height:1.5;overflow-wrap:anywhere;min-width:0}
.qintake>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;border-bottom:1px solid var(--qi-line)}
.qintake h3{font-size:22px;line-height:1.25;letter-spacing:-.025em;font-weight:600;margin:0}
.qintake h4{font-size:18px;line-height:1.3;font-weight:600;margin:0 0 8px;letter-spacing:-.015em}
.qintake p{margin:8px 0 16px}.qintake-body{padding:16px 22px 0}
.qintake button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:9px 14px;background:white;border:1px solid var(--qi-line);border-radius:6px;font-family:inherit;font-size:15px;font-weight:500;line-height:1.35;color:var(--qi-green);cursor:pointer;box-shadow:none;transition:background 130ms ease,border-color 130ms ease}
.qintake button:hover:not(:disabled){background:#f3f7f5;border-color:#a9bcb3}.qintake button:disabled{opacity:.48;cursor:default}
.qintake button:focus-visible,.qintake input:focus-visible,.qintake summary:focus-visible{outline:2px solid var(--qi-green);outline-offset:3px}
.qintake button.qintake-primary{background:var(--qi-green);color:#fff;border-color:var(--qi-green)}.qintake button.qintake-primary:hover:not(:disabled){background:#194637}
.qintake>header button,.qintake [data-intake-action="back"]{border-color:transparent;padding-inline:0}
.qintake svg{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.qintake-identity{margin:14px 0 22px}.qintake-identity h4{font-size:21px}.qintake-identity p,.qintake-muted{color:var(--qi-muted);font-size:13px}
.qintake-context{display:flex;align-items:center;justify-content:space-between;gap:16px}.qintake-context .qintake-progress{flex-shrink:0;gap:12px;margin:0 0 8px}.qintake-context .qintake-identity{min-width:0}.qintake-context .qintake-identity p{margin-bottom:0}
.qintake-progress{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--qi-muted);font-size:13px;margin-bottom:16px}.qintake-progress>div{display:flex;gap:8px}.qintake-progress button{padding:9px;min-width:44px}
.qintake h4.qintake-field{font-size:22px;margin:0 0 18px}
.qintake-comparison{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin-bottom:20px}.qintake-comparison>div{padding:4px 20px 4px 0}.qintake-comparison>div+div{padding:4px 0 4px 20px;border-left:1px solid var(--qi-line)}.qintake-comparison span{color:var(--qi-muted);font-size:13px}.qintake-comparison p{font-size:18px;margin:8px 0;white-space:pre-wrap}
.qintake-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 24px}.qintake-confirm{border-top:1px solid var(--qi-line);padding-top:20px}.qintake-confirm label{display:flex;align-items:flex-start;gap:10px;font-size:14px;font-weight:400;cursor:pointer}.qintake-confirm input[type="checkbox"]{appearance:auto;display:inline-block;width:18px;height:18px;min-width:18px;min-height:18px;flex:0 0 18px;margin:2px 0 0;accent-color:var(--qi-green);padding:0;box-shadow:none}
.qintake-form-end{border-top:1px solid var(--qi-line);padding:18px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.qintake-full{min-width:0;flex:1 1 220px}.qintake-full[open]{flex-basis:100%}.qintake-full summary{min-height:44px;align-content:center;cursor:pointer;color:var(--qi-green);font-weight:500}.qintake-full h4{font-size:16px}.qintake-full p,.qintake-full dd,.qintake-full dt{font-size:14px}.qintake-full section{padding:16px 0;border-bottom:1px solid var(--qi-line)}.qintake-full dl{margin:0}.qintake-full dt{color:var(--qi-muted);margin-top:12px}.qintake-full dd{margin:4px 0 0;white-space:pre-wrap}
.qintake-boundary{border-top:1px solid var(--qi-line);padding:16px 0;color:var(--qi-muted);font-size:12px;line-height:1.55!important;margin:0!important}
.qintake-status{color:var(--qi-muted);font-size:14px}.qintake>.qintake-status{padding:12px 22px}.qintake-warning{border-left:2px solid #996120;padding:10px 14px;background:#fffaf0;font-size:14px;margin-bottom:16px}.qintake-warning p{margin-top:0}
.qintake-tabs{display:flex;gap:24px;border-bottom:1px solid var(--qi-line)}.qintake-tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--qi-muted);padding-inline:8px}.qintake-tabs button[aria-current]{color:var(--qi-green);border-bottom-color:var(--qi-green)}
.qintake-forms>button{border:0;border-bottom:1px solid var(--qi-line);border-radius:0;width:100%;display:flex;justify-content:space-between;text-align:left;color:var(--qi-ink);padding:20px 0}.qintake-forms strong{display:block;font-size:17px;font-weight:500}.qintake-forms span span{display:block;color:var(--qi-muted);font-size:14px;margin-top:5px}.qintake-forms small{display:block;color:var(--qi-muted);font-size:12px;margin-top:5px}
.qintake footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:20px 0;font-size:13px;color:var(--qi-muted)}
.qintake-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.qintake-forms small{border:0;padding:0}.qintake>header button{flex-shrink:0;white-space:nowrap}
.qtoday:has(.qintake){max-width:760px}.qtoday-focused:has(.qintake)>h3,.qtoday-focused:has(.qintake)>.qtoday-muted{display:none}
@media(max-width:520px){.qintake>header{padding:14px 16px;align-items:flex-start}.qintake h3{font-size:20px;max-width:190px}.qintake-body{padding:12px 16px 0}.qintake-comparison{grid-template-columns:minmax(0,1fr)}.qintake-comparison>div{padding:0 0 16px}.qintake-comparison>div+div{padding:16px 0 0;border-left:0;border-top:1px solid var(--qi-line)}.qintake-actions{flex-direction:column}.qintake-actions button{width:100%}.qintake-identity h4{font-size:20px}.qintake footer button{padding:9px}.qintake footer{font-size:12px}}
@media(prefers-reduced-motion:reduce){.qintake button{transition:none}}
@media(max-width:760px){.qintake-context{display:block}.qintake-context .qintake-progress{margin-bottom:16px}}
@media(min-width:761px) and (max-height:800px){.qintake>header{padding-block:12px}.qintake-body{padding-top:12px}.qintake-identity{margin:8px 0 12px}.qintake h4.qintake-field{margin-bottom:12px}.qintake-comparison{margin-bottom:8px}.qintake-actions{margin:8px 0 18px}}

/* --- intake-invitations.css --- */
/* Invitation work stays on the conversation's white field, not a nested app. */
.qinvite .qinvite-context{font-size:14px;line-height:1.6;color:var(--qi-muted)}
.qinvite-views{display:flex;gap:20px;border-bottom:1px solid var(--qi-line);margin:18px 0}
.qinvite-views button{padding:10px 0;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--qi-muted);font-size:14px}
.qinvite-views button[aria-pressed=true]{border-bottom-color:var(--qi-green);color:var(--qi-green);font-weight:600}
@media(max-width:520px){.qinvite-views{gap:14px}.qinvite-views button{font-size:13px;flex:1;text-align:center;min-width:0}}
.qinvite{border:0;border-radius:0;width:100%;max-width:760px;margin-inline:auto;box-sizing:border-box}
.qinvite>header{padding-inline:0;border:0}.qinvite .qintake-body{padding-inline:0}
.qinvite .qinvite-identity{margin:16px 0}.qinvite .qinvite-identity p{margin:4px 0;color:var(--qi-muted);font-size:13px}
.qinvite-review{margin:16px 0 0}.qinvite-review>div{display:grid;grid-template-columns:160px minmax(0,1fr);gap:20px;border-top:1px solid var(--qi-line);padding:16px 0}
.qinvite-review dt{font-weight:500}.qinvite-review dd{margin:0}.qinvite-review dd p{margin:0 0 8px;white-space:pre-wrap}
.qinvite summary{color:var(--qi-green);cursor:pointer;min-height:36px;align-content:center;font-size:14px}
.qinvite .qinvite-link{font-size:12px;overflow-wrap:anywhere;max-height:140px;overflow:auto;margin-top:8px}
.qinvite-form-summary{border-top:1px solid var(--qi-line);padding:14px 0}.qinvite-form-summary>p{font-size:13px;color:var(--qi-muted);margin:4px 0}
.qinvite-form section{padding:12px 0}.qinvite-form h4{font-size:16px}.qinvite-form ul{font-size:14px;padding-left:20px}.qinvite-form li{margin-block:8px}.qinvite-form li p{font-size:13px;color:var(--qi-muted);margin:4px 0}
.qinvite-review label{font:inherit;color:inherit}.qinvite-review dt{align-content:center}
.qinvite select,.qinvite .qinvite-search input{min-height:44px;border:1px solid var(--qi-line);border-radius:6px;background:#fff;color:var(--qi-ink);font:inherit;padding:8px 12px;box-shadow:none;width:auto}
.qinvite .qinvite-search{margin:16px 0}.qinvite .qinvite-search label{font-size:14px;font-weight:400;display:block;margin-bottom:8px}.qinvite-search>div{display:flex;gap:10px}.qinvite .qinvite-search input{flex:1;min-width:0}
.qinvite .qintake-confirm{padding-top:16px}.qinvite .qintake-confirm label{font-size:14px}.qinvite .qintake-actions{margin-bottom:16px}
.qinvite [data-invite-action="patients"],.qinvite [data-invite-action="recent"]{border-color:transparent;padding-inline:0}
.qinvite .qinvite-outcome{font-weight:500;color:var(--qi-green)}
@media(max-width:520px){.qinvite-review>div{grid-template-columns:minmax(0,1fr);gap:8px;padding-block:12px}.qinvite h3{font-size:20px}.qinvite .qintake-forms>button{padding-block:16px}.qinvite .qintake-actions{flex-direction:column}}

/* --- intake-form-workflow.css --- */
.chat-message:has(.qform){width:100%;max-width:100%;min-width:0}.chat-message:has(.qform)>.brand-mark{display:none}.chat-message:has(.qform) .message-bubble{width:100%;max-width:100%;padding:0;border:0;background:transparent;box-shadow:none}
.qb-chat-screen:has(.qform) .chat-input:not(:focus-within){align-items:center}.qb-chat-screen:has(.qform) .chat-input:not(:focus-within) textarea{grid-column:3;grid-row:1;min-height:44px;height:44px!important;max-height:44px;padding-block:8px}.qb-chat-screen:has(.qform) .chat-input:not(:focus-within) button{grid-row:1}.qb-chat-screen:has(.qform) .chat-error:empty,.qb-chat-screen:has(.qform) .chat-attach-error:empty{display:none}
.qform{width:100%;flex:1;min-width:0;container-type:inline-size;background:#fff;color:#22332d;font-size:14px;line-height:1.5;overflow-wrap:anywhere}.qform *{box-sizing:border-box}
.qform header{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:16px}
.qform h3{font-size:23px;line-height:1.25;font-weight:600;letter-spacing:-.025em;margin:0}
.qform h4{font-size:20px;line-height:1.3;font-weight:600;margin:0 0 20px}
.qform h5{font-size:16px;margin:20px 0 12px}.qform>p{color:#6b7973;margin:0 0 24px}
.qform button,.qform input,.qform select{font:inherit;line-height:1.4}
.qform button{min-height:42px;background:#fff;color:#235d4d;border:1px solid #dce3df;border-radius:6px;padding:9px 14px;cursor:pointer}
.qform button:disabled{opacity:.5;cursor:default}.qform button.qform-primary{background:#235d4d;color:#fff;border-color:#235d4d}
.qform header button,.qform footer>button{border:0;padding:0;text-decoration:underline;text-underline-offset:4px}
.qform :focus-visible{outline:2px solid #235d4d;outline-offset:3px}
.qform label{display:flex;flex-direction:column;gap:6px;font-size:14px}
.qform input:not([type=checkbox]),.qform select{min-width:0;width:100%;box-sizing:border-box;background:#fff;border:1px solid #c9d1cc;color:#22332d;border-radius:6px;padding:10px 12px;min-height:42px}
.qform-title{max-width:560px;margin-bottom:24px}
.qform-editor{display:grid;grid-template-columns:175px minmax(0,1fr);gap:28px}
.qform nav{border-right:1px solid #dce3df;padding-right:0;display:flex;flex-direction:column;align-items:stretch;gap:2px}
.qform nav button{text-align:left;border:0;border-left:3px solid transparent;border-radius:0;color:#22332d;padding:12px 12px;font-size:14px}
.qform nav button[aria-current=true]{border-left-color:#235d4d;background:#f4f7f5;font-weight:600}
.qform .qform-mobile-sections{display:none}.qform-questions{min-width:0}
.qform-section-edit{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:end;padding-bottom:24px}
.qform .qform-check{display:flex;flex-direction:row;align-items:center;gap:8px;min-height:42px}
.qform input[type=checkbox]{appearance:auto;accent-color:#235d4d;width:18px;height:18px;min-width:18px;min-height:18px;padding:0;margin:0;flex:0 0 18px;box-shadow:none}
.qform-question{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:start;border-top:1px solid #dce3df;padding:22px 0}
.qform-question>.qform-check{padding-top:24px}.qform details{margin-top:10px}.qform summary{cursor:pointer;color:#526d60}
.qform footer{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid #dce3df;padding-top:22px;margin-top:22px}
.qform footer>div{display:flex;gap:12px}.qform [role=alert]{padding:12px;border-left:3px solid #a46c31;background:#fff8ed;margin-bottom:16px}
.qform-preview{margin:24px 0}.qform-preview section{border-top:1px solid #dce3df;margin-top:24px}.qform-preview-question{margin:16px 0}
.qform-answer{padding:12px;border:1px solid #dce3df;border-radius:6px;color:#6b7973;margin-top:6px}
.qform-diff{list-style:none;padding:0}.qform-diff li{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px 0;border-top:1px solid #dce3df;overflow-wrap:anywhere}
.qform-diff li>strong{grid-column:1/-1}.qform-diff span{color:#6b7973}.qform-diff p{white-space:pre-wrap;margin:4px 0}
.qform-recovery{display:flex;gap:12px;margin-bottom:20px}
@container (max-width:850px){.qform-question{grid-template-columns:1fr 1fr}.qform-question>div{grid-column:1/-1}.qform-question>.qform-check{padding-top:0}.qform-section-edit{grid-template-columns:1fr;gap:8px}}
@media(max-width:900px){.qform-question{grid-template-columns:1fr 1fr}.qform-question>div{grid-column:1/-1}.qform-question>.qform-check{padding-top:0}.qform-section-edit{grid-template-columns:1fr;gap:8px}}
@media(max-width:600px){.qform-editor{grid-template-columns:1fr;gap:24px}.qform nav{display:none}.qform .qform-mobile-sections{display:flex}.qform h3{font-size:21px}.qform footer{align-items:stretch;flex-direction:column}.qform footer>div{display:grid;grid-template-columns:1fr 1fr}.qform-diff li{grid-template-columns:1fr}.qform-recovery{flex-direction:column}}

/* --- call-transcript.css --- */
.call-transcript-evidence{margin:16px 0 10px;padding:0;border:0;background:transparent;color:var(--muted,#63746e);font-size:13px;line-height:1.55;min-width:0}
.call-transcript-evidence>summary{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:36px;padding:6px 0;cursor:pointer;font-size:13px;font-weight:500;color:var(--muted,#63746e);list-style:none}
.call-transcript-evidence>summary::-webkit-details-marker{display:none}
.call-transcript-evidence>summary>span{font-size:12px;color:var(--green,#235f4e);text-decoration:underline;text-underline-offset:3px;flex-shrink:0}
.call-transcript-evidence>summary:focus-visible{outline:2px solid var(--green,#235f4e);outline-offset:3px;border-radius:2px}
.call-transcript-evidence>p{margin:2px 0 12px;max-width:65ch;color:var(--muted,#63746e);font-size:13px;line-height:1.55}
p.call-transcript-omitted{margin:0 0 12px;color:var(--amber,#875322);font-size:13px;line-height:1.5}
@media(max-width:420px){.call-transcript-evidence>summary{flex-wrap:wrap;gap:0 12px}}

/* --- nightfall.css --- */
/* Nightfall: Arc at dusk.
   The page is a deep teal sky; everything Arc answers with is lit paper, pale
   cards with dark ink. This is the last stylesheet in the cascade (qb/assets.py,
   arc-shell.css), so it restyles without editing the feature files, several of
   which tests pin by exact text.
   Two sets of tokens. The existing ones (--ink, --muted, --line, --card, --paper)
   keep their meaning "on a card" because features use them inside panels. The
   --nf-* ones are for text and chrome that sit on the sky itself. */
:root {
  --ink: #17231E;
  --muted: #4F5F58;
  --line: #DCE6E1;
  --card: #FAFDFB;
  --surface: #FAFDFB;
  --paper: #F0F6F3;
  --green-soft: #E6F1EC;
  --shadow: 0 1px 0 rgba(255,255,255,.9) inset, 0 28px 60px -32px rgba(2,24,20,.72), 0 0 0 1px rgba(10,60,50,.05);
  --arc-radius: 16px;

  --nf-sky: #041512;
  --nf-t1: #F2FAF7;
  --nf-t2: #D6ECE5;
  --nf-t3: #A9D0C5;
  --nf-rule: rgba(210,240,230,.14);
  --nf-rule2: rgba(210,240,230,.26);
  --nf-glass: rgba(5,30,26,.62);
  --nf-chip: rgba(4,30,26,.42);
  /* The accent. Arc's brand teal and mint; switch these two to move the
     whole accent (sky marks, live dots, the particle mark) in one place. */
  --nf-accent: #19C7B2;
  --nf-accent-soft: #A8F0D5;
  --nf-gold: #86590F;
  --nf-gold-sky: #F2D08A;

  --nf-ui: "Hanken Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --nf-mono: "DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --nf-voice: "Fraunces", Georgia, serif;
  font-family: var(--nf-ui);
}

/* ---------------------------------------------------------------- the sky */
html { background: var(--nf-sky); }
body {
  background-color: var(--nf-sky);
  background-image:
    radial-gradient(760px 240px at 50% 100%, rgba(255,196,140,.13), transparent 72%),
    radial-gradient(1300px 480px at 50% 112%, rgba(230,160,120,.09), transparent 66%),
    radial-gradient(900px 600px at 50% -8%, rgba(20,120,108,.26), transparent 66%),
    linear-gradient(180deg, #041512 0%, #0A2A26 40%, #0F3D37 74%, #174B42 100%);
  background-attachment: fixed;
}
:where(input, textarea)::placeholder { color: #6B7A73; }
:where(button, input, select, textarea, summary, a):focus-visible { outline-color: var(--nf-accent); }

/* ------------------------------------------------------- the quiet top line */
.topbar {
  background: linear-gradient(180deg, rgba(4,21,18,.94), rgba(4,21,18,.78));
  border-bottom: 1px solid var(--nf-rule);
  backdrop-filter: blur(14px);
  color: var(--nf-t1);
}
.topbar .brand, .topbar .brand span { color: var(--nf-t1); font-weight: 650; letter-spacing: 0; }
.topbar .brand-logo stop:nth-child(1) { stop-color: var(--nf-accent); }
.topbar .brand-logo stop:nth-child(2) { stop-color: #5FDCC4; }
.topbar .brand-logo stop:nth-child(3) { stop-color: var(--nf-accent-soft); }
.topbar .staff-identity strong { color: var(--nf-t1); font-weight: 600; }
.topbar .staff-identity span { color: var(--nf-t3); }
.topbar .sync-state { color: var(--nf-t3); }
.topbar .status-dot { background: var(--nf-accent-soft); box-shadow: 0 0 0 4px rgba(168,240,213,.12), 0 0 10px rgba(168,240,213,.5); }
.topbar :is(.install-app, .feedback-button) {
  background: transparent; border: 1px solid var(--nf-rule2); color: var(--nf-t2);
  font-weight: 600; border-radius: 999px;
}
.topbar :is(.install-app, .feedback-button):hover { background: rgba(255,255,255,.06); color: var(--nf-t1); }
/* styles.css shrinks Log out to 11px type and 6px padding on a phone, which
   left a 55x28 target beside a 44px feedback button. */
@media (max-width: 760px), (pointer: coarse) {
  .topbar .install-app { min-height: 40px; padding-inline: 12px; }
}
.arc-update-notice { background: rgba(25,199,178,.12); border-bottom: 1px solid var(--nf-rule); color: var(--nf-accent-soft); }

/* ------------------------------------------- text that sits on the sky
   Only direct children of the page. The same screen markup also renders
   inside the pale Quarterback panel, where it must stay dark. */
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) h1,
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) h2 { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) .eyebrow { color: var(--nf-accent-soft); }
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) > p,
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) > p:last-child { color: var(--nf-t2); }
/* Most heroes wrap their words in a div, so the subline under the headline
   ("1,361 patients queued...", "Needs action by...") is a grandchild and was
   left in ink on the sky. The eyebrow and the headline share that path and
   keep their own colours. */
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) > div > p:not(.eyebrow, .screen-headline) { color: var(--nf-t2); }
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) > div > p:not(.eyebrow, .screen-headline) :is(strong, b) { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) > .hero .screen-headline,
body.shell-modern main.shell:not(.is-chat) > .screen-headline {
  font-family: var(--nf-voice); font-style: italic; font-weight: 300;
}
/* Light only on the sky. Today and Financials draw their hero as a pale card,
   where a light headline vanished. */
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) .screen-headline,
body.shell-modern main.shell:not(.is-chat) > .screen-headline { color: var(--nf-t1); }
/* Section titles sit between card grids at any depth; inside a pale container
   they go back to ink. */
body.shell-modern main.shell:not(.is-chat) .section-title :is(h2, h3) { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) .section-title > span { color: var(--nf-t3); }
body.shell-modern main.shell:not(.is-chat) :is(.card, .dash-panel, .dash-measure, .workflow, .app-panel, .pace-card, .today-hero, .first-run-shelf, .scribe-compose-main, .scribe-rules, .scribe-template-pane, .scribe-note-editor) .section-title :is(h2, h3) { color: var(--ink); }
body.shell-modern main.shell:not(.is-chat) :is(.card, .dash-panel, .dash-measure, .workflow, .app-panel, .pace-card, .today-hero, .first-run-shelf, .scribe-compose-main, .scribe-rules, .scribe-template-pane, .scribe-note-editor) .section-title > span { color: var(--muted); }
body.shell-modern main.shell:not(.is-chat) > .detail,
body.shell-modern main.shell:not(.is-chat) > p.detail { color: var(--nf-t3); }
/* One level down only inside the containers that are transparent. "Any child
   of the page" also caught the pale cards (the fee guide, Financials, the
   payroll and calls forms), and put mint on white there. */
body.shell-modern main.shell:not(.is-chat) > :is(.section-title, .screen-subnav, .call-value, .reception-workspace) > .detail,
body.shell-modern main.shell:not(.is-chat) > .hero:not(.today-hero):not(.financial-hero) > .detail { color: var(--nf-t3); }

/* Page text that sits straight on the sky. Each of these was written for a
   pale page in ink or muted grey, and every one is named with the child
   combinator from the page so the same markup keeps its ink where a screen
   renders it inside a card. */
body.shell-modern main.shell:not(.is-chat) > .wq-kind > .wq-kind-head h2,
body.shell-modern main.shell:not(.is-chat) > .wq-kind > .wq-kind-head .wq-kind-count > strong,
body.shell-modern main.shell:not(.is-chat) > .hub-panel > .hub-progress > strong { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) > .wq-kind > .wq-kind-head p,
body.shell-modern main.shell:not(.is-chat) > .wq-kind > .wq-kind-judgement,
body.shell-modern main.shell:not(.is-chat) > .pr-period .pr-period-fields label,
body.shell-modern main.shell:not(.is-chat) > .screen-subnav > .billing-toggle { color: var(--nf-t2); }
body.shell-modern main.shell:not(.is-chat) > .wq-kind > .wq-kind-head .wq-kind-count > span,
body.shell-modern main.shell:not(.is-chat) > .wq-kind > :is(.wq-kind-nothing, .wq-kind-learned),
body.shell-modern main.shell:not(.is-chat) > .hub-panel > .hub-progress > span,
body.shell-modern main.shell:not(.is-chat) > .hub-panel > .hub-safety,
body.shell-modern main.shell:not(.is-chat) > :is(.today-boundary, .financial-boundary, .benchmark-footnote),
body.shell-modern main.shell:not(.is-chat) > .dash-board .dash-board-section > p.detail { color: var(--nf-t3); }
/* The labels that were Arc green on paper take the sky's accent. */
body.shell-modern main.shell:not(.is-chat) > .wq-kind > :is(.wq-kind-nothing, .wq-kind-learned) > span,
body.shell-modern main.shell:not(.is-chat) > .call-value > .call-value-basis > summary { color: var(--nf-accent-soft); }
/* Half-white on the sky reads as a grey slab with grey type on it; lit
   paper, like every other card. */
body.shell-modern main.shell:not(.is-chat) .perio-shell .perio-empty { background: var(--card); }
body.shell-modern main.shell:not(.is-chat) > .loading-card { color: var(--nf-t3); background: transparent; box-shadow: none; border-color: var(--nf-rule); }
.hero h1 { font-family: var(--nf-ui); font-weight: 600; letter-spacing: -.025em; }
.eyebrow { letter-spacing: .08em; }

/* ---------------------------------------------------------- lit cards */
.card { border-color: rgba(255,255,255,.7); }
.primary-btn { box-shadow: none; }
.primary-btn:hover:not(:disabled) { background: #1B4C3D; }
.secondary-btn { background: #FFFFFF; }

/* --------------------------------------------- the dock and the Ask chip */
.dock-inner { background: var(--nf-glass); border-color: var(--nf-rule2); box-shadow: 0 18px 40px -22px rgba(0,0,0,.8); backdrop-filter: blur(16px); }
.dock-item { color: var(--nf-t2); }
.dock-item:hover { background: rgba(255,255,255,.06); color: var(--nf-t1); }
.dock-item.active, .dock-item[aria-current='page'] { background: rgba(168,240,213,.12); color: var(--nf-t1); }
.chat-dock-toggle { background: var(--nf-glass); border-color: var(--nf-rule2); color: var(--nf-t1); backdrop-filter: blur(16px); box-shadow: 0 18px 40px -22px rgba(0,0,0,.8); }
.chat-dock-panel { background: var(--card); }

/* ----------------------------------------------------------- dialogs */
.drawer, .arc-update-dialog { background: var(--card); color: var(--ink); }
/* Not the launcher's background. The dialog is a transparent frame the size of
   the window (shell.css) and only .launcher-panel is the sheet; filling the
   frame turned the whole screen pale and hid the dimmed app behind it. */
.launcher { color: var(--ink); }
:is(.launcher, .drawer, .arc-update-dialog)::backdrop { background: rgba(2,14,12,.62); backdrop-filter: blur(2px); }

/* ------------------------------------------------------------- sign in */
.login-heading h1 { font-family: var(--nf-voice); font-style: italic; font-weight: 300; letter-spacing: -.01em; }

/* ---------------------------------------------------------- typefaces
   Several feature files set Georgia or Arial per selector; each is matched
   here with the same specificity so this later rule wins. */
.hero h1, .drawer h2, .staff-form h2, .rule-builder h2, .translated-rule-result h2,
.pace-card h2, .benchmark-suppressed h2, .benchmark-dashboard-tile > div > strong,
.pr-export h2, .hub-focus-card h2, .hub-section-heading h2, .hub-manual-form h2,
.perio-empty strong, .perio-statement-heading h2, .feedback-head h2, .feedback-done-mark,
.wq-empty h2, .wq-fold-title { font-family: var(--nf-ui); }
:is(.qcontact, .qproposal, .pchat, .qqueue, .qtest, .rwork, .qtoday, .qsequence),
:is(.qcontact, .qproposal, .pchat, .qqueue, .qtest, .rwork, .qtoday, .qsequence, .qcall-audio, .qcall-player)
  :is(h1, h2, h3, h4, h5, h6, p, span, small, strong, em, b, li, dt, dd, label, summary, button, a, blockquote, select, input, textarea, output, div) {
  font-family: var(--nf-ui) !important;
}
/* Times and figures in one mono. */
.metric, .dash-count-value, .dash-value, .clock-card.is-running #shiftTimer, .scribe-timer, #scribeTimer,
.wq-kind-count, .pace-gap, .scribe-question-number {
  font-family: var(--nf-mono); font-variant-numeric: tabular-nums; letter-spacing: -.01em;
}

/* ------------------------------------------------------------ reception */
body.shell-modern main.shell:not(.is-chat) .reception-heading h1 { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) .reception-heading p { color: var(--nf-t2); }
body.shell-modern main.shell:not(.is-chat) .reception-overview { color: var(--nf-t3); border-bottom-color: var(--nf-rule); }
body.shell-modern main.shell:not(.is-chat) .reception-overview strong { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) .reception-workspace :is(.reception-booking, .reception-draft, .call-card, .empty.card) {
  background: var(--card); border: 1px solid rgba(255,255,255,.7); border-radius: 14px; padding: 18px 20px; margin-bottom: 10px; box-shadow: var(--shadow);
}
body.shell-modern main.shell:not(.is-chat) .reception-workspace .call-card { padding: 0 20px; }
body.shell-modern main.shell:not(.is-chat) :is(.reception-test, .reception-recent) { border-top-color: var(--nf-rule); }
body.shell-modern main.shell:not(.is-chat) :is(.reception-test, .reception-recent) > summary { color: var(--nf-t1); }

/* --------------------------------------------------------------- scribe */
body.shell-modern main.shell:not(.is-chat) .scribe-title-line p,
body.shell-modern main.shell:not(.is-chat) #scribeOpenSummary { color: var(--nf-t2); }
body.shell-modern main.shell:not(.is-chat) .scribe-tabs { border-bottom-color: var(--nf-rule); }
body.shell-modern main.shell:not(.is-chat) .scribe-tab { color: var(--nf-t3); background: transparent; }
body.shell-modern main.shell:not(.is-chat) .scribe-tab.is-active { color: var(--nf-t1); border-bottom-color: var(--nf-accent-soft); }
body.shell-modern main.shell:not(.is-chat) .scribe-tab span { background: rgba(255,255,255,.08); color: var(--nf-t2); }
body.shell-modern main.shell:not(.is-chat) .scribe-tab.is-active span { background: rgba(168,240,213,.16); color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) > .scribe-tab-body > .scribe-write > .scribe-modes .scribe-mode strong,
body.shell-modern main.shell:not(.is-chat) .scribe-modes .scribe-mode strong { color: var(--nf-t1); }
body.shell-modern main.shell:not(.is-chat) .scribe-modes .scribe-mode::before { border-color: var(--nf-t3); box-shadow: inset 0 0 0 3px var(--nf-sky); }
body.shell-modern main.shell:not(.is-chat) .scribe-modes .scribe-mode.is-chosen::before { background: var(--nf-accent-soft); border-color: var(--nf-accent-soft); }
body.shell-modern main.shell:not(.is-chat) .scribe-mode-note { color: var(--nf-t3); }

/* ---------------------------------------------------------- quarterback
 * One presence you talk to. The chat sits straight on the sky: Arc's words in
 * light type, what Arc shows you on lit cards, the composer a pale pill. The
 * particle field (arc-presence.js) draws over the column and never takes a
 * click; with reduced motion, or no canvas, the plain mark stands in. */
/* The engine's warm light, turned Arc's teal in one GPU pass.
   Under the sticky top bar (z-index 5 in styles.css), not over it: at 6 the
   ring was drawn across the header whenever the mark sat near the top. */
canvas.arc-atoms { position: fixed; inset: 0; z-index: 4; pointer-events: none; filter: grayscale(1) sepia(1) saturate(4) hue-rotate(128deg) brightness(1.1); }
.arc-mark-ghost { position: fixed; z-index: 4; pointer-events: none; border-radius: 50%; }
.arc-mark-ghost svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.arc-mark-ghost .arc-home-crisp { opacity: .9; transition: opacity .5s ease; }
.arc-mark-ghost.is-leaving .arc-home-crisp { opacity: 0; }
body:not(.arc-atoms-on) canvas.arc-atoms { display: none; }

/* Light type only where the sky shows through: the conversation and the
   starters under it. Everything else on this screen is lit paper (the
   composer, an app opened from a view's Open link, the task picker,
   attachment chips, the private Scribe reply) and keeps the page's ink.
   Set on the whole screen, the light colour was inherited into the app panel
   and its headings and amounts went white on white. */
.qb-chat-screen :is(.chat-messages, .qb-chat-intro) { color: var(--nf-t1); }
.qb-chat-screen .workflow-host { color: var(--ink); }
.qb-chat-screen .chat-reopen { color: var(--nf-t2); }
.qb-chat-screen .chat-reopen:hover { background: rgba(255,255,255,.08); color: var(--nf-t1); }

/* The home: the mark, then what Arc has to say, then where to start. */
.qb-chat-screen .chat-greeting.arc-home { align-items: center; text-align: center; gap: 0; padding: 0 8px; margin: 0 auto 8px; }
.arc-home-mark { position: relative; width: 196px; height: 196px; border-radius: 50%; margin: 0 0 22px; }
.arc-home-mark svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
/* Traced by the particles, never seen: opacity, not visibility, so it is still sampled. */
.arc-home-trace { opacity: 0; }
.arc-home-crisp { opacity: 0; transition: opacity 1.2s ease; filter: drop-shadow(0 0 10px rgba(25,199,178,.45)); }
.arc-home.is-formed .arc-home-crisp { opacity: .9; }
body:not(.arc-atoms-on) .arc-home-mark { box-shadow: inset 0 0 0 1px var(--nf-rule2), 0 0 60px -10px rgba(25,199,178,.35); }
.qb-chat-screen .arc-home h1 {
  margin: 0; font-family: var(--nf-voice); font-style: italic; font-weight: 300;
  font-size: clamp(34px, 4.6vw, 50px); line-height: 1.08; letter-spacing: -.015em; color: var(--nf-t1);
}
.qb-chat-screen .arc-home .arc-voice {
  margin: 12px 0 0; max-width: 34ch; font-size: 17px; line-height: 1.5; letter-spacing: 0;
  font-weight: 450; color: var(--nf-t2);
}
.qb-chat-screen .arc-home .arc-voice:empty { display: none; }
.arc-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 22px; max-width: 560px; }
.arc-chips:empty { display: none; }
.arc-chip {
  min-height: 40px; padding: 0 16px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--nf-rule2); background: var(--nf-chip); color: var(--nf-t1);
  font: inherit; font-size: 14px; font-weight: 500;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: background .15s ease, border-color .15s ease;
}
.arc-chip:hover { background: rgba(25,199,178,.16); border-color: rgba(25,199,178,.55); }
.arc-chip:focus-visible { outline: 2px solid var(--nf-accent-soft); outline-offset: 2px; }
.arc-home > :not(.arc-home-mark) { opacity: 0; transform: translateY(6px); transition: opacity .6s ease, transform .6s ease; }
.arc-home.is-formed > :not(.arc-home-mark) { opacity: 1; transform: none; }

/* The home in a window 900px tall or less.
   chat-cards.css centres the empty home in the pane. Once the mark, the
   greeting, the chips and the composer are taller than the pane, plain
   centring spills the top half above it, under the top bar where no scroll
   reaches, and the privacy line lands under the dock. Safe centring falls back
   to the top instead, and the pane scrolls if it ever has to. The phone
   already lays the home out from the top (premium.css), so this is for the
   wider layouts. */
@media (min-width: 761px) {
  .qb-chat-screen:not(.has-history) .chat-main { justify-content: safe center; overflow-y: auto; }
}
@media (min-width: 761px) and (max-height: 900px) {
  .arc-home-mark { width: 164px; height: 164px; margin-bottom: 18px; }
  .qb-chat-screen:not(.has-history) .chat-messages { padding-bottom: 16px; }
  .arc-chips { margin-top: 16px; }
}
@media (min-width: 761px) and (max-height: 840px) {
  .arc-home-mark { width: 112px; height: 112px; margin-bottom: 10px; }
  .qb-chat-screen:not(.has-history) .chat-input textarea { min-height: 40px; }
}
/* An empty error line still held 32px between the composer and the privacy
   line. It shows the moment it has something to say; the workflow screens
   already collapse it this way (chat-workflows.css). */
.qb-chat-screen :is(.chat-error, .chat-attach-error):empty { display: none; }

/* Starters: the presence offers the questions, so only the work to start stays. */
.qb-chat-screen.has-arc-home .suggested-questions button:not([data-chat-workflow]) { display: none; }
.qb-chat-screen .suggested-questions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.qb-chat-screen .suggested-questions button {
  min-height: 40px; padding: 0 14px; gap: 8px; border-radius: 999px;
  border: 1px solid var(--nf-rule); background: transparent; color: var(--nf-t2); font-size: 13px;
}
.qb-chat-screen .suggested-questions button:hover { background: rgba(255,255,255,.06); border-color: var(--nf-rule2); color: var(--nf-t1); }
.qb-chat-screen .chat-suggestion-icon { width: 17px; height: 17px; flex-basis: 17px; color: var(--nf-accent-soft); }
.qb-chat-screen .chat-suggestion-arrow { display: none; }
.qb-chat-screen .qwork-menu > summary { color: var(--nf-t3); text-align: center; }
.qb-chat-screen:not(.has-history) .qwork-menu > summary { margin-top: 4px; }

/* The composer: a pale pill with Arc green to send. */
.qb-chat-screen .chat-input {
  border-radius: 22px; border-color: rgba(255,255,255,.7); background: var(--card);
  box-shadow: 0 1px 0 rgba(255,255,255,.9) inset, 0 24px 50px -28px rgba(2,24,20,.85);
}
.qb-chat-screen .chat-input:focus-within { border-color: var(--nf-accent-soft); box-shadow: 0 0 0 3px rgba(25,199,178,.22), 0 24px 50px -28px rgba(2,24,20,.85); }
.qb-chat-screen .chat-input button[aria-label='Send message'] { border-radius: 999px; }
/* Where height is scarce and there is a conversation, the composer is one
   row (attach, the field, send) and the field grows upward as you write,
   to the 112px app.js allows. Two rows at rest, the field over its buttons,
   took about 45px from the answer: enough to push a view's Open link below
   the fold on a phone. Not keyed to focus, because app.js puts focus back in
   the field after every answer. */
@media (max-width: 760px), (min-width: 761px) and (max-height: 840px) {
  .qb-chat-screen.has-history .chat-input { align-items: end; padding: 8px; }
  .qb-chat-screen.has-history .chat-input textarea { grid-column: 3; grid-row: 1; min-height: 44px; padding-block: 10px; }
  .qb-chat-screen.has-history .chat-input button { grid-row: 1; }
}
.qb-chat-screen :is(.chat-privacy, .chat-session-cost) { color: var(--nf-t3); }
.qb-chat-screen :is(.chat-error, .chat-attach-error) { color: #FFB4A8; }

/* The conversation. Arc's words are light on the sky; yours sit in a glass pill. */
.qb-chat-screen .chat-message.assistant .message-bubble { background: transparent; border-color: transparent; color: var(--nf-t1); padding-inline: 2px; }
.qb-chat-screen .chat-message.assistant .message-bubble :is(p, li, h5, strong) { color: inherit; }
/* The bubble's own footnotes only. At any depth this also reached the <small>
   lines inside a lit workspace card and put mint on white there. The cost
   line drops chat-cards.css's .85 opacity, which took it under 4.5:1 low on
   a phone's sky. */
.qb-chat-screen .chat-message.assistant .message-bubble > :is(small, .chat-cost, .chat-context) { color: var(--nf-t3); }
.qb-chat-screen .chat-message.assistant .message-bubble > .chat-cost { opacity: 1; }
.qb-chat-screen .chat-message.user .message-bubble {
  background: rgba(210,240,230,.1); border: 1px solid var(--nf-rule2); color: var(--nf-t1); border-radius: 18px 18px 6px 18px;
}
.qb-chat-screen .chat-message.assistant:has(.arc-views) { max-width: 100%; width: 100%; }
.qb-chat-screen .chat-message.assistant:has(.arc-views) .message-bubble { width: 100%; }
.qb-chat-screen .chat-message.assistant:has(.arc-views) .message-bubble > p:first-child {
  font-family: var(--nf-voice); font-style: italic; font-weight: 300; font-size: 22px; line-height: 1.3; color: var(--nf-t1);
}
.qb-chat-screen .chat-thinking { color: var(--nf-t2); }
.qb-chat-screen .chat-thinking i { background: var(--nf-accent-soft); }
/* The working row and the tool receipts kept under an answer sit on the sky,
   but quarterback.css colours each of their parts in ink or muted grey, which
   beat the row's own colour: Stop was ink on the sky and the status a dim
   grey. The elapsed time and the step count also drop their opacity. Named
   through the row or the receipt, to outrank the older
   `.chat-thinking span:last-child` (quarterback.css), which also greys the
   last span of the summary and of every step. */
.qb-chat-screen :is(.chat-thinking, .chat-execution) :is(.thinking-label, .thinking-elapsed, .thinking-activity, .thinking-step-state, .thinking-count) { color: var(--nf-t3); opacity: 1; }
.qb-chat-screen :is(.chat-thinking, .chat-execution) .thinking-step-label { color: var(--nf-t2); }
.qb-chat-screen .thinking-mark { background: var(--nf-accent-soft); }
.qb-chat-screen .thinking-stop { color: var(--nf-t1); border-color: var(--nf-rule2); }
.qb-chat-screen .thinking-stop:hover { background: rgba(255,255,255,.08); }
.qb-chat-screen .thinking-stop:focus-visible { outline-color: var(--nf-accent-soft); }
.qb-chat-screen .message-bubble > .chat-execution,
.qb-chat-screen .message-bubble > .chat-execution > summary span,
.qb-chat-screen .message-bubble > .chat-execution > .chat-execution-note { color: var(--nf-t3); }
.qb-chat-screen .message-bubble > .chat-execution[open] > summary { color: var(--nf-accent-soft); }
.qb-chat-screen .message-bubble > .chat-execution[data-limited="true"] > summary { color: var(--nf-gold-sky); }
/* Arc's mark in the working row and beside answers, lit like the top bar's. */
.qb-chat-screen .brand-mark.is-arc stop:nth-child(1) { stop-color: var(--nf-accent); }
.qb-chat-screen .brand-mark.is-arc stop:nth-child(2) { stop-color: #5FDCC4; }
.qb-chat-screen .brand-mark.is-arc stop:nth-child(3) { stop-color: var(--nf-accent-soft); }
/* A finished row with nothing to disclose ("Completed 3s") kept 46px under
   every answer, taken from the answer's own window. It stays when it has
   steps to open, or when the turn stopped or failed (chat-typing.js sets
   data-state). */
.qb-chat-screen .chat-thinking[data-state="completed"]:not(:has(.thinking-steps li)) { display: none; }
/* Cards anywhere in the conversation are lit: dark ink on pale, whatever surrounds them. */
.qb-chat-screen .message-bubble :is(.qcard, .workflow, [data-chat-workspace], .action-card) { color: var(--ink); }
/* Much of the work you open in the chat was drawn as a section on the old
   chat's white bubble: a green rule, dark type, no paper of its own. With
   Arc's words now straight on the sky, those sections sat on it too, dark on
   dark (the Scribe note, the dashboard chooser, billing, insurance, payroll
   and the rest). Each becomes a lit card. The workspaces that bring their own
   paper (the queue, today, the reception desks) are left as they are. */
/* White rather than --card: their greys were set against the white bubble
   and several sit just at 4.5:1 there. */
.qb-chat-screen .message-bubble :is(.qboard, .qperformance, .snote, .rknow, .rvoice, .qcalendar, .staffwork, .qcompliance, .qsupply, .qbench, .billwork, .inswork, .paywork)[data-chat-workspace] {
  background: #FFFFFF; color: var(--ink); border-radius: var(--arc-radius); box-shadow: var(--shadow);
  padding-inline: 22px;
}
/* The way to test saved reception settings sits under its card, on the sky. */
.qb-chat-screen .message-bubble .qwork-anchor > .qsetup-return { border-top-color: var(--nf-rule); }
.qb-chat-screen .message-bubble .qwork-anchor > .qsetup-return button { color: var(--nf-t1); border-color: var(--nf-rule2); }
.qb-chat-screen .message-bubble .qwork-anchor > .qsetup-return small { color: var(--nf-t3); }
.qb-chat-screen .message-bubble .qsurface-chip { color: var(--nf-accent-soft); }

/* Views: one lit card each, titled, with the only save this screen makes. */
.arc-views { gap: 12px; }
.arc-view {
  background: var(--card); color: var(--ink); border: 1px solid rgba(255,255,255,.7);
  border-radius: var(--arc-radius); box-shadow: var(--shadow); padding: 16px 18px 18px;
}
.arc-view:is(.is-forming, .is-waiting) { opacity: 0; }
.arc-view.is-waiting { transform: translateY(8px); }
.arc-view { transition: opacity .45s ease, transform .45s ease; }
.arc-views.is-several { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); align-items: start; }
/* The title and Keep share the first line; Arc's line about the view runs the
   card's full width under both. As a flex row the line was held in the
   title's column beside a 143px button and wrapped to six lines on a phone.
   The title wrapper steps out of the layout (it is a plain div with no role),
   so its heading and line place themselves in the header's grid. */
.arc-view-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; column-gap: 12px; margin-bottom: 12px; }
.arc-view-title { display: contents; }
.arc-view-head h3 { grid-column: 1; grid-row: 1; align-self: center; min-width: 0; margin: 0; font-size: 15px; font-weight: 650; letter-spacing: -.01em; color: var(--ink); }
.arc-view-head > .arc-keep { grid-column: 2; grid-row: 1; }
.arc-view-voice { grid-column: 1 / -1; grid-row: 2; margin: 6px 0 0; font-family: var(--nf-voice); font-style: italic; font-size: 15px; line-height: 1.35; color: var(--muted); }
.arc-view-head:only-child { margin-bottom: 0; }
.arc-keep {
  flex: none; min-height: 32px; padding: 0 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--line); background: transparent; color: var(--green);
  font: inherit; font-size: 12px; font-weight: 600; white-space: nowrap;
}
.arc-keep:hover { background: var(--green-soft); }
.arc-keep.is-kept { background: var(--green-soft); border-color: transparent; }
.arc-keep.is-kept::before { content: "\2713\00a0"; }
.arc-keep.is-offered { background: var(--green); border-color: var(--green); color: #fff; }
.arc-keep.is-failed { border-color: #b42318; color: #b42318; }
.arc-keep:disabled { opacity: .6; cursor: progress; }
@media (pointer: coarse) { .arc-keep { min-height: 40px; } }
.arc-view-body { display: grid; gap: 12px; }
.arc-view-foot { display: flex; justify-content: flex-end; margin-top: 12px; }
.arc-view .arc-open {
  min-height: 32px; padding: 0 2px; border: 0; background: none; cursor: pointer;
  color: var(--green); font: inherit; font-size: 13px; font-weight: 600;
}
.arc-view .arc-open::after { content: "\00a0\2192"; }
.arc-view .arc-open:hover { text-decoration: underline; text-underline-offset: 3px; }
@media (pointer: coarse) { .arc-view .arc-open { min-height: 40px; } }
.arc-view .qcard { border: 0; background: transparent; padding: 0; border-radius: 0; }
.arc-view .qcard + .qcard { border-top: 1px solid var(--line); padding-top: 12px; }
.arc-view .qmetric-value { font-family: var(--nf-mono); font-weight: 500; color: var(--nf-gold); }
/* The cards' teal accent (#0d9488, chat-cards.css) is 3.7:1 on a view's paper,
   under 4.5:1 for the "49% open" figures and the channel labels it colours.
   The same teal a step deeper, for the views only. */
.qsurface.arc-views { --qs: #0F766E; }

/* Bars: a column per row, the value above in gold, the label below. */
.arc-bars { display: flex; align-items: flex-end; gap: 12px; padding-top: 4px; }
.arc-bar { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
.arc-bar-value { font-family: var(--nf-mono); font-size: 13px; color: var(--nf-gold); white-space: nowrap; }
.arc-bar-track { width: 100%; max-width: 64px; height: 132px; display: flex; align-items: flex-end; border-radius: 10px; background: var(--paper); overflow: hidden; }
.arc-bar-track i { display: block; width: 100%; border-radius: 10px 10px 4px 4px; background: linear-gradient(180deg, #19C7B2, #0E7C6E); transition: height .5s ease; }
.arc-bar-label { font-size: 12px; font-weight: 600; color: var(--ink); line-height: 1.3; overflow-wrap: anywhere; }
.arc-bar-note { font-size: 11px; color: var(--muted); line-height: 1.3; }

/* The sidebar is a dark drawer on the sky, not a white column. */
.qb-chat-screen .chat-sidebar {
  background: rgba(3,18,15,.72); border-right-color: var(--nf-rule); color: var(--nf-t2);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
}
.qb-chat-screen .chat-sidebar :is(.chat-icon-btn, .chat-sidebar-heading, .chat-history-empty) { color: var(--nf-t3); }
.qb-chat-screen .chat-sidebar .chat-icon-btn:hover { background: rgba(255,255,255,.08); color: var(--nf-t1); }
.qb-chat-screen .chat-sidebar-action { background: rgba(25,199,178,.12); border-color: rgba(25,199,178,.4); color: var(--nf-t1); }
.qb-chat-screen .chat-sidebar-action:hover { background: rgba(25,199,178,.2); color: var(--nf-t1); }
.qb-chat-screen .chat-sidebar-search { background: rgba(255,255,255,.06); border-color: var(--nf-rule2); color: var(--nf-t3); }
.qb-chat-screen .chat-sidebar-search input { color: var(--nf-t1); }
.qb-chat-screen .chat-sidebar-search input::placeholder { color: var(--nf-t3); }
.qb-chat-screen .chat-history-open { color: var(--nf-t2); }
.qb-chat-screen .chat-history-open :is(strong, small) { color: inherit; }
.qb-chat-screen .chat-history-row:hover { background: rgba(255,255,255,.05); }
.qb-chat-screen .chat-history-row.is-active { background: rgba(25,199,178,.14); }
.qb-chat-screen .chat-history-row.is-active .chat-history-open { color: var(--nf-t1); }
.qb-chat-screen .chat-sidebar-foot { border-top: 1px solid var(--nf-rule); }
.qb-chat-screen .chat-whoami strong { color: var(--nf-t1); }
.qb-chat-screen .chat-whoami small { color: var(--nf-t3); }
.qb-chat-screen .chat-avatar { background: rgba(25,199,178,.18); color: var(--nf-accent-soft); }
@media (max-width: 760px) {
  .qb-chat-screen .chat-sidebar { background: #06201C; box-shadow: 0 18px 44px rgba(0,0,0,.5); }
  .qb-chat-screen .chat-sidebar-shade:not([hidden]) { background: rgba(2,12,10,.5); }
  .arc-home-mark { width: 164px; height: 164px; margin-bottom: 18px; }
  .qb-chat-screen .chat-message.assistant:has(.arc-views) .message-bubble > p:first-child { font-size: 20px; }
  /* The open drawer runs to the floor and the fixed dock (z-index 40) sat on
     its foot, over who is signed in and the Settings button, so a tap on the
     gear opened All apps. The shade is only unhidden while the drawer is open
     (chat-history.js), and the dock comes back with it closed. */
  body.shell-modern:has(.qb-chat-screen .chat-sidebar-shade:not([hidden])) .dock { visibility: hidden; }
  /* Clear the dock and no more: its offset (premium.css) plus its 54px and a
     small gap. The flat 96px left a band of dead sky that came out of the
     answer's window. */
  .qb-chat-screen .chat-main { padding-bottom: calc(max(12px, env(safe-area-inset-bottom)) + 62px); }
  /* Scribe ends its page above a solid navigation band (premium.css). That
     band was white, under dock labels that are light for the sky; it takes
     the top bar's dark instead, so it reads as the same chrome. */
  body.shell-modern:has(.scribe-title-line) .dock { background: #06201C; border-top-color: var(--nf-rule); }
}
@media (prefers-reduced-motion: reduce) {
  .arc-home > :not(.arc-home-mark), .arc-home-crisp, .arc-view, .arc-bar-track i { transition: none; }
  .arc-view.is-waiting { transform: none; }
}

/* ------------------------------------------------ exam attachment (exam-attachments.js)
   The monthly report and the owner's exact code list. Scoped to the exam-*
   classes; the cards themselves are the shared report-card and settings-card. */
.exam-report-controls { display: flex; flex-wrap: wrap; align-items: end; gap: 12px 18px; margin-bottom: 1.25rem; }
.exam-month { display: flex; flex-direction: column; gap: 6px; color: var(--muted); font-size: 13px; }
.exam-month input { min-height: 44px; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); font: inherit; padding: 8px 12px; }
.exam-status-toggle { display: flex; flex-wrap: wrap; gap: 8px; }
.exam-status-toggle > button { min-height: 44px; }
.exam-report-controls .link-btn { min-height: 44px; }
.exam-report-card .report-metric span { line-height: 1.35; }
.exam-report-card .report-table td:first-child { line-height: 1.4; padding-right: 1rem; }
.exam-report-notes { margin: 0; padding-left: 1.1rem; display: grid; gap: .6rem; color: var(--ink); font-size: .9rem; line-height: 1.5; }
.exam-report-notes li > .subnav-link { display: flex; width: max-content; margin-top: 8px; }
.exam-report-card > .dash-scroll { margin-top: .9rem; }
.exam-code-state { margin: 0; color: var(--ink); line-height: 1.5; }
.exam-code-state.is-invalid strong { color: #8a5c08; }
.settings-card .exam-code-form { gap: 14px; }
.exam-code-rows { display: grid; gap: 10px; }
.exam-code-row { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 10px 14px; align-items: end; padding: 12px; border-radius: 12px; background: var(--paper); }
.exam-code-row input, .exam-code-row select { min-height: 44px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: var(--ink); font: inherit; padding: 8px 11px; width: 100%; }
.exam-code-row input { font-family: var(--nf-mono); }
.exam-code-row .link-btn { min-height: 44px; }
.exam-code-form > .secondary-btn { align-self: flex-start; }
.settings-card .exam-code-approve { flex-direction: row; align-items: flex-start; gap: 10px; color: var(--ink); font-size: 14px; line-height: 1.45; flex: 0 0 auto; }
.settings-card .exam-code-approve input { width: 20px; height: 20px; flex: 0 0 auto; margin-top: 1px; accent-color: var(--green, #1b6b4b); }
.exam-error { color: #7a2e1f; font-size: 14px; line-height: 1.45; }
.exam-error p, .exam-error ul { margin: 0 0 4px; }
.exam-code-saved { margin: 0; color: var(--green, #1b6b4b); font-weight: 600; }
@media (max-width: 620px) {
  .exam-code-row { grid-template-columns: minmax(0, 1fr); }
  .exam-code-row .link-btn { justify-self: start; min-height: 36px; padding: 0; }
  .exam-report-controls { align-items: stretch; flex-direction: column; }
  .exam-status-toggle > button { flex: 1 1 0; }
}

/* ------------------------------ call-back responsibility (Patient Lists)
   follow-up-ownership.js. The panel reuses .lists-today, a pale card with dark
   ink, so everything here uses the on-card tokens. Scoped to .fu-own-*. */
.fu-own-scopes { display: flex; flex-wrap: wrap; gap: 6px; margin: .75rem 0 .35rem; }
.fu-own-scopes .secondary-btn { min-height: 40px; }
.fu-own-scopes .secondary-btn[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--card); }
.fu-own-rows > li.fu-own-row > div:first-child { flex: 1 1 260px; }
.fu-own-left { margin: .6rem 0 0; color: #7A4B12; font-size: .8rem; }
.fu-own-people { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: .3rem 0 0; font-size: .8rem; }
.fu-own-people > div { display: flex; align-items: baseline; gap: 6px; }
.fu-own-people dt { color: var(--muted); font-size: .66rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.fu-own-people dd { margin: 0; color: var(--ink); overflow-wrap: anywhere; }
.fu-own-people .is-responsible dd { color: #0B6358; font-weight: 700; }
.fu-own-detail { flex-basis: 100%; margin-top: .35rem; padding: .8rem .9rem; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); color: var(--ink); }
.fu-own-revision { margin: 0 0 .5rem; color: var(--muted); font-family: var(--nf-mono); font-size: .74rem; }
.fu-own-blocked { margin: .2rem 0 .6rem; color: #7A4B12; font-size: .84rem; line-height: 1.45; }
.fu-own-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: .2rem 0 .7rem; }
.fu-own-reassign { display: grid; gap: 6px; max-width: 520px; margin: .3rem 0 .8rem; }
.fu-own-reassign label { color: var(--muted); font-size: .78rem; font-weight: 600; }
.fu-own-reassign :is(select, textarea) { padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); color: var(--ink); font: inherit; font-size: .9rem; }
.fu-own-reassign .secondary-btn { justify-self: start; }
.fu-own-note-limit { color: var(--muted); font-size: .74rem; }
.fu-own-history h4 { margin: .4rem 0 .3rem; font-size: .82rem; }
.fu-own-history ol { margin: 0; padding: 0; list-style: none; }
.fu-own-history li { display: flex; flex-direction: column; gap: 2px; padding: .4rem 0; border-top: 1px solid var(--line); color: var(--muted); font-size: .8rem; }
.fu-own-message { margin: .5rem 0; color: #0B6358; font-size: .84rem; }
.fu-own-message.is-alert { color: var(--red, #9C4037); }
@media (max-width: 600px) {
  .fu-own-scopes .secondary-btn { flex: 1 1 0; }
  .fu-own-detail { padding: .7rem; }
}

/* ------------------------------------------ completed sequence review (UI) */
/* sequence-review.js: owner policy card in Settings and the manual-review
   report card in Reports. Both sit on pale cards, so dark ink throughout.
   Scoped to .seq-* only. */
.seq-review-card { grid-column: 1 / -1; }
.seq-banner { margin: 0 0 .75rem; padding: .65rem .8rem; border-radius: 10px; background: var(--green-soft); color: var(--ink); font-size: .85rem; line-height: 1.5; }
.seq-alert { margin: .6rem 0; padding: .6rem .8rem; border-radius: 10px; background: #FBF1DE; border: 1px solid #E9D3A6; color: #5E3E08; font-size: .85rem; line-height: 1.5; }
.seq-none { color: var(--muted); font-style: italic; }
.seq-note { color: var(--muted); font-size: .78rem; }
.seq-status { display: inline-block; padding: .15rem .55rem; border-radius: 999px; font-size: .72rem; font-weight: 650; letter-spacing: .01em; white-space: nowrap; border: 1px solid transparent; color: var(--ink); background: #EEF2F0; }
.seq-tone-review { background: #D9F3EC; border-color: #8FD3C1; color: #0E4A3E; }
.seq-tone-waiting { background: #EAF0F6; border-color: #C4D3E2; color: #26405A; }
.seq-tone-failed { background: #F8E3E0; border-color: #E2B0A8; color: #7A2A20; }
.seq-tone-blocked { background: #FBF1DE; border-color: #E9D3A6; color: #6B4508; }
.seq-tone-unknown { background: #F1F1EE; border-color: #B9BDB6; border-style: dashed; color: #3D443F; }
.seq-tone-settled { background: #E6F1EC; border-color: #BCD8CB; color: #1C5A43; }
.seq-tone-closed { background: #EEF0EF; border-color: #D2D8D5; color: #46504B; }
.seq-filter { display: flex; flex-wrap: wrap; gap: .4rem; margin: .5rem 0 .6rem; }
.seq-filter .subnav-link { color: var(--ink); border: 1px solid var(--line); background: #fff; }
.seq-filter .subnav-link.is-active { background: var(--green-soft); border-color: #9FC9B7; font-weight: 650; }
.seq-coverage { margin: .4rem 0 .75rem; padding: .6rem .8rem .6rem 1.8rem; border-radius: 10px; background: rgba(15,23,42,.03); color: var(--ink); font-size: .82rem; line-height: 1.5; }
.seq-coverage.is-partial { background: #FBF6EA; border: 1px solid #EEDDB5; }
.seq-coverage li + li { margin-top: .2rem; }
.seq-summary { max-width: 24rem; margin: .4rem 0 .8rem; }
.seq-summary td:first-child { text-align: left; }
.seq-review-rows { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.seq-review-row { border: 1px solid var(--line); border-radius: 12px; padding: .75rem .85rem; background: #fff; color: var(--ink); min-width: 0; }
.seq-review-row[data-status="needs_review"] { border-color: #8FD3C1; box-shadow: inset 3px 0 0 #19A58F; }
.seq-review-row-head { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.seq-review-name { font-size: .95rem; overflow-wrap: anywhere; white-space: pre-wrap; }
.seq-review-why, .seq-review-reason { margin: .4rem 0 0; font-size: .82rem; line-height: 1.5; color: var(--muted); }
.seq-review-reason { color: var(--ink); }
.seq-review-facts, .seq-policy-values { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .35rem .9rem; margin: .55rem 0 0; }
.seq-review-facts > div, .seq-policy-values > div { min-width: 0; }
.seq-review-facts dt, .seq-policy-values dt { font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.seq-review-facts dd, .seq-policy-values dd { margin: .05rem 0 0; font-size: .84rem; overflow-wrap: anywhere; }
.seq-review-facts code { font-family: var(--nf-mono); font-size: .76rem; }
.seq-pages { display: flex; gap: .5rem; margin-top: .75rem; }
.seq-policy-state { margin: .2rem 0 .4rem; line-height: 1.5; font-size: .9rem; color: var(--ink); }
.settings-card form.seq-policy-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem; align-items: start; }
.seq-policy-form label, .seq-policy-form fieldset { flex: none; }
.seq-policy-form > label:first-of-type input { max-width: 12rem; }
.seq-policy-form > button { justify-self: start; }
.seq-policy-form .hub-default { flex-direction: row; align-items: center; gap: .55rem; color: var(--ink); }
.seq-explain { margin: .75rem 0; font-size: .84rem; line-height: 1.5; color: var(--ink); }
.seq-explain p { margin: 0 0 .45rem; }
.seq-choice { border: 1px solid var(--line); border-radius: 10px; padding: .5rem .75rem .6rem; margin: .5rem 0; }
.seq-choice legend { font-size: .8rem; font-weight: 650; padding: 0 .3rem; }
.settings-card .seq-choice label { display: flex; flex-direction: row; gap: .55rem; align-items: flex-start; font-weight: 400; margin: .35rem 0; line-height: 1.4; color: var(--ink); }
.settings-card .seq-choice input, .settings-card .seq-policy-form .hub-default input { width: 1.25rem; min-width: 1.25rem; height: 1.25rem; min-height: 0; flex: none; padding: 0; margin: .05rem 0 0; }
.seq-policy-conflict[hidden] { display: none; }
@media (max-width: 640px) {
  .seq-review-card { overflow-x: visible; }
  .seq-summary { min-width: 0; }
  .seq-review-facts, .seq-policy-values { grid-template-columns: 1fr 1fr; }
}

/* Settings: the office phone receptionist (ElevenLabs or GPT-Live-1). The
   generic settings-card label rule stacks and stretches labels; this card's
   engine options read as radio rows and its voice label sits on its picker. */
.settings-card.settings-reception-engine form { gap: 12px; }
.settings-card.settings-reception-engine .reception-experiences { margin: 0; }
.settings-card.settings-reception-engine .reception-experience-option { flex-direction: row; align-items: flex-start; gap: 12px; }
.settings-card.settings-reception-engine label.reception-engine-voice-label { display: block; flex: none; height: auto; min-height: 0; margin: 4px 0 -4px; font-weight: 600; }
.settings-card.settings-reception-engine .reception-voice-picker { margin-top: 0; }
.settings-card.settings-reception-engine .reception-phone-state { margin: 4px 0 0; font-size: 13px; line-height: 1.5; color: var(--muted); }
.settings-card.settings-reception-engine .reception-phone-state strong { display: inline; font-size: 13px; color: var(--ink); }

/* Settings: whether new patients are accepted. Same radio rows as the engine
   card; the notes field and confirmation stack under them. */
.settings-card.settings-new-patients form { gap: 12px; }
.settings-card.settings-new-patients .reception-experiences { margin: 0; }
.settings-card.settings-new-patients .reception-experience-option { flex-direction: row; align-items: flex-start; gap: 12px; }
.settings-card.settings-new-patients small { color: var(--muted); font-size: 12px; line-height: 1.45; }
.settings-card.settings-new-patients [role="status"] { margin: 0; }

/* Sign in with ChatGPT card (chatgpt-plan.js). Same card language as the
   sequence policy above it; the privacy line is set apart so it is read. */
.settings-plan-card { grid-column: 1 / -1; }
.settings-card form.plan-practice { display: grid; grid-template-columns: minmax(0, 1fr); gap: .55rem; align-items: start; margin-top: .9rem; }
.plan-practice .hub-default { flex: none; flex-direction: row; align-items: flex-start; gap: .55rem; color: var(--ink); line-height: 1.4; }
.settings-card .plan-practice .hub-default input { width: 1.25rem; min-width: 1.25rem; height: 1.25rem; min-height: 0; flex: none; padding: 0; margin: .05rem 0 0; accent-color: var(--nf-accent); }
.plan-practice > small { color: var(--muted); line-height: 1.4; }
.plan-practice > button { justify-self: start; }
.plan-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin: .9rem 0 .2rem; }
.plan-privacy { margin: 1rem 0 0; padding: .7rem .85rem; border: 1px solid var(--line); border-left: 3px solid var(--nf-accent); border-radius: 10px; font-size: .86rem; line-height: 1.5; color: var(--ink); }
.plan-privacy strong { display: block; margin-bottom: .2rem; }
.plan-result { margin: 0 0 .8rem; padding: .55rem .75rem; border-radius: 10px; background: rgba(134, 89, 15, .08); color: var(--ink); font-size: .88rem; line-height: 1.45; }
.plan-result.is-ok { background: rgba(25, 199, 178, .12); }
@media (max-width: 640px) { .plan-actions > button { flex: 1 1 100%; } }

/* ------------------------------------------------- scribe: first use
 * What a dentist opening Scribe for the first time could not tell:
 * which patient was chosen, that the patient comes before Build, that the
 * list rows are buttons, and why a note could not be built. */
.scribe-step-number { display: inline-grid; place-items: center; width: 20px; height: 20px; margin-right: 8px; border-radius: 50%; background: var(--green, #1b6b4b); color: #fff; font-size: 11px; font-weight: 700; vertical-align: 1px; }
.scribe-patient-rail { transition: box-shadow var(--arc-t-fast, 140ms) ease, background-color var(--arc-t-fast, 140ms) ease; }
.scribe-patient-rail.is-needed { background: #EEF8F4; box-shadow: inset 0 0 0 2px var(--nf-accent); }
.scribe-patient-rail.is-needed .scribe-patient-pick-head strong { color: #0E5C4F; }
.scribe-chip { cursor: pointer; padding-right: 6px; }
.scribe-chip .scribe-chip-go { display: inline-grid; place-items: center; flex: 0 0 auto; margin-left: auto; color: #8AA79C; transition: transform var(--arc-t-fast, 140ms) ease, color var(--arc-t-fast, 140ms) ease; }
.scribe-chip > span:not(.scribe-patient-identity):not(.scribe-chip-go) { margin-left: auto; }
.scribe-chip:hover .scribe-chip-go, .scribe-chip:focus-visible .scribe-chip-go { color: var(--green, #1b6b4b); transform: translateX(2px); }
.scribe-chip:hover strong { color: #0E5C4F; }
.scribe-chip:focus-visible { outline: 2px solid var(--nf-accent); outline-offset: -2px; }
.scribe-patient-chosen { padding: 14px; border: 1px solid #BFE3D6; border-left: 4px solid var(--nf-accent); border-radius: 10px; background: #EEF8F4; gap: 14px; }
.scribe-patient-chosen-who { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.scribe-patient-chosen .scribe-patient-check { display: inline-grid !important; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; margin-top: 1px; border-radius: 50%; background: var(--green, #1b6b4b); color: #fff; }
.scribe-patient-chosen .scribe-change-patient { justify-self: start; min-height: 36px; padding: 7px 14px; font-size: 13px; }
.scribe-compose-actions { align-items: center; }
.scribe-build-gate { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 8px; background: rgba(134, 89, 15, .1); color: #6B4709; font-size: 13px; font-weight: 600; }
.scribe-build-gate[hidden] { display: none; }
.scribe-build-gate::before { content: "1"; display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: #86590F; color: #fff; font-size: 11px; font-weight: 700; }
#scribeBuild:disabled { opacity: .5; cursor: not-allowed; }
.scribe-build-block[hidden] { display: none; }
.scribe-processing-banner { margin: 0 0 16px; }
.scribe-processing-block.notice-card { display: grid; gap: 8px; padding: 16px 18px; color: var(--ink); font-size: 14px; line-height: 1.55; }
.scribe-processing-block.notice-card.is-warning { border-left: 3px solid #86590F; background: #FFF9EB; border-color: #E8D3A2; }
.scribe-processing-block > strong { font-size: 15px; }
.scribe-processing-block p { margin: 0; }
.scribe-processing-block > button { justify-self: start; }
.scribe-processing-changes { margin: 2px 0 0; padding-left: 18px; display: grid; gap: 3px; font-size: 13px; }
.scribe-processing-changes-none { font-size: 13px; color: var(--muted); }
.scribe-capture-work > .scribe-processing-details { margin-top: 0; }
.scribe-processing-outdated { display: grid; gap: 6px; margin: 0 0 12px; padding: 12px 14px; font-size: 13px; color: var(--ink); }
/* The built note sat straight on the sky: the editor was a white slab with
   its text flush to the edge, and the checks column beside it (chart context,
   source comparison) kept dark ink on the dark page, which made "Chart
   context is out of date" unreadable. One lit sheet holds both columns. */
body.shell-modern main.shell:not(.is-chat) .scribe-draft-host:has(> .scribe-note-editor),
body.shell-modern main.shell:not(.is-chat) .scribe-draft-host:has(> .scribe-live) {
  padding: 28px; border-radius: var(--arc-radius, 16px); background: var(--card); color: var(--ink); box-shadow: var(--shadow);
}
body.shell-modern main.shell:not(.is-chat) .scribe-draft-host .scribe-note-editor,
body.shell-modern main.shell:not(.is-chat) .scribe-draft-host .scribe-questions.scribe-clarify { background: transparent; }
@media (max-width: 720px) {
  body.shell-modern main.shell:not(.is-chat) .scribe-draft-host:has(> .scribe-note-editor),
  body.shell-modern main.shell:not(.is-chat) .scribe-draft-host:has(> .scribe-live) { padding: 18px 16px; }
}
/* Note templates and My preferences: these three blocks carry the card
   radius and shadow but never had a surface, so on the sky their headings
   ("Your note templates", "My preferences") and help text were dark ink on a
   dark page, and "Create your own template with AI" was light ink on a white
   card. Each is lit paper now, with ink throughout. */
body.shell-modern main.shell:not(.is-chat) :is(.scribe-template-pane, .scribe-template-make, .scribe-rules) {
  padding: 22px; background: var(--card); color: var(--ink);
}
body.shell-modern main.shell:not(.is-chat) .scribe-template-pane .scribe-template-detail { box-shadow: none; border: 1px solid var(--line); }
@media (max-width: 720px) {
  body.shell-modern main.shell:not(.is-chat) :is(.scribe-template-pane, .scribe-template-make, .scribe-rules) { padding: 16px; }
}
/* The checklist under a built or reopened note ("Configured documentation
   checks", "13 checks apply to this visit") inherited the sky's light heading
   colour on a white sheet. */
body.shell-modern main.shell:not(.is-chat) :is(.scribe-draft-host, .scribe-row, .scribe-open-review, .scribe-template-make, .scribe-checklist) .section-title :is(h2, h3) { color: var(--ink); }
body.shell-modern main.shell:not(.is-chat) :is(.scribe-draft-host, .scribe-row, .scribe-open-review, .scribe-template-make, .scribe-checklist) .section-title > span { color: var(--muted); }
