/* ==========================================================================
   Workspace Home — Figma 887:8194 (Resting) · 780:15491 (Search ignited) ·
   887:8700 (Conversation started)

   ONE surface, three states. The Workspace is now the public entry to Orcheum
   as well as the product, so this sheet is the ground truth for what a visitor
   meets at the root URL and for what a signed-in reader works inside.

   Pixel-fidelity overrides on the existing workspace shell. Figma wins.

   The artboard is 1440 × 1080: sidebar 265.9, main column 1174. Measures below
   are the artboard's own; the column is centred and the composition holds its
   proportions as the viewport shrinks.
   ========================================================================== */

:root {
  --ws-figma-orange: #f05822;
  --ws-figma-ink: #24252d;
  --ws-figma-cream: #fbf7ef;
  /* THE PAGE'S GROUND — the one surface both the sidebar and the main content
     card are laid ON. Neither covers it completely and that is the point: it
     shows through the sidebar's rounded right corners and in the 16px gutter
     around the Home card, which is where the composition gets its edge.

     Was #faf9f6, a warm stone barely separable from the surfaces above it, so
     the card and the column read as one continuous field. #E9E9E9 is the ground
     the locked design puts them on — and it is the product's UNIVERSAL ground,
     so it is read from the one token rather than restated here. */
  --ws-figma-page: var(--color-background);
  /* THE PLATFORM FILL — the ground under Home, a started conversation,
     Projects, Artifacts and Studios. It is a GROUND, not a panel, so it is the
     universal one: on Home it sits under the scroll area and never shows, but
     on Projects and Artifacts the scroll area is hidden and this IS the
     surface the reader looks at. Holding it at #FAF9F6 is what made those two
     views read warm while the canvas beneath them was already #E9E9E9.

     The panels that sit ON it keep their own fills — the Home panel's #FDFBFA
     (81:1009, `--oc-home-panel`), the sidebar's #FDFBFA, every card's white. */
  --ws-figma-field: var(--color-background);
  /* The docked composer's fade needs a real colour to fade to, not a token
     that could resolve to a gradient. Same value, stated flat. */
  --ws-figma-field-solid: #e9e9e9;
  --ws-figma-border: #d9d1cb;
  --ws-figma-muted: #7c746f;

  --ws-figma-col-w: 1174px;
  /* 892:9460 — the hero group. The welcome centres on it and the composer is
     centred INSIDE it, which is why the two are different numbers. */
  --ws-figma-hero-w: 800px;
  /* 928:15925 — the welcome card. */
  --ws-figma-home-composer-w: 641px;
  /* 887:8936 — the docked card, in a started conversation. Untouched. */
  --ws-figma-composer-w: 641px;

  /* Display face. Safiro ships SemiBold/Bold only (landing.css @font-face);
     the frame asks for Medium/Regular, so SemiBold is the nearest available
     weight rather than a synthesised one. */
  --ws-figma-display: "Safiro", Geist, Inter, system-ui, sans-serif;
}

/* ---- The two grounds — 887:8194 ----------------------------------------
   `.ws` is the canvas and `.ws-main` is the workspace. Both are the frame's
   #FAF9F6, so switching views does not flash a second page colour. */
.ws {
  background: var(--ws-figma-page);
  --color-brand-wordmark: var(--ws-figma-orange);
}

.ws-main {
  background: var(--ws-figma-field);
}

/* Share belongs to a conversation that exists, so it appears only there — now
   as the right-hand control of the answer's own header (905:13860) rather than
   as a control floating over the column. Visibility is that header's own
   (response-header.css). */

/* ==========================================================================
   SIDEBAR — moved out.

   The column was described here AND in components/navigation/workspace-sidebar.css,
   both of them writing `!important` at the same rows, which is how the drawn
   measures drifted. It is now one component with one sheet:

     components/navigation/universal-sidebar.js   (markup + active state)
     components/navigation/universal-sidebar.css  (Figma 81:913, the locked column)

   Nothing about the sidebar belongs in this file any more. This sheet is the
   Home frame's; the column is every frame's.
   ========================================================================== */

/* ==========================================================================
   MAIN COLUMN — header, Home composition, footer
   ========================================================================== */

