/* Home hero install block (hydrated by /js/product-all.js). */
.all-install{margin:38px 0 0;display:grid;grid-template-columns:minmax(0,1fr);gap:14px;position:relative;z-index:2}
.all-line{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:58px;text-align:left;cursor:pointer;
  padding:10px 10px 10px 12px;border-radius:13px;border:1px solid var(--line-2);background:color-mix(in srgb,var(--surface) 88%,transparent);
  color:var(--text);font:inherit;transition:border-color .2s,box-shadow .2s,transform .2s;backdrop-filter:blur(6px)}
.all-line:hover{border-color:var(--lime-ink);box-shadow:0 0 0 1px var(--lime-soft),0 14px 40px -18px var(--lime-glow)}
.all-line:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.all-line.main{border-color:color-mix(in srgb,var(--lime) 45%,var(--line-2))}
.all-tag{font:600 9.5px/1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;padding:5px 7px;border-radius:6px;border:1px solid var(--line-2);color:var(--muted);white-space:nowrap}
.all-line.main .all-tag{color:var(--lime-ink);border-color:var(--lime-soft)}
.all-line code{font:500 15px/1.4 'JetBrains Mono',ui-monospace,monospace;color:var(--text);background:none;border:0;padding:0;border-radius:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.all-line.main code{font-size:clamp(13px,1.15vw,15.5px)}
.all-line:not(.main) code{white-space:normal;font-size:12.5px;line-height:1.45}
.all-line.ai-only{border-color:color-mix(in srgb,var(--cyan) 55%,var(--line-2));box-shadow:0 0 0 1px color-mix(in srgb,var(--cyan) 14%,transparent),0 0 34px -14px var(--cyan)}
.all-line.ai-only:hover{border-color:var(--cyan);box-shadow:0 0 0 1px color-mix(in srgb,var(--cyan) 30%,transparent),0 14px 40px -18px var(--cyan)}
.all-line.ai-only .all-tag{color:var(--cyan-ink);border-color:color-mix(in srgb,var(--cyan) 40%,transparent)}
.all-install:has(.ai-only){max-width:596px}
.all-line.ai-only{min-height:54px;padding:10px 10px 10px 15px;grid-template-columns:minmax(0,1fr) auto}.all-line.ai-only .all-tag{display:none}
.all-line.ai-only code{white-space:normal;font-size:13.5px;line-height:1.55}.all-line.ai-only .url{display:block;color:var(--text)}
/* first-load typing: untyped characters keep their space (no layout shift), caret rides the edge */
.all-line .rest{visibility:hidden}
.all-line .caret{display:inline-block;width:.55em;height:1.15em;margin:0 -.55em -.2em 0;background:var(--cyan);opacity:.85;animation:all-blink 1s steps(1) infinite}
@keyframes all-blink{50%{opacity:0}}
.all-line code .p{color:var(--lime-ink);margin-right:8px;user-select:none}
.all-line .ai{color:var(--cyan-ink)}
.all-cp{font:600 12px/1 Inter,system-ui,sans-serif;padding:7px 10px;border-radius:8px;background:var(--raised);border:1px solid var(--line-2);color:var(--text-2);white-space:nowrap;transition:background .2s,color .2s}
.all-line.main .all-cp{background:var(--lime);color:var(--on-lime);border-color:transparent}
.all-line.copied .all-cp{background:var(--lime-soft);color:var(--lime-ink)}
@media (max-width:620px){.all-install{margin:20px 0 0}.all-line{grid-template-columns:minmax(0,1fr) auto;gap:10px}.all-tag{display:none}
  .all-line code,.all-line.main code{white-space:normal;overflow-wrap:normal;word-break:normal;font-size:13.5px}.all-line:not(.main) code,.all-line.ai-only code{overflow-wrap:anywhere;text-overflow:clip}}
@media (prefers-reduced-motion:reduce){.all-line{transition:none}}
/* Hidden until the script paints it (no flash of the raw text before typing starts) */
[data-all-install]:not(.ready) .all-line.ai-only code{visibility:hidden}
/* After typing: a slow breathe on the outline */
.all-line.ai-only.typed{animation:all-breathe 3.6s ease-in-out infinite}
.all-line.ai-only.typed:hover{animation:none}
@keyframes all-breathe{0%,100%{border-color:color-mix(in srgb,var(--cyan) 45%,var(--line-2));box-shadow:0 0 0 1px color-mix(in srgb,var(--cyan) 10%,transparent),0 0 26px -16px var(--cyan)}
  50%{border-color:color-mix(in srgb,var(--cyan) 85%,var(--line-2));box-shadow:0 0 0 1px color-mix(in srgb,var(--cyan) 26%,transparent),0 0 42px -12px var(--cyan)}}
@media (prefers-reduced-motion:reduce){.all-line.ai-only.typed{animation:none}.all-line .caret{animation:none}}
/* Resting caret once typed: a small gap after the text and softer */
.all-line.ai-only.typed .caret{margin-left:.35em;opacity:.45;animation-name:all-blink-soft}
@keyframes all-blink-soft{0%,49%{opacity:.45}50%,100%{opacity:0}}
/* One opening quote mark: signals the whole field is the prompt (visual only, never copied) */
.all-line.ai-only code{position:relative;padding-left:22px}
.all-line.ai-only code::before{content:"“" / "";position:absolute;left:-2px;top:-2px;font:400 34px/1 Georgia,'Times New Roman',serif;color:var(--lime);opacity:.72;text-shadow:0 0 12px color-mix(in srgb,var(--lime) 30%,transparent);user-select:none;pointer-events:none}
:root[data-theme="light"] .all-line.ai-only code::before{color:var(--lime-ink);opacity:.55}

/* Phones: the button drops under the prompt so the text gets the full width */
@media (max-width:620px){
  .all-line.ai-only{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 12px 12px 14px}
  .all-line.ai-only code{font-size:12.5px;overflow-wrap:break-word}
  .all-line.ai-only .all-cp{justify-self:start;margin-left:22px}
}

/* Measured install cost, under the prompt: quiet until read */
.all-proof{margin:2px 0 0 16px;font:500 12.5px/1.4 'JetBrains Mono',ui-monospace,monospace;color:var(--muted);letter-spacing:.01em}
.all-proof b{color:var(--lime-ink);font-weight:600}
.all-proof span{color:var(--dim)}
@media (max-width:620px){.all-proof{margin-left:4px;font-size:11.5px}.all-proof span{display:block}}
.all-proof.all-vs{margin-top:-2px;color:var(--dim)}.all-proof.all-vs b{color:var(--text-2);font-weight:600}
.all-proof.all-vs b{white-space:nowrap}
.all-proof.all-vs b{color:#f05a28}:root[data-theme="light"] .all-proof.all-vs b{color:#b8330f}
/* proof lines: a touch lower, bulleted */
.all-proof{position:relative;padding-left:16px}
.all-proof::before{content:'';position:absolute;left:2px;top:.52em;width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 8px var(--lime-glow)}
.all-proof:not(.all-vs){margin-top:20px}
.all-proof.all-vs{margin-top:-6px}
.all-proof.all-vs::before{background:#f05a28;box-shadow:0 0 8px rgba(240,90,40,.45)}
