
/* ==========================================================
   JOBCONNECT ESWATINI
   COMPLETE MAIN WEBSITE STYLESHEET
   ========================================================== */

/* ==========================================================
   1. GLOBAL VARIABLES
   ========================================================== */

:root {
  --navy: #102a43;
  --blue: #1f4e79;
  --blue-dark: #153a60;
  --light-blue: #edf3f8;
  --text: #243447;
  --muted: #65758b;
  --border: #dce4ec;
  --white: #ffffff;
  --background: #f7f9fc;
  --success: #176b45;
  --success-bg: #e8f5ee;
  --warning: #8a5a00;
  --warning-bg: #fff5d6;
  --danger: #a4262c;
  --danger-bg: #fee2e2;
  --shadow: 0 8px 28px rgba(16, 42, 67, 0.07);
}

/* ==========================================================
   2. RESET AND GLOBAL STYLES
   ========================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  color: var(--text);
  background: var(--white);
  line-height: 1.6;
}

[hidden] {
  display: none !important;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
select,
textarea {
  font: inherit;
}

button,
select {
  cursor: pointer;
}

button:disabled,
input:disabled,
select:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid #6ca5dc;
  outline-offset: 3px;
}

img {
  max-width: 100%;
  height: auto;
}

.container {
  width: 100%;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 24px;
  padding-right: 24px;
}

.section {
  padding: 64px 0;
}

h1,
h2,
h3,
h4,
p {
  margin-top: 0;
}

h1,
h2,
h3,
h4 {
  color: var(--navy);
}

h1 {
  margin-bottom: 17px;
  font-size: clamp(32px, 5vw, 54px);
  line-height: 1.15;
  letter-spacing: -1px;
}

h1 span {
  color: var(--blue);
}

h2 {
  margin-bottom: 12px;
  font-size: clamp(24px, 3vw, 32px);
  line-height: 1.3;
}

h3 {
  line-height: 1.4;
}

.eyebrow {
  color: var(--blue);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
}

/* ==========================================================
   3. HEADER AND NAVIGATION
   ========================================================== */

.site-header {
  position: relative;
  z-index: 10;
  width: 100%;
  background: var(--white);
  border-bottom: 1px solid var(--border);
}

.site-header .container {
  max-width: 1200px;
  min-height: 78px;
  margin: 0 auto;
  padding: 16px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.logo,
.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--navy);
  font-size: 20px;
  font-weight: 800;
  letter-spacing: -0.4px;
}

.logo span,
.brand small {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
}

.brand-icon {
  display: grid;
  place-items: center;
  width: 43px;
  height: 43px;
  flex-shrink: 0;
  border-radius: 9px;
  color: var(--white);
  background: var(--navy);
  font-size: 15px;
}

.site-header nav,
.site-header .nav nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 12px 20px;
  font-size: 14px;
  font-weight: 600;
}

.site-header nav a {
  transition: color 0.2s ease;
}

.site-header nav a:hover {
  color: var(--blue);
}

.nav-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 11px 16px;
  color: var(--white);
  background: var(--navy);
  border-radius: 7px;
  font-weight: 700;
  transition: background-color 0.2s ease;
}

.nav-button:hover,
.site-header nav .nav-button:hover {
  color: var(--white);
  background: var(--blue);
}

/* ==========================================================
   4. HOMEPAGE HERO
   ========================================================== */

.hero {
  padding: 84px 24px;
  background: linear-gradient(
    135deg,
    #102a43 0%,
    #1f4e79 100%
  );
}

.hero-content {
  max-width: 1050px;
  margin: 0 auto;
}

.hero h1 {
  max-width: 760px;
  color: var(--white);
  font-size: clamp(34px, 5vw, 58px);
  line-height: 1.12;
}

.hero h1 span {
  color: #c7e1ff;
}

.hero p,
.hero-content > p {
  max-width: 680px;
  color: #e1eaf3;
  font-size: 16px;
}

.search-form {
  display: grid;
  grid-template-columns:
    minmax(0, 1.5fr)
    minmax(0, 1fr)
    auto;
  align-items: end;
  gap: 12px;
  max-width: 1000px;
  margin-top: 32px;
  padding: 14px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: var(--shadow);
}

.search-form label {
  display: block;
  min-width: 0;
  padding: 4px;
}

.search-form label span {
  display: block;
  margin-bottom: 5px;
  color: var(--navy);
  font-size: 12px;
  font-weight: 700;
}

