.form-layout {
  max-width: 1120px;
  margin: auto;
  padding: 65px 28px 100px;
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 65px;
  align-items: start;
}
.form-intro h1 {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(42px, 5vw, 64px);
  line-height: 1;
  letter-spacing: -0.035em;
  margin: 16px 0 24px;
}
.form-intro p {
  color: var(--muted);
  font-size: 18px;
}
.trust-list {
  display: grid;
  gap: 12px;
  margin-top: 30px;
}
.trust-list span {
  display: flex;
  gap: 10px;
  align-items: center;
}
.trust-list span:before {
  content: '✓';
  display: grid;
  place-items: center;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #dff5ed;
  color: #14785d;
  font-weight: 900;
}
.form-card {
  padding: 34px;
  border-radius: 28px;
  border: 1px solid var(--line);
  background: white;
  box-shadow: var(--shadow);
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.form-section {
  grid-column: 1 / -1;
  padding: 22px;
  border: 1px solid #cfe6df;
  border-radius: 20px;
  background: linear-gradient(145deg, #fbfefd, #f3fbf8);
}
.form-section > header {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 18px;
}
.section-number {
  flex: 0 0 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--mint-dark);
  color: white;
  font-weight: 900;
}
.form-section h2 { margin: 1px 0 3px; font-size: 19px; color: var(--ink); }
.form-section header p { margin: 0; color: var(--muted); font-size: 13px; }
.section-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.section-grid.single-column { grid-template-columns: 1fr; }
.credentials-grid .field {
  width: min(100%, 390px);
}
.field {
  display: grid;
  gap: 7px;
}
.field.full {
  grid-column: 1/-1;
}
.field label {
  font-size: 13px;
  font-weight: 800;
}
.field input,
.field select,
.field textarea {
  width: 100%;
  border: 1px solid #b9d5cc;
  border-radius: 13px;
  padding: 13px 14px;
  font: inherit;
  color: var(--text);
  background: #fbfefd;
}
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: 3px solid rgba(99, 201, 168, 0.25);
  border-color: var(--mint-dark);
}
.field input[aria-invalid='true'],
.field select[aria-invalid='true'] {
  border-color: #c9414b;
  background: #fff9f9;
}
.field-error {
  min-height: 18px;
  color: #b4232f;
  font-size: 12px;
  font-weight: 700;
}
.field-error:empty { display: none; }
.field-help { color: var(--muted); font-size: 12px; }
.phone-input {
  display: grid;
  grid-template-columns: minmax(112px, auto) 1fr;
  gap: 8px;
}
.password-input {
  position: relative;
}
.password-input input {
  padding-right: 50px;
}
.password-toggle {
  position: absolute;
  top: 50%;
  right: 8px;
  width: 38px;
  height: 38px;
  transform: translateY(-50%);
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #50736a;
  cursor: pointer;
  font-size: 19px;
}
.password-toggle:hover,
.password-toggle:focus-visible,
.password-toggle.is-visible {
  background: #dff5ed;
  color: #075541;
  outline: none;
}
.password-toggle svg {
  width: 21px;
  height: 21px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.password-toggle .eye-closed,
.password-toggle.is-visible .eye-open { display: none; }
.password-toggle.is-visible .eye-closed { display: block; }
.password-rules {
  list-style: none;
  margin: 2px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px 12px;
  color: var(--muted);
  font-size: 12px;
}
.password-rules li::before {
  content: '○';
  display: inline-block;
  width: 18px;
  color: #7a8e88;
  font-weight: 900;
}
.password-rules li.valid { color: #14785d; font-weight: 700; }
.password-rules li.valid::before { content: '✓'; color: #14785d; }
.consent {
  grid-column: 1/-1;
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 13px;
  color: var(--muted);
}
.consent input {
  margin-top: 4px;
}
.member-information {
  grid-column: 1/-1;
  max-height: 255px;
  overflow-y: auto;
  padding: 18px 20px;
  border: 1px solid #b9d7cf;
  border-radius: 15px;
  background: #fff;
  color: #49675f;
  font-size: 13px;
  line-height: 1.55;
  scrollbar-color: #79baa9 #e7f3ef;
  scrollbar-width: thin;
}
.member-information:focus {
  outline: 3px solid rgba(99, 201, 168, 0.25);
  border-color: var(--mint-dark);
}
.member-information h3 { margin: 0 0 10px; color: var(--ink); font-size: 17px; }
.member-information p { margin: 0 0 13px; }
.member-information p:last-child { margin-bottom: 0; }
.member-information a { color: #126d58; font-weight: 800; }
.terms-consent {
  padding: 14px;
  border: 1px solid #c9dfd8;
  border-radius: 14px;
  background: #fbfefd;
  color: #36564d;
}
.terms-consent strong { color: #174c43; }
.newsletter-consent {
  margin-top: 4px;
  padding: 14px;
  border: 1px solid #c9dfd8;
  border-radius: 14px;
  background: #eef8f5;
  color: #36564d;
}
.newsletter-consent strong {
  color: #176c58;
}
.captcha {
  grid-column: 1/-1;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--mist);
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto 90px 38px;
  align-items: center;
  gap: 12px;
}
.captcha > div { display: grid; gap: 3px; }
.captcha strong { color: var(--ink); }
.captcha span, .captcha label { color: var(--muted); font-size: 13px; }
.captcha input:not([type='hidden']) {
  width: 90px;
  border: 1px solid #9fc9bc;
  border-radius: 11px;
  padding: 10px;
  background: white;
  font: inherit;
  text-align: center;
}
.captcha button {
  width: 38px;
  height: 38px;
  border: 1px solid #9fc9bc;
  border-radius: 50%;
  background: white;
  color: var(--mint-dark);
  font-size: 20px;
  cursor: pointer;
}
.submit {
  grid-column: 1/-1;
  border: 0;
  cursor: pointer;
}
.form-status {
  grid-column: 1/-1;
  margin: 0;
  min-height: 24px;
  font-weight: 700;
}
.registration-closed {
  grid-column: 1/-1;
  margin: -6px 0 0;
  padding: 13px 15px;
  border-radius: 12px;
  background: #fff5d9;
  color: #604c16;
  font-size: 13px;
  font-weight: 700;
  text-align: center;
}
.gift-preview {
  margin-top: 35px;
  padding: 30px;
  border-radius: 28px;
  background: linear-gradient(145deg, #e4f8f1, #fff9e9);
  border: 1px solid var(--line);
  text-align: center;
}
.gift-preview .gift-logo {
  width: 100px;
}
.gift-preview .gift-scene {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 20px;
  margin-bottom: 22px;
}
.gift-preview h2 {
  font-family: Georgia, serif;
  font-size: 36px;
  margin: 15px 0 5px;
}
.gift-preview strong {
  display: block;
  font-size: 21px;
  color: var(--ink);
}
.gift-preview small {
  display: block;
  margin-top: 25px;
  color: var(--muted);
}

@media print {
  body > :not(main), .gift-form-copy, #gift-form { display: none !important; }
  main, .gift-layout, .gift-preview { display: block !important; margin: 0 !important; }
  .gift-preview { box-shadow: none !important; break-inside: avoid; }
}
.gift-message {
  font-family: Georgia, serif;
  font-size: 17px;
  font-style: italic;
  white-space: pre-wrap;
}
.preview-button {
  grid-column: 1 / -1;
  background: #dff5ed !important;
  border: 1px solid #72c9ac;
  color: #075541;
  box-shadow: none;
}
.other-occasion[hidden] {
  display: none;
}
.activation-layout {
  min-height: calc(100vh - 170px);
  display: grid;
  place-items: center;
  padding: 55px 22px;
}
.activation-public-card { width: min(100%, 590px); text-align: center; }
.activation-public-card h1 {
  margin: 12px 0 18px;
  color: var(--ink);
  font: 700 clamp(34px, 6vw, 52px) / 1.05 Georgia, serif;
}
.activation-public-card .submit { width: 100%; margin-top: 18px; }
@media (max-width: 820px) {
  .form-layout {
    grid-template-columns: 1fr;
  }
  .form-grid {
    grid-template-columns: 1fr;
  }
  .form-section { padding: 18px; }
  .section-grid { grid-template-columns: 1fr; }
  .field.full,
  .consent,
  .captcha,
  .submit,
  .preview-button,
  .form-status {
    grid-column: auto;
  }
  .captcha { grid-template-columns: 1fr 82px 38px; }
  .captcha > div { grid-column: 1 / -1; }
  .captcha label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
  }
  .password-rules { grid-template-columns: 1fr; }
}
