/* The builder's console: a quiet, dense product surface. A top bar, a page
   header, cards for components and panels for the rest, rectangular
   controls, and code blocks you copy from. On top of talk.css (its colors,
   and the editor's fields). */

body.console {
  --c-bg: #f6f6f4; --c-surface: #ffffff; --c-sunk: #fafaf9; --c-ink: #17171a; --c-muted: #6b6b72; --c-line: #e6e5e1; --c-line-strong: #d6d4ce;
  --c-code-bg: #16161a; --c-code-ink: #e8e7ee; --c-radius: 12px; --c-radius-sm: 8px;
  --c-shadow: 0 1px 2px rgb(16 16 20 / .04), 0 1px 3px rgb(16 16 20 / .04);
  --font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --line: var(--c-line); --panel: var(--c-surface); --bg: var(--c-bg); --ink: var(--c-ink); --muted: var(--c-muted);
  background: var(--c-bg); color: var(--c-ink); font: 15px/1.5 var(--font); -webkit-font-smoothing: antialiased;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) body.console {
    --c-bg: #111113; --c-surface: #18181b; --c-sunk: #141416; --c-ink: #ececef; --c-muted: #9d9da6; --c-line: #2a2a2f; --c-line-strong: #38383e;
    --c-code-bg: #0c0c0e; --c-shadow: none;
  }
}
body.console #app, body.console.editing #app { max-width: none; padding: 0; display: block; }

/* Controls: rectangular, compact. */
body.console button { border-radius: var(--c-radius-sm); padding: 7px 14px; font-size: 14px; font-weight: 500; border: 1px solid var(--c-line-strong); background: var(--c-surface); color: var(--c-ink); transition: background .12s, border-color .12s; }
body.console button:hover:not(:disabled) { border-color: var(--c-muted); }
body.console button.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
body.console button.primary:hover:not(:disabled) { filter: brightness(1.07); }
body.console button.small { padding: 5px 10px; font-size: 13px; }
body.console button.ghost { border-color: transparent; background: transparent; color: var(--c-muted); }
body.console button.wide { width: 100%; padding: 10px 14px; }
body.console button.link { border: 0; padding: 0; background: none; color: var(--c-muted); text-decoration: none; font-weight: 500; }
body.console button.link:hover { color: var(--c-ink); }
body.console a { color: var(--accent); text-underline-offset: 3px; }
body.console code { font: 12.5px/1.4 ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
body.console .small { font-size: 13px; }
body.console .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
body.console h1 { font-size: 22px; font-weight: 600; letter-spacing: -.01em; margin: 0; }
body.console h2 { font-size: 16px; font-weight: 600; margin: 0; }
body.console h3 { font-size: 16px; font-weight: 600; margin: 0; }
body.console .error { color: var(--stop); }

/* The brand mark. */
body.console .brand { display: inline-flex; align-items: center; gap: 8px; font-weight: 650; color: var(--c-ink); text-decoration: none; letter-spacing: -.01em; }
body.console .mark { width: 22px; height: 22px; border-radius: 7px; background: radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--accent) 55%, white), var(--accent)); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .2); }

/* Signed out: one centered card. */
body.console .auth { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 18px; padding: 24px 16px; }
body.console .auth-card { width: min(400px, calc(100vw - 32px)); background: var(--c-surface); border: 1px solid var(--c-line); border-radius: 16px; box-shadow: var(--c-shadow); padding: 28px; display: grid; gap: 14px; }
body.console .auth-card h1 { font-size: 20px; }
body.console .auth-card p { margin: 0; }
body.console .stack { display: grid; gap: 10px; }
body.console .stack label { font-size: 13px; font-weight: 600; }
body.console .auth-card input { font: inherit; color: inherit; background: var(--c-surface); border: 1px solid var(--c-line-strong); border-radius: var(--c-radius-sm); padding: 9px 12px; width: 100%; }
body.console .auth-card input:focus-visible { outline: 2px solid var(--accent); outline-offset: 0; border-color: transparent; }

