/* ============================================================================
   VKSSP — refreshed neutral-professional theme (institution-agnostic).
   Phase: applicant frontend UI pass.

   SCOPED under `body.vk-theme` so it can be rolled out screen-by-screen without
   touching pages that haven't opted in (zero risk to other screens).
   ALL colours are CSS variables — an institution re-themes by overriding the
   variables below (no hardcoded colours). Visual/UX only: no markup logic,
   field names, async flows or JS behaviour are changed by this file.
   Plain CSS transitions only (200–300ms ease) — no animation libraries.
   ============================================================================ */

:root {
  /* ---- Brand-neutral professional palette (override per institution) ---- */
  --vk-primary:        #2d2a72;   /* calm professional indigo (main actions)   */
  --vk-primary-600:    #383592;   /* hover                                      */
  --vk-primary-700:    #211f55;   /* pressed / strong                           */
  --vk-accent:         #e0457b;   /* brand pink, used sparingly as an accent    */
  --vk-bg:             #f4f6f9;   /* app background (neutral)                    */
  --vk-surface:        #ffffff;   /* cards / panels                             */
  --vk-surface-2:      #fafbfc;   /* inset panels                               */
  --vk-text:           #1f2430;   /* primary text                               */
  --vk-muted:          #6a7283;   /* secondary text                             */
  --vk-border:         #e4e7ee;   /* hairline borders                           */
  --vk-border-strong:  #cfd4df;   /* input borders                              */
  --vk-success:        #1f9d6b;
  --vk-danger:         #d64550;
  --vk-warning:        #e8a317;

  --vk-radius:         12px;
  --vk-radius-sm:      8px;
  --vk-shadow-sm:      0 1px 2px rgba(16,24,40,.05);
  --vk-shadow:         0 2px 10px rgba(16,24,40,.07);
  --vk-shadow-md:      0 10px 28px rgba(16,24,40,.12);
  --vk-transition:     220ms ease;
  /* focus ring derives from the brand colour so it re-themes per institution */
  --vk-focus-ring:     0 0 0 3px color-mix(in srgb, var(--vk-primary) 18%, transparent);

  /* ---- Type roles ---- */
  --vk-font-sans:      'Inter','Segoe UI',system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  --vk-font-display:   'Fraunces',Georgia,'Times New Roman',serif;  /* scholarly serif, headlines only */

  /* ---- Landing hero photo (institution-swappable). Set to `none` for a pure gradient hero.
     Path is relative to THIS css file (application/assets/css/). ---- */
  --vk-hero-image:     url("../images/hero-classroom.jpg");
}

/* Scoped variable picked up by navbar.php's inline style (var(--vk-navbar-bg, #ffd3d3)). */
body.vk-theme { --vk-navbar-bg: var(--vk-surface); }

body.vk-theme {
  background: var(--vk-bg);
  color: var(--vk-text);
  -webkit-font-smoothing: antialiased;
}

/* ---- Navbar ---- */
body.vk-theme #header-wrap nav {
  border-bottom: 1px solid var(--vk-border);
  box-shadow: var(--vk-shadow-sm);
}

/* ---- Page / form shell ---- */
body.vk-theme .content-section { background: var(--vk-bg); }
body.vk-theme .submit-data {
  background: var(--vk-surface);
  border: 1px solid var(--vk-border);
  border-radius: var(--vk-radius);
  box-shadow: var(--vk-shadow);
  padding: 24px 26px 28px;
}

/* ============================================================================
   Step indicator → SEGMENTED PILL TABS (nav-tabs.php renders .breadcrumb > li.completed/.active).
   A soft container holds one pill per step: the current step is a filled brand pill with a lift,
   completed steps are tinted, upcoming are quiet. Re-skins the legacy arrow-tab markup.
   ============================================================================ */
