/* Neura Build semantic adapter.
   The shell, windows, widgets, motion, wallpaper and controls are the original
   Neura Space runtime. These rules only style Build data inserted into those
   existing primitives. */

:root {
  --nb-ok: #71d8a7;
  --nb-warn: #e8bb72;
  --nb-bad: #e87979;
}

body[data-product="neura-build"] .logo-mark,
body[data-product="neura-build"] .ws-brand {
  filter: none;
}

.nb-project-button,
.nb-row-button,
.nb-setting-link {
  color: inherit;
  font: inherit;
}

.nb-project-button {
  display: flex;
  width: 100%;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.nb-project-button:hover .rf-file-name,
.nb-project-button:focus-visible .rf-file-name {
  color: rgba(255,255,255,.98);
}

.nb-project-button:focus-visible,
.nb-row-button:focus-visible,
.nb-setting-link:focus-visible {
  outline: 1px solid rgba(255,255,255,.28);
  outline-offset: 4px;
}

.nb-state-dot {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 999px;
  background: rgba(255,255,255,.28);
  box-shadow: 0 0 0 3px rgba(255,255,255,.04);
}

.nb-state-dot[data-state="running"],
.nb-state-dot[data-state="published"],
.nb-state-dot[data-state="active"] { background: var(--nb-ok); }
.nb-state-dot[data-state="building"],
.nb-state-dot[data-state="needs_attention"] { background: var(--nb-warn); }
.nb-state-dot[data-state="failed"] { background: var(--nb-bad); }

.nb-dw-list {
  display: grid;
  gap: 1px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.nb-row-button {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 13px;
  width: 100%;
  padding: 13px 14px;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.07);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease;
}

.nb-row-button:hover { background: rgba(255,255,255,.055); }
.nb-row-button strong,
.nb-row-button small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nb-row-button small { margin-top: 3px; color: rgba(255,255,255,.46); font-size: 11px; }
.nb-row-button > span:last-child { color: rgba(255,255,255,.42); font-size: 11px; }

.nb-window-empty {
  display: grid;
  min-height: 280px;
  place-content: center;
  justify-items: center;
  gap: 10px;
  color: rgba(255,255,255,.48);
  text-align: center;
}

.nb-window-empty__orb {
  display: grid;
  width: 54px;
  height: 54px;
  place-items: center;
  margin-bottom: 4px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 50%;
  color: rgba(255,255,255,.88);
  box-shadow: inset 0 0 20px rgba(255,255,255,.08), 0 0 30px rgba(255,255,255,.08);
}

.nb-browser-empty {
  display: grid;
  min-height: 100%;
  place-items: center;
  background: transparent;
  color: rgba(255,255,255,.55);
  font: 13px/1.6 Inter, sans-serif;
}

.nb-terminal {
  box-sizing: border-box;
  min-height: 100%;
  margin: 0;
  padding: 22px;
  background: rgba(0,0,0,.16);
  color: rgba(220,244,232,.72);
  font: 12px/1.75 "Courier Prime", monospace;
  white-space: pre-wrap;
}

.nb-setting-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: calc(10px * var(--set-zoom, 1));
  width: 100%;
}

/* ── Native settings surfaces ──────────────────────────────────────────
   Settings render in the shell itself rather than in an embedded page, so
   these primitives carry the whole vocabulary: sections, fields, switches,
   tables, and the destructive band. Secondary copy sits at .58 rather than
   the .43 used for meta labels, which keeps body text above 4.5:1 on the
   panel glass. */
.nb-set { display: grid; gap: calc(14px * var(--set-zoom, 1)); align-content: start; }
.nb-set__intro { display: grid; gap: 4px; }
.nb-set__intro h3 {
  margin: 0;
  color: rgba(255,255,255,.92);
  font-size: calc(14px * var(--set-text-scale, 1));
  font-weight: 500;
}
.nb-set__intro p {
  margin: 0;
  max-width: 68ch;
  color: rgba(255,255,255,.58);
  font-size: calc(10.5px * var(--set-text-scale, 1));
  line-height: 1.55;
}

.nb-set-card {
  display: grid;
  gap: calc(12px * var(--set-zoom, 1));
  padding: calc(15px * var(--set-zoom, 1));
  border: 1px solid rgba(255,255,255,.12);
  border-radius: calc(13px * var(--set-zoom, 1));
  background: linear-gradient(145deg, rgba(255,255,255,.06), rgba(255,255,255,.016));
}
.nb-set-card--danger {
  border-color: rgba(248,113,113,.32);
  background: linear-gradient(145deg, rgba(248,113,113,.09), rgba(248,113,113,.02));
}
.nb-set-card__head { display: grid; gap: 3px; }
.nb-set-card__head h4 {
  margin: 0;
  color: rgba(255,255,255,.9);
  font-size: calc(11.5px * var(--set-text-scale, 1));
  font-weight: 500;
}
.nb-set-card__head p {
  margin: 0;
  color: rgba(255,255,255,.58);
  font-size: calc(9.8px * var(--set-text-scale, 1));
  line-height: 1.55;
}

.nb-set-fields { display: grid; gap: calc(11px * var(--set-zoom, 1)); }
.nb-set-fields--split { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.nb-set-field { display: grid; gap: 5px; min-width: 0; }
.nb-set-field > span {
  color: rgba(255,255,255,.74);
  font-size: calc(9.6px * var(--set-text-scale, 1));
  font-weight: 500;
  letter-spacing: .04em;
}
.nb-set-field > span em {
  margin-left: 4px;
  color: rgba(248,113,113,.8);
  font-style: normal;
}
.nb-set-input {
  width: 100%;
  box-sizing: border-box;
  min-height: calc(34px * var(--set-zoom, 1));
  padding: calc(8px * var(--set-zoom, 1)) calc(11px * var(--set-zoom, 1));
  border: 1px solid rgba(255,255,255,.14);
  border-radius: calc(10px * var(--set-zoom, 1));
  background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.92);
  font: inherit;
  font-size: calc(10.5px * var(--set-text-scale, 1));
  transition: border-color 150ms ease, background-color 150ms ease;
}
.nb-set-input::placeholder { color: rgba(255,255,255,.32); }
.nb-set-input:hover:not(:disabled) { border-color: rgba(255,255,255,.22); }
.nb-set-input:focus-visible {
  border-color: rgba(255,255,255,.44);
  background: rgba(255,255,255,.06);
  outline: 0;
}
.nb-set-input:disabled { opacity: .45; cursor: not-allowed; }

/* A key that cannot be used should be quiet, not gone. The shell's .br-btn
   carries no colour of its own, so a disabled one falls back to the browser's
   palette — near-black on light grey — and the shell's 0.35 opacity then
   erases it completely: "You are here" on the current plan read as an empty
   box. Give the disabled state a colour from this theme and let it stay. */
.br-btn:disabled,
.br-btn[aria-disabled="true"] {
  opacity: 1;
  color: rgba(233,238,246,.62);
  background: rgba(255,255,255,.045);
  border-color: rgba(255,255,255,.14);
  box-shadow: none;
}
.br-btn:disabled .br-btn-bloom { opacity: 0; }
.nb-set-input[readonly] {
  border-style: dashed;
  background: transparent;
  color: rgba(255,255,255,.66);
}
textarea.nb-set-input { min-height: calc(74px * var(--set-zoom, 1)); resize: vertical; line-height: 1.55; }
.nb-set-field__hint {
  color: rgba(255,255,255,.5);
  font-size: calc(9px * var(--set-text-scale, 1));
  line-height: 1.5;
}
.nb-set-field__error {
  display: flex;
  align-items: center;
  gap: 5px;
  color: rgba(252,165,165,.94);
  font-size: calc(9.2px * var(--set-text-scale, 1));
  line-height: 1.45;
}
.nb-set-field__error:empty { display: none; }
.nb-set-field__error::before { content: "!"; font-weight: 600; }
.nb-set-field.is-invalid .nb-set-input { border-color: rgba(248,113,113,.62); }

/* Switch rows carry their own label and description, so the whole row is the
   hit target rather than the 18px track alone. */
.nb-set-switch {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  min-height: calc(44px * var(--set-zoom, 1));
  padding: calc(9px * var(--set-zoom, 1)) 0;
  cursor: pointer;
}
.nb-set-switch + .nb-set-switch { border-top: 1px solid rgba(255,255,255,.07); }
.nb-set-switch__text { display: grid; gap: 2px; }
.nb-set-switch__text strong {
  color: rgba(255,255,255,.88);
  font-size: calc(10.5px * var(--set-text-scale, 1));
  font-weight: 500;
}
.nb-set-switch__text small {
  color: rgba(255,255,255,.55);
  font-size: calc(9.2px * var(--set-text-scale, 1));
  line-height: 1.5;
}
.nb-set-switch input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.nb-set-switch__track {
  position: relative;
  width: calc(34px * var(--set-zoom, 1));
  height: calc(19px * var(--set-zoom, 1));
  flex: 0 0 auto;
  margin-top: 2px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  transition: background-color 180ms ease, border-color 180ms ease;
}
.nb-set-switch__track::after {
  position: absolute;
  top: 50%;
  left: calc(2px * var(--set-zoom, 1));
  width: calc(13px * var(--set-zoom, 1));
  height: calc(13px * var(--set-zoom, 1));
  border-radius: 50%;
  background: rgba(255,255,255,.72);
  content: "";
  transform: translateY(-50%);
  transition: transform 180ms cubic-bezier(.3,.9,.3,1), background-color 180ms ease;
}
.nb-set-switch input:checked + .nb-set-switch__track {
  border-color: rgba(255,255,255,.5);
  background: rgba(255,255,255,.32);
}
.nb-set-switch input:checked + .nb-set-switch__track::after {
  background: #fff;
  transform: translateY(-50%) translateX(calc(15px * var(--set-zoom, 1)));
}
/* A radio is an exclusive choice, so it reads as a dot rather than borrowing
   the switch track, which would imply an independent on/off. */
.nb-set-switch input[type="radio"] + .nb-set-switch__track {
  width: calc(19px * var(--set-zoom, 1));
  border-radius: 50%;
}
.nb-set-switch input[type="radio"] + .nb-set-switch__track::after {
  left: 50%;
  width: calc(9px * var(--set-zoom, 1));
  height: calc(9px * var(--set-zoom, 1));
  background: transparent;
  transform: translate(-50%, -50%) scale(.4);
  transition: background-color 160ms ease, transform 160ms cubic-bezier(.3,.9,.3,1);
}
.nb-set-switch input[type="radio"]:checked + .nb-set-switch__track {
  border-color: rgba(255,255,255,.62);
  background: rgba(255,255,255,.08);
}
.nb-set-switch input[type="radio"]:checked + .nb-set-switch__track::after {
  background: #fff;
  transform: translate(-50%, -50%) scale(1);
}

.nb-set-switch input:focus-visible + .nb-set-switch__track { outline: 1px solid rgba(255,255,255,.28); outline-offset: 2px; }
.nb-set-switch input:disabled + .nb-set-switch__track { opacity: .45; }
.nb-set-switch:has(input:disabled) { cursor: not-allowed; }

