:root{
  --orange-50:#FFF4E9;
  --orange-100:#FFE4C7;
  --orange-300:#FFB066;
  --orange-500:#FF7A1A;
  --orange-600:#F2650A;
  --orange-700:#C24E00;
  --orange-900:#7A3000;
  --white:#FFFFFF;
  --ink:#2B1B12;
  --ink-soft:#7A6A5E;
  --line:#F4E3D3;
  --bg:#FFFDFB;
  --success:#5B8C3A;
  --success-bg:#EEF6E8;
  --danger:#D6432B;
  --danger-bg:#FCEAE5;
  --radius-lg:28px;
  --radius-md:18px;
  --radius-sm:12px;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:linear-gradient(160deg, var(--orange-50), #FFFFFF 60%);
  font-family:'Inter',system-ui,sans-serif;
  color:var(--ink);
  display:flex;
  justify-content:center;
}
h1,h2,h3,.display{font-family:'Baloo 2',sans-serif;}
h3{margin:0 0 8px; font-size:19px;}
.num{font-family:'Space Mono',monospace;}
a{color:var(--orange-700);}
button{font:inherit;color:inherit;}
[hidden]{display:none !important;}

/* ---------- Contenedor de la app ---------- */
.app{
  position:relative;
  width:100%;
  max-width:440px;
  height:100vh;
  height:100dvh;
  background:var(--white);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
@media (min-width:520px){
  body{align-items:center; padding:20px 0;}
  .app{
    height:min(880px, calc(100dvh - 40px));
    border-radius:32px;
    box-shadow:0 30px 60px -20px rgba(122,48,0,0.35), 0 8px 20px rgba(0,0,0,0.08);
    border:1px solid var(--line);
  }
}

.app-bar{
  display:flex; align-items:center; gap:10px;
  padding:calc(10px + env(safe-area-inset-top)) 16px 8px;
  border-bottom:1px solid var(--line);
  background:var(--white);
  z-index:5;
}
.app-bar .brand-row{flex:1; display:flex; align-items:center; gap:8px;}
.brand-row img{width:30px;height:30px;object-fit:cover;border-radius:50%;border:2px solid var(--orange-500);}
.brand-name{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:20px;color:var(--orange-700);letter-spacing:-0.5px;}
.app-bar-back{
  background:var(--orange-50); border:none; width:34px;height:34px;
  border-radius:50%; cursor:pointer; font-size:15px; color:var(--orange-700);
}
.bell{position:relative;background:var(--orange-50);border:none;width:38px;height:38px;border-radius:50%;font-size:17px;cursor:pointer;}
.bell-count{
  position:absolute; top:-3px; right:-3px; min-width:18px; height:18px; padding:0 5px;
  background:var(--danger); color:#fff; border-radius:999px; font-size:10.5px; font-weight:700;
  display:flex; align-items:center; justify-content:center;
}

.screen-area{
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
  padding-bottom:24px;
  animation:fadeIn .25s ease;
}
.screen-area::-webkit-scrollbar{width:0;}
@keyframes fadeIn{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);}}

.px{padding-left:20px; padding-right:20px;}
.center{text-align:center;}
.izq{text-align:left;}
.mt{margin-top:12px;} .mt-s{margin-top:8px;} .mb{margin-bottom:14px;}
.fw7{font-weight:700;} .fw8{font-weight:800;} .t16{font-size:16px;}
.muted{color:var(--ink-soft);} .small{font-size:12px; line-height:1.45;}
.flex1{flex:1; min-width:0;}
.opcional{font-weight:500; text-transform:none; letter-spacing:0; color:var(--ink-soft);}

.cargando{display:flex; justify-content:center; padding:60px 0;}