/* Signed in: the top bar, then the page. */
body.console .topbar { position: sticky; top: 0; z-index: 5; background: color-mix(in srgb, var(--c-surface) 88%, transparent); backdrop-filter: blur(8px); border-bottom: 1px solid var(--c-line); }
body.console .topbar-in { max-width: 1120px; margin: 0 auto; padding: 10px 20px; display: flex; align-items: center; gap: 12px; }
body.console .ws { font-size: 13px; padding: 3px 10px; border-radius: 999px; background: var(--c-sunk); border: 1px solid var(--c-line); color: var(--c-muted); }
body.console .spacer { flex: 1; }
@media (max-width: 560px) { body.console .who { display: none; } }
body.console .page { max-width: 1120px; margin: 0 auto; padding: 28px 20px 48px; display: grid; gap: 20px; }
body.console.editing .page { max-width: 1000px; padding-bottom: 110px; }
body.console .page-head { display: flex; gap: 16px; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; }
body.console .page-head p { margin: 4px 0 0; }
body.console .page-head .row { margin-top: 8px; }
body.console .crumbs { display: flex; gap: 8px; align-items: center; font-size: 13px; color: var(--c-muted); margin-bottom: -8px; }
body.console .banner { margin: 0; padding: 10px 14px; border-radius: var(--c-radius-sm); border: 1px solid currentColor; background: color-mix(in srgb, currentColor 6%, transparent); }
body.console .foot { text-align: center; margin: 8px 0 0; }

/* Stats. */
body.console .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
@media (max-width: 560px) { body.console .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
body.console .stat { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--c-radius); padding: 14px 16px; box-shadow: var(--c-shadow); }
body.console .stat .l { font-size: 13px; color: var(--c-muted); }
body.console .stat .v { font-size: 26px; font-weight: 600; letter-spacing: -.02em; font-variant-numeric: tabular-nums; margin-top: 2px; }
body.console .stat .s { font-size: 12px; color: var(--c-muted); }
body.console .stat { display: flex; flex-direction: column; }
body.console .stat .l { order: -1; }

/* Component cards. */
body.console .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
body.console .ccard { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--c-radius); box-shadow: var(--c-shadow); padding: 16px; display: grid; gap: 10px; align-content: start; transition: border-color .12s, box-shadow .12s; }
body.console .ccard:hover { border-color: var(--c-line-strong); box-shadow: 0 2px 10px rgb(16 16 20 / .06); }
body.console .ccard-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
body.console .ccard p { margin: 0; }
body.console .clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.9em; }
body.console .title-link { border: 0; padding: 0; background: none; font: inherit; font-weight: 600; color: var(--c-ink); text-align: left; }
body.console .title-link:hover { color: var(--accent); }
body.console .ccard-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--c-line); border-bottom: 1px solid var(--c-line); padding: 10px 0; }
body.console .ccard-stats div { display: grid; gap: 0; }
body.console .ccard-stats strong { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
body.console .ccard-stats span { font-size: 12px; color: var(--c-muted); }
body.console .ccard-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
body.console .ccard-foot code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.console .badge { display: inline-flex; align-items: center; font-size: 12px; font-weight: 500; padding: 2px 9px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 10%, var(--c-surface)); color: color-mix(in srgb, var(--accent) 80%, var(--c-ink)); border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent); }
body.console .empty { background: var(--c-surface); border: 1px dashed var(--c-line-strong); border-radius: var(--c-radius); padding: 36px 24px; display: grid; justify-items: center; text-align: center; gap: 10px; }
body.console .empty p { margin: 0; max-width: 52ch; }

/* Panels (integrate, keys) and the editor's steps. */
body.console .panel, body.console .card { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--c-radius); box-shadow: var(--c-shadow); padding: 20px; display: grid; gap: 14px; }
body.console .panel p { margin: 0; }
body.console .panel-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
body.console .panel-head p { margin: 2px 0 0; }
body.console #make-key { width: auto; }