.search-form input,
.search-form select {
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 7px;
  color: var(--text);
  background: var(--white);
}

.search-form button {
  min-height: 48px;
  padding: 12px 24px;
  color: var(--white);
  background: var(--navy);
  border: 0;
  border-radius: 7px;
  font-weight: 700;
  transition: background-color 0.2s ease;
}

.search-form button:hover {
  background: var(--blue);
}

.search-note {
  margin-top: 12px;
  color: #e1eaf3;
  font-size: 12px;
}

/* ==========================================================
   5. HOMEPAGE SECTIONS
   ========================================================== */

#portals,
#about {
  background: var(--background);
}

#jobs {
  background: var(--white);
}

.jobs-section,
.about-section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 65px 24px;
}

.about-section {
  max-width: none;
  padding-left: max(
    24px,
    calc((100% - 1152px) / 2)
  );
  padding-right: max(
    24px,
    calc((100% - 1152px) / 2)
  );
  background: var(--background);
}

.about-section p {
  max-width: 650px;
  color: var(--muted);
}

.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
}

.section-heading p {
  color: var(--muted);
}

.result-count {
  display: inline-block;
  padding: 7px 12px;
  color: var(--blue);
  background: var(--light-blue);
  border-radius: 6px;
  font-size: 13px;
  white-space: nowrap;
}

/* ==========================================================
   6. CATEGORY FILTERS
   ========================================================== */

.category-list {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 25px 0;
}

.category {
  padding: 9px 14px;
  color: var(--text);
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 7px;
  font-size: 13px;
  transition:
    background-color 0.2s ease,
    color 0.2s ease;
}

.category:hover,
.category.active,
.category[aria-pressed="true"] {
  color: var(--white);
  background: var(--navy);
  border-color: var(--navy);
}

/* ==========================================================
   7. ADVANCED JOB FILTERS
   ========================================================== */

#jobs .advanced-filters,
#jobs .job-advanced-filters,
#jobs .job-filter-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 14px;
  margin: 18px 0 26px;
}

#jobs .advanced-filters label,
#jobs .job-advanced-filters label,
#jobs .job-filter-controls label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: #334155;
  font-size: 13px;
  font-weight: 700;
}

#jobs .advanced-filters select,
#jobs .job-advanced-filters select,
#jobs .job-filter-controls select {
  min-height: 43px;
  padding: 9px 12px;
  background: var(--white);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
}

#jobs .advanced-filters button,
#jobs .job-advanced-filters button,
#jobs .job-filter-controls button {
  min-height: 43px;
  padding: 10px 16px;
  color: var(--white);
  background: var(--navy);
  border: 0;
  border-radius: 8px;
  font-weight: 700;
}

#jobs .advanced-filters button:hover,
#jobs .job-advanced-filters button:hover,
#jobs .job-filter-controls button:hover {
  background: var(--blue);
}

/* ==========================================================
   8. JOB LISTINGS
   ========================================================== */

.job-grid {
  display: grid;
  grid-template-columns:
    repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.job-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 23px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow-wrap: anywhere;
  transition:
    box-shadow 0.2s ease,
    transform 0.2s ease,
    border-color 0.2s ease;
}

.job-card:hover {
  transform: translateY(-3px);
  border-color: #b7ccdf;
  box-shadow: var(--shadow);
}

.job-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.company-mark {
  display: grid;
  place-items: center;
  width: 43px;
  height: 43px;
  flex-shrink: 0;
  color: var(--blue);
  background: var(--light-blue);
  border-radius: 8px;
  font-weight: 700;
}

.job-type {
  color: var(--blue);
  font-size: 11px;
  font-weight: 700;
}

.job-card h3 {
  margin: 17px 0 5px;
  font-size: 18px;
  overflow-wrap: anywhere;
}

.company-name {
  margin-bottom: 16px;
  font-size: 13px;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.job-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  color: var(--muted);
  font-size: 12px;
}

.job-card .job-description {
  margin: 17px 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
  overflow-wrap: anywhere;
}

.job-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 15px;
  border-top: 1px solid var(--border);
  font-size: 12px;
}

.job-footer a {
  color: var(--blue);
  font-weight: 700;
}

.job-footer a:hover {
  text-decoration: underline;
}

