/* ==========================================================================
   University of Piraeus — Events & News
   "THE RECORD" — an editorial archive of institutional events
   Paper & ink, monospace catalog data, asymmetric editorial grid.
   ========================================================================== */

:root {
    --paper:      #FBFAF7;   /* warm off-white base                     */
    --paper-2:    #F3F1EA;   /* slightly deeper panel                   */
    --ink:        #14181F;   /* near-black primary                      */
    --navy:       #1B2A4A;   /* UNIPI navy — structure & rules          */
    --wine:       #7A1E2B;   /* burgundy — live/featured signal only    */
    --mute:       #6B7079;   /* captions / meta                         */
    --line:       #E2DDD2;   /* hairline rules                          */
    --line-strong:#C9C2B3;

    --serif: "Fraunces", Georgia, "Times New Roman", serif;
    --sans:  "Inter Tight", system-ui, -apple-system, "Segoe UI", sans-serif;
    --mono:  "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

    --maxw: 1280px;
    --gutter: clamp(1.1rem, 3.5vw, 3rem);
}

*, *::before, *::after { box-sizing: border-box; }

body.unipi-site {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 1rem;
    line-height: 1.6;
    font-feature-settings: "ss01", "cv01";
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

.unipi-container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }

/* Reusable mono "catalog" label */
.kicker, .unipi-site .article-info, .cat-eyebrow {
    font-family: var(--mono);
    font-size: .72rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--mute);
}

/* ── Top bar ──────────────────────────────────────────────────────────── */
.unipi-topbar {
    border-bottom: 1px solid var(--line);
    background: var(--paper);
}
.unipi-topbar .topbar-inner {
    display: flex; align-items: center; justify-content: space-between;
    min-height: 40px; gap: 1rem;
    font-family: var(--mono); font-size: .72rem; letter-spacing: .12em;
    text-transform: uppercase; color: var(--mute);
}

/* ── Header / masthead ────────────────────────────────────────────────── */
.unipi-header { background: var(--paper); border-bottom: 1.5px solid var(--ink); }
.unipi-header.is-sticky { position: sticky; top: 0; z-index: 1000; }
.unipi-header .header-inner {
    display: flex; align-items: center; justify-content: space-between;
    gap: 2rem; min-height: 84px; flex-wrap: wrap;
}
.unipi-brand { display: flex; align-items: center; gap: 1.1rem; }
.unipi-brand .logo, .unipi-brand img { height: 46px; width: auto; }
.unipi-brand .brand-tagline {
    font-family: var(--mono); font-size: .68rem; letter-spacing: .16em;
    text-transform: uppercase; color: var(--mute);
    padding-left: 1.1rem; border-left: 1px solid var(--line-strong);
}

/* ── Navigation ───────────────────────────────────────────────────────── */
.unipi-nav { display: flex; align-items: center; gap: .5rem; }
.unipi-nav ul.mod-menu, .unipi-nav .mod-menu {
    list-style: none !important; display: flex !important; flex-direction: row !important;
    flex-wrap: wrap; gap: .1rem; margin: 0; padding: 0; align-items: center;
}
.unipi-nav .nav-item { position: relative; }
.unipi-nav .mod-menu a {
    display: block; padding: .5rem .8rem;
    font-size: .92rem; font-weight: 500; color: var(--ink);
    transition: color .15s;
}
.unipi-nav .mod-menu a:hover { color: var(--wine); }
.unipi-nav .mod-menu .current > a, .unipi-nav .mod-menu .active > a {
    color: var(--wine);
    box-shadow: inset 0 -2px 0 var(--wine);
}
.unipi-nav .mod-menu ul {
    position: absolute; top: 100%; left: 0; min-width: 240px;
    background: var(--paper); border: 1px solid var(--ink);
    padding: .35rem; display: none; z-index: 1100; list-style: none;
}
.unipi-nav .mod-menu li:hover > ul { display: block; }