/* ---------- Bottom nav ---------- */
.bottom-nav{
  display:flex;
  border-top:1px solid var(--line);
  background:var(--white);
  padding:6px 6px calc(10px + env(safe-area-inset-bottom));
}
.nav-btn{
  flex:1; background:none; border:none;
  display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:6px 2px; cursor:pointer; color:var(--ink-soft);
  font-size:10.5px; font-weight:600; border-radius:12px; transition:.15s;
}
.nav-btn .icon{font-size:19px; line-height:1;}
.nav-btn.active{color:var(--orange-600);}
.nav-btn.active .icon{transform:translateY(-2px);}

/* ---------- Componentes ---------- */
.card{
  background:var(--white);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  padding:16px;
  box-shadow:0 2px 10px rgba(122,48,0,0.04);
}
.card.naranja{background:var(--orange-50); border:none;}
.btn-primary,.btn-secondary,.btn-danger{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%; border-radius:999px; padding:14px 18px;
  font-family:'Baloo 2',sans-serif; font-weight:700; font-size:15.5px;
  cursor:pointer; text-decoration:none; text-align:center; min-height:50px;
}
.btn-primary{background:var(--orange-500); color:var(--white); border:none; box-shadow:0 6px 16px rgba(255,122,26,0.32); transition:transform .12s ease;}
.btn-primary:active{transform:scale(0.97);}
.btn-primary:disabled{opacity:.5; cursor:not-allowed; box-shadow:none;}
.btn-secondary{background:var(--white); color:var(--orange-700); border:2px solid var(--orange-500);}
.btn-secondary:disabled{opacity:.5;}
.btn-danger{background:var(--danger); color:#fff; border:none; box-shadow:0 6px 16px rgba(214,67,43,0.3);}
.btn-ghost{background:none;border:none;color:var(--ink-soft);font-weight:600;font-size:13.5px;text-decoration:underline;cursor:pointer;}
.btn-mini{
  display:inline-flex; align-items:center; gap:6px;
  background:var(--orange-50); color:var(--orange-700); border:1.5px solid var(--orange-100);
  border-radius:999px; padding:7px 12px; font-size:12.5px; font-weight:700; cursor:pointer; text-decoration:none;
}
.btn-mini-primario{background:var(--orange-500); color:#fff; border-color:var(--orange-500);}
.dos-botones{display:flex; gap:8px; flex-wrap:wrap;}
.dos-col{display:flex; gap:10px;} .dos-col > *{flex:1;}

.spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;display:inline-block;animation:gira .7s linear infinite;}
.spinner-dark{border-color:var(--orange-100); border-top-color:var(--orange-500); width:28px; height:28px;}
@keyframes gira{to{transform:rotate(360deg);}}

.input-group{margin-bottom:14px;}
.input-group > label{
  display:block;font-size:12.5px;font-weight:700;color:var(--ink-soft);
  margin-bottom:6px; text-transform:uppercase; letter-spacing:0.4px;
}
.input-group input, .input-group select, .input-group textarea, .input, .textarea{
  width:100%;
  border:1.5px solid var(--line);
  background:var(--orange-50);
  border-radius:var(--radius-sm);
  padding:13px 14px;
  font-family:'Inter',sans-serif;
  font-size:15px;
  color:var(--ink);
  outline:none;
}
.textarea{margin-top:10px; resize:vertical;}
.input-group input:focus, .input-group select:focus, .input-group textarea:focus, .input:focus, .textarea:focus{border-color:var(--orange-500); background:#fff;}
.invalido{border-color:var(--danger) !important;}
.campo-ayuda{font-size:11.5px; color:var(--ink-soft); margin-top:5px; line-height:1.4;}
.campo-ayuda.ok{color:var(--success); font-weight:600;}
.campo-ayuda.error{color:var(--danger); font-weight:600;}
.subir-foto{
  display:flex; align-items:center; justify-content:center; gap:10px;
  border:1.5px dashed var(--orange-300); border-radius:12px; padding:14px;
  font-size:13px; color:var(--ink-soft); background:var(--orange-50); cursor:pointer;
}
.foto-previa{width:44px; height:44px; border-radius:50%; object-fit:cover; vertical-align:middle; margin-right:6px;}
.check{display:flex; gap:10px; align-items:flex-start; font-size:12.5px; color:var(--ink-soft); line-height:1.45; cursor:pointer;}
.check input{width:20px; height:20px; accent-color:var(--orange-500); flex-shrink:0; margin-top:1px;}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap;}
.badge-nuevo{background:var(--orange-50); color:var(--orange-700);}
.badge-confiable{background:var(--orange-100); color:var(--orange-700);}
.badge-plus{background:var(--orange-500); color:var(--white);}

.estado{display:inline-block; padding:2px 9px; border-radius:999px; font-size:11px; font-weight:700; background:var(--orange-50); color:var(--orange-700); white-space:nowrap;}
.st-abierto{background:#FFF7D6; color:#8A6400;}
.st-asignado{background:var(--orange-100); color:var(--orange-700);}
.st-curso{background:var(--orange-500); color:#fff;}
.st-fin{background:#E8F0FB; color:#2A5BA8;}
.st-pagado{background:var(--success-bg); color:var(--success);}
.st-cancel{background:var(--danger-bg); color:var(--danger);}
.st-postul{background:var(--orange-50); color:var(--orange-900);}

.divider{height:1px;background:var(--line); margin:12px 0;}
.fila{display:flex; justify-content:space-between; gap:12px; font-size:13px; margin-bottom:6px;}
.fila > span:last-child{text-align:right;}
.fila.total{font-weight:800; font-size:15px; color:var(--orange-700); margin:0;}
.fila-icono{display:flex; gap:12px; align-items:center;}
.desc{font-size:13.5px; line-height:1.5; margin:12px 0 0; white-space:pre-wrap;}

.aviso{
  background:var(--orange-50); border-radius:var(--radius-sm); padding:12px 14px;
  font-size:12.8px; color:var(--orange-900); line-height:1.5;
}
.aviso .btn-mini{margin-top:8px;}
.aviso.ok{background:var(--success-bg); color:#3D6624;}
.aviso.error{background:var(--danger-bg); color:var(--danger); font-weight:600;}
.aviso + .aviso{margin-top:8px;}

/* ---------- Avatar ---------- */
.avatar{width:44px;height:44px;border-radius:14px;object-fit:cover;flex-shrink:0;display:inline-flex;}
.avatar-ini{background:var(--orange-100); color:var(--orange-700); font-weight:800; align-items:center; justify-content:center; font-size:15px;}
.avatar-sm{width:40px; height:40px; border-radius:50%;}
.avatar-md{width:46px; height:46px; border-radius:50%; border:2px solid var(--orange-500);}
.avatar-lg{width:76px; height:76px; border-radius:50%; border:3px solid var(--orange-500); font-size:24px;}

/* ---------- Bienvenida ---------- */
.mascot-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:22px 20px 6px;}
.mascot-hero img{height:120px; margin-bottom:4px;}
.hero-grande img{height:220px;}
.hero-grande{padding-top:30px;}
.mascot-hero h1{font-size:25px;color:var(--orange-700);margin:6px 0 4px;line-height:1.1;}
.mascot-hero p{font-size:13.5px;color:var(--ink-soft);margin:0 0 18px;line-height:1.5;}
.helper-note{text-align:center; font-size:11px; color:var(--ink-soft); padding:10px 24px 4px; line-height:1.4;}

/* ---------- Inicio trabajador ---------- */
.saludo{display:flex; align-items:center; gap:10px; padding-top:14px; padding-bottom:12px;}
.saludo-txt{flex:1;}
.switch{display:flex; flex-direction:column; align-items:center; gap:2px; cursor:pointer;}
.switch input{display:none;}
.switch span{width:42px; height:24px; border-radius:999px; background:#E5D8CC; position:relative; transition:.2s;}
.switch span::after{content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; transition:.2s; box-shadow:0 1px 3px rgba(0,0,0,.2);}
.switch input:checked + span{background:var(--success);}
.switch input:checked + span::after{left:21px;}
.switch small{font-size:9.5px; color:var(--ink-soft); font-weight:600;}

.radar-wrap{
  position:relative; width:100%; height:150px;
  background:radial-gradient(circle at center, var(--orange-50) 0%, var(--white) 72%);
  border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center;
  overflow:hidden; margin-bottom:10px; border:1px solid var(--line);
}
.radar-ring{position:absolute;border:2px solid var(--orange-300);border-radius:50%;opacity:0;animation:radarPulse 2.6s ease-out infinite;}
.radar-ring:nth-child(2){animation-delay:.9s;}
.radar-ring:nth-child(3){animation-delay:1.8s;}
@keyframes radarPulse{0%{width:20px;height:20px;opacity:.7;}100%{width:220px;height:220px;opacity:0;}}
.radar-center{width:44px;height:44px;border-radius:50%;background:var(--orange-500);display:flex;align-items:center;justify-content:center;font-size:20px;z-index:3;box-shadow:0 4px 14px rgba(255,122,26,.5);}
.radar-pin{position:absolute;font-size:16px;z-index:2;transform:translate(-50%,-50%);animation:pinPop .5s ease backwards;}
@keyframes pinPop{from{transform:translate(-50%,-50%) scale(0);} to{transform:translate(-50%,-50%) scale(1);}}
.radar-txt{text-align:center; font-size:12.5px; color:var(--orange-700); font-weight:700; margin-bottom:14px;}
.radar-mini{position:relative; height:110px; display:flex; align-items:center; justify-content:center; overflow:hidden;}

/* ---------- Tarjeta de trabajo ---------- */
.job-card{
  display:flex; gap:12px; width:100%; text-align:left;
  padding:14px; border:1px solid var(--line); border-radius:var(--radius-md);
  margin-bottom:10px; cursor:pointer; transition:.15s; background:var(--white);
}
.job-card:active{background:var(--orange-50);}
.job-card.bloqueado{opacity:.62;}
.job-icon{width:44px;height:44px;flex-shrink:0;background:var(--orange-50);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:21px;}
.job-icon.grande{width:54px;height:54px;font-size:27px;}
.job-info{flex:1; min-width:0;}
.job-title{font-weight:700;font-size:14.5px;margin-bottom:2px;}
.job-sub{font-size:12.3px; color:var(--ink); margin-bottom:2px;}
.job-meta{font-size:11.8px;color:var(--ink-soft); margin-top:2px;}
.job-rate{font-weight:700;color:var(--orange-700);font-size:14px;white-space:nowrap;text-align:right;}
.por-hora{font-size:9.5px; color:var(--ink-soft);}

.chip-row{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:4px;margin-bottom:12px;}
.chip-row::-webkit-scrollbar{height:0;}
.chip-row.wrap{flex-wrap:wrap;}
.center-row{justify-content:center;}
.chip{
  flex-shrink:0; padding:7px 14px; border-radius:999px;
  background:var(--orange-50); color:var(--orange-700);
  font-size:12.5px; font-weight:700; cursor:pointer; white-space:nowrap; border:1.5px solid transparent;
}
.chip.active{background:var(--orange-500); color:var(--white);}
.floor-note{font-size:11.8px; color:var(--orange-700); font-weight:600;}
.floor-source{font-size:10.5px; color:var(--ink-soft); margin-top:2px;}

.iconos{display:flex; flex-wrap:wrap; gap:6px;}
.iconos button{width:40px; height:40px; border-radius:12px; border:1.5px solid var(--line); background:#fff; font-size:19px; cursor:pointer;}
.iconos button.active{border-color:var(--orange-500); background:var(--orange-50);}

.section-title{font-size:12.5px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.5px;margin:18px 0 10px;}

.vacio{text-align:center; padding:26px 10px; color:var(--ink-soft); font-size:13.5px; line-height:1.5;}
.vacio-icono{font-size:40px; margin-bottom:6px;}
.vacio .btn-primary,.vacio .btn-secondary{margin-top:14px;}

.empty-note{
  display:flex; align-items:flex-start; gap:8px;
  background:var(--orange-50); border-radius:var(--radius-sm);
  padding:12px 14px; font-size:12px; color:var(--orange-900);
  line-height:1.5; margin-top:6px;
}

.stars{color:var(--orange-500); font-size:14px; letter-spacing:1px;}
.link-perfil{background:none; border:none; padding:0; color:var(--orange-700); font-weight:600; font-size:12.5px; cursor:pointer; text-decoration:underline; text-align:left;}

/* ---------- Mapas ---------- */
.mapa{height:190px; border-radius:var(--radius-md); overflow:hidden; border:1px solid var(--line); margin-top:10px; z-index:0;}
.pin-emoji{background:none; border:none;}
.pin-emoji span{display:flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:50% 50% 50% 0; background:#fff; border:2px solid var(--orange-500); transform:rotate(-45deg); box-shadow:0 3px 8px rgba(0,0,0,.25);}
.pin-emoji span{font-size:17px;}
.pin-emoji i{transform:rotate(45deg); font-style:normal; display:block;}
.pin-yo span{border-color:#2A5BA8;}
.resultado-dir{display:block; width:100%; text-align:left; background:#fff; border:1px solid var(--line); border-radius:10px; padding:9px 11px; font-size:12px; margin-top:6px; cursor:pointer;}

/* ---------- Trabajo activo ---------- */
.cronometro{font-size:32px; font-weight:700; color:var(--orange-700);}
.panic-btn{
  width:100%; background:linear-gradient(135deg, var(--danger), #E8623F); color:var(--white);
  border:none; border-radius:var(--radius-md); padding:18px; font-family:'Baloo 2',sans-serif; font-weight:800; font-size:16px;
  display:flex; align-items:center; justify-content:center; gap:10px; cursor:pointer; box-shadow:0 8px 20px rgba(214,67,43,.3);
}
.progress-track{height:10px;background:var(--orange-50);border-radius:999px;overflow:hidden;margin:8px 0 4px;}
.progress-fill{height:100%;background:var(--orange-500);border-radius:999px;transition:width .6s ease;}
.list-check{list-style:none; padding:0; margin:0;}
.list-check li{display:flex; gap:8px; align-items:flex-start; font-size:12.8px; margin-bottom:8px; line-height:1.4;}
.list-check li::before{content:"✅"; font-size:12px; margin-top:1px;}

.star-picker{display:flex; justify-content:center; gap:4px; margin:4px 0 14px;}
.star-picker button{background:none; border:none; font-size:36px; color:var(--orange-100); cursor:pointer; padding:0 2px; transition:transform .1s;}
.star-picker button.on{color:var(--orange-500);}
.star-picker button:active{transform:scale(1.2);}

/* ---------- Postulantes ---------- */
.postulante{display:flex; align-items:center; gap:8px; border:1px solid var(--line); border-radius:var(--radius-md); padding:10px; margin-bottom:10px;}
.postulante-info{flex:1; display:flex; gap:10px; align-items:flex-start; background:none; border:none; cursor:pointer; padding:0; min-width:0;}
.cita{margin-top:4px; color:var(--ink); font-style:italic;}

/* ---------- Perfil ---------- */
.perfil-cab{display:flex; gap:14px; align-items:center; margin:6px 0 16px;}
.foto-editable{position:relative; cursor:pointer;}
.foto-cam{position:absolute; right:-2px; bottom:-2px; background:#fff; border-radius:50%; width:26px; height:26px; display:flex; align-items:center; justify-content:center; font-size:13px; box-shadow:0 1px 4px rgba(0,0,0,.2);}
.grande-num{font-size:22px; font-weight:800; color:var(--orange-700);}
.nivel{display:flex; gap:10px; align-items:center; margin-bottom:8px; padding:12px;}
.nivel-actual{border-color:var(--orange-300); background:var(--orange-50);}
label.btn-secondary{cursor:pointer;}

/* ---------- Opiniones / notificaciones ---------- */
.opinion{border-bottom:1px solid var(--line); padding:10px 0;}
.etiquetas{display:flex; flex-wrap:wrap; gap:5px; margin:5px 0;}
.tag{background:var(--orange-50); color:var(--orange-700); border-radius:999px; padding:2px 9px; font-size:11px; font-weight:600;}
.noti{display:flex; flex-direction:column; gap:3px; width:100%; text-align:left; background:#fff; border:none; border-bottom:1px solid var(--line); padding:11px 4px; font-size:13px; cursor:pointer;}
.noti.nueva{background:var(--orange-50); border-radius:10px; padding:11px 10px;}

/* ---------- Chat ---------- */
.chat{display:flex; flex-direction:column; height:100%;}
.chat-cab{display:flex; gap:10px; align-items:center; padding:12px 16px; border-bottom:1px solid var(--line);}
.chat-msgs{flex:1; overflow-y:auto; padding:14px 14px 8px; display:flex; flex-direction:column; gap:6px; background:var(--bg);}
.chat-aviso{align-self:center; text-align:center; font-size:11px; color:var(--ink-soft); background:var(--orange-50); border-radius:10px; padding:6px 10px; margin-bottom:6px;}
.msg{max-width:78%; padding:9px 12px; border-radius:16px; font-size:14px; line-height:1.4; word-wrap:break-word; white-space:pre-wrap;}
.msg.mio{align-self:flex-end; background:var(--orange-500); color:#fff; border-bottom-right-radius:4px;}
.msg.otro{align-self:flex-start; background:#fff; border:1px solid var(--line); border-bottom-left-radius:4px;}
.msg-hora{display:block; font-size:10px; opacity:.7; margin-top:2px; text-align:right;}
.chat-form{display:flex; gap:8px; padding:10px 12px; border-top:1px solid var(--line); background:#fff;}
.chat-form input{flex:1; border:1.5px solid var(--line); background:var(--orange-50); border-radius:999px; padding:11px 16px; font-size:14.5px; outline:none;}
.chat-enviar{width:44px; height:44px; border-radius:50%; border:none; background:var(--orange-500); color:#fff; font-size:17px; cursor:pointer;}
.screen-area:has(.chat){padding-bottom:0; overflow:hidden;}

/* ---------- Modal ---------- */
.modal-fondo{position:absolute; inset:0; background:rgba(43,27,18,.45); display:flex; align-items:flex-end; z-index:900; animation:fadeIn .2s;}
.modal{position:relative; width:100%; max-height:85%; overflow-y:auto; background:#fff; border-radius:24px 24px 0 0; padding:22px 20px calc(22px + env(safe-area-inset-bottom));}
.modal .btn-primary,.modal .btn-danger,.modal .btn-secondary{margin-top:10px;}
.modal-x{position:absolute; top:12px; right:12px; background:var(--orange-50); border:none; width:32px; height:32px; border-radius:50%; cursor:pointer; color:var(--orange-700);}
.alerta-panico{text-align:center;}

/* ---------- Toast ---------- */
.toast{
  position:absolute; bottom:96px; left:50%;
  transform:translateX(-50%) translateY(20px);
  background:var(--ink); color:var(--white);
  padding:12px 18px; border-radius:16px; font-size:13px; font-weight:600;
  opacity:0; pointer-events:none; transition:all .3s ease; z-index:1000;
  max-width:88%; text-align:center;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0);}
.toast-error{background:var(--danger);}

.screen-header{display:flex; align-items:center; gap:10px; padding:16px 20px 6px;}
.screen-header h2{font-size:20px; margin:0;}

/* Campo trampa para bots: invisible para personas */
.trampa{position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden;}