.demo-label {
  display: inline-block;
  margin-top: 12px;
  padding: 4px 8px;
  color: #6b4f00;
  background: var(--warning-bg);
  border-radius: 5px;
  font-size: 10px;
}

.empty-state {
  padding: 30px;
  color: var(--muted);
  text-align: center;
  background: var(--background);
  border-radius: 8px;
}

/* ==========================================================
   9. JOB SEEKER AND EMPLOYER PORTAL CARDS
   ========================================================== */

#portals .job-grid {
  grid-template-columns:
    repeat(2, minmax(0, 1fr));
}

#portals .job-card {
  align-items: flex-start;
  gap: 10px;
  padding: 30px;
  border-radius: 14px;
}

#portals .job-card h3 {
  margin: 0;
  font-size: 23px;
}

#portals .job-card p {
  margin: 0;
  color: var(--muted);
}

#portals .job-card .nav-button {
  margin-top: auto;
  padding: 13px 20px;
  text-align: center;
}

/* ==========================================================
   10. FEATURED VACANCIES
   ========================================================== */

#jobs .job-card.featured,
#jobs .job-card.is-featured,
#jobs .job-card.featured-job,
#jobs .job-card.job-featured,
#jobs .job-card.job-card-featured,
#jobs .job-card[data-featured="true"] {
  position: relative;
  border: 2px solid #d6a53b;
  background: linear-gradient(
    145deg,
    #fffdf5 0%,
    #ffffff 75%
  );
  box-shadow:
    0 6px 22px rgba(165, 117, 24, 0.09);
}

#jobs .job-card.featured:hover,
#jobs .job-card.is-featured:hover,
#jobs .job-card.featured-job:hover,
#jobs .job-card.job-featured:hover,
#jobs .job-card.job-card-featured:hover,
#jobs .job-card[data-featured="true"]:hover {
  transform: translateY(-4px);
  border-color: #bd891d;
  box-shadow:
    0 12px 30px rgba(165, 117, 24, 0.16);
}

.featured-badge,
.job-featured-badge,
.featured-label,
.job-card .featured-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  max-width: 100%;
  padding: 6px 11px;
  border: 1px solid #e9c775;
  border-radius: 6px;
  background: #fff0bd;
  color: #805500;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.5px;
  line-height: 1.3;
  text-transform: uppercase;
}

#jobs .job-card.featured .company-mark,
#jobs .job-card.is-featured .company-mark,
#jobs .job-card.featured-job .company-mark,
#jobs .job-card.job-featured .company-mark,
#jobs .job-card.job-card-featured .company-mark,
#jobs .job-card[data-featured="true"] .company-mark {
  color: #805500;
  background: #fff0bd;
}

/* ==========================================================
   11. JOB DETAILS PAGE
   ========================================================== */

.job-details-container {
  min-height: 60vh;
  padding-top: 32px;
  padding-bottom: 48px;
}

.back-link {
  display: inline-block;
  margin-bottom: 24px;
  color: var(--navy);
  font-weight: 600;
}

.back-link:hover {
  color: var(--blue);
}

/*
   IMPORTANT:
   The new job-details.html already contains
   individual cards and a two-column layout.
   Do not wrap the entire page in another card.
*/

.job-details-container #job-details {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.job-details-container .job-details-layout {
  display: grid;
  grid-template-columns:
    minmax(0, 1fr) 290px;
  gap: 24px;
  align-items: start;
}

.job-details-container .job-details-main,
.job-details-container .job-details-sidebar {
  min-width: 0;
}

.job-details-container .job-detail-card {
  margin-top: 0;
}

.job-details-container #job-details h1 {
  font-size: clamp(26px, 4vw, 36px);
}

.job-details-container #job-details section {
  margin-top: 0;
}

.job-details-container #job-details li {
  margin-bottom: 12px;
}

.job-details-container .job-description {
  color: #334155;
  font-size: inherit;
  white-space: pre-wrap;
  line-height: 1.9;
  overflow-wrap: anywhere;
}

.details-button {
  display: inline-block;
  margin-top: 18px;
  padding: 11px 18px;
  color: var(--white);
  background: var(--navy);
  border-radius: 7px;
  font-weight: 600;
}

.details-button:hover {
  background: var(--blue);
}

/* ==========================================================
   12. ADMINISTRATOR DASHBOARD
   ========================================================== */

.admin-container {
  max-width: 1200px;
  min-height: 70vh;
  margin: 0 auto;
  padding: 36px 24px 60px;
}