/* Informational nav — Philosophy · Argus · Pricing · FAQ.
   NOT DRAWN. 887:8194 gives the workspace no bar at all: it opens on the field
   and the first thing in it is the welcome. The frame's whitespace is the
   subject of this pass, and a bar across the top is the one thing that cannot
   coexist with it.

   Hidden, not deleted. The markup, the routes and the plan chip's two hosts are
   all untouched — Philosophy and Argus remain reachable from their own pages,
   and the plan is still stated in full in the account card and in a started
   conversation's answer header, which is the chip's other host. One line
   restores the bar. (Studios has left this list: it is no longer a place a
   reader is sent.) */
.ws-topnav {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px 18px;
}
.ws-main.is-conversation .ws-topnav,
.ws-main.is-projects .ws-topnav,
.ws-main.is-artifacts .ws-topnav,
.ws-main.is-settings .ws-topnav,
.ws-main.is-studios .ws-topnav,
.ws-main.is-project-content .ws-topnav { display: none; }

/* The reader's plan, in the top bar (see ownPlanChipPlacement). Pinned to the
   left rather than added to the row: this bar centres its nav on the frame's
   centre line, and a flex sibling would centre the PAIR and take the nav off
   it. The chip keeps the answer header's own styling — it is the same chip. */
.ws-topnav > .ws-ah-plan {
  position: absolute;
  top: 50%;
  left: var(--ws-ah-pad-x, 18px);
  transform: translateY(-50%);
}

.ws-topnav__nav {
  display: flex;
  align-items: center;
  gap: 32px;
}
.ws-topnav__link {
  font-family: Geist, Inter, var(--font-sans);
  font-weight: 500;
  font-size: 16px;
  line-height: 20px;
  color: var(--ws-figma-ink);
  text-decoration: none;
  transition: color 120ms ease;
}
.ws-topnav__link:hover { color: var(--ws-figma-orange); }
.ws-topnav__link:focus-visible {
  outline: 2px solid rgba(240, 88, 34, 0.55);
  outline-offset: 4px;
  border-radius: 2px;
}
/* Destinations that are drawn but not published. Marked, never mimicked. */
.ws-topnav__link[aria-disabled="true"] {
  color: rgba(36, 37, 45, 0.45);
  cursor: default;
}
.ws-topnav__link[aria-disabled="true"]:hover { color: rgba(36, 37, 45, 0.45); }

/* ---- The column — 892:9444 ---------------------------------------------
   The workspace's own frame, and the ONE place the vertical rhythm is stated:
   a content region that takes every spare pixel, 53px, then the identity line,
   then 24px to the bottom edge. The footer is placed by that flow and by
   nothing else — no absolute coordinate, no viewport-height guess — so it sits
   24 off the foot at any height and is simply pushed down the scroll when the
   viewport is too short to hold the composition. */
.ws-main__scroll {
  justify-content: flex-start;
  gap: 53px;
  padding: 0 24px 24px;
}

/* 892:9457 — the content region. Grows to fill, so it is what holds the footer
   down; its own contents start at the frame's 258. */
.ws-empty {
  display: flex;
  flex: 1 0 auto;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 0;
  width: var(--ws-figma-col-w);
  max-width: 100%;
  height: auto;
  max-height: none;
  min-height: min-content;
  /* 258 of the frame's 1080 — the composition sits in the upper third, not on
     the optical centre, and the whole lower half of the workspace is left
     empty on purpose. Written against the viewport rather than as a constant so
     a short window keeps the composition on screen instead of pushing the
     composer under the fold; 23.9vh IS 258 at the reference height. */
  padding-top: clamp(88px, 23.9vh, 258px);
}

/* Argus badge — Argus 2.9 / Orchestration engine.
   NOT DRAWN. 887:8194 removed it, and the composer now says the same thing:
   `Argus 2.9` is the model label in its own toolbar, six inches lower and
   attached to the thing it describes. Two statements of one fact is one that
   can drift. Hidden rather than deleted, like the bar above. */
