/* ═══════════════════════════════════════════
   css/publications.css — algo-freedom society
   Stili specifici di publications.php — Pubblicazioni
   ═══════════════════════════════════════════ */

    .pub-hero{
      position:relative;
      min-height:340px;
      background:
        linear-gradient(105deg,rgba(8,22,44,.92) 0%,rgba(10,26,50,.68) 50%,rgba(14,32,58,.24) 100%),
        linear-gradient(135deg,#030b17 0%,#071829 35%,#0f2a46 65%,#1a3f60 100%);
      overflow:hidden;
      display:flex;
      align-items:center;
    }
    .pub-hero canvas{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; opacity:.45; }
    /* ruled-paper lines */
    .pub-hero::before{
      content:"";
      position:absolute; inset:0;
      background-image:repeating-linear-gradient(transparent,transparent 39px,rgba(105,168,232,.06) 39px,rgba(105,168,232,.06) 40px);
      pointer-events:none;
    }
    .pub-hero::after{
      content:"";
      position:absolute; inset:0;
      background:
        radial-gradient(700px 300px at 8% 22%,rgba(105,168,232,.12),transparent 60%),
        radial-gradient(500px 260px at 80% 65%,rgba(63,121,183,.10),transparent 58%);
      pointer-events:none; mix-blend-mode:screen;
    }
    .pub-hero-inner{ position:relative; z-index:2; padding:78px 0 72px; color:#fff; display:flex; align-items:flex-end; justify-content:space-between; gap:40px; }
    .pub-hero-left{ flex:1; }
    .pub-hero-badge{ display:inline-flex; align-items:center; gap:10px; background:rgba(105,168,232,.14); border:1px solid rgba(105,168,232,.26); border-radius:999px; padding:6px 16px; font-size:12.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; color:rgba(105,168,232,.95); margin-bottom:18px; animation:fadeSlide .7s ease both; }
    .pub-hero-badge .dot{ width:7px; height:7px; border-radius:50%; background:var(--accent); animation:pulse 2s ease infinite; }
    @keyframes pulse{ 0%,100%{opacity:1;transform:scale(1);}50%{opacity:.45;transform:scale(1.35);} }
    @keyframes fadeSlide{ from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:translateY(0);} }
    .pub-hero-title{ margin:0; font-size:60px; line-height:1.04; letter-spacing:-.6px; font-weight:800; text-shadow:0 14px 38px rgba(0,0,0,.38); animation:fadeSlide .7s .1s ease both; }
    .pub-hero-title .thin{ font-weight:100; opacity:.9; }
    .pub-hero-sub{ margin:14px 0 0; font-size:18px; color:rgba(255,255,255,.82); font-weight:500; max-width:580px; line-height:1.58; animation:fadeSlide .7s .2s ease both; }
    .pub-hero-stats{ display:flex; flex-direction:column; gap:12px; flex:0 0 auto; animation:fadeSlide .7s .3s ease both; }
    .stat-pill{ background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.15); border-radius:var(--radius); padding:14px 22px; text-align:right; backdrop-filter:blur(6px); min-width:155px; }
    .stat-pill .stat-num{ display:block; font-size:30px; font-weight:900; line-height:1; color:#fff; letter-spacing:-.5px; }
    .stat-pill .stat-label{ display:block; font-size:12px; font-weight:700; color:rgba(255,255,255,.68); letter-spacing:.3px; margin-top:4px; }

    /* ── Filter bar ──────────────────────────── */
    .filter-bar{ background:var(--card); border-bottom:2px solid rgba(15,23,42,.09); position:sticky; top:var(--header-h,76px); z-index:40; box-shadow:0 4px 12px rgba(15,23,42,.06); }
    .filter-inner{ display:flex; align-items:center; gap:0; padding:0; overflow-x:auto; scrollbar-width:none; }
    .filter-inner::-webkit-scrollbar{ display:none; }
    .filter-btn{ display:inline-flex; align-items:center; gap:8px; padding:15px 20px; font-size:13.5px; font-weight:700; color:var(--muted); background:none; border:none; border-bottom:3px solid transparent; cursor:pointer; white-space:nowrap; transition:color .15s,border-color .15s; position:relative; top:2px; }
    .filter-btn:hover{ color:var(--nav-2); }
    .filter-btn.active{ color:var(--nav-2); border-bottom-color:var(--accent); }
    .filter-count{ width:20px; height:20px; border-radius:6px; background:rgba(105,168,232,.12); border:1px solid rgba(105,168,232,.2); display:grid; place-items:center; font-size:10.5px; font-weight:900; color:var(--accent-2); }
    .filter-btn.active .filter-count{ background:var(--accent-2); border-color:var(--accent-2); color:#fff; }
    .filter-sep{ margin-left:auto; padding:12px 20px; display:flex; align-items:center; gap:10px; }
    .search-box{ display:flex; align-items:center; gap:8px; background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:7px 14px; font-size:13px; font-weight:600; color:var(--muted); }
    .search-box svg{ width:14px; height:14px; fill:none; stroke:var(--muted); stroke-width:2.2; flex:0 0 auto; }
    .search-box input{ border:none; background:none; outline:none; font:inherit; color:var(--text); width:180px; font-size:13px; }
    .search-box input::placeholder{ color:var(--muted); }

    /* ── Section commons ─────────────────────── */
    main{ padding:0; }
    .section-title{ margin:18px 0 4px; font-size:30px; font-weight:900; color:#1b2a44; letter-spacing:-.2px; display:flex; align-items:center; gap:20px; }
    .title-divider{ flex:1; height:1px; background:rgba(15,23,42,.12); }
    .section-sub{ margin:0 0 28px; color:var(--muted); font-weight:600; font-size:15px; }
    .panel{ padding:42px 0 28px; }
    .panel+.panel{ border-top:1px solid rgba(15,23,42,.08); }

    /* ── Featured strip ──────────────────────── */
    .featured-strip{
      background:
        radial-gradient(900px 320px at 5% 20%,rgba(105,168,232,.14),transparent 60%),
        linear-gradient(110deg,var(--nav-1) 0%,var(--nav-3) 55%,#1a3558 100%);
      border-radius:var(--radius);
      padding:32px 36px;
      display:flex;
      align-items:center;
      gap:36px;
      margin-bottom:32px;
      color:#fff;
      border:1px solid rgba(255,255,255,.08);
      position:relative;
      overflow:hidden;
    }
    .featured-strip::before{
      content:"IN EVIDENZA";
      position:absolute;
      top:18px; right:22px;
      font-size:10px; font-weight:900; letter-spacing:1.2px;
      color:rgba(255,255,255,.35);
    }
    .featured-ico{
      width:64px; height:64px;
      border-radius:16px;
      background:rgba(255,255,255,.13);
      border:1px solid rgba(255,255,255,.2);
      display:grid; place-items:center;
      flex:0 0 auto;
    }
    .featured-ico svg{ width:34px; height:34px; fill:none; stroke:#fff; stroke-width:1.7; }
    .featured-meta{ flex:1; }
    .featured-meta .pub-type-chip{ display:inline-flex; align-items:center; gap:6px; background:rgba(105,168,232,.22); border:1px solid rgba(105,168,232,.35); border-radius:999px; padding:4px 12px; font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--accent); margin-bottom:10px; }
    .featured-meta h3{ margin:0 0 6px; font-size:20px; font-weight:900; line-height:1.3; }
    .featured-meta .pub-authors{ margin:0 0 8px; font-size:13.5px; color:rgba(255,255,255,.78); font-weight:600; }
    .featured-meta .pub-abstract{ margin:0; font-size:13px; color:rgba(255,255,255,.68); line-height:1.6; max-width:680px; }
    .featured-actions{ display:flex; flex-direction:column; gap:10px; align-items:flex-end; flex:0 0 auto; }
    .btn-pub{
      display:inline-flex; align-items:center; gap:8px;
      padding:10px 20px;
      border-radius:9px;
      font-size:13px; font-weight:800;
      cursor:pointer;
      transition:transform .12s,box-shadow .12s;
      white-space:nowrap;
    }
    .btn-pub:hover{ transform:translateY(-1px); }
    .btn-pub.solid{ background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.3); color:#fff; box-shadow:0 8px 20px rgba(0,0,0,.2); }
    .btn-pub.solid:hover{ background:rgba(255,255,255,.24); box-shadow:0 12px 26px rgba(0,0,0,.28); }
    .btn-pub.outline{ background:transparent; border:1px solid rgba(255,255,255,.2); color:rgba(255,255,255,.8); }
    .btn-pub svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2.2; }

    /* ── Publications grid ───────────────────── */
    .pub-grid{
      display:grid;
      gap:22px;
      margin-bottom:14px;
    }
    .pub-grid.cols-1{ grid-template-columns:1fr; }
    .pub-grid.cols-2{ grid-template-columns:repeat(2,1fr); }
    .pub-grid.cols-3{ grid-template-columns:repeat(3,1fr); }
    .pub-card{
      background:var(--card);
      border:1px solid var(--border);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
      display:flex;
      flex-direction:column;
      overflow:hidden;
      transition:transform .14s ease,box-shadow .14s ease;
    }
    .pub-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); }
    .pub-card--featured{ border-color: rgba(245,158,11,.45); box-shadow: 0 0 0 1px rgba(245,158,11,.2), var(--shadow); }
    .pub-card-top{
      padding:20px 20px 16px;
      background:
        radial-gradient(360px 140px at 15% 10%,rgba(105,168,232,.10),transparent 60%),
        linear-gradient(180deg,#fff,rgba(245,248,253,.97));
      border-bottom:1px solid rgba(15,23,42,.07);
      flex:1;
    }
    .pub-card-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:12px; }
    .pub-type{ display:inline-flex; align-items:center; gap:5px; border-radius:999px; padding:4px 11px; font-size:11px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; white-space:nowrap; }
    .pub-type.article,.pub-type.published{ background:rgba(63,121,183,.10); color:var(--accent-2); border:1px solid rgba(63,121,183,.2); }
    .pub-type.policy{ background:rgba(31,53,80,.09); color:var(--nav-1); border:1px solid rgba(31,53,80,.18); }
    .pub-type.report{ background:rgba(43,79,114,.09); color:var(--nav-3); border:1px solid rgba(43,79,114,.18); }
    .pub-type.forthcoming{ background:rgba(105,168,232,.08); color:#6a8eae; border:1px solid rgba(105,168,232,.18); }
    .pub-type.review{ background:rgba(47,95,134,.10); color:var(--nav-2); border:1px solid rgba(47,95,134,.2); }
    /* ── Preset colore badge (pt-c-*) — sovrascrivono lo stile slug ── */
    .pub-type.pt-c-blue  { background:rgba(59,130,246,.12)  !important; color:#1d4ed8 !important; border:1px solid rgba(59,130,246,.25)  !important; }
    .pub-type.pt-c-sky   { background:rgba(14,165,233,.12)  !important; color:#0284c7 !important; border:1px solid rgba(14,165,233,.25)  !important; }
    .pub-type.pt-c-teal  { background:rgba(20,184,166,.12)  !important; color:#0f766e !important; border:1px solid rgba(20,184,166,.25)  !important; }
    .pub-type.pt-c-green { background:rgba(34,197,94,.12)   !important; color:#15803d !important; border:1px solid rgba(34,197,94,.25)   !important; }
    .pub-type.pt-c-amber { background:rgba(245,158,11,.12)  !important; color:#b45309 !important; border:1px solid rgba(245,158,11,.25)  !important; }
    .pub-type.pt-c-orange{ background:rgba(249,115,22,.12)  !important; color:#c2410c !important; border:1px solid rgba(249,115,22,.25)  !important; }
    .pub-type.pt-c-red   { background:rgba(239,68,68,.12)   !important; color:#b91c1c !important; border:1px solid rgba(239,68,68,.25)   !important; }
    .pub-type.pt-c-rose  { background:rgba(244,63,94,.12)   !important; color:#be123c !important; border:1px solid rgba(244,63,94,.25)   !important; }
    .pub-type.pt-c-purple{ background:rgba(168,85,247,.12)  !important; color:#7e22ce !important; border:1px solid rgba(168,85,247,.25)  !important; }
    .pub-type.pt-c-indigo{ background:rgba(99,102,241,.12)  !important; color:#4338ca !important; border:1px solid rgba(99,102,241,.25)  !important; }
    .pub-type.pt-c-gray  { background:rgba(100,116,139,.12) !important; color:#475569 !important; border:1px solid rgba(100,116,139,.25) !important; }
    /* ── Effetti badge (pt-fx-*) ── */
    @keyframes pt-blink { 0%,100%{opacity:1} 50%{opacity:.3} }
    @keyframes pt-pulse  { 0%,100%{transform:scale(1)} 50%{transform:scale(1.07)} }
    @keyframes pt-shine  { 0%,100%{filter:brightness(1)} 50%{filter:brightness(1.2)} }
    .pub-type.pt-fx-blink { animation:pt-blink 1.4s ease-in-out infinite !important; }
    .pub-type.pt-fx-pulse { animation:pt-pulse 1.8s ease-in-out infinite !important; }
    .pub-type.pt-fx-shine { animation:pt-shine 2s ease-in-out infinite !important; }
    .pub-year{ font-size:12px; font-weight:800; color:var(--muted); white-space:nowrap; }
    .pub-card-top h3{ margin:0 0 8px; font-size:15px; font-weight:900; color:#1b2a44; line-height:1.38; }
    .pub-authors{ margin:0 0 10px; font-size:12.5px; color:var(--muted); font-weight:600; font-style:italic; }
    .pub-abstract{ margin:0 0 14px; font-size:13px; color:var(--muted); line-height:1.6; }
    .pub-tags{ display:flex; gap:6px; flex-wrap:wrap; }
    .pub-tag{ background:rgba(105,168,232,.08); border:1px solid rgba(105,168,232,.16); border-radius:999px; padding:3px 10px; font-size:11px; font-weight:700; color:var(--accent-2); }
    .pub-card-bottom{
      padding:12px 20px;
      background:linear-gradient(90deg,#2b4f72,#1f3550);
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:10px;
    }
    .pub-journal{ font-size:12px; font-weight:700; color:rgba(255,255,255,.82); display:flex; align-items:center; gap:7px; }
    .pub-journal svg{ width:13px; height:13px; fill:none; stroke:rgba(255,255,255,.6); stroke-width:2; flex:0 0 auto; }
    .pub-card-actions{ display:flex; gap:8px; }
    .pub-action{ width:30px; height:30px; border-radius:8px; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.18); display:grid; place-items:center; cursor:pointer; transition:background .12s; color:#fff; }
    .pub-action:hover{ background:rgba(255,255,255,.2); }
    .pub-action svg{ width:14px; height:14px; fill:none; stroke:#fff; stroke-width:2.2; }

    /* status dot */
    .status-dot{ width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
    .status-dot.published,.status-dot.article{ background:#4caf82; }
    .status-dot.forthcoming{ background:#f0a830; animation:pulse 2s infinite; }
    .status-dot.inprep{ background:#9ab4cc; }

    /* ── Journals showcase ───────────────────── */
    .journals-grid{
      display:grid;
      grid-template-columns:repeat(4,1fr);
      gap:20px;
      margin-bottom:14px;
    }
    .journal-card{
      background:var(--card);
      border:1px solid var(--border);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
      overflow:hidden;
      transition:transform .14s,box-shadow .14s;
    }
    .journal-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); }
    .journal-card-top{
      padding:22px 20px 16px;
      background:
        radial-gradient(350px 180px at 20% 10%,rgba(105,168,232,.12),transparent 60%),
        linear-gradient(160deg,var(--nav-1),var(--nav-3));
      color:#fff;
      position:relative;
      overflow:hidden;
    }
    .journal-card-top::after{
      content:"";
      position:absolute;
      top:-20px; right:-20px;
      width:80px; height:80px;
      border-radius:50%;
      background:rgba(255,255,255,.05);
      border:1px solid rgba(255,255,255,.1);
    }
    .j-ico{ width:40px; height:40px; border-radius:11px; background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.2); display:grid; place-items:center; margin-bottom:12px; }
    .j-ico svg{ width:22px; height:22px; fill:none; stroke:#fff; stroke-width:1.9; }
    .journal-card-top h3{ margin:0 0 4px; font-size:15px; font-weight:900; }
    .journal-card-top p{ margin:0; font-size:12px; color:rgba(255,255,255,.72); font-weight:600; line-height:1.45; }
    .journal-card-body{ padding:16px 20px; }
    .journal-scope{ font-size:13px; color:var(--muted); line-height:1.6; margin:0 0 14px; }
    .journal-meta{ display:flex; gap:8px; flex-wrap:wrap; }
    .j-chip{ display:inline-flex; align-items:center; gap:5px; background:rgba(105,168,232,.08); border:1px solid rgba(105,168,232,.16); border-radius:999px; padding:4px 10px; font-size:11.5px; font-weight:700; color:var(--accent-2); }
    .j-chip svg{ width:11px; height:11px; fill:none; stroke:currentColor; stroke-width:2.3; }

    /* ── CFP Banner ──────────────────────────── */
    .cfp-banner{
      background:
        radial-gradient(700px 260px at 10% 15%,rgba(105,168,232,.16),transparent 58%),
        linear-gradient(90deg,var(--nav-1),var(--nav-3));
      border-radius:var(--radius);
      border:1px solid rgba(255,255,255,.08);
      padding:32px 36px;
      color:#fff;
      display:grid;
      grid-template-columns:1fr auto;
      gap:32px;
      align-items:center;
      margin-bottom:14px;
    }
    .cfp-banner h3{ margin:0 0 8px; font-size:22px; font-weight:900; letter-spacing:-.1px; }
    .cfp-banner p{ margin:0; font-size:14px; color:rgba(255,255,255,.80); font-weight:600; line-height:1.65; max-width:640px; }
    .cfp-actions{ display:flex; flex-direction:column; gap:10px; align-items:flex-end; flex:0 0 auto; }
    .cfp-deadline{ display:flex; align-items:center; gap:8px; background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.16); border-radius:9px; padding:10px 16px; font-size:13px; font-weight:700; color:rgba(255,255,255,.9); }
    .cfp-deadline svg{ width:15px; height:15px; fill:none; stroke:var(--accent); stroke-width:2.2; }

    /* ── Policy Brief section ────────────────── */
    .brief-grid{
      display:grid;
      gap:20px;
      margin-bottom:14px;
    }
    .brief-grid.cols-1{ grid-template-columns:1fr; }
    .brief-grid.cols-2{ grid-template-columns:repeat(2,1fr); }
    .brief-card{
      background:var(--card);
      border:1px solid var(--border);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
      padding:24px 24px 20px;
      display:flex;
      gap:18px;
      align-items:flex-start;
      transition:transform .14s,box-shadow .14s;
    }
    .brief-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); }
    .brief-num{
      width:44px; height:44px;
      border-radius:12px;
      background:linear-gradient(135deg,var(--nav-1),var(--nav-3));
      color:#fff;
      display:grid; place-items:center;
      font-size:16px; font-weight:900;
      flex:0 0 auto;
    }
    .brief-body h4{ margin:0 0 6px; font-size:15.5px; font-weight:900; color:#1b2a44; line-height:1.3; }
    .brief-body p{ margin:0 0 12px; font-size:13px; color:var(--muted); line-height:1.6; }
    .brief-footer{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
    .brief-status{ display:flex; align-items:center; gap:7px; font-size:12px; font-weight:700; color:var(--muted); }

    /* ── Dataset / Tools strip ───────────────── */
    .tools-grid{
      display:grid;
      gap:18px;
      margin-bottom:14px;
    }
    .tools-grid.cols-1{ grid-template-columns:1fr; }
    .tools-grid.cols-2{ grid-template-columns:repeat(2,1fr); }
    .tools-grid.cols-3{ grid-template-columns:repeat(3,1fr); }
    .tool-card{
      background:var(--card);
      border:1px solid var(--border);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
      padding:20px 20px 18px;
      position:relative;
      overflow:hidden;
    }
    .tool-card::after{ content:""; position:absolute; bottom:0; left:0; right:0; height:3px; background:linear-gradient(90deg,var(--accent-2),rgba(105,168,232,.3)); }
    .tool-ico{ width:40px; height:40px; border-radius:11px; display:grid; place-items:center; background:rgba(105,168,232,.10); border:1px solid rgba(105,168,232,.18); margin-bottom:14px; }
    .tool-ico svg{ width:22px; height:22px; fill:none; stroke:var(--accent-2); stroke-width:2.1; }
    .tool-card h4{ margin:0 0 7px; font-size:14.5px; font-weight:900; color:#1b2a44; }
    .tool-card p{ margin:0 0 14px; font-size:13px; color:var(--muted); line-height:1.55; }
    .tool-badge{ display:inline-flex; align-items:center; gap:6px; border-radius:999px; padding:4px 12px; font-size:11px; font-weight:800; }
    .tool-badge.open{ background:rgba(76,175,130,.10); border:1px solid rgba(76,175,130,.22); color:#3a9166; }
    .tool-badge.restricted{ background:rgba(240,168,48,.10); border:1px solid rgba(240,168,48,.22); color:#c4882a; }
    .tool-badge.forthcoming-badge{ background:rgba(105,168,232,.08); border:1px solid rgba(105,168,232,.18); color:#6a8eae; }
    .tool-badge svg{ width:11px; height:11px; fill:none; stroke:currentColor; stroke-width:2.4; }

    /* ── Pagination ──────────────────────────── */
    .pagination{ display:flex; justify-content:center; align-items:center; gap:8px; padding:28px 0 14px; }
    .page-btn{ width:38px; height:38px; border-radius:9px; border:1px solid var(--border); background:var(--card); display:grid; place-items:center; font-size:13.5px; font-weight:700; color:var(--muted); cursor:pointer; transition:all .12s; box-shadow:0 2px 6px rgba(15,23,42,.07); }
    .page-btn:hover{ border-color:var(--accent); color:var(--accent-2); }
    .page-btn.active{ background:linear-gradient(135deg,var(--nav-1),var(--nav-3)); border-color:transparent; color:#fff; box-shadow:0 6px 14px rgba(31,53,80,.22); }
    .page-btn.arrow svg{ width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:2.3; }

    /* ── CTA Band ────────────────────────────── */
    .cta-band{ position:relative; background:radial-gradient(820px 280px at 35% 10%,rgba(105,168,232,.16),transparent 62%),linear-gradient(90deg,var(--nav-1),var(--nav-3)); color:#fff; padding:42px 0; border-top:1px solid rgba(255,255,255,.10); border-bottom:1px solid rgba(255,255,255,.10); margin-top:40px; text-align:center; }
    .cta-band h3{ margin:0 0 10px; font-size:28px; font-weight:900; letter-spacing:-.2px; }
    .cta-band p{ margin:0 auto 26px; color:rgba(255,255,255,.85); font-weight:600; max-width:560px; font-size:15px; line-height:1.6; }
    .cta-actions{ display:flex; gap:14px; justify-content:center; }
    .btn-primary{ display:inline-flex; align-items:center; gap:10px; padding:13px 26px; background:linear-gradient(180deg,rgba(105,168,232,.85),rgba(63,121,183,.85)); border:1px solid rgba(255,255,255,.20); color:#fff; border-radius:10px; font-weight:800; font-size:14px; cursor:pointer; box-shadow:0 16px 30px rgba(0,0,0,.28); transition:transform .12s,box-shadow .12s; }
    .btn-primary:hover{ transform:translateY(-1px); box-shadow:0 18px 34px rgba(0,0,0,.32); }
    .btn-ghost{ border:1px solid rgba(255,255,255,.22); background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.08)); color:#fff; padding:13px 22px; border-radius:10px; font-weight:900; font-size:14px; cursor:pointer; box-shadow:0 12px 22px rgba(0,0,0,.20); transition:transform .12s,box-shadow .12s; }
    .btn-ghost:hover{ transform:translateY(-1px); box-shadow:0 14px 26px rgba(0,0,0,.26); }

    /* ── Footer ──────────────────────────────── */
    footer{ background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0)),linear-gradient(90deg,var(--nav-1),var(--nav-2)); color:#fff; border-top:1px solid rgba(255,255,255,.10); }
    .footer-inner{ padding:34px 0 18px; display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:26px; }
    .footer-title{ margin:0 0 10px; font-weight:900; letter-spacing:.2px; }
    .footer-text{ margin:0; color:rgba(255,255,255,.84); line-height:1.55; font-weight:600; font-size:13.5px; }
    .footer-links{ list-style:none; padding:0; margin:0; display:grid; gap:10px; }
    .footer-links a{ color:rgba(255,255,255,.86); font-weight:700; font-size:13.5px; }
    .footer-links a:hover{ color:#fff; text-decoration:underline; text-underline-offset:3px; }
    .footer-bottom{ border-top:1px solid rgba(255,255,255,.10); padding:14px 0 18px; display:flex; align-items:center; justify-content:space-between; gap:14px; color:rgba(255,255,255,.78); font-weight:600; font-size:12.5px; }

    /* ── Responsive ──────────────────────────── */

    /* ─── Hamburger button ───────────────────────────── */
    .hamburger{
      display:none;
      flex-direction:column;
      justify-content:center;
      align-items:center;
      gap:5px;
      width:42px; height:42px;
      background:none;
      border:1px solid rgba(255,255,255,.22);
      border-radius:8px;
      cursor:pointer;
      padding:0;
      flex-shrink:0;
    }
    .hamburger span{
      display:block;
      width:22px; height:2px;
      background:#fff;
      border-radius:999px;
      transition:transform .25s ease, opacity .25s ease;
    }
    .hamburger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
    .hamburger.open span:nth-child(2){ opacity:0; }
    .hamburger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

    /* ─── Side drawer ────────────────────────────────── */
    .nav-overlay{
      display:none;
      position:fixed;
      inset:0;
      background:rgba(0,0,0,.55);
      z-index:99;
      opacity:0;
      transition:opacity .25s ease;
    }
    .nav-overlay.visible{ opacity:1; }
    .side-drawer{
      position:fixed;
      top:0; right:0;
      width:min(320px, 85vw);
      height:100%;
      background:linear-gradient(160deg,#0f2235,#1a3a5c);
      z-index:100;
      transform:translateX(100%);
      transition:transform .28s cubic-bezier(.4,0,.2,1);
      display:flex;
      flex-direction:column;
      box-shadow:-6px 0 30px rgba(0,0,0,.35);
    }
    .side-drawer.open{ transform:translateX(0); }
    .drawer-header{
      display:flex;
      align-items:center;
      justify-content:space-between;
      padding:20px 22px;
      border-bottom:1px solid rgba(255,255,255,.10);
    }
    .drawer-brand{
      font-size:15px;
      font-weight:700;
      color:#fff;
      letter-spacing:.2px;
    }
    .drawer-close{
      background:none;
      border:none;
      cursor:pointer;
      color:rgba(255,255,255,.7);
      font-size:24px;
      line-height:1;
      padding:4px 8px;
    }
    .drawer-close:hover{ color:#fff; }
    .drawer-menu{
      list-style:none;
      margin:0; padding:18px 0;
      flex:1;
      overflow-y:auto;
    }
    .drawer-menu li a{
      display:flex;
      align-items:center;
      gap:12px;
      padding:15px 24px;
      color:rgba(255,255,255,.88);
      font-weight:600;
      font-size:16px;
      border-left:3px solid transparent;
      transition:background .15s ease, border-color .15s ease, color .15s ease;
    }
    .drawer-menu li a:hover,
    .drawer-menu li a.active{
      background:rgba(105,168,232,.12);
      border-left-color:var(--accent);
      color:#fff;
    }
    .drawer-footer{
      padding:20px 22px;
      border-top:1px solid rgba(255,255,255,.10);
    }
    .drawer-footer .btn-join{
      width:100%;
      text-align:center;
      display:block;
    }

    @media(max-width:1060px){
      .pub-grid.cols-3{ grid-template-columns:repeat(2,1fr); }
      .journals-grid{ grid-template-columns:repeat(2,1fr); }
      .tools-grid.cols-3{ grid-template-columns:repeat(2,1fr); }
    }
    @media(max-width:1111px){
      .hamburger{ display:flex; }
      .nav{ height:auto; padding:14px 0; }
      nav[aria-label="Primary"]{ display:none; }
      .nav-cta{ display:none; }

      .pub-hero-title{ font-size:44px; }
      .pub-hero-inner{ flex-direction:column; align-items:flex-start; gap:24px; }
      .pub-hero-stats{ flex-direction:row; flex-wrap:wrap; }
      .featured-strip{ flex-direction:column; gap:20px; }
      .featured-actions{ align-items:flex-start; flex-direction:row; flex-wrap:wrap; }
      .brief-grid.cols-2{ grid-template-columns:1fr; }
      .cfp-banner{ grid-template-columns:1fr; }
      .cfp-actions{ align-items:flex-start; }
      .footer-inner{ grid-template-columns:1fr; }
    }
    @media(max-width:640px){
      /* Hero centering mobile */
      .pub-hero-inner { flex-direction:column; align-items:center; text-align:center; }
      .pub-hero-left { width:100%; }
      .pub-hero-badge { margin-left:auto; margin-right:auto; }
      .pub-hero-sub { margin-left:auto; margin-right:auto; max-width:100%; }
      .pub-hero-actions { justify-content:center; }

      .pub-grid.cols-1,.pub-grid.cols-2,.pub-grid.cols-3{ grid-template-columns:1fr; }
      .journals-grid{ grid-template-columns:1fr 1fr; }
      .tools-grid.cols-1,.tools-grid.cols-2,.tools-grid.cols-3{ grid-template-columns:1fr; }
      .pub-hero-title{ font-size:36px; }
      .cta-actions{ flex-direction:column; align-items:center; }
      .filter-sep{ display:none; }
    }
  
  