.nb-set-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  padding-top: 2px;
}
.nb-set-actions__spacer { margin-left: auto; }
.nb-set-btn {
  display: inline-flex;
  min-height: calc(32px * var(--set-zoom, 1));
  align-items: center;
  gap: 6px;
  padding: 0 calc(14px * var(--set-zoom, 1));
  border: 1px solid rgba(255,255,255,.16);
  border-radius: calc(9px * var(--set-zoom, 1));
  background: rgba(255,255,255,.05);
  color: rgba(255,255,255,.88);
  font: inherit;
  font-size: calc(10px * var(--set-text-scale, 1));
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease;
}
.nb-set-btn:hover:not(:disabled) { border-color: rgba(255,255,255,.32); background: rgba(255,255,255,.09); }
.nb-set-btn:focus-visible { outline: 1px solid rgba(255,255,255,.28); outline-offset: 2px; }
.nb-set-btn:disabled { opacity: .45; cursor: not-allowed; }
.nb-set-btn--primary { border-color: rgba(255,255,255,.42); background: rgba(255,255,255,.9); color: #0b0e10; font-weight: 500; }
.nb-set-btn--primary:hover:not(:disabled) { border-color: #fff; background: #fff; }
.nb-set-btn--danger { border-color: rgba(248,113,113,.42); background: rgba(248,113,113,.12); color: rgba(252,190,190,.96); }
.nb-set-btn--danger:hover:not(:disabled) { border-color: rgba(248,113,113,.7); background: rgba(248,113,113,.2); }
.nb-set-btn__spin {
  width: 12px;
  height: 12px;
  border: 1.5px solid rgba(0,0,0,.25);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: nb-embed-spin 800ms linear infinite;
}

.nb-set-note {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: calc(9.4px * var(--set-text-scale, 1));
}
.nb-set-note:empty { display: none; }
.nb-set-note[data-tone="error"] { color: rgba(252,165,165,.95); }
.nb-set-note[data-tone="success"] { color: rgba(167,243,208,.95); }
.nb-set-note[data-tone="muted"] { color: rgba(255,255,255,.5); }

/* Data columns use tabular figures so rows do not shift as values change. */
.nb-set-table { display: grid; gap: 1px; overflow: hidden; border-radius: calc(11px * var(--set-zoom, 1)); }
.nb-set-row {
  display: grid;
  align-items: center;
  gap: 14px;
  padding: calc(11px * var(--set-zoom, 1)) calc(12px * var(--set-zoom, 1));
  background: rgba(255,255,255,.03);
  grid-template-columns: 1fr auto;
}
.nb-set-row + .nb-set-row { box-shadow: inset 0 1px 0 rgba(255,255,255,.06); }
.nb-set-row__main { display: grid; gap: 2px; min-width: 0; }
.nb-set-row__main strong {
  overflow-wrap: anywhere;
  color: rgba(255,255,255,.9);
  font-size: calc(10.4px * var(--set-text-scale, 1));
  font-weight: 500;
}
.nb-set-row__main small {
  color: rgba(255,255,255,.55);
  font-size: calc(9.2px * var(--set-text-scale, 1));
  font-variant-numeric: tabular-nums;
  line-height: 1.5;
}
.nb-set-row__side { display: flex; align-items: center; gap: 8px; }
.nb-set-tag {
  padding: 3px 8px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px;
  color: rgba(255,255,255,.7);
  font-size: calc(8.4px * var(--set-text-scale, 1));
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}
.nb-set-tag[data-tone="live"] { border-color: rgba(167,243,208,.4); color: rgba(167,243,208,.92); }
.nb-set-tag[data-tone="warn"] { border-color: rgba(253,224,71,.38); color: rgba(253,224,71,.9); }
.nb-set-tag[data-tone="down"] { border-color: rgba(248,113,113,.4); color: rgba(252,165,165,.92); }

.nb-set-state {
  display: grid;
  justify-items: center;
  gap: 7px;
  padding: calc(26px * var(--set-zoom, 1)) 12px;
  color: rgba(255,255,255,.55);
  text-align: center;
}
.nb-set-state strong { color: rgba(255,255,255,.8); font-size: calc(11px * var(--set-text-scale, 1)); font-weight: 500; }
.nb-set-state small { max-width: 46ch; font-size: calc(9.4px * var(--set-text-scale, 1)); line-height: 1.55; }
.nb-set-state__spin {
  width: 20px;
  height: 20px;
  border: 1.5px solid rgba(255,255,255,.14);
  border-top-color: rgba(255,255,255,.78);
  border-radius: 50%;
  animation: nb-embed-spin 900ms linear infinite;
}
.nb-set-skeleton {
  height: calc(46px * var(--set-zoom, 1));
  border-radius: calc(10px * var(--set-zoom, 1));
  background: linear-gradient(90deg, rgba(255,255,255,.04), rgba(255,255,255,.08), rgba(255,255,255,.04));
  background-size: 220% 100%;
  animation: nb-set-shimmer 1.4s ease-in-out infinite;
}
@keyframes nb-set-shimmer { from { background-position: 140% 0; } to { background-position: -40% 0; } }
@media (prefers-reduced-motion: reduce) {
  .nb-set-skeleton { animation: none; }
  .nb-set-switch__track,
  .nb-set-switch__track::after { transition: none; }
}

.nb-settings-browser {
  display: grid;
  gap: calc(14px * var(--set-zoom, 1));
  align-content: start;
  min-height: 100%;
}

.nb-settings-search {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: calc(9px * var(--set-zoom, 1)) calc(12px * var(--set-zoom, 1));
  border: 1px solid rgba(255,255,255,.11);
  border-radius: calc(11px * var(--set-zoom, 1));
  background: rgba(12,15,17,.86);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  transition: border-color 160ms ease;
}
.nb-settings-search:focus-within { border-color: rgba(255,255,255,.3); }
.nb-settings-search__icon { display: grid; color: rgba(255,255,255,.42); place-items: center; }
.nb-settings-search__icon .nb-icon { width: 13px; height: 13px; }
.nb-settings-search input {
  width: 100%;
  border: 0;
  background: transparent;
  color: rgba(255,255,255,.92);
  font: inherit;
  font-size: calc(11px * var(--set-text-scale, 1));
  outline: 0;
}
.nb-settings-search input::placeholder { color: rgba(255,255,255,.34); }
.nb-settings-search input::-webkit-search-cancel-button { filter: invert(1); opacity: .35; }

.nb-setting-bands { display: grid; gap: calc(16px * var(--set-zoom, 1)); align-content: start; }
.nb-setting-band { display: grid; gap: calc(8px * var(--set-zoom, 1)); }
.nb-setting-band[hidden] { display: none; }
.nb-setting-band__label {
  margin: 0;
  color: rgba(255,255,255,.34);
  font-size: calc(8.5px * var(--set-text-scale, 1));
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.nb-setting-link[hidden] { display: none; }
.nb-settings-empty {
  margin: 0;
  padding: calc(18px * var(--set-zoom, 1)) 0;
  color: rgba(255,255,255,.4);
  font-size: calc(10px * var(--set-text-scale, 1));
  text-align: center;
}
.nb-settings-empty[hidden] { display: none; }

.nb-setting-link {
  position: relative;
  display: flex;
  min-height: calc(92px * var(--set-zoom, 1));
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  padding: calc(14px * var(--set-zoom, 1));
  border: 1px solid rgba(255,255,255,.12);
  border-radius: calc(13px * var(--set-zoom, 1));
  background: linear-gradient(145deg, rgba(255,255,255,.06), rgba(255,255,255,.016));
  text-align: left;
  cursor: pointer;
  transition: border-color 160ms ease, background-color 160ms ease, transform 160ms ease;
}

.nb-setting-link:hover {
  border-color: rgba(255,255,255,.28);
  background: linear-gradient(145deg, rgba(255,255,255,.1), rgba(255,255,255,.025));
  transform: translateY(-1px);
}

.nb-setting-link__icon { color: rgba(255,255,255,.72); font-size: calc(19px * var(--set-zoom, 1)); }
.nb-setting-link__name { display: block; margin-top: auto; color: rgba(255,255,255,.92); font-size: calc(12px * var(--set-text-scale, 1)); font-weight: 500; }
.nb-setting-link__desc { display: block; margin-top: 3px; color: rgba(255,255,255,.43); font-size: calc(9.5px * var(--set-text-scale, 1)); line-height: 1.35; }
.nb-setting-link__arrow { position: absolute; top: 13px; right: 13px; color: rgba(255,255,255,.32); }

.nb-settings-back {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin: 2px 0 12px;
  border: 0;
  background: transparent;
  color: rgba(255,255,255,.68);
  cursor: pointer;
}

.nb-detail-card {
  min-height: 100%;
  padding: 18px;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 15px;
  background: rgba(255,255,255,.025);
}

.nb-detail-card h3 { margin: 0 0 5px; font-size: 18px; font-weight: 400; }
.nb-detail-card > p { margin: 0 0 18px; color: rgba(255,255,255,.45); font-size: 11px; }
.nb-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }

.nb-toast-stack {
  position: fixed;
  z-index: 10050;
  right: 24px;
  bottom: 96px;
  display: grid;
  width: min(340px, calc(100vw - 32px));
  gap: 8px;
  pointer-events: none;
}

.nb-toast {
  padding: 11px 13px;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 12px;
  background: rgba(10,12,13,.9);
  box-shadow: 0 16px 44px rgba(0,0,0,.34);
  color: rgba(255,255,255,.82);
  font-size: 12px;
  backdrop-filter: blur(20px);
  animation: nb-toast-in 220ms ease both;
}

.nb-toast[data-tone="error"] { border-color: rgba(232,121,121,.45); }
.nb-toast[data-tone="success"] { border-color: rgba(113,216,167,.42); }

@keyframes nb-toast-in { from { opacity: 0; transform: translateY(8px); } }

@media (max-width: 900px) {
  .nb-setting-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
  .nb-setting-link,
  .nb-toast { transition: none; animation: none; }
}

/* -------------------------------------------------------------------------
   Fixed Neura Build Spaces

   Build, Projects, Templates and Operate deliberately use a responsive grid,
   not the freeform widget camera. Desk remains the original Neura Space window
   manager because movable windows are meaningful inside a project OS.
   ------------------------------------------------------------------------- */

.nb-icon {
  display: block;
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

body[data-product="neura-build"]:not([data-nb-space="desk"]) .world {
  opacity: 0;
  pointer-events: none;
}

/* Desk windows keep their embedded editor mounted so chat, files and the
   current project state survive a space change. They must not, however,
   visually or interactively leak into Build, Projects, Templates or Operate. */
body[data-product="neura-build"]:not([data-nb-space="desk"]) .desk-window {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

body[data-product="neura-build"]:not([data-nb-space="desk"]) .map-hud,
body[data-product="neura-build"]:not([data-nb-space="desk"]) .pan-hint {
  display: none !important;
}

/* The two pieces of fixed Neura Space chrome are always the primary menu.
   Product surfaces sit below them; they never replace or cover them. */
body[data-product="neura-build"] .header-glass {
  z-index: 108;
}

body[data-product="neura-build"] .control-nav,
body[data-product="neura-build"] .command-bar {
  z-index: 110;
}

/* At 1100px and below the shell folds its chrome into the page flow, which is
   right for a document that scrolls. Every surface in this product fills the
   window instead, so the bar ended up eleven hundred pixels down a page with
   nowhere to scroll — the spaces, the search, the settings and the workspace
   switcher, all out of reach with no way back. Keep them where they belong,
   and let the tab row scroll inside itself if the window is too narrow for
   all of it. */
/* The tab row wants 753px and the command bar 526px, so on a 1280px window
   they meet with nothing between them and the last tab’s hit area disappears
   under the search button. A long workspace name is what makes the command bar
   that wide; keep enough of it to recognise and the rest in the tooltip. */
@media (max-width: 1320px) {
  body[data-product="neura-build"] .command-bar .world-switch__label {
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

@media (max-width: 1100px) {
  body[data-product="neura-build"] .control-nav {
    position: absolute;
    top: 2.4%;
    left: 1.2%;
    right: auto;
    inset-block-end: auto;
    width: auto;
    max-width: calc(100vw - 440px);
    /* The bar is a fixed 50px tall. A tab row that wraps inside it spills out
       of the pill and reads as loose text on the wallpaper, so let it grow. */
    height: auto;
    min-height: 50px;
    max-height: none;
    margin: 0;
    flex-wrap: nowrap;
  }
  /* Seven spaces will not sit on one line beside the command bar in a window
     this narrow. Two lines shows all of them and reads cleanly, which beats
     hiding three behind a scroll. */
  body[data-product="neura-build"] .control-nav .nav-tabs {
    flex-wrap: wrap;
    row-gap: 2px;
  }
  body[data-product="neura-build"] .control-nav .nav-active-indicator { display: none; }
  /* A long workspace name took 234px of a 1024px window. Keep enough of it to
     recognise, and keep all of it in the tooltip. */
  body[data-product="neura-build"] .command-bar .world-switch__label {
    max-width: 96px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  body[data-product="neura-build"] .command-bar {
    position: absolute;
    top: 2%;
    right: 1.4%;
    left: auto;
    inset-block-end: auto;
    width: auto;
    max-height: none;
    margin: 0;
    flex-wrap: nowrap;
  }
}

body[data-product="neura-build"] .neva-dock {
  z-index: 111;
}

body[data-product="neura-build"] .neva-dock::before,
body[data-product="neura-build"] .neva-dock-group {
  opacity: 1;
  filter: none;
  transform: none;
}

body[data-product="neura-build"] .neva-dock-group {
  pointer-events: auto;
}

/* The dock used to be hidden away from the Desk, and the reason was sound while
   it was true: its four keys opened the orb's laboratory, and every other space
   already carried a composer of its own, so the bar only repeated them.
   Neither half holds any more. The keys are the conversation now, and a run
   that keeps going while you walk to Projects needs somewhere to say so. The
   bar carries no composer of its own — four keys, the sphere, and what Neva is
   doing — so there is nothing left for it to duplicate, and it is the one thing
   on the screen that should be true in every space. */

/* Build, Projects, Templates and Operate use a fixed full-canvas wallpaper.
   Camera state cannot enlarge, pan or animate it away from the viewport. */
body[data-product="neura-build"]:not([data-nb-space="desk"]) .world-bg {
  position: fixed;
  inset: 0;
  transform: translate3d(32.5vw, 32.5vh, 0) scale(.35) !important;
  transform-origin: 0 0;
}

body[data-product="neura-build"]:not([data-nb-space="desk"]) .map-canvas {
  position: absolute;
  top: -152vh;
  left: -152vw;
  width: 404vw;
  height: 404vh;
}

body[data-product="neura-build"]:not([data-nb-space="desk"]) .map-photo {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  scale: 1 !important;
  translate: 0 0 !important;
  transform: none !important;
  animation: none !important;
}

/* As a panel this is a developer-only state emulator, and not a Neura Build
   control. Collapsed on the Desk it is something else entirely — the start
   button and the drawer the open windows live in — so it is hidden as the one
   and kept as the other. */
body[data-product="neura-build"]:not([data-nb-space="desk"]) .cog-dev,
body[data-product="neura-build"][data-nb-space="desk"] .cog-dev:not(.is-collapsed) {
  display: none !important;
}

/* Neura Space's private wellness/device simulators are not Build features.
   The adapter routes these chrome controls to truthful Build surfaces. */
body[data-product="neura-build"] .neva-debug,
body[data-product="neura-build"] .neva-tuning,
body[data-product="neura-build"] [data-debug-panel],
body[data-product="neura-build"] [data-dev-panel] {
  display: none !important;
}

.nb-shell-form {
  display: grid;
  gap: 16px;
  padding: 4px 2px;
}

.nb-shell-field {
  display: grid;
  gap: 8px;
  color: rgba(232, 238, 242, .68);
  font-size: 12px;
}

.nb-shell-field .dw-input {
  box-sizing: border-box;
  width: 100%;
}

.nb-shell-form__error {
  min-height: 18px;
  margin: 0;
  color: #f3a8a3;
  font-size: 11px;
}

.nb-shell-admin .nb-setting-grid {
  margin-top: 14px;
}

body[data-product="neura-build"] .world-menu {
  max-height: min(70vh, 620px);
  overflow-y: auto;
  scrollbar-width: thin;
}

/* The settings body clips what it cannot fit and nothing inside it scrolled,
   so a screen taller than the panel simply ended: with the runs migrated,
   sixteen thousand pixels of them could not be reached at all. The pane that
   holds a screen takes the space that is left and scrolls it, which keeps the
   back button where it is rather than letting it leave with the content. */
body[data-product="neura-build"] .settings-body { overflow-y: auto !important; }
body[data-product="neura-build"] .nb-settings-detail,
body[data-product="neura-build"] .settings-body > .nb-set {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.16) transparent;
}
body[data-product="neura-build"] .nb-settings-detail::-webkit-scrollbar,
body[data-product="neura-build"] .settings-body > .nb-set::-webkit-scrollbar { width: 9px; }
body[data-product="neura-build"] .nb-settings-detail::-webkit-scrollbar-thumb,
body[data-product="neura-build"] .settings-body > .nb-set::-webkit-scrollbar-thumb {
  border: 2.5px solid transparent; border-radius: 999px;
  background: rgba(255,255,255,.16); background-clip: content-box;
}

/* ── a Neva run, as the previous interface drew it ─────────────────────
   A card per run: what it was, what routed it, the contract it had to
   satisfy, and one tile per specialist that worked on it. The grid is the
   original's — one column, two, then three as the panel widens. */
body[data-product="neura-build"] .nb-run-list { display: grid; gap: 12px; }
body[data-product="neura-build"] .nb-run {
  padding: 18px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  background: rgba(255,255,255,.022);
}
body[data-product="neura-build"] .nb-run[data-failed] { border-color: rgba(228,120,120,.22); }
body[data-product="neura-build"] .nb-run__head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 14px; }
body[data-product="neura-build"] .nb-run__ident { flex: 1 1 340px; min-width: 0; }
body[data-product="neura-build"] .nb-run__title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body[data-product="neura-build"] .nb-run__title b { color: rgba(246,248,249,.92); font-size: 13.5px; font-weight: 500; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run__title small { color: rgba(224,231,234,.45); font-size: 11px; }
body[data-product="neura-build"] .nb-run__variant {
  padding: 1px 7px; border: 1px solid rgba(120,205,220,.24); border-radius: 5px;
  background: rgba(120,205,220,.09); color: rgba(150,220,232,.9);
  font-size: 9px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase;
}
body[data-product="neura-build"] .nb-run__prompt { margin: 9px 0 0; max-width: 62ch; color: rgba(224,231,234,.5); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run__marks { display: flex; flex-wrap: wrap; gap: 4px 9px; margin-top: 11px; }
body[data-product="neura-build"] .nb-run__marks span { color: rgba(222,229,232,.4); font-size: 9.5px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-run__marks span + span::before { content: "· "; }
body[data-product="neura-build"] .nb-run__cost { flex: 0 0 auto; text-align: right; }
body[data-product="neura-build"] .nb-run__cost p { margin: 0 0 4px; color: rgba(226,232,235,.55); font-size: 11.5px; font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-run__rate { display: flex; justify-content: flex-end; gap: 5px; margin-top: 8px; }
body[data-product="neura-build"] .nb-run__rate button {
  width: 26px; height: 26px; display: grid; place-items: center;
  border: 1px solid rgba(255,255,255,.11); border-radius: 7px;
  background: transparent; color: rgba(226,232,235,.5); cursor: pointer;
  font-size: 12px; transition: .16s ease;
}
body[data-product="neura-build"] .nb-run__rate button:hover { border-color: rgba(255,255,255,.24); color: #fff; }
body[data-product="neura-build"] .nb-run__rate button[data-nb-run-rate="1"].is-rated { border-color: rgba(110,205,160,.34); background: rgba(110,205,160,.12); color: rgb(140,220,180); }
body[data-product="neura-build"] .nb-run__rate button[data-nb-run-rate="-1"].is-rated { border-color: rgba(228,120,120,.34); background: rgba(228,120,120,.12); color: rgb(236,150,150); }
body[data-product="neura-build"] .nb-run__route { margin: 13px 0 0; color: rgba(222,229,232,.44); font-size: 11px; line-height: 1.7; }
body[data-product="neura-build"] .nb-run__error { margin: 13px 0 0; color: rgb(233,140,140); font-size: 11.5px; line-height: 1.6; }

body[data-product="neura-build"] .nb-run-pill {
  display: inline-flex; flex: 0 0 auto; padding: 2px 8px;
  border: 1px solid rgba(255,255,255,.12); border-radius: 999px;
  background: rgba(255,255,255,.05); color: rgba(226,232,235,.62);
  font-size: 9px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
}
body[data-product="neura-build"] .nb-run-pill[data-tone="good"] { border-color: rgba(110,205,160,.3); background: rgba(110,205,160,.11); color: rgb(136,216,178); }
body[data-product="neura-build"] .nb-run-pill[data-tone="bad"] { border-color: rgba(228,120,120,.3); background: rgba(228,120,120,.11); color: rgb(234,144,144); }
body[data-product="neura-build"] .nb-run-pill[data-tone="busy"] { border-color: rgba(120,200,220,.3); background: rgba(120,200,220,.11); color: rgb(146,214,232); }

body[data-product="neura-build"] .nb-run-kernel {
  margin-top: 15px; padding: 13px;
  border: 1px solid rgba(255,255,255,.075); border-radius: 13px;
  background: rgba(255,255,255,.016);
}
body[data-product="neura-build"] .nb-run-kernel[data-blocking] { border-color: rgba(228,120,120,.24); background: rgba(228,120,120,.045); }
body[data-product="neura-build"] .nb-run-kernel__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
body[data-product="neura-build"] .nb-run-kernel__title { display: flex; align-items: center; gap: 8px; }
body[data-product="neura-build"] .nb-run-kernel__title b { color: rgba(242,246,247,.86); font-size: 11.5px; font-weight: 600; }
body[data-product="neura-build"] .nb-run-kernel__title svg { width: 13px; height: 13px; color: rgba(190,220,230,.7); }
body[data-product="neura-build"] .nb-run-kernel__head small { color: rgba(222,229,232,.4); font-size: 10px; }
body[data-product="neura-build"] .nb-run-metrics { display: grid; gap: 8px; margin-top: 12px; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
body[data-product="neura-build"] .nb-run-metric { padding: 11px; border: 1px solid rgba(255,255,255,.07); border-radius: 10px; background: rgba(0,0,0,.16); }
body[data-product="neura-build"] .nb-run-metric__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
body[data-product="neura-build"] .nb-run-metric__head span { color: rgba(222,229,232,.42); font-size: 9.5px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-run-metric p { margin: 9px 0 0; color: rgba(226,232,235,.6); font-size: 11px; line-height: 1.55; }

body[data-product="neura-build"] .nb-run-diag { margin-top: 11px; padding: 9px 12px; border: 1px solid rgba(255,255,255,.06); border-radius: 9px; background: rgba(0,0,0,.14); }
body[data-product="neura-build"] .nb-run-diag > summary { cursor: pointer; color: rgba(226,232,235,.55); font-size: 11px; font-weight: 500; }
body[data-product="neura-build"] .nb-run-diag__body { margin-top: 11px; color: rgba(222,229,232,.5); font-size: 10.5px; line-height: 1.75; }
body[data-product="neura-build"] .nb-run-diag__body ul { display: grid; gap: 4px; margin: 9px 0 0; padding: 0; list-style: none; }
body[data-product="neura-build"] .nb-run-diag__body li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
body[data-product="neura-build"] .nb-run-diag__body li em { color: rgb(234,144,144); font-style: normal; }
body[data-product="neura-build"] .nb-run-diag__missing { margin-top: 9px; padding: 8px; border: 1px solid rgba(228,120,120,.2); border-radius: 8px; background: rgba(228,120,120,.05); color: rgb(234,150,150); }
body[data-product="neura-build"] .nb-run-diag__missing code { display: block; margin-top: 5px; font-size: 10px; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run-diag__attempt { margin-top: 8px; padding: 8px; border: 1px solid rgba(255,255,255,.06); border-radius: 8px; }
body[data-product="neura-build"] .nb-run-diag__attempt > div { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
body[data-product="neura-build"] .nb-run-diag__attempt p { margin: 5px 0 0; }

body[data-product="neura-build"] .nb-run__steps {
  display: grid; gap: 8px; margin-top: 15px;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
body[data-product="neura-build"] .nb-run-step {
  padding: 12px; border: 1px solid rgba(255,255,255,.07);
  border-radius: 11px; background: rgba(0,0,0,.18); min-width: 0;
}
body[data-product="neura-build"] .nb-run-step__head { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
body[data-product="neura-build"] .nb-run-step__role { color: rgba(240,244,246,.8); font-size: 10px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-run-step__fallback {
  margin-left: auto; padding: 1px 6px; border-radius: 4px;
  background: rgba(226,180,110,.13); color: rgb(226,190,130);
  font-size: 9px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
}
body[data-product="neura-build"] .nb-run-step__model { margin: 10px 0 0; color: rgba(244,247,248,.88); font-size: 12px; font-weight: 500; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run-step__origin { margin: 4px 0 0; color: rgba(220,228,231,.4); font-size: 10px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run-step__meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 9px; color: rgba(222,229,232,.44); font-size: 10px; font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-run-step__note { margin: 9px 0 0; color: rgba(224,231,234,.52); font-size: 10.5px; line-height: 1.6; overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-run-step__error { margin: 9px 0 0; color: rgb(233,140,140); font-size: 10.5px; line-height: 1.6; overflow-wrap: anywhere; }

/* Settings carries the whole workspace — providers, blueprints, runs, the
   database, every project surface — and was reading it through a 585px
   window two thirds of a column wide. It stands as wide as the screen
   sensibly allows, centred, and as tall as the viewport can give it.
   The transform is the shell's opening animation and is left alone; only
   where the panel starts and how big it is are ours. */
body[data-product="neura-build"] .settings-panel {
  left: 50% !important;
  width: min(1180px, 94vw) !important;
  height: min(86vh, 900px) !important;
  max-height: calc(100vh - 110px) !important;
}

/* Everything a record knows, in columns that stay readable at any width. */
body[data-product="neura-build"] .nb-set-record { border-radius: 10px; background: rgba(255,255,255,.018); }
body[data-product="neura-build"] .nb-set-record > summary {
  display: flex; align-items: center; gap: 10px;
  cursor: pointer; list-style: none;
}
body[data-product="neura-build"] .nb-set-record > summary::-webkit-details-marker { display: none; }
body[data-product="neura-build"] .nb-set-record > summary > .nb-set-row { flex: 1 1 auto; min-width: 0; }
body[data-product="neura-build"] .nb-set-record__chev {
  flex: 0 0 auto; display: grid; place-items: center;
  width: 20px; height: 20px; margin-right: 12px;
  color: rgba(255,255,255,.34); transform: rotate(90deg);
  transition: transform .18s ease, color .18s ease;
}
body[data-product="neura-build"] .nb-set-record[open] > summary .nb-set-record__chev { transform: rotate(-90deg); color: rgba(255,255,255,.7); }
body[data-product="neura-build"] .nb-set-record > summary:hover .nb-set-record__chev { color: rgba(255,255,255,.7); }
body[data-product="neura-build"] .nb-set-record__body {
  padding: 4px 14px 16px 42px;
  border-top: 1px solid rgba(255,255,255,.05);
}
body[data-product="neura-build"] .nb-set-facts {
  display: grid; gap: 1px 18px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  margin-top: 12px;
}
body[data-product="neura-build"] .nb-set-fact {
  display: flex; align-items: baseline; gap: 8px;
  padding: 5px 0; min-width: 0;
  border-bottom: 1px solid rgba(255,255,255,.035);
}
body[data-product="neura-build"] .nb-set-fact > span {
  flex: 0 0 auto; max-width: 45%;
  color: rgba(226,232,235,.42); font-size: 10.5px; font-weight: 300;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
body[data-product="neura-build"] .nb-set-fact > b {
  flex: 1 1 auto; min-width: 0;
  color: rgba(244,247,248,.86); font-size: 11.5px; font-weight: 400;
  text-align: right; overflow-wrap: anywhere;
}
body[data-product="neura-build"] .nb-set-steps { display: grid; gap: 6px; margin-top: 12px; }
body[data-product="neura-build"] .nb-set-steps__head {
  color: rgba(226,232,235,.4); font-size: 9px; font-weight: 700;
  letter-spacing: .17em; text-transform: uppercase;
}
body[data-product="neura-build"] .nb-set-step {
  display: flex; align-items: flex-start; gap: 11px;
  padding: 9px 12px; border: 1px solid rgba(255,255,255,.055);
  border-radius: 9px; background: rgba(255,255,255,.02);
}
body[data-product="neura-build"] .nb-set-step[data-state="failed"] { border-color: rgba(228,120,120,.28); }
body[data-product="neura-build"] .nb-set-step__seq {
  flex: 0 0 auto; display: grid; place-items: center;
  width: 19px; height: 19px; border-radius: 50%;
  background: rgba(255,255,255,.06); color: rgba(240,244,246,.62);
  font-size: 9.5px; font-weight: 600;
}
body[data-product="neura-build"] .nb-set-step__body { flex: 1 1 auto; min-width: 0; display: grid; gap: 3px; }
body[data-product="neura-build"] .nb-set-step__body strong { color: rgba(245,248,249,.88); font-size: 11.5px; font-weight: 500; text-transform: capitalize; }
body[data-product="neura-build"] .nb-set-step__body small { color: rgba(224,231,234,.44); font-size: 10.5px; }
body[data-product="neura-build"] .nb-set-step__body em { color: rgba(230,236,239,.6); font-size: 11px; font-style: normal; overflow-wrap: anywhere; }

body[data-product="neura-build"] [data-settings-panel],
body[data-product="neura-build"] [data-atmos-panel],
body[data-product="neura-build"] [data-cog-panel],
body[data-product="neura-build"] [data-wear-panel],
body[data-product="neura-build"] [data-nb-menu-panel],
body[data-product="neura-build"] [data-wl-panel] {
  z-index: 120;
}

body[data-product="neura-build"] .world,
body[data-product="neura-build"] .nb-space-surface {
  transition: opacity 360ms cubic-bezier(.22,.75,.2,1), filter 360ms ease;
}

.nb-space-surface {
  position: fixed;
  z-index: 32;
  inset: 122px 26px 112px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.095);
  border-radius: 25px;
  background:
    radial-gradient(circle at 50% -20%, rgba(255,255,255,.105), transparent 38%),
    linear-gradient(145deg, rgba(13,17,19,.79), rgba(9,12,14,.68));
  box-shadow: 0 34px 90px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.06);
  color: rgba(246,248,249,.96);
  font-family: Inter, sans-serif;
  backdrop-filter: blur(34px) saturate(118%);
  -webkit-backdrop-filter: blur(34px) saturate(118%);
  animation: nb-space-arrive 320ms cubic-bezier(.2,.78,.24,1) both;
}

.nb-space-surface::before {
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background-image: linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.5), transparent 75%);
  content: "";
  pointer-events: none;
}

.nb-space-surface[data-space="build"] {
  inset: 0;
  display: grid;
  overflow: hidden;
  place-items: center;
  padding: 96px 24px 42px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  pointer-events: none;
}

.nb-space-surface[data-space="build"]::before {
  display: none;
}

.nb-build-stage {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  pointer-events: none;
}

/* Build is cut from the exact Neura Space widget material: deep charcoal glass,
   a quiet top reflection, Raleway for atmosphere and Inter for information. */
.breathing-widget.nb-build-widget {
  position: relative;
  top: auto;
  left: auto;
  isolation: isolate;
  box-sizing: border-box;
  width: min(1060px, calc(100vw - 56px));
  height: min(560px, calc(100vh - 218px));
  min-height: min(470px, calc(100vh - 218px));
  max-width: none;
  margin: 0;
  padding: 20px 22px 18px;
  /* `hidden` makes the widget a scroll container. Focusing a control inside the
     upward-opening model menu could then silently scroll the whole glass card. */
  overflow: clip;
  border: 0;
  border-radius: 28px;
  background:
    linear-gradient(145deg, rgba(27, 29, 30, .34) 0%, rgba(14, 15, 16, .28) 48%, rgba(6, 7, 8, .4) 100%);
  backdrop-filter: blur(34px) saturate(58%) brightness(76%) contrast(108%);
  -webkit-backdrop-filter: blur(34px) saturate(58%) brightness(76%) contrast(108%);
  box-shadow:
    0 46px 120px rgba(0, 0, 0, .62),
    0 14px 32px rgba(0, 0, 0, .3),
    inset 0 1px 0 rgba(248, 250, 252, .1),
    inset 0 -1px 0 rgba(0, 0, 0, .34);
  font-family: var(--font-sans, "Inter", sans-serif);
  pointer-events: auto;
}

.breathing-widget.nb-build-widget::after {
  position: absolute;
  z-index: 0;
  inset: 1px;
  border-radius: 27px;
  background:
    linear-gradient(115deg, rgba(255, 255, 255, .042), transparent 31%),
    radial-gradient(80% 34% at 50% 0%, rgba(255, 255, 255, .055), transparent 72%);
  content: "";
  pointer-events: none;
}

.nb-build-widget__haze {
  position: absolute;
  z-index: 0;
  inset: -20% -10%;
  border-radius: inherit;
  background:
    radial-gradient(34% 58% at 76% 46%, rgba(239, 242, 244, .07), transparent 74%),
    radial-gradient(38% 64% at 8% 78%, rgba(255, 255, 255, .035), transparent 78%),
    radial-gradient(44% 32% at 48% -4%, rgba(255, 255, 255, .07), transparent 78%);
  filter: blur(42px);
  opacity: .72;
  pointer-events: none;
}

.nb-build-widget > .br-noise { z-index: 1; opacity: .14; mix-blend-mode: soft-light; }
.nb-build-widget .br-head { z-index: 4; flex: 0 0 auto; }
.nb-build-widget .br-logo .nb-icon { width: 18px; height: 18px; }
.nb-build-widget .br-action .nb-icon { width: 16px; height: 16px; }

.nb-build-widget__body.br-body {
  position: relative;
  z-index: 3;
  grid-template-columns: minmax(0, 1.48fr) minmax(286px, .72fr);
  gap: 20px;
  margin-top: 14px;
  overflow: visible;
}

.nb-build-widget__composer.br-left.nb-composer-card {
  min-height: 0;
  margin-top: 0;
  padding: 7px 7px 3px 5px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}

.nb-build-kicker {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 9px;
  color: rgba(235, 241, 246, .5);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 8px;
  font-weight: 300;
  letter-spacing: .24em;
  line-height: 1;
  text-transform: uppercase;
}

.nb-build-kicker > span {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(237, 244, 249, .88);
  box-shadow: 0 0 11px rgba(224, 238, 248, .72);
}

.nb-build-widget__composer .br-title {
  margin: 0;
  color: rgba(244, 247, 249, .96);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: clamp(30px, 2.8vw, 40px);
  font-weight: 200;
  letter-spacing: -.035em;
  line-height: 1.03;
  text-wrap: balance;
}

.nb-build-widget__composer .br-instruction {
  max-width: 540px;
  margin-top: 9px;
  color: rgba(225, 233, 239, .54);
  font-family: var(--font-sans, "Inter", sans-serif);
  font-size: 11px;
  font-weight: 400;
  line-height: 1.55;
}

.nb-build-widget__composer .nb-build-form {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  width: 100%;
  margin-top: 17px;
}

.nb-build-prompt-shell {
  position: relative;
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  overflow: visible;
  padding: 14px 14px 12px;
  border: 1px solid rgba(234, 241, 247, .14);
  border-radius: 18px;
  background:
    radial-gradient(72% 120% at 86% 108%, rgba(161, 195, 220, .1), transparent 68%),
    linear-gradient(145deg, rgba(3, 7, 8, .68), rgba(17, 22, 24, .54));
  backdrop-filter: blur(26px) saturate(135%);
  -webkit-backdrop-filter: blur(26px) saturate(135%);
  box-shadow:
    0 22px 54px rgba(0, 0, 0, .3),
    inset 0 1px 0 rgba(255, 255, 255, .055),
    inset 0 0 0 1px rgba(0, 0, 0, .14);
  transition: border-color .24s ease, background .24s ease, box-shadow .24s ease;
}

.nb-build-prompt-shell::after {
  position: absolute;
  z-index: -1;
  right: 7%;
  bottom: -24px;
  width: 210px;
  height: 82px;
  border-radius: 50%;
  background: rgba(196, 218, 235, .1);
  filter: blur(38px);
  content: "";
  pointer-events: none;
}

.nb-build-prompt-shell:focus-within {
  border-color: rgba(229, 239, 246, .28);
  background:
    radial-gradient(72% 120% at 86% 108%, rgba(174, 207, 231, .13), transparent 68%),
    linear-gradient(145deg, rgba(3, 7, 8, .72), rgba(18, 24, 26, .59));
  box-shadow:
    0 25px 62px rgba(0, 0, 0, .34),
    0 0 0 3px rgba(220, 234, 244, .045),
    inset 0 1px 0 rgba(255, 255, 255, .075);
}

.nb-build-prompt-meta {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: rgba(230, 237, 244, .4);
  font-family: var(--font-sans, "Inter", sans-serif);
  font-size: 8px;
  letter-spacing: .16em;
  line-height: 1;
  text-transform: uppercase;
}

.nb-build-prompt-meta label { color: rgba(238, 243, 247, .67); font-weight: 500; }
.nb-build-prompt-meta span { display: flex; align-items: center; gap: 7px; }
.nb-build-prompt-meta span::before {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(228, 240, 248, .84);
  box-shadow: 0 0 9px rgba(216, 234, 247, .72);
  content: "";
}

.nb-build-prompt-meta[data-neva-state="loading"] span::before {
  background: rgba(226, 233, 238, .44);
  box-shadow: 0 0 8px rgba(220, 232, 240, .24);
  animation: nb-neva-readiness-pulse 1.2s ease-in-out infinite;
}

.nb-build-prompt-meta[data-neva-state="unavailable"] span {
  color: rgba(244, 190, 150, .78);
}

.nb-build-prompt-meta[data-neva-state="unavailable"] span::before {
  background: #e9a36d;
  box-shadow: 0 0 8px rgba(233, 163, 109, .38);
}

.nb-build-widget .nb-model-trigger:disabled {
  cursor: not-allowed;
  opacity: .48;
}

.nb-build-widget .nb-build-submit--setup {
  border-color: rgba(235, 184, 143, .26);
  background: linear-gradient(145deg, rgba(181, 119, 76, .2), rgba(255, 255, 255, .065));
}

@keyframes nb-neva-readiness-pulse {
  50% { opacity: .42; }
}

.nb-build-widget .nb-build-widget__composer textarea {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  width: 100%;
  min-height: 74px;
  flex: 1;
  resize: none;
  padding: 17px 2px 12px;
  border: 0;
  outline: 0;
  background: transparent;
  color: rgba(248, 250, 252, .95);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: clamp(16px, 1.45vw, 19px);
  font-weight: 300;
  letter-spacing: -.012em;
  line-height: 1.46;
  caret-color: rgba(245, 249, 252, .92);
}

.nb-build-widget .nb-build-widget__composer textarea::placeholder { color: rgba(230, 238, 244, .28); }
.nb-build-widget .nb-build-widget__composer textarea:focus,
.nb-build-widget .nb-build-widget__composer textarea:focus-visible { outline: 0; box-shadow: none; }

.nb-build-widget__memory {
  display: flex;
  min-width: 0;
  flex-direction: column;
  padding: 17px 14px 13px;
  border: 1px solid rgba(235, 241, 247, .08);
  border-radius: 20px;
  overflow: hidden;
  background:
    radial-gradient(85% 70% at 40% 0%, rgba(205, 222, 236, .065), transparent 72%),
    rgba(4, 7, 8, .24);
  backdrop-filter: blur(20px) saturate(125%);
  -webkit-backdrop-filter: blur(20px) saturate(125%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 18px 40px rgba(0, 0, 0, .16);
}

.nb-build-widget__memory .nb-build-memory__head { align-items: start; gap: 12px; }
.nb-build-widget__memory .nb-build-memory__head > span {
  display: grid;
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 50%;
  color: rgba(243, 247, 250, .74);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 12px;
  font-weight: 300;
}

.nb-build-widget__memory .nb-build-memory__head h2 {
  margin: 1px 0 0;
  color: rgba(244, 247, 250, .92);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 19px;
  font-weight: 300;
  letter-spacing: -.02em;
  line-height: 1.15;
}

.nb-build-widget__memory .nb-build-memory__head > div > p:last-child {
  max-width: 220px;
  margin: 7px 0 0;
  color: rgba(225, 233, 239, .4);
  font-size: 9px;
  line-height: 1.5;
}

.nb-build-widget__memory .nb-build-memory__list {
  min-height: 0;
  flex: 1;
  overflow-x: hidden;
  overflow-y: auto;
  margin-top: 11px;
  padding: 2px 7px 2px 0;
  scrollbar-color: rgba(224, 235, 244, .3) transparent;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  mask-image: linear-gradient(to bottom, transparent 0, #000 7px, #000 calc(100% - 7px), transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 7px, #000 calc(100% - 7px), transparent 100%);
}

.nb-build-widget__memory .nb-build-memory__list::-webkit-scrollbar { width: 4px; }
.nb-build-widget__memory .nb-build-memory__list::-webkit-scrollbar-track { background: transparent; }
.nb-build-widget__memory .nb-build-memory__list::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: linear-gradient(to bottom, rgba(230, 240, 248, .16), rgba(230, 240, 248, .48), rgba(230, 240, 248, .16));
}

.nb-build-widget__memory .nb-build-memory__list > button {
  min-height: 56px;
  margin: 3px 0;
  padding: 10px 9px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: rgba(255, 255, 255, .018);
  transition: background .22s var(--chrome-ease, ease), border-color .22s ease, transform .22s var(--chrome-ease, ease);
}

.nb-build-widget__memory .nb-build-memory__list > button:hover,
.nb-build-widget__memory .nb-build-memory__list > button:focus-visible {
  border-color: rgba(238, 244, 248, .09);
  background: linear-gradient(100deg, rgba(255, 255, 255, .075), rgba(255, 255, 255, .025));
  transform: translateX(2px);
}

.nb-build-widget__memory .nb-build-memory__list > button:focus-visible { outline: 1px solid rgba(232, 240, 247, .45); outline-offset: 2px; }
.nb-build-memory__copy { min-width: 0; }
.nb-build-memory__copy strong { font-family: var(--font-sans, "Inter", sans-serif); font-size: 10px; font-weight: 500; }
.nb-build-memory__copy small { margin-top: 3px; color: rgba(226, 233, 240, .36); font-size: 8.5px; }
.nb-build-memory__meta { display: grid; flex: 0 0 auto; justify-items: end; gap: 7px; }
.nb-build-memory__meta .nb-icon {
  width: 13px;
  height: 13px;
  color: rgba(236, 242, 247, .3);
  transform: translateX(-3px);
  transition: color .22s ease, transform .22s ease;
}
.nb-build-widget__memory .nb-build-memory__list > button:hover .nb-build-memory__meta .nb-icon,
.nb-build-widget__memory .nb-build-memory__list > button:focus-visible .nb-build-memory__meta .nb-icon { color: rgba(242, 246, 249, .78); transform: translateX(0); }

.nb-build-widget__stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-top: 6px;
  padding-top: 11px;
  border-top: 1px solid rgba(255, 255, 255, .07);
}
.nb-build-widget__stats span { color: rgba(255, 255, 255, .36); font-size: 7px; letter-spacing: .1em; text-align: center; text-transform: uppercase; }
.nb-build-widget__stats strong { display: block; margin-bottom: 3px; color: rgba(255, 255, 255, .82); font-family: var(--font-display, "Raleway", sans-serif); font-size: 14px; font-weight: 300; letter-spacing: 0; }

.nb-build-file-input { display: none !important; }
.nb-build-attachment-strip {
  display: flex;
  min-height: 34px;
  align-items: center;
  gap: 7px;
  overflow-x: auto;
  margin-top: 7px;
  padding: 2px 1px 4px;
  scrollbar-width: none;
}
.nb-build-attachment-strip[hidden] { display: none; }
.nb-build-attachment-strip::-webkit-scrollbar { display: none; }
.nb-build-attachment {
  display: inline-flex;
  min-width: 0;
  max-width: 170px;
  height: 30px;
  flex: 0 0 auto;
  align-items: center;
  gap: 7px;
  padding: 2px 6px 2px 3px;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 999px;
  background: rgba(255, 255, 255, .055);
  color: rgba(255, 255, 255, .76);
  font-size: 9px;
}
.nb-build-attachment > img,
.nb-build-attachment > .nb-icon { width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; object-fit: cover; }
.nb-build-attachment > .nb-icon { box-sizing: border-box; padding: 5px; border: 1px solid rgba(255, 255, 255, .13); }
.nb-build-attachment > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nb-build-attachment > button { display: grid; width: 18px; height: 18px; flex: 0 0 auto; place-items: center; padding: 0; border: 0; border-radius: 50%; background: transparent; color: rgba(255, 255, 255, .48); cursor: pointer; }
.nb-build-attachment > button:hover { background: rgba(255, 255, 255, .1); color: #fff; }

.nb-build-widget .nb-composer-toolbar {
  position: relative;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 49px;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(255, 255, 255, .075);
}
.nb-build-widget .nb-composer-tools { display: flex; min-width: 0; align-items: center; gap: 7px; }

/* These controls inherit the real Breathing keys. Specificity only normalises
   their dimensions; it does not replace the source button material. */
.nb-build-widget .nb-build-control {
  box-sizing: border-box;
  min-height: 38px;
  padding: 8px 13px;
  border-radius: 9px;
  color: rgba(238, 243, 247, .76);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 11px;
  font-weight: 300;
  letter-spacing: .035em;
  line-height: 18px;
}
.nb-build-widget .nb-build-control .nb-icon { width: 14px; height: 14px; flex: 0 0 auto; }
.nb-build-widget .nb-build-control--icon { width: 38px; padding: 9px; }
.nb-build-widget .nb-build-control:focus-visible,
.nb-build-widget .br-action:focus-visible,
.nb-model-option:focus-visible { outline: 1px solid rgba(255, 255, 255, .28); outline-offset: 2px; }
.nb-build-widget .nb-build-control.is-active { color: #f7fafc; background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .2); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .07); }

.nb-build-workflow {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  border: 1px solid rgba(255, 255, 255, .07);
  border-radius: 11px;
  background: rgba(0, 0, 0, .28);
  box-shadow: inset 0 1px 6px rgba(0, 0, 0, .2);
}
.nb-build-widget .nb-build-workflow .nb-build-control { min-height: 32px; padding: 6px 10px; border-color: transparent; border-radius: 7px; background: transparent; }
.nb-build-widget .nb-build-workflow .nb-build-control.is-active { border-color: rgba(255, 255, 255, .11); background: rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), 0 4px 12px rgba(0, 0, 0, .18); }

.nb-model-picker { position: relative; flex: 0 0 auto; }
.nb-build-widget .nb-model-trigger {
  display: grid;
  min-width: 140px;
  grid-template-columns: 24px minmax(0, 1fr) 14px;
  gap: 8px;
  padding: 5px 9px 5px 7px;
  border-color: rgba(255, 255, 255, .13);
  background: rgba(255, 255, 255, .04);
  text-align: left;
}
.nb-model-trigger__mark { display: grid; width: 24px; height: 24px; place-items: center; border: 1px solid rgba(255, 255, 255, .11); border-radius: 7px; background: rgba(255, 255, 255, .04); }
.nb-model-trigger__copy { display: grid; min-width: 0; line-height: 1; }
.nb-model-trigger__copy small { color: rgba(226, 234, 240, .4); font-family: var(--font-sans, "Inter", sans-serif); font-size: 7px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.nb-model-trigger__copy strong { overflow: hidden; margin-top: 4px; color: rgba(245, 248, 250, .88); font-size: 10px; font-weight: 300; text-overflow: ellipsis; white-space: nowrap; }
.nb-model-trigger__chevron { color: rgba(231, 238, 243, .45); transition: transform .18s var(--chrome-ease, ease); }
.nb-model-trigger[aria-expanded="true"] .nb-model-trigger__chevron { transform: rotate(180deg); }

.nb-model-menu {
  position: absolute;
  z-index: 40;
  bottom: calc(100% + 11px);
  left: 0;
  width: 430px;
  padding: 13px;
  border: 1px solid rgba(239, 244, 248, .13);
  border-radius: 17px;
  background:
    radial-gradient(90% 80% at 75% 0%, rgba(171, 199, 220, .1), transparent 68%),
    rgba(9, 13, 15, .94);
  backdrop-filter: blur(34px) saturate(145%);
  -webkit-backdrop-filter: blur(34px) saturate(145%);
  box-shadow: 0 28px 72px rgba(0, 0, 0, .68), inset 0 1px 0 rgba(255, 255, 255, .055);
  opacity: 0;
  outline: 0;
  transform: translateY(7px) scale(.975);
  transform-origin: left bottom;
  transition: opacity .18s var(--chrome-ease, ease), transform .18s var(--chrome-ease, ease);
}
.nb-model-menu[hidden] { display: none; }
.nb-model-menu.is-visible { opacity: 1; transform: none; }
.nb-model-menu__head { display: flex; align-items: start; justify-content: space-between; gap: 16px; padding: 2px 3px 11px; }
.nb-model-menu__head > div { display: grid; gap: 4px; }
.nb-model-menu__head > div > span { color: rgba(229, 237, 243, .38); font-size: 7px; font-weight: 500; letter-spacing: .2em; }
.nb-model-menu__head > div > strong { color: rgba(246, 249, 251, .88); font-family: var(--font-display, "Raleway", sans-serif); font-size: 14px; font-weight: 300; }
.nb-model-menu__status { display: inline-flex; align-items: center; gap: 6px; color: rgba(226, 235, 241, .45); font-size: 8px; }
.nb-model-menu__status i { width: 4px; height: 4px; border-radius: 50%; background: rgba(230, 242, 249, .8); box-shadow: 0 0 8px rgba(220, 237, 248, .7); }
.nb-model-menu__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.nb-model-menu__grid { scrollbar-color: rgba(231, 240, 246, .28) transparent; scrollbar-width: thin; }
.nb-model-menu__grid::-webkit-scrollbar { width: 3px; }
.nb-model-menu__grid::-webkit-scrollbar-track { background: transparent; }
.nb-model-menu__grid::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(231, 240, 246, .28); }
.nb-model-option {
  display: grid;
  min-height: 94px;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(255, 255, 255, .07);
  border-radius: 12px;
  background: rgba(255, 255, 255, .025);
  color: rgba(240, 245, 248, .78);
  cursor: pointer;
  font-family: var(--font-sans, "Inter", sans-serif);
  text-align: left;
  transition: background .18s ease, border-color .18s ease, transform .18s var(--chrome-ease, ease);
}
.nb-model-option:hover,
.nb-model-option:focus-visible { border-color: rgba(255, 255, 255, .16); background: rgba(255, 255, 255, .07); transform: translateY(-1px); }
.nb-model-option.is-selected { border-color: rgba(239, 245, 249, .24); background: linear-gradient(145deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .055)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08); }
.nb-model-option__top { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 7px; }
.nb-model-option__top > span { color: rgba(248, 250, 252, .94); font-family: var(--font-display, "Raleway", sans-serif); font-size: 12px; font-weight: 300; }
.nb-model-option__top small { color: rgba(225, 234, 240, .42); font-size: 7px; letter-spacing: .06em; text-transform: uppercase; }
.nb-model-option__top .nb-icon { width: 13px; height: 13px; color: rgba(245, 249, 252, .86); }
.nb-model-option__description { color: rgba(224, 233, 239, .43); font-size: 8px; line-height: 1.45; }
.nb-model-option__signal { display: flex; align-items: center; gap: 8px; }
.nb-model-option__signal i { position: relative; width: 58px; height: 2px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, .09); }
.nb-model-option__signal i::after { position: absolute; inset: 0 auto 0 0; width: calc(var(--nb-model-signal) * 20%); border-radius: inherit; background: rgba(235, 243, 248, .68); box-shadow: 0 0 8px rgba(220, 237, 247, .35); content: ""; }
.nb-model-option__signal small { color: rgba(225, 234, 240, .32); font-size: 7px; }
.nb-model-menu__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; padding: 10px 3px 0; border-top: 1px solid rgba(255, 255, 255, .07); color: rgba(226, 235, 241, .38); font-size: 7.5px; }
.nb-model-menu__foot > span { display: inline-flex; align-items: center; gap: 6px; }
.nb-model-menu__foot .nb-icon { width: 12px; height: 12px; }
.nb-model-menu__foot strong { color: rgba(233, 240, 245, .55); font-weight: 400; }

.nb-build-widget .nb-build-submit {
  min-width: 138px;
  flex: 0 0 auto;
  justify-content: space-between;
  padding: 7px 8px 7px 16px;
  border-radius: 10px;
  border-color: rgba(244, 248, 251, .28);
  background: linear-gradient(145deg, rgba(255, 255, 255, .13), rgba(255, 255, 255, .075));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 10px 26px rgba(0, 0, 0, .18);
  color: rgba(248, 250, 252, .94);
  font-size: 11px;
}
.nb-build-widget .nb-build-submit:hover {
  border-color: rgba(244, 248, 251, .28);
  background: linear-gradient(145deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, .1));
}
.nb-build-widget .nb-build-submit > *:not(.br-btn-bloom) { position: relative; z-index: 1; }
.nb-build-submit__arrow { display: grid; width: 25px; height: 25px; place-items: center; border-radius: 7px; background: rgba(255, 255, 255, .09); }
.nb-build-submit__arrow .nb-icon { width: 13px; height: 13px; transition: transform .2s var(--chrome-ease, ease); }
.nb-build-widget .nb-build-submit:hover .nb-build-submit__arrow .nb-icon { transform: translateX(2px); }

.nb-build-assurance {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 9px 2px 0;
  color: rgba(226, 234, 240, .36);
  font-size: 8px;
  line-height: 1.3;
}
.nb-build-assurance > .nb-icon { width: 12px; height: 12px; }
.nb-build-assurance > span { margin-left: auto; color: rgba(230, 238, 244, .28); font: 500 8px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }

.nb-space-surface[hidden],
.nb-space-dock[hidden] {
  display: none !important;
}

/* Beats the shared `body[data-product] .nb-space-surface` transition above, so
   the exit keeps its own (shorter) duration instead of inheriting 360ms. */
body[data-product="neura-build"] .nb-space-surface.is-leaving {
  animation: none;
  opacity: 0;
  transform: scale(.988) translateY(-8px);
  transition: opacity 200ms cubic-bezier(.4,0,.2,1), transform 200ms cubic-bezier(.4,0,.2,1);
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  body[data-product="neura-build"] .nb-space-surface.is-leaving { transform: none; }
}

.nb-space-scroll {
  box-sizing: border-box;
  height: 100%;
  overflow: auto;
  padding: 30px 34px 44px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.18) transparent;
}

.nb-space-scroll::-webkit-scrollbar { width: 6px; }
.nb-space-scroll::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(255,255,255,.15); }

.nb-space-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  max-width: 1540px;
  margin: 0 auto 24px;
}

.nb-space-head > div:first-child { min-width: 0; }
.nb-eyebrow {
  margin: 0 0 8px;
  color: rgba(255,255,255,.42);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: .24em;
  text-transform: uppercase;
}

.nb-space-head h1 {
  margin: 0;
  font-family: Raleway, Inter, sans-serif;
  font-size: clamp(27px, 3vw, 48px);
  font-weight: 300;
  letter-spacing: -.035em;
  line-height: 1.05;
}

.nb-space-head > div:first-child > p:last-child {
  max-width: 680px;
  margin: 10px 0 0;
  color: rgba(255,255,255,.48);
  font-size: 12px;
  line-height: 1.55;
}

.nb-space-head__actions { display: flex; flex: 0 0 auto; gap: 8px; }
.nb-primary-action,
.nb-quiet-action,
.nb-inline-action,
.nb-project-card button,
.nb-template-card button,
.nb-filter-tabs button,
.nb-space-dock button,
.nb-send-button,
.nb-composer-mode button,
.nb-segment button,
.nb-tool-button {
  color: inherit;
  font: inherit;
}

.nb-primary-action,
.nb-quiet-action {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 0 16px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 12px;
  background: rgba(255,255,255,.055);
  cursor: pointer;
  transition: background-color 170ms ease, border-color 170ms ease, transform 170ms ease;
}

.nb-primary-action {
  border-color: rgba(255,255,255,.5);
  background: rgba(245,247,248,.94);
  color: #111518;
}

.nb-primary-action:hover,
.nb-quiet-action:hover { transform: translateY(-1px); }
.nb-quiet-action:hover { border-color: rgba(255,255,255,.28); background: rgba(255,255,255,.09); }
.nb-primary-action .nb-icon,
.nb-quiet-action .nb-icon { width: 15px; height: 15px; }

.nb-build-layout {
  display: grid;
  max-width: 1320px;
  grid-template-columns: minmax(0, 1.65fr) minmax(280px, .72fr);
  gap: 16px;
  margin: 0 auto;
}

.nb-composer-card,
.nb-build-memory,
.nb-metric,
.nb-project-card,
.nb-template-card,
.nb-runtime-card {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.115);
  background: linear-gradient(148deg, rgba(255,255,255,.075), rgba(255,255,255,.024));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 22px 52px rgba(0,0,0,.17);
}

.nb-composer-card {
  min-height: 325px;
  padding: 24px;
  border-radius: 22px;
}

.nb-composer-card__glow {
  position: absolute;
  right: -100px;
  bottom: -180px;
  width: 420px;
  height: 420px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(182,218,255,.12), transparent 62%);
  pointer-events: none;
}

.nb-composer-mode {
  position: relative;
  z-index: 1;
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 12px;
  background: rgba(0,0,0,.16);
}

.nb-composer-mode button,
.nb-segment button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: rgba(255,255,255,.45);
  cursor: pointer;
}

.nb-composer-mode button { min-height: 32px; padding: 0 12px; font-size: 11px; }
.nb-composer-mode button.is-active,
.nb-segment button.is-active { background: rgba(255,255,255,.1); color: rgba(255,255,255,.95); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
.nb-composer-mode .nb-icon,
.nb-segment .nb-icon { width: 14px; height: 14px; }

.nb-composer-card form { position: relative; z-index: 1; margin-top: 25px; }
.nb-composer-card form > label { display: block; margin-bottom: 8px; color: rgba(255,255,255,.58); font-size: 11px; }
.nb-composer-card textarea {
  box-sizing: border-box;
  width: 100%;
  min-height: 118px;
  resize: none;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: rgba(255,255,255,.95);
  font: 300 clamp(17px, 2vw, 26px)/1.42 Raleway, Inter, sans-serif;
  caret-color: rgba(255,255,255,.86);
}
.nb-composer-card textarea::placeholder { color: rgba(255,255,255,.21); }
.nb-composer-card textarea:focus { outline: 0; box-shadow: none; }

.nb-composer-toolbar {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 13px -8px -8px;
  padding: 10px 10px 0;
  border-top: 1px solid rgba(255,255,255,.08);
}

.nb-composer-tools { display: flex; min-width: 0; align-items: center; gap: 7px; }
.nb-tool-button {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  padding: 0;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 9px;
  background: rgba(255,255,255,.035);
  cursor: pointer;
}
.nb-tool-button .nb-icon { width: 15px; height: 15px; }
.nb-segment { display: inline-flex; gap: 2px; padding: 3px; border-radius: 10px; background: rgba(0,0,0,.17); }
.nb-segment button { min-height: 27px; padding: 0 9px; font-size: 10px; }

.nb-model-select {
  display: inline-flex;
  height: 34px;
  align-items: center;
  gap: 7px;
  padding: 0 9px;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 10px;
  background: rgba(255,255,255,.035);
  color: rgba(255,255,255,.7);
}
.nb-model-select .nb-icon { width: 14px; height: 14px; }
.nb-model-select select { max-width: 150px; border: 0; outline: 0; background: transparent; color: inherit; font: 10px Inter, sans-serif; }
.nb-model-select select option { background: #14181a; color: #e9edef; }

.nb-send-button {
  display: inline-flex;
  height: 36px;
  align-items: center;
  gap: 10px;
  padding: 0 13px;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 10px;
  background: rgba(248,249,250,.94);
  color: #101416;
  cursor: pointer;
}
.nb-send-button .nb-icon { width: 14px; height: 14px; }

.nb-build-chat {
  position: relative;
  z-index: 2;
  max-height: 180px;
  overflow: auto;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.07);
}
.nb-build-chat[hidden] { display: none; }
.nb-build-chat > div { display: grid; gap: 8px; }
.nb-build-chat__bubble { justify-self: start; max-width: 86%; margin: 0; padding: 9px 11px; border-radius: 12px 12px 12px 3px; background: rgba(255,255,255,.065); color: rgba(255,255,255,.65); font-size: 11px; line-height: 1.55; white-space: pre-wrap; }
.nb-build-chat__bubble--you { justify-self: end; border-radius: 12px 12px 3px; background: rgba(255,255,255,.13); color: rgba(255,255,255,.9); }

.nb-build-memory { min-height: 325px; padding: 21px; border-radius: 22px; }
.nb-build-memory__head { display: flex; align-items: start; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.nb-build-memory__head h2 { margin: 0; font: 300 18px/1.2 Raleway, Inter, sans-serif; }
.nb-build-memory__head > span { display: grid; width: 28px; height: 28px; place-items: center; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; color: rgba(255,255,255,.58); font-size: 10px; }
.nb-build-memory__list { display: grid; gap: 3px; }
.nb-build-memory__list > button {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 11px;
  width: 100%;
  padding: 11px 8px;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.nb-build-memory__list strong,
.nb-build-memory__list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nb-build-memory__list strong { font-size: 11px; font-weight: 500; }
.nb-build-memory__list small { margin-top: 3px; color: rgba(255,255,255,.35); font-size: 9px; }
.nb-build-memory__list time { color: rgba(255,255,255,.3); font-size: 9px; }

.nb-build-signals,
.nb-operate-metrics {
  display: grid;
  max-width: 1320px;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 10px;
  margin: 14px auto 0;
}

.nb-metric {
  display: grid;
  min-height: 104px;
  grid-template-columns: auto 1fr;
  gap: 4px 10px;
  padding: 15px;
  border-radius: 16px;
}
.nb-metric__icon { display: grid; width: 28px; height: 28px; grid-row: span 2; place-items: center; border-radius: 9px; background: rgba(255,255,255,.07); color: rgba(255,255,255,.58); }
.nb-metric__icon .nb-icon { width: 14px; height: 14px; }
.nb-metric__label { align-self: end; color: rgba(255,255,255,.42); font-size: 9px; text-transform: uppercase; letter-spacing: .13em; }
.nb-metric strong { align-self: start; font: 400 20px/1.1 Raleway, Inter, sans-serif; }
.nb-metric small { grid-column: 1/-1; align-self: end; color: rgba(255,255,255,.35); font-size: 9px; }
.nb-metric--ok { border-color: rgba(113,216,167,.2); }
.nb-metric--ok .nb-metric__icon { color: var(--nb-ok); background: rgba(113,216,167,.08); }
.nb-metric--bad { border-color: rgba(232,121,121,.22); }
.nb-metric--bad .nb-metric__icon { color: var(--nb-bad); background: rgba(232,121,121,.08); }

.nb-space-toolbar {
  display: flex;
  max-width: 1540px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 auto 17px;
  padding: 9px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 15px;
  background: rgba(0,0,0,.13);
}

.nb-filter-tabs { display: flex; min-width: 0; align-items: center; gap: 3px; overflow-x: auto; }
.nb-filter-tabs button {
  display: inline-flex;
  min-height: 32px;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  padding: 0 11px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: rgba(255,255,255,.4);
  font-size: 10px;
  cursor: pointer;
}
.nb-filter-tabs button.is-active { background: rgba(255,255,255,.085); color: rgba(255,255,255,.9); box-shadow: inset 0 0 0 1px rgba(255,255,255,.055); }
.nb-filter-tabs button span { display: grid; min-width: 20px; height: 20px; place-items: center; border-radius: 7px; background: rgba(255,255,255,.07); font-size: 8px; }

.nb-space-search { display: flex; width: min(260px, 28vw); height: 34px; flex: 0 0 auto; align-items: center; gap: 8px; padding: 0 10px; border: 1px solid rgba(255,255,255,.08); border-radius: 9px; background: rgba(255,255,255,.025); color: rgba(255,255,255,.34); }
.nb-space-search .nb-icon { width: 14px; height: 14px; }
.nb-space-search input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: rgba(255,255,255,.85); font: 10px Inter, sans-serif; }
.nb-space-search:focus-within { border-color: rgba(255,255,255,.23); box-shadow: inset 0 0 0 1px rgba(255,255,255,.04); }
.nb-live-indicator { display: inline-flex; align-items: center; gap: 8px; padding-right: 7px; color: rgba(255,255,255,.38); font-size: 9px; }
.nb-live-indicator i { width: 6px; height: 6px; border-radius: 50%; background: var(--nb-ok); box-shadow: 0 0 12px rgba(113,216,167,.7); }

/* ── Projects space ────────────────────────────────────────────────────
   Projects drops the single container that used to hold the whole space and
   instead floats the filter bar and every card directly on the wallpaper,
   each carrying the Build widget's glass: the same tint, radius, shadow and
   backdrop recipe. The cards sit more opaque than Build's own panel because
   they are small and scattered — at Build's 22% tint the wallpaper reads
   straight through them and the text loses its ground. */
body[data-product="neura-build"] .nb-space-surface:not([data-space="build"]):not([data-space="desk"]) {
  /* Spanning the viewport rather than sitting inset removes the panel edge
     that still read as a box around everything; the cards now fall straight
     onto the wallpaper. */
  inset: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body[data-product="neura-build"] .nb-space-surface:not([data-space="build"]):not([data-space="desk"])::before { display: none; }

/* The heading sits on the wallpaper and the rest lives in one panel that
   fills the remaining height, so the grid scrolls inside it rather than the
   page scrolling past it. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-layout {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 96px 34px 40px;
}

/* The Build widget is not one tinted box — it is a stack: the blurred base,
   a haze layer that carries its own backdrop pass and gives the glass its
   body, a soft-light noise grain, and an inset sheen along the top edge.
   Copying only the base is what left this panel looking thin, so the whole
   stack is reproduced here. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel {
  position: relative;
  display: flex;
  isolation: isolate;
  box-sizing: border-box;
  min-height: 0;
  max-width: 1540px;
  width: 100%;
  flex: 1;
  flex-direction: column;
  margin: 0 auto;
  padding: 20px 22px 18px;
  overflow: clip;
  border: 0;
  border-radius: 28px;
  background: rgba(5,5,6,.22);
  box-shadow:
    0 46px 120px rgba(0,0,0,.62),
    0 14px 32px rgba(0,0,0,.3),
    inset 0 1px 0 rgba(248,250,252,.1);
  backdrop-filter: blur(72px) saturate(32%) brightness(58%) contrast(112%);
  -webkit-backdrop-filter: blur(72px) saturate(32%) brightness(58%) contrast(112%);
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel .nb-build-widget__haze {
  position: absolute;
  z-index: 0;
  inset: 0;
  border-radius: inherit;
  background:
    linear-gradient(145deg, rgba(34,34,35,.34), rgba(13,13,14,.48) 48%, rgba(3,3,4,.62)),
    rgba(7,7,8,.36);
  backdrop-filter: blur(72px) saturate(28%) brightness(66%);
  -webkit-backdrop-filter: blur(72px) saturate(28%) brightness(66%);
  filter: none;
  opacity: 1;
  pointer-events: none;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel > .br-noise {
  z-index: 1;
  opacity: .14;
  mix-blend-mode: soft-light;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel::after {
  position: absolute;
  z-index: 0;
  inset: 1px;
  border-radius: 27px;
  background:
    linear-gradient(115deg, rgba(255,255,255,.042), transparent 31%),
    radial-gradient(80% 34% at 50% 0%, rgba(255,255,255,.055), transparent 72%);
  content: "";
  pointer-events: none;
}

/* Content rides above the haze, noise and sheen. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel > .nb-space-toolbar,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel > .nb-card-grid {
  position: relative;
  z-index: 3;
}

/* Scrolls the way the Build widget's recent-projects column does: thin
   gutter-stable bar, and a mask that softens both ends of the list. */
/* Inside the flex panel, `margin: 0 auto` stops a grid from stretching, so it
   collapsed to its content and sat centred with gutters either side. The
   panel's own children set their margins to zero and take the full width. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel > .nb-card-grid,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-projects-panel > .nb-operate-metrics {
  max-width: none;
  width: 100%;
  margin-inline: 0;
}

/* The four figures are the headline of Operate, so they take the full width
   of the panel and enough height to be read at a glance rather than sitting
   as a thin strip under the title. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-operate-metrics {
  flex: 0 0 auto;
  margin-block: 0 14px;
  gap: 12px;
}

/* The figures read as one row of the panel rather than four cards floating
   inside it: no chrome of their own, just a hairline between them, and short
   enough to leave the grid below the room. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric {
  min-height: 0;
  align-content: start;
  gap: 4px 12px;
  padding: 2px 18px;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric + .nb-metric {
  box-shadow: inset 1px 0 0 rgba(235,241,247,.08);
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric:first-child { padding-left: 2px; }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric__icon {
  width: 26px;
  height: 26px;
  border-radius: 8px;
}
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric__icon .nb-icon { width: 13px; height: 13px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric__label { font-size: 8.6px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric strong { font-size: 21px; line-height: 1.05; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric small { margin-top: 3px; font-size: 8.8px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric--ok .nb-metric__icon { color: var(--nb-ok); background: rgba(113,216,167,.08); }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-metric--bad .nb-metric__icon { color: var(--nb-bad); background: rgba(232,121,121,.08); }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid {
  min-height: 0;
  flex: 1;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 2px 7px 2px 0;
  scrollbar-color: rgba(224,235,244,.3) transparent;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  mask-image: linear-gradient(to bottom, transparent 0, #000 7px, #000 calc(100% - 7px), transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 7px, #000 calc(100% - 7px), transparent 100%);
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid::-webkit-scrollbar { width: 6px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid::-webkit-scrollbar-thumb {
  border-radius: 99px;
  background: rgba(224,235,244,.3);
}

/* The heading now sits on the wallpaper rather than on a panel. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head h1,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head p,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-eyebrow {
  text-shadow: 0 1px 18px rgba(0,0,0,.55);
}

/* Heading, actions, filters and grid all live in the panel now, so the
   heading is just its first row. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-sticky {
  position: relative;
  z-index: 3;
  flex: 0 0 auto;
  max-width: none;
  width: 100%;
  margin: 0 0 14px;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head {
  max-width: none;
  margin: 0;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head h1 { font-size: 30px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head p { font-size: 10px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head h1,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head p,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-eyebrow { text-shadow: none; }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-head { margin-bottom: 14px; }

/* The toolbar is the panel's header row, so it stays flat inside the glass
   rather than laying a second backdrop on top of it. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-toolbar {
  max-width: none;
  flex: 0 0 auto;
  margin: 0 0 14px;
  padding: 0 0 13px;
  border: 0;
  border-bottom: 1px solid rgba(235,241,247,.08);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* Every space lays its cards out the same way: four across, one gap. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid--projects,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid--templates,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid--runtime {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-content: start;
  gap: 12px;
}

/* The crossfade is a touch longer too, so a filter change settles rather
   than blinks. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid {
  transition: opacity 200ms ease, transform 200ms ease;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card {
  display: flex;
  flex-direction: column;
  min-height: 330px;
  border: 1px solid rgba(235,241,247,.08);
  border-radius: 20px;
  background:
    radial-gradient(85% 70% at 40% 0%, rgba(205,222,236,.065), transparent 72%),
    rgba(4,7,8,.3);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035), 0 18px 40px rgba(0,0,0,.16);
  backdrop-filter: blur(34px) saturate(125%);
  -webkit-backdrop-filter: blur(34px) saturate(125%);
  transition: transform 200ms cubic-bezier(.3,.9,.3,1), border-color 200ms ease;
}

/* The preview carries most of the card's height so the tile reads close to
   square at four across, rather than as a wide strip with a caption. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__preview { height: 196px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: 14px;
}
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card h3 { font-size: 13px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__title p { height: 28px; font-size: 8.6px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__meta { margin-top: auto; padding-top: 11px; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__mark { font-size: 40px; }

/* Until a project has a captured thumbnail, its preview is one of six light
   studies rendered for this shell, chosen by the project's own id so a card
   keeps the same face across reloads. A dark scrim rides over the art: the
   status pill and Open Desk label sit on top of it and have to stay legible
   whichever study is drawn. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card .nb-project-card__preview--generated {
  background:
    linear-gradient(to bottom, rgba(4,5,6,.06), rgba(4,5,6,.3) 64%, rgba(3,3,4,.66)),
    var(--nb-card-surface, none) center / cover no-repeat,
    rgba(3,4,5,.5);
}

/* The mark only stands in for a thumbnail; a real one hides it. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__preview:not(.nb-project-card__preview--generated) .nb-project-card__mark { display: none; }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__mark {
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 50%;
  color: rgba(255,255,255,.16);
  font: 300 30px/1 Raleway, Inter, system-ui, sans-serif;
  letter-spacing: .12em;
  transform: translate(-50%, -50%);
  transition: color 200ms ease;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card:hover .nb-project-card__mark { color: rgba(255,255,255,.26); }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card:hover {
  border-color: rgba(235,241,247,.18);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 24px 52px rgba(0,0,0,.22);
}

/* The stock preview is a navy plate that fights the Space's neutral glass;
   it becomes a dim continuation of the card with the same grid, so a project
   without a thumbnail reads as surface rather than as a coloured block. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__preview {
  background:
    linear-gradient(160deg, rgba(255,255,255,.05), rgba(255,255,255,.012) 46%, transparent),
    var(--nb-card-image, radial-gradient(circle at 68% 30%, rgba(214,226,238,.07), transparent 46%)),
    rgba(3,3,4,.55);
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__grid {
  background-image:
    linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
  background-size: 30px 30px;
  mask-image: linear-gradient(150deg, #000, transparent 72%);
}

/* Card type follows the Build widget: Raleway for names, Inter for body. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card h3 {
  font: 300 15px/1.25 Raleway, Inter, system-ui, sans-serif;
  letter-spacing: .01em;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__title p,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__meta,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-status {
  font-family: Inter, "SF Pro Display", system-ui, sans-serif;
}


.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card__preview {
  border-bottom-color: rgba(255,255,255,.06);
}

/* The three header actions are the Build composer's controls: same metrics,
   same tints, same Raleway. New project additionally carries br-btn-primary,
   whose rotating conic sweep is the animation the composer's submit uses —
   it stays on that one button so it reads as the single primary action. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-quiet-action,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action {
  position: relative;
  height: 42px;
  min-height: 42px;
  padding: .62em 1.45em;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 7px;
  background: rgba(255,255,255,.035);
  box-shadow: none;
  color: rgba(255,255,255,.6);
  font-family: Raleway, Inter, system-ui, sans-serif;
  font-size: 11.5px;
  font-weight: 300;
  letter-spacing: .05em;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background-color 170ms ease, border-color 170ms ease, color 170ms ease;
}

/* Matches the composer's submit down to the arrow chip and its nudge on
   hover, so the two primary actions are the same button in two places. */
/* The composer's submit is a fixed 148px because "Start building" fits it.
   Longer labels here would overflow, so the width is a floor rather than a
   fixed size: short labels still land on 148, longer ones grow. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action {
  width: auto;
  min-width: 148px;
  flex: 0 0 auto;
  gap: 10px;
  justify-content: center;
  border-color: rgba(255,255,255,.22);
  background: rgba(255,255,255,.07);
  color: #eef1f6;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action .br-btn-bloom { opacity: 0; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action > *:not(.br-btn-bloom) { position: relative; z-index: 1; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action:hover .nb-build-submit__arrow .nb-icon { transform: translateX(2px); }

/* The composer drops the chip around its arrow; this one does too. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-build-submit__arrow {
  display: grid;
  width: auto;
  height: auto;
  margin-left: 2px;
  place-items: center;
  border-radius: 0;
  background: transparent;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-quiet-action:hover {
  border-color: rgba(255,255,255,.22);
  background: rgba(255,255,255,.06);
  color: rgba(255,255,255,.86);
  transform: none;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action:hover {
  border-color: rgba(255,255,255,.22);
  background: rgba(255,255,255,.14);
  transform: none;
}

/* The sweep is defined paused on .br-btn-primary; the composer starts it by
   setting animation-play-state, which is the half that was missing here. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action::before {
  opacity: .32;
  animation-play-state: running;
}
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action:hover::before,
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action:focus-visible::before { opacity: 1; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action:disabled::before { display: none; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-primary-action > * { position: relative; z-index: 1; }
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-quiet-action::before { display: none; }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-tabs button {
  border-radius: 9px;
  color: rgba(255,255,255,.5);
  font-family: Raleway, Inter, system-ui, sans-serif;
  font-size: 11.5px;
  font-weight: 300;
  letter-spacing: .05em;
}

/* One pill slides between tabs instead of each tab lighting up on its own,
   so a filter change reads as movement. The buttons themselves stay
   transparent and only their label colour changes. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-tabs { position: relative; }

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-ink {
  position: absolute;
  z-index: 0;
  top: 0;
  left: 0;
  border-radius: 9px;
  background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.22);
  opacity: 0;
  pointer-events: none;
  /* Slow enough to read as travel: the pill eases out of the old tab and
     settles into the new one rather than snapping between them. */
  transition:
    transform 520ms cubic-bezier(.22,.72,.16,1),
    width 520ms cubic-bezier(.22,.72,.16,1),
    height 520ms cubic-bezier(.22,.72,.16,1),
    opacity 260ms ease;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-tabs button {
  position: relative;
  z-index: 1;
  transition: color 220ms ease;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-tabs button.is-active {
  background: transparent;
  box-shadow: none;
  color: rgb(238,241,246);
}

/* The grid dips while its contents are replaced, so a filter change is a
   crossfade rather than a redraw. */
.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid {
  transition: opacity 130ms ease, transform 130ms ease;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid.is-swapping {
  opacity: 0;
  transform: translateY(4px);
}

@media (prefers-reduced-motion: reduce) {
  .nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-filter-ink,
  .nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-card-grid { transition: none; }
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-search {
  border-color: rgba(255,255,255,.12);
  border-radius: 9px;
  background: rgba(255,255,255,.035);
}

/* The command bar's search drew the browser's default focus box — a hard
   white rectangle over the glass. It gets the Space's own focus treatment:
   the field itself brightens instead of being outlined. */
body[data-product="neura-build"] .command-bar .search-field input:focus,
body[data-product="neura-build"] .command-bar .search-field input:focus-visible {
  outline: 0;
  box-shadow: none;
}

/* And the same everywhere else a person types: a field says it has the
   keyboard by brightening its own border, never by taking a white frame. */
body[data-product="neura-build"] :is(input, textarea):focus,
body[data-product="neura-build"] :is(input, textarea):focus-visible {
  outline: 0;
}

body[data-product="neura-build"] .command-bar .search-field:focus-within {
  border-color: rgba(255,255,255,.28);
  background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06);
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-space-search input {
  font-family: Raleway, Inter, system-ui, sans-serif;
  font-size: 11.5px;
  font-weight: 300;
  letter-spacing: .05em;
}

.nb-space-surface:not([data-space="build"]):not([data-space="desk"]) .nb-project-card button {
  font-family: Raleway, Inter, system-ui, sans-serif;
  font-weight: 300;
  letter-spacing: .05em;
}

.nb-card-grid { display: grid; max-width: 1540px; gap: 14px; margin: 0 auto; }
.nb-card-grid--projects { grid-template-columns: repeat(3, minmax(0,1fr)); }
.nb-card-grid--templates { grid-template-columns: repeat(4, minmax(0,1fr)); }
.nb-card-grid--runtime { grid-template-columns: repeat(3, minmax(0,1fr)); }
.nb-card-grid > article[hidden] { display: none; }

.nb-project-card { min-height: 300px; border-radius: 19px; }
.nb-project-card__preview {
  position: relative;
  display: block;
  width: 100%;
  height: 168px;
  overflow: hidden;
  padding: 0;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.08);
  background:
    linear-gradient(135deg, rgba(6,12,22,.28), rgba(15,24,30,.72)),
    var(--nb-card-image, radial-gradient(circle at 72% 36%, rgba(109,157,211,.2), transparent 30%)),
    #0a0f13;
  background-position: center;
  background-size: cover;
  cursor: pointer;
}
.nb-project-card__grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px); background-size: 24px 24px; mask-image: linear-gradient(135deg, #000, transparent 78%); }
.nb-status { display: inline-flex; align-items: center; gap: 7px; color: rgba(255,255,255,.65); font-size: 9px; text-transform: capitalize; }
.nb-project-card__preview > .nb-status { position: absolute; top: 12px; left: 12px; z-index: 1; padding: 5px 8px; border: 1px solid rgba(255,255,255,.12); border-radius: 99px; background: rgba(5,8,10,.47); backdrop-filter: blur(12px); }
.nb-status i { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,.32); }
.nb-status i[data-state="running"], .nb-status i[data-state="active"], .nb-status i[data-state="published"] { background: var(--nb-ok); box-shadow: 0 0 9px rgba(113,216,167,.55); }
.nb-status i[data-state="building"], .nb-status i[data-state="needs_attention"] { background: var(--nb-warn); }
.nb-status i[data-state="failed"], .nb-status i[data-state="error"], .nb-status i[data-state="unhealthy"] { background: var(--nb-bad); }
.nb-project-card__preview-label { position: absolute; right: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 7px; padding: 7px 9px; border: 1px solid rgba(255,255,255,.13); border-radius: 9px; background: rgba(5,8,10,.52); color: rgba(255,255,255,.76); font-size: 9px; opacity: 0; transform: translateY(4px); transition: opacity 170ms ease, transform 170ms ease; backdrop-filter: blur(12px); }
.nb-project-card__preview-label .nb-icon { width: 13px; height: 13px; }
.nb-project-card:hover .nb-project-card__preview-label { opacity: 1; transform: translateY(0); }
.nb-project-card__body { padding: 16px; }
.nb-project-card__title { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.nb-project-card h3 { overflow: hidden; margin: 0; font: 400 15px/1.25 Raleway, Inter, sans-serif; text-overflow: ellipsis; white-space: nowrap; }
.nb-project-card__title > div { min-width: 0; }
.nb-project-card__title p { height: 31px; overflow: hidden; margin: 6px 0 0; color: rgba(255,255,255,.38); font-size: 9px; line-height: 1.55; }
.nb-icon-action { display: grid; width: 29px; height: 29px; flex: 0 0 auto; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.08); border-radius: 9px; background: transparent; color: rgba(255,255,255,.35); cursor: pointer; }
.nb-icon-action:hover { color: rgba(255,255,255,.9); background: rgba(255,255,255,.06); }
.nb-icon-action .nb-icon { width: 13px; height: 13px; }
.nb-project-card__meta { display: flex; align-items: center; gap: 12px; margin-top: 15px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.065); color: rgba(255,255,255,.32); font-size: 8.5px; }
.nb-project-card__meta span { display: inline-flex; align-items: center; gap: 5px; }
.nb-project-card__meta .nb-icon { width: 11px; height: 11px; }
.nb-project-card__meta button { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; padding: 0; border: 0; background: transparent; color: rgba(255,255,255,.6); cursor: pointer; }

.nb-template-card { min-height: 318px; border-radius: 19px; }
.nb-template-card__visual { position: relative; display: grid; height: 128px; place-items: center; overflow: hidden; border-bottom: 1px solid rgba(255,255,255,.07); background: radial-gradient(circle at 50% 50%, rgba(157,192,221,.16), transparent 40%), rgba(2,6,8,.34); }
.nb-template-card__visual > span { position: relative; z-index: 2; display: grid; width: 54px; height: 54px; place-items: center; border: 1px solid rgba(255,255,255,.14); border-radius: 17px; background: rgba(255,255,255,.045); color: rgba(255,255,255,.75); box-shadow: 0 0 34px rgba(181,216,242,.08); }
.nb-template-card__visual > span .nb-icon { width: 22px; height: 22px; }
.nb-template-card__visual > small { position: absolute; right: 11px; bottom: 10px; z-index: 2; color: rgba(255,255,255,.38); font-size: 8px; text-transform: uppercase; letter-spacing: .12em; }
.nb-template-card__mesh { position: absolute; inset: -60%; background-image: linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px); background-size: 20px 20px; transform: perspective(260px) rotateX(62deg) rotateZ(-18deg); }
.nb-template-card__body { padding: 17px; }
.nb-template-card h3 { height: 38px; overflow: hidden; margin: 0; font: 400 16px/1.2 Raleway, Inter, sans-serif; }
.nb-template-card__body > p:not(.nb-eyebrow) { height: 48px; overflow: hidden; margin: 8px 0 15px; color: rgba(255,255,255,.38); font-size: 9px; line-height: 1.55; }
.nb-template-card__body > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 11px; border-top: 1px solid rgba(255,255,255,.06); color: rgba(255,255,255,.3); font-size: 8px; }
.nb-template-card__body button,
.nb-inline-action { display: inline-flex; align-items: center; gap: 6px; padding: 7px 9px; border: 1px solid rgba(255,255,255,.12); border-radius: 8px; background: rgba(255,255,255,.055); color: rgba(255,255,255,.75); font-size: 8.5px; cursor: pointer; }
.nb-template-card__body .nb-icon,
.nb-inline-action .nb-icon { width: 11px; height: 11px; }

.nb-operate-metrics { max-width: 1540px; margin-bottom: 15px; }
.nb-runtime-card { min-height: 235px; padding: 17px; border-radius: 18px; }
.nb-runtime-card--wide { grid-column: span 2; }
.nb-runtime-card > header { display: flex; align-items: center; justify-content: space-between; color: rgba(255,255,255,.3); font-size: 8px; text-transform: uppercase; letter-spacing: .12em; }
.nb-runtime-card__core { display: flex; align-items: center; gap: 13px; margin-top: 24px; }
.nb-runtime-card__core > span { display: grid; width: 48px; height: 48px; flex: 0 0 auto; place-items: center; border: 1px solid rgba(255,255,255,.12); border-radius: 14px; background: rgba(255,255,255,.04); color: rgba(255,255,255,.65); }
.nb-runtime-card__core h3 { margin: 0; font: 400 15px/1.2 Raleway, Inter, sans-serif; }
.nb-runtime-card__core p { overflow: hidden; max-width: 220px; margin: 5px 0 0; color: rgba(255,255,255,.32); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.nb-runtime-card__metrics { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; margin: 22px 0 13px; }
.nb-runtime-card__metrics span { padding: 8px; border: 1px solid rgba(255,255,255,.065); border-radius: 9px; color: rgba(255,255,255,.3); font-size: 7.5px; }
.nb-runtime-card__metrics strong { display: block; margin-bottom: 3px; color: rgba(255,255,255,.72); font-size: 9px; font-weight: 500; }

.nb-empty-space { display: grid; min-height: 330px; grid-column: 1/-1; place-content: center; justify-items: center; text-align: center; }
.nb-empty-space__orb { display: grid; width: 58px; height: 58px; place-items: center; margin-bottom: 14px; border: 1px solid rgba(255,255,255,.15); border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.11), transparent 64%); box-shadow: 0 0 40px rgba(255,255,255,.06); color: rgba(255,255,255,.75); }
.nb-empty-space h2 { margin: 0; font: 300 22px Raleway, Inter, sans-serif; }
.nb-empty-space p { max-width: 380px; margin: 8px 0 16px; color: rgba(255,255,255,.38); font-size: 10px; }
.nb-empty-space button { min-height: 34px; padding: 0 12px; border: 1px solid rgba(255,255,255,.14); border-radius: 9px; background: rgba(255,255,255,.06); color: rgba(255,255,255,.75); cursor: pointer; }
.nb-project-card--ghost { pointer-events: none; animation: nb-ghost-pulse 1500ms ease-in-out infinite; }
.nb-project-card--ghost .nb-project-card__preview { cursor: default; }
.nb-ghost-line { display: block; height: 11px; border-radius: 5px; background: rgba(255,255,255,.07); }
.nb-ghost-line + .nb-ghost-line { margin-top: 10px; }
.nb-ghost-line--short { width: 56%; }
@keyframes nb-ghost-pulse { 0%, 100% { opacity: .5; } 50% { opacity: .88; } }
@media (prefers-reduced-motion: reduce) { .nb-project-card--ghost { animation: none; opacity: .6; } }

.nb-empty-small { display: grid; min-height: 215px; place-content: center; justify-items: center; text-align: center; color: rgba(255,255,255,.35); }
.nb-empty-small > span { margin-bottom: 9px; color: rgba(255,255,255,.75); font-size: 24px; }
.nb-empty-small strong { color: rgba(255,255,255,.7); font-size: 11px; }
.nb-empty-small small { max-width: 220px; margin-top: 6px; font-size: 9px; line-height: 1.5; }

.nb-space-dock {
  display: none !important;
  position: fixed;
  z-index: 74;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  color: rgba(255,255,255,.76);
  font-family: Inter, sans-serif;
}
.nb-space-dock__rail { display: grid; grid-template-columns: repeat(2,74px) 76px repeat(2,74px); align-items: center; padding: 4px 10px; border: 1px solid rgba(255,255,255,.11); border-radius: 17px; background: rgba(9,12,14,.78); box-shadow: 0 18px 48px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.055); backdrop-filter: blur(28px) saturate(120%); }
.nb-space-dock button:not(.nb-space-dock__orb) { display: grid; min-height: 48px; place-content: center; justify-items: center; gap: 4px; padding: 0; border: 0; border-radius: 11px; background: transparent; color: rgba(255,255,255,.43); cursor: pointer; transition: color 160ms ease, background-color 160ms ease; }
.nb-space-dock button:not(.nb-space-dock__orb):hover { background: rgba(255,255,255,.055); color: rgba(255,255,255,.92); }
.nb-space-dock button:not(.nb-space-dock__orb) .nb-icon { width: 15px; height: 15px; }
.nb-space-dock button:not(.nb-space-dock__orb) span { font-size: 7px; letter-spacing: .14em; text-transform: uppercase; }
.nb-space-dock__orb { position: relative; display: grid; width: 68px; height: 68px; place-items: center; margin: -18px 4px -6px; padding: 0; border: 0; border-radius: 50%; background: radial-gradient(circle at 44% 42%, #fff 0 3%, rgba(255,255,255,.95) 4%, rgba(209,224,233,.38) 15%, rgba(92,111,123,.16) 33%, rgba(10,13,15,.9) 66%); box-shadow: 0 0 0 1px rgba(255,255,255,.24), 0 0 22px rgba(255,255,255,.2), inset 0 0 18px rgba(255,255,255,.2); cursor: pointer; }
.nb-space-dock__orb::before,
.nb-space-dock__orb::after { position: absolute; inset: 7px; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; content: ""; animation: nb-orb-turn 8s linear infinite; }
.nb-space-dock__orb::after { inset: 13px; border-style: dashed; animation-duration: 5s; animation-direction: reverse; }
.nb-space-dock__orb span { width: 8px; height: 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 14px #fff; }

.nb-settings-detail { min-height: 100%; }
.nb-settings-rows { display: grid; gap: 8px; }
.nb-settings-row { box-sizing: border-box; display: flex; min-height: calc(58px * var(--set-zoom, 1)); width: 100%; align-items: center; justify-content: space-between; gap: 18px; padding: calc(10px * var(--set-zoom, 1)) calc(13px * var(--set-zoom, 1)); border: 1px solid rgba(255,255,255,.08); border-radius: calc(11px * var(--set-zoom, 1)); background: rgba(255,255,255,.025); color: inherit; text-align: left; }
.nb-settings-row strong,
.nb-settings-row small { display: block; }
.nb-settings-row strong { color: rgba(255,255,255,.82); font-size: calc(10px * var(--set-text-scale,1)); font-weight: 500; }
.nb-settings-row small { margin-top: 3px; color: rgba(255,255,255,.36); font-size: calc(8px * var(--set-text-scale,1)); line-height: 1.35; }
.nb-settings-row em { color: rgba(255,255,255,.56); font-size: calc(9px * var(--set-text-scale,1)); font-style: normal; }
.nb-settings-row select { min-width: 135px; padding: 7px 9px; border: 1px solid rgba(255,255,255,.12); border-radius: 8px; outline: 0; background: #15191b; color: rgba(255,255,255,.78); font: 9px Inter,sans-serif; }
.nb-settings-row--button { cursor: pointer; }
.nb-settings-row--button:hover { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.05); }
.nb-settings-row--button .nb-icon { width: 14px; height: 14px; color: rgba(255,255,255,.42); }
.nb-switch { position: relative; width: 34px; height: 19px; flex: 0 0 auto; appearance: none; border: 1px solid rgba(255,255,255,.14); border-radius: 99px; outline: 0; background: rgba(255,255,255,.08); cursor: pointer; transition: background-color 160ms ease; }
.nb-switch::after { position: absolute; top: 3px; left: 3px; width: 11px; height: 11px; border-radius: 50%; background: rgba(255,255,255,.55); content: ""; transition: transform 160ms ease, background-color 160ms ease; }
.nb-switch:checked { background: rgba(113,216,167,.25); border-color: rgba(113,216,167,.35); }
.nb-switch:checked::after { background: #d9f5e7; transform: translateX(15px); }
.nb-settings-back:focus,
.nb-settings-row:focus,
.nb-setting-link:focus { outline: 0; box-shadow: none; }
.nb-settings-back:focus-visible,
.nb-settings-row:focus-visible,
.nb-setting-link:focus-visible { outline: 1px solid rgba(255,255,255,.28); outline-offset: 2px; }

/* Real Neura Build surfaces inside the original Neura Space window system. */
.nb-editor-window .desk-window__stage,
.nb-editor-window .desk-window__panel {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}
.nb-editor-window .desk-window__panel { height: 100%; padding: 0; }
.nb-editor-window .desk-window__icon { opacity: .72; }
.nb-editor-window.nb-editor-is-dirty .desk-window__title::after {
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-left: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.82);
  box-shadow: 0 0 10px rgba(255,255,255,.46);
  content: "";
  vertical-align: middle;
}
/* A bridge holds an app's document inside a window; the window is the glass,
   so the bridge and its frame paint nothing. Anything opaque here is a wall in
   front of the wallpaper, which is what made these windows read black. */
.nb-editor-bridge {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: transparent;
}
.nb-editor-bridge__frame {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  opacity: 0;
  transition: opacity 220ms ease;
}
.nb-editor-bridge.is-ready .nb-editor-bridge__frame,
.nb-editor-is-ready .nb-editor-bridge__frame { opacity: 1; }
.nb-native-react-window .desk-window__stage,
.nb-native-react-window .desk-window__panel { min-width: 0; min-height: 0; overflow: hidden; }
.nb-native-react-window .desk-window__panel { height: 100%; padding: 0; }
.nb-native-app-bridge { position: relative; width: 100%; height: 100%; overflow: hidden; background: transparent; }
.nb-native-app-bridge__frame { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; opacity: 0; transition: opacity 220ms ease; }
.nb-native-app-bridge.is-ready .nb-native-app-bridge__frame { opacity: 1; }
.nb-native-app-bridge.is-ready .nb-editor-bridge__loading { opacity: 0; pointer-events: none; }
.nb-editor-bridge__loading,
.nb-settings-embed__loading {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 9px;
  background:
    radial-gradient(circle at 50% 42%, rgba(205,220,231,.07), transparent 25%),
    rgba(8,11,13,.34);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  color: rgba(255,255,255,.72);
  text-align: center;
  transition: opacity 180ms ease;
}
.nb-editor-bridge__loading > span,
.nb-settings-embed__loading > span {
  width: 22px;
  height: 22px;
  margin-bottom: 6px;
  border: 1px solid rgba(255,255,255,.13);
  border-top-color: rgba(255,255,255,.78);
  border-radius: 50%;
  animation: nb-embed-spin 900ms linear infinite;
}
.nb-editor-bridge__loading strong,
.nb-settings-embed__loading strong { font: 400 12px/1.3 Raleway, Inter, sans-serif; }
.nb-editor-bridge__loading small,
.nb-settings-embed__loading small { color: rgba(255,255,255,.36); font-size: 9px; }
.nb-editor-bridge.is-ready .nb-editor-bridge__loading,
.nb-editor-is-ready .nb-editor-bridge__loading,
.nb-settings-embed.is-ready .nb-settings-embed__loading { opacity: 0; pointer-events: none; }
.nb-editor-empty {
  display: grid;
  height: 100%;
  place-content: center;
  justify-items: center;
  gap: 9px;
  color: rgba(255,255,255,.42);
  text-align: center;
}
.nb-editor-empty__signal { margin-bottom: 8px; color: rgba(255,255,255,.86); font-size: 26px; text-shadow: 0 0 22px rgba(255,255,255,.28); }
.nb-editor-empty strong { color: rgba(255,255,255,.78); font: 400 15px Raleway, Inter, sans-serif; }
.nb-editor-empty small { max-width: 360px; line-height: 1.6; }
.nb-editor-empty .dw-btn { margin-top: 10px; }

.nb-settings-detail--embedded {
  display: grid;
  min-height: calc(100% - 34px);
  grid-template-rows: minmax(0,1fr);
}
/* The embedded settings routes are themed to match this panel (see
   themeEmbeddedFrame), so the container drops its own card chrome and lets the
   controls sit directly on the panel glass rather than in a framed inset. */
.nb-settings-embed {
  position: relative;
  min-height: 430px;
  overflow: hidden;
  border: 0;
  background: transparent;
}
.nb-settings-embed__frame {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  opacity: 0;
  transition: opacity 180ms ease;
}
.nb-settings-embed.is-ready .nb-settings-embed__frame { opacity: 1; }

.nb-capability-hub {
  position: fixed;
  z-index: 10080;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 74px 24px 34px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}
.nb-capability-hub[hidden] { display: none; }
.nb-capability-hub.is-open { opacity: 1; pointer-events: auto; }
.nb-capability-hub__scrim {
  position: absolute;
  inset: 0;
  background: rgba(1,3,4,.62);
  backdrop-filter: blur(20px) saturate(72%);
}
.nb-capability-hub__window {
  position: relative;
  display: grid;
  width: min(1540px, calc(100vw - 56px));
  height: min(900px, calc(100vh - 118px));
  grid-template-rows: 48px minmax(0,1fr);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 17px;
  background: linear-gradient(150deg, rgba(19,23,27,.62), rgba(8,11,14,.7));
  backdrop-filter: blur(30px) saturate(122%);
  -webkit-backdrop-filter: blur(30px) saturate(122%);
  box-shadow: 0 40px 120px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.07);
  transform: translateY(8px) scale(.994);
  transition: transform 220ms cubic-bezier(.2,.8,.2,1);
}
.nb-capability-hub.is-open .nb-capability-hub__window { transform: none; }
.nb-capability-hub__window > header {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 0 12px 0 15px;
  border-bottom: 1px solid rgba(255,255,255,.075);
  background: rgba(255,255,255,.026);
}
.nb-capability-hub__window > header > span { color: rgba(255,255,255,.66); }
.nb-capability-hub__window > header .nb-icon { width: 15px; height: 15px; }
.nb-capability-hub__window > header > div { display: grid; gap: 1px; min-width: 0; }
.nb-capability-hub__window > header small { color: rgba(255,255,255,.3); font-size: 7px; letter-spacing: .16em; }
.nb-capability-hub__window > header strong { overflow: hidden; color: rgba(255,255,255,.78); font: 400 11px Raleway, Inter, sans-serif; text-overflow: ellipsis; white-space: nowrap; }
.nb-capability-hub__window > header button {
  display: grid;
  width: 29px;
  height: 29px;
  place-items: center;
  margin-left: auto;
  padding: 0;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 9px;
  background: rgba(255,255,255,.025);
  color: rgba(255,255,255,.48);
  cursor: pointer;
}
.nb-capability-hub__window > header button:hover,
.nb-capability-hub__window > header button:focus-visible { border-color: rgba(255,255,255,.2); color: #fff; outline: 0; }
.nb-capability-hub__body { position: relative; min-height: 0; overflow: hidden; }
.nb-capability-hub__body iframe { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; opacity: 0; transition: opacity 180ms ease; }
.nb-capability-hub.is-ready .nb-capability-hub__body iframe { opacity: 1; }
.nb-capability-hub__loading {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 10px;
  color: rgba(255,255,255,.58);
}
.nb-capability-hub__loading > span { width: 23px; height: 23px; border: 1px solid rgba(255,255,255,.12); border-top-color: rgba(255,255,255,.72); border-radius: 50%; animation: nb-embed-spin 900ms linear infinite; }
.nb-capability-hub__loading strong { font: 400 11px Raleway, Inter, sans-serif; }

@keyframes nb-embed-spin { to { transform: rotate(360deg); } }
.nb-design-surface { display: grid; grid-template-rows: minmax(240px,1fr) auto; }
.nb-design-surface__preview { display: grid; overflow: hidden; place-content: center; justify-items: center; border: 1px solid rgba(255,255,255,.08); border-radius: 12px; background: rgba(0,0,0,.16); color: rgba(255,255,255,.45); }
.nb-design-surface__preview iframe { width: 100%; height: 100%; border: 0; }
.nb-design-surface__preview > span { margin-bottom: 10px; }
.nb-design-surface__preview strong { color: rgba(255,255,255,.72); font-size: 12px; }
.nb-design-surface__preview small { margin-top: 5px; font-size: 9px; }

/* Build visual contract
   The screen is one original Neura widget, not a dashboard of nested cards.
   These late, scoped rules deliberately win over the shared legacy surfaces. */
.breathing-widget.nb-build-widget {
  background: rgba(5, 5, 6, .22);
  backdrop-filter: blur(72px) saturate(32%) brightness(58%) contrast(112%);
  -webkit-backdrop-filter: blur(72px) saturate(32%) brightness(58%) contrast(112%);
}

.nb-build-widget .nb-build-widget__haze {
  inset: 0;
  border-radius: inherit;
  background:
    linear-gradient(145deg, rgba(34, 34, 35, .34), rgba(13, 13, 14, .48) 48%, rgba(3, 3, 4, .62)),
    rgba(7, 7, 8, .36);
  backdrop-filter: blur(72px) saturate(28%) brightness(66%);
  -webkit-backdrop-filter: blur(72px) saturate(28%) brightness(66%);
  filter: none;
  opacity: 1;
}

.nb-build-widget .nb-build-prompt-shell {
  padding: 14px 14px 11px;
  border: 1px solid rgba(255, 255, 255, .075);
  border-radius: 16px;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .026), transparent 46%),
    rgba(2, 2, 3, .58);
  backdrop-filter: blur(38px) saturate(24%) brightness(68%);
  -webkit-backdrop-filter: blur(38px) saturate(24%) brightness(68%);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .045),
    inset 0 0 0 1px rgba(0, 0, 0, .18),
    0 18px 44px rgba(0, 0, 0, .12);
}

.nb-build-widget .nb-build-prompt-shell::after {
  right: 3%;
  bottom: -30px;
  width: 240px;
  height: 84px;
  background: radial-gradient(ellipse, rgba(255, 255, 255, .055), transparent 68%);
  filter: blur(28px);
}

.nb-build-widget .nb-build-prompt-shell:focus-within {
  border-color: rgba(255, 255, 255, .14);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .035), transparent 46%),
    rgba(2, 2, 3, .63);
  box-shadow:
    0 0 0 3px rgba(255, 255, 255, .02),
    inset 0 1px 0 rgba(255, 255, 255, .055),
    inset 0 0 0 1px rgba(0, 0, 0, .16),
    0 22px 52px rgba(0, 0, 0, .16);
}

.nb-build-widget .nb-build-widget__memory {
  min-height: 0;
  padding: 7px 4px 7px 20px;
  border: 0;
  border-left: 1px solid rgba(255, 255, 255, .075);
  border-radius: 0;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

.nb-build-widget .nb-build-memory__list > button {
  min-height: 55px;
  margin: 0;
  padding: 10px 5px;
  border: 0;
  border-bottom: 1px solid rgba(255, 255, 255, .055);
  border-radius: 0;
  background: transparent;
  transition: background .24s var(--chrome-ease, ease), transform .24s var(--chrome-ease, ease);
}

.nb-build-widget .nb-build-memory__list > button:last-child { border-bottom: 0; }
.nb-build-widget .nb-build-memory__list > button:hover,
.nb-build-widget .nb-build-memory__list > button:focus-visible {
  border-color: rgba(255, 255, 255, .055);
  background: linear-gradient(90deg, rgba(255, 255, 255, .045), transparent 90%);
  transform: translateX(1px);
}

.nb-build-widget .nb-composer-toolbar {
  display: flex;
  min-height: 52px;
  align-items: center;
  gap: 12px;
  margin: auto 0 0;
  padding: 10px 0 0;
  border-top: 1px solid rgba(255, 255, 255, .065);
}

.nb-build-widget .nb-composer-tools {
  display: grid;
  min-width: 0;
  grid-template-columns: 42px 148px 176px;
  align-items: center;
  gap: 8px;
}

.nb-build-widget .nb-build-control {
  height: 42px;
  min-height: 42px;
  padding: .62em 1.4em;
  border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 9px;
  background: rgba(255, 255, 255, .035);
  box-shadow: none;
  color: rgba(226, 233, 244, .72);
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 11.5px;
  font-weight: 300;
  letter-spacing: .05em;
  line-height: 18px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background .3s, border-color .3s, color .3s, opacity .3s, transform .16s var(--chrome-ease, ease);
}

.nb-build-widget .nb-build-control:hover,
.nb-build-widget .nb-build-control.is-active {
  border-color: rgba(255, 255, 255, .22);
  background: rgba(255, 255, 255, .1);
  box-shadow: none;
  color: #eef1f6;
}

.nb-build-widget .nb-build-control:focus-visible,
.nb-build-widget .br-action:focus-visible,
.nb-build-widget .nb-model-option:focus-visible {
  outline: 1px solid rgba(255, 255, 255, .28);
  outline-offset: 2px;
}

.nb-build-widget .nb-build-control:focus:not(:focus-visible),
.nb-build-widget .nb-build-mode:focus:not(:focus-visible) {
  outline: 0;
  box-shadow: none;
}

.nb-build-widget .nb-build-control--icon {
  width: 42px;
  padding: 10px;
}

.nb-build-widget .nb-build-workflow {
  position: relative;
  display: grid;
  width: 148px;
  height: 42px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  padding: 3px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .105);
  border-radius: 10px;
  background: rgba(0, 0, 0, .3);
  box-shadow: inset 0 1px 5px rgba(0, 0, 0, .28);
}

.nb-build-widget .nb-build-workflow::before {
  position: absolute;
  top: 3px;
  bottom: 3px;
  left: 3px;
  width: calc(50% - 3px);
  border: 1px solid rgba(255, 255, 255, .15);
  border-radius: 7px;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .115), rgba(255, 255, 255, .055)),
    rgba(255, 255, 255, .035);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 5px 16px rgba(0, 0, 0, .22);
  content: "";
  transform: translateX(0);
  transition: transform .26s cubic-bezier(.23, 1, .32, 1);
  pointer-events: none;
}

.nb-build-widget .nb-build-workflow[data-nb-workflow-current="build"]::before { transform: translateX(100%); }

.nb-build-widget .nb-build-mode {
  position: relative;
  z-index: 1;
  display: inline-flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 8px;
  border: 0;
  border-radius: 7px;
  outline: 0;
  background: transparent;
  color: rgba(226, 233, 244, .42);
  cursor: pointer;
  font-family: var(--font-display, "Raleway", sans-serif);
  font-size: 11px;
  font-weight: 300;
  letter-spacing: .045em;
  transition: color .18s ease;
}

.nb-build-widget .nb-build-mode:hover { color: rgba(238, 243, 248, .74); }
.nb-build-widget .nb-build-mode.is-active { color: #eef1f6; }
.nb-build-widget .nb-build-mode:focus-visible {
  outline: 2px solid rgba(238, 243, 248, .72);
  outline-offset: -2px;
}
.nb-build-widget .nb-build-mode .nb-icon { width: 13px; height: 13px; }

.nb-build-widget .nb-model-picker { width: 176px; }
.nb-build-widget .nb-model-trigger {
  width: 176px;
  min-width: 176px;
  grid-template-columns: 24px minmax(0, 1fr) 34px 13px;
  gap: 7px;
  padding: 5px 9px 5px 7px;
  border-color: rgba(255, 255, 255, .115);
  border-radius: 10px;
  background: rgba(0, 0, 0, .2);
}

.nb-build-widget .nb-model-trigger:hover,
.nb-build-widget .nb-model-trigger[aria-expanded="true"] {
  border-color: rgba(255, 255, 255, .18);
  background: rgba(255, 255, 255, .055);
}

.nb-build-widget .nb-model-trigger__mark {
  border-color: rgba(255, 255, 255, .09);
  border-radius: 6px;
  background: rgba(255, 255, 255, .025);
}

.nb-build-widget .nb-model-trigger__signal {
  position: relative;
  width: 34px;
  height: 2px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(255, 255, 255, .07);
}

.nb-build-widget .nb-model-trigger__signal i {
  display: block;
  width: calc(var(--nb-model-signal) * 20%);
  height: 100%;
  border-radius: inherit;
  background: rgba(238, 243, 248, .66);
  box-shadow: 0 0 7px rgba(238, 243, 248, .24);
  transition: width .2s cubic-bezier(.23, 1, .32, 1);
}

.nb-build-widget .nb-model-menu {
  width: 392px;
  padding: 10px;
  overflow: hidden;
  border-color: rgba(255, 255, 255, .105);
  border-radius: 17px;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .035), transparent 42%),
    rgba(7, 7, 8, .88);
  backdrop-filter: blur(48px) saturate(32%) brightness(68%);
  -webkit-backdrop-filter: blur(48px) saturate(32%) brightness(68%);
  box-shadow: 0 30px 84px rgba(0, 0, 0, .72), inset 0 1px 0 rgba(255, 255, 255, .055);
  transform: translateY(7px) scale(.982);
  transform-origin: left bottom;
  transition: opacity .18s cubic-bezier(.23, 1, .32, 1), transform .18s cubic-bezier(.23, 1, .32, 1);
}

.nb-build-widget .nb-model-menu.is-visible { opacity: 1; transform: none; }

.nb-build-widget .nb-model-menu__head {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  padding: 3px 4px 12px;
}

.nb-model-menu__orb {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .11), rgba(255, 255, 255, .018) 64%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 0 18px rgba(255, 255, 255, .045);
}
.nb-model-menu__orb .nb-icon { width: 14px; height: 14px; }
.nb-build-widget .nb-model-menu__head > div { display: grid; gap: 3px; }
.nb-build-widget .nb-model-menu__head > div > span { color: rgba(229, 237, 243, .38); font-size: 7px; font-weight: 500; letter-spacing: .2em; }
.nb-build-widget .nb-model-menu__head > div > strong { color: rgba(246, 249, 251, .9); font: 300 15px/1.15 var(--font-display, "Raleway", sans-serif); }
.nb-build-widget .nb-model-menu__head > div > small { color: rgba(226, 234, 240, .36); font-size: 8px; line-height: 1.35; }

.nb-build-widget .nb-model-menu__list {
  display: grid;
  overflow: hidden;
  border-top: 1px solid rgba(255, 255, 255, .065);
  border-bottom: 1px solid rgba(255, 255, 255, .065);
}

.nb-build-widget .nb-model-option {
  position: relative;
  display: grid;
  min-height: 64px;
  grid-template-columns: 28px minmax(0, 1fr) 54px 17px;
  align-items: center;
  gap: 10px;
  padding: 9px 7px;
  border: 0;
  border-bottom: 1px solid rgba(255, 255, 255, .05);
  border-radius: 0;
  background: transparent;
  color: rgba(240, 245, 248, .76);
  transform: none;
  transition: background .16s ease, color .16s ease;
}

.nb-build-widget .nb-model-option:last-child { border-bottom: 0; }
.nb-build-widget .nb-model-option:hover,
.nb-build-widget .nb-model-option:focus-visible {
  border-color: rgba(255, 255, 255, .05);
  background: linear-gradient(90deg, rgba(255, 255, 255, .065), rgba(255, 255, 255, .015));
  transform: none;
}
.nb-build-widget .nb-model-option:focus-visible { outline-offset: -2px; }
.nb-build-widget .nb-model-option.is-selected {
  border-color: rgba(255, 255, 255, .05);
  background: linear-gradient(90deg, rgba(255, 255, 255, .085), rgba(255, 255, 255, .018));
  box-shadow: none;
}

.nb-model-option__rail {
  position: absolute;
  top: 12px;
  bottom: 12px;
  left: 0;
  width: 1px;
  border-radius: 99px;
  background: rgba(242, 246, 249, .9);
  box-shadow: 0 0 9px rgba(235, 242, 248, .55);
  opacity: 0;
  transform: scaleY(.4);
  transition: opacity .18s ease, transform .18s cubic-bezier(.23, 1, .32, 1);
}
.nb-model-option.is-selected .nb-model-option__rail { opacity: 1; transform: scaleY(1); }
.nb-model-option__glyph {
  display: grid;
  width: 27px;
  height: 27px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .08);
  border-radius: 8px;
  background: rgba(255, 255, 255, .025);
}
.nb-model-option__glyph .nb-icon { width: 12px; height: 12px; }
.nb-model-option__copy { display: grid; min-width: 0; gap: 4px; }
.nb-model-option__copy > span { display: flex; min-width: 0; align-items: baseline; gap: 8px; }
.nb-model-option__copy strong { color: rgba(247, 249, 251, .88); font: 300 13px/1 var(--font-display, "Raleway", sans-serif); }
.nb-model-option__copy em { overflow: hidden; color: rgba(225, 233, 239, .35); font-size: 7px; font-style: normal; letter-spacing: .09em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.nb-model-option__copy small { overflow: hidden; color: rgba(225, 233, 239, .4); font-size: 8px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.nb-build-widget .nb-model-option__signal { display: grid; justify-items: end; gap: 6px; }
.nb-build-widget .nb-model-option__signal i { width: 46px; height: 2px; }
.nb-build-widget .nb-model-option__signal small { color: rgba(225, 234, 240, .3); font: 500 7px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
.nb-model-option__check { display: grid; place-items: center; color: rgba(245, 248, 250, .9); opacity: 0; transition: opacity .16s ease; }
.nb-model-option__check .nb-icon { width: 13px; height: 13px; }
.nb-model-option.is-selected .nb-model-option__check { opacity: 1; }

.nb-build-widget .nb-model-menu__foot {
  display: flex;
  min-height: 35px;
  align-items: center;
  gap: 13px;
  margin: 0;
  padding: 9px 4px 0;
  border: 0;
  color: rgba(226, 235, 241, .34);
  font-size: 7.5px;
}
.nb-build-widget .nb-model-menu__foot > span { display: inline-flex; align-items: center; gap: 5px; }
.nb-build-widget .nb-model-menu__foot kbd { display: inline-grid; min-width: 18px; height: 18px; place-items: center; padding: 0 4px; border: 1px solid rgba(255, 255, 255, .09); border-radius: 5px; background: rgba(255, 255, 255, .035); color: rgba(239, 243, 246, .58); font: 500 7px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
.nb-build-widget .nb-model-menu__foot strong { margin-left: auto; color: rgba(233, 240, 245, .42); font-weight: 400; }

.nb-composer-end {
  display: flex;
  height: 42px;
  flex: 0 0 auto;
  align-items: center;
  gap: 12px;
}

.nb-build-token-meter {
  min-width: 54px;
  color: rgba(226, 234, 240, .3);
  font: 500 8px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  text-align: right;
}

.nb-build-widget .nb-build-submit {
  position: relative;
  width: 148px;
  min-width: 148px;
  height: 42px;
  justify-content: center;
  gap: 10px;
  padding: .62em 1.45em;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 7px;
  background: rgba(255, 255, 255, .07);
  box-shadow: none;
  color: #eef1f6;
  font-size: 11.5px;
}

.nb-build-widget .nb-build-submit:hover {
  border-color: rgba(255, 255, 255, .22);
  background: rgba(255, 255, 255, .14);
  box-shadow: none;
}

.nb-build-widget .nb-build-submit::before {
  opacity: .32;
  animation-play-state: running;
}

.nb-build-widget:hover .nb-build-submit::before,
.nb-build-widget:focus-within .nb-build-submit::before { opacity: 1; }
.nb-build-widget .nb-build-submit:disabled::before { display: none; }
.nb-build-widget .nb-build-submit .br-btn-bloom { opacity: 0; }

.nb-build-widget .nb-build-submit__arrow {
  display: grid;
  width: auto;
  height: auto;
  margin-left: 2px;
  place-items: center;
  border-radius: 0;
  background: transparent;
}

@keyframes nb-space-arrive { from { opacity: 0; filter: blur(6px); transform: translateY(7px) scale(.995); } }
@keyframes nb-orb-turn { to { transform: rotate(360deg); } }

@media (max-width: 1180px) {
  .nb-space-surface { inset: 112px 18px 108px; }
  .nb-space-scroll { padding: 25px 24px 38px; }
  .nb-card-grid--projects,
  .nb-card-grid--runtime { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .nb-card-grid--templates { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .nb-build-layout { grid-template-columns: minmax(0,1.35fr) minmax(245px,.65fr); }
}

@media (max-width: 900px) {
  .nb-space-surface { inset: 104px 12px 104px; border-radius: 20px; }
  .nb-space-scroll { padding: 21px 17px 34px; }
  .nb-space-head { align-items: start; }
  .nb-build-layout { grid-template-columns: 1fr; }
  .nb-build-memory { min-height: 240px; }
  .nb-build-signals,
  .nb-operate-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .nb-card-grid--templates { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .nb-space-toolbar { align-items: stretch; flex-direction: column; }
  .nb-space-search { box-sizing: border-box; width: 100%; }
}

@media (max-width: 860px) {
  .nb-build-widget__body.br-body { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .nb-build-widget__memory { display: none; }
  .nb-build-widget__composer.br-left.nb-composer-card { padding-right: 3px; }
}

@media (max-width: 700px) {
  .nb-space-surface[data-space="build"] { padding-right: 12px; padding-left: 12px; }
  .breathing-widget.nb-build-widget {
    width: calc(100vw - 24px);
    height: min(560px, calc(100vh - 218px));
    min-height: min(500px, calc(100vh - 218px));
  }
}

@media (max-height: 600px) {
  .nb-space-surface[data-space="build"] {
    overflow-y: auto;
    place-items: start center;
    padding-top: 104px;
    padding-bottom: 32px;
    pointer-events: auto;
    scrollbar-width: none;
  }
  .nb-space-surface[data-space="build"]::-webkit-scrollbar { display: none; }
  .breathing-widget.nb-build-widget {
    height: 500px;
    min-height: 500px;
    flex: 0 0 auto;
  }
}

@media (max-width: 620px) {
  .nb-space-head { flex-direction: column; }
  .nb-card-grid--projects,
  .nb-card-grid--templates,
  .nb-card-grid--runtime { grid-template-columns: 1fr; }
  .nb-composer-card { padding: 18px; }
  .nb-composer-toolbar { align-items: stretch; flex-direction: column; }
  .nb-composer-tools { flex-wrap: wrap; }
  .nb-send-button { justify-content: center; }
  .nb-space-dock__rail { grid-template-columns: repeat(2,58px) 62px repeat(2,58px); }
  .nb-space-dock button:not(.nb-space-dock__orb) span { display: none; }
  .nb-space-dock__orb { width: 58px; height: 58px; }
  .nb-build-widget__composer .br-title { font-size: clamp(25px, 8vw, 31px); }
  .nb-build-widget__composer .br-instruction { max-width: 100%; }
  .nb-build-widget .nb-composer-toolbar { align-items: stretch; flex-direction: column; }
  .nb-build-widget .nb-composer-tools { display: grid; width: 100%; grid-template-columns: 44px minmax(0, 1fr); }
  .nb-build-widget .nb-build-workflow { width: 100%; grid-column: 2; grid-row: 1; justify-self: stretch; }
  .nb-build-widget .nb-model-picker { grid-column: 1 / -1; width: 100%; }
  .nb-build-widget .nb-model-trigger { width: 100%; min-width: 0; }
  .nb-build-widget .nb-model-menu { left: 0; right: auto; width: 100%; padding: 10px; }
  .nb-model-menu__list { max-height: 224px; overflow-y: auto; scrollbar-width: none; }
  .nb-model-menu__list::-webkit-scrollbar { display: none; }
  .nb-model-menu__foot > span { display: none; }
  .nb-composer-end { width: 100%; justify-content: space-between; }
  .nb-build-widget .nb-build-submit { width: auto; min-width: 0; flex: 1; }
  .nb-build-widget .nb-build-control { min-height: 44px; }
  .nb-build-widget .nb-build-control--icon { width: 44px; }
  .nb-build-assurance { line-height: 1.45; }
  .nb-build-assurance > span { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .nb-space-surface,
  .nb-space-dock__orb::before,
  .nb-space-dock__orb::after,
  .nb-model-menu,
  .nb-model-option,
  .nb-build-workflow::before,
  .nb-model-option__rail,
  .nb-model-trigger__signal i,
  .nb-model-trigger__chevron,
  .nb-build-submit__arrow .nb-icon { animation: none; transition: none; }
  .nb-build-widget .nb-build-submit::before { animation: none; }
}
/* ── Native Neura Build Desk applications ──────────────────────────────
   The Desk keeps Neura Space's window manager and wallpaper. Product
   capabilities render as focused apps rather than an embedded legacy shell.
   Patterns are adapted from the 21st Tree Code Viewer, Omni Palette and
   AI Input with File: strong two-pane hierarchy, quiet chrome, contextual
   toolbars and keyboard-first controls. */
/* The dock floats over the desk, and a window opened at its default height
   ended 34px underneath it — enough to swallow a panel's footer line. Leave
   the dock its own air. A window somebody drags down is their business. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-window {
  max-height: calc(100dvh - 148px);
}

body[data-product="neura-build"][data-nb-space="desk"] .desk-window {
  --nb-app-line: rgba(255,255,255,.105);
  --nb-app-line-soft: rgba(255,255,255,.065);
  --nb-app-fill: rgba(8,10,12,.78);
  --nb-app-fill-2: rgba(19,22,25,.58);
  /* A window is glass, like every other panel in this shell: the wallpaper
     reads through it and the blur is what makes the content legible, not an
     opaque ground. The old .91/.94 alphas made a black rectangle that only
     happened to have a blur behind it. */
  background:
    radial-gradient(circle at 72% 0%, rgba(202,215,223,.06), transparent 44%),
    linear-gradient(150deg, rgba(19,23,27,.62), rgba(8,11,14,.7)) !important;
  border: 1px solid rgba(255,255,255,.085) !important;
  border-radius: 16px !important;
  /* Drawn tight. 110px of half-black reached well past the frame, and the
     rails either side are glass — they read whatever is behind them, so an
     open window laid a dark wash across both menus. The source also gives the
     focused window a larger shadow than the others, which on a desk with two
     windows meant the wash grew and shrank every time focus moved. One shadow,
     one size: it still lifts the window off the wallpaper, it ends before the
     rails, and nothing about it changes when focus does. */
  box-shadow: 0 16px 40px rgba(0,0,0,.34), inset 0 1px rgba(255,255,255,.07) !important;
  backdrop-filter: blur(30px) saturate(122%) !important;
  -webkit-backdrop-filter: blur(30px) saturate(122%) !important;
}
/* The surface inside a window is a separate document; it is transparent from
   its own side (see app/embedded/desk/layout.tsx), and the frame element that
   holds it must not paint a ground either. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__frame,
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__panel,
body[data-product="neura-build"][data-nb-space="desk"] .nb-editor-bridge__frame {
  background: transparent !important;
}
/* The bar names the tool, then the project it is aimed at — the way a browser
   names the page and then the site. Both read as plain text at one size; the
   old uppercase micro-caps made the project name look like a status code. */
/* The bar names the tool, then the project it is aimed at — the way a browser
   names the page and then the site. Both read as plain text at one size; the
   old uppercase micro-caps made the project name look like a status code.
   Half the height it was, and no longer transparent. A title bar that takes
   the window's own glass has no edge of its own: it read as the top of the
   content rather than as the handle you drag the window by. Black at low alpha
   over the same glass keeps it in the material and still puts a step between
   the chrome and the body. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__bar {
  height: 32px !important;
  padding: 0 8px 0 14px !important;
  gap: 9px;
  border-bottom: 1px solid rgba(255,255,255,.05) !important;
  background: rgba(0,0,0,.26) !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__title {
  color: rgba(245,247,248,.93) !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  letter-spacing: -.01em !important;
  text-transform: none !important;
}
/* The project name has a node of its own; .desk-window__status stays the
   shell session channel and reads as the quiet aside it is. The reference
   drawing has no icon in the bar either, so the shell's is stood down. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-window [data-nb-window-project] {
  flex-shrink: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(218,226,230,.46);
  font-size: 12px;
  font-weight: 300;
  letter-spacing: -.005em;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__status {
  color: rgba(218,226,230,.4) !important;
  font-size: 12px !important;
  font-weight: 300 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__icon {
  display: none !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__btn {
  width: 18px !important; height: 18px !important; border-radius: 5px !important;
  flex: 0 0 auto;
  background: transparent !important;
  color: rgba(231,235,237,.5) !important; transition: .18s ease !important;
}
/* The bar's own gap is set for words, not for a cluster of three marks. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__btn + .desk-window__btn {
  margin-left: -4px;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__btn svg {
  width: 11px !important; height: 11px !important; stroke-width: 1.6 !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__btn:hover {
  color: #fff !important; background: rgba(255,255,255,.07) !important;
  box-shadow: none !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__stage,
body[data-product="neura-build"][data-nb-space="desk"] .desk-window__panel { min-height:0; background:transparent !important; }

.nb-native-app { width:100%; height:100%; min-height:0; display:grid; color:rgba(235,239,241,.82); }
.nb-code-app { grid-template-columns: 258px minmax(0,1fr); }
.nb-app-rail { min-width:0; overflow:auto; border-right:1px solid var(--nb-app-line-soft); background:rgba(5,7,9,.36); }
.nb-app-rail__head { height:40px; display:flex; align-items:center; justify-content:space-between; padding:0 13px 0 16px; color:rgba(225,231,234,.45); font-size:8px; font-weight:700; letter-spacing:.16em; }
.nb-app-rail__head button,.nb-attach { border:1px solid transparent; background:transparent; color:rgba(235,239,241,.52); cursor:pointer; }
.nb-app-rail__head button { width:26px; height:26px; border-radius:8px; font-size:15px; }
.nb-app-rail__head button:hover,.nb-attach:hover { border-color:var(--nb-app-line); background:rgba(255,255,255,.055); color:#fff; }
.nb-project-crumb { display:flex; align-items:center; gap:9px; height:36px; padding:0 16px; border-block:1px solid rgba(255,255,255,.045); color:rgba(240,243,245,.73); font-size:10px; }
.nb-project-crumb i,.nb-context-signal i { width:6px; height:6px; border-radius:50%; background:#9bd9b6; box-shadow:0 0 12px rgba(155,217,182,.7); }
.nb-app-rail .nb-dw-list { padding:8px !important; }
.nb-app-rail .nb-row-button { min-height:46px !important; border-radius:9px !important; padding:8px 9px !important; border:1px solid transparent !important; }
.nb-app-rail .nb-row-button:hover { border-color:rgba(255,255,255,.08) !important; background:rgba(255,255,255,.045) !important; }
.nb-app-rail .nb-row-button > span:last-child { font-size:7px; letter-spacing:.08em; color:rgba(220,228,232,.25); }
.nb-app-stage { min-width:0; min-height:0; display:grid; grid-template-rows:40px 32px minmax(0,1fr) 34px; }
.nb-file-tabs { display:flex; align-items:stretch; border-bottom:1px solid var(--nb-app-line-soft); background:rgba(6,8,10,.28); }
.nb-file-tabs > span { display:flex; align-items:center; padding:0 15px; font-size:9px; color:rgba(225,231,234,.38); }
.nb-file-tabs .is-active { color:rgba(245,247,248,.84); border-right:1px solid var(--nb-app-line-soft); background:rgba(255,255,255,.035); box-shadow:inset 0 -1px rgba(235,240,243,.5); }
.nb-file-tabs__meta { margin-left:auto; letter-spacing:.08em; text-transform:uppercase; }
.nb-code-breadcrumb { display:flex; align-items:center; padding:0 15px; border-bottom:1px solid rgba(255,255,255,.035); color:rgba(226,232,235,.36); font:9px/1 ui-monospace,SFMono-Regular,Consolas,monospace; }
.nb-code-editor { width:100% !important; height:100% !important; min-height:0 !important; resize:none !important; border:0 !important; border-radius:0 !important; outline:0 !important; padding:18px 20px !important; background:rgba(4,6,8,.43) !important; color:#d8dee3 !important; caret-color:#fff; font:12px/1.72 ui-monospace,SFMono-Regular,Consolas,monospace !important; tab-size:2; }
.nb-code-editor::placeholder { color:rgba(220,228,232,.22); }
.nb-app-status { display:flex; align-items:center; gap:16px; padding:0 8px 0 14px; border-top:1px solid var(--nb-app-line-soft); color:rgba(219,227,231,.35); font-size:8px; letter-spacing:.04em; }
.nb-app-status .dw-btn { margin-left:auto; height:25px !important; min-height:25px !important; padding:0 12px !important; }

.nb-chat-app { grid-template-columns:230px minmax(0,1fr); }
.nb-chat-context { padding:28px 22px; border-right:1px solid var(--nb-app-line-soft); background:linear-gradient(180deg,rgba(255,255,255,.025),transparent 56%); }
.nb-app-eyebrow { color:rgba(226,232,235,.35); font-size:8px; font-weight:700; letter-spacing:.17em; }
.nb-chat-context h3 { margin:13px 0 9px; color:rgba(247,248,249,.9); font-size:18px; font-weight:420; letter-spacing:-.025em; }
.nb-chat-context p { margin:0 0 25px; color:rgba(220,226,229,.42); font-size:10px; line-height:1.65; }
.nb-context-signal { display:flex; align-items:center; gap:9px; min-height:34px; border-top:1px solid rgba(255,255,255,.05); color:rgba(227,232,235,.55); font-size:9px; }
.nb-chat-context .nb-context-signal i { width:5px; height:5px; }
.nb-chat-app .dw-chat { min-height:0; display:grid; grid-template-rows:minmax(0,1fr) auto; background:transparent; }
.nb-chat-app .dw-chat__thread { min-height:0; overflow:auto; padding:28px clamp(28px,5vw,62px); }
.nb-neva-mark { width:32px; height:32px; display:grid; place-items:center; margin-bottom:13px; border:1px solid rgba(255,255,255,.12); border-radius:50%; color:rgba(255,255,255,.84); background:radial-gradient(circle,rgba(255,255,255,.16),transparent 68%); box-shadow:0 0 30px rgba(214,228,236,.11); }
.nb-chat-app .dw-bubble { max-width:620px; padding:13px 15px !important; border:1px solid rgba(255,255,255,.07) !important; border-radius:13px !important; background:rgba(255,255,255,.035) !important; color:rgba(239,242,244,.72) !important; font-size:11px !important; line-height:1.65 !important; }
.nb-chat-app .dw-bubble--you { margin-left:auto; background:rgba(218,228,234,.09) !important; color:rgba(250,251,252,.86) !important; }
.nb-chat-composer { margin:0 22px 20px !important; padding:8px !important; display:grid !important; grid-template-columns:36px minmax(0,1fr) 38px; align-items:end; gap:7px; border:1px solid rgba(255,255,255,.14) !important; border-radius:17px !important; background:rgba(5,7,9,.66) !important; box-shadow:0 16px 44px rgba(0,0,0,.27),inset 0 1px rgba(255,255,255,.045); }
.nb-chat-composer textarea { min-height:36px; max-height:120px; resize:none; padding:10px 4px !important; border:0 !important; outline:0 !important; background:transparent !important; color:rgba(248,249,250,.85) !important; font-size:11px !important; line-height:1.45; }
.nb-chat-composer textarea::placeholder { color:rgba(225,232,235,.27); }
.nb-attach { width:36px; height:36px; border-radius:11px; font-size:16px; }
.nb-chat-composer .dw-btn { width:36px !important; height:36px !important; min-height:36px !important; padding:0 !important; border-radius:11px !important; font-size:16px !important; }

body[data-product="neura-build"][data-nb-space="desk"] .dw-btn {
  min-height:34px; padding:0 14px; border:1px solid rgba(255,255,255,.13) !important;
  border-radius:10px !important; background:rgba(255,255,255,.035) !important;
  color:rgba(239,242,244,.68) !important; box-shadow:inset 0 1px rgba(255,255,255,.035);
  transition:transform .16s ease,background .16s ease,border-color .16s ease !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .dw-btn:hover { transform:translateY(-1px); background:rgba(255,255,255,.075) !important; border-color:rgba(255,255,255,.22) !important; color:#fff !important; }
body[data-product="neura-build"][data-nb-space="desk"] .dw-btn--primary { background:linear-gradient(180deg,rgba(244,247,249,.16),rgba(210,220,226,.08)) !important; border-color:rgba(244,248,250,.28) !important; color:rgba(255,255,255,.9) !important; box-shadow:0 0 0 1px rgba(255,255,255,.04),0 8px 22px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.13) !important; }
body[data-product="neura-build"][data-nb-space="desk"] :is(button, [tabindex]):focus-visible {
  outline: 1px solid rgba(255,255,255,.26);
  outline-offset: 2px;
}

body[data-product="neura-build"][data-nb-space="desk"] .nb-detail-card,
body[data-product="neura-build"][data-nb-space="desk"] .nb-setting-link,
body[data-product="neura-build"][data-nb-space="desk"] .dw-figure { border-color:rgba(255,255,255,.09) !important; background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012)) !important; box-shadow:inset 0 1px rgba(255,255,255,.035) !important; }

@media (prefers-reduced-motion: reduce) {
  body[data-product="neura-build"][data-nb-space="desk"] *,
  body[data-product="neura-build"][data-nb-space="desk"] *::before,
  body[data-product="neura-build"][data-nb-space="desk"] *::after {
    scroll-behavior:auto !important; animation-duration:.01ms !important;
    animation-iteration-count:1 !important; transition-duration:.01ms !important;
  }
}

/* ── Command-bar menus ───────────────────────────────────────────────
   Help, Workspace activity and Build health are Atmosphere-shaped panels:
   the chrome, tokens and motion are .atmos-panel's own, so only three things
   are defined here — the anchored position (Atmosphere sits at a fixed 64%,
   these hang under the icon that opened them), a content area of fixed
   height so switching tabs never jumps, and the handful of content
   primitives the tabs are made of. They are deliberately wide and short: a
   tile grid flows into as many columns as the panel is given. */
body[data-product="neura-build"] .nb-menu-panel {
  width: min(78vw, 940px);
  max-height: min(560px, calc(100vh - 150px));
  padding: 26px 30px 20px;
  /* .atmos-panel centres itself on a fixed left; these are placed by their
     own trigger, so the offset transform is dropped in both states and the
     scale still grows out of the icon through transform-origin. */
  transform: none;
}

body[data-product="neura-build"] .nb-menu-panel.hidden {
  transform: scale(0.96) translateY(-8px);
}

body[data-product="neura-build"] .nb-menu-panel .atmos-header { margin-bottom: 14px; }
body[data-product="neura-build"] .nb-menu-panel .atmos-title__text { font-size: 19px; }
body[data-product="neura-build"] .nb-menu-panel .atmos-tabs,
body[data-product="neura-build"] .nb-menu-panel .atmos-tabback-row { gap: 26px; margin-bottom: 14px; }
body[data-product="neura-build"] .nb-menu-panel .atmos-tab,
body[data-product="neura-build"] .nb-menu-panel .atmos-tabback,
body[data-product="neura-build"] .nb-menu-panel .atmos-tabback__title { font-size: 15px; }
body[data-product="neura-build"] .nb-menu-panel .atmos-tabback__divider { height: 30px; margin: 0 18px; }
/* the shared chevron glyph points down; Back needs it pointing back */
body[data-product="neura-build"] .nb-menu-panel .atmos-tabback__chev svg { transform: rotate(90deg); }
body[data-product="neura-build"] .nb-menu-panel .atmos-footer { padding-top: 12px; }
body[data-product="neura-build"] .nb-menu-panel .wear-footer { margin: 0; }

/* A tab is as tall as it needs to be, up to one ceiling every tab shares:
   a fixed height left the one-tile guide standing in an empty box, and an
   unbounded one let the fleet grow past the screen. */
body[data-product="neura-build"] .nb-menu-content {
  flex: 0 1 auto;
  max-height: 340px;
  min-height: 0;
  overflow: hidden auto;
  padding-right: 2px;
  /* .atmos-content is a flex column for Atmosphere own views; these tabs are
     ordinary flow content, and the reader needs a block box to fill. */
  display: block;
}

body[data-product="neura-build"] .nb-group + .nb-group { margin-top: 18px; }
body[data-product="neura-build"] .nb-group__head { margin-bottom: 8px; }
body[data-product="neura-build"] .nb-group__head h3 {
  margin: 0;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wear-muted);
}
body[data-product="neura-build"] .nb-group__head p {
  margin: 3px 0 0;
  font-size: 12px;
  font-weight: 300;
  color: var(--wear-muted);
}

/* the grid is what makes these menus wide instead of tall */
body[data-product="neura-build"] .nb-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 2px 14px;
}

body[data-product="neura-build"] .nb-tile {
  display: flex;
  align-items: center;
  gap: 11px;
  width: 100%;
  padding: 9px 10px;
  border: none;
  border-radius: 12px;
  background: transparent;
  color: var(--wear-primary);
  font-family: inherit;
  text-align: left;
  min-width: 0;
}
body[data-product="neura-build"] .nb-tile--action { cursor: pointer; transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1); }
body[data-product="neura-build"] .nb-tile--action:hover { background: rgba(255, 255, 255, 0.05); }
body[data-product="neura-build"] .nb-tile--action.is-selected { background: rgba(255, 255, 255, 0.07); }
body[data-product="neura-build"] .nb-tile--action:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.25); outline-offset: -2px; }
body[data-product="neura-build"] .nb-tile__icon { flex-shrink: 0; display: inline-flex; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-tile__icon svg { width: 17px; height: 17px; }
body[data-product="neura-build"] .nb-tile__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
body[data-product="neura-build"] .nb-tile__name {
  font-size: 13.5px;
  font-weight: 300;
  letter-spacing: -0.01em;
  color: var(--wear-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body[data-product="neura-build"] .nb-tile__meta {
  font-size: 11.5px;
  font-weight: 300;
  color: var(--wear-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body[data-product="neura-build"] .nb-tile__chev { flex-shrink: 0; display: inline-flex; color: var(--wear-muted); opacity: 0; transition: opacity 0.2s ease; }
body[data-product="neura-build"] .nb-tile__chev svg { width: 15px; height: 15px; transform: rotate(-90deg); }
body[data-product="neura-build"] .nb-tile--action:hover .nb-tile__chev,
body[data-product="neura-build"] .nb-tile--action:focus-visible .nb-tile__chev { opacity: 1; }

body[data-product="neura-build"] .nb-dot {
  flex-shrink: 0;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.28);
}
body[data-product="neura-build"] .nb-dot[data-tone="ok"] { background: rgba(120, 220, 160, 0.85); }
body[data-product="neura-build"] .nb-dot[data-tone="bad"] { background: rgba(240, 150, 130, 0.9); }

/* fleet table — five columns, the shell's own row metrics */
body[data-product="neura-build"] .nb-table { display: flex; flex-direction: column; }
body[data-product="neura-build"] .nb-table__head,
body[data-product="neura-build"] .nb-row {
  display: grid;
  grid-template-columns: minmax(0, 2.4fr) minmax(0, 1.2fr) minmax(0, 0.7fr) minmax(0, 0.9fr) minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 8px 10px;
}
body[data-product="neura-build"] .nb-table__head {
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wear-muted);
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}
body[data-product="neura-build"] .nb-row {
  border: none;
  border-radius: 12px;
  background: transparent;
  color: var(--wear-primary);
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
body[data-product="neura-build"] .nb-row:hover { background: rgba(255, 255, 255, 0.05); }
body[data-product="neura-build"] .nb-row.is-selected { background: rgba(255, 255, 255, 0.08); }
body[data-product="neura-build"] .nb-row:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.25); outline-offset: -2px; }
body[data-product="neura-build"] .nb-row__name { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
body[data-product="neura-build"] .nb-row__name b { font-size: 13px; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-row__name small { font-size: 11px; color: var(--wear-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-row__cell {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  font-size: 12px;
  font-weight: 300;
  color: var(--wear-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* three-across card row: the guide's comparison and the deployment queue */
body[data-product="neura-build"] .nb-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}
body[data-product="neura-build"] .nb-card,
body[data-product="neura-build"] .nb-queue {
  min-width: 0;
  padding: 13px 14px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  background: rgba(255, 255, 255, 0.025);
}
body[data-product="neura-build"] .nb-card__icon { display: inline-flex; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-card__icon svg { width: 17px; height: 17px; }
body[data-product="neura-build"] .nb-card h4 { margin: 7px 0 5px; font-size: 13.5px; font-weight: 400; color: var(--wear-primary); }
body[data-product="neura-build"] .nb-card p { margin: 0 0 8px; font-size: 12px; font-weight: 300; color: var(--wear-secondary); }
body[data-product="neura-build"] .nb-card ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
body[data-product="neura-build"] .nb-card li { position: relative; padding-left: 11px; font-size: 11.5px; font-weight: 300; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-card li::before { content: ""; position: absolute; left: 0; top: 7px; width: 3px; height: 3px; border-radius: 50%; background: rgba(255, 255, 255, 0.3); }

body[data-product="neura-build"] .nb-queue header { display: flex; align-items: center; gap: 8px; margin-bottom: 9px; }
body[data-product="neura-build"] .nb-queue header h4 { flex: 1; margin: 0; font-size: 12px; font-weight: 400; color: var(--wear-secondary); }
body[data-product="neura-build"] .nb-queue header b { font-size: 12px; font-weight: 400; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-queue__empty { margin: 0; font-size: 11.5px; font-weight: 300; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-queue__item { display: flex; flex-direction: column; gap: 2px; padding: 6px 0; }
body[data-product="neura-build"] .nb-queue__item + .nb-queue__item { border-top: 1px solid rgba(255, 255, 255, 0.05); }
body[data-product="neura-build"] .nb-queue__top { display: flex; align-items: center; gap: 7px; min-width: 0; }
body[data-product="neura-build"] .nb-queue__top b { font-size: 12.5px; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-queue__top em { font-style: normal; font-size: 11px; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-queue__meta { font-size: 11px; font-weight: 300; color: var(--wear-muted); }

/* term/meaning pairs — the guide's decision list, glossary and standards */
body[data-product="neura-build"] .nb-pairs {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 4px 16px;
}
body[data-product="neura-build"] .nb-pairs > div { min-width: 0; padding: 6px 0; }
body[data-product="neura-build"] .nb-pairs dt { font-size: 12.5px; font-weight: 400; color: var(--wear-primary); }
body[data-product="neura-build"] .nb-pairs dd { margin: 2px 0 0; font-size: 11.5px; font-weight: 300; line-height: 1.5; color: var(--wear-muted); }

body[data-product="neura-build"] .nb-log {
  margin: 0;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  background: rgba(0, 0, 0, 0.28);
  font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
  font-size: 11.5px;
  line-height: 1.65;
  color: var(--wear-secondary);
  white-space: pre-wrap;
  word-break: break-word;
}

body[data-product="neura-build"] .nb-menu-empty {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 34px 10px;
  text-align: center;
}
body[data-product="neura-build"] .nb-menu-empty p { margin: 0; font-size: 13.5px; font-weight: 300; color: var(--wear-secondary); }
body[data-product="neura-build"] .nb-menu-empty span { font-size: 11.5px; font-weight: 300; color: var(--wear-muted); }
body[data-product="neura-build"] .nb-menu-empty.is-loading p { animation: nbMenuPulse 1.4s ease-in-out infinite; }
@keyframes nbMenuPulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 1; } }

/* A policy is read from the route that owns its text, inside the panel: the
   reader route drops its own chrome and ground, so the words land straight
   on the panel's glass instead of in a window over the bar. */
body[data-product="neura-build"] .nb-reader { height: 340px; }
body[data-product="neura-build"] .nb-reader__frame {
  display: block;
  width: 100%;
  height: 100%;
  border: none;
  background: transparent;
  color-scheme: dark;
}

/* The workspace search dropped a native scrollbar down its results — a hard
   white bar over the glass, and the only one left in the shell. */
body[data-product="neura-build"] .widget-search-dropdown { scrollbar-width: none; -ms-overflow-style: none; }
body[data-product="neura-build"] .widget-search-dropdown::-webkit-scrollbar { width: 0; height: 0; display: none; }

@media (max-width: 900px) {
  body[data-product="neura-build"] .nb-menu-panel { width: calc(100vw - 32px); }
}
/* ── Desk rails ──────────────────────────────────────────────────────
   Two named rails stand either side of the window stage, holding the same
   apps the launcher grid held: Create on the left, Operate on the right.
   They wear the shell's own panel material (the tokens .wear-panel and
   .atmos-panel are built from), so a rail is the same glass as a menu at a
   different size — nothing here introduces a second visual language. */
body[data-product="neura-build"][data-nb-space="desk"] .desk-launcher {
  display: none !important;
}

body[data-product="neura-build"] .nb-desk-rails {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 5;
}
/* The tab panel fades itself in and transitions the inherited visibility with
   a delay; a rail mounted while that transition was still running inherited
   the hidden value and stayed on it. Both rails state their own visibility,
   and the rails only exist at all in the Desk. */
body[data-product="neura-build"]:not([data-nb-space="desk"]) .nb-desk-rails {
  display: none;
}

/* Metrics are the reference design's own: a 208px column, a 16px radius, one
   hairline under the name and one between rows, and a row tall enough for the
   caption to break over two lines. The material stays the shell's panel glass;
   only the proportions are taken from the drawing.

   Two things are said in terms of something else. The column is the drawing's
   width times --nb-rail-k, so asking for a smaller rail is one number rather
   than thirty. And the side inset is not a number at all: it is the same 1.2% /
   1.4% index.css gives .control-nav and .command-bar, so each rail keeps its
   edge under the bar above it at every window width. */
body[data-product="neura-build"] .nb-rail {
  --nb-rail-k: 0.85;
  --nb-rail-pad: calc(18px * var(--nb-rail-k));
  --nb-rail-gutter: calc(16px * var(--nb-rail-k));
  position: absolute;
  top: 104px;
  bottom: 96px;
  width: calc(208px * var(--nb-rail-k));
  display: flex;
  flex-direction: column;
  min-height: 0;
  pointer-events: auto;
  visibility: visible;
  transition: none;
  /* The same material as the menus, down to having no border. A panel in this
     shell is glass, a blur, one inner highlight and a shadow — the outline was
     the only thing making the two rails read as boxes drawn on the desk rather
     than as surfaces floating over it. */
  border-radius: var(--panel-radius, 16px);
  border: none;
  background: var(--panel-glass, rgba(14, 17, 19, 0.55));
  backdrop-filter: var(--panel-blur, blur(22px)) saturate(115%);
  -webkit-backdrop-filter: var(--panel-blur, blur(22px)) saturate(115%);
  box-shadow: var(--panel-shadow, 0 24px 70px rgba(0, 0, 0, 0.45)), var(--panel-highlight, inset 0 1px rgba(255, 255, 255, 0.06));
  --wear-primary: rgba(243, 242, 238, 0.94);
  --wear-secondary: rgba(223, 222, 216, 0.8);
  --wear-muted: rgba(159, 159, 159, 0.62);
  color: var(--wear-primary);
  overflow: hidden;
}
body[data-product="neura-build"] .nb-rail[data-nb-rail="create"] { left: 1.2%; }
body[data-product="neura-build"] .nb-rail[data-nb-rail="operate"] { right: 1.4%; }
/* folded, a rail is just its own name — it keeps the header and drops the list */
body[data-product="neura-build"] .nb-rail.is-folded { bottom: auto; }
body[data-product="neura-build"] .nb-rail.is-folded .nb-rail__list { display: none; }
body[data-product="neura-build"] .nb-rail.is-folded .nb-rail__fold svg { transform: rotate(-90deg); }

body[data-product="neura-build"] .nb-rail__head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 8px;
  height: calc(58px * var(--nb-rail-k));
  padding: 0 var(--nb-rail-gutter) 0 var(--nb-rail-pad);
  border-bottom: 1px solid rgba(255, 255, 255, 0.065);
}
body[data-product="neura-build"] .nb-rail__title {
  flex: 1;
  min-width: 0;
  font-size: calc(17px * var(--nb-rail-k));
  font-weight: 400;
  letter-spacing: -0.015em;
  color: var(--wear-primary);
}
body[data-product="neura-build"] .nb-rail__fold {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(26px * var(--nb-rail-k));
  height: calc(26px * var(--nb-rail-k));
  border: none;
  border-radius: calc(8px * var(--nb-rail-k));
  background: transparent;
  color: var(--wear-muted);
  font-family: inherit;
  cursor: pointer;
  transition: color 0.2s ease, background 0.2s ease;
}
body[data-product="neura-build"] .nb-rail__fold:hover { color: var(--wear-secondary); background: rgba(255, 255, 255, 0.05); }
body[data-product="neura-build"] .nb-rail__fold:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.25); outline-offset: 1px; }
body[data-product="neura-build"] .nb-rail__fold svg { width: calc(18px * var(--nb-rail-k)); height: calc(18px * var(--nb-rail-k)); transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1); }

body[data-product="neura-build"] .nb-rail__list {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow: hidden auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  position: relative;
}
body[data-product="neura-build"] .nb-rail__list::-webkit-scrollbar { width: 0; height: 0; display: none; }

/* The dock floats over every space, so a surface that scrolls to its own edge
   scrolls its last line underneath it. The Admin console's figures sat behind
   the dock with no way to read them. Each scrolling surface ends above it. */
body[data-product="neura-build"] .nb-space-scroll { padding-bottom: 96px; }
body[data-product="neura-build"] .nb-admin-stage__body { padding-bottom: 84px; }

/* The shell's ask bar is a field with no chrome of its own, which reads well
   over the wallpaper and reads as stray text over a panel. Give it the glass
   every other field in this product has, and put it above the panel it is
   floating on. */
body[data-product="neura-build"] .neva-prompt.is-open {
  z-index: 1400;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,16,.86);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 18px 48px rgba(0,0,0,.45);
}
body[data-product="neura-build"] .neva-prompt.is-open .neva-prompt-field {
  padding-left: 20px;
  padding-right: 20px;
}

/* With the scrollbar deliberately gone, a rail that runs past its space looks
   simply finished — at 720px of window height Analytics and Project Settings
   sat below the fold and nothing on screen said so. Fade the bottom edge while
   there is still something under it. */
body[data-product="neura-build"] .nb-rail__list.is-overflowing:not(.is-at-end) {
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 38px), transparent 100%);
  mask-image: linear-gradient(to bottom, #000 calc(100% - 38px), transparent 100%);
}

/* The Atmosphere rows put a name beside a segmented control and give the
   control a 300px basis. In a 399px panel that leaves 53px for the name, so
   "Content Density" reads "Conten…" and "Notifications" reads "Notifica…" —
   the words that say what the control is. Below a wide window the name takes
   what it needs and the control takes the rest; when both will not fit, the
   control drops to its own line rather than either being cut. */
@media (max-width: 1439px) {
  body[data-product="neura-build"] .atmos-settings .atmos-row--seg { flex-wrap: wrap; row-gap: 7px; }
  body[data-product="neura-build"] .atmos-settings .atmos-row--seg .atmos-row__label { flex: 0 1 auto; min-width: max-content; }
  /* min-content, not 0: a control allowed to shrink to nothing shrinks
     instead of wrapping, and then the options are the thing that gets cut. */
  body[data-product="neura-build"] .atmos-settings .atmos-row--seg .atmos-seg { flex: 0 1 auto; min-width: min-content; margin-left: auto; }
  /* An option that may shrink to nothing takes the whole control down with
     it: the row then fits by cutting "Balanced" to "Bala…" instead of
     wrapping. Holding each option at its own text is what makes the row wrap. */
  body[data-product="neura-build"] .atmos-settings .atmos-row--seg .atmos-seg__opt { min-width: max-content; padding-left: 9px; padding-right: 9px; }
}

body[data-product="neura-build"] .nb-rail__item {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--nb-rail-gutter);
  padding: calc(17px * var(--nb-rail-k)) var(--nb-rail-pad) var(--nb-rail-pad);
  cursor: pointer;
  user-select: none;
  transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.15s ease;
}
/* one hairline between rows, inset from the panel edge the way the header's is */
body[data-product="neura-build"] .nb-rail__item + .nb-rail__item::before {
  content: "";
  position: absolute;
  left: var(--nb-rail-gutter);
  right: var(--nb-rail-gutter);
  top: 0;
  height: 1px;
  background: rgba(255, 255, 255, 0.055);
}
body[data-product="neura-build"] .nb-rail__item:hover { background: rgba(255, 255, 255, 0.045); }
body[data-product="neura-build"] .nb-rail__item:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.25); outline-offset: -2px; }
body[data-product="neura-build"] .nb-rail__item.is-dragging { opacity: 0.45; cursor: grabbing; }
body[data-product="neura-build"] .nb-rail__item.is-grabbed { background: rgba(255, 255, 255, 0.09); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22); }
/* where the row would land, drawn on the gap rather than on a row */
body[data-product="neura-build"] .nb-rail__item.is-drop-before::after,
body[data-product="neura-build"] .nb-rail__list.is-drop-end::after {
  content: "";
  position: absolute;
  left: var(--nb-rail-gutter);
  right: var(--nb-rail-gutter);
  height: 2px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.55);
}
body[data-product="neura-build"] .nb-rail__item.is-drop-before::after { top: -1px; }
body[data-product="neura-build"] .nb-rail__list.is-drop-end::after { position: static; display: block; margin: 2px var(--nb-rail-gutter) 0; }

body[data-product="neura-build"] .nb-rail__icon {
  flex-shrink: 0;
  display: inline-flex;
  width: calc(20px * var(--nb-rail-k));
  justify-content: center;
  margin-top: 1px;
  color: var(--wear-secondary);
}
body[data-product="neura-build"] .nb-rail__icon svg { width: calc(19px * var(--nb-rail-k)); height: calc(19px * var(--nb-rail-k)); }
body[data-product="neura-build"] .nb-rail__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: calc(6px * var(--nb-rail-k)); }
body[data-product="neura-build"] .nb-rail__name {
  font-size: calc(15px * var(--nb-rail-k));
  font-weight: 400;
  letter-spacing: -0.012em;
  color: var(--wear-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* the caption is meant to break: the column is narrow so it reads as two short
   lines under the name, which is what gives the rail its rhythm */
body[data-product="neura-build"] .nb-rail__note {
  font-size: calc(13px * var(--nb-rail-k));
  font-weight: 300;
  line-height: 1.42;
  color: var(--wear-muted);
}
body[data-product="neura-build"] .nb-rail__grip {
  position: absolute;
  top: var(--nb-rail-pad);
  right: calc(10px * var(--nb-rail-k));
  display: inline-flex;
  color: var(--wear-muted);
  opacity: 0;
  cursor: grab;
  transition: opacity 0.18s ease;
}
body[data-product="neura-build"] .nb-rail__grip svg { width: calc(14px * var(--nb-rail-k)); height: calc(14px * var(--nb-rail-k)); }
body[data-product="neura-build"] .nb-rail__item:hover .nb-rail__grip,
body[data-product="neura-build"] .nb-rail__item:focus-visible .nb-rail__grip,
body[data-product="neura-build"] .nb-rail__item.is-grabbed .nb-rail__grip { opacity: 1; }
body[data-product="neura-build"] .nb-rail__live {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Neura Build ships Neva's dock, not her particle body. In Neura Space the
   orb is her presence; here it drew a bright plume up the middle of the
   wallpaper on every single load, over a product that has its own composer and
   its own chat app. The host keeps its box so the engine can still measure
   itself — hiding it outright leaves the renderer sizing against zero — and
   the engine is put to sleep in the adapter the moment it is built, so this
   costs one empty frame and no GPU after it. Unconditional rather than scoped
   to a space: this stylesheet is only ever loaded by Neura Build, and the rule
   has to hold from first paint, before any script sets data-product. */
#nevaCanvasHost {
  visibility: hidden !important;
  pointer-events: none !important;
}

/* The dock keeps its two key groups and gives up the orb: Neva already has
   the Build composer and her own chat app, so the sphere was a third door to
   the same place sitting in the middle of the desk. Without it there is no
   notch to cut, and the bar sits down on the bottom edge. */
body[data-product="neura-build"][data-nb-space="desk"] .neva-orb,
body[data-product="neura-build"][data-nb-space="desk"] .neva-orb-stage {
  display: none !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .neva-dock {
  bottom: 14px !important;
  gap: 4px;
  padding: 5px 8px !important;
}
body[data-product="neura-build"][data-nb-space="desk"] .neva-dock::before {
  -webkit-mask: none !important;
  mask: none !important;
}

/* A bar button reads as what it opens, so four of them carry a replacement
   glyph. The shell's own is hidden rather than removed — the cognitive
   trigger keeps re-rendering its animated one. */
body[data-product="neura-build"] .command-bar .icon-btn[data-nb-bar-glyph] > *:not([data-nb-bar-glyph]):not(.notif-badge) {
  display: none !important;
}
body[data-product="neura-build"] .command-bar .icon-btn [data-nb-bar-glyph] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
body[data-product="neura-build"] .command-bar .icon-btn [data-nb-bar-glyph] svg {
  width: 17px;
  height: 17px;
  stroke-width: 1.45;
}

/* ── The Desk wallpaper does not follow the world camera ────────────────
   The source pins it already — `.map-photo[data-bg-tab="desk"]` is
   `position: fixed` under a comment saying the Desk never pans or zooms — but
   a fixed element resolves against its nearest transformed ancestor, and
   `.world-bg` carries the camera's own `translate3d()` on every space. While
   the camera reads zero that transform is invisible, so the pin appears to
   work. The moment anything moves the camera the Desk wallpaper slides out of
   the frame by that much and the space reads as a black sheet — and the camera
   is written to storage, so it survives a reload.
   Moving it does not take a deliberate pan, either: `clampCamera` derives its
   range from `window.innerHeight`, and when that is zero — a background tab, a
   hidden pane, a frame mid-resize — the range collapses to a single point and
   the camera is snapped to half the frame's height.
   Neura Build has no world camera on any space. The other four already refuse
   it through the rule further up this file; the Desk refuses it here. */
body[data-product="neura-build"][data-nb-space="desk"] .world-bg {
  transform: none !important;
}

/* ── The bottom of the Desk is the shell's own bar ─────────────────────
   Neura Space already builds this: desktop/dock-row.js gathers the start
   button, the drawer of open windows, Neva's keys and the clock into one row,
   and desk-shell.js lifts the clock into a corner strip with minimise, restore
   and close the moment a window fills the screen. Build had none of it, because
   all of it hangs off the cognitive pill being collapsed and this product hides
   that pill outright — it emulates a wellness state Build does not have.

   So the pill is hidden as a panel and kept as a taskbar: off the Desk it is
   gone, on the Desk it is held collapsed (see the adapter script), which is the
   state in which it is nothing but a start button with a drawer behind it.

   One number is ours. dock-row.js hangs the row so that Neva's sphere lands on
   the screen's axis; with no sphere to aim at there is nothing to hang from, so
   the row centres on itself instead. */
body[data-product="neura-build"][data-nb-space="desk"] .dock-row {
  right: auto;
  left: 50%;
  transform: translateX(-50%);
}
/* Filling the screen, the row runs edge to edge and the start button and its
   drawer stand down — there is one window and you are in it. The source then
   pushes what is left against the right edge so the sphere stays on the axis it
   was already standing on; with no sphere, the keys simply keep the middle, and
   the clock and the window's three controls sit in the corner strip that
   desk-shell.js pins there. */
body[data-product="neura-build"][data-nb-space="desk"].has-max-window .dock-row {
  left: 0;
  right: 0;
  transform: none;
  justify-content: center;
  padding-right: 0;
}


/* ---------------------------------------------------------------------------
   Builder.io artwork, served from this repo.

   The JS side of this is handled at the DOM boundary by assets/builder/
   local-assets.js, but a stylesheet's url() never passes through it — and these
   five rules live in index.css and world-select/world-select.css, which this
   project preserves byte for byte. So they are re-pointed here instead, at the
   same local copies apps/web/scripts/mirror-builder-assets.mjs downloads.
   --------------------------------------------------------------------------- */
.why-topstar {
  background-image: url("assets/builder/8d5382ff9e3846fdab23cf6b6f7be545.webp");
}
.sr-phase {
  background-image: url("assets/builder/c331e6299c754fd5842bb96a38de582c.webp");
}
.sr-moon-surface,
.ws-body__surface {
  background-image: url("assets/builder/ac0bdea45475487d9848c78295101f7a.webp");
}
.journal-marker-stamp {
  background-image: url("assets/builder/69dcf0ef6f1e44dfa3ee296acfd2cfed.webp");
}


/* ---------------------------------------------------------------------------
   A menu takes the page.

   The shell has a scrim for this, raised on body.world-menu-open /
   body.notif-open — but it lives inside <main class="dashboard">, and that
   element is position:fixed, which makes a stacking context whatever its
   z-index says. Everything in the scrim's layer is capped below the things the
   shell hangs off <body> — the Neva dock, the Desk windows — and no z-index
   written on the scrim can lift it out of there. Which is why the blur only
   ever reached wallpaper: on Build the space surface stayed sharp, and on the
   Desk so did the dock.

   A covering layer cannot be made to work here, because the two bars that carry
   the menus are inside that same trapped context and could not be lifted back
   over it. So nothing covers anything: each layer that should recede blurs and
   dims itself. Order stops mattering, the bars are simply not in the list, and
   it holds in every space rather than only where the stack happened to allow it.
   --------------------------------------------------------------------------- */
body[data-product="neura-build"] .page-scrim {
  display: none !important;
}

/* The two buttons the bar no longer needs. Hidden rather than removed: the
   shell rebuilds its own bar on some transitions, and a node it expects to
   find missing is a worse failure than a node nobody can see or tab to. */
body[data-product="neura-build"] [data-nb-bar-retired] {
  display: none !important;
}

/* The incident count, on the button that now opens Health. */
body[data-product="neura-build"] .nb-bar-badge {
  position: absolute;
  top: 3px;
  right: 3px;
  min-width: 15px;
  height: 15px;
  padding: 0 4px;
  border-radius: 999px;
  background: #e5484d;
  box-shadow: 0 0 0 2px rgba(12, 14, 16, .82);
  color: #fff;
  font: 600 9px/15px Inter, sans-serif;
  text-align: center;
  pointer-events: none;
}
body[data-product="neura-build"] .nb-bar-badge[hidden] { display: none; }

/* The layer the menus are lifted into.

   Raising a panel where it stands does not work, and the reason is worth
   writing down because it looks as though it should: main.dashboard is
   position: fixed, and a fixed element is a stacking context in its own right
   whatever its z-index says. Measured, not assumed — a panel given z-index
   1500 inside it still painted underneath a Desk window at 1201. So the panels
   leave that context altogether and hang off <body>, in a layer above the Desk
   windows (1201–1380) and above the bar that carries the dock (1390).

   The layer is the same box .dashboard is — fixed, inset 0 — so a panel that
   was positioned against one lands in exactly the same place against the
   other: --panel-top resolves its 2% against the same height, and
   anchorMenuPanel's offsetParent arithmetic is untouched. It takes no hits of
   its own, so the bar above it and the page below it stay live where the panel
   is not. */
body[data-product="neura-build"] .nb-menu-layer {
  position: fixed;
  inset: 0;
  z-index: 1500;
  pointer-events: none;
}
body[data-product="neura-build"] .nb-menu-layer > * {
  pointer-events: auto;
}

body[data-product="neura-build"] .world-bg,
body[data-product="neura-build"] .screen-grain,
body[data-product="neura-build"] .world,
body[data-product="neura-build"] .tab-canvas,
body[data-product="neura-build"] .map-hud,
body[data-product="neura-build"] .nb-space-surface,
body[data-product="neura-build"] .nb-space-dock,
body[data-product="neura-build"] .neva-dock,
body[data-product="neura-build"] .dock-row,
body[data-product="neura-build"] .cog-dev,
body[data-product="neura-build"] .desk-window,
body[data-product="neura-build"] .desk-wincontrols {
  transition: filter 0.28s ease;
}
/* One state for every menu in the bar, written by the adapter from the panels
   themselves. The shell sets a class of its own for three of the seven and
   nothing at all for the rest, which is why Help and Activity used to open over
   a page that never moved. Its two are kept beside ours, so a panel that opens
   without going through the adapter still puts the page away. */
body[data-product="neura-build"]:is(.world-menu-open, .notif-open, .nb-menu-open)
  :is(
    .world-bg,
    .screen-grain,
    .world,
    .tab-canvas,
    .map-hud,
    .nb-space-surface,
    .nb-space-dock,
    .neva-dock,
    .dock-row,
    .cog-dev,
    .desk-window,
    .desk-wincontrols
  ) {
  filter: blur(15px) brightness(0.5);
  pointer-events: none;
}
/* The dock carries Neva's keys, the window drawer and the clock inside itself,
   and each of those is on the list in its own right for the spaces where it
   stands alone. On the Desk they are all children of the row, so the same blur
   ran over the same pixels three times and the dock went to mush. The row is
   the one that recedes; what it holds rides along with it. */
body[data-product="neura-build"]:is(.world-menu-open, .notif-open, .nb-menu-open)
  .dock-row
  :is(.neva-dock, .cog-dev) {
  filter: none;
}
body[data-product="neura-build"] .world-menu.is-open {
  z-index: 1500;
}

/* ── Carrying a rail row ────────────────────────────────────────────────
   Reordering is a pointer gesture now (see the adapter script), so the browser
   must not claim the same movement first for a text selection or a scroll. */
body[data-product="neura-build"] .nb-rail__item {
  touch-action: none;
}
body[data-product="neura-build"].nb-rail-carrying,
body[data-product="neura-build"].nb-rail-carrying * {
  cursor: grabbing !important;
}
/* The row itself, lifted out of the rail and hung on the pointer. It takes no
   hits, so the rail underneath stays readable to elementFromPoint. */
body[data-product="neura-build"] .nb-rail__ghost {
  --nb-rail-k: 0.85;
  --nb-rail-pad: calc(18px * var(--nb-rail-k));
  --nb-rail-gutter: calc(16px * var(--nb-rail-k));
  position: fixed;
  z-index: 1470;
  margin: 0;
  border-radius: 12px;
  background: rgba(20, 24, 26, .93);
  box-shadow: 0 20px 46px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .08);
  opacity: .97;
  pointer-events: none;
}
body[data-product="neura-build"] .nb-rail__ghost::before,
body[data-product="neura-build"] .nb-rail__ghost::after {
  display: none;
}
body[data-product="neura-build"] .nb-rail__ghost .nb-rail__grip {
  opacity: 1;
}

/* ── Peek ───────────────────────────────────────────────────────────────
   Hovering a window's key in the bar shows that window. There is no picture to
   show — every desk app is an iframe and the page it sits in is not allowed to
   rasterise one — so the preview is the window itself: it comes forward, the
   others stand down, and a minimised one returns as a ghost for as long as the
   pointer stays.
   1385 clears the window manager's own ceiling (1380) and stays under the bar
   (1390), so a peeked window rises past its neighbours without covering the
   keys that are driving it. */
/* !important throughout: the window manager writes z-index inline on every
   window as it raises them, and an inline value beats any selector. */
body[data-product="neura-build"].nb-peeking .desk-window {
  opacity: .14 !important;
  filter: blur(2px) !important;
}
body[data-product="neura-build"].nb-peeking .desk-window.is-peeked {
  z-index: 1385 !important;
  opacity: 1 !important;
  filter: none !important;
}
/* A minimised window is out of the picture by visibility, so peeking has to put
   it back. It keeps the pointer-events: none it was minimised with — this is a
   look, not a window. */
body[data-product="neura-build"].nb-peeking .desk-window.is-peeked.is-hidden {
  visibility: visible;
  opacity: .9;
}

body[data-product="neura-build"] .nb-peek-card {
  position: fixed;
  z-index: 1460;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 11px 7px 8px;
  transform: translate(-50%, -100%);
  border-radius: 12px;
  background: rgba(16, 19, 21, .9);
  box-shadow: 0 16px 40px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .07);
  backdrop-filter: blur(22px) saturate(1.15);
  -webkit-backdrop-filter: blur(22px) saturate(1.15);
  color: rgba(246, 248, 249, .95);
  font-family: Inter, sans-serif;
  white-space: nowrap;
  pointer-events: none;
}
body[data-product="neura-build"] .nb-peek-card__icon {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: rgba(255, 255, 255, .07);
}
body[data-product="neura-build"] .nb-peek-card__icon .nb-icon { width: 14px; height: 14px; }
body[data-product="neura-build"] .nb-peek-card__text { display: grid; gap: 1px; }
body[data-product="neura-build"] .nb-peek-card__text strong { font: 600 12px/1.25 Inter, sans-serif; }
body[data-product="neura-build"] .nb-peek-card__text small { color: rgba(226, 234, 240, .5); font: 500 10px/1.25 Inter, sans-serif; }
body[data-product="neura-build"] .nb-peek-card__state {
  margin-left: 3px;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(120, 226, 168, .14);
  color: rgba(150, 235, 190, .95);
  font: 600 9px/1 Inter, sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
}
body[data-product="neura-build"] .nb-peek-card__state.is-off {
  background: rgba(255, 255, 255, .08);
  color: rgba(226, 234, 240, .6);
}


/* ── One-time values ───────────────────────────────────────────────────
   A join link or a fresh API key is shown once and never again, so it gets a
   block that stays until the screen changes rather than a toast that leaves
   before anyone has copied it. */
.nb-set-secret {
  display: grid;
  gap: calc(8px * var(--set-zoom, 1));
  grid-template-columns: 1fr auto;
  align-items: center;
  padding: calc(11px * var(--set-zoom, 1));
  border: 1px dashed rgba(167,243,208,.4);
  border-radius: calc(11px * var(--set-zoom, 1));
  background: rgba(167,243,208,.06);
}
.nb-set-secret code {
  overflow-wrap: anywhere;
  color: rgba(215,255,235,.95);
  font: 500 calc(10px * var(--set-text-scale, 1))/1.5 "Courier Prime", monospace;
  user-select: all;
}
.nb-set-secret small {
  grid-column: 1 / -1;
  color: rgba(255,255,255,.58);
  font-size: calc(9px * var(--set-text-scale, 1));
  line-height: 1.5;
}

/* Controls that sit in a table row rather than under a card. */
.nb-set-inline { display: flex; align-items: center; gap: 6px; }
.nb-set-input--inline {
  width: auto;
  min-height: calc(26px * var(--set-zoom, 1));
  padding: calc(4px * var(--set-zoom, 1)) calc(8px * var(--set-zoom, 1));
  font-size: calc(9.6px * var(--set-text-scale, 1));
}

/* ── Discover ──────────────────────────────────────────────────────────
   The body swaps between six collections without rebuilding the space, so it
   is the scrolling child rather than the grid inside it. */
.nb-space-surface[data-space="discover"] .nb-projects-panel > [data-nb-discover-body] {
  position: relative;
  z-index: 3;
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 14px;
  min-height: 0;
  width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 2px 7px 2px 0;
  scrollbar-color: rgba(224,235,244,.3) transparent;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
}
.nb-space-surface[data-space="discover"] [data-nb-discover-body]::-webkit-scrollbar { width: 6px; }
.nb-space-surface[data-space="discover"] [data-nb-discover-body]::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(224,235,244,.3); }
.nb-space-surface[data-space="discover"] [data-nb-discover-body] .nb-card-grid {
  flex: none;
  overflow: visible;
  padding: 0;
  mask-image: none;
  -webkit-mask-image: none;
}
.nb-discover-band {
  margin: 0;
  color: rgba(255,255,255,.62);
  font: 500 9.4px/1 Inter, sans-serif;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.nb-discover-cats {
  position: relative;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 4px;
}
.nb-discover-cats button {
  padding: 5px 11px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 999px;
  background: rgba(255,255,255,.03);
  color: rgba(255,255,255,.66);
  font: 500 9.4px/1 Inter, sans-serif;
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
}
.nb-discover-cats button:hover { border-color: rgba(255,255,255,.26); color: rgba(255,255,255,.88); }
.nb-discover-cats button.is-active {
  border-color: rgba(255,255,255,.44);
  background: rgba(255,255,255,.9);
  color: #0b0e10;
}
.nb-space-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 220px;
  color: rgba(255,255,255,.6);
  font: 500 11px/1 Inter, sans-serif;
}
.nb-space-loading span {
  width: 13px;
  height: 13px;
  border: 1.5px solid rgba(255,255,255,.2);
  border-top-color: rgba(255,255,255,.8);
  border-radius: 50%;
  animation: nb-space-spin 720ms linear infinite;
}
@keyframes nb-space-spin { to { transform: rotate(360deg); } }

/* Plans. Three cards, one of which you are already on — so that one says so
   and stops offering itself rather than looking like an upsell you ignored. */
.nb-plan-grid {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}
.nb-plan-card {
  display: grid;
  gap: 10px;
  align-content: start;
  padding: 17px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 15px;
  background: linear-gradient(150deg, rgba(255,255,255,.07), rgba(255,255,255,.018));
}
.nb-plan-card.is-current { border-color: rgba(167,243,208,.38); background: linear-gradient(150deg, rgba(167,243,208,.08), rgba(255,255,255,.02)); }
.nb-plan-card header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.nb-plan-card h3 { margin: 0; color: rgba(255,255,255,.92); font: 500 13px/1.2 Inter, sans-serif; }
.nb-plan-card__now {
  padding: 3px 8px;
  border: 1px solid rgba(167,243,208,.4);
  border-radius: 999px;
  color: rgba(167,243,208,.92);
  font: 500 8.2px/1 Inter, sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.nb-plan-card__price { display: flex; align-items: baseline; gap: 6px; margin: 0; }
.nb-plan-card__price strong { color: rgba(255,255,255,.96); font: 600 26px/1 Inter, sans-serif; }
.nb-plan-card__price small { color: rgba(255,255,255,.5); font: 400 9.6px/1 Inter, sans-serif; }
.nb-plan-card__desc { margin: 0; color: rgba(255,255,255,.58); font: 400 10px/1.55 Inter, sans-serif; }
.nb-plan-card__features { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.nb-plan-card__features li {
  padding-left: 18px;
  color: rgba(255,255,255,.74);
  font: 400 9.8px/1.5 Inter, sans-serif;
  position: relative;
}
.nb-plan-card__features li::before {
  position: absolute;
  left: 0;
  content: "✓";
  color: rgba(167,243,208,.9);
}
.nb-plan-card__features li[data-ok="false"] { color: rgba(255,255,255,.35); }
.nb-plan-card__features li[data-ok="false"]::before { content: "—"; color: rgba(255,255,255,.28); }

/* ── The platform console ──────────────────────────────────────────────
   Twenty-two sections is too many for a tab row and too few for a search box,
   so they stand in a rail grouped by what they govern, with one section on
   the stage at a time. */
.nb-space-surface[data-space="admin"] .nb-admin-layout {
  position: relative;
  z-index: 3;
  display: grid;
  flex: 1;
  gap: 16px;
  grid-template-columns: minmax(190px, 232px) minmax(0, 1fr);
  min-height: 0;
  width: 100%;
}
.nb-admin-rail {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-height: 0;
  overflow-y: auto;
  padding-right: 6px;
  scrollbar-color: rgba(224,235,244,.28) transparent;
  scrollbar-width: thin;
}
.nb-admin-rail::-webkit-scrollbar { width: 5px; }
.nb-admin-rail::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(224,235,244,.28); }
.nb-admin-band { display: grid; gap: 5px; }
.nb-admin-band h3 {
  margin: 0 0 1px;
  color: rgba(255,255,255,.4);
  font: 500 8.6px/1 Inter, sans-serif;
  letter-spacing: .17em;
  text-transform: uppercase;
}
.nb-admin-band ul { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.nb-admin-link {
  display: grid;
  gap: 1px;
  width: 100%;
  padding: 7px 10px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease;
}
.nb-admin-link strong { color: rgba(255,255,255,.82); font: 500 10.2px/1.35 Inter, sans-serif; }
.nb-admin-link small { color: rgba(255,255,255,.45); font: 400 8.8px/1.4 Inter, sans-serif; }
.nb-admin-link:hover { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.04); }
.nb-admin-link:focus-visible { outline: 1px solid rgba(255,255,255,.7); outline-offset: 2px; }
.nb-admin-link.is-active { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.08); }
.nb-admin-link.is-active strong { color: rgba(255,255,255,.96); }

.nb-admin-stage {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: 0;
  min-width: 0;
}
.nb-admin-stage__head { display: grid; gap: 3px; }
.nb-admin-stage__head h2 { margin: 0; color: rgba(255,255,255,.94); font: 500 15px/1.2 Inter, sans-serif; }
.nb-admin-stage__head p { margin: 0; color: rgba(255,255,255,.55); font: 400 10px/1.5 Inter, sans-serif; }
.nb-admin-stage__body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 2px 8px 6px 0;
  scrollbar-color: rgba(224,235,244,.3) transparent;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
}
.nb-admin-stage__body::-webkit-scrollbar { width: 6px; }
.nb-admin-stage__body::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(224,235,244,.3); }

