/*!************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/styles.css ***!
  \************************************************************************************************************************************************************************************************************************************************************/
:root {
  --bg: #f5f8fc;
  --surface: #ffffff;
  --surface-2: #eef3f8;
  --line: #d9e2ec;
  --ink: #172235;
  --body: #526174;
  --faint: #7b899b;
  /* Brand accent. --accent-rgb carries the same colour as bare channels so every tint, glow and
     shadow below can be derived with rgb(... / alpha) instead of hardcoding the hue again — that
     way re-theming the product is a change to these few lines rather than ~70 scattered rgba(). */
  --accent: #18b889;
  --accent-rgb: 47 214 163;
  --accent-strong: #0fa477;
  --accent-ink: #06231a;
  --accent-soft: rgb(var(--accent-rgb) / .1);
  --danger: #d94b5b;
  /* Success is intentionally its own token: it happens to match the brand today, but "this
     succeeded" and "this is our brand" are different meanings and shouldn't move together. */
  --ok: #18b889;
  --ok-rgb: 47 214 163;
  /* Lighter end of the brand gradient (hero headline). */
  --accent-lift: #60e8c0;
  /* Diff/checklist green. Deliberately NOT tied to --accent: "added lines" and "task done" read
     as green by convention in code tooling, whatever the brand colour happens to be. */
  --added: #4ade80;
  --added-rgb: 74 222 128;
  /* Colour reserved for AI activity (assistant replies, thinking indicator, reasoning effort),
     deliberately distinct from --accent so "the AI is working" stays readable at a glance. */
  --ai: #a78bfa;
  --ai-rgb: 167 139 250;
  /* Logo gradient stops. The mark keeps the same colours in both themes, so they live here once;
     re-theming the brand means editing these three alongside --accent rather than digging the
     hex values out of the inline SVG in site-chrome.tsx. */
  --logo-blade-1: #9dffe0;
  --logo-blade-2: #2fd6a3;
  --logo-blade-3: #12a37f;
  --logo-plate-1: #16382f;
  --logo-plate-2: #061713;
  /* System stacks keep production builds independent of external font hosts. */
  --font-latin: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-cjk: "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-devanagari: "Noto Sans Devanagari", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --logo-contrast: #172235;
  font-family: var(--font-latin), var(--font-cjk);
  color: var(--ink);
  background: var(--bg);
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
  color-scheme: light;
}

/* Dark theme keeps the original deep navy palette and can be changed at runtime. */
:root[data-theme="dark"] {
  --bg: #0c1220;
  --surface: #151d2e;
  --surface-2: #1b2438;
  --line: #273350;
  --ink: #eef2f8;
  --body: #96a0b5;
  --faint: #64708a;
  --accent: #2fd6a3;
  --accent-rgb: 47 214 163;
  --accent-strong: #4ce6b6;
  --accent-ink: #06231a;
  --danger: #ff7b87;
  --ok: #2fd6a3;
  --ok-rgb: 47 214 163;
  --accent-lift: #60e8c0;
  --added: #4ade80;
  --added-rgb: 74 222 128;
  --ai: #a78bfa;
  --ai-rgb: 167 139 250;
  --logo-contrast: #0c1220;
  color-scheme: dark;
}
/* ---------- accent themes ----------
   Layered on top of the light/dark palettes above via data-accent on <html>. Each accent needs a
   light and a dark variant because a hue that reads well on white is usually too dark on navy.
   Selectors are written so they always beat the base blocks regardless of source order:
   :root:not([data-theme="dark"])[data-accent=…] and :root[data-theme="dark"][data-accent=…] are
   both (0,3,0), while the bases are (0,1,0) and (0,2,0).
   --ok / --added stay green everywhere on purpose (success and diff-added are conventions, not
   branding), and --ai is nudged away from the brand hue where the two would otherwise collide. */
:root:not([data-theme="dark"])[data-accent="violet"] {
  --accent: #7c5cf0; --accent-rgb: 139 108 250; --accent-strong: #6a48e0; --accent-ink: #ffffff; --accent-lift: #b9a4ff;
  --logo-blade-1: #d7c9ff; --logo-blade-2: #a78bfa; --logo-blade-3: #7c4fe0; --logo-plate-1: #241a44; --logo-plate-2: #0f0a1f;
  /* brand is violet now, so AI activity moves to sky blue to stay distinguishable */
  --ai: #0ea5e9; --ai-rgb: 14 165 233;
}
:root[data-theme="dark"][data-accent="violet"] {
  --accent: #a78bfa; --accent-rgb: 167 139 250; --accent-strong: #bda4ff; --accent-ink: #180f33; --accent-lift: #d0bcff;
  --logo-blade-1: #d7c9ff; --logo-blade-2: #a78bfa; --logo-blade-3: #7c4fe0; --logo-plate-1: #241a44; --logo-plate-2: #0f0a1f;
  --ai: #38bdf8; --ai-rgb: 56 189 248;
}

:root:not([data-theme="dark"])[data-accent="indigo"] {
  --accent: #3b6ef0; --accent-rgb: 80 130 250; --accent-strong: #2f5cd8; --accent-ink: #ffffff; --accent-lift: #8fb6ff;
  --logo-blade-1: #c2d8ff; --logo-blade-2: #5b8cff; --logo-blade-3: #2f5cd8; --logo-plate-1: #14203f; --logo-plate-2: #070d1c;
  /* push AI purple towards magenta so it separates from the blue brand hue */
  --ai: #c084fc; --ai-rgb: 192 132 252;
}
:root[data-theme="dark"][data-accent="indigo"] {
  --accent: #5b8cff; --accent-rgb: 91 140 255; --accent-strong: #7ba4ff; --accent-ink: #0a1430; --accent-lift: #8fb6ff;
  --logo-blade-1: #c2d8ff; --logo-blade-2: #5b8cff; --logo-blade-3: #2f5cd8; --logo-plate-1: #14203f; --logo-plate-2: #070d1c;
  --ai: #c084fc; --ai-rgb: 192 132 252;
}

:root:not([data-theme="dark"])[data-accent="amber"] {
  --accent: #e08a1e; --accent-rgb: 240 160 60; --accent-strong: #c9760f; --accent-ink: #241503; --accent-lift: #ffd08a;
  --logo-blade-1: #ffe0a8; --logo-blade-2: #f2a83c; --logo-blade-3: #c9760f; --logo-plate-1: #3a2609; --logo-plate-2: #1a1003;
}
:root[data-theme="dark"][data-accent="amber"] {
  --accent: #f2a83c; --accent-rgb: 242 168 60; --accent-strong: #ffc061; --accent-ink: #2a1a05; --accent-lift: #ffd08a;
  --logo-blade-1: #ffe0a8; --logo-blade-2: #f2a83c; --logo-blade-3: #c9760f; --logo-plate-1: #3a2609; --logo-plate-2: #1a1003;
}