/* Language switcher (mono, bracketed) */
.unipi-topbar .mod-languages ul { list-style: none; display: flex; gap: .9rem; margin: 0; padding: 0; }
.unipi-topbar .mod-languages a, .unipi-topbar .mod-languages span { color: var(--mute); }
.unipi-topbar .mod-languages .lang-active a,
.unipi-topbar .mod-languages img { filter: none; }
.unipi-topbar .mod-languages img { display: inline-block; height: 12px; width: auto; }

/* ══════════════════════════════════════════════════════════════════════
   ARCHIVE HEAD — slim label bar replacing the hero (home only)
   ══════════════════════════════════════════════════════════════════════ */
.archive-head { border-bottom: 1.5px solid var(--ink); }
.archive-head-inner {
    display: flex; align-items: baseline; justify-content: space-between;
    gap: 1rem; padding-block: clamp(1.4rem, 3.5vw, 2.4rem) 1rem; flex-wrap: wrap;
}
.archive-label {
    font-family: var(--serif); font-weight: 340;
    font-size: clamp(1.8rem, 4vw, 3rem); line-height: 1; letter-spacing: -.02em;
    margin: 0; color: var(--ink); font-variation-settings: "opsz" 100;
}
.archive-sub {
    font-family: var(--mono); font-size: .72rem; letter-spacing: .16em;
    text-transform: uppercase; color: var(--mute);
}

/* ══════════════════════════════════════════════════════════════════════
   ARCHIVE ENTRIES (blog item override → .record-item)
   ══════════════════════════════════════════════════════════════════════ */
.unipi-main-grid { padding-block: 0 clamp(2.5rem, 6vw, 4.5rem); }

.blog-items, .com-content-category-blog__items {
    list-style: none; margin: 0; padding: 0;
}
/* Joomla wraps each entry in an extra .blog-item div — make it pass through */
.blog-item { display: contents; }

/* ══════════════════════════════════════════════════════════════════════
   TIMELINE RAIL
   The left meta column is a timeline: a continuous vertical line runs
   through it, with a node dot per entry (hollow → fills wine on reveal,
   solid for featured). Built per-row so it works with Joomla's markup.
   ══════════════════════════════════════════════════════════════════════ */
.record-item {
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr);
    gap: clamp(1.2rem, 3vw, 2.6rem);
    padding-block: clamp(1.6rem, 3vw, 2.4rem);
    border-bottom: 1px solid var(--line);
    align-items: start;
    position: relative;
}

/* The rail: a vertical line on the meta column, drawn as a pseudo-element
   that spans the full row height so consecutive rows form one line. */
.record-item.is-timeline .rec-meta { position: relative; padding-left: 1.6rem; }
.record-item.is-timeline .rec-meta::before {
    content: ""; position: absolute; left: 4px; top: -1.6rem; bottom: -2.4rem;
    width: 1px; background: var(--line-strong);
}
.record-item:first-child.is-timeline .rec-meta::before { top: 0; }

.rec-node {
    position: absolute; left: 0; top: .15rem;
    width: 9px; height: 9px; border-radius: 50%;
    background: var(--paper); border: 1.5px solid var(--line-strong);
    transition: background .4s ease, border-color .4s ease, transform .4s ease;
    z-index: 1;
}
/* node fills when the row reveals into view */
.record-item.in-view .rec-node { border-color: var(--wine); }
.record-item.in-view[data-featured] .rec-node,
.record-item[data-featured].in-view .rec-node {
    background: var(--wine); border-color: var(--wine); transform: scale(1.25);
}

.record-item .rec-meta { display: flex; flex-direction: column; gap: .4rem; }
.rec-date { font-family: var(--mono); line-height: 1.2; }
.rec-date .rec-day { display: block; font-size: .92rem; font-weight: 500; color: var(--ink); letter-spacing: .02em; }
.rec-date .rec-year { display: block; font-size: .7rem; color: var(--mute); letter-spacing: .14em; margin-top: .1rem; }
.record-item .rec-cat {
    font-family: var(--mono); font-size: .64rem; letter-spacing: .14em;
    text-transform: uppercase; color: var(--mute); margin-top: .3rem;
}
.record-item .rec-live {
    font-family: var(--mono); font-size: .62rem; letter-spacing: .14em;
    text-transform: uppercase; color: var(--wine);
    display: inline-flex; align-items: center; gap: .4rem; margin-top: .15rem;
}
.rec-live::before {
    content: ""; width: 6px; height: 6px; border-radius: 50%;
    background: var(--wine); animation: rec-pulse 2s infinite; flex: none;
}
@keyframes rec-pulse { 0%,100%{opacity:1} 50%{opacity:.25} }