.admin-container > h1 {
  margin-bottom: 10px;
  font-size: clamp(30px, 4vw, 42px);
}

.admin-intro,
.admin-container > p {
  color: var(--muted);
}

.admin-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 20px 0;
}

.admin-toolbar a,
.admin-toolbar button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 10px 16px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--white);
  color: var(--navy);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.admin-toolbar a:hover,
.admin-toolbar button:hover {
  background: var(--light-blue);
}

.admin-stats {
  display: grid;
  grid-template-columns:
    repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 24px 0;
}

.admin-stat {
  min-width: 0;
  padding: 20px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
}

.admin-stat strong {
  display: block;
  margin-top: 7px;
  color: var(--blue);
  font-size: 2rem;
}

.admin-panel {
  min-width: 0;
  margin: 26px 0;
  padding: 26px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow:
    0 4px 18px rgba(16, 42, 67, 0.035);
}

.admin-panel h2 {
  margin-bottom: 18px;
  font-size: 23px;
}

.admin-panel > p,
.admin-section-description {
  color: var(--muted);
  line-height: 1.7;
}

.admin-panel form {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 9px;
}

.admin-panel label {
  display: block;
  margin-top: 8px;
  color: var(--navy);
  font-size: 13px;
  font-weight: 700;
}

.admin-panel input:not([type="checkbox"]),
.admin-panel select,
.admin-panel textarea {
  display: block;
  width: 100%;
  min-width: 0;
  padding: 12px 13px;
  color: var(--text);
  background: var(--white);
  border: 1px solid #cbd6e2;
  border-radius: 7px;
  font-size: 14px;
}

.admin-panel input:not([type="checkbox"]),
.admin-panel select {
  min-height: 45px;
}

.admin-panel textarea {
  min-height: 110px;
  resize: vertical;
}

.admin-panel .admin-checkbox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 10px 0;
  padding: 12px;
  color: var(--text);
  background: var(--background);
  border: 1px solid var(--border);
  border-radius: 7px;
  font-size: 13px;
  font-weight: 600;
}

.admin-checkbox input[type="checkbox"] {
  width: 17px;
  height: 17px;
  margin: 2px 0 0;
  flex-shrink: 0;
  accent-color: var(--navy);
}

.admin-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
}

.admin-actions button,
#login-button,
#cancel-edit,
#save-button {
  min-height: 42px;
  padding: 10px 17px;
  color: var(--white);
  background: var(--navy);
  border: 1px solid var(--navy);
  border-radius: 7px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.admin-actions button:hover,
#login-button:hover,
#save-button:hover {
  background: var(--blue);
  border-color: var(--blue);
}

#cancel-edit {
  color: var(--navy);
  background: var(--white);
  border-color: var(--border);
}

#cancel-edit:hover {
  background: var(--light-blue);
}

.admin-actions .delete-button,
.admin-actions .reject-button {
  color: var(--white);
  background: var(--danger);
  border-color: var(--danger);
}

.admin-actions .approve-button {
  color: var(--white);
  background: var(--success);
  border-color: var(--success);
}

#admin-login-form {
  max-width: 520px;
}

#admin-login-form button {
  width: 100%;
  margin-top: 12px;
}

#login-message,
#form-message,
.admin-message {
  margin: 12px 0;
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.6;
}

#login-message:not(:empty),
#form-message:not(:empty) {
  padding: 10px 12px;
  background: var(--background);
  border-radius: 7px;
}

/* ==========================================================
   13. ADMIN VACANCY LIST
   ========================================================== */

#admin-count {
  display: inline-block;
  margin-bottom: 12px;
  padding: 6px 11px;
  color: var(--blue);
  background: var(--light-blue);
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
}

#admin-job-list {
  display: grid;
  grid-template-columns:
    repeat(2, minmax(0, 1fr));
  gap: 15px;
  margin-top: 8px;
}

.admin-job-card {
  min-width: 0;
  padding: 19px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 9px;
  overflow-wrap: anywhere;
}

.admin-job-card h3 {
  margin: 0 0 12px;
  font-size: 18px;
}

.admin-job-card p {
  margin: 7px 0;
  color: var(--muted);
  font-size: 13px;
  white-space: pre-wrap;
}

.admin-job-card .admin-actions {
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.admin-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 16px 0;
}

