/* =============================================
   miniCODEX — BOOKING PAGE (enhanced design)
   Palette: #161032, #412BA3, #14CFBC, #FFE830, #FAFAFA
   Fonts: Roboto (titles), Open Sans (body)
   ============================================= */

/* Design tokens */
:root{
  --haiti:#161032;
  --hero:#412BA3;
  --java:#14CFBC;
  --sun:#FFE830;
  --ink:#333333;
  --alabaster:#FAFAFA;
  --glass-1:rgba(255,255,255,.10);
  --glass-2:rgba(255,255,255,.06);
  --border-weak:rgba(255,255,255,.12);
  --border-strong:rgba(255,255,255,.22);
  --input-bg:rgba(255,255,255,.08);
  --input-bd:rgba(255,255,255,.18);
}

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

/* Page base */
html,body{ height:100%; }
body{
  background:
    radial-gradient(1200px 800px at 10% 15%, rgba(92,81,162,.35), transparent 60%),
    radial-gradient(1000px 700px at 90% 10%, rgba(20,207,188,.20), transparent 55%),
    radial-gradient(900px 600px at 50% 95%, rgba(255,232,48,.12), transparent 60%),
    var(--haiti);
  color: var(--alabaster);
  margin:0; padding:0;
  line-height: var(--lh-body);
}

.container{
  max-width: 780px;
  margin: 40px auto;
  padding: 0 20px;
}

h1{
  font-family: var(--font-heading);
  font-size: var(--fs-h1);
  font-weight: 700;
  line-height: var(--lh-heading);
  letter-spacing:.2px;
  margin: 0 0 20px;
}

/* ── Glass card ── */
.form-card{
  background: linear-gradient(180deg, var(--glass-1), var(--glass-2));
  border: 1px solid var(--border-weak);
  border-radius: 18px;
  padding: 28px 28px 24px;
  box-shadow: 0 16px 40px rgba(0,0,0,.35);
  backdrop-filter: blur(12px);
}
.form-note{
  margin: 0 0 16px;
  opacity:.85;
  font-size: var(--fs-body);
  line-height: 1.5;
}

/* ── Sections & divider ── */
.form-section{ margin-bottom: 4px; }
.form-divider{
  border: none;
  border-top: 1px solid var(--border-weak);
  margin: 16px 0 20px;
}

/* ── Grid rows ── */
.form-row{ margin-bottom: 14px; }
.form-row.two-col{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.form-row.three-col{
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
}

/* ── Form group ── */
.form-group{ display: flex; flex-direction: column; }
.form-group label{
  font-size: var(--fs-body);
  font-weight: 700;
  margin-bottom: 6px;
}

/* ── Field hint ── */
.field-hint{
  margin: 6px 0 0;
  font-size: var(--fs-small);
  opacity: .7;
  line-height: 1.4;
}

/* ── Inputs ── */
input[type="text"],
input[type="tel"],
input[type="email"],
input[type="number"],
select{
  width: 100%;
  max-width: 100%;
  background: var(--input-bg);
  border: 1px solid var(--input-bd);
  border-radius: 12px;
  padding: 12px 14px;
  color: var(--alabaster);
  outline: none;
  font-size: var(--fs-body);
  font-family: inherit;
  display: block;
  transition: border-color .2s ease, box-shadow .2s ease;
}
input::placeholder{ color: rgba(250,250,250,.45); }
input:focus,
select:focus{
  border-color: var(--java);
  box-shadow: 0 0 0 3px rgba(20,207,188,.18);
}

/* Number input — hide spinner arrows */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button{
  -webkit-appearance: none; margin: 0;
}
input[type="number"]{ -moz-appearance: textfield; }

/* ── Age input with suffix ── */
.age-group{ max-width: 320px; }
.age-input-wrap{
  position: relative;
  display: flex;
  align-items: center;
}
.age-input-wrap input{
  padding-right: 48px;
}
.age-suffix{
  position: absolute;
  right: 14px;
  color: rgba(250,250,250,.5);
  font-size: var(--fs-body);
  pointer-events: none;
}

/* ── Readonly previews ── */
.readonly{
  background: var(--input-bg);
  border: 1px dashed var(--input-bd);
  padding: 12px 14px;
  border-radius: 12px;
  margin: 0;
  font-size: var(--fs-body);
  min-height: 44px;
  display: flex;
  align-items: center;
}

/* ── Plan row ── */
.plan-row{
  display: flex;
  gap: 12px;
  align-items: center;
}
.plan-row select{ flex: 1; min-width: 0; }
.plan-preview-text{
  font-size: var(--fs-body);
  opacity: .8;
  white-space: nowrap;
}

/* ── Button ── */
.form-card button,
.form-card .btn-primary{
  width: 100%;
  margin-top: 20px;
  background: linear-gradient(135deg, var(--hero), #5C51A2);
  color: var(--alabaster);
  border: 0;
  border-radius: 12px;
  padding: 14px 20px;
  font-weight: 700;
  font-size: var(--fs-btn);
  cursor: pointer;
  letter-spacing: .3px;
  transition: transform .08s ease, box-shadow .2s ease, filter .15s ease;
}
.form-card button:hover,
.form-card .btn-primary:hover{
  box-shadow: 0 10px 30px rgba(20,207,188,.30);
  transform: translateY(-2px);
}
.form-card button:active,
.form-card .btn-primary:active{
  transform: translateY(0);
  filter: brightness(.96);
}

/* ── Trust badge ── */
.trust-badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--border-weak);
}

.trust-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-micro);
  font-weight: 600;
  opacity: .7;
  letter-spacing: .03em;
}

.trust-icons {
  display: flex;
  align-items: center;
  gap: 6px;
}

.trust-icons i {
  font-size: var(--fs-h4);
  color: rgba(255,255,255,.5);
}

/* ── Feedback ── */
.hidden{ display:none; }
#feedback{
  padding: 14px 16px;
  background: rgba(20,207,188,.10);
  color: var(--alabaster);
  border: 1px solid var(--java);
  border-radius: 12px;
  margin-top: 14px;
  font-size: var(--fs-body);
}
.muted{ color: rgba(255,255,255,.8); }
.rgpd-note{
  margin: 16px 0 0;
  font-size: var(--fs-small);
  opacity: .75;
  line-height: 1.5;
}

/* ── Responsive ── */
@media (max-width: 600px){
  .container{ margin: 20px auto; padding: 0 14px; }
  .form-card{ padding: 20px 16px 18px; }
  .form-row.two-col,
  .form-row.three-col{
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .plan-row{ flex-direction: column; align-items: stretch; }
  .plan-preview-text{ white-space: normal; }
  .age-group{ max-width: 100%; }
}
