/* ═══════════════════════════════════════════════════════════════
   GLD SYSTEMS — σχεδιαστικό σύστημα «Κλινικό Ανθρακί»

   Η παλέτα ΔΕΝ είναι επινοημένη: προέρχεται από το ίδιο το επίσημο
   έντυπο της εταιρείας (Presentation Dermaqual, εξώφυλλο/οπισθόφυλλο):
     #444141  το ανθρακί φόντο πάνω στο οποίο κάθεται το λογότυπο
     #ED1C24  το κόκκινο τετράγωνο μέσα στο «E» του SYSTEMS
     #FFFFFF  το wordmark

   Τυπογραφία: Manrope + Inter. Και οι δύο έχουν επιβεβαιωμένη ελληνική
   κάλυψη στο Google Fonts (unicode-range greek) — ελέγχθηκε.

   ΚΑΝΟΝΑΣ: καμία text-transform:uppercase σε ελληνικό κείμενο.
   Χάνει τους τόνους. Όπου χρειάζονται κεφαλαία, γράφονται κεφαλαία.
   ═══════════════════════════════════════════════════════════════ */

/* ΜΕΤΡΗΜΕΝΗ ΑΝΤΙΘΕΣΗ, ΟΧΙ ΕΚΤΙΜΩΜΕΝΗ. Τέσσερις δείκτες άλλαξαν επειδή
   υπολογίστηκε ο λόγος αντίθεσης πάνω στην ΠΡΑΓΜΑΤΙΚΗ επιφάνεια που έχουν από
   κάτω — που δεν είναι πάντα το φόντο της σελίδας:

   --ink-3  #7C828C → #868C96
     Πάνω στη σελίδα (--bg) μετρούσε 4,85:1 και περνούσε. Αλλά το ΙΔΙΟ χρώμα
     γράφει και την περιγραφή μέσα στην κάρτα (--panel, ανοιχτότερο φόντο):
     εκεί μετρήθηκε 4,27:1 — κάτω από το 4,5:1. Τώρα 4,94:1 στην κάρτα,
     4,54:1 και στην κάρτα σε hover (--panel-2), 5,59:1 στη σελίδα.

   --line-3 (νέος) #60666F
     Το --line-2 (#383D45) έντυνε ΠΕΡΙΓΡΑΜΜΑΤΑ ΣΤΟΙΧΕΙΩΝ ΕΛΕΓΧΟΥ — πεδία
     φόρμας, chip φίλτρων, ghost κουμπιά, burger. Μετρήθηκε 1,72:1, έναντι
     ορίου 3:1 (WCAG 1.4.11). Το --line-2 μένει ως ΔΙΑΚΟΣΜΗΤΙΚΗ γραμμή
     (διαχωριστικά), όπου δεν ισχύει το όριο.
     Η ΠΡΩΤΗ ΤΙΜΗ ΗΤΑΝ ΛΑΘΟΣ: υπολογίστηκε πάνω στο φόντο της ΣΕΛΙΔΑΣ (3,24:1)
     — αλλά τα chip των σειρών κάθονται μέσα σε ΚΑΡΤΑ (--panel), που είναι
     ανοιχτότερη, και εκεί μετρήθηκαν 2,86:1. Κάθε δείκτης πρέπει να μετριέται
     πάνω στην πιο ανοιχτή επιφάνεια όπου εμφανίζεται, όχι στη συνηθέστερη.
     Το #6A707A δίνει 3,32:1 στην κάρτα και 3,55:1 στη σελίδα.

   --red-btn / --red-btn-hi
     Λευκά γράμματα πάνω στο εταιρικό #ED1C24 δίνουν 4,38:1. Το κείμενο των
     κουμπιών είναι 12,96–14,4px έντονο, δηλαδή ΔΕΝ πιάνει το όριο «μεγάλο
     κείμενο» (18,66px έντονο) και άρα θέλει 4,5:1. Το #D9141B δίνει 5,16:1
     και είναι οπτικά το ίδιο κόκκινο. Στο hover ανεβαίνει σε #EA1219 (4,57:1)
     — δηλαδή ΑΚΡΙΒΩΣ το εταιρικό κόκκινο. Το #ED1C24 μένει άθικτο παντού
     όπου δεν κουβαλά κείμενο: τετράγωνο του eyebrow, κουκκίδες λίστας,
     λάμψη της ζώνης CTA, υπογράμμιση συνδέσμων. */
:root{
  /* ΦΩΤΕΙΝΟ ΘΕΜΑ (v0.10.0) — απόφαση πελάτη 18/09: «λευκό φόντο, μαύρα
     γράμματα, κόκκινο για τονισμό, διακριτικές γκρι αποχρώσεις ώστε να μην
     είναι κατάλευκο». Μετρημένη αντίθεση WCAG σε ΚΑΘΕ επιφάνεια όπου κάθεται
     το κάθε χρώμα (η πιο σκούρα επιφάνεια είναι το --plate-2 #E6E8EB):
       --ink   17,96 λευκό · 16,61 --bg-2 · 14,63 --plate-2
       --ink-2  8,52 · 7,88 · 6,94
       --ink-3  5,53 · 5,11 · 4,50  ← το όριο, ΟΧΙ πιο ανοιχτό
     Οι ΕΠΙΦΑΝΕΙΕΣ είναι λευκές ή ψυχρό γκρι· το ανθρακί #444141 του εντύπου
     μένει ως --brand για τα λίγα σημεία-άγκυρες. */
  --ink:#15171A; --ink-2:#474D56; --ink-3:#636973;
  --bg:#FFFFFF; --bg-2:#F5F6F8; --panel:#FFFFFF; --panel-2:#F1F2F4;
  --brand:#444141; --line:#E6E8EB; --line-2:#D6D9DE; --line-3:#8E949D;
  --red:#ED1C24; --red-hi:#C8111A; --red-btn:#D9141B; --red-btn-hi:#B80F17;
  /* ΤΟ ΣΗΜΑ ΚΑΙ ΤΟ ΚΕΙΜΕΝΟ ΔΕΝ ΜΠΟΡΟΥΝ ΝΑ ΕΙΝΑΙ ΤΟ ΙΔΙΟ ΚΟΚΚΙΝΟ (v0.8.2).
     Το --red είναι φτιαγμένο για ΕΠΙΦΑΝΕΙΕΣ (κουμπιά, τετραγωνάκια, γραμμές),
     όπου το όριο είναι 3:1. Ως ΚΕΙΜΕΝΟ πάνω στο --panel μετρήθηκε 3,77:1 και
     το όριο για 11,2px είναι 4,5:1 — αστοχία WCAG 1.4.3 στα «01/02/03» των
     τριών λόγων. Ίδια απόχρωση (357,7°) και ίδιος κορεσμός (0,853), μόνο
     φωτεινότητα 0,520 → 0,610· μετρημένο και στα τέσσερα φόντα του θέματος:
       --panel 4,62 · --bg-2 4,92 · --bg 5,23 · --panel-2 4,25
     ΜΗΝ το βάλεις σε στοιχείο με φόντο --panel-2: εκεί δεν φτάνει. */
  /* Κείμενο σε κόκκινο πάνω σε ανοιχτό φόντο: 5,91 λευκό · 4,82 --plate-2. */
  --red-txt:#C8111A;
  --plate:#F4F5F7; --plate-2:#E6E8EB; --plate-ink:#15171A;
  /* Σκιά καρτών: στο φωτεινό θέμα το βάθος το δίνει σκιά, όχι φωτεινότητα. */
  --shadow-1:0 1px 2px rgba(21,23,26,.05),0 2px 8px rgba(21,23,26,.05);
  --shadow-2:0 2px 4px rgba(21,23,26,.06),0 12px 28px rgba(21,23,26,.10);
  --r:14px; --r-lg:20px;
  --pad:clamp(20px,4vw,64px);
  --maxw:1240px;
  --f-display:"Manrope","Manrope Fallback",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --f-body:"Inter","Inter Fallback",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;

  /* ΤΟ ΘΕΜΑ ΕΙΝΑΙ ΣΚΟΤΕΙΝΟ ΚΑΙ Ο ΦΥΛΛΟΜΕΤΡΗΤΗΣ ΔΕΝ ΤΟ ΗΞΕΡΕ. Χωρίς
     color-scheme, ό,τι ζωγραφίζει ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ και όχι το CSS βγαίνει
     φωτεινό: το ΥΠΟΧΡΕΩΤΙΚΟ κουτάκι συγκατάθεσης στην Επικοινωνία ήταν
     ΛΕΥΚΟ τετράγωνο πάνω σε σκοτεινή φόρμα, ακριβώς πάνω από το «Αποστολή»
     (μετρήθηκε accent-color:auto, color-scheme:normal). Μαζί διορθώνονται
     η μπάρα κύλισης, η λαβή αλλαγής μεγέθους του textarea, το αναδυόμενο
     του <select> και το κίτρινο φόντο της αυτόματης συμπλήρωσης. */
  color-scheme:light;
  accent-color:var(--red-btn);
  caret-color:var(--red);

  /* ⛔ ΔΟΚΙΜΑΣΤΗΚΕ ΚΟΚΚΟΣ (feTurbulence) ΚΑΙ ΑΠΟΡΡΙΦΘΗΚΕ ΜΕ ΜΕΤΡΗΣΗ.
     Το --bg είναι 18/255 σε φωτεινότητα. Κάθε προσθετική υφή είναι αναλογικά
     τεράστια: μετρήθηκε η μέση φωτεινότητα 200×200 εικονοστοιχείων —
       opacity .55 → 64   .30 → 43   .18 → 33   .12 → 28   .05 → 22
     δηλαδή ο κόκκος ΔΕΝ πρόσθετε υφή, ΑΝΤΙΚΑΘΙΣΤΟΥΣΕ το χρώμα του θέματος.
     Με background-blend-mode:overlay/soft-light η μέση κόλλησε στο 26,3 και
     36,7 ΑΝΕΞΑΡΤΗΤΑ από την ένταση — άρα ούτε εκεί υπάρχει ουδέτερο σημείο.
     Το βάθος χτίζεται με ΔΟΜΗ (ντεγκραντέ + πλέγμα + φωτισμένες ακμές), που
     είναι ελεγχόμενη: κάθε στρώμα ξέρω πόσο ανεβάζει και πού. */
  --grid:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='64'%20height='64'><path%20d='M64%200H0V64'%20fill='none'%20stroke='%2315171A'%20stroke-width='1'%20opacity='.055'/></svg>");
}

*{box-sizing:border-box}
/* Το [hidden] έχει display:none με ΧΑΜΗΛΗ προτεραιότητα. Η .card έχει
   display:flex, που το νικάει — τα φίλτρα μετρούσαν σωστά αλλά δεν έκρυβαν
   τίποτα. Χρειάζεται !important για να λειτουργήσει το el.hidden. */
[hidden]{display:none!important}
html{scroll-behavior:smooth}
@media(min-width:1061px){html{scroll-padding-top:92px}}
/* ΤΟ ΙΔΙΟ ΓΙΑ ΤΟΝ ΠΑΤΟ, ΣΤΟ ΚΙΝΗΤΟ. Η μπάρα ενεργειών είναι position:fixed,
   οπότε ο περιηγητής τη θεωρεί «αέρα»: όταν το Tab πήγαινε στο επόμενο πεδίο
   της φόρμας, το έφερνε ακριβώς ΑΠΟ ΚΑΤΩ της και σταματούσε — μετρήθηκε το
   <select> «ΙΔΙΟΤΗΤΑ» 46 από 46 pixel κρυμμένο στα 390px. Ο χρήστης πατούσε
   «επόμενο» στο πληκτρολόγιο και πληκτρολογούσε σε πεδίο που δεν έβλεπε. */
@media(max-width:700px),(max-height:500px){
  html{scroll-padding-bottom:calc(70px + env(safe-area-inset-bottom,0px))}
}


/* ΒΑΘΟΣ ΣΤΟ ΕΔΑΦΟΣ, ΣΕ ΤΡΙΑ ΣΤΡΩΜΑΤΑ.
   ⚠ ΤΟ background-color ΜΕΝΕΙ ΔΗΛΩΜΕΝΟ ΧΩΡΙΣΤΑ, ΔΕΝ ΓΙΝΕΤΑΙ shorthand:
   ο έλεγχος διαβάζει getComputedStyle(body).backgroundColor, και ένα
   `background:` shorthand με εικόνες θα κρατούσε μεν το χρώμα, αλλά κάθε
   μελλοντική προσθήκη στρώματος θα το έσβηνε σιωπηλά.
   ⚠ ΚΑΜΙΑ background-attachment:fixed: σε iOS Safari το fixed φόντο σε σελίδα
   12.000px τρεμοπαίζει στην κύλιση. Τα ντεγκραντέ κάθονται στην ΚΟΡΥΦΗ της
   σελίδας (εκεί που είναι το βλέμμα στην πρώτη οθόνη) και ο κόκκος πλακώνεται. */
body{
  margin:0;color:var(--ink);
  background-color:var(--bg);
  background-image:
    /* 1. φως από πάνω — η πρώτη οθόνη δεν είναι επίπεδη */
    radial-gradient(1180px 640px at 50% -240px,rgba(214,217,222,.45),transparent 70%),
    /* 2. υπόνοια μάρκας στη γωνία, όχι κηλίδα */
    radial-gradient(820px 560px at 103% -80px,rgba(237,28,36,.03),transparent 64%),
    none;
  background-repeat:no-repeat;
  background-size:auto;
  font-family:var(--f-body);font-size:16px;line-height:1.62;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  /* Σε αφή, το πάτημα κάρτας άναβε το προεπιλεγμένο γκρι ορθογώνιο του
     Android/iOS πάνω από τη δική μας ανάδραση (.card:active{scale}). */
  -webkit-tap-highlight-color:rgba(237,28,36,.16);
}

/* Η επιλογή κειμένου ήταν το μπλε του φυλλομετρητή — το μόνο χρώμα στη
   σελίδα που δεν ανήκε στη μάρκα. Το κόκκινο στο 30% πάνω στο --bg αφήνει
   το --ink στα 9,8:1, δηλαδή διαβάζεται καλύτερα από το προεπιλεγμένο. */
::selection{background:rgba(237,28,36,.18);color:var(--ink)}

/* ΠΛΕΓΜΑ ΟΡΓΑΝΟΥ — ΞΕΧΩΡΙΣΤΟ ΣΤΡΩΜΑ, ΓΙΑΤΙ ΠΡΕΠΕΙ ΝΑ ΣΒΗΝΕΙ.
   Ως στρώμα του body θα επαναλαμβανόταν σε 12.000px ύψος, δηλαδή ταπετσαρία.
   Εδώ είναι fixed, σβήνει προς τα κάτω και προς τα πλάγια, και ζει ΜΟΝΟ στο
   πάνω μέρος της οθόνης — υφή εκεί που κοιτάς, καθαρό εκεί που διαβάζεις.

   ⚠ z-index:-1 ΚΑΙ ΤΙΠΟΤΑ ΠΑΝΩ ΑΠΟ ΤΟ body ΜΕ transform/filter/opacity:
   οτιδήποτε από αυτά φτιάχνει πλαίσιο στοίβαξης και το ψευδοστοιχείο θα
   εξαφανιζόταν πίσω από το φόντο. Το background-color του body μένει ως έχει,
   οπότε η μέτρηση αντίθεσης (που διαβάζει CSS χρώμα) δεν αλλάζει. */
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:var(--grid);background-size:64px 64px;
  -webkit-mask-image:radial-gradient(120% 78% at 50% 0%,#000 0%,transparent 72%);
  mask-image:radial-gradient(120% 78% at 50% 0%,#000 0%,transparent 72%);
}
@media print{body::before{display:none}}
/* Σε «αυξημένη αντίθεση» η διακόσμηση φεύγει: ο χρήστης ζήτησε καθαρότητα. */
@media(prefers-contrast:more){body::before{display:none}}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0}
/* Δακτύλιος εστίασης ΔΙΠΛΟΣ: σκούρος μέσα (box-shadow), ανοιχτός έξω (outline).
   Ο μονός κόκκινος μετρήθηκε 2.31:1 πάνω στη ζώνη CTA (--brand #444141) —
   κάτω από το 3:1 του WCAG 1.4.11, και ακριβώς εκεί κάθονται τα δύο κουμπιά.
   Με τους δύο δακτυλίους η χειρότερη μέτρηση σε ΟΠΟΙΑΔΗΠΟΤΕ επιφάνεια του
   θέματος είναι 9.10:1: ό,τι επιφάνεια κι αν υπάρχει από κάτω, ο ένας από
   τους δύο δακτυλίους έχει πάντα αντίθεση. */
:focus-visible{
  outline:2px solid var(--ink);outline-offset:2px;border-radius:3px;
  box-shadow:0 0 0 2px var(--bg);
}
.skip{position:absolute;left:-9999px}
/* Η δεύτερη παράκαμψη οδηγεί στη μπάρα ενεργειών, που πάνω από 700px είναι
   display:none — σύνδεσμος προς το πουθενά. Κρύβεται μαζί της. */
.skip-actions{display:none}
@media(max-width:700px){.skip-actions{display:inline}}
.skip:focus{left:var(--pad);top:10px;z-index:200;background:var(--red);color:#fff;padding:10px 16px;border-radius:8px}

/* ── τυπογραφία ────────────────────────────────────────────── */
/* text-wrap:balance — 78 από τις επικεφαλίδες 89 σελίδων άφηναν ΜΙΑ λέξη μόνη
   στην τελευταία γραμμή («…και προληπτική κρέμα / προσώπου»). Δεν προσθέτει
   γραμμές, μόνο τις ισοσταθμίζει· ο Chromium παύει να ισοσταθμίζει πάνω από
   ~6 γραμμές, οπότε οι ελάχιστες πολύ μακριές μένουν ως έχουν. */
h1,h2,h3,h4{font-family:var(--f-display);font-weight:700;letter-spacing:-.022em;line-height:1.12;margin:0;
  text-wrap:balance}
h1{font-size:clamp(2.05rem,5.2vw,3.85rem);font-weight:800;letter-spacing:-.034em}
h2{font-size:clamp(1.58rem,3.3vw,2.6rem);letter-spacing:-.028em}
h3{font-size:clamp(1.1rem,1.7vw,1.4rem)}
h4{font-size:1.02rem;font-weight:600;letter-spacing:-.01em}
p{margin:0 0 1.05em}
.lead{font-size:clamp(1.01rem,1.45vw,1.18rem);color:var(--ink-2);line-height:1.72;max-width:40.38em}
.small{font-size:.855rem;line-height:1.6;color:var(--ink-3)}
.muted{color:var(--ink-3)}

/* eyebrow — το κείμενο γράφεται ΗΔΗ με κεφαλαία στο markup */
.eyebrow{
  font-family:var(--f-display);font-size:.7rem;font-weight:700;
  letter-spacing:.19em;color:var(--ink-3);
  display:inline-flex;align-items:center;gap:.62em;margin:0 0 1.05rem;
  /* Ρητό, επειδή το «ΑΝΑΛΥΤΙΚΑ» είναι πλέον h2: χωρίς αυτό θα κληρονομούσε
     το line-height:1.12 του κανόνα h1..h4 και θα κουνούσε το κόκκινο
     τετραγωνάκι σε σχέση με τα υπόλοιπα eyebrow. */
  line-height:1.62;
}
/* Το --eb επιτρέπει στο τετραγωνάκι να πάρει το χρώμα της σειράς (σελίδα
   προϊόντος). Χωρίς μεταβλητή έμενε πάντα κόκκινο, και δίπλα του υπήρχε
   ΔΕΥΤΕΡΟ σημάδι με το σωστό χρώμα — δύο δείκτες για το ίδιο πράγμα. */
.eyebrow::before{content:"";width:6px;height:6px;background:var(--eb,var(--red));flex:none}

/* ── κέλυφος ───────────────────────────────────────────────── */
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}
.section{padding-block:clamp(52px,7.5vw,110px)}
.section-sm{padding-block:clamp(36px,5vw,68px)}

/* ── πλοήγηση ──────────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.92);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--maxw);margin:0 auto;padding:15px var(--pad);
  display:flex;align-items:center;gap:clamp(12px,2.2vw,32px)}
.brand{display:flex;align-items:center;gap:10px;flex:none}
/* Το λογότυπο είναι στοιβαγμένο (GLD / γραμμή / SYSTEMS). Κάτω από ~40px
   το «SYSTEMS» γίνεται μουτζούρα, γι' αυτό η κεφαλίδα κρατά ύψος γι' αυτό. */
.brand img{height:44px;width:auto}
.brand-txt{display:flex;flex-direction:column;line-height:1}
.brand-txt b{font-family:var(--f-display);font-size:1.24rem;font-weight:800;letter-spacing:.02em}
.brand-txt span{font-family:var(--f-display);font-size:.56rem;font-weight:700;letter-spacing:.34em;color:var(--ink-3);margin-top:3px}
.brand-txt em{font-style:normal;color:var(--red)}
.nav .nav-links{display:flex;gap:clamp(8px,1.4vw,20px);margin-inline-start:auto;
  align-items:center;list-style:none;margin-block:0;padding:0}
.nav .nav-links a{font-family:var(--f-display);font-size:.81rem;font-weight:600;letter-spacing:.05em;
  color:var(--ink-2);padding:7px 2px;border-bottom:2px solid transparent;
  transition:color .18s,border-color .18s;white-space:nowrap;display:block}
.nav .nav-links a:hover{color:var(--ink)}
.nav .nav-links .current-menu-item>a,.nav .nav-links a.on{color:var(--ink);border-bottom-color:var(--red)}
.nav-cta{font-family:var(--f-display);font-size:.81rem;font-weight:700;
  background:var(--red-btn);color:#fff;padding:9px 17px;border-radius:999px;white-space:nowrap;
  transition:background .18s,transform .18s;flex:none}
.nav-cta:hover{background:var(--red-btn-hi);transform:translateY(-1px)}
.burger{display:none;border:1px solid var(--line-3);
  border-radius:10px;padding:9px 11px;cursor:pointer;line-height:0}
.burger span{display:block;width:17px;height:2px;background:var(--ink);margin:3px 0;transition:.2s}
/* ── ΤΡΕΙΣ ΔΗΛΩΜΕΝΕΣ ΜΕΤΑΒΑΣΕΙΣ, ΔΥΟ ΝΕΚΡΕΣ ──────────────────────
   Μετρήθηκε ηρεμία vs κατάσταση σε κάθε χειριστήριο της κεφαλίδας:
     .nav-search  δηλώνει color/border-color/background — αλλάζουν ΚΑΙ ΤΑ ΤΡΙΑ. ✓
     .nav-cta     δηλώνει background/transform — το transform ΔΕΝ εφαρμόζεται
                  ποτέ, ενώ το αδελφό του .btn-red σηκώνεται translateY(-1px).
                  Το ίδιο κουμπί, δύο συμπεριφορές, επειδή λείπει μία γραμμή.
     .burger span δηλώνει transition:.2s και οι τρεις γραμμές μετρήθηκαν
                  ΤΑΥΤΟΣΗΜΕΣ ανοιχτό/κλειστό (transform none, opacity 1,
                  y 28/36/44 και στις δύο καταστάσεις): το συρτάρι άνοιγε και
                  το εικονίδιο έμενε τρεις γραμμές. Το aria-expanded ΗΤΑΝ ήδη
                  σωστό από τη JavaScript — έλειπε μόνο ο κανόνας που το βλέπει,
                  άρα μηδέν νέα JavaScript.
   Το βήμα είναι 8px, ΜΕΤΡΗΜΕΝΟ και όχι εικασμένο: γραμμή 2px + margin 3+3,
   κέντρα στα y=28/36/44. Με 5px οι γραμμές δεν θα συναντιόνταν. */
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
/* Η υπογράμμιση ΔΕΝ κοστίζει διάταξη: το border-bottom:2px υπάρχει ήδη
   δεσμευμένο ως transparent σε κάθε σύνδεσμο — μόνο το χρώμα ανάβει.
   Γκρι στο πέρασμα, ΚΟΚΚΙΝΟ στην τρέχουσα σελίδα.
   ⚠ ΤΟ ΔΕΥΤΕΡΟ ΖΕΥΓΟΣ ΔΕΝ ΕΙΝΑΙ ΠΛΕΟΝΑΣΜΑ — ΜΕΤΡΗΘΗΚΕ. Υπολόγισα ότι ο
   κανόνας της τρέχουσας σελίδας θα κέρδιζε μόνος του και ΕΚΑΝΑ ΛΑΘΟΣ: οι δύο
   επιλογείς είναι ΙΣΟΒΑΘΜΟΙ (0,3,1 — η ψευδοκλάση :hover μετρά όσο μια
   κλάση, ακριβώς όπως το .current-menu-item), οπότε κέρδιζε ο τελευταίος
   γραμμένος, δηλαδή ο δικός μου. Μετρήθηκε ζωντανά: περνώντας πάνω από την
   τρέχουσα σελίδα η υπογράμμιση γύριζε από κόκκινο (237,28,36) σε γκρι
   (106,112,122) — ο δείκτης «είσαι εδώ» ΕΣΒΗΝΕ ακριβώς όταν ο επισκέπτης
   στόχευε εκεί. Η επαναβεβαίωση στο (0,4,1) τον κρατά.
   Στο συρτάρι του κινητού ο .nav-links.open a (0,4,1) κερδίζει το hover,
   άρα η αφή δεν κληρονομεί εφέ ποντικιού. */
.nav .nav-links a:hover{border-bottom-color:var(--line-3)}
.nav .nav-links .current-menu-item>a:hover,.nav .nav-links a.on:hover{border-bottom-color:var(--red)}

/* ── κουμπιά ───────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:.55em;font-family:var(--f-display);
  font-weight:700;font-size:.9rem;padding:13px 24px;border-radius:999px;
  border:1px solid transparent;cursor:pointer;text-align:center;
  transition:background .18s,border-color .18s,color .18s,transform .18s}
.btn-red{background:var(--red-btn);color:#fff}
.btn-red:hover{background:var(--red-btn-hi);transform:translateY(-1px)}
.btn-ghost{border-color:var(--line-3);color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink-3);background:var(--panel)}
.btn .arw{transition:transform .18s}
.btn:hover .arw{transform:translateX(3px)}

/* ── ήρωας ─────────────────────────────────────────────────── */
.hero{position:relative;overflow:hidden;padding-block:clamp(44px,6.5vw,92px) clamp(44px,6.5vw,84px)}
.hero::before{content:"";position:absolute;inset:-30% -8% auto auto;width:min(720px,84vw);aspect-ratio:1;
  background:radial-gradient(circle,rgba(237,28,36,.055),transparent 62%);filter:blur(30px);pointer-events:none}
.hero-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(28px,4.5vw,64px);align-items:center;position:relative}
/* Ο ΡΥΘΜΟΣ ΗΤΑΝ ΑΝΑΠΟΔΟΣ. Μετρημένο ΜΕΛΑΝΙ (όχι πλαίσια) σε τέσσερα πλάτη:
   390 → 27,0/21,5/25,5 · 768 → 28,5/24,5/35,5 · 1440 → 31,5/25,5/37,0 ·
   1920 → 32,5/25,5/37,0. Παντού eyebrow→h1 ΜΕΓΑΛΥΤΕΡΟ από h1→lead: η ετικέτα
   απέχει περισσότερο από τον τίτλο απ' ό,τι ο τίτλος από την παράγραφο, άρα
   διαβάζεται ως ξεχωριστό στοιχείο αντί για καπέλο του τίτλου. Αιτία: δύο
   ΔΙΑΦΟΡΕΤΙΚΕΣ σχέσεις είχαν και οι δύο την τιμή 1.05rem (γραμμή 209 και εδώ),
   χωρίς κανένα σχόλιο να την υπερασπίζεται.
   ΤΟ ΑΘΡΟΙΣΜΑ ΜΕΝΕΙ: desktop -1,6px, κινητό -0,3px — η πτυχή στα 360×780,
   που είναι ο λόγος ύπαρξης του μπλοκ στη γραμμή 1382, δεν κουνιέται.
   Το περιθώριο είναι ΣΧΕΣΗ ΔΙΑΤΑΞΗΣ, όχι ιδιότητα τύπου: το μέγεθος και το
   tracking του .eyebrow μένουν καθολικά, αλλιώς θα είχαμε δύο αλήθειες για
   το ίδιο στοιχείο σε 20+ σημεία. */
.hero .eyebrow{margin-bottom:.55rem}
.hero h1{margin-bottom:1.45rem}
/* ΜΟΝΟ ΒΑΡΟΣ, ΟΧΙ ΧΡΩΜΑ. Ήταν 300 + --ink-2 πάνω στο ΔΕΥΤΕΡΟ μισό: έσβηνε
   ακριβώς τη φράση που ξεχωρίζει την εταιρεία. Η αντιστροφή με το χρώμα
   μέσα δοκιμάστηκε και απορρίφθηκε — έσβηνε το «Μηχανήματα», δηλαδή το
   ουσιαστικό που σαρώνει ο γιατρός. Με σκέτο βάρος 400→800 η ιεραρχία
   ακούγεται και τα δύο μισά μένουν στο --ink. Ο άξονας της Manrope
   μετρήθηκε γραμμικός σε κάθε βήμα 200→800 (17,8px ανά 100 στα 200px),
   άρα το 400 είναι αληθινό βάρος και όχι συνθετικό. */
.hero h1 .soft{font-weight:400}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:1.85rem}

/* ── ΛΩΡΙΔΑ ΟΝΟΜΑΤΩΝ ΠΙΣΩ ΑΠΟ ΤΟΝ ΗΡΩΑ ─────────────────────────
   ΓΙΑΤΙ ΟΧΙ Remotion/React. Το ζητούμενο εφέ είναι perspective + μία
   μετατόπιση. Το `@remotion/player` θα έφερνε React + ReactDOM + τη
   βιβλιοθήκη (εκατοντάδες KB) και θα έτρεχε ΣΥΝΕΧΗ βρόχο καρέ με
   useCurrentFrame() — για διακόσμηση, πάνω σε site που έχει σήμερα LCP
   192ms/96ms και συνολικά 48KB χειρόγραφης JavaScript. Εδώ: 0 KB.

   Η ΚΙΝΗΣΗ ΕΙΝΑΙ transform, ΟΧΙ left/margin: μένει στον συνθέτη και δεν
   προκαλεί ανακατανομή σε κάθε καρέ.

   ΤΟ ΣΒΗΣΙΜΟ ΓΙΝΕΤΑΙ ΜΕ mask ΚΑΙ ΟΧΙ ΜΕ ΕΠΙΣΤΡΩΣΗ ΧΡΩΜΑΤΟΣ. Το πρωτότυπο
   σβήνει βάζοντας από πάνω βαθμίδες σε συμπαγές χρώμα φόντου. Εδώ το φόντο
   ΔΕΝ είναι συμπαγές — είναι δύο ακτινικές βαθμίδες συν το πλέγμα — οπότε
   επίστρωση σε σκέτο --bg θα έσβηνε και το βάθος που χτίστηκε στο v0.8.5. */