.record-item .rec-body { min-width: 0; }
.record-item .rec-title {
    font-family: var(--serif); font-weight: 400;
    font-size: clamp(1.3rem, 2.2vw, 1.7rem); line-height: 1.12;
    letter-spacing: -.015em; margin: 0 0 .55rem; color: var(--ink);
}
.record-item .rec-title a { color: inherit; text-decoration: none; box-shadow: none; transition: color .2s; }
.record-item .rec-title a:hover { color: var(--wine); }

/* Full-bleed thumbnail — fills the body column width; rows use a slim band
   so the archive stays scannable, the feature gets a tall cinematic crop. */
.record-item .rec-thumb {
    display: block; margin: 1rem 0 .2rem; overflow: hidden; background: var(--paper-2);
    aspect-ratio: 24 / 6; width: 100%;
}
.record-item .rec-thumb img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    filter: grayscale(.25) contrast(1.02); transition: filter .5s ease, transform .7s cubic-bezier(.2,.7,.2,1);
}
.record-item:hover .rec-thumb img { filter: grayscale(0) contrast(1); transform: scale(1.04); }

.record-item .rec-intro { color: var(--mute); font-size: .95rem; margin: .3rem 0 0; max-width: 64ch; }
.record-item .rec-more {
    display: inline-flex; align-items: center; gap: .45rem; margin-top: 1rem;
    font-family: var(--mono); font-size: .7rem; letter-spacing: .12em;
    text-transform: uppercase; color: var(--ink); transition: color .2s, gap .2s;
}
.record-item .rec-more::after { content: "→"; transition: transform .2s; }
.record-item .rec-more:hover { color: var(--wine); }
.record-item .rec-more:hover::after { transform: translateX(5px); }

/* ── FEATURE entry (the single lead item) — large, full-bleed image ───── */
.items-leading .record-item {
    grid-template-columns: 150px minmax(0, 1fr);
    padding-block: clamp(2rem, 4vw, 3.2rem);
    border-bottom: 2px solid var(--ink);
}
.items-leading .record-item .rec-title {
    font-size: clamp(2rem, 4vw, 3.2rem); line-height: 1.0;
    margin-bottom: 1rem; font-variation-settings: "opsz" 100;
}
.items-leading .record-item .rec-thumb {
    aspect-ratio: 16 / 7; margin: 1.2rem 0;
}
.items-leading .record-item .rec-thumb img { filter: grayscale(0); }
.items-leading .record-item .rec-intro { font-size: 1.05rem; max-width: 60ch; }

/* ── Scroll-reveal: rows fade + rise as they enter the viewport ──────── */
.record-item.reveal { opacity: 0; transform: translateY(22px); }
.record-item.reveal.in-view {
    opacity: 1; transform: none;
    transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1);
}

@media (max-width: 680px) {
    .record-item { grid-template-columns: 1fr; gap: .6rem; }
    .record-item.is-timeline .rec-meta { padding-left: 1.4rem; }
    .record-item.is-timeline .rec-meta::before { top: -1rem; bottom: -1.6rem; }
    .record-item .rec-meta { flex-flow: row wrap; align-items: baseline; gap: .3rem .9rem; }
    .rec-date { display: flex; gap: .4rem; align-items: baseline; }
    .rec-date .rec-day, .rec-date .rec-year { display: inline; }
    .items-leading .record-item .rec-thumb, .record-item .rec-thumb { aspect-ratio: 16 / 9; }
}

