/* Basic button fallbacks (older browsers / when Tailwind v4 utilities fail) */ .fallback-btn { display: inline-block; padding: 0.75rem 1.5rem; font-size: 1.125rem; line-height: 1.2; font-weight: 500; border-radius: 0.5rem; border: none; cursor: pointer; text-align: center; text-decoration: none; background: #555; color: #fff; box-sizing: border-box; } .fallback-btn--primary { background: #1d4ed8; /* blue-700 */ } .fallback-btn--primary:hover, .fallback-btn--primary:focus { background: #1e40af; /* blue-800 */ } .fallback-btn--secondary { background: #1f2937; /* gray-800 */ } .fallback-btn--secondary:hover, .fallback-btn--secondary:focus { background: #111827; /* gray-900 */ } .fallback-btn:disabled, .fallback-btn[aria-disabled="true"] { opacity: 0.7; cursor: not-allowed; } .fallback-btn--auto { width: 100%; } @media (min-width: 640px) { .fallback-btn--auto { width: auto; } } /* Spinner alignment fallback */ .fallback-btn svg { vertical-align: middle; } /* --- Enhanced slider (mode toggle) fallbacks --- */ .register-mode-toggle { display: flex; border: 1px solid #1d4ed8; border-radius: 0.75rem; overflow: hidden; background: #f9fafb; position: relative; max-width: 320px; margin: 0 auto 1.25rem auto; } .register-mode-toggle button { flex: 1 1 0; background: #e5e7eb !important; /* slate-200 */ color: #1e3a8a !important; /* blue-800 */ padding: 0.75rem 1rem; font-weight: 700; font-size: 1.05rem; font-family: inherit; border: none; outline: none; box-shadow: none; cursor: pointer; position: relative; opacity: 1 !important; border-right: 1px solid #1d4ed8; /* --- Smooth transition for background, color, box-shadow, border --- */ transition: background 0.35s cubic-bezier(.4,0,.2,1), color 0.35s cubic-bezier(.4,0,.2,1), box-shadow 0.35s cubic-bezier(.4,0,.2,1), border 0.35s cubic-bezier(.4,0,.2,1); } .register-mode-toggle button:last-child { border-right: none; } .register-mode-toggle button.active, .register-mode-toggle button[aria-selected="true"] { background: #1d4ed8 !important; /* blue-700 */ color: #fff !important; /* Add a subtle shadow for depth */ box-shadow: 0 2px 12px 0 rgba(30,64,175,0.08); } .register-mode-toggle button.active::after, .register-mode-toggle button[aria-selected="true"]::after { content: ""; position: absolute; inset: 0; border: 2px solid #1d4ed8; border-radius: 0; /* <-- changed from 0.75rem to 0 */ pointer-events: none; /* Animate border appearance */ transition: border 0.35s cubic-bezier(.4,0,.2,1); } /* Provide a minimal focus style for accessibility */ .register-mode-toggle button:focus-visible { box-shadow: 0 0 0 3px #bfdbfe !important; } @media (hover:hover) { .register-mode-toggle button:hover:not(.active) { background: #cbd5e1 !important; /* slate-300 */ color: #1e3a8a !important; /* Slight shadow on hover for feedback */ box-shadow: 0 1px 6px 0 rgba(30,64,175,0.06); } } /* Graceful degradation for very old browsers */ @supports not (gap: 1rem) { .register-mode-toggle button { margin-right: 1px; } .register-mode-toggle button:last-child { margin-right: 0; } } /* High contrast / prefers-reduced-transparency environments */ @media (prefers-contrast: more) { .register-mode-toggle button.active { background: #003caa !important; } } /* When no blur support we already ensure readable background elsewhere */ /* --- Safari-specific fallback for buttons and toggle --- */ @media not all and (min-resolution:.001dpcm) { @supports (-webkit-touch-callout: none) { .fallback-btn, .register-mode-toggle button { /* Safari sometimes ignores border-radius on buttons */ border-radius: 8px !important; -webkit-border-radius: 8px !important; /* Safari ignores some box-shadow, so add fallback */ box-shadow: 0 2px 8px 0 rgba(30,64,175,0.08); -webkit-box-shadow: 0 2px 8px 0 rgba(30,64,175,0.08); } .register-mode-toggle { /* Safari fallback for flex gap */ gap: 0 !important; } } } /* --- Legacy browser fallback for border-radius and appearance --- */ .fallback-btn, .register-mode-toggle button { border-radius: 0.5rem; /* Fallback for very old browsers */ -webkit-border-radius: 0.5rem; -moz-border-radius: 0.5rem; /* Remove default button appearance */ appearance: none; -webkit-appearance: none; -moz-appearance: none; }