.ws-empty__heading {
  display: none;
  flex-direction: column;
  align-items: center;
  gap: 0;
  width: auto;
  margin: 0;
  animation: ws-empty-in 700ms cubic-bezier(0.215, 0.61, 0.355, 1) 90ms both;
}
.ws-empty__mark { display: none; }
.ws-empty__title {
  margin: 0;
  width: auto;
  font-family: var(--ws-figma-display);
  font-weight: 600;
  font-size: 20px;
  line-height: 18px;
  letter-spacing: 0;
  text-align: center;
  text-transform: capitalize;
  color: var(--ws-figma-orange);
}
.ws-empty__title-line { display: block; }
.ws-empty__title-line--argus {
  font-weight: 600;
  font-size: 20px;
  line-height: 26px;
  color: var(--ws-figma-orange);
}
.ws-empty__title-line--engine {
  font-weight: 600;
  font-size: 12px;
  line-height: 18px;
  color: rgba(240, 88, 34, 0.8);
}
.ws-empty__sun { display: none !important; }

/* 892:9460 — the hero group: welcome, then the composer it invites you into,
   16px apart, centred on an 800 column.

   ONE group, and the 16 is the whole reason it is one. The greeting used to be
   held up by a margin on this block and the composer pushed down by a margin of
   its own, which meant the two were only ever as related as those two numbers
   happened to be; the gap is now a single declaration between two children of
   one flex column, and the block's distance from the top of the workspace is
   the region's padding above. Nothing here is measured from the viewport, so
   the relationship survives every width and height the group is put through. */
.ws-empty__center {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  width: 100%;
  max-width: var(--ws-figma-hero-w);
  margin: 0;
  animation: ws-empty-in 700ms cubic-bezier(0.215, 0.61, 0.355, 1) 140ms both;
}

/* ---- Welcome 892:9461 / 892:9462 ---------------------------------------
   TWO LINES OF ONE TEXT BLOCK, not two headings. Figma sets both at 20/1.71
   with -0.4 tracking and separates them by nothing but that line-height — which
   is why the block measures 68 and why there is no gap declared below. The
   hierarchy between them is carried ENTIRELY by the family:

     line 1   Libre Baskerville Regular   the greeting — a quiet address
     "Jalal"  Platypi Italic, #1b5029     the one accent in the composition
     line 2   Platypi Regular             the question — the heavier face, and
                                          the line the reader is meant to answer

   Same size, same weight, same colour on both lines. The second reads stronger
   because Platypi is a denser upright than Baskerville, not because anything
   was scaled or emboldened. Synthesising that difference — bolding line 2,
   growing it a step — would draw a different frame and a worse one.

   The Argus mark that used to hang off the first visible line is gone with the
   frame that drew it; 887:8194 sets the welcome as type alone. */
.ws-welcome {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  /* Shrink to the type, not to the 800 column. */
  width: max-content;
  max-width: 100%;
  margin: 0 auto;
  text-align: center;
}
.ws-welcome__line {
  position: relative;
  width: max-content;
  max-width: 100%;
  margin: 0 auto;
  /* Released. workspace-welcome.css pins each line to a fixed 26px box (27 under
     1200) because ITS frame set the type at line-height 1 and wanted the box to
     be exactly the type size. This frame sets 1.71, and a fixed height silently
     wins over line-height: the leading was computing correctly at 34.2 and being
     clipped back to 26, so the pair measured 52 against the frame's 68 and every
     number below it — the 16 to the composer, the composer's own top edge — was
     inherited 16px high. The block has to be free to be as tall as its leading. */
  height: auto;
  font-size: 20px;
  line-height: 1.71;
  letter-spacing: -0.4px;
  text-align: center;
}
.ws-welcome__line--greeting {
  font-family: "Libre Baskerville", Georgia, serif;
  font-weight: 400;
  color: var(--ws-figma-ink);
}
.ws-welcome__comma { color: rgba(36, 37, 45, 0.84); }
.ws-welcome__name {
  font-family: Platypi, "Libre Baskerville", Georgia, serif;
  font-style: italic;
  font-weight: 400;
  color: #1b5029;
}
.ws-welcome__line--question {
  font-family: Platypi, "Libre Baskerville", Georgia, serif;
  font-style: normal;
  font-weight: 400;
  color: var(--ws-figma-ink);
}

/* ==========================================================================
   COMPOSER — Figma 914:14410.

   The pill is gone. The frame draws a card: a 16px-padded white rectangle on a
   2px stroke, the thought on its own line, and one 32px row beneath it —
   plus and Web Search at the left, the model's name and send at the right. The
   stroke is the interaction state machine. It is stone while the composer is
   at rest, the vetted spectrum wakes on focus, moves gently with input, and
   becomes more energetic only while the real orchestration lifecycle is live.

   Both hosts carry it. The welcome composer and the docked one are one
   component and are now one drawing; only their width and placement differ.
   ========================================================================== */
