  *{ box-sizing:border-box; }
  body{
    margin:0; background:var(--paper); color:var(--ink);
    font-family:'Inter',system-ui,sans-serif; font-size:15px; line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  .mono{ font-family:'JetBrains Mono',monospace; }
  a{ color:inherit; }
  :focus-visible{ outline:2px solid var(--focus); outline-offset:2px; }
  @media (prefers-reduced-motion:reduce){ *{ animation:none!important; transition:none!important; } }

  /* ── Masthead ── */
  .masthead{ text-align:center; padding:34px 20px 26px; position:relative; }
  .eyebrow{
    display:flex; align-items:center; justify-content:center; gap:14px;
    color:var(--red); font-family:'JetBrains Mono',monospace; font-size:11.5px;
    letter-spacing:2px; text-transform:uppercase; margin-bottom:16px;
  }
  .eyebrow::before, .eyebrow::after{ content:''; height:1px; width:48px; background:var(--line); }
  h1{
    font-family:'Lora',serif; font-weight:700; font-size:clamp(28px,4.5vw,42px);
    margin:0 0 10px; letter-spacing:-0.01em;
  }
  .fecha-hoy{
    font-family:'JetBrains Mono',monospace; font-size:12.5px; letter-spacing:.5px;
    text-transform:uppercase; color:var(--red-deep); margin:0 0 14px;
  }
  .sub{ color:var(--ink-soft); max-width:520px; margin:0 auto 26px; font-size:15px; }

  .buscador{
    max-width:560px; margin:0 auto; display:flex; gap:8px;
  }
  .buscador input{
    flex:1; border:1.5px solid var(--ink); border-radius:9px; padding:13px 16px;
    font-size:15px; font-family:inherit; background:var(--card);
  }
  .buscador button{
    background:var(--red); color:#fff; border:none; border-radius:9px;
    padding:0 22px; font-family:'Lora',serif; font-weight:600; font-size:15px;
    cursor:pointer;
  }
  .buscador button:hover{ background:var(--red-deep); }

  /* ── Filtros ── */
  .filtros-wrap{ background:var(--card); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
  .filtros{
    max-width:1180px; margin:0 auto; padding:16px 20px; display:flex; gap:12px;
    flex-wrap:wrap; align-items:center;
  }
  .filtros select, .filtros .rango input{
    border:1px solid var(--line); border-radius:7px; padding:9px 11px;
    font-family:inherit; font-size:13.5px; background:var(--paper); color:var(--ink);
  }
  .filtros label.campo{ display:flex; flex-direction:column; gap:4px; font-size:11px; color:var(--ink-soft); }
  .rango{ display:flex; align-items:center; gap:6px; }
  .rango input{ width:88px; }
  .limpiar{
    margin-left:auto; background:none; border:none; color:var(--red);
    font-size:13px; font-weight:600; cursor:pointer; padding:6px 4px;
  }
  .limpiar:hover{ text-decoration:underline; }

  .filtros-rapidos{
    max-width:1180px; margin:0 auto; padding:14px 20px 0; display:flex;
    align-items:center; gap:8px; flex-wrap:wrap;
  }
  .filtros-rapidos-label{ font-size:12.5px; color:var(--ink-soft); font-weight:600; }
  .chip{
    border:1px solid var(--line); background:var(--card); color:var(--ink-soft);
    border-radius:99px; padding:6px 14px; font-size:12.5px; font-weight:600;
    cursor:pointer; font-family:inherit; transition:background .12s, color .12s, border-color .12s;
  }
  .chip:hover{ border-color:var(--red); color:var(--red); }
  .chip.activo{ background:var(--red); border-color:var(--red); color:#fff; }

  .resumen-row{
    max-width:1180px; margin:0 auto; padding:18px 20px 0; display:flex;
    justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px;
  }
  .resumen{ font-size:13.5px; color:var(--ink-soft); }
  .resumen b{ color:var(--ink); }
  .orden select{
    border:1px solid var(--line); border-radius:7px; padding:8px 10px;
    font-family:inherit; font-size:13px; background:var(--card);
  }

  /* ── Grid de tarjetas ── */
  .grid{
    max-width:1180px; margin:0 auto; padding:18px 20px 40px;
    display:grid; grid-template-columns:repeat(auto-fill, minmax(300px,1fr)); gap:18px;
  }
  .card{
    position:relative; background:var(--card); border:1px solid var(--line-soft);
    border-radius:14px; padding:20px 20px 16px; display:flex; flex-direction:column;
    transition:box-shadow .15s, transform .15s;
  }
  .card:hover{ box-shadow:0 6px 20px rgba(20,33,61,.08); transform:translateY(-2px); }

  .fuente-tag{
    font-family:'JetBrains Mono',monospace; font-size:10.5px; letter-spacing:.5px;
    text-transform:uppercase; color:var(--ink-soft); margin-bottom:8px;
  }
  .card .entidad{ font-size:12.5px; font-weight:600; color:var(--ink-soft); margin-bottom:4px; }
  .card h3{
    font-family:'Lora',serif; font-size:18px; font-weight:600; margin:0 0 12px;
    line-height:1.3;
  }
  .card h3 a{ color:inherit; text-decoration:none; }
  .card h3 a:hover{ text-decoration:underline; }
  .badges{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
  .badge{
    font-size:12px; padding:4px 10px; border-radius:99px; background:var(--paper);
    border:1px solid var(--line-soft); color:var(--ink);
  }
  .badge.sueldo{ font-family:'JetBrains Mono',monospace; font-weight:600; color:var(--red-deep); border-color:#E7B9B0; background:var(--red-tint); }
  .badge.plazas{ color:var(--ink-soft); border-color:var(--line); background:var(--line-soft); font-weight:600; }

  .card-foot{ margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:10px; border-top:1px solid var(--line-soft); }
  .ver-mas{
    background:var(--red); color:#fff; border:none; border-radius:8px; padding:9px 14px;
    font-family:'Lora',serif; font-weight:600; font-size:13.5px; cursor:pointer;
    text-decoration:none; display:inline-block;
  }
  .ver-mas:hover{ background:var(--red-deep); }
  .compartir{ display:flex; gap:6px; }
  .compartir a{
    width:28px; height:28px; border-radius:50%; background:var(--paper); border:1px solid var(--line-soft);
    display:flex; align-items:center; justify-content:center; font-size:13px; text-decoration:none;
  }
  .compartir a:hover{ background:var(--line-soft); }

  .vacio{ text-align:center; padding:70px 20px; color:var(--ink-soft); }
  .vacio h3{ font-family:'Lora',serif; color:var(--ink); font-size:20px; margin-bottom:8px; }
  .aviso-antiguas{
    background:var(--line-soft); border:1px solid var(--line); border-radius:10px;
    padding:12px 16px; margin-bottom:18px; font-size:13.5px; color:var(--ink-soft);
  }

  .paginacion{ display:flex; justify-content:center; align-items:center; gap:14px; padding:10px 20px 50px; }
  .paginacion button{
    border:1px solid var(--line); background:var(--card); border-radius:7px; padding:8px 14px;
    font-family:inherit; font-size:13px; cursor:pointer;
  }
  .paginacion button:disabled{ opacity:.4; cursor:default; }
  .paginacion span{ font-size:13px; color:var(--ink-soft); }

  /* ── Modal de detalle ── */
  .overlay{
    display:none; position:fixed; inset:0; background:rgba(20,33,61,.55); z-index:50;
    align-items:flex-start; justify-content:center; overflow-y:auto; padding:30px 16px;
  }
  .overlay.on{ display:flex; }
  .modal{
    background:var(--card); max-width:680px; width:100%; border-radius:16px;
    padding:0; margin-top:10px;
  }
  .modal-head{ background:var(--ink); color:#fff; padding:22px 26px; border-radius:16px 16px 0 0; position:relative; }
  .modal-head .fuente-tag{ color:#a9b4cc; }
  .modal-head .entidad{ color:#c7cfe0; }
  .modal-head h2{ font-family:'Lora',serif; font-size:22px; margin:4px 0 0; padding-right:30px; }
  .modal-close{
    position:absolute; top:18px; right:20px; background:none; border:none; color:#fff;
    font-size:22px; cursor:pointer; line-height:1;
  }
  .modal-body{ padding:22px 26px; }
  .stat-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:18px; }
  .stat{ background:var(--paper); border-radius:10px; padding:10px 14px; }
  .stat .l{ font-size:10.5px; text-transform:uppercase; letter-spacing:.6px; color:var(--ink-soft); margin-bottom:3px; }
  .stat .v{ font-weight:600; font-family:'JetBrains Mono',monospace; font-size:14.5px; }
  .perfil-item{ margin-bottom:14px; }
  .perfil-item .l{ font-weight:600; font-size:13px; margin-bottom:3px; }
  .perfil-item .v{ font-size:13.5px; color:var(--ink-soft); line-height:1.55; }
  table.multiplaza{ width:100%; border-collapse:collapse; margin:6px 0 18px; font-size:13px; }
  table.multiplaza th, table.multiplaza td{ border:1px solid var(--line-soft); padding:8px 10px; text-align:left; }
  table.multiplaza th{ background:var(--paper); font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--ink-soft); }
  .modal-links{ display:flex; gap:10px; flex-wrap:wrap; margin:18px 0 6px; }
  .modal-links a{
    text-decoration:none; border:1.5px solid var(--ink); border-radius:8px; padding:10px 16px;
    font-weight:600; font-size:13.5px; display:inline-flex; align-items:center; gap:6px;
  }
  .modal-links a.primary{ background:var(--red); border-color:var(--red); color:#fff; }
  .modal-links a.primary:hover{ background:var(--red-deep); }
  .sin-url-box{
    background:var(--paper); border:1px dashed var(--line); border-radius:10px;
    padding:14px 16px; margin:18px 0 6px;
  }
  .sin-url-box .l{ font-size:11.5px; color:var(--ink-soft); margin-bottom:6px; }
  .sin-url-box .codigo-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .sin-url-box .codigo{
    font-family:'JetBrains Mono',monospace; font-size:13px; background:var(--card);
    border:1px solid var(--line-soft); border-radius:6px; padding:6px 10px; flex:1; min-width:180px;
  }
  .sin-url-box button{
    border:1px solid var(--ink); background:var(--card); border-radius:6px; padding:6px 10px;
    font-size:12.5px; cursor:pointer; font-family:inherit;
  }
  .sin-url-box button:hover{ background:var(--ink); color:#fff; }
  .sin-url-box a.buscar-portal{
    display:inline-block; margin-top:8px; font-size:12.5px; color:var(--ink-soft); text-decoration:underline;
  }

  .estado-carga{ text-align:center; padding:80px 20px; color:var(--ink-soft); }

  .seo-block, .faq-block{
    max-width:720px; margin:0 auto; padding:36px 20px 8px;
  }
  .seo-block h2, .faq-block h2{
    font-family:'Lora',serif; font-weight:700; font-size:22px; margin:0 0 14px;
    letter-spacing:-0.01em; text-align:center;
  }
  .seo-block p{ color:var(--ink-soft); font-size:14px; line-height:1.65; margin:0 0 14px; }

  .faq-block details{
    border-bottom:1px solid var(--line-soft); padding:14px 0;
  }
  .faq-block details:first-of-type{ border-top:1px solid var(--line-soft); }
  .faq-block summary{
    cursor:pointer; font-weight:600; font-size:14.5px; list-style:none;
    display:flex; align-items:center; justify-content:space-between; gap:12px;
  }
  .faq-block summary::-webkit-details-marker{ display:none; }
  .faq-block summary::after{
    content:'+'; font-family:'JetBrains Mono',monospace; color:var(--red);
    font-size:18px; flex:none; transition:transform .15s;
  }
  .faq-block details[open] summary::after{ content:'–'; }
  .faq-block details p{
    color:var(--ink-soft); font-size:13.5px; line-height:1.6; margin:12px 0 0;
  }

  @media (max-width:640px){
    .stat-grid{ grid-template-columns:1fr; }
    .filtros{ flex-direction:column; align-items:stretch; }
    .limpiar{ margin-left:0; align-self:flex-start; }
  }