/* The headline of a console section: numbers big enough to read from the
   other side of the desk, and a tone only when the number means something. */
.nb-admin-figures {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(auto-fit, minmax(122px, 1fr));
  margin-bottom: 14px;
}
.nb-admin-figure {
  display: grid;
  gap: 3px;
  padding: 12px 13px;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(255,255,255,.055), rgba(255,255,255,.014));
}
.nb-admin-figure strong {
  color: rgba(255,255,255,.95);
  font: 600 19px/1.05 Inter, sans-serif;
  font-variant-numeric: tabular-nums;
}
.nb-admin-figure span {
  color: rgba(255,255,255,.5);
  font: 400 8.8px/1.3 Inter, sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.nb-admin-figure.is-ok strong { color: rgba(167,243,208,.95); }
.nb-admin-figure.is-warn strong { color: rgba(253,224,71,.95); }
.nb-admin-figure.is-bad strong { color: rgba(252,165,165,.96); }
.nb-admin-figure.is-bad { border-color: rgba(248,113,113,.3); background: linear-gradient(145deg, rgba(248,113,113,.08), rgba(255,255,255,.014)); }

.nb-admin-log {
  max-height: 320px;
  margin: 0 0 10px;
  overflow: auto;
  padding: 12px 13px;
  border-radius: 11px;
  background: rgba(0, 0, 0, .28);
  color: rgba(214, 232, 220, .82);
  font: 9.6px/1.7 "Courier Prime", monospace;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

/* A capped list says what it left out. Silence would read as "that is all". */
.nb-admin-more {
  margin: 8px 0 0;
  color: rgba(255,255,255,.46);
  font: 400 9px/1.5 Inter, sans-serif;
}

/* The console is denser than the rest of the product because it is a console;
   the settings vocabulary is reused at a slightly smaller step. */
.nb-space-surface[data-space="admin"] { --set-text-scale: 1.06; }
.nb-space-surface[data-space="admin"] .nb-admin-panel { padding-bottom: 14px; }

@media (max-width: 1180px) {
  .nb-space-surface[data-space="admin"] .nb-admin-layout { grid-template-columns: minmax(0, 1fr); }
  .nb-admin-rail { flex-direction: row; overflow-x: auto; overflow-y: hidden; padding-bottom: 6px; }
  .nb-admin-band { flex: none; min-width: 168px; }
}


/* ── The Desk stage ────────────────────────────────────────────────────
   Between the two rails, where the Desk used to show wallpaper and nothing
   else. It sits in the same band the rails do, takes no hits except on its own
   card, and steps aside the moment a window opens over it. */
body[data-product="neura-build"] .nb-desk-stage {
  position: absolute;
  top: 104px;
  right: 0;
  bottom: 96px;
  left: 0;
  z-index: 4;
  display: grid;
  place-items: center;
  padding: 0 calc(1.4% + 190px);
  pointer-events: none;
}
body[data-product="neura-build"] .nb-desk-stage[hidden] { display: none; }
body[data-product="neura-build"]:not([data-nb-space="desk"]) .nb-desk-stage { display: none; }

body[data-product="neura-build"] .nb-desk-stage__card {
  display: grid;
  gap: 13px;
  width: min(430px, 100%);
  max-height: 100%;
  overflow-y: auto;
  padding: 24px 24px 22px;
  border-radius: var(--panel-radius, 16px);
  background: var(--panel-glass, rgba(14, 17, 19, 0.55));
  backdrop-filter: var(--panel-blur, blur(22px)) saturate(115%);
  -webkit-backdrop-filter: var(--panel-blur, blur(22px)) saturate(115%);
  box-shadow: var(--panel-shadow, 0 24px 70px rgba(0, 0, 0, 0.45)), var(--panel-highlight, inset 0 1px rgba(255, 255, 255, 0.06));
  pointer-events: auto;
  scrollbar-width: thin;
  animation: nb-desk-stage-in 320ms cubic-bezier(.2, .78, .24, 1) both;
}
@keyframes nb-desk-stage-in { from { opacity: 0; transform: translateY(9px); } }

body[data-product="neura-build"] .nb-desk-stage__eyebrow {
  margin: 0;
  color: rgba(255, 255, 255, .42);
  font: 500 8.6px/1 Inter, sans-serif;
  letter-spacing: .19em;
}
body[data-product="neura-build"] .nb-desk-stage__card h2 {
  margin: 0;
  overflow-wrap: anywhere;
  color: rgba(255, 255, 255, .96);
  font: 400 25px/1.15 "Instrument Serif", Inter, serif;
}
body[data-product="neura-build"] .nb-desk-stage__lead {
  margin: 0;
  color: rgba(255, 255, 255, .58);
  font: 400 10.4px/1.6 Inter, sans-serif;
}

body[data-product="neura-build"] .nb-desk-stage__facts {
  display: grid;
  gap: 1px;
  margin: 2px 0 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  overflow: hidden;
  border-radius: 11px;
}
body[data-product="neura-build"] .nb-desk-stage__facts > div {
  display: grid;
  gap: 2px;
  padding: 9px 11px;
  background: rgba(255, 255, 255, .04);
}
body[data-product="neura-build"] .nb-desk-stage__facts dt {
  color: rgba(255, 255, 255, .45);
  font: 500 8.4px/1 Inter, sans-serif;
  letter-spacing: .09em;
  text-transform: uppercase;
}
body[data-product="neura-build"] .nb-desk-stage__facts dd {
  margin: 0;
  color: rgba(255, 255, 255, .88);
  font: 500 11px/1.3 Inter, sans-serif;
  text-transform: capitalize;
}

body[data-product="neura-build"] .nb-desk-stage__link {
  overflow: hidden;
  color: rgba(167, 243, 208, .9);
  font: 400 9.8px/1.4 Inter, sans-serif;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body[data-product="neura-build"] .nb-desk-stage__link:hover { text-decoration: underline; }
body[data-product="neura-build"] .nb-desk-stage__link svg { width: 10px; height: 10px; vertical-align: -1px; }

body[data-product="neura-build"] .nb-desk-stage__list {
  display: grid;
  gap: 1px;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border-radius: 11px;
  list-style: none;
}
body[data-product="neura-build"] .nb-desk-stage__list button {
  display: grid;
  align-items: center;
  gap: 10px;
  grid-template-columns: auto minmax(0, 1fr) auto;
  width: 100%;
  padding: 9px 11px;
  border: 0;
  background: rgba(255, 255, 255, .04);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: background-color 150ms ease;
}
body[data-product="neura-build"] .nb-desk-stage__list button:hover { background: rgba(255, 255, 255, .085); }
body[data-product="neura-build"] .nb-desk-stage__list strong {
  display: block;
  overflow: hidden;
  color: rgba(255, 255, 255, .9);
  font: 500 10.6px/1.3 Inter, sans-serif;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body[data-product="neura-build"] .nb-desk-stage__list small {
  color: rgba(255, 255, 255, .48);
  font: 400 8.8px/1.35 Inter, sans-serif;
}
body[data-product="neura-build"] .nb-desk-stage__mark {
  display: grid;
  place-items: center;
  width: 27px;
  height: 27px;
  border-radius: 8px;
  background: rgba(255, 255, 255, .07);
  color: rgba(255, 255, 255, .72);
  font: 500 9.4px/1 Inter, sans-serif;
}
body[data-product="neura-build"] .nb-desk-stage__go { color: rgba(255, 255, 255, .34); }
body[data-product="neura-build"] .nb-desk-stage__go svg { width: 12px; height: 12px; }

body[data-product="neura-build"] .nb-desk-stage__actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 2px; }
body[data-product="neura-build"] .nb-desk-stage__actions .br-btn { flex: 1 1 auto; justify-content: center; }

/* Preview and Code open a place to look; Continue with Neva is the one that
   moves the work on. The shell's own .br-btn-primary is deliberately quiet
   and this space is deliberately outside the primary treatment the other
   spaces use, which left the main action reading as the least important of
   the three. Give it the Desk's own light. */
body[data-product="neura-build"] .nb-desk-stage__actions .br-btn-primary {
  background: rgba(255,255,255,.17);
  border-color: rgba(255,255,255,.44);
  color: #ffffff;
  font-weight: 500;
}
body[data-product="neura-build"] .nb-desk-stage__actions .br-btn-primary:hover {
  background: rgba(255,255,255,.24);
  border-color: rgba(255,255,255,.58);
}
body[data-product="neura-build"] .nb-desk-stage__switch {
  justify-self: start;
  padding: 0;
  border: 0;
  background: none;
  color: rgba(255, 255, 255, .45);
  font: 400 9.4px/1.4 Inter, sans-serif;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
body[data-product="neura-build"] .nb-desk-stage__switch:hover { color: rgba(255, 255, 255, .78); }

/* A tool that already has a window says so, so it is not launched twice. */
body[data-product="neura-build"] .nb-rail__item[data-nb-rail-open] .nb-rail__name::after {
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-left: 7px;
  border-radius: 50%;
  background: rgba(167, 243, 208, .9);
  box-shadow: 0 0 7px rgba(167, 243, 208, .55);
  content: "";
  vertical-align: middle;
}
body[data-product="neura-build"] .nb-rail__item[data-nb-rail-open] { background: rgba(255, 255, 255, .035); }

/* The "no project" state inside a Desk app offers both answers now. */
body[data-product="neura-build"] .nb-editor-empty__actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }

@media (max-width: 1240px) {
  body[data-product="neura-build"] .nb-desk-stage { padding: 0 calc(1.4% + 172px); }
}


/* ── Folders ───────────────────────────────────────────────────────────
   The one arrangement of projects the user makes themselves. It sits under
   the filters rather than beside them, because a filter and a folder answer
   different questions and stacking them keeps that clear. */
body[data-product="neura-build"] .nb-folder-strip {
  position: relative;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: -4px 0 10px;
}
body[data-product="neura-build"] .nb-folder-strip button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 999px;
  background: rgba(255, 255, 255, .03);
  color: rgba(255, 255, 255, .66);
  font: 500 9.4px/1 Inter, sans-serif;
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
}
body[data-product="neura-build"] .nb-folder-strip button svg { width: 11px; height: 11px; }
body[data-product="neura-build"] .nb-folder-strip button span {
  padding: 1px 5px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  font-size: 8.4px;
  font-variant-numeric: tabular-nums;
}
body[data-product="neura-build"] .nb-folder-strip button:hover { border-color: rgba(255, 255, 255, .26); color: rgba(255, 255, 255, .88); }
body[data-product="neura-build"] .nb-folder-strip button.is-active {
  border-color: rgba(255, 255, 255, .44);
  background: rgba(255, 255, 255, .9);
  color: #0b0e10;
}
body[data-product="neura-build"] .nb-folder-strip button.is-active span { background: rgba(0, 0, 0, .12); }
body[data-product="neura-build"] .nb-folder-strip__new { border-style: dashed !important; }
body[data-product="neura-build"] .nb-folder-strip__tools { display: inline-flex; gap: 6px; margin-left: auto; }
body[data-product="neura-build"] .nb-folder-strip__tools button {
  border-color: transparent;
  background: none;
  color: rgba(255, 255, 255, .5);
  text-decoration: underline;
  text-underline-offset: 3px;
}
body[data-product="neura-build"] .nb-folder-strip__tools button:hover { border-color: transparent; background: none; color: rgba(255, 255, 255, .88); }

/* Two tools on a project card rather than one. */
body[data-product="neura-build"] .nb-card-tools { display: inline-flex; gap: 2px; }

body[data-product="neura-build"] .nb-plan-toggle {
  display: inline-flex;
  gap: 2px;
  align-self: start;
  padding: 3px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 999px;
  background: rgba(255, 255, 255, .03);
}
body[data-product="neura-build"] .nb-plan-toggle button {
  padding: 5px 14px;
  border: 0;
  border-radius: 999px;
  background: none;
  color: rgba(255, 255, 255, .6);
  font: 500 9.6px/1 Inter, sans-serif;
  cursor: pointer;
  transition: background-color 150ms ease, color 150ms ease;
}
body[data-product="neura-build"] .nb-plan-toggle button.is-active { background: rgba(255, 255, 255, .9); color: #0b0e10; }
body[data-product="neura-build"] .nb-plan-card__save {
  padding: 3px 8px;
  border: 1px solid rgba(167, 243, 208, .38);
  border-radius: 999px;
  color: rgba(167, 243, 208, .92);
  font: 500 8.2px/1 Inter, sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
}


/* ── One Marketplace listing ───────────────────────────────────────────
   What a card cannot say: what installing this would let it reach. */
body[data-product="neura-build"] .nb-listing {
  display: grid;
  gap: 16px;
  align-content: start;
  max-width: 780px;
  padding: 22px 24px 26px;
  border-radius: 16px;
  background: rgba(255, 255, 255, .035);
}
body[data-product="neura-build"] .nb-listing__back {
  justify-self: start;
  padding: 0;
  border: 0;
  background: none;
  color: rgba(255, 255, 255, .55);
  font: 500 9.8px/1 Inter, sans-serif;
  cursor: pointer;
}
body[data-product="neura-build"] .nb-listing__back:hover { color: rgba(255, 255, 255, .9); }
body[data-product="neura-build"] .nb-listing__head { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-start; justify-content: space-between; }
body[data-product="neura-build"] .nb-listing__head h2 { margin: 3px 0 5px; color: rgba(255, 255, 255, .96); font: 400 25px/1.15 "Instrument Serif", Inter, serif; }
body[data-product="neura-build"] .nb-listing__by { margin: 0; color: rgba(255, 255, 255, .5); font: 400 9.8px/1.5 Inter, sans-serif; }
body[data-product="neura-build"] .nb-listing__actions { display: flex; gap: 7px; align-items: center; }
body[data-product="neura-build"] .nb-listing__desc { margin: 0; max-width: 68ch; color: rgba(255, 255, 255, .74); font: 400 11px/1.65 Inter, sans-serif; }
body[data-product="neura-build"] .nb-listing__counts { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); }
body[data-product="neura-build"] .nb-listing__counts > div {
  display: grid;
  gap: 2px;
  padding: 11px 12px;
  border-radius: 11px;
  background: rgba(255, 255, 255, .04);
}
body[data-product="neura-build"] .nb-listing__counts strong { color: rgba(255, 255, 255, .94); font: 600 17px/1 Inter, sans-serif; font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-listing__counts span { color: rgba(255, 255, 255, .48); font: 400 8.6px/1.2 Inter, sans-serif; letter-spacing: .06em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-listing__perms,
body[data-product="neura-build"] .nb-listing__ratings { display: grid; gap: 7px; }
body[data-product="neura-build"] .nb-listing h3 { margin: 0; color: rgba(255, 255, 255, .8); font: 500 10.6px/1 Inter, sans-serif; letter-spacing: .05em; }
body[data-product="neura-build"] .nb-listing__perms ul { display: grid; gap: 4px; margin: 0; padding-left: 16px; }
body[data-product="neura-build"] .nb-listing__perms li,
body[data-product="neura-build"] .nb-listing__perms p { color: rgba(253, 224, 71, .82); font: 400 9.8px/1.55 Inter, sans-serif; }
body[data-product="neura-build"] .nb-listing__perms p { margin: 2px 0 0; color: rgba(255, 255, 255, .55); }
body[data-product="neura-build"] .nb-listing__ratings ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
body[data-product="neura-build"] .nb-listing__ratings li { display: grid; gap: 3px; padding: 11px 12px; border-radius: 11px; background: rgba(255, 255, 255, .035); }
body[data-product="neura-build"] .nb-listing__ratings strong { color: rgba(255, 255, 255, .86); font: 500 10px/1.3 Inter, sans-serif; }
body[data-product="neura-build"] .nb-listing__ratings span { color: rgba(253, 224, 71, .82); font-size: 9.4px; }
body[data-product="neura-build"] .nb-listing__ratings p { margin: 0; color: rgba(255, 255, 255, .62); font: 400 9.8px/1.55 Inter, sans-serif; }

/* The stack chip sits with the other composer controls and wears the same
   material, so the row reads as one set of choices rather than a control
   bolted on beside them. */
body[data-product="neura-build"] .nb-build-stack {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 21px;
  margin-left: 9px;
  padding: 0 8px;
  vertical-align: middle;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 999px;
  background: rgba(255, 255, 255, .035);
  color: rgba(255, 255, 255, .66);
  font: 500 9.6px/1 Inter, sans-serif;
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease;
}
body[data-product="neura-build"] .nb-build-stack:hover { border-color: rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .06); }
body[data-product="neura-build"] .nb-build-stack:focus-within { border-color: rgba(255, 255, 255, .4); }
body[data-product="neura-build"] .nb-build-stack__icon { display: inline-flex; color: rgba(255, 255, 255, .5); }
body[data-product="neura-build"] .nb-build-stack__icon svg { width: 10px; height: 10px; }
body[data-product="neura-build"] .nb-build-stack__label { color: rgba(255, 255, 255, .45); letter-spacing: .05em; text-transform: uppercase; font-size: 8.4px; }
body[data-product="neura-build"] .nb-build-stack select {
  border: 0;
  background: none;
  color: rgba(255, 255, 255, .88);
  font: inherit;
  cursor: pointer;
  outline: none;
}
body[data-product="neura-build"] .nb-build-stack select option { background: #14181a; color: #eef2f4; }

/* ════════════════════════════════════════════════════════════════════════
   THE CONSOLE ABOVE THE BAR

   Two surfaces, both hung off the bar's own measured box rather than off a
   number written here: a sheet that rises when a key is pressed, and a strip
   that stands in its place when nothing is open and Neva is working.

   Same material as the bar, deliberately. The dock's flyouts already use this
   glass and this radius, so the console reads as the bar opening rather than
   as a panel arriving from somewhere else. The one thing it does not borrow is
   the bar's habit of resting away: while a run is live the row stays out, and
   the strip with it.
*/

body[data-product="neura-build"] .nb-neva {
  position: fixed;
  left: var(--nb-neva-left, 50%);
  bottom: var(--nb-neva-bottom, 96px);
  width: var(--nb-neva-width, 1060px);
  z-index: 1392;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  pointer-events: none;
  font-family: "SF Pro Rounded", "SF Pro Display", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  color: var(--neva-text-primary, #eef1f6);
}
body[data-product="neura-build"] .nb-neva > * { pointer-events: auto; }

/* ── the sheet ───────────────────────────────────────────────────────── */

body[data-product="neura-build"] .nb-nsheet {
  display: flex;
  flex-direction: column;
  max-height: var(--nb-neva-max, 620px);
  border-radius: 22px;
  /* Denser than the dock's flyouts were. Those held a row of buttons over a
     wallpaper; this holds paragraphs, and a sunset behind a paragraph is the
     one place where the glass has to give way to the reading. */
  background: linear-gradient(145deg, rgba(26, 29, 29, .74) 0%, rgba(13, 16, 16, .72) 100%);
  backdrop-filter: blur(32px) saturate(125%);
  -webkit-backdrop-filter: blur(32px) saturate(125%);
  box-shadow: 0 34px 90px rgba(0, 0, 0, .62), inset 0 0 0 1px rgba(255, 255, 255, .085);
  opacity: 0;
  transform: translateY(14px) scale(.985);
  transform-origin: bottom center;
  transition: opacity .22s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1)), transform .22s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1));
  overflow: hidden;
}
body[data-product="neura-build"] .nb-neva[data-open="0"] .nb-nsheet {
  pointer-events: none;
  height: 0;
  min-height: 0;
  opacity: 0;
  box-shadow: none;
}
body[data-product="neura-build"] .nb-neva[data-open="1"] .nb-nsheet {
  opacity: 1;
  transform: translateY(0) scale(1);
  min-height: min(569px, var(--nb-neva-max, 620px));
}
body[data-product="neura-build"] .nb-neva[data-drop="1"] .nb-nsheet { box-shadow: 0 34px 90px rgba(0, 0, 0, .62), inset 0 0 0 1px rgba(255, 255, 255, .34); }

body[data-product="neura-build"] .nb-nsheet__head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 0 0 auto;
  height: 46px;
  padding: 0 12px 0 18px;
  border-bottom: 1px solid rgba(255, 255, 255, .07);
}
body[data-product="neura-build"] .nb-nsheet__title { display: flex; align-items: baseline; gap: 9px; min-width: 0; }
body[data-product="neura-build"] .nb-nsheet__title b { font-size: 11px; font-weight: 550; letter-spacing: .17em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-nsheet__title small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 280px; font-size: 10.5px; color: rgba(255, 255, 255, .46); }
body[data-product="neura-build"] .nb-nsheet__phase {
  display: flex; align-items: center; gap: 7px;
  margin-left: auto; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: rgba(255, 255, 255, .5); font-size: 10.5px;
}

