/* ============================================================
   APPLY VISA PAGE (tokens and buttons come from styles.css)
   ============================================================ */
.apply-page [hidden]{ display:none !important; }
.apply-page{ background:linear-gradient(180deg, #FFFFFF 0, #F2F9FD 340px, var(--paper) 760px); }
.apply-hero{ padding:calc(var(--nav-h) + clamp(32px, 6vw, 72px)) 0 clamp(24px, 4vw, 40px); }
.apply-hero-inner{ max-width:800px; text-align:center; }
.apply-hero .section-lead{ max-width:58ch; margin:0 auto; }

/* ---------- wizard card ---------- */
.wizard{
  width:min(860px, calc(100% - 32px)); margin:0 auto clamp(64px, 9vw, 110px);
  background:var(--white); border-radius:var(--radius);
  box-shadow:var(--shadow-lift), 0 0 0 1px rgba(20,41,59,.05);
  scroll-margin-top:calc(var(--nav-h) + 12px);
}
#applyForm,.finish{ padding:clamp(24px, 5vw, 48px); }
.finish:focus{ outline:none; }

/* ---------- stepper ---------- */
.stepper{
  display:grid; grid-template-columns:repeat(4, 1fr); gap:4px;
  padding:18px clamp(14px, 4vw, 40px); border-bottom:1.5px dashed var(--line);
}
.stepper li{
  position:relative; display:flex; flex-direction:column; align-items:center; gap:7px;
  font-size:.8rem; font-weight:600; color:var(--ink-55); text-align:center; line-height:1.25;
  transition:color .4s ease;
}
.stepper li:not(:first-child)::before{
  content:""; position:absolute; top:15px; right:calc(50% + 20px); left:calc(-50% + 20px); height:2px;
  background:var(--line); border-radius:2px;
}
.stepper li:not(:first-child)::after{
  content:""; position:absolute; top:15px; right:calc(50% + 20px); left:calc(-50% + 20px); height:2px;
  background:var(--teal); border-radius:2px; transform:scaleX(0); transform-origin:left;
  transition:transform .8s var(--ease);
}
.stepper li.is-done::after,.stepper li.is-current::after{ transform:scaleX(1); }
.stepper-dot{
  display:grid; place-items:center; width:32px; height:32px; border-radius:50%;
  background:var(--mist); color:var(--ink-55); font-weight:800; font-size:.84rem;
  transition:background .4s ease, color .4s ease, transform .7s var(--ease);
}
.stepper li.is-current{ color:var(--ink); }
.stepper li.is-current .stepper-dot{ background:var(--teal); color:var(--white); transform:scale(1.1); }
.stepper li.is-done .stepper-dot{ background:var(--sky); color:var(--teal); }

/* ---------- steps ---------- */
.step{ display:none; }
.step.is-active{ display:block; animation:stepIn .7s var(--ease) both; }
.step.is-back{ animation-name:stepBack; }
@keyframes stepIn{ from{ opacity:0; transform:translateX(26px); } to{ opacity:1; transform:none; } }
@keyframes stepBack{ from{ opacity:0; transform:translateX(-26px); } to{ opacity:1; transform:none; } }
.step h2{ font-size:clamp(1.6rem, 3.6vw, 2.3rem); margin-bottom:.55em; }
.step h2:focus{ outline:none; }
.step-lead{ color:var(--ink-70); }

/* ---------- fields ---------- */
.field{ margin:0 0 22px; padding:0; border:0; min-width:0; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.field--date{ max-width:280px; }
.field label,.field legend{ display:block; padding:0; margin-bottom:8px; font-weight:700; font-size:.94rem; }
.field small{ font-weight:500; color:var(--ink-55); font-size:.84rem; }
.field-help{ margin:-2px 0 10px; font-size:.92rem; color:var(--ink-70); }
.field input[type="text"],.field input[type="tel"],.field input[type="email"],.field input[type="date"],
.field select,.field textarea{
  display:block; width:100%; min-height:50px; padding:12px 16px; border-radius:14px;
  border:1.5px solid var(--line); background:var(--white); color:var(--ink);
  font:500 1rem/1.4 var(--font);
  transition:border-color .25s ease, box-shadow .25s ease;
}
.field select{
  -webkit-appearance:none; appearance:none; padding-right:42px; cursor:pointer;
  background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%231F4A66' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 14px center/18px no-repeat;
}
.field textarea{ resize:vertical; min-height:128px; }
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--teal); box-shadow:0 0 0 4px rgba(63,169,214,.2);
}
.field .is-invalid{ border-color:#C0392B; }
.field-error{ margin:7px 0 0; font-size:.88rem; font-weight:600; color:#B3261E; }

.choice-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; }
.choice{ position:relative; display:block; margin:0 !important; cursor:pointer; }
.choice input{ position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; cursor:pointer; }
.choice span{
  display:flex; align-items:center; justify-content:center; min-height:54px; padding:10px 12px;
  border-radius:14px; border:1.5px solid var(--line); text-align:center; font-weight:600; font-size:.94rem; line-height:1.25;
  transition:background .25s ease, border-color .25s ease, color .25s ease, transform .5s var(--ease);
}
.choice:hover span{ border-color:var(--teal); transform:translateY(-2px); }
.choice input:checked + span{ background:var(--teal); border-color:var(--teal); color:var(--white); }
.choice input:focus-visible + span{ outline:3px solid var(--cyan); outline-offset:3px; }

/* ---------- callouts ---------- */
.callouts{ display:grid; gap:10px; margin:18px 0 24px; }
.callout{ padding:13px 16px; border-radius:14px; background:var(--sky); color:var(--navy); font-size:.93rem; font-weight:500; }
.callout[hidden],.contact-panel[hidden]{ display:none; }
.callout--error{ background:#FCECEA; color:#8F1F18; margin-bottom:22px; }
.contact-panel{ margin:0 0 22px; padding:22px; border-radius:18px; background:var(--sky); animation:stepIn .7s var(--ease) both; }
.contact-panel h3{ margin-bottom:6px; color:var(--navy); }
.contact-panel p{ color:var(--ink-70); font-size:.96rem; margin-bottom:14px; }
.contact-panel-hint{ font-weight:600; }

/* ---------- document slots ---------- */
.doc-progress{ display:flex; align-items:center; gap:14px; margin-bottom:22px; font-weight:700; font-size:.9rem; color:var(--navy); }
.doc-progress > span:first-child{ white-space:nowrap; }
.doc-progress-bar{ flex:1; height:6px; border-radius:6px; background:var(--mist); overflow:hidden; }
.doc-progress-bar i{ display:block; height:100%; border-radius:6px; background:linear-gradient(90deg, var(--teal), var(--cyan)); transform:scaleX(0); transform-origin:left; transition:transform .8s var(--ease); }
.doc-group{ margin-bottom:26px; }
.doc-group h3{ font-size:.78rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-55); margin-bottom:10px; }
.doc-slots{ display:grid; gap:10px; }
.doc-slot{
  display:grid; grid-template-columns:44px 1fr auto; align-items:center; gap:14px;
  padding:14px 16px; border-radius:16px; border:1.5px solid var(--line); background:var(--white);
  transition:border-color .25s ease, background .25s ease;
}
.doc-slot.is-over{ border-color:var(--teal); background:var(--sky); }
.doc-slot.has-file{ border-color:rgba(28,110,140,.45); background:#F5FAFD; }
.doc-slot.has-error{ border-color:#C0392B; }
.doc-icon{
  display:grid; place-items:center; width:44px; height:44px; border-radius:11px; overflow:hidden;
  background:var(--mist); color:var(--navy); font-size:.66rem; font-weight:800; letter-spacing:.03em;
}
.has-file .doc-icon{ background:var(--teal); color:var(--white); }
.doc-icon img{ width:100%; height:100%; object-fit:cover; display:block; }
.doc-info{ min-width:0; }
.doc-name{ display:block; font-weight:700; font-size:.97rem; line-height:1.3; }
.doc-hint{ display:block; margin-top:2px; font-size:.86rem; color:var(--ink-70); line-height:1.4; }
.doc-formats{ display:flex; flex-wrap:wrap; align-items:center; gap:5px; margin-top:7px; font-size:.76rem; color:var(--ink-55); font-weight:600; }
.doc-format{ padding:2px 7px; border-radius:6px; background:var(--mist); color:var(--navy); font-weight:800; font-size:.68rem; letter-spacing:.04em; }
.doc-file{ display:block; margin-top:5px; font-size:.84rem; font-weight:600; color:var(--teal); overflow-wrap:anywhere; }
.doc-error{ display:block; margin-top:5px; font-size:.84rem; font-weight:600; color:#B3261E; }
.doc-actions{ display:flex; flex-direction:column; align-items:stretch; gap:6px; }
.doc-pick{
  position:relative; display:inline-flex; justify-content:center; padding:9px 15px; border-radius:999px; cursor:pointer;
  border:1.5px solid rgba(31,74,102,.28); color:var(--navy); font-size:.84rem; font-weight:700; white-space:nowrap;
  transition:background .25s ease, border-color .25s ease, transform .5s var(--ease);
}
.doc-pick:hover{ border-color:var(--navy); transform:translateY(-1px); }
.doc-pick input{ position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; font-size:0; }
.doc-pick:focus-within{ outline:3px solid var(--cyan); outline-offset:3px; }
.doc-remove{
  border:none; background:none; padding:3px; cursor:pointer; font:600 .8rem/1.2 var(--font);
  color:#A1362C; text-decoration:underline; text-underline-offset:2px;
}

/* ---------- review ---------- */
.review-block{ padding:18px 0; border-bottom:1px solid var(--line); }
.review-block:first-child{ padding-top:4px; }
.review-head{ display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:8px; }
.review-head h3{ margin:0; font-size:1rem; }
.review-edit{ border:none; background:none; padding:4px; cursor:pointer; font:700 .86rem/1 var(--font); color:var(--teal); text-decoration:underline; text-underline-offset:3px; }
.review-block dl{ display:grid; grid-template-columns:minmax(90px, 150px) 1fr; gap:5px 14px; font-size:.95rem; }
.review-block dt{ color:var(--ink-55); }
.review-block dd{ font-weight:600; overflow-wrap:anywhere; white-space:pre-line; }
.review-block ul{ font-size:.93rem; font-weight:500; }
.review-block li{ padding:3px 0; overflow-wrap:anywhere; }
.review-block li b{ font-weight:700; }
.review-muted{ margin:6px 0 0; font-size:.9rem; color:var(--ink-70); }
.consent{ display:grid; grid-template-columns:22px 1fr; gap:11px; margin-top:22px; font-size:.94rem; font-weight:500; cursor:pointer; }
.consent input{ width:20px; height:20px; margin:2px 0 0; accent-color:var(--teal); }
.send-status{ margin-top:14px; font-weight:700; color:var(--teal); }

/* ---------- nav + finish ---------- */
.wizard-nav{ display:flex; justify-content:space-between; gap:12px; margin-top:30px; padding-top:22px; border-top:1px solid var(--line); }
.wizard-nav .btn:only-child{ margin-left:auto; }
.btn[disabled]{ opacity:.55; cursor:default; transform:none; }
.finish{ animation:stepIn .8s var(--ease) both; }
.finish h2{ font-size:clamp(1.6rem, 3.6vw, 2.3rem); }
.finish > p{ color:var(--ink-70); }
.finish-warning{ padding:14px 16px; border-radius:14px; background:#FFF5E0; color:#6F4A00 !important; font-weight:600; font-size:.95rem; }
.hp-field{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.send-fallback{ margin-top:12px; }
.finish-ref{ margin:20px 0; padding:18px 20px; border-radius:16px; background:var(--sky); }
.finish-ref span{ display:block; font-size:.78rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--teal); }
.finish-ref strong{ display:block; margin:4px 0; font-size:clamp(1.3rem, 3.4vw, 1.75rem); font-weight:800; letter-spacing:.01em; color:var(--ink); overflow-wrap:anywhere; }
.finish-ref small{ display:block; font-size:.86rem; color:var(--ink-70); }
.finish-warning p{ margin:0 0 6px; }
.finish-warning ul{ padding-left:18px; list-style:disc; }
.finish .finish-actions{ margin-top:18px; }
.finish-tick{
  display:grid; place-items:center; width:56px; height:56px; margin-bottom:16px; border-radius:50%;
  background:var(--teal); color:var(--white);
}
.finish-files{ margin:18px 0 24px; padding:16px 18px; border-radius:14px; background:var(--mist); font-size:.93rem; }
.finish-files h3{ font-size:.78rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-55); margin-bottom:8px; }
.finish-files li{ padding:2px 0; overflow-wrap:anywhere; }
.finish-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:10px; }
.finish-hint{ font-size:.88rem; }
.finish-links{ display:flex; flex-wrap:wrap; gap:18px; margin-top:22px; padding-top:18px; border-top:1px solid var(--line); }
.finish-links a,.finish-links button{ border:none; background:none; padding:0; cursor:pointer; font:600 .92rem/1.3 var(--font); color:var(--teal); text-decoration:underline; text-underline-offset:3px; }

/* ---------- responsive ---------- */
@media (max-width: 640px){
  .field-row{ grid-template-columns:1fr; }
  .field--date{ max-width:none; }
  .stepper{ padding:14px 8px; }
  .stepper li{ font-size:.7rem; }
  .doc-slot{ grid-template-columns:40px 1fr; gap:12px; padding:13px; }
  .doc-icon{ width:40px; height:40px; }
  .doc-actions{ grid-column:1 / -1; flex-direction:row; align-items:center; justify-content:space-between; }
  .doc-pick{ flex:1; padding:11px 15px; }
  .doc-remove{ padding:6px 4px 6px 10px; }
  .wizard-nav .btn{ flex:1; }
  .review-block dl{ grid-template-columns:82px 1fr; }
  .finish-actions .btn{ width:100%; }
}
