@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('/assets/google_fonts/PlusJakartaSans-Regular.ttf') format('truetype');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('/assets/google_fonts/PlusJakartaSans-Medium.ttf') format('truetype');
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('/assets/google_fonts/PlusJakartaSans-SemiBold.ttf') format('truetype');
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('/assets/google_fonts/PlusJakartaSans-Bold.ttf') format('truetype');
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('/assets/google_fonts/PlusJakartaSans-ExtraBold.ttf') format('truetype');
  font-weight: 800;
  font-display: swap;
}
:root {
  color-scheme: light dark;
  --rally-link: var(--rally-primary-action);
  --rally-info-background: color-mix(in srgb, var(--rally-primary) 10%, var(--rally-surface));
  --rally-success-background: color-mix(in srgb, var(--rally-success) 10%, var(--rally-surface));
  --rally-error-background: color-mix(in srgb, var(--rally-error) 10%, var(--rally-surface));
  --rally-success-text: color-mix(in srgb, var(--rally-text) 45%, var(--rally-success));
  --rally-warning-text: color-mix(in srgb, var(--rally-text) 45%, var(--rally-warning));
  --rally-error-text: color-mix(in srgb, var(--rally-text) 45%, var(--rally-error));
}
@media (prefers-color-scheme: dark) {
  :root { --rally-link: color-mix(in srgb, var(--rally-primary) 65%, var(--rally-text)); }
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--rally-background);
  color: var(--rally-text);
  font-family: 'Plus Jakarta Sans', system-ui, sans-serif;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
button, input, select { font: inherit; }
.rally-center-page {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  padding: var(--rally-section-gap) var(--rally-field-gap);
}
h1 { font-size: 1.5rem; font-weight: 800; margin: 0 0 var(--rally-compact-gap); }
.card {
  background: var(--rally-surface);
  color: var(--rally-text);
  border: 1px solid var(--rally-border);
  border-radius: var(--rally-prominent-radius);
  padding: var(--rally-section-gap);
  box-shadow: none;
}
.rally-portal-card { width: 100%; max-width: 480px; text-align: center; }
.subtitle, .footer-text, .muted { color: var(--rally-secondary-text); }
.footer-text { font-size: .75rem; margin-top: var(--rally-section-gap); }
.status-code, a { color: var(--rally-link); }
a { text-underline-offset: .2em; }
button, .btn, .btn-primary, .btn-secondary {
  min-height: var(--rally-min-control-height);
  height: auto;
  padding: var(--rally-gap) var(--rally-field-gap);
  border-radius: var(--rally-control-radius);
  border: 1px solid var(--rally-border);
  font-size: 1rem;
  font-weight: 600;
  background: var(--rally-surface);
  color: var(--rally-link);
  cursor: pointer;
  box-shadow: none;
  transition: background-color var(--rally-state-transition), border-color var(--rally-state-transition);
}
.btn, .btn-primary {
  background: var(--rally-primary-action);
  color: var(--rally-text-dark);
  border-color: transparent;
}
.btn:hover, .btn-primary:hover { background: var(--rally-primary-action); filter: brightness(.9); transform: none; }
button:disabled, .btn:disabled, .btn-primary:disabled {
  background: var(--rally-border);
  color: var(--rally-secondary-text);
  cursor: not-allowed;
  filter: none;
  transform: none;
  box-shadow: none;
}
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible {
  outline: 2px solid var(--rally-text);
  outline-offset: 3px;
}
input[type='password'], input[type='text'], input[type='email'], input[type='tel'], select {
  min-height: var(--rally-min-control-height);
  height: auto;
  background: var(--rally-input);
  color: var(--rally-text);
  border: 1px solid var(--rally-border);
  border-radius: var(--rally-control-radius);
  font-size: 1rem;
}
input:focus, select:focus { background: var(--rally-input); border-color: var(--rally-link); }
.toggle-password { position: absolute; display: flex; align-items: center; justify-content: center; min-width: var(--rally-compact-control-height); min-height: var(--rally-compact-control-height); right: 4px; padding: 8px; border: 0; background: transparent; }
label { color: var(--rally-text); }
.badge, .email-badge { border-radius: var(--rally-badge-radius); font-size: .8125rem; white-space: normal; overflow-wrap: anywhere; }
.badge-primary { color: var(--rally-link); background: var(--rally-info-background); }
.badge-success { color: var(--rally-success-text); background: var(--rally-success-background); }
.icon-container { width: var(--rally-state-illustration-size); height: var(--rally-state-illustration-size); color: var(--rally-link); background: var(--rally-info-background); box-shadow: none; }
.icon-container.error-icon { color: var(--rally-error-text); background: var(--rally-error-background); box-shadow: none; }
.icon-container svg { width: var(--rally-state-illustration-icon-size); height: var(--rally-state-illustration-icon-size); }
.alert.error { color: var(--rally-error-text); background: var(--rally-error-background); }
.alert.info { color: var(--rally-link); background: var(--rally-info-background); }
.meta-list, .price-summary, .pass-grid { background: var(--rally-input); border-radius: var(--rally-surface-radius); }
.meta-item > div:last-child { min-width: 0; }
.meta-icon { flex-shrink: 0; }
.price-summary, .strength-header { flex-wrap: wrap; gap: var(--rally-compact-gap); }
.pass-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); }
.strength-wrapper { --strength-color: var(--rally-secondary-text); }
.strength-wrapper[data-strength='weak'] { --strength-color: var(--rally-error-text); }
.strength-wrapper[data-strength='fair'], .strength-wrapper[data-strength='good'] { --strength-color: var(--rally-warning-text); }
.strength-wrapper[data-strength='strong'] { --strength-color: var(--rally-success-text); }
.strength-label { color: var(--strength-color); }
.strength-bar { background: var(--rally-border); }
.strength-bar.is-active { background: var(--strength-color); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

.btn, .btn-primary, .btn-secondary {
  width: 100%; display: flex; align-items: center; justify-content: center; gap: var(--rally-compact-gap);
}
.btn-secondary { margin-top: var(--rally-compact-gap); }
.rally-form-action { margin-top: var(--rally-field-gap); }
[hidden] { display: none !important; }
input[type='password'], input[type='text'], input[type='email'], input[type='tel'], select { width: 100%; padding: var(--rally-gap) var(--rally-field-gap); }
.input-wrapper input { padding-right: var(--rally-min-control-height); }
label { display: block; font-size: .8125rem; font-weight: 700; margin-bottom: var(--rally-compact-gap); }
.badge { display: inline-flex; align-items: center; padding: 4px var(--rally-compact-gap); font-weight: 600; margin-bottom: var(--rally-gap); }
.alert { padding: var(--rally-field-gap); border-radius: var(--rally-surface-radius); border: 1px solid var(--rally-border); font-size: .875rem; text-align: left; margin-bottom: var(--rally-section-gap); }
.rally-embedded-banner:not(:empty) { margin-bottom: var(--rally-field-gap); }
.icon-container { display: flex; align-items: center; justify-content: center; border-radius: 50%; margin: 0 auto var(--rally-section-gap); }
.icon-container svg { fill: currentColor; }
