/* --- CSS Variables (subset needed) --- */
:root {
  --bs-primary: #A41E7F;
  --bs-secondary: #251823;
  --bs-danger: #EA1337;
  --bs-success: #458F6A;
  --bs-body-font-family: "Host Grotesk", sans-serif;
  --bs-body-font-size: 1rem;
  --bs-body-font-weight: 400;
  --bs-body-line-height: 1.5;
  --bs-body-color: #251823;
  --bs-body-bg: #F9F8FA;
  --bs-body-bg-rgb: 249,248,250;
  --bs-heading-color: #000;
  --bs-link-color: #251823;
  --bs-link-color-rgb: 37,24,35;
  --bs-link-hover-color: #A41E7F;
  --bs-border-width: 1px;
  --bs-border-style: solid;
  --bs-border-color: #dee2e6;
  --bs-border-radius: .625rem;
  --bs-border-radius-xl: 1rem;
  --bs-border-radius-xxl: 1.5rem;
  --bs-primary-rgb: 164,30,127;
  --bs-danger-rgb: 234,19,55;
  --bs-success-rgb: 69,143,106;
  --bs-white-rgb: 255,255,255;
  --bs-danger-text-emphasis: #58151c;
  --bs-danger-bg-subtle: #f8d7da;
  --bs-danger-border-subtle: #f1aeb5;
  --bs-success-text-emphasis: #0a3622;
  --bs-success-bg-subtle: #d1e7dd;
  --bs-success-border-subtle: #a3cfbb;
  --bs-btn-padding-x: 1.75rem;
  --bs-btn-padding-y: 1rem;
  --bs-btn-font-size: 1rem;
  --bs-btn-font-weight: 500;
  --bs-btn-line-height: 1.5;
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-width: var(--bs-border-width);
  --bs-btn-border-color: transparent;
  --bs-btn-border-radius: 3rem;
  --bs-btn-disabled-opacity: .65;
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
}

/* --- Base Reset --- */
*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  font-weight: var(--bs-body-font-weight);
  line-height: var(--bs-body-line-height);
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  -webkit-text-size-adjust: 100%;
}

p { margin-top: 0; margin-bottom: 1.5rem; }

h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 1.5rem;
  font-family: "Host Grotesk", sans-serif;
  font-weight: 600;
  line-height: 1.2;
  color: var(--bs-heading-color);
}

h4 { font-size: calc(1.275rem + .3vw); }
@media (min-width: 1200px) { h4 { font-size: 1.5rem; } }

h1 { font-size: calc(1.375rem + 1.5vw); }
@media (min-width: 1200px) { h1 { font-size: 2.5rem; } }

a {
  color: rgba(var(--bs-link-color-rgb), 1);
  text-decoration: underline;
}
a:hover { --bs-link-color-rgb: var(--bs-link-hover-color-rgb, 164,30,127); }

label { display: inline-block; }

button, input, select, textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

button { border-radius: 0; }
button:focus:not(:focus-visible) { outline: 0; }
button:not(:disabled) { cursor: pointer; }

input[type="email"], input[type="text"], input[type="password"] {
  -webkit-appearance: none;
}

strong { font-weight: 600; }

/* --- Grid & Container --- */
.container {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * .5);
  padding-left: calc(var(--bs-gutter-x) * .5);
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 576px)  { .container { max-width: 540px; } }
@media (min-width: 768px)  { .container { max-width: 720px; } }
@media (min-width: 992px)  { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1260px; } }
@media (min-width: 1400px) { .container { max-width: 1360px; } }

.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-.5 * var(--bs-gutter-x));
  margin-left: calc(-.5 * var(--bs-gutter-x));
}

.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * .5);
  padding-left: calc(var(--bs-gutter-x) * .5);
  margin-top: var(--bs-gutter-y);
}

/* Columns */
.col-12 { flex: 0 0 auto; width: 100%; }

@media (min-width: 768px) {
  .col-md-8  { flex: 0 0 auto; width: 66.66666667%; }
  .col-md-10 { flex: 0 0 auto; width: 83.33333333%; }
}

@media (min-width: 1200px) {
  .col-xl-7 { flex: 0 0 auto; width: 58.33333333%; }
}

/* Centered column helper */
.col-centered { float: none; margin: 0 auto; }

/* --- Spacing utilities (used on page) --- */
.mb-3  { margin-bottom: 1rem !important; }
.mb-5  { margin-bottom: 3rem !important; }
.mb-0  { margin-bottom: 0 !important; }
.mt-2  { margin-top: .5rem !important; }
.mt-3  { margin-top: 1rem !important; }
.p-3   { padding: 1rem !important; }

/* Responsive padding used on card */
@media (min-width: 768px)  { .p-md-8 { padding: 2rem !important; } }
@media (min-width: 992px)  { .p-lg-4 { padding: 1.5rem !important; } }
@media (min-width: 1200px) { .p-xl-5 { padding: 3rem !important; } }

/* --- Text utilities --- */
.text-center { text-align: center !important; }
.text-end    { text-align: right !important; }

/* --- Display --- */
.d-none { display: none !important; }

/* --- Background --- */
.bg-white { --bs-bg-opacity: 1; background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; }

