/* ── 9. PUBLICATIONS ───────────────────────────────────────── */
.pub-search-section { padding: clamp(2.5rem, 5vw, 4rem) 0 1rem; }

.scholar-cta { padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(4rem, 7vw, 6rem); }
.scholar-cta__box {
    text-align: center; padding: clamp(2rem, 4vw, 2.8rem);
    background: linear-gradient(135deg, var(--blue-50), #F6FAFD);
    border: 1px solid var(--blue-100); border-radius: var(--radius-lg);
}
.scholar-cta__label { font-size: 1.15rem; font-weight: 700; color: var(--blue-700); margin-bottom: 1.3rem; }
.scholar-cta__btn {
    display: inline-flex; align-items: center; gap: .5rem;
    padding: .85rem 1.8rem; border-radius: var(--radius-pill);
    background: var(--ink); color: #fff; font-weight: 700; font-size: .95rem;
    transition: background var(--dur-base) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
    .scholar-cta__btn:hover { background: var(--blue-700); }
}
.scholar-cta__btn:active { background: var(--blue-900); }
.pub-search {
    display: flex; align-items: center; gap: .8rem;
    background: var(--ink); border-radius: var(--radius-pill);
    padding: .3rem .3rem .3rem 1.4rem; margin-bottom: 2.4rem;
    max-width: 760px;
}
.pub-search__icon { width: 20px; height: 20px; color: var(--blue-300); flex-shrink: 0; }
.pub-search input {
    flex: 1; background: transparent; border: 0; color: #fff; padding: .9rem 0; font-size: 1rem;
}
.pub-search input::placeholder { color: rgba(255,255,255,.5); }
.pub-search input:focus { outline: none; }

.pub-list { display: flex; flex-direction: column; gap: 1.1rem; }
.pub-card {
    display: flex; gap: 1.4rem; align-items: flex-start;
    border: 1px solid var(--line); border-radius: var(--radius-md); padding: 1.5rem 1.7rem;
    transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-base) var(--ease), background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);
    position: relative; overflow: hidden;
}
.pub-card::before {
    content: ""; position: absolute; top: 0; left: 50%; width: 0; height: 3px;
    background: linear-gradient(90deg, var(--blue-500), var(--blue-700));
    transform: translateX(-50%); transition: width var(--dur-base) var(--ease);
}
@media (hover: hover) and (pointer: fine) {
    .pub-card:hover { box-shadow: var(--shadow-sm); background: var(--blue-50); border-color: var(--blue-100); }
}
@media (hover: hover) and (pointer: fine) {
    .pub-card:hover::before { width: 100%; }
}
.pub-card__mark {
    flex: 0 0 auto; width: 64px; height: 64px; border-radius: 50%;
    background: var(--blue-50); border: 1px solid var(--blue-100);
    display: flex; align-items: center; justify-content: center; overflow: hidden;
    color: var(--blue-600);
}
.pub-card__mark img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.pub-card__mark svg { width: 24px; height: 24px; }
.pub-card__meta { display: flex; gap: .8rem; align-items: center; margin-bottom: .3rem; }
.pub-card__journal { font-size: .74rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--blue-700); }
.pub-card__year { font-size: .78rem; color: var(--ink-faint); }
.pub-card__title { font-size: 1.02rem; margin-bottom: .35rem; }
@media (hover: hover) and (pointer: fine) {
    .pub-card__title a:hover { color: var(--blue-700); }
}
.pub-card__authors { font-size: .86rem; margin-bottom: .3rem; }
.pub-card__desc { font-size: .88rem; margin-bottom: .5rem; }
.pub-card__links { display: flex; gap: 1.2rem; }
.pub-card__link { font-weight: 700; font-size: .82rem; color: var(--blue-700); }

/* Full publications listing (/publications/ + live search) — a timeline of
   large circular journal marks connected by a vertical line, cards to the right. */