/* ══════════════════════════════════════════════════════════════════════
   CATEGORY INDEX (numbered taxonomy — only where it's a real taxonomy)
   ══════════════════════════════════════════════════════════════════════ */
.cat-index { border-top: 1px solid var(--ink); margin-top: clamp(2rem,5vw,3.5rem); }
.cat-index ul { list-style: none; margin: 0; padding: 0; }
.cat-index li { border-bottom: 1px solid var(--line); }
.cat-index a {
    display: grid; grid-template-columns: 3rem 1fr auto; align-items: baseline;
    gap: 1rem; padding-block: 1.05rem;
    transition: padding-left .2s, color .2s;
}
.cat-index a:hover { padding-left: .8rem; color: var(--wine); }
.cat-index .idx { font-family: var(--mono); font-size: .8rem; color: var(--mute); }
.cat-index .name { font-family: var(--serif); font-size: clamp(1.2rem,2.2vw,1.6rem); }
.cat-index .arrow { font-family: var(--mono); color: var(--mute); }
.cat-index a:hover .arrow { color: var(--wine); }

/* ══════════════════════════════════════════════════════════════════════
   PAGE HEADINGS (category & article views)
   ══════════════════════════════════════════════════════════════════════ */
.page-header h1, .com-content-category-blog__title, .com-content-article h1 {
    font-family: var(--serif); font-weight: 340;
    font-size: clamp(2.2rem, 5vw, 3.6rem); line-height: 1; letter-spacing: -.02em;
    margin: clamp(1.5rem,4vw,2.6rem) 0 .4rem;
    font-variation-settings: "opsz" 100;
}
.com-content-category-blog .com-content-category-blog__title { padding-bottom: 1.2rem; border-bottom: 1.5px solid var(--ink); }

/* ══════════════════════════════════════════════════════════════════════
   SINGLE ARTICLE — full width with a sticky meta side rail
   ══════════════════════════════════════════════════════════════════════ */
.article-wide { padding-bottom: clamp(3rem, 7vw, 5rem); }
.article-grid {
    display: grid;
    grid-template-columns: 200px minmax(0, 1fr);
    gap: clamp(1.5rem, 5vw, 4rem);
    align-items: start;
    padding-top: clamp(1.5rem, 4vw, 2.5rem);
}
.article-rail {
    position: sticky; top: 110px;
    display: flex; flex-direction: column; gap: 1.5rem;
    border-top: 2px solid var(--ink); padding-top: 1rem;
}
.rail-back {
    font-family: var(--mono); font-size: .72rem; letter-spacing: .1em;
    text-transform: uppercase; color: var(--mute); transition: color .2s;
}
.rail-back:hover { color: var(--wine); }
.rail-meta { display: flex; flex-direction: column; gap: .6rem; font-family: var(--mono); }
.rail-date { font-size: 1rem; font-weight: 500; color: var(--ink); }
.rail-cat { font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wine); }
.rail-live { font-size: .64rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wine);
    display: inline-flex; align-items: center; gap: .4rem; }
.rail-live::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--wine); animation: rec-pulse 2s infinite; }
.rail-hits { font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }

.article-main { min-width: 0; }
.article-head h1 {
    font-family: var(--serif); font-weight: 340;
    font-size: clamp(2.2rem, 4.5vw, 3.8rem); line-height: 1.02; letter-spacing: -.02em;
    margin: 0 0 1.5rem; font-variation-settings: "opsz" 100;
}
.com-content-article__body { font-size: 1.12rem; line-height: 1.8; max-width: 72ch; }
.com-content-article__body p { margin: 0 0 1.3rem; }
.com-content-article__body img {
    margin: 2rem 0; max-width: 100%; height: auto;
    /* let large images break out wider than the text column */
    width: auto;
}
.com-content-article__body img[style*="float"] { margin: .3rem 1.5rem 1rem 0; }
.com-content-article__body a { color: var(--wine); box-shadow: inset 0 -1px 0 var(--line-strong); transition: box-shadow .2s; }
.com-content-article__body a:hover { box-shadow: inset 0 -2px 0 var(--wine); }
.com-content-article__body h2, .com-content-article__body h3 {
    font-family: var(--serif); font-weight: 400; letter-spacing: -.01em; margin: 2rem 0 .8rem;
}
.article-tags { margin-top: 2.5rem; padding-top: 1.2rem; border-top: 1px solid var(--line); }

