/* ==========================================================================
   GBA Quote — studio UI (v0.2)
   Built on the Meri theme tokens (--bg, --surface, --line, --white, --text,
   --muted, --red, --amber, --mono, --display …) so it follows dark/light mode.
   Depends on the `meri-theme` stylesheet.
   ========================================================================== */

.gbaq-workbench { --gq-r: 16px; --gq-r-sm: 10px; padding: clamp(28px, 4vw, 56px) 0 clamp(48px, 6vw, 80px); color: var(--text); }
.gbaq-workbench *, .gbaq-workbench *::before, .gbaq-workbench *::after { box-sizing: border-box; }
.gbaq-workbench h2, .gbaq-workbench h3, .gbaq-workbench h4 { color: var(--white); font-family: var(--display); letter-spacing: -.02em; }
.gbaq-workbench p { margin: 0 0 .75em; }
.gbaq-workbench [hidden] { display: none !important; }

/* ---------- Studio layout ---------- */
.gbaq-studio { display: grid; gap: 24px; align-items: start; }
.gbaq-studio > * { min-width: 0; }
.gbaq-studio__stage { display: grid; gap: 16px; }
/* Columns: see "Layout v2" below — left = board + steps, right = price. */

/* ---------- Board stage ---------- */
.gbaq-stage { position: relative; padding: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-stage__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; margin-bottom: 12px; }
@media (max-width: 480px) { .gbaq-stage__tab { min-width: 0; padding: 8px 12px; } .gbaq-stage { padding: 10px; } }
.gbaq-stage__tabs { display: inline-flex; padding: 4px; gap: 2px; border-radius: 999px; background: var(--bg); border: 1px solid var(--line); }
.gbaq-stage__tab { min-width: 64px; padding: 8px 14px; border: 0; border-radius: 999px; background: transparent; color: var(--muted); font: 500 .8125rem/1 var(--body); cursor: pointer; transition: background-color .2s, color .2s; }
.gbaq-stage__tab:hover { color: var(--white); }
.gbaq-stage__tab[aria-selected="true"] { background: var(--red); color: #fff; }
.gbaq-stage__meta { color: var(--muted); font: 500 .75rem/1 var(--body); letter-spacing: .08em; white-space: nowrap; }
.gbaq-stage__render, .gbaq-stage__3d {
  position: relative; display: grid; place-items: center; overflow: hidden;
  aspect-ratio: 4 / 3; max-height: 62vh; width: 100%;
  border-radius: var(--gq-r-sm);
  background:
    radial-gradient(60% 60% at 50% 45%, var(--amber-glow, rgba(242,169,59,.12)), transparent 70%),
    repeating-linear-gradient(0deg, transparent 0 23px, var(--line) 23px 24px),
    repeating-linear-gradient(90deg, transparent 0 23px, var(--line) 23px 24px),
    var(--bg);
}
.gbaq-stage__render svg { width: 86%; height: 86%; filter: drop-shadow(0 18px 30px rgba(0, 0, 0, .45)); }
.gbaq-stage__3d canvas { width: 100% !important; height: 100% !important; cursor: grab; touch-action: none; }
.gbaq-stage__3d canvas:active { cursor: grabbing; }
.gbaq-stage__loading { margin: 0; color: var(--muted); font: 500 .8125rem/1 var(--body); }
.gbaq-stage__foot { margin: 10px 2px 0; color: var(--muted); font-size: .8125rem; }
.gbaq-stage[data-mode="top"] .gbaq-stage__3d, .gbaq-stage[data-mode="bottom"] .gbaq-stage__3d,
.gbaq-stage[data-mode="3d"] .gbaq-stage__render,
.gbaq-stage[data-mode="layers"] .gbaq-stage__render, .gbaq-stage[data-mode="layers"] .gbaq-stage__3d,
.gbaq-stage[data-mode="top"] .gbaq-viewer, .gbaq-stage[data-mode="bottom"] .gbaq-viewer, .gbaq-stage[data-mode="3d"] .gbaq-viewer { display: none; }
.gbaq-stage:not([data-mode]) .gbaq-stage__render, .gbaq-stage:not([data-mode]) .gbaq-stage__3d { display: none; }

.gbaq-stage__checks { margin-top: 12px; border-top: 1px solid var(--line); }
.gbaq-stage__checks summary { display: flex; align-items: center; gap: 8px; padding: 12px 2px 2px; color: var(--text-2, var(--text)); font-size: .875rem; font-weight: 500; cursor: pointer; list-style: none; }
.gbaq-stage__checks summary::-webkit-details-marker { display: none; }
.gbaq-stage__checks summary::after { content: "+"; margin-left: auto; color: var(--muted); }
.gbaq-stage__checks[open] summary::after { content: "–"; }
.gbaq-stage__checks summary span { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--amber-glow); color: var(--amber); font: 600 .75rem/1 var(--body); }
.gbaq-viewer__dfm { margin-top: 10px; }
.gbaq-viewer__dfm-note { color: var(--muted); font-size: .8125rem; }
.gbaq-viewer__dfm ul { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.gbaq-viewer__dfm li { padding: 10px 12px; border-radius: var(--gq-r-sm); background: var(--bg); color: var(--text-2, var(--text)); font-size: .8125rem; line-height: 1.5; }
.gbaq-viewer__disclaimer { margin: 10px 0 0; color: var(--muted); font-size: .75rem; }

/* Empty stage (before upload) — a drawn board placeholder */
.gbaq-stage--empty { display: grid; place-items: center; gap: 18px; min-height: 360px; padding: 32px; text-align: center; border-style: dashed; background: radial-gradient(60% 60% at 50% 40%, var(--amber-glow), transparent 70%), var(--surface); }
.gbaq-stage__ghost { position: relative; width: min(320px, 70%); aspect-ratio: 4 / 3; border-radius: 12px; background: #1f6b3c; box-shadow: 0 24px 40px rgba(0, 0, 0, .35), inset 0 0 0 3px rgba(0, 0, 0, .2); }
.gbaq-stage__ghost span { position: absolute; border: 2px solid rgba(255, 255, 255, .28); border-right: 0; border-bottom: 0; border-radius: 6px 0 0 0; }
.gbaq-stage__ghost span:nth-child(1) { left: 14%; top: 18%; width: 40%; height: 36%; }
.gbaq-stage__ghost span:nth-child(2) { left: 30%; top: 30%; width: 44%; height: 42%; }
.gbaq-stage__ghost span:nth-child(3) { right: 12%; top: 16%; width: 18%; height: 18%; border: 0; border-radius: 3px; background: #cfd3d8; box-shadow: -60px 70px 0 -4px #cfd3d8, -120px 40px 0 -6px #cfd3d8; }
.gbaq-stage__hint { margin: 0; color: var(--muted); font-size: .9375rem; }

/* Technical layer viewer (Layers mode) */
.gbaq-viewer__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.gbaq-viewer__bar-kicker { display: block; color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-viewer__bar-title { color: var(--white); font-weight: 600; }
.gbaq-viewer__toolbar { display: flex; gap: 4px; }
.gbaq-viewer__toolbar button, .gbaq-viewer__toolbar output { min-width: 34px; height: 32px; padding: 0 8px; border: 1px solid var(--line-2); border-radius: 8px; background: transparent; color: var(--white); font: 500 .75rem/30px var(--body); text-align: center; cursor: pointer; }
.gbaq-viewer__toolbar button:disabled { opacity: .4; cursor: default; }
.gbaq-viewer__body { display: grid; grid-template-columns: 170px minmax(0, 1fr); min-height: 360px; border: 1px solid var(--line); border-radius: var(--gq-r-sm); overflow: hidden; }
.gbaq-viewer__check { position: absolute; opacity: 0; pointer-events: none; }
.gbaq-viewer__panel { padding: 8px; border-right: 1px solid var(--line); background: var(--bg); overflow: auto; max-height: 460px; }
.gbaq-viewer__row { display: grid; grid-template-columns: 16px 14px 1fr; gap: 6px; align-items: center; padding: 6px; border-radius: 6px; cursor: pointer; font-size: .75rem; color: var(--text-2, var(--text)); }
.gbaq-viewer__row:hover { background: var(--surface); }
.gbaq-viewer__n { color: var(--muted); font-family: var(--body); }
.gbaq-viewer__swatch { width: 12px; height: 12px; border-radius: 3px; }
.gbaq-viewer__name { line-height: 1.25; }
.gbaq-viewer__file { display: block; color: var(--muted); font-size: .6875rem; word-break: break-all; }
.gbaq-viewer__stage { position: relative; overflow: hidden; background: #0d1117; cursor: grab; }
.gbaq-viewer__scene { position: absolute; inset: 0; transform-origin: 0 0; }
.gbaq-viewer__layer { position: absolute; inset: 0; }
.gbaq-viewer__layer svg { width: 100%; height: 100%; }
.gbaq-viewer__canvas-note { position: absolute; right: 10px; bottom: 8px; color: rgba(255, 255, 255, .5); font-size: .6875rem; }
.gbaq-viewer--empty { padding: 24px; color: var(--muted); }
@media (max-width: 640px) { .gbaq-viewer__body { grid-template-columns: 1fr; } .gbaq-viewer__panel { max-height: 140px; border-right: 0; border-bottom: 1px solid var(--line); } .gbaq-viewer__stage { min-height: 300px; } }

/* ---------- Price card ---------- */
.gbaq-rail-price { padding: 22px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-rail-price__eyebrow { margin: 0 0 4px !important; color: var(--amber); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-rail-price__title { margin: 0 0 14px; font-size: 1.25rem; }
.gbaq-rail-price__confidence { display: inline-flex; margin: 0 0 12px !important; padding: 4px 10px; border-radius: 999px; background: var(--amber-glow); color: var(--amber); font: 500 .6875rem/1.4 var(--body); letter-spacing: .06em; text-transform: uppercase; }
.gbaq-rail-price__line { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 12px 0; border-top: 1px solid var(--line); }
.gbaq-rail-price__label { color: var(--white); font-weight: 500; }
.gbaq-rail-price__amount { color: var(--white); font: 600 1rem/1.4 var(--display); text-align: right; }
.gbaq-rail-price__status { color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-rail-price__note { grid-column: 1 / -1; color: var(--muted); font-size: .8125rem; }
.gbaq-rail-price__none { color: var(--muted); }
.gbaq-rail-price__line--total { margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--line-2); }
.gbaq-rail-price__line--total .gbaq-rail-price__label { font: 600 1.25rem/1.2 var(--display); }
.gbaq-rail-price__line--total .gbaq-rail-price__amount { color: var(--red); font-size: 1.75rem; letter-spacing: -.02em; }
.gbaq-mobile-summary { display: none; }
@media (max-width: 1079px) {
  .gbaq-mobile-summary { position: sticky; bottom: 12px; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 18px; border-radius: 999px; background: var(--white); color: var(--bg); box-shadow: 0 10px 30px rgba(0, 0, 0, .3); }
  .gbaq-mobile-summary small { display: block; opacity: .7; font-size: .6875rem; }
  .gbaq-mobile-summary strong { color: inherit; }
}

/* ---------- Flow: header + stepper ---------- */
.gbaq-quote { display: grid; gap: 20px; }
.gbaq-quote__header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.gbaq-quote__eyebrow { margin: 0 !important; color: var(--amber); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-quote__number { margin: 2px 0 0 !important; color: var(--muted); font: 500 .8125rem/1.4 var(--body); }
.gbaq-quote__number span { color: var(--white); }
.gbaq-quote__tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.gbaq-quote__new { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--white); font-size: .75rem; font-weight: 500; }
.gbaq-quote__new:hover { border-color: var(--white); color: var(--white); }
.gbaq-quote__confidence { margin: 0 !important; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--text-2, var(--text)); font-size: .75rem; }

.gbaq-rail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 0; list-style: none; counter-reset: s; }
.gbaq-rail__step { position: relative; display: flex; flex-direction: column; gap: 8px; padding-top: 14px; color: var(--muted); font-size: .8125rem; font-weight: 500; }
.gbaq-rail__step::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; border-radius: 4px; background: var(--line-2); }
.gbaq-rail__step.is-complete::before { background: var(--amber); }
.gbaq-rail__step.is-current::before { background: var(--red); }
.gbaq-rail__step.is-current, .gbaq-rail__step.is-complete { color: var(--white); }
.gbaq-rail__n { font: 500 .6875rem/1 var(--body); letter-spacing: .1em; opacity: .7; }
.gbaq-rail__n::before { content: "0"; }
.gbaq-rail__step.is-complete .gbaq-rail__n::after { content: " ✓"; color: var(--amber); }
@media (max-width: 520px) { .gbaq-rail__label { font-size: .75rem; } }

.gbaq-panel { display: grid; gap: 16px; outline: none; }
.gbaq-quote > *, .gbaq-panel > * { min-width: 0; }
.gbaq-panel > h2 { margin: 6px 0 0; font-size: clamp(1.625rem, 1.2rem + 1.4vw, 2.25rem); }
.gbaq-panel__lede { margin: -6px 0 4px !important; color: var(--text-2, var(--text)); }
.gbaq-panel__pending { color: var(--muted); }

/* ---------- Cards, fields, inputs ---------- */
.gbaq-card { margin: 0; padding: 20px; min-width: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-card__title { display: flex; align-items: baseline; gap: 10px; margin: 0 0 14px; padding: 0; color: var(--white); font: 600 1.0625rem/1.3 var(--display); }
.gbaq-card__title small { color: var(--muted); font: 400 .8125rem/1 var(--body); }
fieldset.gbaq-card > legend.gbaq-card__title { float: left; width: 100%; }
fieldset.gbaq-card > legend + * { clear: both; }
.gbaq-card--fold { padding: 0; }
.gbaq-card--fold > summary { margin: 0; padding: 18px 20px; cursor: pointer; list-style: none; }
.gbaq-card--fold > summary::-webkit-details-marker { display: none; }
.gbaq-card--fold > summary::after { content: "+"; margin-left: auto; color: var(--muted); font-family: var(--body); }
.gbaq-card--fold[open] > summary::after { content: "–"; }
.gbaq-card__body { padding: 0 20px 20px; }

.gbaq-grid { display: grid; gap: 14px; align-items: start; margin-bottom: 18px; }
.gbaq-grid > .gbaq-f, .gbaq-grid > .gbaq-field { margin: 0 !important; }
.gbaq-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 480px) { .gbaq-grid--2 { grid-template-columns: 1fr; } }

.gbaq-f { display: grid; gap: 8px; margin-bottom: 18px; }
.gbaq-f:last-child { margin-bottom: 0; }
.gbaq-f__label, .gbaq-field label, .gbaq-upload__label { color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-hint { margin: 0 !important; color: var(--muted); font-size: .8125rem; line-height: 1.5; }
.gbaq-hint--warn { padding: 10px 12px; border-radius: var(--gq-r-sm); background: var(--amber-glow); color: var(--text-2, var(--text)); margin-bottom: 14px !important; }

.gbaq-input { position: relative; display: flex; align-items: center; }
.gbaq-workbench input[type="text"], .gbaq-workbench input[type="email"], .gbaq-workbench input[type="number"], .gbaq-workbench select {
  width: 100%; min-height: 48px; padding: 12px 14px;
  border: 1px solid var(--line-2); border-radius: var(--gq-r-sm); background: var(--bg);
  color: var(--white); font: 500 1rem/1.3 var(--body);
  transition: border-color .2s, box-shadow .2s;
}
.gbaq-input input { padding-right: 64px !important; }
.gbaq-input__unit { position: absolute; right: 14px; color: var(--muted); font: 500 .75rem/1 var(--body); pointer-events: none; }
.gbaq-workbench input:focus, .gbaq-workbench select:focus { outline: none; border-color: var(--amber); box-shadow: 0 0 0 3px var(--amber-glow); }

.gbaq-qty { display: grid; gap: 10px; }
.gbaq-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.gbaq-chip { min-height: 34px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 999px; background: transparent; color: var(--text-2, var(--text)); font: 500 .8125rem/1 var(--body); cursor: pointer; transition: border-color .2s, background-color .2s, color .2s; }
.gbaq-chip:hover { border-color: var(--white); color: var(--white); }
.gbaq-chip[aria-pressed="true"] { border-color: var(--red); background: var(--red); color: #fff; }

/* Radio chips (also legacy option buttons) */
.gbaq-options { display: flex; flex-wrap: wrap; gap: 6px; }
.gbaq-options__input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.gbaq-options__label { display: inline-flex; align-items: center; min-height: 38px; padding: 0 16px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--text-2, var(--text)); font-size: .875rem; font-weight: 500; cursor: pointer; transition: border-color .2s, background-color .2s, color .2s; }
.gbaq-options__label:hover { border-color: var(--white); color: var(--white); }
.gbaq-options__input:checked + .gbaq-options__label { border-color: var(--red); background: var(--red); color: #fff; }
.gbaq-options__input:focus-visible + .gbaq-options__label, .gbaq-options__input:focus-visible + .gbaq-swatch { outline: 2px solid var(--amber); outline-offset: 2px; }

.gbaq-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.gbaq-swatch { display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 0 14px 0 8px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--text-2, var(--text)); font-size: .8125rem; font-weight: 500; cursor: pointer; transition: border-color .2s; }
.gbaq-swatch__dot { width: 22px; height: 22px; border-radius: 50%; background: var(--swatch, transparent); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .25), 0 0 0 1px var(--line-2); }
.gbaq-swatch--none .gbaq-swatch__dot { background: repeating-linear-gradient(45deg, var(--line-2) 0 3px, transparent 3px 6px); }
.gbaq-swatch:hover { border-color: var(--white); }
.gbaq-options__input:checked + .gbaq-swatch { border-color: var(--red); color: var(--white); box-shadow: 0 0 0 1px var(--red); }

.gbaq-detected { display: flex; align-items: center; gap: 10px; margin: 0 !important; padding: 12px 16px; border-radius: var(--gq-r-sm); background: var(--bg); border: 1px solid var(--line); color: var(--text-2, var(--text)); font-size: .875rem; }
.gbaq-detected__dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: #2ea062; box-shadow: 0 0 0 4px rgba(46, 160, 98, .18); }

.gbaq-actions, .gbaq-spec__actions { display: flex; justify-content: flex-end; gap: 12px; margin: 4px 0 0 !important; }
.gbaq-btn--primary, .gbaq-workbench .meri-button { min-height: 52px; padding: 0 28px; font-size: .9375rem; }
.gbaq-workbench .meri-button span { transition: transform .2s; }
.gbaq-workbench .meri-button:hover span { transform: translateX(3px); }
.gbaq-link-button { padding: 0; border: 0; background: none; color: var(--white); font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.gbaq-link-button:hover { color: var(--amber); }

.gbaq-error { margin: 0 !important; padding: 12px 14px; border-radius: var(--gq-r-sm); border: 1px solid rgba(227, 38, 47, .4); background: rgba(227, 38, 47, .1); color: var(--error-text, #ffb3b6); font-size: .9375rem; }

/* ---------- Upload ---------- */
.gbaq-upload { display: grid; gap: 12px; }
.gbaq-dropzone {
  position: relative; display: grid; justify-items: center; gap: 8px; padding: clamp(32px, 5vw, 56px) 24px;
  border: 2px dashed var(--line-2); border-radius: var(--gq-r); text-align: center;
  background: radial-gradient(70% 70% at 50% 0%, var(--amber-glow), transparent 70%), var(--surface);
  transition: border-color .2s, background-color .2s;
}
.gbaq-upload[data-gbaq-upload-state="dragging"] .gbaq-dropzone, .gbaq-dropzone:hover { border-color: var(--amber); }
.gbaq-upload[data-gbaq-upload-state="selected"] .gbaq-dropzone { border-style: solid; border-color: #2ea062; }
.gbaq-dropzone__icon { display: grid; place-items: center; width: 64px; height: 76px; margin-bottom: 6px; border-radius: 10px 22px 10px 10px; background: var(--bg); border: 1px solid var(--line-2); color: var(--amber); font: 600 .8125rem/1 var(--body); letter-spacing: .08em; }
.gbaq-dropzone__title { color: var(--white); font: 600 1.25rem/1.3 var(--display); }
.gbaq-dropzone__or { color: var(--muted); font-size: .8125rem; }
.gbaq-dropzone__button { display: inline-flex; align-items: center; min-height: 44px; padding: 0 22px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--white); font-weight: 500; cursor: pointer; transition: border-color .2s; }
.gbaq-dropzone__button:hover { border-color: var(--white); }
.gbaq-dropzone__input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.gbaq-dropzone__limits { margin: 6px 0 0 !important; color: var(--muted); font: 500 .75rem/1.4 var(--body); }
.gbaq-dropzone__privacy { margin: 0 !important; color: var(--muted); font-size: .75rem; }
.gbaq-upload__help { margin: 0 !important; color: var(--muted); font-size: .8125rem; }
.gbaq-upload__extra { padding: 12px 16px; border: 1px solid var(--line); border-radius: var(--gq-r-sm); }
.gbaq-upload__extra summary { color: var(--text-2, var(--text)); font-size: .875rem; cursor: pointer; }
.gbaq-upload__extra[open] summary { margin-bottom: 10px; }
.gbaq-upload__extra input[type="file"] { display: block; margin: 8px 0; color: var(--text); font-size: .875rem; }
.gbaq-upload__go { display: flex; justify-content: flex-end; margin: 0 !important; }
.gbaq-upload__progress { height: 6px; border-radius: 6px; background: var(--line); overflow: hidden; }
.gbaq-upload__progress span { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--amber), var(--red)); transition: width .2s; }
.gbaq-upload__status { margin: 0 !important; color: var(--text-2, var(--text)); font-size: .875rem; }
.gbaq-upload__status:empty { display: none; }

.gbaq-modes { margin-top: 4px; }
.gbaq-modes__alt { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0 !important; color: var(--muted); font-size: .875rem; }
.gbaq-modes__go { display: inline; margin: 0; }
.gbaq-skip { display: flex; justify-content: flex-start; margin: 0; }
.gbaq-skip .meri-button { min-height: 48px; }

/* ---------- BOM mapping / analysis ---------- */
.gbaq-mapping__meta { color: var(--text-2, var(--text)); }
.gbaq-mapping { display: grid; gap: 14px; }
.gbaq-workbench table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.gbaq-workbench th, .gbaq-workbench td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.gbaq-workbench thead th { color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-mapping__table input { max-width: 90px; text-transform: uppercase; }
.gbaq-mapping__row.is-detected .gbaq-mapping__basis { color: #2ea062; }
.gbaq-mapping__basis { color: var(--muted); font-size: .8125rem; }
.gbaq-req { color: var(--red); }
.gbaq-placement { padding: 12px 14px; border-radius: var(--gq-r-sm); background: var(--bg); font-size: .875rem; }
.gbaq-basis { display: inline-block; padding: 2px 8px; border-radius: 999px; background: var(--surface-2, var(--bg)); color: var(--muted); font: 500 .6875rem/1.5 var(--body); text-transform: uppercase; }
.gbaq-basis.is-counted { background: rgba(46, 160, 98, .15); color: #2ea062; }
.gbaq-basis.is-derived, .gbaq-basis.is-warning { background: var(--amber-glow); color: var(--amber); }
.gbaq-analysis__counts { display: flex; gap: 10px; margin: 0; padding: 0; list-style: none; }
.gbaq-analysis__counts li { padding: 8px 12px; border-radius: var(--gq-r-sm); background: var(--bg); font-size: .875rem; }

/* ---------- Review ---------- */
.gbaq-totals { padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--gq-r); background: var(--surface); }
.gbaq-totals caption { padding: 16px 18px 6px; color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-align: left; text-transform: uppercase; caption-side: top; }
.gbaq-totals th, .gbaq-totals td { padding: 12px 18px; }
.gbaq-totals th { color: var(--text-2, var(--text)); font-weight: 400; }
.gbaq-totals td { color: var(--white); font-family: var(--body); text-align: right; }
.gbaq-totals__unit th, .gbaq-totals__unit td { color: var(--white); font-weight: 600; }
.gbaq-totals__grand th, .gbaq-totals__grand td { border-bottom: 0; background: var(--bg); color: var(--white); font: 600 1.375rem/1.2 var(--display); }
.gbaq-totals__grand td { color: var(--red); font-size: 1.75rem; }
.gbaq-totals__grand th span { color: var(--muted); font: 500 .75rem/1 var(--body); }
.gbaq-assumptions, .gbaq-exclusions, .gbaq-bom { padding: 18px 20px; border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-assumptions h3, .gbaq-exclusions h3, .gbaq-bom h3 { margin: 0 0 10px; font-size: 1rem; }
.gbaq-assumptions ul { margin: 0; padding-left: 18px; color: var(--text-2, var(--text)); font-size: .875rem; }

.gbaq-details { display: grid; gap: 14px; }
.gbaq-field { display: grid; gap: 8px; margin: 0 !important; }
.gbaq-field--consent { display: flex; align-items: flex-start; gap: 10px; color: var(--text-2, var(--text)); font-size: .875rem; }
.gbaq-field--consent label { color: var(--text-2, var(--text)); font: 400 .875rem/1.5 var(--body); letter-spacing: 0; text-transform: none; }
.gbaq-field--consent input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--red); }
.gbaq-field--consent a { color: var(--amber); }
.gbaq-details .meri-button { justify-self: end; }
.gbaq-confirmation { padding: 22px; border-radius: var(--gq-r); border: 1px solid rgba(46, 160, 98, .4); background: rgba(46, 160, 98, .1); }
.gbaq-confirmation h3 { margin: 0 0 8px; }

/* ---------- Sign-in ---------- */
.gbaq-quote--signin { padding: clamp(24px, 4vw, 44px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-quote__title { margin: 0; font-size: clamp(1.75rem, 1.2rem + 1.8vw, 2.5rem); line-height: 1.1; }
.gbaq-quote__lede { max-width: 52ch; color: var(--text-2, var(--text)); }
.gbaq-signin__steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; counter-reset: st; }
.gbaq-signin__steps li { position: relative; padding: 16px 16px 16px 52px; border-radius: var(--gq-r-sm); background: var(--bg); border: 1px solid var(--line); font-size: .875rem; counter-increment: st; }
.gbaq-signin__steps li::before { content: counter(st, decimal-leading-zero); position: absolute; left: 16px; top: 16px; color: var(--amber); font: 500 .75rem/1.6 var(--body); }
.gbaq-signin__steps strong { display: block; color: var(--white); }
.gbaq-signin__steps span { color: var(--muted); }
@media (max-width: 520px) { .gbaq-signin__steps { grid-template-columns: 1fr; } }
.gbaq-guest-start { margin: 0; }
.gbaq-signin__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; margin: 6px 0 0 !important; }
.gbaq-signin__why { color: var(--muted); font-size: .8125rem; }
.gbaq-signin__more summary { color: var(--text-2, var(--text)); font-size: .875rem; cursor: pointer; }
.gbaq-signin__more h3 { margin: 16px 0 6px; font-size: .9375rem; }
.gbaq-signin__more ul { margin: 0; padding-left: 18px; color: var(--muted); font-size: .8125rem; }

/* ---------- History ---------- */
.gbaq-history { margin-top: 8px; padding: 18px 20px; overflow-x: auto; border: 1px solid var(--line); border-radius: var(--gq-r); }
@media (max-width: 520px) { .gbaq-history { padding: 14px; } .gbaq-history th, .gbaq-history td { padding: 8px 6px; font-size: .75rem; } }
.gbaq-history h2 { margin: 0 0 10px; font-size: 1.0625rem; }
.gbaq-history__table th[scope="row"] { color: var(--white); font-family: var(--body); font-weight: 500; }

.gbaq-panel--expired { padding: 24px; border: 1px solid var(--line); border-radius: var(--gq-r); }
.gbaq-devaccess { padding: 10px 14px; border-radius: var(--gq-r-sm); background: var(--amber-glow); color: var(--amber); font-size: .8125rem; }

/* Layer toggles (Layers mode): an unchecked switch hides its layer and dims its row. */
.gbaq-viewer__check[data-layer="0"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="0"],
.gbaq-viewer__check[data-layer="1"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="1"],
.gbaq-viewer__check[data-layer="2"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="2"],
.gbaq-viewer__check[data-layer="3"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="3"],
.gbaq-viewer__check[data-layer="4"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="4"],
.gbaq-viewer__check[data-layer="5"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="5"],
.gbaq-viewer__check[data-layer="6"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="6"],
.gbaq-viewer__check[data-layer="7"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="7"],
.gbaq-viewer__check[data-layer="8"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="8"],
.gbaq-viewer__check[data-layer="9"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="9"],
.gbaq-viewer__check[data-layer="10"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="10"],
.gbaq-viewer__check[data-layer="11"]:not(:checked) ~ .gbaq-viewer__stage [data-layer="11"] {
	display: none;
}
.gbaq-viewer__check[data-layer="0"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(1),
.gbaq-viewer__check[data-layer="1"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(2),
.gbaq-viewer__check[data-layer="2"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(3),
.gbaq-viewer__check[data-layer="3"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(4),
.gbaq-viewer__check[data-layer="4"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(5),
.gbaq-viewer__check[data-layer="5"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(6),
.gbaq-viewer__check[data-layer="6"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(7),
.gbaq-viewer__check[data-layer="7"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(8),
.gbaq-viewer__check[data-layer="8"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(9),
.gbaq-viewer__check[data-layer="9"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(10),
.gbaq-viewer__check[data-layer="10"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(11),
.gbaq-viewer__check[data-layer="11"]:not(:checked) ~ .gbaq-viewer__panel .gbaq-viewer__row:nth-child(12) {
	opacity: 0.45;
}

.gbaq-suggest { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: -6px 0 16px !important; }
.gbaq-suggest strong { color: var(--white); }

/* ---------- Live price ---------- */
.gbaq-rail-price { transition: opacity .2s; }
.gbaq-rail-price.is-loading { opacity: .6; }
.gbaq-live__head { display: grid; gap: 4px; margin: 6px 0 16px; }
.gbaq-live__total { color: var(--red); font: 600 clamp(2rem, 1.4rem + 1.6vw, 2.75rem)/1 var(--display); letter-spacing: -.03em; }
.gbaq-live__sub { color: var(--muted); font: 500 .75rem/1.4 var(--body); letter-spacing: .04em; }
.gbaq-live__lines { margin: 0; border-top: 1px solid var(--line); }
.gbaq-live__row { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: .875rem; }
.gbaq-live__row dt { color: var(--text-2, var(--text)); }
.gbaq-live__row dd { margin: 0; color: var(--white); font-family: var(--body); }
.gbaq-live__row--total { border-bottom: 0; padding-top: 12px; }
.gbaq-live__row--total dt, .gbaq-live__row--total dd { color: var(--white); font: 600 1rem/1.3 var(--display); }
.gbaq-alt { display: block; margin-top: 2px; color: var(--muted); font: 500 .6875rem/1.2 var(--body); letter-spacing: 0; text-transform: none; }
.gbaq-options__input:checked + .gbaq-options__label .gbaq-alt, .gbaq-chip[aria-pressed="true"] .gbaq-alt { color: rgba(255, 255, 255, .85); }
.gbaq-options--chips .gbaq-options__label, .gbaq-chip { flex-direction: column; justify-content: center; line-height: 1.15; }
.gbaq-chip { min-height: 40px; }

/* ---------- Google sign-in ---------- */
.gbaq-google { display: inline-flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 24px 0 18px; border-radius: 999px; background: #fff; color: #1f1f1f; border: 1px solid #dadce0; font: 500 .9375rem/1 var(--body); box-shadow: 0 1px 2px rgba(0, 0, 0, .15); transition: box-shadow .2s, background-color .2s; }
.gbaq-google:hover { background: #f8f9fa; color: #1f1f1f; box-shadow: 0 2px 8px rgba(0, 0, 0, .25); }
.gbaq-google svg { flex: none; }
.gbaq-signin__why { flex-basis: 100%; }

/* ---------- Terms of use modal ---------- */
.gbaq-terms { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; padding: 16px; background: rgba(5, 7, 12, .72); }
.gbaq-terms__panel { display: flex; flex-direction: column; width: min(720px, 100%); max-height: min(88vh, 900px); padding: clamp(20px, 4vw, 32px); border: 1px solid var(--line); border-radius: 16px; background: var(--surface); color: var(--text); box-shadow: 0 30px 80px rgba(0, 0, 0, .5); }
.gbaq-terms__eyebrow { margin: 0 0 6px; font-family: var(--body); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--amber); }
.gbaq-terms__panel h2 { margin: 0 0 10px; font-family: var(--display); font-size: clamp(1.35rem, 3vw, 1.75rem); color: var(--white); }
.gbaq-terms__lead { margin: 0 0 12px; color: var(--white); }
.gbaq-terms__body { flex: 1; min-height: 120px; overflow-y: auto; margin: 4px 0 16px; padding: 4px 14px 4px 0; font-size: .9375rem; line-height: 1.6; }
.gbaq-terms__body h3, .gbaq-acct__termsbody h3 { margin: 18px 0 6px; font-size: 1rem; color: var(--white); font-family: var(--display); }
.gbaq-terms__body p { margin: 0 0 10px; }
.gbaq-terms__agree { display: flex; gap: 10px; align-items: flex-start; padding: 14px; border: 1px solid var(--amber-dim); border-radius: 10px; background: var(--amber-glow); color: var(--white); font-weight: 600; cursor: pointer; }
.gbaq-terms__agree input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--amber); flex: none; }
.gbaq-terms__actions { display: flex; gap: 16px; justify-content: flex-end; align-items: center; margin-top: 16px; }
.gbaq-terms__leave { color: var(--muted); font-size: .9375rem; }
.gbaq-terms__panel .gbaq-error { margin: 0 0 12px !important; }
.gbaq-terms-locked { filter: none; opacity: .35; pointer-events: none; user-select: none; }
html:has(.gbaq-terms) { overflow: hidden; }
@media (max-width: 600px) { .gbaq-terms { padding: 0; place-items: end stretch; } .gbaq-terms__panel { max-height: 92vh; border-radius: 16px 16px 0 0; } .gbaq-terms__actions { justify-content: space-between; } }
[data-theme="light"] .gbaq-terms { background: rgba(10, 15, 26, .45); }
[data-theme="light"] .gbaq-terms__panel { box-shadow: 0 30px 80px rgba(16, 24, 40, .25); }

/* ---------- Step 1: what to quote ---------- */
.gbaq-modepick { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 8px; }
.gbaq-modepick__form { margin: 0; display: flex; }
.gbaq-modepick__card { position: relative; display: flex; flex-direction: column; gap: 8px; width: 100%; min-height: 220px; padding: 22px 22px 52px; border: 1px solid var(--line-2); border-radius: var(--gq-r, 14px); background: var(--surface); color: var(--text); font: inherit; text-align: left; text-decoration: none; cursor: pointer; transition: border-color .2s, transform .2s, background-color .2s; }
.gbaq-modepick__card:hover, .gbaq-modepick__card:focus-visible { border-color: var(--amber); background: var(--amber-glow); transform: translateY(-2px); outline: none; }
.gbaq-modepick__tag { align-self: flex-start; padding: 4px 10px; border-radius: 999px; background: var(--amber-glow); color: var(--amber); font: 600 .6875rem/1.2 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-modepick__title { color: var(--white); font-family: var(--display); font-size: 1.35rem; line-height: 1.2; }
.gbaq-modepick__text { font-size: .9375rem; line-height: 1.5; }
.gbaq-modepick__files { margin-top: auto; color: var(--muted); font: .75rem/1.3 var(--body); }
.gbaq-modepick__go { position: absolute; right: 20px; bottom: 18px; color: var(--amber); font-size: 1.2rem; transition: transform .2s; }
.gbaq-modepick__card:hover .gbaq-modepick__go { transform: translateX(4px); }
.gbaq-modepick__card.is-both { border-color: var(--amber-dim); }
.gbaq-mode-picked { display: flex; gap: 12px; align-items: center; margin: 0 0 10px !important; font-size: .875rem; }
.gbaq-mode-picked span { padding: 5px 12px; border-radius: 999px; background: var(--amber-glow); border: 1px solid var(--amber-dim); color: var(--white); font-weight: 600; }
.gbaq-mode-picked a { color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 900px) { .gbaq-modepick { grid-template-columns: minmax(0, 1fr); } .gbaq-modepick__card { min-height: 0; } }


/* ---------- Layout v2: left = board + steps, right = price ---------- */
.gbaq-studio__main { display: grid; gap: 24px; min-width: 0; }
.gbaq-studio__price { display: grid; gap: 16px; min-width: 0; }
@media (min-width: 1080px) {
  .gbaq-studio { grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); gap: 32px; }
  .gbaq-studio__price { position: sticky; top: calc(var(--header-h, 76px) + 20px); }
}

/* ---------- Quote-type modal ---------- */
.gbaq-modal { position: fixed; inset: 0; z-index: 9990; display: grid; place-items: center; padding: 16px; background: rgba(5, 7, 12, .55); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); overflow-y: auto; }
.gbaq-modal__panel { width: min(980px, 100%); padding: clamp(22px, 4vw, 36px); border: 1px solid var(--line-2); border-radius: 18px; background: var(--surface); box-shadow: 0 30px 80px rgba(0, 0, 0, .45); }
.gbaq-modal__panel h2 { margin: 0 0 8px; font-size: clamp(1.5rem, 3vw, 2.1rem); }
.gbaq-modal__eyebrow { margin: 0 0 6px !important; color: var(--amber); font: 500 .75rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-modal__foot { margin: 18px 0 0 !important; text-align: center; font-size: .875rem; }
.gbaq-modal__foot a { color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
html:has(.gbaq-modal) { overflow: hidden; }
[data-theme="light"] .gbaq-modal { background: rgba(10, 15, 26, .32); }
[data-theme="light"] .gbaq-modal__panel { box-shadow: 0 30px 80px rgba(16, 24, 40, .22); }
@media (max-width: 600px) { .gbaq-modal { place-items: end stretch; padding: 0; } .gbaq-modal__panel { border-radius: 18px 18px 0 0; max-height: 94vh; overflow-y: auto; } }

/* ==========================================================================
   Layout v3 — compact, professional (LCSC / JLCPCB-style order form)
   Top bar with the quote id + stepper, spec rows (label | options), squared
   option buttons, an order-summary column with the step's main action.
   ========================================================================== */
.gbaq-workbench { --gq-r: 10px; --gq-r-sm: 6px; padding: 0 0 clamp(40px, 5vw, 64px); font-size: .9375rem; }

/* Top bar */
.gbaq-topbar { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px 28px; margin-bottom: 16px; padding: 12px 16px; border: 1px solid var(--line); border-radius: var(--gq-r); background: var(--surface); }
.gbaq-topbar__id { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.gbaq-topbar__kicker { color: var(--muted); font: 500 .6875rem/1 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-topbar__id strong { color: var(--white); font: 600 .9375rem/1.2 var(--body); }
.gbaq-pill { padding: 3px 8px; border-radius: 4px; background: var(--amber-glow); color: var(--amber); font: 500 .6875rem/1.4 var(--body); letter-spacing: .03em; }
.gbaq-topbar__actions { display: flex; align-items: center; gap: 8px; }
.gbaq-topbar__link, .gbaq-topbar__new { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 12px; border: 1px solid var(--line-2); border-radius: var(--gq-r-sm); color: var(--text-2); font-size: .8125rem; font-weight: 500; white-space: nowrap; }
.gbaq-topbar__link span { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--line); color: var(--white); font: 600 .6875rem/1 var(--body); }
.gbaq-topbar__new { border-color: var(--red); color: var(--white); }
.gbaq-topbar__link:hover, .gbaq-topbar__new:hover { border-color: var(--white); color: var(--white); }

/* Stepper (inside the top bar) */
.gbaq-topbar .gbaq-rail { display: flex; align-items: center; gap: 0; }
.gbaq-topbar .gbaq-rail__step { flex: 1 1 0; flex-direction: row; align-items: center; gap: 8px; padding: 0; min-width: 0; color: var(--muted); font-size: .8125rem; white-space: nowrap; }
.gbaq-topbar .gbaq-rail__step:last-child { flex: 0 0 auto; }
.gbaq-topbar .gbaq-rail__step::before { display: none; }
.gbaq-topbar .gbaq-rail__step:not(:last-child)::after { content: ""; flex: 1; min-width: 14px; height: 1px; margin: 0 10px; background: var(--line-2); }
.gbaq-topbar .gbaq-rail__step.is-complete:not(:last-child)::after { background: #2ea062; }
.gbaq-topbar .gbaq-rail__n { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid var(--line-2); border-radius: 50%; color: var(--muted); font: 600 .75rem/1 var(--body); letter-spacing: 0; opacity: 1; }
.gbaq-topbar .gbaq-rail__n::before, .gbaq-topbar .gbaq-rail__step.is-complete .gbaq-rail__n::after { content: none; }
.gbaq-topbar .gbaq-rail__step.is-current { color: var(--white); font-weight: 600; }
.gbaq-topbar .gbaq-rail__step.is-current .gbaq-rail__n { border-color: var(--red); background: var(--red); color: #fff; }
.gbaq-topbar .gbaq-rail__step.is-complete { color: var(--text-2); }
.gbaq-topbar .gbaq-rail__step.is-complete .gbaq-rail__n { border-color: #2ea062; background: rgba(46, 160, 98, .14); color: #2ea062; }
.gbaq-topbar .gbaq-rail__label { overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1100px) {
  .gbaq-topbar { grid-template-columns: minmax(0, 1fr) auto; }
  .gbaq-topbar .gbaq-rail { grid-column: 1 / -1; grid-row: 2; }
}
@media (max-width: 640px) {
  .gbaq-topbar .gbaq-rail__step:not(.is-current) .gbaq-rail__label { display: none; }
  .gbaq-topbar__link { display: none; }
}

/* Columns */
@media (min-width: 1080px) {
  .gbaq-studio { grid-template-columns: minmax(0, 1fr) 340px; gap: 20px; }
  .gbaq-studio__price { top: calc(var(--header-h, 76px) + 16px); }
}
.gbaq-studio__main { gap: 16px; }
.gbaq-studio__price { gap: 12px; }

/* Board stage — shorter, tool-like */
.gbaq-stage { padding: 10px; border-radius: var(--gq-r); }
.gbaq-stage__head { margin-bottom: 8px; }
.gbaq-stage__tabs { border-radius: var(--gq-r-sm); padding: 3px; }
.gbaq-stage__tab { min-width: 56px; padding: 7px 12px; border-radius: 4px; font-size: .75rem; }
.gbaq-stage__render, .gbaq-stage__3d { aspect-ratio: 16 / 9; max-height: 420px; border-radius: var(--gq-r-sm); }
.gbaq-stage__foot { margin-top: 6px; font-size: .75rem; }
.gbaq-stage--empty { min-height: 260px; padding: 24px; }
.gbaq-stage__ghost { width: min(240px, 60%); }
.gbaq-stage__checks summary { padding-top: 10px; font-size: .8125rem; }

/* Step panel */
.gbaq-quote { gap: 14px; }
.gbaq-panel { gap: 14px; }
.gbaq-panel > h2 { margin: 2px 0 0; font-size: 1.375rem; letter-spacing: -.01em; }
.gbaq-panel__lede { margin: -8px 0 0 !important; color: var(--muted); font-size: .875rem; }

/* Spec cards: header strip + label | control rows */
.gbaq-card { padding: 0; border-radius: var(--gq-r); overflow: hidden; }
fieldset.gbaq-card { padding: 0 0 2px; }
.gbaq-card__title, fieldset.gbaq-card > legend.gbaq-card__title, .gbaq-card--fold > summary {
  margin: 0; padding: 11px 16px; background: var(--surface-2); border-bottom: 1px solid var(--line);
  color: var(--white); font: 600 .875rem/1.3 var(--body); letter-spacing: 0;
}
.gbaq-card--fold:not([open]) > summary { border-bottom: 0; }
.gbaq-card__title small { font-size: .75rem; }
fieldset.gbaq-card > :not(legend), .gbaq-card__body > * { margin-left: 16px !important; margin-right: 16px !important; }
.gbaq-card__body { padding: 0 0 6px; }
.gbaq-card .gbaq-f { grid-template-columns: 150px minmax(0, 1fr); align-items: center; gap: 6px 16px; margin: 0; padding: 12px 0; border-bottom: 1px solid var(--line); }
.gbaq-card .gbaq-f:last-child, .gbaq-card .gbaq-f:last-of-type { border-bottom: 0; }
.gbaq-card .gbaq-f > .gbaq-hint { grid-column: 2; }
.gbaq-card .gbaq-f__label { color: var(--text); font: 500 .8125rem/1.35 var(--body); letter-spacing: 0; text-transform: none; }
.gbaq-card .gbaq-grid { gap: 0 24px; margin-bottom: 0; padding: 0; border-bottom: 1px solid var(--line); }
.gbaq-card .gbaq-grid .gbaq-f { border-bottom: 0; }
.gbaq-card .gbaq-grid--2 .gbaq-f:nth-child(2) { grid-template-columns: 70px minmax(0, 1fr); }
.gbaq-card .gbaq-hint--warn { margin: 12px 0 0 !important; }
.gbaq-card > .gbaq-hint, .gbaq-card__body > .gbaq-hint { padding: 10px 0; }
@media (max-width: 600px) {
  .gbaq-card .gbaq-f, .gbaq-card .gbaq-grid--2 .gbaq-f:nth-child(2) { grid-template-columns: 1fr; gap: 8px; }
  .gbaq-card .gbaq-f > .gbaq-hint { grid-column: 1; }
}

/* Inputs */
.gbaq-workbench input[type="text"], .gbaq-workbench input[type="email"], .gbaq-workbench input[type="number"], .gbaq-workbench select {
  min-height: 38px; padding: 7px 12px; border-radius: var(--gq-r-sm); font-size: .9375rem;
}
.gbaq-input input { padding-right: 56px !important; }
.gbaq-input__unit { right: 12px; font-size: .6875rem; }
.gbaq-input--qty { max-width: 220px; }
.gbaq-qty { gap: 8px; }

/* Option buttons: squared, compact, corner tick when chosen */
.gbaq-options, .gbaq-chips, .gbaq-swatches { gap: 6px; }
.gbaq-options__label, .gbaq-chip, .gbaq-swatch {
  position: relative; min-height: 34px; padding: 0 12px; border: 1px solid var(--line-2); border-radius: var(--gq-r-sm);
  background: var(--bg); color: var(--text-2); font-size: .8125rem; font-weight: 500;
}
.gbaq-chip { min-height: 30px; padding: 0 10px; font-size: .75rem; }
.gbaq-swatch { padding: 0 12px 0 8px; gap: 7px; }
.gbaq-swatch__dot { width: 16px; height: 16px; }
.gbaq-options__label:hover, .gbaq-chip:hover, .gbaq-swatch:hover { border-color: var(--red); color: var(--white); }
.gbaq-options__input:checked + .gbaq-options__label, .gbaq-chip[aria-pressed="true"], .gbaq-options__input:checked + .gbaq-swatch {
  border-color: var(--red); background: rgba(227, 38, 47, .1); color: var(--white); box-shadow: none;
}
.gbaq-options__input:checked + .gbaq-options__label::after, .gbaq-chip[aria-pressed="true"]::after, .gbaq-options__input:checked + .gbaq-swatch::after {
  content: ""; position: absolute; right: -1px; bottom: -1px; width: 0; height: 0;
  border-style: solid; border-width: 0 0 11px 11px; border-color: transparent transparent var(--red) transparent; border-bottom-right-radius: var(--gq-r-sm);
}
.gbaq-options__input:checked + .gbaq-options__label .gbaq-alt, .gbaq-chip[aria-pressed="true"] .gbaq-alt { color: var(--muted); }
[data-theme="light"] .gbaq-options__input:checked + .gbaq-options__label,
[data-theme="light"] .gbaq-chip[aria-pressed="true"],
[data-theme="light"] .gbaq-options__input:checked + .gbaq-swatch { background: rgba(227, 38, 47, .06); color: #b3131b; }

.gbaq-detected { padding: 9px 12px; border-radius: var(--gq-r-sm); font-size: .8125rem; }

/* Bottom actions */
.gbaq-actions, .gbaq-spec__actions { margin-top: 2px !important; }
.gbaq-btn--primary, .gbaq-workbench .meri-button { min-height: 44px; padding: 0 22px; border-radius: 8px; font-size: .875rem; }

/* Upload */
.gbaq-dropzone { gap: 6px; padding: 28px 20px; border-width: 1.5px; border-radius: var(--gq-r); background: var(--surface); }
.gbaq-dropzone__icon { width: 48px; height: 56px; margin-bottom: 2px; font-size: .6875rem; }
.gbaq-dropzone__title { font-size: 1.0625rem; }
.gbaq-dropzone__button { min-height: 38px; padding: 0 18px; border-radius: var(--gq-r-sm); font-size: .875rem; }
.gbaq-upload__extra { padding: 10px 14px; border-radius: var(--gq-r-sm); }
.gbaq-mode-picked span { border-radius: 4px; font-size: .8125rem; }

/* Tables: denser */
.gbaq-workbench th, .gbaq-workbench td { padding: 8px 10px; }
.gbaq-workbench table { font-size: .8125rem; }
.gbaq-totals, .gbaq-assumptions, .gbaq-exclusions, .gbaq-bom { border-radius: var(--gq-r); }
.gbaq-totals th, .gbaq-totals td { padding: 9px 16px; }
.gbaq-totals__grand th, .gbaq-totals__grand td { font-size: 1.125rem; }
.gbaq-totals__grand td { font-size: 1.5rem; }
.gbaq-assumptions, .gbaq-exclusions, .gbaq-bom { padding: 14px 16px; }
form.gbaq-details.gbaq-card { padding: 16px; }

/* Order summary column */
.gbaq-rail-price { padding: 16px 18px; border-radius: var(--gq-r); }
.gbaq-rail-price__title { margin-bottom: 10px; font-size: 1.0625rem; }
.gbaq-rail-price__line { padding: 9px 0; }
.gbaq-rail-price__label { font-size: .875rem; }
.gbaq-rail-price__amount { font-size: .9375rem; }
.gbaq-rail-price__note { font-size: .75rem; }
.gbaq-rail-price__line--total .gbaq-rail-price__label { font-size: 1rem; }
.gbaq-rail-price__line--total .gbaq-rail-price__amount { font-size: 1.5rem; }
.gbaq-live__total { font-size: 1.875rem; }
.gbaq-cta__button {
  display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 48px;
  border: 0; border-radius: 8px; background: var(--red); color: #fff; font: 600 .9375rem/1 var(--body); cursor: pointer;
  transition: filter .2s, transform .2s;
}
.gbaq-cta__button:hover { filter: brightness(1.08); }
.gbaq-cta__button:active { transform: translateY(1px); }
.gbaq-cta__button:disabled { opacity: .45; cursor: not-allowed; filter: none; }
.gbaq-trust { display: grid; gap: 6px; margin: 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--gq-r); list-style: none; color: var(--muted); font-size: .75rem; }
.gbaq-trust li { display: flex; gap: 8px; align-items: baseline; }
.gbaq-trust li .gbaq-ico { flex: none; width: 15px; height: 15px; color: #2ea062; transform: translateY(2px); }

/* ---------- Sign-in card (quote page + My account) ---------- */
.gbaq-quote--signin { padding: 0; border: 0; background: none; }
.gbaq-auth { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr); max-width: 1040px; margin: 0 auto; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); box-shadow: 0 24px 60px -32px rgba(0, 0, 0, .55); }
.gbaq-auth__aside { padding: clamp(24px, 3.5vw, 40px); border-right: 1px solid var(--line); background: radial-gradient(70% 60% at 0% 0%, var(--amber-glow), transparent 70%), linear-gradient(160deg, var(--surface-2), var(--bg-2, var(--bg))); }
.gbaq-auth__eyebrow { margin: 0 0 8px !important; color: var(--amber); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-auth__title { margin: 0; color: var(--white); font: 600 clamp(1.5rem, 1.1rem + 1.2vw, 2rem)/1.15 var(--display); letter-spacing: -.02em; }
.gbaq-auth__lede { margin: 10px 0 0 !important; color: var(--text); font-size: .9375rem; line-height: 1.55; }
.gbaq-auth__points { display: grid; gap: 14px; margin: 24px 0 0; padding: 0; list-style: none; }
.gbaq-auth__points li { display: flex; gap: 12px; align-items: flex-start; }
.gbaq-auth__icon { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--amber-dim); border-radius: 8px; background: var(--amber-glow); color: var(--amber); }
.gbaq-auth__points strong { display: block; color: var(--white); font-size: .9375rem; }
.gbaq-auth__badges { display: flex; flex-wrap: wrap; gap: 6px; margin: 24px 0 0 !important; }
.gbaq-auth__badges span { padding: 4px 9px; border: 1px solid var(--line-2); border-radius: 4px; color: var(--text-2); font: 500 .6875rem/1.4 var(--body); }
.gbaq-auth__box { display: flex; flex-direction: column; justify-content: center; gap: 0; padding: clamp(24px, 3.5vw, 40px); }
.gbaq-auth__lock { display: grid; place-items: center; width: 44px; height: 44px; margin-bottom: 14px; border-radius: 50%; background: rgba(46, 160, 98, .14); color: #2ea062; }
.gbaq-auth__box h3 { margin: 0 0 6px; color: var(--white); font: 600 1.25rem/1.25 var(--display); }
.gbaq-auth__dim { margin: 0 0 18px !important; color: var(--muted); font-size: .875rem; line-height: 1.5; }
.gbaq-auth__error { margin: 0 0 14px !important; padding: 10px 12px; border: 1px solid rgba(227, 38, 47, .4); border-radius: 8px; background: rgba(227, 38, 47, .1); color: var(--error-text, #ffb3b6); font-size: .875rem; }
.gbaq-auth__google { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; min-height: 50px; border: 1px solid #dadce0; border-radius: 8px; background: #fff; color: #1f1f1f; font: 600 .9375rem/1 var(--body); text-decoration: none; box-shadow: 0 1px 2px rgba(0, 0, 0, .12); transition: box-shadow .2s, background-color .2s; }
.gbaq-auth__google:hover { background: #f8f9fa; color: #1f1f1f; box-shadow: 0 4px 14px -6px rgba(0, 0, 0, .35); }
.gbaq-auth__google--plain { background: var(--red); border-color: var(--red); color: #fff; }
.gbaq-auth__box .gbaq-guest-start { margin-top: 10px; }
.gbaq-auth__facts { display: grid; gap: 6px; margin: 16px 0 0; padding: 0; list-style: none; color: var(--muted); font-size: .8125rem; }
.gbaq-auth__facts li { display: flex; gap: 8px; }
.gbaq-auth__facts li::before { content: "✓"; color: #2ea062; font-weight: 700; }
.gbaq-auth__legal { margin: 18px 0 0 !important; padding-top: 14px; border-top: 1px solid var(--line); color: var(--muted); font-size: .75rem; }
.gbaq-auth__legal a { color: var(--text-2); text-decoration: underline; text-underline-offset: 2px; }
.gbaq-auth__more { margin-top: 14px; font-size: .8125rem; }
.gbaq-auth__more summary { color: var(--text-2); cursor: pointer; }
.gbaq-auth__more h3 { margin: 12px 0 4px; font-size: .875rem; }
.gbaq-auth__more ul { margin: 0; padding-left: 18px; color: var(--muted); }
[data-theme="light"] .gbaq-auth { box-shadow: 0 24px 60px -36px rgba(16, 24, 40, .35); }
@media (max-width: 860px) {
  .gbaq-auth { grid-template-columns: 1fr; }
  .gbaq-auth__box { order: -1; border-bottom: 1px solid var(--line); }
  .gbaq-auth__aside { border-right: 0; }
}

/* v3 refinements */
.gbaq-topbar { grid-template-columns: minmax(0, 1fr) auto; padding: 0; gap: 0; }
.gbaq-topbar__id { padding: 12px 16px; }
.gbaq-topbar__actions { padding: 10px 16px; }
.gbaq-topbar .gbaq-rail { grid-column: 1 / -1; grid-row: 2; padding: 12px 16px; border-top: 1px solid var(--line); background: var(--bg-2, var(--bg)); border-radius: 0 0 var(--gq-r) var(--gq-r); }
.gbaq-topbar .gbaq-rail__label { overflow: visible; }
.gbaq-card .gbaq-hint--warn { margin: 12px 16px 0 !important; }
.gbaq-spec { display: grid; gap: 12px; }
.gbaq-auth__points li > div > span { display: block; color: var(--muted); font-size: .8125rem; line-height: 1.45; }
.gbaq-auth__points span.gbaq-auth__icon { display: grid; }
.gbaq-auth .gbaq-auth__box h3 { margin: 0 0 6px; font: 600 1.25rem/1.25 var(--display); }
@media (max-width: 640px) {
  .gbaq-topbar .gbaq-rail__step.is-current { flex: 0 1 auto; }
  .gbaq-topbar .gbaq-rail__step:not(:last-child)::after { min-width: 10px; margin: 0 6px; }
}
.gbaq-details .gbaq-grid { row-gap: 14px; margin-bottom: 0; }
.gbaq-auth__google.is-off { opacity: .5; cursor: not-allowed; box-shadow: none; }
.gbaq-auth__google.is-off:hover { background: #fff; box-shadow: none; }
.gbaq-auth__notice { margin: 10px 0 0 !important; padding: 10px 12px; border: 1px solid var(--amber-dim); border-radius: 8px; background: var(--amber-glow); color: var(--text-2); font-size: .8125rem; line-height: 1.5; }
.gbaq-auth__dev { display: inline-block; margin-top: 10px; color: var(--amber); font-size: .8125rem; text-decoration: underline; text-underline-offset: 3px; }
.gbaq-auth__staff { margin: 10px 0 0 !important; font-size: .75rem; }
.gbaq-auth__staff a { color: var(--muted); }
.gbaq-auth__staff a:hover { color: var(--white); }

/* ==========================================================================
   Board viewer pro: toolbar, display panel, measuring, full screen
   ========================================================================== */
.gbaq-stage__head { flex-wrap: nowrap; }
.gbaq-stage__meta { margin-left: auto; }
.gbaq-stage__tools { display: flex; gap: 2px; padding: 3px; border: 1px solid var(--line); border-radius: var(--gq-r-sm); background: var(--bg); }
.gbaq-tool { display: grid; place-items: center; width: 32px; height: 30px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--text-2); cursor: pointer; transition: background-color .15s, color .15s; }
.gbaq-tool:hover { background: var(--surface-2); color: var(--white); }
.gbaq-tool[aria-pressed="true"] { background: var(--red); color: #fff; }
.gbaq-stage[data-kind="layers"] .gbaq-tool[data-only], .gbaq-stage[data-kind="3d"] .gbaq-tool[data-only="2d"] { display: none; }
@media (max-width: 700px) {
  .gbaq-stage__head { flex-wrap: wrap; }
  .gbaq-stage__meta { order: 3; width: 100%; margin: 0; }
  .gbaq-stage__tools { margin-left: auto; }
  .gbaq-tool { width: 30px; }
}

.gbaq-stage__body { position: relative; }
.gbaq-stage__render { touch-action: none; cursor: grab; user-select: none; }
.gbaq-stage__render:active { cursor: grabbing; }
.gbaq-stage.is-measuring .gbaq-stage__render { cursor: crosshair; }
.gbaq-stage__render.no-grid { background: radial-gradient(60% 60% at 50% 45%, var(--amber-glow, rgba(242,169,59,.12)), transparent 70%), var(--bg); }
.gbaq-pz { display: grid; place-items: center; width: 100%; height: 100%; transform-origin: 0 0; }
.gbaq-stage[data-mode="layers"] .gbaq-stage__body { display: none; }
.gbaq-stage:not([data-kind="2d"]) .gbaq-stage__render { display: none; }
.gbaq-stage[data-kind="2d"] .gbaq-stage__render { display: grid; }

.gbaq-stage__readout { position: absolute; left: 10px; bottom: 10px; z-index: 2; max-width: calc(100% - 20px); padding: 5px 9px; border-radius: 4px; background: rgba(7, 9, 15, .78); color: #e6f6ff; font: 500 .75rem/1.3 var(--body); pointer-events: none; }
.gbaq-stage__readout:empty { display: none; }

.gbaq-stage__panel { position: absolute; top: 10px; right: 10px; z-index: 3; width: 236px; max-height: calc(100% - 20px); overflow: auto; padding: 4px 14px 14px; border: 1px solid var(--line-2); border-radius: var(--gq-r); background: var(--surface); box-shadow: 0 18px 40px -18px rgba(0, 0, 0, .6); font-size: .8125rem; }
.gbaq-stage__panel[hidden] { display: none; }
.gbaq-stage__ph { margin: 12px 0 6px !important; color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-stage[data-kind="3d"] .gbaq-stage__panel [data-only="2d"] { display: none; }
.gbaq-stage:not([data-kind="3d"]) .gbaq-stage__panel [data-only="3d"] { display: none; }
.gbaq-check { display: flex; align-items: center; gap: 8px; padding: 4px 0; color: var(--text-2); cursor: pointer; }
.gbaq-check input { width: 15px; height: 15px; margin: 0; accent-color: var(--red); }
.gbaq-stage__views { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; margin-bottom: 6px; }
.gbaq-stage__views .gbaq-chip { min-height: 28px; }
.gbaq-workbench .gbaq-stage__find { width: 100%; min-height: 32px; padding: 5px 10px; font: 500 .8125rem/1.2 var(--body); }
.gbaq-stage__found { margin: 6px 0 0 !important; color: var(--amber); font: 500 .75rem/1.4 var(--body); }
.gbaq-stage__found:empty { display: none; }
.gbaq-stage__info { display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; margin: 0; }
.gbaq-stage__info dt { color: var(--muted); }
.gbaq-stage__info dd { margin: 0; color: var(--white); font-family: var(--body); font-size: .75rem; text-align: right; }

.gbaq-stage__tip { position: absolute; z-index: 4; padding: 5px 9px; border-radius: 4px; background: rgba(7, 9, 15, .9); color: #fff; font: 500 .75rem/1.3 var(--body); white-space: nowrap; pointer-events: none; }
.gbaq-stage__tip strong { font-family: var(--body); color: #ffc44d; }
.gbaq-stage__tip[hidden] { display: none; }
.gbaq-stage__3d { position: relative; }

/* Full screen (native, or a fixed overlay where the API is missing, e.g. iPhone) */
.gbaq-stage.is-full { display: flex; flex-direction: column; width: 100%; height: 100%; max-width: none; margin: 0; padding: 12px; border-radius: 0; background: var(--bg-2, var(--bg)); }
.gbaq-stage.is-pseudo-full { position: fixed; inset: 0; z-index: 10000; }
.gbaq-stage.is-full .gbaq-stage__body { flex: 1; min-height: 0; }
.gbaq-stage.is-full .gbaq-stage__render, .gbaq-stage.is-full .gbaq-stage__3d { height: 100%; max-height: none; aspect-ratio: auto; }
.gbaq-stage.is-full .gbaq-stage__panel { top: 12px; right: 12px; max-height: calc(100% - 24px); }
.gbaq-stage.is-full .gbaq-stage__checks { display: none; }
.gbaq-stage.is-full[data-mode="layers"] .gbaq-viewer { flex: 1; overflow: auto; }
.gbaq-stage:fullscreen { background: var(--bg-2, var(--bg)); }
html.gbaq-noscroll { overflow: hidden; }
@media (max-width: 700px) {
  .gbaq-stage__panel { position: static; width: auto; max-height: none; margin-top: 8px; box-shadow: none; }
  .gbaq-stage.is-full .gbaq-stage__panel { position: absolute; top: auto; left: 8px; right: 8px; bottom: 8px; width: auto; max-height: 45%; }
}

/* ---------- Parts table + price summary (Phase 7, ENH-008) ---------- */
.gbaq-studio--wide { grid-template-columns: minmax(0, 1fr) !important; }
.gbaq-workbench .gbaq-bom { padding: 0; overflow: hidden; background: var(--surface); }
.gbaq-bom__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; padding: 14px 16px 0; }
.gbaq-workbench .gbaq-bom__head h3 { margin: 0; }
.gbaq-workbench .gbaq-bom__counts { margin: 0; color: var(--muted); font-size: .8125rem; }
.gbaq-bom__counts strong { color: var(--white); }
.gbaq-bom__notice { display: flex; gap: 10px; align-items: flex-start; margin: 12px 16px 0; padding: 10px 12px; border: 1px solid rgba(232, 160, 32, .45); border-radius: var(--gq-r-sm); background: rgba(232, 160, 32, .1); color: var(--text); font-size: .8125rem; line-height: 1.5; }
.gbaq-workbench .gbaq-bom__notice p { margin: 0; }
.gbaq-bom__notice strong { color: var(--white); }
.gbaq-bom__notice-icon { flex: none; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--amber); color: #111; font: 700 .75rem/1 var(--body); }
.gbaq-bom__tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; }
.gbaq-bom__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.gbaq-bom__chip { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 4px 12px; border: 1px solid var(--line-2, var(--line)); border-radius: 6px; background: var(--bg); color: var(--text-2, var(--text)); font: 500 .8125rem/1 var(--body); cursor: pointer; }
.gbaq-bom__chip span { padding: 2px 6px; border-radius: 4px; background: var(--surface-2, var(--surface)); color: var(--muted); font: 600 .6875rem/1.2 var(--body); }
.gbaq-bom__chip:hover { color: var(--white); border-color: var(--muted); }
.gbaq-bom__chip.is-on { border-color: var(--red); color: var(--white); box-shadow: inset 0 0 0 1px var(--red); }
.gbaq-bom__chip--unpriced span { background: rgba(232, 160, 32, .18); color: var(--amber); }
.gbaq-bom__chip--unmatched span { background: rgba(214, 48, 49, .15); color: var(--red); }
.gbaq-workbench .gbaq-bom__search { flex: 1 1 260px; max-width: 360px; min-height: 34px; padding: 6px 12px; font-size: .8125rem; }
.gbaq-bom__scroll { max-height: min(70vh, 640px); overflow: auto; border-top: 1px solid var(--line); }
.gbaq-workbench .gbaq-bom__table { width: 100%; min-width: 900px; margin: 0; border-collapse: separate; border-spacing: 0; font-size: .8125rem; }
.gbaq-bom__table th, .gbaq-bom__table td { padding: 8px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.gbaq-bom__table thead th { position: sticky; top: 0; z-index: 1; padding: 0; background: var(--surface-2, var(--surface)); white-space: nowrap; }
.gbaq-bom__table thead th button { display: flex; align-items: center; gap: 4px; width: 100%; padding: 9px 8px; border: 0; background: none; color: var(--muted); font: 600 .625rem/1.2 var(--body); letter-spacing: .04em; white-space: nowrap; text-transform: uppercase; text-align: inherit; cursor: pointer; }
.gbaq-bom__table thead th.is-num button { justify-content: flex-end; }
.gbaq-bom__table thead th button::after { content: '↕'; opacity: .35; font-size: .75rem; }
.gbaq-bom__table thead th[aria-sort="ascending"] button::after { content: '↑'; opacity: 1; color: var(--red); }
.gbaq-bom__table thead th[aria-sort="descending"] button::after { content: '↓'; opacity: 1; color: var(--red); }
.gbaq-bom__table tbody tr:nth-child(even) td { background: rgba(127, 127, 127, .04); }
.gbaq-bom__table tbody tr:hover td { background: rgba(127, 127, 127, .09); }
.gbaq-bom__table .is-num { text-align: right; font-family: var(--body); white-space: nowrap; }
.gbaq-bom__table td:first-child { color: var(--muted); }
.gbaq-bom__ref { min-width: 90px; max-width: 180px; overflow-wrap: anywhere; color: var(--text-2, var(--text)); }
.gbaq-bom__mpn { min-width: 130px; max-width: 200px; color: var(--white); font-family: var(--body); overflow-wrap: anywhere; }
.gbaq-bom__mpn small { display: block; margin-top: 2px; color: var(--muted); font: 400 .75rem/1.3 var(--body); }
.gbaq-bom__mpn em { color: var(--muted); font-family: var(--body); }
.gbaq-bom__desc { min-width: 160px; max-width: 260px; color: var(--text-2, var(--text)); }
.gbaq-bom__ext { color: var(--white); font-weight: 600; }
.gbaq-bom__table .gbaq-bom__tbd { color: var(--amber); font-family: var(--body); font-size: .75rem; white-space: normal; }
.gbaq-bom__table td:nth-child(6) { max-width: 140px; overflow-wrap: anywhere; color: var(--muted); }
.gbaq-workbench .gbaq-bom__foot { margin: 0; padding: 10px 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: .75rem; }
.gbaq-bom__moq { display: block; margin-top: 2px; color: var(--amber); font: 400 .6875rem/1.2 var(--body); }
.gbaq-workbench .gbaq-bom__none { margin: 0; padding: 18px 16px; color: var(--muted); text-align: center; }
.gbaq-badge { display: inline-block; padding: 3px 8px; border-radius: 4px; font: 600 .6875rem/1.2 var(--body); white-space: nowrap; }
.gbaq-badge--priced { background: rgba(46, 160, 98, .14); color: var(--ok-text, #3fbf7f); }
.gbaq-badge--unpriced { background: rgba(232, 160, 32, .16); color: var(--amber); }
.gbaq-badge--unmatched { background: rgba(214, 48, 49, .14); color: var(--red); }

.gbaq-sum { padding: 16px; border: 1px solid var(--line); border-radius: var(--gq-r); background: var(--surface); }
.gbaq-sum__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; margin-bottom: 12px; }
.gbaq-workbench .gbaq-sum__head h3 { margin: 0; }
.gbaq-sum__head span { color: var(--muted); font: 500 .6875rem/1.4 var(--body); letter-spacing: .08em; text-transform: uppercase; }
.gbaq-workbench .gbaq-sum__partial { margin: 0 0 12px; padding: 10px 12px; border-left: 3px solid var(--amber); border-radius: 4px; background: rgba(232, 160, 32, .1); font-size: .8125rem; line-height: 1.5; }
.gbaq-sum__cols { display: grid; gap: 12px; align-items: start; }
@media (min-width: 760px) { .gbaq-sum__cols { grid-template-columns: 1fr 1fr; gap: 20px; } }
.gbaq-workbench .gbaq-sum__block { width: 100%; margin: 0; border-collapse: collapse; font-size: .875rem; }
.gbaq-sum__block caption { padding: 0 0 6px; color: var(--muted); font: 600 .6875rem/1.4 var(--body); letter-spacing: .08em; text-align: left; text-transform: uppercase; }
.gbaq-sum__block th, .gbaq-sum__block td { padding: 7px 0; border-bottom: 1px dashed var(--line); font-weight: 400; }
.gbaq-sum__block th { color: var(--text-2, var(--text)); text-align: left; }
.gbaq-sum__block th small { margin-left: 6px; color: var(--amber); font-size: .75rem; }
.gbaq-sum__block td { color: var(--white); font-family: var(--body); text-align: right; white-space: nowrap; }
.gbaq-sum__block tfoot th, .gbaq-sum__block tfoot td { border-bottom: 0; border-top: 1px solid var(--line-2, var(--line)); color: var(--white); font-weight: 600; }
.gbaq-sum__grand { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding: 14px 16px; border-radius: var(--gq-r-sm); background: var(--bg); }
.gbaq-sum__grand span { color: var(--white); font: 600 1.125rem/1.2 var(--display); }
.gbaq-sum__grand small { display: block; margin-top: 3px; color: var(--muted); font: 400 .75rem/1.3 var(--body); }
.gbaq-sum__grand strong { color: var(--red); font: 700 clamp(1.375rem, 3vw, 1.75rem)/1 var(--display); white-space: nowrap; }
.gbaq-sum__grand.is-partial strong { color: var(--amber); }

/* Price refreshed after a rate change (FEAT-005) */
.gbaq-toast { position: fixed; left: 50%; bottom: 24px; z-index: 9999; padding: 10px 18px; border-radius: 999px; background: #111827; color: #fff; font: 500 .875rem/1.3 var(--body, sans-serif); box-shadow: 0 10px 30px rgba(0, 0, 0, .3); transform: translateX(-50%); transition: opacity .5s, transform .5s; }
.gbaq-toast.is-out { opacity: 0; transform: translate(-50%, 10px); }

/* ==========================================================================
   Phase 9 (ENH-009): icons, option explainers, drawings, assembly card,
   illustrated quote-type cards.
   ========================================================================== */
.gbaq-workbench { --gq-ok: #2ea062; --gq-info: #3b82f6; }
.gbaq-ico { width: 18px; height: 18px; flex: none; }

/* Card titles with an icon tile */
.gbaq-card__title { align-items: center; }
.gbaq-card__ico { display: grid; place-items: center; width: 30px; height: 30px; flex: none; border-radius: 8px; background: rgba(214, 48, 49, .1); color: var(--red); }
.gbaq-card__ico .gbaq-ico { width: 17px; height: 17px; }
.gbaq-card__txt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
.gbaq-card--fold > summary { display: flex; align-items: center; gap: 10px; }
.gbaq-sum__head h3, .gbaq-bom__head h3, .gbaq-rail-price__title { display: flex; align-items: center; gap: 8px; }
.gbaq-sum__head h3 .gbaq-ico, .gbaq-bom__head h3 .gbaq-ico, .gbaq-rail-price__title .gbaq-ico { color: var(--red); }
.gbaq-sum__block caption { display: flex; align-items: center; gap: 6px; }
.gbaq-sum__block caption .gbaq-ico { width: 14px; height: 14px; }

/* Label row with the explainer button */
.gbaq-f__head { display: flex; align-items: center; gap: 6px; min-width: 0; }
.gbaq-x { position: relative; display: inline-flex; }
.gbaq-x__btn { display: grid; place-items: center; width: 22px; height: 22px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; transition: color .15s, background-color .15s; }
.gbaq-x__btn .gbaq-ico { width: 16px; height: 16px; }
.gbaq-x__btn:hover, .gbaq-x.is-open .gbaq-x__btn, .gbaq-x__btn:focus-visible { color: var(--red); background: rgba(214, 48, 49, .1); outline: none; }
.gbaq-x__pop { position: absolute; top: calc(100% + 8px); left: -12px; z-index: 30; display: none; width: 320px; padding: 14px; border: 1px solid var(--line-2, var(--line)); border-radius: 12px; background: var(--surface); box-shadow: 0 18px 50px rgba(0, 0, 0, .28); color: var(--text); font: 400 .8125rem/1.5 var(--body); text-transform: none; letter-spacing: 0; }
.gbaq-x__pop.is-left { left: auto; right: -12px; }
.gbaq-x.is-open .gbaq-x__pop { display: grid; gap: 6px; }
@media (hover: hover) and (pointer: fine) { .gbaq-x:hover .gbaq-x__pop { display: grid; gap: 6px; } }
.gbaq-x__art { display: block; margin: -2px 0 4px; padding: 8px; border-radius: 8px; background: var(--bg); }
.gbaq-x__title { color: var(--white); font: 600 .9375rem/1.3 var(--display); }
.gbaq-x__about { color: var(--text); }
.gbaq-x__tip { color: var(--muted); }
.gbaq-x__price { display: inline-flex; align-items: center; gap: 6px; justify-self: start; margin-top: 2px; padding: 3px 9px; border-radius: 999px; font-size: .75rem; font-weight: 600; }
.gbaq-x__price .gbaq-ico { width: 13px; height: 13px; }
.gbaq-x__price.is-cost { background: rgba(232, 160, 32, .14); color: var(--amber); }
.gbaq-x__price.is-free { background: rgba(46, 160, 98, .14); color: var(--gq-ok); }
@media (max-width: 600px) {
  .gbaq-x__pop, .gbaq-x__pop.is-left { position: fixed; top: auto; right: 12px; bottom: 12px; left: 12px; width: auto; max-height: 70vh; overflow: auto; }
}

/* Technical drawings (follow light / dark) */
.gbaq-art { display: block; width: 100%; height: auto; }
.gbaq-art .a-fr { fill: #c9b47a; }
.gbaq-art .a-cu { fill: #c8862f; }
.gbaq-art .a-cu-ln { fill: none; stroke: #c8862f; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.gbaq-art .a-mk { fill: #1d6b3a; }
.gbaq-art .a-au { fill: #e2b63c; }
.gbaq-art .a-al { fill: #b9c0c7; }
.gbaq-art .a-rf { fill: #e7dcc8; }
.gbaq-art .a-hasl { fill: #c7cbd1; }
.gbaq-art .a-hole { fill: var(--bg); }
.gbaq-art .a-chip { fill: #2a2f3a; }
.gbaq-art .a-steel { fill: #9aa3ad; }
.gbaq-art .a-coat { fill: rgba(80, 160, 255, .28); stroke: #5aa0ff; stroke-width: 1; }
.gbaq-art .a-esd { fill: rgba(150, 160, 175, .35); stroke: #8a95a5; stroke-width: 1.5; }
.gbaq-art .a-ok { fill: rgba(46, 160, 98, .18); }
.gbaq-art .a-ok-ln { fill: none; stroke: #2ea062; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.gbaq-art .a-hl { fill: #e8a020; }
.gbaq-art .a-hl-ln { fill: none; stroke: #e8a020; stroke-width: 2; stroke-dasharray: 4 3; }
.gbaq-art .a-ray { fill: none; stroke: rgba(90, 160, 255, .7); stroke-width: 2; stroke-dasharray: 3 3; }
.gbaq-art .a-ln { fill: none; stroke: var(--muted); stroke-width: 2; stroke-linecap: round; }
.gbaq-art .a-dim { fill: none; stroke: var(--red); stroke-width: 1.5; }
.gbaq-art .a-sk { fill: #f2f2f2; font: 600 9px/1 var(--mono, monospace); }
.gbaq-art .a-sk-ln { fill: none; stroke: #f2f2f2; stroke-width: 1.5; }
.gbaq-art .a-tx { fill: var(--muted); font: 500 9px/1 var(--body, sans-serif); }
.gbaq-art .a-tx--b { fill: var(--white); font-weight: 700; }

/* Assembly options card (review step) */
.gbaq-asm { margin: 0; }
.gbaq-asm__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
.gbaq-card .gbaq-asm__grid .gbaq-f { grid-template-columns: 1fr; gap: 8px; }
@media (max-width: 760px) { .gbaq-asm__grid { grid-template-columns: 1fr; } }
.gbaq-workbench .gbaq-asm__state { min-height: 1.2em; margin: 10px 0 0; color: var(--muted); font-size: .8125rem; }
.gbaq-asm__state.is-ok { color: var(--gq-ok); }
.gbaq-asm__state.is-err { color: var(--red); }
.gbaq-asm__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px 20px; margin: 0; }
.gbaq-asm__list div { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px dashed var(--line); }
.gbaq-asm__list dt { color: var(--muted); }
.gbaq-asm__list dd { margin: 0; color: var(--white); font-weight: 500; text-align: right; }

/* Illustrated quote-type cards */
.gbaq-modepick__card { min-height: 330px; padding-top: 168px; overflow: hidden; isolation: isolate; }
.gbaq-modepick__img { position: absolute; inset: 0; z-index: -2; background: center / cover no-repeat; clip-path: polygon(0 0, 100% 0, 100% 36%, 0 50%); transition: clip-path .55s cubic-bezier(.2, .7, .2, 1), filter .55s; }
.gbaq-modepick__card::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(8, 10, 16, .1) 0%, rgba(8, 10, 16, .55) 45%, rgba(8, 10, 16, .9) 100%); opacity: 0; transition: opacity .45s; }
.gbaq-modepick__ico { position: absolute; top: 14px; left: 14px; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: rgba(255, 255, 255, .92); color: var(--red); box-shadow: 0 6px 16px rgba(0, 0, 0, .2); }
.gbaq-modepick__ico .gbaq-ico { width: 20px; height: 20px; }
.gbaq-modepick__card:hover .gbaq-modepick__img, .gbaq-modepick__card:focus-visible .gbaq-modepick__img { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.gbaq-modepick__card:hover::before, .gbaq-modepick__card:focus-visible::before { opacity: 1; }
.gbaq-modepick__card:hover, .gbaq-modepick__card:focus-visible { background: var(--surface); }
.gbaq-modepick__card:hover .gbaq-modepick__title, .gbaq-modepick__card:focus-visible .gbaq-modepick__title,
.gbaq-modepick__card:hover .gbaq-modepick__text, .gbaq-modepick__card:focus-visible .gbaq-modepick__text { color: #fff; }
.gbaq-modepick__card:hover .gbaq-modepick__files, .gbaq-modepick__card:focus-visible .gbaq-modepick__files { color: rgba(255, 255, 255, .75); }
.gbaq-modepick__card:hover .gbaq-modepick__tag, .gbaq-modepick__card:focus-visible .gbaq-modepick__tag { background: rgba(255, 255, 255, .16); color: #fff; }
.gbaq-modepick__title, .gbaq-modepick__text, .gbaq-modepick__files, .gbaq-modepick__tag { transition: color .3s, background-color .3s; }
@media (max-width: 900px) {
  .gbaq-modepick__card { min-height: 0; padding: 20px 20px 48px 46%; }
  .gbaq-modepick__img { clip-path: polygon(0 0, 44% 0, 34% 100%, 0 100%); }
  .gbaq-modepick__ico { top: auto; bottom: 12px; }
}
@media (prefers-reduced-motion: reduce) { .gbaq-modepick__img, .gbaq-modepick__card::before { transition: none; } }
/* Explainers must escape their card: cards stay visible, header keeps the rounded top. */
.gbaq-card { overflow: visible; }
.gbaq-card__title, fieldset.gbaq-card > legend.gbaq-card__title, .gbaq-card--fold > summary { border-radius: var(--gq-r) var(--gq-r) 0 0; }
.gbaq-card--fold:not([open]) > summary { border-radius: var(--gq-r); }
.gbaq-f:has(.gbaq-x.is-open), .gbaq-f:hover { position: relative; z-index: 31; }
.gbaq-modepick__card { padding-top: 186px; }

/* Explainer animation (ENH-009): pop in, parts slide in one after another,
   lines draw themselves, a few drawings keep a gentle motion. Restarts on
   every open (the popover goes from display:none to grid). */
@keyframes gbaqPopIn { from { opacity: 0; transform: translateY(6px) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes gbaqPartIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes gbaqDraw { from { stroke-dashoffset: 320; } to { stroke-dashoffset: 0; } }
@keyframes gbaqPulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
@keyframes gbaqFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes gbaqTextIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

.gbaq-x__pop { transform-origin: 24px 0; }
.gbaq-x.is-open .gbaq-x__pop, .gbaq-x:hover .gbaq-x__pop { animation: gbaqPopIn .28s cubic-bezier(.2, .8, .2, 1) both; }
.gbaq-x__pop .gbaq-x__title, .gbaq-x__pop .gbaq-x__about, .gbaq-x__pop .gbaq-x__tip, .gbaq-x__pop .gbaq-x__price { animation: gbaqTextIn .35s ease both; }
.gbaq-x__pop .gbaq-x__title { animation-delay: .18s; }
.gbaq-x__pop .gbaq-x__about { animation-delay: .24s; }
.gbaq-x__pop .gbaq-x__tip { animation-delay: .3s; }
.gbaq-x__pop .gbaq-x__price { animation-delay: .38s; }

.gbaq-x__pop .gbaq-art > * { transform-box: fill-box; transform-origin: center; animation: gbaqPartIn .4s cubic-bezier(.2, .8, .2, 1) both; }
.gbaq-x__pop .gbaq-art > :nth-child(1) { animation-delay: .06s; }
.gbaq-x__pop .gbaq-art > :nth-child(2) { animation-delay: .12s; }
.gbaq-x__pop .gbaq-art > :nth-child(3) { animation-delay: .18s; }
.gbaq-x__pop .gbaq-art > :nth-child(4) { animation-delay: .24s; }
.gbaq-x__pop .gbaq-art > :nth-child(5) { animation-delay: .3s; }
.gbaq-x__pop .gbaq-art > :nth-child(6) { animation-delay: .36s; }
.gbaq-x__pop .gbaq-art > :nth-child(7) { animation-delay: .42s; }
.gbaq-x__pop .gbaq-art > :nth-child(8) { animation-delay: .48s; }
.gbaq-x__pop .gbaq-art > :nth-child(9) { animation-delay: .54s; }
.gbaq-x__pop .gbaq-art > :nth-child(n+10) { animation-delay: .6s; }
.gbaq-x__pop .gbaq-art text { animation-name: gbaqTextIn; }

/* Lines draw themselves */
.gbaq-x__pop .gbaq-art .a-dim, .gbaq-x__pop .gbaq-art .a-cu-ln, .gbaq-x__pop .gbaq-art .a-ln,
.gbaq-x__pop .gbaq-art .a-ok-ln, .gbaq-x__pop .gbaq-art .a-sk-ln {
  stroke-dasharray: 320; animation: gbaqDraw .9s .35s cubic-bezier(.4, 0, .2, 1) both;
}
/* Living details */
.gbaq-x__pop .gbaq-art .a-ray { animation: gbaqPulse 1.4s .5s ease-in-out infinite both; }
.gbaq-x__pop .gbaq-art .a-hl-ln { stroke-dasharray: 4 3; animation: gbaqPulse 1.2s .5s ease-in-out infinite both; }
.gbaq-x__pop .gbaq-art g.a-hl { animation: gbaqPulse 1.6s .7s ease-in-out infinite both; }
.gbaq-x__pop .gbaq-art .a-coat { animation: gbaqPartIn .5s .4s both, gbaqPulse 2.4s 1s ease-in-out infinite; }
.gbaq-x__pop .gbaq-art .a-chip { animation: gbaqPartIn .4s .3s both, gbaqFloat 2.6s 1s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .gbaq-x__pop, .gbaq-x__pop *, .gbaq-x__pop .gbaq-art * { animation: none !important; }
}
@keyframes gbaqFade { from { opacity: 0; } to { opacity: 1; } }
/* A CSS transform would replace an SVG transform attribute: fade only. */
.gbaq-x__pop .gbaq-art > [transform] { animation-name: gbaqFade; }

/* Technical codes keep a monospace face (ENH-010): part numbers, designators. */
.gbaq-bom__mpn, .gbaq-bom__ref, .gbaq-stage__tip strong, .gbaq-workbench .gbaq-stage__find, .gbaq-art .a-sk, .gbaq-viewer__file { font-family: var(--mono) !important; }
.gbaq-bom__mpn small { font-family: var(--body) !important; }

/* BUG-003: the pan/zoom layer fills the stage absolutely, so the board's 86 %
   box is measured against the stage's real height (aspect-ratio + max-height)
   instead of the SVG's own height — the whole board always fits. */
.gbaq-stage__render { position: relative; }
.gbaq-pz { position: absolute; inset: 0; width: auto; height: auto; }
.gbaq-pz > svg { width: 88%; height: 88%; max-width: 88%; max-height: 88%; }
.gbaq-trust a { color: inherit; text-decoration: underline; text-underline-offset: 3px; } .gbaq-trust a:hover { color: var(--red); }