.pub-timeline { display: flex; flex-direction: column; }
.pub-row { display: grid; grid-template-columns: 130px 1fr; gap: 1.6rem; margin-bottom: 2.2rem; }
.pub-row:last-child { margin-bottom: 0; }
.pub-row__rail { position: relative; display: flex; justify-content: center; }
.pub-row__rail::before {
    content: ""; position: absolute; top: 0; left: 50%; width: 2px; height: 100%;
    background: var(--line-strong); transform: translateX(-50%); z-index: 0;
}
.pub-row:last-child .pub-row__rail::before { height: 0; }
.pub-row:not(:last-child) .pub-row__rail::before { height: calc(100% + 2.2rem); }
.pub-row__mark {
    position: relative; z-index: 1; flex-shrink: 0;
    width: 112px; height: 112px; border-radius: 50%;
    background: var(--blue-50); border: 3px solid var(--paper);
    box-shadow: 0 0 0 1px var(--blue-100), var(--shadow-sm);
    display: flex; align-items: center; justify-content: center; color: var(--blue-600);
    transition: box-shadow var(--dur-slow) var(--ease);
}
.pub-row__mark img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
.pub-row__mark svg { width: 42px; height: 42px; }
@media (hover: hover) and (pointer: fine) {
    .pub-row:hover .pub-row__mark {
        /* Logo stays still on hover; only the ring highlights. */
        box-shadow: 0 0 0 1px var(--blue-300), 0 0 0 4px var(--blue-100), var(--shadow-md);
    }
}
.pub-row__card {
    background: var(--fog); border-radius: var(--radius-lg); padding: 1.8rem 2rem;
    transition: background var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease), var(--reveal-transition);
}
@media (hover: hover) and (pointer: fine) {
    .pub-row:hover .pub-row__card { background: var(--blue-50); box-shadow: var(--shadow-sm); }
}
.pub-row__meta { display: flex; gap: .8rem; align-items: center; margin-bottom: .5rem; }
.pub-row__journal { font-size: .74rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--blue-700); }
.pub-row__year { font-size: .78rem; color: var(--ink-faint); }
.pub-row__title { font-size: 1.08rem; margin-bottom: .5rem; }
@media (hover: hover) and (pointer: fine) {
    .pub-row__title a:hover { color: var(--blue-700); }
}
.pub-row__authors { font-size: .88rem; margin-bottom: .5rem; }
.pub-row__desc { font-size: .9rem; margin-bottom: .9rem; }
.pub-row__footer { display: flex; gap: 1.4rem; padding-top: .9rem; border-top: 1px solid var(--line); }
.pub-row__link { font-weight: 700; font-size: .82rem; color: var(--blue-700); }

@media (max-width: 640px) {
    .pub-row { grid-template-columns: 74px 1fr; gap: 1rem; }
    .pub-row__mark { width: 64px; height: 64px; }
    .pub-row__mark svg { width: 26px; height: 26px; }
    .pub-row__card { padding: 1.3rem 1.4rem; }
}

/* Home publications — editorial cards in our own blue palette */
.pub-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.8rem; }
.pub-tile {
    position: relative;
    display: flex; flex-direction: column;
    border-radius: var(--radius-lg); padding: 1.8rem 1.7rem;
    overflow: hidden; min-height: 250px;
    color: #fff;
    background: linear-gradient(150deg, var(--night) 0%, var(--blue-900) 58%, var(--blue-600) 125%);
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-base) var(--ease), var(--reveal-transition);
}
@media (hover: hover) and (pointer: fine) {
    .pub-tile:hover { box-shadow: var(--shadow-lg); }
}
.pub-tile__badge {
    align-self: flex-start;
    font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
    padding: .35rem .85rem; border-radius: var(--radius-pill);
    background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.18);
    margin-bottom: 1.1rem;
}
.pub-tile__title { position: relative; font-size: 1.12rem; line-height: 1.35; margin-bottom: .5rem; }
.pub-tile__title a { color: #fff; }
@media (hover: hover) and (pointer: fine) {
    .pub-tile__title a:hover { color: var(--blue-300); }
}
.pub-tile__journal { position: relative; font-size: .78rem; color: var(--blue-300); font-weight: 600; margin-bottom: 1.4rem; }
.pub-tile__footer { position: relative; margin-top: auto; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,.14); }
.pub-tile__authors { font-size: .82rem; color: rgba(255,255,255,.7); margin-bottom: .6rem; }
.pub-tile__link { font-weight: 700; font-size: .82rem; color: #fff; }
.pub-tile__link span { transition: transform var(--dur-base) var(--ease); display: inline-block; }
@media (hover: hover) and (pointer: fine) {
    .pub-tile:hover .pub-tile__link span { transform: translateX(3px); }
}