.hero-mq{position:absolute;inset:0;z-index:0;overflow:hidden;
  pointer-events:none;user-select:none;-webkit-user-select:none;
  perspective:1200px;
  -webkit-mask-image:radial-gradient(118% 88% at 50% 50%,#000 22%,transparent 76%);
  mask-image:radial-gradient(118% 88% at 50% 50%,#000 22%,transparent 76%)}
.hero-mq-plane{position:absolute;top:50%;left:-12%;width:124%;
  display:flex;flex-direction:column;gap:.26em;
  transform:translateY(-50%) rotateX(8deg) rotateY(-28deg);transform-style:preserve-3d}
.hero-mq-row{display:flex;width:max-content;white-space:nowrap;
  animation:gld-mq 104s linear infinite}
/* ΕΝΑΛΛΑΞ ΚΑΤΕΥΘΥΝΣΗ ΚΑΙ ΤΑΧΥΤΗΤΑ. Με τρεις σειρές στην ίδια φορά και
   ταχύτητα, το επίπεδο διαβάζεται ως ΕΝΑ φύλλο που γλιστράει — η αίσθηση
   βάθους χάνεται. Οι διαφορετικοί χρόνοι δίνουν παράλλαξη. */
.hero-mq-row:nth-child(2){animation-duration:138s;animation-direction:reverse}
.hero-mq-row:nth-child(3){animation-duration:119s}
.hero-mq-row span{font-family:var(--f-display);font-weight:800;letter-spacing:-.03em;
  font-size:clamp(24px,2.4vw,34px);line-height:1.06;
  color:rgba(21,23,26,.045)}
@keyframes gld-mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* Το περιεχόμενο ΠΑΝΩ από τη λωρίδα. Χωρίς αυτό ο τίτλος μοιράζεται
   επίπεδο με κείμενο που κινείται, και η στοίχιση τρεμοπαίζει. */
.hero-grid{z-index:1}
/* Ο χρήστης ζήτησε ακινησία — η λωρίδα μένει, σταματά. */
@media(prefers-reduced-motion:reduce){.hero-mq-row{animation:none}}
@media(prefers-contrast:more){.hero-mq{display:none}}
@media print{.hero-mq{display:none}}

/* ── ΗΡΩΑΣ ΣΕΛΙΔΑΣ ΠΡΟΪΟΝΤΟΣ ──────────────────────────────────
   ΤΡΙΑ ΠΑΙΔΙΑ ΣΤΗ ΡΟΗ, ΔΥΟ ΣΤΗΛΕΣ ΣΤΗΝ ΟΘΟΝΗ.
   Στο τηλέφωνο διαβάζονται με τη σειρά του σήματος — σειρά, όνομα, ΕΙΚΟΝΑ,
   περιγραφή, κουμπί — γιατί σε κατάλογο καλλυντικών η συσκευασία είναι η
   ταυτότητα και ήταν στο y=699 σε οθόνη 390×844, δηλαδή κάτω από το τσάκισμα.
   Στον υπολογιστή τα δύο κείμενα ξανασμίγουν αριστερά και η εικόνα πιάνει
   ολόκληρη τη δεξιά στήλη. ΧΩΡΙΣ JavaScript, χωρίς διπλό σήμα. */
.hero-prod{row-gap:0}
/* Υπότιτλος προϊόντος — κεφαλαία του πελάτη, ως επιγραφή (v0.10.0). */
.hp-sub{margin:.7rem 0 0;font-family:var(--f-display);font-size:.78rem;font-weight:700;
  letter-spacing:.06em;line-height:1.55;color:var(--ink-2)}
.hp-tech{margin-top:.75rem;font-family:var(--f-display);letter-spacing:.11em;color:var(--ink-2)}
.hp-media{margin-block:1.4rem}
.hp-body>.lead{margin-top:0}
.hp-prose{margin-top:1.2rem}
/* ⚠ 901, ΟΧΙ 701. Το .hero-grid γίνεται ΜΟΝΗ ΣΤΗΛΗ στα ≤900 (βλ. τον κανόνα
   «.hero-grid,.band-grid,.cta{grid-template-columns:1fr}» πιο κάτω). Με τις
   περιοχές δηλωμένες από τα 701, στα 768 το πλέγμα προσπαθούσε να τοποθετήσει
   δύο ονόματα περιοχών σε μία στήλη και η εικόνα έπεφτε ΤΕΛΕΥΤΑΙΑ: μετρήθηκε
   y=798, χειρότερα από τα 560 που ήταν πριν την αλλαγή. Οι περιοχές ισχύουν
   ΜΟΝΟ εκεί που υπάρχουν όντως δύο στήλες· από 701 ως 900 η σειρά του σήματος
   (κεφαλή → εικόνα → σώμα) είναι ήδη η σωστή. */
@media(min-width:901px){
  .hero-prod{grid-template-areas:"head media" "body media";align-items:start;
    grid-template-rows:auto 1fr}
  .hero-prod .hp-head{grid-area:head}
  .hero-prod .hp-body{grid-area:body}
  /* Η εικόνα κεντράρεται ΣΤΟ ΥΨΟΣ ΤΩΝ ΔΥΟ ΣΕΙΡΩΝ ΜΑΖΙ — αλλιώς κολλάει στην
     κορυφή και το κείμενο κρέμεται δίπλα της. */
  .hero-prod .hp-media{grid-area:media;align-self:center;margin-block:0}
  .hero-prod .hp-body>.lead{margin-top:1.1rem}
}

/* ΣΥΝΤΟΜΑ ΓΕΓΟΝΟΤΑ ΔΙΠΛΑ ΣΤΟ ΚΕΙΜΕΝΟ, όχι ζώνη πλήρους πλάτους για 28px.
   Αφορά ~125 από τα 145 προϊόντα: 74 έχουν μόνο πρωτόκολλο, και άλλα 53 έχουν
   «ενεργά συστατικά» που στην πραγματικότητα είναι μία-δύο λέξεις χωρίς δράση. */
.facts{margin:1.5rem 0 0;display:grid;grid-template-columns:auto 1fr;
  gap:.2rem 1rem;align-items:baseline;
  border-inline-start:2px solid var(--line-2);padding-inline-start:1rem}
.facts dt{font-family:var(--f-display);font-size:.7rem;font-weight:700;
  letter-spacing:.19em;color:var(--ink-3);text-transform:uppercase;white-space:nowrap}
.facts dd{margin:0;color:var(--ink-2);font-size:.95rem;line-height:1.66}
/* Δύο ζεύγη στη σειρά θέλουν αέρα ανάμεσά τους, όχι μόνο στο εσωτερικό. */
.facts dd+dt{margin-top:.75rem}
@media(max-width:520px){
  /* Στα στενά, η ετικέτα και το κείμενο σε δύο γραμμές: με 12 χαρακτήρες
     ετικέτας η στήλη του κειμένου έμενε 180px και έσπαγε σε 5 γραμμές. */
  .facts{grid-template-columns:1fr}
}
.facts+.note-fine{margin-top:.55rem;padding-inline-start:1rem}
/* ⚠ ΤΟ width:100% ΕΙΝΑΙ Ο ΦΡΕΝΟ ΣΤΟ aspect-ratio, ΟΧΙ ΔΙΑΚΟΣΜΗΣΗ.
   Χωρίς αυτό, το aspect-ratio δένεται με το max-height παρακάτω (44vh/410px
   σε κοντές οθόνες, 56vh/540px αλλού): μόλις το ταβάνι κόψει το ΥΨΟΣ,
   μαζεύεται αναλογικά και το ΠΛΑΤΟΣ, και η φωτογραφία συρρικνώνεται μέσα
   στη στήλη της αφήνοντας νεκρό κενό στα δεξιά — μετρημένο:
     1081×800  φωτό 320 σε στήλη 488  → 168px νεκρά
     1280×800  φωτό 320 σε στήλη 508  → 239px νεκρά (47%)
     1366×768  φωτό 307 σε στήλη 503  → 250px νεκρά (50%)
     1440×790  φωτό 316 σε στήλη 499  → 240px νεκρά
     1920×1080 φωτό 491 σε στήλη 737  → 310px νεκρά
   Δηλαδή στα τρία πιο συνηθισμένα μεγέθη φορητού η φωτογραφία ήταν 307-320px
   — ΜΙΚΡΟΤΕΡΗ από τα 350px που έχει σε τηλέφωνο 390px — και η δεξιά της ακμή
   δεν έπεφτε πάνω στη στήλη που τηρούν κεφαλίδα, μετρητές και υποσέλιδο.
   Με width:100% το πλάτος είναι ρητό, το ταβάνι κόβει μόνο το ύψος και το
   object-fit:cover αναλαμβάνει το κάδρο. Τα νεκρά πέφτουν σε 43-64px, που
   είναι το κανονικό περιθώριο της σελίδας.
   ΚΑΤΩ ΑΠΟ 1081px ΔΕΝ ΑΛΛΑΖΕΙ ΤΙΠΟΤΑ: εκεί δεν πιάνει ταβάνι, η αναλογία
   μένει 0,91:1 και τα νούμερα είναι πανομοιότυπα (μετρημένο σε 901 και 1024).
   Δώρο: η λεζάντα μέσα στη φωτογραφία πέφτει από 4 γραμμές σε 2. */
.hero-fig{position:relative;border-radius:var(--r-lg);overflow:hidden;width:100%;
  border:1px solid var(--line);aspect-ratio:4/4.4;background:var(--panel)}
.hero-fig img{width:100%;height:100%;object-fit:cover;object-position:52% 20%}
.hero-fig::after{content:"";position:absolute;inset:0;
  background:linear-gradient(192deg,transparent 42%,rgba(17,18,20,.9) 100%)}
.hero-cap{position:absolute;left:18px;right:18px;bottom:15px;z-index:2;
  display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
/* Κάθεται πάνω στο ΣΚΟΥΡΟ ντεγκραντέ της φωτογραφίας, όχι στη σελίδα: κρατά
   ανοιχτό χρώμα ανεξάρτητα από το θέμα. */
.hero-cap .t{font-family:var(--f-display);font-size:.68rem;font-weight:700;letter-spacing:.15em;color:#E4E6E9;max-width:60%}

/* ── μετρητές ──────────────────────────────────────────────── */
/* Η ΖΩΝΗ ΜΕΝΕΙ FULL-BLEED, ΤΑ ΝΟΥΜΕΡΑ ΜΠΑΙΝΟΥΝ ΣΤΗ ΣΤΗΛΗ. Το πλέγμα πέρασε
   στο εσωτερικό .wrap ώστε το «17» να στοιχίζεται με τον τίτλο και το
   υποσέλιδο (πριν: 340px απόκλιση στα 1920, 660px στα 2560).
   ΟΙ ΓΡΑΜΜΕΣ ΕΓΙΝΑΝ BORDER, ΟΧΙ GAP: με gap:1px το χρώμα ερχόταν από το
   φόντο του γονέα — μέσα σε .wrap αυτό θα έβαφε και τις δύο λωρίδες padding
   δεξιά κι αριστερά. */
.stats{background:var(--bg);border-block:1px solid var(--line)}
.stats-in{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{background:var(--bg);padding:clamp(19px,2.5vw,30px) clamp(14px,2vw,26px);
  border-inline-start:1px solid var(--line)}
.stats-in .stat:first-child{border-inline-start:0}
/* ΤΑ ΑΚΡΑΙΑ ΚΕΛΙΑ ΧΩΡΙΣ ΕΣΩΤΕΡΙΚΟ ΠΕΡΙΘΩΡΙΟ. Το .wrap βάζει ήδη το περιθώριο
   της σελίδας· αν το κρατήσει και το κελί, το «17» ξεκινά 26px δεξιότερα από
   κάθε τίτλο της σελίδας — μετρήσιμη, ορατή απόκλιση σε κάθε πλάτος. Τα
   εσωτερικά κελιά κρατούν το δικό τους περιθώριο, γιατί εκεί χωρίζει γραμμή. */
.stats-in .stat:first-child{padding-inline-start:0}
.stats-in .stat:last-child{padding-inline-end:0}
/* ΙΣΟΠΛΑΤΕΙΣ ΑΡΙΘΜΟΙ. Μετρημένο στη Manrope 800: αναλογικά το «1» πιάνει
   45,4px και το «0» 67,4px — διαφορά 48%. Με μετρητή που ανεβαίνει, κάθε
   αλλαγή ψηφίου θα μετακινούσε ό,τι ακολουθεί («χρόνια», «οίκοι») δεξιά κι
   αριστερά σε κάθε καρέ. Με tabular-nums κάθε ψηφίο είναι ακριβώς 62px, άρα
   το πλάτος είναι σταθερό από το «0» ως το «17». Είναι ούτως ή άλλως η σωστή
   τυπογραφία για ζώνη μεγεθών. */
.stat b{font-variant-numeric:tabular-nums;display:block;font-family:var(--f-display);font-size:clamp(1.45rem,2.6vw,2.1rem);font-weight:800;letter-spacing:-.03em;line-height:1}
/* ⚠ ΑΜΕΣΟ ΠΑΙΔΙ, ΚΑΙ ΟΧΙ ΤΟ ΚΡΥΦΟ. Ο κανόνας ήταν «.stat span» και έπιανε
   ΚΑΘΕ span μέσα στον μετρητή. Όταν ο μετρητής που ανεβαίνει τύλιξε τα ψηφία
   σε δικό του span, ο αριθμός αποδόθηκε 12,4px γκρι block αντί για 23,2px
   λευκό — και το κείμενο παρέμενε σωστό, οπότε κάθε έλεγχος σε innerText
   περνούσε. Το «17» έσπαγε σε δική του γραμμή από τη λέξη που ακολουθεί.
   Το :not() εξαιρεί το αντίγραφο για τον αναγνώστη οθόνης, που είναι επίσης
   άμεσο παιδί. */
.stat > span:not(.screen-reader-text){display:block;margin-top:.5rem;font-size:.775rem;color:var(--ink-3);line-height:1.45}

/* ── κεφαλίδα ενότητας ─────────────────────────────────────── */
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  flex-wrap:wrap;margin-bottom:clamp(24px,3.4vw,46px)}
/* min-width:0 ΜΑΖΙ με το overflow-wrap. Το .sec-head είναι flex: χωρίς το
   min-width:0 το παιδί αρνείται να συρρικνωθεί κάτω από το πλάτος της
   μεγαλύτερης λέξης, όσο overflow-wrap κι αν βάλεις. Φάνηκε στην αναζήτηση,
   όπου ο όρος τυπώνεται μέσα στον τίτλο: μια κολλημένη λέξη 120 χαρακτήρων
   έδινε 2.339px οριζόντιας κύλισης στο κινητό — έξι οθόνες κενό πλάι. */
/* ΤΟ ΠΛΑΤΟΣ ΤΗΣ ΣΤΗΛΗΣ ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΕΞΑΡΤΑΤΑΙ ΑΠΟ ΤΗ ΓΡΑΜΜΑΤΟΣΕΙΡΑ.
   Ήταν 64ch. Το ch ισούται με το πλάτος του ψηφίου «0» ΤΗΣ ΤΡΕΧΟΥΣΑΣ
   γραμματοσειράς — άρα όσο έπαιζε η εφεδρική, η στήλη ήταν 588px αντί 646px.
   Μετρημένο 14/09/2026 στο /proionta/: αυτά τα 58px έριχναν τον τίτλο από 2 σε
   3 γραμμές και την εισαγωγή από 3 σε 4, δηλαδή 125px μετατόπιση σε όλη τη
   σελίδα από κάτω. Για σύγκριση, όλη η ρύθμιση μετρικών στο fonts.css κερδίζει
   ~1px. Το 40.375rem είναι ΑΚΡΙΒΩΣ όσο ήταν το 64ch με το Inter (646px στα
   16px ρίζας) — ίδια εμφάνιση, αλλά σταθερή. */
.sec-head .txt{max-width:40.38em;min-width:0}
.sec-head h1,.sec-head .lead{overflow-wrap:anywhere}
/* ΕΝΑΣ κανόνας για το κενό κάτω από τον h1, σε ΟΛΑ τα σημεία που ο τίτλος
   ακολουθείται από κείμενο. Ήταν δύο inline styles σε δύο πρότυπα και
   τίποτα στα υπόλοιπα πέντε — δηλαδή τρεις διαφορετικές αλήθειες.
   ΟΧΙ στο .hero-grid: εκεί το κενό το δίνει ήδη η διάταξη. */
.sec-head h1,
.band-txt h1,
.wrap > h1{margin-bottom:1.05rem}
.sec-head h2{margin-bottom:.65rem}
.sec-head p{margin:0}

/* ── ΠΛΑΚΕΤΑ: η λύση για packshot σε λευκό φόντο ──────────── */
/* Η ΓΡΑΜΜΗ minmax(0,1fr) ΔΕΝ ΕΙΝΑΙ ΔΙΑΚΟΣΜΗΤΙΚΗ — χωρίς αυτήν κόβονται τα
   μηχανήματα. Το grid με υπονοούμενη γραμμή «auto» δεν δίνει ΟΡΙΣΤΙΚΟ ύψος,
   οπότε το max-height:100% της εικόνας δεν έχει τι να επιλύσει, συμπεριφέρεται
   σαν none, η εικόνα στρώνεται στο φυσικό της ύψος και το overflow:hidden την
   κόβει. Μετρήθηκε: διάμεση ορατότητα packshot 39,4%, χειρότερη 27,3%
   (CAM-Sterilizer: πλακέτα 358×269, εικόνα 314×904). Με τη ρητή γραμμή: 100%.
   Δοκιμάστηκε και το height:100%+object-fit — ΑΠΕΤΥΧΕ, που επιβεβαιώνει ότι
   η αιτία είναι η auto γραμμή και όχι το object-fit. */
/* ΧΡΩΜΑ ΚΕΙΜΕΝΟΥ ΓΙΑ ΤΗ ΜΙΑ ΦΟΡΑ ΠΟΥ ΘΑ ΧΡΕΙΑΣΤΕΙ. Η πλακέτα είναι λευκή
   μέσα σε σκούρο θέμα, οπότε κληρονομούσε ανοιχτό κείμενο: όταν μια εικόνα
   δεν φόρτωνε, το ελληνικό alt τυπωνόταν με αντίθεση 1,03:1 — αόρατο. Το
   --plate-ink υπήρχε ήδη στο :root και δεν το χρησιμοποιούσε κανείς. */
.plate{background:linear-gradient(168deg,var(--plate) 0%,var(--plate-2) 100%);
  display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);
  place-items:center;padding:22px;position:relative;overflow:hidden;
  color:var(--plate-ink)}
.plate::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 4%,rgba(255,255,255,.92),transparent 58%)}
.plate img{position:relative;z-index:1}
/* Κομμένο packshot: κάθεται μέσα στην πλακέτα με αέρα γύρω του. */
.plate.is-cutout img{max-height:100%;max-width:100%;width:auto;height:auto;min-height:0;
  object-fit:contain;mix-blend-mode:multiply}
/* Φωτογραφία με δικό της φόντο: γεμίζει την πλακέτα, χωρίς blend — αλλιώς
   το φόντο της εμφανίζεται ως ορατό γκρι κουτί μέσα στο λευκό. */
.plate.is-photo{padding:0}
.plate.is-photo img{width:100%;height:100%;object-fit:cover}
.plate.is-photo::after{display:none}
/* Φωτογραφία με ομοιόμορφο ΑΝΟΙΧΤΟ φόντο: μπαίνει ΟΛΟΚΛΗΡΗ αντί να κοπεί.
   ΔΕΝ προσπαθούμε να «σβήσουμε» το φόντο της βάφοντας την πλακέτα με το
   δειγματοληπτημένο χρώμα: το φόντο αυτών των φωτογραφιών είναι απαλή
   ΔΙΑΒΑΘΜΙΣΗ (spread έως 45), οπότε καμία επίπεδη τιμή δεν ταιριάζει και
   έμενε ορατή ραφή — ένα γκρι ορθογώνιο μέσα σε λευκή πλακέτα.
   Αντ' αυτού το δηλώνουμε: η φωτογραφία είναι πλακίδιο ΠΑΝΩ στην πλακέτα,
   με στρογγυλεμένη γωνία και απαλή σκιά. Η ραφή γίνεται περίγραμμα. */
.plate.is-photo.is-fit{background:linear-gradient(168deg,var(--plate) 0%,var(--plate-2) 100%);padding:10px}
.plate.is-photo.is-fit img{width:auto;height:auto;max-width:100%;max-height:100%;
  object-fit:contain;mix-blend-mode:normal;border-radius:var(--tile-r,5px);
  box-shadow:0 1px 3px rgba(20,24,28,.10),0 6px 18px rgba(20,24,28,.10)}
/* ΛΕΥΚΟ ΦΟΝΤΟ ΦΩΤΟΓΡΑΦΙΑΣ (v0.10.1): η πλακέτα παίρνει το ΙΔΙΟ χρώμα και το
   προϊόν κάθεται κατευθείαν πάνω της — χωρίς πλακίδιο, σκιά ή γκρι κορνίζα.
   Μέσα σε κάρτα μια λεπτή γραμμή χωρίζει τη φωτογραφία από το κείμενο. */
.plate.is-photo.is-fit.is-white{background:var(--plate-bg,#FFFFFF);padding:clamp(12px,1.6vw,20px)}
.plate.is-white::after{display:none}
.plate.is-photo.is-fit.is-white img{border-radius:0;box-shadow:none}
.card .plate.is-white{border-bottom:1px solid var(--line)}
/* ΜΕΓΕΘΥΝΣΗ ΣΤΟ ΠΕΡΙΕΧΟΜΕΝΟ. Οι φωτογραφίες της Summe είναι ένα έγχρωμο
   τετράγωνο τυπωμένο πάνω σε λευκό καμβά· χωρίς αυτό το προϊόν έπιανε το
   ένα τέταρτο της κάρτας μέσα σε τρία ομόκεντρα ορθογώνια.
   Η ΣΕΙΡΑ ΕΧΕΙ ΣΗΜΑΣΙΑ: translate ΠΡΩΤΑ, scale ΜΕΤΑ — γραμμένο ανάποδα, η
   μετατόπιση πολλαπλασιάζεται με τον συντελεστή και το προϊόν φεύγει εκτός. */
.plate.is-trim img{
  transform:translate(var(--plate-dx,0),var(--plate-dy,0)) scale(var(--plate-k,1));
  transform-origin:center center}
/* Το πλαίσιο και η σκιά ήταν για να διαβαστεί η φωτογραφία ως πλακίδιο. Όταν
   κόβουμε το περιθώριο δεν υπάρχει πια περιθώριο για να πλαισιωθεί. */
.plate.is-photo.is-fit.is-trim img{border-radius:0;box-shadow:none}
/* ── Η ΑΥΤΟΝΟΜΗ ΠΛΑΚΕΤΑ ΗΤΑΝ Η ΜΟΝΗ ΤΕΤΡΑΓΩΝΗ ΕΠΙΦΑΝΕΙΑ ΤΗΣ ΣΕΛΙΔΑΣ ──
   Μετρημένο στη σελίδα προϊόντος στα 1440 (κάθε επιφάνεια >60×40 με φόντο ή
   περίγραμμα): κάρτες 14px · ζώνη CTA 20px · κουμπιά 999px · ΦΩΤΟΓΡΑΦΙΑ 0px.
   Δεν ήταν απόφαση, ήταν κενό — και δύο ανεξάρτητες μετρήσεις το δείχνουν:
     α) Η ΙΔΙΑ πλακέτα μέσα σε κάρτα διαβάζεται ΗΔΗ στρογγυλή, επειδή την
        κόβει το overflow:hidden της .card στα 14px. Ίδιο στοιχείο, δύο
        αναγνώσεις, ανάλογα με το πού κάθεται.
     β) Στην ΑΡΧΙΚΗ η φωτογραφία-ήρωας (.hero-fig) είναι ήδη --r-lg, και στο
        κινητό το ίδιο --r-lg περνά στο <img>. Ίδιος ρόλος, άλλη ακτίνα.
   Μπαίνει --r-lg και όχι --r: αυτές οι πλακέτες είναι 499×623 (προϊόν) και
   499×339 (μηχάνημα) — μεγέθους πάνελ, δηλαδή στη βαθμίδα του .hero-fig και
   του .cta, όχι της κάρτας των 263px.

   ⛔ ΔΕΝ ΜΠΑΙΝΕΙ ΣΤΟ .plate ΓΕΝΙΚΑ. Μέσα σε κάρτα οι ΠΑΝΩ γωνίες θα έπεφταν
   πάνω στην ήδη κομμένη γωνία της κάρτας (αδιάφορο), αλλά οι ΚΑΤΩ γωνίες θα
   στρογγύλευαν πάνω στο σώμα της κάρτας και θα άνοιγαν δύο ορατές εγκοπές
   φόντου. Ο κανόνας στοχεύει ΜΟΝΟ τις δύο αυτόνομες θέσεις. */
.hp-media .plate,.plate-hero{border-radius:var(--r-lg);--tile-r:10px}
/* ΟΜΟΚΕΝΤΡΕΣ ΑΚΤΙΝΕΣ: εσωτερική = εξωτερική − padding. Η .is-fit κρατά το
   πλακίδιο με padding:10px μέσα στην πλακέτα· με εξωτερική 20 και εσωτερική
   5 η γωνία του πλακιδίου έμπαινε ΜΕΣΑ στην καμπύλη της πλακέτας. 20−10=10.
   Περνά ως μεταβλητή και όχι ως νέος επιλογέας ΕΠΙΤΗΔΕΣ: ο κανόνας
   .plate.is-photo.is-fit.is-trim img{border-radius:0} πιο κάτω πρέπει να
   συνεχίσει να κερδίζει — εκεί δεν υπάρχει περιθώριο για να πλαισιωθεί. */
.plate-empty{display:block;width:52px;height:52px;border:2px dashed #C6CACE;border-radius:8px}
.print-id{display:none}

/* ── κάρτες ────────────────────────────────────────────────── */
.grid{display:grid;gap:clamp(13px,1.6vw,22px)}
.g-2{grid-template-columns:repeat(2,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
/* ⛔ ΔΟΚΙΜΑΣΤΗΚΕ ΦΩΤΙΣΜΕΝΗ ΑΚΜΗ ΣΤΗΝ ΚΑΡΤΑ ΚΑΙ ΑΦΑΙΡΕΘΗΚΕ: ΔΕΝ ΖΩΓΡΑΦΙΖΕΙ.
   Η πλακέτα της εικόνας πιάνει ΟΛΟΚΛΗΡΗ την πάνω ακμή, οπότε και το
   inset highlight και η λάμψη των πρώτων 96px μένουν από κάτω της. Μετρημένο
   στις τρεις πρώτες σειρές εικονοστοιχείων μιας κάρτας προϊόντος:
     με ακμή  44,3 / 239,6 / 244,1
     χωρίς    44,3 / 239,6 / 244,1   — πανομοιότυπα.
   Το βάθος της κάρτας το δίνει ήδη η φωτεινή πλακέτα πάνω σε --panel. */
/* ΤΟ ΣΗΚΩΜΑ ΚΙΝΕΙ `translate`, ΟΧΙ `transform` — ΚΑΙ ΑΥΤΟ ΕΙΝΑΙ Η ΔΙΟΡΘΩΣΗ.
   Το σύστημα αποκάλυψης (.js .reveal / .in) ΚΑΤΕΧΕΙ το transform: το δηλώνει
   με ειδικότητα (0,3,0) και το κρατά ΜΟΝΙΜΑ αφού τελειώσει η είσοδος. Όσο το
   σήκωμα ήταν κι αυτό transform, ο ένας κανόνας έσβηνε τον άλλον — μετρημένο
   στην ίδια σελίδα δύο φορές: χωρίς JavaScript hover → matrix(1,0,0,1,0,-3)·
   με JavaScript hover → none. ΚΑΘΕ κάρτα του site είχε χάσει το σήκωμά της.
   Το `translate` είναι ΞΕΧΩΡΙΣΤΗ ιδιότητα από το `transform` και συνθέτονται:
   η ΕΙΣΟΔΟΣ κρατά το transform, η ΑΛΛΗΛΕΠΙΔΡΑΣΗ παίρνει το translate. Καμία
   μάχη ειδικότητας, τίποτα να ξεχαστεί την επόμενη φορά. */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;display:flex;flex-direction:column;position:relative;
  box-shadow:var(--shadow-1);
  transition:background .2s,border-color .2s,translate .2s,box-shadow .2s}
.card:hover{border-color:var(--line-2);translate:0 -3px;box-shadow:var(--shadow-2)}
/* ΤΕΤΡΑΓΩΝΗ ΠΛΑΚΕΤΑ ΣΤΑ ΠΡΟΪΟΝΤΑ. Οι 132 από τις 146 φωτογραφίες προϊόντος
   είναι τετράγωνες (960×960 ή 2362×2362). Μέσα σε πλακέτα 4/3 μια τετράγωνη
   εικόνα άφηνε μπάρες δεξιά-αριστερά: μετρήθηκε εικόνα 165×165 σε πλακέτα
   263×197, δηλαδή το προϊόν έπιανε το 53% της πλακέτας. Με 1/1 πιάνει 100%.
   Τα μηχανήματα μένουν 4/3: οι φωτογραφίες τους είναι κάθετες και ανομοιογενείς. */
.card .plate{aspect-ratio:4/3}
.card-prod .plate{aspect-ratio:1}
.card-b{padding:16px 18px 19px;display:flex;flex-direction:column;gap:.4rem;flex:1}
/* ΗΤΑΝ ΚΟΚΚΙΝΟ ΚΕΙΜΕΝΟ: #ED1C24 πάνω στο --panel μετρήθηκε 3,77:1. Κόκκινο
   που περνά 4,5:1 πάνω σε σχεδόν μαύρο είναι αναγκαστικά ροζ κοραλί — δηλαδή
   δεν είναι πια το χρώμα της εταιρείας. Αντ' αυτού το κόκκινο γίνεται ΣΗΜΑΔΙ
   και το κείμενο ουδέτερο (7,94:1), ίδιο μοτίβο με το .eyebrow. */
/* ΑΝΑΔΙΠΛΩΣΗ, ΟΧΙ ΜΙΑ ΓΡΑΜΜΗ: «ΣΩΜΑ — ΑΝΑΔΙΑΜΟΡΦΩΣΗ, ΛΙΠΟΛΥΣΗ ΚΑΙ
   ΚΥΤΤΑΡΙΤΙΔΑ» είναι 46 χαρακτήρες με letter-spacing .15em — σε κάρτα 168px
   ξεχειλίζει οριζόντια, στον άξονα που καμία μέτρηση «ύψους» δεν βλέπει. */
/* ΟΡΙΟ ΔΥΟ ΓΡΑΜΜΩΝ. Με το overflow-wrap:anywhere (που ΠΡΕΠΕΙ να μείνει —
   αλλιώς οι μακριές κεφαλαίες λέξεις ξεχειλίζουν οριζόντια και ψαλιδίζονται
   χωρίς σημάδι) μια ετικέτα σαν «ΣΩΜΑ — ΑΝΑΔΙΑΜΟΡΦΩΣΗ, ΛΙΠΟΛΥΣΗ ΚΑΙ
   ΚΥΤΤΑΡΙΤΙΔΑ» έπιανε 5–6 γραμμές μέσα σε στενή κάρτα, δηλαδή περισσότερο
   χώρο από τον ίδιο τον τίτλο του προϊόντος. */
.card-cat{font-family:var(--f-display);font-size:.645rem;font-weight:700;letter-spacing:.15em;
  color:var(--ink-2);display:flex;align-items:flex-start;gap:.6em;line-height:1.4;
  min-width:0;overflow-wrap:anywhere}
.card-cat > span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;min-width:0}

/* ── ΜΙΚΤΟ ΠΛΕΓΜΑ: ΑΠΟΤΕΛΕΣΜΑΤΑ ΑΝΑΖΗΤΗΣΗΣ ──────────────────
   Είναι το ΜΟΝΟ σημείο όπου μηχάνημα και προϊόν στέκονται δίπλα-δίπλα, και
   οι δύο τύποι έχουν διαφορετική πλακέτα (4/3 έναντι 1/1) και ετικέτα μιας ή
   δύο γραμμών. Αποτέλεσμα: οι τίτλοι της ΙΔΙΑΣ γραμμής προσγειώνονταν 113px
   χώρια και το μάτι δεν έβρισκε πού να σαρώσει.
   Η εξίσωση γίνεται ΜΟΝΟ εδώ — στους καταλόγους η τετράγωνη πλακέτα δίνει
   στο packshot 100% κάλυψη και δεν θυσιάζεται. */
/* 27/09: ΜΟΝΟ σε μικτό πλέγμα και από 701px. Σε μία στήλη ή σε αποτελέσματα
   μόνο προϊόντων η κάρτα κοβόταν πιο στενά από την ίδια κάρτα στον κατάλογο. */
@media(min-width:701px){
  .search .grid:has(.card-prod):has(.card:not(.card-prod)) .card .plate{aspect-ratio:4/3}
}
/* v0.7.8 — ΜΕ ΤΟΝ ΙΔΙΟ ΦΥΛΑΚΑ ΠΟΥ ΕΧΕΙ ΚΑΙ Ο ΚΑΤΑΛΟΓΟΣ. Το ίδιο μοτίβο στο
   .grid .card-cat είναι κλεισμένο σε @media(min-width:701px), επειδή σε
   στενή οθόνη δεσμεύει δύο γραμμές ύψους για ετικέτα μίας γραμμής. Εδώ είχε
   ξεφύγει αφύλαχτο και χρέωνε ~19px σε κάθε κάρτα αποτελέσματος στο κινητό. */
@media(min-width:701px){
  .search .grid .card-cat{min-height:calc(2 * 1.4em)}
}
/* ΙΔΙΟ ΠΡΟΒΛΗΜΑ, ΚΑΙ ΣΤΟΥΣ ΚΑΤΑΛΟΓΟΥΣ. Όταν η ετικέτα μιας κάρτας τυλίγεται σε
   δεύτερη γραμμή και της διπλανής όχι, οι δύο τίτλοι της ίδιας σειράς ξεκινούν
   ώς 23,9px χώρια — το μάτι που σαρώνει 24 ονόματα χάνει τη βάση του. Η εξίσωση
   είχε γίνει ΜΟΝΟ για τα αποτελέσματα αναζήτησης. Μόνο από 701px και πάνω: σε
   μία στήλη δεν υπάρχει διπλανή κάρτα να στοιχιστείς μαζί της, και το ύψος
   θα ήταν καθαρό κόστος. */
@media(min-width:701px){
  .grid .card-cat{min-height:calc(2 * 1.4em)}
}
.card-cat::before{content:"";width:5px;height:5px;margin-top:.5em;background:var(--red);flex:none}

/* Περικοπή και στον ΤΙΤΛΟ, όχι μόνο στην περιγραφή — αλλά στις ΤΡΕΙΣ
   γραμμές, όχι στις δύο. Ο μακρύτερος πραγματικός τίτλος του καταλόγου
   είναι 69 χαρακτήρες («2 Ισχυρή αποτοξινωτική και ανανεωτική μάσκα
   προσώπου κατά της ρύπανσης») και στις 2 γραμμές κοβόταν το όνομα του
   ίδιου του προϊόντος. Χωρίς min-height: οι κάρτες ισοϋψώνονται ήδη από
   το grid και το «Δείτε →» κάθεται στον πάτο με margin-top:auto. */
/* overflow-wrap ΚΑΙ ΕΔΩ, όχι μόνο στο .card-cat. Το line-clamp κόβει μόνο
   ΓΡΑΜΜΕΣ· μια λέξη πλατύτερη από την κάρτα ξεχειλίζει ΟΡΙΖΟΝΤΙΑ και το
   overflow:hidden την ψαλιδίζει ΧΩΡΙΣ αποσιωπητικά — «DERMAÉCLA» αντί για
   «DERMAÉCLAT». 11 στις 24 κάρτες στα 320px. Το «…» εμφανίζεται μόνο όταν
   κοπεί γραμμή, ποτέ όταν κοπεί πλάτος. */
.card h3{font-size:1.04rem;letter-spacing:-.015em;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
  min-width:0;overflow-wrap:anywhere}
.card h3 a::after{content:"";position:absolute;inset:0;z-index:2}

/* ΔΑΚΤΥΛΙΟΣ ΕΣΤΙΑΣΗΣ ΣΤΗΝ ΚΑΡΤΑ, ΟΧΙ ΣΤΟΝ ΤΙΤΛΟ. Ο υπολογιστής έλεγε
   «outline 2px solid» — στην εικόνα υπήρχαν 42 λευκά pixel από τα 2.880 της
   ζώνης (1,5%). Το overflow:hidden του h3 έκοβε τρεις από τις τέσσερις ακμές,
   γιατί το outline-offset πέφτει ΕΞΩ από το κουτί περικοπής. Ο σύνδεσμος
   καλύπτει ούτως ή άλλως όλη την κάρτα (h3 a::after, inset:0), οπότε το σωστό
   περίγραμμα είναι της κάρτας. ΘΕΤΙΚΟ offset υποχρεωτικά: η .card έχει και
   αυτή overflow:hidden, άρα αρνητικό offset θα ξανακοβόταν. */
.card h3 a:focus-visible{outline:none}
.card:has(h3 a:focus-visible){outline:2px solid var(--ink);outline-offset:3px;
  box-shadow:0 0 0 2px var(--bg)}
/* Περικοπή σε 3 γραμμές: τα κείμενα του πελάτη έχουν πολύ άνισο μήκος και
   χωρίς όριο οι κάρτες γίνονται σκάλα. */
.card p{margin:0;font-size:.85rem;color:var(--ink-3);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .more{margin-top:auto;padding-top:.7rem;font-family:var(--f-display);font-size:.755rem;
  font-weight:700;letter-spacing:.05em;color:var(--ink-2);display:flex;align-items:center;gap:.4em;flex-wrap:wrap}
.card:hover .more{color:var(--ink)}
/* ΝΕΚΡΗ ΖΩΝΗ ΠΑΝΩ ΑΠΟ ΤΟΝ ΣΥΝΔΕΣΜΟ. Και τα δύο διακριτικά κάθονται με z-index:3
   πάνω στην επικάλυψη-σύνδεσμο της κάρτας: σε αφή, το πάτημα στην πάνω γωνία
   της φωτογραφίας δεν έκανε ΤΙΠΟΤΑ, χωρίς καμία ένδειξη. Είναι καθαρές
   ενδείξεις (το ένα είναι ήδη aria-hidden), άρα δεν χάνεται τίποτα. */
.card-award,.card-step{pointer-events:none}
.card-award{position:absolute;top:10px;inset-inline-end:10px;z-index:3;height:44px;width:auto;
  filter:drop-shadow(0 2px 7px rgba(0,0,0,.2))}
/* ── βήμα πρωτοκόλλου ──────────────────────────────────────── */
/* Οι σειρές Cell C, De-Pollution και Nicely είναι ΡΟΥΤΙΝΕΣ με σειρά χρήσης.
   Ο αριθμός ήταν κολλημένος μπροστά στον τίτλο· εδώ γίνεται σήμα. */
/* Λωρίδα προδιαγραφών στο hero μηχανήματος: τρία νούμερα, με την ετικέτα από
   κάτω. Η ετικέτα είναι μικρή αλλά στο --ink-2 (7,4:1) — όχι στο --ink-3 που
   κόβεται στο 4,3:1 όπως είχε συμβεί στο σήμα βήματος. */
.specstrip{display:flex;flex-wrap:wrap;gap:0;margin:1.6rem 0 0;padding:0;list-style:none;
  border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}
.specstrip li{flex:1 1 140px;min-width:0;padding:14px 18px;
  border-inline-start:1px solid var(--line-2)}
.specstrip li:first-child{border-inline-start:0}
.specstrip b{display:block;font-family:var(--f-display);font-weight:800;
  font-size:clamp(1rem,1.5vw,1.22rem);letter-spacing:-.01em;color:var(--ink);
  overflow-wrap:anywhere}
.specstrip span{display:block;margin-top:5px;font-size:.72rem;letter-spacing:.08em;
  text-transform:none;color:var(--ink-2)}
@media(max-width:560px){
  /* Σε τηλέφωνο τρεις στήλες δίνουν ~100px η καθεμία — μία στήλη ανά γραμμή. */
  .specstrip{flex-direction:column}
  /* Σε στήλη το flex-basis γίνεται ΥΨΟΣ. Χωρίς αυτό, τα τρία στοιχεία
     μοιράζονταν σταθερό ύψος και η λωρίδα έπιανε 422px σε οθόνη 800px, με
     185px κενά μέσα της. */
  .specstrip li{flex:0 0 auto}
  .specstrip li{border-inline-start:0;border-top:1px solid var(--line-2)}
  .specstrip li:first-child{border-top:0}
  /* ΤΙΜΗ ΚΑΙ ΕΤΙΚΕΤΑ ΣΤΗΝ ΙΔΙΑ ΓΡΑΜΜΗ. Στοιβαγμένες, οι τρεις σειρές
     έτρωγαν 237px από 844 — το 28% της πρώτης οθόνης για τρία νούμερα. */
  .specstrip li{display:flex;align-items:baseline;justify-content:space-between;
    gap:14px;padding:12px 16px}
  .specstrip b{flex:0 1 auto}
  .specstrip span{margin-top:0;flex:0 1 auto;text-align:end}
}
/* ΚΑΨΟΥΛΑ, ΟΧΙ ΚΥΚΛΟΣ. Η λέξη «ΒΗΜΑ» μετράει 31,2px και κάθεται 10,7px κάτω
   από το κέντρο· εκεί η χορδή ενός δίσκου 38px είναι 31,4px και στο κάτω άκρο
   των γραμμάτων μόλις 22,3px — τα ακραία γράμματα έβγαιναν έξω από το σκούρο
   φόντο και έπεφταν πάνω στη λευκή πλακέτα. Το ίδιο μοτίβο κάψουλας
   χρησιμοποιεί ήδη το .card-award. */
.card-step{position:absolute;top:10px;inset-inline-start:10px;z-index:3;
  display:grid;place-items:center;line-height:1;
  width:auto;min-width:38px;height:auto;padding:5px 9px;border-radius:999px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(6px);
  border:1px solid var(--line-2)}
.card-step b{font-family:var(--f-display);font-size:.95rem;font-weight:800;color:var(--ink)}
/* ΗΤΑΝ 6,72px στο #868C96 = 4,30:1 πάνω στο #28292b της κάρτας — κάτω από το
   όριο. Το --ink-2 δίνει ~7,4:1 και το μέγεθος ανεβαίνει σε ~9,3px.
   ΤΟ ΜΙΣΟ ΑΥΤΗΣ ΤΗΣ ΔΙΟΡΘΩΣΗΣ ΕΙΧΕ ΜΕΙΝΕΙ ΣΤΟ ΣΧΟΛΙΟ: το μέγεθος είχε
   ανέβει, το χρώμα είχε μείνει --ink-3, δηλαδή 4,30:1 — το σχόλιο περιέγραφε
   αλλαγή που δεν είχε γίνει ποτέ. */
.card-step span{font-family:var(--f-display);font-size:.58rem;font-weight:700;
  letter-spacing:.12em;color:var(--ink-2);margin-top:1px}
.step-tag{margin-inline-start:.9em;padding:2px 8px;border-radius:999px;
  background:var(--panel-2);border:1px solid var(--line-3);color:var(--ink-2);letter-spacing:.12em}

/* ── φίλτρα ────────────────────────────────────────────────── */
.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:clamp(20px,2.8vw,32px)}
/* v0.7.7 — Ο ΠΕΡΙΤΥΛΙΓΜΕΝΟΣ ΦΟΡΕΑΣ: chip αριστερά, ζωντανό πλήθος δεξιά.
   Υπάρχει επειδή κάτω από 700px τα chip μπαίνουν σε διάδρομο που κυλά, και
   το «17 μηχανήματα» ΔΕΝ πρέπει να ταξιδεύει μαζί τους. Στον υπολογιστή η
   διάταξη μένει αυτή που ήταν. */
.filterbar{display:flex;align-items:center;gap:16px;margin-bottom:clamp(20px,2.8vw,32px)}
.filterbar > .filters{flex:1 1 auto;min-width:0;margin-bottom:0}
.filterbar > [data-count]{flex:none}
@media(max-width:700px){
  .filterbar{display:block}
  .filterbar > [data-count]{display:block;margin-top:10px}
}
.chip{font-family:var(--f-display);font-size:.79rem;font-weight:600;
  padding:8px 15px;border-radius:999px;border:1px solid var(--line-3);color:var(--ink-2);
  cursor:pointer;transition:background .16s,border-color .16s,color .16s}
.chip:hover{color:var(--ink);border-color:var(--ink-3)}
.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* ── ζώνη οίκου ────────────────────────────────────────────── */
/* ΒΑΘΟΣ ΜΕΣΑ ΣΤΗΝ ΕΠΙΦΑΝΕΙΑ, ΟΧΙ ΔΕΥΤΕΡΗ ΓΡΑΜΜΗ ΣΤΗΝ ΑΚΜΗ. Η πρώτη δοκιμή
   έβαλε inset highlight· μετρήθηκε ότι ανεβάζει τη σειρά 1 από 24,8 σε 32,8 —
   ορατό, αλλά ακριβώς από πάνω υπάρχει ΗΔΗ το περίγραμμα στο 45,6. Δύο
   γραμμές στη σειρά διαβάζονται ως αστοχία απόδοσης, όχι ως ανάγλυφο.
   Το ντεγκραντέ δίνει πτώση φωτός στα πρώτα 220px: η ζώνη παύει να είναι
   ένα επίπεδο 24,8 για εκατοντάδες εικονοστοιχεία. */
.band{background-color:var(--bg-2);border-block:1px solid var(--line);
  background-image:linear-gradient(180deg,rgba(255,255,255,.024),transparent 220px)}
.band-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(26px,4vw,58px);align-items:center}
/* ══════════════════════════════════════════════════════════════════
   Η ΚΑΡΤΑ ΟΙΚΟΥ ΕΧΕΙ ΤΑΒΑΝΙ (v0.8.2)

   Οι τέσσερις κάρτες κάθε οίκου ζουν σε ΔΥΟ σταθερές στήλες μέσα σε μια
   στήλη-κλάσμα. Ο κατάλογος προσθέτει ΣΤΗΛΕΣ όσο μεγαλώνει η οθόνη και
   κρατά την κάρτα στα 240-303px· η ζώνη κρατά δύο στήλες και μεγαλώνει
   την ΚΑΡΤΑ γραμμικά. Μετρημένο, κάρτα ζώνης προς κάρτα καταλόγου:
     561-850 (στοιβαγμένη)  252→384px   1,53×   ← 407px στα 900
     901-1024               207→235px   0,78×
     1100-1440              253→283px   1,05×   ← ΕΔΩ είναι σωστή
     1600-2560              345→414px   1,63×
   Δηλαδή ένα μπουκαλάκι ζωγραφιζόταν 414px σε οθόνη όπου ο κατάλογος το
   δείχνει 254px, και 407px στα 900 όπου ο κατάλογος λέει 273px.
   Το ταβάνι είναι το ΠΑΝΩ ΑΚΡΟ ΤΗΣ ΙΔΙΑΣ ΤΗΣ ΖΩΝΗΣ στο εύρος όπου
   μετρήθηκε σωστή (283px), στρογγυλεμένο: 290px. Δεν είναι breakpoint —
   δένει κάτω από τα 580px διαθέσιμα και αφήνει το τηλέφωνο ανέγγιχτο
   (στα 390 οι δύο στήλες βγαίνουν 169px, ίδιο με τον κατάλογο).

   ⚠ ΤΟ .band-grid ΖΕΙ ΣΕ ΤΡΙΑ ΠΡΟΤΥΠΑ (αρχική, σελίδα μηχανήματος,
   επικοινωνία) ΚΑΙ ΤΟ .grid.g-2 ΣΕ ΤΡΙΑ ΑΛΛΑ. Δεν υποτέθηκε — μετρήθηκε
   σε 15 τύπους σελίδας ζωντανά: ο επιλογέας πιάνει ΑΚΡΙΒΩΣ 2 στοιχεία,
   και τα δύο στην αρχική. Η σελίδα μηχανήματος έχει και .band-grid και
   .grid.g-2 αλλά ΔΕΝ είναι φωλιασμένα (0 ταιριάσματα), και η επικοινωνία
   έχει .band-grid χωρίς κανένα g-2. Το :has(.card-prod) είναι η τρίτη
   δικλείδα: κελιά πίνακα δεν πιάνονται ποτέ.
   ══════════════════════════════════════════════════════════════════ */
.band-grid .grid.g-2:has(.card-prod){grid-template-columns:repeat(2,minmax(0,290px))}
.band-grid.flip .band-txt{order:2}
.brandmark{height:40px;width:auto;margin-bottom:1.3rem}
.pill-list{display:flex;flex-wrap:wrap;gap:8px;margin:1.35rem 0 0;padding:0;list-style:none}
.pill{font-family:var(--f-display);font-size:.75rem;font-weight:600;
  padding:6px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--ink-2)}

/* ── λόγοι / υποστήριξη ────────────────────────────────────── */
.reasons{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.reason{background:var(--panel);padding:clamp(21px,2.7vw,34px)}
.reason .n{font-family:var(--f-display);font-size:.7rem;font-weight:700;letter-spacing:.16em;
  color:var(--red-txt);display:block;margin-bottom:1rem}
.reason h3{margin-bottom:.55rem;font-size:1.08rem}
.reason p{margin:0;font-size:.88rem;color:var(--ink-3);line-height:1.62}

/* ── βραβεία ───────────────────────────────────────────────── */
.awards{display:flex;gap:clamp(14px,3vw,40px);align-items:flex-start;flex-wrap:wrap;justify-content:center}
.award{display:flex;flex-direction:column;align-items:center;gap:.65rem;max-width:156px;text-align:center}
.award img{height:76px;width:auto}
.award span{font-size:.705rem;color:var(--ink-3);line-height:1.42}

/* ── specs ─────────────────────────────────────────────────── */
/* Ο πίνακας κυλά ΜΕΣΑ στο δικό του κουτί. Το body έχει overflow-x:hidden,
   που θα ΕΚΡΥΒΕ την υπερχείλιση αντί να τη λύσει: το «755nm / 808nm / 1064nm»
   απλώς θα κοβόταν αθόρυβα σε στενή οθόνη. */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;min-width:0}
/* ΧΩΡΙΣ ΑΥΤΟ ΤΟ overflow-x:auto ΔΕΝ ΕΝΕΡΓΟΠΟΙΕΙΤΑΙ ΠΟΤΕ: τα παιδιά ενός grid
   έχουν εξ ορισμού min-width:auto, δηλαδή ΜΕΓΑΛΩΝΟΥΝ για να χωρέσουν το
   περιεχόμενό τους αντί να αφήσουν το παιδί τους να κυλήσει. Μετρήθηκε:
   πλέγμα 350px, παιδί 504px — και το body{overflow-x:hidden} έκρυβε τη
   διαφορά, οπότε καμία μέτρηση «πλάτους σελίδας» δεν το έδειχνε ποτέ. */
.band-grid>*,.hero-grid>*,.grid>*{min-width:0}
.specs{width:100%;min-width:min(430px,100%);border-collapse:collapse;font-size:.885rem}
.specs tr{border-bottom:1px solid var(--line)}
.specs tr:last-child{border-bottom:0}
.specs th{text-align:start;font-family:var(--f-display);font-weight:600;color:var(--ink-3);
  padding:11px 18px 11px 0;width:40%;min-width:170px;vertical-align:top;font-size:.83rem}
.specs td{padding:11px 0;color:var(--ink);vertical-align:top;font-variant-numeric:tabular-nums}
/* ΣΕ ΤΗΛΕΦΩΝΟ Η ΕΤΙΚΕΤΑ ΔΕΝ ΚΡΑΤΑΕΙ ΣΤΑΘΕΡΟ ΠΛΑΤΟΣ. Το th είναι 170px σε
   κάθε πλάτος· στα 360px αυτό είναι ΠΛΑΤΥΤΕΡΟ από τη στήλη τιμών, οπότε οι
   τιμές τυλίγονταν σε 150px και ο πίνακας διπλασίαζε ύψος (frf 641px αντί
   για 504). Σταθερή αναλογία δεν λύνει: στο CAM-Sterilizer οι ετικέτες είναι
   μακρύτερες από τις τιμές και κάθε ποσοστό το χειροτέρευε (+80px). Με
   width:auto η κάθε στήλη παίρνει όσο θέλει το ΔΙΚΟ της κείμενο. */
@media(max-width:464px){
  .specs th{width:auto;min-width:0}
}

/* ── λίστες με τικ ─────────────────────────────────────────── */
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.ticks li{position:relative;padding-inline-start:1.5rem;font-size:.9rem;color:var(--ink-2);line-height:1.6}
.ticks li::before{content:"";position:absolute;inset-inline-start:0;top:.62em;width:7px;height:7px;
  background:var(--red);border-radius:1px}

/* ── ΣΕΙΡΑ: κεφαλίδα, υπο-ομάδες, κάρτα (v0.10.0) ──────────────────
   Η σειρά είναι πλέον η ΠΥΛΗ προς τα προϊόντα (αίτημα πελάτη): η κεφαλίδα
   της κουβαλά ό,τι λέει ο ίδιος για τη σειρά — το κεφαλαίο μότο του και την
   περιγραφή — δίπλα στη φωτογραφία της σειράς. */
.series-head{padding-bottom:clamp(20px,2.6vw,34px)}
.series-grid-head{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,4vw,56px);align-items:center;
  margin-bottom:clamp(22px,3vw,36px)}
.series-grid-head.no-photo{grid-template-columns:1fr}
.series-grid-head h1{margin-bottom:.8rem}
/* ΤΟ ΜΟΤΟ ΕΙΝΑΙ ΓΡΑΜΜΕΝΟ ΜΕ ΚΕΦΑΛΑΙΑ ΣΤΑ ΑΡΧΕΙΑ ΤΟΥ ΠΕΛΑΤΗ και μένει έτσι —
   τα ελληνικά κεφαλαία δεν έχουν τόνους, άρα αυτόματη μετατροπή σε πεζά θα
   έβγαζε ανορθόγραφο κείμενο. Το τυπώνουμε ως αυτό που είναι: επιγραφή. */
.series-tag{font-family:var(--f-display);font-size:.8rem;font-weight:700;letter-spacing:.06em;
  line-height:1.55;color:var(--ink-2);margin:0 0 1.1rem;max-width:44em}
.series-desc{color:var(--ink-2)}
.series-desc p:last-child{margin-bottom:.6rem}
.series-photo .plate{aspect-ratio:1;border-radius:var(--r-lg);border:1px solid var(--line)}
@media(max-width:900px){
  .series-grid-head{grid-template-columns:1fr}
  /* Στο τηλέφωνο η φωτογραφία ΠΡΙΝ από το κείμενο δεν βοηθά — ο επισκέπτης
     ήρθε για τα προϊόντα· μικρότερη, μετά τον τίτλο. */
  .series-photo{max-width:420px}
}
.series-group{display:flex;align-items:center;gap:14px;font-size:.78rem;letter-spacing:.19em;
  color:var(--ink-3);margin:clamp(26px,3.4vw,44px) 0 clamp(14px,1.8vw,22px)}
.series-group::after{content:"";flex:1;height:1px;background:var(--line)}
/* v0.10.1: ήταν «:first-of-type{margin-top:0}» — αλλά η ετικέτα ομάδας δεν είναι
   ποτέ πρώτη (πριν από αυτήν υπάρχει το πλέγμα χωρίς ομάδα), οπότε κολλούσε
   0px κάτω από τις κάρτες. Μηδέν μόνο όταν είναι όντως το πρώτο παιδί. */
.series-items > .wrap > .series-group:first-child{margin-top:0}
.card-series .plate{aspect-ratio:4/3}
.card-series h3{font-size:clamp(1.05rem,1.4vw,1.22rem)}
/* Το μότο μέσα στην κάρτα: 4 γραμμές, όχι 3 — τα μότο του πελάτη είναι
   μακριά και το «ΣΕΙΡΑ ΠΕΡΙΠΟΙΗΣΗΣ ΠΡΟΣΩΠΟΥ ΣΧΕΔΙΑΣΜΕΝΗ ΓΙΑ…» κοβόταν πριν
   πει τι κάνει η σειρά. */
.card-series p{-webkit-line-clamp:4}

/* ── ΓΚΑΛΕΡΙ ΜΗΧΑΝΗΜΑΤΟΣ (v0.10.0) ─────────────────────────────
   Χωρίς JS όλες οι διαφάνειες φαίνονται η μία κάτω από την άλλη — η
   απόκρυψη ισχύει ΜΟΝΟ κάτω από το .js, ώστε καμία φωτογραφία να μη χάνεται. */
.mgal{display:grid;gap:12px;min-width:0}
.mgal-slide+.mgal-slide{margin-top:0}
.js .mgal[data-gal] .mgal-slide:not(.is-on){display:none}
.mgal-thumbs{display:flex;flex-wrap:wrap;gap:8px}
.js .mgal-thumbs{display:flex}
html:not(.js) .mgal-thumbs{display:none}
.mgal-th{width:64px;height:64px;padding:0;border-radius:10px;overflow:hidden;cursor:pointer;
  border:1px solid var(--line-2);background:var(--plate);transition:border-color .16s,box-shadow .16s}
.mgal-th img{width:100%;height:100%;object-fit:cover}
.mgal-th:hover{border-color:var(--ink-3)}
.mgal-th[aria-pressed="true"]{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}

/* ── ΖΩΝΗ ΕΜΠΕΙΡΙΑΣ (Τεχνική υποστήριξη) ──────────────────────
   Ο αριθμός σε κόκκινο κείμενο (--red-txt 5,91:1 σε λευκό), ΟΧΙ στο
   εταιρικό #ED1C24 (4,38:1) — εδώ είναι κείμενο, όχι επιφάνεια. Η ζώνη
   κάθεται σε --bg-2 με κόκκινη ακμή: η «διακριτική γκρι απόχρωση» που
   ζήτησε ο πελάτης, όχι ακόμη ένα λευκό κουτί. */
.xp{display:grid;grid-template-columns:auto 1fr;gap:clamp(18px,3vw,40px);align-items:center;
  margin:clamp(20px,2.6vw,30px) 0 clamp(26px,3.4vw,40px);padding:clamp(20px,2.6vw,32px);
  background:var(--bg-2);border:1px solid var(--line);border-inline-start:3px solid var(--red);
  border-radius:var(--r);max-width:52em}
.xp-n{margin:0;display:flex;flex-direction:column;align-items:flex-start;min-width:7.5em}
.xp-n b{font-family:var(--f-display);font-weight:800;font-size:clamp(3rem,6vw,4.6rem);
  line-height:.95;letter-spacing:-.04em;color:var(--red-txt);font-variant-numeric:tabular-nums}
/* Πεζά ελληνικά: ΧΩΡΙΣ αραίωση — το letter-spacing των eyebrow είναι για
   κεφαλαία· σε πεζά σκόρπιζε τη φράση σε γράμματα. */
.xp-n span{font-family:var(--f-display);font-size:.84rem;font-weight:600;letter-spacing:0;
  color:var(--ink-2);margin-top:.45rem;max-width:11.5em;line-height:1.35}
.xp-t h2{font-size:clamp(1.15rem,1.9vw,1.5rem);margin-bottom:.5rem}
/* Το `sup_text` είναι προαιρετικό (20/09). Όταν λείπει, ο τίτλος μένει μόνος
   μέσα στην κάρτα και το περιθώριό του γίνεται κενός αέρας κάτω από αυτόν —
   το `.xp{align-items:center}` δεν το κρύβει, το κεντράρει μαζί του. */
.xp-t h2:last-child{margin-bottom:0}
.xp-t p{margin:0;color:var(--ink-2);line-height:1.65}
@media(max-width:560px){.xp{grid-template-columns:1fr}.xp-n{min-width:0}}

/* ── CTA ───────────────────────────────────────────────────── */
.cta{background:var(--brand);border-radius:var(--r-lg);padding:clamp(28px,4.4vw,58px);
  display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(20px,3vw,42px);
  align-items:center;position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;inset:auto auto -55% -12%;width:min(520px,70%);aspect-ratio:1;
  background:radial-gradient(circle,rgba(237,28,36,.32),transparent 66%);filter:blur(26px)}
.cta>*{position:relative}
.cta h2{margin-bottom:.7rem}
.cta p{color:#DCDEE1;margin:0}
/* Η ΖΩΝΗ CTA ΜΕΝΕΙ ΑΝΘΡΑΚΙ ΣΤΟ ΦΩΤΕΙΝΟ ΘΕΜΑ (v0.10.0). Είναι το ένα σημείο
   κάθε σελίδας που πρέπει να τραβήξει το βλέμμα — «Ζητήστε επίδειξη» — και το
   #444141 είναι το χρώμα του ίδιου του εντύπου της εταιρείας, όχι μαύρο.
   Επειδή τα --ink/--ink-3 έγιναν σκούρα, κάθε κείμενο εδώ μέσα δηλώνεται
   ρητά. Μετρημένα πάνω στο #444141: λευκό 9,94 · #DCDEE1 7,32 · #C9CCD1 6,20.
   Το περίγραμμα των ghost κουμπιών ήταν inline style σε 3 πρότυπα — πέρασε
   εδώ, στο 50% ώστε το όριο του κουμπιού να φαίνεται (3,1:1). */
.cta,.cta h2{color:#FFFFFF}
.cta .eyebrow{color:#C9CCD1}
.cta .btn-ghost{color:#F2F3F5;border-color:rgba(255,255,255,.5)}
.cta .btn-ghost:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.75)}
.cta :focus-visible{outline-color:#FFFFFF;box-shadow:0 0 0 2px var(--brand)}
.cta-actions{display:flex;flex-direction:column;gap:11px}
.cta-actions .btn{justify-content:center}
/* v0.10.1 — email και υποστήριξη ως ΣΥΝΔΕΣΜΟΙ κάτω από τα κουμπιά, όχι τρίτο/τέταρτο χάπι. */
.cta-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1.2rem;margin:.35rem 0 0;font-size:.9rem}
.cta .cta-links a{color:#F2F3F5;text-decoration:underline;text-decoration-color:rgba(255,255,255,.45);text-underline-offset:3px}
.cta .cta-links a:hover{text-decoration-color:#FFFFFF}

/* Γραμμή κάτω από τα κουμπιά ήρωα: τηλέφωνο + φύλλο προδιαγραφών. */
.hero-alt{margin:.95rem 0 0;font-size:.93rem;color:var(--ink-2);display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .55rem}
.hero-alt a,.hero-alt .linkish{color:var(--ink);font-weight:600;text-decoration:underline;
  text-decoration-color:var(--line-3);text-underline-offset:3px}
.hero-alt a:hover,.hero-alt .linkish:hover{text-decoration-color:var(--red)}
.linkish{background:none;border:0;padding:0;font:inherit;cursor:pointer}
.hero-alt:has([data-print][hidden]) .hero-alt-sep{display:none}
.hero-alt-sep{color:var(--line-3)}
/* Στο κινητό το τηλέφωνο είναι ήδη στη μπάρα ενεργειών. */
@media(max-width:700px){
  .hero-alt-tel,.hero-alt-sep{display:none}
  .hero-alt.no-print{display:none}
}

/* ── άρθρο / περιεχόμενο συντάκτη ──────────────────────────── */
.prose{max-width:44.16em}
.prose p{color:var(--ink-2)}
.prose h2{margin:2.2rem 0 .9rem}
.prose h3{margin:1.7rem 0 .7rem}
/* ΚΕΝΗ ΠΑΡΑΓΡΑΦΟΣ ΑΠΟ ΤΟΝ ΣΥΝΤΑΚΤΗ = 17px ΝΕΚΡΟ ΚΕΝΟ.
   Στην «Τεχνική υποστήριξη» το περιεχόμενο περιέχει ένα σχόλιο-υπενθύμιση προς
   τον πελάτη («ΕΚΚΡΕΜΕΙ: όροι εγγύησης, χρόνοι απόκρισης…»), και η WordPress
   το τυλίγει σε <p>. Το σχόλιο ΔΕΝ διαγράφεται — είναι χρήσιμο, και είναι
   αόρατο στον επισκέπτη· απλώς δεν πρέπει να πιάνει ύψος.
   Ο επιλογέας :empty ΑΓΝΟΕΙ τα σχόλια, άρα πιάνει ακριβώς αυτή την περίπτωση —
   και κάθε άλλη κενή παράγραφο που αφήνει ο συντάκτης. ⚠ ΔΕΝ πιάνει παράγραφο
   με σκέτα κενά (είναι κόμβος κειμένου) ούτε με <img>· αυτά ΘΕΛΟΥΜΕ να μένουν.
   Μετρημένο: 1 κενή παράγραφος σε 4 σελίδες, κόστος 17px. */
.prose p:empty{display:none}
.prose ul,.prose ol{color:var(--ink-2);padding-inline-start:1.2rem}
.prose li{margin-bottom:.45rem}
.prose a{color:var(--ink);border-bottom:1px solid var(--red)}
.prose img{border-radius:var(--r);margin:1.6rem 0}

/* ── ΚΕΙΜΕΝΟ ΠΡΟΪΟΝΤΟΣ ΑΠΟ ΤΑ ΑΡΧΕΙΑ ΤΟΥ ΠΕΛΑΤΗ (v0.10.0) ─────────────
   Οι επικεφαλίδες του («ΔΡΑΣΗ», «ΕΝΕΡΓΑ ΣΥΣΤΑΤΙΚΑ») είναι γραμμένες με
   κεφαλαία. Στο μέγεθος h2 της σελίδας (2,6rem) φώναζαν δίπλα στον τίτλο του
   προϊόντος — εδώ γίνονται ΕΤΙΚΕΤΕΣ ενότητας, ίδιες με τα eyebrow του site.
   Στα μηχανήματα οι ενότητες είναι πολλές και μεγάλες (ABAS FIT: 8) — εκεί
   μένουν επικεφαλίδες, αλλά ένα σκαλί μικρότερες. */
.hp-prose h2{font-size:.78rem;font-weight:700;letter-spacing:.14em;color:var(--ink);
  margin:1.9rem 0 .75rem;display:flex;align-items:center;gap:.6em;line-height:1.4}
.hp-prose h2::before{content:"";width:6px;height:6px;background:var(--red);flex:none}
.hp-prose ul{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.5rem}
.hp-prose ul li{position:relative;padding-inline-start:1.25rem;margin:0;line-height:1.6}
.hp-prose ul li::before{content:"";position:absolute;inset-inline-start:0;top:.66em;width:6px;height:6px;
  background:var(--red);border-radius:1px}
.single-gld_machine .prose h2{font-size:clamp(1.2rem,1.9vw,1.55rem)}
/* Πίνακας μέσα στο κείμενο (πρωτόκολλο Dermaqual, ζεύγη «Ετικέτα: Τιμή»
   των μηχανημάτων): στοιχισμένος αριστερά, ετικέτα στη στήλη της. Ο
   προεπιλεγμένος <th> ήταν ΚΕΝΤΡΑΡΙΣΜΕΝΟΣ και το «ΠΟΣΟΤΗΤΑ/ ΣΥΝΕΔΡΙΑ»
   έβγαινε αριστερότερα από όλα τα άλλα. */
.specs-inline{width:100%;border-collapse:collapse;font-size:.9rem;margin:.2rem 0 .6rem}
.specs-inline th,.specs-inline td{text-align:start;vertical-align:top;padding:.55rem .9rem .55rem 0;
  border-bottom:1px solid var(--line)}
.specs-inline th{font-family:var(--f-display);font-size:.72rem;font-weight:700;letter-spacing:.1em;
  color:var(--ink-3);width:38%;padding-top:.7rem}
.specs-inline td{color:var(--ink-2)}
.specs-inline tr:last-child th,.specs-inline tr:last-child td{border-bottom:0}

/* ── ψίχουλα ───────────────────────────────────────────────── */
.crumb{font-size:.785rem;color:var(--ink-3);padding-top:26px}
.crumb a:hover{color:var(--ink)}
.crumb .sep{margin-inline:.5em;opacity:.5}

/* ── φόρμα ─────────────────────────────────────────────────── */
.form{display:grid;gap:13px;max-width:560px}
.field{display:grid;gap:6px}
.field label{font-family:var(--f-display);font-size:.735rem;font-weight:600;letter-spacing:.09em;color:var(--ink-3)}
.field input,.field select,.field textarea{
  background:var(--bg-2);border:1px solid var(--line-3);border-radius:9px;padding:11px 13px;
  color:var(--ink);font-family:var(--f-body);font-size:.92rem;width:100%}
.field textarea{min-height:120px;resize:vertical}
/* Το placeholder ήταν το ΠΡΟΕΠΙΛΕΓΜΕΝΟ γκρι του περιηγητή (#757575): 3,82:1
   πάνω στο --bg-2, δηλαδή η οδηγία «πώς να συμπληρώσω» ήταν πιο σβηστή από
   την ετικέτα της (5,54:1). Το --ink-3 δίνει 5,22:1 στο --bg-2 και 4,91:1
   στην ανοιχτότερη επιφάνεια όπου μπορεί να σταθεί πεδίο.
   Το opacity:1 δεν είναι διακοσμητικό: ο Firefox βάζει μόνος του .54. */
.field input::placeholder,.field textarea::placeholder,
.form input::placeholder,.form textarea::placeholder{color:var(--ink-3);opacity:1}
/* ΤΟ ΑΣΤΕΡΑΚΙ «ΥΠΟΧΡΕΩΤΙΚΟ». Το --red στα 11,76px μετρήθηκε 4,28:1 και,
   με την εξομάλυνση, ο πυρήνας του γλύφου έπεφτε στο 3,28:1. Το --red-hi
   υπάρχει ήδη στο :root ακριβώς γι' αυτό: κρατά το κόκκινο ως σήμα χωρίς να
   γίνει ουδέτερο κείμενο. */
.req{color:var(--red-hi);font-weight:700}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.searchform{max-width:none}
.searchrow{display:flex;gap:9px}
.searchrow input{flex:1;min-width:0}
.searchrow .btn{flex:none;white-space:nowrap}
/* v0.7.8 — ΣΤΟΙΒΑΖΕΤΑΙ ΣΤΑ 389, ΟΧΙ ΣΤΑ 520. Το κατώφλι ήταν 131px πλατύτερο
   απ' όσο χρειαζόταν και κόστιζε 55px ΠΑΝΩ από τα αποτελέσματα σε κάθε οθόνη
   390 και 430 — ακριβώς εκεί που η πρώτη κάρτα έχανε το τσάκισμα για 13,5px.
   Στα 390 το πεδίο σε μία γραμμή βγαίνει 213,6px με 186,0px εσωτερικό κείμενο
   και χωρά την υπόδειξη με 21px περίσσευμα· στα 360 δεν χωρά τίποτα, γι' αυτό
   εκεί συνεχίζει να στοιβάζεται. Σε μία γραμμή το πεδίο ψηλώνει 46,0→51,3px,
   δηλαδή πάνω από το δάπεδο αφής των 44px. */
@media(max-width:389px){
  .searchrow{flex-direction:column}
  .searchrow .btn{justify-content:center}
}

/* ── υποσέλιδο ─────────────────────────────────────────────── */
/* ΠΛΗΡΕΣ ΠΕΡΙΓΡΑΜΜΑ, ΟΧΙ ΜΟΝΟ ΠΑΝΩ — ΑΛΛΙΩΣ Η ΚΑΜΠΥΛΗ ΣΒΗΝΕΙ ΟΠΟΥ ΦΑΙΝΕΤΑΙ.
   Το γέμισμα #F5F6F8 πάνω σε λευκό είναι 1,081:1: πρακτικά αόρατο. Αυτό που
   ζωγραφίζει το σχήμα είναι η γραμμή (1,228:1). Με border-radius και μηδενικά
   πλάγια περιγράμματα, ο browser κλιμακώνει το πάχος της πάνω γραμμής από 1px
   σε 0 ΜΕΣΑ στο τόξο — δηλαδή η γραμμή σβήνει ακριβώς εκεί που υπάρχει η
   γωνία, και μένει μουτζούρα. Το κάτω μένει 0, άρα το ΥΨΟΣ δεν αλλάζει· το
   .wrap μέσα είναι max-width:1240px;margin:0 auto, άρα τα 2px είναι συμμετρικά
   και δεν μετατοπίζουν τίποτα.
   ΓΙΑΤΙ clamp ΚΑΙ ΟΧΙ ΣΤΑΘΕΡΟ: δύο τόξα των 20px πιάνουν 11,1% της ακμής στα
   360 (διαβάζεται ως κάρτα, όχι ως σελίδα) και 2,1% στα 1920 (πρακτικά ευθεία).
   ⚠ ΚΑΜΙΑ overflow:hidden εδώ: το .f-mark svg είναι overflow:visible.
   Από πάνω υπάρχουν ήδη 36px (κινητό) έως 68px (desktop) λευκού σε ΚΑΙ ΤΟΥΣ 7
   τύπους σελίδας, άρα η καμπύλη έχει φόντο να πατήσει χωρίς νέο margin. */
.footer{background-color:var(--bg-2);border:1px solid var(--line);border-bottom:0;
  border-radius:clamp(14px,2.2vw,32px) clamp(14px,2.2vw,32px) 0 0;
  padding-block:clamp(38px,5vw,64px) 24px;
  background-image:linear-gradient(180deg,rgba(255,255,255,.024),transparent 220px)}
.f-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:clamp(20px,3vw,42px)}
/* h2, όχι h4 (v0.10.3): σε ΚΑΘΕ σελίδα το υποσέλιδο πηδούσε από h2 σε h4 και
   έσπαγε τη σειρά επικεφαλίδων για τους αναγνώστες οθόνης. Η εμφάνιση ΔΕΝ
   αλλάζει — ίδιο μέγεθος, ίδιο χρώμα, ίδια αραίωση. */
.f-grid .f-h{font-family:var(--f-display);font-size:.72rem;font-weight:700;letter-spacing:.16em;
  line-height:1.12;color:var(--ink-3);margin:0 0 1rem}
.f-grid ul{list-style:none;margin:0;padding:0}
.f-grid a,.f-grid p,.f-grid li{font-size:.86rem;color:var(--ink-2);margin:0 0 .5rem;line-height:1.55}
/* Η υπογράμμιση γίνεται με text-decoration και ΟΧΙ με border-bottom: εδώ, σε
   αντίθεση με την κεφαλίδα, δεν υπάρχει δεσμευμένο διάφανο περίγραμμα, οπότε
   ένα border θα πρόσθετε 1px ύψος τη στιγμή ακριβώς του περάσματος. */
.f-grid a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.f-bot{margin-top:clamp(26px,4vw,44px);padding-top:20px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.775rem;color:var(--ink-3)}

/* ── υπογραφή κατασκευής ───────────────────────────────────── */
/* Πιο μικρή και πιο σβηστή από τη νομική γραμμή από πάνω: είναι υπογραφή,
   δεν διεκδικεί προσοχή από το ΑΦΜ ή την Πολιτική Απορρήτου. Το όνομα
   ζωντανεύει μόνο στο hover. */
/* Ο ΜΟΝΙΜΟΣ ΔΡΟΜΟΣ ΑΝΑΚΛΗΣΗΣ. Μοιάζει με τον σύνδεσμο δίπλα του, όχι με
   .btn: είναι τρίτο νομικό κείμενο στην ίδια γραμμή, όχι κάλεσμα δράσης.
   Στο κινητό αποκτά ζώνη αφής 44px — ΜΟΝΟ εκεί, ώστε η γραμμή του desktop
   να μη μεγαλώσει. */
/* ⚠ ΤΟ `display:inline-flex` ΕΦΑΓΕ ΤΑ ΚΕΝΑ ΓΥΡΩ ΑΠΟ ΤΗΝ ΤΕΛΕΙΑ.
   Το footer.php βάζει τα κενά ΜΕΣΑ στο κείμενο του διαχωριστή (« · ») —
   σωστή πρόθεση, γραμμένη ρητά σε σχόλιο. Μέσα όμως σε flex δοχείο κάθε παιδί
   γίνεται block, και το πρωτεύον κενό στην αρχή/τέλος ΚΟΒΕΤΑΙ.
   ΜΕΤΡΗΜΕΝΟ: πλάτος διαχωριστή 3,6px, κενό αριστερά 0, κενό δεξιά 0 —
   «Πολιτική Απορρήτου·Ρυθμίσεις απορρήτου» κολλητά. Το innerText δείχνει
   τρία ξεχωριστά αντικείμενα χωρίς κενά ανάμεσα.
   Ο αναγνώστης οθόνης ΔΕΝ επηρεάστηκε ποτέ (η τελεία είναι aria-hidden και
   εκατέρωθεν υπάρχουν δύο ξεχωριστά χειριστήρια), άρα η ζημιά ήταν ΜΟΝΟ
   οπτική — γι' αυτό δεν την έπιασε κανένας έλεγχος κειμένου.
   Το .34em είναι η ΙΔΙΑ τιμή που ήδη χρησιμοποιεί το .f-credit .sep. */
.f-legal{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.34em}
/* ΔΥΟ ΧΕΙΡΙΣΤΗΡΙΑ ΔΙΠΛΑ-ΔΙΠΛΑ ΠΡΕΠΕΙ ΝΑ ΜΟΙΑΖΟΥΝ — ΚΑΙ ΔΕΝ ΜΟΙΑΖΑΝ.
   Το σχόλιο από πάνω λέει «Μοιάζει με τον σύνδεσμο δίπλα του». Μετρήθηκε το
   αντίθετο: το κουμπί είχε ΜΟΝΙΜΗ υπογράμμιση 1px var(--line-2), ο σύνδεσμος
   border-bottom-width 0 και text-decoration none. Ίδια γραμμή, ίδια δουλειά
   (απόρρητο), το ένα φαινόταν πατήσιμο και το άλλο όχι.
   Γίνονται ταυτόσημα: ΚΑΝΕΝΑ στην ηρεμία, ΚΑΙ ΤΑ ΔΥΟ στο πέρασμα — το ίδιο
   μοτίβο δεσμευμένου διάφανου περιγράμματος με το .f-credit a, άρα μηδέν
   μετατόπιση διάταξης. */
.f-consent{border:0;background:none;padding:0;cursor:pointer;font:inherit;color:inherit}
.f-legal a,.f-consent{border-bottom:1px solid transparent;
  transition:color .18s ease,border-color .18s ease}
.f-legal a:hover,.f-consent:hover{color:var(--ink);border-bottom-color:var(--line-3)}
.f-legal .sep{color:var(--line-3)}
@media(max-width:900px){
  .f-legal a,.f-consent{display:inline-flex;align-items:center;min-height:44px}
}
.f-credit{margin:13px 0 0;text-align:right;font-size:.75rem;letter-spacing:.015em;
  color:var(--ink-3)}
.f-credit a{display:inline-block;color:var(--ink-2);text-decoration:none;padding:4px 0;
  border-bottom:1px solid transparent;transition:color .18s ease,border-color .18s ease}
.f-credit a:hover{color:var(--ink);border-bottom-color:var(--line-3)}
.f-credit .sep{color:var(--line-3);margin:0 .34em}
@media(max-width:700px){.f-credit{text-align:left;margin-top:16px}}

/* ── σημείωση draft (αφαιρείται πριν το go-live) ──────────── */
.draftnote{background:rgba(237,28,36,.07);border:1px solid rgba(237,28,36,.3);
  border-radius:11px;padding:14px 17px;font-size:.83rem;color:var(--ink-2);line-height:1.6}
.draftnote b{color:var(--ink)}
/* Η κολλητή κεφαλίδα είναι 75px: χωρίς αυτό η άγκυρα προσγειώνει το μήνυμα
   ακριβώς από κάτω της και κόβεται η πρώτη του γραμμή. */
#gld-status{scroll-margin-top:92px;scroll-margin-bottom:80px}
#gld-status:focus{outline:none}
/* v0.7.8 — ΙΔΙΟΣ ΛΟΓΟΣ, ΔΥΟ ΑΚΟΜΗ ΣΤΟΧΟΙ. Το #main και η μπάρα ενεργειών
   πήραν tabindex="-1" ώστε οι σύνδεσμοι παράκαμψης να μετακινούν ΟΝΤΩΣ την
   εστίαση· χωρίς αυτό το σβήσιμο, θα ζωγραφιζόταν δακτύλιος γύρω από όλο το
   κύριο περιεχόμενο. */
#main:focus,#gld-actions:focus{outline:none}

/* ── μόνο για αναγνώστες οθόνης ────────────────────────────── */
/* ΔΕΝ ΗΤΑΝ ΟΡΙΣΜΕΝΗ. Η κεφαλίδα έγραφε ήδη <span class="screen-reader-text">
   μέσα στον σύνδεσμο του λογότυπου, και ο πυρήνας τη χρησιμοποιεί σε φόρμες
   και σελιδοποίηση — χωρίς κανόνα, όλα αυτά τυπώνονταν ΟΡΑΤΑ στη σελίδα.
   ΟΧΙ display:none: αυτό τα κρύβει και από τους αναγνώστες οθόνης. */
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(1px,1px,1px,1px);clip-path:inset(50%);white-space:nowrap;
  margin:-1px;padding:0;border:0;
}

.screen-reader-text:focus{
  position:static!important;width:auto;height:auto;clip:auto;clip-path:none;margin:0;
}

/* ── εργαλεία κεφαλίδας: αναζήτηση + burger ────────────────── */
.nav-tools{display:flex;align-items:center;gap:8px;flex:none}
/* Τηλέφωνο και κουμπί αιτήματος υπάρχουν ΜΕΣΑ στο <ul> του μενού ώστε να
   εμφανιστούν όταν ανοίγει το burger. Σε υπολογιστή είναι διπλοεγγραφή —
   το ίδιο κουμπί κάθεται ήδη δεξιά ως .nav-cta — γι' αυτό κρύβονται. */
.nav-x{display:none}
.nav-search{display:grid;place-items:center;width:42px;height:42px;
  border:1px solid var(--line-3);border-radius:10px;color:var(--ink-2);cursor:pointer;
  transition:color .18s,border-color .18s,background .18s}
.nav-search:hover{color:var(--ink);border-color:var(--ink-3);background:var(--panel)}
.nav-search[aria-expanded="true"]{color:var(--ink);border-color:var(--ink);background:var(--panel)}

/* Το πλαίσιο ΚΡΕΜΕΤΑΙ από την κεφαλίδα. Χωρίς το position:absolute «κρεμόταν»
   μόνο στα λόγια: μετρήθηκε να σπρώχνει ΟΛΗ τη σελίδα 96px κάτω (τα ψίχουλα
   έπεφταν από y=75 σε y=171). Η .nav είναι sticky, άρα είναι ήδη το πλαίσιο
   αναφοράς — δεν χρειάζεται δεύτερος κανόνας. */
.searchpanel{position:absolute;top:100%;left:0;right:0;z-index:70;
  border-top:1px solid var(--line);background:var(--bg-2);
  box-shadow:0 24px 44px rgba(0,0,0,.45);
  padding-block:clamp(14px,2vw,22px)}
.searchpanel .form{max-width:640px;margin:0 auto}

/* ── μπάρα ενεργειών κινητού ───────────────────────────────── */
/* Κρυφή σε υπολογιστή. Εμφανίζεται κάτω από 700px, όπου η κεφαλίδα δεν
   χωράει ούτε το μενού ούτε το κουμπί επικοινωνίας. */
.actionbar{display:none}

/* ── σελιδοποίηση ──────────────────────────────────────────── */
.pager{margin-top:clamp(28px,4vw,44px)}
.pager ul{display:flex;flex-wrap:wrap;gap:7px;list-style:none;margin:0;padding:0;
  justify-content:center;align-items:center}
.pager .page-numbers{display:grid;place-items:center;min-width:42px;height:42px;
  padding-inline:13px;border:1px solid var(--line-3);border-radius:10px;
  font-family:var(--f-display);font-size:.84rem;font-weight:600;color:var(--ink-2);
  transition:color .18s,border-color .18s,background .18s}
.pager a.page-numbers:hover{color:var(--ink);border-color:var(--ink-3);background:var(--panel)}
.pager .page-numbers.current{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.pager .page-numbers.dots{border-color:transparent;min-width:22px;padding-inline:0}

/* ── κάρτες οίκων στον κατάλογο προϊόντων ──────────────────── */
.linegrid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(13px,1.6vw,22px)}
.linecard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(20px,2.6vw,30px);display:flex;flex-direction:column;gap:.5rem}
.linecard h2,.linecard h3{font-size:clamp(1.18rem,1.9vw,1.5rem)}
.linecard h2 a:hover,.linecard h3 a:hover{color:var(--ink)}

/* ── λωρίδα οίκων και σειρών ────────────────────────────────── */
/* Οι ίδιοι 22 σύνδεσμοι που πριν έπιαναν δύο κάρτες ύψους 454px (1.285px σε
   κινητό) και έσπρωχναν ΚΑΘΕ προϊόν κάτω από το τσάκισμα. Ο οίκος ξεχωρίζει
   με βάρος και περίγραμμα, όχι με χρώμα — το κόκκινο μένει για τις ενέργειες. */
/* Πυκνότερα από τα φίλτρα των μηχανημάτων: εκεί είναι 6 chip και είναι ΤΟ
   εργαλείο της σελίδας· εδώ είναι 22 και είναι πλοήγηση. Στα 1440 η λωρίδα
   πέφτει από 181px σε ~120px, δηλαδή μία σειρά λιγότερη πάνω από τα προϊόντα. */
.catstrip{margin-bottom:clamp(20px,2.6vw,32px);gap:7px}
.catstrip .chip{padding:6px 12px;font-size:.75rem}
.chip-brand{font-weight:800;border-color:var(--line-3);color:var(--ink)}
.chip-brand:hover{border-color:var(--ink);background:var(--panel-2)}

/* ΜΟΝΗ ΓΡΑΜΜΗ ΠΟΥ ΚΥΛΑ, ΣΕ ΣΤΕΝΗ ΟΘΟΝΗ. Αναδιπλωμένα, τα 22 chip πιάνουν
   814px στα 390px — δηλαδή σχεδόν ολόκληρη οθόνη πριν φανεί προϊόν. Σε μία
   γραμμή πέφτουν στα ~48px· ο χρήστης σύρει, όπως σε κάθε κατάλογο κινητού.
   Το flex:none είναι υποχρεωτικό: χωρίς αυτό τα chip συμπιέζονται αντί να
   βγουν έξω, και η κύλιση δεν ενεργοποιείται ΠΟΤΕ. */
/* v0.7.7 — ΚΑΙ Η ΜΠΑΡΑ ΦΙΛΤΡΩΝ ΤΩΝ ΜΗΧΑΝΗΜΑΤΩΝ, ΟΧΙ ΜΟΝΟ Η .catstrip.
   Η πυκνότητα μένει όπως αποφασίστηκε πιο πάνω (6 chip = ΤΟ εργαλείο της
   σελίδας, άρα μεγαλύτερα): αυτό που αλλάζει είναι ΜΟΝΟ η αναδίπλωση.
   ΜΕΤΡΗΜΕΝΟ στα 360×800: τα 6 chip έπιαναν 310px σε 6-7 σειρές — 39% της
   οθόνης — και έσπρωχναν την πρώτη κάρτα στο y=923, δηλαδή 180px ΚΑΤΩ από
   το ορατό. Σε μία γραμμή: 50px, πρώτη κάρτα 664. Στα 390: 827→599.
   Το scroll-padding-inline-start ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ: χωρίς αυτό το
   scroll-snap-align:start κουμπώνει την αρχή του πρώτου chip στην ακμή του
   scrollport και ΤΡΩΕΙ το padding-inline — η λωρίδα φόρτωνε με scrollLeft
   ίσο ακριβώς με το --pad (20px στα 360/390/430, 28px στα 700) και το πρώτο
   chip κολλούσε στο x=0 ενώ όλη η σελίδα είναι μέσα 20px. Και στις 29
   επιφάνειες με .catstrip. */
@media(max-width:700px){
  .catstrip,.filters[data-filters]{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;padding-bottom:6px;
    /* το περιθώριο της σελίδας γίνεται εσωτερικό, ώστε το τελευταίο chip να
       μη χάνεται κολλημένο στην άκρη */
    margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);
    scroll-padding-inline-start:var(--pad)}
  .catstrip .chip,.filters[data-filters] .chip{flex:none;scroll-snap-align:start}
}
.linecard p{margin:0 0 .5rem}
.linecard .filters{margin-top:auto}
.chip-n{display:inline-block;margin-inline-start:.5em;font-size:.72em;color:var(--ink-3);
  font-variant-numeric:tabular-nums}
.chip:hover .chip-n{color:var(--ink-2)}

/* ── συγκατάθεση cookies ───────────────────────────────────── */
/* Το z-index είναι ΠΑΝΩ από τη μπάρα ενεργειών (80): σε κινητό οι δύο
   κάθονται στον ίδιο πάτο, και το μπάνερ πρέπει να απαντηθεί πρώτο. */
.consent{position:fixed;inset:auto 0 0 0;z-index:90;background:var(--panel);
  border-top:1px solid var(--line-2);box-shadow:0 -14px 40px rgba(0,0,0,.35)}
.consent-in{max-width:var(--maxw);margin:0 auto;padding:16px var(--pad);
  display:flex;align-items:center;gap:clamp(14px,2.4vw,32px);flex-wrap:wrap}
.consent p{margin:0;flex:1 1 320px;font-size:.855rem;color:var(--ink-2);line-height:1.55}
.consent p a,
.form label a{color:var(--ink);border-bottom:1px solid var(--red)}
/* ΤΑ ΔΥΟ ΚΟΥΜΠΙΑ ΕΧΟΥΝ ΙΔΙΟ ΒΑΡΟΣ. Η άρνηση δεν κρύβεται πίσω από
   «Ρυθμίσεις» και δεν γίνεται μικρότερη — αλλιώς η συγκατάθεση δεν είναι
   ελεύθερη, και ένα μπάνερ που εκβιάζει το «ναι» είναι χειρότερο από
   κανένα μπάνερ. */
.consent-h{font-family:var(--f-display);font-size:.94rem;font-weight:700;color:var(--ink);
  margin:0 0 .3rem;letter-spacing:.005em}
.consent-txt{flex:1 1 320px}
/* ΠΛΕΓΜΑ, ΟΧΙ FLEX: δύο ΙΣΑ κουτιά. Με flex το πλάτος βγαίνει από το μήκος
   της λέξης — μετρήθηκε «Μόνο τα απαραίτητα» 178px και «Αποδοχή» 101px. Εδώ
   η άρνηση έτυχε να είναι η μεγαλύτερη, δηλαδή το σφάλμα έγερνε προς τη
   σωστή πλευρά· δεν αλλάζει ότι η απαίτηση («ίσο μέγεθος») μετριέται σε
   pixel και δεν πρέπει να εξαρτάται από το ποια λέξη είναι πιο μακριά. */
.consent-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;flex:none}
.consent-btns .btn{padding:11px 20px;font-size:.85rem;min-height:44px;justify-content:center}
/* Η ΑΡΝΗΣΗ ΓΕΜΙΖΕΙ ΚΙ ΑΥΤΗ. Το .btn-ghost είναι περίγραμμα σε διάφανο φόντο:
   δίπλα σε γεμάτο κόκκινο διαβάζεται ως δεύτερης κατηγορίας, ακόμη κι όταν
   έχει το ίδιο μέγεθος. Η Οδηγία 1/2020 της ΑΠΔΠΧ (Γ7) ζητά «ίσο μέγεθος,
   έμφαση και χρώμα». Ίδιο κουτί, ίδιο βάρος γραμματοσειράς, ίδιο ύψος —
   διαφορά μόνο στην απόχρωση, και η άρνηση ΔΕΝ είναι η πιο σβηστή. */
.consent-btns .btn-ghost,.cp-btns .btn-ghost{background:var(--panel-2);border-color:var(--line-3)}
.consent-btns .btn-ghost:hover,.cp-btns .btn-ghost:hover{background:var(--line);border-color:var(--ink-3)}
@media(max-width:560px){
  .consent-btns{width:100%}
  .consent-btns .btn{flex:1}
}

/* ── ΠΙΝΑΚΑΣ ΡΥΘΜΙΣΕΩΝ ────────────────────────────────────────
   Αυτός ΕΙΝΑΙ modal, σε αντίθεση με το μπάνερ: τον άνοιξε ο χρήστης
   επίτηδες και δεν υπάρχει τίποτα από πίσω που να αξίζει να διαβάσει.
   Το μπάνερ δεν παγιδεύει την εστίαση γιατί δεν επιτρέπεται να μπλοκάρει
   τη σελίδα — cookie wall απαγορεύεται ρητά. */
.consent-backdrop{position:fixed;inset:0;z-index:95;background:rgba(0,0,0,.55)}
.consent-panel{position:fixed;z-index:96;inset:auto 0 0 0;max-height:88vh;overflow:auto;
  background:var(--panel);border-top:1px solid var(--line-2);
  box-shadow:0 -18px 60px rgba(0,0,0,.5)}
@media(min-width:701px){
  .consent-panel{inset:50% auto auto 50%;transform:translate(-50%,-50%);
    width:min(620px,92vw);border:1px solid var(--line-2);border-radius:var(--r-lg);
    max-height:82vh;box-shadow:0 30px 90px rgba(0,0,0,.6)}
}
.cp-in{padding:clamp(20px,3vw,30px)}
.cp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.cp-head h2{font-family:var(--f-display);font-size:1.16rem;margin:0;color:var(--ink)}
.cp-x{width:44px;height:44px;margin:-11px -11px 0 0;flex:none;display:grid;place-items:center;
  border:0;background:none;color:var(--ink-3);cursor:pointer;border-radius:10px}
.cp-x:hover{color:var(--ink);background:var(--panel-2)}
.cp-intro{margin:.6rem 0 0;font-size:.85rem;color:var(--ink-2);line-height:1.6}
.cp-row{border-top:1px solid var(--line);margin-top:1.05rem;padding-top:1.05rem}
.cp-row-t{display:flex;align-items:center;justify-content:space-between;gap:14px}
.cp-row-t h3{font-family:var(--f-display);font-size:.93rem;margin:0;color:var(--ink)}
.cp-row p{margin:.42rem 0 0;font-size:.83rem;color:var(--ink-2);line-height:1.62}
.cp-always{font-size:.74rem;color:var(--ink-3);flex:none;
  border:1px solid var(--line-2);border-radius:999px;padding:5px 11px}
/* ⚠ ΣΤΕΝΟ ΠΕΔΙΟ, ΕΠΙΤΗΔΕΣ. Γενικός κανόνας min-height για στόχους αφής έχει
   ήδη μια φορά γίνει ΤΑΒΑΝΙ στο <textarea> της φόρμας (βλ. παρακάτω). */
.consent-sw{min-width:52px;min-height:44px;flex:none;position:relative;cursor:pointer;
  border:0;background:none;padding:0;display:grid;place-items:center}
.consent-sw::before{content:"";width:46px;height:26px;border-radius:999px;
  background:var(--line);border:1px solid var(--line-2);transition:background .18s,border-color .18s}
.consent-sw-k{position:absolute;left:5px;width:20px;height:20px;border-radius:50%;
  background:var(--ink-3);transition:transform .18s,background .18s}
.consent-sw[aria-checked="true"]::before{background:var(--red-btn);border-color:var(--red-btn)}
.consent-sw[aria-checked="true"] .consent-sw-k{transform:translateX(20px);background:#fff}
.consent-sw:focus-visible{outline:2px solid var(--red-hi);outline-offset:2px;border-radius:999px}
.cp-btns{display:flex;gap:10px;margin-top:1.5rem;flex-wrap:wrap}
.cp-btns .btn{flex:1 1 auto;padding:11px 16px;font-size:.85rem;min-height:44px;justify-content:center}
@media(max-width:560px){.cp-btns .btn{flex:1 1 100%}}
.cp-when{margin:1rem 0 0;font-size:.76rem;color:var(--ink-3)}
/* Κουμπί που μοιάζει με σύνδεσμο, όχι με .btn: ζει μέσα σε τρεχούμενο κείμενο. */
.linkish{border:0;background:none;padding:0;cursor:pointer;color:inherit;font:inherit;
  border-bottom:1px solid var(--line-3)}
.linkish:hover{color:var(--ink);border-bottom-color:var(--ink-3)}

/* ── responsive ────────────────────────────────────────────── */
/* ── Η ΚΕΦΑΛΙΔΑ ΓΥΡΙΖΕΙ ΣΕ BURGER ΣΤΑ 1060px, ΟΧΙ ΣΤΑ 900 ──────────
   Τα έξι στοιχεία του μενού (Μηχανήματα · Summe · Dermaqual · Προϊόντα ·
   Τεχνική υποστήριξη · Η εταιρεία) πιάνουν 650–682px. Μετρήθηκε: μαζί με
   λογότυπο, αναζήτηση και κουμπί χωρούν ως τα 1080px· στα 980px το κουμπί
   «Ζητήστε επίδειξη» βγήκε ΕΞΩ από την κεφαλίδα (δεξί άκρο 997 σε πλάτος
   980). Με το παλιό σημείο των 900px υπήρχε νεκρή ζώνη 900–1030px — δηλαδή
   ακριβώς τα tablet σε οριζόντια θέση. */
@media(max-width:1060px){
  .nav{position:relative}
  .burger{display:block}
  .nav-tools{margin-inline-start:auto}
  /* Στόχοι αφής: μετρήθηκαν 38px και 41×38. Στο κινητό είναι τα ΔΥΟ ΜΟΝΑ
     χειριστήρια της κεφαλίδας — πάνε στα 44. */
  .nav-search{width:44px;height:44px}
  .burger{width:44px;height:44px;display:grid;place-content:center}
  .nav .nav-links{display:none}
  .nav .nav-links.open{display:flex;position:absolute;top:100%;left:0;right:0;background:var(--bg-2);
    border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;
    padding:12px var(--pad) 18px;gap:0;z-index:70}
  /* 44px ελάχιστος στόχος αφής — 12px padding + 20px γραμμή δεν έφταναν. */
  .nav .nav-links.open a{padding:13px 0;min-height:44px;display:flex;align-items:center;
    border-bottom:1px solid var(--line)}
  /* Τηλέφωνο και κουμπί αιτήματος ΜΕΣΑ στο ανοιχτό μενού. */
  .nav .nav-links.open .nav-x{display:block}
  .nav .nav-links.open .nav-x:first-of-type{margin-top:10px}
  .nav .nav-links.open .nav-x a{font-size:.95rem;color:var(--ink)}
  .nav .nav-links.open .nav-x-cta{justify-content:center;background:var(--red-btn);color:#fff;
    border-radius:999px;border-bottom:0;margin-top:12px;font-weight:700}
}

@media(max-width:1080px){
  .g-4{grid-template-columns:repeat(3,1fr)}
  .f-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:900px){
  .hero-grid,.band-grid,.cta{grid-template-columns:1fr}
  .band-grid.flip .band-txt{order:0}
  /* Η ΛΩΡΙΔΑ ΟΝΟΜΑΤΩΝ ΦΕΥΓΕΙ ΣΤΟ ΚΙΝΗΤΟ. Σε μία στήλη περνά ακριβώς πίσω
     από την παράγραφο και τα κουμπιά — εκεί είναι θόρυβος, όχι βάθος.
     display:none σταματά και την animation, άρα δεν ξυπνά τον συνθέτη
     στη συσκευή με τη λιγότερη μπαταρία. */
  .hero-mq{display:none}

  /* ΤΟ ΣΗΜΑ ΑΞΙΟΠΙΣΤΙΑΣ ΑΝΕΒΑΙΝΕΙ ΠΑΝΩ ΑΠΟ ΤΗΝ ΠΤΥΧΗ.
     ΜΕΤΡΗΜΕΝΟ ΠΡΙΝ: σε 390×844 ο ήρωας είναι 850px — 81px κάτω από την
     πτυχή — και η φωτογραφία ξεκινούσε στο y=663 δείχνοντας 217px, δηλαδή
     μια λωρίδα μέτωπο-ως-μάτια που έκοβε η μπάρα ενεργειών. Μέσα σε αυτή
     τη λωρίδα, ως επικάλυψη, ζούσε το «ΑΠΟΚΛΕΙΣΤΙΚΟΣ ΑΝΤΙΠΡΟΣΩΠΟΣ ΕΛΛΑΔΟΣ
     · DERMAQUAL PARIS · SUMME COSMETICS» — το ισχυρότερο σήμα αξιοπιστίας
     της σελίδας, εντελώς αόρατο σε κινητό.
     Η φωτογραφία είναι ΔΙΑΚΟΣΜΗΣΗ· η λεζάντα είναι ΠΛΗΡΟΦΟΡΙΑ. Σε μία
     στήλη η λεζάντα βγαίνει από την επικάλυψη και μπαίνει ΠΑΝΩ από την
     εικόνα, οπότε πέφτει αμέσως μετά τα κουμπιά και μέσα στην πρώτη οθόνη.
     Σε δύο στήλες τίποτα δεν αλλάζει: εκεί η επικάλυψη δουλεύει και
     μετρήθηκε στο 6,74:1 χειρότερης περίπτωσης. */
  .hero-fig{aspect-ratio:auto;max-height:none;display:flex;flex-direction:column;gap:12px;
    border:0;background:none;overflow:visible;border-radius:0}
  .hero-fig::after{display:none}
  /* ΤΟ ΤΑΒΑΝΙ ΗΤΑΝ 300px ΚΑΙ ΑΚΥΡΩΝΕ ΤΟ ΙΔΙΟ ΤΟ 16/10 ΠΟΥ ΔΗΛΩΝΕΤΑΙ ΔΙΠΛΑ ΤΟΥ.
     Στα 768 η εικόνα είναι 707px φαρδιά, άρα το 16/10 ζητά 442px ύψος· το
     ταβάνι το έκοβε στα 300 και παρέδιδε 2,36:1 — 32% πιο πλακουτσό από το
     δηλωμένο. Το αποτέλεσμα δεν ήταν πορτρέτο αλλά λωρίδα ματιών, με το
     αριστερό τρίτο μαλλιά και αυτί. Η ζώνη αστοχίας είναι 601-900px.
     ΓΙΑΤΙ 380 ΚΑΙ ΟΧΙ 460 (=πλήρες 16/10): μετρημένο στα 768×1024,
       300 → 2,36:1, μετρητές y=870, ορατοί 126px
       380 → 1,86:1, μετρητές y=950, ορατοί  74px  ← οι ΑΡΙΘΜΟΙ ολόκληροι
       420 → 1,68:1, μετρητές y=990, ορατοί  34px
       460 → πλήρες 16/10, ΚΑΝΕΝΑΣ μετρητής πάνω από την πτυχή
     Στα 380 οι τέσσερις αριθμοί μένουν αναγνώσιμοι και οι λεζάντες τους
     κόβονται — δηλαδή το τσάκισμα ΔΕΙΧΝΕΙ ότι υπάρχει συνέχεια, αντί να
     κρύβει ή να ξοδεύει ολόκληρη τη ζώνη. Κάτω από 601px δεν αλλάζει τίποτα:
     εκεί το 16/10 χωράει ούτως ή άλλως και το ταβάνι δεν πιάνει. */
  .hero-fig img{order:2;height:auto;aspect-ratio:16/10;max-height:380px;
    object-position:52% 24%;border-radius:var(--r-lg);border:1px solid var(--line);
    background:var(--panel)}
  .hero-cap{order:1;position:static;left:auto;right:auto;bottom:auto;display:block}
  /* ΕΚΤΟΣ ΦΩΤΟΓΡΑΦΙΑΣ = ΣΚΟΥΡΟ ΚΕΙΜΕΝΟ (v0.10.1). Το #E4E6E9 είναι για την
     επικάλυψη πάνω στη φωτογραφία· εδώ η λεζάντα κάθεται στο λευκό της
     σελίδας και μετρήθηκε 1,25:1 — αόρατη. Η πρώτη γραμμή σε κόκκινο. */
  /* ⚠ ΤΟ display:block ΕΙΝΑΙ ΦΕΡΟΝ, ΔΕΝ ΕΙΝΑΙ ΚΑΛΛΩΠΙΣΜΟΣ. Το .t είναι <span>:
     όταν το .hero-cap γίνεται block (γραμμή από πάνω), το span ΞΑΝΑΓΙΝΕΤΑΙ
     inline και (α) αγνοεί το font-size/line-height αυτού του κανόνα — το ύψος
     το έδινε ο ΓΟΝΕΑΣ (16 × 1,62 × 2 γραμμές = 51,8px μετρημένα σε 360, 390
     ΚΑΙ 768, ίδιος αριθμός σε τρία πλάτη) — και (β) ακυρώνει το ::first-line
     της επόμενης γραμμής, γιατί το ψευδοστοιχείο απαιτεί block δοχείο. Δηλαδή
     ο κανόνας της κόκκινης πρώτης γραμμής ΔΕΝ ΕΤΡΕΧΕ ΠΟΤΕ. */
  .hero-cap .t{display:block;max-width:none;font-size:.72rem;line-height:1.55;color:var(--ink-2)}
  .hero-cap .t::first-line{color:var(--red-txt)}
  /* ⚠⚠ ΤΟ display:block ΞΥΠΝΗΣΕ ΚΑΙ ΤΡΙΤΗ ΑΔΡΑΝΗ ΔΗΛΩΣΗ, ΚΑΙ ΑΥΤΗ ΒΛΑΠΤΕΙ.
     Η γραμμή 2030 (`.hero-cap .t{font-size:.78rem;max-width:78%}`) είναι
     ΚΑΘΟΛΙΚΗ, ΙΔΙΑΣ ειδικότητας και ΠΙΟ ΚΑΤΩ στο αρχείο — άρα κερδίζει και
     ακυρώνει το max-width:none από πάνω. Όσο το .t ήταν inline δεν φαινόταν:
     το max-width ΔΕΝ εφαρμόζεται σε μη-αντικαθιστώμενο inline στοιχείο. Μόλις
     έγινε block, το 78% άρχισε να ισχύει και η λεζάντα στριμώχτηκε σε 249,6px
     μέσα σε στήλη 320 — από 2 οπτικές γραμμές σε 4, δηλαδή +19px ΚΑΤΩ από την
     πτυχή, ακριβώς εκεί που το μπλοκ παρακάτω παλεύει να κερδίσει pixel.
     Το 78% υπάρχει για την ΕΠΙΚΑΛΥΨΗ πάνω στη φωτογραφία (γρ. 426), όπου το
     κείμενο δεν πρέπει να τρέχει ως την άκρη. Εδώ η λεζάντα είναι ΕΚΤΟΣ
     φωτογραφίας — δεν έχει τίποτα να αποφύγει.
     Τρεις ταξιάρχες ειδικότητας, όχι !important: το .hero-fig είναι ο
     πραγματικός γονέας και το κάνει ρητό. */
  .hero-fig .hero-cap .t{max-width:none}
}

/* ΣΤΕΝΟ ΜΕΤΡΟ ΘΕΛΕΙ ΠΥΚΝΟΤΕΡΟ ΔΙΑΣΤΙΧΟ. Το .lead κρατά σταθερό 1,72 ενώ το
   μέτρο πέφτει από 73 χαρακτήρες ανά γραμμή (1920) σε 31 (360) — δηλαδή στο
   κινητό το μάτι κάνει 2,4 φορές πιο σύντομο ταξίδι με την ΙΔΙΑ απόσταση
   επιστροφής, και η παράγραφος ξεχειλώνει. Στα 360 κερδίζονται 13,6px. */
/* ΤΟ ΜΕΤΡΟ ΤΗΣ ΕΙΣΑΓΩΓΗΣ ΕΠΑΙΖΕ ΑΠΟ 55 ΣΕ 73 ΧΑΡΑΚΤΗΡΕΣ ΑΝΑ ΓΡΑΜΜΗ.
   Το καθολικό .lead έχει max-width:40.38em, που στα 768 και στα 1920 δεν
   προλαβαίνει να πιάσει: εκεί το όριο το έβαζε η ΣΤΗΛΗ (653px και 762px),
   και η εισαγωγή άνοιγε στους 73 χαρακτήρες — πάνω από το άνετο 45-75 και,
   κυρίως, ΑΛΛΟ μέτρο από τα 55 που έχει στα 1280 και 1440. Με 34em το μέτρο
   κλειδώνει στους 55 χαρακτήρες σε ΟΛΑ τα πλάτη. Στο κινητό δεν αλλάζει
   τίποτα: εκεί η στήλη είναι 350px και το όριο δεν φτάνει ποτέ. */
.hero .lead{max-width:34em}

@media(max-width:700px){ .hero .lead{line-height:1.6} }

/* ΜΙΚΡΑ ΤΗΛΕΦΩΝΑ — ΤΟ ΠΕΡΙΘΩΡΙΟ ΤΕΛΕΙΩΝΕΙ ΕΔΩ. Στα 360×780 η λεζάντα
   έπεφτε 45px κάτω από την πτυχή ακόμη και μετά τη μετακίνησή της. Τα
   νούμερα που μαζεύονται χωρίς να χαλάσει τίποτα: το κενό πριν τα κουμπιά,
   το κενό μέσα στη φιγούρα και το διάστιχο της λεζάντας. */
@media(max-width:430px){
  .hero{padding-block:30px clamp(30px,5vw,44px)}
  .hero .eyebrow{margin-bottom:.5rem}
  .hero h1{margin-bottom:1.1rem}
  .hero-actions{margin-top:1.45rem}
  .hero-fig{gap:8px}
  .hero-cap .t{line-height:1.42;letter-spacing:.12em}
  .reasons{grid-template-columns:1fr}
  /* Δύο στήλες: η γραμμή αλλάζει άξονα στα στοιχεία 3-4 και σβήνει στο 3ο. */
  .stats-in{grid-template-columns:1fr 1fr}
  .stats-in .stat:nth-child(n+3){border-top:1px solid var(--line)}
  .stats-in .stat:nth-child(odd){border-inline-start:0;padding-inline-start:0}
  .stats-in .stat:nth-child(even){padding-inline-end:0}
  .linegrid{grid-template-columns:1fr}
}
@media(max-width:700px){
  /* ΣΤΟΧΟΙ ΑΦΗΣ 44px. Μετρήθηκαν 42px στα πεδία φόρμας και στους αριθμούς
     σελιδοποίησης — δύο pixel κάτω από το όριο, δηλαδή αστοχία πατήματος
     ακριβώς εκεί που ο επισκέπτης γράφει τα στοιχεία του. */
  /* ΟΧΙ στα checkbox: εκεί ο στόχος αφής είναι ΟΛΟΚΛΗΡΗ η ετικέτα (το input
     ζει μέσα της), και ένα κουτάκι 46px ύψους φαίνεται τεντωμένο. */
  .form input:not([type=checkbox]),.form select,.form textarea{min-height:46px}
  /* ΙΔΙΟΣ ΕΠΙΛΟΓΕΑΣ, ΟΧΙ ΑΣΘΕΝΕΣΤΕΡΟΣ. Το «.pager a,.pager span» έχει
     ειδικότητα 0,1,1 και έχανε από το «.pager .page-numbers» (0,2,0) της
     γραμμής 525: το min-height περνούσε, το min-width όχι — τα κουμπιά
     έμεναν 42px πλατιά ενώ όλο το υπόλοιπο κινητό είχε πάει στα 46. */
  .pager .page-numbers{min-height:46px;min-width:46px;display:inline-flex;
    align-items:center;justify-content:center}
  .pager ul{gap:10px}
  /* Το ΜΟΝΟ σημείο που δεν πήρε στόχο αφής: 16px ύψος με 13px κενό, δηλαδή
     βήμα 29px κέντρο-προς-κέντρο, εκεί που όλα τα άλλα είναι 44–56. */
  /* ΨΙΧΟΥΛΑ ΣΕ ΜΙΑ ΓΡΑΜΜΗ ΠΟΥ ΚΥΛΑΕΙ. Οι σύνδεσμοι ήταν ενσωματωμένο κείμενο
     15px ύψος — το ένα τρίτο του δαπέδου αφής του ίδιου του θέματος — και
     είναι ο ΜΟΝΟΣ δρόμος πίσω στην κατηγορία πάνω από το τσάκισμα.
     Το προφανές (min-height όπως είναι) τα τυλίγει σε τρεις γραμμές: το
     ψίχουλο 67px→122px και ο τίτλος 55px πιο κάτω. Σε ΜΙΑ γραμμή που κυλάει
     οριζόντια, και οι τρεις ζώνες γίνονται 44px ΚΑΙ το ψίχουλο πέφτει
     67px→58px, δηλαδή ο τίτλος ΑΝΕΒΑΙΝΕΙ. Ό,τι βγαίνει εκτός είναι η
     τρέχουσα σελίδα, που την ξαναλέει το h1 από κάτω. */
  .crumb{padding-top:14px;display:flex;align-items:center;flex-wrap:nowrap;
    overflow-x:auto;white-space:nowrap;scrollbar-width:none}
  .crumb::-webkit-scrollbar{display:none}
  .crumb a,.crumb>span{display:inline-flex;align-items:center;min-height:44px;flex:none}
  /* ΑΝΑΔΡΑΣΗ ΠΑΤΗΜΑΤΟΣ. Σε αφή δεν υπάρχει hover: χωρίς αυτό, το πάτημα
     δεν επιβεβαιώνεται με τίποτα και ο χρήστης πατά δεύτερη φορά. */
  .btn:active,.chip:active,.card:active,.actionbar a:active{transform:scale(.985)}
  .g-2,.g-3,.g-4{grid-template-columns:repeat(2,1fr)}
  .row2{grid-template-columns:1fr}
  .f-grid{grid-template-columns:1fr}
  .card .plate{aspect-ratio:1}
  /* Στόχοι αφής 44px: τα chip φίλτρων ήταν 34px ύψος. */
  .chip{padding:11px 16px;min-height:44px;display:inline-flex;align-items:center}

  /* ΜΠΑΡΑ ΕΝΕΡΓΕΙΩΝ. Δύο ενέργειες, σταθερές στον πάτο.
     Το padding-bottom στο body ΔΕΝ είναι διακοσμητικό: χωρίς αυτό η μπάρα
     σκεπάζει τις τελευταίες γραμμές του υποσέλιδου — δηλαδή ακριβώς τη
     διεύθυνση και το ΑΦΜ. Το env(safe-area-inset-bottom) κρατά την μπάρα
     πάνω από τη γραμμή χειρονομιών του iPhone. */
  body{padding-bottom:calc(62px + env(safe-area-inset-bottom,0px))}
  .actionbar{display:grid;grid-template-columns:1fr 1fr;gap:1px;
    position:fixed;inset:auto 0 0 0;z-index:80;background:var(--line);
    border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom,0px)}
  .actionbar a{display:flex;align-items:center;justify-content:center;gap:.5em;
    min-height:56px;font-family:var(--f-display);font-size:.86rem;font-weight:700;
    background:var(--bg-2);color:var(--ink)}
  .actionbar .ab-cta{background:var(--red-btn);color:#fff}
  /* Το τηλέφωνο ζει ήδη στη μπάρα ενεργειών κάτω — δεύτερο ίδιο κουμπί στην
     κεφαλή της σελίδας μηχανήματος έκανε τη στοίβα τεσσάρων (v0.10.0). */
  .hero-actions .btn[href^="tel:"]{display:none}
  .actionbar .ab-tel svg{flex:none}
  /* Το μπάνερ δεν σκεπάζει τη μπάρα: κάθεται ακριβώς από πάνω της. */
  .consent{bottom:calc(57px + env(safe-area-inset-bottom,0px))}
  /* ΚΑΙ Η ΣΕΛΙΔΑ ΚΑΝΕΙ ΤΟΠΟ ΚΑΙ ΓΙ' ΑΥΤΟ. Το padding-bottom από πάνω κρατά
     62px για τη ΜΠΑΡΑ. Το μπάνερ ανοιχτό σε οθόνη 390px είναι άλλα ~205px:
     χωρίς αυτό εδώ, ο πάτος κάθε σελίδας μένει σκεπασμένος — δηλαδή ξανά η
     διεύθυνση και το ΑΦΜ, η ίδια ακριβώς αστοχία ένα επίπεδο πιο πάνω.
     Το ύψος το μετράει η JavaScript: αλλάζει με το κείμενο, με τη
     γραμματοσειρά του συστήματος και με το αν στοιβάζονται τα κουμπιά.
     Το scroll-padding-bottom δεν είναι διακοσμητικό: χωρίς αυτό ο χρήστης
     πατάει «επόμενο» στο πληκτρολόγιο και πληκτρολογεί σε πεδίο που δεν
     βλέπει — στη σελίδα που ΕΙΝΑΙ η μοναδική μετατροπή του site. */
  html.has-consent body{padding-bottom:calc(62px + var(--consent-h,0px) + env(safe-area-inset-bottom,0px))}
  html.has-consent{scroll-padding-bottom:calc(70px + var(--consent-h,0px) + env(safe-area-inset-bottom,0px))}
}

/* ── ΠΟΛΥ ΚΟΝΤΟ ΚΑΙ ΠΟΛΥ ΣΤΕΝΟ ΠΑΡΑΘΥΡΟ ────────────────────────
   Στο 400% μεγέθυνση (1280px → 320×200 CSS px) η πρώτη οθόνη ήταν 75px
   κεφαλίδα + 68px ψίχουλα + 57px σταθερή μπάρα = 200px ακριβώς: ΜΗΔΕΝ pixel
   περιεχομένου. Η μπάρα γίνεται κανονικό στοιχείο στο τέλος της σελίδας —
   τα δύο κουμπιά ΔΕΝ χάνονται, απλώς παύουν να τρώνε το 28% του ύψους.

   ΤΟ ΠΛΑΤΟΣ ΕΙΝΑΙ ΥΠΟΧΡΕΩΤΙΚΟ ΣΤΗ ΣΥΝΘΗΚΗ. Σκέτο (max-height:420px) πιάνει
   ΚΑΘΕ τηλέφωνο σε οριζόντια θέση (667×375, 800×390) — εκεί η μπάρα χτίστηκε
   επίτηδες, γιατί το B2B κοινό τηλεφωνεί. Στα ≤500px πλάτος βρίσκεται μόνο
   μεγεθυμένο παράθυρο, όχι συσκευή. */
@media(max-width:500px) and (max-height:420px){
  .actionbar{position:static}
  body{padding-bottom:0}
  /* Ο ΙΔΙΟΣ ΛΟΓΟΣ ΜΕ ΤΗ ΜΠΑΡΑ, ΕΝΑ ΣΚΑΛΙ ΧΕΙΡΟΤΕΡΟΣ. Σε παράθυρο 200px
     ύψους ένα σταθερό μπάνερ ~205px αφήνει μηδέν pixel περιεχομένου. Γίνεται
     κανονικό στοιχείο στο τέλος της ροής: τα δύο κουμπιά ΔΕΝ χάνονται, απλώς
     παύουν να τρώνε ολόκληρη την οθόνη. Και τότε η JavaScript ΔΕΝ μεταφέρει
     την εστίαση εκεί — θα σήμαινε «πήγαινε στο τέλος» με τη φόρτωση. */
  .consent{position:static;box-shadow:none}
  html.has-consent body{padding-bottom:0}
  .consent-panel{max-height:100vh}
}

/* ── ΤΟ ΤΗΛΕΦΩΝΟ ΓΥΡΙΣΜΕΝΟ ──────────────────────────────────────
   Ίδια συσκευή, άλλη κατεύθυνση: 800×390. Το πλάτος ξεπερνά το 700 και
   έπεφταν ΟΛΟΙ οι κανόνες αφής — τα chip ξανάγιναν 38px και τα πεδία 42px,
   ακριβώς τα «δύο pixel κάτω από το όριο» που το σχόλιο από πάνω περιγράφει
   ως αστοχία. Εδώ το σωστό σήμα είναι το ΥΨΟΣ, όχι το πλάτος.
   Η μπάρα ενεργειών ΔΕΝ έρχεται μαζί: σε οθόνη 390px ύψους θα έτρωγε το 15%.
   Το (min-width:701px) κρατά τον κανόνα έξω από ό,τι πιάνει ήδη το από πάνω
   μπλοκ, ώστε να μη διπλασιάζεται η ίδια δήλωση στον ίδιο κόμβο.
   Και δεύτερη συνθήκη, (hover:none): tablet σε ΚΑΘΕΤΗ θέση είναι 768×1024 —
   πλάτος πάνω από 700, ύψος πάνω από 500, δηλαδή δεν το έπιανε κανένας από
   τους δύο κανόνες, και τα chip έμεναν 38px σε συσκευή αφής. */
@media(min-width:701px) and (max-height:500px),
       (min-width:701px) and (hover:none){
  .form input:not([type=checkbox]),.form select,.form textarea{min-height:46px}
  .pager .page-numbers{min-height:46px;min-width:46px;display:inline-flex;
    align-items:center;justify-content:center}
  .pager ul{gap:10px}
  .chip{padding:11px 16px;min-height:44px;display:inline-flex;align-items:center}
  /* ΨΙΧΟΥΛΑ ΣΕ ΜΙΑ ΓΡΑΜΜΗ ΠΟΥ ΚΥΛΑΕΙ. Οι σύνδεσμοι ήταν ενσωματωμένο κείμενο
     15px ύψος — το ένα τρίτο του δαπέδου αφής του ίδιου του θέματος — και
     είναι ο ΜΟΝΟΣ δρόμος πίσω στην κατηγορία πάνω από το τσάκισμα.
     Το προφανές (min-height όπως είναι) τα τυλίγει σε τρεις γραμμές: το
     ψίχουλο 67px→122px και ο τίτλος 55px πιο κάτω. Σε ΜΙΑ γραμμή που κυλάει
     οριζόντια, και οι τρεις ζώνες γίνονται 44px ΚΑΙ το ψίχουλο πέφτει
     67px→58px, δηλαδή ο τίτλος ΑΝΕΒΑΙΝΕΙ. Ό,τι βγαίνει εκτός είναι η
     τρέχουσα σελίδα, που την ξαναλέει το h1 από κάτω. */
  .crumb{padding-top:14px;display:flex;align-items:center;flex-wrap:nowrap;
    overflow-x:auto;white-space:nowrap;scrollbar-width:none}
  .crumb::-webkit-scrollbar{display:none}
  .crumb a,.crumb>span{display:inline-flex;align-items:center;min-height:44px;flex:none}
  .btn:active,.chip:active,.card:active{transform:scale(.985)}
}

/* ── ΣΤΟΧΟΙ ΑΦΗΣ ΥΠΟΣΕΛΙΔΟΥ — ΓΡΑΜΜΕΝΟΙ ΜΙΑ ΦΟΡΑ ────────────────
   Ίσχυαν σε ΔΥΟ media blocks με πανομοιότυπο κείμενο (κινητό σε ύψος, και
   τηλέφωνο σε πλάγια θέση / συσκευή χωρίς δείκτη). Η διπλοεγγραφή δεν ήταν
   θεωρητικό πρόβλημα: τη στιγμή που πρόσθεσα τον κανόνα για τα <p>, ο
   φύλακας των μεταλλάξεων σταμάτησε με «2 ταιριάσματα» — δηλαδή καμία
   μετάλλαξη δεν μπορούσε να στοχεύσει τον κανόνα χωρίς να αφήσει το δίδυμό
   του ζωντανό. Ένας κανόνας γραμμένος δύο φορές είναι ένας κανόνας που θα
   διορθωθεί μία.

   ⚠ ΤΟ ΤΗΛΕΦΩΝΟ ΚΑΙ ΤΟ EMAIL ΖΟΥΝ ΣΕ <p>, ΟΧΙ ΣΕ <li>. Η προηγούμενη εκδοχή
   έγραφε μόνο `.f-grid li a` ενώ το σχόλιό της έλεγε «το ΜΟΝΟ σημείο που δεν
   πήρε στόχο αφής». Μετρημένο στα 390: επτά σύνδεσμοι 44px, και «2421 102 217»
   83×16 με «info@gld-systems.gr» 136×16 — τα δύο πράγματα που ΟΝΤΩΣ πατάει
   κάποιος από τηλέφωνο ήταν τα δύο μοναδικά που έμειναν στα 16px. */
@media(max-width:700px),
       (min-width:701px) and (max-height:500px),
       (min-width:701px) and (hover:none){
  .f-grid li{margin-bottom:0}
  .f-grid li a,.f-grid p a{display:inline-flex;align-items:center;min-height:44px}
  .f-grid li a{margin-bottom:0}
  .f-grid p:has(a){margin-bottom:0}
}
@media(max-width:560px){
  /* ΔΥΟ ΣΤΗΛΕΣ ΣΕ ΤΗΛΕΦΩΝΟ ΔΕΝ ΕΙΝΑΙ ΔΙΑΤΑΞΗ. Στα 390px οι δύο στήλες βγαίνουν
     161px η καθεμία: 12,3 χαρακτήρες ανά γραμμή, και ο πίνακας συστατικών
     έχανε ΟΛΟΚΛΗΡΗ τη στήλη τιμών σε 66 από τις 146 σελίδες προϊόντος. */
  .grid.g-2{grid-template-columns:1fr}
  /* ⚠⚠ v0.8.2 — Η ΤΕΤΑΡΤΗ ΦΟΡΑ, ΟΠΩΣ ΤΗΝ ΠΡΟΕΒΛΕΨΕ ΤΟ ΣΧΟΛΙΟ ΠΙΟ ΚΑΤΩ.
     Ο κανόνας από πάνω γράφτηκε για ΠΙΝΑΚΑ (τα κελιά συστατικών/προδιαγραφών
     της σελίδας προϊόντος και μηχανήματος). Το .grid.g-2 όμως ζει σε ΤΡΙΑ
     πρότυπα, και στο τρίτο — την ΑΡΧΙΚΗ — δεν κρατά κελιά πίνακα αλλά τις
     κάρτες προϊόντων των δύο οίκων. Μετρημένο στα 390px:
       ΙΔΙΑ κάρτα προϊόντος:  169px στο /proionta/  ·  350px στην αρχική
       8 κάρτες οίκων:        3.904px σε σελίδα 14.757px (26%)
     Στα 560px το αποτέλεσμα αυτοαναιρείται: το ΜΠΟΥΚΑΛΑΚΙ βγαίνει 515px ενώ
     το ΜΗΧΑΝΗΜΑ δίπλα του 251px — στην ίδια σελίδα, στο ίδιο πλάτος, το μικρό
     αντικείμενο διπλάσιο από το μεγάλο. Και ένα pixel παραπάνω (561) ρίχνει
     την ενότητα από 2.613px σε 804px.
     Ο κανόνας 25 γραμμές πιο κάτω λέει ήδη ρητά ότι τα προϊόντα είναι
     «αναγνωρίσιμα στα 168px» και ότι «δύο στήλες το μισιάζουν χωρίς καμία
     απώλεια» — άρα η αρχική παραβίαζε μετρημένη απόφαση του ίδιου αρχείου.
     ΘΕΤΙΚΟΣ ΕΠΙΛΟΓΕΑΣ ΠΑΝΩ ΣΤΟ ΠΕΡΙΕΧΟΜΕΝΟ, ίδιο ιδίωμα με το
     «.grid.g-4:has(.card-prod)» της ζώνης 561-700: η κάρτα δηλώνει τι είναι,
     δεν το συμπεραίνουμε από το πρότυπο που την τύπωσε.
     Ο κανόνας ζει έξω από αυτό το @media — βλ. «.band-grid .grid.g-2». */
}
@media(max-width:460px){
  /* Τα ΜΗΧΑΝΗΜΑΤΑ (.g-3) πάνε ένα στη σειρά: είναι μεγάλες συσκευές και η
     πλακέτα θέλει πλάτος για να διαβαστεί το σχήμα τους.
     ΤΑ ΠΡΟΪΟΝΤΑ (.g-4) ΟΧΙ. Είναι μπουκάλια και σωληνάρια, αναγνωρίσιμα στα
     168px — και σε μία στήλη ο κατάλογος των 24 μετρήθηκε 12.395px πλέγμα
     πάνω σε 15.833px σελίδα. Δύο στήλες το μισιάζουν χωρίς καμία απώλεια. */
  .g-3{grid-template-columns:1fr}
  /* v0.8.2 — ΕΔΩ ΗΤΑΝ ΤΟ «.home .grid.g-4{grid-template-columns:1fr}».
     Το v0.7.7 το πρόσθεσε επειδή η αρχική ζωγράφιζε ΜΗΧΑΝΗΜΑΤΑ με .g-4 και ο
     κανόνας .g-3 δύο γραμμές πιο πάνω δεν την έπιανε ποτέ. Μπάλωνε το
     ΣΥΜΠΤΩΜΑ στα ≤460 και άφηνε το ίδιο λάθος ζωντανό σε ΚΑΘΕ άλλο πλάτος:
     η κάρτα έμενε 26-42% στενότερη απ' ό,τι στον κατάλογο ώς τα 2560.
     Η ΑΙΤΙΑ ήταν η κλάση, και διορθώθηκε στην πηγή της (front-page.php
     δηλώνει πλέον .g-3). Ο κανόνας από πάνω την πιάνει τώρα κανονικά, οπότε
     το μπάλωμα δεν έχει τι να μπαλώσει — και ένας κανόνας που δεν ταιριάζει
     πουθενά, με σχόλιο που περιγράφει κατάσταση που δεν υπάρχει πια, είναι
     ακριβώς ο τρόπος που γεννήθηκαν οι τρεις προηγούμενες αστοχίες. */
  /* ΙΔΙΟ ΛΑΘΟΣ, ΤΡΙΤΗ ΕΠΙΦΑΝΕΙΑ. Και η σελίδα μηχανήματος δείχνει ΜΗΧΑΝΗΜΑΤΑ
     με .g-4 («ΙΔΙΑ ΚΑΤΗΓΟΡΙΑ»), οπότε ο κανόνας .g-3 δεν την έπιανε ποτέ:
     161px η κάρτα στα 375px, ενώ η ΙΔΙΑ κάρτα στο /mixanimata/ είναι 335px.

     ⚠ v0.8.1 — ΤΟ ΠΑΛΙΟ ΣΧΟΛΙΟ ΕΔΩ ΕΛΕΓΕ «το .section-rel υπάρχει μόνο εδώ,
     άρα δεν κουνιέται τίποτε άλλο». ΔΕΝ ΙΣΧΥΕ. Το ίδιο section υπάρχει και
     στη ΣΕΛΙΔΑ ΠΡΟΪΟΝΤΟΣ (145 σελίδες), όπου δεν δείχνει μηχανήματα αλλά
     μπουκάλια — που ο ΙΔΙΟΣ κανόνας δύο γραμμές πιο πάνω λέει ρητά ότι
     χωράνε δύο-δύο. Αποτέλεσμα: 4 κάρτες στοιβαγμένες, 2.300px στα 390,
     δηλαδή 43% ολόκληρης της σελίδας προϊόντος, και το κουμπί «Ζητήστε
     προσφορά» στο y=3.746. Ο επιλογέας δένεται πλέον σε κλάση που ΔΗΛΩΝΕΙ
     τον λόγο της (.section-rel-wide), όχι σε συμπέρασμα για το πού υπάρχει
     ένα όνομα. Τρίτη φορά που «στοχευμένος επιλογέας» αστοχεί σε αυτό το
     αρχείο — η τέταρτη θα είναι η ίδια. */
  .section-rel-wide .grid.g-4{grid-template-columns:1fr}
  /* v0.7.7 — ΤΕΣΣΕΡΙΣ ΓΡΑΜΜΕΣ ΤΙΤΛΟΥ, ΜΟΝΟ ΣΤΟ ΣΤΕΝΟ ΤΗΛΕΦΩΝΟ.
     Με 3 γραμμές, ΔΥΟ ΔΙΑΦΟΡΕΤΙΚΑ ΠΡΟΪΟΝΤΑ ζωγράφιζαν τον ΙΔΙΟ ορατό τίτλο.
     Το χειρότερο ζευγάρι είναι στα 320px: «BLEMISH CONTROLLER CREAM spf30»
     και «spf50» έδειχναν ίδιο τίτλο, ίδια ορατή περιγραφή («Λευκαντική κρέμα
     προσώπου») και ίδιο eyebrow («BECLARITY») — μόνο η φωτογραφία διέφερε,
     και το spf είναι ΑΚΡΙΒΩΣ η απόφαση αγοράς. Μετρημένο με Range rects:
       συγκρούσεις 390: 2→0 · 360: 2→0 · 320: 5→1
       κομμένοι τίτλοι 390: 20→5 · 360: 30→12 · 320: 52→25
       κοψίματα μέσα σε λέξη 390: 2→0 · 360: 7→3
     Κόστος 281px στις 7 σελίδες στα 390 (1,1% του πλέγματος).
     Η ΜΙΑ σύγκρουση που μένει στα 320 είναι ΔΕΔΟΜΕΝΟ, όχι CSS: δύο προϊόντα
     με πανομοιότυπο τίτλο (ID 477 και 481) — δεν αγγίζουμε ονόματα πελάτη.
     Πάνω από 460 δεν χρειάζεται: στα 412/430 μετρήθηκαν 0 συγκρούσεις. */
  .card h3{-webkit-line-clamp:4}
  .stats-in{grid-template-columns:1fr}
  .stats-in .stat{border-inline-start:0;border-top:1px solid var(--line);padding-inline:0}
  .stats-in .stat:first-child{border-top:0}
  .nav-cta{display:none}
}

/* ══════════════════════════════════════════════════════════════════
   561-700px: ΤΑ ΠΡΟΪΟΝΤΑ ΞΑΝΑΒΡΙΣΚΟΥΝ ΤΗΝ ΤΡΙΤΗ ΣΤΗΛΗ ΤΟΥΣ (v0.7.7)

   Ο κανόνας των 700 (.g-2,.g-3,.g-4 -> 2 στήλες) σκέπαζε τον κανόνα των
   1080 (.g-4 -> 3 στήλες), οπότε από 561 ως 700 η κάρτα προϊόντος φούσκωνε
   σε 250-316px. ΑΠΟΤΕΛΕΣΜΑ: ένα tablet 10 ιντσών σε κατακόρυφη θέση έδειχνε
   ΛΙΓΟΤΕΡΑ προϊόντα ανά οθόνη από ένα τηλέφωνο 6 ιντσών.
     προϊόντα/οθόνη - iPhone 15 393x852: 4,3 · Galaxy Tab S9 640x1024: 4,1
                      iPad gen 11 656x944: 3,6 · 700x900: 3,3
   Με τρεις στήλες το 640 πάει σε 7,9/οθόνη (σελίδα 7.984->5.425px).
   Δεν είναι «η μία συσκευή»: η ζώνη είναι τα tablet κάτω των 700 ΚΑΙ κάθε
   τηλέφωνο γυρισμένο πλάγια (iPhone SE 667x375, Galaxy S9+ 658x320).

   ΘΕΤΙΚΟΣ ΕΠΙΛΟΓΕΑΣ, ΟΧΙ ΕΞΑΙΡΕΣΕΙΣ. Τα ΜΗΧΑΝΗΜΑΤΑ ζουν και αυτά σε .g-4
   σε τρεις επιφάνειες (αρχική, «ΙΔΙΑ ΚΑΤΗΓΟΡΙΑ»), και στα 206px θα ξαναγινόταν
   ακριβώς το λάθος που καταγράφεται πιο πάνω («κάρτα μηχανήματος 133px στην
   αρχική»). Το :has(.card-prod) πιάνει ΜΟΝΟ πλέγματα προϊόντων - 7 σελίδες
   /proionta/ και 23 από τα 28 αρχεία όρων - και αφήνει κάθε μηχάνημα ήσυχο.
   ⚠ ΜΑΖΙ ΜΕ ΑΥΤΟ ΑΛΛΑΖΕΙ ΤΟ sizes ΣΤΗ gld_plate(): 45vw -> 30vw στη ζώνη.
   ══════════════════════════════════════════════════════════════════ */
@media(min-width:561px) and (max-width:700px){
  .grid.g-4:has(.card-prod){grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ══════════════════════════════════════════════════════════════════
   Η ΠΕΡΙΓΡΑΦΗ ΟΡΟΥ ΔΙΠΛΩΝΕΤΑΙ ΣΤΟ ΤΗΛΕΦΩΝΟ (v0.7.7)

   ΜΕΤΡΗΜΕΝΟ στα 390x844, χωρίς μεταβάσεις, σε 29 σελίδες καταλόγου:
   ΕΞΙ αρχεία όρων ανοίγουν χωρίς ΚΑΜΙΑ κάρτα στην οθόνη, και έντεκα δεν
   έχουν κάρτα μέσα στα ~730px που πραγματικά ζωγραφίζει το Safari κάτω από
   τη γραμμή διεύθυνσης. Το /seira/essential-care-concept/ αποσυντέθηκε:
     ψίχουλα 75-133 · eyebrow 191-209 · h1 211-284 · lead 301-801 (500px!)
     πλήθος 825-847 · λωρίδα σειρών 871-921 · ΠΡΩΤΗ ΚΑΡΤΑ 941
   ΕΞΙ όροι έχουν lead >=417px — και οι έξι είναι σειρές της Summe Cosmetics,
   δηλαδή ακριβώς οι σελίδες πίσω από τη λωρίδα του /oikos/summe-cosmetics/,
   που είναι η πόρτα για τα 131 από τα 145 προϊόντα.
   Επιπλέον: ο πάτος του lead (801) περνά ΚΑΤΩ από τη σταθερή .actionbar
   (787), οπότε η τελευταία γραμμή ΦΑΙΝΕΤΑΙ κομμένη ενώ δεν είναι.

   ΚΑΜΙΑ ΛΕΞΗ ΤΟΥ ΠΕΛΑΤΗ ΔΕΝ ΦΕΥΓΕΙ ΟΥΤΕ ΑΠΟ ΤΟ DOM ΟΥΤΕ ΑΠΟ ΤΗΝ ΟΘΟΝΗ:
   διπλώνει στις 5 γραμμές με κουμπί «Περισσότερα». Χωρίς JS μένει ολόκληρη,
   όπως σήμερα — το δίπλωμα το βάζει το theme.js, άρα δεν υπάρχει περίπτωση
   να κρυφτεί κείμενο που δεν ξεδιπλώνεται.
   ⚠ ΤΟ h1 ΔΕΝ ΦΤΑΙΕΙ: στα 390 το clamp(2.05rem,5.2vw,3.85rem) είναι ΗΔΗ στο
   πάτωμα (32,8px), και ο κανόνας συρρίκνωσης των 901 έχει ΤΟ ΙΔΙΟ πάτωμα —
   μετρήθηκε 146,875px -> 146,875px, πρώτη κάρτα 876 -> 876. Μηδέν κέρδος.
   ══════════════════════════════════════════════════════════════════ */
@media(max-width:700px){
  /* v0.15.1: ύψος πέντε γραμμών που σβήνει προς τα κάτω, όχι line-clamp. Το
     line-clamp έβαζε αποσιωπητικά ΚΑΙ μετά από τελεία («επιδερμίδας....»). */
  .lead-fold{max-height:8.6em;overflow:hidden;
    -webkit-mask-image:linear-gradient(#000 calc(100% - 2.6em),transparent);
    mask-image:linear-gradient(#000 calc(100% - 2.6em),transparent)}
  /* Στόχος αφής 44px, όπως κάθε άλλο χειριστήριο του θέματος. */
  .lead-more{display:inline-flex;align-items:center;gap:.4em;min-height:44px;
    margin-top:2px;padding:0;background:none;border:0;cursor:pointer;
    font-family:var(--f-display);font-size:.8rem;font-weight:700;
    letter-spacing:.04em;color:var(--ink-2)}
  .lead-more:hover{color:var(--ink)}
  .lead-more::after{content:"";width:.5em;height:.5em;border-inline-end:2px solid currentColor;
    border-block-end:2px solid currentColor;transform:translateY(-.15em) rotate(45deg);
    transition:transform .2s}
  .lead-more[aria-expanded="true"]::after{transform:translateY(.1em) rotate(-135deg)}
}
/* Η εκτύπωση δείχνει ΠΑΝΤΑ ολόκληρη την περιγραφή και ποτέ το κουμπί. */
@media print{
  .lead-fold{max-height:none;overflow:visible;-webkit-mask-image:none;mask-image:none}
  .lead-more{display:none}
}

/* ── ΚΙΝΗΣΗ ────────────────────────────────────────────────────
   Τρεις κανόνες, και οι τρεις εκτελέσιμοι παρακάτω:

   1. ΚΑΜΙΑ ΜΕΤΑΤΟΠΙΣΗ ΔΙΑΤΑΞΗΣ. Μόνο opacity και transform — δύο ιδιότητες
      που ο browser κινεί στη GPU χωρίς να ξαναϋπολογίσει τη σελίδα. Καμία
      κίνηση σε height, margin ή top: αυτές μετακινούν ό,τι είναι από κάτω
      και μετρώνται ως CLS.

   2. ΤΙΠΟΤΑ ΔΕΝ ΧΑΝΕΤΑΙ ΑΝ ΠΕΣΕΙ ΤΟ JS. Το αρχικό «κρυφό» ισχύει ΜΟΝΟ κάτω
      από .js, που τη βάζει ένα ενσωματωμένο script στην κεφαλίδα. Χωρίς JS
      — ή με σφάλμα πριν φορτώσει — η σελίδα είναι απλώς στατική και πλήρης.

   3. ΛΙΓΟΤΕΡΗ ΚΙΝΗΣΗ ΣΗΜΑΙΝΕΙ ΚΑΜΙΑ. Στο prefers-reduced-motion τα στοιχεία
      είναι ορατά ΑΜΕΣΩΣ, χωρίς μετάβαση — όχι «πιο αργά».
   ────────────────────────────────────────────────────────────── */

/* ΜΟΝΟ ΣΕ ΟΘΟΝΗ. Στο χαρτί δεν υπάρχει κύλιση, άρα δεν υπάρχει και
   IntersectionObserver να ανάψει το .in: το φύλλο προδιαγραφών τυπωνόταν
   ΚΕΝΟ αν ο χρήστης πατούσε εκτύπωση μέσα στα πρώτα δευτερόλεπτα — χανόταν
   το 66–73% του κειμένου. Ο περιορισμός στη ρίζα είναι καθαρότερος από ένα
   !important παρακάτω. */
@media screen{
  /* Η ΑΠΟΣΤΑΣΗ ΖΕΙ ΣΕ ΜΕΤΑΒΛΗΤΕΣ, ώστε κάθε οικογένεια να τη ρυθμίζει χωρίς
     να ξαναγράφει το transform — και να αλλάζει η ένταση από ΕΝΑ σημείο. */
  .js .reveal{opacity:0;transform:translate3d(var(--rv-x,0),var(--rv-y,22px),0)}
  /* Η ΕΠΙΚΕΦΑΛΙΔΑ ΕΙΝΑΙ Η ΣΤΙΓΜΗ ΠΟΥ «ΜΠΑΙΝΕΙ» Η ΕΝΟΤΗΤΑ. Ταξιδεύει λίγο
     περισσότερο από τις κάρτες της, ώστε να διαβάζεται ως αρχή και όχι ως
     άλλο ένα κουτί που εμφανίστηκε μαζί με τα υπόλοιπα. */
  .js .sec-head.reveal{--rv-y:32px}
}
/* ⚠ ΟΡΙΖΟΝΤΙΑ ΚΙΝΗΣΗ ΜΟΝΟ ΟΠΟΥ ΥΠΑΡΧΟΥΝ ΔΥΟ ΣΤΗΛΕΣ, ΚΑΙ ΤΟ ΟΡΙΟ ΕΙΝΑΙ
   ΜΕΤΡΗΜΕΝΟ. Μετατόπιση ΠΡΟΣ ΤΑ ΔΕΞΙΑ γεννά 8px οριζόντιας κύλισης στα
   360px· η αριστερή δεν γεννά τίποτα, γιατί το overflow-x:hidden του body
   κόβει μόνο τη μία πλευρά ενώ το scrollWidth της ρίζας μεγαλώνει. Στα
   768/1440/1920 και οι δύο κατευθύνσεις μετρήθηκαν στο 0.
   Κάτω από 901px οι ζώνες είναι ούτως ή άλλως μονόστηλες: εκεί η
   «κατεύθυνση» δεν σημαίνει τίποτα, γιατί δεν υπάρχει πλευρά να έρθει από
   αυτήν. Το κείμενο έρχεται από ΤΗ ΔΙΚΗ ΤΟΥ πλευρά — μετρημένο ότι στην
   κανονική ζώνη κάθεται αριστερά (x=0) και στη .flip δεξιά (x=634). */
@media screen and (min-width:901px){
  .js .band-grid > .band-txt{--rv-x:-26px;--rv-y:12px}
  .js .band-grid.flip > .band-txt{--rv-x:26px}
}
/* ΧΡΟΝΙΣΜΟΣ: 420ms μετάβαση + το πολύ 4×40ms κλιμάκωση = 580ms στη χειρότερη
   περίπτωση. Η πρώτη εκδοχή ήταν 550+5×55 = 825ms: μετρήθηκε κάρτα να είναι
   ακόμη στο opacity 0,5 σχεδόν ένα δευτερόλεπτο αφότου μπήκε στην οθόνη —
   δηλαδή ο χρήστης που κυλά γρήγορα έβλεπε άδεια κουτιά. */
.js .reveal.in{opacity:1;transform:none;
  transition:opacity .42s cubic-bezier(.22,.61,.36,1),transform .42s cubic-bezier(.22,.61,.36,1);
  transition-delay:calc(var(--i,0) * 40ms)}

/* ⚠⚠ Ο ΚΑΝΟΝΑΣ ΑΠΟ ΠΑΝΩ ΞΑΝΑΓΡΑΦΕΙ ΤΟ `transition` ΟΛΟΚΛΗΡΟ.
   Δεν φτάνει να δίνει άλλη ιδιότητα στο σήκωμα (βλ. `.card:hover{translate}`):
   το `transition` είναι ΜΙΑ ιδιότητα, οπότε η δήλωση της αποκάλυψης σβήνει και
   τη μετάβαση του translate — το σήκωμα γινόταν ΑΚΑΡΙΑΙΟ. Την ξαναδηλώνουμε
   ΜΟΝΟ για την κάρτα, μαζί με τη μετάβαση της εισόδου.
   ΜΕΤΡΗΜΕΝΟ πριν: κάρτα πάνω από το τσάκισμα 297ms, κάρτα που αποκαλύφθηκε
   453ms — αντί για τα 200ms που έχει γραμμένα η ίδια η κάρτα. Το σήκωμα
   έτρεχε με τον χρονισμό της ΕΙΣΟΔΟΥ, δηλαδή διπλάσιο.
   Η ΚΑΘΥΣΤΕΡΗΣΗ ΕΙΝΑΙ ΛΙΣΤΑ ΤΡΙΩΝ, ΟΧΙ ΜΙΑ ΤΙΜΗ: η κλιμάκωση --i×40ms πρέπει
   να ισχύει για την είσοδο (opacity, transform) και ΠΟΤΕ για το σήκωμα —
   αλλιώς η πέμπτη κάρτα θα περίμενε 160ms πριν αντιδράσει στο ποντίκι. */
.js .reveal.in.card{
  transition:opacity .42s cubic-bezier(.22,.61,.36,1),transform .42s cubic-bezier(.22,.61,.36,1),
             background .2s,border-color .2s,translate .2s;
  transition-delay:calc(var(--i,0) * 40ms),calc(var(--i,0) * 40ms),0s,0s,0s}

/* Η ΚΑΤΩ ΓΡΑΜΜΗ ΤΟΥ ΥΠΟΣΕΛΙΔΟΥ ΤΑΞΙΔΕΥΕΙ ΛΙΓΟΤΕΡΟ. Το .f-credit απέχει μόλις
   13-16px από το .f-bot: με την κανονική διαδρομή των 22px οι δύο γραμμές
   περνούν η μία μέσα από την άλλη στο μισό της κίνησης. */
.js .footer .f-bot.reveal{--rv-y:10px}

/* Η κεφαλίδα «κάθεται» μόλις αρχίσει η κύλιση: πιο πυκνό φόντο και μια
   λεπτή σκιά, ώστε το περιεχόμενο να μη φαίνεται να την ακουμπά. */
.nav{transition:background .25s,box-shadow .25s,border-color .25s}
.nav.is-stuck{background:rgba(255,255,255,.97);box-shadow:0 6px 24px rgba(21,23,26,.08);
  border-bottom-color:var(--line-2)}

/* Η φωτογραφία «ζωντανεύει» στο πέρασμα. Ο πολλαπλασιαστής υπάρχει επειδή
   κάποιες εικόνες έχουν ΗΔΗ transform (μεγέθυνση στο περιεχόμενο) — γράφοντας
   σκέτο scale() στο hover θα έσβηνε τη μετατόπισή τους και το προϊόν θα
   πεταγόταν εκτός πλακέτας. */
.plate img{transition:transform .5s cubic-bezier(.22,.61,.36,1)}
.plate.is-trim img{
  transform:translate(var(--plate-dx,0),var(--plate-dy,0))
            scale(calc(var(--plate-k,1) * var(--plate-hover,1)))}
.card:hover .plate img{--plate-hover:1.045}
.card:not(.card-prod):hover .plate:not(.is-trim) img{transform:scale(1.045)}
.card-prod:hover .plate:not(.is-trim) img{transform:scale(1.035)}

/* Το βέλος «Τεχνικά χαρακτηριστικά →» ακολουθεί το πέρασμα. */
.card .more .arw{transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.card:hover .more .arw{transform:translateX(4px)}

/* Το chip και το κουμπί σελίδας «βυθίζονται» ελάχιστα στο πάτημα — η μόνη
   ανάδραση που έχει ο χρήστης αφής ότι το άγγιγμα καταγράφηκε. */
.chip:active,.pager a.page-numbers:active,.btn:active{transform:translateY(1px)}

@media(prefers-reduced-motion:reduce){
  .js .reveal{opacity:1;transform:none}
  .js .reveal.in{transition:none}
  .plate img,.card:hover .plate img{transform:none!important;transition:none}
  .plate.is-trim img{transform:translate(var(--plate-dx,0),var(--plate-dy,0)) scale(var(--plate-k,1))!important}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ── ΥΨΗΛΗ ΑΝΤΙΘΕΣΗ (Windows) ──────────────────────────────────
   Το σύστημα ξαναγράφει τα χρώματα: το φόντο γίνεται λευκό και το λευκό
   λογότυπο —που είναι ΚΑΙ ο σύνδεσμος «Αρχική»— πέφτει στο 1,45:1, δηλαδή
   εξαφανίζεται. Οι εικόνες δεν υφίστανται εξαναγκασμό χρώματος, οπότε δεν
   χρειάζεται forced-color-adjust: αρκεί να τους δώσουμε δικό τους σκούρο
   υπόβαθρο. Και το επιλεγμένο φίλτρο ξεχώριζε ΜΟΝΟ με χρώμα, που εκεί
   ισοπεδώνεται — του δίνουμε σχήμα. */
@media(forced-colors:active){
  /* Το σύστημα ξαναβάφει ΚΑΘΕ κείμενο σε αδιαφανές CanvasText. Η λωρίδα
     ονομάτων ζει στο rgba(...,.045) — εκεί γίνεται συμπαγής και κάθεται
     πίσω από τον τίτλο. Ίδιος λόγος με το prefers-contrast:more (γρ. 351). */
  .hero-mq{display:none}
  .brand img,.footer img{background:#000;padding:6px;border-radius:6px}
  .chip.on{forced-color-adjust:none;background:Highlight;color:HighlightText;border-color:Highlight}
  .chip.on::before{content:"✓ "}
}

/* ── εκτύπωση ──────────────────────────────────────────────────
   Οι γιατροί ΟΝΤΩΣ τυπώνουν φύλλα προδιαγραφών για να συγκρίνουν
   προμηθευτές. Χωρίς αυτό το μπλοκ έβγαινε ανθρακί σελίδα με λευκά
   γράμματα — δηλαδή ένα μαύρο φύλλο.

   ΠΡΟΣΟΧΗ σε δύο παγίδες που ΔΕΝ φαίνονται σε έλεγχο DOM, μόνο στο PDF:
   1) Η πλακέτα δεν έχει δικό της ύψος — το παίρνει από την εικόνα. Χωρίς
      ρητό max-height η φωτογραφία του μηχανήματος έπιανε ΟΛΟΚΛΗΡΗ σελίδα A4.
   2) page-break-inside:avoid σε <section> ψηλότερο από μια σελίδα δεν
      «αποφεύγει» τίποτα: σπρώχνει την ενότητα στην επόμενη σελίδα και
      αφήνει την προηγούμενη ΚΕΝΗ. Μπαίνει μόνο σε μικρά κουτιά. */
@media print{
  :root{--ink:#000;--ink-2:#222;--ink-3:#444;--line:#BBB;--line-2:#999}
  *{background:transparent!important;box-shadow:none!important;
    text-shadow:none!important;filter:none!important}
  body{background:#fff!important;color:#000;font-size:10.5pt;line-height:1.42}
  /* Ό,τι δεν έχει νόημα σε χαρτί */
  /* Το .section-sm περιτυλίγει ΜΟΝΟ το .cta και στα τέσσερα πρότυπα. Αν
     κρύψεις το παιδί αλλά όχι τον γονέα, μένουν 110px σκέτο padding — αρκετά
     για να γεννήσουν μια ΚΕΝΗ τελευταία σελίδα στο PDF.
     Το .section-rel («ίδια σειρά» / «ίδια κατηγορία») φεύγει επίσης: σε φύλλο
     ενός προϊόντος είναι θόρυβος, και το Chromium έκοβε τις κάρτες του στη
     μέση λέξης όταν η γραμμή του πλέγματος έπεφτε πάνω σε αλλαγή σελίδας. */
  .nav,.footer,.burger,.filters,.cta,.section-sm,.section-rel,.form,.crumb,
  .hero-actions,.sec-head .btn,.skip,.card-award,
  .actionbar,.searchpanel,.nav-tools,.pager,.linegrid,.consent,
  .consent-panel,.consent-backdrop,.mapgate{display:none!important}
  .section{padding:0 0 10pt!important}
  .wrap{max-width:none;padding:0}
  h1{font-size:19pt;margin-bottom:3pt}
  h2{font-size:13pt;margin-top:11pt;margin-bottom:4pt}
  h3{font-size:11pt}
  .lead{font-size:11pt;color:#000;max-width:none;margin-bottom:.5em}
  .eyebrow{color:#000;font-size:8pt}
  /* Μία στήλη: δύο στήλες σε A4 αφήνουν μισή σελίδα κενή δίπλα σε ψηλή εικόνα */
  .hero-prod{grid-template-areas:none!important}
  .hero-grid,.band-grid,.grid.g-2{grid-template-columns:1fr!important;
    gap:8pt!important;align-items:start!important}
  .grid.g-3,.grid.g-4{grid-template-columns:repeat(3,1fr)!important;gap:8pt!important}
  /* Η ΠΛΑΚΕΤΑ: ρητό ύψος, αλλιώς η εικόνα γίνεται αφίσα */
  .plate{max-height:6.5cm!important;padding:0!important;border:1px solid #CCC;
    aspect-ratio:auto!important;page-break-inside:avoid}
  .plate::after{display:none!important}
  .plate img{max-height:6.5cm!important;width:auto!important;height:auto!important;
    max-width:100%;object-fit:contain!important;mix-blend-mode:normal!important;margin:0 auto}
  .card .plate{max-height:3cm!important}
  .card .plate img{max-height:3cm!important}
  /* Ο πίνακας προδιαγραφών ολόκληρος, με μαύρες γραμμές, χωρίς κύλιση */
  .tablewrap{overflow:visible!important}
  .specs{min-width:0;font-size:9.5pt}
  .specs tr{border-bottom:1px solid #999;page-break-inside:avoid}
  .specs th{color:#000;width:38%;min-width:0;padding:6pt 12pt 6pt 0}
  .specs td{color:#000;padding:6pt 0}
  .ticks li{color:#000;font-size:9.5pt}
  /* Οι περικοπές είναι για την οθόνη — στο χαρτί θέλουμε ΟΛΟ το κείμενο */
  .card h3,.card p{display:block;overflow:visible;-webkit-line-clamp:none}
  .card,.reason,.pill{page-break-inside:avoid}
  .card{border:1px solid #CCC}
  /* Ο αναγνώστης του χαρτιού δεν μπορεί να πατήσει σύνδεσμο */
  .prose a[href^="http"]::after{content:" (" attr(href) ")";font-size:8.5pt;color:#555}
  /* Ταυτότητα προμηθευτή στην ΚΟΡΥΦΗ, σαν letterhead. ΟΧΙ position:fixed:
     το Chrome όντως το επαναλαμβάνει σε κάθε σελίδα, αλλά ΔΕΝ κρατά χώρο
     γι' αυτό — τυπωνόταν πάνω στο κείμενο της δεύτερης σελίδας. Και ΟΧΙ στο
     τέλος του εγγράφου: έπεφτε μόνο του σε δεύτερη σελίδα. */
  .print-id{display:block!important;margin:0 0 10pt;padding:0 0 5pt;
    border-bottom:1px solid #999;font-size:8pt;color:#333;line-height:1.45}
}

/* ═══════════════════════════════════════════════════════════════
   v0.7.3 — ΓΥΡΟΣ 3: κεφαλίδα σε υπολογιστή, μεγάλες οθόνες,
   φτωχές σελίδες. Ο ΚΑΝΟΝΑΣ ΤΗΣ ΣΕΙΡΑΣ: το μπλοκ μπαίνει στο ΤΕΛΟΣ
   του αρχείου, μετά από κάθε βασικό κανόνα που πειράζει — αλλιώς
   είναι νεκρό (το πάθαμε στον γύρο 2 με το .chip).
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. Η ΔΕΞΙΑ ΑΚΡΗ ΤΗΣ ΚΕΦΑΛΙΔΑΣ ────────────────────────────
   Το `margin-inline-start:auto` γράφτηκε στο <ul>. Όταν το μενού
   τυλίχτηκε σε <nav class="nav-menu"> (για να γίνει ορόσημο για τους
   αναγνώστες οθόνης), το auto περιθώριο έμεινε ΜΕΣΑ στο nav και έπαψε
   να στοιχίζει οτιδήποτε στο επίπεδο του .nav-in.
   Ο ελεύθερος χώρος μαζευόταν στο ΤΕΛΟΣ της σειράς: μετρήθηκε το
   «Ζητήστε επίδειξη» να σταματά 139px πριν τη δεξιά ακμή της στήλης
   περιεχομένου στα 1280, 105px στα 1440, 91px στα 1920 — ενώ το
   λογότυπο κούμπωνε σωστά αριστερά (απόκλιση 0). Κεφαλίδα με σωστή
   αριστερή και ραγισμένη δεξιά ακμή διαβάζεται ως λάθος, όχι ως ύφος.
   Τώρα το μενού παίρνει τον ελεύθερο χώρο και κεντράρεται: τα δύο
   κενά γίνονται συμμετρικά (84/84px στα 1440) και το κουμπί κουμπώνει
   στη δεξιά ακμή του περιεχομένου, όπως κάθε τίτλος από κάτω του. */
@media(min-width:1061px){
  .nav .nav-menu{flex:1 1 auto;display:flex;justify-content:center;min-width:0}
  .nav .nav-links{margin-inline-start:0;flex-wrap:nowrap}
}

/* ── 2. ΜΕΓΑΛΕΣ ΟΘΟΝΕΣ ────────────────────────────────────────
   Το δοχείο ήταν παγωμένο στα 1240px (1112px περιεχομένου) σε ΚΑΘΕ
   πλάτος. Στα 2560 το 56,6% της οθόνης ήταν κενό περιθώριο και ο
   κατάλογος κυλούσε 986px παραπάνω απ' όσο χρειαζόταν.
   Το μέτρο ανάγνωσης ΔΕΝ κινδυνεύει: .lead και .sec-head .txt έχουν
   64ch, το .prose 70ch — φραγμοί που κρατούν το κείμενο στενό ενώ οι
   κάρτες και οι εικόνες απλώνονται. */
@media(min-width:1500px){:root{--maxw:min(1560px,94vw)}}
@media(min-width:1900px){:root{--maxw:min(1760px,92vw)}}

/* Περισσότερες στήλες αντί για φαρδύτερες κάρτες. */
@media(min-width:1500px){.grid.g-4{grid-template-columns:repeat(5,1fr)}}
@media(min-width:1900px){
  .grid.g-4{grid-template-columns:repeat(6,1fr)}
  .grid.g-3{grid-template-columns:repeat(4,1fr)}
}
/* Οι ΣΤΑΘΕΡΕΣ ΕΞΟΔΟΙ (.exits) εξαιρούνται — ο κανόνας ζει στο ΤΕΛΟΣ του
   αρχείου, γιατί εδώ θα έχανε. Βλ. «ΣΤΑΘΕΡΟ ΣΥΝΟΛΟ ΕΞΟΔΩΝ». */

/* ── 3. ΜΙΣΟΑΔΕΙΑ ΠΛΕΓΜΑΤΑ ────────────────────────────────────
   «Ίδια κατηγορία» με 1 ή 2 κάρτες σε πλέγμα 4 στηλών: μετρήθηκε 76,5%
   της σειράς κενό σε 2 σελίδες μηχανήματος και 51,0% σε άλλες 9.
   ΤΟ :has() ΕΙΝΑΙ ΚΛΕΙΔΩΜΕΝΟ ΣΕ ΥΠΟΛΟΓΙΣΤΗ ΕΠΙΤΗΔΕΣ: η ειδικότητά του
   (0,4,0) νικάει τα breakpoints του κινητού — δοκιμάστηκε ζωντανά και
   έβγαλε scrollWidth 553 σε οθόνη 390. Μέσα σε @media δεν φτάνει ποτέ
   εκεί. Το ταβάνι των 380px εμποδίζει το τέντωμα μιας κάρτας σε 1.124px
   πλάτος και 1.004px ύψος, που ήταν το αποτέλεσμα του auto-fit. */
@media(min-width:1081px){
  .grid.g-4:has(> :last-child:nth-child(-n+2)),
  .grid.g-3:has(> :last-child:nth-child(-n+2)){
    grid-template-columns:repeat(2,minmax(0,380px));justify-content:start}
  .grid.g-4:has(> :last-child:nth-child(3)){
    grid-template-columns:repeat(3,minmax(0,380px));justify-content:start}
}

/* ── 4. ΤΟ ΣΗΜΑΔΙ ΤΗΣ ΣΕΛΙΔΟΠΟΙΗΣΗΣ ──────────────────────────
   Η άγκυρα #katalogos έχει ύψος 0: ο δακτύλιος εστίασης ζωγράφιζε
   λευκή γραμμή 1129×4px που έκοβε τον κατάλογο σε κάθε κλικ «Επόμενη».
   Το tabindex είναι -1, άρα κανένας χρήστης πληκτρολογίου δεν χάνει
   δακτύλιο — μόνο η προγραμματιστική εστίαση τον ζωγράφιζε. */
#katalogos:focus{outline:none}
#katalogos{scroll-margin-top:92px}

/* Ο αριθμός μέσα στο ΕΝΕΡΓΟ chip μετρήθηκε 3,05:1 στα 8,64px —
   σβησμένος σε 25 από τις 27 σελίδες αρχείου. */
.chip.on .chip-n{color:rgba(255,255,255,.72)}

/* Στα ψίχουλα ο σύνδεσμος και η τρέχουσα σελίδα ήταν οπτικά ταυτόσημοι.
   Το --ink-2 μετρά 8,99:1 και ξεχωρίζει καθαρά από το --ink-3 του
   τρέχοντος, χωρίς υπογραμμίσεις κάτω από μακριά ονόματα σειρών. */
.crumb a{color:var(--ink-2)}

/* ── 5. Η ΛΑΜΨΗ ΤΟΥ ΗΡΩΑ ──────────────────────────────────────
   Το inset:-8% μετριέται πάνω στο ΠΛΗΡΕΣ πλάτος της οθόνης, όχι στο
   δοχείο: πάνω από ~1900px η λάμψη ξεκολλούσε από την εικόνα και
   επέπλεε μόνη της στο κενό περιθώριο. Δένεται στο κέντρο και
   μετατοπίζεται όσο το μισό δοχείο. */
@media(min-width:1500px){
  .hero::before{inset:-30% auto auto 50%;
    translate:calc(var(--maxw) / 2 - min(720px,84vw) + 96px) 0}
}

/* ── 6. ΟΙ ΜΕΤΡΗΤΕΣ ΤΗΣ ΑΡΧΙΚΗΣ ───────────────────────────────
   Η τέταρτη λεζάντα ξεκινούσε 33px χαμηλότερα από τις άλλες τρεις,
   επειδή το «δίγραμμη τιμή» πιάνει δύο γραμμές. Με subgrid οι
   τέσσερις αριθμοί μοιράζονται γραμμή πλέγματος και οι τέσσερις
   λεζάντες ξεκινούν στο ίδιο ύψος. Μετρήθηκε: η ζώνη ΔΕΝ ψηλώνει. */
.stats-in{grid-template-rows:auto auto}
.stat{display:grid;grid-template-rows:subgrid;grid-row:span 2}
/* …ΑΛΛΑ ΤΟ subgrid ΕΦΕΡΕ ΔΕΥΤΕΡΟ ΚΟΣΤΟΣ ΠΟΥ ΔΕΝ ΕΙΧΕ ΜΕΤΡΗΘΕΙ. Η κοινή
   πρώτη σειρά είναι τόσο ψηλή όσο το ΨΗΛΟΤΕΡΟ περιεχόμενό της, δηλαδή το
   δίγραμμο «δίγραμμη τιμή». Τα μονογραμμικά «17», «25 χρόνια» και
   «2 οίκοι» έπαιρναν κουτί 67px για κείμενο 33,6px και κάθονταν στην ΚΟΡΥΦΗ
   του — άρα 42px αέρας ανάμεσα στον αριθμό και στη λεζάντα ΤΟΥ, ενώ η δίγραμμη τιμή
   είχε 8px. Ο αριθμός και η λεζάντα του είναι ΕΝΑ ζεύγος· 42px τα χωρίζουν.
   Με align-self:end οι αριθμοί πέφτουν στο ΚΑΤΩ μέρος της κοινής σειράς:
   κενό 42→8 και στα τέσσερα, οι λεζάντες ΠΑΡΑΜΕΝΟΥΝ ευθυγραμμισμένες (γι'
   αυτό μπήκε το subgrid) και το ύψος της ζώνης δεν αλλάζει — 173px πριν,
   173px μετά. Ο αέρας πάει εκεί που δεν ενοχλεί: πάνω από τους αριθμούς. */
.stat b{align-self:end}

/* Η διαπίστευση πάνω από το τσάκισμα ήταν το μικρότερο κείμενο της
   οθόνης και έσπαγε σε τρεις γραμμές. */
.hero-cap .t{font-size:.78rem;max-width:78%}

/* Οι ζώνες των δύο οίκων άφηναν 556px και 516px κατακόρυφο κενό:
   το κείμενο κεντραριζόταν απέναντι σε τέσσερις κάρτες. */
@media(min-width:901px){
  .band-grid{align-items:start}
  .band-txt{padding-block-start:clamp(8px,1.2vw,20px)}
  /* Το .flip άλλαζε ΜΟΝΟ τη σειρά των παιδιών, όχι τις στήλες: οι
     κάρτες Dermaqual έβγαιναν 18% στενότερες από τις Summe στην ίδια
     σελίδα, με ίδιο πλέγμα και ίδιο πλήθος. */
  .band-grid.flip{grid-template-columns:1.08fr .92fr}
}

/* ── 7. ΡΕΥΜΑΤΑ ΦΟΝΤΟΥ ────────────────────────────────────────
   Δες το σχόλιο της gld_bgpaths() για το κόστος: η κίνηση είναι ΜΟΝΟ
   transform, ώστε να συντίθεται στην κάρτα γραφικών (0,1% ενός πυρήνα
   αντί για 6–12% που κοστίζει η κίνηση του stroke-dashoffset). */
.has-bgpaths{position:relative;isolation:isolate;overflow:clip}
.bgpaths{position:absolute;inset:0;z-index:-1;pointer-events:none;color:var(--ink);
  -webkit-mask-image:radial-gradient(120% 100% at 100% 58%,#000 20%,transparent 78%);
          mask-image:radial-gradient(120% 100% at 100% 58%,#000 20%,transparent 78%)}
.bgpaths svg{width:100%;height:100%;display:block}
.bgpaths path{fill:none;stroke-linecap:round}
.bgp-a,.bgp-b{will-change:transform;transform-box:fill-box;transform-origin:center}
.bgp-a{animation:gld-drift-a 64s ease-in-out infinite alternate}
.bgp-b{animation:gld-drift-b 88s ease-in-out infinite alternate}
@keyframes gld-drift-a{from{transform:translate3d(-26px,10px,0) rotate(-.6deg)}
                       to  {transform:translate3d(22px,-14px,0) rotate(.7deg)}}
@keyframes gld-drift-b{from{transform:translate3d(18px,-8px,0) rotate(.5deg)}
                       to  {transform:translate3d(-20px,12px,0) rotate(-.5deg)}}
/* Ο κανόνας του θέματος: κίνηση μόνο για όποιον τη ζητά. Οι γραμμές
   ΜΕΝΟΥΝ — γίνονται ακίνητο σχέδιο, δεν αδειάζει η ζώνη. */
@media(prefers-reduced-motion:reduce){.bgp-a,.bgp-b{animation:none;will-change:auto}}
@media print{.bgpaths{display:none}}

/* ── 8. ΟΙ ΔΟΜΙΚΕΣ ΣΕΛΙΔΕΣ ────────────────────────────────────
   Η πρώτη παράγραφος γίνεται εισαγωγή με CSS, ΟΧΙ με parsing του
   the_content(): μια regex πάνω σε <p> με ένθετο <strong> (υπάρχει στην
   Πολιτική Απορρήτου) κόβει λάθος. */
.pagehead .prose > p:first-child{font-size:clamp(1.02rem,1.5vw,1.19rem);line-height:1.62;
  color:var(--ink-2);max-width:37.85em}
.pagehead h1{margin-bottom:1.35rem}

/* Τα τρία δεδομένα επικοινωνίας ως στόχοι, όχι ως 13,76px κείμενο μέσα
   στο υποσέλιδο. Ίδιες ετικέτες με τη σελίδα επικοινωνίας. */
.factbar{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.fact{background:var(--panel);padding:clamp(16px,2vw,24px);display:flex;flex-direction:column;
  gap:.42rem;min-height:44px;transition:background .18s}
a.fact:hover{background:var(--panel-2)}
.fact-k{font-family:var(--f-display);font-size:.68rem;font-weight:700;letter-spacing:.16em;
  color:var(--ink-3)}
.fact-v{font-family:var(--f-display);font-size:.98rem;font-weight:700;color:var(--ink);
  line-height:1.35;overflow-wrap:anywhere}
.fact-cta .fact-v{color:var(--red-hi)}
@media(max-width:860px){.factbar{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.factbar{grid-template-columns:1fr}}

/* Τα περιθώρια των διαδοχικών ενοτήτων ΣΤΟΙΒΑΖΟΝΤΑΝ: μετρήθηκαν 220px
   κενό ανάμεσα στο τέλος του κειμένου και τη λωρίδα κατηγοριών, και
   άλλα 170px πριν τα στοιχεία επικοινωνίας — σε σελίδα που το πρόβλημά
   της ήταν ακριβώς το κενό. */
.pagehead{padding-block-end:clamp(22px,2.6vw,34px)}
.pagehead + .section-sm,
.pagehead + .stats + .section-sm,
.section-sm + .section-sm{padding-block-start:clamp(24px,3vw,40px)}
.catstrip + *,.section-sm .eyebrow{margin-bottom:1rem}

/* Το όνομα του βραβείου, ορατό. Το --ink-2 μετρά 8,99:1 πάνω στο --panel. */
.card-award-txt{font-family:var(--f-display);font-size:.7rem;font-weight:700;letter-spacing:.04em;
  color:var(--ink-2);margin:0 0 .1rem;line-height:1.35;overflow-wrap:anywhere}

/* ── 9. Ο ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ ΥΨΟΥΣ ΤΟΥ ΗΡΩΑ ──────────────────────
   ΜΕΤΡΗΜΕΝΟ: η ζώνη με τους τέσσερις αριθμούς έπεφτε κάτω από το
   τσάκισμα σε ΚΑΘΕ μέγεθος οθόνης — 199px στα 1366×768, 70px στα
   1440×900, 171px στα 1600×900, 106px στα 1920×1080. Δηλαδή κανένας
   επισκέπτης σε υπολογιστή δεν έβλεπε ούτε έναν αριθμό χωρίς κύλιση,
   και η μόνη απόδειξη εμπειρίας της εταιρείας ζούσε κάτω από το κενό.
   Ο μοχλός ΔΕΝ είναι ο τίτλος ούτε το padding: είναι το aspect-ratio
   4/4.4 της φωτογραφίας, που ψηλώνει όσο πλαταίνει η στήλη — γι' αυτό
   στα 1600 ο ήρωας ήταν 854px ενώ στα 1440 ήταν 753px.
   Το max-height δένει τη φωτογραφία στο ΥΨΟΣ της οθόνης· το
   object-fit:cover που έχει ήδη αναλαμβάνει την περικοπή. */
@media(min-width:1081px){
  .hero{padding-block:clamp(36px,4vw,60px) clamp(30px,3.2vw,48px)}
  .hero-fig{max-height:min(56vh,540px)}
}

/* Φορητοί 768px ύψους — ο πιο συνηθισμένος. Εκεί δεν έφτανε το ταβάνι της
   φωτογραφίας: χρειάζονταν άλλα 124px. Ο τίτλος πέφτει από 71px σε 49px
   και ξαναγίνεται τρίγραμμος αντί για τετράγραμμος. Ισχύει ΜΟΝΟ σε κοντές
   οθόνες — σε 1080p ο τίτλος μένει στο πλήρες μέγεθος. */
/* ΣΕ ΚΟΝΤΗ ΟΘΟΝΗ ΦΟΡΗΤΟΥ Ο ΚΑΤΑΛΟΓΟΣ ΑΝΟΙΓΕ ΧΩΡΙΣ ΚΑΝΕΝΑ ΠΡΟΪΟΝ.
   Ο τίτλος του /proionta/ πιάνει ΤΕΣΣΕΡΙΣ γραμμές × 61,6px = 276px· με την
   κεφαλίδα, τα ψίχουλα, την εισαγωγή και τη λωρίδα των 22 chip, η πρώτη κάρτα
   ξεκινά στο y=873 σε οθόνη 768px ύψος. Δηλαδή μηδέν προϊόντα στην πρώτη
   οθόνη σε 1024, 1280, 1366 και 1536.
   ΟΧΙ στα tax-gld_brand: τα δύο αρχεία οίκων έχουν ΜΟΝΟΓΡΑΜΜΟ τίτλο (69px)
   και ήδη δείχνουν 74px κάρτας — εκεί ο κανόνας δεν αγοράζει τίποτα.
   ΤΟ ΚΑΤΩ ΟΡΙΟ ΕΙΝΑΙ 901px ΚΑΙ ΟΧΙ 1081: στα 1024×768 — φορητό και tablet
   σε οριζόντια θέση — ο κανόνας ΔΕΝ έπιανε και η σελίδα εξακολουθούσε να
   ανοίγει με μηδέν προϊόντα (μετρημένο). Κάτω από 901 δεν χρειάζεται:
   εκεί το clamp είναι ήδη στο πάτωμα και ο κανόνας δεν αλλάζει τίποτα. */
@media(min-width:901px) and (max-height:950px){
  /* ΙΔΙΟ ΜΕΓΕΘΟΣ ΣΕ ΟΛΕΣ ΤΙΣ ΣΕΛΙΔΕΣ ΚΑΤΑΛΟΓΟΥ (27/09). Ήταν μόνο στα
     μηχανήματα: κατηγορία μηχανημάτων 41,6px, κατηγορία Dermaqual 61,6px.
     Το «body.tax-gld_line .sec-head» δεν έπιανε ποτέ: η σειρά έχει
     .series-grid-head. */
  body.post-type-archive-gld_product .sec-head h1,
  body.post-type-archive-gld_machine .sec-head h1,
  body.tax-gld_machine_cat .sec-head h1,
  body.tax-gld_brand .sec-head h1,
  body.search .sec-head h1,
  body.tax-gld_line .series-grid-head h1{font-size:clamp(2.05rem,3.2vw,2.6rem)}
}

@media(min-width:1081px) and (max-height:820px){
  .hero{padding-block:clamp(26px,2.8vw,40px) clamp(22px,2.4vw,34px)}
  .hero-fig{max-height:min(44vh,410px)}
  .hero h1{font-size:clamp(2.05rem,3.5vw,2.85rem)}
  .hero-actions{margin-top:1.25rem}
}

/* Μονή στήλη για ζώνες που έχουν ένα μόνο γεμάτο κελί. */
.g-1{grid-template-columns:1fr}
.note-fine{color:var(--ink-3);font-size:.78rem;max-width:32.81em}

/* Τα αποτελέσματα αναζήτησης έμεναν 3 στήλες σε κάθε πλάτος: σε οθόνη 2560
   τέσσερα αποτελέσματα έσπαγαν σε δεύτερη σειρά που έπεφτε κάτω από το
   τσάκισμα. Και οι ΔΥΟ λίστες (μηχανήματα + προϊόντα) αλλάζουν μαζί —
   αλλιώς η ίδια σελίδα θα είχε δύο διαφορετικούς αριθμούς στηλών. */
/* ⚠⚠ v0.8.3 — «.results», ΟΧΙ «.search». ΠΕΜΠΤΗ ΦΟΡΑ ΤΟ ΙΔΙΟ.
   Οι τρεις κανόνες παρακάτω ήταν γραμμένοι ως «.search .grid.g-3», δηλαδή
   δεμένοι στη ΣΕΛΙΔΑ. Το 404 απέκτησε κι αυτό πλέγμα αποτελεσμάτων
   (προτάσεις από τη νεκρή διεύθυνση) και ΔΕΝ κληρονόμησε τίποτα: μετρήθηκε
   κάρτα προϊόντος 350px στα 390 — ακριβώς ο αριθμός που καταγράφει το
   σχόλιο από κάτω ως το ΛΑΘΟΣ που διόρθωσε το v0.7.8.
   Το πλέγμα αποτελεσμάτων δεν είναι ιδιότητα της σελίδας αναζήτησης· είναι
   είδος πλέγματος. Η κλάση το λέει, και όποια σελίδα το χρειαστεί το
   δηλώνει. */
@media(min-width:1500px){.grid.g-3.results{grid-template-columns:repeat(4,1fr)}}

/* ══════════════════════════════════════════════════════════════════
   ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΔΙΑΒΑΖΟΝΤΑΙ ΟΠΩΣ Ο ΚΑΤΑΛΟΓΟΣ (v0.7.8)

   ΜΕΤΡΗΘΗΚΕ: το ΙΔΙΟ προϊόν έπιανε 350px στην αναζήτηση και 168,5px στο
   /proionta/ στα 390px — γιατί η αναζήτηση χρησιμοποιεί .g-3, που κάτω από
   460 πέφτει σε ΜΙΑ στήλη (είναι ο κανόνας των ΜΗΧΑΝΗΜΑΤΩΝ). Αποτέλεσμα στο
   «/?s=summe» (132 αποτελέσματα): σελίδα 12.311px αντί 5.822px, και 1,8
   ονόματα ανά οθόνη αντί 4,8.

   ΓΙΑΤΙ ΟΧΙ ΣΚΕΤΟ «δύο στήλες»: το πλέγμα της αναζήτησης είναι ΜΕΙΚΤΟ. Σε 27
   από 35 πραγματικά ερωτήματα υπάρχει τουλάχιστον μία κάρτα μηχανήματος, και
   ένα μηχάνημα στα 168px είναι ακριβώς το λάθος που καταγράφεται πιο πάνω.
   Οπότε: τα ΠΡΟΪΟΝΤΑ δύο-δύο, τα ΜΗΧΑΝΗΜΑΤΑ και οι ΣΕΛΙΔΕΣ σε όλο το πλάτος.
   Μετρημένο στα 390: «δέρμα» 12.203→5.775px, «κυτταρίτιδα» 10.002→7.195px με
   την πρώτη συσκευή να ανεβαίνει από το y=4.925 στο y=2.119.

   ΚΑΙ Η ΖΩΝΗ 561-700, για τον ίδιο λόγο που την απέκτησε ο κατάλογος: εκεί
   η αναζήτηση έμενε 2 στήλες ενώ ο κατάλογος πήγε 3, δηλαδή 989px παραπάνω
   σελίδα στα 700px για το ίδιο περιεχόμενο.
   ══════════════════════════════════════════════════════════════════ */
@media(max-width:460px){
  .grid.g-3.results{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid.g-3.results > .card:not(.card-prod){grid-column:1/-1}
}
@media(min-width:561px) and (max-width:700px){
  .grid.g-3.results{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid.g-3.results > .card:not(.card-prod){grid-column:1/-1}
}

/* ΔΟΚΙΜΑΣΤΗΚΕ ΚΑΙ ΑΠΟΡΡΙΦΘΗΚΕ: διεύρυνση του .sec-head .txt σε μεγάλη οθόνη.
   Ο τίτλος ΔΕΝ κέρδιζε γραμμή (767px αντί 646px, και στις δύο περιπτώσεις
   τέσσερις γραμμές) επειδή το text-wrap:balance εξισορροπεί το κουτί
   ανεξάρτητα από το διαθέσιμο πλάτος — ενώ η εισαγωγή από κάτω πήγαινε από
   68 σε 86 χαρακτήρες ανά γραμμή. Καθαρά χειρότερο. */

/* ── 10. ΧΑΡΤΗΣ ────────────────────────────────────────────────
   ΑΠΟΦΑΣΗ ΠΕΛΑΤΗ: φορτώνει απευθείας. Το aspect-ratio κρατά το κουτί
   δεσμευμένο πριν έρθει το iframe, ώστε να μη μετακινηθεί τίποτα στη
   σελίδα όταν φορτώσει (CLS 0). Ο χάρτης έρχεται σε ανοιχτό θέμα και
   μένει έτσι: φίλτρο σκούρανσης αλλοιώνει τα χρώματα και κάνει τις
   ονομασίες δρόμων δυσανάγνωστες. */
.mapbox{margin-top:1.6rem;border:1px solid var(--line);border-radius:var(--r);
  background:var(--panel);overflow:hidden;position:relative;aspect-ratio:16/10}
.mapbox iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
/* ΤΟ ΥΠΟΚΑΤΑΣΤΑΤΟ ΚΑΘΕΤΑΙ ΣΤΟ ΙΔΙΟ ΑΚΡΙΒΩΣ ΚΟΥΤΙ ΜΕ ΤΟ IFRAME.
   Γι' αυτό είναι absolute inset:0 μέσα στο ίδιο .mapbox: η εναλλαγή
   υποκατάστατο → χάρτης δεν μετακινεί ούτε ένα pixel της σελίδας (CLS 0),
   και το aspect-ratio που ήδη υπάρχει κρατά το ύψος σε κάθε πλάτος. */
.mapgate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:.55rem;text-align:center;padding:clamp(14px,3vw,26px);
  background:var(--panel);overflow:auto}
.mapgate-pin{color:var(--ink-3);flex:none}
.mapgate-h{font-family:var(--f-display);font-size:.98rem;margin:0;color:var(--ink)}
.mapgate-p{margin:0;font-size:.82rem;line-height:1.6;color:var(--ink-2);max-width:32.81em}
.mapgate-addr{margin:.15rem 0 0;font-size:.85rem;color:var(--ink);font-weight:600}
.mapgate-act{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;justify-content:center;
  margin-top:.3rem}
/* ΤΟ [hidden] ΘΕΛΕΙ ΡΗΤΟ ΚΑΝΟΝΑ ΕΔΩ. Το .btn ορίζει display:inline-flex και
   κερδίζει από το προεπιλεγμένο display:none του περιηγητή για το [hidden] —
   δηλαδή το κουμπί θα φαινόταν και χωρίς JavaScript, νεκρό. */
.mapgate .btn[hidden]{display:none}
.mapgate-out{display:inline-flex;align-items:center;gap:.35em;font-size:.82rem;
  color:var(--ink-2);border-bottom:1px solid var(--line-3);padding:6px 0}
.mapgate-out:hover{color:var(--ink);border-bottom-color:var(--ink-3)}
.mapgate-more{margin:.2rem 0 0;font-size:.76rem;color:var(--ink-3)}
.mapgate-more a{color:var(--ink-2);border-bottom:1px solid var(--line-2)}
.mapgate-note{margin:.75rem 0 0;font-size:.76rem;color:var(--ink-3);line-height:1.55}
/* Σε πολύ κοντό κουτί (4/3 σε τηλέφωνο 320px) η μακροσκελής πρόταση δεν
   χωρά. Φεύγει ΜΟΝΟ αυτή· η σύντομη από κάτω εξακολουθεί να λέει ότι η
   Google μαθαίνει τη διεύθυνση IP — η ουσία δεν κόβεται ποτέ. */
.mapgate-short{display:none}
@media(max-width:380px){
  .mapgate-long{display:none}
  .mapgate-short{display:block}
}
.btn-sm{padding:9px 17px;font-size:.82rem}
@media(max-width:560px){.mapbox{aspect-ratio:4/3}}

/* Στον πίνακα επικοινωνίας το τηλέφωνο και το email ΕΙΝΑΙ σύνδεσμοι, αλλά
   μετρήθηκαν ταυτόσημα με τη διεύθυνση και το ωράριο που δεν είναι: ίδιο
   χρώμα, ίδιο βάρος, μηδέν υπογράμμιση, μηδέν περίγραμμα — η μόνη διαφορά
   ήταν ο δείκτης του ποντικιού. Το σήμα δεν μπορεί να είναι μόνο χρώμα
   (WCAG 1.4.1), γι' αυτό μπαίνει κάτω περίγραμμα. */
.specs-contact td a{border-bottom:1px solid var(--line-3);
  transition:border-color .18s,color .18s}
.specs-contact td a:hover{border-bottom-color:var(--red)}

/* ── 11. ΚΡΙΤΙΚΕΣ GOOGLE ──────────────────────────────────────
   Η ΚΙΝΗΣΗ ΕΙΝΑΙ transform ΚΑΙ ΜΟΝΟ. Το ίδιο εφέ γραμμένο με animation σε
   `top` ή `margin-top` ζητά επανασχεδίαση σε κάθε καρέ — το μετρήσαμε σε
   άλλη ζώνη αυτού του θέματος και κόστιζε 6–12% ενός πυρήνα, μόνιμα. */
.reviews{background:var(--bg-2);border-block:1px solid var(--line)}
.rv-score{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;
  font-family:var(--f-display);color:var(--ink-2);flex:none}
.rv-score b{font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1}
.rv-score span{font-size:.8rem;color:var(--ink-3)}
.rv-score:hover{color:var(--ink)}
.stars{display:inline-flex;gap:2px;line-height:0}
.stars svg.on{fill:#F5B731}
.stars svg.off{fill:var(--line-2)}

.rv-cols{display:grid;gap:clamp(13px,1.6vw,22px);
  /* Το κάδρο κόβεται πάνω και κάτω με ξεθώριασμα, ώστε οι κάρτες να
     μπαινοβγαίνουν αντί να κόβονται απότομα στην ακμή. */
  max-height:min(78vh,680px);overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent);
          mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent)}
.rv-cols[data-cols="2"]{grid-template-columns:repeat(2,1fr)}
.rv-cols[data-cols="3"]{grid-template-columns:repeat(3,1fr)}
.rv-col{overflow:hidden}
.rv-track{display:flex;flex-direction:column;gap:clamp(13px,1.6vw,22px);
  will-change:transform;animation:gld-rv var(--rv-dur,30s) linear infinite}
.rv-dup{display:flex;flex-direction:column;gap:clamp(13px,1.6vw,22px)}
/* Το -50% δουλεύει ΜΟΝΟ επειδή το δεύτερο αντίγραφο είναι ακριβώς ίσο με το
   πρώτο ΚΑΙ το gap του .rv-track μετράει μία φορά ανάμεσά τους: γι' αυτό το
   αντίγραφο είναι flex column με το ΙΔΙΟ gap, όχι σκέτα αδέλφια. */
@keyframes gld-rv{from{transform:translateY(0)}to{transform:translateY(-50%)}}
/* ΟΙ ΛΩΡΙΔΕΣ ΔΕΝ ΣΤΑΜΑΤΟΥΝ ΠΛΕΟΝ — ΑΠΟΦΑΣΗ ΔΗΜΟΣΘΕΝΗ 20/09, v0.10.4.
   Εδώ υπήρχε `.rv-cols:hover, .rv-cols:focus-within {animation-play-state:paused}`
   με αιτιολογία «αλλιώς δεν προλαβαίνεις να διαβάσεις ό,τι σε τράβηξε».
   ⚠ ΜΗΝ ΤΟ ΞΑΝΑΒΑΛΕΙΣ ΩΣ «ΔΙΟΡΘΩΣΗ». Δεν είναι σφάλμα που λείπει· είναι
   ζητούμενο. Το τίμημα είναι γνωστό και έγινε δεκτό: μια κριτική που τράβηξε
   το μάτι συνεχίζει να φεύγει όσο τη διαβάζεις.
   ΤΟ ΠΑΤΩΜΑ ΜΕΝΕΙ: το prefers-reduced-motion παρακάτω εξακολουθεί να κόβει
   ΟΛΗ την κίνηση και να αφήνει τις κάρτες σε λωρίδα που κυλά ο χρήστης. */

.rv-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(18px,2.2vw,26px);display:flex;flex-direction:column;gap:.85rem}
.rv-text{margin:0;color:var(--ink-2);line-height:1.66;font-size:.92rem;
  overflow-wrap:anywhere}
.rv-who{display:flex;align-items:center;gap:.65rem;margin-top:auto}
.rv-who img{width:36px;height:36px;border-radius:50%;object-fit:cover;flex:none;
  background:var(--panel-2)}
/* ΜΕΤΑ το .rv-who img, ποτέ πριν: κανόνας τοποθετημένος πριν τη βάση του
   είναι νεκρός. Ίδια γεωμετρία 36px με τη φωτογραφία που αντικατέστησε,
   ώστε να μην αλλάξει κανένα ύψος κάρτας και να μην ξανανοίξει το κενό του
   βρόχου. Η απόχρωση έρχεται από το όνομα (crc32), η φωτεινότητα μένει
   σταθερή στο 30%: μετρήθηκε η ΧΕΙΡΟΤΕΡΗ απόχρωση και των 360, όχι μία. */
/* ⚠ «.rv-who .rv-ini», ΟΧΙ ΣΚΕΤΟ «.rv-ini». Ο δίσκος είναι <span> ΜΕΣΑ στο
   .rv-who, και δύο γραμμές πιο πάνω υπάρχει ήδη «.rv-who span{font-size:.74rem;
   color:var(--ink-3)}» — κλάση + τύπος, δηλαδή ΜΕΓΑΛΥΤΕΡΗ ειδικότητα από μία
   σκέτη κλάση. Το γράμμα έβγαινε γκρι 0,74rem αντί για λευκό 0,95rem και η
   αντίθεση μετρήθηκε 1,95:1 αντί για 5,95:1.
   ΤΟ ΜΑΤΙ ΔΕΝ ΤΟ ΕΠΙΑΝΕ: γκρι γράμμα σε χρωματιστό δίσκο φαίνεται μια χαρά
   μέχρι να το μετρήσεις. Το βρήκε η μέτρηση και των 360 αποχρώσεων. */
.rv-who .rv-ini{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-family:var(--f-display);font-weight:700;font-size:.95rem;
  color:#FFFFFF;background:hsl(var(--rv-h,0) 24% 30%)}
.rv-who div{display:flex;flex-direction:column;min-width:0;flex:1}
.rv-who b{font-family:var(--f-display);font-size:.88rem;color:var(--ink);
  overflow-wrap:anywhere}
.rv-who span{font-size:.74rem;color:var(--ink-3)}
.rv-link{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;
  color:var(--ink-3);flex:none}
.rv-link:hover{color:var(--ink);background:var(--panel-2)}

@media(max-width:900px){.rv-cols[data-cols="3"]{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){
  .rv-cols[data-cols="2"],.rv-cols[data-cols="3"]{grid-template-columns:1fr}
  .rv-cols{max-height:min(70vh,520px)}
}
/* ΧΩΡΙΣ ΚΙΝΗΣΗ: οι κάρτες ΜΕΝΟΥΝ και γίνονται λίστα με κύλιση από τον χρήστη.
   Αν απλώς σταματούσε η κίνηση, ο μισός κατάλογος θα ήταν αόρατος για πάντα. */
@media(prefers-reduced-motion:reduce){
  .rv-track{animation:none;will-change:auto}
  .rv-dup{display:none}
  .rv-cols{max-height:none;overflow:visible;-webkit-mask-image:none;mask-image:none}
}
@media print{.reviews{display:none}}

/* ⚠ ΤΟ flex-direction ΠΡΕΠΕΙ ΝΑ ΔΗΛΩΘΕΙ ΡΗΤΑ. Το .rv-dup ορίζεται παραπάνω ως
   `display:flex;flex-direction:column` για τις ΚΑΘΕΤΕΣ στήλες. Μέσα στην
   οριζόντια λωρίδα κληρονομούσε τη στήλη, στοίβαζε τις πέντε κάρτες
   κατακόρυφα και έδινε ύψος σειράς 1.738px — δηλαδή ΚΑΘΕ κάρτα τεντωνόταν
   στα 1.738px από το align-items:stretch. Φάνηκε μόνο με μέτρηση ύψους.

   Οριζόντια λωρίδα — η διάταξη που δουλεύει με το ταβάνι των 5 κριτικών
   του Places API. Κάρτα σταθερού πλάτους: χωρίς αυτό, μία μακριά κριτική θα
   τέντωνε το κελί και ο υπολογισμός των επαναλήψεων θα έπεφτε έξω. */
.rv-marquee{overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.rv-row{display:flex;align-items:stretch;gap:clamp(13px,1.6vw,22px);width:max-content;
  will-change:transform;animation:gld-rv-x var(--rv-dur,45s) linear infinite}
.rv-row > .rv-dup{display:flex;flex-direction:row;align-items:stretch;
  gap:clamp(13px,1.6vw,22px)}
.rv-row .rv-card{flex:0 0 clamp(258px,26vw,330px)}
@keyframes gld-rv-x{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* Ομοίως, χωρίς παύση — βλ. σημείωση στον κανόνα .rv-track παραπάνω. */
@media(prefers-reduced-motion:reduce){
  /* Η κίνηση φεύγει, οι κάρτες ΜΕΝΟΥΝ: γίνονται λωρίδα με κύλιση από τον
     χρήστη. Αν απλώς πάγωνε, οι μισές θα ήταν αόρατες για πάντα. */
  .rv-row{animation:none;will-change:auto}
  .rv-row > .rv-dup{display:none}
  .rv-marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none;
    scroll-snap-type:x proximity;padding-bottom:6px}
  .rv-row .rv-card{scroll-snap-align:start}
}

/* ══════════════════════════════════════════════════════════════════
   ΛΩΡΙΔΑ ΒΑΘΜΟΛΟΓΙΑΣ — όταν υπάρχουν αστέρια αλλά ΚΑΝΕΝΑ κείμενο.

   Μετρήθηκε στο προφίλ του GLD (11/09): 15 βαθμολογίες, μέσος όρος 5,0,
   και οι πέντε κριτικές που δίνει το API είναι ΟΛΕΣ χωρίς λέξη. Κάρτες με
   όνομα και αστέρια και κενό ανάμεσα διαβάζονται ως «κάτι δεν φόρτωσε».
   Μία λωρίδα λέει το ίδιο πράγμα χωρίς να υπόσχεται περιεχόμενο που
   δεν υπάρχει, και ο σύνδεσμος την κάνει επαληθεύσιμη σε ένα κλικ.

   ΧΩΡΙΣ auto margin: το δοχείο κάνει wrap, και το auto margin μέσα σε
   flex που τυλίγεται στέλνει το στοιχείο στην άκρη μόνο της πρώτης
   σειράς — στο κινητό θα κρεμόταν μόνο του δεξιά.
   ══════════════════════════════════════════════════════════════════ */
.reviews-score{padding-block:clamp(24px,3vw,40px)}
.rv-badge{display:flex;align-items:center;justify-content:center;
  gap:clamp(14px,2.2vw,28px);flex-wrap:wrap;
  max-width:740px;margin-inline:auto;
  padding:clamp(16px,2vw,22px) clamp(18px,2.4vw,30px);
  border:1px solid var(--line);border-radius:14px;background:var(--bg);
  color:var(--ink-2);text-decoration:none;
  transition:border-color .18s ease,transform .18s ease}
.rv-badge:hover{border-color:var(--line-3);transform:translateY(-1px)}
.rv-badge:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
/* Το G σε συμπαγές ανοιχτό χρώμα — η μόνη μονόχρωμη χρήση που επιτρέπει
   η Google σε σκούρο φόντο. */
.rv-g{color:var(--ink);flex:none}
.rv-num{display:flex;align-items:center;gap:.55rem}
.rv-num b{font-size:clamp(1.65rem,3vw,2.1rem);font-weight:800;color:var(--ink);
  line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.rv-badge .stars svg{width:16px;height:16px}
.rv-meta{display:flex;flex-direction:column;line-height:1.38}
.rv-meta b{color:var(--ink);font-size:.95rem;font-weight:700}
.rv-meta span{font-size:.8rem;color:var(--ink-3)}
.rv-go{display:inline-flex;align-items:center;gap:.42rem;
  font-size:.85rem;font-weight:600;color:var(--ink);
  border-bottom:1px solid var(--line-3);padding-block-end:3px}
.rv-go svg{stroke:currentColor}
.rv-badge:hover .rv-go{border-bottom-color:var(--ink)}
@media (max-width:560px){
  .rv-badge{gap:12px 16px;padding:18px}
  .rv-meta{align-items:flex-start}
}
@media (prefers-reduced-motion:reduce){
  .rv-badge{transition:border-color .18s ease}
  .rv-badge:hover{transform:none}
}

/* Κάρτα ΧΩΡΙΣ κείμενο: η κενή παράγραφος δεν τυπώνεται καθόλου, οπότε η κάρτα
   μαζεύεται μόνη της. Δίνουμε στενότερο πλάτος ώστε να μη μοιάζει με κουτί που
   περιμένει περιεχόμενο, και λίγο αέρα ανάμεσα σε αστέρια και όνομα. */
/* 320 και όχι 300: στα 300 το «Evaggelia Zampetoglou» έσπαγε σε δύο γραμμές,
   και επειδή η σειρά είναι align-items:stretch ΜΙΑ κάρτα ανέβαζε ΟΛΕΣ στα
   160px — δηλαδή κενό πάτο παντού εξαιτίας ενός ονόματος.
   Το .rv-who έχει ήδη margin-top:auto· δεύτερο περιθώριο ήταν περιττό. */
.rv-card-bare{min-width:248px;max-width:320px}

/* ══════════════════════════════════════════════════════════════════
   ΚΑΘΕΤΕΣ ΣΤΗΛΕΣ — ΔΙΟΡΘΩΣΕΙΣ ΠΛΑΤΟΥΣ ΚΑΙ ΚΙΝΗΤΟΥ (v0.7.4)

   1fr σε δοχείο 1240px έδινε στήλες 610px με κάρτες 320px μέσα: όλο το
   δεξί τρίτο έμενε κενό. Οι στήλες παίρνουν πλέον πλάτος κάρτας και
   κεντράρονται — μετρήθηκε στο στιγμιότυπο, δεν φαινόταν στους αριθμούς.
   ══════════════════════════════════════════════════════════════════ */
.rv-cols[data-cols="2"]{grid-template-columns:repeat(2,minmax(0,340px));justify-content:center}
.rv-cols[data-cols="3"]{grid-template-columns:repeat(3,minmax(0,340px));justify-content:center}
@media(max-width:900px){
  .rv-cols[data-cols="3"]{grid-template-columns:repeat(2,minmax(0,340px))}
}
/* Το max-width ίσχυε παντού και κρατούσε τις κάρτες στενές ΚΑΙ μέσα στη
   στήλη. Περιορίζεται στην οριζόντια λωρίδα, όπου όντως χρειάζεται. */
.rv-card-bare{min-width:0;max-width:none}
.rv-row .rv-card-bare{max-width:320px}

/* ΚΙΝΗΤΟ: ΟΧΙ ΚΥΛΙΣΗ, ΛΙΣΤΑ. Με μία στήλη σε κάδρο 520px, η δεύτερη στήλη
   κοβόταν ΟΛΟΚΛΗΡΗ — δύο κριτικές δεν τις έβλεπε ποτέ κανείς στο κινητό.
   Κάτω από 620px η ενότητα γίνεται απλή λίστα με τις διακριτές κριτικές:
   τα αντίγραφα του βρόχου δεν έχουν λόγο ύπαρξης χωρίς κίνηση. */
@media(max-width:620px){
  /* Στο κινητό μένει ΜΙΑ στήλη — και οι τρεις έχουν τον ίδιο κατάλογο,
     γυρισμένο. Η κίνηση ορίζεται στο μπλοκ παρακάτω. */
  .rv-cols > .rv-col:not(:first-child){display:none}
}

/* ⚠ ΑΥΤΟ ΤΟ ΜΠΛΟΚ ΠΡΕΠΕΙ ΝΑ ΜΕΝΕΙ ΤΕΛΕΥΤΑΙΟ. Οι κανόνες grid-template-columns
   παραπάνω έχουν ΙΔΙΑ ειδικότητα με το παλιό @media(max-width:620px), και
   επειδή γράφτηκαν αργότερα το νικούσαν ΜΕΣΑ στο κινητό: τρεις στήλες των
   ~110px σε οθόνη 390px, με τα ονόματα να σπάνε συλλαβή-συλλαβή. Φάνηκε μόνο
   στο στιγμιότυπο — οι αριθμοί έδειχναν «καμία υπερχείλιση». */
@media(max-width:900px){
  /* Με δύο τροχιές, η ΤΡΙΤΗ στήλη τυλίγεται σε νέα γραμμή και την κόβει το
     max-height: υπάρχει στο DOM, κινείται, και δεν τη βλέπει κανείς. */
  .rv-cols[data-cols="3"] > .rv-col:nth-child(3){display:none}
}
@media(max-width:620px){
  .rv-cols[data-cols="2"],.rv-cols[data-cols="3"]{grid-template-columns:1fr}
  /* ΚΙΝΕΙΤΑΙ ΚΑΙ ΣΤΟ ΚΙΝΗΤΟ. Πριν γινόταν στατική λίστα — αλλά μία στήλη με
     ΟΛΟΚΛΗΡΟ τον κατάλογο κυλά μια χαρά· απλώς θέλει κάδρο για να έχει πού. */
  .rv-cols{max-height:min(64vh,440px);overflow:hidden;
    -webkit-mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent);
            mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent)}
  .rv-col .rv-dup{display:flex}
  .rv-col .rv-card[aria-hidden="true"]{display:flex}
  /* ΡΗΤΑ, γιατί προηγούμενος κανόνας ίδιας ειδικότητας την είχε σβήσει. */
  .rv-track{animation:gld-rv var(--rv-dur,30s) linear infinite;will-change:transform}
}
/* Ο χρήστης που ζητά λιγότερη κίνηση παίρνει ΠΑΝΤΑ τη στατική λίστα — και σε
   κινητό. Αυτό το μπλοκ μένει ΜΕΤΑ το παραπάνω, αλλιώς το κινητό το νικά. */
@media(prefers-reduced-motion:reduce){
  .rv-cols{max-height:none;overflow:visible;
    -webkit-mask-image:none;mask-image:none}
  .rv-track{animation:none;will-change:auto}
  .rv-col .rv-dup{display:none}
  .rv-col .rv-card[aria-hidden="true"]{display:none}
  /* Χωρίς τα αντίγραφα, οι στήλες 2 και 3 αδειάζουν τελείως (μετρήθηκαν σε
     -22px, δηλαδή μόνο το gap). Κρατάμε μία στήλη με τον πλήρη κατάλογο. */
  .rv-cols > .rv-col:not(:first-child){display:none}
}

/* ══════════════════════════════════════════════════════════════════
   ΚΕΦΑΛΙΔΑ ΕΝΟΤΗΤΑΣ + ΚΟΥΜΠΙ «ΓΡΑΨΤΕ ΚΡΙΤΙΚΗ» (v0.7.4)
   ══════════════════════════════════════════════════════════════════ */
.rv-head{display:flex;flex-direction:column;align-items:flex-start;gap:.85rem}
@media(min-width:901px){.rv-head{align-items:flex-end}}
.rv-write{display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap}
.rv-write svg{fill:#F5B731;flex:none}

/* Πιάσιμο στην κάρτα: η κίνηση σταματά στο hover, οπότε η κάρτα κάτω από τον
   δείκτη πρέπει να δείχνει ότι ΑΥΤΗ είναι η επιλεγμένη. */
.rv-card{transition:border-color .18s ease,background-color .18s ease}
.rv-col .rv-card:hover{border-color:var(--line-3);background:var(--panel-2)}
.rv-card:focus-within{border-color:var(--line-3)}

/* Οι αριθμοί του σκορ σε tabular ώστε να μην «χοροπηδούν» αν αλλάξει η
   βαθμολογία, και λίγο μεγαλύτερο κενό από την επικεφαλίδα. */
.rv-score b{font-variant-numeric:tabular-nums}
.reviews .sec-head{align-items:start;gap:clamp(16px,2vw,28px)}

/* ══════════════════════════════════════════════════════════════════
   ΛΟΓΟΤΥΠΟ ΥΠΟΣΕΛΙΔΟΥ ΜΕ ΑΠΟΚΑΛΥΨΗ ΣΤΟΝ ΔΕΙΚΤΗ (v0.7.4)

   ΤΡΙΑ ΚΕΙΜΕΝΑ ΤΟ ΕΝΑ ΠΑΝΩ ΣΤΟ ΑΛΛΟ:
     .f-mark-base  σβηστό περίγραμμα, πάντα εκεί
     .f-mark-draw  το ίδιο περίγραμμα που «γράφεται» ΜΙΑ ΦΟΡΑ μόλις φανεί
     .f-mark-hot   χρωματιστό, ορατό ΜΟΝΟ μέσα από τη μάσκα — ένα φως που
                   περνά μόνο του σε βρόχο (v0.10.1) ή ακολουθεί τον δείκτη.
                   Ο βρόχος τρέχει στο theme.js ΜΟΝΟ όσο φαίνεται το λογότυπο.

   ⚠ ΤΟ stroke-dashoffset ΓΡΑΦΕΤΑΙ ΜΙΑ ΦΟΡΑ, ΔΕΝ ΕΠΑΝΑΛΑΜΒΑΝΕΤΑΙ. Σε
   συνεχή βρόχο κοστίζει repaint σε κάθε καρέ (μετρημένο αλλού: 6–12%
   ενός πυρήνα ΣΥΝΕΧΕΙΑ). Εδώ τρέχει 1,6s και τελειώνει — `forwards`.

   ΧΡΩΜΑΤΑ ΤΟΥ GLD, ΟΧΙ ΟΥΡΑΝΙΟ ΤΟΞΟ: κόκκινο μάρκας → πορτοκαλί → το
   κεχριμπάρι των αστεριών. Πέντε άσχετα χρώματα θα χτυπούσαν με όλο το
   υπόλοιπο site.
   ══════════════════════════════════════════════════════════════════ */
.f-mark{display:none;margin:clamp(18px,2.5vw,34px) 0 -8px;line-height:0;
  pointer-events:none}
@media(min-width:1081px){.f-mark{display:block}}
.f-mark svg{width:100%;height:auto;overflow:visible}
.f-mark text{font-family:var(--f-display),system-ui,sans-serif;
  font-weight:800;font-size:104px;letter-spacing:.02em;fill:transparent}
.f-mark-base{stroke:var(--line-2);stroke-width:.9}
.f-mark-draw{stroke:var(--line-3);stroke-width:.9;
  stroke-dasharray:1400;stroke-dashoffset:1400}
.f-mark.on .f-mark-draw{animation:gld-mark-draw 1.6s ease-in-out forwards}
@keyframes gld-mark-draw{to{stroke-dashoffset:0}}
.f-mark-hot{stroke:url(#gld-mark-g);stroke-width:1.3;opacity:0;
  transition:opacity .6s ease}
.f-mark.hot .f-mark-hot{opacity:1}

/* Το υποσέλιδο δέχεται τον δείκτη· το ίδιο το λογότυπο όχι (pointer-events
   none), ώστε να μη «σκεπάζει» τους συνδέσμους από πάνω του. */
.footer{position:relative}

@media(prefers-reduced-motion:reduce){
  /* Ίδιος επιλογέας με τον κανόνα της κίνησης (0,3,0)· σκέτο .f-mark-draw έχανε. */
  .f-mark-draw,.f-mark.on .f-mark-draw{stroke-dashoffset:0;animation:none}
  .f-mark-hot{transition:none}
}
@media print{.f-mark{display:none}}

/* ══════════════════════════════════════════════════════════════════
   ΣΧΗΜΑΤΙΚΕΣ ΔΙΑΔΡΟΜΕΣ ΦΟΝΤΟΥ (v0.7.4)

   Το πρότυπο που ζητήθηκε είχε ΤΕΣΣΕΡΑ εφέ μαζί· εδώ μπαίνει ΜΟΝΟ αυτό.
   Το ουράνιο τόξο σε <h1>, οι διαγώνιες ρίγες που κυλούν και ο παλμός στο
   κουμπί μένουν έξω — τεκμηρίωση στο παραδοτέο.

   ⚠ ΤΟ ΓΡΑΨΙΜΟ ΤΕΛΕΙΩΝΕΙ. `forwards`, όχι `infinite`: το stroke-dashoffset
   ξαναζωγραφίζει τη διαδρομή σε κάθε καρέ.
   ══════════════════════════════════════════════════════════════════ */
.has-traces{position:relative;isolation:isolate}
.traces{position:absolute;inset:0;z-index:-1;overflow:hidden;
  pointer-events:none;
  /* ΚΑΜΙΑ ΜΑΣΚΑ ΠΛΑΤΟΥΣ. Οι διαδρομές είναι ήδη περιορισμένες σε δύο
     οριζόντιες λωρίδες όπου δεν υπάρχει περιεχόμενο σε κανένα πλάτος. Μια
     μάσκα με ποσοστά θα υπέθετε πλάτος στήλης που αλλάζει στα 1500 και 1900. */
  -webkit-mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);
          mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent)}
.traces svg{position:absolute;inset:0;width:100%;height:100%}
.tr-line{fill:none;stroke:var(--line-3);opacity:.5;stroke-width:1.2;
  stroke-dasharray:1600;stroke-dashoffset:1600}
.has-traces.on .tr-line{animation:gld-trace 1.8s ease-out var(--tr-delay,0ms) forwards}
@keyframes gld-trace{to{stroke-dashoffset:0}}
.tr-dot{fill:var(--red);opacity:0}
.has-traces.on .tr-dot{animation:gld-trace-dot .5s ease-out var(--tr-delay,0ms) forwards}
@keyframes gld-trace-dot{to{opacity:.85}}

/* Κάτω από 701px η ζώνη γίνεται στήλη και οι οριζόντιες διαδρομές δεν
   αντιστοιχούν πια σε τίποτα — φεύγουν. */
@media(max-width:700px){.traces{display:none}}
@media(prefers-reduced-motion:reduce){
  .tr-line,.has-traces.on .tr-line{stroke-dashoffset:0;animation:none}
  .tr-dot,.has-traces.on .tr-dot{opacity:.85;animation:none}
}
@media print{.traces{display:none}}

/* ══════════════════════════════════════════════════════════════════
   ΣΕΛΙΔΑ ΕΠΙΚΟΙΝΩΝΙΑΣ — ΣΤΙΛΒΩΣΗ ΦΟΡΜΑΣ (v0.7.4)

   ΜΕΤΡΗΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ ΠΡΙΝ:
   · αριστερή στήλη 1018px, δεξιά 598px → τρύπα 420px κάτω από τη φόρμα
   · textarea 60px στο κινητό (ο κανόνας στόχου αφής 46px ΑΝΤΙΚΑΘΙΣΤΑ το
     min-height:120px — φτιάχτηκε χωριστά, βλ. παρακάτω)
   · input 43px vs select 44px δίπλα-δίπλα
   · checkbox συγκατάθεσης 13×13 — κάτω από κάθε όριο στόχου
   ══════════════════════════════════════════════════════════════════ */

/* ── Επικεφαλίδα στήλης φόρμας ───────────────────────────────── */
.formhead{margin-block-end:1.4rem}
.formhead h2{font-size:clamp(1.15rem,1.7vw,1.4rem);margin:0 0 .4rem}
.formhead .small{color:var(--ink-3);margin:0}

/* ── Πεδία: ΙΔΙΟ ύψος, ίδια συμπεριφορά ──────────────────────── */
/* ⚠ ΦΡΑΓΜΕΝΟ ΣΕ ΠΟΝΤΙΚΙ. Γραμμένο ασυνθήκευτα, αυτό το 44px ΝΙΚΟΥΣΕ (ίδια
   ειδικότητα, πιο κάτω στο αρχείο) το δάπεδο αφής των 46px: στο κινητό το
   select έπεφτε στα 44 ενώ τα input έμεναν 46 — δηλαδή η «διόρθωση
   παριτέτας» γεννούσε ΚΑΙ ανισότητα ΚΑΙ μικρότερο στόχο. Στις συσκευές αφής
   ισχύει το 46 και για τα δύο, άρα η παριτέτα κρατά έτσι κι αλλιώς. */
@media(min-width:701px) and (hover:hover){
  .field input,.field select{min-height:44px}
}
/* Το `transition:all` άλλαζε και ό,τι δεν θέλαμε (π.χ. ύψος σε resize).
   Ονομάζουμε τις ιδιότητες. */
.field input,.field select,.field textarea{
  transition:border-color .16s ease,background-color .16s ease}
.field:focus-within label{color:var(--ink-2)}
.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--ink-3)}

/* Το select είχε το ΦΥΣΙΚΟ βελάκι του λειτουργικού: άλλο σχήμα, άλλο χρώμα,
   άλλο πλάτος ανά πλατφόρμα, δίπλα σε πεδία με δικό μας στυλ. */
.field select{
  appearance:none;-webkit-appearance:none;
  padding-inline-end:38px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%23AFB4BC' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:12px 8px}
/* Όσο δεν έχει επιλεγεί τίποτα, η τιμή διαβάζεται ως οδηγία, όχι ως απάντηση. */
.field select:has(option[value=""]:checked){color:var(--ink-3)}

/* ── ΣΦΑΛΜΑ ΜΟΝΟ ΜΕΤΑ ΑΠΟ ΑΛΛΗΛΕΠΙΔΡΑΣΗ ─────────────────────────
   Το :invalid βάφει κόκκινα ΟΛΑ τα υποχρεωτικά πεδία με το που φορτώσει η
   σελίδα — ο επισκέπτης βλέπει έξι σφάλματα πριν γράψει λέξη. Το
   :user-invalid ενεργοποιείται μόνο αφού ασχοληθεί με το πεδίο. */
/* ΠΕΡΙΟΡΙΣΜΕΝΟ ΣΤΗ ΦΟΡΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ. Ασυνθήκευτο, θα έβαφε κόκκινο και το
   πεδίο αναζήτησης της κεφαλίδας — που είναι κι αυτό `required` και ζει σε
   `.field` σε ΚΑΘΕ σελίδα: κλικ, μετά κλικ αλλού, και η αναζήτηση «σφάλμα». */
.formcol .field input:user-invalid,
.formcol .field select:user-invalid,
.formcol .field textarea:user-invalid{
  border-color:var(--red-hi);background:rgba(237,28,36,.06)}
.formcol .field input:user-valid,
.formcol .field textarea:user-valid{border-color:rgba(120,200,140,.5)}

/* ── Συγκατάθεση φόρμας: πραγματικός στόχος, όχι 13 pixel ─────
   ⚠ ΟΧΙ «.consent»: ΥΠΑΡΧΕΙ ΗΔΗ στο θέμα και είναι το ΜΠΑΝΕΡ COOKIES
   (`position:fixed; inset:auto 0 0 0; z-index:90`, inc/consent.php). Η
   ετικέτα της φόρμας κληρονόμησε το fixed και βγήκε λωρίδα σε ΟΛΟ το πλάτος
   πάνω από τον χάρτη. Φάνηκε μόνο στο στιγμιότυπο — καμία μέτρηση δεν
   χτύπησε. Πάντα grep το όνομα κλάσης ΠΡΙΝ το γράψεις. */
.form-consent{display:flex;gap:.75rem;align-items:flex-start;
  margin:.5rem 0 .2rem;padding:12px 14px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2);
  transition:border-color .16s ease}
.form-consent:hover{border-color:var(--line-2)}
.form-consent:focus-within{border-color:var(--line-3)}
.form-consent input[type=checkbox]{
  appearance:none;-webkit-appearance:none;
  width:20px;height:20px;flex:none;margin:1px 0 0;
  border:1.5px solid var(--line-3);border-radius:6px;background:var(--bg);
  cursor:pointer;transition:border-color .14s ease,background-color .14s ease}
.form-consent input[type=checkbox]:checked{background:var(--red-btn);border-color:var(--red-btn)}
.form-consent input[type=checkbox]:checked::after{
  content:"";display:block;width:5px;height:10px;margin:2px auto 0;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg)}
.form-consent input[type=checkbox]:user-invalid{border-color:var(--red-hi)}
.form-consent span{color:var(--ink-2)}

/* ── Χάρτης σε πλήρες πλάτος ─────────────────────────────────── */
.mapfull{margin-top:clamp(28px,4vw,52px)}
.mapfull .mapbox{margin-top:0;aspect-ratio:21/7}
@media(max-width:900px){.mapfull .mapbox{aspect-ratio:16/10}}

/* ── ΔΙΟΡΘΩΣΗ ΣΤΟΧΟΥ ΑΦΗΣ: το textarea ΔΕΝ είναι πεδίο μιας γραμμής ──
   Οι δύο κανόνες «min-height:46px» (700px και συσκευές αφής) έγραφαν ΞΑΝΑ
   το min-height του textarea, οπότε το μήνυμα — το πιο σημαντικό πεδίο της
   φόρμας — έπεφτε από 120px σε 60px και έμοιαζε με πεδίο μιας γραμμής.
   Το 46px ήταν ΔΑΠΕΔΟ για στόχους αφής, όχι ταβάνι. */
@media(max-width:700px),(hover:none){
  .form textarea{min-height:132px}
}

/* ── ΚΟΥΜΠΙ ΣΕ ΑΠΟΣΤΟΛΗ ──────────────────────────────────────────
   Το JS έβαζε ήδη data-busy και άλλαζε το κείμενο σε «Αποστολή…», αλλά
   τίποτα δεν ΚΙΝΟΥΝΤΑΝ: σε αργή σύνδεση το κουμπί έμοιαζε παγωμένο και ο
   επισκέπτης ξαναπατούσε. Το ::after επιβιώνει της αλλαγής textContent —
   είναι ψευδοστοιχείο, όχι παιδί. */
.btn[data-busy]{pointer-events:none}
.btn[data-busy]::after{content:"";width:14px;height:14px;flex:none;
  margin-inline-start:.5rem;border-radius:50%;
  border:2px solid rgba(255,255,255,.32);border-top-color:#fff;
  animation:gld-spin .7s linear infinite}
@keyframes gld-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){
  /* Δεν σβήνει — είναι η ΜΟΝΗ ένδειξη ότι κάτι τρέχει· απλώς αργεί. */
  .btn[data-busy]::after{animation-duration:2.2s}
}

/* ══════════════════════════════════════════════════════════════════
   ΤΕΧΝΙΚΗ ΥΠΟΣΤΗΡΙΞΗ — ΔΙΑΤΑΞΗ (v0.7.4)

   ΜΕΤΡΗΘΗΚΕ ΠΡΙΝ: σελίδα 1.933px με 138 λέξεις. Το κείμενο έπιανε μία
   στήλη 706px και δεξιά έμεναν ~640px κενά σε ΟΛΟ το ύψος. Οι πέντε
   υπηρεσίες — το βασικό επιχείρημα της εταιρείας — ήταν απλές κουκκίδες.

   ΚΑΜΙΑ ΝΕΑ ΛΕΞΗ: το ίδιο `post_content`, άλλη διάταξη.
   ══════════════════════════════════════════════════════════════════ */
/* ΕΝΑ ΜΠΛΟΚ ΓΙΑ ΤΗΝ ΚΑΡΤΑ, ΕΝΑ ΓΙΑ ΤΙΣ ΣΤΗΛΕΣ. Πρώτη εκδοχή είχε το στυλ
   της κάρτας ΜΟΝΟ στο ≥901 και ξεχωριστό, μισό αντίγραφο στο 701–900: στα
   tablet οι κάρτες έβγαιναν ΧΩΡΙΣ αρίθμηση. Το είδε ο έλεγχος στα 800px. */
@media(min-width:701px){
  /* Το .prose είναι 70ch για ΑΝΑΓΝΩΣΙΜΟΤΗΤΑ — αυτό ισχύει για παραγράφους,
     όχι για πλέγμα καρτών. Λύνουμε το δοχείο και ξαναδένουμε τα κείμενα. */
  .pagehead-support .prose{max-width:none}
  .pagehead-support .prose > p,
  .pagehead-support .prose > h2,
  .pagehead-support .prose > h3{max-width:42.70em}

  .pagehead-support .prose ul{
    display:grid;gap:clamp(12px,1.4vw,18px);
    list-style:none;padding:0;margin:1.1rem 0 0;
    counter-reset:gld-cov}
  .pagehead-support .prose li{
    counter-increment:gld-cov;
    margin:0;padding:clamp(16px,1.7vw,22px);
    background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
    color:var(--ink-2);line-height:1.55;font-size:.94rem;
    transition:border-color .18s ease,background-color .18s ease}
  .pagehead-support .prose li:hover{border-color:var(--line-2);background:var(--panel-2)}
  .pagehead-support .prose li::before{
    content:counter(gld-cov,decimal-leading-zero);
    display:block;margin-bottom:.6rem;
    font-family:var(--f-display);font-size:.72rem;font-weight:700;
    letter-spacing:.12em;color:var(--red-hi)}
}
/* ── Η ΤΕΛΕΥΤΑΙΑ ΣΕΙΡΑ ΓΕΜΙΖΕΙ, ΟΠΟΙΟ ΚΙ ΑΝ ΕΙΝΑΙ ΤΟ ΠΛΗΘΟΣ ──────
   Με 5 υπηρεσίες σε 3 στήλες έμενε ΤΡΥΠΑ κάτω δεξιά· σε 2 στήλες, τρύπα στο
   τέλος. ⚠ ΚΑΙ ΤΟ ΠΛΗΘΟΣ ΕΙΝΑΙ ΤΟΥ ΠΕΛΑΤΗ: οι κάρτες είναι απλό <ul> μέσα
   στο post_content, που ο Κώστας επεξεργάζεται από το WordPress. Μια διόρθωση
   φτιαγμένη «για πέντε» θα έσπαγε την ημέρα που θα γίνουν έξι.

   Το πλέγμα γίνεται ΕΞΙ λεπτές στήλες και κάθε κάρτα πιάνει δύο (= 3 ανά
   σειρά). Όταν η τελευταία σειρά έχει δύο, πιάνουν τρεις η καθεμία· όταν έχει
   μία, πιάνει και τις έξι. Οι επιλογείς μετρούν ΑΠΟ ΤΟ ΤΕΛΟΣ, οπότε ισχύουν
   για κάθε πλήθος — μετρημένο n=1…9 και στις δύο ζώνες, μηδέν τρύπες.

   ⚠ ΟΙ ΚΑΝΟΝΕΣ ΜΕΝΟΥΝ ΜΕΣΑ ΣΤΟ ΔΙΚΟ ΤΟΥΣ media query. Πρώτη εκδοχή τους είχε
   έξω: το `span 3` διέρρεε στη ζώνη των ΔΥΟ στηλών, όπου δεν υπάρχει τρίτη —
   μετρήθηκαν σειρές «137+139+401». Ό,τι μιλά για τρεις στήλες ζει εκεί που
   υπάρχουν τρεις στήλες.

   ⛔ ΔΟΚΙΜΑΣΤΗΚΕ ΚΑΙ ΑΠΟΡΡΙΦΘΗΚΕ το κεντράρισμα της τελευταίας σειράς (flex +
   justify-content:center): γεμίζει το κενό συμμετρικά, αλλά οι κάρτες 04 και
   05 ΧΑΝΟΥΝ τη στοίχιση με τη στήλη από πάνω τους — και όλη η σελίδα είναι
   αριστερά στοιχισμένη. */
@media(min-width:701px) and (max-width:900px){
  .pagehead-support .prose ul{grid-template-columns:repeat(2,1fr)}
  .pagehead-support .prose li:last-child:nth-child(2n+1){grid-column:1/-1}
}
@media(min-width:901px){
  .pagehead-support .prose ul{grid-template-columns:repeat(6,1fr)}
  .pagehead-support .prose li{grid-column:span 2}
  .pagehead-support .prose li:nth-last-child(2):nth-child(3n+1),
  .pagehead-support .prose li:nth-last-child(2):nth-child(3n+1)~li{grid-column:span 3}
  .pagehead-support .prose li:last-child:nth-child(3n+1){grid-column:span 6}
}

/* Ενέργειες αμέσως μετά το κείμενο της υποστήριξης — όχι 400px χαμηλότερα. */
.headact{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.6rem}
.headact .btn .arw{transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.headact .btn:hover .arw{transform:translateX(4px)}
/* Η λωρίδα κατηγοριών ακολουθούσε με 106px κενό και μετά άλλα 140px ως τη
   λωρίδα στοιχείων: τρία τμήματα που δεν έδειχναν να ανήκουν μαζί. */
.pagehead-support + .section-sm{padding-block-start:clamp(18px,2.4vw,34px)}
.pagehead-support ~ .section-sm + .section-sm{padding-block-start:clamp(10px,1.4vw,20px)}

/* ⚠ ΚΑΤΩ ΑΠΟ 701px Η ΣΤΑΘΕΡΗ ΜΠΑΡΑ ΔΕΙΧΝΕΙ ΗΔΗ ΤΑ ΙΔΙΑ ΔΥΟ ΚΟΥΜΠΙΑ.
   Το ίδιο τηλέφωνο και το ίδιο «Ζητήστε επίδειξη», ~100px πιο πάνω μέσα στη
   σελίδα: ο επισκέπτης βλέπει το ίδιο ζευγάρι δύο φορές. Η μπάρα υπάρχει
   ακριβώς για να μη χρειάζεται η σελίδα να το επαναλαμβάνει. */
@media(max-width:700px){.headact{display:none}}

/* Η λωρίδα κατηγοριών κυλά οριζόντια στο κινητό (1.421px σε παράθυρο 390px)
   αλλά κοβόταν με καθαρή ακμή — τίποτα δεν έλεγε ότι συνεχίζει. */
/* v0.7.7 — ΤΟ ΣΒΗΣΙΜΟ ΗΤΑΝ ΣΤΑΘΕΡΟ, ΑΡΑ ΨΕΥΔΟΤΑΝ. Στο τέλος της κύλισης το
   τελευταίο chip εξακολουθούσε να ζωγραφίζεται στο 42-45% και η λωρίδα
   έδειχνε ότι συνεχίζει — ενώ δεν συνέχιζε. Στο /seira/mesolab/, όπου όλη η
   διαδρομή είναι 47px, το ψέμα ίσχυε από το ΠΡΩΤΟ καρέ. Και στο κινητό η
   επικαλυπτόμενη μπάρα κύλισης εξαφανίζεται μετά το σύρσιμο, οπότε το
   σβήσιμο είναι το ΜΟΝΟ μόνιμο σημάδι. Το theme.js γράφει data-sx. */
@media(max-width:700px){
  .crumb[data-sx="start"],.crumb[data-sx="mid"]{
    -webkit-mask-image:linear-gradient(to right,#000 85%,transparent);
            mask-image:linear-gradient(to right,#000 85%,transparent)}
  .catstrip,.filters[data-filters]{
    -webkit-mask-image:linear-gradient(to right,#000 88%,transparent);
            mask-image:linear-gradient(to right,#000 88%,transparent)}
  .catstrip[data-sx="mid"],.filters[data-filters][data-sx="mid"]{
    -webkit-mask-image:linear-gradient(to right,transparent,#000 12%,#000 88%,transparent);
            mask-image:linear-gradient(to right,transparent,#000 12%,#000 88%,transparent)}
  .catstrip[data-sx="end"],.filters[data-filters][data-sx="end"]{
    -webkit-mask-image:linear-gradient(to right,transparent,#000 12%);
            mask-image:linear-gradient(to right,transparent,#000 12%)}
  .catstrip[data-sx="none"],.filters[data-filters][data-sx="none"]{
    -webkit-mask-image:none;mask-image:none}
}

/* ══════════════════════════════════════════════════════════════════
   Η ΕΤΑΙΡΕΙΑ — ΤΡΕΙΣ ΠΥΛΩΝΕΣ (v0.7.4)

   ΜΕΤΡΗΘΗΚΕ ΠΡΙΝ: κείμενο 707px σε στήλη 1.240px — 533px κενά δεξιά σε
   ΟΛΟ το ύψος του κεφαλιού (1.101px). Τρεις ενότητες η μία κάτω από την
   άλλη, 4 σύνδεσμοι σε όλο το main.

   ΚΑΜΙΑ ΝΕΑ ΛΕΞΗ: το ίδιο περιεχόμενο, χωρισμένο στα <h2> του.
   ══════════════════════════════════════════════════════════════════ */
.pagehead-about .prose > p:first-child{
  font-size:clamp(1.01rem,1.45vw,1.18rem);line-height:1.72;max-width:40.38em}
.pillars{margin-top:clamp(26px,3.4vw,46px)}
.pillar > h2:first-child{margin-top:0}

@media(min-width:701px){
  .pagehead-about .prose{max-width:none}
  .pillars{display:grid;gap:clamp(16px,2vw,26px);
    grid-template-columns:repeat(2,1fr)}
  .pillar{padding:clamp(18px,2vw,26px);
    background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
    transition:border-color .18s ease,background-color .18s ease}
  .pillar:hover{border-color:var(--line-2);background:var(--panel-2)}
  /* Η επικεφαλίδα σε στήλη 380px δεν μπορεί να έχει το μέγεθος που είχε σε
     στήλη 707px: μετρήθηκαν πέντε σειρές για το «Πίσω από κάθε πώληση…». */
  .pillar h2{font-size:clamp(1.02rem,1.35vw,1.24rem);line-height:1.3;
    margin:0 0 .7rem;text-wrap:balance}
  .pillar p{font-size:.93rem;line-height:1.62;margin:0}
  .pillar p + p{margin-top:.7rem}
}
@media(min-width:1081px){.pillars{grid-template-columns:repeat(3,1fr)}}

/* Ο οίκος μέσα στο κείμενο διαβάζεται ως σύνδεσμος χωρίς να ουρλιάζει. */
.brandref{color:var(--ink);border-bottom:1px solid var(--line-3);
  transition:border-color .16s ease}
.brandref:hover{border-bottom-color:var(--red)}

/* Κάτω από 701px οι πυλώνες δεν είναι κάρτες — αλλά ούτε συνεχές κείμενο:
   τρεις ενότητες χωρίς όριο διαβάζονται ως μία μακριά παράγραφος. */
@media(max-width:700px){
  .pillar + .pillar{margin-top:1.7rem;padding-top:1.7rem;border-top:1px solid var(--line)}
  .pillar h2{font-size:clamp(1.08rem,4.6vw,1.3rem);line-height:1.28;margin:0 0 .6rem}
  .pillar p{margin:0}
}

/* ══════════════════════════════════════════════════════════════════
   ΣΤΑΘΕΡΟ ΣΥΝΟΛΟ ΕΞΟΔΩΝ — ΔΕΝ ΕΙΝΑΙ ΚΑΤΑΛΟΓΟΣ (v0.8.3)

   Τα «μισοάδεια πλέγματα» του αρχείου υποθέτουν κατάλογο: όσο μεγαλώνει
   η οθόνη, περισσότερες στήλες. Σωστό για 24 προϊόντα, λάθος για τρεις ή
   τέσσερις εξόδους που δεν γίνονται ποτέ πέντε. Μετρημένο και στις δύο
   επιφάνειες που έχουν τέτοιο μπλοκ:
     404 (4 έξοδοι):        1500 → 4/5 · 1920 → 4/6 · 2560 → 4/6
     αναζήτηση (3 έξοδοι):  1500 → 3/4 · 1920 → 3/4 · 2560 → 3/4
   δηλαδή μισοάδεια σειρά σε κάθε φαρδιά οθόνη, σε αμφότερες.

   Η κλάση δηλώνει τον ΛΟΓΟ («σταθερό πλήθος»), όχι τη σελίδα. Το πλήθος
   το ξέρει ήδη το g-3/g-4· εδώ απλώς σταματά η ανάπτυξη.

   ⚠⚠ ΓΙΑΤΙ ΕΙΝΑΙ ΣΤΟ ΤΕΛΟΣ ΚΑΙ ΟΧΙ ΔΙΠΛΑ ΣΤΟΥΣ ΚΑΝΟΝΕΣ ΠΟΥ ΑΚΥΡΩΝΕΙ.
   Γράφτηκε πρώτα εκεί (γραμμή ~1350) και ΔΕΝ δούλεψε στη σελίδα
   αναζήτησης: το «@media(min-width:1500px){.search .grid.g-3{repeat(4,1fr)}}»
   έχει ΙΔΙΑ ειδικότητα (0,3,0) και ζει ~180 γραμμές παρακάτω — σε ισοπαλία
   κερδίζει ο τελευταίος. Το 404 διορθώθηκε, η αναζήτηση όχι, και η μέτρηση
   το έδειξε. Η εναλλακτική ήταν να ανέβει η ειδικότητα με επιλογέα
   σελίδας, που θα ξανάφερνε ακριβώς το λάθος που κυνηγά όλο αυτό το
   αρχείο. ΑΝ ΠΡΟΣΤΕΘΕΙ ΝΕΟΣ ΚΑΝΟΝΑΣ ΣΤΗΛΩΝ, ΜΠΑΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΔΩ.
   ══════════════════════════════════════════════════════════════════ */
@media(min-width:1500px){
  .grid.exits.g-3{grid-template-columns:repeat(3,1fr)}
  .grid.exits.g-4{grid-template-columns:repeat(4,1fr)}
}
/* ΜΙΑ ΕΞΟΔΟΣ ΑΝΑ ΣΕΙΡΑ ΣΤΟ ΤΗΛΕΦΩΝΟ. Οι κάρτες εξόδου είναι ΚΕΙΜΕΝΟ χωρίς
   εικόνα (τίτλος + μία πρόταση): στα 390 δύο στήλες τις αφήνουν 169px, όπου
   το «Summe Cosmetics» σπάει σε δύο γραμμές και η περιγραφή σε τέσσερις.
   Ώς τώρα τη συμπεριφορά αυτή την έδινε ο κανόνας «.search .grid.g-3 >
   .card:not(.card-prod){grid-column:1/-1}» — δηλαδή ένας κανόνας για
   ΜΕΙΚΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ που τύχαινε να πιάνει και τις εξόδους. Με τη
   μετονομασία σε .results έπαψε, οπότε οι έξοδοι το δηλώνουν ρητά.
   ΜΕΤΡΗΜΕΝΟ ΠΡΙΝ: αναζήτηση 390-700 → 3/3 κάρτες σε όλο το πλάτος. */
@media(max-width:700px){
  .grid.exits{grid-template-columns:1fr}
  /* ΜΙΑ ΜΟΝΗ ΠΡΟΤΑΣΗ ΠΙΑΝΕΙ ΟΛΟ ΤΟ ΠΛΑΤΟΣ. Στο 404 η καλύτερη δυνατή
     έκβαση είναι ΑΚΡΙΒΩΣ ΜΙΑ κάρτα — το πράγμα που ζητούσε ο επισκέπτης.
     Στο πλέγμα δύο στηλών έβγαινε 169px στα 390 με κενό δίπλα της: το
     σωστό αποτέλεσμα ζωγραφισμένο σαν υποσημείωση.
     ⚠⚠ ΤΟ :has() ΕΙΝΑΙ ΜΕΣΑ ΣΕ @media ΕΠΙΤΗΔΕΣ. Το αρχείο προειδοποιεί ήδη
     («ΤΟ :has() ΕΙΝΑΙ ΚΛΕΙΔΩΜΕΝΟ ΣΕ ΥΠΟΛΟΓΙΣΤΗ ΕΠΙΤΗΔΕΣ») ότι η ειδικότητά
     του 0,4,0 νικά τα breakpoints του κινητού και είχε βγάλει scrollWidth
     553 σε οθόνη 390. Εδώ δεν μπορεί να διαρρεύσει πουθενά αλλού, και η
     υπερχείλιση μετριέται σε 14 πλάτη από την v-batch16. */
  /* ⚠ ΜΕ ΤΑΒΑΝΙ. Σκέτο 1fr έδινε 515px στα 560 και **644px στα 700** —
     ένα μπουκαλάκι σε μισή οθόνη tablet, ακριβώς το λάθος που διορθώθηκε
     στη ζώνη οίκου της αρχικής δύο εκδόσεις πριν. Το 390 δεν είναι
     αυθαίρετο: είναι η ΜΕΓΑΛΥΤΕΡΗ κάρτα προϊόντος που δείχνει ο κατάλογος
     οπουδήποτε (392px στα 1920). Κάτω από 390 διαθέσιμα δεν δένει, οπότε
     το τηλέφωνο παίρνει ολόκληρο το πλάτος όπως πρέπει. */
  .grid.results:has(> :last-child:nth-child(1)){grid-template-columns:minmax(0,390px)}
}
/* Η ΖΩΝΗ 701-1080: ΤΕΣΣΕΡΙΣ ΕΞΟΔΟΙ ΣΕ ΤΡΕΙΣ ΣΤΗΛΕΣ ΕΙΝΑΙ 3+1.
   Εκεί ο γενικός κανόνας «@media(max-width:1080px){.g-4{repeat(3,1fr)}}»
   είναι σωστός για κατάλογο και λάθος για σταθερό σύνολο τεσσάρων:
   μετρήθηκε τελευταία σειρά 1/3 στα 768 και στα 900. Δύο στήλες δίνουν
   2+2 και κάρτα ~354px στα 768 — άνετη για κάρτα ΚΕΙΜΕΝΟΥ.
   Το .exits.g-3 (τρεις έξοδοι, σελίδα αναζήτησης) δεν χρειάζεται τίποτα:
   τρεις κάρτες σε τρεις στήλες είναι ήδη γεμάτη σειρά. */
@media(min-width:701px) and (max-width:1080px){
  .grid.exits.g-4{grid-template-columns:repeat(2,1fr)}
}


/* ══════════════════════════════════════════════════════════════════
   POLISH v0.10.1 — ρυθμός, κενές στήλες, πλακέτες
   ══════════════════════════════════════════════════════════════════ */
/* ΔΙΠΛΟ ΚΕΝΟ ΑΝΑΜΕΣΑ ΣΕ ΔΥΟ ΛΕΥΚΕΣ ΕΝΟΤΗΤΕΣ. Κάθε .section έχει ~108px πάνω ΚΑΙ
   κάτω, οπότε δύο συνεχόμενες λευκές έκαναν 216–283px αέρα (Summe → Dermaqual
   στην αρχική, ήρωας → «ίδια σειρά» στο προϊόν). Οι γκρι ζώνες (.band) και οι
   κριτικές κρατούν το δικό τους περιθώριο, γιατί εκεί αλλάζει το φόντο. */
.section:not(.band):not(.reviews) + .section:not(.band):not(.reviews){padding-top:0}
.series-head + .series-items{padding-top:0}

/* ΚΕΙΜΕΝΟ ΟΙΚΟΥ ΠΟΥ ΑΚΟΛΟΥΘΕΙ ΤΙΣ ΚΑΡΤΕΣ. Στήλη 299px δίπλα σε πλέγμα 900px
   άφηνε 600px άδειου χώρου κάτω από το «Δείτε όλη τη γκάμα». */
@media(min-width:901px){
  .section .band-grid > .band-txt{position:sticky;top:112px;align-self:start}
}
/* ΜΙΑ ΛΙΣΤΑ ΣΕ ΠΛΕΓΜΑ ΔΥΟ ΣΤΗΛΩΝ: παίρνει όλο το πλάτος, σε δύο στήλες κειμένου. */
.band .grid.g-2 > div:only-child{grid-column:1/-1}
@media(min-width:901px){
  .band .grid.g-2 > div:only-child .ticks{display:block;columns:2;column-gap:clamp(28px,4vw,60px)}
  .band .grid.g-2 > div:only-child .ticks li{break-inside:avoid;margin-bottom:.6rem}
}

/* ΛΕΥΚΗ ΠΛΑΚΕΤΑ ΧΩΡΙΣ ΠΑΣΠΑΡΤΟΥ: οι λευκές φωτογραφίες έχουν ήδη δικό τους
   περιθώριο· τα 20px γύρω από ένα έγχρωμο τετράγωνο (Cell C, Biomedical,
   De-Pollution) διαβάζονταν ως κορνίζα. */
.plate.is-photo.is-fit.is-white{padding:0}

/* ΠΡΟΪΟΝ ΧΩΡΙΣ ΦΩΤΟΓΡΑΦΙΑ: το όνομά του, όχι διακεκομμένο κουτί-σκαλωσιά. */
.plate-name{font-family:var(--f-display);font-weight:700;font-size:.82rem;letter-spacing:.06em;
  color:var(--ink-3);text-align:center;max-width:80%;line-height:1.45;text-wrap:balance}
.plate.is-noimg{background:#FFFFFF}
.plate.is-noimg::after{display:none}
.card .plate.is-noimg{border-bottom:1px solid var(--line)}
/* Φωτογραφίες με ΓΚΡΙ διαβάθμιση (Shifu Plus, Yeti, Tranexplus): χωρίς πλακίδιο
   και σκιά· η πλακέτα παίρνει το χρώμα της άκρης τους και η φωτογραφία
   κάθεται μέσα της ακέραιη (contain). */
.plate.is-photo.is-fit:not(.is-white){background:var(--plate-bg,var(--plate));padding:0}
.plate.is-photo.is-fit:not(.is-white)::after{display:none}
.plate.is-photo.is-fit:not(.is-white) img{box-shadow:none;border-radius:0}

/* ΜΙΑ ΕΠΙΚΕΦΑΛΙΔΑ ΑΝΑ ΕΝΟΤΗΤΑ στη σελίδα μηχανήματος (v0.10.1): «ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ»
   + «Τι το ξεχωρίζει» έλεγαν το ίδιο δύο φορές. Το «Περιγραφή» είναι πια
   κανονικό h2 — μεγαλύτερο από τις επικεφαλίδες του κειμένου του πελάτη. */
.single-gld_machine .mac-sec-h{font-size:clamp(1.55rem,2.6vw,2.1rem);margin-bottom:1.1rem}

/* ── Μικροδιορθώσεις από τις αναθεωρήσεις (v0.10.1) ── */
/* Κόκκινο κουμπί στο ανοιχτό μενού κινητού: λευκό κείμενο. Ο κανόνας «.nav-x a
   {color:var(--ink)}» (0,4,1) νικούσε το λευκό (0,4,0) — στο σκούρο θέμα το
   --ink ήταν λευκό, στο φωτεινό βγήκε σκούρο πάνω σε κόκκινο (3,5:1). */
.nav .nav-links.open .nav-x a.nav-x-cta{color:#FFFFFF}
/* Σύνδεσμος παράκαμψης: #D9141B (5,16:1) αντί για #ED1C24 (4,38:1). */
.skip:focus{background:var(--red-btn)}
/* Πίνακας προδιαγραφών: η ετικέτα δεν πρέπει να διαβάζεται πιο αχνή από την τιμή. */
.specs-inline th{font-size:.85rem;font-weight:600;color:var(--ink);letter-spacing:0}
/* Ομάδες μιας σειράς (ΠΡΟΣΩΠΟ/ΣΩΜΑ, ΦΡΟΝΤΙΔΑ ΓΙΑ ΤΟ ΣΠΙΤΙ): ΙΔΙΟ πλάτος κάρτας
   σε όλες τις ομάδες. Ο κανόνας «μισοάδειου πλέγματος» φάρδαινε κατά 36% μόνο
   την ομάδα με 2–3 κάρτες. */
@media(min-width:1081px){
  .series-items .grid.g-4:has(> :last-child:nth-child(-n+2)),
  .series-items .grid.g-4:has(> :last-child:nth-child(3)){grid-template-columns:repeat(4,1fr);justify-content:normal}
}
@media(min-width:1500px){
  .series-items .grid.g-4:has(> :last-child:nth-child(-n+2)),
  .series-items .grid.g-4:has(> :last-child:nth-child(3)){grid-template-columns:repeat(5,1fr)}
}
/* Φωτογραφία προϊόντος: στο ύψος του τίτλου και ακολουθεί το κείμενο, αντί να
   κάθεται στη μέση μιας ψηλής στήλης (σε 12 προϊόντα κάτω από την πτυχή). */
@media(min-width:901px){
  .hero-prod .hp-media{align-self:start;position:sticky;top:96px}
}
/* Τίτλοι καρτών στα 2 στήλη του τηλεφώνου: «MEDITERRANEAN» δεν χωρούσε και έσπαγε. */
@media(max-width:430px){
  .g-4 .card h3{font-size:.94rem;letter-spacing:-.02em}
}
/* Τα chip πιο κοντά στο πλέγμα που φιλτράρουν. */
.series-head:has(+ .series-items){padding-bottom:clamp(28px,3.4vw,44px)}
/* Με ανοιχτό μενού, η μπάρα ενεργειών κρύβεται (το μενού έχει τα ίδια κουμπιά). */
.menu-open .actionbar{display:none}


/* ══════════════════════════════════════════════════════════════════
   UI AUDIT 25/09/2026 (v0.13.0). Τρεις ελεγκτές στο staging: σελίδες που
   άλλαξαν, όλα τα πρότυπα σε 4 πλάτη, κινητό και προσβασιμότητα. Όλα όσα
   ακολουθούν απαντούν σε μετρημένο εύρημα· είναι ΜΑΖΙ εδώ ώστε να
   διαβάζονται — και να αναιρούνται — ως ένα σύνολο.
   ══════════════════════════════════════════════════════════════════ */

/* iPHONE: ΚΑΝΕΝΑ ZOOM ΣΤΟ ΠΑΤΗΜΑ ΠΕΔΙΟΥ. Το Safari μεγεθύνει κάθε πεδίο κάτω
   από 16px και ΜΕΝΕΙ μεγεθυμένο· τα πεδία ήταν .92rem = 14,72px (φόρμα
   επικοινωνίας και αναζήτηση). Στον υπολογιστή μένει το παλιό μέγεθος. */
@media(max-width:1060px),(pointer:coarse){
  .field input,.field select,.field textarea{font-size:max(16px,.92rem)}
}

/* ΧΑΡΤΗΣ ΣΤΟ ΚΙΝΗΤΟ: το 16/10 του .mapfull κέρδιζε το 4/3 του κινητού και
   το υποκατάστατο (280px περιεχόμενο) κοβόταν σε κουτί 217px — τίτλος πάνω,
   «Άνοιγμα στο Google Maps» κάτω. Εδώ το κουτί ακολουθεί το περιεχόμενο:
   υποκατάστατο και iframe μοιράζονται ΕΝΑ κελί πλέγματος, με πάτωμα 300px. */
@media(max-width:560px){
  .mapbox,.mapfull .mapbox{aspect-ratio:auto;display:grid;min-height:300px}
  .mapbox>*{grid-area:1/1}
  .mapgate{position:relative;inset:auto}
  .mapbox iframe{position:relative;inset:auto;min-height:300px;height:100%}
}

/* «Η ΕΤΑΙΡΕΙΑ»: 1125px γραμμή (~140 χαρακτήρες) στα 1440. Ίδιο μέτρο με το
   κείμενο των άλλων σελίδων. */
.prose-about > p{max-width:44rem}

/* ΓΚΑΛΕΡΙ ΜΗΧΑΝΗΜΑΤΟΣ ΧΩΡΙΣ ΑΛΜΑ ΥΨΟΥΣ. Οι διαφάνειες είχαν διαφορετικό
   ύψος (ONIX 677→321px): στο iPhone, χωρίς scroll anchoring, η φωτογραφία
   που μόλις διάλεξες ανέβαινε 394px πάνω από την οθόνη. Όλες κάθονται πλέον
   στο ΙΔΙΟ κελί· το ύψος είναι της ψηλότερης και δεν αλλάζει ποτέ. */
.js .mgal[data-gal]{grid-template-columns:minmax(0,1fr)}
.js .mgal[data-gal] .mgal-slide{grid-area:1/1;display:grid;align-content:center}
.js .mgal[data-gal] .mgal-slide:not(.is-on){display:grid;visibility:hidden;pointer-events:none}
.js .mgal[data-gal] .mgal-thumbs{grid-area:2/1}
/* Πέντε μικρογραφίες (ONIX) σε μία γραμμή και στα 360: 5×56 + 4×8 = 312. */
@media(max-width:420px){.mgal-th{width:56px;height:56px}}

/* TABLET 701–1060: η κεφαλίδα ήταν relative και η μπάρα ενεργειών κρυφή,
   άρα μετά από μία οθόνη κύλισης δεν έμενε ούτε μενού ούτε τηλέφωνο. Η
   κεφαλίδα μένει κολλημένη· το ανοιχτό μενού κυλά μέσα του αν δεν χωρά. */
@media(min-width:701px) and (max-width:1060px){
  .nav{position:sticky;top:0}
  html{scroll-padding-top:84px}
  .nav .nav-links.open{max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px);overflow-y:auto}
}
/* Με ανοιχτό μενού η σελίδα από κάτω δεν κυλά. Στο body, ΟΧΙ στο html: με
   overflow στο html το body γινόταν το δοχείο κύλισης, η κολλημένη κεφαλίδα
   ξεκολλούσε και η σελίδα πηδούσε στην κορυφή (μετρημένο 2500→0 στα 820). */
@media(max-width:1060px){html.menu-open body{overflow:hidden}}

/* «ΖΗΤΗΣΤΕ ΕΠΙΔΕΙΞΗ»: τίτλος και εισαγωγή → φόρμα → στοιχεία επικοινωνίας.
   Η σειρά είναι πλέον στο HTML (page-templates/contact.php)· ο πίνακας είναι
   τρίτο παιδί του πλέγματος. Στον υπολογιστή ξανακάθεται αριστερά, κάτω από
   την εισαγωγή, και η φόρμα πιάνει δεξιά και τις δύο γραμμές. */
.band-txt > .tablewrap{margin-top:2rem}
@media(min-width:901px){
  .band-grid.has-prefill{grid-template-rows:auto 1fr;row-gap:2rem}
  .band-grid.has-prefill > .band-txt{grid-column:1;grid-row:1}
  .band-grid.has-prefill > .formcol{grid-column:2;grid-row:1 / span 2}
  .band-grid.has-prefill > .tablewrap{grid-column:1;grid-row:2;align-self:start}
}

/* ΠΡΑΣΙΝΟ ΜΟΝΟ ΣΤΑ ΥΠΟΧΡΕΩΤΙΚΑ: κενό προαιρετικό πεδίο (τηλέφωνο, ιατρείο)
   δεν είναι «σωστό», είναι απλώς κενό. */
.formcol .field input:not([required]):user-valid,
.formcol .field textarea:not([required]):user-valid{border-color:var(--line-3)}
/* Το γραπτό σφάλμα κάτω από το πεδίο (βλ. theme.js, «Σφάλματα φόρμας»). */
.field-err{margin:0;font-size:.8rem;line-height:1.45;color:var(--red-txt,#B3141B);font-weight:600}
.field-err[hidden]{display:none}

/* Το κουμπί της μπάρας πάει στο #c-name: η ετικέτα του πεδίου έμενε 25px
   πάνω από την οθόνη. */
#c-name{scroll-margin-top:48px}

/* ΦΩΤΟΓΡΑΦΙΑ ΜΕ ΦΟΝΤΟ ΣΕ ΔΙΑΒΑΘΜΙΣΗ (Shifu, Yeti, Tranexplus): πίσω της η
   ίδια εικόνα θολή και απλωμένη — οι ζώνες γύρω της γίνονται συνέχειά της
   αντί για γκρι κουτί με ραφή. */
.plate.has-bleed{isolation:isolate}
.plate.has-bleed::before{content:"";position:absolute;inset:-24px;z-index:0;
  background:var(--plate-img) center/cover no-repeat;filter:blur(22px) saturate(.9);opacity:.95}

/* Πίνακας προδιαγραφών στα 320px (400% zoom): μακριά λέξη έβγαινε 15px έξω. */
.specs-inline td,.specs td{overflow-wrap:anywhere}

.nowrap{white-space:nowrap}

/* ΤΟ ΜΕΝΟΥ ΔΕΝ ΜΕΤΑΚΙΝΕΙΤΑΙ ΑΠΟ ΣΕΛΙΔΑ ΣΕ ΣΕΛΙΔΑ. Το κουμπί αλλάζει κείμενο
   («Ζητήστε επίδειξη» 146px, «Επικοινωνήστε μαζί μας» 186px) και οι σύνδεσμοι
   πηδούσαν 20px. Σταθερό πλάτος, στο μεγαλύτερο. */
@media(min-width:1061px){.nav-cta{min-width:186px;text-align:center}}

/* Η ΛΩΡΙΔΑ ΟΝΟΜΑΤΩΝ ΤΗΣ ΑΡΧΙΚΗΣ ΠΕΡΝΟΥΣΕ ΠΙΣΩ ΑΠΟ ΤΟΝ ΤΙΤΛΟ (901–1440).
   Σβήνει πάνω από τη στήλη του κειμένου και μένει στη μέση και δεξιά. */
@media(min-width:901px){
  .hero-mq{-webkit-mask-image:linear-gradient(to right,transparent 0,transparent 42%,#000 60%);
          mask-image:linear-gradient(to right,transparent 0,transparent 42%,#000 60%)}
}
/* Η ΛΕΖΑΝΤΑ ΤΗΣ ΦΩΤΟΓΡΑΦΙΑΣ ΣΤΑ 901–1180 έσπαγε σε 4 γραμμές («ΕΛΛΑΔΟΣ» και
   «COSMETICS» μόνα τους) επειδή είχε ταβάνι 60% του πλάτους. */
@media(min-width:901px) and (max-width:1180px){.hero-cap .t{max-width:100%}}

/* ΨΙΧΟΥΛΑ ΣΤΟ ΚΙΝΗΤΟ: η μακριά κατηγορία («Σώμα — αναδιαμόρφωση, λιπό…»)
   έσπρωχνε το όνομα της σελίδας εκτός οθόνης. Τα ενδιάμεσα κομμάτια
   κόβονται με αποσιωπητικά, ώστε να φαίνονται και τα τρία. */
@media(max-width:700px){
  .crumb a:not(:first-child){max-width:42vw;overflow:hidden;text-overflow:ellipsis;display:inline-block;
    line-height:44px}
  .crumb>span:last-child{max-width:40vw;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:44px}
}

/* ΤΟ ΚΟΚΚΙΝΟ ΤΕΤΡΑΓΩΝΑΚΙ ΣΤΗΝ ΠΡΩΤΗ ΓΡΑΜΜΗ, όχι στη μέση δύο γραμμών. */
.eyebrow{align-items:flex-start}
.eyebrow::before{margin-top:calc((1lh - 6px) / 2)}

/* ΣΤΟΧΟΙ ΑΦΗΣ: τηλέφωνο/email στον πίνακα επικοινωνίας ήταν 18px ύψος,
   το κουτάκι συγκατάθεσης 20×20. */
.specs-contact td a{display:inline-block;padding-block:13px;margin-block:-13px}
.form-consent input[type="checkbox"]{width:24px;height:24px;flex:none}
/* Το εικονίδιο Google μένει 32×32· η περιοχή πατήματος απλώνεται στα 44. */
.rv-link{position:relative}
.rv-link::after{content:"";position:absolute;inset:-6px}

/* Η ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΒΑΖΕΤΑΙ ΣΤΑ 430 (ήταν 389): στα 390 το πεδίο ήταν 214px και
   η υπόδειξη «π.χ. HIFU, κρυολιπόλυση…» κοβόταν. */
@media(max-width:430px){
  .searchrow{flex-direction:column}
  .searchrow .btn{justify-content:center}
}

/* TABLET ΟΡΘΙΟ: στη σελίδα προϊόντος η φωτογραφία ήταν τετράγωνο 707px και
   η περιγραφή ξεκινούσε κάτω από την οθόνη. */
@media(min-width:561px) and (max-width:900px){
  .hero-prod .hp-media .plate{aspect-ratio:auto;height:440px}
}

/* Το κρυφό «, » για αναγνώστες οθόνης (αποτέλεσμα: «NICELY, 12» αντί «NICELY12»)
   είναι absolute: χωρίς πλαίσιο αναφοράς κρεμόταν έξω από τη λωρίδα και
   μεγάλωνε τη σελίδα στα 390 (οριζόντια κύλιση ώς 1.523px). */
.chip-n{position:relative}


/* ══════════════════════════════════════════════════════════════════
   UI AUDIT 27/09/2026 (v0.14.0). Πέντε ελεγκτές σε στιγμιότυπα 390/820/1440,
   πληκτρολόγιο/αφή/φόρμες, και σύγκριση του ΙΔΙΟΥ στοιχείου σε διαφορετικές
   σελίδες. Κάθε κανόνας απαντά σε μετρημένο εύρημα.
   ══════════════════════════════════════════════════════════════════ */

/* EYEBROW → ΤΙΤΛΟΣ: ένα κενό παντού. Το «.sec-head p{margin:0}» έπιανε και το
   p.eyebrow: 2px στις λίστες και στα σχετικά, 17px στις σελίδες ήρωα. */
.sec-head .eyebrow{margin-bottom:1.05rem}
/* h2 → κείμενο στις ζώνες (οίκοι αρχικής, «Τα νούμερα»): 0px, στο .sec-head 10px. */
.band-txt h2{margin-bottom:.65rem}

/* «ΙΔΙΑ ΣΕΙΡΑ / ΚΑΤΗΓΟΡΙΑ»: πάντα 4 κάρτες. Σε 3 στήλες (561–1080) έβγαινε
   3+1 σε κάθε σελίδα προϊόντος και μηχανήματος, σε 5–6 στήλες (≥1500) μια
   άδεια στήλη δεξιά. */
@media(min-width:561px) and (max-width:1080px){
  .section-rel .grid.g-4:has(> :nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1500px){
  .section-rel .grid.g-4:has(> :nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* Ομάδες σειράς στα ≥1900: η πρώτη ομάδα 6 στήλες, η δεύτερη 5 → άλλο πλάτος κάρτας. */
@media(min-width:1900px){
  .series-items .grid.g-4:has(> :last-child:nth-child(-n+2)),
  .series-items .grid.g-4:has(> :last-child:nth-child(3)){grid-template-columns:repeat(6,1fr)}
}

/* ΤΙΤΛΟΙ ΚΑΡΤΩΝ ΠΡΟΪΟΝΤΟΣ ΣΤΗΝ ΙΔΙΑ ΓΡΑΜΜΗ. Η ετικέτα κρατά δύο γραμμές σε
   κάθε πλάτος (και στα 2 στήλη του κινητού), και όπου μια κάρτα δεν έχει
   ετικέτα ενώ η διπλανή έχει, κρατά τον ίδιο χώρο κενό. */
.grid .card-prod .card-cat{min-height:calc(2 * 1.4em)}
.grid:has(.card-prod .card-cat) .card-prod .card-b:not(:has(.card-cat))::before{
  content:"";display:block;font-size:.645rem;min-height:calc(2 * 1.4em)}

/* ΣΤΟΙΧΕΙΑ ΕΠΙΚΟΙΝΩΝΙΑΣ: η γραμμή του συνδέσμου καθόταν 18px κάτω από το
   κείμενο, πάνω στη διαχωριστική του πίνακα. Υπογράμμιση στο κείμενο· το
   padding μένει για τον στόχο αφής. Το email γραφόταν «gld - systems»: τα
   tabular-nums φαρδαίνουν και την παύλα. */
.specs-contact td{font-variant-numeric:normal}
.specs-contact td a{border-bottom:0;text-decoration:underline;text-decoration-color:var(--line-3);
  text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .18s,color .18s}
.specs-contact td a:hover{text-decoration-color:var(--red)}

/* ΚΟΥΜΠΙ ΚΕΦΑΛΙΔΑΣ ΣΤΟ TABLET: ίδιο πλάτος σε κάθε σελίδα (τα εικονίδια
   πηδούσαν 40px) και ίδιο ύψος με την αναζήτηση δίπλα του. */
@media(min-width:701px){
  .nav-cta{min-width:186px;text-align:center;min-height:42px;display:inline-flex;align-items:center;justify-content:center}
}

/* ΗΡΩΑΣ ΜΗΧΑΝΗΜΑΤΟΣ. Το κείμενο κεντραριζόταν απέναντι σε γκαλερί ψηλότερη
   από την οθόνη: τίτλος στο y=542 (ONIX, 1440×900), κουμπί κάτω από την
   πτυχή στα 1280×720. Το προϊόν είχε ήδη την ίδια διόρθωση. Η κεντρική
   φωτογραφία έχει ταβάνι, ώστε να φαίνονται και οι μικρογραφίες. */
@media(min-width:901px){
  .hero-grid:has(.mgal){align-items:start}
  .mgal .plate.plate-hero img{max-height:max(360px,calc(100vh - 360px))}
}
@media(min-width:561px) and (max-width:900px){
  .mgal .plate.plate-hero img{max-height:min(560px,55vh)}
}
/* Λωρίδα αριθμών σε στήλη 475px (901–1180): κελιά 158px, τιμή σε 3 γραμμές.
   Ίδια διάταξη με το κινητό: τιμή και ετικέτα στην ίδια γραμμή. */
@media(min-width:901px) and (max-width:1180px){
  .specstrip{flex-direction:column}
  .specstrip li{flex:0 0 auto;border-inline-start:0;border-top:1px solid var(--line-2);
    display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:12px 16px}
  .specstrip li:first-child{border-top:0}
  .specstrip b{flex:0 1 auto}
  .specstrip span{margin-top:0;flex:0 1 auto;text-align:end}
}

/* ΦΩΤΟΓΡΑΦΙΑ ΠΑΝΩ ΣΕ ΘΟΛΟ ΦΟΝΤΟ (Shifu, Yeti): οι άκρες της έδιναν ορατή
   ραφή (φωτεινότητα 211→184). Σβήνουν μέσα στο θολό αντίγραφο. */
.plate.has-bleed img{box-shadow:none;border-radius:0;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 14px,#000 calc(100% - 14px),transparent),
                     linear-gradient(transparent,#000 14px,#000 calc(100% - 14px),transparent);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,transparent,#000 14px,#000 calc(100% - 14px),transparent),
             linear-gradient(transparent,#000 14px,#000 calc(100% - 14px),transparent);
  mask-composite:intersect}

/* ΛΙΣΤΕΣ ΚΕΙΜΕΝΟΥ: ίδιο κόκκινο τετράγωνο με τις λίστες του θέματος. Ήταν
   μαύρες κουκκίδες του φυλλομετρητή στο «ΑΝΑΛΥΤΙΚΑ» και στην πολιτική
   απορρήτου, δίπλα σε κόκκινα τετράγωνα στην ίδια σελίδα. */
.prose ul{list-style:none;padding-inline-start:0}
.prose ul > li{position:relative;padding-inline-start:1.25rem}
.prose ul > li::before{content:"";position:absolute;inset-inline-start:0;top:.66em;width:6px;height:6px;
  background:var(--red);border-radius:1px}
/* Οι αριθμημένες κάρτες της «Τεχνικής υποστήριξης» (≥701) έχουν δικό τους ::before. */
@media(min-width:701px){
  .pagehead-support .prose ul > li{padding:clamp(16px,1.7vw,22px)}
  .pagehead-support .prose ul > li::before{position:static;width:auto;height:auto;background:none;border-radius:0}
}

/* ΜΙΚΡΑ ΚΟΥΜΠΙΑ ΣΤΑ 44px (χάρτης, ρυθμίσεις απορρήτου) και αέρας κάτω από
   κουμπί που κάθεται ανάμεσα σε παραγράφους. */
.btn-sm{min-height:44px}
.mapgate-out{min-height:44px}
.prose > .btn{margin-bottom:1.05em}

/* ΑΝΟΙΧΤΟ ΜΕΝΟΥ: η τρέχουσα ενότητα είχε μόνο λίγο σκουρότερο γκρι (το
   κόκκινο του υπολογιστή το έσβηνε η διαχωριστική). Και τα στοιχεία ήταν
   12,96px, μικρότερα από το τηλέφωνο στο ίδιο μενού. */
@media(max-width:1060px){
  .nav .nav-links.open a{font-size:.95rem}
  .nav .nav-links.open .current-menu-item > a{color:var(--ink);font-weight:700;
    box-shadow:inset 3px 0 0 var(--red);padding-inline-start:12px}
}

/* ΑΡΙΘΜΟΣ ΜΕΣΑ ΣΤΟ CHIP: ήταν 8,64px. */
.chip-n{font-size:max(11px,.8em)}
.chip.on .chip-n{color:rgba(255,255,255,.86)}

/* ΚΑΤΗΓΟΡΙΑ ΜΗΧΑΝΗΜΑΤΩΝ: ίδιο chip με το /mixanimata/ (βλ. taxonomy.php). */
.catstrip.catstrip-full .chip{padding:8px 15px;font-size:.79rem}

/* ΣΒΗΣΙΜΟ ΑΚΡΗΣ ΣΤΙΣ ΛΩΡΙΔΕΣ ΠΟΥ ΚΥΛΑΝΕ = ΠΕΡΙΘΩΡΙΟ ΣΕΛΙΔΑΣ. Στο 12% (47px)
   το επιλεγμένο chip, που κουμπώνει στα 20px, έμενε μισοσβησμένο. */
@media(max-width:700px){
  .catstrip,.filters[data-filters]{
    -webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--pad)),transparent);
            mask-image:linear-gradient(to right,#000 calc(100% - var(--pad)),transparent)}
  .catstrip[data-sx="mid"],.filters[data-filters][data-sx="mid"]{
    -webkit-mask-image:linear-gradient(to right,transparent,#000 var(--pad),#000 calc(100% - var(--pad)),transparent);
            mask-image:linear-gradient(to right,transparent,#000 var(--pad),#000 calc(100% - var(--pad)),transparent)}
  .catstrip[data-sx="end"],.filters[data-filters][data-sx="end"]{
    -webkit-mask-image:linear-gradient(to right,transparent,#000 var(--pad));
            mask-image:linear-gradient(to right,transparent,#000 var(--pad))}
}

/* ΨΙΧΟΥΛΑ 4 ΕΠΙΠΕΔΩΝ ΣΤΟ ΚΙΝΗΤΟ: η τρέχουσα σελίδα έμενε «FO» κάτω από το
   σβήσιμο. Με τρεις συνδέσμους, οι ενδιάμεσοι κόβονται νωρίτερα. Και το
   περίγραμμα εστίασης μέσα στη λωρίδα (κοβόταν από το overflow). */
@media(max-width:700px){
  .crumb:has(a:nth-of-type(3)) a:not(:first-child){max-width:17vw}
  .crumb:has(a:nth-of-type(3)) > span:last-child{max-width:30vw}
  .crumb a:focus-visible{outline-offset:-2px}
}

/* ΕΤΙΚΕΤΕΣ ΤΗΣ ΛΩΡΙΔΑΣ ΕΠΙΚΟΙΝΩΝΙΑΣ: πεζά ελληνικά χωρίς αραίωση, όπως στη
   σελίδα επικοινωνίας («Τ η λ έ φ ω ν ο»). */
.fact-k{letter-spacing:0;font-size:.83rem;font-weight:600}

/* Ετικέτες ενοτήτων στο κείμενο προϊόντος: ίδιο μέγεθος/αραίωση με το eyebrow. */
.hp-prose h2{font-size:.7rem;letter-spacing:.19em}

/* Η κάψουλα «ΦΡΟΝΤΙΔΑ ΓΙΑ ΤΟ ΣΠΙΤΙ» καθόταν 3,6px χαμηλότερα από τη λέξη δίπλα της. */
.eyebrow .step-tag{align-self:center;margin-block:-3px}


/* «20 χρόνια…» σε μία στήλη: η ετικέτα κρατούσε ταβάνι 11,5em και έσπαγε σε 3 γραμμές. */
@media(max-width:560px){.xp-n span{max-width:none}}

/* Πίνακας μέσα στο κείμενο στο κινητό: στήλη 133px για «755nm» και 14
   γραμμές κειμένου δίπλα της. Ετικέτα πάνω από το κείμενό της. */
@media(max-width:520px){
  .specs-inline th,.specs-inline td{display:block;width:auto;padding-inline-end:0}
  .specs-inline th{border-bottom:0;padding-bottom:0}
}

/* Κεφαλίδα ενότητας με κουμπί στο κινητό: πάντα το κουμπί κάτω από τον
   τίτλο (δίπλα του έμπαινε μόνο όταν ο τίτλος ήταν σύντομος). */
@media(max-width:700px){
  .sec-head{flex-direction:column;align-items:flex-start}
}

/* Πεδία στην ίδια γραμμή: το σφάλμα κάτω από το αριστερό τέντωνε το δεξί. */
.field{align-content:start}

/* Ghost κουμπί: στο hover άλλαζε μόνο 1px περίγραμμα (#FFF πάνω σε #FFF). */
.btn-ghost:hover{background:var(--panel-2)}

/* ΜΗΚΟΣ ΓΡΑΜΜΗΣ ΚΕΙΜΕΝΟΥ: 82–88 χαρακτήρες στα 1440 → ~75. */
.prose{max-width:40em}
.prose-about > p{max-width:40rem}

/* Γραμμές φόντου: έκλειναν με ευθεία τομή στο κάτω άκρο της ενότητας. */
.bgpaths{
  -webkit-mask-image:radial-gradient(120% 100% at 100% 58%,#000 20%,transparent 78%),
                     linear-gradient(#000 calc(100% - 160px),transparent);
  -webkit-mask-composite:source-in;
  mask-image:radial-gradient(120% 100% at 100% 58%,#000 20%,transparent 78%),
             linear-gradient(#000 calc(100% - 160px),transparent);
  mask-composite:intersect}


/* ══════════════════════════════════════════════════════════════════
   ΚΕΙΜΕΝΑ ΠΕΛΑΤΗ 04/10/2026 (Site_1.docx, v0.15.0): ενότητα γνωριμίας στην
   αρχική, κεφαλίδα και «Καινοτομία» στα μηχανήματα, κείμενα οίκων με
   παραγράφους, νέα σελίδα «Η εταιρεία».
   ══════════════════════════════════════════════════════════════════ */

/* ΑΡΧΙΚΗ — γνωριμία: τίτλος αριστερά, κείμενο δεξιά. */
.intro{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(20px,4vw,58px);align-items:start}
.intro-sub{margin:.9rem 0 0;font-family:var(--f-display);font-weight:700;font-size:.95rem;color:var(--ink-2)}
.intro-t p{margin:0 0 1.05em;color:var(--ink-2);font-size:clamp(1.01rem,1.45vw,1.18rem);line-height:1.72}
.intro-t p:last-child{margin-bottom:0}
.intro-t strong{color:var(--ink)}
@media(max-width:900px){.intro{grid-template-columns:1fr}}

/* «Γιατί GLD» με δύο λόγους (ο τρίτος αφαιρέθηκε): δύο στήλες, όχι τρεις με
   άδειο κελί. */
@media(min-width:431px){
  .reasons:has(> .reason:nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}
}

/* Κείμενο οίκου με παραγράφους (αρχική και σελίδα οίκου). */
/* Οι παράγραφοι της κεφαλίδας κολλούσαν («.sec-head p{margin:0}»). */
.sec-head .lead p + p{margin-top:.85em}
.lead strong{color:var(--ink)}

/* ΜΗΧΑΝΗΜΑΤΑ — κεφαλίδα: τίτλος αριστερά, οι τρεις παράγραφοι δεξιά, ώστε
   οι πρώτες κάρτες να μένουν ψηλά. */
.sec-side{min-width:0}
@media(min-width:1061px){
  .sec-head:has(> .sec-side){flex-wrap:nowrap;align-items:flex-start;gap:clamp(28px,5vw,72px)}
  .sec-head:has(> .sec-side) > .txt{flex:0 1 44%;max-width:none}
  .sec-head > .sec-side{flex:1 1 0;max-width:36em;font-size:1.02rem;line-height:1.68;padding-top:2.2rem}
}

/* ΤΕΣΣΕΡΑ ΣΗΜΕΙΑ (Απόδοση/Ασφάλεια/…): ίδιο πλέγμα με γραμμές όπως το
   «Γιατί GLD», χωρίς αρίθμηση — δεν είναι βήματα. */
.points,.prose ul.points{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.points > li,.prose ul.points > li{background:var(--panel);margin:0;padding:clamp(18px,2.2vw,28px);
  font-size:.9rem;line-height:1.6;color:var(--ink-3)}
.prose ul.points > li::before{content:none}
.points > li > strong{display:block;margin-bottom:.45rem;font-family:var(--f-display);font-size:1.04rem;
  font-weight:700;color:var(--ink)}
@media(max-width:1080px){.points,.prose ul.points{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.points,.prose ul.points{grid-template-columns:1fr}}

/* Η ΕΤΑΙΡΕΙΑ — κάθε <h2> ανοίγει ενότητα (gld_about_body): τίτλος αριστερά,
   σώμα δεξιά, γραμμή ανάμεσα στις ενότητες. */
.ab-sec{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);gap:clamp(18px,4vw,58px);
  padding-block:clamp(26px,3.6vw,48px);border-top:1px solid var(--line)}
.prose .ab-sec > h2{margin:0;font-size:clamp(1.3rem,2.2vw,1.8rem);line-height:1.2}
.ab-body > :first-child{margin-top:0}
.ab-body > :last-child{margin-bottom:0}
.ab-body > p{max-width:40rem}
.ab-body .points,.prose .ab-body ul.points{grid-template-columns:repeat(2,minmax(0,1fr));margin:1.2rem 0}
.ab-tag{font-family:var(--f-display);color:var(--ink)}
.ab-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:1.5rem}
.prose a.btn{border-bottom-width:1px}
.prose a.btn-red{border-color:transparent;color:#fff}
.prose a.btn-ghost{border-color:var(--line-3);color:var(--ink)}
.prose a.btn-ghost:hover{border-color:var(--ink-3)}
.ab-sign{margin-top:1.6rem;font-family:var(--f-display);line-height:1.5;color:var(--ink-2)}
/* Η πορεία συνεργασίας ΕΙΝΑΙ ακολουθία: πέντε βήματα με βέλος ανάμεσα. */
.steps,.prose ol.steps{list-style:none;margin:1.4rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px 0;
  font-family:var(--f-display);font-weight:700;font-size:.92rem;color:var(--ink)}
.steps > li{margin:0;display:flex;align-items:center}
.steps > li:not(:last-child)::after{content:"→";margin-inline:.7em;color:var(--red-txt,#B3141B);font-weight:400}
@media(max-width:900px){
  .ab-sec{grid-template-columns:1fr;gap:.9rem}
}
@media(max-width:560px){
  .ab-body .points,.prose .ab-body ul.points{grid-template-columns:1fr}
  .steps,.prose ol.steps{flex-direction:column;gap:6px}
  .steps > li:not(:last-child)::after{content:none}
  .steps > li + li::before{content:"↓";margin-inline:0 .6em;color:var(--red-txt,#B3141B);font-weight:400}
  .ab-actions .btn{width:100%;justify-content:center}
}


/* ════════════════════════════════════════════════════════════════════
   ΕΛΕΓΧΟΣ STAGING 04/10/2026 (v0.15.1)
   ════════════════════════════════════════════════════════════════════ */
/* Η κάθετος ως διαχωριστικό (βλ. gld_sep): στη γραμματοσειρά των τίτλων
   διαβαζόταν σαν κεφαλαίο Ι. */
.sep{font-family:Arial,Helvetica,sans-serif;font-weight:400;color:var(--ink-3);margin-inline:.12em}

/* Κάτω γραμμή υποσέλιδου στο tablet: τα νομικά δεξιά έχουν ύψος αφής 44px
   και η πρόταση αριστερά καθόταν 12px ψηλότερα. */
.f-bot{align-items:center}

/* Φωτογραφία με χειροκίνητη εξαίρεση (SUPRIMA) πάνω σε λευκή πλακέτα: οι
   πλαϊνές άκρες του τραπεζιού σβήνουν αντί να κόβονται. */
.plate.is-feather img{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent)}
.card .plate.is-feather{border-bottom:1px solid var(--line)}

/* ΣΕΛΙΔΑ ΟΙΚΟΥ — η τελευταία κάρτα μόνη της στη σειρά (Dermaqual: 7 κάρτες
   σε 3 στήλες): πιάνει όλη τη σειρά, φωτογραφία αριστερά στο πλάτος μίας
   στήλης και κείμενο δεξιά. */
@media(min-width:701px) and (max-width:1899px){
  .series-grid > .card:last-child:nth-child(3n+1){grid-column:1/-1;flex-direction:row}
  .series-grid > .card:last-child:nth-child(3n+1) > .plate{flex:0 0 calc((100% - 2 * clamp(13px,1.6vw,22px)) / 3);border-bottom:0;border-inline-end:1px solid var(--line)}
  .series-grid > .card:last-child:nth-child(3n+1) > .card-b{flex:1 1 0;justify-content:center;padding-inline:clamp(22px,4vw,56px)}
  .series-grid > .card:last-child:nth-child(3n+1) > .card-b .more{margin-top:1.1rem}
  .series-grid > .card:last-child:nth-child(3n+1) > .card-b h3{font-size:clamp(1.25rem,2vw,1.6rem)}
}
@media(min-width:461px) and (max-width:700px){
  .series-grid > .card:last-child:nth-child(odd){grid-column:1/-1;flex-direction:row}
  .series-grid > .card:last-child:nth-child(odd) > .plate{flex:0 0 50%;border-bottom:0;border-inline-end:1px solid var(--line)}
  .series-grid > .card:last-child:nth-child(odd) > .card-b{flex:1 1 0;justify-content:center}
  .series-grid > .card:last-child:nth-child(odd) > .card-b .more{margin-top:.9rem}
}

/* ΦΟΡΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ — ΧΩΡΙΣ STICKY ΣΤΗΛΗ (09/10/2026, v0.15.3). Ο κανόνας
   «.band-grid > .band-txt{position:sticky}» είναι για τις σελίδες οίκων. Στην
   επικοινωνία η στήλη κειμένου είναι μόνο ~180px πιο κοντή από τη φόρμα: στεκόταν
   για 180px κύλισης και μετά ξεκινούσε απότομα — στο desktop έμοιαζε με κόλλημα. */
@media(min-width:901px){
  .section .band-grid:has(> .formcol) > .band-txt{position:static}
}