.admin-filter button {
  padding: 9px 14px;
  color: var(--navy);
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 7px;
  font-size: 13px;
  font-weight: 600;
}

.admin-filter button.active {
  color: var(--white);
  background: var(--blue);
  border-color: var(--blue);
}

/* ==========================================================
   14. EMPLOYER AND CV PAYMENT MANAGEMENT
   ========================================================== */

.payment-section {
  padding: 24px;
  background: var(--background);
  border: 1px solid var(--border);
  border-radius: 14px;
}

.payment-section-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
}

.payment-section-header h2 {
  margin-top: 0;
}

.payment-section-header p {
  color: var(--muted);
  line-height: 1.7;
}

.payment-summary {
  display: grid;
  grid-template-columns:
    repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}

.payment-summary-item {
  min-width: 0;
  padding: 16px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 10px;
}

.payment-summary-item strong {
  display: block;
  margin-top: 5px;
  color: var(--blue);
  font-size: 1.7rem;
}

.payment-notice {
  margin: 18px 0;
  padding: 14px 16px;
  color: #765114;
  background: #fff9ed;
  border: 1px solid #f3d8a5;
  border-left: 4px solid #c88a20;
  border-radius: 8px;
  line-height: 1.7;
}

.admin-payment-card {
  min-width: 0;
  margin: 12px 0;
  padding: 20px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow-wrap: anywhere;
}

.admin-payment-card h3 {
  margin: 0 0 12px;
  font-size: 18px;
}