@media (max-width: 820px) {
    .article-grid { grid-template-columns: 1fr; gap: 1.2rem; }
    .article-rail { position: static; flex-direction: row; flex-wrap: wrap; gap: 1rem 1.6rem;
        align-items: baseline; border-top: 1px solid var(--ink); }
    .rail-meta { flex-direction: row; flex-wrap: wrap; gap: .6rem 1.4rem; align-items: baseline; }
    .com-content-article__body { max-width: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   PAGINATION — restrained mono, no boxes; current page underlined in wine
   ══════════════════════════════════════════════════════════════════════ */
.pagination__wrapper, .com-content-category-blog__pagination { margin-top: clamp(2rem, 5vw, 3.5rem); border-top: 1px solid var(--ink); padding-top: 1.4rem; }
.pagination {
    display: flex; flex-wrap: wrap; gap: .15rem; list-style: none;
    justify-content: center; align-items: center; padding: 0; margin: 0;
    font-family: var(--mono);
}
.pagination .page-item { display: inline-flex; }
.pagination .page-link, .pagination a, .pagination span {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 2.4rem; height: 2.4rem; padding: 0 .65rem;
    font-size: .8rem; letter-spacing: .04em; color: var(--ink);
    border: 0; background: none; text-decoration: none;
    transition: color .15s, background .15s;
}
.pagination a:hover, .pagination .page-link:hover { color: var(--wine); background: var(--paper-2); }
.pagination .active .page-link, .pagination .active span, .pagination .current span {
    color: var(--wine); font-weight: 500;
    box-shadow: inset 0 -2px 0 var(--wine);
}
.pagination .disabled .page-link, .pagination .disabled span { color: var(--line-strong); }
/* first/prev/next/last chevrons read as mono arrows */
.pagination .page-link[aria-label] { color: var(--mute); }
.pagination .page-link[aria-label]:hover { color: var(--wine); }

/* ── Footer ──────────────────────────────────────────────────────────── */
.unipi-footer { border-top: 1.5px solid var(--ink); margin-top: 2rem; background: var(--paper); }
.unipi-footer .footer-inner {
    display: grid; grid-template-columns: auto 1fr auto; gap: 2rem; align-items: center;
    padding-block: 2.2rem;
}
.unipi-footer .footer-brand img { height: 40px; width: auto; }
.unipi-footer .footer-copyright { font-family: var(--mono); font-size: .7rem; letter-spacing: .08em; color: var(--mute); text-align: right; text-transform: uppercase; }
.unipi-footer .footer-modules ul { list-style: none; display: flex; gap: 1.4rem; margin: 0; padding: 0; font-size: .85rem; }
@media (max-width: 700px) { .unipi-footer .footer-inner { grid-template-columns: 1fr; } .unipi-footer .footer-copyright { text-align: left; } }

/* ── Back to top ─────────────────────────────────────────────────────── */
.unipi-backtop {
    position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 1200;
    width: 42px; height: 42px; display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--ink); background: var(--paper); color: var(--ink);
    font-family: var(--mono); transition: background .2s, color .2s;
}
.unipi-backtop:hover { background: var(--ink); color: var(--paper); }

/* ── Sidebars / modules ──────────────────────────────────────────────── */
aside .moduletable, aside .card { border: 1px solid var(--line); padding: 1.3rem; margin-bottom: 1.5rem; background: var(--paper); }
aside h3 { font-family: var(--mono); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--mute); margin-top: 0; }

/* ── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 880px) {
    .unipi-header .header-inner { min-height: 0; padding-block: .8rem; }
    .unipi-nav { width: 100%; }
    .brand-tagline { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Visible keyboard focus */
a:focus-visible, button:focus-visible { outline: 2px solid var(--wine); outline-offset: 3px; }