body[data-product="neura-build"] .nb-nsheet__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 16px 18px 6px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, .16) transparent;
}
body[data-product="neura-build"] .nb-nsheet__body::-webkit-scrollbar { width: 9px; }
body[data-product="neura-build"] .nb-nsheet__body::-webkit-scrollbar-thumb { border: 2.5px solid transparent; border-radius: 999px; background: rgba(255, 255, 255, .16); background-clip: content-box; }

/* ── the composer, which is the same in every face ───────────────────── */

body[data-product="neura-build"] .nb-ncomposer {
  flex: 0 0 auto;
  margin: 6px 12px 12px;
  border: 1px solid rgba(255, 255, 255, .13);
  border-radius: 16px;
  background: linear-gradient(160deg, rgba(255, 255, 255, .075), rgba(255, 255, 255, .026));
  box-shadow: inset 0 1px rgba(255, 255, 255, .08);
  transition: border-color .18s ease, box-shadow .18s ease;
}
body[data-product="neura-build"] .nb-ncomposer:focus-within {
  border-color: rgba(235, 244, 246, .38);
  box-shadow: inset 0 1px rgba(255, 255, 255, .1), 0 0 0 3px rgba(234, 244, 247, .04);
}
body[data-product="neura-build"] .nb-ncomposer textarea {
  display: block; box-sizing: border-box;
  width: 100%; min-height: 44px; max-height: 168px;
  padding: 13px 16px 4px;
  border: 0; outline: 0; resize: none;
  background: transparent; color: #e8ecee;
  font: 400 13px/1.55 inherit;
}
body[data-product="neura-build"] .nb-ncomposer textarea::placeholder { color: rgba(255, 255, 255, .32); }
body[data-product="neura-build"] .nb-ncomposer__bar { display: flex; align-items: center; gap: 9px; padding: 4px 8px 8px 9px; }
body[data-product="neura-build"] .nb-ncomposer__hint { margin-left: auto; color: rgba(255, 255, 255, .27); font-size: 9px; letter-spacing: .03em; }
body[data-product="neura-build"] .nb-nattach { display: flex; flex-wrap: wrap; gap: 6px; padding: 11px 12px 0; }