/* 892:9464 — the composer's slot in the hero group. The slot is the group's
   full 800; the card inside it is 672 and centred, which is the frame's own
   arrangement and the reason the composer is narrower than the block it sits
   in. Placement only: the card's border, radius, padding, row and state machine
   are the approved component above and are not restated here.

   No margin. The 16 above it belongs to the group, so there is exactly one
   number between the welcome and the composer. */
.ws-composer-host {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin: 0;
}
.ws-composer-host .oc-composer {
  width: 100%;
  max-width: var(--ws-figma-home-composer-w);
}

/* ---- The composer's theme bridge ---------------------------------------
   UI kit §4 is stamped LIGHT MODE SPECIFICATION and states one palette; dark
   mode is the product's own extension and belongs to the shell that owns the
   theme, which is this file. So the workspace hands the composer its four
   colours through the component's own tokens rather than restating any of its
   drawing — geometry, radius, spacing, the glow and every control stay in
   components/chat/composer.css.

   In light mode `--ws-locked-*` ARE §4's values (#fdfbfa, #02193e, #b5b9c0),
   so this changes nothing there; in dark it is the only thing that moves. */
.ws-composer-host .oc-composer,
.ws-composer-dock .oc-composer {
  --oc-composer-surface: var(--ws-locked-surface);
  --oc-composer-foreground: var(--ws-locked-ink);
  --oc-composer-placeholder: var(--ws-locked-muted);
  --oc-composer-hairline: var(--ws-locked-hairline);
}


/* ---- Quick start 958:17076 ---------------------------------------------
   Five compact rows under the composer, aligned to the card's own 672.
   The task-tag row stays in the document (composer state still reads it)
   and is not drawn — 887:8194 replaced that offer with these starters. */
.ws-openings-slot {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  width: 100%;
  max-width: var(--ws-figma-home-composer-w);
  margin: 8px 0 0;
  min-width: 0;
  --oc-u: 1px;
  --oc-u-ui: 1px;
}
.ws-openings-slot > .oc-task-tags { display: none; }

.ws-quickstart {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  min-width: 0;
}
.ws-quickstart__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-width: 0;
  height: 38px;
  padding: 0 12px;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
  background: #ffffff;
  box-shadow: none;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  transition: background-color 120ms ease;
}
@media (hover: hover) {
  .ws-quickstart__row:hover {
    background: #f5f4f0;
  }
}
.ws-quickstart__row:focus-visible {
  outline: 2px solid rgba(240, 88, 34, 0.55);
  outline-offset: 2px;
}
.ws-quickstart__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  color: #a84e2e;
}
.ws-quickstart__glyph {
  display: block;
  width: 24px;
  height: 24px;
}
.ws-quickstart__text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: Geist, Inter, var(--font-sans);
  font-weight: 400;
  font-size: 16px;
  line-height: 1;
  letter-spacing: -0.64px;
  color: var(--ws-figma-ink);
}
.ws-quickstart__chevron {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 14px;
  width: 14px;
  height: 14px;
  color: #9f9792;
}
.ws-quickstart__chevron svg {
  display: block;
  width: 14px;
  height: 14px;
}
.ws-openings-slot .oc-studio-chips {
  flex-wrap: wrap;
  gap: 21px;
  row-gap: 10px;
}
.ws-openings-slot .oc-studio-chip {
  min-width: 54px;
  gap: 3px;
  padding: 4px 8px;
  border-radius: 8px;
  border-width: 1px;
}
.ws-openings-slot .oc-studio-chip__icon {
  width: 18px;
  height: 18px;
}
.ws-openings-slot .oc-studio-chip__label {
  font-family: Geist, Inter, var(--font-sans);
  font-weight: 500;
  font-size: 12px;
  line-height: 1.35;
  padding: 0 3px;
  color: var(--ws-figma-ink);
}

/* ---- Query assistance 891:9273 ("Are you looking for…") ----------------
   The second state. No container, no card, no dropdown: the lines simply
   appear under the composer, left-aligned to it, as though Argus had spoken
   underneath the reader's thought. Placement only — the component owns the
   rest (components/chat/query-assist.css). */
