/*! StiffStruct, (c) 2026 Mohammad Asad. All rights reserved. Proprietary: copying, mirroring or reusing this code is not permitted without written permission (see terms.html#intellectual-property). build 20261018-2133 */
/* StiffStruct sign-in gate: dialog, locked cards / pages, header account button.
 * Uses only design tokens (css/tokens.css), so it follows light / dark and high / normal contrast. */

/* --- header: brand link, sign-in button, avatar --------------------------------------------- */
a.sh-brand { text-decoration: none; color: var(--fg); }
a.sh-brand:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.au-signin { flex: none; gap: 6px; font-weight: 600; }
.au-signin .au-signin-t { white-space: nowrap; }
.au-avatar-btn { padding: 0; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--accent-soft); color: var(--accent-text); display: inline-flex; align-items: center; justify-content: center; font: 700 12.5px/1 var(--font-ui); letter-spacing: 0.02em; cursor: pointer; overflow: hidden; }
.au-avatar-btn:hover { border-color: var(--accent); }
.au-avatar-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); border-color: var(--accent); }
.au-avatar-btn img { width: 100%; height: 100%; object-fit: cover; display: block; }
.au-acct { display: grid; gap: 2px; padding: 10px 12px 8px; min-width: 220px; max-width: 280px; }
.au-acct strong { font-size: 13.5px; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.au-acct span { font-size: 12px; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.au-acct .badge { justify-self: start; margin-top: 4px; }
@media (max-width: 600px) {
  .au-signin .au-signin-t { display: none; }
  .au-signin { width: 32px; padding: 0; justify-content: center; }
}

/* --- dialog ---------------------------------------------------------------------------------- */
.au { display: grid; gap: 14px; }
.au-test { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 9px 11px; border-radius: var(--radius); background: var(--warning-soft); color: var(--fg); font-size: 12.5px; line-height: 1.45; }
.au-reason { margin: 0; color: var(--fg-muted); font-size: 13.5px; line-height: 1.5; }
.au-tabs { margin: 0 0 2px; }
.au-tab { flex: 1 1 0; justify-content: center; text-align: center; }
.au-google { height: 40px; gap: 10px; font-weight: 600; }
.au-google .au-g { flex: none; }
.au-or { display: flex; align-items: center; gap: 10px; color: var(--fg-muted); font-size: 12px; }
.au-or::before, .au-or::after { content: ""; flex: 1; height: 1px; background: var(--border); }
.au-form { display: grid; gap: 12px; }
.au-field .input { height: 38px; }
.au-pw { position: relative; display: block; }
.au-pw .input { width: 100%; padding-right: 40px; }
.au-eye { position: absolute; right: 3px; top: 5px; }
.au-msg { padding: 9px 11px; border-radius: var(--radius-sm); font-size: 13px; line-height: 1.45; }
.au-msg[hidden] { display: none; }
.au-error { background: var(--danger-soft); color: var(--fg); box-shadow: inset 3px 0 0 var(--danger); }
.au-info { background: var(--info-soft); color: var(--fg); box-shadow: inset 3px 0 0 var(--info); }
.au-link { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: var(--accent-text); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.au-link:hover { color: var(--accent-hover); }
.au-link:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: 3px; }
.au-forgot { justify-self: start; font-size: 12.5px; margin-top: -4px; }
.au-back { justify-self: start; font-size: 13px; }
.au-legal { margin: 0; font-size: 12px; line-height: 1.55; color: var(--fg-muted); }
.au-legal a { color: var(--accent-text); }
.au-submit { gap: 8px; }
.au-submit .au-spin { display: none; }
.au.is-busy .au-submit .au-spin { display: inline-block; }
.au.is-busy { pointer-events: none; }
.au.is-busy .au-form, .au.is-busy .au-google { opacity: 0.75; }

/* --- locked card (replaces numbers inside panels) --------------------------------------------- */
.au-locked { display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px; border: 1px dashed var(--border-strong); border-radius: var(--radius-lg); background: var(--bg-sunken); color: var(--fg); }
.au-locked-ic { flex: none; width: 44px; height: 44px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--accent-soft); color: var(--accent-text); }
.au-locked-main { min-width: 0; display: grid; gap: 6px; }
.au-locked-title { font-size: 14.5px; color: var(--fg); }
.au-locked-lead { margin: 0; font-size: 13px; line-height: 1.5; color: var(--fg-muted); }
.au-locked-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.au-locked-test { margin: 2px 0 0; font-size: 12px; color: var(--fg-muted); }
.au-locked.is-compact { padding: 10px 12px; gap: 10px; align-items: center; }
.au-locked.is-compact .au-locked-ic { width: 32px; height: 32px; }
.au-locked.is-compact .au-locked-lead { font-size: 12.5px; }
.au-locked-wrap { padding: 10px; }
.rs-bottom .au-locked, .rs-tables .au-locked { max-width: 640px; margin: 8px auto 12px; }

/* --- locked full pages (report, code) --------------------------------------------------------- */
.au-page { position: relative; height: 100%; overflow: auto; padding: 32px 16px 48px; display: grid; justify-items: center; align-content: start; background: var(--bg); }
.au-page-card { position: relative; z-index: 1; width: min(560px, 100%); padding: 28px 26px 24px; display: grid; gap: 12px; justify-items: start; box-shadow: var(--shadow-2); }
.au-page-card h2 { margin: 0; font-size: 20px; line-height: 1.25; letter-spacing: -0.01em; color: var(--fg); }
.au-page-ic { width: 56px; height: 56px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--accent-soft); color: var(--accent-text); }
.au-page-lead { margin: 0; line-height: 1.55; }
.au-page-list { list-style: none; margin: 2px 0 4px; padding: 0; display: grid; gap: 6px; }
.au-page-list li { display: flex; gap: 8px; align-items: center; font-size: 13.5px; color: var(--fg); }
.au-page-list .icon { color: var(--success); flex: none; }
.au-page-ghost { width: min(560px, 100%); margin-top: -18px; padding: 40px 26px 20px; display: grid; gap: 10px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-elev); filter: blur(1.5px); opacity: 0.7; }
.au-page-ghost span { display: block; height: 10px; border-radius: 6px; background: var(--bg-sunken); }

/* --- small gate hints inside the results panels ------------------------------------------------ */
.rs-tablock { display: inline-flex; vertical-align: -1px; margin-left: 5px; color: var(--fg-muted); }
.rs-lockednote { display: flex; align-items: center; gap: 4px; margin: 0; font-size: 12.5px; line-height: 1.45; }
.rs-unlock { border-color: var(--accent); color: var(--accent-text); }
.au-testbadge { flex: none; margin-right: 4px; }
.au-slot { display: inline-flex; align-items: center; gap: 4px; margin: 0 2px; }
.au-acct-pop { display: grid; }

/* "Test mode" labels: neutral text on the soft warning tint (the shared .badge.warn is too faint in light theme) */
.au-test .badge, .au-testbadge, .au-acct .badge.warn { color: var(--fg); background: var(--warning-soft); box-shadow: inset 0 0 0 1px var(--warning); }
.au .field-hint { color: var(--fg-muted); }
