/* ============================================================
   EMTURIN — Publicaciones / Tesis (listados con filtros)
   ============================================================ */

/* ---- Cabecera de página ---- */
.page-hero{padding-block:var(--s8) var(--s6);border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.page-hero .ph-deco{position:absolute;right:-80px;top:-60px;width:340px;height:340px;border-radius:30px;
  background:var(--grad-brand);opacity:.10;transform:rotate(18deg)}
.page-hero h1{font-size:clamp(2.1rem,4.4vw,3.4rem);margin-top:var(--s3);max-width:18ch}
.page-hero .lead{margin-top:var(--s4);max-width:60ch}
.ph-meta{display:flex;flex-wrap:wrap;gap:var(--s4) var(--s6);margin-top:var(--s5);align-items:center}
.ph-meta .pm-stat b{font-family:var(--font-head);font-size:1.6rem;color:var(--ink);line-height:1}
.ph-meta .pm-stat span{font-size:.85rem;color:var(--muted);display:block}
.sync-pill{display:inline-flex;align-items:center;gap:8px;font-size:.82rem;color:var(--muted);
  background:var(--surface-2);border:1px solid var(--line);border-radius:30px;padding:7px 14px}
.sync-pill .dot{width:8px;height:8px;border-radius:50%;background:#2bb673;box-shadow:0 0 0 3px color-mix(in oklab,#2bb673,transparent 75%)}
.sync-pill b{color:var(--ink);font-weight:600}
.sync-pill.sync-pending .dot{background:#e08a1e;box-shadow:0 0 0 3px color-mix(in oklab,#e08a1e,transparent 75%)}

/* ---- Barra de filtros (sticky) ---- */
.filters{position:sticky;top:74px;z-index:50;background:color-mix(in oklab,var(--bg),transparent 8%);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding-block:var(--s4)}
.filters-row{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap}
.search-box{flex:1;min-width:220px;position:relative}
.search-box svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted)}
.search-box input{width:100%;height:46px;padding:0 16px 0 42px;border:1.5px solid var(--line-strong);border-radius:calc(var(--radius)*.7);
  background:var(--surface);color:var(--ink);font:inherit;font-size:.98rem;outline:none;transition:.18s}
.search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in oklab,var(--accent),transparent 84%)}
.select-field{position:relative;min-width:0}
.select-field select{appearance:none;height:46px;padding:0 38px 0 16px;border:1.5px solid var(--line-strong);
  border-radius:calc(var(--radius)*.7);background:var(--surface);color:var(--ink);font:inherit;font-size:.95rem;cursor:pointer;outline:none;transition:.18s;max-width:220px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.select-field select:hover{border-color:var(--accent-line)}
.select-field select:focus{border-color:var(--accent)}
.select-field::after{content:"";position:absolute;right:16px;top:50%;transform:translateY(-30%);
  border:5px solid transparent;border-top-color:var(--muted);pointer-events:none}

/* ---- Toggle de filtros ---- */
.filters-head{display:flex;align-items:center;justify-content:flex-end;gap:var(--s3);margin-bottom:var(--s3)}
.filters-count{font-size:.82rem;color:var(--muted);font-family:var(--font-head)}
.filters-count b{color:var(--accent)}
.filters-toggle{display:inline-flex;align-items:center;gap:6px;min-height:42px;padding:0 14px;
  border:1.5px solid var(--line-strong);border-radius:calc(var(--radius)*.6);
  background:var(--surface);color:var(--text);font-family:var(--font-head);font-size:.85rem;font-weight:500;
  cursor:pointer;transition:.18s}
.filters-toggle:hover{border-color:var(--accent);color:var(--accent)}
.filters-toggle .ft-icon{width:16px;height:16px;transition:transform .2s}
.filters-toggle[aria-expanded="false"] .ft-icon{transform:rotate(-90deg)}
.filters-body.is-closed{display:none}

/* Filtros en tablet/móvil: buscador a fila completa, selects en rejilla,
   tap targets más cómodos y sin desbordes */
@media(max-width:760px){
  .search-box{flex:1 1 100%;min-width:0}
  .select-field{flex:1 1 calc(50% - var(--s3))}
  .select-field select{max-width:none;width:100%}
  .btn-clear{flex:1 1 100%}
}
@media(max-width:440px){
  .select-field{flex:1 1 100%}
}
.btn-clear{height:46px;padding:0 18px;border:1.5px solid var(--line-strong);border-radius:calc(var(--radius)*.7);
  background:transparent;color:var(--text);font-family:var(--font-head);font-weight:500;cursor:pointer;transition:.18s}
.btn-clear:hover{border-color:var(--accent);color:var(--accent)}

/* Chips de años (acceso rápido) */
.year-chips{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:var(--s3)}
.year-chip{font-family:var(--font-head);font-size:.85rem;font-weight:500;padding:6px 14px;border-radius:30px;
  min-height:40px;border:1.5px solid var(--line-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:.15s}
.year-chip:hover{border-color:var(--accent-line);color:var(--accent)}
.year-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}

/* ---- Resultados ---- */
.results-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s4)}
.results-count{font-size:.95rem;color:var(--muted)}
.results-count b{color:var(--ink);font-family:var(--font-head)}

