/* A single spacing system for the reply card, both steps, and the form. */
.entrance-route {
  --reply-rule: #9f876449;
  --reply-caption: #6d5b49;
}
.entrance-route .reply-card {
  display: block;
  max-width: 720px;
  margin: 0 auto;
  padding: 40px 48px;
  transform: none;
}
.entrance-route .reply-card::before { inset: 12px; }
.entrance-route .guest-intro h1 {
  margin: 8px 0 0;
  font-size: 47px;
  line-height: 1.04;
  letter-spacing: -.5px;
}
.entrance-route .guest-intro h1 em { color: var(--wine); }
.entrance-route .entrance-instructions {
  margin: 20px 0 24px;
  font-size: 13px;
  line-height: 1.65;
  text-wrap: pretty;
}
.entrance-route .rsvp-step {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  align-items: baseline;
  gap: 16px;
  padding: 24px 0;
}
.entrance-route .rsvp-first { border-block: 1px solid var(--reply-rule); }
.entrance-route .step-number {
  color: var(--wine);
  font: italic 32px/1.12 var(--serif);
  font-variant-numeric: tabular-nums;
}
.entrance-route .rsvp-step h2 {
  margin: 0;
  font: 400 32px/1.12 var(--serif);
  letter-spacing: -.25px;
}
.entrance-route .rsvp-step p {
  margin: 10px 0 0;
  color: var(--reply-caption);
  font-size: 12px;
  line-height: 1.65;
  text-wrap: pretty;
}
.entrance-route .rsvp-first .button { display: inline-flex; margin-top: 16px; }
.entrance-route .guest-form-frame { border: 0; padding: 0; }
.entrance-route #guest-form { margin-top: 0; }
.entrance-route .form-row {
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin: 0 0 24px;
}
.entrance-route label { font-size: 12px; line-height: 1.5; }
.entrance-route .optional {
  display: block;
  margin-top: 3px;
  color: var(--reply-caption);
  font-size: 10px;
  line-height: 1.5;
}
.entrance-route input:not([type=checkbox]):not([type=file]),
.entrance-route textarea {
  margin-top: 8px;
  padding: 12px;
  font-size: 14px;
  line-height: 1.6;
}
.entrance-route input:not([type=checkbox]):not([type=file]) { min-height: 48px; }
.entrance-route input::placeholder,
.entrance-route textarea::placeholder { font-size: 13px; color: #796a56; }
.entrance-route textarea { min-height: 120px; }
.entrance-route .form-or {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 20px 0;
  color: var(--wine);
  font-size: 11px;
  font-weight: 700;
  line-height: 16px;
  letter-spacing: 2px;
}
.entrance-route .form-or::before,
.entrance-route .form-or::after { content: ''; flex: 1; height: 1px; background: var(--reply-rule); }
.entrance-route .upload-wrap { margin: 0; }
.entrance-route .upload-zone { padding: 24px 18px; }
.entrance-route .upload-icon { font-size: 25px; }
.entrance-route .upload-zone strong {
  margin-top: 8px;
  font-size: 25px;
  line-height: 1.2;
}
.entrance-route .upload-zone #upload-hint {
  margin-top: 8px;
  color: var(--reply-caption);
  font-size: 11px;
  line-height: 1.5;
}
.entrance-route .upload-zone small { margin-top: 4px; color: var(--reply-caption); font-size: 10px; line-height: 1.5; }
.entrance-route .upload-zone .upload-disclosure {
  max-width: 300px;
  margin-top: 14px !important;
  font-size: 11px !important;
  line-height: 1.5;
}
.entrance-route .checkbox-label {
  align-items: center;
  gap: 10px;
  min-height: 44px;
  margin: 14px 0;
  font-size: 12px;
  line-height: 1.5;
}
.entrance-route .checkbox-label input { width: 17px; height: 17px; margin: 0; }
.entrance-route .button {
  min-height: 50px;
  padding: 14px 18px;
  font-size: 10px;
  letter-spacing: .45px;
  line-height: 1.5;
}
.entrance-route .form-footnote { margin: 12px 0 0; color: var(--reply-caption); font-size: 10px; line-height: 1.5; }
.entrance-route .page-footer { max-width: 720px; margin-top: 28px; }
/* Saved entries keep the same card proportions without the form instructions. */
.entrance-route.entry-saved .rsvp-first,
.entrance-route.entry-saved .entrance-instructions { display: none; }
.entrance-route.entry-saved .guest-intro { margin-bottom: 28px; }
.entrance-route.entry-saved .guest-form-frame { border-top: 1px solid var(--reply-rule); padding-top: 28px; }
.entrance-route #pass-panel h3 { font-size: 34px; line-height: 1.12; margin-bottom: 12px; }
.entrance-route #copy-feedback:empty { display: none; }
.entrance-route .pass-album-link { margin: 20px 0 12px; }
@media (max-width: 750px) {
  .entrance-route .reply-card { padding: 36px; }
}
@media (max-width: 520px) {
  .entrance-route .reply-card { padding: 28px 24px; }
  .entrance-route .reply-card::before { inset: 9px; }
  .entrance-route .guest-intro h1 { font-size: 37px; }
  .entrance-route .entrance-instructions { margin: 18px 0 22px; font-size: 12px; }
  .entrance-route .rsvp-step { grid-template-columns: 28px minmax(0, 1fr); gap: 12px; padding: 22px 0; }
  .entrance-route .step-number,
  .entrance-route .rsvp-step h2 { font-size: 28px; }
  .entrance-route .rsvp-step p { font-size: 12px; }
  .entrance-route .form-row { grid-template-columns: 1fr; gap: 18px; }
  .entrance-route input:not([type=checkbox]):not([type=file]),
  .entrance-route textarea { font-size: 16px; }
  .entrance-route .upload-zone { padding: 22px 14px; }
  .entrance-route .upload-zone strong { font-size: 23px; }
  .entrance-route .button { font-size: 10px; padding: 14px; letter-spacing: .1px; }
  .entrance-route #pass-panel h3 { font-size: 30px; }
}
@media (max-width: 350px) {
  .entrance-route .reply-card { padding: 26px 20px; }
  .entrance-route .guest-intro h1 { font-size: 33px; }
  .entrance-route .rsvp-step { grid-template-columns: 25px minmax(0, 1fr); gap: 10px; }
  .entrance-route .step-number,
  .entrance-route .rsvp-step h2 { font-size: 26px; }
  .entrance-route .button { padding: 13px 11px; font-size: 9px; }
}
/* Match the reply card to the larger, readable information hierarchy. */
.entrance-route .reply-card{max-width:760px}
.entrance-route .entrance-instructions{font-size:15px;line-height:1.7}
.entrance-route .rsvp-step p{font-size:14px;line-height:1.7}
.entrance-route label{font-size:14px}
.entrance-route .optional{font-size:12px}
.entrance-route .form-footnote{font-size:12px;line-height:1.7}
.entrance-route .upload-zone .upload-disclosure{font-size:12px!important;max-width:350px}
.entrance-route .checkbox-label{font-size:13px}
.entrance-route #secret-details{padding:24px}
.entrance-route #secret-details section+section{margin-top:22px;padding-top:22px;border-top:1px solid var(--reply-rule)}
.entrance-route #secret-details h4{font:600 24px/1.2 var(--serif);color:var(--wine);margin-bottom:10px}
.entrance-route #secret-details p{font-size:14px;line-height:1.7}
.entrance-route #secret-details .pass-code h4{font:700 11px/1.5 var(--sans);letter-spacing:1.3px;text-transform:uppercase}
.entrance-route #secret-password{font-size:42px;margin:8px 0;line-height:1.2}
.entrance-route #secret-details .pass-arrival{padding:18px;background:#713c420c;border:1px solid var(--reply-rule);border-left:3px solid var(--wine)}
.entrance-route .pass-date{font-weight:600;margin-bottom:6px}
.entrance-route #secret-note{margin-top:0}
.entrance-route #secret-story-text{white-space:pre-wrap}
.entrance-route.entry-saved .guest-intro{margin-bottom:20px}
.entrance-route.entry-saved .guest-intro h1{font-size:39px}
.entrance-route #pass-panel .pass-symbol{display:none}
.entrance-route #pass-panel h3{font-size:32px}
.entrance-route .subtle-button{font-size:12px;min-height:44px}
.entrance-route #pass-panel>p:not(.eyebrow),.entrance-route #secret-place{font-size:14px;line-height:1.7}
.entrance-route #refresh-pass{display:block}
.entrance-route .pass-album-link{width:fit-content}
@media(max-width:520px){.entrance-route .reply-card{padding:28px 23px}.entrance-route .guest-intro h1{font-size:39px}.entrance-route .rsvp-step{grid-template-columns:24px minmax(0,1fr);gap:10px}.entrance-route .rsvp-step h2{font-size:29px}.entrance-route .entrance-instructions{font-size:14px}.entrance-route.entry-saved .guest-intro h1{font-size:34px}}
.entrance-route .rsvp-step{display:block;padding:22px 0;border-top:1px solid var(--reply-rule)}
.entrance-route .rsvp-reminder{font-size:13px;line-height:1.6;margin:-8px 0 24px;color:var(--reply-caption)}
.entrance-route.entry-saved .rsvp-reminder{display:none}
/* An invitation to a speakeasy, with familiar, readable form controls. */
.entrance-route:not(.entry-saved) .guest-intro{padding:28px 24px;margin-bottom:28px;text-align:center;background:var(--green);color:var(--paper);border:5px double #b99b65}
.entrance-route:not(.entry-saved) .guest-intro h1 em{color:#e5c78e}
.entrance-route:not(.entry-saved) .guest-intro .eyebrow{color:#e5c78e}
.entrance-route:not(.entry-saved) .rsvp-reminder{color:var(--paper);margin-bottom:0}
.entrance-ornament{display:flex;align-items:center;justify-content:center;gap:20px;color:#e5c78e;margin-bottom:15px}
.entrance-ornament svg{width:100px;height:40px;fill:none;stroke:currentColor;stroke-width:2}
.entrance-route.entry-saved .entrance-ornament{display:none}
.entrance-route .rsvp-step{border-top:0;padding-top:0}
.entrance-route #guest-form textarea{background-color:#fff8e7;background-image:repeating-linear-gradient(transparent 0 31px,#ad906130 31px 32px);background-origin:content-box;line-height:32px;border-color:#ad906180}
.entrance-route .upload-zone{background:#fff8e7;border:1px dashed #9f8051;outline:1px solid #ad906140;outline-offset:5px;margin:8px 5px 20px}
.entrance-route .upload-icon{font-size:38px;line-height:1;color:var(--wine)}
.entrance-route .upload-zone:hover,.entrance-route .upload-zone.dragover{background:#f6e9cc;border-color:var(--wine)}
.entrance-route .memory-board-note{background:none;border:0;padding:0;margin-top:10px}
@media(max-width:520px){.entrance-route:not(.entry-saved) .guest-intro{padding:22px 14px}.entrance-route:not(.entry-saved) .guest-intro h1{font-size:35px}}