.ws-assist-slot {
  display: flex;
  justify-content: flex-start;
  width: 100%;
  /* The composer's width, not the group's — the assist is aligned to the card's
     own left edge, and the card is 672 inside an 800 group. */
  max-width: var(--ws-figma-home-composer-w);
  margin: 26px 0 0;
}

/* 780:15491 draws no canned starters while the assist is open. The reader is
   mid-thought, and an untouched offer is one they have not taken up. It
   returns the moment the assist closes. */
.ws-empty__center:has(.oc-assist:not([hidden])) .ws-openings-slot {
  display: none;
}

/* 892:9519 — the identity line. Centred on the WORKSPACE, not on the browser:
   it is a child of the main column, so its centre is the column's centre and it
   moves with the sidebar rather than against it.

   Held down by the content region above it and the column's 24px foot — the
   `auto` margin and the 32px pad it used to carry are gone, because the column
   now owns the 53 and the 24 and one owner is enough. */
.ws-empty__legal {
  flex: 0 0 auto;
  margin: 0;
  padding-top: 0;
  width: 100%;
  max-width: var(--ws-figma-col-w);
  font-family: "Libre Franklin", Geist, Inter, sans-serif;
  font-weight: 500;
  font-size: 12px;
  line-height: normal;
  text-align: center;
  text-transform: capitalize;
  color: rgba(240, 88, 34, 0.75);
}

/* ==========================================================================
   CONVERSATION STARTED — 887:8926
   The same frame. The welcome is gone, the composer has travelled to the foot,
   the reader's message holds the upper right and Argus works on the left.
   ========================================================================== */

/* 887:8926 puts the thread's top edge at y=75.5 and 905:13823's header ends at
   66, so the reading column opens ~10 below the band. It used to open at 56 to
   clear a Share button that floated over it; the header reserves that height
   itself now, so the clearance is gone and the gap is the frame's own. */
.ws-main.is-conversation .ws-thread {
  padding: 10px 24px 140px;
}
.ws-main.is-conversation .ws-thread__inner {
  max-width: 914px;
  padding: 0 32px;
  gap: 65px;
}

/* The Argus mark beside the answer — 905:13792 (23×24 at x=8, y=10) and its
   twin in the resolving frame (887:8934), where it stands beside the working
   line. Drawn as the block's own mark rather than as an element in the flow, so
   the answer's measure and the status panel's internals are untouched. */
.ws-main.is-conversation .msg-answer,
.ws-main.is-conversation .orch-turn > .orch {
  position: relative;
  padding-left: 43px;
}
.ws-main.is-conversation .msg-answer::before,
.ws-main.is-conversation .orch-turn > .orch::before {
  content: "";
  position: absolute;
  left: 8px;
  /* OPTICALLY CENTRED ON THE FIRST LINE'S CAP BAND, measured rather than eyeballed.
     `.msg-answer` renders Geist 16px/normal: its first line box starts at 4px,
     the baseline falls at 20px, and the cap band ('H') runs 8.64 → 20, centring
     at 14.32. A 24px mark centres there at top: 2.32 → 2.
     It was 10px, which put the mark's centre at 22 — 7.7px BELOW the cap centre,
     so the mark drifted toward the gap between the first and second lines. That
     value was calibrated against the retired constellation mark, whose visual
     mass sat differently in the same 24px box.
     `.orch-turn > .orch::before` overrides `top` below and is NOT affected: it
     aligns to the status panel's top edge, not to a line of text. */
  top: 2px;
  /* The mark is square, so the box is too — `contain` in the old 23×24 slot
     drew it at 23 and left a pixel of slack below it. */
  width: 24px;
  height: 24px;
  background: url("../../assets/brand/orcheum-mark.svg") no-repeat center / contain;
  pointer-events: none;
}
.ws-main.is-conversation .orch-turn > .orch::before { top: 0; }

/* The reader's message 887:8931 — a white plate, not a tinted bubble. */
.ws-main.is-conversation .msg-user {
  align-self: flex-end;
  max-width: min(78%, 560px);
  padding: 9px 12px;
  border-radius: 10px;
  background: #ffffff;
  -webkit-backdrop-filter: blur(19.65px);
  backdrop-filter: blur(19.65px);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.04);
  color: var(--ws-figma-ink);
  font-family: Geist, Inter, var(--font-sans);
  font-size: 14px;
  line-height: 1.15;
}

