body {
        display: flex;
        flex-direction: column;
        min-height: 100vh;
      }
      .landing-wrap {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 2rem 1rem;
      }
      .auth-card {
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: 8px;
        padding: 2.75rem 2.25rem 2rem;
        width: 100%;
        max-width: 400px;
        box-shadow: 0 0 0 1px rgba(var(--accent-rgb), 0.06),
                    0 8px 40px rgba(0, 0, 0, 0.5);
        position: relative;
        overflow: hidden;
      }
      /* subtle top accent line */
      .auth-card::before {
        content: '';
        position: absolute;
        top: 0; left: 0; right: 0;
        height: 3px;
        background: linear-gradient(90deg, transparent, var(--accent), transparent);
        opacity: 0.7;
      }
      .brand-block {
        text-align: center;
        margin-bottom: 2rem;
      }
      .brand-block img {
        height: 56px;
        margin-bottom: 0.85rem;
        filter: drop-shadow(0 0 12px rgba(var(--accent-rgb), 0.35));
      }
      .brand-block h1,
      .brand-block h2 {
        font-size: 1.65rem;
        font-weight: 800;
        letter-spacing: 0;
        margin: 0 0 0.4rem;
        color: var(--text);
      }
      .brand-block p {
        /* Higher opacity than --muted so the tagline meets WCAG AA contrast. */
        color: rgba(var(--accent-rgb), 0.92);
        font-size: 0.83rem;
        margin: 0;
        letter-spacing: 0;
        line-height: 1.45;
      }
      .field-group {
        display: flex;
        flex-direction: column;
        gap: 1rem;
        margin-bottom: 0.5rem;
      }
      .field-group label {
        display: flex;
        flex-direction: column;
        gap: 0.35rem;
        font-size: 0.875rem;
        font-weight: 500;
        color: var(--text);
      }
      .field-group input {
        width: 100%;
        box-sizing: border-box;
        padding: 0.7rem 0.9rem;
        border: 1px solid var(--border);
        border-radius: 8px;
        background: var(--bg);
        color: var(--text);
        font-size: 0.925rem;
        transition: border-color 0.15s;
      }
      .field-group input:focus {
        outline: none;
        border-color: var(--accent);
        box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.15);
      }
      .btn-full {
        width: 100%;
        margin-top: 1.25rem;
        padding: 0.78rem;
        font-size: 1rem;
        font-weight: 700;
        letter-spacing: 0;
        border-radius: 8px;
      }
      .error-msg {
        background: rgba(255, 50, 50, 0.10);
        color: #ff6b6b;
        border: 1px solid rgba(255, 50, 50, 0.30);
        border-radius: 8px;
        padding: 0.6rem 0.85rem;
        font-size: 0.875rem;
        margin-top: 0.85rem;
        display: none;
      }
      footer {
        text-align: center;
        padding: 1.25rem;
        font-size: 0.78rem;
        color: #a3a3a3;
      }
      /* Neutral default for login page — overrides styles.css :root green.
         Applied ONLY when no gym has been logged in (no data-theme set by JS). */
      :root {
        --accent: #94a3b8;
        --accent-rgb: 148, 163, 184;
      }