:root[data-theme="dark"] .builder-editor { background: #080d18; }
:root[data-theme="dark"] .builder-editor > header { background: #101827; }
:root[data-theme="dark"] .builder-editor-body .cm-editor { color: var(--ink); background: #080d18; }
:root[data-theme="dark"] .builder-editor-body .cm-gutters { background: #0b111d; border-color: #202a3c; }
:root[data-theme="dark"] .builder-editor-body .cm-activeLine, :root[data-theme="dark"] .builder-editor-body .cm-activeLineGutter { background: #101827; }
:root[data-theme="dark"] footer { background: #0a0f1b; }
:root[data-theme="dark"] .preview-pane { background: repeating-linear-gradient(45deg, #111927 0 8px, #131c2c 8px 16px); }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scrollbar-width: thin; }
body { min-width: 320px; margin: 0; background: var(--bg); }
/* Global page scrollbar. Several layouts (e.g. the builder's three-column view below its
   ~900px breakpoint) intentionally switch from an internal per-panel scroll to letting the
   whole page scroll, so the browser's own (much thicker, unstyled) scrollbar becomes the one
   that's visible — styling only the inner containers doesn't cover that case. */
html::-webkit-scrollbar { width: 6px; }
html::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--faint) 55%, transparent); border-radius: 3px; }
html::-webkit-scrollbar-thumb:hover { background: var(--faint); }
html::-webkit-scrollbar-track { background: transparent; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }
.theme-toggle { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 9px; border: 1px solid var(--line); border-radius: 8px; color: var(--body); background: var(--surface); font-size: 11px; transition: color .15s, border-color .15s, background .15s; }
.theme-toggle:hover { color: var(--ink); border-color: var(--accent); background: var(--surface-2); }
.theme-toggle span { color: var(--accent); font-size: 15px; line-height: 1; }
.theme-toggle em { font-style: normal; }
.theme-toggle-floating { position: fixed; top: 16px; right: 18px; z-index: 100; box-shadow: 0 8px 24px rgba(23,34,53,.12); }
/* Pages with a nav bar host the toggle inside it; the floating one would overlap the language select. */
body:has(.nav-bar) .theme-toggle-floating { display: none; }
/* Account and admin pages also host their own toggle in their header; the global floating one would overlap it. */
body:has(.account-page) .theme-toggle-floating, body:has(.admin-page) .theme-toggle-floating { display: none; }
:root[data-theme="dark"] .theme-toggle-floating { background: var(--surface-2); }
:root[data-theme="dark"] .theme-toggle-floating { box-shadow: 0 8px 24px rgba(0,0,0,.3); }
h1, h2, h3, p, blockquote { margin: 0; }
.wrap { width: min(1120px, calc(100% - 48px)); margin-inline: auto; }
.mono, .kicker { font-family: var(--mono); }
.locale-zh { font-family: var(--font-cjk), var(--font-latin); }
.locale-hi { font-family: var(--font-devanagari), var(--font-latin); }

/* ---------- buttons ---------- */
.button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 42px; padding: 0 20px; border: 1px solid var(--accent); border-radius: 10px; color: var(--accent-ink); background: var(--accent); font-size: 14px; font-weight: 600; transition: background .15s, border-color .15s, color .15s, transform .15s, box-shadow .15s; }
.button:hover { background: var(--accent-strong); border-color: var(--accent-strong); box-shadow: 0 6px 24px rgb(var(--accent-rgb) / .25); }
.button-secondary { border-color: var(--line); color: var(--ink); background: var(--surface); }
.button-secondary:hover { border-color: #b8c7d8; background: var(--surface-2); box-shadow: none; }
.button-lg { height: 48px; padding: 0 24px; }
.button-small { height: 34px; padding: 0 14px; font-size: 13px; }
.button-invert { border-color: var(--bg); color: var(--ink); background: var(--bg); }
.button-invert:hover { background: #e8eef5; border-color: #e8eef5; box-shadow: none; }
.text-link { color: var(--body); font-size: 14px; font-weight: 500; transition: color .15s; }
.text-link:hover { color: var(--ink); }

/* ---------- logo ---------- */
.logo { display: inline-flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 800; letter-spacing: -.045em; text-decoration: none; }
.logo > span { color: var(--ink); }
.logo > span i { color: var(--accent); font-style: normal; }
.logo-mark { display: block; border-radius: 8.5px; box-shadow: 0 2px 10px rgb(var(--accent-rgb) / .35); transition: box-shadow .2s, transform .2s; }
.logo:hover .logo-mark { box-shadow: 0 4px 18px rgb(var(--accent-rgb) / .5); transform: translateY(-1px); }

/* ---------- nav ---------- */
.nav-bar { position: -webkit-sticky; position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.88); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
:root[data-theme="dark"] .nav-bar { background: rgba(12,18,32,.82); }
.nav { height: 64px; display: flex; align-items: center; gap: 40px; }
.nav-links { display: flex; flex: 0 0 auto; gap: 26px; }
.nav-links a { flex: 0 0 auto; color: var(--body); font-size: 14px; font-weight: 500; white-space: nowrap; transition: color .15s; }
.nav-links a:hover { color: var(--ink); }
.nav-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 18px; margin-left: auto; white-space: nowrap; }
:lang(ms) .nav, :lang(id) .nav { gap: 24px; }
:lang(ms) .nav-links, :lang(id) .nav-links { gap: 18px; }
:lang(ms) .nav-actions, :lang(id) .nav-actions { gap: 12px; }
/* language picker */
.lang-picker { position: relative; }
.lang-trigger { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 8px; border: 1px solid var(--line); border-radius: 8px; color: var(--body); background: var(--surface); font-size: 12px; transition: color .15s, border-color .15s, background .15s; }
.lang-trigger:hover, .lang-trigger[aria-expanded="true"] { color: var(--ink); border-color: var(--accent); background: var(--surface-2); }
.lang-trigger > svg { flex-shrink: 0; color: var(--faint); }
.lang-trigger:hover > svg, .lang-trigger[aria-expanded="true"] > svg { color: var(--accent); }
.lang-trigger > span { max-width: 116px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.lang-caret { display: inline-flex; color: var(--faint); transition: transform .18s; }
.lang-caret.open { transform: rotate(180deg); }
.lang-menu { position: absolute; z-index: 60; min-width: 184px; margin: 0; padding: 5px; list-style: none; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); box-shadow: 0 20px 48px -16px rgba(0,0,0,.5); }
.lang-menu--right { right: 0; }
.lang-menu--left { left: 0; }
.lang-menu--down { top: calc(100% + 8px); }
.lang-menu--up { bottom: calc(100% + 8px); }
.lang-menu button { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border: 0; border-radius: 8px; color: var(--body); background: transparent; font-size: 13px; text-align: left; white-space: nowrap; transition: background .15s, color .15s; }
.lang-menu button:hover { color: var(--ink); background: var(--surface-2); }
.lang-menu button.active { color: var(--accent); font-weight: 600; }
.lang-menu button svg { flex-shrink: 0; }
/* accent picker — reuses .lang-menu for the dropdown, only the trigger differs */
.accent-picker { position: relative; }
.accent-trigger { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 7px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); transition: border-color .15s, background .15s; }
.accent-trigger:hover, .accent-trigger[aria-expanded="true"] { border-color: var(--accent); background: var(--surface-2); }
.accent-dot { flex-shrink: 0; width: 13px; height: 13px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgb(0 0 0 / .12); }
.accent-menu { min-width: 168px; }
.accent-menu button { justify-content: flex-start; }
.accent-menu button > span { margin-right: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.menu-button { display: none; width: 40px; height: 40px; border: 0; background: transparent; color: var(--ink); }
.nav-skeleton { width: 92px; height: 34px; border-radius: 8px; background: var(--surface); opacity: .3; }
.nav-links-mobile-only { display: none; }

/* ---------- account menu ---------- */
.account-menu { position: relative; }
.account-trigger { display: flex; align-items: center; gap: 9px; height: 38px; padding: 0 8px; border: 1px solid transparent; border-radius: 9px; color: var(--ink); background: transparent; font-size: 13.5px; font-weight: 500; transition: border-color .15s, background .15s; }
.account-trigger:hover { border-color: var(--line); background: var(--surface); }
.account-trigger svg { color: var(--faint); }
.account-avatar { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; color: var(--accent-ink); background: var(--accent); font-family: var(--mono); font-size: 11px; font-weight: 600; }
.account-dropdown { position: absolute; top: calc(100% + 8px); right: 0; z-index: 60; width: 220px; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); box-shadow: 0 20px 48px -16px rgba(0,0,0,.5); }
.account-dropdown-head { padding: 13px 15px; border-bottom: 1px solid var(--line); background: var(--surface-2); }
.account-dropdown-head b { display: block; font-size: 13px; }
.account-dropdown-head small { display: block; margin-top: 3px; color: var(--faint); font-size: 11.5px; }
.account-dropdown a, .account-dropdown button { width: 100%; display: flex; align-items: center; gap: 9px; padding: 11px 15px; border: 0; color: var(--body); background: transparent; font-size: 13px; text-align: left; transition: background .15s, color .15s; }
.account-dropdown a:hover, .account-dropdown button:hover { color: var(--ink); background: var(--surface-2); }
.account-dropdown svg { color: var(--faint); }

/* ---------- hero ---------- */
.hero { --mx: 50%; --my: 30%; position: relative; padding: 92px 0 0; border-bottom: 1px solid var(--line); overflow: hidden; isolation: isolate; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(ellipse 55% 45% at 50% -4%, rgb(var(--accent-rgb) / .18), transparent 70%); pointer-events: none; }
.hero::after { content: ""; position: absolute; inset: 0 0 auto; height: 620px; z-index: 0; opacity: .55; background: linear-gradient(to right, var(--line) 1px, transparent 1px) 50% 0 / 96px 100%; -webkit-mask-image: linear-gradient(to bottom, black, transparent); mask-image: linear-gradient(to bottom, black, transparent); pointer-events: none; }
/* mouse-tracking glow */
.hero-glow { position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0; transition: opacity .5s; }
.hero:hover .hero-glow { opacity: 1; }
.hero-glow::before { content: ""; position: absolute; width: 600px; height: 600px; left: var(--mx); top: var(--my); translate: -50% -50%; border-radius: 50%; background: radial-gradient(circle, rgb(var(--accent-rgb) / .14) 0%, rgb(var(--accent-rgb) / .05) 40%, transparent 70%); filter: blur(20px); }
.hero-glow::after { content: ""; position: absolute; width: 280px; height: 280px; left: var(--mx); top: var(--my); translate: -50% -50%; border-radius: 50%; background: radial-gradient(circle, rgb(var(--accent-rgb) / .22) 0%, transparent 70%); filter: blur(30px); }
.hero-inner { position: relative; z-index: 2; text-align: center; }
.hero-badge { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 13px; border: 1px solid var(--line); border-radius: 99px; color: var(--body); background: var(--surface); font-family: var(--mono); font-size: 12px; transition: border-color .25s, color .25s, box-shadow .25s, transform .25s; }
.hero-badge:hover { border-color: rgb(var(--accent-rgb) / .4); color: var(--ink); box-shadow: 0 0 16px rgb(var(--accent-rgb) / .15); transform: translateY(-1px); }
.hero-badge i { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); animation: badge-pulse 2s ease-in-out infinite; }
@keyframes badge-pulse { 0%, 100% { box-shadow: 0 0 8px var(--accent); } 50% { box-shadow: 0 0 16px var(--accent), 0 0 28px rgb(var(--accent-rgb) / .3); } }
h1 { margin: 30px 0 22px; font-size: clamp(46px, 6.6vw, 76px); font-weight: 800; line-height: 1.05; letter-spacing: -.045em; }
/* CJK headlines are only a handful of glyphs wide, so they can carry a much larger size than the Latin
   clamp allows before they run out of room — and a tighter leading makes the two lines read as one block. */
.locale-zh h1 { font-size: clamp(52px, 7.6vw, 94px); font-weight: 700; line-height: 1.0; letter-spacing: -.02em; }
h1 span, .hero h1 span { color: var(--accent); background: linear-gradient(135deg, var(--accent), var(--accent-lift)); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.caret { display: inline-block; width: .09em; height: .82em; margin-left: .06em; vertical-align: -.06em; background: var(--accent); animation: caret-blink 1.1s steps(1) infinite; }
/* Two levels rather than one flat grey paragraph: the headline is huge and everything under it used to
   drop straight to 17px grey, leaving no step in between. balance keeps each line off a one-word
   second row when it has to wrap on narrow screens. */
.hero-sub { max-width: 660px; margin: 0 auto 20px; text-wrap: balance; }
.hero-sub b { display: block; color: var(--ink); font-size: clamp(19px, 2vw, 23px); font-weight: 600; line-height: 1.45; letter-spacing: -.015em; }
.hero-sub span { display: block; margin-top: 9px; color: var(--body); font-size: 15px; line-height: 1.6; }
.hero-sub em { color: var(--accent); font-style: normal; }
.hero-model-claim { display: inline-flex; align-items: center; gap: 9px; margin: 0 auto 28px; padding: 11px 18px; border: 1px solid rgb(var(--accent-rgb) / .38); border-radius: 11px; color: var(--ink); background: rgb(var(--accent-rgb) / .09); box-shadow: inset 0 0 24px rgb(var(--accent-rgb) / .06), 0 6px 20px -10px rgb(var(--accent-rgb) / .35); font-size: 14px; font-weight: 600; }
.hero-model-claim svg { flex: 0 0 auto; color: var(--accent); }
.hero-prompt { max-width: 640px; margin: 0 auto; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); box-shadow: 0 18px 50px -20px rgba(0,0,0,.5); text-align: left; transition: border-color .25s, box-shadow .25s, transform .25s; }
.hero-prompt:hover { border-color: rgb(var(--accent-rgb) / .25); transform: translateY(-2px); box-shadow: 0 24px 60px -20px rgba(0,0,0,.55), 0 0 0 1px rgb(var(--accent-rgb) / .08); }
.hero-prompt:focus-within { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 0 0 3px var(--accent-soft), 0 24px 60px -20px rgba(0,0,0,.5); }
.hero-prompt textarea { width: 100%; padding: 17px 18px 8px; resize: none; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 15px; line-height: 1.65; }
.hero-prompt textarea::placeholder { color: var(--faint); }
.hero-prompt-bar { display: flex; align-items: center; justify-content: space-between; padding: 10px 10px 10px 18px; }
.hero-prompt-bar > span { display: flex; align-items: center; gap: 6px; color: var(--faint); font-family: var(--mono); font-size: 11px; }
.hero-prompt-bar > span svg { color: var(--accent); }
.hero-prompt-bar button { display: flex; align-items: center; gap: 7px; height: 40px; padding: 0 18px; border: 0; border-radius: 9px; color: var(--accent-ink); background: var(--accent); font-size: 13.5px; font-weight: 600; transition: background .2s, box-shadow .2s, transform .2s; }
.hero-prompt-bar button:hover { background: var(--accent-strong); box-shadow: 0 6px 24px rgb(var(--accent-rgb) / .35); transform: translateY(-1px); }
.hero-proof { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 26px; color: var(--faint); font-family: var(--mono); font-size: 12px; }
.hero-proof p { margin: 0; transition: color .2s; }
.hero-proof:hover p { color: var(--body); }
.hero-proof b { color: var(--ink); font-weight: 600; }
.hero-proof > em { width: 1px; height: 12px; background: var(--line); }

/* ---------- hero product mock ---------- */
.hero-stage { position: relative; z-index: 2; margin-top: 68px; }
.hero-product { margin: 0 auto; overflow: hidden; border: 1px solid var(--line); border-radius: 14px 14px 0 0; border-bottom: 0; background: var(--surface); box-shadow: 0 0 0 8px rgba(255,255,255,.02), 0 -20px 80px -20px rgb(var(--accent-rgb) / .12), 0 30px 60px -30px rgba(0,0,0,.6); transition: transform .3s, box-shadow .3s; }
.hero-product:hover { transform: translateY(-4px); box-shadow: 0 0 0 8px rgba(255,255,255,.02), 0 -20px 80px -20px rgb(var(--accent-rgb) / .18), 0 40px 80px -30px rgba(0,0,0,.6); }
.window-bar { height: 42px; display: flex; align-items: center; gap: 16px; padding: 0 16px; border-bottom: 1px solid var(--line); background: var(--surface-2); }
.dots { display: flex; gap: 6px; }
.dots i { width: 9px; height: 9px; border-radius: 50%; background: #2f3b58; }
.dots i:first-child { background: #ff5f57; }
.dots i:nth-child(2) { background: #febc2e; }
.dots i:last-child { background: #28c840; }
.window-url { flex: 1 1; max-width: 280px; margin-inline: auto; padding: 5px 0; border: 1px solid var(--line); border-radius: 7px; color: var(--faint); background: var(--surface); font-family: var(--mono); font-size: 11px; text-align: center; }
.window-secure { display: flex; align-items: center; gap: 5px; color: var(--faint); font-family: var(--mono); font-size: 11px; }
.product-body { display: grid; grid-template-columns: .9fr 1.1fr; min-height: 440px; }
.chat-pane { display: flex; flex-direction: column; gap: 18px; padding: 26px; border-right: 1px solid var(--line); text-align: left; }
.workspace-title { display: flex; align-items: center; gap: 10px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.workspace-title > span { width: 28px; height: 28px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 8px; color: var(--accent); background: var(--surface-2); }
.workspace-title b, .workspace-title small { display: block; }
.workspace-title b { font-size: 12.5px; }
.workspace-title small { margin-top: 3px; color: var(--faint); font-size: 10px; }
.workspace-title em { margin-left: auto; display: flex; align-items: center; gap: 5px; color: var(--accent); font-family: var(--mono); font-size: 10px; font-style: normal; }
.workspace-title em::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.msg { display: flex; gap: 11px; }
.msg > span { flex: 0 0 28px; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; color: var(--body); background: var(--surface-2); font-size: 11px; font-weight: 600; }
.ai-avatar { color: var(--accent-ink) !important; background: var(--accent) !important; }
.msg p { padding-top: 4px; color: var(--ink); font-size: 13px; line-height: 1.7; }
.msg-user p { color: var(--body); }
.task-list { display: grid; grid-gap: 2px; gap: 2px; margin-top: 12px; }
.task { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 8px; color: var(--faint); font-size: 12px; }
.task i { width: 18px; height: 18px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; font-family: var(--mono); font-size: 9px; font-style: normal; }
.task.done { color: var(--body); }
.task.done i { border-color: transparent; color: var(--accent); background: var(--accent-soft); }
.task.doing { color: var(--ink); background: var(--surface-2); font-weight: 500; }
.task.doing i { border-color: var(--accent); color: var(--accent); background: transparent; }
.task.doing em { margin-left: auto; color: var(--accent); font-family: var(--mono); font-size: 10px; font-style: normal; }
.preview-pane { position: relative; display: grid; place-items: center; padding: 52px 42px 0; background: repeating-linear-gradient(45deg, #f1f5f9 0 8px, #eaf0f6 8px 16px); }
.preview-label { position: absolute; top: 13px; left: 16px; right: 16px; display: flex; align-items: center; gap: 6px; color: var(--body); font-family: var(--mono); font-size: 11px; }
.preview-label > i { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.preview-label span { margin-left: auto; color: var(--faint); }
.mini-site { width: 100%; max-width: 400px; align-self: end; overflow: hidden; border: 1px solid #495066; border-radius: 8px 8px 0 0; background: #faf7f2; box-shadow: 0 20px 50px -18px rgba(0,0,0,.55); }
.mini-nav { height: 42px; display: flex; align-items: center; justify-content: space-between; padding: 0 18px; border-bottom: 1px solid #eae5dc; }
.mini-nav b { color: #44382e; font-family: Georgia, serif; font-size: 14px; }
.mini-nav span { display: flex; gap: 10px; }
.mini-nav span i { width: 22px; height: 5px; border-radius: 3px; background: #e3dcd0; }
.mini-hero { padding: 30px 22px 24px; background: radial-gradient(circle at 82% 38%, #d3bba5 0 12%, transparent 12.5%); }
.mini-hero small { display: block; color: #a89a87; font-size: 7px; letter-spacing: .14em; }
.mini-hero b { display: block; max-width: 235px; margin: 9px 0 15px; color: #3c322a; font-family: Georgia, serif; font-size: 24px; font-weight: 500; line-height: 1.16; }
.mini-cta { display: inline-block; padding: 8px 13px; border-radius: 5px; color: #f6f1e8; background: #55402f; font-size: 9px; }
.mini-cards { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; gap: 10px; padding: 0 18px 5px; }
.mini-cards i { height: 58px; border-radius: 6px 6px 0 0; background: #ece5d8; }
.mini-cards i:nth-child(2) { background: #e0d5c3; }

/* ---------- impact + logos ---------- */
.impact-strip { border-bottom: 1px solid var(--line); background: var(--surface); }
.impact-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.impact-grid > div { padding: 34px 30px; text-align: center; }
.impact-grid > div:not(:last-child) { border-right: 1px solid var(--line); }
.impact-grid b, .impact-grid span { display: block; }
.impact-grid b { color: var(--accent); font-family: var(--mono); font-size: 26px; font-weight: 600; letter-spacing: -.03em; }
.impact-grid span { margin-top: 8px; color: var(--faint); font-size: 12px; }
/* These are audience categories, not logos, so every item gets the same treatment — the old strip
   varied serif/italic/tracking per position to fake distinct wordmarks, which would read as
   inconsistent styling once the items are plain labels. */
.audience-strip { padding: 48px 0; border-bottom: 1px solid var(--line); text-align: center; }
.audience-strip p { margin-bottom: 26px; color: var(--faint); font-family: var(--mono); font-size: 12px; }
.audience-tags { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px 12px; }
.audience-tags span { padding: 8px 16px; border: 1px solid var(--line); border-radius: 99px; color: var(--body); background: var(--surface); font-size: 13.5px; font-weight: 500; }

/* ---------- sections ---------- */
.section { padding-top: 108px; padding-bottom: 108px; }
.section-head { max-width: 620px; margin-bottom: 60px; }
.section-head.center { margin-inline: auto; text-align: center; }
.kicker { display: inline-block; margin-bottom: 18px; color: var(--accent); font-size: 12px; font-weight: 500; letter-spacing: .06em; text-transform: uppercase; }
.kicker::before { content: "// "; color: var(--faint); }
h2 { font-size: clamp(28px, 3.8vw, 40px); font-weight: 800; line-height: 1.2; letter-spacing: -.03em; }
.locale-zh h2 { font-weight: 700; letter-spacing: -.01em; }
.section-head p { margin-top: 18px; color: var(--body); font-size: 15.5px; line-height: 1.8; }

/* ---------- features ---------- */
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 16px; gap: 16px; }
.feature-card { padding: 28px 26px 32px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); transition: border-color .2s, transform .2s, box-shadow .2s; }
.feature-card:hover { border-color: #37456e; transform: translateY(-4px); box-shadow: 0 20px 40px -24px rgba(0,0,0,.6); }
.feature-icon { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 10px; color: var(--accent); background: var(--surface-2); }
.feature-card h3 { margin: 22px 0 10px; font-size: 16px; font-weight: 600; letter-spacing: -.01em; }
.feature-card p { color: var(--body); font-size: 14px; line-height: 1.75; }

/* ---------- no-token ---------- */
.no-token-section { padding: 80px 0; }
.no-token-inner { position: relative; padding: 48px 40px; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); overflow: hidden; }
.no-token-inner::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(ellipse 50% 60% at 0% 0%, rgb(var(--accent-rgb) / .1), transparent 70%); pointer-events: none; }
.no-token-inner > * { position: relative; z-index: 1; }
.no-token-head { max-width: 520px; margin-bottom: 36px; }
.no-token-badge { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; border: 1px solid rgb(var(--accent-rgb) / .3); border-radius: 99px; color: var(--accent); background: rgb(var(--accent-rgb) / .08); font-size: 14px; font-weight: 700; letter-spacing: .02em; }
.no-token-head p { margin-top: 16px; color: var(--body); font-size: 15px; line-height: 1.75; }
.no-token-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 16px; gap: 16px; }
.no-token-card { padding: 24px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); transition: border-color .15s; }
.no-token-card:hover { border-color: rgb(var(--accent-rgb) / .4); }
.no-token-card h4 { margin-bottom: 8px; font-size: 15px; font-weight: 600; color: var(--ink); }
.no-token-card p { color: var(--body); font-size: 13.5px; line-height: 1.7; }

/* ---------- how ---------- */
.how-section { border-block: 1px solid var(--line); background: var(--surface); }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 16px; gap: 16px; }
.step { padding: 26px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); }
.step > span { display: inline-block; margin-bottom: 20px; color: var(--accent); font-family: var(--mono); font-size: 13px; }
.step > span::before { content: "0"; }
.step h3 { margin-bottom: 10px; font-size: 16.5px; font-weight: 600; }
.step p { color: var(--body); font-size: 14px; line-height: 1.75; }

/* ---------- quote ---------- */
/* A surface-backed card rather than a bare accent rule: the block is centred and therefore does not
   share the page's left content edge, so it needs its own boundary to read as a deliberate section
   instead of text spilling out of the band above it. The brand accent lives in the avatar rather
   than in a left bar, which a rounded card clips into an awkward tapered sliver. */
.quote-card { max-width: 760px; margin-inline: auto; padding: 44px 48px; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); }
.quote-card blockquote { color: var(--ink); font-size: clamp(19px, 2.4vw, 25px); font-weight: 500; line-height: 1.65; letter-spacing: -.015em; }
.quote-author { display: flex; align-items: center; gap: 13px; margin-top: 30px; padding-top: 26px; border-top: 1px solid var(--line); }
.quote-author > span { flex: 0 0 auto; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; color: var(--accent); background: var(--accent-soft); font-family: var(--mono); font-size: 12px; font-weight: 600; }
.quote-author b { display: block; font-size: 14.5px; }
.quote-author small { display: block; margin-top: 3px; color: var(--faint); font-size: 12.5px; }

/* ---------- pricing ---------- */
/* Cards share one row track set (4 header rows + up to 6 feature rows) and opt into it via
   subgrid, so every row is as tall as its tallest cell across all cards. That keeps matching
   features on the same line no matter how differently each plan's wording wraps — reserving a
   fixed number of lines can't work, since copy length varies by plan, locale and card width. */
.pricing-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-column-gap: 14px; column-gap: 14px; grid-row-gap: 0; row-gap: 0; grid-template-rows: auto auto auto auto repeat(6, auto); }
.pricing-grid--five { grid-template-columns: repeat(5, 1fr); }
.pricing-region-link { margin-top: 16px; border: 0; padding: 0; color: var(--accent); background: transparent; font: inherit; font-weight: 650; cursor: pointer; text-decoration: underline; text-underline-offset: 4px; }
.price-card li a { color: var(--accent); font-weight: 600; }
.pricing-note { max-width: 760px; margin: 36px auto 0; color: var(--body); font-size: 13.5px; line-height: 1.8; text-align: center; }
.price-card { position: relative; display: grid; grid-row: span 10; grid-template-rows: subgrid; align-content: start; padding: 30px 26px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); }
.price-card.featured { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 24px 60px -28px rgb(var(--accent-rgb) / .35); }
.popular { position: absolute; top: -12px; right: 20px; padding: 4px 11px; border-radius: 99px; color: var(--accent-ink); background: var(--accent); font-family: var(--mono); font-size: 10px; font-weight: 600; }
.price-card h3 { font-family: var(--mono); font-size: 14px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.price-desc { margin-top: 8px; color: var(--body); font-size: 13.5px; line-height: 1.5; }
.price { display: flex; min-height: 50px; align-items: flex-end; gap: 8px; margin: 22px 0 24px; font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.price b { display: inline-flex; align-items: flex-start; color: var(--ink); font-weight: 700; line-height: .9; letter-spacing: -.045em; }
.price b sup { margin: 4px 3px 0 0; color: var(--body); font-size: 16px; font-weight: 600; line-height: 1; letter-spacing: 0; }
.price b strong { font-size: 43px; font-weight: 720; line-height: .9; }
.price > span { margin-bottom: 3px; color: var(--faint); font-size: 12px; line-height: 1.15; white-space: nowrap; }
.price-button { width: 100%; align-self: start; }
.featured .price-button { border-color: var(--accent); color: var(--accent-ink); background: var(--accent); }
.featured .price-button:hover { background: var(--accent-strong); border-color: var(--accent-strong); }
/* display: contents lifts the individual <li> into the card's subgrid so they land on the shared
   feature rows; the divider the <ul> used to draw moves onto the first item. */
.price-card ul { display: contents; list-style: none; }
.price-card li { display: flex; align-items: flex-start; gap: 9px; padding-bottom: 12px; color: var(--body); font-size: 14px; line-height: 1.25; }
.price-card li:first-child { margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--line); }
.price-card li svg { flex: 0 0 auto; margin-top: 1px; color: var(--accent); }
.pricing-pass-note { max-width: 680px; margin: 30px auto -16px; padding: 11px 16px; border: 1px solid rgb(var(--accent-rgb) / .24); border-radius: 9px; color: var(--body); background: rgb(var(--accent-rgb) / .06); font-size: 13px; line-height: 1.65; text-align: center; }

/* ---------- faq ---------- */
.faq-section { padding-top: 0; }
.faq-list { max-width: 720px; margin-inline: auto; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item:first-child { border-top: 1px solid var(--line); }
.faq-item button { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 21px 4px; border: 0; background: transparent; color: var(--ink); font-size: 15px; font-weight: 500; text-align: left; }
.faq-item button i { position: relative; flex: 0 0 18px; height: 18px; }
.faq-item button i::before, .faq-item button i::after { content: ""; position: absolute; inset: 8px 2px; background: var(--faint); transition: transform .2s; }
.faq-item button i::after { transform: rotate(90deg); }
.faq-item.open button i::after { transform: rotate(0deg); }
.faq-answer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .25s ease; }
.faq-answer p { min-height: 0; overflow: hidden; color: var(--body); font-size: 14.5px; line-height: 1.8; }
.faq-item.open .faq-answer p { padding: 0 40px 22px 4px; }
.faq-more { margin-top: 34px; color: var(--body); font-size: 14px; text-align: center; }
.faq-more a { color: var(--accent); }
.faq-more a:hover { text-decoration: underline; }

/* ---------- final cta ---------- */
.final-cta { position: relative; margin-bottom: 108px; padding: clamp(48px, 7vw, 84px) 32px; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); color: var(--ink); text-align: center; overflow: hidden; }
.final-cta::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(ellipse 60% 50% at 50% 0%, rgb(var(--accent-rgb) / .15), transparent 70%); pointer-events: none; }
.final-cta > * { position: relative; z-index: 1; }
.final-cta h2 { color: var(--ink); font-size: clamp(26px, 3.6vw, 38px); font-weight: 700; letter-spacing: -.02em; }
.final-cta h2::after { content: ""; display: block; width: 48px; height: 3px; margin: 20px auto 0; border-radius: 2px; background: var(--accent); }
.final-cta p { max-width: 440px; margin: 24px auto 36px; color: var(--body); font-size: 15.5px; line-height: 1.75; }

/* ---------- footer ---------- */
footer { border-top: 1px solid var(--line); background: #edf3f8; }
.footer-main { display: flex; justify-content: space-between; gap: 60px; padding-block: 60px; }
.footer-brand p { margin-top: 16px; color: var(--body); font-size: 14px; }
.footer-links { display: grid; grid-template-columns: repeat(3, minmax(120px, auto)); grid-gap: 40px; gap: 40px; }
.footer-links div { display: flex; flex-direction: column; gap: 12px; }
.footer-links b { margin-bottom: 6px; font-size: 13.5px; }
.footer-links a { color: var(--body); font-size: 13.5px; transition: color .15s; }
.footer-links a:hover { color: var(--accent); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding-block: 22px; border-top: 1px solid var(--line); color: var(--faint); font-family: var(--mono); font-size: 12px; }
.footer-bottom div { display: flex; gap: 24px; }

/* ---------- legal pages ---------- */
.legal-hero { max-width: 720px; padding: 68px 0 40px; }
.legal-hero h1 { margin: 16px 0 12px; font-size: clamp(32px, 4.6vw, 44px); font-weight: 700; letter-spacing: -.03em; }
.legal-updated { color: var(--faint); font-family: var(--mono); font-size: 12.5px; }
.legal-intro { margin-top: 20px; color: var(--body); font-size: 15.5px; line-height: 1.8; }
.legal-body { display: grid; grid-template-columns: 240px 1fr; grid-gap: 56px; gap: 56px; padding-bottom: 100px; border-top: 1px solid var(--line); }
.legal-toc { position: -webkit-sticky; position: sticky; top: 88px; align-self: start; display: flex; flex-direction: column; gap: 10px; padding-top: 40px; }
.legal-toc span { margin-bottom: 6px; color: var(--faint); font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; }
.legal-toc a { color: var(--body); font-size: 13.5px; line-height: 1.6; transition: color .15s; }
.legal-toc a:hover { color: var(--accent); }
.legal-content { max-width: 680px; padding-top: 40px; }
.legal-content article { padding-bottom: 34px; margin-bottom: 34px; border-bottom: 1px solid var(--line); scroll-margin-top: 88px; }
.legal-content article:last-of-type { border-bottom: 0; }
.legal-content h2 { margin-bottom: 16px; font-size: 19px; font-weight: 600; letter-spacing: -.01em; }
.legal-content p { color: var(--body); font-size: 15px; line-height: 1.85; }
.legal-content ul { display: grid; grid-gap: 10px; gap: 10px; margin: 14px 0; padding-left: 20px; color: var(--body); font-size: 15px; line-height: 1.8; }
.legal-content li::marker { color: var(--accent); }
.legal-content p + ul, .legal-content ul + p { margin-top: 14px; }
.legal-content b { color: var(--ink); font-weight: 600; }
.legal-content a { color: var(--accent); }
.legal-content a:hover { text-decoration: underline; }
.legal-contact { padding-top: 8px; color: var(--body); font-size: 14.5px; }

/* ---------- editorial and about pages ---------- */
.content-page { color: var(--ink); }
.content-hero { padding-block: 92px 68px; text-align: center; }
.content-hero h1 { margin: 18px 0 22px; font-size: clamp(42px, 6vw, 68px); line-height: 1.08; letter-spacing: -.04em; }
.content-hero h1 span { color: var(--accent); }
.content-hero > p { max-width: 650px; margin-inline: auto; color: var(--body); font-size: 17px; line-height: 1.8; }
.blog-index { padding-bottom: 112px; }
.blog-featured { display: grid; grid-template-columns: minmax(280px, .92fr) 1.08fr; min-height: 430px; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); transition: transform .2s, border-color .2s, box-shadow .2s; }
.blog-featured:hover { transform: translateY(-3px); border-color: rgb(var(--accent-rgb) / .38); box-shadow: 0 30px 70px -40px rgba(0,0,0,.6); }
.blog-featured-art, .blog-card-art { position: relative; display: grid; place-items: center; overflow: hidden; color: var(--accent); background: radial-gradient(circle at 68% 32%, rgb(var(--accent-rgb) / .26), transparent 24%), linear-gradient(145deg, #101b2d, #0b1220 60%, #102b28); }
.blog-featured-art::before, .blog-card-art::before { content: ""; position: absolute; inset: 0; opacity: .34; background: linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px); background-size: 40px 40px; -webkit-mask-image: linear-gradient(135deg, black, transparent 78%); mask-image: linear-gradient(135deg, black, transparent 78%); }
.blog-featured-art > span, .blog-card-art > span { position: absolute; top: 24px; left: 26px; color: rgba(255,255,255,.28); font-family: var(--mono); font-size: 12px; letter-spacing: .12em; }
.blog-featured-art svg, .blog-card-art svg { position: relative; filter: drop-shadow(0 0 24px rgb(var(--accent-rgb) / .6)); }
.blog-featured-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(34px, 5vw, 64px); }
.blog-category { color: var(--accent); font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.blog-featured-copy h2 { margin: 17px 0 16px; font-size: clamp(27px, 3.4vw, 40px); line-height: 1.22; letter-spacing: -.03em; }
.blog-featured-copy > p, .blog-card-body > p { color: var(--body); font-size: 14.5px; line-height: 1.8; }
.blog-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 22px; color: var(--faint); font-family: var(--mono); font-size: 11px; }
.blog-featured-copy > b { display: inline-flex; align-items: center; gap: 8px; margin-top: 32px; color: var(--ink); font-size: 13px; }
.blog-featured-copy > b svg { color: var(--accent); transition: transform .15s; }
.blog-featured:hover .blog-featured-copy > b svg { transform: translateX(4px); }
.blog-grid { display: grid; grid-template-columns: repeat(2, 1fr); grid-gap: 24px; gap: 24px; margin-top: 24px; }
.blog-card { overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: var(--surface); transition: transform .2s, border-color .2s; }
.blog-card:hover { transform: translateY(-3px); border-color: rgb(var(--accent-rgb) / .34); }
.blog-card > a { display: block; height: 100%; }
.blog-card-art { height: 190px; }
.blog-card-art--2 { background: radial-gradient(circle at 34% 64%, rgba(96,165,250,.25), transparent 25%), linear-gradient(145deg, #111a2b, #0c1322 60%, #15213b); color: #60a5fa; }
.blog-card-art--3 { background: radial-gradient(circle at 72% 38%, rgb(var(--ai-rgb) / .28), transparent 25%), linear-gradient(145deg, #161328, #0c1220 60%, #241b3c); color: var(--ai); }
.blog-card-body { padding: 28px; }
.blog-card-body h2 { margin: 13px 0 12px; font-size: 21px; line-height: 1.4; letter-spacing: -.02em; }
.content-newsletter { display: flex; align-items: center; justify-content: space-between; gap: 36px; margin-bottom: 108px; padding: 44px 48px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); }
.content-newsletter h2 { margin: 10px 0 8px; font-size: 25px; }
.content-newsletter p { color: var(--body); font-size: 14px; }
.content-newsletter .button { flex: 0 0 auto; }
.article-header { max-width: 850px; padding-block: 72px 56px; text-align: center; }
.article-back { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 38px; color: var(--body); font-size: 13px; }
.article-back svg { transform: rotate(180deg); }
.article-back:hover { color: var(--accent); }
.article-header h1 { margin: 18px 0 22px; font-size: clamp(36px, 5.5vw, 58px); line-height: 1.14; letter-spacing: -.04em; }
.article-header > p { max-width: 720px; margin-inline: auto; color: var(--body); font-size: 17px; line-height: 1.8; }
.article-header .blog-meta { justify-content: center; margin-top: 28px; }
.article-rule { height: 1px; background: var(--line); }
.article-layout { display: grid; grid-template-columns: 210px minmax(0, 720px); justify-content: center; grid-gap: 64px; gap: 64px; padding-block: 56px 110px; }
.article-layout > aside { position: -webkit-sticky; position: sticky; top: 94px; align-self: start; display: flex; flex-direction: column; gap: 12px; }
.article-layout > aside span { margin-bottom: 4px; color: var(--faint); font-family: var(--mono); font-size: 10.5px; letter-spacing: .08em; }
.article-layout > aside a { color: var(--body); font-size: 12.5px; line-height: 1.55; }
.article-layout > aside a:hover { color: var(--accent); }
.article-content > section { margin-bottom: 48px; scroll-margin-top: 96px; }
.article-content > section h2 { margin-bottom: 18px; font-size: 25px; letter-spacing: -.02em; }
.article-content > section p { margin-bottom: 17px; color: var(--body); font-size: 16px; line-height: 1.95; }
.article-content > section ul { display: grid; grid-gap: 10px; gap: 10px; margin: 22px 0; padding: 20px 24px 20px 45px; border: 1px solid var(--line); border-radius: 12px; color: var(--body); background: var(--surface); font-size: 15px; line-height: 1.75; }
.article-content > section li::marker { color: var(--accent); }
.article-cta { display: grid; grid-template-columns: auto 1fr auto; align-items: center; grid-gap: 18px; gap: 18px; margin-top: 64px; padding: 24px; border: 1px solid rgb(var(--accent-rgb) / .26); border-radius: 14px; background: rgb(var(--accent-rgb) / .06); }
.article-cta > span { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 10px; color: var(--accent); background: var(--surface); }
.article-cta h2 { margin-bottom: 5px; font-size: 17px; }
.article-cta p { color: var(--body); font-size: 12.5px; line-height: 1.55; }
.related-posts { padding-bottom: 108px; }
.related-posts .section-head { margin-bottom: 0; }
.related-posts .blog-card-body { min-height: 270px; }
.about-hero { position: relative; overflow: hidden; padding-block: 112px 106px; border-bottom: 1px solid var(--line); text-align: center; }
.about-hero::before { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse 45% 62% at 50% 10%, rgb(var(--accent-rgb) / .14), transparent 70%); pointer-events: none; }
.about-hero > div { position: relative; }
.about-hero h1 { margin: 20px 0 26px; font-size: clamp(42px, 6.2vw, 70px); line-height: 1.1; letter-spacing: -.045em; }
.about-hero h1 span { color: var(--accent); }
.about-hero p { max-width: 720px; margin-inline: auto; color: var(--body); font-size: 17px; line-height: 1.85; }
.about-hero-actions { display: flex; justify-content: center; gap: 12px; margin-top: 36px; }
.about-statement { display: grid; grid-template-columns: .8fr 1.2fr; grid-gap: 80px; gap: 80px; padding-block: 100px; }
.about-statement h2 { margin-top: 13px; font-size: clamp(30px, 4vw, 44px); letter-spacing: -.03em; }
.about-statement > p { color: var(--body); font-size: 17px; line-height: 1.95; }
.about-system { padding-block: 92px; border-block: 1px solid var(--line); background: var(--surface); }
/* Flex rather than a fixed 7-column grid so the row adapts if the number of steps in the copy ever
   changes; cards share the space evenly and the arrows only take the width they need. */
.about-system-flow { display: flex; align-items: center; gap: 16px; }
.about-system-flow > div { flex: 1 1; min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 22px 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); text-align: center; }
.about-system-flow > div > span { width: 48px; height: 48px; display: grid; place-items: center; margin-bottom: 18px; border-radius: 12px; color: var(--accent); background: var(--accent-soft); }
.about-system-flow b { font-size: 14px; }
.about-system-flow small { margin-top: 7px; color: var(--faint); font-size: 11px; }
.about-system-flow > i { flex: 0 0 auto; color: var(--faint); }
.about-principles { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.about-principles article { min-height: 230px; padding: 34px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.about-principles article > span { color: var(--accent); font-family: var(--mono); font-size: 11px; }
.about-principles h3 { margin: 34px 0 12px; font-size: 20px; }
.about-principles p { color: var(--body); font-size: 14px; line-height: 1.8; }
/* start, not center: the two columns are never the same height, and centring left the panel's top and
   bottom edges floating ~30px off every element in the copy column. */
.about-architecture { display: grid; grid-template-columns: 1fr .9fr; align-items: start; grid-gap: 80px; gap: 80px; padding-bottom: 108px; }
.about-architecture-copy h2 { margin: 14px 0 20px; font-size: 36px; letter-spacing: -.03em; }
.about-architecture-copy > p { color: var(--body); font-size: 15px; line-height: 1.9; }
.about-architecture-copy ul { display: grid; grid-gap: 14px; gap: 14px; margin: 28px 0 0; padding: 0; list-style: none; }
.about-architecture-copy li { display: flex; gap: 11px; color: var(--body); font-size: 13.5px; line-height: 1.6; }
.about-architecture-copy li svg { flex: 0 0 auto; margin-top: 2px; color: var(--accent); }
.about-architecture-visual { padding: 24px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); box-shadow: 0 24px 60px -36px rgba(0,0,0,.7); }
.about-architecture-visual > span { display: block; margin-bottom: 14px; color: var(--faint); font-family: var(--mono); font-size: 10px; letter-spacing: .08em; }
/* The step name and its description are stacked instead of pushed to opposite ends of the row: at this
   panel width the old `35px 1fr auto` layout left ~370px between "PLAN" and the text describing it,
   so the pair read as two unrelated columns. The index spans both lines. */
.about-architecture-visual > div { display: grid; grid-template-columns: 32px minmax(0, 1fr); grid-gap: 5px 12px; gap: 5px 12px; padding: 15px 12px; border-top: 1px solid var(--line); color: var(--ink); }
.about-architecture-visual i { grid-row: span 2; align-self: start; color: var(--accent); font-family: var(--mono); font-size: 10px; font-style: normal; }
.about-architecture-visual b { font-family: var(--mono); font-size: 12px; }
.about-architecture-visual small { color: var(--faint); font-size: 11px; }
.about-contact { display: flex; align-items: center; justify-content: space-between; gap: 56px; margin-bottom: 108px; padding: 58px; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); }
/* The copy column takes whatever the actions column leaves. The heading used to carry a fixed
   max-width: 600px that capped it ~200px short of the card's inner width, which wasted the space and
   pushed the last CJK character onto a line of its own; text-wrap keeps that orphan from coming back
   at other widths. The sentence below stays capped at a readable measure on purpose — it is body
   copy, and the full column width would run to ~90 characters. */
.about-contact > div:first-child { flex: 1 1 auto; min-width: 0; }
.about-contact h2 { margin: 13px 0 14px; font-size: clamp(28px, 4vw, 40px); line-height: 1.28; text-wrap: balance; }
.about-contact p { max-width: 68ch; color: var(--body); font-size: 14.5px; line-height: 1.75; }
.about-contact > div:last-child { flex: 0 0 auto; display: flex; flex-direction: column; align-items: stretch; gap: 12px; text-align: center; }
.about-contact > div:last-child > a:last-child { color: var(--body); font-size: 12px; }
.about-contact > div:last-child > a:last-child:hover { color: var(--accent); }

/* ---------- changelog ---------- */
.changelog-hero { position: relative; overflow: hidden; padding-block: 88px 76px; border-bottom: 1px solid var(--line); }
.changelog-hero::before { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse 42% 80% at 80% 0%, rgb(var(--accent-rgb) / .13), transparent 70%); pointer-events: none; }
.changelog-hero > div { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 60px; }
.changelog-hero h1 { margin: 18px 0 20px; font-size: clamp(42px, 6vw, 66px); line-height: 1.1; letter-spacing: -.045em; }
.changelog-hero h1 span { color: var(--accent); }
.changelog-hero p { max-width: 590px; color: var(--body); font-size: 16.5px; line-height: 1.8; }
.changelog-latest { position: relative; flex: 0 0 220px; display: flex; flex-direction: column; padding: 28px; border: 1px solid rgb(var(--accent-rgb) / .28); border-radius: 16px; background: var(--surface); box-shadow: 0 24px 60px -36px rgba(0,0,0,.7); }
.changelog-latest > span { color: var(--faint); font-family: var(--mono); font-size: 10px; letter-spacing: .08em; }
.changelog-latest b { margin: 12px 0 8px; color: var(--accent); font-family: var(--mono); font-size: 29px; }
.changelog-latest small { color: var(--body); font-size: 11px; }
.changelog-latest i { position: absolute; top: 16px; right: 16px; padding: 4px 7px; border-radius: 99px; color: var(--accent-ink); background: var(--accent); font-size: 9px; font-style: normal; font-weight: 700; }
.changelog-summary { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: -1px; border-left: 1px solid var(--line); }
.changelog-summary > div { display: flex; flex-direction: column; align-items: center; gap: 7px; padding: 28px 16px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--surface); }
.changelog-summary b { font-family: var(--mono); font-size: 22px; }
.changelog-summary span { color: var(--faint); font-size: 11px; }
.changelog-layout { display: grid; grid-template-columns: 190px minmax(0, 760px); justify-content: center; grid-gap: 72px; gap: 72px; padding-block: 80px 112px; }
.changelog-layout > aside { position: -webkit-sticky; position: sticky; top: 92px; align-self: start; display: flex; flex-direction: column; }
.changelog-layout > aside > span { margin-bottom: 14px; color: var(--faint); font-family: var(--mono); font-size: 10px; letter-spacing: .08em; }
.changelog-layout > aside a { display: grid; grid-template-columns: 10px 1fr auto; align-items: center; grid-gap: 9px; gap: 9px; padding: 9px 6px; border-radius: 7px; color: var(--body); font-family: var(--mono); font-size: 11.5px; }
.changelog-layout > aside a:hover { color: var(--ink); background: var(--surface); }
.changelog-layout > aside a > i { width: 6px; height: 6px; border: 1px solid var(--faint); border-radius: 50%; }
.changelog-layout > aside a > i.major { border-color: var(--accent); background: var(--accent); box-shadow: 0 0 8px rgb(var(--accent-rgb) / .45); }
.changelog-layout > aside small { color: var(--faint); font-family: var(--mono); font-size: 9px; }
.changelog-list { min-width: 0; }
.release-card { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr); padding-bottom: 72px; scroll-margin-top: 92px; }
.release-card:last-child { padding-bottom: 0; }
.release-rail { position: relative; grid-row: 1 / span 2; }
.release-rail > i { position: absolute; z-index: 1; top: 7px; left: 0; width: 13px; height: 13px; border: 3px solid var(--bg); border-radius: 50%; background: var(--faint); box-shadow: 0 0 0 1px var(--line); }
.release-card--major .release-rail > i { background: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 14px rgb(var(--accent-rgb) / .38); }
.release-rail > span { position: absolute; top: 22px; bottom: -68px; left: 6px; width: 1px; background: var(--line); }
.release-card:last-child .release-rail > span { display: none; }
.release-card > header { grid-column: 2; }
.release-version { display: flex; align-items: center; gap: 10px; }
.release-version > span { color: var(--accent); font-family: var(--mono); font-size: 12px; font-weight: 600; }
.release-version > em { padding: 4px 7px; border: 1px solid rgb(var(--accent-rgb) / .24); border-radius: 99px; color: var(--accent); background: rgb(var(--accent-rgb) / .07); font-size: 9px; font-style: normal; font-weight: 600; }
.release-card time { display: block; margin-top: 8px; color: var(--faint); font-family: var(--mono); font-size: 10.5px; }
.release-card > header h2 { margin: 18px 0 11px; font-size: clamp(24px, 3vw, 32px); letter-spacing: -.025em; }
.release-card > header p { max-width: 680px; color: var(--body); font-size: 14.5px; line-height: 1.8; }
.release-changes { grid-column: 2; display: grid; grid-gap: 1px; gap: 1px; margin-top: 26px; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: var(--line); }
.release-change { display: grid; grid-template-columns: 58px 1fr; align-items: start; grid-gap: 14px; gap: 14px; padding: 20px; background: var(--surface); }
.change-kind { display: inline-flex; justify-content: center; padding: 4px 7px; border-radius: 5px; font-family: var(--mono); font-size: 9px; font-weight: 600; }
.change-kind--new { color: #0b8c69; background: rgb(var(--accent-rgb) / .13); }
:root[data-theme="dark"] .change-kind--new { color: #55e6ba; }
.change-kind--improved { color: #3972bd; background: rgba(96,165,250,.13); }
:root[data-theme="dark"] .change-kind--improved { color: #82b8ff; }
.change-kind--fixed { color: #a96117; background: rgba(251,191,36,.13); }
:root[data-theme="dark"] .change-kind--fixed { color: #f9c75d; }
.release-change h3 { margin-bottom: 6px; font-size: 14px; }
.release-change p { color: var(--body); font-size: 12.5px; line-height: 1.7; }
.changelog-subscribe { display: flex; align-items: center; justify-content: space-between; gap: 40px; margin-bottom: 108px; padding: 38px 44px; border: 1px solid rgb(var(--accent-rgb) / .25); border-radius: 16px; background: rgb(var(--accent-rgb) / .055); }
.changelog-subscribe > div { display: flex; align-items: center; gap: 18px; }
.changelog-subscribe > div > span { flex: 0 0 48px; height: 48px; display: grid; place-items: center; border-radius: 12px; color: var(--accent); background: var(--surface); }
.changelog-subscribe h2 { margin-bottom: 6px; font-size: 22px; }
.changelog-subscribe p { color: var(--body); font-size: 13px; }
.changelog-subscribe .button { flex: 0 0 auto; }

/* ---------- auth pages ---------- */
.auth-shell { min-height: calc(100vh - 64px); display: grid; place-items: center; padding: 56px 20px; background: radial-gradient(ellipse 60% 45% at 50% 0%, rgb(var(--accent-rgb) / .08), transparent 70%); }
.auth-card { width: min(400px, 100%); padding: 32px 28px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); box-shadow: 0 24px 60px -28px rgba(0,0,0,.6); }
.auth-head { margin-bottom: 24px; text-align: center; }
.auth-head > span { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; margin-bottom: 14px; border: 1px solid var(--line); border-radius: 9px; color: var(--accent); background: var(--surface-2); }
.auth-head h1 { font-size: 22px; font-weight: 700; letter-spacing: -.02em; }
.auth-head p { margin-top: 8px; color: var(--body); font-size: 13.5px; }
.auth-card label { display: block; margin: 16px 0 7px; color: var(--ink); font-size: 13px; font-weight: 500; }
.auth-card label:first-of-type { margin-top: 0; }
.auth-card input { width: 100%; height: 42px; padding: 0 13px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: var(--bg); font-size: 14px; transition: border-color .15s, box-shadow .15s; }
.auth-card input:focus { outline: 0; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.auth-card input::placeholder { color: var(--faint); }
.auth-card > button { width: 100%; height: 44px; margin-top: 22px; border: 1px solid var(--accent); border-radius: 9px; color: var(--accent-ink); background: var(--accent); font-size: 14px; font-weight: 600; transition: background .15s; }
.auth-card > button:hover:not(:disabled) { background: var(--accent-strong); }
.auth-card > button:disabled { cursor: not-allowed; opacity: .5; }
.auth-error { margin: 13px 0 0; color: var(--danger); font-size: 13px; text-align: center; }
.auth-hint { margin: 15px 0 0; color: var(--faint); font-size: 11.5px; text-align: center; }
.auth-hint a { color: var(--body); text-decoration: underline; text-underline-offset: 2px; }
.auth-hint a:hover { color: var(--accent); }
.auth-code-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-gap: 9px; gap: 9px; }
.auth-code-row button { min-width: 104px; padding: 0 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--body); background: var(--surface-2); font-size: 12px; font-weight: 600; }
.auth-code-row button:hover:not(:disabled) { color: var(--ink); border-color: var(--accent); }
.auth-code-row button:disabled { cursor: not-allowed; opacity: .55; }
.auth-code-message { margin: 7px 0 0; color: var(--accent); font-size: 11px; }
.auth-consents { display: grid; grid-gap: 9px; gap: 9px; margin: 14px 0 2px; }
.auth-consents label { display: flex; align-items: flex-start; gap: 9px; margin: 0; color: var(--muted); font-size: 12px; font-weight: 400; line-height: 1.5; cursor: pointer; }
.auth-consents input { flex: 0 0 auto; width: 15px; height: 15px; margin: 2px 0 0; padding: 0; border-radius: 3px; accent-color: var(--accent); }
.auth-consents a { color: var(--body); text-decoration: underline; text-underline-offset: 2px; }
.auth-consents a:hover { color: var(--accent); }
.auth-switch { margin: 18px 0 0; padding-top: 18px; border-top: 1px solid var(--line); color: var(--body); font-size: 13.5px; text-align: center; }
.auth-switch a { color: var(--accent); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.auth-google { width: 100%; min-height: 44px; display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 0; border: 1px solid var(--line) !important; border-radius: 8px !important; color: var(--ink) !important; background: var(--surface) !important; font-size: 13px !important; font-weight: 600 !important; transition: border-color .15s, background .15s; }
.auth-google:hover { border-color: var(--body) !important; background: var(--surface-2) !important; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 18px 0; color: var(--faint); font-size: 11px; }
.auth-divider::before, .auth-divider::after { content: ""; flex: 1 1; height: 1px; background: var(--line); }
.auth-divider span { white-space: nowrap; }

/* ---------- builder page (three-column layout) ---------- */
.builder-page { --builder-text: 14px; --builder-meta: 11.5px; --builder-code: 12.5px; --builder-title: 13.5px; min-height: 100vh; color: var(--ink); background: var(--bg); font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.builder-page.builder-three-col { display: grid; grid-template-columns: 260px 3px 1fr 3px 1.3fr; height: 100vh; overflow: hidden; }
/* Keep a usable 3px drag target, but draw only a centered 1px divider. Previously the whole
   handle was painted and stacked next to the sidebar's own 1px border, appearing as a 4px line. */
.builder-resize-handle { position: relative; z-index: 10; width: 3px; cursor: col-resize; background: transparent; }
.builder-resize-handle::before { content: ""; position: absolute; inset: 0 auto 0 50%; width: 1px; transform: translateX(-50%); background: var(--line); transition: background .15s; }
.builder-resize-handle:hover::before, .builder-resize-handle:active::before { background: var(--accent); }
body.resizing iframe, body.resizing .builder-preview-panel { pointer-events: none !important; }
body.resizing * { cursor: col-resize !important; }
.builder-loading { min-height: 100vh; display: grid; place-items: center; }
.builder-loading > i { width: 34px; height: 34px; border: 3px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: builder-spin 1s linear infinite; }
.builder-page button:disabled { cursor: not-allowed; opacity: .4; }
.builder-error { margin: 14px 0 0; color: var(--danger); font-size: 13px; text-align: center; }
.builder-quota { padding: 4px 9px; border: 1px solid var(--line); border-radius: 999px; color: var(--body); background: var(--surface-2); font-size: 11px; white-space: nowrap; }

/* ── sidebar ── */
.builder-sidebar { display: flex; flex-direction: column; background: var(--surface); overflow: hidden; min-width: 0; }
.builder-sidebar-head { display: flex; align-items: center; justify-content: space-between; height: 42px; padding: 0 16px; border-bottom: 1px solid var(--line); }
.builder-new-app-btn { display: flex; align-items: center; gap: 5px; padding: 6px 12px; border: 1px solid var(--accent); border-radius: 8px; color: var(--accent-ink); background: var(--accent); font-size: 12px; font-weight: 600; transition: background .15s, box-shadow .15s; white-space: nowrap; }
.builder-new-app-btn:hover:not(:disabled) { background: var(--accent-strong); box-shadow: 0 4px 12px rgb(var(--accent-rgb) / .2); }
.builder-new-app-btn:disabled { background: var(--surface-2); border-color: var(--line); color: var(--body); opacity: .6; cursor: not-allowed; }
.builder-sidebar-label { padding: 8px 16px 4px; font-size: 11px; font-weight: 600; color: var(--faint); text-transform: uppercase; letter-spacing: .05em; }
/* plan tag is defined in sidebar-user section */
.builder-history { flex: 1 1; overflow-y: auto; padding: 4px 8px; }
.builder-history-item { display: flex; flex-direction: column; gap: 4px; width: 100%; padding: 10px 12px; border: 1px solid transparent; border-radius: 8px; text-align: left; background: transparent; transition: background .1s, border-color .1s; }
.builder-history-item:hover { background: var(--surface-2); }
.builder-history-item.active { background: var(--bg); border-color: var(--line); }
.builder-history-prompt { font-size: 12.5px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.builder-history-meta { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--faint); }
.builder-history-status { width: 6px; height: 6px; border-radius: 50%; background: var(--faint); }
.builder-history-status--completed { background: var(--accent); }
.builder-history-status--running { background: #60a5fa; animation: builder-pulse 1.4s infinite; }
.builder-history-status--failed { background: var(--danger); }
/* app tree */
.builder-app-group { margin-bottom: 2px; }
.builder-app-group.active > .builder-app-header { background: var(--bg); }
.builder-app-header { display: flex; align-items: center; gap: 2px; padding: 2px 4px 2px 8px; border-radius: 6px; transition: background .1s; }
.builder-app-header:hover { background: var(--surface-2); }
.builder-app-toggle { flex-shrink: 0; width: 20px; height: 20px; display: grid; place-items: center; border: 0; padding: 0; background: transparent; color: var(--faint); transition: transform .15s; transform: rotate(-90deg); }
.builder-app-toggle.expanded { transform: rotate(0deg); }
.builder-app-name { flex: 1 1; min-width: 0; display: flex; align-items: center; gap: 6px; padding: 6px 4px; border: 0; background: transparent; text-align: left; }
.builder-app-title { font-size: var(--builder-title); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.builder-app-actions { display: flex; align-items: center; gap: 2px; flex-shrink: 0; opacity: 0; transition: opacity .15s; }
.builder-app-header:hover .builder-app-actions, .builder-app-group.active .builder-app-actions { opacity: 1; }
.builder-app-add { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--line); border-radius: 5px; background: transparent; color: var(--accent); font-size: 15px; line-height: 1; padding: 0 0 1px; }
.builder-app-add:hover { background: var(--surface-2); }
.builder-app-menu-btn { flex-shrink: 0; width: 22px; height: 20px; display: grid; place-items: center; border: 0; border-radius: 5px; background: transparent; color: var(--faint); }
.builder-app-menu-btn:hover { background: var(--surface-2); color: var(--ink); }
/* context menu */
.builder-app-header { position: relative; }
.builder-app-menu { position: absolute; top: 100%; right: 4px; z-index: 50; min-width: 120px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); box-shadow: 0 8px 24px rgba(0,0,0,.35); }
.builder-app-menu button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 10px; border: 0; border-radius: 5px; background: transparent; color: var(--body); font-size: 12px; text-align: left; transition: background .1s; }
.builder-app-menu button:hover { background: var(--surface-2); }
.builder-app-menu .builder-menu-danger { color: #f87171; }
.builder-app-menu .builder-menu-danger:hover { background: rgba(248,113,113,.1); }
/* rename inline */
.builder-rename-form { flex: 1 1; min-width: 0; }
.builder-rename-form input { width: 100%; padding: 4px 8px; border: 1px solid var(--accent); border-radius: 5px; background: var(--bg); color: var(--ink); font-size: 12px; outline: none; }
/* confirm modal */
.builder-modal-overlay { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; background: rgba(23,34,53,.28); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.builder-modal { width: 90%; max-width: 380px; padding: 24px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); box-shadow: 0 16px 48px rgba(0,0,0,.4); }
.builder-modal h3 { margin: 0 0 8px; font-size: 16px; font-weight: 600; color: var(--ink); }
.builder-modal p { margin: 0 0 20px; font-size: 13px; color: var(--body); line-height: 1.6; }
.builder-modal-actions { display: flex; justify-content: flex-end; gap: 8px; }
.builder-modal-cancel { padding: 7px 16px; border: 1px solid var(--line); border-radius: 7px; background: transparent; color: var(--body); font-size: 13px; }
.builder-modal-cancel:hover { background: var(--surface-2); }
.builder-modal-confirm { padding: 7px 16px; border: 0; border-radius: 7px; background: #ef4444; color: #fff; font-size: 13px; font-weight: 600; }
.builder-modal-confirm:hover { background: #dc2626; }
.builder-app-rounds { padding: 2px 0 4px 30px; }
.builder-round-item { display: flex; align-items: center; gap: 4px; width: 100%; padding: 2px 4px; border: 0; border-radius: 4px; background: transparent; text-align: left; transition: background .1s; position: relative; }
.builder-round-item:hover { background: var(--surface-2); }
.builder-round-btn { display: flex; align-items: center; gap: 6px; flex: 1 1; min-width: 0; padding: 2px 4px; border: 0; border-radius: 4px; background: transparent; text-align: left; color: inherit; cursor: pointer; }
.builder-round-menu-btn { flex-shrink: 0; width: 22px; height: 20px; display: grid; place-items: center; border: 0; border-radius: 4px; background: transparent; color: var(--faint); opacity: 0; transition: opacity .1s, background .1s; cursor: pointer; }
.builder-round-item:hover .builder-round-menu-btn { opacity: 1; }
.builder-round-menu-btn:hover { background: var(--line); color: var(--ink); }
.builder-round-menu { position: absolute; right: 0; top: 100%; z-index: 30; min-width: 120px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); box-shadow: 0 8px 24px rgba(0,0,0,.35); }
.builder-round-menu button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 10px; border: 0; border-radius: 5px; background: transparent; color: var(--body); font-size: 12px; transition: background .1s, color .1s; cursor: pointer; }
.builder-round-menu button:hover { background: var(--surface-2); color: var(--ink); }
.builder-round-item .builder-rename-form { flex: 1 1; }
.builder-round-item .builder-rename-form input { width: 100%; padding: 2px 6px; border: 1px solid var(--accent); border-radius: 4px; background: var(--bg); color: var(--ink); font-size: 11px; outline: none; }
.builder-round-num { flex-shrink: 0; font-family: var(--mono); font-size: 11px; color: var(--faint); }
.builder-round-text { font-size: var(--builder-meta); color: var(--body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.builder-round-empty { display: block; padding: 4px 8px; font-size: 11px; color: var(--faint); }
.builder-round-empty-btn { border: 0; background: transparent; cursor: pointer; border-radius: 4px; width: 100%; text-align: left; transition: color .1s, background .1s; }
.builder-round-empty-btn:hover { color: var(--body); background: var(--surface-2); }
.builder-history-empty { padding: 20px 12px; color: var(--faint); font-size: 12px; text-align: center; }
.builder-sidebar-footer { position: relative; border-top: 1px solid var(--line); }
.builder-user-card { width: 100%; display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 0; text-align: left; background: transparent; transition: background .1s; }
.builder-user-card:hover { background: var(--surface-2); }
.builder-user-avatar { flex-shrink: 0; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; background: linear-gradient(135deg, var(--accent), #3b82f6); color: #fff; font-size: 13px; font-weight: 700; }
.builder-user-detail { flex: 1 1; min-width: 0; }
.builder-user-detail b { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.builder-user-detail small { display: block; margin-top: 1px; font-size: var(--builder-meta); color: var(--faint); }
.builder-user-chevron { flex-shrink: 0; display: inline-flex; color: var(--faint); transition: transform .18s; }
.builder-user-chevron.open { transform: rotate(180deg); }
.builder-user-dropdown { position: absolute; bottom: calc(100% + 6px); left: 10px; right: 10px; z-index: 60; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); box-shadow: 0 20px 48px -16px rgba(0,0,0,.5); }
.builder-user-dropdown > a:first-child { border-radius: 11px 11px 0 0; }
.builder-user-dropdown a, .builder-user-dropdown button { width: 100%; display: flex; align-items: center; gap: 9px; padding: 10px 13px; border: 0; color: var(--body); background: transparent; font-size: 13px; text-align: left; transition: background .15s, color .15s; }
.builder-user-dropdown a:hover, .builder-user-dropdown button:hover { color: var(--ink); background: var(--surface-2); }
.builder-user-dropdown svg { flex-shrink: 0; color: var(--faint); }
.builder-user-dropdown-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 2px 13px; }
.builder-user-dropdown-row > span:first-child { flex: none; white-space: nowrap; color: var(--body); font-size: 13px; }
.builder-user-dropdown-row .lang-trigger, .builder-user-dropdown-row .theme-toggle { width: auto; flex: none; height: 32px; padding: 0 8px; border: 0; border-radius: 7px; background: transparent; font-size: 12.5px; }
/* The language trigger has a trailing chevron (gap 6px + icon 13px = 19px) that the theme toggle lacks; pad the toggle to match so both values' text ends flush. */
.builder-user-dropdown-row .theme-toggle { padding-right: 27px; }
.builder-user-dropdown-row .lang-trigger:hover, .builder-user-dropdown-row .lang-trigger[aria-expanded="true"], .builder-user-dropdown-row .theme-toggle:hover { background: var(--surface-2); }
.builder-lang-picker .lang-trigger > span { max-width: 96px; }
.builder-lang-picker .lang-menu { min-width: 168px; }
.builder-user-dropdown-legal { display: flex; align-items: center; gap: 6px; padding: 9px 13px; border-top: 1px solid var(--line); }
.builder-user-dropdown-legal a { width: auto; padding: 0; color: var(--faint); font-size: 11px; }
.builder-user-dropdown-legal a:hover { color: var(--accent); background: transparent; }
.builder-user-dropdown-legal span { color: var(--faint); font-size: 11px; }

/* The builder page hosts its own theme toggle in the sidebar footer; the global floating one would overlap the workspace panel tabs. */
body:has(.builder-page) .theme-toggle-floating { display: none; }

/* ── conversation (center) ── */
.builder-conversation { display: flex; flex-direction: column; overflow: hidden; min-width: 0; }
.builder-conv-header { display: flex; align-items: center; gap: 10px; height: 42px; padding: 0 20px; border-bottom: 1px solid var(--line); background: var(--surface); flex-shrink: 0; }
.builder-conv-header b { flex: 1 1; min-width: 0; font-size: var(--builder-title); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.builder-conv-badge { padding: 3px 8px; border-radius: 99px; font-size: 11px; font-weight: 600; }
.builder-conv-badge--running { color: #60a5fa; background: rgba(96,165,250,.12); }
.builder-conv-badge--completed { color: var(--ok); background: rgb(var(--ok-rgb) / .1); }
.builder-conv-badge--failed { color: var(--danger); background: rgba(239,68,68,.1); }
.builder-conv-badge--queued { color: var(--faint); background: var(--surface-2); }
.builder-conv-messages { flex: 1 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 16px; }
.builder-conv-loading { display: flex; align-items: center; gap: 10px; padding: 12px; color: var(--faint); font-size: 13px; }
.builder-conv-loading > i { width: 18px; height: 18px; border: 2px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: builder-spin 1s linear infinite; }

/* message bubbles */
.builder-msg { display: flex; gap: 8px; align-items: flex-start; }
.builder-msg-avatar { flex-shrink: 0; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; }
.builder-msg-user .builder-msg-avatar { color: var(--accent); background: linear-gradient(135deg, rgb(var(--accent-rgb) / .15), rgb(var(--accent-rgb) / .05)); border: 1px solid rgb(var(--accent-rgb) / .2); }
.builder-msg-assistant .builder-msg-avatar { color: var(--ai); background: linear-gradient(135deg, rgb(var(--ai-rgb) / .15), rgb(var(--ai-rgb) / .05)); border: 1px solid rgb(var(--ai-rgb) / .2); }
.builder-msg-error-block .builder-msg-avatar { color: var(--danger); background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); font-family: var(--mono); font-size: 10px; font-weight: 700; }
.builder-msg-body { min-width: 0; flex: 1 1; }
.builder-msg-role-label { display: block; margin-bottom: 4px; font-size: var(--builder-meta); font-weight: 600; color: var(--faint); text-transform: uppercase; }
.builder-msg-content { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Noto Sans SC", sans-serif; font-size: 14px; line-height: 1.75; color: var(--ink); letter-spacing: .01em; white-space: pre-wrap; word-break: break-word; }
.builder-msg-user .builder-msg-content { font-size: 15px; font-weight: 500; line-height: 1.8; }
.builder-msg-assistant .builder-msg-content { color: var(--body); font-weight: 400; white-space: normal; }
/* markdown rendering for assistant replies */
.builder-markdown > :first-child { margin-top: 0; }
.builder-markdown > :last-child { margin-bottom: 0; }
.builder-markdown p { margin: 0 0 8px; }
.builder-markdown h1, .builder-markdown h2, .builder-markdown h3, .builder-markdown h4 { margin: 14px 0 6px; color: var(--ink); font-weight: 600; line-height: 1.4; }
.builder-markdown h1 { font-size: 16px; }
.builder-markdown h2 { font-size: 15px; }
.builder-markdown h3, .builder-markdown h4 { font-size: 14px; }
.builder-markdown ul, .builder-markdown ol { margin: 6px 0 8px; padding-left: 20px; }
.builder-markdown li { margin: 2px 0; }
.builder-markdown li > p { margin: 0; }
.builder-markdown li::marker { color: var(--faint); }
.builder-markdown strong { color: var(--ink); font-weight: 600; }
.builder-markdown code { padding: 1px 5px; border-radius: 4px; background: rgba(127,127,127,.14); font-family: var(--mono); font-size: .9em; }
.builder-markdown pre { margin: 8px 0; padding: 9px 11px; border-radius: 6px; background: rgba(127,127,127,.12); overflow-x: auto; }
.builder-markdown pre code { padding: 0; background: none; font-size: 12px; line-height: 1.6; }
.builder-markdown a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.builder-markdown blockquote { margin: 8px 0; padding: 2px 0 2px 10px; border-left: 2px solid var(--line); color: var(--faint); }
.builder-markdown hr { margin: 12px 0; border: 0; border-top: 1px solid var(--line); }
.builder-markdown table { margin: 8px 0; border-collapse: collapse; font-size: 13px; }
.builder-markdown th, .builder-markdown td { padding: 4px 9px; border: 1px solid var(--line); text-align: left; }
.builder-markdown th { background: rgba(127,127,127,.08); color: var(--ink); font-weight: 600; }
.builder-msg-error { color: var(--danger); font-size: 13px; }
.builder-msg-files { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.builder-msg-files span { padding: 3px 7px; border: 1px solid var(--line); border-radius: 5px; color: var(--faint); background: var(--surface-2); font-size: 10px; }
.builder-round-divider { display: flex; align-items: center; gap: 10px; margin: 14px 0; padding: 0 14px; }
.builder-round-divider::before, .builder-round-divider::after { content: ""; flex: 1 1; height: 1px; background: var(--line); }
.builder-round-divider span { color: var(--accent); font-size: 11px; font-weight: 500; white-space: nowrap; }

/* live activity section */
.builder-live-section { padding: 12px 0; border-top: 1px solid var(--line); display: flex; flex-direction: column; gap: 6px; }
.builder-live-entry { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.65; }
.builder-live-icon { flex-shrink: 0; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 4px; font-family: var(--mono); font-size: 10px; font-weight: 700; }
.builder-live-message .builder-live-icon { color: #60a5fa; background: rgba(96,165,250,.08); }
.builder-live-command .builder-live-icon { color: var(--accent); background: rgb(var(--accent-rgb) / .08); }
.builder-live-file .builder-live-icon { color: var(--ai); background: rgb(var(--ai-rgb) / .08); }
.builder-live-status .builder-live-icon { color: #fbbf24; background: rgba(251,191,36,.08); }
.builder-live-thinking .builder-live-icon { color: var(--ai); background: rgb(var(--ai-rgb) / .08); animation: think-shell 2.2s ease-in-out infinite; }
.builder-live-thinking { color: var(--body); font-style: normal; }
.builder-thinking-dots { display: inline-flex; gap: 2.5px; align-items: center; height: 10px; }
.builder-thinking-dots span { width: 4px; height: 4px; border-radius: 50%; background: var(--ai); transform-origin: center; animation: think-wave 1.15s cubic-bezier(.4,0,.2,1) infinite; }
.builder-thinking-dots span:nth-child(1) { animation-delay: -.24s; }
.builder-thinking-dots span:nth-child(2) { animation-delay: -.12s; }
@keyframes think-wave { 0%, 60%, 100% { opacity: .28; transform: translateY(0) scale(.78); } 30% { opacity: 1; transform: translateY(-2px) scale(1); } }
@keyframes think-shell { 0%, 100% { box-shadow: 0 0 0 0 rgb(var(--ai-rgb) / 0); } 50% { box-shadow: 0 0 0 3px rgb(var(--ai-rgb) / .07); } }
.builder-live-todo .builder-live-icon { color: var(--added); background: rgb(var(--added-rgb) / .08); }
.builder-live-todos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.builder-live-todos li { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--body); }
.builder-live-todos li svg { flex-shrink: 0; color: var(--added); }
.builder-todo-pending { flex-shrink: 0; width: 11px; height: 11px; border: 1.5px solid var(--faint); border-radius: 50%; }
.builder-todo-done { color: var(--faint); text-decoration: line-through; }
.builder-live-body { min-width: 0; flex: 1 1; }
.builder-live-body > span { color: var(--ink); word-break: break-word; opacity: .85; }
.builder-live-command .builder-live-body > span { font-family: var(--mono); font-size: 12px; }
.builder-live-command .builder-live-body > span[title] { cursor: help; border-bottom: 1px dotted var(--faint); }
.builder-live-message .builder-live-body > span { color: var(--body); opacity: 1; white-space: pre-wrap; }
.builder-streaming-text::after { content: ""; display: inline-block; width: 2px; height: 1em; margin-left: 2px; vertical-align: -.12em; background: var(--accent); animation: builder-stream-caret .8s steps(1) infinite; }
@keyframes builder-stream-caret { 50% { opacity: 0; } }
.builder-file-stats { display: inline-flex; gap: 6px; margin-left: 8px; font-family: var(--mono); font-size: 11px; }
.builder-file-stats em { font-style: normal; }
.builder-stat-add { color: var(--added); }
.builder-stat-del { color: #f87171; }
/* Terminal output block. Uses theme tokens rather than a fixed light background so it follows
   light/dark automatically — the editor panes nearby need explicit dark overrides, which this
   block originally missed and so stayed pale-on-navy in dark mode. */
.builder-live-output { margin-top: 4px; padding: 6px 8px; max-height: calc(7 * 1.55em + 14px); overflow-y: auto; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-2); color: var(--faint); font-family: var(--mono); font-size: var(--builder-meta); line-height: 1.55; white-space: pre-wrap; word-break: break-all; cursor: pointer; transition: max-height .2s ease; }
.builder-output-collapsed { max-height: calc(1.55em + 14px); overflow: hidden; position: relative; }
.builder-output-collapsed::after { content: "..."; position: absolute; bottom: 0; right: 8px; background: var(--surface-2); padding-left: 12px; color: var(--accent); font-size: 11px; }
.builder-live-output::-webkit-scrollbar { width: 6px; }
/* currentColor-based so the thumb stays visible on both a light and a dark track */
.builder-live-output::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--faint) 55%, transparent); border-radius: 3px; min-height: 24px; }
.builder-live-output::-webkit-scrollbar-thumb:hover { background: var(--faint); }
/* Other scrollable panes that were still falling back to the browser's default (much thicker) scrollbar. */
.builder-history, .builder-conv-messages, .builder-preview-failed pre, .builder-new-session, .account-content, .template-brief pre { scrollbar-width: thin; }
.builder-history::-webkit-scrollbar, .builder-conv-messages::-webkit-scrollbar, .builder-preview-failed pre::-webkit-scrollbar, .builder-new-session::-webkit-scrollbar, .account-content::-webkit-scrollbar, .template-brief pre::-webkit-scrollbar { width: 6px; }
.builder-history::-webkit-scrollbar-thumb, .builder-conv-messages::-webkit-scrollbar-thumb, .builder-preview-failed pre::-webkit-scrollbar-thumb, .builder-new-session::-webkit-scrollbar-thumb, .account-content::-webkit-scrollbar-thumb, .template-brief pre::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--faint) 55%, transparent); border-radius: 3px; }
.builder-history::-webkit-scrollbar-thumb:hover, .builder-conv-messages::-webkit-scrollbar-thumb:hover, .builder-preview-failed pre::-webkit-scrollbar-thumb:hover, .builder-new-session::-webkit-scrollbar-thumb:hover, .account-content::-webkit-scrollbar-thumb:hover, .template-brief pre::-webkit-scrollbar-thumb:hover { background: var(--faint); }
.builder-history::-webkit-scrollbar-track, .builder-conv-messages::-webkit-scrollbar-track, .builder-preview-failed pre::-webkit-scrollbar-track, .builder-new-session::-webkit-scrollbar-track, .account-content::-webkit-scrollbar-track, .template-brief pre::-webkit-scrollbar-track { background: transparent; }

/* input */
.builder-conv-input { display: flex; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--line); background: var(--surface); }
.builder-conv-input input { flex: 1 1; padding: 10px 14px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); background: var(--bg); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Noto Sans SC", sans-serif; font-size: 14.5px; line-height: 1.5; outline: none; transition: border-color .15s; }
.builder-conv-input input:focus { border-color: var(--accent); }
.builder-conv-input input::placeholder { color: var(--faint); }
.builder-conv-input input:disabled { opacity: .5; }
.builder-conv-input button { width: 36px; height: 36px; display: grid; place-items: center; border: 1px solid var(--accent); border-radius: 8px; color: var(--accent-ink); background: var(--accent); transition: background .15s; }
.builder-conv-input button:hover:not(:disabled) { background: var(--accent-strong); }
.builder-conv-input .builder-stop-btn { border-color: var(--danger); background: var(--danger); color: #fff; animation: stop-pulse 1.5s ease-in-out infinite; }
.builder-conv-input .builder-stop-btn:hover { background: #dc2626; border-color: #dc2626; }
@keyframes stop-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,.4); } 50% { box-shadow: 0 0 0 6px rgba(239,68,68,0); } }
.builder-conv-compose { border-top: 1px solid var(--line); background: var(--surface); }
.builder-compose-toolbar { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 4px; }
.builder-compose-toolbar .builder-attachments { flex: 1 1; min-width: 0; }
.builder-conv-compose .builder-conv-input { border-top: 0; padding-top: 6px; }
.builder-model-picker { display: flex; align-items: center; gap: 3px; padding: 8px 12px 0; flex-shrink: 0; }
.builder-model-group { display: flex; gap: 2px; }
.builder-effort-sep { width: 1px; height: 16px; margin: 0 4px; background: var(--line); }
.builder-model-opt { padding: 3px 8px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--faint); font-size: 10px; white-space: nowrap; transition: all .15s; }
.builder-model-opt:hover { color: var(--body); border-color: var(--body); }
.builder-model-opt.active { color: var(--accent); border-color: var(--accent); background: rgb(var(--accent-rgb) / .08); }
.builder-effort-opt.active { color: var(--ai); border-color: var(--ai); background: rgb(var(--ai-rgb) / .08); }
.builder-attachments { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 6px; padding: 8px 20px 0; }
.builder-attachment-item { display: inline-flex; align-items: center; gap: 5px; max-width: 190px; padding: 4px 7px; border: 1px solid var(--line); border-radius: 6px; color: var(--body); background: var(--surface-2); font-size: 10px; }
.builder-attachment-item.builder-attachment-image { flex-direction: column; align-items: stretch; max-width: 120px; padding: 4px; gap: 4px; }
.builder-attachment-thumb { width: 100%; max-height: 80px; object-fit: cover; border-radius: 4px; display: block; }
.builder-attachment-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.builder-attachment-image .builder-attachment-name { font-size: 9px; text-align: center; }
.builder-attachment-item button { flex-shrink: 0; border: 0; padding: 0; color: var(--faint); background: transparent; font-size: 14px; line-height: 1; transition: color .15s; }
.builder-attachment-item button:hover { color: var(--danger); }
.builder-attachment-image > button { position: absolute; top: 2px; right: 2px; width: 18px; height: 18px; display: grid; place-items: center; border-radius: 50%; background: rgba(23,34,53,.72); color: #fff; font-size: 12px; }
.builder-attachment-image { position: relative; }
.builder-attach-btn { padding: 4px 8px; border: 1px dashed var(--line); border-radius: 6px; color: var(--faint); background: transparent; font-size: 10px; }
.builder-attach-btn:hover:not(:disabled) { color: var(--accent); border-color: var(--accent); }

/* ── preview panel (right) ── */
.builder-preview-panel { display: grid; grid-template-rows: auto 1fr; overflow: hidden; min-width: 0; background: var(--surface); }
.builder-panel-tabs { display: flex; align-items: center; gap: 3px; height: 42px; padding: 0 8px; border-bottom: 1px solid var(--line); background: var(--surface-2); flex-shrink: 0; }
.builder-panel-tabs button { padding: 6px 10px; border: 0; border-radius: 6px; color: var(--faint); background: transparent; font-size: var(--builder-meta); }
.builder-panel-tabs button.active { color: var(--ink); background: var(--bg); }
.builder-panel-tabs button span { margin-left: 3px; color: var(--faint); }
.builder-panel-tabs button i { display: inline-block; width: 6px; height: 6px; margin-left: 6px; border-radius: 50%; background: #fbbf24; }
.builder-import-btn { margin-left: auto; padding: 6px 9px !important; border: 1px solid var(--line) !important; border-radius: 6px; color: var(--body) !important; font-size: 11px !important; background: transparent !important; }
.builder-import-btn:hover:not(:disabled) { color: var(--accent) !important; border-color: var(--accent) !important; }
.builder-import-btn:disabled { opacity: .5; }
.builder-panel-tabs a { padding: 6px 9px; border: 1px solid var(--line); border-radius: 6px; color: var(--body); font-size: 11px; }
.builder-panel-tabs a:hover { color: var(--accent); border-color: var(--accent); }
.builder-preview-bar { display: flex; align-items: center; padding: 0 14px; border-bottom: 1px solid var(--line); background: var(--surface-2); }
.builder-preview-bar > span { display: flex; gap: 5px; }
.builder-preview-bar > span i { width: 8px; height: 8px; border-radius: 50%; background: #2f3b58; }
.builder-preview-bar > span i:first-child { background: #ff5f57; }
.builder-preview-bar > span i:nth-child(2) { background: #febc2e; }
.builder-preview-bar > span i:last-child { background: #28c840; }
.builder-preview-bar b { margin: 0 auto; color: var(--faint); font-family: var(--mono); font-size: 11px; font-weight: 500; }
.builder-preview-bar small { color: var(--faint); font-family: var(--mono); font-size: 10px; }
.builder-preview-panel iframe { width: 100%; height: 100%; border: 0; background: #fff; }
.builder-preview-placeholder { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 14px; text-align: center; color: var(--faint); font-size: 13px; }
.builder-preview-placeholder > i { width: 28px; height: 28px; border: 2px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: builder-spin 1s linear infinite; }
.builder-preview-placeholder p { max-width: 240px; font-size: 12px; line-height: 1.5; }
.builder-preview-placeholder button { padding: 7px 11px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink); background: var(--surface-2); font-size: 11px; }
.builder-preview-failed { min-height: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 16px; overflow: hidden; }
.builder-preview-failed p { margin: 0; color: var(--ink); font-size: 13px; font-weight: 600; }
.builder-preview-failed button { flex: none; padding: 7px 14px; border: 1px solid var(--accent); border-radius: 6px; color: var(--accent-ink); background: var(--accent); font-size: 12px; font-weight: 600; }
.builder-preview-failed button:hover { background: var(--accent-strong); }
.builder-preview-failed pre { flex: 1 1; width: 100%; min-height: 0; margin: 0; padding: 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-2); color: var(--body); font-family: var(--mono); font-size: 11px; line-height: 1.5; white-space: pre-wrap; word-break: break-all; overflow-y: auto; }
.builder-code-panel { min-height: 0; display: grid; grid-template-columns: minmax(120px, 28%) 1fr; overflow: hidden; }
.builder-code-panel nav { overflow-y: auto; overflow-x: hidden; padding: 4px 0; border-right: 1px solid var(--line); background: var(--surface-2); scrollbar-gutter: stable; }
.file-tree-item { width: 100%; display: flex; align-items: center; gap: 5px; padding: 4px 8px; border: 0; border-radius: 0; color: var(--body); background: transparent; text-align: left; font-family: var(--mono); font-size: var(--builder-meta); line-height: 1.4; cursor: pointer; }
.file-tree-item:hover { color: var(--ink); background: rgba(0,0,0,.04); }
.file-tree-item.active { color: var(--ink); background: var(--bg); font-weight: 500; }
.file-tree-item span { flex: 1 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.file-tree-item small { color: var(--faint); font-size: 10px; white-space: nowrap; margin-left: auto; }
.file-tree-folder { font-weight: 500; color: var(--ink); }
.file-tree-folder svg:first-child { opacity: .5; }
.file-tree-folder svg:nth-child(2) { color: #f6c342; }
.file-tree-dir { display: contents; }
.builder-editor { min-width: 0; min-height: 0; display: grid; grid-template-rows: 38px 1fr; overflow: hidden; background: #f8fafc; }
.builder-editor > header { min-width: 0; display: flex; align-items: center; gap: 9px; padding: 0 9px 0 13px; border-bottom: 1px solid var(--line); background: #eef3f8; }
.builder-editor > header span { min-width: 0; overflow: hidden; color: var(--body); font-family: var(--mono); font-size: var(--builder-meta); white-space: nowrap; text-overflow: ellipsis; }
.builder-editor > header small { margin-left: auto; overflow: hidden; color: var(--accent); font-size: 11px; white-space: nowrap; text-overflow: ellipsis; }
.builder-editor > header button { flex: 0 0 auto; padding: 5px 8px; border: 1px solid var(--accent); border-radius: 5px; color: var(--accent-ink); background: var(--accent); font-size: 11px; font-weight: 600; }
.builder-editor > header button:disabled { border-color: var(--line); color: var(--faint); background: var(--surface-2); cursor: default; }
.builder-editor-body { min-height: 0; overflow: hidden; position: relative; }
.builder-editor-body > div, .builder-editor-body .cm-theme, .builder-editor-body .cm-editor { height: 100% !important; }
.builder-editor-body .cm-editor { font-family: var(--mono); font-size: var(--builder-code); }
.builder-editor-body .cm-scroller { overflow: scroll !important; line-height: 1.65; }
.builder-code-panel nav::-webkit-scrollbar, .builder-editor-body .cm-scroller::-webkit-scrollbar { width: 8px; height: 8px; }
.builder-code-panel nav::-webkit-scrollbar-thumb, .builder-editor-body .cm-scroller::-webkit-scrollbar-thumb { background: rgba(0,0,0,.2); border-radius: 4px; min-height: 30px; }
.builder-code-panel nav::-webkit-scrollbar-thumb:hover, .builder-editor-body .cm-scroller::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,.35); }
.builder-code-panel nav::-webkit-scrollbar-track, .builder-editor-body .cm-scroller::-webkit-scrollbar-track { background: rgba(0,0,0,.04); }
.builder-editor-body .cm-gutters { border-right: 1px solid var(--line); background: #eef3f8; }
.builder-editor-body .cm-editor { color: var(--ink); background: #f8fafc; }
.builder-editor-body .cm-content { caret-color: var(--accent); }
.builder-editor-body .cm-activeLine, .builder-editor-body .cm-activeLineGutter { background: #edf3f8; }
.builder-editor-empty { height: 100%; display: grid; place-items: center; padding: 20px; color: var(--faint); font-size: 11px; text-align: center; }
.builder-editor-image { height: 100%; display: grid; place-items: center; padding: 24px; overflow: auto; background: repeating-conic-gradient(#e4e9f0 0% 25%, #f4f7fb 0% 50%) 0 0 / 20px 20px; }
:root[data-theme="dark"] .builder-editor-image { background: repeating-conic-gradient(#1a2437 0% 25%, #121a2b 0% 50%) 0 0 / 20px 20px; }
.builder-editor-image img { max-width: 100%; max-height: 100%; object-fit: contain; box-shadow: 0 6px 24px rgba(0,0,0,.25); }

/* ── new session (no active job) ── */
.builder-new-session { grid-column: 3 / -1; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; padding: 40px; overflow-y: auto; }
/* One alignment axis: the heading used to be centred while everything under it was left-aligned, so a
   600px column had two competing axes. */
.builder-new-inner { width: 100%; max-width: 600px; }
.builder-kicker { display: inline-block; margin-bottom: 12px; color: var(--accent); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.builder-new-inner h1 { font-size: clamp(28px, 4vw, 42px); font-weight: 700; line-height: 1.12; letter-spacing: -.01em; margin: 0 0 12px; }
/* The headline is two separate strings ("What do you want" + "to build today?"). Latin locales
   need a space between them, CJK doesn't — a word space rather than a literal one in the
   translations, so the strings stay free of significant leading whitespace. */
.builder-new-inner h1 em { color: var(--accent); font-style: normal; }
.builder-new-inner h1 em::before { content: " "; }
.builder-page.locale-zh .builder-new-inner h1 em::before { content: none; }
.builder-new-inner > p { color: var(--body); font-size: 14px; line-height: 1.7; margin-bottom: 28px; }
.builder-new-form { border-top: 1px solid var(--line); padding-top: 22px; }
/* template strip on the new-app screen */
.builder-template-strip { margin-bottom: 22px; }
.builder-template-label { display: block; margin-bottom: 8px; font-size: 12.5px; font-weight: 600; color: var(--body); }
.builder-template-scroll { display: flex; flex-wrap: wrap; gap: 6px; }
.builder-template-chip { display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); color: var(--ink); font-size: 12.5px; cursor: pointer; transition: color .12s, border-color .12s, background .12s; }
.builder-template-chip:hover { color: var(--accent); border-color: var(--accent); background: rgb(var(--accent-rgb) / .07); }
.builder-form-field { margin-bottom: 22px; }
.builder-form-field label { display: block; margin-bottom: 9px; font-size: 12.5px; font-weight: 600; color: var(--body); }
.builder-form-field label span { color: var(--accent); }
.builder-form-field input, .builder-new-form textarea { width: 100%; padding: 10px 14px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); background: var(--bg); font-size: 13.5px; outline: none; transition: border-color .15s, box-shadow .15s; }
.builder-form-field input:focus, .builder-new-form textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.builder-form-field input::placeholder, .builder-new-form textarea::placeholder { color: var(--faint); }
.builder-new-form textarea { min-height: 120px; line-height: 1.7; resize: vertical; }
/* icon picker */
/* Icon picker: a swatch button beside the name input, with the grid tucked into a popover. */
/* A single input group rather than a 46px button parked next to a field: the swatch and the text share
   one border and one focus ring, so the decorative control stops reading as a broken button. */
.builder-name-row { display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); transition: border-color .15s, box-shadow .15s; }
.builder-name-row:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.builder-name-row > input { flex: 1 1; min-width: 0; border: 0; border-radius: 0 9px 9px 0; background: transparent; }
.builder-name-row > input:focus { border: 0; box-shadow: none; }
.builder-icon-picker { position: relative; flex-shrink: 0; }
.builder-icon-trigger { height: 100%; min-height: 40px; width: 44px; display: grid; place-items: center; padding: 0; border: 0; border-right: 1px solid var(--line); border-radius: 9px 0 0 9px; background: transparent; font-size: 19px; line-height: 1; cursor: pointer; transition: background .12s; }
.builder-icon-trigger:hover { background: var(--surface-2); }
.builder-icon-trigger.open { color: var(--accent); background: var(--surface-2); }
.builder-icon-pop { position: absolute; z-index: 40; top: calc(100% + 8px); left: 0; display: grid; grid-template-columns: repeat(6, 1fr); grid-gap: 4px; gap: 4px; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); box-shadow: 0 16px 40px -12px rgb(0 0 0 / .35); }
.builder-icon-opt { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 7px; background: transparent; font-size: 16px; transition: border-color .1s, background .1s; cursor: pointer; }
.builder-icon-opt:hover { border-color: var(--body); background: var(--surface-2); }
.builder-icon-opt.active { border-color: var(--accent); background: rgb(var(--accent-rgb) / .1); box-shadow: 0 0 0 2px var(--accent-soft); }
/* category chips */
.builder-category-grid { display: flex; flex-wrap: wrap; gap: 6px; }
.builder-category-opt { padding: 5px 11px; border: 1px solid var(--line); border-radius: 20px; background: transparent; color: var(--faint); font-size: 11.5px; transition: color .12s, border-color .12s, background .12s; cursor: pointer; }
.builder-category-opt:hover { color: var(--body); border-color: var(--body); background: var(--surface-2); }
.builder-category-opt.active { border-color: var(--accent); background: rgb(var(--accent-rgb) / .1); color: var(--accent); }
.builder-new-form-footer .builder-attachments { flex-wrap: wrap; gap: 6px; padding: 0; }
.builder-new-form-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
/* The counter is no longer the row's first child now that attachments share the row, so match it by
   being the only direct span instead of by position. */
.builder-new-form-footer > span { color: var(--faint); font-family: var(--mono); font-size: 11px; }
/* Direct child only: the attachment trigger also lives in this row and must not inherit the primary CTA look. */
.builder-new-form-footer > button { margin-left: auto; padding: 10px 20px; border: 1px solid var(--accent); border-radius: 8px; color: var(--accent-ink); background: var(--accent); font-size: 13px; font-weight: 600; transition: background .15s, box-shadow .15s; }
.builder-new-form-footer > button:hover:not(:disabled) { background: var(--accent-strong); box-shadow: 0 6px 20px rgb(var(--accent-rgb) / .2); }
/* sidebar app icon */
.builder-app-icon { flex-shrink: 0; font-size: 14px; line-height: 1; }
.builder-conv-icon { font-size: 18px; margin-right: 6px; }
/* quota full */
.builder-quota-full { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 60px 32px; max-width: 480px; margin: 0 auto; }
.builder-quota-full-icon { font-size: 48px; margin-bottom: 16px; }
.builder-quota-full h2 { font-size: 22px; font-weight: 700; margin: 0 0 12px; color: var(--ink); }
.builder-quota-full p { font-size: 14px; color: var(--body); line-height: 1.7; margin: 0 0 6px; }
.builder-quota-full b { color: var(--ink); }
.builder-quota-full-actions { display: flex; gap: 12px; margin-top: 24px; }
.builder-quota-upgrade-btn { padding: 10px 24px; border: 1px solid var(--accent); border-radius: 8px; background: var(--accent); color: var(--accent-ink); font-size: 13px; font-weight: 600; text-decoration: none; transition: background .15s, box-shadow .15s; }
.builder-quota-upgrade-btn:hover { background: var(--accent-strong); box-shadow: 0 6px 20px rgb(var(--accent-rgb) / .2); }
.builder-quota-full-actions button { padding: 10px 24px; border: 1px solid var(--line); border-radius: 8px; background: transparent; color: var(--body); font-size: 13px; transition: border-color .15s, color .15s; }
.builder-quota-full-actions button:hover { border-color: var(--body); color: var(--ink); }
.builder-trust { display: flex; justify-content: center; gap: 18px; margin-top: 22px; color: var(--faint); font-size: 11px; }
.builder-trust span { display: flex; align-items: center; gap: 5px; }
.builder-toast { position: fixed; right: 18px; bottom: 18px; z-index: 20; display: flex; align-items: center; gap: 12px; max-width: 420px; padding: 11px 14px; border: 1px solid #f0b8bf; border-radius: 8px; color: #a82d3d; background: #fff1f3; box-shadow: 0 14px 40px rgba(23,34,53,.16); font-size: 12px; }
.builder-toast button { border: 0; color: #a82d3d; background: transparent; font-size: 17px; }

/* ---------- animation ---------- */
@keyframes caret-blink { 50% { opacity: 0; } }
@keyframes builder-spin { to { transform: rotate(360deg); } }
@keyframes builder-pulse { 50% { opacity: .35; } }
@keyframes builder-dot { 50% { transform: translateY(-4px); opacity: .4; } }

/* ---------- responsive ---------- */
@media (max-width: 1120px) {
  .nav { position: relative; gap: 18px; }
  .nav-links { display: none; position: absolute; top: 64px; left: 0; right: 0; flex-direction: column; gap: 4px; padding: 12px 24px 20px; border-bottom: 1px solid var(--line); background: var(--surface); box-shadow: 0 24px 48px -16px rgba(0,0,0,.5); }
  .nav-links.open { display: flex; }
  .nav-links a { padding: 10px 0; font-size: 15px; }
  .nav-actions { gap: 12px; }
  .menu-button { display: grid; flex: 0 0 auto; place-items: center; }
}

@media (max-width: 960px) {
  .feature-grid { grid-template-columns: 1fr 1fr; }
  .no-token-grid { grid-template-columns: 1fr; }
  .no-token-inner { padding: 36px 24px; }
  .steps { grid-template-columns: 1fr; }
  .pricing-grid { grid-template-columns: 1fr 1fr; }
  /* The grid's row-gap has to stay 0 for the subgrid feature rows, so cards that wrap onto a
     second row get their vertical separation from a margin instead. */
  .price-card { margin-bottom: 14px; }
  .price-card.featured { order: -1; }
  .product-body { grid-template-columns: 1fr; }
  .preview-pane { display: none; }
  .impact-grid { grid-template-columns: 1fr 1fr; }
  .impact-grid > div:nth-child(2) { border-right: 0; }
  .impact-grid > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .article-layout { grid-template-columns: 170px minmax(0, 1fr); gap: 36px; }
  .about-system-flow { flex-wrap: wrap; }
  .about-system-flow > div { flex-grow: 1; flex-shrink: 1; flex-basis: calc(50% - 8px); }
  .about-system-flow > i { display: none; }
  .about-architecture { gap: 40px; }
  .changelog-layout { grid-template-columns: 150px minmax(0, 1fr); gap: 38px; }
  .builder-page.builder-three-col { grid-template-columns: 220px 3px 1fr 3px 1.3fr; }
}

@media (max-width: 1100px) {
  .builder-page.builder-three-col { grid-template-columns: 200px 3px 1fr; }
  .builder-preview-panel, .builder-page.builder-three-col > .builder-resize-handle:last-of-type { display: none; }
  .builder-new-session { grid-column: 3 / -1; }
}

@media (max-width: 680px) {
  .lang-trigger > span { display: none; }
  .wrap { width: calc(100% - 40px); }
  .nav-links { padding-inline: 20px; }
  .nav-links-mobile-only { display: block; padding: 10px 0; border: 0; background: transparent; font-size: 15px; text-align: left; }
  .nav-links-logout { color: var(--body); }
  .nav-actions .text-link { display: none; }
  .account-name, .account-chevron { display: none; }
  .hero { padding-top: 64px; }
  h1 { font-size: clamp(40px, 12vw, 58px); }
  .hero-sub b { font-size: 18px; }
  .hero-sub span { font-size: 13.5px; }
  .hero-model-claim { max-width: calc(100% - 20px); font-size: 12px; line-height: 1.4; }
  .hero-prompt textarea { font-size: 14px; }
  .hero-prompt-bar > span { display: none; }
  .hero-prompt-bar { justify-content: flex-end; }
  .hero-proof { flex-wrap: wrap; gap: 8px 12px; }
  .hero-stage { margin-top: 48px; }
  .window-url { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .window-secure { display: none; }
  .chat-pane { padding: 20px 16px; }
  .impact-grid b { font-size: 21px; }
  .impact-grid > div { padding: 24px 14px; }
  .impact-grid span { font-size: 11px; }
  .section { padding-block: 76px; }
  .section-head { margin-bottom: 40px; }
  .feature-grid { grid-template-columns: 1fr; }
  .pricing-grid { grid-template-columns: 1fr; max-width: 460px; margin-inline: auto; }
  .price-card.featured { order: -1; }
  .quote-card { padding: 28px 24px; }
  .final-cta { margin-bottom: 76px; }
  .footer-main { flex-direction: column; gap: 44px; }
  .footer-links { grid-template-columns: 1fr 1fr; }
  .footer-bottom { flex-direction: column; gap: 12px; align-items: flex-start; }
  .legal-hero { padding-top: 48px; }
  .legal-body { grid-template-columns: 1fr; gap: 0; padding-bottom: 64px; }
  .legal-toc { position: static; padding-block: 24px; border-bottom: 1px solid var(--line); flex-direction: row; flex-wrap: wrap; gap: 8px 18px; }
  .legal-toc span { width: 100%; margin-bottom: 0; }
  .legal-content { padding-top: 28px; }
  .content-hero { padding-block: 64px 44px; }
  .content-hero h1 { font-size: 40px; }
  .content-hero > p { font-size: 15px; }
  .blog-index { padding-bottom: 76px; }
  .blog-featured { grid-template-columns: 1fr; }
  .blog-featured-art { min-height: 230px; }
  .blog-featured-copy { padding: 28px 22px 32px; }
  .blog-grid { grid-template-columns: 1fr; }
  .content-newsletter { flex-direction: column; align-items: flex-start; margin-bottom: 76px; padding: 30px 24px; }
  .article-header { padding-block: 48px 38px; }
  .article-header h1 { font-size: 36px; }
  .article-header > p { font-size: 15px; }
  .article-layout { grid-template-columns: 1fr; gap: 30px; padding-block: 32px 76px; }
  .article-layout > aside { position: static; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
  .article-content > section h2 { font-size: 22px; }
  .article-content > section p { font-size: 15px; }
  .article-cta { grid-template-columns: auto 1fr; }
  .article-cta .button { grid-column: 1 / -1; }
  .related-posts { padding-bottom: 76px; }
  .about-hero { padding-block: 72px 68px; }
  .about-hero h1 { font-size: 40px; }
  .about-hero p { font-size: 15px; }
  .about-hero-actions { flex-direction: column; }
  .about-statement { grid-template-columns: 1fr; gap: 28px; padding-block: 72px; }
  .about-statement > p { font-size: 15px; }
  .about-system { padding-block: 72px; }
  .about-system-flow { flex-direction: column; align-items: stretch; }
  .about-system-flow > div { flex: 1 1 auto; min-height: 145px; }
  .about-principles { grid-template-columns: 1fr; }
  .about-principles article { min-height: 200px; padding: 28px 24px; }
  .about-architecture { grid-template-columns: 1fr; gap: 40px; padding-bottom: 76px; }
  .about-architecture-visual { padding: 16px; }
  /* The row gap doubles as the stack gap once this turns into a column, where 56px is far too much. */
  .about-contact { flex-direction: column; align-items: flex-start; gap: 26px; margin-bottom: 76px; padding: 34px 24px; }
  .about-contact > div:last-child { align-items: flex-start; text-align: left; }
  .changelog-hero { padding-block: 64px 54px; }
  .changelog-hero > div { flex-direction: column; align-items: flex-start; gap: 34px; }
  .changelog-hero h1 { font-size: 40px; }
  .changelog-hero p { font-size: 15px; }
  .changelog-latest { width: 100%; flex-basis: auto; }
  .changelog-summary { grid-template-columns: 1fr 1fr; }
  .changelog-layout { grid-template-columns: 1fr; gap: 34px; padding-block: 52px 76px; }
  .changelog-layout > aside { position: static; flex-direction: row; flex-wrap: wrap; gap: 4px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
  .changelog-layout > aside > span { width: 100%; }
  .changelog-layout > aside a { grid-template-columns: 8px 1fr; padding: 7px 9px; border: 1px solid var(--line); }
  .changelog-layout > aside small { display: none; }
  .release-card { grid-template-columns: 22px minmax(0, 1fr); padding-bottom: 58px; }
  .release-rail > span { bottom: -54px; }
  .release-change { grid-template-columns: 1fr; gap: 9px; padding: 18px 16px; }
  .change-kind { width: -moz-fit-content; width: fit-content; }
  .changelog-subscribe { flex-direction: column; align-items: flex-start; margin-bottom: 76px; padding: 30px 24px; }
  .changelog-subscribe > div { align-items: flex-start; }
  .builder-page > header { width: calc(100% - 32px); }
  .builder-back span { display: none; }
  .builder-user-name { display: none; }
  .builder-header-actions { gap: 12px; }
  .auth-card { padding: 26px 20px; }
  .builder-start { width: calc(100% - 32px); padding: 44px 0 64px; gap: 36px; }
  .builder-intro h1 { font-size: clamp(38px, 11vw, 52px); }
  .builder-start > form { padding: 20px 16px; }
  .builder-input textarea { min-height: 160px; }
  .builder-page > .builder-workspace { width: calc(100% - 20px); padding: 10px 0; }
  .builder-live { display: none; }
  .builder-preview-bar small { display: none; }
  .builder-page.builder-three-col { display: block; height: auto; min-height: 100vh; overflow: visible; }
  .builder-resize-handle { display: none; }
  .builder-sidebar { min-height: 100vh; border-right: 0; }
  .builder-conversation, .builder-preview-panel { min-height: 100vh; }
  .builder-sidebar:has(.builder-history-item.active) { display: none; }
  .builder-new-session { min-height: 100vh; padding: 28px 18px; }
  .builder-trust { flex-wrap: wrap; }
}

/* ---------- account page ---------- */
.account-page { min-height: 100dvh; background: var(--bg); color: var(--ink); }
.account-header { display: flex; align-items: center; gap: 16px; padding: 12px 24px; border-bottom: 1px solid var(--line); background: var(--surface); }
.account-nav { display: flex; align-items: center; gap: 10px; margin-left: auto; flex-shrink: 0; }
.account-nav a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border: 1px solid var(--line); border-radius: 7px; color: var(--body); font-size: 12.5px; text-decoration: none; transition: color .15s, border-color .15s; }
.account-nav a:hover { color: var(--accent); border-color: var(--accent); }
.account-container { display: grid; grid-template-columns: 220px 1fr; max-width: 1100px; margin: 0 auto; min-height: calc(100dvh - 52px); }
.account-tabs { display: flex; flex-direction: column; gap: 2px; padding: 24px 12px; border-right: 1px solid var(--line); }
.account-tabs button { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 0; border-radius: 8px; background: transparent; color: var(--body); font-size: 13px; text-align: left; transition: background .1s, color .1s; }
.account-tabs button:hover { background: var(--surface-2); color: var(--ink); }
.account-tabs button.active { background: var(--surface-2); color: var(--accent); font-weight: 600; }
.account-tabs hr { border: 0; border-top: 1px solid var(--line); margin: 8px 0; }
.account-tab-logout { color: var(--faint) !important; }
.account-tab-logout:hover { color: #f87171 !important; }
.account-content { padding: 32px 40px; overflow-y: auto; }
.account-section h2 { margin: 0 0 16px; font-size: 17px; font-weight: 600; letter-spacing: -.01em; }
.account-section h2:not(:first-child) { margin-top: 36px; }
/* message */
.account-msg { display: flex; align-items: center; gap: 10px; padding: 10px 16px; margin-bottom: 20px; border-radius: 8px; font-size: 13px; }
.account-msg--success { background: rgb(var(--ok-rgb) / .1); color: var(--ok); border: 1px solid rgb(var(--ok-rgb) / .2); }
.account-msg--error { background: rgba(248,113,113,.1); color: #f87171; border: 1px solid rgba(248,113,113,.2); }
.account-msg button { margin-left: auto; padding: 2px 8px; border: 0; background: transparent; color: inherit; font-size: 16px; }
.account-ticket-form { display: flex; flex-direction: column; gap: 14px; margin-bottom: 28px; }
.account-ticket-context { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 12px; gap: 12px; }.account-ticket-context select { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: var(--bg); }
.account-ticket-form textarea { width: 100%; resize: vertical; }
.account-ticket-form > button, .account-ticket-actions button { align-self: flex-start; padding: 8px 14px; border: 1px solid var(--accent); border-radius: 7px; background: var(--accent); color: var(--accent-ink); font-size: 12px; font-weight: 600; }
.account-ticket-upload-field { display: grid; grid-gap: 8px; gap: 8px; }
.account-ticket-upload-field > label { color: var(--faint); font-size: 12.5px; font-weight: 500; }
.account-ticket-upload { display: grid; grid-gap: 10px; gap: 10px; }
.account-ticket-dropzone { position: relative; display: flex; min-height: 94px; align-items: center; gap: 13px; padding: 18px; border: 1px dashed rgb(var(--accent-rgb) / .5); border-radius: 11px; background: rgb(var(--accent-rgb) / .035); cursor: pointer; transition: border-color .15s, background .15s, transform .15s; }
.account-ticket-dropzone:hover { border-color: var(--accent); background: rgb(var(--accent-rgb) / .07); transform: translateY(-1px); }
.account-ticket-dropzone.is-disabled { opacity: .55; cursor: not-allowed; transform: none; }
.account-ticket-dropzone > input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.account-ticket-upload-icon { display: grid; width: 42px; height: 42px; flex: 0 0 auto; place-items: center; border: 1px solid rgb(var(--accent-rgb) / .18); border-radius: 10px; color: var(--accent); background: var(--surface); box-shadow: 0 5px 14px rgb(var(--accent-rgb) / .08); }
.account-ticket-upload-copy { display: grid; min-width: 0; grid-gap: 4px; gap: 4px; }
.account-ticket-upload-copy strong { color: var(--ink); font-size: 12.5px; font-weight: 600; }
.account-ticket-upload-copy small { color: var(--faint); font-size: 10.5px; line-height: 1.4; }
.account-ticket-upload-count { margin-left: auto; padding: 3px 8px; border-radius: 99px; color: var(--faint); background: var(--surface); font-size: 10px; font-weight: 600; }
.account-ticket-file-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-gap: 8px; gap: 8px; }
.account-ticket-file-item { display: flex; min-width: 0; align-items: center; gap: 9px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); }
.account-ticket-file-preview { display: grid; width: 34px; height: 34px; flex: 0 0 auto; place-items: center; overflow: hidden; border-radius: 7px; color: var(--accent); background: rgb(var(--accent-rgb) / .08); }
.account-ticket-file-preview img { width: 100%; height: 100%; object-fit: cover; }
.account-ticket-file-info { display: grid; min-width: 0; flex: 1 1; grid-gap: 2px; gap: 2px; }
.account-ticket-file-info strong { overflow: hidden; color: var(--body); font-size: 11px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.account-ticket-file-info small { color: var(--faint); font-size: 9.5px; }
.account-ticket-file-item > button { display: grid; width: 25px; height: 25px; flex: 0 0 auto; place-items: center; border: 0; border-radius: 6px; color: var(--faint); background: transparent; }
.account-ticket-file-item > button:hover { color: #f87171; background: rgba(248,113,113,.09); }
.account-ticket-upload--compact .account-ticket-dropzone { min-height: 54px; padding: 9px 12px; }
.account-ticket-upload--compact .account-ticket-upload-icon { width: 32px; height: 32px; border-radius: 8px; box-shadow: none; }
.account-ticket-upload--compact .account-ticket-file-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.account-ticket-file { display: inline-block; margin: 3px 5px 3px 0; padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--accent); font-size: 10px; }
.account-ticket-list { display: flex; flex-direction: column; gap: 14px; }
.account-ticket { display: flex; flex-direction: column; gap: 12px; }
.account-ticket-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.account-ticket-unread, .admin-ticket-row b > i { display: inline-grid; min-width: 18px; height: 18px; margin-left: 7px; place-items: center; border-radius: 99px; color: var(--accent-ink); background: var(--accent); font-size: 9px; font-style: normal; }.admin-ticket-row.unread td { background: rgb(var(--accent-rgb) / .035); }.admin-ticket-row.overdue td { box-shadow: inset 3px 0 rgba(248,113,113,.8); }.admin-sla { color: var(--faint); font-style: normal; font-size: 9px; }.admin-sla.overdue { color: #f87171; font-weight: 700; }
.account-tab-unread { display: inline-grid; min-width: 18px; height: 18px; margin-left: auto; padding: 0 5px; place-items: center; border-radius: 99px; color: var(--accent-ink); background: var(--accent); font-size: 9px; font-style: normal; }
.account-ticket > p { margin: 0; color: var(--body); white-space: pre-wrap; }
.account-ticket-message { padding: 9px 11px; border-radius: 7px; background: var(--surface-2); color: var(--body); white-space: pre-wrap; }
.account-ticket-message small { display: block; margin-bottom: 4px; color: var(--faint); font-size: 11px; }
.account-ticket-actions { display: flex; align-items: center; gap: 8px; }
.account-ticket-actions input { flex: 1 1; min-width: 0; }
.account-ticket-actions button:last-child { border-color: var(--line); background: transparent; color: var(--body); }
.account-ticket-reopen { align-self: flex-start; padding: 7px 12px; border: 1px solid var(--line); border-radius: 7px; color: var(--body); background: transparent; }.account-ticket-rating { display: grid; grid-gap: 8px; gap: 8px; padding-top: 10px; border-top: 1px solid var(--line); }.account-ticket-rating > div { display: flex; gap: 3px; }.account-ticket-rating > div button { border: 0; color: var(--line); background: transparent; font-size: 22px; }.account-ticket-rating > div button.active { color: #fbbf24; }.account-ticket-rating > button { justify-self: start; padding: 7px 12px; border: 1px solid var(--accent); border-radius: 7px; color: var(--accent-ink); background: var(--accent); }
/* profile card */
.account-card { padding: 20px 24px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.account-avatar-large { width: 64px; height: 64px; display: grid; place-items: center; border-radius: 16px; background: linear-gradient(135deg, var(--accent), #3b82f6); color: #fff; font-size: 26px; font-weight: 700; margin-bottom: 20px; }
.account-info-grid { display: flex; flex-direction: column; gap: 16px; }
.account-info-row { display: flex; align-items: center; gap: 16px; }
.account-info-row > label { flex-shrink: 0; width: 80px; font-size: 12.5px; color: var(--faint); font-weight: 500; }
.account-info-value { display: flex; align-items: center; gap: 10px; flex: 1 1; }
.account-info-value span { font-size: 13.5px; color: var(--ink); }
.account-mono { font-family: var(--mono); font-size: 11.5px !important; color: var(--faint) !important; word-break: break-all; }
.account-info-value button { padding: 3px 10px; border: 1px solid var(--line); border-radius: 5px; background: transparent; color: var(--accent); font-size: 11.5px; transition: background .1s; }
.account-info-value button:hover { background: var(--surface-2); }
/* inline edit */
.account-inline-edit { display: flex; align-items: center; gap: 8px; flex: 1 1; }
.account-inline-edit input { flex: 1 1; padding: 6px 10px; border: 1px solid var(--accent); border-radius: 6px; background: var(--bg); color: var(--ink); font-size: 13px; outline: none; }
.account-inline-edit button { padding: 5px 12px; border: 1px solid var(--line); border-radius: 6px; background: transparent; color: var(--body); font-size: 12px; }
.account-inline-edit button[type="submit"] { border-color: var(--accent); color: var(--accent); }
/* password form */
.account-pw-form { display: flex; flex-direction: column; gap: 14px; }
.account-pw-field { display: flex; align-items: center; gap: 16px; }
.account-pw-field > label { flex-shrink: 0; width: 80px; font-size: 12.5px; color: var(--faint); font-weight: 500; }
.account-pw-field input { flex: 1 1; max-width: 300px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--ink); font-size: 13px; outline: none; transition: border-color .15s; }
.account-pw-field input:focus { border-color: var(--accent); }
.account-pw-actions { display: flex; gap: 8px; padding-left: 96px; }
.account-pw-actions button { padding: 7px 16px; border-radius: 7px; font-size: 12.5px; }
.account-pw-actions button[type="submit"] { border: 1px solid var(--accent); background: var(--accent); color: var(--accent-ink); font-weight: 600; }
.account-pw-actions button[type="button"] { border: 1px solid var(--line); background: transparent; color: var(--body); }
/* plan card */
.account-plan-card { padding: 24px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.account-plan-header { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.account-plan-badge { padding: 4px 14px; border-radius: 6px; background: linear-gradient(135deg, var(--accent), #3b82f6); color: #fff; font-size: 14px; font-weight: 700; text-transform: uppercase; }
.account-plan-price { display: inline-flex; align-items: baseline; color: var(--ink); font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.account-plan-price sup { align-self: flex-start; margin: 3px 2px 0 0; color: var(--body); font-size: 11px; font-weight: 600; }
.account-plan-price strong { font-size: 25px; line-height: 1; letter-spacing: -.04em; }
.account-plan-price small { margin-left: 4px; color: var(--faint); font-size: 10.5px; font-weight: 500; }
.account-plan-model { font-size: 12.5px; color: var(--faint); margin-bottom: 14px; }
.account-plan-features { display: flex; gap: 20px; margin-bottom: 16px; }
.account-plan-features span { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--body); }
.account-plan-features span::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.account-plan-renewal { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); font-size: 12.5px; }
.account-plan-renewal span { color: var(--faint); }
.account-plan-renewal strong { color: var(--ink); font-size: 13px; font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.account-plan-pass-note { margin: 12px 2px 0; color: var(--faint); font-size: 12px; line-height: 1.65; }
.account-plan-pending { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px; padding: 12px 14px; border: 1px solid rgb(var(--accent-rgb) / .3); border-radius: 9px; background: rgb(var(--accent-rgb) / .07); }
.account-plan-pending div { display: grid; grid-gap: 3px; gap: 3px; }.account-plan-pending span, .account-plan-pending small { color: var(--faint); font-size: 10px; }.account-plan-pending strong { color: var(--ink); font-size: 13px; }.account-plan-pending button { flex: 0 0 auto; padding: 7px 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--body); background: var(--surface); font-size: 10px; }
.account-plan-upgrade { display: inline-block; padding: 8px 20px; border: 1px solid var(--accent); border-radius: 8px; color: var(--accent); font-size: 13px; font-weight: 600; text-decoration: none; transition: background .15s, color .15s; }
.account-plan-upgrade:hover { background: var(--accent); color: var(--accent-ink); }
/* plan picker grid */
.account-plans-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); grid-gap: 16px; gap: 16px; margin-bottom: 32px; }
.account-plan-option { display: flex; flex-direction: column; padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); transition: border-color .2s, box-shadow .2s; }
.account-plan-option:hover { border-color: var(--accent); }
.account-plan-option--current { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent); }
.account-plan-option-header { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.account-plan-option-name { font-size: 16px; font-weight: 700; color: var(--ink); }
.account-plan-option-price { display: inline-flex; align-items: baseline; color: var(--body); font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.account-plan-option-price sup { align-self: flex-start; margin: 2px 1px 0 0; font-size: 9px; font-weight: 600; }
.account-plan-option-price strong { color: var(--ink); font-size: 17px; line-height: 1; letter-spacing: -.03em; }
.account-plan-option-price small { margin-left: 3px; color: var(--faint); font-size: 9px; font-weight: 500; }
.account-plan-option-features { list-style: none; padding: 0; margin: 0 0 16px; flex: 1 1; }
.account-plan-option-features li { font-size: 12.5px; color: var(--body); padding: 3px 0; padding-left: 14px; position: relative; }
.account-plan-option-features li::before { content: ""; position: absolute; left: 0; top: 9px; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.account-plan-option-btn { width: 100%; padding: 8px 0; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; font-weight: 600; cursor: pointer; transition: background .15s, color .15s, border-color .15s; }
.account-plan-option-btn--current { background: var(--surface-2); color: var(--faint); cursor: default; border-color: var(--line); }
.account-plan-option-btn--upgrade { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.account-plan-option-btn--upgrade:hover:not(:disabled) { opacity: .9; }
.account-plan-option-btn--downgrade { background: transparent; color: var(--body); border-color: var(--line); }
.account-plan-option-btn--downgrade:hover:not(:disabled) { border-color: var(--body); }
.account-plan-option-btn:disabled { opacity: .6; cursor: not-allowed; }
.account-plan-change-rule { display: block; margin-top: 9px; color: var(--faint); font-size: 10px; line-height: 1.5; }
/* usage */
.account-usage-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); grid-gap: 16px; gap: 16px; }
.account-usage-item { padding: 20px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.account-usage-label { font-size: 12px; color: var(--faint); margin-bottom: 8px; }
.account-usage-value { font-size: 24px; font-weight: 700; color: var(--ink); }
.account-usage-value small { font-size: 14px; font-weight: 400; color: var(--faint); }
.account-usage-bar { height: 4px; margin-top: 12px; border-radius: 4px; background: var(--line); overflow: hidden; }
.account-usage-bar i { display: block; height: 100%; background: var(--accent); border-radius: 4px; transition: width .3s; }
.account-token-detail { display: flex; gap: 12px; margin-top: 8px; font-size: 12px; color: var(--faint); }
.account-token-detail span { white-space: nowrap; }
/* table */
.account-table { width: 100%; border-collapse: collapse; }
.account-table th { text-align: left; padding: 10px 14px; font-size: 11.5px; font-weight: 600; color: var(--faint); text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid var(--line); }
.account-table td { padding: 12px 14px; font-size: 13px; color: var(--body); border-bottom: 1px solid var(--line); }
.account-table tbody tr:hover { background: var(--surface-2); }
.account-inv-status { padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.account-inv-status--paid { background: rgb(var(--ok-rgb) / .1); color: var(--ok); }
.account-inv-status--pending { background: rgba(251,191,36,.1); color: #fbbf24; }
.account-inv-status--failed { background: rgba(248,113,113,.1); color: #f87171; }
.account-inv-status--refunded { background: rgba(148,163,184,.1); color: #94a3b8; }
.account-invoice-refund { display: block; margin-top: .2rem; color: var(--text-muted); font-size: .75rem; }
/* empty state */
.account-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 48px 24px; border: 1px dashed var(--line); border-radius: 12px; text-align: center; color: var(--faint); }
.account-empty p { margin: 4px 0 0; font-size: 14px; color: var(--body); }
.account-empty small { font-size: 12px; }

@media (max-width: 768px) {
  .account-container { grid-template-columns: 1fr; }
  .account-tabs { flex-direction: row; overflow-x: auto; padding: 8px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .account-tabs hr { display: none; }
  .account-content { padding: 20px 16px; }
  .account-usage-grid { grid-template-columns: 1fr; }
  .account-info-row { flex-direction: column; align-items: flex-start; gap: 4px; }
  .account-info-row > label { width: auto; }
  .account-pw-field { flex-direction: column; align-items: flex-start; gap: 4px; }
  .account-pw-field > label { width: auto; }
  .account-pw-actions { padding-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ---------- administration ---------- */
.admin-page { min-height: 100vh; display: grid; grid-template-columns: 220px 1fr; color: var(--ink); background: var(--bg); }
.admin-gate { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; color: var(--ink); background: var(--bg); }
.admin-gate .admin-error { max-width: 420px; }
.admin-sidebar { position: -webkit-sticky; position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 18px 12px; border-right: 1px solid var(--line); background: var(--surface); overflow-y: auto; scrollbar-width: thin; }
.admin-sidebar::-webkit-scrollbar { width: 6px; }
.admin-sidebar::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--faint) 55%, transparent); border-radius: 3px; }
.admin-sidebar::-webkit-scrollbar-thumb:hover { background: var(--faint); }
.admin-sidebar::-webkit-scrollbar-track { background: transparent; }
.admin-sidebar > .logo { margin: 0 8px 28px; }
.admin-label { margin: 0 9px 8px; color: var(--faint); font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.admin-sidebar nav { display: grid; grid-gap: 3px; gap: 3px; }
.admin-sidebar nav button { padding: 9px 11px; border: 0; border-radius: 7px; color: var(--body); background: transparent; font-size: 12px; text-align: left; }
.admin-sidebar nav button:hover, .admin-sidebar nav button.active { color: var(--ink); background: var(--surface-2); }
.admin-sidebar nav button.active { box-shadow: inset 2px 0 var(--accent); }
.admin-user { margin-top: auto; padding: 12px 9px 2px; border-top: 1px solid var(--line); }
.admin-user span, .admin-user small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-user span { font-size: 12px; }.admin-user small { margin-top: 3px; color: var(--faint); font-size: 10px; }
.admin-user a { display: inline-block; margin-top: 10px; color: var(--accent); font-size: 10px; }
.admin-main { min-width: 0; padding: 30px clamp(18px, 3vw, 44px) 60px; overflow: hidden; }
.admin-main > header { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 26px; flex-wrap: wrap; }
.admin-main > header > div:last-child { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.admin-main > header span { color: var(--accent); font-family: var(--mono); font-size: 9px; letter-spacing: .12em; }
.admin-main > header h1 { margin: 5px 0 0; font-size: 28px; letter-spacing: -.03em; }
.admin-main > header button, .admin-filters button { padding: 8px 12px; border: 1px solid var(--line); border-radius: 7px; color: var(--body); background: var(--surface); font-size: 11px; }
/* Overview has 6 metric cards; 3 columns keeps rows balanced (6 divides evenly by 6/3/2/1 at every breakpoint). */
.admin-metrics { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 12px; gap: 12px; margin-bottom: 16px; }
@media (min-width: 1440px) { .admin-metrics { grid-template-columns: repeat(6, 1fr); } }
.admin-metrics article, .admin-card { border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.admin-metrics article { padding: 17px; }.admin-metrics span { color: var(--faint); font-size: 10px; }.admin-metrics b { display: block; margin: 8px 0 5px; font-size: 25px; }.admin-metrics small { color: var(--body); font-size: 10px; }
.admin-grid { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 14px; gap: 14px; }.admin-wide { grid-column: 1 / -1; }
.admin-card { min-width: 0; overflow: auto; padding: 16px; scrollbar-width: thin; }.admin-card h2 { margin: 0 0 14px; font-size: 13px; }
.admin-card::-webkit-scrollbar { width: 6px; height: 6px; }
.admin-card::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--faint) 55%, transparent); border-radius: 3px; }
.admin-card::-webkit-scrollbar-thumb:hover { background: var(--faint); }
.admin-card::-webkit-scrollbar-track { background: transparent; }
.admin-card table { width: 100%; border-collapse: collapse; font-size: 11px; }.admin-card th { padding: 8px 9px; border-bottom: 1px solid var(--line); color: var(--faint); font-size: 9px; font-weight: 600; text-align: left; white-space: nowrap; }.admin-card td { max-width: 320px; padding: 10px 9px; border-bottom: 1px solid rgba(255,255,255,.045); color: var(--body); vertical-align: middle; }.admin-card td b, .admin-card td small { display: block; }.admin-card td b { color: var(--ink); font-weight: 500; }.admin-card td small { margin-top: 3px; overflow: hidden; color: var(--faint); font-size: 9px; white-space: nowrap; text-overflow: ellipsis; }
.admin-card select, .admin-filters input, .admin-filters select { padding: 7px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink); background: var(--bg); font-size: 10px; outline: none; }
.admin-status, .admin-http { display: inline-block; padding: 3px 6px; border-radius: 99px; font-style: normal; font-size: 9px; white-space: nowrap; }.admin-status.completed, .admin-status.active { color: var(--ok); background: rgb(var(--ok-rgb) / .1); }.admin-status.running, .admin-status.queued { color: #60a5fa; background: rgba(96,165,250,.1); }.admin-status.failed, .admin-status.suspended { color: #f87171; background: rgba(248,113,113,.1); }.admin-http.s2 { color: var(--accent); }.admin-http.s4 { color: #fbbf24; }.admin-http.s5 { color: #f87171; }
.admin-actions { display: flex; gap: 5px; }.admin-actions button { padding: 5px 7px; border: 1px solid var(--line); border-radius: 5px; color: var(--body); background: var(--bg); font-size: 9px; }.admin-actions button.danger { color: #f87171; }
.admin-pager { display: flex; align-items: center; justify-content: flex-end; gap: 7px; padding-top: 14px; color: var(--faint); font-size: 10px; }.admin-pager span { margin-right: auto; }.admin-pager button { padding: 5px 8px; border: 1px solid var(--line); border-radius: 5px; color: var(--body); background: var(--bg); font-size: 9px; }
.admin-filters { display: flex; gap: 8px; margin: -10px 0 16px; }.admin-filters input { width: min(320px, 50vw); }
.admin-error { margin-bottom: 14px; padding: 10px 12px; border: 1px solid rgba(248,113,113,.25); border-radius: 7px; color: #fca5a5; background: rgba(248,113,113,.07); font-size: 11px; }.admin-loading { min-height: 300px; display: flex; align-items: center; justify-content: center; gap: 10px; color: var(--faint); font-size: 12px; }.admin-loading i { width: 20px; height: 20px; border: 2px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: builder-spin 1s linear infinite; }
.admin-node-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); grid-gap: 12px; gap: 12px; }.admin-node-grid article { position: relative; }.admin-node-grid h2 { margin: 0; }.admin-node-grid p { color: var(--faint); font-size: 10px; }.admin-node-dot { position: absolute; top: 17px; right: 17px; width: 7px; height: 7px; border-radius: 50%; background: #f87171; }.admin-node-dot.online { background: var(--ok); box-shadow: 0 0 9px rgb(var(--ok-rgb) / .5); }.admin-node-grid dl, .admin-details { display: grid; grid-gap: 7px; gap: 7px; margin: 15px 0 0; }.admin-node-grid dl div, .admin-details div { display: flex; justify-content: space-between; gap: 14px; }.admin-node-grid dt, .admin-details dt { color: var(--faint); font-size: 9px; }.admin-node-grid dd, .admin-details dd { margin: 0; overflow: hidden; color: var(--body); font-family: var(--mono); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.admin-node-managed { display: flex; flex-direction: column; }.admin-node-actions { margin-top: auto; padding-top: 14px; flex-wrap: wrap; }
.admin-node-back { margin-bottom: 16px; }.admin-node-back button { padding: 7px 12px; border: 1px solid var(--line); border-radius: 7px; color: var(--body); background: var(--surface); font-size: 11px; cursor: pointer; }.admin-node-back button:hover { color: var(--ink); background: var(--surface-2); }
.admin-node-header { display: flex; align-items: center; gap: 10px; }.admin-node-header .admin-node-dot { position: static; }.admin-node-header h2 { margin: 0; flex: 1 1; }.admin-node-header .admin-status { flex-shrink: 0; }
.admin-edit-form label { display: flex; align-items: center; gap: 10px; margin: 10px 0; font-size: 11px; color: var(--body); }.admin-edit-form label input { flex: 1 1; padding: 7px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink); background: var(--bg); font-size: 11px; outline: none; }.admin-edit-form label input[type="number"] { max-width: 80px; }
.admin-modal-overlay { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.admin-modal { width: min(420px, 90vw); animation: admin-modal-in .15s ease-out; }.admin-modal label { display: flex; align-items: center; gap: 10px; margin: 10px 0; font-size: 11px; color: var(--body); }.admin-modal label input { flex: 1 1; padding: 7px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink); background: var(--bg); font-size: 11px; outline: none; }.admin-modal label input[type="number"] { max-width: 80px; }.admin-modal .admin-actions { margin-top: 14px; }
.admin-ticket-row { cursor: pointer; }.admin-ticket-row:hover td { background: var(--surface-2); }.admin-priority { font-style: normal; font-size: 9px; text-transform: uppercase; }.admin-priority.high { color: #fbbf24; }.admin-priority.urgent { color: #f87171; }.admin-status.ticket-open { color: #60a5fa; }.admin-status.ticket-pending { color: #fbbf24; }.admin-status.ticket-resolved { color: var(--ok); }.admin-status.ticket-closed { color: var(--faint); }.admin-ticket-detail { overflow: visible; }.admin-ticket-back { margin-bottom: 16px; border: 0; color: var(--accent); background: transparent; }.admin-ticket-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding-bottom: 15px; border-bottom: 1px solid var(--line); }.admin-ticket-title h2 { margin-bottom: 5px; }.admin-ticket-title small { color: var(--faint); }.admin-ticket-fields { display: flex; gap: 8px; }.admin-ticket-fields select { min-width: 105px; }.admin-ticket-fields button { padding: 7px 9px; border: 1px solid var(--line); border-radius: 6px; color: var(--body); background: var(--bg); font-size: 10px; }.admin-ticket-messages { display: grid; grid-gap: 10px; gap: 10px; margin: 18px 0; }.admin-ticket-messages article { padding: 12px; border-radius: 8px; background: var(--surface-2); }.admin-ticket-file { display: inline-block; margin: 7px 5px 0 0; padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--accent); font-size: 10px; }.admin-ticket-messages article.internal { border: 1px solid rgba(251,191,36,.25); background: rgba(251,191,36,.07); }.admin-ticket-messages header { display: flex; justify-content: space-between; gap: 12px; }.admin-ticket-messages header small { color: var(--faint); }.admin-ticket-messages p { margin: 8px 0 0; color: var(--body); white-space: pre-wrap; }.admin-ticket-activity { margin: 18px 0; padding: 14px; border: 1px solid var(--line); border-radius: 8px; }.admin-ticket-activity h3 { margin: 0 0 10px; font-size: 11px; }.admin-ticket-activity > div { display: grid; grid-template-columns: 8px 1fr auto; align-items: center; grid-gap: 8px; gap: 8px; padding: 6px 0; color: var(--body); font-size: 10px; }.admin-ticket-activity > div > i { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }.admin-ticket-activity small { color: var(--faint); }.admin-ticket-reply { display: grid; grid-gap: 8px; gap: 8px; }.admin-ticket-reply textarea { resize: vertical; padding: 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: var(--bg); }.admin-ticket-reply label { display: flex; align-items: center; gap: 7px; color: var(--faint); font-size: 10px; }.admin-ticket-reply button { justify-self: end; padding: 8px 13px; border: 0; border-radius: 7px; color: var(--accent-ink); background: var(--accent); }.admin-ticket-progress { padding: 10px; color: var(--faint); text-align: center; }
.admin-email-layout { display: grid; grid-template-columns: minmax(300px, 420px) minmax(0, 1fr); grid-gap: 14px; gap: 14px; align-items: start; }
.admin-email-compose { display: grid; grid-gap: 10px; gap: 10px; overflow: visible; }
.admin-email-compose label { display: grid; grid-gap: 6px; gap: 6px; color: var(--body); font-size: 10px; }
.admin-email-compose label span { color: var(--faint); font-weight: 600; }
.admin-email-compose input, .admin-email-compose textarea { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: var(--bg); font-size: 11px; outline: none; }
.admin-email-compose textarea { resize: vertical; line-height: 1.55; }
.admin-email-compose input:focus, .admin-email-compose textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.admin-email-compose > small { margin: -6px 0 2px; color: var(--faint); font-size: 9px; }
.admin-email-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.admin-email-footer button { padding: 8px 16px; border: 0; border-radius: 7px; color: var(--accent-ink); background: var(--accent); font-size: 11px; font-weight: 600; }
.admin-email-footer button:disabled { cursor: not-allowed; opacity: .5; }
.admin-email-message { margin: 0; color: var(--accent); font-size: 10px; }
.admin-email-history td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@keyframes admin-modal-in { from { opacity: 0; transform: scale(.95); } to { opacity: 1; transform: scale(1); } }
@media (max-width: 900px) { .admin-page { grid-template-columns: 1fr; }.admin-sidebar { position: static; height: auto; }.admin-sidebar nav { grid-template-columns: repeat(4, 1fr); }.admin-user { display: none; }.admin-metrics { grid-template-columns: 1fr 1fr; }.admin-grid, .admin-email-layout { grid-template-columns: 1fr; }.admin-wide { grid-column: auto; } }
@media (max-width: 560px) { .admin-sidebar nav { grid-template-columns: 1fr 1fr; }.admin-metrics { grid-template-columns: 1fr; }.admin-main { padding-inline: 12px; }.admin-filters { flex-wrap: wrap; }.admin-card { padding: 9px; } }
@media (max-width: 700px) { .account-ticket-context { grid-template-columns: 1fr; }.account-ticket-file-list, .account-ticket-upload--compact .account-ticket-file-list { grid-template-columns: 1fr; }.account-ticket-dropzone { padding: 14px; }.account-ticket-upload-count { display: none; }.account-ticket-actions { align-items: stretch; flex-direction: column; }.account-ticket-actions button { align-self: stretch; } }

/* ---------- template gallery ---------- */
.templates-hero { padding: 76px 0 40px; text-align: center; }
.templates-hero h1 { margin: 14px 0 16px; font-size: clamp(34px, 5vw, 54px); font-weight: 800; line-height: 1.1; letter-spacing: -.03em; }
.templates-hero h1 span { color: var(--accent); }
.templates-hero p { max-width: 620px; margin: 0 auto; color: var(--body); font-size: 16px; line-height: 1.7; }
.templates-hero small { display: block; margin-top: 18px; color: var(--faint); font-family: var(--mono); font-size: 12px; }
.templates-list { display: grid; grid-gap: 16px; gap: 16px; padding-bottom: 40px; }
.template-card { padding: 24px 26px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); scroll-margin-top: 90px; }
.template-card > header { display: flex; align-items: flex-start; gap: 14px; }
.template-card > header > div { flex: 1 1; min-width: 0; }
.template-card h2 { margin: 0 0 6px; font-size: 19px; font-weight: 700; }
.template-card header p { margin: 0; color: var(--body); font-size: 14px; line-height: 1.6; }
.template-icon { flex-shrink: 0; display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface-2); font-size: 21px; }
.template-card > header .button { flex-shrink: 0; }
.template-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); grid-gap: 20px; gap: 20px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.template-body b { display: block; margin-bottom: 10px; color: var(--ink); font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.template-highlights ul { display: grid; grid-gap: 8px; gap: 8px; margin: 0; padding: 0; list-style: none; }
.template-highlights li { display: flex; align-items: flex-start; gap: 8px; color: var(--body); font-size: 13.5px; line-height: 1.5; }
.template-highlights li svg { flex-shrink: 0; margin-top: 2px; color: var(--accent); }
.template-brief pre { max-height: 190px; margin: 0; padding: 12px 14px; overflow-y: auto; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); color: var(--faint); font-family: var(--mono); font-size: 11.5px; line-height: 1.65; white-space: pre-wrap; }
@media (max-width: 780px) {
  .template-body { grid-template-columns: 1fr; }
  .template-card > header { flex-wrap: wrap; }
  .template-card > header .button { width: 100%; justify-content: center; }
}
/* preview health panel */
.admin-metric-bad { color: #f87171; }
.admin-hint { margin: -6px 0 16px; color: var(--faint); font-size: 10px; }
.admin-empty-text { color: var(--faint); font-size: 11px; }
.admin-bars { display: grid; grid-gap: 9px; gap: 9px; }
.admin-bars > div { display: grid; grid-template-columns: 90px 1fr 40px; align-items: center; grid-gap: 10px; gap: 10px; font-size: 10px; }
.admin-bars span { color: var(--body); font-family: var(--mono); }
.admin-bars i { height: 8px; border-radius: 99px; background: var(--surface-2); overflow: hidden; }
.admin-bars em { display: block; height: 100%; border-radius: 99px; background: var(--accent); }
.admin-bars b { color: var(--ink); text-align: right; font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; }
.admin-error-cell { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--faint); font-family: var(--mono); }