body[data-product="neura-build"] .nb-nicon {
  width: 30px; height: 30px; display: grid; place-items: center;
  border: 1px solid rgba(255, 255, 255, .1); border-radius: 9px;
  background: rgba(255, 255, 255, .03); color: rgba(255, 255, 255, .62);
  cursor: pointer; transition: background .18s ease, color .18s ease;
}
body[data-product="neura-build"] .nb-nicon:hover { background: rgba(255, 255, 255, .085); color: #eef2f4; }
body[data-product="neura-build"] .nb-nicon .nb-icon { width: 14px; height: 14px; }

/* three words, one track — the segmented control the rest of the shell uses */
body[data-product="neura-build"] .nb-nsegs {
  display: flex; gap: 2px; padding: 2px;
  border: 1px solid rgba(255, 255, 255, .085); border-radius: 10px;
  background: rgba(0, 0, 0, .16);
}
body[data-product="neura-build"] .nb-nsegs button {
  height: 24px; padding: 0 11px;
  border: 0; border-radius: 8px; background: transparent;
  color: rgba(255, 255, 255, .5); font: 500 10px/1 inherit; letter-spacing: .05em;
  cursor: pointer; transition: background .16s ease, color .16s ease;
}
body[data-product="neura-build"] .nb-nsegs button:hover { color: rgba(255, 255, 255, .8); }
body[data-product="neura-build"] .nb-nsegs button[aria-pressed="true"] { background: rgba(255, 255, 255, .12); color: #f3f6f7; }

body[data-product="neura-build"] .nb-nsend {
  width: 32px; height: 32px; display: grid; place-items: center;
  border: 1px solid rgba(238, 245, 247, .3); border-radius: 10px;
  background: linear-gradient(180deg, rgba(239, 245, 247, .18), rgba(255, 255, 255, .05));
  box-shadow: inset 0 1px rgba(255, 255, 255, .18);
  color: #f2f6f7; cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease;
}
body[data-product="neura-build"] .nb-nsend:hover { border-color: rgba(255, 255, 255, .56); box-shadow: inset 0 1px rgba(255, 255, 255, .24), 0 0 22px rgba(214, 234, 240, .12); }
body[data-product="neura-build"] .nb-nsend .nb-icon { width: 15px; height: 15px; }
body[data-product="neura-build"] .nb-nsend--stop { border-color: rgba(226, 150, 150, .4); background: linear-gradient(180deg, rgba(226, 150, 150, .18), rgba(255, 255, 255, .04)); }

/* ── the strip: the bar's own readout ────────────────────────────────── */

/* Centred on the bar rather than on the sheet. The two share a left edge but
   not a width, and the strip belongs to the bar underneath it: --nb-neva-cx is
   where the bar's middle falls inside this container, read at paint time. */
body[data-product="neura-build"] .nb-nstrip {
  align-self: flex-start;
  margin-left: var(--nb-neva-cx, 50%);
  transform: translateX(-50%);
  max-width: min(760px, calc(100vw - 40px));
}
body[data-product="neura-build"] .nb-nstrip[hidden] { display: none; }
body[data-product="neura-build"] .nb-nstrip__run,
body[data-product="neura-build"] .nb-nstrip__ask {
  position: relative;
  display: flex; align-items: center; gap: 11px;
  max-width: min(760px, calc(100vw - 40px));
  height: 34px; padding: 0 12px;
  border-radius: 999px;
  /* A shade denser than the bar it stands on. The bar carries glyphs, this
     carries a sentence, and the wallpaper under it can be a sunset. */
  background: rgba(12, 15, 16, .82);
  backdrop-filter: var(--chrome-blur, blur(22px));
  -webkit-backdrop-filter: var(--chrome-blur, blur(22px));
  box-shadow: var(--chrome-highlight, inset 0 1px 0 rgba(255, 255, 255, .07)), 0 12px 34px rgba(0, 0, 0, .38);
  overflow: hidden;
  animation: nb-nstrip-in .34s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1)) both;
}
body[data-product="neura-build"] .nb-nstrip__run { cursor: pointer; }
@keyframes nb-nstrip-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: translateY(0); } }