.admin-payment-card p {
  margin: 8px 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.payment-status {
  display: inline-block;
  padding: 5px 10px;
  border-radius: 999px;
  color: #334155;
  background: #e2e8f0;
  font-size: 12px;
  font-weight: 700;
  text-transform: capitalize;
}

.payment-status.pending {
  color: #92400e;
  background: #fef3c7;
}

.payment-status.approved {
  color: #166534;
  background: #dcfce7;
}

.payment-status.rejected {
  color: #991b1b;
  background: #fee2e2;
}

.payment-details {
  display: grid;
  grid-template-columns:
    repeat(2, minmax(0, 1fr));
  gap: 12px 20px;
  margin: 16px 0;
}

.payment-detail-label {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 12px;
}

.payment-detail-value {
  display: block;
  color: var(--navy);
  font-size: 13px;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.payment-review-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

.payment-review-actions button {
  min-height: 42px;
  padding: 10px 16px;
  border: 0;
  border-radius: 7px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.payment-review-actions .approve-button {
  color: var(--white);
  background: var(--success);
}

.payment-review-actions .reject-button {
  color: var(--white);
  background: var(--danger);
}

.payment-history-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 30px;
}

.payment-history-header h3 {
  margin: 0;
}

.payment-empty {
  padding: 20px;
  color: var(--muted);
  background: var(--white);
  border: 1px dashed #cbd5e1;
  border-radius: 10px;
}

.admin-divider {
  margin: 28px 0;
  border: 0;
  border-top: 1px solid var(--border);
}

.admin-security-note {
  margin-top: 18px;
  padding: 15px;
  color: #1e40af;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 9px;
  line-height: 1.7;
}

/* ==========================================================
   15. REVIEW AND APPROVAL ELEMENTS
   ========================================================== */

.review-card {
  min-width: 0;
  margin: 16px 0;
  padding: 22px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow-wrap: anywhere;
}

.review-card p {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.review-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

.review-actions button {
  min-height: 42px;
  padding: 10px 16px;
  color: var(--white);
  background: var(--blue);
  border: 0;
  border-radius: 7px;
  font-weight: 700;
}

.review-actions .approve,
.review-actions .approve-button {
  background: var(--success);
}

.review-actions .reject,
.review-actions .reject-button {
  background: var(--danger);
}

/* ==========================================================
   16. SHARED FORM AND MESSAGE HELPERS
   ========================================================== */

.status-message,
.form-message,
.error-message,
.success-message {
  overflow-wrap: anywhere;
  line-height: 1.7;
}

.error-message {
  color: var(--danger);
}

.success-message {
  color: var(--success);
}

input,
textarea,
select {
  max-width: 100%;
}

textarea {
  resize: vertical;
}

table {
  max-width: 100%;
  border-collapse: collapse;
}

th,
td {
  overflow-wrap: anywhere;
}

/* ==========================================================
   17. FOOTERS
   ========================================================== */

.site-footer,
footer {
  padding: 25px 24px;
  background: var(--white);
  border-top: 1px solid var(--border);
}

.site-footer .container {
  max-width: 1200px;
  margin: 0 auto;
}

footer p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

/* Dark footer for job details page */

footer.job-details-footer {
  background: #102744;
  color: #ffffff;
  border-top: 0;
  padding: 35px 20px;
  text-align: center;
}

footer.job-details-footer h3 {
  color: #ffffff;
}

footer.job-details-footer p {
  margin: 10px 0;
  color: #e2e8f0;
  font-size: 14px;
  line-height: 1.7;
}

footer.job-details-footer a {
  color: #ffffff;
  text-decoration: underline;
}

footer.job-details-footer a:hover {
  color: #bfdbfe;
}

/* ==========================================================
   18. TABLET RESPONSIVENESS
   ========================================================== */

@media (max-width: 900px) {
  .job-grid {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  .search-form {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  .search-form button {
    grid-column: 1 / -1;
  }

  .site-header .container {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }

  .site-header nav {
    justify-content: flex-start;
  }
}

@media (max-width: 800px) {
  .admin-stats {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  #admin-job-list {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================
   19. MOBILE RESPONSIVENESS
   ========================================================== */

@media (max-width: 760px) {
  .job-details-container .job-details-layout {
    grid-template-columns: 1fr;
  }

  .job-details-container #job-details {
    padding: 0;
  }

  .job-details-container .job-detail-card {
    padding: 22px;
  }

  #jobs .advanced-filters,
  #jobs .job-advanced-filters,
  #jobs .job-filter-controls {
    flex-direction: column;
    align-items: stretch;
  }

  #jobs .advanced-filters label,
  #jobs .job-advanced-filters label,
  #jobs .job-filter-controls label {
    width: 100%;
  }

  #jobs .advanced-filters select,
  #jobs .job-advanced-filters select,
  #jobs .job-filter-controls select,
  #jobs .advanced-filters button,
  #jobs .job-advanced-filters button,
  #jobs .job-filter-controls button {
    width: 100%;
  }
}

@media (max-width: 600px) {
  .container {
    padding-left: 16px;
    padding-right: 16px;
  }

  .section {
    padding: 44px 0;
  }

  .site-header .container {
    min-height: 68px;
    padding: 14px 16px;
    align-items: flex-start;
  }

  .logo,
  .brand {
    gap: 6px;
    font-size: 16px;
  }

  .logo span,
  .brand small {
    font-size: 9px;
    letter-spacing: 1.5px;
  }

  .site-header nav {
    width: 100%;
    justify-content: flex-start;
    gap: 10px;
    font-size: 13px;
  }

  .site-header nav a {
    padding: 7px 0;
  }

  .site-header nav .nav-button {
    padding: 9px 12px;
  }

  .hero {
    padding: 56px 18px;
  }

  .hero h1 {
    font-size: clamp(32px, 9vw, 42px);
  }

  .hero p {
    font-size: 15px;
  }

  .search-form {
    grid-template-columns: 1fr;
    padding: 12px;
  }

  .search-form button {
    grid-column: auto;
    width: 100%;
  }

  .jobs-section,
  .about-section {
    padding: 42px 18px;
  }

  .section-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }

  .job-grid,
  #portals .job-grid {
    grid-template-columns: 1fr;
  }

  .job-card {
    padding: 19px;
  }

  #portals .job-card {
    padding: 22px;
  }

  #portals .job-card .nav-button {
    width: 100%;
  }

  .job-card .job-description {
    min-height: auto;
  }

  .category-list {
    gap: 8px;
  }

  .category {
    padding: 9px 12px;
  }

  .job-details-container {
    padding: 22px 16px 38px;
  }

  .job-details-container #job-details {
    padding: 0;
  }

  .job-details-container #job-details h1 {
    font-size: 27px;
  }

  .admin-container {
    padding: 25px 15px 42px;
  }

  .admin-container > h1 {
    font-size: 31px;
  }

  .admin-panel,
  .payment-section {
    margin: 18px 0;
    padding: 16px;
    border-radius: 10px;
  }

  .admin-panel h2 {
    font-size: 21px;
  }

  .admin-job-card,
  .admin-payment-card {
    padding: 16px;
  }

  .payment-summary,
  .payment-details {
    grid-template-columns: 1fr;
  }

  .payment-review-actions {
    flex-direction: column;
  }

  .payment-review-actions button {
    width: 100%;
  }

  .admin-toolbar a,
  .admin-toolbar button {
    flex: 1 1 auto;
  }

  .review-actions {
    flex-direction: column;
  }

  .review-actions button {
    width: 100%;
  }

  .site-footer,
  footer {
    padding: 22px 18px;
  }
}

