/* ═══════════════════════════════════════════════════════════════════
   popup.gr — Hero carousel
   Full-bleed, full-screen. Native CSS scroll-snap, μηδέν εξαρτήσεις.

   Τα rows έρχονται από το view first_page_layout / hero_block_1 με
   markup <article class="article article--heroMag article--today">.
   Το markup ΔΕΝ αλλάζει — αυτό το CSS το μετατρέπει σε slide.

   Χρώματα και γραμματοσειρές από css/tokens.css (--pg-*).
   ═══════════════════════════════════════════════════════════════════ */

.hero-carousel.hero-carousel.hero-carousel {
  --hc-bg:      var(--pg-bg, #121212);
  --hc-text:    var(--pg-text, #e8e8e8);
  --hc-muted:   var(--pg-text-muted, #a0a0a0);
  --hc-faint:   var(--pg-text-faint, #6e6e6e);
  --hc-accent:  var(--pg-brand-on-dark, #e55d65);
  --hc-display: var(--pg-font-display, PFSpekkVARSemiBold, Arial, sans-serif);
  --hc-medium:  var(--pg-font-medium, PFSpekkVARMedium, Arial, sans-serif);
  --hc-body:    var(--pg-font-body, PFSpekkVARRegular, Arial, sans-serif);
  --hc-wrap:    var(--pg-wrap, 1280px);

  /* 100svh = full screen. 88svh αφήνει την επόμενη σειρά να ξεμυτίζει.
     svh και ΟΧΙ vh: το vh σπάει με τη μπάρα URL στα κινητά. */
  --hc-h:       var(--pg-hero-h, 100svh);

  /* ΑΥΤΟΜΑΤΗ ΕΝΑΛΛΑΓΗ (βημα 126). Το JS τα διαβαζει απο εδω.
     Δεκτα: 6s · 6000ms · σκετο 6 (δευτερολεπτα).  0 = κλειστο.
     Ο χρονος ΔΕΝ μετραει οσο το πληκτρολογιο ειναι μεσα στο carousel,
     οσο η καρτελα ειναι κρυμμενη, και οσο το carousel ειναι εκτος
     οθονης. Με prefers-reduced-motion δεν ξεκιναει καθολου. */
  --hc-autoplay: 4s;        /* βημα 139 — ητανε 6s, εμοιαζε στασιμο */

  /* ΠΕΡΙΟΔΟΣ ΧΑΡΙΤΟΣ ΤΟΥ ΠΟΝΤΙΚΙΟΥ (βημα 127).
     Με τον κερσορα πανω στο carousel η εναλλαγη σταματαει — αλλα ΟΧΙ
     για παντα. Μετα απο τοσο, ξεκιναει παλι ακομα κι αν ο κερσορας
     ειναι ακομα εκει. 12s = δυο slides: αρκετα για να διαβασεις εναν
     τιτλο χωρις διακοπη, οχι τοσα ωστε να παγωσει επ' αοριστον επειδη
     αφησες το ποντικι εκει.
       0    = το ποντικι δεν σταματαει καθολου
       600s = πρακτικα «σταματα οσο ειμαι πανω» (η παλια συμπεριφορα)
     Το πληκτρολογιο ΔΕΝ εχει χαρη: το focus ειναι ισχυροτερο σημαδι
     οτι καποιος πλοηγειται ενεργα. */
  --hc-hover-grace: 12s;

  position: relative;
  background: var(--hc-bg);
  color: var(--hc-text);
  font-family: var(--hc-body);

  /* ── Full-bleed έξοδος από το .wrapper ──────────────────────────
     Το block κάθεται μέσα σε <div class="region ... wrapper"> που έχει
     max-width. Χωρίς αυτό, το hero μένει με μαύρες μπάρες δεξιά-αριστερά.
     Το mainsite.css έχει ήδη overflow-x: hidden, οπότε το 100vw δεν
     δημιουργεί οριζόντιο scroll.                                      */
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

/* ═══ Track — native scroll-snap ═══════════════════════════════════ */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track::-webkit-scrollbar { display: none; }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track:focus-visible {
  outline: 3px solid var(--hc-accent);
  outline-offset: -3px;
}
@media (prefers-reduced-motion: reduce) {
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track { scroll-behavior: auto; }
}

/* ═══ Κάθε row του Views γίνεται slide ═════════════════════════════ */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article {
  position: relative;
  min-height: var(--hc-h);
  display: grid;
  align-content: end;
  scroll-snap-align: center;
  scroll-snap-stop: always;
  isolation: isolate;
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: none;
  overflow: hidden;
}

/* ── Η εικόνα γεμίζει το slide ── */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image {
  position: absolute;
  inset: 0;
  z-index: -1;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  background: #0d0d0d;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image :is(a, figure, picture, div) {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  margin: 0;
}

/* Scrim — ΥΠΟΧΡΕΩΤΙΚΟ: χωρίς αυτό ο ανοιχτός τίτλος πάνω σε φωτεινή
   φωτογραφία γίνεται αδιάβαστος. */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  /* Β31 — Το κατω ακρο τελειωνει ΣΤΟ ΧΡΩΜΑ ΤΗΣ ΣΕΛΙΔΑΣ, οχι σε μαυρο.
     Πριν ητανε rgb(0 0 0 / .92): ουτε αδιαφανες, ουτε το χρωμα του φοντου.
     Αρα στο κατω ακρο εμενε μια αχνη εικονα και αμεσως μετα ξεκιναγε
     αποτομα το --pg-bg. Ορατη ραφη.

     Τωρα το τελευταιο stop ειναι var(--hc-bg) = var(--pg-bg), αρα το hero
     ΛΙΩΝΕΙ μεσα στη σελιδα. Και επειδη ειναι token, ακολουθει αυτοματα
     οποιο σκουρο κι αν διαλεξεις — δεν ξαναπειραζεται εδω.               */
  background: linear-gradient(to bottom,
    rgb(0 0 0 / .55)   0%,
    rgb(0 0 0 / .10)  32%,
    rgb(0 0 0 / .62)  74%,
    var(--hc-bg)     100%);
}

/* ── Το κείμενο, κάτω αριστερά ── */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--hc-wrap);
  margin: 0 auto;
  padding-inline: 1.25rem;
  /* ── ΚΑΤΕΒΑΙΝΕΙ ΣΤΟΝ ΧΩΡΟ ΤΟΥ ΜΕΤΡΗΤΗ — ΒΗΜΑ 276 ─────────────────
     ΗΤΑΝ clamp(5rem, 10vh, 7.5rem) = 75-112px. Ο μετρητης ειναι
     position: absolute, αρα ΔΕΝ επιανε χωρο ο ιδιος — τον χωρο τον
     κρατουσε ΑΥΤΟ το padding, ωστε το κειμενο να μην πεσει πανω του
     (ο μετρητης καθεται στο bottom: 2.75rem).

     Τωρα που εφυγε, το μισο αρκει: το κειμενο κατεβαινει ~40-56px.
     ΔΕΝ μηδενιζεται — ο ηρωας θελει αερα απο την κατω ακρη, αλλιως
     ο τιτλος ακουμπαει το επομενο μπλοκ.

     ΤΟ safe-area ΜΕΝΕΙ: στο desktop ειναι 0, στο κινητο κραταει
     αποσταση απο τη μπαρα του browser.                            */
  padding-bottom: calc(var(--hc-content-pad-b, clamp(2.5rem, 5vh, 3.75rem))
                     + env(safe-area-inset-bottom, 0px));
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  text-align: left;
}

/* Kicker */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__category {
  display: inline-block;

  /* ── ΠΙΟ ΚΟΝΤΑ ΣΤΟΝ ΤΙΤΛΟ — ΒΗΜΑ 274 ────────────────────────────
     Το .article__content ειναι flex column με gap: 1rem (16px), που
     ισχυει ΑΝΑΜΕΣΑ ΣΕ ΟΛΑ τα παιδια. Μικραινοντας το gap θα κολλαγαν
     ΚΑΙ ο τιτλος με την περιληψη. Το αρνητικο margin μαζευει ΜΟΝΟ
     αυτη τη μια αποσταση: 16 − 7 = 9px.                           */
  margin: 0 0 -7px;

  /* ── BOLD, ΟΧΙ ΠΛΑΓΙΑ — ΒΗΜΑ 274 ────────────────────────────────
     ΗΤΑΝ var(--hc-medium) = PFSpekkVARMedium. ΤΟ ΟΝΟΜΑ ΛΕΕΙ ΨΕΜΑΤΑ:

         @font-face { font-family: PFSpekkVARMedium;
                      src: url(../fonts/PFSpekkVAR-MediumItalic.woff2) }

     Η οικογενεια δηλωνεται «Medium» αλλα το αρχειο ειναι MediumItalic.
     Καμια γραμμη font-style δεν υπηρχε πουθενα — τα πλαγια ερχονταν
     απο ΤΟ ΙΔΙΟ ΤΟ ΑΡΧΕΙΟ. Γι' αυτο δεν φαινοταν σε κανενα grep για
     «italic» στους κανονες μας.

     ΟΠΟΥ ΑΛΛΟΥ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ Η --pg-font-medium, ΤΟ ΙΔΙΟ ΙΣΧΥΕΙ:
     το κειμενο ειναι πλαγιο χωρις να το εχει ζητησει κανεις. Δεν
     αλλαζει σημερα — αλλα οταν βρεθει «ανεξηγητο» πλαγιο αλλου, εδω
     ειναι η εξηγηση.

     Τωρα ιδια φωνη με το .article__category των καρτων (sections.css
     ενοτητα 4): Fira Sans 700, ορθια.                             */
  font-family: var(--pg-font-cond, 'Fira Sans', Arial, sans-serif);
  font-weight: 700;
  font-style: normal;

  /* ── ΒΗΜΑ 273 — ΜΕΓΑΛΩΝΕΙ ΜΑΖΙ ΜΕ ΤΟΝ ΤΙΤΛΟ ─────────────────────
     ΗΤΑΝ σταθερο .75rem (11,25px) σε ΚΑΘΕ πλατος. Στο κινητο ταιριαζε,
     στο desktop οχι — και ο λογος δεν ειναι το μεγεθος του kicker αλλα
     η ΣΧΕΣΗ του με τον τιτλο:

         κινητο    τιτλος ~28px  /  kicker 11px  →  39%
         desktop   τιτλος ~70px  /  kicker 11px  →  16%

     Ο τιτλος κλιμακωνεται (clamp), το kicker οχι. Σε καθε βημα που
     μεγαλωνε ο ενας, ο αλλος εμενε πισω.

     ΤΟ clamp ΚΡΑΤΑΕΙ ΤΟ ΚΙΝΗΤΟ ΟΠΩΣ ΕΙΝΑΙ: στα 440px δινει ~11,6px,
     δηλαδη πρακτικα το παλιο .75rem — που ο χρηστης ειπε ρητα οτι
     ειναι σωστο. Αλλαζει ΜΟΝΟ απο τα ~900px και πανω, οπου φτανει
     τα 16,5px και η σχεση ξαναγινεται ~24%.

     ΓΙΑΤΙ ΟΧΙ ΔΕΥΤΕΡΟΣ ΚΑΝΟΝΑΣ ΣΕ @media: θα ηταν δυο νουμερα σε δυο
     σημεια, με αλμα στο breakpoint. Το clamp ειναι ενα νουμερο και
     συνεχης μεταβαση — ιδιο μοτιβο με το --pg-h-section.           */
  font-size: clamp(.75rem, .6rem + .6vw, 1.1rem);
  letter-spacing: .16em;
  text-transform: uppercase;
  /* ΒΗΜΑ 274 — ηταν var(--hc-accent) = --pg-brand-on-dark (#e55d65),
     ενα πιο απαλο κοκκινο μονο του καρουζελ. Τωρα το ΙΔΙΟ token με
     τις καρτες και τη σελιδα αρθρου: μια κατηγορια, ενα κοκκινο, σε
     ολο το site.                                                  */
  color: var(--pg-section-accent, rgb(255 72 72));
  text-decoration: none;
}
/* ΤΑ HOVER ΦΡΟΥΡΗΜΕΝΑ — βημα 138.
   Σε οθονη αφης ΔΕΝ υπαρχει hover: ενα tap κολλαει την κατασταση πανω
   στο στοιχειο μεχρι να πατησεις καπου αλλου. Στο screenshot του
   χρηστη ο τιτλος «Το σηκωσε ο Τσιτσιπας» εμενε υπογραμμισμενος.
   Το ιδιο μαθημα ειναι ηδη γραμμενο στο sections.css (ενοτητα 4) —
   εδω ειχε ξεχαστει σε τρεις κανονες.                              */
/* ── ΚΑΜΙΑ ΑΠΟΛΥΤΩΣ ΑΝΤΙΔΡΑΣΗ ΣΤΟ HOVER — ΒΗΜΑ 275 ────────────────
   ΗΤΑΝ underline (μεχρι το 274), μετα αλλαγη χρωματος. Ζητηθηκε
   ΤΙΠΟΤΑ: η κατηγορια ειναι απλως κλικαμπλ.

   ΓΙΑΤΙ ΓΡΑΦΕΤΑΙ ΚΑΝΟΝΑΣ ΑΝΤΙ ΝΑ ΣΒΗΣΤΕΙ:
   αν απλα εσβηνα τον δικο μας, θα επιανε ο κανονας του sections.css
       .article__category×3:hover { color: var(--pg-section-accent) }
   Σημερα ειναι ΑΚΡΙΒΩΣ το ιδιο token με το βασικο χρωμα (βημα 274),
   αρα δεν θα φαινοταν τιποτα — αλλα την ημερα που καποιος αλλαξει
   εκεινο, το hover εδω θα αρχιζε να κουναει χρωμα «απο μονο του».
   Ο ρητος κανονας κλειδωνει το ΙΔΙΟ token και στις δυο καταστασεις:
   ο,τι κι αν γινει με το βασικο, το hover το ακολουθει.

   ΤΟ ΠΟΙΝΤΕΡ ΜΕΝΕΙ ΧΕΡΙ: ειναι <a> με href. Το «κλικαμπλ» το δειχνει
   ο κερσορας, που δεν τον αγγιζει κανεις — δεν χρειαζεται οπτικη
   αντιδραση για να καταλαβει ο χρηστης οτι πατιεται.              */
@media (hover: hover) and (pointer: fine) {
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__category:hover {
    color: var(--pg-section-accent, rgb(255 72 72));
    text-decoration: none;
  }
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__category:empty { display: none; }

/* Τίτλος */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title {
  display: block;
  margin: 0;
  max-width: 24ch;
  font-family: var(--hc-display);
  /* Σε σκούρο φόντο το ανοιχτό κείμενο φαίνεται βαρύτερο — χωρίς επιπλέον bold */
  font-weight: 400;
  font-size: clamp(2rem, 5.2vw, 4.125rem);
  line-height: 1.04;
  letter-spacing: -.02em;
  color: #f2f2f2;
  text-decoration: none;
  text-wrap: balance;
}
@media (hover: hover) and (pointer: fine) {
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title:hover {
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: .12em;
  }
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title:focus-visible {
  outline: 3px solid var(--hc-accent);
  outline-offset: 4px;
}

/* Sub heading */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content > p {
  margin: 0;
  max-width: 52ch;
  /* >=17px: οι ελληνικοί τόνοι θέλουν χώρο */
  font-size: clamp(1.0625rem, 1.6vw, 1.1875rem);
  line-height: 1.55;
  color: #c4c4c4;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content > p:empty { display: none; }

/* Συντάκτης και ημερομηνία */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem .75rem;
  margin: 0;
  /* ΒΗΜΑ 244 — ηταν .875rem (14px), γραμμενο εδω στο (0,4,0), αρα
     ΝΙΚΑΓΕ το (0,3,0) του sections.css. Χωρις αυτη την αλλαγη ο
     ηρωας του καρουζελ θα εμενε το μονο σημειο με 14px υπογραφη. */
  font-size: var(--pg-meta-byline, .8666rem);
  color: var(--hc-muted);
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info :is(a, .dark, span, time) {
  color: var(--hc-muted);
  font-size: inherit;
  text-decoration: none;
}
@media (hover: hover) and (pointer: fine) {
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info a:hover {
    color: var(--hc-accent);
    text-decoration: underline;
  }
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info :empty { display: none; }

/* ═══ Counter 1/N ══════════════════════════════════════════════════ */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__counter {
  position: absolute;
  z-index: 2;
  margin: 0;
  left: 1.25rem;
  bottom: calc(1.5rem + env(safe-area-inset-bottom, 0px));

  /* ── ΑΦΑΙΡΕΘΗΚΕ — ΒΗΜΑ 276, ΔΙΟΡΘΩΘΗΚΕ ΣΤΟ 277 ───────────────────
     ΗΤΑΝ display: flex.

     ΤΟ ΒΗΜΑ 276 ΑΠΕΤΥΧΕ ΓΙΑ ΛΟΓΟ ΠΟΥ ΑΞΙΖΕΙ ΝΑ ΓΡΑΦΤΕΙ: ειχα βαλει
     ξεχωριστο κανονα { display: none } ΠΡΙΝ απο αυτον εδω. Ιδιος
     επιλογεας, ιδια ειδικοτητα (0,4,0) — και σε ισοβαθμια κερδιζει ο
     ΤΕΛΕΥΤΑΙΟΣ. Ο αρχικος, με το display: flex, ερχοταν 12 γραμμες
     μετα και τον ακυρωνε. Το αρχειο στον server ηταν σωστο, ο
     κανονας υπηρχε, και ομως δεν εκανε τιποτα.

     ΟΤΑΝ ΓΡΑΦΕΙΣ ΚΑΝΟΝΑ ΜΕ ΤΟΝ ΙΔΙΟ ΕΠΙΛΟΓΕΑ ΠΟΥ ΥΠΑΡΧΕΙ ΗΔΗ,
     αλλαξε την ΤΙΜΗ μεσα του — μη γραψεις δευτερο. Αλλιως κριτης
     γινεται η σειρα, που αλλαζει με καθε μετακινηση ενοτητας.

     Στο ΚΙΝΗΤΟ ηταν ηδη κρυμμενος απο το βημα 184: η λιστα δειχνει
     και τα τεσσερα αρθρα ταυτοχρονα, και μετρητης σε κατι που
     φαινεται ολοκληρο δεν λεει τιποτα.

     ΓΙΑ ΕΠΑΝΑΦΟΡΑ: display: flex. Ολοι οι υπολοιποι κανονες του
     (θεση, χρωματα, tabular-nums) ειναι ανεπαφοι.                 */
  display: none;
  gap: .4rem;
  font-family: var(--hc-body);
  font-size: .875rem;
  letter-spacing: .1em;
  color: var(--hc-muted);
  font-variant-numeric: tabular-nums;   /* δεν πηδάει το πλάτος */
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__pos { color: var(--hc-accent); }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__sep { color: var(--hc-faint); }

@media (min-width: 768px) {
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__counter {
    left: max(1.25rem, calc(50% - var(--hc-wrap) / 2));
    bottom: 2.75rem;
    padding-left: calc(var(--hc-dots-w, 0px) + 1.375rem);
  }
}

/* ═══ Dots — τα φτιάχνει το hero-carousel.js ═══════════════════════ */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__dots {
  position: absolute !important;
  z-index: 2;
  left: 1.25rem;
  bottom: calc(3.25rem + env(safe-area-inset-bottom, 0px));
  display: flex;
  gap: .5rem;
  margin: 0;
  padding: 0 !important;
}
@media (min-width: 768px) {
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__dots {
    left: max(1.25rem, calc(50% - var(--hc-wrap) / 2));
    bottom: 2.75rem;
  }
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__dot {
  min-height: 0 !important;   /* .button,button -> min-height:48px : to height DEN to nika */
  width: 52px !important;
  height: 4px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 2px !important;
  background: rgb(255 255 255 / .28) !important;
  min-width: 0 !important;
  letter-spacing: normal !important;
  line-height: 1 !important;
  cursor: pointer;
  transition: background .25s;
  appearance: none;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__dot[aria-current="true"] { background: var(--hc-accent) !important;}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__dot:focus-visible {
  outline: 2px solid var(--hc-accent);
  outline-offset: 3px;
}

/* ═══ Βελάκια — τα φτιάχνει το hero-carousel.js ════════════════════ */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow {
  min-height: 48px !important;   /* .button,button -> min-height:48px : to height DEN to nika */
  position: absolute !important;
  z-index: 2;
  bottom: 2.25rem;
  display: none;
  place-items: center;
  width: 48px !important;
  height: 48px !important;
  padding: 0 !important;
  border: 1px solid rgb(255 255 255 / .25) !important;
  border-radius: 50% !important;
  background: rgb(0 0 0 / .45) !important;
  min-width: 0 !important;
  letter-spacing: normal !important;
  line-height: 1 !important;
  color: var(--hc-text) !important;
  cursor: pointer;
  backdrop-filter: blur(6px);
  appearance: none;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow--prev { right: calc(max(1.25rem, 50% - var(--hc-wrap) / 2) + 72px); }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow--next { right: max(1.25rem, calc(50% - var(--hc-wrap) / 2)); }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow:hover { background: rgb(0 0 0 / .7) !important;}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow:focus-visible {
  outline: 3px solid var(--hc-accent);
  outline-offset: 2px;
}
/* (0,4,0) opos kai o kanonas display:none pio pano - alliws xanei */
@media (min-width: 1024px) {
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__arrow { display: grid; }
}

/* ═══ Ουδετεροποίηση παλιών κανόνων του mainsite.css ═══════════════
   Το .article--heroMag και το .heroSection ήταν φτιαγμένα για ΕΝΑ
   άρθρο με πλαϊνή στήλη. Εδώ τα μηδενίζουμε μέσα στο carousel.       */

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article--heroMag,
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article--today {
  display: grid;
  float: none;
  width: 100%;
  max-width: none;
  border: 0;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .heroSection__container,
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .heroSection__article {
  display: contents;
}

/* ═══════════════════════════════════════════════════════════════════════
   ΘΩΡΑΚΙΣΗ ΑΠΕΝΑΝΤΙ ΣΤΟ mainsite.css              (βημα 013 - 28/09/2026)
   Καθε κανονας εδω ακυρωνει μια συγκεκριμενη δηλωση του mainsite.css.
   Διπλα σε καθε ομαδα γραφεται ο κανονας-αντιπαλος και η βαρυτητα του,
   ωστε να ξερουμε τι θα σπασει αν καποιος αλλαξει το mainsite.css.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. Το hero ειναι flex item, οχι block ─────────────────────────────
   Αντιπαλος: .view-content.row  ->  display:flex; flex-wrap:wrap; margin:0 -12px
   Το <section class="hero-carousel"> καθεται ΜΕΣΑ σε <div class="view-content row>
   που ειναι flex container. Ενα flex item με width:100vw εχει flex-shrink:1
   απο default, αρα ΣΥΡΡΙΚΝΩΝΕΤΑΙ στο πλατος του .row (~1336px στα 1440px
   viewport) και το full-bleed ακυρωνεται σιωπηλα. Αυτο ηταν το βασικο
   προβλημα - δεν ηταν θεμα specificity.                                  */
.hero-carousel.hero-carousel.hero-carousel {
  flex: 0 0 auto;
  align-self: stretch;
}

/* Το .heroSection (το block wrapper, εξω απο το section μας) βαζει
   margin-bottom: 48px. Σε full-bleed hero το θελουμε κολλητο.
   Αντιπαλος: .heroSection (0,1,0)                                        */
.heroSection.heroSection.heroSection {
  margin-bottom: 0;
}

/* ── 2. Το slide ─────────────────────────────────────────────────────── */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article {
  /* Αντιπαλος: .article -> min-width:0 (0,1,0). Σε grid track 100% δεν
     ενοχλει, αλλα το κλειδωνουμε για να μη συρρικνωνεται ποτε.           */
  min-width: 100%;
}

/* ── 3. Η εικονα ─────────────────────────────────────────────────────── */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image :is(a, figure, picture, div) {
  /* Αντιπαλος: .article__image figure -> aspect-ratio: 1 (0,1,1)
     Η προηγουμενη μας δηλωση κερδιζε σε specificity αλλα ΔΕΝ εγραφε
     καθολου aspect-ratio, αρα ο κανονας (0,1,1) περναγε ανενοχλητος και
     εκανε το figure τετραγωνο μεσα σε slide 100svh.                      */
  aspect-ratio: auto;
}

/* ── 4. Το κουτι του κειμενου ────────────────────────────────────────── */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content {
  /* Αντιπαλος: .article--heroMag .article__content (0,2,0)
       background-color: rgb(21,21,21)  -> σκουρο κουτι γυρω απο το κειμενο
       margin: -104px auto 0            -> το τραβαγε 104px πανω απο το slide
       padding: 16px 32px 0             -> το padding-top:16px επιβιωνε
       flex-direction: row              -> τιτλος και ημερομηνια στη σειρα
       flex-wrap: wrap
     Αντιπαλος: .article__content -> height:100% (0,1,0)                  */
  background: none;
  padding-top: 0;
  flex-wrap: nowrap;
  height: auto;
}

/* ── 5. Σειρα εμφανισης ──────────────────────────────────────────────── */
/* Αντιπαλοι: .article__title -> order:2 (0,1,0)
              .article p      -> order:3 (0,1,0)
              .article__info  -> χωρις order, αρα 0
   Αποτελεσμα: η ημερομηνια εβγαινε ΠΑΝΩ απο τον τιτλο κατα λαθος.
   Το δηλωνουμε ρητα: τιτλος, μετα ημερομηνια.                           */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title { order: 1; }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info  { order: 2; }
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content > p { order: 3; }

/* ── 6. Ο διαχωριστης "|" ────────────────────────────────────────────── */
/* Αντιπαλος: .article__info span:before -> content:'|' (0,1,1)
   Σε 2 απο τα 3 αρθρα δεν υπαρχει συντακτης, αρα εβγαινε σκετο "|01.01.2019".
   Το σβηνουμε και το ξαναβαζουμε μονο οταν ΠΡΟΗΓΕΙΤΑΙ ονομα.            */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info span::before {
  content: none;
}
/* ΒΗΜΑ 247 — ΤΟ «·» ΣΒΗΝΕΙ ΚΑΙ ΕΔΩ, ΣΕ ΟΛΑ ΤΑ ΠΛΑΤΗ.
   Εβαζε τελεια ΜΟΝΟ οταν προηγειτο ονομα (βημα 017), που ηταν σωστο
   οσο η υπογραφη ηταν ΜΙΑ γραμμη. Με δυο σειρες καθεται στην ΑΡΧΗ
   της δευτερης, πριν την ημερομηνια.

   ΓΙΑΤΙ ΧΡΕΙΑΖΕΤΑΙ ΞΕΧΩΡΙΣΤΗ ΓΡΑΜΜΗ ΚΑΙ ΔΕΝ ΤΟ ΕΠΙΑΣΕ ΤΟ GLOBAL:
   ο νεος κανονας του sections.css ειναι
       .article__info×3 > *::before          (0,3,1)
   ενω αυτος εδω ειναι
       .hero-carousel×3 .__track .article__info a + span::before  (0,5,1)
   — πεντε κλασεις εναντι τριων, αρα ΚΕΡΔΙΖΕ. Το βημα 245 το ειχε
   σβησει μονο μεσα στο media του κινητου· εδω φευγει οριστικα.    */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info a + span::before {
  content: none;
  margin-right: 0;
}

/* ═══════════════════════════════════════════════════════════════════════
   ΖΩΝΕΣ ΚΛΙΚ                                       (βημα 015 - 29/09/2026)
   Αντικαθιστουν dots + arrows. Τρεις ζωνες πανω σε καθε slide:
     αριστερο 33%  w-resize  -> προηγουμενο
     μεσαιο   34%  pointer   -> ανοιγει το αρθρο
     δεξι     33%  e-resize  -> επομενο
   Τα στοιχεια τα φτιαχνει το hero-carousel.js, ΜΟΝΟ σε ποντικι.
   ═══════════════════════════════════════════════════════════════════════ */

/* Τα !important εδω ΔΕΝ ειναι υπερβολη: ο κανονας
   .lookLayout button:not(…)×9  ειναι (0,10,1) και βαζει
   border:4px solid #000, min-width:225px, position:relative
   και ενα ::before που σερνεται μαυρο στο hover. Δες Β14/Β15.  */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone {
  position: absolute !important;
  top: 0 !important;
  bottom: 0 !important;
  z-index: 4;
  display: block;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  box-shadow: none !important;
  outline: 0;
  min-width: 0 !important;
  min-height: 0 !important;
  overflow: visible !important;
  -webkit-appearance: none;
  appearance: none;
}

/* Το σερνομενο μαυρο ::before του lookLayout */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone::before,
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone::after {
  content: none !important;
}

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone--prev {
  left: 0; width: 33%; cursor: w-resize;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone--open {
  left: 33%; width: 34%; cursor: pointer;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone--next {
  right: 0; width: 33%; cursor: e-resize;
}

/* Το κειμενο δεν πρεπει να κλεβει τα κλικ απο τις ζωνες —
   ο τιτλος ομως παραμενει κανονικο link.                      */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content {
  pointer-events: none;
}
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content a {
  pointer-events: auto;
}
/* Το <a> γυρω απο τη φωτογραφια πιανει ολο το slide και θα εσκιαζε
   τις ζωνες. Τη δουλεια του την κανει πια η μεσαια ζωνη.        */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image a {
  pointer-events: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   PARALLAX                                         (βημα 016 - 29/09/2026)
   Η φωτογραφια ειναι ψηλοτερη απο το slide και συρεται προς τα κατω
   καθως η σελιδα ανεβαινει — αρα φευγει πιο αργα απο τα γραμματα.

   ΕΝΑ νουμερο τα ελεγχει ολα: το --hc-par-depth (σε %).
   Το CSS το χρησιμοποιει για το επιπλεον υψος, και το JS το ΔΙΑΒΑΖΕΙ
   απο εδω για την ταχυτητα. Ετσι δεν ξεσυγχρονιζονται ποτε.
     30 = ηπιο (προεπιλογη)   ·   50 = εντονο   ·   0 = κλειστο
   ═══════════════════════════════════════════════════════════════════════ */
.hero-carousel.hero-carousel.hero-carousel {
  /* ΒΗΜΑ 293 — 30 → 0. ΤΟ PARALLAX ΗΤΑΝ ΑΥΤΟ ΠΟΥ ΕΚΟΒΕ ΤΗΝ ΚΟΡΥΦΗ.

     Η ΑΡΙΘΜΗΤΙΚΗ, γιατι δεν ειναι θεμα γουστου:
       σε ηρεμια το κουτι της εικονας ειναι  top: -30%, height: 130%
       το ορατο παραθυρο ειναι το 0…100% του slide
       αρα βλεπεις το 30/130 … 130/130 του κουτιου = 23% … 100%
     Το πανω 23% της φωτογραφιας ηταν ΠΑΝΤΑ εκτος καδρου.

     ΔΕΝ ΓΙΝΕΤΑΙ ΝΑ ΕΧΕΙΣ ΚΑΙ ΤΑ ΔΥΟ. Το parallax απαιτει η εικονα
     να ΣΥΡΕΤΑΙ ΠΡΟΣ ΤΑ ΚΑΤΩ οσο κατεβαινεις (ετσι φευγει πιο αργα
     απο τα γραμματα — αυτο ειναι το ζητουμενο εφε). Για να μη
     ανοιξει κενο στην κορυφη στο τελος της διαδρομης, πρεπει στην
     αρχη να υπαρχει κρυμμενο αποθεμα ΑΚΡΙΒΩΣ οσο η διαδρομη. Το
     κρυμμενο αποθεμα ΕΙΝΑΙ η κορυφη της φωτογραφιας.

     Με 0 το calc() παρακατω δινει top: 0 και height: 100% — το
     κουτι ταυτιζεται με το slide και η φωτογραφια αρχιζει απο την
     κορυφη της. Το JS διαβαζει το ιδιο νουμερο (hero-carousel.js
     γρ.177) και σταματαει μονο του: speed 0 → δεν δενει καν
     ακροατη scroll.

     ΑΝ ΘΕΛΗΣΕΙΣ ΛΙΓΗ ΚΙΝΗΣΗ ΠΙΣΩ: καθε μοναδα εδω κρυβει περιπου
     ισο ποσοστο της κορυφης. 10 = κρυβει ~9%, συμβιβασμος.       */
  --hc-par-depth: 0;
}

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image {
  overflow: hidden;
}

/* Το επιπλεον υψος ισουται ΑΚΡΙΒΩΣ με τη διαδρομη που θα διανυσει,
   αρα δεν ξεμενει ποτε κενο ουτε πανω ουτε κατω.                    */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image img {
  position: absolute;
  left: 0;
  width: 100%;
  top: calc(-1 * var(--hc-par-depth, 30) * 1%);
  height: calc(100% + var(--hc-par-depth, 30) * 1%);
  object-fit: cover;
  /* ΒΗΜΑ 293 — Η ΚΟΠΗ ΑΓΚΥΡΩΝΕΤΑΙ ΣΤΗΝ ΚΟΡΥΦΗ.
     50% 0 = οριζοντια στο κεντρο, κατακορυφα στο πανω χειλος.

     ΔΕΥΤΕΡΗ ΑΜΥΝΑ, ΟΧΙ Η ΚΥΡΙΑ: με τις σημερινες αναλογιες
     (slide πιο στενο απο τη φωτογραφια) το cover κοβει ΟΡΙΖΟΝΤΙΑ
     και το κατακορυφο μερος δεν παιζει ρολο. Μπαινει γιατι τη
     στιγμη που ανεβει ΚΑΘΕΤΗ φωτογραφια — η που αλλαξει το υψος
     του slide — η κοπη θα γινει κατακορυφη, και τοτε πρεπει να
     κραταει την κορυφη χωρις να το ξαναθυμηθουμε.                */
  object-position: 50% 0;
  transform: translate3d(0, 0, 0);
  will-change: transform;
  backface-visibility: hidden;
}

/* Οποιος εχει ζητησει λιγοτερη κινηση, δεν παιρνει καθολου.
   Το JS το σεβεται κι αυτο ξεχωριστα.                              */
@media (prefers-reduced-motion: reduce) {
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__image img {
    top: 0;
    height: 100%;
    transform: none !important;
    will-change: auto;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   ΚΕΝΤΡΑΡΙΣΜΕΝΟ ΚΕΙΜΕΝΟ + ΔΙΟΡΘΩΣΗ ΚΛΙΚ         (βημα 017 - 29/09/2026)
   ═══════════════════════════════════════════════════════════════════════ */

/* Β18 — Ο τιτλος δεν πατιοταν.
   Οι ζωνες εχουν z-index: 4 και το .article__content ειχε z-index: 1,
   αρα οι ζωνες καθονταν ΠΑΝΩ στον τιτλο. Το pointer-events: auto δεν
   σωζει τιποτα οταν καποιο αλλο στοιχειο ειναι απο πανω — το κλικ το
   τρωει εκεινο πρωτο. Χρειαζεται ΚΑΙ σειρα στοιβαξης.                 */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__content {
  z-index: 5;
  align-items: center;
  text-align: center;
}

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info {
  /* ΒΗΜΑ 247 — ιδιο μοτιβο με τα .rvw-* του sections.css: το global
     εγινε flex-direction: column, αρα το οριζοντιο κεντραρισμα του
     ηρωα περναει στο align-items. Χωρις τη δευτερη γραμμη η υπογραφη
     του καρουζελ στο DESKTOP θα πηγαινε αριστερα, μεσα σε κατα τα
     αλλα κεντραρισμενο κειμενο.                                    */
  justify-content: center;
  align-items: center;
}

/* Ο μετρητης ακολουθει το κεντρο — μονος του κατω αριστερα θα εμενε
   ορφανος. Ακυρωνει και το padding-left που υπηρχε για τα (νεκρα) dots. */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__counter {
  left: 50%;
  right: auto;
  transform: translateX(-50%);
  padding-left: 0;
}

/* Ο τιτλος ειναι block με max-width: 24ch. Κεντραρισμενος, το κουτι του
   θα επιανε ολο αυτο το πλατος ακομα κι οπου η γραμμη ειναι κοντη — αρα
   θα ετρωγε κλικ απο τις ζωνες σε κενο χωρο. Με fit-content το κουτι
   αγκαλιαζει το πραγματικο κειμενο.                                    */
.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title {
  width: fit-content;
  margin-inline: auto;
}

/* ═══════════════════════════════════════════════════════════════════════
   GEOLOGICA ΣΤΟΝ ΤΙΤΛΟ + ΜΙΚΡΟΤΕΡΟ ΜΕΓΕΘΟΣ      (βημα 018 - 29/09/2026)
   Η οικογενεια και οι αξονες οριζονται στο tokens.css. Εδω μονο
   εφαρμογη — ενα σημειο αληθειας.
   ═══════════════════════════════════════════════════════════════════════ */
.hero-carousel.hero-carousel.hero-carousel {
  /* Ηταν clamp(2rem, 5.2vw, 4.125rem) = 32→66px. Τωρα 28→52px. */
  /* βημα 114 — ητανε clamp(1.75rem, 3.9vw, 3.25rem) = 26→49px.
     Σε slide που πιανει ΟΛΗ την οθονη, τα 49px ειναι τιτλος αρθρου,
     οχι εξωφυλλο: το κενο γυρω μεγαλωνει με την οθονη, τα γραμματα
     οχι, και η συνθεση «αδειαζει» στα μεγαλα μηκη.
     Τωρα 30→72px (root 15px).                                     */
  --hc-title-size: clamp(2rem, 5.2vw, 4.8rem);
}

.hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__title {
  font-size: var(--hc-title-size);

  /* Το παλιο font-weight: 400 ηταν σωστο για την PFSpekkVARSemiBold,
     που ΕΙΝΑΙ ηδη semibold στο ονομα της. Η Geologica ομως ειναι
     variable 100-900 — με 400 θα εβγαινε αδυνατη.                    */
  font-weight: var(--pg-display-wght, 700);

  /* Οι custom αξονες. Το wght ΔΕΝ μπαινει εδω: ειναι καταχωρημενη
     ιδιοτητα και το χειριζεται το font-weight πιο πανω.              */
  font-variation-settings: "SHRP" var(--pg-display-shrp, 100),
                           "CRSV" var(--pg-display-crsv, 0);

  letter-spacing: -.025em;
}


/* ═══════════════════════════════════════════════════════════════════════
   ΚΙΝΗΤΟ: ΤΟ CAROUSEL ΓΙΝΕΤΑΙ «ΗΡΩΑΣ + ΛΙΣΤΑ»      (βημα 137 - 09/10/2026)

   Σε κινητο το οριζοντιο swipe κρυβει περιεχομενο: ο αναγνωστης βλεπει
   ΕΝΑ αρθρο και καμια ενδειξη οτι υπαρχουν αλλα τεσσερα. Αντι γι' αυτο:

       ┌─────────────────┐
       │                 │   το ΠΡΩΤΟ slide, με την εικονα του
       │   [εικονα]      │   και το κειμενο απο πανω της
       │   Τιτλος        │
       └─────────────────┘
       ──────────────────    λεπτη γραμμη
        Τιτλος δευτερου      οι υπολοιποι τιτλοι, ΧΩΡΙΣ εικονα
       ──────────────────
        Τιτλος τριτου

   ΟΛΟ ΜΕ CSS — κανενα template, κανενα JS. Το markup μενει ακριβως ιδιο·
   αλλαζει μονο το πως αποδιδεται.

   ΓΙΑΤΙ max-width: 766px ΚΑΙ ΟΧΙ 767: ειναι το σημειο θραυσης που
   χρησιμοποιουν ηδη το mainsite.css και το header.css. Το carousel ειχε
   δικο του στα 768 (min-width) — αρα υπηρχε κενο ΕΝΟΣ pixel στα 767,
   οπου δεν ισχυε ουτε το ενα ουτε το αλλο.
   ═══════════════════════════════════════════════════════════════════════ */

@media (max-width: 766px) {

  .hero-carousel.hero-carousel.hero-carousel {
    /* ── ΒΗΜΑ 183: ΟΛΑ ΤΑ ΑΡΘΡΑ ΣΕ ΜΙΑ ΟΘΟΝΗ ──────────────────────
       Ηταν 76svh σταθερο. Με τεσσερις τιτλους απο κατω το συνολο
       εβγαινε ~1050px σε οθονη 800px — ο αναγνωστης επρεπε να
       σκρολαρει για να δει το τεταρτο αρθρο.

       ΤΩΡΑ Ο ΗΡΩΑΣ ΠΑΙΡΝΕΙ Ο,ΤΙ ΠΕΡΙΣΣΕΥΕΙ, δεν οριζει ο ιδιος
       υψος: κραταμε χωρο για τη λιστα και του δινουμε τα υπολοιπα.

       Γιατι ετσι και οχι «βαλε 48svh»: ενα σταθερο ποσοστο δουλευει
       σε ΜΙΑ οθονη. Σε iPhone SE (667px) τα 4 στοιχεια πιανουν 57%
       του υψους, σε iPhone 15 Pro Max (932px) μολις 41%. Η αφαιρεση
       προσαρμοζεται μονη της.

       ΤΟ ΔΑΠΕΔΟ (34svh) ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ: σε πολυ κοντη οθονη —
       κινητο σε οριζοντια θεση — η αφαιρεση θα εδινε αρνητικο η
       μηδενικο υψος και ο «ηρωας» θα εξαφανιζοταν.               */
    /* ΒΗΜΑ 235 — ηταν 400px. Μικραινοντας τον χωρο της λιστας,
       μεγαλωνει ο ηρωας: ο τυπος πιο κατω του δινει ο,τι περισσευει.
       340 = 4 × 85px, αρκετα για διστιχο τιτλο με φοντο πισω.      */
    --hc-list-h:   340px;
    --hc-h-lead:   max(34svh, calc(100svh - var(--hc-list-h)));
    --hc-list-gap: 12px;          /* ηταν 18 — κενο γυρω απο καθε τιτλο */

    /* ΤΟ ΚΕΝΟ ΣΤΗΝ ΕΠΑΦΗ ΗΡΩΑ ↔ ΠΡΩΤΟΥ ΤΙΤΛΟΥ — βημα 239.
       Το βημα 237 το μηδενισε ολοκληρο («κολλητα»). Ο χρηστης το
       θελει μικρο, οχι ανυπαρκτο. Ξεχωριστη μεταβλητη απο το
       --hc-list-gap: εκει ρυθμιζεται το κενο ΑΝΑΜΕΣΑ στους τιτλους,
       εδω μονο η ΜΙΑ πλευρα που ακουμπαει τον ηρωα. Αλλαζοντας το
       ενα δεν κουνιεται το αλλο.                                   */
    --hc-list-flush: 14px;

    /* Η ΑΥΤΟΜΑΤΗ ΕΝΑΛΛΑΓΗ ΣΒΗΝΕΙ. Δεν υπαρχει πια τι να εναλλαχθει —
       και το JS το διαβαζει απο εδω (βημα 126), αρα δεν χρειαζεται
       ουτε γραμμη JavaScript.                                        */
    --hc-autoplay: 0;
  }

  /* ── 1. Ο τροχος σταματαει και γινεται ΣΤΗΛΗ ΜΙΑΣ ΟΘΟΝΗΣ ────────
     ΒΗΜΑ 184. Ηταν display: block.

     Το βημα 183 κρατουσε ΣΤΑΘΕΡΑ 400px για τη λιστα και εδινε τα
     υπολοιπα στον ηρωα. Η πραγματικη λιστα ομως ειναι ~380px — και
     λιγοτερη οταν οι τιτλοι πιανουν μια σειρα αντι για δυο. Η
     διαφορα εμενε ΚΕΝΗ στο κατω μερος.

     Κυνηγωντας το νουμερο δεν λυνεται: εξαρταται απο το μηκος των
     τιτλων, που αλλαζει με καθε αρθρο. Η λυση ειναι να ΜΗΝ υπαρχει
     νουμερο — το flex μοιραζει ο,τι περισσεψει.                   */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track {
    display: flex;
    flex-direction: column;
    /* min-height, ΟΧΙ height: αν οι τιτλοι βγουν ψηλοτεροι απο το
       αναμενομενο, η στηλη μεγαλωνει αντι να τους κοψει.          */
    min-height: 100svh;
    overflow: visible;
    scroll-snap-type: none;

    /* Ο ΜΕΤΡΗΤΗΣ ΤΗΣ ΑΡΙΘΜΗΣΗΣ — βημα 241. Μηδενιζεται εδω, αυξανεται
       σε καθε .article πιο κατω, τυπωνεται μονο στα στοιχεια λιστας. */
    counter-reset: hc-n;

    /* ΒΗΜΑ 297 — ΓΡΑΜΜΗ ΚΑΙ ΚΑΤΩ ΑΠΟ ΤΟ ΤΕΛΕΥΤΑΙΟ ΑΡΘΡΟ.
       Καθε .article παιρνει border-TOP (γρ. ~892) και ο ηρωας το
       μηδενιζει. Αρα υπηρχαν γραμμες ΑΝΑΜΕΣΑ στα στοιχεια αλλα
       καμια ΚΑΤΩ απο το τελευταιο: η λιστα τελειωνε πανω στο μαυρο
       φοντο χωρις οριο.

       ΓΙΑΤΙ ΕΔΩ ΚΑΙ ΟΧΙ .article:last-child — ΤΟ ΚΡΙΣΙΜΟ:
       το hero-carousel.js κανει track.appendChild(tailClone) (γρ.59),
       δηλαδη υπαρχει ΚΛΩΝΟΣ στο ΤΕΛΟΣ. Ειναι κι αυτος .article και
       <article>, αρα θα τον επιαναν ΚΑΙ το :last-child ΚΑΙ το
       :last-of-type — και επειδη ειναι display: none !important, η
       γραμμη δεν θα φαινοταν ΠΟΤΕ. Το :nth-last-child(2) θα δουλευε
       μονο οσο ο κλωνος ειναι ακριβως ενας, και θα εσπαγε πριν τρεξει
       το JS, οπου κλωνοι δεν υπαρχουν καθολου.

       Στο ΙΔΙΟ το track η γραμμη μπαινει στο κατω οριο του
       περιεχομενου — τα display: none δεν μετρανε στη διαταξη, αρα
       πεφτει παντα κατω απο το τελευταιο ΟΡΑΤΟ αρθρο, οσα κι αν
       ειναι και ειτε εχει τρεξει το JS ειτε οχι.

       Ιδιο χρωμα και παχος με τις ενδιαμεσες, ωστε να διαβαζεται ως
       η ιδια γραμμη και οχι ως διακοσμηση.                          */
    border-bottom: 1px solid var(--pg-border, #2e2e2e);
  }

  /* Οι κλωνοι του ατερμονου loop δεν εχουν νοημα σε λιστα: θα εδειχναν
     το πρωτο και το τελευταιο αρθρο δυο φορες.                       */
  /* ΤΟ !important ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ — βημα 138.
     Ο κανονας του «ηρωα» πιο κατω εχει ΙΔΙΑ ειδικοτητα (0,5,0) και
     ερχεται ΑΡΓΟΤΕΡΑ, αρα κερδιζε και ΞΑΝΑΕΜΦΑΝΙΖΕ τον κλωνο με
     display: grid. Αποτελεσμα: ΔΥΟ μεγαλες φωτογραφιες — ο κλωνος
     του ΤΕΛΕΥΤΑΙΟΥ αρθρου και το πρωτο πραγματικο.                 */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] {
    display: none !important;
  }

  /* Μετρητης, κουκκιδες, ζωνες κλικ: χειριστηρια carousel που δεν
     χειριζονται πια τιποτα.                                          */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__counter,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__dots,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__zone {
    display: none !important;
  }

  /* ── 2. ΟΛΑ τα slides γινονται στοιχεια λιστας ──────────────────── */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article {
    min-width: 0;
    min-height: 0;
    scroll-snap-align: none;
    border-top: 1px solid var(--pg-border, #2e2e2e);

    /* ΟΣΟ ΤΟ ΚΕΙΜΕΝΟ ΤΟΥΣ — βημα 238.
       ΗΤΑΝ flex: 1 1 auto (βημα 184): καθε στοιχειο επαιρνε ΙΣΟ
       μεριδιο απο ο,τι περισσευε, ωστε η λιστα να γεμιζει ακριβως την
       οθονη. Στην πραξη, οταν ο ηρωας εβγαινε κοντος, το περισσευμα
       ηταν μεγαλο και καθε τιτλος κολυμπουσε μεσα σε 150+px κενου.

       Το 0 0 auto σημαινει «κρατα το φυσικο σου υψος, μη μεγαλωσεις
       και μη μικρυνεις». Το στοιχειο γινεται ακριβως οσο ο τιτλος και
       η υπογραφη του.

       ΤΟ ΚΕΝΟ ΔΕΝ ΧΑΝΕΤΑΙ — ΜΕΤΑΚΟΜΙΖΕΙ ΚΑΤΩ ΑΠΟ ΤΗ ΛΙΣΤΑ. Αυτο
       ακριβως ηθελε να αποφυγει το βημα 184· τωρα ειναι προτιμοτερο
       απο τιτλους που αιωρουνται.

       Το align-content: center δεν χρειαζεται πια — δεν υπαρχει κενο
       μεσα στο στοιχειο για να κεντραριστει κατι. Μενει το grid, που
       το χρειαζεται το περιεχομενο.                                */
    flex: 0 0 auto;
    display: grid;

    /* ── ΑΡΙΘΜΗΣΗ — βημα 241 ──────────────────────────────────────
       Ο μετρητης αυξανεται σε ΚΑΘΕ .article, ΜΑΖΙ με τον ηρωα — αρα
       ο ηρωας ειναι το 1 και το πρωτο στοιχειο λιστας το 2, που ειναι
       ακριβως η αριθμηση που ζητηθηκε.

       ΟΙ ΚΛΩΝΟΙ ΔΕΝ ΜΕΤΡΑΝΕ ΑΠΟ ΜΟΝΟΙ ΤΟΥΣ: εχουν display: none, και
       στοιχειο χωρις κουτι ΔΕΝ αυξανει μετρητη (CSS Lists spec). Αρα
       δεν χρειαζεται εξαιρεση — ουτε οταν τρεξει το JS και βαλει τον
       κλωνο ΠΡΙΝ απο το πρωτο αρθρο.                              */
    counter-increment: hc-n;

    /* ΔΥΟ ΣΤΗΛΕΣ: νουμερο | κειμενο. Το minmax(0, 1fr) και οχι σκετο
       1fr — αλλιως μακρυς τιτλος χωρις κενα δεν συμμαζευεται και
       σπρωχνει τη στηλη εξω απο την οθονη (min-width: auto).       */
    /* ΒΗΜΑ 279 — ΜΙΑ ΣΤΗΛΗ. Ηταν «auto minmax(0, 1fr)», οπου η πρωτη
       στηλη κρατουσε θεση για το ψηφιο. Τωρα το ψηφιο ειναι
       υδατογραφημα (position: absolute), αρα ΔΕΝ ειναι grid item και
       ΔΕΝ πρεπει να δεσμευει στηλη — αλλιως ο τιτλος θα εμενε
       στριμωγμενος σε πλατος που δεν χρειαζεται κανεις.          */
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
  }

  /* ── ΤΟ ΝΟΥΜΕΡΟ: ΜΟΝΟ ΠΕΡΙΓΡΑΜΜΑ ─────────────────────────────────
     ΒΗΜΑ 241.

     ΤΟ ΚΟΛΠΟ ΕΙΝΑΙ ΟΙ ΤΡΕΙΣ ΓΡΑΜΜΕΣ ΜΑΖΙ, ΜΕ ΑΥΤΗ ΤΗ ΣΕΙΡΑ ΛΟΓΙΚΗΣ:
       color              → το ΠΡΑΓΜΑΤΙΚΟ χρωμα, που το currentColor
                            θα διαβασει παρακατω
       -webkit-text-stroke → περιγραμμα σε currentColor
       -webkit-text-fill-color: transparent
                          → αδειαζει ΜΟΝΟ το γεμισμα

     ΓΙΑΤΙ ΟΧΙ color: transparent: τοτε το currentColor του stroke θα
     γινοταν κι αυτο transparent και το νουμερο θα εξαφανιζοταν
     ολοκληρο. Το -webkit-text-fill-color υπαρχει ακριβως γι' αυτο —
     χωριζει το γεμισμα απο την «ταυτοτητα χρωματος» του στοιχειου.

     ΑΝ ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΤΑΙ (παλιος browser): αγνοει και τις δυο
     -webkit- γραμμες, μενει το color — δηλαδη ΣΥΜΠΑΓΕΣ νουμερο στο
     ιδιο χρωμα. Χανεται το εφφε, οχι η πληροφορια.

     Το padding-left ειναι 1.25rem, ΙΔΙΟ με το padding-inline του
     .article__content, ωστε το νουμερο να ξεκιναει στο ΙΔΙΟ αριστερο
     περιθωριο με τον τιτλο του ηρωα και τα παντα αλλα. Το κενο
     αναμεσα σε νουμερο και τιτλο το δινει το δικο του padding-inline
     του content — δεν χρειαζεται column-gap.

     font-variant-numeric: tabular-nums ωστε το 2 και το 4 να πιανουν
     ΙΔΙΟ πλατος: αλλιως η στηλη auto αλλαζει πλατος ανα στοιχειο και
     οι τιτλοι δεν ξεκινανε στο ιδιο σημειο.                       */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article::before {
    /* ΔΥΟ ΨΗΦΙΑ, ΟΧΙ ΕΝΑ — βημα 243.
       decimal-leading-zero: «02, 03, 04, 05» αντι «2, 3, 4, 5». Ειναι
       η συμβαση αριθμησης των περιοδικων, και ο λογος που ενα σκετο
       «3» εμοιαζε με λαθος παρα με σχεδιασμο: δυο ψηφια διαβαζονται
       ως ΑΡΙΘΜΗΣΗ, ενα μονο ψηφιο ως τυχαιο νουμερο.
       ΓΥΡΙΣΜΑ ΠΙΣΩ: σβησε τα «, decimal-leading-zero».            */
    /* ╔═══════════════════════════════════════════════════════════╗
       ║  ΔΙΑΚΟΠΤΗΣ ΑΡΙΘΜΗΣΗΣ — ΒΗΜΑ 280                            ║
       ║                                                           ║
       ║  ΧΩΡΙΣ ΝΟΥΜΕΡΑ:  content: none;                           ║
       ║  ΜΕ ΥΔΑΤΟΓΡΑΦΗΜΑ: content: counter(hc-n, decimal-leading-zero);
       ╚═══════════════════════════════════════════════════════════╝

       ΤΟ content: none ΔΕΝ ΕΙΝΑΙ ΣΑΝ ΤΟ display: none. Το ψευδοστοιχειο
       ΔΕΝ ΠΑΡΑΓΕΤΑΙ ΚΑΘΟΛΟΥ: κανενα κουτι, καμια βαφη — και, το
       σημαντικο, ΚΑΝΕΝΑΣ ΓΛΥΦΟΣ ΔΕΝ ΖΗΤΕΙΤΑΙ. Αρα φευγουν και τα
       +41KB της Sofia Sans Condensed (βημα 243): ο browser κατεβαζει
       γραμματοσειρα μονο οταν καποιος ΟΡΑΤΟΣ χαρακτηρας τη χρειαζεται.
       Με display: none το κουτι θα υπηρχε και το αρχειο θα κατεβαινε.

       ΟΛΟΙ ΟΙ ΚΑΝΟΝΕΣ ΑΠΟ ΚΑΤΩ ΜΕΝΟΥΝ ΑΝΕΠΑΦΟΙ — μεγεθος, θεση,
       αδιαφανεια, τα τρια επιπεδα z-index. Μια γραμμη τα ξαναφερνει
       ολα, στην κατασταση του βηματος 279.

       Ο ΜΕΤΡΗΤΗΣ (counter-reset / counter-increment) ΜΕΝΕΙ ΚΙ ΑΥΤΟΣ:
       δεν κοστιζει τιποτα οταν κανεις δεν τον τυπωνει, και χωρις
       αυτον η επαναφορα θα ηθελε αλλαγη σε ΤΡΙΑ σημεια αντι για ενα.
                                                                   */
    content: none;

    /* ── ΥΔΑΤΟΓΡΑΦΗΜΑ ΑΝΤΙ ΓΙΑ ΠΕΡΙΓΡΑΜΜΑ — ΒΗΜΑ 279 ───────────────
       ΗΤΑΝ grid item στη στηλη 1, με padding-left: 1.25rem.

       ΓΙΑΤΙ ΕΣΠΑΖΕ ΜΟΛΙΣ ΜΠΗΚΕ Η ΦΩΤΟΓΡΑΦΙΑ (βημα 278): το
       περιγραμμα χρειαζεται ΕΠΙΠΕΔΟ φοντο. Μια γραμμη 1,5px περνα
       πανω απο φωτεινα και σκοτεινα σημεια της εικονας — σε αλλα
       σβηνει, σε αλλα γυαλιζει, και το σχημα του ψηφιου διαλυεται.
       Δεν ηταν θεμα γουστου· ηταν τεχνικη ασυμβατοτητα.

       ΤΩΡΑ ΣΥΜΠΑΓΕΣ ΚΑΙ ΠΙΣΩ ΑΠΟ ΤΟ ΚΕΙΜΕΝΟ: καθεται ΑΝΑΜΕΣΑ στην
       εικονα (z-index: -1) και στον τιτλο (z-index: 1), δηλαδη
       διαβαζεται ως μερος της φωτογραφιας αντι να παλευει μαζι της.

       absolute ΚΑΙ ΟΧΙ grid: ετσι ΔΕΝ πιανει πλατος — ο τιτλος
       χρησιμοποιει ολη τη γραμμη. Και δεν προσθετει υψος, που ηταν
       ρητη απαιτηση στο βημα 278.                                */
    position: absolute;
    left: .5rem;
    top: 50%;
    z-index: 0;

    /* ΣΤΕΝΗ ΚΑΙ ΒΑΡΙΑ — βημα 243, ηταν var(--hc-display) στο 700.
       Η Geologica στο 700 ειναι γεωμετρικη και ΦΑΡΔΙΑ: σε περιγραμμα
       εβγαζε στρογγυλα, αδεια ψηφια που εμοιαζαν με placeholder.

       Η Sofia Sans Condensed στο 900 ειναι το αντιθετο — καθετη,
       πυκνη, με κοφτες απολειξεις. Σε περιγραμμα κραταει ΣΧΗΜΑ
       αντι να γινεται φυσαλιδα. Και επειδη ειναι στενη, το ψηφιο
       μπορει να ειναι ΠΙΟ ΜΕΓΑΛΟ στο ιδιο πλατος στηλης.

       ΤΟ ΟΝΟΜΑ ΓΡΑΦΕΤΑΙ ΡΗΤΑ, ΟΧΙ ΜΕΣΩ --pg-font-cond: εκεινη η
       μεταβλητη ΔΕΝ ειναι πια condensed (βημα 160, εχει Fira Sans) —
       το ονομα εμεινε λαθος επιτηδες. Χρηση της εδω θα εδινε
       κανονικου πλατους ψηφια σιωπηλα.

       ΤΟ ΚΟΣΤΟΣ, ΔΗΛΩΜΕΝΟ: η Sofia Sans Condensed ΔΕΝ χρησιμοποιειται
       πουθενα αλλου σημερα — ολα τα αλλα σημεια τη δηλωνουν ως
       fallback πισω απο το --pg-font-cond, που ειναι ορισμενο, αρα
       δεν ενεργοποιειται ποτε. Τα ψηφια εδω ειναι ο ΜΟΝΟΣ πελατης
       της, και τα ψηφια ανηκουν στο latin subset:
       +41KB (fonts/sofia-cond-latin.woff2) στο κινητο για 4 γλυφους.
       Μη μπλοκαριστικο (font-display: swap) και cached, αλλα
       υπαρκτο. ΜΗΔΕΝΙΚΟ ΚΟΣΤΟΣ ΕΝΑΛΛΑΚΤΙΚΗ: βαλε var(--hc-display)
       (Geologica, ηδη φορτωμενη απο τους τιτλους) και κατεβασε το
       font-size στο clamp(2.6rem, 11vw, 3.4rem) — η Geologica ειναι
       φαρδια και στο 900 με δυο ψηφια κλεβει πλατος απο τον τιτλο. */
    --hc-num-ff: 'Sofia Sans Condensed', 'Sofia Sans', Arial Narrow, sans-serif;
    font-family: var(--hc-num-ff);
    font-weight: 900;
    /* ΒΗΜΑ 279 — ηταν clamp(3rem, 13vw, 4rem). Το υδατογραφημα θελει
       να ειναι ΜΕΓΑΛΟ για να διαβαζεται ως υφη και οχι ως νουμερο
       που καποιος ξεχασε. Τωρα ξεπερνα το υψος του στοιχειου και
       κοβεται — σκοπιμα, ετσι μοιαζει με μερος της εικονας.      */
    font-size: var(--hc-num-size, clamp(4rem, 22vw, 7rem));
    line-height: 1;
    letter-spacing: -.06em;                   /* ηταν -.02em */
    font-variant-numeric: tabular-nums;

    /* ΤΟ ΠΕΡΙΓΡΑΜΜΑ ΑΦΑΙΡΕΘΗΚΕ — ΒΗΜΑ 279.
       Ηταν -webkit-text-stroke: 1.5px + text-fill-color: transparent.
       ΓΙΑ ΕΠΑΝΑΦΟΡΑ ΣΤΟ ΠΕΡΙΓΡΑΜΜΑ: ξαναβαλε τις δυο γραμμες ΚΑΙ
       γυρνα το grid σε «auto minmax(0, 1fr)» πιο πανω.           */
    color: var(--hc-num-ink, var(--pg-text, #e8e8e8));
    opacity: var(--hc-num-opacity, .16);

    /* Οπτικη διορθωση + κατακορυφο κεντραρισμα σε ενα transform:
       το translateY(-50%) ακυρωνει το top: 50%, το -.02em ειναι το
       κενο που εχουν τα ψηφια μεσα στο em-box τους.               */
    transform: translateY(calc(-50% - .02em));
    pointer-events: none;
    user-select: none;
  }

  /* ΤΟ ΚΕΙΜΕΝΟ ΠΑΝΩ ΑΠΟ ΤΟ ΥΔΑΤΟΓΡΑΦΗΜΑ.
     Χωρις αυτο ο τιτλος και το ψηφιο ειναι στο ιδιο επιπεδο και
     κρινει η σειρα βαφης — το ::before βαφεται ΠΡΙΝ τα παιδια, αρα
     θα επεφτε απο κατω, αλλα μονο κατα τυχη. Ρητο.              */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__content {
    position: relative;
    z-index: 1;
  }

  /* ── Η ΦΩΤΟΓΡΑΦΙΑ ΞΑΝΑΕΡΧΕΤΑΙ ΩΣ ΦΟΝΤΟ — ΒΗΜΑ 278 ────────────────
     ΗΤΑΝ display: none. Το βημα 236 το ειχε δοκιμασει (opacity .2)
     και ΑΠΟΡΡΙΦΘΗΚΕ: «με τεσσερα στοιχεια σε 340px, καθε φωτογραφια
     ηταν μια λωριδα 85px χωρις αναγνωρισιμο θεμα».

     ΤΙ ΑΛΛΑΞΕ ΑΠΟ ΤΟΤΕ, ΚΑΙ ΓΙΑΤΙ ΑΞΙΖΕΙ ΞΑΝΑ:
       βημα 238  τα στοιχεια πηραν ΦΥΣΙΚΟ υψος (flex: 0 0 auto)
       βημα 242  εφυγε η υπογραφη — λιγοτερο κειμενο πανω της
     Η λωριδα ειναι πλεον ~70px αλλα με ΜΟΝΟ εναν τιτλο απο πανω,
     οχι τρεις σειρες κειμενου. Αλλο πραγμα.

     ΔΕΝ ΑΓΓΙΖΕΙ ΚΑΘΟΛΟΥ ΤΟΝ ΗΡΩΑ. Ο επιλογεας ειναι «καθε .article
     ΜΕΤΑ τον πρωτο», γραμμενος με τα δυο γνωστα σεναρια κλωνου (με
     κλωνο μπροστα / χωρις). Ετσι ο ηρωας κραταει εικονα πληρους
     αδιαφανειας, parallax και scrim — δεν χρειαζεται ΚΑΜΙΑ
     επαναφορα, που ειναι και ο λογος που προτιμηθηκε αυτος ο
     επιλογεας αντι για «ολα και μετα εξαιρεση».                   */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__image {
    display: none;
  }

  /* Το κουτι πρεπει να ειναι ΤΟΠΟΘΕΤΗΜΕΝΟ, αλλιως η εικονα (inset: 0)
     θα μετρουσε απο καποιον μακρινο προγονο — το μαθημα του βηματος
     209.                                                          */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article ~ .article,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child ~ .article {
    position: relative;
    isolation: isolate;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article ~ .article .article__image,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child ~ .article .article__image {
    display: block;
    opacity: var(--hc-list-img, .3);
  }

  /* ΤΟ PARALLAX ΑΚΥΡΩΝΕΤΑΙ ΕΔΩ.
     Το κοινο CSS δινει στην <img> top: -30% και height: 130%, και το
     hero-carousel.js της γραφει transform σε καθε scroll. Σε στοιχειο
     70px αυτο σημαινει οτι βλεπεις 54px απο 91px εικονας, που
     ΜΕΤΑΚΙΝΟΥΝΤΑΙ — τρεμοπαιγμα πισω απο τον τιτλο. Το !important
     ειναι για το inline transform που βαζει το JS: ο κανονας δεν
     μπορει να νικησει inline style αλλιως.                        */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article ~ .article .article__image img,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child ~ .article .article__image img {
    top: 0;
    height: 100%;
    transform: none !important;
  }

  /* ΣΚΟΤΕΙΝΙΑΣΜΑ ΠΑΝΩ ΑΠΟ ΤΗΝ ΕΙΚΟΝΑ.
     Το opacity μονο του δεν αρκει: μια ανοιχτη φωτογραφια στο .3
     αφηνει ακομα φωτεινα σημεια που τρωνε τον λευκο τιτλο. Ο
     συμπαγης σκουρος τονος απο πανω εγγυαται σταθερη αντιθεση
     ΑΝΕΞΑΡΤΗΤΑ απο το τι δειχνει η καθε εικονα.

     ΑΝΤΙΚΑΘΙΣΤΑ ΤΟ ΒΑΘΜΙΔΩΤΟ SCRIM ΤΟΥ ΗΡΩΑ: εκεινο ειναι φτιαγμενο
     για ψηλο slide, οπου σκουραινει μονο το κατω μερος. Σε λωριδα
     70px θα σκουραινε το ενα τριτο και θα αφηνε το αλλο φωτεινο. */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article ~ .article .article__image::after,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child ~ .article .article__image::after {
    background: var(--hc-list-img-veil, rgb(18 18 18 / .55));
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__content {
    padding-block: var(--hc-list-gap);
    padding-inline: 1.25rem;
    max-width: none;
    text-align: left;

    /* ── ΒΗΜΑ 245: ΤΟ text-align ΔΕΝ ΑΡΚΟΥΣΕ ───────────────────────
       Το .article__content ειναι display: flex / flex-direction:
       column (mainsite.css:4749), και η γραμμη 564 αυτου του αρχειου
       βαζει align-items: center σε ΟΛΑ τα content μεσα στο track
       (0,4,0) — για το κεντραρισμενο desktop.

       Σε flex column το align-items ειναι ο ΟΡΙΖΟΝΤΙΟΣ αξονας. Αρα
       το κουτι της υπογραφης ΚΑΘΟΤΑΝ ΚΕΝΤΡΟ και το text-align: left
       το στοιχιζε αριστερα ΜΕΣΑ ΣΤΟ ΙΔΙΟ ΤΟ ΚΟΥΤΙ — που ειναι οσο
       το περιεχομενο του, αρα δεν φαινοταν καμια διαφορα.

       Ο τιτλος δεν εδειχνε το προβλημα γιατι το κειμενο του ξεπερνα
       το διαθεσιμο πλατος: fit-content = ολο το πλατος, αρα εμοιαζε
       στοιχισμενος. Η υπογραφη ειναι μια κοντη γραμμη — εκει φανηκε.

       Η ΙΔΙΑ ΑΙΤΙΑ ΜΕ ΤΟ ΒΗΜΑ 138, ΑΛΛΟ ΣΗΜΕΙΟ: τοτε διορθωθηκε η
       στοιχιση ΜΕΣΑ στο .article__info (justify-content), τωρα η
       θεση ΤΟΥ ΚΟΥΤΙΟΥ μεσα στο content. Δυο επιπεδα, δυο ιδιοτητες.
                                                                   */
    align-items: flex-start;
    gap: 6px;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__title {
    /* ΤΟ margin-inline ΠΡΕΠΕΙ ΝΑ ΜΗΔΕΝΙΣΤΕΙ: ο κανονας της ενοτητας
       «κεντραρισμενος ηρωας» το εχει auto, που θα κεντραρε και τους
       τιτλους της λιστας.                                            */
    width: auto;
    max-width: none;
    margin-inline: 0;
    /* ΒΗΜΑ 183 — ηταν 21px. Τωρα 19px. */
    font-size: 1.1875rem;         /* 19px */
    line-height: 1.25;
    letter-spacing: -.005em;

    /* ΤΟ ΚΟΨΙΜΟ ΣΤΙΣ 2 ΣΕΙΡΕΣ ΕΙΝΑΙ ΠΟΥ ΚΑΝΕΙ ΤΟ ΥΨΟΣ ΠΡΟΒΛΕΨΙΜΟ.
       Χωρις αυτο ενας μακρυς τιτλος πιανει 4 σειρες, το στοιχειο
       διπλασιαζεται, και το --hc-list-h: 400px γινεται ψεμα — ο
       «ηρωας» θα κρατουσε το υψος του και η λιστα θα ξεχειλιζε.
       Με 2 σειρες: 12 + 47,5 + 6 + 16 + 12 + 1 ≈ 95px ανα στοιχειο,
       αρα 4 × 95 = 380px. Το 400 ειναι αυτο με αερα.              */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* ΤΟ .article__info ΕΙΝΑΙ FLEX — βημα 138.
     Το text-align: left του .article__content ΔΕΝ το αγγιζει: σε flex
     container τη στοιχιση στον κυριο αξονα τη ρυθμιζει το
     justify-content. Γι' αυτο οι υπογραφες εμεναν κεντραρισμενες ενω
     οι τιτλοι πηγαν αριστερα. Ιδιο ακριβως μοτιβο με το
     .rvw-feature .article__info του βηματος 101.                   */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__info {
    justify-content: flex-start;
  }

  /* ── ΔΥΟ ΓΡΑΜΜΕΣ, ΧΩΡΙΣ ΔΙΑΧΩΡΙΣΤΗ — ΒΗΜΑ 245 ───────────────────
     Συντακτης απο πανω, ημερομηνια απο κατω. Η σειρα ερχεται απο το
     DOM: το template γραφει πρωτα το .article__by και μετα το <span>
     με το <time> — δεν χρειαζεται order.

     ΤΟ align-items ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ ΚΑΙ ΕΔΩ: μολις το flex γινει
     column, ο οριζοντιος αξονας περναει στο align-items και το
     justify-content: flex-start απο πανω αρχιζει να ρυθμιζει το
     ΚΑΤΑΚΟΡΥΦΟ. Χωρις αυτη τη γραμμη οι δυο σειρες θα ξανακεντραρονταν
     — το ιδιο μπερδεμα, αναστραμμενο.                              */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__info {
    flex-direction: column;
    align-items: flex-start;
    row-gap: 3px;
    column-gap: 0;
  }

  /* ── ΜΟΝΟ Ο ΤΙΤΛΟΣ ΣΤΑ ΣΤΟΙΧΕΙΑ ΛΙΣΤΑΣ — βημα 242 ────────────────
     Η υπογραφη (συντακτης + ημερομηνια) φευγει. Ιδιο μοτιβο με την
     περιληψη πιο κατω: κρυβεται για ΟΛΑ μεσα στο track και
     ΞΑΝΑΕΜΦΑΝΙΖΕΤΑΙ για τον ηρωα, που εχει μεγαλυτερη ειδικοτητα.
     Αντιστροφα — «κρυψε μονο στα στοιχεια λιστας» — θα απαιτουσε
     επιλογεα για «καθε αρθρο εκτος του πρωτου», δηλαδη ΤΑ ΔΥΟ
     σεναρια κλωνου, δυο φορες.

     ΜΑΖΕΥΕΙ ΚΑΙ ΥΨΟΣ: ~22px ανα στοιχειο (16px κειμενο + 6px gap),
     δηλαδη ~88px στα τεσσερα — που τα παιρνει ο ηρωας, γιατι απο το
     βημα 240 ειναι αυτος που απορροφα το περισσευμα.             */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__info {
    display: none;
  }

  /* Η περιληψη φευγει απο τα στοιχεια λιστας: ο τιτλος αρκει, και
     τεσσερις περιληψεις στη σειρα κανουν τη λιστα τοιχο κειμενου.    */
  /* Ο ΔΙΑΧΩΡΙΣΤΗΣ ΣΒΗΝΕΙ — ΒΗΜΑ 245.
     Στο desktop ειναι «·» και μπαινει ΜΟΝΟ οταν προηγειται ονομα
     (γρ. 445). Σε δυο σειρες δεν χωριζει τιποτα: καθεται στην αρχη
     της δευτερης γραμμης, πριν την ημερομηνια.

     ΙΔΙΟΣ ΕΠΙΛΟΓΕΑΣ, (0,4,0), ΑΛΛΑ ΜΕΣΑ ΣΤΟ MEDIA ΚΑΙ ΠΙΟ ΚΑΤΩ:
     ισοβαθμια ειδικοτητα, κερδιζει η σειρα. Σκοπιμα ΔΕΝ ανεβαινει
     η ειδικοτητα — ο κανονας του desktop ειναι αυτος που πρεπει να
     νικηθει, και η γειτονια τους στο αρχειο το κανει προφανες.    */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track .article__info a + span::before {
    content: none;
    margin-right: 0;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article .article__content > p {
    display: none;
  }

  /* ── 3. Το ΠΡΩΤΟ πραγματικο slide ξαναγινεται «ηρωας» ───────────
     ΔΥΟ επιλογεις, σκοπιμα:
       · [data-hc-clone] + .article  → οταν το JS εχει τρεξει και εχει
         βαλει τον κλωνο ΠΡΙΝ απο το πρωτο
       · .article:first-child        → αν το JS δεν εχει τρεξει ακομα
     Χωρις το δευτερο, η σελιδα θα εδειχνε για λιγο ΟΛΑ τα αρθρα ως
     λιστα, μεχρι να φορτωσει το script.                             */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child {
    min-height: var(--hc-h-lead, 76svh);
    border-top: 0;
    display: grid;
    align-content: end;

    /* Ο ΗΡΩΑΣ ΠΑΙΡΝΕΙ ΤΟ ΠΕΡΙΣΣΕΥΜΑ — βημα 240.
       ΗΤΑΝ flex: 0 0 auto (βημα 184), οταν το μοιραζαν τα τεσσερα
       στοιχεια της λιστας. Το βημα 238 τους το αφαιρεσε — αρα κανεις
       δεν το επαιρνε πια και εμενε ΚΕΝΟ ΣΤΟ ΚΑΤΩ ΜΕΡΟΣ:

         min-height: 100svh  στο track (σταθερο υψος στηλης)
         − (100svh − 340px)  ηρωας
         − ~280px            η πραγματικη λιστα με 0 0 auto
         = ~60px κενο        που δεν ανηκε σε κανενα στοιχειο

       Τωρα το περισσευμα παει στη ΦΩΤΟΓΡΑΦΙΑ. Ο ηρωας μεγαλωνει οσο
       χρειαζεται ωστε η στηλη να βγει ακριβως 100svh — οσο κι αν
       μαζευτουν οι τιτλοι, κενο δεν μενει ποτε.

       Το min-height παραμενει ΔΑΠΕΔΟ: αν οι τιτλοι βγουν απροσμενα
       ψηλοι, ο ηρωας δεν πεφτει κατω απο --hc-h-lead — το shrink
       δεν ενεργοποιειται γιατι το min-height το μπλοκαρει. Η στηλη
       μεγαλωνει αντ' αυτου (min-height, οχι height, στο track).

       Η εικονα ακολουθει χωρις ρυθμιση: ειναι position: absolute με
       inset: 0 και object-fit: cover, αρα γεμιζει ο,τι υψος παρει.  */
    flex: 1 1 auto;

    /* ΜΙΑ ΣΤΗΛΗ — βημα 241. Ο κανονας της λιστας εβαλε δυο· εδω
       γυριζει σε μια, αλλιως ο ηρωας θα κρατουσε αδεια στηλη για
       νουμερο που δεν τυπωνει.                                    */
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  /* Ο ΗΡΩΑΣ ΕΙΝΑΙ ΤΟ 1 ΑΛΛΑ ΔΕΝ ΤΟ ΔΕΙΧΝΕΙ — βημα 241.
     Ο μετρητης του αυξανεται κανονικα (γι' αυτο το επομενο ειναι 2),
     απλα δεν τυπωνεται: σε ολοσελιδη φωτογραφια με τιτλο 2,6rem ενα
     περιγραμμα «1» θα ηταν θορυβος.

     content: none ΚΑΙ ΟΧΙ display: none — το content: none δεν
     ΠΑΡΑΓΕΙ καθολου ψευδοστοιχειο, αρα δεν δημιουργει ουτε κουτι
     πλεγματος. Το display: none θα το εφτιαχνε και μετα θα το
     εκρυβε.                                                       */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article::before,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child::before {
    content: none;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article .article__image,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child .article__image {
    display: block;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article .article__content,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child .article__content {
    /* ΒΗΜΑ 236 — ηταν calc(2.25rem + safe-area) = ~36px.
       Το κενο αναμεσα στον ηρωα και στον πρωτο τιτλο ηταν το ΑΘΡΟΙΣΜΑ
       αυτου του padding και του --hc-list-gap του στοιχειου — ~48px.
       Εδω μαζευεται το μεγαλο μερος.

       ΤΟ safe-area ΦΕΥΓΕΙ ΣΚΟΠΙΜΑ: κραταει αποσταση απο την ΚΑΤΩ ΑΚΡΗ
       ΤΗΣ ΟΘΟΝΗΣ, και στο κινητο ο ηρωας ΔΕΝ ακουμπαει την ακρη —
       απο κατω του υπαρχουν τεσσερα αρθρα. Το κρατουσε χωρο που
       κανεις δεν χρειαζοταν.                                      */
    padding-bottom: var(--hc-lead-pad-b, 0px);
    gap: 12px;
  }

  /* ── ΤΟ ΠΡΩΤΟ ΣΤΟΙΧΕΙΟ ΤΗΣ ΛΙΣΤΑΣ ΚΟΛΛΑΕΙ ΣΤΟΝ ΗΡΩΑ (βημα 237) ──
     Το κενο ειχε δυο μερη. Το ενα ηταν το padding-bottom του ηρωα, που
     μηδενιστηκε. Το αλλο ειναι το padding-block καθε στοιχειου της
     λιστας (--hc-list-gap, 12px) — που στο ΠΡΩΤΟ μετραει πανω απο τον
     τιτλο του, δηλαδη ακριβως στο σημειο της επαφης.

     ΜΟΝΟ ΤΟ ΠΡΩΤΟ, ΟΧΙ ΟΛΑ: αναμεσα στους τιτλους το κενο χρειαζεται —
     χωρις αυτο οι τεσσερις τιτλοι γινονται ενα μπλοκ κειμενου. Εδω
     μικραινει μονο η πλευρα που ακουμπαει τον ηρωα.

     ΒΗΜΑ 239: δεν μηδενιζεται πια. Το 237 το εκανε 0 και βγηκε
     πολυ κολλητο — τωρα διαβαζει το --hc-list-flush (14px).

     ΟΙ ΔΥΟ ΕΠΙΛΟΓΕΙΣ ειναι «το αδερφι μετα τον ηρωα», γραμμενο με τα
     ιδια δυο σεναρια που χρησιμοποιει ολο το αρχειο: με κλωνο μπροστα
     (το JS εχει τρεξει) και χωρις.                                 */
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article + .article .article__content,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child + .article .article__content {
    padding-top: var(--hc-list-flush, 14px);   /* βημα 239, ηταν 0 */
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article .article__title,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child .article__title {
    font-size: clamp(1.9rem, 7.4vw, 2.6rem);
    line-height: 1.08;
    letter-spacing: -.02em;

    /* Ο ΗΡΩΑΣ ΔΕΝ ΚΟΒΕΤΑΙ — ΑΚΥΡΩΣΗ ΤΟΥ ΚΑΝΟΝΑ ΤΗΣ ΛΙΣΤΑΣ.
       Ο κανονας πιο πανω βαζει -webkit-line-clamp: 2 σε ΚΑΘΕ τιτλο
       μεσα στο track, και ο ηρωας ειναι κι αυτος μεσα. Χωρις αυτο,
       ο κεντρικος τιτλος θα κοβοταν στη μεση με «…».               */
    display: block;
    -webkit-line-clamp: none;
    overflow: visible;
  }

  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > [data-hc-clone] + .article .article__content > p,
  .hero-carousel.hero-carousel.hero-carousel .hero-carousel__track > .article:not([data-hc-clone]):first-child .article__content > p {
    display: block;
  }

  /* ── Η ΥΠΟΓΡΑΦΗ ΦΕΥΓΕΙ ΚΑΙ ΑΠΟ ΤΟΝ ΗΡΩΑ — ΒΗΜΑ 246 ──────────────
     ΕΔΩ ΗΤΑΝ Ο ΚΑΝΟΝΑΣ ΠΟΥ ΤΗΝ ΞΑΝΑΕΜΦΑΝΙΖΕ (βημα 242,
     display: flex). Αφαιρεθηκε. Τωρα ισχυει ΜΟΝΟ το display: none
     του βηματος 242 πιο πανω, που πιανει ΟΛΑ τα > .article — αρα
     ουτε ο ηρωας εχει συντακτη/ημερομηνια στο κινητο.

     ΔΕΝ ΣΒΗΣΤΗΚΕ ΤΟ display: none ΚΑΙ ΔΕΝ ΓΡΑΦΤΗΚΕ ΝΕΟΣ ΚΑΝΟΝΑΣ:
     η αφαιρεση της εξαιρεσης ειναι ολη η αλλαγη. Ενα ΜΟΝΟ σημειο
     αποφασιζει πλεον για την υπογραφη στο κινητο.

     ΤΙ ΜΕΝΕΙ ΑΔΡΑΝΕΣ: οι κανονες του βηματος 245 (flex-direction:
     column, align-items, row-gap, και το σβησιμο του «·») δεν
     εκτελουνται πια — το στοιχειο δεν εμφανιζεται. ΔΕΝ αφαιρεθηκαν
     σκοπιμα: ειναι γραμμενοι στο > .article, αρα αν καποτε
     ξαναανοιξει η υπογραφη —εδω η στα στοιχεια λιστας— βγαινει
     αμεσως σωστη, συντακτης πανω / ημερομηνια κατω, αριστερα.

     ΤΟ align-items: flex-start ΤΟΥ .article__content ΔΕΝ ΕΙΝΑΙ
     αδρανες: ρυθμιζει και τον ΤΙΤΛΟ, που μενει.                  */

  /* ΤΟ ΖΙΓΚ-ΖΑΓΚ ΑΦΑΙΡΕΘΗΚΕ — βημα 243. Ολα τα νουμερα αριστερα, το
     ενα κατω απο το αλλο. Μαζι του εφυγε και η αναγκη για τα δυο
     σεναρια κλωνου εδω: ο counter δεν τα χρειαζεται.               */
}
