/* ============================================================
   REFERRAL APPLICATION MODAL — styles
   Paste inside the existing <style> block.
   ============================================================ */

.rpm{
  position:fixed; inset:0; z-index:200;
  display:none; align-items:center; justify-content:center;
  padding:24px;
}
.rpm.open{ display:flex; }
.rpm-scrim{
  position:absolute; inset:0;
  background:rgba(12,10,7,.62);
  backdrop-filter:blur(3px);
  animation:rpmFade .22s ease both;
}
@keyframes rpmFade{ from{opacity:0} to{opacity:1} }
@keyframes rpmRise{ from{opacity:0; transform:translateY(16px) scale(.99)} to{opacity:1; transform:none} }

.rpm-card{
  position:relative; z-index:1;
  width:100%; max-width:640px; max-height:90vh;
  display:flex; flex-direction:column;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:5px;
  box-shadow:0 40px 90px -30px rgba(12,10,7,.55);
  animation:rpmRise .3s cubic-bezier(.2,.8,.25,1) both;
  overflow:hidden;
}
.rpm-card.rpm-wide{ max-width:760px; max-height:94vh; }

/* header */
.rpm-head{ padding:26px 30px 0; border-bottom:1px solid var(--line); flex:none; }
.rpm-headtop{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.rpm-kicker{
  font-size:10px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;
  color:var(--gold-deep); margin-bottom:6px;
}
.rpm-title{ font-size:24px; font-weight:900; letter-spacing:-.02em; line-height:1.1; }
.rpm-x{
  background:none; border:0; font-size:26px; line-height:1; color:var(--mute);
  cursor:pointer; padding:0 2px; margin-top:-2px; transition:color .15s;
}
.rpm-x:hover{ color:var(--ink); }

.rpm-bar{ height:2px; background:var(--line); margin:20px 0 0; border-radius:5px; overflow:hidden; }
.rpm-bar span{
  display:block; height:100%; width:14.3%;
  background:var(--gold); transition:width .35s cubic-bezier(.2,.8,.25,1);
}
.rpm-step{
  display:flex; justify-content:space-between; gap:12px;
  padding:10px 0 14px;
  font-size:10px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--mute);
}
.rpm-step span:last-child{ color:var(--gold-deep); }