body[data-product="neura-build"] .nb-nstrip__dot { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: rgba(255, 255, 255, .34); }
body[data-product="neura-build"] .nb-nstrip__dot[data-live="1"] { background: #9de0b3; box-shadow: 0 0 10px rgba(157, 224, 179, .7); animation: nb-npulse 1.6s ease-in-out infinite; }
body[data-product="neura-build"] .nb-nstrip__dot[data-fail="1"] { background: #dda4a4; box-shadow: 0 0 10px rgba(221, 164, 164, .6); animation: none; }
@keyframes nb-npulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }

body[data-product="neura-build"] .nb-nstrip__phase {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font: 500 11px/1 inherit; color: rgba(240, 244, 246, .92);
}
body[data-product="neura-build"] .nb-nstrip__time,
body[data-product="neura-build"] .nb-nstrip__bits { flex: 0 0 auto; color: rgba(255, 255, 255, .42); font-size: 10px; font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-nstrip__bits { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-nstrip__stop {
  flex: 0 0 auto; width: 21px; height: 21px; display: grid; place-items: center;
  border: 1px solid rgba(255, 255, 255, .14); border-radius: 50%;
  background: rgba(255, 255, 255, .05); color: rgba(255, 255, 255, .66); cursor: pointer;
}
body[data-product="neura-build"] .nb-nstrip__stop:hover { background: rgba(226, 150, 150, .2); color: #f6eaea; }
body[data-product="neura-build"] .nb-nstrip__stop .nb-icon { width: 11px; height: 11px; }

/* the rail is the strip's own top edge, filled to how far along the run is */
body[data-product="neura-build"] .nb-nstrip__rail {
  position: absolute; left: 0; right: 0; top: 0; height: 1.5px;
  background: rgba(255, 255, 255, .07);
}
body[data-product="neura-build"] .nb-nstrip__rail::after {
  content: ""; position: absolute; inset: 0 auto 0 0;
  width: var(--nb-progress, 0%);
  background: linear-gradient(90deg, rgba(157, 224, 179, .55), rgba(226, 240, 244, .95));
  transition: width .5s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1));
}
/* Before a task list exists there is no honest number, so the rail says
   "moving" rather than inventing a fraction. */
body[data-product="neura-build"] .nb-nstrip__rail[data-indeterminate="1"]::after {
  width: 34%;
  animation: nb-nrail 1.5s var(--chrome-ease, cubic-bezier(.4, 0, .2, 1)) infinite;
}
@keyframes nb-nrail { 0% { transform: translateX(-110%); } 100% { transform: translateX(330%); } }

/* ── the question, one line high ─────────────────────────────────────── */

/* Given the whole width it is allowed rather than only what its words need, so
   the prompt, its choices and the field for saying it another way come out on
   one line at the widths this is actually used at. */
body[data-product="neura-build"] .nb-nstrip__ask {
  width: min(760px, calc(100vw - 40px));
  height: auto; min-height: 38px; padding: 6px 8px 6px 13px;
  flex-wrap: wrap; row-gap: 6px;
  box-shadow: var(--chrome-highlight, inset 0 1px 0 rgba(255, 255, 255, .07)), 0 12px 34px rgba(0, 0, 0, .44), 0 0 0 1px rgba(157, 224, 179, .22);
}
body[data-product="neura-build"] .nb-nstrip__q { flex: 1 1 240px; }
body[data-product="neura-build"] .nb-nstrip__q { display: flex; align-items: center; gap: 8px; min-width: 0; color: rgba(240, 244, 246, .94); }
body[data-product="neura-build"] .nb-nstrip__q .nb-icon { width: 13px; height: 13px; flex: 0 0 auto; color: rgba(157, 224, 179, .9); }
body[data-product="neura-build"] .nb-nstrip__q b { font: 500 11.5px/1.35 inherit; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
body[data-product="neura-build"] .nb-nchoice {
  flex: 0 0 auto; height: 26px; padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, .14); border-radius: 999px;
  background: rgba(255, 255, 255, .06); color: rgba(240, 244, 246, .9);
  font: 500 10.5px/1 inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
body[data-product="neura-build"] .nb-nchoice:hover { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .32); }
body[data-product="neura-build"] .nb-nstrip__ask input {
  flex: 1 1 190px; min-width: 150px; height: 26px;
  padding: 0 11px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 999px;
  background: rgba(0, 0, 0, .2); color: #e9edef; font: 400 10.5px/1 inherit; outline: none;
}
body[data-product="neura-build"] .nb-nstrip__ask input:focus { border-color: rgba(255, 255, 255, .34); }

/* ── the three status glyphs, stacked so a row never reflows ─────────── */

body[data-product="neura-build"] .nb-nmark { position: relative; flex: 0 0 auto; width: 15px; height: 15px; }
body[data-product="neura-build"] .nb-nmark svg { position: absolute; inset: 0; width: 15px; height: 15px; opacity: 0; transition: opacity .28s ease; }
body[data-product="neura-build"] .nb-nmark[data-state="waiting"] .nb-nmark__wait { opacity: 1; color: rgba(255, 255, 255, .3); }
body[data-product="neura-build"] .nb-nmark[data-state="live"] .nb-nmark__live { opacity: 1; color: #e6edf0; }
body[data-product="neura-build"] .nb-nmark[data-state="done"] .nb-nmark__done { opacity: 1; color: #9de0b3; }
body[data-product="neura-build"] .nb-nmark[data-state="failed"] .nb-nmark__failed { opacity: 1; color: #dda4a4; }

/* one slot per character, so a count that changes rolls rather than redraws */
body[data-product="neura-build"] .nb-ncount { display: inline-flex; font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-ncount__d { display: inline-block; animation: nb-nroll .34s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1)); }
@keyframes nb-nroll { from { transform: translateY(-58%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
body[data-product="neura-build"] .nb-nstrip__count { flex: 0 0 auto; color: rgba(255, 255, 255, .68); font-size: 10.5px; }

/* ── inside the sheet ────────────────────────────────────────────────── */

body[data-product="neura-build"] .nb-nsect { margin: 0 0 18px; }
body[data-product="neura-build"] .nb-nsect__head { display: flex; align-items: center; gap: 8px; margin: 0 0 9px; }
body[data-product="neura-build"] .nb-nsect__head b { font-size: 9.5px; font-weight: 550; letter-spacing: .18em; text-transform: uppercase; color: rgba(255, 255, 255, .52); }
body[data-product="neura-build"] .nb-nsect__lead { margin: 0 0 12px; color: rgba(226, 232, 234, .82); font-size: 12.5px; line-height: 1.6; }
body[data-product="neura-build"] .nb-nsect__foot { display: flex; gap: 7px; margin-top: 12px; }
body[data-product="neura-build"] .nb-ntag {
  padding: 2px 8px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 999px;
  background: rgba(255, 255, 255, .04); color: rgba(255, 255, 255, .56);
  font-size: 9px; letter-spacing: .07em; text-transform: uppercase;
}
body[data-product="neura-build"] .nb-ntag[data-tone="live"] { border-color: rgba(157, 224, 179, .3); color: #a9dcbb; }
body[data-product="neura-build"] .nb-ntag[data-tone="wait"] { border-color: rgba(224, 205, 157, .28); color: #ddd1a6; }

body[data-product="neura-build"] .nb-nsteps,
body[data-product="neura-build"] .nb-ntasks { display: grid; gap: 3px; margin: 0; padding: 0; list-style: none; }
body[data-product="neura-build"] .nb-nsteps li,
body[data-product="neura-build"] .nb-ntasks li {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 9px 11px; border: 1px solid transparent; border-radius: 11px;
  animation: nb-nrow-in .4s var(--chrome-ease, cubic-bezier(.2, .6, .2, 1)) both;
  animation-delay: calc(var(--i, 0) * 36ms);
}
body[data-product="neura-build"] .nb-nsteps li[data-state="in_progress"],
body[data-product="neura-build"] .nb-ntasks li[data-state="in_progress"] { border-color: rgba(255, 255, 255, .1); background: rgba(255, 255, 255, .04); }
body[data-product="neura-build"] .nb-nsteps li[data-state="completed"] b,
body[data-product="neura-build"] .nb-ntasks li[data-state="completed"] b { color: rgba(255, 255, 255, .52); }
body[data-product="neura-build"] .nb-nsteps span,
body[data-product="neura-build"] .nb-ntasks span { display: grid; gap: 3px; min-width: 0; }
body[data-product="neura-build"] .nb-nsteps b,
body[data-product="neura-build"] .nb-ntasks b { font: 480 12px/1.4 inherit; color: rgba(238, 242, 244, .92); }
body[data-product="neura-build"] .nb-nsteps small,
body[data-product="neura-build"] .nb-ntasks small { font-size: 10.5px; line-height: 1.5; color: rgba(255, 255, 255, .42); }
@keyframes nb-nrow-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }

body[data-product="neura-build"] .nb-nacts { display: grid; gap: 3px; }
body[data-product="neura-build"] .nb-nact {
  display: flex; align-items: center; gap: 9px; min-height: 32px;
  padding: 5px 10px; border: 1px solid rgba(255, 255, 255, .06); border-radius: 9px;
  background: rgba(255, 255, 255, .018);
}
body[data-product="neura-build"] .nb-nact em { font: 480 11px/1 inherit; font-style: normal; color: rgba(238, 242, 244, .88); }
body[data-product="neura-build"] .nb-nact code,
body[data-product="neura-build"] .nb-ntrail__row code {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: rgba(255, 255, 255, .38); font: 10px/1 "JetBrains Mono", ui-monospace, monospace;
}
body[data-product="neura-build"] .nb-nact small { margin-left: auto; color: rgba(255, 255, 255, .3); font-size: 9.5px; font-variant-numeric: tabular-nums; }

body[data-product="neura-build"] .nb-nchips { display: flex; flex-wrap: wrap; gap: 6px; }
body[data-product="neura-build"] .nb-nchip,
body[data-product="neura-build"] .nb-nbtn {
  display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, .1); border-radius: 9px;
  background: rgba(255, 255, 255, .035); color: rgba(232, 238, 240, .84);
  font: 480 10.5px/1 inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}
body[data-product="neura-build"] .nb-nchip .nb-icon,
body[data-product="neura-build"] .nb-nbtn .nb-icon { width: 12px; height: 12px; opacity: .66; }
body[data-product="neura-build"] .nb-nchip:hover,
body[data-product="neura-build"] .nb-nbtn:hover { background: rgba(255, 255, 255, .085); border-color: rgba(255, 255, 255, .22); color: #f1f4f5; }
body[data-product="neura-build"] .nb-nbtn--go { border-color: rgba(238, 245, 247, .32); background: linear-gradient(180deg, rgba(239, 245, 247, .17), rgba(255, 255, 255, .05)); color: #f4f7f8; }
body[data-product="neura-build"] .nb-nbtn--warn:hover { border-color: rgba(226, 150, 150, .4); color: #f0d9d9; }

body[data-product="neura-build"] .nb-ngrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 6px; margin-bottom: 10px; }
body[data-product="neura-build"] .nb-ncell {
  display: grid; gap: 4px; padding: 10px 12px;
  border: 1px solid rgba(255, 255, 255, .07); border-radius: 11px; background: rgba(255, 255, 255, .022);
}
body[data-product="neura-build"] .nb-ncell span { font-size: 9px; letter-spacing: .16em; text-transform: uppercase; color: rgba(255, 255, 255, .38); }
body[data-product="neura-build"] .nb-ncell b { font: 460 13px/1.2 inherit; color: rgba(240, 244, 246, .92); }

body[data-product="neura-build"] .nb-nmodes { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 6px; }
body[data-product="neura-build"] .nb-nmode {
  display: grid; gap: 4px; padding: 11px 13px; text-align: left;
  border: 1px solid rgba(255, 255, 255, .075); border-radius: 12px;
  background: rgba(255, 255, 255, .022); color: inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
body[data-product="neura-build"] .nb-nmode:hover { background: rgba(255, 255, 255, .06); }
body[data-product="neura-build"] .nb-nmode[aria-pressed="true"] { border-color: rgba(255, 255, 255, .28); background: rgba(255, 255, 255, .085); }
body[data-product="neura-build"] .nb-nmode b { font: 500 11.5px/1 inherit; }
body[data-product="neura-build"] .nb-nmode small { font-size: 10px; line-height: 1.45; color: rgba(255, 255, 255, .44); }

body[data-product="neura-build"] .nb-nselect {
  display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 11px;
  border: 1px solid rgba(255, 255, 255, .1); border-radius: 10px; background: rgba(0, 0, 0, .16);
}
body[data-product="neura-build"] .nb-nselect .nb-icon { width: 13px; height: 13px; opacity: .55; }
body[data-product="neura-build"] .nb-nselect select { border: 0; outline: 0; background: transparent; color: rgba(238, 242, 244, .9); font: 480 11px/1 inherit; cursor: pointer; max-width: 320px; }
body[data-product="neura-build"] .nb-nselect select option { background: #14181a; color: #eef2f4; }

body[data-product="neura-build"] .nb-nqueue { display: grid; gap: 4px; }
body[data-product="neura-build"] .nb-nqrow {
  display: flex; align-items: center; gap: 9px; padding: 8px 10px;
  border: 1px dashed rgba(255, 255, 255, .12); border-radius: 10px;
}
body[data-product="neura-build"] .nb-nqrow em { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-size: 11px; color: rgba(255, 255, 255, .7); }
body[data-product="neura-build"] .nb-nqrow button { width: 20px; height: 20px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .06); color: rgba(255, 255, 255, .6); cursor: pointer; }

body[data-product="neura-build"] .nb-nalert {
  display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding: 10px 12px;
  border: 1px solid rgba(226, 150, 150, .26); border-radius: 11px;
  background: rgba(120, 32, 32, .16); color: #eec2c2; font-size: 11px; line-height: 1.5;
}
body[data-product="neura-build"] .nb-nalert[data-tone="wait"] { border-color: rgba(224, 205, 157, .26); background: rgba(112, 94, 32, .14); color: #e6dcb4; }
body[data-product="neura-build"] .nb-nalert .nb-icon { width: 14px; height: 14px; flex: 0 0 auto; }
body[data-product="neura-build"] .nb-nalert span { flex: 1; min-width: 0; }
body[data-product="neura-build"] .nb-nterm {
  max-height: 190px; overflow: auto; margin: 0; padding: 12px 13px;
  border: 1px solid rgba(255, 255, 255, .07); border-radius: 11px; background: rgba(0, 0, 0, .22);
  color: rgba(190, 200, 205, .84); font: 10.5px/1.6 "JetBrains Mono", ui-monospace, monospace; white-space: pre-wrap;
}

/* ── the conversation ────────────────────────────────────────────────── */

body[data-product="neura-build"] .nb-nthread { display: block; }
body[data-product="neura-build"] .nb-nturn { margin: 0 0 20px; }
body[data-product="neura-build"] .nb-nturn > header { display: flex; align-items: center; gap: 9px; margin-bottom: 7px; }
body[data-product="neura-build"] .nb-nturn > header b { font-size: 9.5px; font-weight: 550; letter-spacing: .17em; text-transform: uppercase; color: rgba(255, 255, 255, .56); }
body[data-product="neura-build"] .nb-nturn > header time { font-size: 9px; color: rgba(255, 255, 255, .28); }
body[data-product="neura-build"] .nb-nturn[data-role="you"] { margin-left: clamp(0px, 12%, 160px); }
body[data-product="neura-build"] .nb-nturn[data-role="you"] .nb-nmd {
  padding: 11px 14px; border: 1px solid rgba(255, 255, 255, .09);
  border-radius: 14px 14px 4px 14px; background: rgba(255, 255, 255, .045);
}
body[data-product="neura-build"] .nb-nlive { display: flex; align-items: center; gap: 5px; margin-left: auto; color: #a5d9b6; font-size: 8.5px; letter-spacing: .13em; text-transform: uppercase; }
body[data-product="neura-build"] .nb-nlive i { width: 5px; height: 5px; border-radius: 50%; background: #9de0b3; box-shadow: 0 0 9px #7bc693; animation: nb-npulse 1.6s ease-in-out infinite; }

body[data-product="neura-build"] .nb-nfiles { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
body[data-product="neura-build"] .nb-nfile {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px;
  border: 1px solid rgba(255, 255, 255, .09); border-radius: 8px;
  color: rgba(255, 255, 255, .62); font-size: 9.5px;
}
body[data-product="neura-build"] .nb-nfile .nb-icon { width: 11px; height: 11px; }
body[data-product="neura-build"] .nb-nfile button { margin-left: 2px; border: 0; background: none; color: inherit; cursor: pointer; font-size: 12px; line-height: 1; }

body[data-product="neura-build"] .nb-ntrail,
body[data-product="neura-build"] .nb-nthink { margin: 0 0 10px; border: 1px solid rgba(255, 255, 255, .07); border-radius: 10px; background: rgba(255, 255, 255, .018); }
body[data-product="neura-build"] .nb-ntrail summary,
body[data-product="neura-build"] .nb-nthink summary {
  display: flex; align-items: center; gap: 7px; padding: 8px 11px; cursor: pointer; list-style: none;
  color: rgba(255, 255, 255, .46); font-size: 10px;
}
body[data-product="neura-build"] .nb-ntrail summary::-webkit-details-marker,
body[data-product="neura-build"] .nb-nthink summary::-webkit-details-marker { display: none; }
body[data-product="neura-build"] .nb-ntrail summary .nb-icon,
body[data-product="neura-build"] .nb-nthink summary .nb-icon { width: 12px; height: 12px; margin-left: auto; transition: transform .18s ease; }
body[data-product="neura-build"] .nb-ntrail[open] summary .nb-icon,
body[data-product="neura-build"] .nb-nthink[open] summary .nb-icon { transform: rotate(180deg); }
body[data-product="neura-build"] .nb-ntrail__body { display: grid; gap: 2px; padding: 0 11px 10px; }
body[data-product="neura-build"] .nb-ntrail__row { display: flex; align-items: center; gap: 8px; min-width: 0; }
body[data-product="neura-build"] .nb-ntrail__row em { font-style: normal; font-size: 10.5px; color: rgba(255, 255, 255, .7); }
body[data-product="neura-build"] .nb-nthink pre { max-height: 170px; overflow: auto; margin: 0; padding: 0 11px 11px; color: rgba(255, 255, 255, .4); font: 10px/1.6 "JetBrains Mono", ui-monospace, monospace; white-space: pre-wrap; }

body[data-product="neura-build"] .nb-nwait { display: flex; align-items: center; gap: 5px; color: rgba(255, 255, 255, .5); font-size: 10.5px; }
body[data-product="neura-build"] .nb-nwait i { width: 5px; height: 5px; border-radius: 50%; background: rgba(255, 255, 255, .7); animation: nb-nbounce 1.1s infinite; }
body[data-product="neura-build"] .nb-nwait i:nth-child(2) { animation-delay: .15s; }
body[data-product="neura-build"] .nb-nwait i:nth-child(3) { animation-delay: .3s; margin-right: 5px; }
@keyframes nb-nbounce { 0%, 100% { opacity: .28; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-2px); } }

body[data-product="neura-build"] .nb-nspin {
  width: 11px; height: 11px; flex: 0 0 auto; display: inline-block;
  border: 1.4px solid rgba(255, 255, 255, .2); border-top-color: rgba(255, 255, 255, .78);
  border-radius: 50%; animation: nb-nspin .8s linear infinite;
}
@keyframes nb-nspin { to { transform: rotate(360deg); } }

/* ── the words Neva writes ───────────────────────────────────────────── */

body[data-product="neura-build"] .nb-nmd { font-size: 12.5px; line-height: 1.72; color: rgba(214, 221, 224, .92); overflow-wrap: anywhere; }
body[data-product="neura-build"] .nb-nmd p { margin: 0 0 9px; }
body[data-product="neura-build"] .nb-nmd p:last-child { margin-bottom: 0; }
body[data-product="neura-build"] .nb-nmd__h { margin: 15px 0 7px; font: 520 12.5px/1.4 inherit; color: rgba(240, 243, 244, .96); }
body[data-product="neura-build"] .nb-nmd__list { display: grid; gap: 5px; margin: 8px 0; padding-left: 18px; }
body[data-product="neura-build"] .nb-nmd__code {
  overflow: auto; margin: 11px 0; padding: 12px 13px;
  border: 1px solid rgba(255, 255, 255, .08); border-radius: 10px; background: rgba(0, 0, 0, .24);
  color: rgba(185, 196, 201, .92); font: 10.5px/1.6 "JetBrains Mono", ui-monospace, monospace;
}
body[data-product="neura-build"] .nb-nmd__inline {
  padding: 1.5px 5px; border: 1px solid rgba(255, 255, 255, .09); border-radius: 5px;
  background: rgba(255, 255, 255, .05); font: 10.5px "JetBrains Mono", ui-monospace, monospace;
}

/* ── the empty states ────────────────────────────────────────────────── */

body[data-product="neura-build"] .nb-nempty {
  display: grid; place-items: center; align-content: center; gap: 7px;
  min-height: 180px; padding: 24px; text-align: center;
}
body[data-product="neura-build"] .nb-nempty b { font: 400 19px/1.3 inherit; color: rgba(240, 244, 246, .94); }
body[data-product="neura-build"] .nb-nempty p { max-width: 520px; margin: 0; color: rgba(255, 255, 255, .44); font-size: 11.5px; line-height: 1.65; }
body[data-product="neura-build"] .nb-nempty__orb {
  width: 58px; height: 58px; margin-bottom: 8px; border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .16);
  background: radial-gradient(circle at 42% 37%, rgba(255, 255, 255, .34), rgba(176, 198, 209, .08) 35%, rgba(0, 0, 0, .4) 70%);
  box-shadow: inset 0 0 18px rgba(255, 255, 255, .08), 0 0 34px rgba(184, 210, 220, .1);
}
body[data-product="neura-build"] .nb-nseeds { display: grid; gap: 5px; width: min(560px, 100%); margin-top: 14px; }
body[data-product="neura-build"] .nb-nseed {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 38px; padding: 0 13px; text-align: left;
  border: 1px solid rgba(255, 255, 255, .085); border-radius: 10px;
  background: rgba(255, 255, 255, .022); color: rgba(255, 255, 255, .66);
  font: 400 11px/1.45 inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}
body[data-product="neura-build"] .nb-nseed:hover { border-color: rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .06); color: #eef2f4; }
body[data-product="neura-build"] .nb-nseed .nb-icon { width: 13px; height: 13px; flex: 0 0 auto; opacity: .6; }

/* ── what the bar itself gains ───────────────────────────────────────── */

/* A count on the key, in the strip along the bottom of it that the active dot
   already lives in — so a key that is carrying a number is still one object. */
body[data-product="neura-build"] .neva-dock-item { position: relative; }
body[data-product="neura-build"] .nb-nkey {
  position: absolute; top: 1px; right: 6px;
  min-width: 14px; height: 14px; padding: 0 4px;
  display: grid; place-items: center; border-radius: 999px;
  background: rgba(236, 243, 245, .9); color: #14181a;
  font: 600 8px/1 "SF Pro Rounded", system-ui, sans-serif; font-style: normal;
  font-variant-numeric: tabular-nums;
  animation: nb-nrow-in .3s ease both;
}

/* The sphere is the run. A ring closes around it while Neva is working and is
   gone the moment she is not — no new object on the bar, and nothing to
   dismiss. */
body[data-product="neura-build"][data-nb-run="1"] .neva-orb::after {
  content: ""; position: absolute; inset: -7px; border-radius: 50%;
  border: 1px solid rgba(157, 224, 179, .34);
  box-shadow: 0 0 22px rgba(157, 224, 179, .18);
  pointer-events: none;
  animation: nb-nring 2.4s ease-in-out infinite;
}
@keyframes nb-nring { 0%, 100% { opacity: .35; transform: scale(1); } 50% { opacity: .9; transform: scale(1.045); } }

/* The dock's own flyouts were the orb's laboratory — particle counts, a spin
   slider, a face to upload. Handsome, and about the sphere rather than about
   the work. The keys keep their names and open the console instead, so the
   panels behind them have nothing left to say on this product. */
body[data-product="neura-build"] .neva-panel { display: none !important; }

@media (prefers-reduced-motion: reduce) {
  body[data-product="neura-build"] .nb-nstrip__run,
  body[data-product="neura-build"] .nb-nstrip__ask,
  body[data-product="neura-build"] .nb-nsteps li,
  body[data-product="neura-build"] .nb-ntasks li,
  body[data-product="neura-build"] .nb-ncount__d,
  body[data-product="neura-build"] .nb-nkey { animation: none; }
  body[data-product="neura-build"] .nb-nstrip__dot[data-live="1"],
  body[data-product="neura-build"] .nb-nlive i,
  body[data-product="neura-build"][data-nb-run="1"] .neva-orb::after { animation: none; }
  body[data-product="neura-build"] .nb-nstrip__rail[data-indeterminate="1"]::after { animation: none; width: 100%; opacity: .4; }
  body[data-product="neura-build"] .nb-nsheet { transition: none; }
}

/* A narrow window: the hint and the extra counts go before anything that can
   be acted on does. */
@media (max-width: 900px) {
  body[data-product="neura-build"] .nb-ncomposer__hint,
  body[data-product="neura-build"] .nb-nstrip__bits { display: none; }
}

/* While Neva is working, or while her sheet is open, the row stays out. This
   is `is-near` said in a class of our own: that one belongs to dock-reveal.js,
   which takes it off again when the hand leaves the bottom of the frame, and a
   console holding it down would mean the bar never rested again. */
body[data-product="neura-build"] .neva-dock.nb-near::before { opacity: 1; transform: translateY(0); }
body[data-product="neura-build"] .neva-dock.nb-near .neva-dock-group {
  opacity: 1; filter: blur(0); transform: translateY(0); pointer-events: auto;
}

/* ── the engine picker ────────────────────────────────────────────────
   Neva is one option among the workspace's providers rather than a wrapper
   around them, so she is a card of the same kind — larger only because she
   carries her working profiles with her. */
body[data-product="neura-build"] .nb-nengine {
  display: flex; align-items: center; gap: 11px; width: 100%;
  padding: 11px 13px; text-align: left;
  border: 1px solid rgba(255, 255, 255, .1); border-radius: 13px;
  background: rgba(255, 255, 255, .035); color: inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
body[data-product="neura-build"] .nb-nengine:hover { background: rgba(255, 255, 255, .07); }
body[data-product="neura-build"] .nb-nengine[aria-pressed="true"] { border-color: rgba(255, 255, 255, .26); background: rgba(255, 255, 255, .085); }
body[data-product="neura-build"] .nb-nengine__mark {
  width: 30px; height: 30px; flex: 0 0 auto; display: grid; place-items: center;
  border: 1px solid rgba(255, 255, 255, .12); border-radius: 9px;
  background: radial-gradient(circle at 40% 35%, rgba(255,255,255,.22), rgba(255,255,255,.03) 70%);
}
body[data-product="neura-build"] .nb-nengine__mark .nb-icon { width: 14px; height: 14px; }
body[data-product="neura-build"] .nb-nengine__text { display: grid; gap: 3px; min-width: 0; flex: 1; }
body[data-product="neura-build"] .nb-nengine__text b { font: 500 12.5px/1.2 inherit; }
body[data-product="neura-build"] .nb-nengine__text small { font-size: 10px; color: rgba(255, 255, 255, .44); }
body[data-product="neura-build"] .nb-nengine > .nb-icon { width: 15px; height: 15px; color: rgba(255,255,255,.8); }

body[data-product="neura-build"] .nb-nprofiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 5px; margin: 6px 0 4px; }
body[data-product="neura-build"] .nb-nprofiles button {
  display: grid; gap: 2px; padding: 8px 11px; text-align: left;
  border: 1px solid rgba(255, 255, 255, .075); border-radius: 10px;
  background: rgba(255, 255, 255, .022); color: inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
body[data-product="neura-build"] .nb-nprofiles button:hover { background: rgba(255, 255, 255, .06); }
body[data-product="neura-build"] .nb-nprofiles button[aria-pressed="true"] { border-color: rgba(255, 255, 255, .26); background: rgba(255, 255, 255, .1); }
body[data-product="neura-build"] .nb-nprofiles b { font: 500 11px/1.2 inherit; }
body[data-product="neura-build"] .nb-nprofiles small { font-size: 9.5px; color: rgba(255, 255, 255, .4); }

body[data-product="neura-build"] .nb-nsearch {
  display: flex; align-items: center; gap: 8px; height: 32px; margin: 12px 0 8px;
  padding: 0 11px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 10px;
  background: rgba(0, 0, 0, .18);
}
body[data-product="neura-build"] .nb-nsearch .nb-icon { width: 13px; height: 13px; opacity: .5; }
body[data-product="neura-build"] .nb-nsearch input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: rgba(238,242,244,.9); font: 400 11px/1 inherit; }

body[data-product="neura-build"] .nb-nprovider { margin-top: 12px; }
body[data-product="neura-build"] .nb-nprovider > header { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
body[data-product="neura-build"] .nb-nprovider > header b { font-size: 9.5px; font-weight: 550; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.6); }
body[data-product="neura-build"] .nb-nprovider > header em { font-style: normal; font-size: 9.5px; color: rgba(255,255,255,.34); font-variant-numeric: tabular-nums; }
body[data-product="neura-build"] .nb-nprovider > header i { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,.3); }
body[data-product="neura-build"] .nb-nprovider > header i[data-health="healthy"] { background: #9de0b3; box-shadow: 0 0 8px rgba(157,224,179,.6); }
body[data-product="neura-build"] .nb-nprovider > header i[data-health="degraded"] { background: #ddd1a6; }
body[data-product="neura-build"] .nb-nprovider > header i[data-health="down"] { background: #dda4a4; }
body[data-product="neura-build"] .nb-nprovider > header .nb-ntag { margin-left: auto; }

body[data-product="neura-build"] .nb-nmodels { display: grid; gap: 2px; }
body[data-product="neura-build"] .nb-nmodels button {
  display: flex; align-items: center; gap: 9px; min-height: 30px; padding: 5px 10px;
  border: 1px solid transparent; border-radius: 8px; background: transparent;
  color: rgba(226, 232, 234, .8); font: 400 11px/1.3 inherit; text-align: left; cursor: pointer;
  transition: background .14s ease, border-color .14s ease, color .14s ease;
}
body[data-product="neura-build"] .nb-nmodels button span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-nmodels button em { font-style: normal; font-size: 8.5px; letter-spacing: .08em; text-transform: uppercase; color: rgba(255,255,255,.3); }
body[data-product="neura-build"] .nb-nmodels button:hover { background: rgba(255, 255, 255, .06); color: #f0f3f4; }
body[data-product="neura-build"] .nb-nmodels button[aria-pressed="true"] { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.09); color: #f3f6f7; }
body[data-product="neura-build"] .nb-nmodels .nb-icon { width: 13px; height: 13px; flex: 0 0 auto; }
body[data-product="neura-build"] .nb-nmore { display: block; margin-top: 6px; color: rgba(255,255,255,.32); font-size: 9.5px; }

/* The engine has to be readable from where you type, because choosing the
   wrong one is the mistake you only notice in the answer. */
body[data-product="neura-build"] .nb-nengine-chip {
  display: inline-flex; align-items: center; gap: 6px; max-width: 210px; height: 30px;
  padding: 0 10px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 10px;
  background: rgba(255, 255, 255, .03); color: rgba(232, 238, 240, .82);
  font: 480 10.5px/1 inherit; cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
body[data-product="neura-build"] .nb-nengine-chip:hover { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22); }
body[data-product="neura-build"] .nb-nengine-chip .nb-icon { width: 12px; height: 12px; flex: 0 0 auto; opacity: .66; }
body[data-product="neura-build"] .nb-nengine-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body[data-product="neura-build"] .nb-nengine-chip em { font-style: normal; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.38); }

@media (max-width: 980px) {
  body[data-product="neura-build"] .nb-nengine-chip span { display: none; }
}

/* ====================================================================
   THE WIZARD. A space of its own, entered from the command bar, drawn in
   the language of Phase-0's stage 35 — THE MAP — and its question screens:
   one 16:9 stage fitted to the window with 1em = 1% of its height, a
   column of items that arrive blurred and settle, a thread of light that
   is measured onto the stations rather than guessed, and keys that wear
   the glowrun ring. Nothing here is a Space widget; it stands over the
   shell the way #end stands over the film.
   ==================================================================== */
@property --nbw-ga { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
@keyframes nbwGaRot { to { --nbw-ga: 360deg; } }
@keyframes nbwGaRotOnce { from { --nbw-ga: 0deg; } to { --nbw-ga: 360deg; } }
@keyframes nbwGaVanish { to { opacity: 0; } }
@keyframes nbwBreath {
  0%, 100% { box-shadow: 0 0 0.62em 0.15em rgba(255,246,230,0.98), 0 0 1.60em 0.40em rgba(255,238,206,0.46), 0 0 3.20em 0.90em rgba(255,232,192,0.16); }
  50%      { box-shadow: 0 0 0.78em 0.20em rgba(255,249,238,1.00), 0 0 2.30em 0.62em rgba(255,240,212,0.60), 0 0 4.60em 1.40em rgba(255,234,196,0.24); }
}
@keyframes nbwRing { 0% { transform: scale(1); opacity: 0.60; } 62% { transform: scale(4.6); opacity: 0; } 100% { transform: scale(4.6); opacity: 0; } }
@keyframes nbwQspin { to { rotate: 360deg; } }

[data-nb-wizard] {
  position: fixed; inset: 0; z-index: 10090;
  background: #04050a; color: #eef1f6;
  font-family: "Inter", "SF Pro Display", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  direction: ltr; overflow: hidden;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity 0.9s ease, visibility 0s linear 0.9s;
  -webkit-user-select: none; user-select: none;
}
[data-nb-wizard].on { opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 0.9s ease; }
body.nbw-open { overflow: hidden; }

/* the corner key that leaves. A thin chip in the frame's top right, the
   same glass the Threshold chips are made of. */
.nbw-leave {
  position: absolute; right: 2.2vw; top: 2.2vh; z-index: 5;
  display: inline-flex; align-items: center; gap: 0.55em;
  font: 300 12.5px/1 "Inter", Arial, sans-serif; letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(214,221,232,0.72); background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.16); border-radius: 999px; padding: 0.7em 1.15em 0.7em 1.0em;
  backdrop-filter: blur(6px); cursor: pointer; transition: border-color 0.3s, background 0.3s, color 0.3s;
}
.nbw-leave:hover { color: #ffffff; border-color: rgba(255,255,255,0.4); background: rgba(255,255,255,0.10); }
.nbw-leave svg { width: 1.05em; height: 1.05em; stroke: currentColor; fill: none; stroke-width: 1.6; stroke-linecap: round; }

/* ---------- screens. The same .scr contract as the source: opacity,
   with visibility held for the fade so nothing underneath can be
   pressed through a screen that is still leaving. ---------- */
.nbw-scr {
  position: absolute; inset: 0; opacity: 0; pointer-events: none; visibility: hidden;
  transition: opacity 0.9s ease, visibility 0s linear 0.9s;
}
.nbw-scr.on { opacity: 1; pointer-events: auto; visibility: visible; transition: opacity 0.9s ease; }
.nbw-stage { position: absolute; pointer-events: none; }
.nbw-stage > * { pointer-events: auto; }

/* ---------- the column grammar: kicker, rule, items that arrive ---------- */
.nbw-v4kick { margin-bottom: 2.4em; }
.nbw-v4kicker { font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.15em; letter-spacing: 0.30em; line-height: 1; color: rgba(214,221,232,0.72); text-transform: uppercase; }
.nbw-v4rule {
  position: relative; width: 11em; height: 1px; margin-top: 1.35em; overflow: visible;
  background: linear-gradient(90deg, rgba(255,255,255,0.05) 0%, rgba(255,240,214,0.85) 9%, rgba(255,255,255,0.16) 22%, rgba(255,255,255,0.03) 100%);
  box-shadow: 0 0 6px rgba(255,236,200,0.28);
}
/* on a question the hairline IS the chapter's progress bar: emptied to
   its faintest value and refilled from the left with its own gradient. */
.nbw-qz .nbw-v4rule { width: 13em; background: rgba(255,255,255,0.055); box-shadow: none; }
.nbw-qz .nbw-v4rule::after {
  content: ""; position: absolute; left: 0; top: 0; height: 100%; width: var(--qzp, 0%);
  background: linear-gradient(90deg, rgba(255,255,255,0.05) 0%, rgba(255,240,214,0.85) 9%, rgba(255,255,255,0.16) 22%, rgba(255,240,214,0.30) 62%, rgba(255,240,214,0.42) 100%);
  box-shadow: 0 0 6px rgba(255,236,200,0.28);
  transition: width 1.05s cubic-bezier(0.3, 0.7, 0.2, 1);
}
.nbw-qz .nbw-v4rule::before {
  content: ""; position: absolute; top: 50%; left: var(--qzp, 0%); width: 2px; height: 2px; margin: -1px 0 0 -1px; border-radius: 50%;
  background: rgba(255,245,226,0.95);
  box-shadow: 0 0 5px 1px rgba(255,236,200,0.55), 0 0 12px 3px rgba(255,236,200,0.18);
  opacity: 0; transition: left 1.05s cubic-bezier(0.3, 0.7, 0.2, 1), opacity 0.9s ease;
}
.nbw-qz.on .nbw-v4rule::before { opacity: 1; }

.nbw-col .citem { opacity: 0; transform: translateY(1.05em); filter: blur(9px); }
.nbw-col.go .citem {
  opacity: 1; transform: translateY(0); filter: blur(0);
  transition: opacity 2.1s cubic-bezier(0.2, 0.6, 0.2, 1), transform 2.1s cubic-bezier(0.2, 0.6, 0.2, 1), filter 2.1s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.nbw-col.go > .citem:nth-child(1) { transition-delay: 0s; }
.nbw-col.go > .citem:nth-child(2) { transition-delay: 0.35s; }
.nbw-col.settled .citem { opacity: 1 !important; transform: none !important; filter: none !important; transition: none !important; }
.nbw-col.gsnap, .nbw-col.gsnap * { transition: none !important; animation: none !important; }
/* the exit outranks the settle guard by source order, and empties in
   the reverse of the order it filled (the delays come from script) */
.nbw-qz.qout .nbw-col .citem {
  opacity: 0 !important; filter: blur(9px) !important; transform: translateY(-0.85em) !important;
  transition: opacity 0.80s cubic-bezier(0.4, 0, 0.6, 1), transform 0.80s cubic-bezier(0.4, 0, 0.6, 1), filter 0.80s cubic-bezier(0.4, 0, 0.6, 1) !important;
}
.nbw-qz.qout.back .nbw-col .citem { transform: translateY(0.85em) !important; }

/* button rows: hidden until the reveal adds .v4in on their slot */
.nbw-v4btnrow { margin-top: 4.8em; transition-delay: 0s !important; visibility: hidden; opacity: 0 !important; display: flex; align-items: center; gap: 2.6em; }
.nbw-col.go .nbw-v4btnrow:not(.v4in) { transform: translateY(1.05em); filter: blur(9px); }
.nbw-v4btnrow.v4in { visibility: visible; opacity: 1 !important; }
.nbw-col.settled .nbw-v4btnrow:not(.v4in) { opacity: 0 !important; visibility: hidden !important; }
.nbw-col.settled .nbw-v4btnrow { transition: opacity 1.2s ease !important; }

/* ---------- the keys. One standard, worn by every key in the wizard. ---------- */
.nbw-key {
  position: relative; font: inherit; font-family: "Raleway", "Inter", Arial, sans-serif;
  font-size: 1.6em; font-weight: 300; letter-spacing: 0.05em; text-indent: 0;
  color: #eef1f6; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.22);
  border-radius: 0.5em; padding: 0.6em 1.6em; backdrop-filter: blur(6px); cursor: pointer; outline: none;
  transition: background 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
}
.nbw-key:hover:not(:disabled) { background: rgba(255,255,255,0.14); border-color: rgba(255,255,255,0.34); color: #ffffff; }
.nbw-key.quiet { color: rgba(226,233,244,0.72); background: rgba(255,255,255,0.035); border-color: rgba(255,255,255,0.14); padding: 0.6em 1.5em; }
.nbw-key:disabled { opacity: 0.35; cursor: default; }
.nbw-key:disabled::before { display: none; }
.nbw-key.hide { display: none; }
.nbw-key:focus-visible { border-color: rgba(255,255,255,0.55); }
.nbw-glowrun::before {
  content: ""; position: absolute; inset: -1px; border-radius: inherit; padding: 1.2px;
  background: conic-gradient(from var(--nbw-ga), transparent 0 68%, rgba(235,242,252,0.95) 82%, transparent 96%);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: nbwGaRot 2.8s linear infinite; pointer-events: none;
}
.nbw-key.oncelap::before { animation: nbwGaRotOnce 2.8s linear 1s 1, nbwGaVanish 0.8s ease 3.8s forwards; }

/* ==================== THE MAP (stage 35) ==================== */
.nbw-map .nbw-col { position: absolute; left: 50%; top: 10.5%; width: 57%; max-width: 72em; transform: translateX(-50%); }
.nbw-gs-head { font-family: "Raleway", "Inter", Arial, sans-serif; font-weight: 200; letter-spacing: 0.005em; font-size: 4.4em; line-height: 1.14; color: #f2f5fa; }
.nbw-gs-list { position: relative; margin-top: 3.6em; padding-left: 3.0em; }
.nbw-gs-thread {
  position: absolute; left: 0.78em; top: 0.70em; height: 0; width: 1px; background: rgba(255,255,255,0.20);
  transform-origin: top; transform: scaleY(0); transition: transform 3.6s cubic-bezier(0.25, 0.1, 0.25, 1);
}
.nbw-gs-live {
  position: absolute; left: 0; top: 0; width: 2px; height: 0; border-radius: 1px;
  background: linear-gradient(180deg, rgba(255,241,219,0) 0%, rgba(255,243,224,0.92) 24%, rgba(255,243,224,0.92) 76%, rgba(255,241,219,0) 100%);
  box-shadow: 0 0 0.55em 0.06em rgba(255,238,208,0.30); opacity: 0; transition: opacity 1.5s ease;
}
.nbw-col.go .nbw-gs-live { opacity: 1; transition: opacity var(--gsf, 1.5s) ease var(--gsfd, 2.9s); }
.nbw-col.go .nbw-gs-live.walk {
  box-shadow: 0 0 0.85em 0.11em rgba(255,238,208,0.44);
  transition: opacity var(--gsf, 1.5s) ease var(--gsfd, 2.9s), box-shadow 0.45s ease,
    top var(--gsw, 0.62s) cubic-bezier(0.42, 0, 0.18, 1), height var(--gsw, 0.62s) cubic-bezier(0.42, 0, 0.18, 1);
}
.nbw-col.go .nbw-gs-thread { transform: scaleY(1); }
.nbw-gs-item { position: relative; margin-top: 3.45em; opacity: 0; transform: translateX(0.7em); cursor: default; }
.nbw-gs-item:first-of-type { margin-top: 0; }
.nbw-gs-item.lit { opacity: 1; transform: translateX(0); transition: opacity 0.85s ease, transform 0.85s cubic-bezier(0.2, 0.6, 0.2, 1); }
.nbw-gs-node {
  position: absolute; left: -2.42em; top: 0.50em; width: 0.40em; height: 0.40em; border-radius: 50%; background: #ffffff;
  box-shadow: 0 0 0.32em 0.07em rgba(255,255,255,0.55), 0 0 1.00em 0.24em rgba(255,255,255,0.14);
  transition: box-shadow 1.4s ease, transform 1.4s cubic-bezier(0.2,0.6,0.2,1);
}
.nbw-gs-top { display: flex; align-items: baseline; gap: 1.15em; }
.nbw-gs-label { font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.58em; letter-spacing: 0.26em; color: #dfe5ef; transition: color 1.4s ease; }
.nbw-gs-time { font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.14em; letter-spacing: 0.08em; color: rgba(139,147,161,0.88); }
.nbw-gs-line { margin-top: 0.80em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.58em; line-height: 1.45; letter-spacing: 0.005em; color: rgba(174,183,197,0.86); transition: color 1.4s ease; }
.nbw-gs-item.here .nbw-gs-node {
  transform: scale(1.30);
  box-shadow: 0 0 0.62em 0.15em rgba(255,246,230,0.98), 0 0 1.60em 0.40em rgba(255,238,206,0.46), 0 0 3.20em 0.90em rgba(255,232,192,0.16);
  animation: nbwBreath 3.5s ease-in-out 0.9s infinite;
}
.nbw-gs-item.here .nbw-gs-node::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 0.40em; height: 0.40em; margin: -0.20em 0 0 -0.20em;
  border-radius: 50%; pointer-events: none; border: 1px solid rgba(255,242,220,0.60); opacity: 0;
  animation: nbwRing 3.5s cubic-bezier(0.15, 0.6, 0.3, 1) 0.9s infinite;
}
.nbw-gs-item.here .nbw-gs-label { color: #ffffff; text-shadow: 0 0 0.55em rgba(255,240,214,0.45); }
.nbw-gs-item.here .nbw-gs-line { color: rgba(226,233,243,0.98); }
.nbw-gs-item.was { cursor: pointer; }
.nbw-gs-item.was .nbw-gs-node { opacity: 0; }
.nbw-gs-item.was .nbw-gs-label { color: rgba(150,158,172,0.70); }
.nbw-gs-item.was .nbw-gs-time { color: rgba(104,111,124,0.62); }
.nbw-gs-item.was .nbw-gs-line { color: rgba(116,124,138,0.52); }
.nbw-gs-item.was:hover .nbw-gs-label { color: rgba(214,221,232,0.9); }
.nbw-gs-mark {
  position: absolute; left: -2.66em; top: 0.26em; width: 0.88em; height: 0.88em;
  background: radial-gradient(circle at 50% 50%, rgba(4,5,10,1) 34%, rgba(4,5,10,0.86) 52%, rgba(4,5,10,0) 76%);
  opacity: 0; transform: scale(0.60); transition: opacity 0.9s ease, transform 0.9s cubic-bezier(0.2,0.6,0.2,1); pointer-events: none;
}
.nbw-gs-item.was .nbw-gs-mark { opacity: 1; transform: scale(1); }
.nbw-gs-mark svg { display: block; width: 100%; height: 100%; overflow: visible; filter: drop-shadow(0 0 0.20em rgba(255,244,224,0.40)); }
.nbw-gs-mark path { fill: none; stroke: rgba(255,247,234,0.82); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.nbw-gs-payoff { margin-top: 3.0em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.75em; line-height: 1.5; letter-spacing: 0.01em; color: rgba(228,234,242,0.95); opacity: 0; }
.nbw-gs-payoff.lit { opacity: 1; transition: opacity 1.7s ease; }

/* ==================== THE QUESTIONS ==================== */
/* Phase-0 stands its question column at the right because a living
   scene stands at the left. There is no scene here, so the column takes
   the Map's own centre line rather than leaving half the frame dark. */
.nbw-qz .nbw-col { position: absolute; left: 50%; top: 11.5%; width: 57%; max-width: 72em; transform: translateX(-50%); }
.nbw-qz-head { font-family: "Raleway", "Inter", Arial, sans-serif; font-weight: 200; letter-spacing: 0.005em; font-size: 4.5em; line-height: 1.22; color: #f1f4f9; }
.nbw-qz-head.small { font-size: 3.7em; }
.nbw-qz-help { margin-top: 1.6em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.5em; line-height: 1.5; color: rgba(174,183,197,0.86); }
.nbw-eyebrow { margin-top: 2.6em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.05em; letter-spacing: 0.26em; text-transform: uppercase; color: rgba(139,147,161,0.88); }
.nbw-eyebrow em { font-style: normal; letter-spacing: 0.04em; text-transform: none; color: rgba(139,147,161,0.7); }
.nbw-eyebrow + .nbw-qz-list, .nbw-eyebrow + .nbw-qz-chips { margin-top: 1.2em; }
/* a follow-up's questions arrive the way a reply does when the answer above them changes */
.nbw-follow-body { opacity: 0; transform: translateY(0.6em); filter: blur(7px); transition: opacity 0.9s ease, transform 0.9s ease, filter 0.9s ease; }
.nbw-follow-body.in { opacity: 1; transform: none; filter: blur(0); }

/* rows: no spine, no separators, one quiet dot per row */
.nbw-qz-list { margin-top: 2.9em; }
.nbw-qz-list.long .c-row { padding: 0.60em 0; }
.nbw-qz-list .c-row { display: grid; grid-template-columns: 2.3em 1fr; align-items: start; padding: 0.94em 0; position: relative; cursor: pointer; outline: none; }
.nbw-qz-list .qcell { display: flex; align-items: center; justify-content: flex-start; font-size: 1.80em; line-height: 1.40; height: 1.40em; margin-left: 0.17em; }
.nbw-qz-list.long .qcell { font-size: 1.58em; }
.nbw-qz-list .qt { font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.80em; line-height: 1.40; letter-spacing: 0.005em; color: rgba(174,183,197,0.88); transition: color 0.5s ease; }
.nbw-qz-list.long .qt { font-size: 1.58em; }
.nbw-qz-list .c-row.has-sw { grid-template-columns: 2.3em 1fr auto; }
.nbw-qz-list .c-row .nbw-sw { align-self: start; margin-top: calc((1.80em * 1.40 - 2.1em) / 2); margin-left: 1.4em; width: 3.6em; height: 2.1em; border-radius: 0.3em; display: flex; flex-direction: column; gap: 0.18em; justify-content: center; padding: 0.34em; overflow: hidden; opacity: 0.72; transition: opacity 0.5s ease; }
.nbw-qz-list.long .c-row .nbw-sw { margin-top: calc((1.58em * 1.40 - 2.1em) / 2); }
.nbw-qz-list .c-row:hover .nbw-sw, .nbw-qz-list .c-row.sel .nbw-sw { opacity: 1; }
.nbw-qz-list .nbw-sw i { display: block; border-radius: 2px; }
.nbw-qmark {
  display: block; position: relative; width: 0.26em; height: 0.26em; border-radius: 50%; flex: 0 0 auto;
  background: rgba(226,233,244,0.52); z-index: 2; animation: nbwQspin 90s linear infinite;
  transition: background 0.5s ease, transform 0.5s cubic-bezier(0.2,0.6,0.2,1), box-shadow 0.5s ease;
}
.nbw-qmark::before, .nbw-qmark::after { content: ""; position: absolute; opacity: 0; transition: opacity 0.5s ease; }
.nbw-qmark::before { left: 50%; top: 50%; width: 1px; height: 1.90em; transform: translate(-0.5px, -50%); background: linear-gradient(180deg, transparent 0%, rgba(255,255,255,0.88) 50%, transparent 100%); }
.nbw-qmark::after { left: 50%; top: 50%; width: 1.90em; height: 1px; transform: translate(-50%, -0.5px); background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.78) 50%, transparent 100%); }
.nbw-qz-list .c-row:hover .qt, .nbw-qz-list .c-row:focus-visible .qt { color: #edf2f9; }
.nbw-qz-list .c-row:hover .nbw-qmark, .nbw-qz-list .c-row:focus-visible .nbw-qmark { background: #ffffff; transform: scale(1.14); box-shadow: 0 0 0.22em 0.05em rgba(255,255,255,0.66), 0 0 0.70em 0.15em rgba(255,255,255,0.18); }
.nbw-qz-list .c-row:hover .nbw-qmark::before, .nbw-qz-list .c-row:hover .nbw-qmark::after,
.nbw-qz-list .c-row:focus-visible .nbw-qmark::before, .nbw-qz-list .c-row:focus-visible .nbw-qmark::after { opacity: 0.72; }
.nbw-qz-list .c-row.sel .qt { color: #ffffff; }
.nbw-qz-list .c-row.sel .nbw-qmark { background: #ffffff; transform: scale(1.26); box-shadow: 0 0 0.28em 0.07em rgba(255,255,255,0.90), 0 0 0.95em 0.22em rgba(255,255,255,0.30); }
.nbw-qz-list .c-row.sel .nbw-qmark::before, .nbw-qz-list .c-row.sel .nbw-qmark::after { opacity: 0.92; }
.nbw-qz-list.taken .c-row:not(.sel) { opacity: 0.30 !important; transition: opacity 1.2s ease !important; }
.nbw-qz-list .c-row.rec .qt::after { content: "recommended"; display: inline-block; margin-left: 0.9em; font-size: 0.58em; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255,240,214,0.6); vertical-align: 0.25em; }

/* chips */
.nbw-qz-chips { margin-top: 2.2em; display: flex; flex-wrap: wrap; gap: 0.8em 0.8em; }
.nbw-qz-chip {
  font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.44em; letter-spacing: 0.01em; color: rgba(196,205,218,0.92);
  background: rgba(18, 20, 25, 0.42); border: 1px solid rgba(255,255,255,0.20); border-radius: 999px; padding: 0.52em 1.15em;
  cursor: pointer; position: relative; outline: none; backdrop-filter: blur(6px);
  transition: color 0.35s ease, border-color 0.35s ease, background 0.35s ease;
}
.nbw-qz-chip:hover, .nbw-qz-chip:focus-visible { color: #eef3fa; border-color: rgba(255,255,255,0.40); }
.nbw-qz-chip.sel { color: #0a0c10; background: rgba(255,255,255,0.94); border-color: rgba(255,255,255,0.94); }

/* the reply under the list: what the taken row means, in the source's reply
   voice. The wrapper is a citem and arrives with the column; the text inside
   is what fades, because the settle guard pins every citem to opacity 1 */
.nbw-qz-sayrow { margin-top: 1.4em; min-height: 2.6em; }
.nbw-qz-say { display: block; font-family: "Raleway", "Inter", Arial, sans-serif; font-weight: 200; font-size: 1.72em; line-height: 1.5; color: rgba(196,205,218,0.92); opacity: 0; transform: translateY(0.6em); filter: blur(7px); transition: opacity 1.4s ease, transform 1.4s ease, filter 1.4s ease; }
.nbw-qz-say.in { opacity: 1; transform: translateY(0); filter: blur(0); }

/* the box this theme would draw, for answers that carry a meaning under
   their name. Nothing invented: the tool tile's glass, hairline and radius,
   the answer row's marker cell with the same star in it, the title in the
   row's voice, the meaning in the file's quiet instruction voice. One answer
   only: the taken box keeps its light and the others recede. */
.nbw-qz-grid { margin-top: 2.0em; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.7em; }
.nbw-qz-grid.two { grid-template-columns: repeat(2, 1fr); }
.nbw-eyebrow + .nbw-qz-grid { margin-top: 1.2em; }
.nbw-qz-tile { display: grid; grid-template-columns: 2.3em 1fr; align-items: start; padding: 0.95em 1.2em 1.0em 0.55em; position: relative; text-align: left; cursor: pointer; outline: none;
  background: rgba(18,20,25,0.38); border: 1px solid rgba(255,255,255,0.14); border-radius: 0.5em; backdrop-filter: blur(6px);
  transition: border-color 0.5s ease, background 0.5s ease, opacity 1.2s ease; }
.nbw-qz-tile .qcell { display: flex; align-items: center; justify-content: flex-start; font-size: 1.58em; line-height: 1.40; height: 1.40em; margin-left: 0.17em; }
.nbw-qz-tile .qt { display: block; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.58em; line-height: 1.40; letter-spacing: 0.005em; color: rgba(174,183,197,0.88); transition: color 0.5s ease; }
.nbw-qz-tile .qt b { display: block; font-weight: 300; }
.nbw-qz-tile .qt small { display: block; margin-top: 0.1em; font-size: 0.82em; line-height: 1.55; color: rgba(168,177,191,0.72); transition: color 0.5s ease; }
.nbw-qz-tile:hover, .nbw-qz-tile:focus-visible { border-color: rgba(255,255,255,0.30); }
.nbw-qz-tile:hover .qt, .nbw-qz-tile:focus-visible .qt { color: #edf2f9; }
.nbw-qz-tile:hover .nbw-qmark, .nbw-qz-tile:focus-visible .nbw-qmark { background: #ffffff; transform: scale(1.14); box-shadow: 0 0 0.22em 0.05em rgba(255,255,255,0.66), 0 0 0.70em 0.15em rgba(255,255,255,0.18); }
.nbw-qz-tile:hover .nbw-qmark::before, .nbw-qz-tile:hover .nbw-qmark::after,
.nbw-qz-tile:focus-visible .nbw-qmark::before, .nbw-qz-tile:focus-visible .nbw-qmark::after { opacity: 0.72; }
.nbw-qz-tile.sel { border-color: rgba(255,255,255,0.55); background: rgba(255,255,255,0.10); }
.nbw-qz-tile.sel .qt { color: #ffffff; }
.nbw-qz-tile.sel .qt small { color: rgba(196,205,218,0.92); }
.nbw-qz-tile.sel .nbw-qmark { background: #ffffff; transform: scale(1.26); box-shadow: 0 0 0.28em 0.07em rgba(255,255,255,0.90), 0 0 0.95em 0.22em rgba(255,255,255,0.30); }
.nbw-qz-tile.sel .nbw-qmark::before, .nbw-qz-tile.sel .nbw-qmark::after { opacity: 0.92; }
.nbw-qz-grid.taken .nbw-qz-tile:not(.sel) { opacity: 0.30; }

/* React Bits Pro list-8, in this theme. The frame and the panel rows keep
   the block's proportions (14px frame, 10px rows, 40px icon tile, 28px
   action, 150ms ease-out) measured in the stage's em; the surfaces are the
   theme's glass and hairlines, the type its Inter 300, the marker its star.
   The block's unread dot becomes the star, its hover-revealed action the
   check, its quieted read rows the rows not taken. */
/* the block's outer frame is not drawn: the rows stand on the stage by
   themselves, the way every other answer in the wizard does */
.nbw-l8 { margin-top: 2.0em; display: flex; flex-direction: column; gap: calc(0.6em + 4px); max-width: 50em; }
.nbw-eyebrow + .nbw-l8 { margin-top: 1.2em; }
.nbw-l8-row { display: grid; grid-template-columns: 2.3em 3.8em 1fr; align-items: center; column-gap: 1.0em; min-height: 6.0em; padding: 1.05em 1.4em 1.05em 0.6em;
  background: rgba(4,5,10,0.55); border: 1px solid rgba(255,255,255,0.075); border-radius: 0.95em; cursor: pointer; outline: none; position: relative;
  transition: background-color 0.5s ease, border-color 0.5s ease, opacity 1.2s ease; }
.nbw-l8-row:focus-visible { outline: 1px solid rgba(255,255,255,0.55); outline-offset: -2px; }
.nbw-l8-row .qcell { display: flex; align-items: center; justify-content: center; font-size: 1.42em; line-height: 1.4; height: 1.4em; margin-left: 0.17em; }
.nbw-l8-ico { display: flex; align-items: center; justify-content: center; width: 3.8em; height: 3.8em; border-radius: 0.95em; background: rgba(255,255,255,0.06); color: rgba(174,183,197,0.88);
  transition: background-color 0.5s ease, color 0.5s ease; }
.nbw-l8-ico svg { width: 1.7em; height: 1.7em; }
.nbw-l8-body { min-width: 0; }
.nbw-l8-body b { display: block; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.42em; line-height: 1.3; letter-spacing: 0.005em; color: rgba(206,214,226,0.92); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color 0.5s ease; }
.nbw-l8-body small { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-top: 0.2em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.16em; line-height: 1.4; color: rgba(139,147,161,0.78); transition: color 0.5s ease; }
.nbw-l8-row:hover, .nbw-l8-row:focus-visible { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.14); }
.nbw-l8-row:hover .nbw-l8-body b, .nbw-l8-row:focus-visible .nbw-l8-body b { color: #edf2f9; }
.nbw-l8-row:hover .nbw-l8-ico, .nbw-l8-row:focus-visible .nbw-l8-ico { background: rgba(255,255,255,0.09); color: #eef3fa; }
.nbw-l8-row:hover .nbw-qmark, .nbw-l8-row:focus-visible .nbw-qmark { background: #ffffff; transform: scale(1.14); box-shadow: 0 0 0.22em 0.05em rgba(255,255,255,0.66), 0 0 0.70em 0.15em rgba(255,255,255,0.18); }
.nbw-l8-row:hover .nbw-qmark::before, .nbw-l8-row:hover .nbw-qmark::after,
.nbw-l8-row:focus-visible .nbw-qmark::before, .nbw-l8-row:focus-visible .nbw-qmark::after { opacity: 0.72; }
.nbw-l8-row.sel { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.40); }
.nbw-l8-row.sel .nbw-l8-body b { color: #ffffff; }
.nbw-l8-row.sel .nbw-l8-body small { color: rgba(196,205,218,0.92); }
.nbw-l8-row.sel .nbw-l8-ico { background: rgba(255,255,255,0.14); color: #ffffff; }
.nbw-l8-row.sel .nbw-qmark { background: #ffffff; transform: scale(1.26); box-shadow: 0 0 0.28em 0.07em rgba(255,255,255,0.90), 0 0 0.95em 0.22em rgba(255,255,255,0.30); }
.nbw-l8-row.sel .nbw-qmark::before, .nbw-l8-row.sel .nbw-qmark::after { opacity: 0.92; }
.nbw-l8.taken .nbw-l8-row:not(.sel) { opacity: 0.55; }
.nbw-l8.taken .nbw-l8-row:not(.sel):hover { opacity: 1; }
/* the six directions: a swatch drawn in CSS, then the name */
.nbw-sw.mono { background: #0E0E0E; } .nbw-sw.mono i:nth-child(1){height:0.3em;width:52%;background:#fff} .nbw-sw.mono i:nth-child(2){height:0.18em;width:78%;background:#5A5A5A} .nbw-sw.mono i:nth-child(3){height:0.55em;width:36%;background:#fff}
.nbw-sw.soft { background: #F4F1EC; } .nbw-sw.soft i:nth-child(1){height:0.3em;width:48%;background:#2B2622;border-radius:99px} .nbw-sw.soft i:nth-child(2){height:0.18em;width:74%;background:#A79C8E;border-radius:99px} .nbw-sw.soft i:nth-child(3){height:0.55em;width:40%;background:#C6714A;border-radius:99px}
.nbw-sw.glass { background: linear-gradient(135deg,#131A2B,#1E2A47); } .nbw-sw.glass i:nth-child(1){height:0.3em;width:50%;background:rgba(255,255,255,.9)} .nbw-sw.glass i:nth-child(2){height:0.18em;width:72%;background:rgba(255,255,255,.34)} .nbw-sw.glass i:nth-child(3){height:0.55em;width:38%;background:rgba(120,200,255,.5);border:1px solid rgba(255,255,255,.35)}
.nbw-sw.bold { background: #1B1B1B; } .nbw-sw.bold i:nth-child(1){height:0.42em;width:66%;background:#E8FF57;border-radius:0} .nbw-sw.bold i:nth-child(2){height:0.18em;width:44%;background:#fff;border-radius:0} .nbw-sw.bold i:nth-child(3){height:0.55em;width:44%;background:#fff;border-radius:0}
.nbw-sw.clean { background: #fff; } .nbw-sw.clean i:nth-child(1){height:0.3em;width:46%;background:#111} .nbw-sw.clean i:nth-child(2){height:0.18em;width:70%;background:#B9BFC7} .nbw-sw.clean i:nth-child(3){height:0.55em;width:34%;background:#2563EB}
.nbw-sw.warm { background: #FFF8F0; } .nbw-sw.warm i:nth-child(1){height:0.3em;width:54%;background:#4A2E1E;border-radius:99px} .nbw-sw.warm i:nth-child(2){height:0.18em;width:70%;background:#C3A288;border-radius:99px} .nbw-sw.warm i:nth-child(3){height:0.55em;width:42%;background:#E07A3F;border-radius:99px}

/* fields */
.nbw-qz-field { margin-top: 2.3em; }
.nbw-qz-field label { display: block; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.05em; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(139,147,161,0.88); margin-bottom: 0.4em; }
.nbw-qz-field input, .nbw-qz-field textarea {
  width: 100%; box-sizing: border-box; display: block; font-family: "Raleway", "Inter", Arial, sans-serif; font-weight: 200; font-size: 2.2em; line-height: 1.3;
  color: #f1f4f9; background: transparent; border: none; border-bottom: 1px solid rgba(255,255,255,0.22); padding: 0.25em 0; outline: none; resize: none;
  transition: border-color 0.4s ease; -webkit-user-select: text; user-select: text;
}
.nbw-qz-field textarea { font-size: 1.94em; line-height: 1.42; min-height: 3.2em; overflow: hidden; }
.nbw-qz-field input::placeholder, .nbw-qz-field textarea::placeholder { color: rgba(150,159,173,0.55); }
.nbw-qz-field input:focus, .nbw-qz-field textarea:focus { border-bottom-color: rgba(255,255,255,0.55); }

/* the reply line under a group — a note in Neva's voice */
.nbw-qz-reply { margin-top: 1.6em; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.3em; line-height: 1.5; color: rgba(174,183,197,0.72); }
.nbw-qz-reply.warm { color: rgba(240,212,160,0.8); }

/* the summary on the last screen: rows nobody presses */
.nbw-sum { margin-top: 2.6em; display: grid; grid-template-columns: 1fr 1fr; gap: 0.9em 2.4em; }
.nbw-sum div { padding: 0.75em 0; border-bottom: 1px solid rgba(255,255,255,0.08); }
.nbw-sum b { display: block; font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.05em; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(139,147,161,0.88); margin-bottom: 0.35em; }
.nbw-sum span { font-family: "Inter", Arial, sans-serif; font-weight: 300; font-size: 1.45em; line-height: 1.4; color: rgba(226,233,243,0.95); }

/* the small line that says the screen is not on this path (dev only) */
.nbw-path { position: absolute; left: 2.2vw; bottom: 2.2vh; font: 300 11px/1 "IBM Plex Mono", Consolas, monospace; letter-spacing: 0.12em; color: rgba(139,147,161,0.5); pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .nbw-gs-item.here .nbw-gs-node { animation: none; }
  .nbw-gs-item.here .nbw-gs-node::after { animation: none; opacity: 0; }
  .nbw-qmark { animation: none; }
}
@media (max-width: 900px) {
  .nbw-map .nbw-col, .nbw-qz .nbw-col { width: 84%; }
  .nbw-qz-grid, .nbw-qz-grid.two { grid-template-columns: 1fr; }
  .nbw-l8-row { grid-template-columns: 2.3em 3.2em 1fr; }
}

/* Narrower still and the workspace name is the widest thing on the bar for
   the least information. Below this the switcher is its icon; the name is a
   click away in the menu it opens. */
@media (max-width: 900px) {
  body[data-product="neura-build"] .command-bar .world-switch__label { display: none; }
  body[data-product="neura-build"] .control-nav { max-width: calc(100vw - 320px); }
}
