/* Application form — builds on the tokens defined in styles.css */

.apply-page{ background:var(--paper-2); }
.apply-wrap{ max-width:820px; padding-block:36px 80px; }
.back-link{ font-size:.9rem; color:var(--ink-2); text-decoration:none; }
@media (max-width:620px){ .back-link{ display:none; } }
.back-link:hover{ color:var(--green-800); }

.apply-intro h1{ font-size:clamp(1.7rem,4vw,2.5rem); margin-bottom:.3em; }
.apply-intro .lede{ font-size:1.05rem; color:var(--ink-2); max-width:62ch; }
.prepare{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:20px 24px; margin:24px 0 32px; box-shadow:var(--shadow);
}
.prepare h2{ font-size:1rem; margin-bottom:.6em; color:var(--green-800); }
.prepare ul{ margin:0; padding-inline-start:20px; color:var(--ink-2); }
.prepare li{ margin-bottom:5px; font-size:.95rem; }

/* ── Progress ───────────────────────────────────────────────────────── */
.progress{ margin-bottom:26px; }
.progress ol{
  display:flex; flex-wrap:wrap; gap:6px 8px; list-style:none; margin:0 0 12px; padding:0;
  counter-reset:p;
}
.progress li{
  counter-increment:p; font-size:.8rem; color:var(--ink-2);
  background:#fff; border:1px solid var(--line); border-radius:999px; padding:5px 13px;
  white-space:nowrap;
}
.progress li::before{ content:counter(p) ". "; opacity:.6; }
.progress li.done{ background:var(--green-50); border-color:var(--green-700); color:var(--green-800); cursor:pointer; }
.progress li.current{ background:var(--green-800); border-color:var(--green-800); color:#fff; }
.progress-label{ margin:0 0 8px; font-size:.85rem; color:var(--ink-2); }
.progress-bar{ height:5px; background:var(--line); border-radius:99px; overflow:hidden; }
.progress-bar div{ height:100%; background:var(--gold); border-radius:99px; transition:width .3s ease; }

/* ── Steps ──────────────────────────────────────────────────────────── */
.step{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:30px 32px; box-shadow:var(--shadow);
}
.step > h2{
  font-size:1.4rem; color:var(--green-800);
  padding-bottom:14px; margin-bottom:22px; border-bottom:1px solid var(--line);
}
.step .lede{ color:var(--ink-2); font-size:.96rem; margin-top:-12px; margin-bottom:24px; }

.field{ margin-bottom:22px; }
.field[hidden]{ display:none; }
.field-heading-wrap{ margin:34px 0 18px; }
.field-heading{
  font-size:1.05rem; color:var(--green-800); margin:0;
  padding-bottom:8px; border-bottom:1px dashed var(--line);
}
.field-label{ display:block; font-size:.94rem; font-weight:600; margin-bottom:8px; }
.field-label .req{ color:var(--danger); }
.field-label .optional{ color:var(--ink-2); font-weight:400; font-size:.85rem; }

.field input[type=text],.field input[type=email],.field input[type=tel],
.field input[type=date],.field select,.field textarea{
  width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:10px;
  background:#fff; font-family:var(--font-body); font-size:1rem; color:var(--ink);
  transition:border-color .15s, box-shadow .15s;
}
.field textarea{ resize:vertical; line-height:1.7; }
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--green-700); box-shadow:0 0 0 3px rgba(20,96,85,.14);
}
.field.has-error input,.field.has-error select,.field.has-error textarea{ border-color:var(--danger); }

.hint{ font-size:.82rem; color:var(--ink-2); margin:6px 0 0; }
.counter{ font-size:.8rem; margin:6px 0 0; color:var(--ink-2); }
.counter.low{ color:#8a6d1f; }
.counter.over{ color:var(--danger); }
.counter.ok{ color:var(--green-700); }
.err{ font-size:.83rem; color:var(--danger); margin:6px 0 0; display:none; }
.err.show{ display:block; }

/* Choices */
.choices{ display:flex; flex-wrap:wrap; gap:9px; }
.choice{
  display:inline-flex; align-items:center; gap:8px; cursor:pointer;
  border:1px solid var(--line); background:#fff; border-radius:999px;
  padding:10px 17px; font-size:.94rem; transition:.15s;
}
.choice input{ accent-color:var(--green-800); margin:0; }
.choice:has(input:checked){ border-color:var(--green-800); background:var(--green-50); }
.field.has-error .choice{ border-color:var(--danger); }

.declaration{
  display:flex; gap:12px; align-items:flex-start; cursor:pointer;
  background:var(--green-50); border:1px solid var(--line); border-radius:12px;
  padding:16px 18px; font-size:.95rem; line-height:1.6;
}
.declaration input{ accent-color:var(--green-800); margin-top:5px; flex:none; }

/* Files */
.filefield{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.filefield input[type=file]{ position:absolute; width:1px; height:1px; opacity:0; }
.file-btn{
  display:inline-block; background:var(--green-800); color:#fff; cursor:pointer;
  padding:10px 20px; border-radius:999px; font-size:.9rem; font-weight:600; transition:.15s;
}
.file-btn:hover{ background:var(--green-700); }
.filefield input[type=file]:focus-visible + .file-btn{ outline:2px solid var(--gold); outline-offset:2px; }
.file-name{ font-size:.88rem; color:var(--green-800); word-break:break-all; }
.file-hint{ font-size:.8rem; color:var(--ink-2); width:100%; }

.honeypot{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ── Review ─────────────────────────────────────────────────────────── */
.review-section{ border:1px solid var(--line); border-radius:12px; padding:6px 20px 16px; margin-bottom:16px; }
.review-head{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-bottom:1px solid var(--line); padding:10px 0; margin-bottom:6px; }
.review-head h3{ margin:0; font-size:1rem; color:var(--green-800); }
.review-section dl{ margin:0; }
.review-section dt{ font-size:.82rem; color:var(--ink-2); margin-top:12px; font-weight:600; }
.review-section dd{ margin:2px 0 0; white-space:pre-wrap; font-size:.95rem; }
.review-section dd.blank{ color:var(--ink-2); font-style:italic; }
.linkish{
  background:none; border:0; color:var(--green-700); cursor:pointer;
  font-family:var(--font-body); font-size:.88rem; text-decoration:underline; padding:0;
}

/* ── Navigation & status ────────────────────────────────────────────── */
.form-nav{ display:flex; gap:12px; margin-top:22px; }
.form-nav .btn{ flex:1; }
.form-status{ margin:18px 0 0; font-size:.92rem; min-height:1.2em; }
.form-status.error{ color:var(--danger); font-weight:600; }
.draft-row{ display:flex; align-items:center; gap:14px; margin-top:16px; font-size:.85rem; }
.draft-saved{ color:var(--green-700); }
.draft-saved::before{ content:"✓ "; }
.load-error{ background:#fff; border:1px solid var(--danger); border-radius:12px; padding:24px; color:var(--danger); }

.success-card .reference{
  font-family:var(--font-en-body); font-size:1.05rem; font-weight:600;
  background:var(--green-50); display:inline-block; padding:8px 20px; border-radius:999px;
}

@media (max-width:640px){
  .step{ padding:22px 18px; }
  .apply-wrap{ padding-block:24px 60px; }
  .form-nav{ flex-direction:column-reverse; }
  .progress li{ font-size:.74rem; padding:4px 10px; }
}
@media print{
  .site-header,.site-footer,.form-nav,.progress,.draft-row,.success-card .btn{ display:none; }
}