/* body */
.rpm-body{ padding:26px 30px 30px; overflow-y:auto; flex:1; }
.rpm-intro{ font-size:14px; color:var(--mute); margin-bottom:20px; }
.rpm-s{ border:0; padding:0; margin:0; display:grid; gap:18px; }
.rpm-s[hidden]{ display:none; }
.rpm-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.rpm-f{ display:block; }
.rpm-f > span{
  display:block; font-size:11px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--mute); margin-bottom:8px; line-height:1.45;
}
.rpm-f > span em{ font-style:italic; text-transform:none; letter-spacing:0; color:var(--gold-deep); }
.rpm-f input[type=text], .rpm-f input[type=email], .rpm-f input[type=tel],
.rpm-f textarea, .rpm-f select{
  width:100%; background:#FCFAF5; border:1px solid var(--line); color:var(--ink);
  font-family:var(--sans); font-size:16px; padding:13px 15px; border-radius:5px;
  transition:border-color .18s, box-shadow .18s;
}
.rpm-f textarea{ resize:vertical; line-height:1.55; }
.rpm-f select{ appearance:none; cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--mute) 50%),linear-gradient(135deg,var(--mute) 50%,transparent 50%);
  background-position:calc(100% - 19px) 20px, calc(100% - 14px) 20px;
  background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
}
.rpm-f :is(input,textarea,select):focus{
  outline:none; border-color:var(--gold); box-shadow:0 0 0 3px var(--gold-wash);
}
.rpm-f input.bad, .rpm-f textarea.bad{ border-color:#C0392B; }

.rpm-row{ display:grid; gap:18px; }
@media(min-width:520px){ .rpm-row{ grid-template-columns:1fr 1fr; } }

/* radio + checkbox */
.rpm-opts{ display:flex; gap:10px; flex-wrap:wrap; }
.rpm-checks{ display:grid; gap:9px; }
@media(min-width:520px){ .rpm-checks{ grid-template-columns:1fr 1fr; } }
.rpm-opts label, .rpm-checks label{
  display:flex; align-items:center; gap:10px; cursor:pointer;
  font-size:14px; color:var(--ink-soft);
  border:1px solid var(--line); background:#FCFAF5;
  padding:12px 16px; border-radius:5px; transition:border-color .15s, background .15s;
}
.rpm-opts label{ flex:1; min-width:120px; }
.rpm-opts input, .rpm-checks input{ position:absolute; opacity:0; pointer-events:none; }
.rpm-opts i, .rpm-checks i{
  width:15px; height:15px; flex:none; border:1px solid var(--line);
  background:#fff; position:relative; transition:.15s;
}
.rpm-opts i{ border-radius:50%; }
.rpm-checks i{ border-radius:5px; }
.rpm-opts input:checked + i::after{
  content:""; position:absolute; inset:3px; border-radius:50%; background:var(--gold);
}
.rpm-checks input:checked + i::after{
  content:"\2713"; position:absolute; inset:0; display:grid; place-items:center;
  font-size:10px; color:var(--gold-deep); font-weight:700;
}
.rpm-opts label:has(input:checked), .rpm-checks label:has(input:checked){
  border-color:var(--gold); background:var(--gold-wash);
}

.rpm-cond{ animation:rpmRise .25s ease both; }

/* footer */
.rpm-foot{
  display:flex; align-items:center; gap:12px;
  padding:18px 30px; border-top:1px solid var(--line);
  background:var(--paper-2); flex:none;
}
.rpm-foot[hidden]{ display:none; }
.rpm-spacer{ flex:1; }
.rpm-btn{
  font-family:var(--sans); font-size:12px; font-weight:700;
  letter-spacing:.13em; text-transform:uppercase;
  padding:15px 30px; border-radius:5px; cursor:pointer; border:1px solid transparent;
  transition:.18s;
}
.rpm-primary{ background:var(--ink); color:var(--paper); }
.rpm-primary:hover{ background:var(--gold-deep); }
.rpm-primary:disabled{ opacity:.5; cursor:default; }
.rpm-ghost{ background:none; color:var(--mute); border-color:var(--line); }
.rpm-ghost:hover{ color:var(--ink); border-color:var(--ink); }

/* done */
.rpm-done{ text-align:center; padding:26px 0 10px; animation:rpmRise .4s ease both; }
.rpm-tick{
  width:54px; height:54px; margin:0 auto 20px; border-radius:50%;
  background:var(--ink); color:var(--gold); display:grid; place-items:center; font-size:21px;
}
.rpm-done h3{ font-size:24px; font-weight:900; letter-spacing:-.02em; margin-bottom:12px; }
.rpm-done p{ color:var(--mute); font-size:15px; max-width:40ch; margin:0 auto 26px; }
.rpm-done > .rpm-btn{ margin-top:28px; }

/* booking embed */
.rpm-booking{
  margin-top:6px; padding-top:28px; border-top:1px solid var(--line);
  text-align:left;
}
.rpm-booking h4{ font-size:16px; font-weight:900; letter-spacing:-.01em; margin-bottom:6px; }
.rpm-bookingnote{ font-size:14px; color:var(--mute); margin-bottom:18px; }
.rpm-bookingframe{
  border:1px solid var(--line); border-radius:5px; overflow:hidden;
  background:#fff; min-height:600px;
}
.rpm-bookingframe iframe{ display:block; width:100%; height:600px; }

/* exit-intent recovery */
.rpm-recover{ text-align:center; padding:30px 0 10px; animation:rpmRise .3s ease both; }
.rpm-recover h3{ font-size:22px; font-weight:900; letter-spacing:-.02em; margin-bottom:12px; }
.rpm-recover p{ color:var(--mute); font-size:15px; max-width:42ch; margin:0 auto 26px; }
.rpm-recoveractions{ display:grid; gap:12px; max-width:340px; margin:0 auto; }
.rpm-recoveractions .rpm-btn{ text-align:center; }
.rpm-quiet{
  display:block; margin:22px auto 0; background:none; border:0; color:var(--mute);
  font-family:var(--sans); font-size:12px; text-decoration:underline; text-underline-offset:3px;
  cursor:pointer; transition:color .15s;
}
.rpm-quiet:hover{ color:var(--ink); }

/* mobile: full sheet */
@media(max-width:600px){
  .rpm{ padding:0; align-items:flex-end; }
  .rpm-card{ max-width:none; max-height:100vh; height:100vh; border-radius:0; border:0; }
  .rpm-head{ padding:20px 20px 0; }
  .rpm-body{ padding:22px 20px calc(26px + env(safe-area-inset-bottom)); }
  .rpm-foot{ padding:14px 20px; padding-bottom:calc(14px + env(safe-area-inset-bottom)); }
  .rpm-btn{ padding:16px 22px; }
  .rpm-title{ font-size:20px; }
}

@media(prefers-reduced-motion:reduce){
  .rpm-scrim,.rpm-card,.rpm-cond,.rpm-done,.rpm-recover{ animation:none; }
  .rpm-bar span{ transition:none; }
}
