/* ============================================================
   LAS Hiring Board – Frontend Stylesheet
   All brand tokens live as CSS custom properties injected
   via PHP from the admin settings page.
   ============================================================ */

/* ── Base Variables (fallback defaults) ──────────────────── */
/* Modals are teleported to <body> by JS to escape Elementor  */
/* container transforms, so they need their own variable      */
/* declarations — they can no longer inherit from the board.  */
.las-hiring-board,
#las-see-more-overlay,
#las-apply-overlay {
  --las-primary:        #2563eb;
  --las-primary-text:   #ffffff;
  --las-primary-hover:  #1d4ed8;
  --las-card-bg:        #ffffff;
  --las-body-bg:        #ffffff;
  --las-modal-bg:       #ffffff;
  --las-text:           #111827;
  --las-muted:          #6b7280;
  --las-border:         #e5e7eb;
  --las-radius:         12px;
  --las-shadow:         0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);
  --las-shadow-hover:   0 8px 24px rgba(0,0,0,.12);
  --las-font:           inherit;
  --las-transition:     0.2s ease;
}

.las-hiring-board {
  font-family:   var(--las-font);
  color:         var(--las-text);
  background:    var(--las-body-bg);
  padding:       32px 0;
  box-sizing:    border-box;
}

.las-hiring-board *,
.las-hiring-board *::before,
.las-hiring-board *::after {
  box-sizing: inherit;
}

/* ── Search & Filter Bar ─────────────────────────────────── */
.las-search-bar {
  display:       flex;
  flex-wrap:     wrap;
  gap:           12px;
  margin-bottom: 24px;
  padding:       0;         /* Fix #4: no background panel */
  background:    transparent;
}

.las-search-field {
  flex:         1 1 220px;
  position:     relative;
}

/* Fix #1: SVG icon positioning */
.las-field-icon {
  position:      absolute;
  left:          12px;
  top:           50%;
  transform:     translateY(-50%);
  color:         var(--las-muted);
  pointer-events: none;
  display:       flex;
  align-items:   center;
  line-height:   1;
  z-index:       1;
}

.las-search-field input,
.las-search-field select {
  width:         100%;
  padding:       10px 12px 10px 36px;
  border:        1px solid var(--las-border);
  border-radius: calc(var(--las-radius) * 0.6);
  font-size:     14px;
  color:         var(--las-text);
  background:    #fff;
  outline:       none;
  transition:    border-color var(--las-transition), box-shadow var(--las-transition);
  -webkit-appearance: none;
}

.las-search-field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236b7280' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 32px;
  cursor: pointer;
}

.las-search-field input:focus,
.las-search-field select:focus {
  border-color: var(--las-primary);
  box-shadow:   0 0 0 3px color-mix(in srgb, var(--las-primary) 15%, transparent);
}

/* ── Toolbar (view toggle + result count) ────────────────── */
.las-toolbar {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  flex-wrap:       wrap;
  gap:             12px;
  margin-bottom:   20px;
}

.las-result-count {
  font-size:  14px;
  color:      var(--las-muted);
  font-weight: 500;
}

.las-view-toggle {
  display:    flex;
  gap:        4px;
  background: var(--las-card-bg);
  border:     none;   /* Fix #8: remove border */
  border-radius: calc(var(--las-radius) * 0.6);
  padding:    3px;
}

.las-view-btn {
  display:       flex;
  align-items:   center;
  gap:           6px;
  padding:       6px 14px;
  border:        none;
  border-radius: calc(var(--las-radius) * 0.5);
  background:    transparent;
  color:         var(--las-muted);
  font-size:     13px;
  font-weight:   500;
  cursor:        pointer;
  transition:    background var(--las-transition), color var(--las-transition);
}

.las-view-btn.active,
.las-view-btn:hover {
  background: var(--las-primary);
  color:      var(--las-primary-text);
}

/* ── Cards Grid ──────────────────────────────────────────── */
.las-jobs-grid {
  display:               grid;
  grid-template-columns: repeat(var(--las-cols, 3), 1fr);
  gap:                   20px;
}

/* ── Job Card ────────────────────────────────────────────── */
.las-job-card {
  background:    var(--las-card-bg);
  border-radius: var(--las-radius);
  box-shadow:    var(--las-shadow);
  display:       flex;
  flex-direction: column;
  overflow:      hidden;
  transition:    box-shadow var(--las-transition), transform var(--las-transition);
  border:        1px solid var(--las-border);
}

.las-job-card:hover {
  box-shadow: var(--las-shadow-hover);
  transform:  translateY(-2px);
}

.las-card-body {
  flex:    1;
  padding: 20px 20px 12px;
}

.las-card-category {
  display:       inline-block;
  font-size:     11px;
  font-weight:   600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color:         var(--las-primary);
  background:    color-mix(in srgb, var(--las-primary) 10%, transparent);
  padding:       3px 10px;
  border-radius: 999px;
  margin-bottom: 10px;
}