/* ==========================================================
   20. SMALL PHONE SCREENS
   ========================================================== */

@media (max-width: 480px) {
  .job-details-container .job-detail-card {
    padding: 18px;
  }

  .job-details-container .job-info-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 360px) {
  .site-header .container {
    flex-direction: column;
    align-items: flex-start;
  }

  .site-header nav {
    flex-direction: column;
    align-items: stretch;
  }

  .site-header nav a {
    width: 100%;
  }

  .hero h1 {
    font-size: 30px;
  }

  .admin-panel {
    padding: 14px;
  }

  .admin-stats {
    grid-template-columns: 1fr;
  }

  .admin-actions button {
    width: 100%;
  }

  .job-footer {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* ==========================================================
   21. ACCESSIBILITY
   ========================================================== */

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

/* ==========================================================
   END OF JOBCONNECT ESWATINI STYLESHEET
   ========================================================== */

/* JobConnect homepage: responsive illustrations and vacancies-first layout */
.jc-hero-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);align-items:center;gap:clamp(18px,4vw,55px)}
.jc-hero-copy{min-width:0}
.jc-hero-art img{display:block;width:100%;height:auto;filter:drop-shadow(0 18px 28px rgba(3,23,60,.14))}
.jc-eyebrow{font-size:.76rem!important;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#f7bc51!important;margin-bottom:12px!important}
.jc-quick-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.jc-quick-links a{color:#fff;text-decoration:none;font-weight:700;border:1px solid rgba(255,255,255,.42);border-radius:999px;padding:10px 16px;background:rgba(255,255,255,.10)}
.jc-quick-links a:hover,.jc-quick-links a:focus-visible{background:rgba(255,255,255,.24)}
.jc-portal-image{display:block;width:100%;height:auto;max-height:180px;object-fit:contain;margin:0 0 16px;border-radius:12px;background:#eff5ff}
#jobs{scroll-margin-top:82px}
@media(max-width:760px){.jc-hero-layout{grid-template-columns:1fr}.jc-hero-art{max-width:380px;margin:auto}.jc-quick-links{gap:8px}.jc-quick-links a{font-size:.88rem;padding:9px 12px}}

/* Job alerts and employer trust */
.jc-alert-section{background:#edf4fd}.jc-alert-panel{display:grid;grid-template-columns:1fr minmax(270px,430px);gap:32px;align-items:start;background:#fff;border:1px solid #d6e4f5;border-radius:20px;padding:clamp(20px,4vw,44px)}
.jc-alert-kicker{color:#185b9b;font-weight:800;letter-spacing:.09em;font-size:.78rem}.jc-alert-form{display:grid;gap:9px}.jc-alert-form label{font-weight:700}.jc-alert-form select,.jc-alert-form button{padding:12px;border-radius:9px;border:1px solid #b9cde4;font:inherit;max-width:100%;width:100%}.jc-alert-form button{background:#1656a0;color:white;font-weight:800;cursor:pointer}.jc-alert-form button:disabled{opacity:.65;cursor:wait}.jc-alert-form button:focus-visible,.jc-alert-form select:focus-visible{outline:3px solid #f7b955;outline-offset:2px}.jc-alert-form [role=status]{min-height:1.4em}.jc-alert-saved-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #d9e5f4}.jc-alert-saved-item button{width:auto;padding:7px 10px;background:#9e2636}.jc-trust-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.jc-trust-grid>div{padding:25px;border:1px solid #dce7f4;border-radius:16px;background:white}.jc-trust-grid .details-button{display:inline-block;margin-top:12px}@media(max-width:760px){.jc-alert-panel,.jc-trust-grid{grid-template-columns:1fr}}


#install-app-btn {
  background: #102a43;
  color: #ffffff;
  padding: 14px 24px;
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  margin: 15px 0;
}

#install-app-btn:hover {
  background: #17476c;
}

#install-app-help {
  font-size: 14px;
  color: #475569;
  margin-top: 8px;
}

#install-app-btn[hidden],
#install-app-help[hidden] {
  display: none !important;
}