.year-group{margin-bottom:var(--s6)}
.year-group .yg-head{display:flex;align-items:center;gap:var(--s4);margin-bottom:var(--s4)}
.year-group .yg-head h3{font-size:1.5rem;color:var(--accent);font-family:var(--font-head)}
.year-group .yg-head .yg-line{flex:1;height:1px;background:var(--line)}
.year-group .yg-head .yg-n{font-size:.85rem;color:var(--muted)}

.pub{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s4);align-items:start;
  padding:var(--s4) var(--s5);background:var(--surface);border:var(--card-border);border-radius:var(--radius);
  margin-bottom:var(--s3);transition:transform .18s,box-shadow .18s,border-color .18s}
.pub:hover{transform:translateX(4px);box-shadow:var(--card-shadow-hover);border-color:var(--accent-line)}
.pub-badge{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:48px;padding-top:2px}
.pub-q{font-family:var(--font-head);font-weight:700;font-size:.78rem;padding:3px 9px;border-radius:7px;letter-spacing:.02em;
  background:var(--accent-soft);color:var(--accent)}
.pub-q.q1{background:color-mix(in oklab,#1f8a5b,transparent 86%);color:#1f8a5b}
.pub-q.q2{background:color-mix(in oklab,#2d6fe0,transparent 86%);color:#2d6fe0}
.pub-q.q3{background:color-mix(in oklab,#c98a16,transparent 84%);color:#a9730f}
.pub-q.q4{background:color-mix(in oklab,#9aa3b2,transparent 80%);color:#6c7686}
.pub-type{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;text-align:center}
.pub-main h4{font-family:var(--font-head);font-size:1.06rem;line-height:1.35;color:var(--ink);font-weight:600}
.pub-main .pub-auth{color:var(--text);font-size:.92rem;margin-top:6px}
.pub-main .pub-src{color:var(--muted);font-size:.88rem;margin-top:4px;font-style:italic}
.pub-aside{display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right}
.pub-year{font-family:var(--font-head);font-weight:600;color:var(--muted);font-size:1.05rem}
.pub-links{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.pub-doi{font-size:.8rem;color:var(--accent);font-weight:600;display:inline-flex;align-items:center;gap:5px;
  min-height:40px;padding:6px 4px;white-space:nowrap}
.pub-doi svg{width:13px;height:13px}
.pub-doi:hover{text-decoration:underline}

@media(max-width:720px){
  .pub{grid-template-columns:auto 1fr;gap:var(--s3);padding:var(--s4)}
  .pub-aside{grid-column:2;flex-direction:row;align-items:center;justify-content:space-between;width:100%}
  .pub-links{flex-direction:row;align-items:center;gap:12px}
}

.load-more{display:flex;justify-content:center;margin-top:var(--s5)}
.empty{text-align:center;padding:var(--s8) var(--s4);color:var(--muted)}
.empty svg{width:48px;height:48px;margin-bottom:var(--s3);color:var(--line-strong)}

.research-lines{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.research-line-tag{display:inline-flex;align-items:center;max-width:100%;padding:5px 8px;border:1px solid #dce8f7;
  border-radius:6px;background:#f4f8fd;color:#315f91;font:600 .68rem/1.25 var(--font-head)}

/* ---- Tesis (variante) ---- */
.thesis{display:grid;grid-template-columns:84px 1fr;gap:var(--s5);padding:var(--s5);background:var(--surface);
  border:var(--card-border);border-radius:var(--radius);margin-bottom:var(--s4);transition:.2s}
.thesis:hover{transform:translateY(-3px);box-shadow:var(--card-shadow-hover)}
.thesis-year{font-family:var(--font-head);font-weight:700;font-size:1.5rem;color:#fff;background:var(--grad-brand);
  border-radius:calc(var(--radius)*.7);display:grid;place-items:center;align-self:start;aspect-ratio:1;width:84px}
.thesis h4{font-family:var(--font-head);font-size:1.18rem;color:var(--ink);line-height:1.3}
.thesis .th-author{color:var(--accent);font-weight:600;margin-top:6px;font-size:.96rem}
.thesis .th-meta{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);margin-top:var(--s3);font-size:.86rem;color:var(--muted)}
.thesis .th-meta b{color:var(--text);font-weight:600}
.thesis .th-grade{display:inline-block;margin-top:var(--s3);font-size:.78rem;font-weight:600;color:#1f8a5b;
  background:color-mix(in oklab,#1f8a5b,transparent 88%);padding:4px 12px;border-radius:20px}
@media(max-width:560px){.thesis{grid-template-columns:1fr}.thesis-year{width:64px;aspect-ratio:1.4/1}}