.las-card-title {
  font-size:   18px;
  font-weight: 700;
  line-height: 1.3;
  color:       var(--las-text);
  margin:      0 0 8px;
}

.las-card-meta {
  display:   flex;
  flex-wrap: wrap;
  gap:       8px 16px;
  margin:    0 0 12px;
}

.las-card-excerpt {
  font-size:   14px;
  line-height: 1.6;
  color:       var(--las-muted);
  display:     -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow:    hidden;
  margin:      0;
}

.las-card-salary {
  display:     flex;
  align-items: center;
  gap:         4px;
  font-size:   14px;
  font-weight: 600;
  color:       var(--las-text);
  margin-top:  10px;
}

.las-remote-badge {
  display:       inline-flex;
  align-items:   center;
  gap:           4px;
  font-size:     11px;
  font-weight:   600;
  color:         #059669;
  background:    #d1fae5;
  padding:       2px 8px;
  border-radius: 999px;
}

.las-card-footer {
  padding:        12px 20px 20px;
  display:        flex;
  gap:            10px;
  border-top:     1px solid var(--las-border);
  margin-top:     auto;
}

/* ── List / Row Layout ───────────────────────────────────── */
.las-jobs-list {
  display:        flex;
  flex-direction: column;
  gap:            12px;
}

.las-job-row {
  display:       flex;
  align-items:   center;
  gap:           16px;
  background:    var(--las-card-bg);
  border-radius: var(--las-radius);
  box-shadow:    var(--las-shadow);
  padding:       18px 24px;
  border:        1px solid var(--las-border);
  transition:    box-shadow var(--las-transition);
}

.las-job-row:hover {
  box-shadow: var(--las-shadow-hover);
}

.las-row-main {
  flex: 1;
}

.las-row-title {
  font-size:   17px;
  font-weight: 700;
  color:       var(--las-text);
  margin:      0 0 4px;
}

.las-row-meta {
  display:   flex;
  flex-wrap: wrap;
  gap:       6px 16px;
}

.las-row-actions {
  display:    flex;
  gap:        10px;
  flex-shrink: 0;
}

/* ── Meta icons (SVG) ────────────────────────────────────── */
.las-meta-item {
  display:     flex;
  align-items: center;
  gap:         5px;
  font-size:   13px;
  color:       var(--las-muted);
  line-height: 1;
}

.las-meta-item svg {
  flex-shrink: 0;
}

.las-card-posted {
  margin-top: 8px;
}

/* ── Buttons ─────────────────────────────────────────────── */
.las-btn {
  display:       inline-flex;
  align-items:   center;
  justify-content: center;
  gap:           6px;
  padding:       9px 18px;
  border:        none;
  border-radius: calc(var(--las-radius) * 0.6);
  font-size:     13px;
  font-weight:   600;
  cursor:        pointer;
  transition:    background var(--las-transition), transform var(--las-transition), box-shadow var(--las-transition);
  white-space:   nowrap;
  text-decoration: none;
}

.las-btn:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--las-primary) 40%, transparent);
  outline-offset: 2px;
}

.las-btn-primary {
  background: var(--las-primary);
  color:      var(--las-primary-text);
}

