/* JOB RADAR - Minimalismo / Swiss. Azul de datos + ámbar para acciones clave. */
:root {
  --jr-primary: #1e40af; --jr-secondary: #3b82f6; --jr-cta: #f59e0b;
  --jr-bg: #f8fafc; --jr-text: #0f172a; --jr-muted: #475569; --jr-border: #e2e8f0; --jr-nav: #0b1b4d;
  --bs-body-font-family: 'Fira Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --bs-body-color: var(--jr-text); --bs-body-bg: var(--jr-bg);
  --bs-primary: var(--jr-primary); --bs-primary-rgb: 30, 64, 175; --bs-link-color: var(--jr-primary);
  --bs-secondary-color: var(--jr-muted);
}
body { background: var(--jr-bg); font-size: 1rem; line-height: 1.55; }
.text-muted, .text-body-secondary { color: var(--jr-muted) !important; }
h1, .h3 { font-weight: 600; letter-spacing: -.01em; }
.num, .table td.num, code { font-family: 'Fira Code', ui-monospace, monospace; font-variant-numeric: tabular-nums; }

/* Botones */
.btn { min-height: 40px; border-radius: .5rem; font-weight: 500; transition: background-color .2s, border-color .2s, color .2s, box-shadow .2s; cursor: pointer; }
.btn-sm { min-height: 36px; }
.btn-dark, .btn-primary { background: var(--jr-primary); border-color: var(--jr-primary); }
.btn-dark:hover, .btn-primary:hover { background: #1b3799; border-color: #1b3799; }
.btn-outline-dark { color: var(--jr-primary); border-color: #bfcdf5; }
.btn-outline-dark:hover { background: #eef2ff; color: var(--jr-primary); border-color: var(--jr-primary); }
.btn-cta { background: var(--jr-cta); border-color: var(--jr-cta); color: #1c1100; }
.btn-cta:hover { background: #d98a05; border-color: #d98a05; color: #1c1100; }
:focus-visible { outline: 3px solid var(--jr-secondary); outline-offset: 2px; border-radius: 4px; }
.form-control, .form-select { min-height: 40px; border-color: #cbd5e1; border-radius: .5rem; }
.form-control:focus, .form-select:focus { border-color: var(--jr-secondary); box-shadow: 0 0 0 .2rem rgba(59,130,246,.25); }
.form-label { font-weight: 500; font-size: .9rem; }

/* Autenticación */
body.bare { background: radial-gradient(1200px 600px at 10% -10%, #1e3a8a 0, transparent 60%), var(--jr-nav); min-height: 100vh; }
.brand-dark { color: #fff; } .brand-dark .bi { color: var(--jr-cta); }
.bare .card { border: 0; border-radius: 1rem; box-shadow: 0 20px 45px rgba(0,0,0,.35); }

/* Sidebar */
.sidebar { width: 252px; flex: 0 0 252px; background: var(--jr-nav); position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.sidebar .brand { color: #fff; font-weight: 700; font-size: 1.2rem; text-decoration: none; letter-spacing: .02em; }
.sidebar .brand .bi { color: var(--jr-cta); }
.sidebar .nav-link { color: #cbd5f5; border-radius: .5rem; padding: .6rem .85rem; min-height: 44px; display: flex; align-items: center; transition: background-color .2s, color .2s; cursor: pointer; }
.sidebar .nav-link:hover { background: rgba(255,255,255,.09); color: #fff; }
.sidebar .nav-link.active { background: #fff; color: var(--jr-primary); font-weight: 600; }
.sidebar .btn-outline-light { min-height: 40px; }
main { min-width: 0; max-width: 1400px; }
.offcanvas.text-bg-dark { background: var(--jr-nav) !important; }
.offcanvas .nav-link { min-height: 44px; display: flex; align-items: center; }

/* Tarjetas y KPIs */
.card { border: 1px solid var(--jr-border); border-radius: .75rem; box-shadow: 0 1px 2px rgba(15,23,42,.04); background: #fff; }
.stat-card { border-left: 4px solid var(--jr-secondary); }
.stat-card .num { font-size: 1.9rem; font-weight: 600; line-height: 1.1; color: var(--jr-primary); }
.stat-card .small { margin-top: .35rem; }

/* Tablas */
.table { --bs-table-bg: transparent; }
.table > thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--jr-muted); font-weight: 600; background: #f1f5f9; border-bottom: 1px solid var(--jr-border); white-space: nowrap; }
.table-jobs td, .table-jobs th { vertical-align: middle; padding: .85rem .75rem; }
.table-hover > tbody > tr { transition: background-color .15s; }
.table-hover > tbody > tr:hover > * { background-color: #eff6ff; }
.table-jobs a.fw-semibold { color: var(--jr-text); text-decoration: none; }
.table-jobs a.fw-semibold:hover { color: var(--jr-primary); text-decoration: underline; }
.table-responsive { -webkit-overflow-scrolling: touch; }

/* Etiquetas: texto oscuro sobre fondos claros para contraste >= 4.5:1 */
.badge { font-weight: 500; font-size: .78rem; padding: .4em .65em; border-radius: .4rem; white-space: normal; text-align: left; }
.badge.text-bg-success { background: #dcfce7 !important; color: #14532d !important; }
.badge.text-bg-primary { background: #dbeafe !important; color: #1e3a8a !important; }
.badge.text-bg-info { background: #e0f2fe !important; color: #075985 !important; }
.badge.text-bg-warning { background: #fef3c7 !important; color: #78350f !important; }
.badge.text-bg-danger { background: #fee2e2 !important; color: #7f1d1d !important; }
.badge.text-bg-secondary { background: #e2e8f0 !important; color: #334155 !important; }

/* Pestañas y filtros */
.nav-tabs .nav-link { color: var(--jr-muted); min-height: 44px; cursor: pointer; }
.nav-tabs .nav-link.active { color: var(--jr-primary); font-weight: 600; border-bottom-color: #fff; }

/* Caja "¿Dónde envío mi CV?" */
.apply-box { border: 2px solid var(--jr-primary); background: linear-gradient(180deg, #eff6ff, #fff); border-radius: .9rem; box-shadow: 0 6px 18px rgba(30,64,175,.12); }
.apply-box h2 { color: var(--jr-primary); }
.apply-box dd a { word-break: break-all; }

.alert { border-radius: .6rem; }
dl.row dt { color: var(--jr-muted); font-weight: 500; }

/* Móvil */
@media (max-width: 575.98px) {
  main { padding: 1rem !important; }
  .stat-card .num { font-size: 1.5rem; }
  .table-jobs td, .table-jobs th { padding: .6rem .5rem; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }
