/* ============================================================
   THE MISSING BUTTONS, components
   Repaints the old "Pulse × Aurora" components against the
   Solar Glass tokens. Same class names as the old styles.css
   so existing tool pages keep working without changes.
   ============================================================ *//* ---------- buttons ---------- */.btn{font-family:var(--font-sans);font-weight:700;font-size:0.92rem;border-radius:var(--radius);padding:11px 22px;cursor:pointer;border:2px solid transparent;display:inline-block;letter-spacing:-0.01em;transition:transform .12s var(--ease-out),background .15s,border-color .15s,color .15s,box-shadow .15s}.btn:active{transform:scale(0.97)}.btn-primary{background:var(--accent);color:var(--accent-contrast);box-shadow:0 10px 24px -14px rgba(109,40,217,0.55)}.btn-primary:hover{background:var(--accent-deep);text-decoration:none}.btn-primary:disabled{background:var(--line-strong);box-shadow:none;cursor:default}.btn-ghost{background:var(--bg);color:var(--text);border-color:var(--line-strong)}.btn-ghost:hover{border-color:var(--text);text-decoration:none}.btn-dark{background:var(--text);color:var(--surface);border-color:var(--text)}.btn-dark:hover{filter:brightness(1.12);text-decoration:none}.btn-sm{padding:7px 14px;font-size:0.84rem}/* ---------- form fields ---------- */label{display:block;font-size:0.78rem;font-weight:700;margin-bottom:6px;letter-spacing:0.01em}input[type="text"],input[type="password"],input[type="email"],input[type="search"],select,textarea{width:100%;padding:12px 14px;font-size:0.95rem;font-family:var(--font-sans);font-weight:500;border:2px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);transition:border-color 0.15s}input:hover,select:hover,textarea:hover{border-color:var(--line-strong)}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}.mono-input{font-family:var(--font-mono);font-size:0.88rem}.field{margin-bottom:16px}.field .sub{font-size:0.78rem;color:var(--muted);margin-top:6px}.field .sub code{font-family:var(--font-mono)}/* ---------- cards ---------- */.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px;box-shadow:0 1px 2px rgba(28,27,25,0.04),0 4px 14px -8px rgba(28,27,25,0.06);transition:transform 0.16s,box-shadow 0.16s,border-color 0.16s}/* ---------- status badges ---------- */.badge{font-family:var(--font-mono);font-size:0.7rem;font-weight:500;padding:3px 11px;border-radius:999px;white-space:nowrap;display:inline-block}.badge.live{background:var(--live-tint);color:var(--live)}.badge.build{background:var(--build-tint);color:var(--build)}.badge.planned{background:var(--accent-tint);color:var(--accent-deep)}.badge.requested{background:transparent;color:var(--muted);border:1.5px dashed var(--line-strong);padding:1px 10px}/* ---------- messages ---------- */.msg{display:none;margin-top:14px;font-size:0.88rem;font-weight:500;padding:12px 15px;border-radius:var(--radius-sm)}.msg.error{background:#FDEDE8;color:#A33530}.msg.busy{background:var(--surface-2);color:var(--text-secondary)}.msg.ok{background:var(--live-tint);color:var(--live)}/* ---------- footer ---------- */footer.site-foot{width:100%;box-sizing:border-box}footer.site-foot .foot-inner{max-width:1200px;margin:0 auto;box-sizing:border-box;padding:46px 30px 5px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px;border-top:1px solid var(--line)}footer.site-foot .foot-links{display:flex;align-items:center;gap:22px;flex-wrap:wrap}footer.site-foot a{font-size:13.5px;color:var(--muted);text-decoration:none;cursor:pointer}footer.site-foot a:hover{color:var(--accent, #6d28d9)}footer.site-foot .foot-fine{font-family:var(--font-mono);font-size:12px;color:var(--muted)}/* ---------- responsive safety: shrink fixed field widths on small screens ---------- */@media (max-width: 560px){.field,.inline-opts .field,.assoc-row .field,.share-bar .field{min-width:0}.inline-opts,.assoc-row,.share-bar{flex-wrap:wrap}.card{padding:18px}}/* Dark mode: violet text on a dark accent-tint / dark card reads dark-on-dark.
   Brighten to a light violet so it stays legible (impeccable: push toward the
   light end on dark surfaces). Dark-scoped, colour only, never touches buttons. */html[data-theme="dark"] .privacy,html[data-theme="dark"] .freenote,html[data-theme="dark"] .safebox,html[data-theme="dark"] .step.active .node,html[data-theme="dark"] .aud-table td.arch{color:#C7B8F7}