.las-btn-primary:hover {
  background: var(--las-primary-hover, color-mix(in srgb, var(--las-primary) 85%, #000));
  box-shadow: 0 4px 12px color-mix(in srgb, var(--las-primary) 35%, transparent);
  transform:  translateY(-1px);
}

.las-btn-outline {
  background:   transparent;
  color:        var(--las-primary);
  border:       1.5px solid var(--las-primary);
}

.las-btn-outline:hover {
  background: color-mix(in srgb, var(--las-primary) 8%, transparent);
}

/* ── Loading ─────────────────────────────────────────────── */
.las-loading {
  display:        flex;
  flex-direction: column;
  align-items:    center;
  padding:        60px 20px;
  color:          var(--las-muted);
  font-size:      15px;
  gap:            16px;
}

.las-spinner {
  width:  36px;
  height: 36px;
  border: 3px solid var(--las-border);
  border-top-color: var(--las-primary);
  border-radius: 50%;
  animation: las-spin 0.7s linear infinite;
}

@keyframes las-spin {
  to { transform: rotate(360deg); }
}

/* ── Empty State ─────────────────────────────────────────── */
.las-empty-state {
  text-align:  center;
  padding:     60px 24px;
  color:       var(--las-muted);
}

.las-empty-icon {
  font-size:     40px;
  margin-bottom: 12px;
}

.las-empty-state h3 {
  font-size:   20px;
  font-weight: 600;
  color:       var(--las-text);
  margin:      0 0 8px;
}

.las-empty-state p {
  font-size: 14px;
  margin:    0;
}

/* ── Pagination / Load More ───────────────────────────────── */
.las-pagination {
  display:         flex;
  justify-content: center;
  align-items:     center;
  gap:             8px;
  margin-top:      28px;
  flex-wrap:       wrap;
}

.las-page-btn {
  min-width:     36px;
  height:        36px;
  padding:       0 12px;
  border:        1px solid var(--las-border);
  border-radius: calc(var(--las-radius) * 0.5);
  background:    var(--las-card-bg);
  color:         var(--las-text);
  font-size:     13px;
  font-weight:   500;
  cursor:        pointer;
  transition:    background var(--las-transition), color var(--las-transition);
}

.las-page-btn:hover,
.las-page-btn.active {
  background: var(--las-primary);
  color:      var(--las-primary-text);
  border-color: var(--las-primary);
}

.las-load-more-wrap {
  text-align:  center;
  margin-top:  28px;
}

/* ── Modals ──────────────────────────────────────────────── */
.las-modal-overlay {
  position:   fixed;
  inset:      0;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(4px);
  z-index:    99999;
  display:    flex;
  align-items: center;
  justify-content: center;
  padding:    16px;
  animation:  las-fade-in 0.2s ease;
}

.las-modal-overlay[hidden] {
  display: none;
}

@keyframes las-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.las-modal {
  background:    var(--las-modal-bg);
  border-radius: var(--las-radius);
  width:         100%;
  max-width:     680px;
  max-height:    90dvh;
  display:       flex;
  flex-direction: column;
  overflow:      hidden;
  box-shadow:    0 25px 50px rgba(0,0,0,.25);
  animation:     las-slide-up 0.25s cubic-bezier(.16,1,.3,1);
}

@keyframes las-slide-up {
  from { opacity: 0; transform: translateY(24px) scale(.97); }
  to   { opacity: 1; transform: translateY(0)    scale(1);   }
}

.las-modal-close {
  position:   absolute;
  top:        16px;
  right:      16px;
  width:      32px;
  height:     32px;
  border:     none;
  background: color-mix(in srgb, var(--las-text) 8%, transparent);
  border-radius: 50%;
  font-size:  16px;
  cursor:     pointer;
  color:      var(--las-text);
  display:    flex;
  align-items: center;
  justify-content: center;
  transition: background var(--las-transition);
  z-index:    1;
}

.las-modal-close:hover {
  background: color-mix(in srgb, var(--las-text) 15%, transparent);
}

.las-modal-header {
  position:   relative;
  padding:    28px 28px 0;
  flex-shrink: 0;
}

.las-modal-title {
  font-size:   22px;
  font-weight: 700;
  color:       var(--las-text);
  margin:      0 40px 8px 0;
  line-height: 1.3;
}

.las-modal-meta {
  display:   flex;
  flex-wrap: wrap;
  gap:       6px 16px;
  font-size: 13px;
  color:     var(--las-muted);
  padding:   10px 0;
  border-bottom: 1px solid var(--las-border);
  margin-bottom: 0;
}

.las-modal-body {
  flex:     1;
  overflow-y: auto;
  padding:  24px 28px;
  font-size: 15px;
  line-height: 1.7;
  color:    var(--las-text);
}

.las-modal-body h3 {
  font-size:   16px;
  font-weight: 700;
  margin:      20px 0 8px;
  color:       var(--las-text);
}

.las-modal-body ul, .las-modal-body ol {
  padding-left: 20px;
}

.las-modal-body li {
  margin-bottom: 4px;
}

.las-modal-footer {
  padding:    20px 28px;
  border-top: 1px solid var(--las-border);
  display:    flex;
  gap:        12px;
  flex-shrink: 0;
}

.las-apply-job-name {
  font-size:   14px;
  color:       var(--las-muted);
  margin:      4px 0 0;
  font-weight: 500;
}

/* ── Three-column form row ───────────────────────────────── */
.las-form-row-3 {
  grid-template-columns: 1fr 80px 120px;
}

/* ── File Upload Input ───────────────────────────────────── */
.las-file-wrap {
  position:   relative;
  display:    flex;
  align-items: center;
}

.las-file-input {
  position:  absolute;
  inset:     0;
  opacity:   0;
  cursor:    pointer;
  width:     100%;
  height:    100%;
}

.las-file-label {
  display:       flex;
  align-items:   center;
  gap:           8px;
  width:         100%;
  padding:       10px 14px;
  border:        1px dashed var(--las-border);
  border-radius: calc(var(--las-radius) * 0.5);
  font-size:     14px;
  color:         var(--las-muted);
  background:    #fafafa;
  cursor:        pointer;
  transition:    border-color var(--las-transition), color var(--las-transition);
  pointer-events: none;
}

.las-file-label::before {
  content: '📎';
  font-size: 16px;
}

.las-file-wrap:focus-within .las-file-label,
.las-file-wrap:hover .las-file-label {
  border-color: var(--las-primary);
  color:        var(--las-primary);
}

.las-file-input.las-error ~ .las-file-label {
  border-color: #ef4444;
}

.las-field-hint {
  font-size: 11px;
  color:     var(--las-muted);
  margin:    4px 0 0;
}

.las-optional {
  font-size:   12px;
  color:       var(--las-muted);
  font-weight: 400;
}

/* ── Apply Form ──────────────────────────────────────────── */
.las-apply-form {
  display:        flex;
  flex-direction: column;
  gap:            16px;
}

.las-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.las-form-group {
  display:        flex;
  flex-direction: column;
  gap:            5px;
}

.las-form-group label {
  font-size:   13px;
  font-weight: 600;
  color:       var(--las-text);
}

.las-form-group .required-star {
  color: #ef4444;
  margin-left: 2px;
}

.las-form-group input,
.las-form-group select,
.las-form-group textarea {
  padding:       10px 12px;
  border:        1px solid var(--las-border);
  border-radius: calc(var(--las-radius) * 0.5);
  font-size:     14px;
  color:         var(--las-text);
  background:    #fff;
  outline:       none;
  transition:    border-color var(--las-transition), box-shadow var(--las-transition);
  width:         100%;
}

.las-form-group input:focus,
.las-form-group select:focus,
.las-form-group textarea:focus {
  border-color: var(--las-primary);
  box-shadow:   0 0 0 3px color-mix(in srgb, var(--las-primary) 12%, transparent);
}

.las-form-group input.las-error,
.las-form-group select.las-error {
  border-color: #ef4444;
}

.las-field-error {
  font-size: 12px;
  color:     #ef4444;
}

/* Custom questions */
.las-questions-section {
  border-top: 1px solid var(--las-border);
  padding-top: 16px;
}

.las-questions-section h3 {
  font-size:   14px;
  font-weight: 700;
  color:       var(--las-text);
  margin:      0 0 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color:       var(--las-muted);
}

/* Form status messages */
.las-form-success {
  text-align:    center;
  padding:       32px 20px;
  color:         #059669;
}

.las-form-success .las-success-icon {
  font-size:     48px;
  margin-bottom: 12px;
}

.las-form-success h3 {
  font-size:   20px;
  font-weight: 700;
  color:       var(--las-text);
  margin:      0 0 8px;
}

.las-form-success p {
  font-size: 14px;
  color:     var(--las-muted);
  margin:    0;
}

.las-files-warning {
  margin-top:    14px !important;
  padding:       10px 14px;
  border-radius: 6px;
  background:    #fff8e1;
  border:        1px solid #ffe082;
  color:         #5d4037 !important;
  font-size:     13px !important;
  text-align:    left;
  line-height:   1.5;
}

.las-form-error-banner {
  padding:       12px 16px;
  background:    #fef2f2;
  border:        1px solid #fecaca;
  border-radius: calc(var(--las-radius) * 0.5);
  color:         #dc2626;
  font-size:     13px;
}

.las-submit-row {
  display:         flex;
  justify-content: flex-end;
  gap:             12px;
  border-top:      1px solid var(--las-border);
  padding-top:     16px;
  margin-top:      4px;
}

.las-btn-submit {
  min-width: 160px;
}

.las-btn-submit:disabled {
  opacity: 0.6;
  cursor:  not-allowed;
  transform: none !important;
  box-shadow: none !important;
}

/* Form-level spinner */
.las-form-spinner {
  margin: 40px auto;
  display: block;
}

/* ── Responsive ──────────────────────────────────────────── */

/* Tablet */
@media (max-width: 1024px) {
  .las-jobs-grid {
    grid-template-columns: repeat(var(--las-cols-tablet, 2), 1fr);
  }
}

/* Mobile */
@media (max-width: 640px) {
  .las-hiring-board {
    padding: 20px 0;
  }

  /* Hide view toggle — mobile always uses cards */
  .las-view-toggle {
    display: none !important;
  }

  .las-jobs-grid {
    grid-template-columns: repeat(var(--las-cols-mobile, 1), 1fr);
  }

  .las-search-bar {
    padding: 0;
  }

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

  .las-row-actions {
    width: 100%;
    justify-content: flex-start;
  }

  .las-modal {
    max-height: 95dvh;
  }

  .las-modal-header { padding: 20px 20px 0; }
  .las-modal-body   { padding: 16px 20px; }
  .las-modal-footer { padding: 14px 20px; }
  .las-modal-title  { font-size: 18px; }

  .las-form-row {
    grid-template-columns: 1fr;
  }

  .las-toolbar {
    flex-direction:  column;
    align-items:     flex-start;
  }
}