body.vk-theme .breadcrumb {
  display: flex; flex-wrap: nowrap; align-items: stretch; gap: 4px;
  list-style: none; background: #f1f2f6; border: 1px solid var(--vk-border);
  border-radius: 14px; padding: 6px; margin: 0 0 6px; overflow-x: auto; overflow-y: hidden;
}
body.vk-theme .breadcrumb::-webkit-scrollbar { height: 6px; }
body.vk-theme .breadcrumb::-webkit-scrollbar-thumb { background: var(--vk-border-strong, #cfd4df); border-radius: 6px; }
body.vk-theme .breadcrumb li {
  list-style: none; flex: 1 1 auto; min-width: max-content; display: flex; float: none;
}
body.vk-theme .breadcrumb li::before,
body.vk-theme .breadcrumb li::after { content: none !important; }              /* drop legacy '/' separators */
body.vk-theme .breadcrumb li a::after,
body.vk-theme .breadcrumb li a::before { content: none !important; display: none !important; border: 0 !important; }  /* drop legacy arrow triangles */
body.vk-theme .breadcrumb li a {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  width: 100%; white-space: nowrap; cursor: default;
  padding: 11px 16px; border-radius: 10px; border: 1px solid transparent;
  background: transparent !important; color: var(--vk-muted) !important;
  font-size: 13px; font-weight: 600; line-height: 1.1; text-decoration: none !important;
  transition: background-color var(--vk-transition), color var(--vk-transition), box-shadow var(--vk-transition);
}
body.vk-theme .breadcrumb li a[href] { cursor: pointer; }
body.vk-theme .breadcrumb li a[href]:hover { color: var(--vk-text) !important; background: rgba(255,255,255,.7) !important; }
/* completed: tinted pill + a small tick, brand-coloured text */
/* completed: solid green pill with a white tick (green = done, matching the earlier design) */
body.vk-theme .breadcrumb li.completed a {
  background: var(--vk-success) !important; color: #fff !important;
}
body.vk-theme .breadcrumb li.completed a[href]:hover { background: color-mix(in srgb, var(--vk-success) 88%, #000) !important; }
body.vk-theme .breadcrumb li.completed a::before {
  content: '' !important; display: inline-block !important; width: 14px; height: 14px; flex: none;
  background-repeat: no-repeat; background-position: center; background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
}
/* active: filled brand pill with a soft lift + white text (paramount look) */
body.vk-theme .breadcrumb li.active a,
body.vk-theme .breadcrumb li.active_edit a {
  background: var(--vk-primary) !important; color: #fff !important; font-weight: 700;
  box-shadow: 0 8px 16px -7px color-mix(in srgb, var(--vk-primary) 60%, transparent), 0 2px 5px -3px rgba(0,0,0,.18);
}
/* pills sit ON the form card as its header: pull to the card's top edge + a divider below */
body.vk-theme .submit-data .vk-steps-head {
  margin: -8px -10px 20px; padding-bottom: 18px; border-bottom: 1px solid var(--vk-border);
}
body.vk-theme .submit-data .vk-steps-head .breadcrumb { margin: 0; }
body.vk-theme .submit-data .vk-steps-head .col-sm-12 { padding: 0; }
body.vk-theme .submit-data .vk-steps-head + .form_title { margin-top: 0; }

/* ---- Section headings (legacy .form_title was a dark navy bar → text went invisible) ---- */
body.vk-theme .form_title {
  position: relative;
  font-size: 17px; font-weight: 700; color: var(--vk-text) !important;
  background: none !important;            /* remove the legacy dark bar */
  margin: 30px 0 16px; padding: 1px 0 10px 15px; border-radius: 0;
  border-bottom: 1px solid var(--vk-border);
}
body.vk-theme .form_title::before {       /* gradient accent rail */
  content: ''; position: absolute; left: 0; top: 3px; bottom: 11px; width: 4px;
  border-radius: 3px; background: linear-gradient(180deg, var(--vk-primary), var(--vk-accent));
}
body.vk-theme .form_title sup,
body.vk-theme .text-danger sup { color: var(--vk-accent); }
/* Required-field asterisk: keep a small gap so it never crowds the label text or the next field. */
body.vk-theme label sup,
body.vk-theme .form-label sup,
body.vk-theme label .text-danger { margin-left: 3px; padding-right: 2px; }
/* AI translation disclaimer bar — non-English applicant screens only. Subtle info style, thin, never alarming. */
.ai-disclaimer-bar {
    background: #eef1f6;
    color: #5a6472;
    font-size: 12px;
    line-height: 1.4;
    text-align: center;
    padding: 5px 14px;
    border-bottom: 1px solid #e2e6ee;
}
/* Allow-Edit window banner: amber while the edit window is closing (≤2 days), red once it has closed. */
.vk-edit-banner {
    font-size: 13.5px; line-height: 1.45; text-align: center;
    padding: 10px 16px; margin: 0 0 14px; border-radius: 8px; border: 1px solid transparent;
}
.vk-edit-banner--warn   { background: #fff3cd; color: #7a5b00; border-color: #ffe08a; }
.vk-edit-banner--closed { background: #fdecea; color: #8a1c12; border-color: #f5c2bd; }
body.vk-theme .form_border {
  background: var(--vk-surface-2);
  border: 1px solid var(--vk-border);
  border-radius: var(--vk-radius-sm);
  padding: 16px 18px 8px;
}
/* Consent / terms / exceptional TEXT (spans + lists) → one calm body style. These selectors never
   match field labels (field grids have no .label-text / list markup), so they're safe. */
body.vk-theme .form_border .label-text,
body.vk-theme .form_border p,
body.vk-theme .form_border ol,
body.vk-theme .form_border ul,
body.vk-theme .form_border li {
  font-family: var(--vk-font-sans) !important; font-size: 14px !important; font-weight: 400 !important;
  line-height: 1.6; color: var(--vk-text); letter-spacing: 0;
}
/* Acknowledgement LABELS only (those wrapping a checkbox): same body style + hanging indent so the
   intro and bullet clauses align in one column. Scoped with :has() so FIELD labels living in these
   same .form_border grids are untouched and keep their normal left-aligned field-label style. */
body.vk-theme .form_border label:has(> input[type="checkbox"]) {
  font-family: var(--vk-font-sans) !important; font-size: 14px !important; font-weight: 400 !important;
  line-height: 1.6; color: var(--vk-text);
  display: block; position: relative; padding-left: 28px; margin: 0; cursor: pointer;
}
body.vk-theme .form_border label:has(> input[type="checkbox"]) > input[type="checkbox"] {
  position: absolute; left: 0; top: 4px; margin: 0;
}
/* the registry text inserts <br> between clauses — kill them; spacing comes from list margins */
body.vk-theme .form_border br { display: none; }
body.vk-theme .form_border label li { list-style-position: inside; margin-left: 0; padding-left: 0; }
body.vk-theme .form_border ol,
body.vk-theme .form_border ul { padding-left: 20px; margin: 6px 0 0; }
body.vk-theme .form_border li { margin-bottom: 6px; }
body.vk-theme .form_border a { color: var(--vk-primary); font-weight: 600; }
body.vk-theme .form_border .form-group { margin-bottom: 12px; }
body.vk-theme .form_border input[type="checkbox"] {
  width: 16px; height: 16px; accent-color: var(--vk-primary); vertical-align: -3px; margin: 0 9px 0 0; cursor: pointer;
}
/* submit footer — a clean action row with a top divider: Previous on the left, Proceed on the right */
body.vk-theme .vk-form-actions {
  margin: 26px 0 0; padding-top: 22px; border-top: 1px solid var(--vk-border);
}
body.vk-theme .vk-form-actions [align="center"] {
  display: flex; align-items: center; justify-content: flex-end; gap: 12px; flex-wrap: wrap;
}
body.vk-theme .vk-form-actions a.btn { margin-right: auto; }   /* Previous (a link) → far left */
body.vk-theme .vk-form-actions .btn,
body.vk-theme .vk-form-actions input[type="submit"],
body.vk-theme .vk-form-actions button {
  min-width: 180px; font-size: 14px; font-weight: 600; text-transform: none; letter-spacing: .01em; margin: 0;
}
/* "Previous" (a link) is the secondary action — outline it so "Save and Proceed" stays the primary */
body.vk-theme .vk-form-actions a.btn {
  background: transparent !important; color: var(--vk-primary) !important;
  border: 1px solid var(--vk-primary) !important; box-shadow: none !important;
}
/* Use background-COLOR on hover (not the `background` shorthand, which resets background-repeat to
   `repeat` and tiles the directional arrow SVG across the button). */
body.vk-theme .vk-form-actions a.btn:hover { background-color: color-mix(in srgb, var(--vk-primary) 9%, #fff) !important; }
/* directional cues: ← on Previous (link), → on Save and Proceed (submit). Both drawn as background
   images since an <input type="submit"> can't hold a child icon. */
body.vk-theme .vk-form-actions a.btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%232d2a72' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='19' y1='12' x2='5' y2='12'/%3E%3Cpolyline points='12 19 5 12 12 5'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: left 16px center !important;
  padding-left: 40px;
}
body.vk-theme .vk-form-actions input[type="submit"],
body.vk-theme .vk-form-actions button[type="submit"] {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3Cpolyline points='12 5 19 12 12 19'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 16px center !important;
  padding-right: 40px;
}
/* Reviewer view: "Next"/"Close" is an <a> link (the LAST action), so it must point -> not <-
   (a forward link, unlike "Previous"). Overrides the generic a.btn left-arrow above. */
body.vk-theme .vk-form-actions [align="center"] > a.btn:last-child {
  margin-right: 0 !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%232d2a72' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3Cpolyline points='12 5 19 12 12 19'/%3E%3C/svg%3E") !important;
  background-position: right 16px center !important; background-repeat: no-repeat !important; background-size: 16px 16px !important;
  padding-left: 24px !important; padding-right: 40px !important;
}
/* mobile: stack full-width, primary (Proceed) on top */
@media (max-width: 560px) {
  body.vk-theme .vk-form-actions [align="center"] { flex-direction: column-reverse; gap: 10px; }
  body.vk-theme .vk-form-actions .btn { width: 100%; min-width: 0; margin: 0 !important; }
}

/* ---- Data tables (e.g. the family-members grid) ---- */
body.vk-theme .table { border-color: var(--vk-border); margin-bottom: 0; background: var(--vk-surface); }
body.vk-theme .table thead th,
body.vk-theme .table thead td {                 /* the docs table uses <td> in its <thead> */
  background: #eef0f5; color: var(--vk-muted); font-weight: 600; font-size: 12.5px;
  border: 1px solid var(--vk-border); border-bottom-width: 2px; padding: 10px; vertical-align: middle;
  text-transform: none; white-space: nowrap;
}
body.vk-theme .table td, body.vk-theme .table th { border-color: var(--vk-border); }
body.vk-theme .table td { padding: 7px; vertical-align: middle; }
/* Family-members grid: top-align cells so a row stays aligned when an inline error (.validate_id)
   appears under a Govt. ID No. field, instead of re-centring the other fields in the taller row. */
body.vk-theme #membersTable td { vertical-align: top; }
body.vk-theme #membersTable .validate_id { display: block; font-size: 12px; line-height: 1.3; margin-top: 4px; }
body.vk-theme .table.table-striped tbody tr:nth-of-type(odd) { background: color-mix(in srgb, var(--vk-border) 16%, #fff); }
body.vk-theme .table .form-control { font-size: 13px; padding: 8px 10px; }
body.vk-theme .table .form-control[readonly],
body.vk-theme #membersTable input[readonly] { background: #eef1f5; }

/* ---- Thank-you / confirmation page ---- */
body.vk-theme .vk-success-badge {
  display: inline-flex; align-items: center; justify-content: center; width: 70px; height: 70px;
  border-radius: 50%; background: color-mix(in srgb, var(--vk-success) 14%, #fff); color: var(--vk-success);
  box-shadow: 0 0 0 8px color-mix(in srgb, var(--vk-success) 7%, transparent);
}
/* two-column layout: illustration + message (left), details + actions (right) */
body.vk-theme .vk-ty-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 46px; align-items: center;
  max-width: 1060px; margin: 8px auto 0; text-align: left;
}
/* left = a photo hero panel, same treatment as the landing hero (photo under brand gradients, white text) */
body.vk-theme .vk-ty-hero {
  position: relative; overflow: hidden; color: #fff; border-radius: var(--vk-radius);
  display: flex; flex-direction: column; justify-content: center; gap: 14px;
  padding: 48px 44px; min-height: 430px; box-shadow: 0 18px 44px rgba(20,24,40,.16);
  background-color: var(--vk-primary-700);
  background:
    linear-gradient(180deg, transparent 0%, transparent 55%, color-mix(in srgb, var(--vk-primary-700) 60%, transparent) 100%),
    linear-gradient(90deg,
      color-mix(in srgb, var(--vk-primary-700) 90%, transparent) 0%,
      color-mix(in srgb, var(--vk-primary-700) 66%, transparent) 32%,
      color-mix(in srgb, var(--vk-primary)     36%, transparent) 64%,
      color-mix(in srgb, var(--vk-primary)     10%, transparent) 100%),
    radial-gradient(520px 420px at 99% 4%, color-mix(in srgb, var(--vk-accent) 16%, transparent), transparent 56%),
    var(--vk-hero-image) center/cover no-repeat,
    linear-gradient(157deg, color-mix(in srgb, var(--vk-primary) 88%, #000) 0%, color-mix(in srgb, var(--vk-primary) 52%, #000) 100%);
}
body.vk-theme .vk-ty-hero .vk-thankyou-title { color: #fff !important; }
body.vk-theme .vk-ty-hero .vk-ty-sub { font-size: 16px; line-height: 1.6; color: rgba(255,255,255,.9); margin: 0; }
body.vk-theme .vk-ty-detailhead {
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--vk-muted); margin: 0 0 12px;
}
body.vk-theme .vk-ty-right .table { margin: 0; }
@media (max-width: 860px) {
  body.vk-theme .vk-ty-grid { grid-template-columns: 1fr; gap: 22px; max-width: 520px; }
  body.vk-theme .vk-ty-hero { min-height: 300px; padding: 36px 30px; }
}
body.vk-theme .vk-thankyou-title {
  font-family: var(--vk-font-display); font-weight: 600; color: var(--vk-text);
  font-size: clamp(26px, 3.4vw, 38px); letter-spacing: -.01em; line-height: 1.16;
}
body.vk-theme .vk-thankyou-actions { margin-top: 30px; text-align: center; }
body.vk-theme .vk-thankyou-actions .btn {
  min-width: 210px; margin: 6px; font-size: 14px; font-weight: 600; text-transform: none;
  padding: 12px 24px; border-radius: var(--vk-radius-sm);
}
body.vk-theme .vk-thankyou-actions a.btn-submit:not(.btn-success) {
  background: transparent !important; color: var(--vk-primary) !important; border: 1px solid var(--vk-primary) !important;
}
body.vk-theme .vk-thankyou-actions a.btn-submit:not(.btn-success):hover { background: color-mix(in srgb, var(--vk-primary) 9%, #fff) !important; }
body.vk-theme .vk-thankyou-actions .btn-success {
  background: var(--vk-success) !important; border-color: var(--vk-success) !important; color: #fff !important; box-shadow: var(--vk-shadow-sm);
}

/* ---- Fields ---- */
body.vk-theme .form-group { margin-bottom: 14px; }
body.vk-theme label { font-size: 13px; font-weight: 600; color: var(--vk-text); margin-bottom: 5px; }
body.vk-theme .form-control,
body.vk-theme .select2-container--default .select2-selection--single {
  border: 1px solid var(--vk-border-strong);
  border-radius: var(--vk-radius-sm);
  min-height: 42px; height: auto; padding: 8px 12px;
  font-size: 14px; color: var(--vk-text); background-color: var(--vk-surface);
  transition: border-color var(--vk-transition), box-shadow var(--vk-transition);
}
body.vk-theme .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 24px; padding-left: 0; }
body.vk-theme .select2-container--default .select2-selection--single .select2-selection__arrow { height: 40px; }
body.vk-theme .form-control:focus,
body.vk-theme .select2-container--default.select2-container--focus .select2-selection--single {
  border-color: var(--vk-primary);
  box-shadow: var(--vk-focus-ring);
  outline: none;
}
body.vk-theme .form-control::placeholder { color: var(--vk-muted); opacity: .85; }
body.vk-theme .form-control[readonly] { background: #eef1f5; color: var(--vk-muted); }

/* ---- Error states ---- */
body.vk-theme .text-danger { color: var(--vk-danger) !important; }
body.vk-theme .form-control.is-invalid,
body.vk-theme .form-control.error,
body.vk-theme .form-control.input-error { border-color: var(--vk-danger); box-shadow: 0 0 0 3px rgba(214,69,80,.14); }
body.vk-theme .fs-12 { font-size: 12px; }

/* ---- Application summary header (App Number / Applicant Name, above the steps card) ---- */
body.vk-theme .jumbotron.content-section { padding-top: 22px !important; }   /* tighten the legacy 50px top gap */
body.vk-theme .name_number {
  margin: 2px 0 8px; font-family: var(--vk-font-sans); font-size: 16px; font-weight: 700;
  color: var(--vk-text); line-height: 1.4; letter-spacing: -.005em;
}
body.vk-theme .name_number b {                 /* the "Application Number :" / "Applicant Name :" label */
  display: block; font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em;
  color: var(--vk-muted); margin-bottom: 2px;
}
body.vk-theme .name_number br { display: none; }

/* ---- Status pills ---- */
body.vk-theme .completed_application,
body.vk-theme .pending_appication { display: inline-block; padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: 700; margin: 0; }
body.vk-theme .completed_application { background: rgba(31,157,107,.12); color: var(--vk-success); }
body.vk-theme .pending_appication { background: rgba(232,163,23,.14); color: #9a6b06; }

/* ---- Loader (replaces the legacy dark-bar + colour-cycling blue square + orbiting dots) ---- */
body.vk-theme .loading {
  position: fixed; inset: 0; width: 100%; height: 100%; margin: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(20, 24, 40, .45); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
body.vk-theme .loading::before { content: none !important; background: none !important; }  /* kill legacy dark radial */
body.vk-theme .loader {
  position: relative !important; top: auto !important; left: auto !important; transform: none !important;
  width: auto !important; height: auto !important; min-width: 210px; max-width: 340px; margin: 0 !important;
  display: block !important; text-align: center;
  background: var(--vk-surface); border-radius: 16px; padding: 26px 30px; box-shadow: 0 20px 50px rgba(0,0,0,.28);
}
body.vk-theme .loader .circle { display: none !important; }   /* drop the legacy orbiting dots */
/* reuse the legacy .bg div as a clean brand ring spinner; block flow → spinner above, text below */
body.vk-theme .loader .bg {
  display: block !important; position: static !important;
  width: 44px; height: 44px; margin: 0 auto 14px !important; border-radius: 50%; background: none !important;
  border: 4px solid color-mix(in srgb, var(--vk-primary) 16%, #fff); border-top-color: var(--vk-primary);
  animation: vk-spin .8s linear infinite !important; box-shadow: none !important;
}
body.vk-theme .loader::after { content: 'Please wait…'; display: block; font-size: 13.5px; font-weight: 600; color: var(--vk-muted); }
/* when a live message is present (e.g. the documents upload "Uploading… X%"), show it in the card
   instead of the static text */
body.vk-theme .loader:has(#loader-message)::after { content: none !important; }
body.vk-theme .loader #loader-message {
  position: static !important;   /* legacy form_new.css sets this absolute → pulled it out of flow */
  margin: 0 !important; padding: 0 !important; width: 100%; text-align: center;
  font-size: 13.5px; font-weight: 600; line-height: 1.45; color: var(--vk-muted) !important;
}
body.vk-theme .loader .vk-progress {
  width: 210px; max-width: 100%; height: 6px; margin: 12px auto 0;
  background: color-mix(in srgb, var(--vk-primary) 12%, #eef0f5); border-radius: 999px; overflow: hidden;
}
body.vk-theme .loader .vk-progress > span {
  display: block; height: 100%; width: 0; border-radius: 999px; background: var(--vk-primary); transition: width .2s ease;
}
@keyframes vk-spin { to { transform: rotate(360deg); } }

/* ---- Buttons ---- */
body.vk-theme .btn {
  border-radius: var(--vk-radius-sm); font-weight: 600; padding: 9px 18px;
  transition: background var(--vk-transition), color var(--vk-transition), border-color var(--vk-transition), box-shadow var(--vk-transition), transform var(--vk-transition);
}
body.vk-theme .btn:active { transform: translateY(1px); }
body.vk-theme .btn-submit, body.vk-theme .btn-primary {
  background: var(--vk-primary); border: 1px solid var(--vk-primary); color: #fff;
}
body.vk-theme .btn-submit:hover, body.vk-theme .btn-primary:hover {
  background: var(--vk-primary-600); border-color: var(--vk-primary-600); color: #fff; box-shadow: var(--vk-shadow);
}
body.vk-theme .btn-success { background: var(--vk-success); border-color: var(--vk-success); color:#fff; }
body.vk-theme .btn-info { background: var(--vk-accent); border-color: var(--vk-accent); color:#fff; }
body.vk-theme .btn-info:hover, body.vk-theme .btn-success:hover { filter: brightness(.96); box-shadow: var(--vk-shadow); }
body.vk-theme .btn-outline-primary { color: var(--vk-primary); border-color: var(--vk-primary); }
body.vk-theme .btn-outline-primary:hover { background: var(--vk-primary); color:#fff; }
body.vk-theme a.text-primary { color: var(--vk-primary) !important; }

/* ---- Modals (smooth open/close) ---- */
body.vk-theme .modal.fade .modal-dialog { transition: transform var(--vk-transition), opacity var(--vk-transition); transform: translateY(-14px); opacity: 0; }
body.vk-theme .modal.show .modal-dialog { transform: none; opacity: 1; }
body.vk-theme .modal-content { border: 0; border-radius: var(--vk-radius); box-shadow: var(--vk-shadow-md); overflow: hidden; }
body.vk-theme .modal-header { border-bottom: 1px solid var(--vk-border); }
body.vk-theme .modal-footer { border-top: 1px solid var(--vk-border); }

/* ---- Loading overlay (enhances the existing .loading element; does NOT touch the inner .loader animation) ---- */
body.vk-theme .loading {
  position: fixed; inset: 0; z-index: 99999;
  background: rgba(255,255,255,.72); backdrop-filter: blur(2px);
  display: flex; align-items: center; justify-content: center;
}
/* reusable spinner + button busy-state (opt-in via classes; no behaviour change) */
body.vk-theme .vk-spinner { width: 42px; height: 42px; border-radius: 50%; border: 4px solid var(--vk-border); border-top-color: var(--vk-primary); animation: vk-spin .7s linear infinite; }
@keyframes vk-spin { to { transform: rotate(360deg); } }
body.vk-theme .btn.is-busy { position: relative; color: transparent !important; pointer-events: none; }
body.vk-theme .btn.is-busy::after { content: ''; position: absolute; inset: 0; margin: auto; width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(255,255,255,.55); border-top-color: #fff; animation: vk-spin .7s linear infinite; }

/* ---- Mobile responsive ---- */
@media (max-width: 768px) {
  body.vk-theme .submit-data { padding: 16px 14px 20px; border-radius: var(--vk-radius-sm); }
  /* pills: tighter padding + horizontal scroll so all steps stay reachable on small screens */
  body.vk-theme .breadcrumb { gap: 3px; padding: 5px; }
  body.vk-theme .breadcrumb li a { padding: 9px 13px; font-size: 12.5px; }
  body.vk-theme .form_title { font-size: 15px; }
}

/* ============================================================================
   Landing / "Retrieve Your Application" — FULL-PAGE split auth UI (hero | form).
   Functional hooks (.check-form, mobile_number, .check-application,
   .registration-btn, .otp-verify, .table-div, .loading) are untouched.
   ============================================================================ */
/* full-page: hide the shared navbar + footer copyright on this screen only.
   NOTE: application/includes/navbar.php never closes its <header id="header-wrap">,
   so the entire page nests INSIDE it — we must hide the <nav>, NOT the wrapper. */
body.vk-landing #header-wrap > nav,
body.vk-landing #header-wrap .navbar,
body.vk-landing #copyright { display: none !important; }
body.vk-landing #header-wrap { display: block !important; background: none !important; box-shadow: none !important; border: 0 !important; padding: 0 !important; margin: 0 !important; }
body.vk-landing { background: var(--vk-primary-700); }
body.vk-landing .vk-auth { min-height: 100vh; }
body.vk-landing .vk-auth__grid { display: grid; grid-template-columns: 1.12fr 0.88fr; min-height: 100vh; }
/* grid items default to min-width:auto and won't shrink below content — forces mobile overflow. */
body.vk-theme .vk-auth__hero,
body.vk-theme .vk-auth__panel { min-width: 0; }

/* ---------- LEFT hero ---------- */
body.vk-theme .vk-auth__hero {
  position: relative; overflow: hidden; color: #fff;
  display: flex; flex-direction: column; justify-content: space-between; padding: 64px 64px 54px;
  /* Photo base (var, swappable) under a brand-tint overlay. Both the overlay AND the
     fallback mesh derive ENTIRELY from the brand colour, so the panel re-themes per
     institution. With --vk-hero-image:none the gradients alone render a clean mesh. */
  background-color: var(--vk-primary-700);
  background:
    /* vertical: only a soft bottom darken so the foot/copyright stays legible */
    linear-gradient(180deg, transparent 0%, transparent 60%,
      color-mix(in srgb, var(--vk-primary-700) 58%, transparent) 100%),
    /* horizontal: strong brand tint on the far left (under the text), clearing to let the
       photo read across the right half — keeps the subject visible instead of muddy */
    linear-gradient(90deg,
      color-mix(in srgb, var(--vk-primary-700) 88%, transparent) 0%,
      color-mix(in srgb, var(--vk-primary-700) 66%, transparent) 30%,
      color-mix(in srgb, var(--vk-primary)     34%, transparent) 60%,
      color-mix(in srgb, var(--vk-primary)     10%, transparent) 100%),
    /* warm accent glow top-right + the photo itself */
    radial-gradient(560px 460px at 99% 6%, color-mix(in srgb, var(--vk-accent) 16%, transparent), transparent 56%),
    var(--vk-hero-image) right center/cover no-repeat,
    linear-gradient(157deg,
      color-mix(in srgb, var(--vk-primary) 88%, #000) 0%,
      color-mix(in srgb, var(--vk-primary) 60%, #000) 54%,
      color-mix(in srgb, var(--vk-primary) 46%, #000) 100%);
}
/* fine film-grain for depth (keeps the gradient from looking flat) */
body.vk-theme .vk-auth__hero::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: .045; mix-blend-mode: overlay;
}
body.vk-theme .vk-auth__hero::after { content: none; }
/* type roles: clean Inter UI everywhere, scholarly serif on the two headlines only */
body.vk-theme .vk-auth { font-family: var(--vk-font-sans); }
body.vk-theme .vk-auth__form .form-control,
body.vk-theme .vk-auth__form .btn,
body.vk-theme .vk-auth__form label { font-family: var(--vk-font-sans); }
body.vk-theme .vk-auth__title,
body.vk-theme .vk-auth__heading { font-family: var(--vk-font-display); font-weight: 600; }
body.vk-theme .vk-auth__hero > * { position: relative; z-index: 1; }
body.vk-theme .vk-auth__hero-top { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
body.vk-theme .vk-auth__logo { display: inline-flex; background: #fff; border-radius: 14px; padding: 11px 18px; box-shadow: var(--vk-shadow-md); }
body.vk-theme .vk-auth__logo img { height: 48px; width: auto; max-width: 240px; object-fit: contain; display: block; }
body.vk-theme .vk-auth__hero-art { position: absolute; right: 3.5%; top: 50%; transform: translateY(-50%); width: min(33%, 350px); opacity: .92; pointer-events: none; z-index: 0; }
body.vk-theme .vk-auth__badge { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; padding: 7px 13px; border-radius: 999px; color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22); }
body.vk-theme .vk-auth__hero-mid { max-width: 560px; }
/* signature: trilingual welcome — true to the program (runs in en/kn/kok), accent-tinted dots */
body.vk-theme .vk-auth__kicker { display: flex; flex-wrap: wrap; align-items: center; gap: 0; margin: 0 0 18px; font-size: 13.5px; font-weight: 600; letter-spacing: .02em; color: rgba(255,255,255,.82); }
body.vk-theme .vk-auth__kicker span { white-space: nowrap; }
body.vk-theme .vk-auth__kicker span + span::before { content: '•'; color: var(--vk-accent); margin: 0 11px; font-size: 11px; vertical-align: middle; }
body.vk-theme .vk-auth__title { font-size: clamp(34px, 3.7vw, 52px); line-height: 1.08; font-weight: 600; letter-spacing: -.012em; margin: 0 0 18px; color: #fff; }
body.vk-theme .vk-auth__lead { font-size: 16px; line-height: 1.65; color: rgba(255,255,255,.82); margin: 0 0 30px; max-width: 470px; }
body.vk-theme .vk-auth__stats { display: flex; gap: 34px; flex-wrap: wrap; }
body.vk-theme .vk-auth__stats > div { display: flex; flex-direction: column; }
body.vk-theme .vk-auth__stats strong { font-size: 22px; font-weight: 800; color: #fff; line-height: 1.1; }
body.vk-theme .vk-auth__stats span { font-size: 12px; color: rgba(255,255,255,.62); margin-top: 4px; }
body.vk-theme .vk-auth__hero-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; font-size: 12.5px; color: rgba(255,255,255,.5); }
body.vk-theme .vk-auth__poweredby { display: inline-flex; align-items: center; gap: 10px; font-size: 13px; color: rgba(255,255,255,.9); white-space: nowrap; }
body.vk-theme .vk-auth__poweredby img { height: 46px; background: #fff; border-radius: 9px; padding: 6px 11px; }

/* Hero text MUST stay solid white over the photo. main_new.css colours <p> dark with
   !important, so the kicker/lead need !important + high specificity to win. A soft shadow
   keeps every line legible even where the photo is light. */
body.vk-theme .vk-auth__hero .vk-auth__kicker,
body.vk-theme .vk-auth__hero .vk-auth__kicker span,
body.vk-theme .vk-auth__hero .vk-auth__title,
body.vk-theme .vk-auth__hero .vk-auth__lead,
body.vk-theme .vk-auth__hero .vk-auth__stats strong { color: #fff !important; }
body.vk-theme .vk-auth__hero .vk-auth__stats span,
body.vk-theme .vk-auth__hero .vk-auth__hero-foot,
body.vk-theme .vk-auth__hero .vk-auth__hero-foot span,
body.vk-theme .vk-auth__hero .vk-auth__poweredby { color: rgba(255,255,255,.92) !important; }
body.vk-theme .vk-auth__hero-mid,
body.vk-theme .vk-auth__hero-foot { text-shadow: 0 1px 3px rgba(0,0,0,.34); }

/* ---------- RIGHT form panel ---------- */
body.vk-theme .vk-auth__panel { position: relative; background: var(--vk-surface); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 48px 56px; }
body.vk-theme .vk-auth__lang { position: absolute; top: 22px; right: 26px; display: flex; align-items: center; gap: 6px; color: var(--vk-muted); }
body.vk-theme .vk-auth__lang select { border: 1px solid var(--vk-border); border-radius: 8px; padding: 5px 8px; font-size: 13px; background: var(--vk-surface); color: var(--vk-text); }
body.vk-theme .vk-auth__form { width: 100%; max-width: 400px; }
/* thank-you panel needs a touch more width for the details table + two actions */
body.vk-theme .vk-ty-form { max-width: 480px; }
body.vk-theme .vk-ty-form .vk-auth__heading { margin-bottom: 8px; }
body.vk-theme .vk-ty-form .vk-ty-detailhead { margin: 6px 0 12px; }
body.vk-theme .vk-ty-form .table { margin: 0 0 20px; }
body.vk-theme .vk-ty-form .vk-thankyou-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 0; text-align: left; }
body.vk-theme .vk-ty-form .vk-thankyou-actions .btn { flex: 1 1 0; min-width: 150px; margin: 0; }
body.vk-theme .vk-ty-form .vk-auth__sub { margin-bottom: 22px; }
/* success eyebrow on the hero (left), in place of the landing's welcome kicker */
body.vk-theme .vk-ty-kicker {
  display: inline-flex; align-items: center; gap: 7px; margin: 0 0 18px;
  background: rgba(255,255,255,.22); border: 1px solid rgba(255,255,255,.28); color: #fff !important;
  padding: 7px 15px; border-radius: 999px; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
  font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
}
body.vk-theme .vk-ty-kicker svg { color: #6ff0b6; }
/* (2) the message can drift over lighter parts of the photo — shadow keeps it legible; (3) the
   thank-you title is a longer phrase than the landing's, so dial the scale down a touch */
body.vk-theme .vk-ty-hero .vk-auth__title { font-size: clamp(30px, 3.1vw, 44px); text-shadow: 0 2px 22px rgba(8,10,28,.45); }
body.vk-theme .vk-ty-hero .vk-auth__lead { color: rgba(255,255,255,.94); text-shadow: 0 2px 18px rgba(8,10,28,.55); max-width: 440px; }

/* (1) "What happens next" — fills the right panel + tells the applicant what to expect */
body.vk-theme .vk-ty-next { margin: 0 0 22px; }
body.vk-theme .vk-ty-next__head { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--vk-muted); margin: 0 0 13px; }
body.vk-theme .vk-ty-next__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 13px; }
body.vk-theme .vk-ty-next__steps li { display: flex; align-items: flex-start; gap: 12px; }
body.vk-theme .vk-ty-next__num {
  flex: none; width: 26px; height: 26px; border-radius: 50%; font-size: 13px; font-weight: 700;
  background: color-mix(in srgb, var(--vk-primary) 12%, #fff); color: var(--vk-primary);
  display: flex; align-items: center; justify-content: center;
}
body.vk-theme .vk-ty-next__steps li > div { display: flex; flex-direction: column; gap: 1px; }
body.vk-theme .vk-ty-next__steps strong { font-size: 14px; font-weight: 600; color: var(--vk-text); line-height: 1.3; }
body.vk-theme .vk-ty-next__steps span { font-size: 12.5px; color: var(--vk-muted); line-height: 1.42; }
/* the global .submit-data card styling must NOT box the buttons on the landing */
body.vk-theme .vk-auth__form .submit-data { background: none; border: 0; border-radius: 0; box-shadow: none; padding: 0; }
body.vk-theme .vk-auth__heading { font-size: 30px; font-weight: 600; color: var(--vk-text); margin: 0 0 6px; letter-spacing: -.01em; }
body.vk-theme .vk-auth__sub { font-size: 14.5px; color: var(--vk-muted); margin: 0 0 26px; }
body.vk-theme .vk-auth__notice { display: flex; align-items: center; gap: 8px; background: rgba(232,163,23,.12); color: #8a5a00; border: 1px solid rgba(232,163,23,.32); border-radius: 10px; padding: 10px 14px; font-size: 13.5px; margin-bottom: 18px; }

body.vk-theme .vk-auth__form .vk-field { margin-bottom: 18px; }
body.vk-theme .vk-auth__form .vk-field > label { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--vk-muted); margin-bottom: 8px; }
body.vk-theme .vk-auth__form .vk-field > label sup { color: var(--vk-accent); }
body.vk-theme .vk-input { position: relative; }
body.vk-theme .vk-input > svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--vk-muted); }
body.vk-theme .vk-input .form-control { width: 100%; height: 50px; padding: 10px 14px 10px 44px; border: 1px solid var(--vk-border-strong); border-radius: 12px; font-size: 15px; background: #f7f9fc; color: var(--vk-text); transition: border-color var(--vk-transition), box-shadow var(--vk-transition), background var(--vk-transition); }
body.vk-theme .vk-input .form-control:focus { border-color: var(--vk-primary); box-shadow: var(--vk-focus-ring); background: #fff; outline: none; }
body.vk-theme .vk-input .form-control:disabled,
body.vk-theme .vk-input .form-control[readonly] { background: #eef1f5; color: var(--vk-muted); cursor: not-allowed; }
body.vk-theme .vk-link { display: inline-block; margin-top: 9px; font-size: 13px; color: var(--vk-primary) !important; text-decoration: none; }
body.vk-theme .vk-link:hover { text-decoration: underline; }

/* primary CTA */
body.vk-theme .vk-auth__form .check-application { width: 100%; height: 50px; margin-top: 6px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 12px; font-size: 15px; font-weight: 700; color: #fff; background: linear-gradient(180deg, var(--vk-primary-600), var(--vk-primary)); box-shadow: 0 8px 18px color-mix(in srgb, var(--vk-primary) 30%, transparent); transition: filter var(--vk-transition), transform var(--vk-transition), box-shadow var(--vk-transition); }
body.vk-theme .vk-auth__form .check-application:hover:not(:disabled) { filter: brightness(1.07); box-shadow: 0 10px 24px color-mix(in srgb, var(--vk-primary) 38%, transparent); color: #fff; }
body.vk-theme .vk-auth__form .check-application:active:not(:disabled) { transform: translateY(1px); }
body.vk-theme .vk-auth__form .check-application:disabled { background: #c9ccd6; box-shadow: none; cursor: not-allowed; }

/* divider + secondary */
body.vk-theme .vk-auth__divider { display: flex; align-items: center; gap: 14px; margin: 26px 0 18px; color: var(--vk-muted); font-size: 13px; }
body.vk-theme .vk-auth__divider::before, body.vk-theme .vk-auth__divider::after { content: ''; flex: 1; height: 1px; background: var(--vk-border); }
body.vk-theme .vk-auth__form .registration-btn,
body.vk-theme .vk-auth__form .new-register-div .btn { display: flex; width: 100%; height: 48px; align-items: center; justify-content: center; border: 1.5px solid var(--vk-border-strong); border-radius: 12px; background: #fff; color: var(--vk-primary); font-size: 14.5px; font-weight: 700; text-decoration: none; transition: border-color var(--vk-transition), background var(--vk-transition), color var(--vk-transition); }
body.vk-theme .vk-auth__form .registration-btn:hover { border-color: var(--vk-primary); background: var(--vk-primary); color: #fff; }

/* empty injected containers must NOT reserve vertical space (kills the dead gap) */
body.vk-theme .vk-auth__form .e-msg:empty,
body.vk-theme .vk-auth__form .table-div:empty,
body.vk-theme .vk-auth__form .check-my-entry-error:empty { margin: 0; padding: 0; }
body.vk-theme .vk-auth__form .check-my-entry-error:not(:empty) { display: block; margin-top: 8px; font-size: 13px; line-height: 1.45; }

/* ============================================================================
   Retrieved-application result — injected by file-handling.js into .table-div.
   That markup ships a hardcoded grey <thead> + btn-success/btn-primary/btn-sm
   soup; these overrides re-skin it to the theme without touching the JS.
   ============================================================================ */
body.vk-theme .vk-auth__form .table-div { width: 100%; margin-top: 6px; }
body.vk-theme .vk-auth__form .table-div table {
  width: 100%; border-collapse: separate; border-spacing: 0;
  border: 1px solid var(--vk-border); border-radius: var(--vk-radius-sm);
  overflow: hidden; font-size: 13.5px; background: var(--vk-surface);
}
body.vk-theme .vk-auth__form .table-div thead { background: var(--vk-surface-2) !important; }
body.vk-theme .vk-auth__form .table-div thead th {
  padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--vk-border);
  color: var(--vk-muted); font-weight: 700; font-size: 11px;
  text-transform: uppercase; letter-spacing: .04em;
}
body.vk-theme .vk-auth__form .table-div tbody td {
  padding: 12px; border-bottom: 1px solid var(--vk-border);
  background: var(--vk-surface) !important; color: var(--vk-text); vertical-align: middle;
}
body.vk-theme .vk-auth__form .table-div tbody tr:last-child td { border-bottom: 0; }

/* action buttons inside the result table (View / Apply for this year) */
body.vk-theme .vk-auth__form .table-div .btn-sm {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 7px 13px; border-radius: 8px; border: 1px solid transparent;
  font-size: 12.5px; font-weight: 600; text-decoration: none; white-space: nowrap;
  transition: background var(--vk-transition), border-color var(--vk-transition), color var(--vk-transition);
}
body.vk-theme .vk-auth__form .table-div .btn-primary { background: var(--vk-primary) !important; border-color: var(--vk-primary) !important; color: #fff !important; }
body.vk-theme .vk-auth__form .table-div .btn-primary:hover { background: var(--vk-primary-600) !important; border-color: var(--vk-primary-600) !important; }
body.vk-theme .vk-auth__form .table-div .btn-success { background: var(--vk-success) !important; border-color: var(--vk-success) !important; color: #fff !important; }
body.vk-theme .vk-auth__form .table-div .btn-success:hover { filter: brightness(.96); }

/* footer: two "start a new registration" actions — one solid, one outline, both full width */
body.vk-theme .vk-auth__form .table-div tfoot td { background: var(--vk-surface-2) !important; padding: 14px 12px 22px; }
body.vk-theme .vk-auth__form .table-div { margin-bottom: 18px; }
body.vk-theme .vk-auth__form .table-div tfoot .btn {
  display: block; width: 100%; height: auto; margin: 0 0 8px;
  padding: 11px 14px; border-radius: 10px; font-size: 13.5px; font-weight: 700; white-space: normal;
}
body.vk-theme .vk-auth__form .table-div tfoot .new-registration-btn {
  background: var(--vk-primary) !important; border: 1px solid var(--vk-primary) !important; color: #fff !important;
  margin-bottom: 15px !important;
}
body.vk-theme .vk-auth__form .table-div tfoot .new-registration-btn:hover { background: var(--vk-primary-600) !important; border-color: var(--vk-primary-600) !important; }
body.vk-theme .vk-auth__form .table-div tfoot .registration-other-number-btn {
  background: var(--vk-surface) !important; border: 1.5px solid var(--vk-border-strong) !important;
  color: var(--vk-primary) !important; margin: 0 !important;
}
body.vk-theme .vk-auth__form .table-div tfoot .registration-other-number-btn:hover { border-color: var(--vk-primary) !important; background: var(--vk-primary) !important; color: #fff !important; }

/* keyboard focus visibility (quality floor) — clear ring on landing controls */
body.vk-theme .vk-auth__form .check-application:focus-visible,
body.vk-theme .vk-auth__form .registration-btn:focus-visible,
body.vk-theme .vk-auth__form .vk-link:focus-visible,
body.vk-theme .vk-auth__lang select:focus-visible { outline: 2px solid var(--vk-primary); outline-offset: 2px; }

/* respect reduced-motion: drop decorative transitions, keep functional spinners */
@media (prefers-reduced-motion: reduce) {
  body.vk-theme *, body.vk-theme *::before, body.vk-theme *::after { transition-duration: .01ms !important; animation: none !important; }
  body.vk-theme .loader .bg { animation: vk-spin .9s linear infinite !important; }  /* keep the functional spinner */
}

/* responsive: stack; hero becomes a top band */
@media (max-width: 880px) {
  body.vk-landing .vk-auth { min-height: 0; }
  body.vk-landing .vk-auth__grid { grid-template-columns: 1fr; min-height: 0; }
  body.vk-theme .vk-auth__hero { min-height: 360px; justify-content: flex-start; gap: 0; padding: 26px 26px 20px; background-position: center 38%; }
  body.vk-theme .vk-auth__hero-top { position: absolute; top: 22px; left: 26px; right: 26px; }
  body.vk-theme .vk-auth__logo { padding: 9px 14px; }
  body.vk-theme .vk-auth__logo img { height: 40px; }
  body.vk-theme .vk-auth__hero-mid { margin-top: 64px; }
  body.vk-theme .vk-auth__kicker { font-size: 12px; margin-bottom: 12px; }
  body.vk-theme .vk-auth__title { font-size: clamp(27px, 7vw, 34px); margin: 0 0 16px; }
  body.vk-theme .vk-auth__lead { display: none; }
  /* the thank-you message IS the point — keep it on mobile (landing hides its lead) + give room */
  body.vk-theme .vk-ty-hero .vk-auth__lead { display: block; font-size: 14px; margin-bottom: 18px; }
  body.vk-theme .vk-ty-hero { min-height: 470px; }
  /* keep "Powered by" visible on mobile — anchored to the bottom of the band */
  body.vk-theme .vk-auth__hero-foot { display: flex; margin-top: auto; justify-content: center; font-size: 11.5px; }
  body.vk-theme .vk-auth__hero-foot > span:first-child { display: none; }   /* drop the long copyright line on small screens */
  body.vk-theme .vk-auth__poweredby img { height: 40px; }
  body.vk-theme .vk-auth__stats { gap: 22px; }
  body.vk-theme .vk-auth__panel { min-height: 0; justify-content: flex-start; align-items: stretch; padding: 30px 22px 44px; }
  body.vk-theme .vk-auth__lang { position: static; justify-content: flex-end; margin-bottom: 14px; }
  body.vk-theme .vk-auth__form { max-width: 100%; margin: 0 auto; }
}
@media (max-width: 480px) {
  body.vk-theme .vk-auth__hero { min-height: 330px; padding: 22px 20px 18px; }
  body.vk-theme .vk-auth__hero-top { top: 18px; left: 20px; right: 20px; }
  body.vk-theme .vk-auth__logo img { height: 34px; }
  body.vk-theme .vk-auth__hero-mid { margin-top: 48px; }
  body.vk-theme .vk-auth__kicker { font-size: 11px; margin-bottom: 10px; }
  body.vk-theme .vk-auth__title { font-size: 26px; }
  body.vk-theme .vk-auth__badge { font-size: 11px; padding: 6px 10px; }
  body.vk-theme .vk-auth__stats { gap: 16px; }
  body.vk-theme .vk-auth__stats strong { font-size: 17px; }
  body.vk-theme .vk-auth__heading { font-size: 23px; }
  body.vk-theme .vk-auth__panel { padding: 26px 16px 38px; }
}

/* ============================================================================
   Instruction / document page (instruction.php) — one elegant reading card.
   Navbar goes white automatically (navbar.php reads --vk-navbar-bg).
   Functional hooks (.verify_mobile modal trigger, document query, .loading) untouched.
   ============================================================================ */
body.vk-theme .vk-doc {
  background: var(--vk-bg); padding: 40px 16px 72px;
  /* pin to Inter — otherwise content inherits main_new.css's 'Lato' (no loaded source → invisible text) */
  font-family: var(--vk-font-sans);
}
body.vk-theme .vk-doc__wrap { max-width: 880px; margin: 0 auto; }
body.vk-theme .vk-doc__card {
  background: var(--vk-surface); border: 1px solid var(--vk-border);
  border-radius: var(--vk-radius); box-shadow: var(--vk-shadow);
  padding: 44px clamp(20px, 4vw, 52px) 36px;
}

/* head */
body.vk-theme .vk-doc__head { margin-bottom: 26px; padding-bottom: 22px; border-bottom: 1px solid var(--vk-border); }
body.vk-theme .vk-doc__eyebrow {
  display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
  color: var(--vk-primary); background: color-mix(in srgb, var(--vk-primary) 9%, transparent);
  padding: 5px 12px; border-radius: 999px; margin-bottom: 14px;
}
/* eyebrow row: pill on the left, language switcher on the right */
body.vk-theme .vk-doc__eyebrow-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
body.vk-theme .vk-doc__eyebrow-row .vk-doc__eyebrow { margin-bottom: 0; }
body.vk-theme .vk-doc__lang { display: inline-flex; align-items: center; gap: 6px; color: var(--vk-muted); }
body.vk-theme .vk-doc__lang select { border: 1px solid var(--vk-border-strong); border-radius: 8px; padding: 6px 10px; font-size: 13.5px; background: var(--vk-surface); color: var(--vk-text); cursor: pointer; }
body.vk-theme .vk-doc__lang select:focus-visible { outline: 2px solid var(--vk-primary); outline-offset: 1px; }
/* Form-header language switcher (#4): SHOWN on the multi-step form pages so applicants who enter via
   Retrieve Application — which bypasses the instruction page — can still switch language (session-backed,
   via the existing navbar switcher). Hidden only on the instruction page (its own in-card switcher) and on
   the landing/confirmation pages (vk-landing; page-header context has no per-page set_lang handling). */
body.vk-instruction-page #header-wrap nav .vk-navbar-lang,
body.vk-landing #header-wrap nav .vk-navbar-lang { display: none !important; }
/* themed navbar switcher: subtle focus + hover polish (shared markup, neutral by default) */
body.vk-theme .vk-navbar-lang__select:focus-visible { outline: 2px solid var(--vk-primary); outline-offset: 1px; }
body.vk-theme .vk-navbar-lang__select:hover { border-color: var(--vk-primary) !important; }
body.vk-theme .vk-doc__title {
  font-family: var(--vk-font-display); font-weight: 600; line-height: 1.12; letter-spacing: -.01em;
  font-size: clamp(27px, 3.2vw, 40px); color: var(--vk-text); margin: 0;
}

/* reading content (HTML comes from the translator: p / ol / li / strong / a) */
body.vk-theme .vk-doc__content { font-size: 15.5px; line-height: 1.75; color: var(--vk-text); }
body.vk-theme .vk-doc__content > *:last-child { margin-bottom: 0; }
body.vk-theme .vk-doc__content p { margin: 0 0 16px; color: var(--vk-text); }
body.vk-theme .vk-doc__content strong { font-weight: 700; color: var(--vk-text); }
body.vk-theme .vk-doc__content a { color: var(--vk-primary); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
body.vk-theme .vk-doc__content a:hover { color: var(--vk-primary-600); }
/* numbered eligibility list — reset the translator's inline list-style/padding, draw themed markers */
body.vk-theme .vk-doc__content ol { list-style: none !important; padding-left: 0 !important; margin: 6px 0 20px; counter-reset: vk-li; }
body.vk-theme .vk-doc__content ol > li {
  list-style: none !important; position: relative; padding-left: 44px; margin-bottom: 14px; color: var(--vk-text);
}
body.vk-theme .vk-doc__content ol > li::before {
  counter-increment: vk-li; content: counter(vk-li);
  position: absolute; left: 0; top: 0; width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center; border-radius: 50%;
  background: color-mix(in srgb, var(--vk-primary) 11%, transparent); color: var(--vk-primary);
  font-family: var(--vk-font-sans); font-size: 13px; font-weight: 700; line-height: 1;
}
body.vk-theme .vk-doc__content ul { margin: 6px 0 18px; padding-left: 20px; }
body.vk-theme .vk-doc__content ul > li { margin-bottom: 8px; }

/* document templates table */
body.vk-theme .vk-doc__docs { margin-top: 30px; }
body.vk-theme .vk-doc__docs-label { font-size: 13px; font-weight: 700; color: var(--vk-muted); text-transform: uppercase; letter-spacing: .04em; margin: 0 0 10px; }
body.vk-theme .vk-doc__table-wrap { width: 100%; overflow-x: auto; }
body.vk-theme .vk-doc__table {
  width: 100%; border-collapse: separate; border-spacing: 0; font-size: 14px;
  border: 1px solid var(--vk-border); border-radius: var(--vk-radius-sm); overflow: hidden; background: var(--vk-surface);
}
body.vk-theme .vk-doc__table thead th {
  text-align: left; background: var(--vk-surface-2); color: var(--vk-muted);
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: 11px 16px; border-bottom: 1px solid var(--vk-border);
}
body.vk-theme .vk-doc__table tbody td { padding: 12px 16px; border-bottom: 1px solid var(--vk-border); color: var(--vk-text); vertical-align: middle; }
body.vk-theme .vk-doc__table tbody tr:last-child td { border-bottom: 0; }
body.vk-theme .vk-doc__table tbody td:last-child { width: 130px; text-align: center; }
body.vk-theme .vk-doc__file { display: inline-flex; align-items: center; justify-content: center; padding: 6px 14px; border: 1px solid var(--vk-border); border-radius: 8px; transition: border-color var(--vk-transition), background var(--vk-transition); }
body.vk-theme .vk-doc__file:hover { border-color: var(--vk-primary); background: color-mix(in srgb, var(--vk-primary) 6%, transparent); }
body.vk-theme .vk-doc__file img { height: 30px !important; width: auto !important; display: block; }

/* actions — back (ghost) + start (primary), split to the edges */
body.vk-theme .vk-doc__actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: space-between; margin-top: 32px; padding-top: 26px; border-top: 1px solid var(--vk-border); }
body.vk-theme .vk-doc__back, body.vk-theme .vk-doc__start { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; cursor: pointer; transition: filter var(--vk-transition), border-color var(--vk-transition), background var(--vk-transition), color var(--vk-transition), box-shadow var(--vk-transition), transform var(--vk-transition); }
body.vk-theme .vk-doc__back {
  padding: 12px 20px; border-radius: 10px; border: 1.5px solid var(--vk-border-strong);
  background: var(--vk-surface); color: var(--vk-text); font-weight: 600; font-size: 14.5px;
}
body.vk-theme .vk-doc__back:hover { border-color: var(--vk-primary); color: var(--vk-primary); }
body.vk-theme .vk-doc__start {
  padding: 13px 26px; border-radius: 10px; border: 0; color: #fff; font-weight: 700; font-size: 15px;
  background: linear-gradient(180deg, var(--vk-primary-600), var(--vk-primary));
  box-shadow: 0 8px 18px color-mix(in srgb, var(--vk-primary) 28%, transparent);
}
body.vk-theme .vk-doc__start:hover { filter: brightness(1.07); color: #fff; box-shadow: 0 10px 24px color-mix(in srgb, var(--vk-primary) 36%, transparent); }
body.vk-theme .vk-doc__start:active { transform: translateY(1px); }
body.vk-theme .vk-doc__back:focus-visible, body.vk-theme .vk-doc__start:focus-visible { outline: 2px solid var(--vk-primary); outline-offset: 2px; }

/* DPDP Step 2: consent notice block + disabled (un-consented) Start button */
body.vk-theme .vk-doc__consent { margin-top: 26px; padding: 18px 20px; border: 1.5px solid var(--vk-border-strong); border-radius: 12px; background: color-mix(in srgb, var(--vk-primary) 4%, var(--vk-surface)); }
body.vk-theme .vk-doc__consent-title { font-size: 16px; font-weight: 700; color: var(--vk-text); margin: 0 0 8px; }
body.vk-theme .vk-doc__consent-title sup { color: #d6336c; }
body.vk-theme .vk-doc__consent-text { font-size: 14px; color: var(--vk-text); line-height: 1.6; }
body.vk-theme .vk-doc__consent-text ul { padding-left: 20px; margin: 8px 0; }
body.vk-theme .vk-doc__consent-text li { margin: 4px 0; list-style: disc; }
body.vk-theme .vk-doc__consent-check { display: flex; align-items: flex-start; gap: 9px; margin-top: 12px; font-size: 14px; font-weight: 600; color: var(--vk-text); cursor: pointer; }
body.vk-theme .vk-doc__consent-check input { margin-top: 3px; width: 17px; height: 17px; flex: 0 0 auto; cursor: pointer; }
body.vk-theme .vk-doc__start.vk-disabled { opacity: .5; pointer-events: none; cursor: not-allowed; filter: grayscale(.3); box-shadow: none; }

/* DPDP Step 4: My Data rights portal */
body.vk-theme .vk-mydata__actions { margin-top: 14px; }
body.vk-theme .vk-mydata__section { margin: 18px 0; }
body.vk-theme .vk-mydata__h3 { font-size: 15px; font-weight: 700; color: var(--vk-primary); margin: 0 0 8px; padding-bottom: 6px; border-bottom: 1.5px solid var(--vk-border); }
body.vk-theme .vk-mydata__table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
body.vk-theme .vk-mydata__table th { text-align: left; width: 38%; padding: 6px 10px; color: var(--vk-muted); font-weight: 600; vertical-align: top; }
body.vk-theme .vk-mydata__table td { padding: 6px 10px; color: var(--vk-text); border-bottom: 1px solid var(--vk-border); }
body.vk-theme .vk-mydata__list { padding-left: 18px; margin: 0; font-size: 13.5px; }
body.vk-theme .vk-mydata__list li { margin: 4px 0; list-style: disc; }
body.vk-theme .vk-mydata__rights { margin-top: 26px; padding-top: 18px; border-top: 2px solid var(--vk-border); }
body.vk-theme .vk-mydata__right-card { border: 1.5px solid var(--vk-border-strong); border-radius: 10px; padding: 14px 16px; margin-bottom: 14px; background: var(--vk-surface); }
body.vk-theme .vk-mydata__right-card h4 { font-size: 14.5px; font-weight: 700; margin: 0 0 4px; color: var(--vk-text); }
body.vk-theme .vk-mydata__right-card p { font-size: 12.5px; color: var(--vk-muted); margin: 0 0 8px; }
body.vk-theme .vk-mydata__msg { margin-bottom: 12px; font-size: 13.5px; font-weight: 600; }
@media print {
  body.vk-mydata { background: #fff !important; }
  body.vk-mydata .no-print, body.vk-mydata nav, body.vk-mydata footer { display: none !important; }
  /* Port of VKSSP CHG-38: the template nests the page content INSIDE <header id="header-wrap">
     (navbar.php opens it; my-data.php closes it after .vk-doc), so hiding that wrapper wholesale
     printed a blank page (content collapsed to 0x0). Keep the wrapper, drop only its header
     chrome — everything that is not the document itself. */
  body.vk-mydata #header-wrap { display: block !important; background: #fff !important; padding: 0 !important; margin: 0 !important; min-height: 0 !important; }
  body.vk-mydata #header-wrap > *:not(.vk-doc) { display: none !important; }
  /* Force a system font + dark colour for every printed node: the screen pins Inter, but in print the
     content would otherwise inherit the source-less 'Lato' and render INVISIBLE (blank page). */
  body.vk-mydata .vk-doc, body.vk-mydata .vk-doc * {
    font-family: Arial, Helvetica, sans-serif !important;
    color: #1a1a2e !important;
    -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important;
  }
  body.vk-mydata .vk-doc { padding: 0 !important; background: #fff !important; }
  body.vk-mydata .vk-doc__card { box-shadow: none !important; border: 0 !important; max-width: none !important; }
  body.vk-mydata .vk-mydata__h3 { color: #2c267e !important; }
  body.vk-mydata .vk-mydata__table td, body.vk-mydata .vk-mydata__table th { border-color: #ccc !important; }
}

/* navbar polish on themed pages: neutralise the pink language-switcher chrome */
body.vk-theme #header-wrap nav .fa-globe { color: var(--vk-muted) !important; }
body.vk-theme #header-wrap nav select { border: 1px solid var(--vk-border-strong) !important; color: var(--vk-text) !important; border-radius: 8px !important; }

/* verify-mobile modal polish */
body.vk-theme .verify_mobile .modal-title { font-weight: 700; color: var(--vk-text); }
body.vk-theme .verify_mobile .form-label { font-size: 13px; font-weight: 600; color: var(--vk-text); margin-bottom: 5px; }
body.vk-theme .verify_mobile .send-btn { background: var(--vk-primary); border-color: var(--vk-primary); color: #fff; padding: 9px 18px; border-radius: 8px !important; }
body.vk-theme .verify_mobile .send-btn:hover { background: var(--vk-primary-600); }
body.vk-theme .verify_mobile .close_verify_modal { background: var(--vk-surface); border: 1px solid var(--vk-border-strong); color: var(--vk-muted); padding: 9px 16px; border-radius: 8px !important; }

@media (max-width: 600px) {
  body.vk-theme .vk-doc { padding: 22px 12px 56px; }
  body.vk-theme .vk-doc__card { padding: 28px 20px 28px; }
  body.vk-theme .vk-doc__content ol > li { padding-left: 38px; }
  body.vk-theme .vk-doc__actions { flex-direction: column-reverse; align-items: stretch; }
  body.vk-theme .vk-doc__back, body.vk-theme .vk-doc__start { justify-content: center; }
}

/* ---- Applicant alert/confirm popups (error-modal / amount-error-modal / success-modal) themed to match ---- */
body.vk-theme .error-modal .modal-content,
body.vk-theme .amount-error-modal .modal-content,
body.vk-theme .success-modal .modal-content {
  border: 0 !important; border-top: 0 !important; border-radius: 16px;
  box-shadow: 0 24px 60px rgba(8,10,28,.28); overflow: hidden;
}
body.vk-theme .error-modal .modal-body,
body.vk-theme .amount-error-modal .modal-body,
body.vk-theme .success-modal .modal-body { padding: 28px 26px 8px; border-top: 0 !important; }
body.vk-theme .error-modal .modal-body p,
body.vk-theme .amount-error-modal .modal-body p,
body.vk-theme .success-modal .modal-body p {
  font-size: 15.5px; font-weight: 600; color: var(--vk-text); line-height: 1.55; margin-bottom: 0;
}
body.vk-theme .error-modal .modal-icon,
body.vk-theme .amount-error-modal .modal-icon,
body.vk-theme .success-modal .modal-icon { height: 56px; margin-bottom: 12px; }
body.vk-theme .error-modal .modal-footer,
body.vk-theme .amount-error-modal .modal-footer { border-top: 0; padding: 14px 24px 26px; gap: 10px; }
body.vk-theme #okay-btn, body.vk-theme #yes-btn {
  background: var(--vk-primary) !important; border: 1px solid var(--vk-primary) !important; color: #fff !important;
  border-radius: 10px !important; font-weight: 700; padding: 10px 22px !important;
}
body.vk-theme #okay-btn:hover, body.vk-theme #yes-btn:hover {
  background: var(--vk-primary-600) !important; border-color: var(--vk-primary-600) !important;
}
body.vk-theme #no-btn {
  background: var(--vk-surface) !important; border: 1.5px solid var(--vk-border-strong) !important;
  color: var(--vk-primary) !important; border-radius: 10px !important; font-weight: 700; padding: 9px 22px !important;
}
body.vk-theme #no-btn:hover { border-color: var(--vk-primary) !important; background: var(--vk-surface-2) !important; }

/* ============================================================================
   In-Field Verification — bring the reviewer result cards into the refreshed
   token system (the legacy .question-bank / .reviewer_div had no themed rules,
   so this page looked unstyled next to the rest of the applicant flow).
   ============================================================================ */
body.vk-theme .question-bank {
  background: var(--vk-surface);
  border: 1px solid var(--vk-border);
  border-radius: var(--vk-radius);
  box-shadow: var(--vk-shadow-sm);
  overflow: hidden;
  margin-bottom: 18px;
}
body.vk-theme .question-bank .reviewer_div {
  background: var(--vk-surface-2);
  border-bottom: 1px solid var(--vk-border);
  border-left: 3px solid var(--vk-primary);
  padding: 13px 18px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
}
body.vk-theme .question-bank .reviewer_div h6 {
  margin: 0; font-size: 14px; font-weight: 600; color: var(--vk-text);
}
body.vk-theme .question-bank .reviewer_div h6 b { color: var(--vk-muted); font-weight: 600; }
body.vk-theme .question-bank .card-body { padding: 16px 18px 6px; }
body.vk-theme .question-bank .answer h6 {
  font-size: 14px; font-weight: 600; color: var(--vk-text); margin: 0 0 4px;
}
body.vk-theme .question-bank .answer p { color: var(--vk-muted); margin: 0; }
body.vk-theme .question-bank .answer p input[type="radio"],
body.vk-theme .question-bank .answer p input[type="checkbox"] {
  accent-color: var(--vk-primary); vertical-align: -2px; margin-right: 7px;
}
body.vk-theme .question-bank hr { border: 0; border-top: 1px solid var(--vk-border); margin: 12px 0; }
body.vk-theme .question-bank .answer:last-of-type hr { display: none; }

/* Verified / Not-Verified status pill */
body.vk-theme .vk-verify-badge {
  display: inline-block; padding: 3px 13px; border-radius: 999px;
  font-size: 12px; font-weight: 700; letter-spacing: .01em; line-height: 1.5;
}
body.vk-theme .vk-verify-badge.is-yes { background: #e8f6f0; color: #1f9d6b; border: 1px solid #bfe6d6; }
body.vk-theme .vk-verify-badge.is-no  { background: #fbe9ea; color: #d64550; border: 1px solid #f3c4c8; }

/* "Verification Comments" trigger — align it with the refreshed primary button */
body.vk-theme .review-btn-submit {
  background: var(--vk-primary) !important; border: 1px solid var(--vk-primary) !important;
  color: #fff !important; border-radius: var(--vk-radius-sm); font-size: 14px; font-weight: 600;
  padding: 9px 18px; box-shadow: var(--vk-shadow-sm); transition: background-color var(--vk-transition);
}
body.vk-theme .review-btn-submit:hover { background: var(--vk-primary-600) !important; }
