/* the new look: builder area — "Build & test" inside the Dashboard (static/builder.js).
   Class-only, every class .u-builder-…, on top of qe-ui.css. Colours only through --u-* tokens. */

/* the builder's root: the phone gutter lives here once, so the library's own
   side paddings inside it are taken off (they would double it) */
.u-builder{ padding:0 var(--u-pad); min-width:0; }
@media (min-width:1024px){ .u-builder{ padding:0; } }
.u-builder .u-head, .u-builder .u-tabs, .u-builder .u-rows, .u-builder .u-stats, .u-builder .u-tablewrap{ padding-left:0; padding-right:0; }
.u-builder .u-note, .u-builder .u-empty{ margin-left:0; margin-right:0; }
.u-builder .u-tabs{ padding-top:14px; }
.u-builder-view{ min-width:0; padding-bottom:8px; }
/* the menu row "Build & test" is the page you are on */
body:has(#qeBuilder) .u-nav[onclick^="openBuilder"]{ background:var(--u-green-t); color:var(--u-green); }

/* ── type ── */
.u-builder-step{ margin:26px 0 2px; font-size:13px; font-weight:600; color:var(--u-t3); }
.u-builder-h2{ margin:2px 0 6px; font-size:26px; font-weight:700; letter-spacing:-.02em; line-height:1.15; }
.u-builder-lead{ margin:0; font-size:15.5px; line-height:1.5; color:var(--u-t2); max-width:72ch; }
.u-builder-h3{ margin:30px 0 6px; font-size:19px; font-weight:700; letter-spacing:-.01em; line-height:1.25; }
.u-builder-muted{ margin:0; font-size:14.5px; line-height:1.5; color:var(--u-t3); }
.u-builder-fine{ margin:16px 0 0; font-size:13px; line-height:1.5; color:var(--u-t3); max-width:80ch; }
.u-builder-when{ font-size:13px; line-height:1.4; color:var(--u-t3); }
.u-builder-eyebrow{ font-size:13px; font-weight:600; color:var(--u-t3); }
.u-builder-title{ margin:4px 0 0; font-size:22px; font-weight:700; letter-spacing:-.015em; line-height:1.2; overflow-wrap:anywhere; }
.u-builder-hint{ font-size:13.5px; color:var(--u-t3); }
.u-builder-fixed{ font-size:15.5px; font-weight:600; }
/* the old page's small-screen rule shrinks every h2 on the page; these keep their size */
@media (max-width:820px){
  #pageScroll .u-builder .u-builder-h2{ font-size:24px !important; }
  #pageScroll .u-builder .u-builder-resname{ font-size:17px !important; }
}

/* ── rows of buttons, the algo line ── */
.u-builder-row{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:14px; min-width:0; }
@media (max-width:699px){ .u-builder-row > .u-btn.primary{ flex:1 1 auto; } }
@media (max-width:1023px){ .u-builder .u-btn.sm{ min-height:44px; } }
.u-builder-for{ display:flex; flex-wrap:wrap; align-items:center; gap:2px 10px; margin-top:12px; font-size:14.5px; color:var(--u-t2); min-width:0; }
.u-builder-for > .u-dot{ color:var(--u-t3); }
.u-builder-for > .u-dot.u-up{ color:var(--u-green); }
.u-builder-for-t{ flex:1 1 240px; min-width:0; line-height:1.45; padding:6px 0; overflow-wrap:anywhere; }
.u-builder-for-t b{ color:var(--u-t1); }
.u-builder-for-acts{ display:flex; flex-wrap:wrap; gap:0 2px; }
.u-builder-for .u-btn.ghost{ padding:0 8px; }
@media (max-width:1023px){ .u-builder-for .u-btn.ghost{ padding:0 16px 0 0; } }

/* ── step 1: describe it | upload a file ── */
.u-builder-cols{ display:flex; flex-direction:column; min-width:0; }
.u-builder-colmain, .u-builder-colside{ min-width:0; }
@media (min-width:1100px){
  .u-builder-cols{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:44px; align-items:start; }
  .u-builder-colside{ position:sticky; top:92px; }
}
.u-builder .u-textarea{ min-height:112px; }
.u-builder-file{ position:relative; display:flex; align-items:center; gap:12px; min-height:58px; margin-top:12px; padding:6px 14px 6px 6px;
                 border-radius:14px; border:1px dashed var(--u-line2); cursor:pointer; min-width:0; }
.u-builder-file:hover{ background:var(--u-raise); }
.u-builder-file:focus-within{ border-color:var(--u-green); }
.u-builder-file input{ position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.u-builder-filebtn{ flex:none; display:inline-flex; align-items:center; min-height:44px; padding:0 14px; border-radius:10px;
                    background:var(--u-raise2); font-size:14.5px; font-weight:600; color:var(--u-t1); }
.u-builder-filename{ font-size:14.5px; color:var(--u-t3); }

/* the AI line on step 1: quiet, one line */
.u-builder-ai{ display:flex; flex-wrap:wrap; align-items:center; gap:2px 8px; margin-top:4px; font-size:14px; font-weight:600; color:var(--u-green); min-width:0; }
.u-builder-ai > span:nth-child(2){ white-space:nowrap; }
.u-builder-ai-m{ font-weight:500; color:var(--u-t3); max-width:100%; }

/* ── notes: the dot and the colour carry the kind; a fix sits under the message ── */
.u-builder-note .u-dot{ margin-top:7px; }
.u-builder-notebody{ min-width:0; overflow-wrap:anywhere; }
.u-builder-fix{ display:block; margin-top:4px; font-size:13.5px; opacity:.85; }
.u-builder-tipnote{ background:var(--u-blue-t); color:var(--u-blue); }

/* ── the describe flow: questions, "here's your algo", the self-test ── */
.u-builder-card{ margin-top:20px; min-width:0; }
.u-builder-stack{ display:flex; flex-direction:column; min-width:0; }
.u-builder-checklist{ border-top:1px solid var(--u-line); padding-top:18px; margin-top:22px; }
.u-builder-story{ margin:10px 0 2px; font-size:16px; line-height:1.55; color:var(--u-t1); }
.u-builder-qa{ display:flex; flex-direction:column; gap:8px; margin-top:14px; }
.u-builder-q, .u-builder-a{ max-width:88%; padding:10px 14px; font-size:15px; line-height:1.45; border-radius:16px; overflow-wrap:anywhere; }
.u-builder-q{ align-self:flex-start; background:var(--u-raise); color:var(--u-t1); border-bottom-left-radius:4px; }
.u-builder-a{ align-self:flex-end; background:var(--u-green-t); color:var(--u-green); font-weight:600; border-bottom-right-radius:4px; }
.u-builder-typed{ margin-top:12px; }
/* a question's answer buttons (the worker's spec.question_choices): a stand-in rule is a sentence, so it wraps in its
   button instead of running off a phone's screen (.u-btn keeps a button on one line) */
.u-builder-qchoice{ white-space:normal; text-align:left; justify-content:flex-start; max-width:100%; min-width:0;
  padding-top:10px; padding-bottom:10px; line-height:1.3; overflow-wrap:anywhere; }
.u-builder-typed-fb{ font-size:13.5px; min-height:20px; margin-top:6px; color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-typed-fb.u-builder-ok{ color:var(--u-green); }
.u-builder-typed-fb.u-builder-bad{ color:var(--u-red); }
/* a typed value that cannot be used, said under its box (friendly-errors) */
.u-builder-fielderr{ flex-basis:100%; width:100%; font-size:13.5px; margin-top:6px; color:var(--u-red); overflow-wrap:anywhere; }

.u-builder-algo{ margin-top:8px; min-width:0; }
.u-builder-algo-row{ display:grid; grid-template-columns:minmax(0,1fr); gap:3px; padding:12px 0; border-bottom:1px solid var(--u-line); min-width:0; }
@media (min-width:700px){ .u-builder-algo-row{ grid-template-columns:210px minmax(0,1fr); gap:16px; } }
.u-builder-k{ font-size:13.5px; font-weight:600; color:var(--u-t3); padding-top:1px; }
.u-builder-v{ font-size:15.5px; line-height:1.45; display:flex; flex-direction:column; gap:4px; min-width:0; overflow-wrap:anywhere; }
.u-builder-na{ color:var(--u-t3); }
.u-builder-algo-more{ display:block; margin-top:24px; }
.u-builder-rules{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; min-width:0; }
.u-builder-rules li{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px; min-width:0; overflow-wrap:anywhere; }
.u-builder-plain{ margin-top:6px; }
.u-builder-plain li{ color:var(--u-t2); font-size:15px; line-height:1.45; }
.u-builder-badge{ display:inline-flex; align-items:center; min-height:22px; padding:1px 9px; border-radius:999px; font-size:13px; font-weight:600;
                  background:var(--u-green-t); color:var(--u-green); max-width:100%; }
.u-builder-badge.u-builder-no{ background:var(--u-gold-t); color:var(--u-gold); }

/* the self-test's checks: one line each, ✓ or ✕ */
.u-builder-checks{ margin-top:8px; }
.u-builder-chk{ display:flex; gap:10px; align-items:flex-start; padding:9px 0; border-bottom:1px solid var(--u-line); font-size:15px; line-height:1.4; }
.u-builder-chk:last-child{ border-bottom:0; }
.u-builder-chk-i{ flex:none; width:22px; height:22px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
                  font-size:13px; font-weight:700; }
.u-builder-pass .u-builder-chk-i{ background:var(--u-green-t); color:var(--u-green); }
.u-builder-miss .u-builder-chk-i{ background:var(--u-red-t); color:var(--u-red); }
.u-builder-chk-b{ min-width:0; overflow-wrap:anywhere; }
.u-builder-chk-d{ font-size:13.5px; color:var(--u-t3); margin-top:2px; }
.u-builder-miss .u-builder-chk-d{ color:var(--u-red); }
/* a failed check that may not be the code's fault (read from the rule's words, the test's slow fills): a WARN */
.u-builder-doubt .u-builder-chk-i{ background:var(--u-gold-t); color:var(--u-gold); }
.u-builder-doubt .u-builder-chk-d{ color:var(--u-gold); }

/* the algo card: this round's "You asked" / "Changed this round" lines, under the name */
.u-builder-changes{ display:flex; flex-direction:column; min-width:0; }
.u-builder-changes .u-note{ margin-top:8px; }
.u-builder-changes .u-note:first-child{ margin-top:12px; }

/* the naming step: the one place a quiet panel groups a field and its button */
.u-builder-namer{ margin-top:18px; padding:4px 16px 16px; border-radius:var(--u-r); background:var(--u-raise); }
.u-builder-namer .u-input{ background:var(--u-bg); }
.u-builder-namer .u-builder-fine{ margin-top:8px; }

/* disclosures: "Show the code", "How this was tested" */
.u-builder-adv{ margin-top:14px; border-top:1px solid var(--u-line); border-bottom:1px solid var(--u-line); min-width:0; }
.u-builder .u-builder-adv-btn{ display:flex; align-items:center; gap:10px; width:100%; min-height:48px; padding:0; border:0; background:none; text-align:left;
                    font-size:15.5px; font-weight:600; color:var(--u-green); cursor:pointer; }
.u-builder .u-builder-adv-btn::after{ content:""; flex:none; width:8px; height:8px; margin:0 4px 4px auto; border-right:2px solid currentColor; border-bottom:2px solid currentColor;
                           transform:rotate(45deg); transition:transform .15s; }
.u-builder .u-builder-adv-btn[aria-expanded="true"]::after{ transform:rotate(225deg); margin-bottom:-4px; }
.u-builder-code{ margin:0 0 12px; padding:12px 14px; background:var(--u-raise); border-radius:12px; font-size:13px; line-height:1.5;
                 max-height:420px; overflow:auto; white-space:pre; tab-size:4; color:var(--u-t2); }
/* a note's code-level details, folded (pov-sizing): wrapped, never a sideways scroll on a phone */
.u-builder-code.u-builder-details{ white-space:pre-wrap; overflow-wrap:anywhere; max-height:260px; font-size:12.5px; margin:4px 0 0; }
/* the build's one question and its two buttons */
.u-builder-buildq{ gap:10px; margin:8px 0 4px; }
.u-builder-howlist{ padding-bottom:6px; }
.u-builder-howlist .u-builder-algo-row:last-child{ border-bottom:0; }

/* ── step 2: the test settings ── */
.u-builder-group{ margin-top:4px; min-width:0; }
.u-builder-group > .u-builder-muted{ margin:0 0 4px; }
.u-builder-param{ display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"head fs" "body body" "tip tip";
                  gap:6px 12px; align-items:center; padding:12px 0 14px; border-bottom:1px solid var(--u-line); min-width:0; }
.u-builder-param:last-child{ border-bottom:0; }
.u-builder-param-head{ grid-area:head; display:flex; align-items:center; gap:2px; min-width:0; }
.u-builder-param-name{ font-size:15.5px; font-weight:600; min-width:0; overflow-wrap:anywhere; }
.u-builder-param-body{ grid-area:body; display:flex; flex-wrap:wrap; align-items:center; gap:8px; min-width:0; }
.u-builder-param-body > .u-input{ flex:1 1 220px; max-width:520px; min-width:0; }
.u-builder-typed-ctl{ display:block; width:100%; max-width:520px; min-width:0; }
.u-builder-dates{ display:flex; align-items:center; gap:8px; width:100%; max-width:520px; min-width:0; }
.u-builder-dates .u-input{ flex:1 1 0; min-width:0; padding:0 10px; font-size:15px; }
.u-builder-tiptext{ grid-area:tip; margin:0; font-size:14px; line-height:1.5; color:var(--u-t2); max-width:80ch; }
.u-builder-param > .u-note{ grid-column:1 / -1; margin-top:2px; }
.u-builder-locked .u-builder-param-body{ opacity:.55; }
.u-builder .u-input:disabled{ cursor:not-allowed; }
.u-builder-off{ opacity:.42; }
.u-builder-off .u-builder-param-body{ pointer-events:none; }
@media (min-width:1024px){
  .u-builder-param{ grid-template-columns:250px minmax(0,520px) auto; justify-content:start; grid-template-areas:"head body fs" ". tip tip"; align-items:start; }
  .u-builder-param-head{ min-height:48px; }
  .u-builder-param-body{ min-height:48px; }
  .u-builder-fromstrat{ margin-top:2px; }
}
.u-builder .u-builder-info{ flex:none; width:44px; height:44px; margin:-6px 0; display:inline-flex; align-items:center; justify-content:center;
                 border:0; background:none; padding:0; color:var(--u-t3); cursor:pointer; }
.u-builder-info-dot{ width:22px; height:22px; border-radius:50%; border:1px solid var(--u-line2); display:inline-flex; align-items:center;
                     justify-content:center; font-size:13px; font-weight:700; }
.u-builder-info[aria-expanded="true"] .u-builder-info-dot{ background:var(--u-green-t); color:var(--u-green); border-color:transparent; }
.u-builder-fromstrat{ grid-area:fs; justify-self:end; display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 14px 0 10px;
                      border-radius:999px; background:var(--u-raise); color:var(--u-t2); font-size:14px; font-weight:600; cursor:pointer;
                      white-space:nowrap; user-select:none; }
.u-builder-fromstrat{ position:relative; }
.u-builder-fromstrat input{ position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; cursor:pointer; }
.u-builder-check{ flex:none; width:20px; height:20px; border-radius:6px; border:2px solid var(--u-t3); position:relative; }
.u-builder-fromstrat:has(input:checked){ background:var(--u-green-t); color:var(--u-green); }
.u-builder-fromstrat:has(input:checked) .u-builder-check{ background:var(--u-green); border-color:var(--u-green); }
.u-builder-fromstrat:has(input:checked) .u-builder-check::after{ content:""; position:absolute; left:5px; top:1px; width:5px; height:10px;
        border-right:2px solid var(--u-on-green); border-bottom:2px solid var(--u-on-green); transform:rotate(45deg); }
.u-builder-fromstrat:has(input:focus-visible){ outline:2px solid var(--u-green); outline-offset:2px; }
.u-builder-fromstrat.u-builder-disabled{ background:none; color:var(--u-t3); font-weight:500; cursor:default; padding:0; }
.u-builder-fromstrat.u-builder-disabled input{ display:none; }
.u-builder-missing{ margin-top:18px; }
.u-builder-name{ max-width:520px; margin-top:18px; }

/* ── running ── */
.u-builder-bar{ height:8px; border-radius:4px; background:var(--u-raise2); overflow:hidden; margin:18px 0 10px; max-width:560px; }
.u-builder-bar i{ display:block; height:100%; width:5%; background:var(--u-green); border-radius:4px; transition:width .4s; }

/* ── step 3: the result — the big number first ── */
.u-builder-hero{ margin-top:12px; }
.u-builder-hero .u-status{ max-width:100%; }
.u-builder-resname{ margin:12px 0 0; font-size:17px; font-weight:600; color:var(--u-t2); overflow-wrap:anywhere; }
.u-builder-hero .u-big{ margin:6px 0 4px; }
.u-builder-bench{ margin-top:6px; font-size:15px; color:var(--u-t2); }
/* a table on a computer, the same data as rows on a phone */
.u-builder-tbl{ display:none; }
@media (min-width:1024px){ .u-builder-tbl{ display:block; } .u-builder-trows{ display:none; } }
.u-builder-trow{ min-height:56px; align-items:start; }
.u-builder-tl{ min-width:0; }
.u-builder-trow .t{ overflow-wrap:anywhere; }
.u-builder-trow .s{ white-space:normal; overflow-wrap:anywhere; }
.u-builder-clip .u-builder-trows > .u-row:nth-child(n+21){ display:none; }
.u-builder-tmore{ display:none; }
@media (max-width:1023px){ .u-builder-clip .u-builder-tmore{ display:inline-flex; } }
.u-builder-showall{ margin-top:12px; }

/* ── past tests ── */
.u-builder-hitem{ border-bottom:1px solid var(--u-line); min-width:0; }
.u-builder-hitem:last-child{ border-bottom:0; }
.u-builder .u-builder-hrow{ border-bottom:0; padding-bottom:2px; }
.u-builder-files{ display:flex; flex-wrap:wrap; align-items:center; gap:0 2px; padding:0 0 8px; }
.u-builder-files-k{ font-size:13px; color:var(--u-t3); margin-right:6px; }
.u-builder-more{ display:none; }
.u-builder-all .u-builder-more{ display:block; }
.u-builder-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.u-builder-tag{ display:inline-flex; align-items:center; min-height:22px; padding:0 9px; border-radius:999px; font-size:13px; font-weight:600;
                background:var(--u-raise2); color:var(--u-t2); }
.u-builder-tag-old{ background:var(--u-gold-t); color:var(--u-gold); }
.u-builder-tag-paper{ background:var(--u-blue-t); color:var(--u-blue); }
.u-builder-resume{ margin-top:12px; }
.u-builder-resume .u-row .t, .u-builder-resume .u-row .s{ white-space:normal; overflow-wrap:anywhere; }
/* ── Your algos and "Pick up where you left off" on step 1 (builder.js savedItem / renderDraftOffer, saved-builds) ── */
.u-builder-draft{ margin-top:12px; padding:14px 16px; border-radius:12px; background:var(--u-raise); min-width:0; max-width:760px; }
.u-builder-draft-t{ font-size:16px; font-weight:600; color:var(--u-t1); }
.u-builder-draft-s{ margin-top:2px; font-size:14px; line-height:1.45; color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-draft .u-builder-row{ margin-top:10px; }
#savedAlgos:not(:empty){ margin-top:18px; }
.u-builder-shead .u-builder-h3{ margin-bottom:2px; }
.u-builder-shead .u-builder-muted{ margin:0 0 4px; font-size:14px; }
.u-builder-saved{ padding:0; }
.u-builder-sitem .u-row .t{ white-space:nowrap; }
.u-builder-sitem .u-row .s{ white-space:normal; overflow-wrap:anywhere; }
.u-builder-ssum{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; color:var(--u-t2); }
.u-builder-sacts{ gap:6px 4px; padding:0 0 10px; }
.u-builder-sacts .u-btn.ghost{ padding:0 10px; }
@media (max-width:380px){ .u-builder-sacts .u-btn{ padding:0 10px; } }
.u-builder-sold .u-row .t{ color:var(--u-t2); }
.u-builder-sarch{ margin-top:8px; }
.u-builder-srename{ display:flex; flex-direction:column; gap:8px; padding:0 0 12px; max-width:520px; min-width:0; }
.u-builder-srename .u-builder-row{ margin-top:0; }
#savedAlgos .u-builder-note .u-btn{ margin-left:8px; }

/* ── a test that did not finish: the card at the top of the run view ── */
.u-builder-fail > .u-status{ margin-top:12px; }
.u-builder-failname{ margin-top:10px; overflow-wrap:anywhere; }
.u-builder-fail .u-note{ max-width:72ch; }
.u-builder-failwhen{ margin-top:10px; overflow-wrap:anywhere; }
/* the time left on a long test, under its progress */
.u-builder-eta{ margin:6px 0 0; font-size:15px; font-weight:600; line-height:1.45; color:var(--u-t2); overflow-wrap:anywhere;
                font-variant-numeric:tabular-nums; }
/* its countdown (builder.js renderRunEta): the time left first, the time so far small */
.u-builder-eta-left{ color:var(--u-t1); font-weight:700; }
.u-builder-eta-since{ font-size:13px; font-weight:500; color:var(--u-t3); white-space:nowrap; }
.u-builder-eta-note{ font-weight:500; }

/* past tests: the ones still going and the ones that did not finish, above the results */
.u-builder-jhead:first-child{ margin-top:14px; }
.u-builder-jitem .u-row .s{ white-space:normal; overflow-wrap:anywhere; }
.u-builder-jfail .u-row .t{ color:var(--u-t2); }
.u-builder-jitem .u-row .u-builder-jwhy{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.u-builder-jitem .u-builder-files{ padding-bottom:10px; }

/* ── a test that ended out of sight: a banner under the top bar until it is opened or dismissed ── */
/* "Where does this strategy go?": a new algo, or replace the picked algo's strategy */
.u-builder-where{ display:flex; flex-direction:column; gap:8px; }
.u-builder-where .u-opt{ text-align:left; }
.u-builder-where .u-opt .s{ white-space:normal; }
.u-builder-banner{ position:fixed; z-index:190; top:68px; left:var(--u-pad); right:var(--u-pad);
                   display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; padding:8px 6px 8px 16px; min-width:0;
                   border-radius:var(--u-r); border:1px solid var(--u-line2); background:var(--u-raise2); color:var(--u-t1);
                   box-shadow:var(--u-pop); font-size:15px; line-height:1.4; animation:u-paper-rise .22s ease-out; }
.u-builder-banner > .u-dot{ color:var(--u-red); }
.u-builder-banner-ok > .u-dot{ color:var(--u-green); }
.u-builder-banner-t{ flex:1 1 180px; min-width:0; font-weight:600; overflow-wrap:anywhere; }
.u-builder-banner-acts{ display:flex; align-items:center; gap:2px; margin-left:auto; }
.u-builder-banner .u-btn.sm{ min-height:44px; }
.u-builder-banner-x{ flex:none; width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; padding:0;
                     border:0; border-radius:12px; background:none; color:var(--u-t3); font-size:24px; line-height:1; }
.u-builder-banner-x:hover{ background:var(--u-raise3); color:var(--u-t1); }
@media (min-width:1024px){ .u-builder-banner{ top:80px; left:auto; right:28px; width:440px; max-width:calc(100vw - var(--u-side) - 56px); } }
@media (prefers-reduced-motion:reduce){ .u-builder-banner{ animation:none; } }

/* ── the AI review of a test (builder.js coach*; the approved mockup of 2026-11-01) ──
   One card under the numbers; each idea a box inside it. One font (the page's), numbers tabular. */
.u-builder-coach{ display:grid; gap:14px; margin:24px 0 0; padding:18px; min-width:0;
                  border:1px solid var(--u-line2); border-radius:16px; background:var(--u-raise); }
.u-builder-coach .u-note{ margin:0; }
.u-builder-coach-head{ display:flex; align-items:center; gap:12px; min-width:0; }
.u-builder-coach-badge{ flex:none; width:34px; height:34px; border-radius:10px; display:grid; place-items:center;
                        background:var(--u-blue); color:var(--u-bg); font-weight:700; font-size:14px; letter-spacing:.02em; }
.u-builder-coach-ht{ min-width:0; }
.u-builder-coach-h{ margin:0; font-size:19px; font-weight:700; letter-spacing:-.01em; line-height:1.25; }
.u-builder-coach-sub{ margin-top:2px; font-size:13px; font-weight:600; color:var(--u-t3); }
.u-builder-coach-lead{ margin:0; font-size:15.5px; line-height:1.55; color:var(--u-t2); overflow-wrap:anywhere; max-width:72ch; }
.u-builder-coach-read{ display:flex; flex-wrap:wrap; gap:6px; }
.u-builder-coach-read span{ font-size:13px; color:var(--u-t2); background:var(--u-raise2); border-radius:999px; padding:5px 11px;
                            line-height:1.35; overflow-wrap:anywhere; }
.u-builder-coach-ideas{ display:grid; gap:12px; min-width:0; }
.u-builder-coach-idea{ display:grid; gap:10px; min-width:0; padding:14px; border:1px solid var(--u-line2); border-radius:12px;
                       background:var(--u-bg); }
.u-builder-coach-dim{ opacity:.72; }
.u-builder-coach-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; min-width:0; }
.u-builder-coach-title{ margin:0; font-size:16px; font-weight:700; line-height:1.3; min-width:0; overflow-wrap:anywhere; }
.u-builder-coach-chip{ flex:none; font-size:12px; font-weight:700; line-height:1; letter-spacing:.02em; padding:6px 9px;
                       border-radius:999px; border:1px solid currentColor; white-space:nowrap; }
.u-builder-coach-chip.ok{ color:var(--u-green); background:var(--u-green-t); }
.u-builder-coach-chip.warn{ color:var(--u-gold); background:var(--u-gold-t); }
.u-builder-coach-chip.run{ color:var(--u-blue); background:var(--u-blue-t); }
.u-builder-coach-chip.bad{ color:var(--u-red); background:var(--u-red-t); }
.u-builder-coach-chip.new{ color:var(--u-t3); }
.u-builder-coach-change{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; font-size:14.5px;
                         font-variant-numeric:tabular-nums; min-width:0; }
.u-builder-coach-change s{ color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-coach-change em{ font-style:normal; font-weight:600; color:var(--u-t1); background:var(--u-raise2); border-radius:7px;
                            padding:3px 8px; overflow-wrap:anywhere; min-width:0; }
.u-builder-coach-arrow{ color:var(--u-t3); }
.u-builder-coach-exact{ margin:0; font-size:13.5px; line-height:1.5; color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-coach-exact span{ font-weight:600; }
.u-builder-coach-why{ margin:0; font-size:14.5px; line-height:1.5; color:var(--u-t2); overflow-wrap:anywhere; }
.u-builder-coach-why b{ color:var(--u-t1); font-weight:600; }
.u-builder-coach-gridwrap{ display:grid; gap:6px; min-width:0; }
.u-builder-coach-ba{ display:grid; grid-template-columns:minmax(0,auto) minmax(max-content,1fr) minmax(max-content,1fr); gap:7px 12px; align-items:baseline;
                     padding:11px 12px; border-radius:10px; background:var(--u-raise2); font-size:15px; font-weight:600;
                     font-variant-numeric:tabular-nums; min-width:0; }
.u-builder-coach-ba .h{ font-size:12.5px; font-weight:600; color:var(--u-t3); overflow-wrap:anywhere; min-width:0; }
.u-builder-coach-dates{ margin:0; font-size:12.5px; color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-coach-verdict{ margin:0; font-size:14.5px; font-weight:600; line-height:1.45; overflow-wrap:anywhere; }
.u-builder-coach-verdict.ok{ color:var(--u-green); } .u-builder-coach-verdict.warn{ color:var(--u-gold); }
.u-builder-coach-verdict.bad, .u-builder-coach-verdict.new{ color:var(--u-t2); }
.u-builder-coach-step, .u-builder-coach-did{ margin:0; font-size:13.5px; line-height:1.45; color:var(--u-t3); overflow-wrap:anywhere; }
.u-builder-coach-bar{ height:6px; border-radius:999px; background:var(--u-raise2); overflow:hidden; }
.u-builder-coach-bar i{ display:block; height:100%; width:6%; background:var(--u-blue); border-radius:999px; transition:width .4s; }
.u-builder-coach-wait i{ width:35%; animation:u-coach-slide 1.6s ease-in-out infinite; }
@keyframes u-coach-slide{ 0%{ transform:translateX(-100%); } 100%{ transform:translateX(300%); } }
.u-builder-coach-btns{ display:flex; flex-wrap:wrap; gap:8px; min-width:0; }
@media (max-width:699px){ .u-builder-coach-btns > .u-btn.primary{ flex:1 1 auto; } }
.u-builder-coach-how{ margin:0; padding-top:12px; border-top:1px solid var(--u-line2); font-size:13.5px; line-height:1.5; color:var(--u-t3); }
.u-builder-coach-locked{ filter:blur(1.5px); }
.u-builder-coach-skel{ display:block; height:10px; border-radius:6px; background:var(--u-raise3); }
.u-builder-coach-unlock{ margin:0; font-size:14.5px; font-weight:600; color:var(--u-gold); }
@media (max-width:420px){ .u-builder-coach{ padding:14px; } .u-builder-coach-idea{ padding:12px; } .u-builder-coach-ba{ gap:6px 10px; padding:10px; font-size:14.5px; } }
@media (prefers-reduced-motion:reduce){ .u-builder-coach-bar i{ transition:none; } .u-builder-coach-wait i{ animation:none; } }
/* the algo page's backtest view shows it in its left column */
.u-ov .u-builder-coach{ margin:18px var(--u-pad) 0; }
@media (min-width:1024px){ .u-ov .u-builder-coach{ margin:18px 0 0; } }
.u-builder-coach-label{ margin:0; font-size:12.5px; line-height:1.45; color:var(--u-t3); }
.u-builder-coach-tag{ margin:0; font-size:12px; color:var(--u-t3); }

/* ── a wait you can see: the countdown ("About 2:40 left"), the time so far, the bar, the step
   (builder.js waitTimer; timers 2026-11-01, countdowns 2026-11-02) — the test's own progress look, in a note's box ── */
.u-builder-wait{ margin:12px 0 0; padding:14px 16px; border-radius:12px; background:var(--u-raise); color:var(--u-t2);
                 max-width:620px; min-width:0; }
.u-builder-wait-top{ display:flex; align-items:baseline; justify-content:space-between; gap:4px 14px; flex-wrap:wrap; min-width:0; }
.u-builder-wait-title{ flex:1 1 220px; min-width:0; font-size:15px; font-weight:600; line-height:1.4; color:var(--u-t1); overflow-wrap:anywhere; }
.u-builder-wait-time{ flex:0 1 auto; margin-left:auto; display:flex; flex-wrap:wrap; align-items:baseline; justify-content:flex-end;
                      gap:0 6px; min-width:0; }
.u-builder-wait-left{ font-size:19px; font-weight:700; letter-spacing:-.01em; line-height:1.3; font-variant-numeric:tabular-nums;
                      color:var(--u-t1); overflow-wrap:anywhere; }
.u-builder-wait-clock{ font-size:13px; font-weight:500; line-height:1.3; font-variant-numeric:tabular-nums; color:var(--u-t3); white-space:nowrap; }
.u-builder-wait .u-builder-wait-bar{ margin:12px 0 10px; max-width:none; }
.u-builder-wait-step{ margin:0 0 4px; font-size:14.5px; font-weight:600; line-height:1.45; color:var(--u-t2); overflow-wrap:anywhere; }
.u-builder-wait-late{ margin:0; font-size:14px; line-height:1.45; color:var(--u-gold); overflow-wrap:anywhere; }
/* on a review card: one quiet line, the time first */
.u-builder-wait.u-builder-wait-sm{ display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; margin:0; padding:0; background:none; max-width:none; }
.u-builder-wait-sm .u-builder-wait-top{ flex:0 1 auto; min-width:0; }
.u-builder-wait-sm .u-builder-wait-time{ margin-left:0; justify-content:flex-start; }
.u-builder-wait-sm .u-builder-wait-left{ font-size:15px; }
.u-builder-wait-sm .u-builder-wait-late{ font-size:13.5px; }
.u-builder-wait-sm .u-builder-wait-late{ flex:1 1 100%; }
@media (max-width:420px){ .u-builder-wait{ padding:12px 14px; } .u-builder-wait-left{ font-size:17px; } .u-builder-wait-time{ margin-left:0; justify-content:flex-start; } }
@media (prefers-reduced-motion:reduce){ .u-builder-wait-bar i{ transition:none; } }
/* changes tested together (builder.js coachCombo; coach-combo 2026-11-01): + / − on each idea, one primary button */
.u-builder-coach-pick{ margin-left:auto; border:1px solid var(--u-line2); background:var(--u-bg); color:var(--u-t2); font-weight:600; }
.u-builder-coach-pick.on{ border-color:transparent; background:var(--u-green-t); color:var(--u-green); }
.u-builder-coach-out{ border-style:dashed; }
.u-builder-coach-out > :not(.u-builder-coach-btns){ opacity:.55; }
.u-builder-coach-combo{ display:grid; gap:10px; min-width:0; padding-top:14px; border-top:1px solid var(--u-line2); }
.u-builder-coach-combocard{ border-color:var(--u-blue); }
.u-builder-coach-list{ margin:0; padding-left:20px; display:grid; gap:4px; font-size:14.5px; line-height:1.4; color:var(--u-t1);
                       overflow-wrap:anywhere; min-width:0; }
.u-builder-coach-hint{ margin:0; padding:9px 11px; border-radius:9px; background:var(--u-gold-t); color:var(--u-t1);
                       font-size:14px; line-height:1.45; overflow-wrap:anywhere; }
.u-builder-coach-ask{ margin:0; font-size:15px; font-weight:600; line-height:1.45; color:var(--u-t1); overflow-wrap:anywhere; }
.u-builder-coach-older{ display:grid; gap:6px; min-width:0; }
.u-builder-coach-oldrow{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; min-width:0; }
.u-builder-coach-oldt{ flex:1 1 160px; min-width:0; font-size:13.5px; line-height:1.4; color:var(--u-t2); overflow-wrap:anywhere; }
@media (max-width:1023px){ .u-builder-coach-btns .u-btn.sm{ min-height:44px; } }
@media (max-width:699px){ .u-builder-coach-go > .u-btn.primary{ flex:1 1 100%; } }

/* the AI review folded to one line (owner 2026-11-01: the card was too big); Show / Hide */
.u-builder-coach.u-builder-coach-closed{ padding:10px 12px; }
.u-builder-coach-fold{ display:flex; align-items:center; gap:10px; min-width:0; }
.u-builder-coach-fold .u-builder-coach-badge{ width:28px; height:28px; border-radius:8px; font-size:12.5px; }
.u-builder-coach-foldt{ flex:1 1 auto; min-width:0; font-size:14px; font-weight:600; color:var(--u-t2); line-height:1.35; overflow-wrap:anywhere; }
.u-builder-coach-fold .u-btn, .u-builder-coach-hide{ flex:none; }
.u-builder-coach-hide{ margin-left:auto; }

/* step 1 as one question (Your-algos home, 2026-11-03): the question, the box, one big button;
   the upload and the past tests one tap away */
.u-builder-start{ max-width:680px; }
.u-builder-ask{ margin:18px 0 14px; }
#pageScroll .u-builder .u-builder-ask{ font-size:30px !important; }
.u-builder-askf{ margin-top:0; }
.u-builder-askf .u-textarea{ min-height:150px; font-size:17px; }
.u-builder-vh{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.u-builder-go > .u-btn.primary{ flex:1 1 auto; min-height:54px; border-radius:14px; font-size:17px; }
.u-builder-go #promptCost:empty{ display:none; }
.u-builder-alt{ display:flex; justify-content:center; flex-wrap:wrap; gap:4px 18px; margin-top:8px; }
.u-builder-up{ margin-top:6px; padding:14px 16px; border-radius:var(--u-r); background:var(--u-raise); }
.u-builder-tabs.u-hide + .u-builder-start .u-builder-ask{ margin-top:12px; }