/* Tabs. */
body.console .tabs { display: grid; gap: 12px; }
body.console .tab-list { display: flex; gap: 2px; border-bottom: 1px solid var(--c-line); overflow-x: auto; }
body.console .tab { border: 0; border-radius: 0; background: none; padding: 8px 12px; color: var(--c-muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
body.console .tab[aria-selected="true"] { color: var(--c-ink); border-bottom-color: var(--accent); }
body.console .tab-panel { display: grid; gap: 10px; }
body.console .tab-panel[hidden] { display: none; }

/* Code blocks. */
body.console .codeblock { border-radius: var(--c-radius-sm); overflow: hidden; border: 1px solid var(--c-line); }
body.console .codeblock-head { display: flex; justify-content: space-between; align-items: center; padding: 6px 8px 6px 12px; background: var(--c-sunk); border-bottom: 1px solid var(--c-line); font-size: 12px; color: var(--c-muted); }
body.console .copy-btn { padding: 3px 10px; font-size: 12px; }
body.console .codeblock pre { margin: 0; padding: 12px 14px; background: var(--c-code-bg); color: var(--c-code-ink); overflow-x: auto; white-space: pre; }
body.console .codeblock pre code { color: inherit; }
body.console .codeblock pre.prose { white-space: pre-wrap; overflow-wrap: anywhere; }

/* The editor: steps as cards, a quiet save bar. */
body.console .step { padding: 22px; }
body.console .step-head .num { width: 26px; height: 26px; font-size: 13px; }
body.console .chip { font-size: 12px; padding: 2px 9px; border-radius: 999px; border: 1px solid var(--c-line); }
body.console .savebar { background: color-mix(in srgb, var(--c-surface) 92%, transparent); backdrop-filter: blur(8px); }
body.console .savebar button { min-width: 120px; }
body.console .block, body.console .topic { background: var(--c-surface); border-color: var(--c-line); border-radius: var(--c-radius-sm); }
body.console .output-frame { background: var(--c-sunk); border-style: solid; }

/* A component's tabs, its Share step, and its interactions. */
body.console.editing .page > .tab-list { margin-bottom: -6px; }
body.console .view { display: grid; gap: 18px; }
body.console .view[hidden] { display: none; }
body.console .tab:disabled { opacity: .45; }
body.console .check.toggle { align-items: flex-start; gap: 10px; }
body.console .check.toggle input { margin-top: 4px; }
body.console .linkbox { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
body.console .linkbox input { flex: 1 1 260px; font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 13px; background: var(--c-sunk); }
body.console .link-out { display: grid; gap: 8px; }
body.console .link-out p { margin: 0; }
body.console .link-out code { overflow-wrap: anywhere; }
body.console .next-ways { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; border-top: 1px solid var(--c-line); padding-top: 12px; }
body.console .next-ways p { margin: 2px 0 0; }
body.console .interactions { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; }
body.console .interaction-list { flex: 1 1 300px; max-width: 380px; min-width: 0; display: grid; gap: 6px; }
body.console .interaction-list .count { padding: 0 4px; }
body.console .interaction-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; text-align: left; padding: 10px 12px; border-radius: var(--c-radius-sm); border: 1px solid var(--c-line); background: var(--c-surface); }
body.console .interaction-row[aria-current="true"] { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
body.console .interaction-row .who { font-weight: 600; display: flex; gap: 6px; align-items: center; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.console .clue { font-size: 11px; font-weight: 500; padding: 0 6px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 12%, var(--c-surface)); color: color-mix(in srgb, var(--accent) 80%, var(--c-ink)); }
body.console .state { font-size: 12px; justify-self: end; padding: 1px 8px; border-radius: 999px; }
body.console .state.done { background: #e2f4ea; color: #1e6b45; }
body.console .state.moving { background: #e4eefb; color: #1d4f91; }
body.console .state.attention { background: #fdf0dc; color: #8a4b00; }
body.console .state.problem { background: #fce7e5; color: #a3261d; }
body.console .state.waiting, body.console .state.ended { background: var(--c-sunk); color: var(--c-muted); }
body.console .interaction-detail { flex: 999 1 420px; min-width: 0; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--c-radius); box-shadow: var(--c-shadow); padding: 20px; display: grid; gap: 14px; }
body.console .interaction-detail .output-preview { display: grid; gap: 16px; }
body.console ul.knew { margin: 0; padding-left: 18px; display: grid; gap: 6px; font-size: 14px; }
body.console dl.answers { margin: 0; display: grid; gap: 2px; }
body.console dl.answers dt { color: var(--c-muted); font-size: 13px; margin-top: 8px; }
body.console dl.answers dd { margin: 0; }
body.console .share-list { display: grid; gap: 0; border: 1px solid var(--c-line); border-radius: var(--c-radius-sm); }
body.console .share-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 14px; }
body.console .share-row + .share-row { border-top: 1px solid var(--c-line); }
body.console .savebar[hidden] { display: none; }
body.console .filled { display: grid; gap: 10px; border-top: 1px solid var(--c-line); padding-top: 14px; }
body.console .filled h3 { font-size: 15px; }
body.console ol.qa { margin: 0; padding-left: 22px; display: grid; gap: 14px; }
body.console ol.qa .q { color: var(--c-muted); font-size: 13px; }
body.console ol.qa .a { white-space: pre-line; }
body.console ol.qa .row { margin-top: 6px; }
body.console .filled audio { display: none; }
body.console ol.qa .q .by { color: var(--c-muted); font-size: 12px; }
