@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600&display=swap');

:root{
  --verde: #004F29;
  --verde-900: #00301a;
  --verde-100: #e8f0ea;
  --dorado: #A8A270;
  --marfil: #EEECE2;
  --marfil-100: #f7f6f0;
  --tinta: #16241d;
  --muted: #6b7a71;
  --border: #e3e2d6;
  --danger: #b64a3a;
  --f-display: 'Fraunces', Georgia, serif;
  --f-body: 'Poppins', -apple-system, sans-serif;
  --radius: 14px;
}
*,*::before,*::after{ box-sizing:border-box; }
body{
  margin:0; background: var(--marfil-100); color: var(--tinta); font-family: var(--f-body);
  font-size:14.5px; -webkit-font-smoothing:antialiased;
}
a{ color:inherit; text-decoration:none; }
h1,h2,h3{ font-family: var(--f-display); font-weight:600; margin:0 0 .3em; }

/* ---------- Login ---------- */
.auth-wrap{ min-height:100vh; display:flex; align-items:center; justify-content:center; background: var(--verde-900); padding:20px; }
.auth-card{ width:100%; max-width:380px; background: var(--blanco,#fff); border-radius:20px; padding:38px 34px; box-shadow: 0 30px 60px -20px rgba(0,0,0,.4); }
.auth-card img{ height:28px; margin-bottom:22px; }
.auth-card h1{ font-size:1.3rem; color: var(--verde-900); }
.auth-card p{ color: var(--muted); font-size:13.5px; margin-bottom:24px; }
.auth-error{ background:#fbeceb; color:#8a3527; border:1px solid #f1c9c3; padding:10px 14px; border-radius:10px; font-size:13px; margin-bottom:16px; }

/* ---------- Layout ---------- */
.app{ display:flex; min-height:100vh; }
.sidebar{ width:230px; flex:none; background: var(--verde-900); color: var(--marfil); padding:24px 18px; display:flex; flex-direction:column; }
.sidebar .brand{ display:flex; align-items:center; gap:10px; margin-bottom:32px; }
.sidebar .brand img{ height:24px; }
.sidebar nav{ display:flex; flex-direction:column; gap:4px; flex:1; }
.sidebar nav a{ padding:11px 14px; border-radius:10px; font-size:14px; font-weight:500; color: rgba(238,236,226,.75); display:flex; align-items:center; gap:10px; }
.sidebar nav a:hover{ background: rgba(238,236,226,.08); color: var(--marfil); }
.sidebar nav a.active{ background: var(--dorado); color: var(--verde-900); font-weight:600; }
.sidebar .user-box{ border-top:1px solid rgba(238,236,226,.15); padding-top:16px; margin-top:16px; }
.sidebar .user-name{ font-size:13.5px; font-weight:600; }
.sidebar .user-role{ font-size:11.5px; color: rgba(238,236,226,.55); text-transform:capitalize; }
.sidebar .logout{ display:block; margin-top:10px; font-size:12.5px; color: rgba(238,236,226,.6); }
.sidebar .logout:hover{ color: var(--marfil); }

.main{ flex:1; padding: 30px 36px 60px; max-width:100%; overflow-x:hidden; }
.topbar{ display:flex; align-items:center; justify-content:space-between; margin-bottom:28px; flex-wrap:wrap; gap:14px; }
.topbar h1{ font-size:1.5rem; color: var(--verde-900); }
.topbar .sub{ color: var(--muted); font-size:13.5px; margin-top:2px; }

/* ---------- Stat cards ---------- */
.stat-row{ display:grid; grid-template-columns: repeat(4,1fr); gap:16px; margin-bottom:26px; }
.stat-card{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); padding:18px 20px; }
.stat-card b{ display:block; font-family: var(--f-display); font-size:1.7rem; color: var(--verde); }
.stat-card span{ font-size:12.5px; color: var(--muted); }

/* ---------- Filtros ---------- */
.filters{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:18px; align-items:center; }
.filters select, .filters input[type=search]{
  padding:10px 14px; border:1.5px solid var(--border); border-radius:10px; font-family: var(--f-body); font-size:13.5px; background:#fff;
}
.filters input[type=search]{ min-width:220px; }

/* ---------- Tabla candidatos ---------- */
.table-wrap{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); overflow:hidden; }
table{ width:100%; border-collapse:collapse; }
th, td{ padding:13px 16px; text-align:left; font-size:13.5px; border-bottom:1px solid var(--border); }
th{ font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; color: var(--muted); background: var(--marfil-100); font-weight:600; }
tbody tr:hover{ background: var(--marfil-100); cursor:pointer; }
tbody tr:last-child td{ border-bottom:none; }
.cand-name{ font-weight:600; color: var(--verde-900); }
.cand-sub{ font-size:12px; color: var(--muted); }
.avatar{ width:34px; height:34px; border-radius:50%; background: var(--dorado); color: var(--verde-900); display:inline-flex; align-items:center; justify-content:center; font-weight:700; font-size:12.5px; margin-right:10px; }

.badge{ display:inline-block; padding:5px 12px; border-radius:999px; font-size:11.5px; font-weight:600; }
.badge-new{ background:#fde9c8; color:#8a5a12; }
.badge-progress{ background:#dcecff; color:#1d5a9c; }
.badge-success{ background: var(--verde-100); color: var(--verde); }
.badge-muted{ background:#eee; color:#888; }

.empty-state{ text-align:center; padding:60px 20px; color: var(--muted); }

/* ---------- Detalle de candidato ---------- */
.back-link{ display:inline-flex; align-items:center; gap:6px; color: var(--muted); font-size:13px; margin-bottom:16px; }
.back-link:hover{ color: var(--verde); }
.detail-grid{ display:grid; grid-template-columns: 1.3fr .9fr; gap:22px; align-items:start; }
.card{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); padding:24px; margin-bottom:20px; }
.card h2{ font-size:1.05rem; color: var(--verde-900); margin-bottom:16px; }
.profile-head{ display:flex; align-items:center; gap:16px; margin-bottom:6px; }
.profile-head .avatar{ width:54px; height:54px; font-size:18px; margin:0; }
.profile-head h2{ margin:0; font-size:1.3rem; }
.profile-head .sub{ color: var(--muted); font-size:13px; }

.info-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px 22px; }
.info-item span{ display:block; font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color: var(--muted); margin-bottom:3px; }
.info-item b{ font-size:14px; color: var(--tinta); font-weight:500; }

.status-form{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.status-form select{ padding:10px 14px; border-radius:10px; border:1.5px solid var(--border); font-family: var(--f-body); font-size:13.5px; }
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px 18px; border-radius:10px; border:none; background: var(--verde); color:#fff; font-family: var(--f-body); font-weight:600; font-size:13.5px; cursor:pointer; transition: background .2s, transform .2s; }
.btn:hover{ background: var(--verde-700,#0a5c32); transform: translateY(-1px); }
.btn-outline{ background:#fff; color: var(--verde); border:1.5px solid var(--verde); }
.btn-block{ width:100%; }
.btn-danger{ background: var(--danger); }

.cv-link{ display:inline-flex; align-items:center; gap:8px; padding:12px 16px; border:1.5px dashed var(--border); border-radius:10px; color: var(--verde); font-weight:600; font-size:13.5px; }
.cv-link:hover{ border-color: var(--verde); background: var(--verde-100); }

/* ---------- Muro de notas ---------- */
.note-form textarea, .note-form input[type=text]{ width:100%; padding:12px 14px; border-radius:10px; border:1.5px solid var(--border); font-family: var(--f-body); font-size:13.5px; margin-bottom:10px; }
.note-form textarea{ resize:vertical; min-height:70px; }
.note-item summary{ font-size:13.5px; cursor:pointer; font-weight:600; color: var(--verde-900); }
.note-item summary::marker{ color: var(--dorado); }
.notes-wall{ display:flex; flex-direction:column; gap:14px; margin-top:18px; }
.note-item{ border-left:3px solid var(--dorado); background: var(--marfil-100); border-radius:0 10px 10px 0; padding:12px 16px; }
.note-item p{ margin:0 0 6px; font-size:13.5px; white-space:pre-wrap; }
.note-meta{ font-size:11.5px; color: var(--muted); }
.timeline-mini{ display:flex; flex-direction:column; gap:10px; }
.timeline-mini li{ display:flex; justify-content:space-between; font-size:12.5px; padding:8px 0; border-bottom:1px dashed var(--border); }
.timeline-mini li:last-child{ border-bottom:none; }

/* ---------- Users (settings) ---------- */
.form-inline{ display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end; }
.form-inline .f{ display:flex; flex-direction:column; gap:5px; }
.form-inline input{ padding:10px 12px; border-radius:10px; border:1.5px solid var(--border); font-family: var(--f-body); font-size:13.5px; }
.form-inline label{ font-size:11.5px; color: var(--muted); text-transform:uppercase; letter-spacing:.04em; }
.status-settings-form input{ min-width:min(360px, 72vw); }
.status-settings-list{ list-style:none; padding:0; margin:18px 0 0; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; }
.status-settings-list li{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:var(--marfil-100); }
.status-settings-list code{ color:var(--muted); font-size:10px; }
.candidate-audio audio{ display:block; width:min(100%, 420px); margin:8px 0; }
.candidate-audio a{ display:inline-block; color:var(--verde); font-size:12px; font-weight:600; }

.flash{ padding:12px 16px; border-radius:10px; font-size:13.5px; margin-bottom:18px; }
.flash-ok{ background: var(--verde-100); color: var(--verde); }
.flash-err{ background:#fbeceb; color:#8a3527; }

@media (max-width: 980px){
  .app{ flex-direction:column; }
  .sidebar{ width:100%; flex-direction:row; align-items:center; padding:14px 18px; }
  .sidebar .brand{ margin:0; }
  .sidebar nav{ flex-direction:row; }
  .sidebar .user-box{ display:none; }
  .stat-row{ grid-template-columns:1fr 1fr; }
  .detail-grid{ grid-template-columns:1fr; }
}