/* Argus works on the opposite side — 887:8933. The status panel keeps its own
   internals; only the side and the rhythm are set here. */
.ws-main.is-conversation .orch-turn {
  align-items: stretch;
  gap: 65px;
}
.ws-main.is-conversation .orch-turn > .orch {
  align-self: flex-start;
  max-width: 420px;
}

/* Docked composer 887:8936 — the same 800 card, centred at the foot. Its
   drawing is the composer block above; only the width and the dock are here. */
.ws-main.is-conversation .ws-composer-dock {
  /* Clears the identity line pinned at the frame's foot. */
  padding: 0 24px 34px;
  /* Fades to the field the workspace is actually painted in now. Left at the
     opaque stone it would read as a band of a second page colour across the
     foot of the thread. */
  background: linear-gradient(to top, var(--ws-figma-field-solid) 62%, rgba(233, 233, 233, 0));
}
.ws-composer-dock .oc-composer {
  max-width: var(--ws-figma-composer-w);
}

/* The copyright travels with the frame, not with the Home state — 887:8864. */
.ws-conversation__legal {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 6px;
  margin: 0;
  font-family: "Libre Franklin", Geist, Inter, sans-serif;
  font-weight: 500;
  font-size: 12px;
  text-align: center;
  text-transform: capitalize;
  color: rgba(240, 88, 34, 0.75);
  pointer-events: none;
}
.ws-main:not(.is-conversation) .ws-conversation__legal { display: none; }

/* ==========================================================================
   Responsive. The column is fixed by design, so the breakpoints are the widths
   at which 800 (composer) and 1174 (column) stop fitting — not devices.
   ========================================================================== */

@media (max-width: 1280px) {
  :root { --ws-figma-col-w: 100%; }
}

@media (max-width: 1024px) {
  .ws-topnav__nav { gap: 22px; }
  .ws-topnav__link { font-size: 15px; }
}

@media (max-width: 900px) {
  .ws-topnav { padding: 14px 16px; }
  .ws-topnav__nav { gap: 16px; }
  .ws-topnav__link { font-size: 14px; }
  /* The nav needs the whole row here. The plan is still one tap away in the
     account card, which is where it is stated in full. This mirrors the
     answer header, which drops the same chip when its band gets tight. */
  .ws-topnav > .ws-ah-plan { display: none; }
}

@media (max-width: 820px) {
  .ws-empty {
    width: 100%;
    height: auto;
    /* A phone is short as well as narrow, and 23.9% of a 700px window is not
       the frame's generosity — it is the composer under the fold. The upper
       third becomes an upper sixth and the composition stays on screen. */
    padding-top: clamp(40px, 10vh, 96px);
  }
  /* The group's 16 gives way with everything else, but it stays the ONE number
     between the welcome and the composer. */
  .ws-empty__center { gap: 12px; }
  /* The column's own rhythm closes up with it. */
  .ws-main__scroll { gap: 32px; padding: 0 16px 20px; }
  .ws-empty__title-line--argus { font-size: 18px; line-height: 22px; }
  .ws-empty__title-line--engine { font-size: 11px; line-height: 16px; }
  .ws-welcome__line { font-size: 17px; }


  .ws-openings-slot .oc-studio-chips { gap: 10px; row-gap: 8px; }
  .ws-quickstart__text { font-size: 15px; letter-spacing: -0.6px; }

  .ws-main.is-conversation .ws-thread {
    padding: 10px 16px 132px;
  }
  .ws-main.is-conversation .ws-thread__inner {
    padding: 0;
    gap: 36px;
  }
  .ws-main.is-conversation .orch-turn { gap: 36px; }
  .ws-main.is-conversation .ws-composer-dock { padding: 0 16px 16px; }
  .ws-conversation__legal { display: none; }
}

@media (max-width: 480px) {
  .ws-topnav__nav { gap: 12px; }
  .ws-topnav__link { font-size: 13px; }
  .ws-welcome__line { font-size: 16px; }
  .ws-openings-slot .oc-studio-chip__label { font-size: 11px; }


}

@media (prefers-reduced-motion: reduce) {
  .ws-empty__heading,
  .ws-empty__center { animation: none !important; }
  .ws-quickstart__row { transition: none; }

}

/* ==========================================================================
   Locked composer V1 — Figma 82:1100

   This final block supersedes the retired starter-card composition above. It
   keeps the existing Workspace shell and orchestration state machine while the
   composer, greeting, and four explicit specialist Modes adopt the locked
   surface. General remains the undrawn default.
   ========================================================================== */

.ws {
  --ws-locked-surface: #fdfbfa;
  --ws-locked-surface-strong: #ffffff;
  --ws-locked-hairline: rgba(156, 199, 255, 0.26);   /* §4 161:2903 */
  --ws-locked-ink: #02193e;
  --ws-locked-muted: #b5b9c0;
  --ws-locked-mode: #2d6fb8;
  --ws-locked-mode-bg: rgba(82, 145, 224, 0.08);
  --ws-locked-mode-border: rgba(82, 145, 224, 0.22);
}

.ws-empty {
  padding-top: clamp(88px, 19vh, 205px);
}

.ws-empty__center {
  gap: 28px;
}

.ws-welcome {
  gap: 8px;
}

.ws-welcome__line {
  height: auto;
  letter-spacing: 0;
}

.ws-welcome__line--greeting {
  color: rgba(2, 25, 62, 0.66);
  font-family: Geist, Inter, var(--font-sans);
  font-size: 16px;
  line-height: 1.4;
}

.ws-welcome__comma { color: inherit; }

.ws-welcome__name {
  color: inherit;
  font-family: inherit;
  font-style: normal;
}

.ws-welcome__line--question {
  color: var(--ws-locked-ink);
  font-family: "Playfair Display", "Libre Caslon Text", Georgia, serif;
  font-size: clamp(34px, 3vw, 44px);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -0.035em;
}

.ws-composer-host,
.ws-composer-dock .ws-composer-host {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  width: 100%;
  max-width: var(--ws-figma-home-composer-w);
  overflow: visible;
}


/* The Mode chip row that stood here — UNSCOPED `.ws-primary-domain`, a 32-tall
   pill — is gone. It was the second implementation of one component and it lost
   every box property to workspace-home.css on Home, so it was dead where it was
   visible and live everywhere else. The row is now the kit component §7,
   components/workspace/mode-chips.css. */

.ws-assist-slot,
.ws-openings-slot,
.ws-quickstart {
  display: none !important;
}

/* Explicit theme hooks are available to the shell, while automatic mode keeps
   the locked surface restrained on systems that prefer dark UI. */
html[data-theme="dark"] { color-scheme: dark; }
html[data-theme="dark"] .ws {
  --ws-figma-page: #14171d;
  --ws-figma-field: #14171d;
  --ws-figma-field-solid: #14171d;
  --ws-figma-cream: #1b1f27;
  --ws-figma-ink: #edf3fc;
  --ws-figma-muted: #9aa7b8;
  --ws-figma-border: rgba(132, 169, 220, 0.22);
  --ws-locked-surface: #1d212a;
  --ws-locked-surface-strong: #232833;
  --ws-locked-hairline: rgba(132, 169, 220, 0.22);
  --ws-locked-ink: #edf3fc;
  --ws-locked-muted: #929cab;
  --ws-locked-mode: #9bc7ff;
  --ws-locked-mode-bg: rgba(77, 139, 222, 0.10);
  --ws-locked-mode-border: rgba(103, 164, 244, 0.24);
}


@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) { color-scheme: dark; }
  html:not([data-theme="light"]) .ws {
    --ws-figma-page: #14171d;
    --ws-figma-field: #14171d;
    --ws-figma-field-solid: #14171d;
    --ws-figma-cream: #1b1f27;
    --ws-figma-ink: #edf3fc;
    --ws-figma-muted: #9aa7b8;
    --ws-figma-border: rgba(132, 169, 220, 0.22);
    --ws-locked-surface: #1d212a;
    --ws-locked-surface-strong: #232833;
    --ws-locked-ink: #edf3fc;
    --ws-locked-muted: #929cab;
    --ws-locked-mode: #9bc7ff;
    --ws-locked-mode-bg: rgba(77, 139, 222, 0.10);
    --ws-locked-mode-border: rgba(103, 164, 244, 0.24);
  }


}

@media (max-width: 820px) {
  .ws-empty__center { gap: 22px; }
  .ws-composer-host,
  .ws-composer-dock .ws-composer-host { gap: 14px; }


}

@media (max-width: 480px) {
  .ws-welcome__line--question { font-size: 32px; }

}