/* --- Border radius --- */
.rounded-4 { border-radius: var(--bs-border-radius-xl) !important; }   /* 1rem */
.rounded-5 { border-radius: var(--bs-border-radius-xxl) !important; }  /* 1.5rem */

/* --- Height --- */
.h-100 { height: 100% !important; }

/* --- Section & layout wrappers --- */
.section {
  min-height: 85vh;
  display: flex;
  align-items: center;
  padding: 3rem 0;
}

/* --- Section title (used in h1) --- */
.section-title {
  font-size: 2.5rem;
  font-weight: 500;
  line-height: 1.25;
}
@media (max-width: 1199px) { .section-title { font-size: 2rem; } }
@media (max-width: 991px)  { .section-title { font-size: 1.5rem; } }

/* --- Subtitle --- */
.subtitle {
  font-size: 1.25rem;
  font-weight: 600;
  margin-bottom: 1.5rem;
}

/* --- Form wrap --- */
.form-wrap { position: relative; }

/* --- Form group --- */
.form-group { position: relative; margin-bottom: 0; }

/* --- Labels --- */
.form-group label,
.form-wrap form .form-group label {
  color: #251823;
  display: inline-block;
  font-size: 1rem;
  font-weight: 400;
  margin-bottom: .25rem;
}

/* --- Form control (inputs) --- */
.form-control {
  display: block;
  width: 100%;
  padding: .375rem .75rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bs-body-color);
  appearance: none;
  background-color: #fff;
  background-clip: padding-box;
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.form-control:focus {
  color: var(--bs-body-color);
  background-color: #fff;
  border-color: #A41E7F !important;
  outline: 0;
  box-shadow: 0 0 0 .25rem rgba(164,30,127,0.25);
}

.form-control::placeholder {
  color: var(--bs-body-color);
  opacity: 1;
}

/* Theme override — inputs in form-wrap */
.form-wrap form .form-control {
  background-color: #fff;
  border-radius: 1rem;
  border: 1px solid #D8D5D9;
  color: #251823;
  padding: .5rem 1rem;
  float: left;
  width: 100%;
  height: 4rem;
  font-size: .875rem;
  font-weight: 400;
  margin-bottom: 0;
}

.form-wrap form .form-control:focus {
  border-color: #A41E7F !important;
}

.form-wrap form .form-control::placeholder {
  color: #251823;
}

/* --- Buttons --- */
.btn {
  --bs-btn-padding-x: 1.75rem;
  --bs-btn-padding-y: 1rem;
  --bs-btn-font-size: 1rem;
  --bs-btn-font-weight: 500;
  --bs-btn-line-height: 1.5;
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-width: var(--bs-border-width);
  --bs-btn-border-color: transparent;
  --bs-btn-border-radius: 3rem;
  --bs-btn-disabled-opacity: .65;
  display: inline-block;
  padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-btn-font-size);
  font-weight: var(--bs-btn-font-weight);
  line-height: var(--bs-btn-line-height);
  color: var(--bs-btn-color);
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  user-select: none;
  border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
  border-radius: var(--bs-btn-border-radius);
  background-color: var(--bs-btn-bg);
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}

.btn:disabled {
  pointer-events: none;
  opacity: var(--bs-btn-disabled-opacity);
}

/* Primary button */
.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: #A41E7F;
  --bs-btn-border-color: #A41E7F;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #8b1a6c;
  --bs-btn-hover-border-color: #831866;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #831866;
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #A41E7F;
  --bs-btn-disabled-border-color: #A41E7F;
}

.btn-primary:hover, .btn-primary:focus {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
}

/* Border utility used on btn */
.border         { border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; }
.border-primary { --bs-border-opacity: 1; border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; }

/* Min-width utility */
.minw-10 { min-width: 10rem; }

/* Hover darkening for primary button */
.btn-primary-hover:hover,
.btn.border.btn-primary.border-primary:hover {
  background-color: #991575 !important;
  border-color: #991575 !important;
}

@media (max-width: 767px) {
  .btn { padding: .75rem 1rem !important; font-size: .875rem !important; }
}

/* --- Alerts --- */
.alert {
  --bs-alert-bg: transparent;
  --bs-alert-padding-x: 1rem;
  --bs-alert-padding-y: 1rem;
  --bs-alert-margin-bottom: 1rem;
  --bs-alert-color: inherit;
  --bs-alert-border-color: transparent;
  --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
  --bs-alert-border-radius: var(--bs-border-radius);
  position: relative;
  padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
  margin-bottom: var(--bs-alert-margin-bottom);
  color: var(--bs-alert-color);
  background-color: var(--bs-alert-bg);
  border: var(--bs-alert-border);
  border-radius: var(--bs-alert-border-radius);
}

.alert-danger {
  --bs-alert-color: var(--bs-danger-text-emphasis);
  --bs-alert-bg: var(--bs-danger-bg-subtle);
  --bs-alert-border-color: var(--bs-danger-border-subtle);
}

.alert-success {
  --bs-alert-color: var(--bs-success-text-emphasis);
  --bs-alert-bg: var(--bs-success-bg-subtle);
  --bs-alert-border-color: var(--bs-success-border-subtle);
}
