/* ──────────────────────────────────────────────────────────────────────────
   MANOLI ERP — τα design tokens του έργου.

   ⚠️ ΑΝΤΙΚΑΤΑΣΤΑΘΗΚΕ ΟΛΟΚΛΗΡΗ Η ΠΑΛΕΤΑ, 2026-10-28. Αμέντμεντ, όχι
   σιωπηλή επανεγγραφή: η παλιά ήταν **βαθύ πετρόλ** (`--brand:#1C5560`)
   με ψυχρά ουδέτερα, διαλεγμένη από εμένα. Ο Νικόλας την αμφισβήτησε —
   *«I am not sure for the petrol color. I work many hours on that»* —
   ζήτησε έρευνα, και μετά έδειξε τα **δικά του** χρώματα:

     «δες και το site μου αρέσει και το background και το mint color του
      footer και τα χρώματα του loyalty club stages και το viber color»
     «ολες αυτες οι pale αποχρωσεις μου αρεσουν, θελω χρωματα στο erp να
      ειναι ζωντανο»
     «και να υπαρχει συνεπεια στα χρωματα και στις διακρισεις»

   ΟΛΑ ΤΑ ΧΡΩΜΑΤΑ ΕΔΩ ΕΡΧΟΝΤΑΙ ΑΠΟ ΤΟ CRM ΚΑΙ ΤΟ WEBSITE ΤΟΥ, αυτολεξεί
   (`wellnessr-crm/app/globals.css` και `wordpress/redesign.css`). Κάθε
   αντίθεση που αναγράφεται **υπολογίστηκε**, δεν εκτιμήθηκε.

   ΜΟΝΟ ΜΕΡΑ. *«δεν θελω για νυχτα μονο για μέρα»* — τα δύο σκοτεινά
   μπλοκ αφαιρέθηκαν ολόκληρα. Μην τα ξαναβάλεις χωρίς να το πει.
   ────────────────────────────────────────────────────────────────────────── */

/* ── Η ΓΡΑΜΜΑΤΟΣΕΙΡΑ: IBM Plex Sans, φιλοξενούμενη ΤΟΠΙΚΑ ─────────────────
   ⚠️ ΑΛΛΑΞΕ 2026-11-01. Αμέντμεντ, όχι σιωπηλή επανεγγραφή.

   Ήταν **Commissioner + EB Garamond**, οι δύο του website του. Ο Νικόλας:
   *«Κάτι δεν μου αρέσει με τις γραμματοσειρές όμως»*.

   Του δόθηκαν **τέσσερις** εκδοχές με το ίδιο ακριβώς περιεχόμενο, ίδια
   χρώματα και ίδια μεγέθη — άλλαζε **μόνο** η γραμματοσειρά. Διάλεξε την
   **IBM Plex Sans**.

   Γιατί στέκει η επιλογή: η Plex σχεδιάστηκε από την IBM **για οθόνες με
   δεδομένα** — πλατύτερα, πιο ανοιχτά γράμματα, φτιαγμένα για πολλές ώρες.
   Είναι ακριβώς η περίπτωσή του: κατά το `R143` η αισθητική είναι
   προϋπόθεση εργασίας, και δουλεύει 15-20 παραστατικά τη μέρα.

   Και η σερίφ **έφυγε εντελώς**: μία οικογένεια παντού, με βάρη. Η EB
   Garamond είναι γραμματοσειρά βιβλίου· σε εργαλείο εργοστασίου έδειχνε
   λογοτεχνική, και τα ελληνικά των σερίφ είναι πιο παλιομοδίτικα από τα
   λατινικά τους.

   ⚠️ ΤΑ ΕΛΛΗΝΙΚΑ ΕΛΕΓΧΘΗΚΑΝ ΠΡΙΝ ΤΗΝ ΕΠΙΛΟΓΗ, στην πηγή. Δοκιμάστηκαν 18
   γραμματοσειρές· **Lato, Montserrat, Rubik και Mulish ΔΕΝ έχουν ελληνικά**
   και κόπηκαν αμέσως. Είναι το μάθημα της Playfair Display, εφαρμοσμένο:
   γραμματοσειρά δεν προτείνεται πριν επιβεβαιωθεί το ελληνικό υποσύνολο.

   Τοπικά και όχι από τη Google, γιατί η σελίδα πρέπει να ανοίγει στο
   εργοστάσιο **χωρίς internet**. **Δύο** αρχεία, **55 KB** σύνολο — τα μισά
   από τα 116 KB που είχαμε, επειδή η Plex είναι **variable**: ένα αρχείο
   καλύπτει όλα τα βάρη 400-600. Άδεια OFL — η φιλοξενία επιτρέπεται.
   ───────────────────────────────────────────────────────────────────────── */
@font-face{font-family:'IBM Plex Sans'; font-style:normal; font-weight:400 600; font-display:swap;
  src:url('/fonts/plexsans-greek.woff2') format('woff2');
  unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face{font-family:'IBM Plex Sans'; font-style:normal; font-weight:400 600; font-display:swap;
  src:url('/fonts/plexsans-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  /* ── ΤΡΙΑ ΕΠΙΠΕΔΑ ────────────────────────────────────────────────────
     *«το εντελως λευκο ισως κουραζει, καλο ειναι να το χρησιμοποιουμε σαν
      backround για να δωσουμε εμφαση. αλλα πισω απο το λευκο να υπαρχει
      και άλλο background»*

     Είναι η δομή του CRM του, που τη γράφει αυτολεξεί: «3-layer
     elevation: sidebar → page → card». Μετρημένα: ιβουάρ↔άμμος 1,13:1 ·
     άμμος↔λευκό 1,20:1. Τα επίπεδα **φαίνονται, δεν φωνάζουν**. */
  --ground:#FAF8F3;      /* ιβουάρ — η σελίδα        (--wr-ivory) */
  --card-2:#EEEAE2;      /* άμμος  — μπάρες, κεφαλίδες (--wr-sand) */
  --card:#FFFFFF;        /* λευκό  — ΜΟΝΟ για έμφαση  (--wr-card) */
  --line:#E0DBD1; --line-soft:#ECE8E0;   /* (--wr-line) */

  /* ── ΜΕΛΑΝΙ ──────────────────────────────────────────────────────────
     Το μαύρο σε καθαρό λευκό δίνει 21:1 και **θολώνει** τα γράμματα σε
     υψηλή φωτεινότητα. Το μελάνι του site του δίνει 17,5:1 σε λευκό και
     16,5:1 στο ιβουάρ — άφθονο, και πιο ξεκούραστο. */
  --ink:#1C1916;         /* 17,50:1 σε λευκό   (--wr-ink)      */
  --ink-2:#55504A;       /*  8,22:1            */
  --ink-3:#6B6660;       /*  5,68:1            (--wr-ink-soft) */
  --ink-4:#767068;       /*  4,80:1 — το κατώτατο για κείμενο  */
  /* ⚠️ Το δικό του `--wr-ink-mute:#9C9890` δίνει **2,87:1** και ΔΕΝ
     επιτρέπεται για κείμενο εδώ. Στο site το σηκώνει γιατί κάθεται σε
     μεγάλα μεγέθη· σε πίνακα 16px όχι. */

  /* ── ΕΝΕΡΓΕΙΑ: το μπλε του Αιγαίου ──────────────────────────────────
     *«I think the Viber color is too much. We're gonna use it, but maybe
      less.»* — άρα το μωβ **δεν** είναι το κύριο χρώμα ενεργειών. Κύριο
     γίνεται το αιγαιοπελαγίτικο μπλε του: ήρεμο, και 7,21:1 με λευκό. */
  --brand:#3A5A78;       /* ηρεμία · λευκό πάνω  7,21:1  (--wr-aegean) */
  --brand-2:#2E4860;     /* hover  · λευκό πάνω  9,49:1 */
  --brand-3:#25384C;     /* πάτημα · λευκό πάνω 12,01:1 */
  --brand-wash:#E5ECF3;  /* (--wr-aegean-light) · κείμενο brand πάνω 6,05:1 */
  /* ⚠️ Η γραμμή του αιγαίου — ίδια με το `--per-aigaio-line`, γιατί το
     `--brand` ΕΙΝΑΙ το αιγαίο. Χρειάστηκε όταν τα πλαίσια έπαψαν να
     παίρνουν χρώμα περιοχής (`R245`) και το έπιασε το `PaletaTest`. */
  --brand-line:#C6D6E4;

  /* ── ΤΟ ΧΑΡΤΙ ΤΗΣ ΚΑΡΤΑΣ ΠΑΡΑΓΩΓΗΣ (`R254`) ─────────────────────────
     Δύο χρώματα που **δεν είναι της οθόνης**: η κάρτα τυπώνεται με
     μελάνι σε χαρτί. Το ιβουάρ της εφαρμογής θα έτρωγε τόνερ χωρίς λόγο,
     και το μελάνι πρέπει να είναι πιο μαύρο από το `--ink` για να βγει
     καθαρό το QR σε φθηνό εκτυπωτή. */
  --karta-charti:#FFFFFF;
  --karta-melani:#111111;
  --karta-gri:#555555;
  --karta-gri-2:#777777;
  --karta-grammi:#CCCCCC;
  --karta-skia:#F2F2F2;
  --on-brand:#FFFFFF;

  /* ── ΤΟΝΟΣ: το μωβ της Viber, ΛΙΓΟ ───────────────────────────────────
     Το **επίσημο** μωβ `#7360F2` δίνει 4,48:1 — κόβεται στο 4,5 και δεν
     κρατά λευκό κείμενο. Το CRM του είχε ήδη διαλέξει το βαθύτερο. */
  --accent:#665CAC;      /* 5,69:1 σε λευκό  (--wr-viber)      */
  --accent-2:#574A8A;    /* 7,63:1           (--wr-viber-deep) */
  --accent-wash:#F1EFFE;

  /* ── ΚΑΤΑΣΤΑΣΗ — τα νοήματα του CRM του, αμετάβλητα ──────────────────
     Η αρχή 12 του CRM του: «Color carries meaning only. If a design
     element uses color and the meaning of that color cannot be stated in
     one word, the use of color should be removed.»

       sage  → εντάξει, ολοκληρωμένο
       gold  → εκκρεμεί, λείπει κάτι, χρειάζεται προσοχή
       terra → επείγει, πρόβλημα

     ⚠️ ΚΑΝΟΝΑΣ ΑΠΟ ΜΕΤΡΗΣΗ: το χρώμα κατάστασης διαβάζεται πάνω σε
     **λευκό ή ιβουάρ** (4,48–5,34:1), αλλά **ΟΧΙ** πάνω στο δικό του
     απαλό φόντο (3,88–4,44:1). Εκεί χρησιμοποίησε την `-deep` εκδοχή,
     που δίνει 8,3–9,5:1.

     ⚠️ Το gold και το terra απέχουν μόλις **11,8** μονάδες — πολύ
     λιγότερο από τα άλλα ζεύγη. Γι' αυτό κάθε κατάσταση γράφεται
     **χρώμα ΚΑΙ λέξη**, ποτέ μόνο κουκκίδα. */
  --ok:#567A5C;    --ok-deep:#2A4E30;    --ok-wash:#EAF3EC;    --ok-line:#C3DDC9;
  --warn:#8A7020;  --warn-deep:#443808;  --warn-wash:#F0E8D0;  --warn-line:#DCCB9E;
  --alarm:#A05830; --alarm-deep:#6A2E10; --alarm-wash:#F4E8DF; --alarm-line:#E0C4B2;

  /* ── Η ΜΕΝΤΑ ─────────────────────────────────────────────────────────
     Τη ζήτησε δύο φορές: *«I also want the mint color, for sure»* και
     *«the mint of my website footer. I want it»*. Είναι το `--wr-sage-mist`
     του footer του, και στο σύστημα είναι το **απαλό του εντάξει** — άρα
     έχει νόημα, δεν είναι διακόσμηση.

     ⚠️ Πάνω στο ιβουάρ φαίνεται **1,068:1** — σχεδόν αόρατη. Στο site του
     είναι γραμμένο με κεφαλαία τι συνέβη: η πρώτη εκδοχή είχε φόντο μέντα
     και «the Insider tile vanished», το έπιασε στο κινητό. Κάθε επιφάνεια
     σε μέντα θέλει **περίγραμμα** (`--ok-line`). */
  --mint:#EAF3EC;        /* === --ok-wash */

  /* ── ΟΙ ΠΕΡΙΟΧΕΣ ΤΗΣ ΔΟΥΛΕΙΑΣ — ΠΕΝΤΕ ΧΡΩΜΑΤΑ, ΑΥΣΤΗΡΑ (`R218`) ─────
     Δική του εντολή, 2026-11-02: *«θέλω παραπάνω χρώματα, αλλά να
     υπάρχει **συνέπεια και συνέχεια**. Να ορίσουμε έναν κατάλογο
     χρωμάτων και να τον χρησιμοποιούμε με **αυστηρότητα** σε
     συγκεκριμένες διαδικασίες.»*

     Ο κανόνας είναι ένας: **το χρώμα απαντά μόνο στο «σε ποιο κομμάτι
     της δουλειάς είμαι»**. Η ΚΑΤΑΣΤΑΣΗ κρατά χωριστά τα δικά της τρία
     (ok / warn / alarm) και ποτέ δεν δανείζεται χρώμα περιοχής.

     Οι ομάδες του μενού είναι **δικές του λέξεις** — τις δικές μου
     («μπαίνει», «φεύγει») τις απέρριψε ρητά: *«δεν μου αρέσουν … είναι
     ερασιτεχνικές»*. Το χρώμα δένει στις ομάδες που ήδη ξέρει:

       καφέ    → Προμηθευτές, Δέρματα
       αιγαίο  → Διακινήσεις, Παραγωγή     (= το ήδη υπάρχον --brand)
       πετρόλ  → Απόθεμα
       μωβ     → Πωλήσεις, Παρακαταθήκες   (= το ήδη υπάρχον --accent)
       βυσσινί → Οικονομικά
       γκρι    → Αρχείο — χωρίς χρώμα επίτηδες, δεν είναι καθημερινό

     ⚠️ ΜΕΤΡΗΜΕΝΑ, ΟΧΙ ΕΚΤΙΜΗΜΕΝΑ. Κάθε χρώμα περνά 4,5:1 και πάνω στο
     λευκό ΚΑΙ πάνω στο δικό του wash:

       χρώμα    λευκό  ιβουάρ   wash
       καφέ      7,94    7,48   6,72
       αιγαίο    7,21    6,79   6,05
       πετρόλ    5,92    5,58   5,06
       μωβ       5,69    5,36   5,02
       βυσσινί   7,48    7,05   6,31   */
  --per-kafe:#6B4A2F;    --per-kafe-wash:#F2EBE4;    --per-kafe-line:#DFD0C0;
  --per-aigaio:#3A5A78;  --per-aigaio-wash:#E5ECF3;  --per-aigaio-line:#C6D6E4;
  --per-petrol:#1F6F6B;  --per-petrol-wash:#E2F0EF;  --per-petrol-line:#BEDCDA;
  --per-mov:#665CAC;     --per-mov-wash:#F1EFFE;     --per-mov-line:#D5CFF4;
  --per-vissini:#8A3A52; --per-vissini-wash:#F7E8EC; --per-vissini-line:#E8C9D2;
  --per-gkri:#4A4F55;    --per-gkri-wash:#ECEDEF;    --per-gkri-line:#D7D9DC;

  /* ⚠️ ΠΡΟΕΠΙΛΟΓΗ ΓΙΑ ΤΟ ΤΡΕΧΟΝ ΠΡΑΓΜΑ (`R230`).

     ⚠️ ΑΜΕΝΤΜΕΝΤ 2026-11-03 (`R245`): το `--per` το ορίζει πια **μόνο**
     ο σύνδεσμος του μενού. Παντού αλλού μένει αυτή η προεπιλογή — το
     αιγαίο — που είναι **ακριβώς το `--brand`**. Έτσι κουμπιά και
     σύνδεσμοι έχουν ένα χρώμα σε όλη την εφαρμογή.
     Το παλιό σχόλιο έλεγε: «το ορίζει το `[data-per]` σε κάθε οθόνη και σε κάθε
     σύνδεσμο. Εδώ παίρνει **ουδέτερη αφετηρία**, ώστε μια οθόνη χωρίς
     δηλωμένο πράγμα — ο Πίνακας — να μη μένει με άχρωμο κουμπί ή
     αόρατη ρίγα. Το αιγαίο είναι η βάση του έργου. */
  --per:var(--per-aigaio);
  --per-wash:var(--per-aigaio-wash);
  --per-line:var(--per-aigaio-line);

  /* ── ΓΡΑΜΜΑΤΟΣΕΙΡΕΣ ──────────────────────────────────────────────────
     Οι δύο του website. Οι εφεδρείες είναι γραμματοσειρές συστήματος με
     πλήρη ελληνικά, ώστε η οθόνη να διαβάζεται ακόμη κι αν το woff2
     λείπει. */
  --sans:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;
  /* ΜΙΑ οικογένεια παντού. Οι τίτλοι ξεχωρίζουν με **βάρος**, όχι με άλλη
     γραμματοσειρά — η σερίφ έφυγε 2026-11-01 με επιλογή του Νικόλα. */
  /* ⚠️ ΤΟ ΜΗΔΕΝ ΜΕ ΤΗΝ ΚΑΘΕΤΟ — άλλαξε 2026-11-01. Αμέντμεντ.
     Ήταν `ui-monospace,"SF Mono",Menlo,…`. Σε Mac αυτό λύνεται στην
     **SF Mono**, που γράφει το μηδέν με διαγώνια γραμμή. Ο Νικόλας:
     *«αυτό το 0 με τη γραμμή στη μέση δεν μπορώ, μου καίει τον
     εγκέφαλο»*. Του δόθηκαν τρεις εκδοχές — διάλεξε την **1**.

     Δεν μπήκε άλλη γραμματοσειρά μηχανής: η **IBM Plex Mono** έχει
     ΑΚΡΙΒΩΣ το ίδιο πρόβλημα (ελέγχθηκε), και η Roboto Mono θα ήταν
     τρίτο αρχείο για να λύσει κάτι που λύνεται με μηδέν αρχεία.

     Η στοίχιση των στηλών **δεν χάνεται**: τη δίνει το
     `font-variant-numeric:tabular-nums`, που κάνει όλα τα ψηφία ίσου
     πλάτους. Αυτός είναι ο λόγος που θέλαμε μηχανή — όχι η όψη.
     Γι΄ αυτό το `tabular-nums` μπαίνει σε **κάθε** σημείο παρακάτω. */
  --mono:'IBM Plex Sans','Helvetica Neue',Arial,sans-serif;

  /* ── ΜΕΓΕΘΗ ──────────────────────────────────────────────────────────
     ⚠️ Το μάθημα του CRM του, γραμμένο εκεί: «micro/small sizes (8–18px),
     **where legibility was the complaint**, get a stronger +2px step».
     Στο site, δικά του λόγια: «too small» και «some fonts are very
     small». Καμία τιμή εδώ κάτω από 14px. */
  --fs-lbl:13px;   /* ετικέτα ΚΕΦΑΛΑΙΑ */
  --fs-sm:14.5px;  /* κωδικοί, βοηθητικό */
  --fs:16px;       /* σώμα, γραμμή πίνακα */
  --fs-val:17px;   /* τιμή πεδίου */
  --fs-h:26px;     /* τίτλος οθόνης */

  --r:8px;
  --shadow:0 1px 2px rgba(28,25,22,.05), 0 4px 12px -6px rgba(28,25,22,.10);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--ground); color:var(--ink);
  font-family:var(--sans); font-size:var(--fs); line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--per, var(--brand)); text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--per, var(--brand)); outline-offset:2px; border-radius:2px}

/* ── Σκελετός ───────────────────────────────────────────────── */
.top{
  background:var(--card); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:10;
}
.top-in{
  max-width:1120px; margin:0 auto; padding:12px clamp(14px,3vw,28px);
  display:flex; align-items:center; gap:18px; flex-wrap:wrap;
}
.brand{
  font-weight:700; letter-spacing:.14em; font-size:15px;
  color:var(--ink); white-space:nowrap;
}
.brand span{font-weight:500; letter-spacing:.06em; color:var(--ink-3); margin-left:8px; font-size:var(--fs-lbl)}
.nav{display:flex; gap:4px; margin-left:auto; flex-wrap:wrap}
.nav a{
  font-size:14px; font-weight:500; padding:6px 11px; border-radius:var(--r);
  color:var(--ink-2);
}
.nav a:hover{background:var(--card-2); text-decoration:none; color:var(--ink)}
.nav a[aria-current]{background:var(--brand-wash); color:var(--brand); font-weight:600}

/* ⚠️ ΤΟ ΠΛΑΤΟΣ — άλλαξε 2026-11-01, από φωτογραφία της οθόνης του.
   Ήταν `max-width:1120px; margin:0 auto`. Μέσα στο πλέγμα του κελύφους
   (232px μενού + 1fr) αυτό άφηνε **δύο** νεκρά αυλάκια: ~200px δεξιά
   από το μενού και ~170px στην άκρη. Ο Νικόλας: *«θα ήθελα η οθόνη να
   πιάνει πιο μεγάλο μέρος … να μην υπάρχει μεγάλο κενό»*.
   Το `margin:0` σβήνει το κεντράρισμα· το καπέλο μένει ψηλά μόνο για
   να μη γίνουν οι γραμμές κειμένου ατέλειωτες σε πολύ φαρδιά οθόνη.
   Τα κείμενα προστατεύονται ήδη χωριστά: `.lede{max-width:62ch}`. */
main{max-width:1680px; margin:0; padding:clamp(18px,2.2vw,30px) clamp(18px,2.4vw,34px) 90px}

/* ── Αναζήτηση ──────────────────────────────────────────────── */
.search{display:flex; gap:10px; flex-wrap:wrap; align-items:stretch}
.search input{
  flex:1 1 240px; min-width:0; font:inherit; font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:17px; padding:11px 14px; color:var(--ink);
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
}
.search input::placeholder{color:var(--ink-4); font-family:var(--sans); font-size:15px}
/* ══════════════════════════════════════════════════════════════════════
   ΤΑ ΚΟΥΜΠΙΑ — ΤΕΣΣΕΡΑ ΕΙΔΗ, ΠΑΝΤΑ ΤΑ ΙΔΙΑ (`R221`)

   Γενική εντολή του, 2026-11-02: *«δεν θέλω links λέξεις που να πατάω,
   μου αρέσουν τα κουμπιά πιο πολύ. Θα ήθελα κουμπιά δηλαδή για
   αποθήκευση, ακύρωση, διόρθωση — **παράδειγμα σου δίνω για να φερθείς
   ανάλογα**. Δεν θέλω τα links που μου έχεις κάτω, θέλω κουμπιά που να
   φαίνονται ωραία, καθαρά.»*

   Η γραμμή: **κουμπί** ό,τι ΚΑΝΕΙ κάτι · **σύνδεσμος** ό,τι ΠΑΕΙ ΚΑΠΟΥ
   μέσα στα δεδομένα (σειριακός, κωδικός, όνομα) — αυτό είναι ο `R168`
   που ζήτησε ο ίδιος. Αν γίνονταν όλα κουμπιά, κάθε γραμμή πίνακα θα
   είχε δέκα κουμπιά και δεν θα διαβαζόταν τίποτα.

   Διάλεξε την **επιλογή Α**: το κύριο κουμπί γεμάτο χρώμα, τα υπόλοιπα
   με περίγραμμα — «φαίνεται αμέσως τι είναι η κύρια ενέργεια».

   ⚠️ Το κουμπί παίρνει το χρώμα της **περιοχής** όπου βρίσκεται
   (`R218`): αποθηκεύεις σε πετρόλ οθόνη με πετρόλ κουμπί.
   ══════════════════════════════════════════════════════════════════════ */
.btn{
  display:inline-flex; align-items:center; gap:8px; line-height:1.2;
  font:inherit; font-weight:600; font-size:15px; cursor:pointer;
  padding:11px 20px; border-radius:var(--r); text-decoration:none;
  white-space:nowrap;
  background:var(--per, var(--brand)); color:#fff;
  border:1px solid var(--per, var(--brand));
}
/* ⚠️ ΤΟ `text-decoration:none` ΔΕΝ ΕΙΝΑΙ ΠΕΡΙΤΤΟ — ΤΟ ΠΙΟ ΑΚΡΙΒΟ ΜΙΚΡΟ ΛΑΘΟΣ.

   Ο κανόνας `a:hover{text-decoration:underline}` έχει μεγαλύτερη ειδικότητα
   από το `.btn` (0,1,1 έναντι 0,1,0), άρα **κάθε κουμπί που είναι
   σύνδεσμος** υπογραμμιζόταν μόλις περνούσε το ποντίκι — σε όλη την
   εφαρμογή, όχι σε μία οθόνη.

   Ο Νικόλας: *«το κουμπί διόρθωση δεν το θέλω να υπογραμμίζετε κάτω σαν
   link θέλω ένα κουμπί ωραίο όχι λινκ τσουρουτικο»*. Το `R221` λέει
   «ενέργεια = κουμπί, σύνδεσμος = πλοήγηση»· η υπογράμμιση το έσπαγε
   οπτικά ακόμη κι όπου ο κώδικας ήταν σωστός. */
.btn:hover,.btn:focus-visible,.btn:active{text-decoration:none}
.btn:hover{filter:brightness(.90)}
.btn:focus-visible{outline:2px solid var(--per, var(--brand)); outline-offset:3px}

/* ── δεύτερο: ενέργεια, αλλά όχι η κύρια ── */
.btn.deytero{
  background:var(--card); color:var(--per, var(--brand));
  border-color:var(--per-line, var(--line));
}
.btn.deytero:hover{background:var(--per-wash, var(--card-2)); filter:none}

/* ── ήσυχο: πίσω, άκυρο ── */
.btn.quiet{background:transparent; color:var(--ink-2); border-color:var(--line)}
.btn.quiet:hover{background:var(--card-2); color:var(--ink); filter:none}

/* ── κίνδυνος: σβήνει. Ποτέ γεμάτο κόκκινο — δεν τραβά το μάτι κατά λάθος. */
.btn.kindynos{background:var(--card); color:var(--alarm-deep); border-color:var(--alarm-line)}
.btn.kindynos:hover{background:var(--alarm-wash); filter:none}

/* ── μικρό: μέσα σε συρτάρι, σε γραμμή πίνακα, σε σελιδοποίηση ── */
.btn.mikro{font-size:var(--fs-sm); padding:6px 13px; border-radius:7px}

/* Η σειρά είναι πάντα ίδια: κύριο, δεύτερο, …, κενό, ήσυχο/κίνδυνος. */
.koumpia{display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.koumpia .keno{flex:1}

/* ── Τίτλοι ─────────────────────────────────────────────────── */
/* Ο τίτλος ξεχωρίζει με βάρος, στην ίδια γραμματοσειρά. */
h1{font-family:var(--sans); font-weight:600;
   font-size:clamp(26px,4vw,36px); line-height:1.12; margin:0 0 6px; letter-spacing:-.005em}
h2{font-size:var(--fs-lbl); font-weight:600; letter-spacing:.13em; text-transform:uppercase;
   color:var(--ink-3); margin:0 0 12px}
.lede{color:var(--ink-2); margin:0 0 26px; max-width:62ch}

/* ── Κάρτες ─────────────────────────────────────────────────── */
.card{
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  padding:clamp(16px,2.4vw,22px); box-shadow:var(--shadow);
}
/* ⚠️ ΚΕΝΟ ΑΝΑΜΕΣΑ ΣΤΟΥΣ ΠΙΝΑΚΕΣ — ζητήθηκε 2026-11-01.
   Ο Νικόλας: *«στον πίνακα κάτω που είναι οι κινήσεις, άσε λίγο κενό,
   λίγο χώρο ανάμεσα στους πίνακες»*.

   Υπήρχε κανόνας `.card + .card` — αλλά ο πίνακας των κινήσεων έρχεται
   μετά από **πλέγμα**, όχι μετά από κάρτα, οπότε δεν έπιανε ποτέ και οι
   δύο ακουμπούσαν. Ο δεύτερος κανόνας το καλύπτει. */
.card + .card{margin-top:22px}
.grid + .card, .card + .grid, .grid + .grid{margin-top:26px}
.grid{display:grid; gap:18px; grid-template-columns:minmax(0,1fr)}
@media (min-width:880px){ .grid.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} }
@media (min-width:880px){ .grid.side{grid-template-columns:minmax(0,340px) minmax(0,1fr)} }

/* ── Η ταυτότητα της γούνας ─────────────────────────────────── */
.hero{display:flex; gap:20px; align-items:flex-start; flex-wrap:wrap; margin:0 0 22px}
.seiriakos{
  font-family:var(--mono); font-variant-numeric:tabular-nums; font-weight:700; letter-spacing:-.01em;
  font-size:clamp(34px,6vw,52px); line-height:1; color:var(--ink);
}
/* ⚠️ Ο ΤΙΤΛΟΣ ΔΕΝ ΣΠΑΕΙ ΣΕ ΔΕΥΤΕΡΗ ΓΡΑΜΜΗ — 2026-11-01.
   Ο Νικόλας: *«θέλω ο τίτλος που φαίνεται πάνω να μην αλλάζει γραμμή, να
   φαίνεται ολόκληρος και το μοντέλο»*. Το «Mink Female Stucco Coat with
   Collar Marten EIR-101/C» έσπαγε και το «EIR-101/C» έπεφτε μόνο του.
   Αιτία: το `.hero-meta` ήταν στριμωγμένο ανάμεσα στον σειριακό και τα
   σήματα. Με `flex:1 1 420px` παίρνει ό,τι περισσεύει, και τα σήματα
   κατεβαίνουν μόνα τους σε στενή οθόνη (το `.hero` έχει ήδη wrap). */
.hero-meta{display:flex; flex-direction:column; gap:5px; padding-top:5px;
  flex:1 1 420px; min-width:0}
.eidos{font-size:clamp(17px,2.4vw,21px); font-weight:600; line-height:1.25}
.kodikos{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:var(--fs-sm); color:var(--ink-3)}
/* ⚠️ ΤΑ ΣΗΜΑΤΑ ΚΑΤΩ ΑΠΟ ΤΟΝ ΚΩΔΙΚΟ — μετακινήθηκαν 2026-11-01.
   Ήταν `margin-left:auto`, δηλαδή σπρωγμένα στην πάνω δεξιά γωνία. Μέσα
   στο `.hero-meta` (που είναι στήλη) το `auto` θα τα έσπρωχνε πάλι δεξιά,
   γι΄ αυτό φεύγει. Ο Νικόλας: *«για να μην κοιτάζω πάνω δεξιά»*. */
.badges{display:flex; gap:7px; flex-wrap:wrap; margin-top:4px}
.badge{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  padding:4px 10px; border-radius:2px; border:1px solid; white-space:nowrap;
}
.badge.ok{color:var(--ok); background:var(--ok-wash); border-color:var(--ok-line)}
.badge.warn{color:var(--warn); background:var(--warn-wash); border-color:var(--warn-line)}
.badge.alarm{color:var(--alarm); background:var(--alarm-wash); border-color:var(--alarm-line)}
.badge.calm{color:var(--ink-2); background:var(--card-2); border-color:var(--line)}

/* ── Ζεύγη κλειδί/τιμή ──────────────────────────────────────── */
dl.pairs{margin:0; display:grid; gap:0}
dl.pairs > div{
  display:grid; gap:2px 14px; grid-template-columns:1fr;
  padding:9px 0; border-bottom:1px solid var(--line-soft);
}
dl.pairs > div:last-child{border-bottom:none}
@media (min-width:520px){ dl.pairs > div{grid-template-columns:minmax(0,150px) minmax(0,1fr)} }
dl.pairs dt{font-size:14px; color:var(--ink-3)}
dl.pairs dd{margin:0; font-weight:500}
dl.pairs dd.m{font-family:var(--mono); font-variant-numeric:tabular-nums; font-weight:500}
dl.pairs dd.empty{color:var(--ink-4); font-weight:400; font-style:italic}

/* ── Πίνακες ────────────────────────────────────────────────── */
.scroll{overflow-x:auto; margin:0 -4px; padding:0 4px}
table{width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums}
thead th{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); text-align:left; padding:0 12px 9px 0; white-space:nowrap;
  border-bottom:1px solid var(--line);
}
/* ⚠️ ΙΔΙΟ ΥΨΟΣ ΣΕ ΚΑΘΕ ΓΡΑΜΜΗ — *«και τα rows που εκανες να ειναι ιδια
   σε υψος»*. Το `nowrap` είναι ο μηχανισμός: αρκεί **ένα** κελί να
   τυλιχτεί σε δεύτερη γραμμή και η γραμμή ψηλώνει. Ο πίνακας κυλάει
   οριζόντια μέσα στο `.scroll`, άρα τίποτα δεν κόβεται. */
tbody td{padding:0 14px 0 0; height:44px; border-bottom:1px solid var(--line-soft);
  vertical-align:middle; white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
td.m,th.m{font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap}
td.num,th.num{text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap}
td.sub{color:var(--ink-3); font-size:var(--fs-sm)}

/* ⭐ Η ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΡΟΥΧΟΥ ΚΑΙ ΤΟΥ ΔΕΡΜΑΤΟΣ — ΜΕΓΑΛΥΤΕΡΗ, ΠΑΝΤΟΥ (`R266`).

   Δική του εντολή, 2026-11-04: *«θα ήθελα την περιγραφή της γούνας /
   δερμάτων λίγο πιο μεγάλα γράμματα — **όπου υπάρχει η περιγραφή**, μη
   στα λέω ένα ένα: δελτία, αποθήκη, παραστατικά, **παντού**»*.

   ── ΓΙΑΤΙ 17 ΚΑΙ ΟΧΙ 18 ───────────────────────────────────────────────

   Του δόθηκαν τέσσερα μεγέθη σε preview και διάλεξε τη σύσταση. Ο λόγος
   είναι μετρημένος στις **6.386** περιγραφές του: μέσο μήκος **44**
   χαρακτήρες, μεγαλύτερη **74**. Στα 18px οι μακριές τυλίγονται σε
   δεύτερη σειρά σε στενή οθόνη, και οι γραμμές του πίνακα χάνουν το ίδιο
   ύψος — ακριβώς το πρόβλημα που μόλις λύθηκε (`R265`). Στα 17 η
   μεγαλύτερη χωράει ακόμη σε μία σειρά.

   ── ΚΑΙ ΤΟ ΜΕΛΑΝΙ, ΟΧΙ ΜΟΝΟ ΤΟ ΜΕΓΕΘΟΣ ───────────────────────────────

   Στα παραστατικά η περιγραφή ήταν `td.sub`: **14,5px και γκρι**,
   φτιαγμένη για «δευτερεύουσα» πληροφορία. Δεν είναι δευτερεύουσα —
   είναι **τι είναι το ρούχο**. Παίρνει πλήρες μελάνι.

   ⚠️ ΜΙΑ ΚΛΑΣΗ, ΟΧΙ ΔΕΚΑ ΣΗΜΕΙΑ. Η περιγραφή εμφανιζόταν σε **εννέα**
   οθόνες με **τρία** διαφορετικά μεγέθη. Από εδώ και πέρα κάθε κελί
   περιγραφής φοράει `perigrafi` και αλλάζει **εδώ** (`D-142`). */
td.perigrafi,
table.grammes-parastatikou td.ti{font-size:17px; color:var(--ink)}
td.perigrafi a, table.grammes-parastatikou td.ti a{color:inherit}

/* ⭐ Η ΜΟΝΑΔΑ ΔΙΠΛΑ ΣΤΟΝ ΑΡΙΘΜΟ — «2 τεμάχια», «124 δέρματα» (`R254`).
   Δική του επιλογή «Α» από δύο που είδε σε preview: μία στήλη με τη
   λέξη, αντί για δύο στήλες με σκέτους αριθμούς. Η λέξη είναι πιο
   αχνή και μικρότερη ώστε να κερδίζει ο αριθμός — αλλά **όχι κάτω
   από 13px**, που είναι το όριο αναγνωσιμότητας του έργου. */
td .monada{color:var(--ink-3); font-size:13.5px; font-family:var(--sans); margin-left:4px}
tbody tr:hover{background:var(--card-2)}

/* ── Σημειώσεις και κενά ────────────────────────────────────── */
.note{
  border-left:3px solid var(--line); padding:2px 0 2px 14px;
  color:var(--ink-2); font-size:14.5px; margin:14px 0 0;
}
.note.warn{border-left-color:var(--warn)}
.note.alarm{border-left-color:var(--alarm)}
.note.ok{border-left-color:var(--ok)}
.empty-state{
  padding:34px 20px; text-align:center; color:var(--ink-3);
  background:var(--card-2); border:1px dashed var(--line); border-radius:var(--r);
}
.empty-state strong{display:block; color:var(--ink); font-size:17px; margin-bottom:6px}

/* ── Το ΜΟΝΤΕΛΟ ─────────────────────────────────────────────────
   «το μοντελο δεν βλεπω... πολύ βασικό» — Νικόλας, βλέποντας την
   πρώτη έκδοση της καρτέλας. Είναι ο τρόπος που αναγνωρίζει τι είναι
   μια γούνα, άρα παίρνει τη θέση και το βάρος που του αναλογούν:
   αμέσως κάτω από τον σειριακό, πριν από την αγγλική περιγραφή. */
.tautotita{display:flex; gap:22px; flex-wrap:wrap; margin-bottom:5px}
.montelo{display:flex; align-items:baseline; gap:9px}
.montelo-et{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-3);
}
.montelo-v{
  font-family:var(--mono); font-variant-numeric:tabular-nums; font-weight:700; font-size:clamp(18px,2.6vw,23px);
  letter-spacing:-.01em; color:var(--brand);
}
/* Το χρώμα έχει όνομα, όχι κωδικό («Blackglama», όχι «0012») — άρα
   γράφεται σαν λέξη, όχι σαν κωδικός. */
.montelo-v.chroma{font-family:var(--sans); font-weight:700; letter-spacing:0}
.montelo-v.keno{
  font-family:var(--sans); font-weight:400; font-size:15px;
  font-style:italic; color:var(--ink-4);
}

/* Η παραλλαγή του πατρόν: «1849» + «με γιακά». Δηλώνεται ΜΙΑ φορά και ο
   κλασικός κωδικός «1849/C» παράγεται — «δηλώνεται 2 φορες ουσιαστικα». */
.parallagi{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.04em;
  padding:3px 9px; border-radius:2px; white-space:nowrap;
  color:var(--brand); background:var(--brand-wash); border:1px solid var(--brand);
}

/* Η ανανεωμένη έκδοση του πατρόν — «NEW». Ξεχωρίζει από την παραλλαγή
   γιακά/κουκούλας, γιατί είναι άλλου είδους πληροφορία: ποια ΕΚΔΟΣΗ του
   σχεδίου, όχι ποια παραλλαγή του. */
.parallagi.ekdosi{
  color:var(--warn); background:var(--warn-wash); border-color:var(--warn-line);
}

/* ──────────────────────────────────────────────────────────────────────────
   Ο ΠΙΝΑΚΑΣ (dashboard) — «the most important things that I work most».

   Καμία απόχρωση εδώ δεν γράφεται ωμή: όλα από τα tokens, και το test
   `PaletaTest` αποτυγχάνει αν κάποιος ξεχάσει (R139).
   ────────────────────────────────────────────────────────────────────────── */
.synola{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:12px; margin:0 0 20px;
}
.synolo{
  background:var(--card); border:1px solid var(--line); border-left:5px solid var(--line);
  border-radius:12px; padding:14px 16px;
}
/* Η ρίγα γίνεται πορτοκαλί μόνο όταν υπάρχει όντως κάτι — όχι διακοσμητικά. */
.synolo.prosochi{border-left-color:var(--warn)}
.synolo .k{
  display:block; font-size:var(--fs-lbl); letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); font-weight:600; margin:0 0 4px;
}
.synolo .n{
  display:block; font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:30px; font-weight:600; line-height:1.05; color:var(--ink);
}
.synolo .y{display:block; font-size:var(--fs-sm); color:var(--ink-3); margin:4px 0 0}

ul.ergasies{list-style:none; margin:0; padding:0}
ul.ergasies li{
  display:flex; align-items:flex-start; gap:14px;
  padding:14px 0; border-top:1px solid var(--line-soft);
}
ul.ergasies li:first-child{border-top:0; padding-top:4px}
ul.ergasies .sima{width:10px; height:10px; border-radius:50%; flex:none; margin-top:9px}
ul.ergasies li.alarm .sima{background:var(--alarm)}
ul.ergasies li.warn .sima{background:var(--warn)}
ul.ergasies .plithos{
  font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:24px; font-weight:600; min-width:68px; text-align:right; color:var(--ink);
}
ul.ergasies .keimeno{flex:1; min-width:0}
ul.ergasies .keimeno strong{display:inline; font-size:var(--fs-val); font-weight:600}
/* Χρώμα ΚΑΙ λέξη, πάντα μαζί: το gold και το terra απέχουν 11,8 μονάδες. */
ul.ergasies .lexi{
  display:inline-block; margin-left:9px; padding:2px 10px; border-radius:999px;
  font-size:var(--fs-lbl); font-weight:600; vertical-align:2px;
}
ul.ergasies li.alarm .lexi{background:var(--alarm-wash); color:var(--alarm-deep)}
ul.ergasies li.warn .lexi{background:var(--warn-wash); color:var(--warn-deep)}
ul.ergasies .giati{display:block; font-size:var(--fs-sm); color:var(--ink-3); margin:4px 0 0}

@media (max-width:560px){
  ul.ergasies li{gap:10px}
  ul.ergasies .plithos{font-size:20px; min-width:54px}
}

/* ──────────────────────────────────────────────────────────────────────────
   ΤΟ ΑΠΟΘΕΜΑ — «when i have many data i want to see them in rows».
   ────────────────────────────────────────────────────────────────────────── */
.filtra{display:flex; flex-wrap:wrap; gap:7px; margin:14px 0 0}
.filtro{
  display:inline-flex; align-items:center; gap:7px; text-decoration:none;
  font-size:var(--fs-sm); font-weight:500; padding:7px 13px; border-radius:999px;
  border:1px solid var(--line); background:var(--ground); color:var(--ink-2);
}
.filtro:hover{border-color:var(--per, var(--brand))}
/* Ενεργό = μπλε, γιατί πατιέται. Τίποτα άλλο δεν είναι μπλε (R139). */
.filtro.energo{background:var(--per-wash, var(--brand-wash)); border-color:var(--per, var(--brand));
  color:var(--per, var(--brand)); font-weight:600}
.filtro .b{font-family:var(--mono); font-variant-numeric:tabular-nums; opacity:.72}

table.apothema tbody tr:nth-child(even) td{background:var(--ground)}
table.apothema tbody tr:hover td{background:var(--brand-wash)}
/* Η επικεφαλίδα ομάδας μένει κολλημένη όταν κατεβαίνεις: χωρίς αυτήν, μετά
   από 30 γραμμές δεν ξέρεις σε ποιο στάδιο κοιτάς. */
table.apothema tr.omada td{
  position:sticky; top:0; z-index:2;
  background:var(--card-2); color:var(--ink); font-weight:600;
  border-bottom:1px solid var(--line); border-top:1px solid var(--line);
}
table.apothema tr.omada .plithos{
  font-family:var(--mono); font-variant-numeric:tabular-nums;
  color:var(--ink-3); font-weight:500; margin-left:10px; font-size:var(--fs-sm);
}
.katastasi{display:inline-flex; align-items:center; gap:7px; font-weight:500; white-space:nowrap}
.katastasi i{width:9px; height:9px; border-radius:50%; flex:none}
.katastasi.ok{color:var(--ok)} .katastasi.ok i{background:var(--ok)}
.katastasi.warn{color:var(--warn)} .katastasi.warn i{background:var(--warn)}
.katastasi.alarm{color:var(--alarm)} .katastasi.alarm i{background:var(--alarm)}

nav.selides{
  display:flex; align-items:center; gap:18px; flex-wrap:wrap;
  margin:16px 0 0; padding:13px 0 0; border-top:1px solid var(--line);
  font-size:var(--fs-sm); color:var(--ink-3);
}
nav.selides a{color:var(--per, var(--brand)); font-weight:600; text-decoration:none}
nav.selides a:hover{text-decoration:underline}
nav.selides strong{font-family:var(--mono); font-variant-numeric:tabular-nums; color:var(--ink)}

/* ──────────────────────────────────────────────────────────────────────────
   ΤΟ ΜΕΝΟΥ ΣΤΟ ΠΛΑΙ — απόφαση του Νικόλα, 29/10/2026.

   «ας βαλουμε το μενου στο dashboard στο πλαι και θα το διαμορφωσουμε σιγα
    σιγα να με βολευει»

   Σε στενή οθόνη (τάμπλετ στο εργοστάσιο, κινητό) γίνεται οριζόντια λωρίδα
   που κυλάει: η ράγα των 232px θα έτρωγε το μισό πλάτος.
   ────────────────────────────────────────────────────────────────────────── */
/* ⚠️ `minmax(0,1fr)` ΚΑΙ ΟΧΙ `1fr` — ΜΕΤΡΗΜΕΝΟ 2026-11-06.
   Το σκέτο `1fr` σημαίνει `minmax(auto,1fr)`: η στήλη **δεν συρρικνώνεται**
   κάτω από το πλάτος του περιεχομένου της. Αποτέλεσμα σε κινητό 390px:
   ο πίνακας φούσκωνε όλη τη σελίδα και το κινητό τη ζούμαρε έξω.
   Μετρημένο σε δέκα οθόνες πριν τη διόρθωση: 975–1.193px πλάτος σε
   οθόνη 390px — δηλαδή γράμματα στο ένα τρίτο. Ήταν η **δομική** αιτία
   του πιο συχνού παραπόνου του, «μικρά γράμματα», σε κινητό.
   Με το `minmax(0,…)` το `.scroll` κάνει επιτέλους τη δουλειά του:
   κυλάει ο πίνακας, όχι η σελίδα. */
.shell{display:grid; grid-template-columns:232px minmax(0,1fr); min-height:100vh}

aside.raga{
  display:flex; flex-direction:column;
  background:var(--card-2); border-right:1px solid var(--line);
}
/* ⚠️ ΤΟ ΛΟΓΟΤΥΠΟ, ΟΧΙ ΚΕΙΜΕΝΟ — 2026-11-01. Εδώ έγραφε «MANOLI Γουναρικά»
   σε γράμματα· ο Νικόλας το απέρριψε και έδωσε το δικό του σήμα. Από τις
   τέσσερις εκδοχές διάλεξε το **σκέτο σήμα**.

   Το ύψος είναι **60px**. Ξεκίνησε στα 34px και ο Νικόλας το απέρριψε
   αμέσως — *«Το θέλω πιο μεγάλο το λογότυπο»*. Το σήμα είναι τετράγωνο,
   άρα 60px ύψος = 60px πλάτος· το μενού δίνει 196px καθαρά (232 μείον
   δύο φορές 18 περιθώριο), οπότε υπάρχει περιθώριο να μεγαλώσει κι άλλο
   αν το ζητήσει. Οι λεπτές ρίγες του σήματος κερδίζουν από το μέγεθος.

   Το `width/height` στο ίδιο το `<img>` είναι οι **αληθινές** διαστάσεις
   του κομμένου αρχείου (367×362) — κρατούν τη θέση πριν φορτώσει η
   εικόνα, ώστε το μενού να μην αναπηδά. Το CSS από κάτω τις ξαναγράφει. */
aside.raga .brand{
  padding:16px 18px 14px; border-bottom:1px solid var(--line);
  display:flex; align-items:center; min-height:88px;
}
aside.raga .brand img{display:block; width:auto; height:60px}
aside.raga .brand:hover{text-decoration:none; opacity:.78}
aside.raga .brand span{
  display:block; font-family:var(--sans); font-size:var(--fs-lbl);
  font-weight:500; letter-spacing:.06em; color:var(--ink-3); margin-top:2px;
}
aside.raga nav{display:flex; flex-direction:column; padding:8px 8px;
  gap:1px; overflow-y:auto}
aside.raga nav .omada{
  font-size:var(--fs-lbl); letter-spacing:.08em; text-transform:uppercase;
  color:var(--ink-4); font-weight:600; padding:13px 12px 4px;
}
aside.raga nav .omada:first-child{padding-top:6px}
/* ⚠️ «the menu should not change color, only underlined» — δικά του λόγια
   στο CRM του. Στο πλάι η «γραμμή» γίνεται ΡΙΓΑ στα αριστερά: το ίδιο
   νόημα, στη διάταξη που ταιριάζει (R139). */
aside.raga nav a{
  display:flex; align-items:center; gap:10px;
  padding:8px 12px; border-radius:var(--r);
  color:var(--ink-2); font-size:var(--fs); font-weight:500;
  border-left:3px solid transparent; text-decoration:none;
}
aside.raga nav a:hover{background:var(--ground)}
/* ⚠️ ΤΟ ΕΝΕΡΓΟ ΔΕΝ ΕΧΕΙ ΔΙΚΗ ΤΟΥ ΡΙΓΑ (`R225`).

   Ο Νικόλας, 2026-11-02: *«μπροστά από τους προμηθευτές βλέπω στο
   ταμπελάκι **τρία-τέσσερα χρώματα μαζί**, κάτι δεν πάει καλά εκεί.»*

   Στοιβάζονταν **τρεις** ρίγες στο ίδιο σημείο:
     4px  η μπάρα της ομάδας  (`.omada-block`, καφέ)
     3px  η παλιά ρίγα του ενεργού (`--brand`, **μπλε**)
     3px  η νέα ρίγα του ενεργού (`--per`, καφέ)

   Δέκα pixel σε δύο χρώματα. Η μπάρα της ομάδας αρκεί — το ενεργό
   ξεχωρίζει με το **λευκό πλακίδιο** και το βάρος, που είναι και ο
   κανόνας του `R139`: *«the menu should not change color»*. */
aside.raga nav a[aria-current]{
  background:var(--card); border-left-color:transparent;
  color:var(--ink); font-weight:600;
}
/* ── ΟΙ ΣΥΝΔΕΣΜΟΙ ΠΟΥ ΔΕΝ ΧΤΙΣΤΗΚΑΝ ΑΚΟΜΗ ────────────────────────────────
   Απόφαση του Νικόλα, 2026-11-01: *«Να φαίνονται σβηστοί»*. Το μενού έχει
   **23 σημεία** και δουλεύουν **3** — βλέπει όλο το σχέδιο από την πρώτη
   μέρα και ξέρει τι έρχεται.

   Είναι `<span>`, **όχι** `<a>`: δεν πατιέται, δεν έχει focus, δεν βγάζει
   σελίδα σφάλματος. Η εναλλακτική — άδεια σελίδα «αυτό χτίζεται» — θα
   απαιτούσε 20 διαδρομές που δεν κάνουν τίποτα.

   Πυκνότερα από τα ενεργά **επίτηδες**: δεν τα πατάς, άρα δεν χρειάζονται
   χώρο για δάκτυλο. Έτσι χωρούν και τα 23 χωρίς να κυλάει το μενού σε
   φορητό. Το μέγεθος μένει στο `--fs-lbl` (13px) — ο κανόνας των 13 δεν
   σπάει ούτε για σβηστό κείμενο. */
aside.raga nav .erxetai{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:5px 12px 5px 15px; font-size:var(--fs-lbl); color:var(--ink-4);
  border-left:3px solid transparent; cursor:default;
}
aside.raga nav .erxetai::after{
  content:'σύντομα'; font-size:var(--fs-lbl); color:var(--ink-4);
  opacity:.65; letter-spacing:.02em;
}

aside.raga .katw{
  margin-top:auto; padding:13px 20px;
  font-size:var(--fs-sm); color:var(--ink-3); border-top:1px solid var(--line);
}

@media (max-width:760px){
  .shell{grid-template-columns:minmax(0,1fr)}
  aside.raga{
    flex-direction:row; align-items:center; overflow-x:auto;
    border-right:0; border-bottom:1px solid var(--line); padding:0 8px;
  }
  aside.raga .brand,
  aside.raga .katw,
  aside.raga nav .omada,
  aside.raga nav .erxetai{display:none}
  aside.raga nav{flex-direction:row; padding:6px 0}
  aside.raga nav a{border-left:0; border-bottom:3px solid transparent; white-space:nowrap}
  aside.raga nav a[aria-current]{border-left:0; border-bottom-color:var(--brand)}

  /* ⚠️ Η ΕΞΟΔΟΣ ΔΕΝ ΚΡΥΒΕΤΑΙ ΣΤΟ ΤΑΜΠΛΕΤ (`R269`). Το `.katw` έκρυβε
     το όνομα στα στενά — σωστό όσο ήταν διακοσμητικό. Τώρα κρατά το
     **κουμπί εξόδου**: κρυμμένο, κανείς δεν βγαίνει από το τάμπλετ της
     παραγωγής. Μπαίνει στη σειρά του μενού, στο τέλος, συμπαγές. */
  aside.raga .katw.me-exodo{
    display:flex; margin:0 0 0 auto; padding:6px 4px 6px 12px;
    border-top:0; gap:8px; flex:0 0 auto;
  }
  aside.raga .katw.me-exodo strong{white-space:nowrap}
}

/* ── Η ΑΛΥΣΙΔΑ ΣΤΑΔΙΩΝ ΣΤΗΝ ΚΑΡΤΕΛΑ ────────────────────────────────────
   Προστέθηκε 2026-11-01. Ο Νικόλας, κοιτάζοντας καρτέλες: *«control που
   βλέπω δύο φορές πρέπει να δεις»* και *«τα στάδια δεν είναι με τη σειρά»*.

   Το βέλος δείχνει **τι τελείωσε και πού πήγε**: «ΚΟΨΙΜΟ → ΡΑΨΙΜΟ»
   διαβάζεται «ο τεχνίτης ολοκλήρωσε το ΚΟΨΙΜΟ και το έστειλε ΡΑΨΙΜΟ»
   (`R157`). Χωρίς αυτό, το όνομα καθόταν δίπλα στο στάδιο που *αρχίζει*
   και έμοιαζε λάθος, ενώ τα δεδομένα ήταν σωστά.

   Τα δύο σημάδια λύνουν το «CONTROL δύο φορές»: η μία γραμμή είναι «μπήκε»
   και η άλλη «ολοκληρώθηκε» — δεν είναι διπλοεγγραφή, είναι το σκανάρισμα
   που βγάζει τη γούνα από την παραγωγή (`R155`). */
.alysida{white-space:nowrap}
.alysida .velos{color:var(--ink-4); margin:0 5px}
.simadi{
  display:inline-block; margin-left:8px; padding:1px 9px; border-radius:999px;
  font-size:var(--fs-lbl); font-weight:600; vertical-align:1px;
}
.simadi.mpike{background:var(--brand-wash); color:var(--brand)}
.simadi.teleiose{background:var(--ok-wash); color:var(--ok-deep)}

/* ── ΤΟ ΚΟΥΤΙ ΤΗΣ ΤΙΜΗΣ ─────────────────────────────────────────────────
   Προστέθηκε 2026-11-01. Ο Νικόλας: *«όπως και την τιμή που δεν βλέπω»*.
   Ήταν μία γραμμή μέσα στα χαρακτηριστικά και κρυβόταν ανάμεσα σε μάκρος
   και μανίκι. Η τελευταία τιμή είναι το νούμερο που κοιτάει· οι
   προηγούμενες υπάρχουν γιατί 979 γούνες έχουν πάνω από μία (`R146`). */
.timi-tora{display:flex; align-items:baseline; gap:12px; margin:0 0 14px; flex-wrap:wrap}
.timi-tora .poso{
  font-size:clamp(26px,3.2vw,32px); font-weight:600; letter-spacing:-.01em;
  color:var(--ink); font-variant-numeric:tabular-nums;
}
.timi-tora .pote{font-size:var(--fs-sm); color:var(--ink-3)}
.istoriko{display:flex; flex-direction:column}
.istoriko .gr{
  display:flex; gap:12px; align-items:baseline; padding:8px 0;
  border-top:1px solid var(--line-soft); font-size:15px;
  font-variant-numeric:tabular-nums;
}
.istoriko .gr .d{color:var(--ink-3); flex:0 0 88px; font-size:var(--fs-sm)}
.istoriko .gr .t{font-weight:600; flex:0 0 100px; text-align:right}
.istoriko .gr .pou{color:var(--ink-3); font-size:var(--fs-sm); min-width:0}
/* Η ισχύουσα ξεχωρίζει — είναι αυτή που μετράει σε κάθε νέα κίνηση. */
.istoriko .gr.now .t{color:var(--brand)}

/* Ελεύθερο κείμενο που δεν χωράει σε στήλη — τυλίγεται και πιάνει πλάτος.
   Οι «ειδικές οδηγίες» φτάνουν τους 100 χαρακτήρες με μέτρα και οδηγίες
   κοπτικής· σε στενό `dd` γίνονταν τέσσερις γραμμές ανάγνωσης. */
dl.pairs > div.plati{flex-direction:column; gap:3px; align-items:stretch}
dl.pairs > div.plati dd{white-space:normal; line-height:1.5}

/* Στήλη που στοιβάζει κάρτες — η δεξιά πλευρά της καρτέλας κρατά την τιμή
   και τα δέρματα τη μία κάτω από την άλλη, αντί να αφήνει κενό. */
.grid.two > .stili{display:flex; flex-direction:column; gap:18px; min-width:0}

/* ── ΟΠΤΙΚΕΣ ΑΓΚΥΡΕΣ ΣΤΗΝ ΚΑΡΤΕΛΑ — ζητήθηκαν 2026-11-01 ───────────────

   1 · ΤΟ ΠΡΩΤΟ ΣΤΑΔΙΟ ΕΝΤΟΝΟ. Ο Νικόλας: *«εκεί που φαίνονται οι κινήσεις
   της παραγωγής το πρώτο στάδιο να το κάνεις με πιο έντονα γράμματα, για να
   ξέρω και τον τεχνίτη. Δηλαδή όταν πάει από μοντάρισμα σε φοδράρισμα, το
   μοντάρισμα να είναι έντονο για να ξέρω ότι δίπλα ο τεχνίτης ήταν αυτός που
   το μοντάρισε. Με βοηθάει οπτικά αυτό.»*

   Είναι ακριβώς ο `R157` γινωμένος ορατός: ο τεχνίτης ανήκει στο στάδιο που
   **ολοκληρώθηκε** — το αριστερό. Το βάρος δένει τα δύο κελιά μεταξύ τους
   χωρίς λεζάντα.

   2 · Ο ΠΕΛΑΤΗΣ ΞΕΧΩΡΙΖΕΙ. *«θα ήθελα το όνομα του πελάτη πιο έντονο»* —
   και πάνω δεξιά *«ίσως με κάποιο background από πίσω, διάλεξε ένα από τα
   χρώματα που έχουμε»*.

   Διαλέχτηκε το **μωβ** (`--accent-wash` / `--accent-2`): είναι το δεύτερο
   χρώμα της παλέτας του, κρατημένο ακριβώς για τέτοιες στιγμές — *«I think
   the Viber color is too much. We're gonna use it, but maybe less»*. Το μπλε
   είναι ήδη το χρώμα των ενεργειών και θα μπερδευόταν· το πράσινο σημαίνει
   «εντάξει». Ο πελάτης δεν είναι ούτε ενέργεια ούτε κατάσταση — είναι
   **ταυτότητα**. Αντίθεση κειμένου σε φόντο: 7,63:1. */
.alysida strong{font-weight:600; color:var(--ink)}
.pelatis{font-weight:600; color:var(--ink)}
.badge.pelatis{
  background:var(--accent-wash); color:var(--accent-2);
  border-color:transparent; font-weight:600;
}

/* Σύνδεσμος ταυτότητας (`R168`): δείχνει πατήσιμος **χωρίς** να φωνάζει.
   Υπογράμμιση μόνο στο πέρασμα — σε μια καρτέλα γεμάτη ονόματα, μόνιμες
   μπλε υπογραμμίσεις παντού θα έκαναν τη σελίδα θορυβώδη. */
/* ⚠️ Ο ΣΥΝΔΕΣΜΟΣ ΔΕΝ ΚΛΕΒΕΙ ΤΟ ΧΡΩΜΑ — διορθώθηκε 2026-11-01.
   Το πρώτο `a.montelo-v{color:inherit}` έσβησε το μπλε που είχαν ήδη το
   μοντέλο και το χρώμα. Ο Νικόλας: *«θα ήθελα τα γράμματα να παραμείνουν
   χρωματιστά, του μοντέλου και του χρώματος, όπως τα είχες πριν»*.
   Ήταν σωστός: εκεί το χρώμα **σημαίνει** κάτι — είναι η ταυτότητα της
   γούνας, όχι απλό κείμενο. Το `inherit` είναι σωστό μέσα σε πίνακα, όχι
   σε κεφαλίδα. */
a.montelo-v{text-decoration:none; border-bottom:1px dashed var(--line)}
a.montelo-v:hover{border-bottom-color:currentColor; filter:brightness(.85)}

/* ⚠️ ΤΟ ΕΝΤΟΝΟ ΕΧΑΝΕ ΜΕΣΑ ΣΕ ΜΙΚΡΟ ΓΚΡΙ ΚΕΛΙ — διορθώθηκε 2026-11-01.

   Μπήκε το `<strong>` στο στάδιο και ο `.pelatis` στον πελάτη, αλλά το κελί
   είναι `td.sub{color:var(--ink-3); font-size:var(--fs-sm)}` — **μικρό και
   γκρι**. Το βάρος εφαρμοζόταν· απλώς δεν φαινόταν.

   Ο Νικόλας το ζήτησε για συγκεκριμένο λόγο: *«για να ξέρω ότι δίπλα ο
   τεχνίτης ήταν αυτός που το μοντάρισε. Με βοηθάει οπτικά αυτό»*. Αν δεν
   ξεχωρίζει, δεν κάνει τη δουλειά του.

   Τρία μαζί, ώστε το μάτι να δένει τα δύο κελιά:
   · το στάδιο που ολοκληρώθηκε παίρνει κανονικό μέγεθος και πλήρες μελάνι
   · ο τεχνίτης δίπλα παύει να είναι «δευτερεύων»
   · ο πελάτης το ίδιο, όπου κι αν εμφανίζεται */
td.alysida strong{font-size:var(--fs-val); font-weight:600; color:var(--ink)}
td.texnitis{color:var(--ink); font-weight:500}
td .pelatis, td.sub .pelatis{font-size:var(--fs-val); font-weight:600; color:var(--ink)}

/* Σύνδεσμοι ταυτότητας μέσα σε πίνακα (`R168`): παίρνουν το χρώμα του κελιού
   και υπογραμμίζονται μόνο στο πέρασμα. Μια καρτέλα με έξι μπλε υπογραμμίσεις
   ανά γραμμή είναι αχρείαστα θορυβώδης — το ζητούμενο είναι να **πατιούνται**,
   όχι να διαφημίζονται. */
tbody td a{color:inherit; text-decoration:none}
/* ⚠️ Ο ΣΥΝΔΕΣΜΟΣ ΠΑΙΡΝΕΙ ΤΟ ΧΡΩΜΑ ΤΟΥ ΠΡΑΓΜΑΤΟΣ ΠΟΥ ΑΝΟΙΓΕΙ (`R230`).
   Προεπιλογή: το χρώμα της οθόνης — μέσα σε λίστα τεμαχίων οι
   σειριακοί είναι πετρόλ χωρίς να το πει κανείς. Όταν ο σύνδεσμος
   **φεύγει σε άλλο πράγμα** (ο πελάτης μέσα σε λίστα χαρτιών),
   δηλώνει `data-per` και παίρνει το δικό του. */
tbody td a:hover{color:var(--per, var(--brand)); text-decoration:underline}
tbody td a[data-per]{color:var(--per)}
tbody td a[data-per]:hover{text-decoration:underline}
a.badge{text-decoration:none}
a.badge:hover{border-color:var(--per, var(--brand)); color:var(--per, var(--brand))}

/* ⚠️ Η ΚΑΡΤΑ ΤΑΥΤΟΤΗΤΑΣ ΜΙΚΡΑΙΝΕΙ — *«μπορεί να μικρύνει και λίγο η κάρτα»*.
   Έχασε την επικεφαλίδα της και δύο γραμμές διπλής πληροφορίας, άρα δεν
   χρειάζεται το ίδιο πλάτος. Το 1,05fr/0,95fr δίνει στη δεξιά στήλη — τιμή
   και δέρματα — τον χώρο που ελευθερώθηκε. */
@media (min-width:880px){
  .grid.two{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)}
}
/* Σύνδεσμος ταυτότητας μέσα στη λίστα πεδίων: κρατά το βάρος της τιμής και
   δείχνει πατήσιμος μόνο στο πέρασμα (`R168`). */
dl.pairs dd a{color:var(--per, var(--brand)); text-decoration:none; border-bottom:1px dashed var(--line)}
dl.pairs dd a:hover{border-bottom-color:currentColor}

/* ── Η ΦΟΡΜΑ ΑΝΑΛΩΣΗΣ, ΜΕΣΑ ΣΤΗΝ ΚΑΡΤΑ ΤΩΝ ΔΕΡΜΑΤΩΝ ───────────────────
   Δική του απόφαση (`D-136`): η ανάλωση γράφεται εκεί που διαβάζεται, για
   να μην αλλάζει οθόνες. Δύο πεδία και ένα κουμπί σε **μία γραμμή** —
   είναι δουλειά 2,6 φορές τη μέρα, δεν χρειάζεται φόρμα σελίδας.

   Το πεδίο της παρτίδας είναι το φαρδύ γιατί εκεί **σκανάρει**· η ποσότητα
   είναι δύο-τρία ψηφία. */
.analosi-nea{
  display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap;
  margin:0 0 16px; padding:14px; border-radius:var(--r);
  background:var(--ground); border:1px solid var(--line);
}
/* ⚠️ `margin:0` ΚΑΙ ΔΕΝ ΕΙΝΑΙ ΠΕΡΙΤΤΟ — ΗΤΑΝ Η «ΣΤΡΑΒΗ ΓΡΑΜΜΗ» (`R309`).

   Ο Νικόλας, με φωτογραφία: *«το κουμπί που έχει πάνω που λέγεται
   καταχώρηση, είναι σε στραβή γραμμή»*. Είχε δίκιο, και ήταν μετρήσιμο:
   το κουμπί κάθεται **16 px χαμηλότερα** από τα πεδία.

   Η αιτία: ο γενικός κανόνας `form .pedio{margin-bottom:16px}` (0,1,1)
   δίνει περιθώριο που ο ειδικός `.analosi-nea .pedio` (0,2,0) δεν
   ακύρωνε — δεν όριζε καθόλου `margin`. Και με `align-items:flex-end`
   ευθυγραμμίζονται τα **περιθωριακά** κουτιά, όχι τα ορατά: το πεδίο
   τελείωνε 16 px πιο ψηλά από το κουμπί. */
.analosi-nea .pedio{display:flex; flex-direction:column; gap:4px; flex:1 1 180px; min-width:0; margin:0}
/* ⚠️ 128px, ΟΧΙ 110 (`R304`). Στα 110 το πεδίο χωρούσε τρία ψηφία και
   τα βελάκια του Safari — μετά την αφαίρεσή τους, τα 128 δίνουν άνεση
   για «33,5» χωρίς να φαρδαίνει η φόρμα. */
.analosi-nea .pedio.steno{flex:0 0 128px}
.analosi-nea label{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-4);
}
.analosi-nea input{
  font:inherit; font-size:var(--fs-val); padding:9px 11px;
  border:1px solid var(--line); border-radius:var(--r);
  background:var(--card); color:var(--ink); min-width:0;
  font-variant-numeric:tabular-nums;
}
.analosi-nea input:focus{outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand))}
.analosi-nea .btn{flex:0 0 auto}

/* Κουμπί σβησίματος γραμμής (`R172`). Διακριτικό: είναι μη αναστρέψιμη
   ενέργεια, αλλά όχι η κύρια δουλειά της οθόνης — κοκκινίζει μόνο στο
   πέρασμα, ώστε να μην τραβά το μάτι σε κάθε γραμμή. */
/* ⭐ ΤΟ ΙΔΙΟ «✕» ΜΕ ΤΟ ΣΥΡΤΑΡΙ (`R309`). Δική του εντολή: *«στα
   δέρματα να μην λέει τη λέξη σβήσιμο, αλλά να έχει το χ, όπως έχει
   και το συρτάρι»*. Ίδιο μέγεθος, ίδιο πλαίσιο, ίδιο κοκκίνισμα με
   το `.svise-grammi` — μία εμφάνιση για μία ενέργεια. */
.svisimo{display:inline-flex}
.btn-svisimo{
  display:inline-grid; place-items:center; cursor:pointer;
  font:inherit; font-size:13px; line-height:1;
  width:26px; height:26px; border-radius:6px;
  border:1px solid var(--line); background:var(--card); color:var(--ink-4);
}
.btn-svisimo:hover{border-color:var(--warn); color:var(--warn-deep)}

/* «για <πελάτη>» σε παραγγελία ή προσφορά: ο πελάτης υπάρχει, αλλά η γούνα
   ΔΕΝ πήγε εκεί. Η λεξούλα «για» κάνει τη διαφορά ορατή χωρίς λεζάντα. */
.gia{color:var(--ink-4); font-size:var(--fs-sm)}

/* ── Η ΠΑΡΑΓΓΕΛΙΑ ΔΕΝ ΕΙΝΑΙ ΚΙΝΗΣΗ (`R175`, `D-139`) ──────────────────────
   Ο Νικόλας είδε μια παραγγελία στην καρτέλα της 34158 και τη διάβασε σαν
   αποστολή: *«βλέπω μια κίνηση στο τέλος που δεν υπήρχε πριν, από μια
   πελάτισσα»*. Μετά την εξήγηση: *«δείξε με έναν διαφορετικό τρόπο ότι ήταν
   παραγγελία για την τάδε πελάτισσα αλλά τελικά δεν την πήρε»*.

   Διάλεξε την επιλογή Β από τρεις: άμμο φόντο, χρωματιστή ραβδούλα, ετικέτα.
   Το φόντο το κάνει να ξεχωρίζει από τις αληθινές κινήσεις· η ραβδούλα λέει
   την κατάσταση από μακριά· η ετικέτα τη λέει με λέξεις. */
tr.paraggelia > td{background:var(--card-2)}
tr.paraggelia > td:first-child{box-shadow:inset 3px 0 0 var(--ink-4)}
tr.paraggelia.nai > td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
tr.paraggelia.oxi > td:first-child{box-shadow:inset 3px 0 0 var(--alarm)}
tr.paraggelia.kratimeni > td:first-child{box-shadow:inset 3px 0 0 var(--warn)}

.etiketa{display:inline-block; font-size:var(--fs-lbl); font-weight:600;
         padding:1px 7px; border-radius:2px; white-space:nowrap; margin-left:6px}
.etiketa.nai{background:var(--ok-wash); color:var(--ok-deep); border:1px solid var(--ok-line)}
.etiketa.oxi{background:var(--alarm-wash); color:var(--alarm-deep); border:1px solid var(--alarm-line)}
.etiketa.kratimeni{background:var(--warn-wash); color:var(--warn-deep); border:1px solid var(--warn-line)}

/* ── ΤΟ ΟΝΟΜΑ ΑΝΘΡΩΠΟΥ ΜΕΣΑ ΣΕ ΚΙΝΗΣΗ (`R176`, `D-140`) ──────────────────
   Ξεχωρίζει από τον τόπο με το μωβ του — *«I think the Viber color is too
   much. We're gonna use it, but maybe less.»* Εδώ είναι ακριβώς το «λίγο»:
   μόνο ονόματα προσώπων, ώστε να διακρίνονται από αποθήκες με μια ματιά. */
a.prosopo{color:var(--accent-2); font-weight:600; text-decoration:none;
          border-bottom:1px solid currentColor}
a.prosopo:hover{color:var(--accent)}

/* Η τιμή κάτω από την ποσότητα (`R179`). Μικρή και ήρεμη: η ποσότητα
   παραμένει το κύριο νούμερο, το χρήμα είναι η δεύτερη ανάγνωση.
   13px — το κατώτατο που δέχεται ο Νικόλας σε οθόνη. */
.poso-grammis{display:block; font-size:var(--fs-lbl); color:var(--ink-3);
              font-weight:400; white-space:nowrap}

/* ── Ο ΕΝΙΑΙΟΣ ΠΙΝΑΚΑΣ ΤΗΣ ΠΑΡΤΙΔΑΣ (`R188`) ────────────────────────────
   Η γραμμή που υπάρχει μόνο στη γραμμένη κάρτα της γούνας ξεχωρίζει με
   άμμο φόντο: δεν είναι κίνηση αποθήκης, δεν μετράει στο υπόλοιπο. */
/* ⚠️ ΤΟ ΧΡΩΜΑ ΕΦΥΓΕ — ΔΙΚΗ ΤΟΥ ΑΠΟΦΑΣΗ (`R197`).

   *«Έχει χρώμα σε κάποιες γραμμές που είναι στην ίδια ημερομηνία.
   Προτιμώ να γράφω την ίδια ημερομηνία ξανά και ξανά, όπως γράφει στις
   γούνες, παρά να αλλάζει χρώμα το background.»*

   Το χρώμα δεν σήμαινε «ίδια ημερομηνία» — σήμαινε «από την κάρτα».
   Αλλά επειδή εκείνες οι γραμμές είχαν **κενό** κελί ημερομηνίας, το
   χρώμα φαινόταν να τις ομαδοποιεί. Τώρα η ημερομηνία γεμίζει από το
   δελτίο παραγωγής, και η ετικέτα «από την κάρτα» αρκεί μόνη της. */
a.goyna-syndesmos{color:var(--per, var(--brand)); font-weight:600; text-decoration:none;
                  border-bottom:1px solid currentColor}
.ti{display:block; font-size:var(--fs-lbl); color:var(--ink-3); font-weight:400}

/* ── «ΔΕΣ ΚΑΙ ΤΙΣ ΑΛΛΕΣ Ν ΚΙΝΗΣΕΙΣ» (`R211`) ───────────────────────────
   Ο Νικόλας, για την καρτέλα προμηθευτή: *«συνεχίζει το κατεβατό με τα
   παραστατικά. Που είναι πολύ μεγάλο όλο αυτό.»*

   Οι πέντε τελευταίες κινήσεις απαντούν «πού είμαστε»· οι υπόλοιπες
   είναι ιστορικό. Ο μεγαλύτερος προμηθευτής έχει 102 — δέκα οθόνες.

   `<details>` και όχι JavaScript: δουλεύει παντού, τυπώνεται ανοιχτό,
   και δεν χρειάζεται τίποτα να φορτώσει. */
details{margin-top:14px; border-top:1px solid var(--line-soft); padding-top:4px}
details > summary{
  cursor:pointer; list-style:none; padding:9px 2px;
  font-size:var(--fs-sm); font-weight:600; color:var(--brand);
}
details > summary::-webkit-details-marker{display:none}
/* Το βελάκι γυρίζει όταν ανοίγει — η μόνη ένδειξη ότι υπάρχει κι άλλο. */
details > summary::before{content:'▸ '; color:var(--ink-4); font-weight:400}
details[open] > summary::before{content:'▾ '}
details > summary:hover{color:var(--brand-2)}
details > summary:focus-visible{outline:2px solid var(--brand); outline-offset:2px; border-radius:3px}
/* Ο δεύτερος πίνακας δεν έχει κεφαλίδα — οι στήλες είναι οι ίδιες και
   φαίνονται από πάνω. Μικρό περιθώριο για να μη «κολλά». */
details .scroll{margin-top:4px}

/* ══════════════════════════════════════════════════════════════════════
   ΤΟ ΣΥΡΤΑΡΙ, Η ΑΝΑΖΗΤΗΣΗ, ΚΑΙ ΤΟ BARCODE (`R213`)

   Δική του εντολή, 2026-11-02: *«να μπορεί να ανοίξει συρταρωτά στο
   πλάι … να μπορώ να κάνω κλικ εκτός του συρταριού και να κλείνει, για
   να μπορώ έτσι να βλέπω πολλά παραστατικά πατώντας τα»*.
   ══════════════════════════════════════════════════════════════════════ */

.fodra{
  position:fixed; inset:0; background:rgba(28,25,22,.38);
  opacity:0; pointer-events:none; transition:opacity .22s ease; z-index:40;
}
.fodra.anoichto{opacity:1; pointer-events:auto}

.syrtari{
  /* ⚠️ ΦΑΡΔΥΤΕΡΟ — ΗΤΑΝ 560px ΚΑΙ ΣΤΕΝΕΥΕ (`R227`).
     Ο Νικόλας, σε συρτάρι πώλησης με 13 τεμάχια: *«το συρτάρι που ανοίγει
     στις πωλήσεις παραμένει μικρό … παραμένει πάρα πολύ **πιεσμένη** η
     πληροφορία. Και **δεν θέλω να πηγαίνει δεξιά-αριστερά** η πληροφορία.»*
     Οι περιγραφές γουνών είναι μακριές («Mink Male Beige Cross Jacket with
     Collar 1841/C» = 44 χαρακτήρες) και δίπλα τους χρειάζεται κωδικός και
     τιμή. Στα 560px δεν χωρούσαν. */
  position:fixed; top:0; right:0; bottom:0; width:min(780px, 96vw);
  background:var(--card); border-left:1px solid var(--line); box-shadow:var(--shadow);
  transform:translateX(100%); transition:transform .26s cubic-bezier(.22,.61,.36,1);
  z-index:41; display:flex; flex-direction:column; overflow:hidden;
}
.syrtari.anoichto{transform:translateX(0)}

/* ⚠️ ΟΣΟ ΤΟ ΣΥΡΤΑΡΙ ΕΙΝΑΙ ΑΝΟΙΧΤΟ, Η ΣΕΛΙΔΑ ΑΠΟ ΠΙΣΩ ΔΕΝ ΚΥΛΑ.
   Η κλάση `me-syrtari` έμπαινε από το JavaScript αλλά δεν την
   χρησιμοποιούσε κανένας κανόνας — η ρόδα του ποντικιού κυλούσε τη
   λίστα από κάτω αντί για το περιεχόμενο του συρταριού. */
body.me-syrtari{overflow:hidden}

/* Ο Νικόλας δουλεύει με το πληκτρολόγιο όσο και με το ποντίκι. */
@media (prefers-reduced-motion: reduce){
  .fodra, .syrtari{transition:none}
}

.syrtari-fortosi{padding:24px 18px; color:var(--ink-3); font-size:var(--fs-sm)}

.syrtari > header{
  padding:15px 18px; border-bottom:1px solid var(--line); background:var(--card-2);
  display:flex; align-items:flex-start; gap:12px;
}
.syrtari > header .poios{flex:1; min-width:0}

/* ⭐ Ο ΑΡΙΘΜΟΣ ΕΙΝΑΙ Ο ΣΥΝΔΕΣΜΟΣ (`R213`).

   *«να ανοίγει το μεγάλο παραστατικό όχι από το link που έχεις βάλει
   κάτω, αλλά όταν πατάω πάνω στον αριθμό του.»*

   Έχει δίκιο και είναι η συνέπεια του `R168` — «κάθε κωδικός είναι
   σύνδεσμος». Ο κωδικός στην κορυφή ήταν το μόνο σημείο όπου δεν ήταν. */
.syrtari > header .kod{
  font-size:21px; font-weight:600; letter-spacing:-.01em; line-height:1.25;
}
.syrtari > header .kod a{
  color:var(--ink); text-decoration:none; border-bottom:2px solid var(--line);
}
.syrtari > header .kod a:hover{color:var(--brand); border-bottom-color:currentColor}
.syrtari > header .kod a:focus-visible{outline:2px solid var(--brand); outline-offset:3px}
.syrtari > header .ti{font-size:var(--fs-sm); color:var(--ink-3); margin-top:3px}

.syrtari button[data-kleise]{
  font:inherit; background:none; border:1px solid var(--line); border-radius:4px;
  width:32px; height:32px; cursor:pointer; color:var(--ink-3);
  font-size:18px; line-height:1; flex:none;
}
.syrtari button[data-kleise]:hover{background:var(--ground); color:var(--ink)}
.syrtari button[data-kleise]:focus-visible{outline:2px solid var(--brand); outline-offset:2px}

.syrtari .soma{padding:16px 18px; overflow-y:auto; flex:1}
.syrtari .soma > h3{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); margin:18px 0 8px; padding-bottom:6px; border-bottom:1px solid var(--line);
}
.syrtari .soma > h3:first-child{margin-top:0}
.syrtari table{width:100%; border-collapse:collapse; font-size:var(--fs-sm)}
.syrtari table th{
  text-align:left; font-weight:600; font-size:var(--fs-lbl); text-transform:uppercase;
  letter-spacing:.04em; color:var(--ink-3); padding:0 10px 6px 0;
  border-bottom:1px solid var(--line); white-space:nowrap;
}
.syrtari table th.num, .syrtari table td.num{text-align:right}
/* ⚠️ ΚΑΜΙΑ ΟΡΙΖΟΝΤΙΑ ΚΥΛΙΣΗ ΜΕΣΑ ΣΤΟ ΣΥΡΤΑΡΙ (`R227`).
   *«Δεν θέλω να πηγαίνει δεξιά-αριστερά η πληροφορία.»* Ο γενικός κανόνας
   `tbody td{white-space:nowrap}` κρατά ίσο ύψος γραμμής στις μεγάλες
   λίστες — εκεί είναι σωστός. Στο συρτάρι όμως σπρώχνει τη μακριά
   περιγραφή έξω από την οθόνη, και μαζί της τον **κωδικό**.
   Εδώ τυλίγεται η περιγραφή· ο κωδικός και τα ποσά μένουν σε μία γραμμή,
   γιατί εκεί η αλλαγή γραμμής κάνει τον αριθμό δυσανάγνωστο. */
.syrtari table{table-layout:auto; width:100%}
/* ⚠️ `break-word`, ΟΧΙ `anywhere` (`R231`).
   Ο Νικόλας: *«το “πού” … δεν είναι καλά γραμμένο»*. Το
   `overflow-wrap:anywhere` έκοβε τις λέξεις **στη μέση** όταν η
   στήλη στένευε — «ΚΕΝΤΡΙΚΑ ΕΔΡΑΣ» γινόταν KENT/ΡΙΚΑ/ΕΔΡΑ/Σ.
   Το `break-word` σπάει **μόνο** όταν μια λέξη δεν χωράει μόνη της,
   και προτιμά πάντα το κενό ανάμεσα στις λέξεις. */
.syrtari table td{padding:7px 10px 7px 0; border-bottom:1px solid var(--line-soft);
  white-space:normal; overflow-wrap:break-word}
.syrtari table td.m, .syrtari table td.num,
.syrtari table th.m, .syrtari table th.num{white-space:nowrap}
.syrtari table th{white-space:normal}
/* Η περιγραφή παίρνει ό,τι μείνει· οι άλλες στήλες όσο χρειάζονται.

   ⚠️⚠️ ΜΕ ΚΛΑΣΗ, ΟΧΙ ΜΕ ΘΕΣΗ — ΚΑΙ ΚΟΣΤΙΣΕ (`R281`). Εδώ έγραφε
   `td:nth-child(2)`, γραμμένο όταν δεύτερη στήλη ΗΤΑΝ η περιγραφή.
   Μόλις μπήκε η στήλη της αρίθμησης (`R278`), δεύτερος έγινε ο
   **κωδικός** και πήρε εκείνος το 100%: μετρημένο στο συρτάρι,
   ο κωδικός **567px** και η περιγραφή **90px**, σπασμένη σε πέντε
   γραμμές. Ο Νικόλας: *«στο συρτάρι έχεις χαλάσει όλη την περιγραφή,
   χειρότερα το έκανες»*.

   Είναι η ίδια οικογένεια με τα γραμμένα `colspan` (`R263`): επιλογέας
   που εξαρτάται από **θέση** σπάει σιωπηλά με την επόμενη στήλη. */
.syrtari table td.perigrafi{width:100%}
.syrtari table tr:last-child td{border-bottom:0}

/* ⚠️ Η ΕΤΙΚΕΤΑ ΔΙΠΛΑ ΣΤΗΝ ΤΙΜΗ, ΟΧΙ ΣΤΗΝ ΑΛΛΗ ΑΚΡΗ (`R229`).

   Ο Νικόλας, 2026-11-02, αφού φάρδυνε το συρτάρι στα 780px:
   *«είναι πλέον πάρα πολύ δυσανάγνωστα, **απέχει πάρα πολύ η αριστερή με
   τη δεξιά πληροφορία**, συγγνώμη δεν μπορώ να τα διαβάσω.»*

   Ο παλιός κανόνας είχε `grid-template-columns:auto 1fr` με την τιμή
   **στοιχισμένη δεξιά**. Στα 560px δούλευε· στα 780px άφηνε **πάνω από
   400px κενό** ανάμεσα σε «Μοντέλο» και «1841/C», και το μάτι δεν έβρισκε
   ποια τιμή ανήκει σε ποια ετικέτα.

   Τώρα κάθε ζεύγος είναι **δικό του μπλοκ**: ετικέτα σταθερού πλάτους και
   η τιμή αμέσως δίπλα της. Τα μπλοκ μπαίνουν σε **δύο στήλες** όταν
   χωρούν, οπότε δεκαπέντε χαρακτηριστικά γίνονται οκτώ γραμμές αντί για
   δεκαπέντε. Κάτω από 700px πέφτουν σε μία στήλη μόνα τους. */
.syrtari dl.zevgi{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));
  gap:0 26px; margin:0;
}
.syrtari dl.zevgi > div{
  display:flex; align-items:baseline; gap:12px;
  padding:7px 0; border-bottom:1px solid var(--line-soft); min-width:0;
}
.syrtari dl.zevgi dt{
  flex:0 0 116px; font-size:var(--fs-sm); color:var(--ink-3); line-height:1.35;
}
.syrtari dl.zevgi dd{
  margin:0; font-size:var(--fs); font-weight:500; text-align:left;
  min-width:0; overflow-wrap:anywhere;
}

/* ── Η ΤΑΙΝΙΑ ΤΟΥ ΦΑΝΤΑΣΜΑΤΟΣ (`R233`) ──────────────────────────────
   «Δεν υπάρχει πια — μεταποιήθηκε». Μπαίνει **πάνω** από τα
   χαρακτηριστικά, γιατί αλλιώς διαβάζει πρώτα «Διαθέσιμη».

   ⚠️ Το `--alarm-deep` και όχι το `--alarm`: ο τίτλος κάθεται πάνω στο
   `--alarm-wash`, όπου το απλό terra δίνει 3,88:1 — κάτω από το όριο.
   Μετρημένο στην παλέτα, γραμμή 118. */
.syrtari .fantasma-tainia{
  margin:0 0 14px; padding:11px 13px; border-radius:var(--r);
  background:var(--alarm-wash); border:1px solid var(--alarm-line);
}
.syrtari .fantasma-tainia strong{
  display:block; font-size:var(--fs); font-weight:600; color:var(--alarm-deep);
}
.syrtari .fantasma-tainia p{margin:3px 0 0; font-size:var(--fs-sm); color:var(--ink-2)}
/* Ο σύνδεσμος κρατά το χρώμα του **τεμαχίου** (`R230`): δείχνει σε γούνα,
   και το χρώμα λέει σε τι δείχνει — όχι πόσο σοβαρό είναι. */
.syrtari .fantasma-tainia a{
  font-weight:600; font-variant-numeric:tabular-nums;
  border-bottom:1px solid var(--per-line);
}

.syrtari > footer{
  padding:11px 18px; border-top:1px solid var(--line); background:var(--card-2);
  display:flex; gap:10px; justify-content:space-between; align-items:center;
  flex-wrap:wrap;
}
.syrtari > footer .plo{font-size:var(--fs-lbl); color:var(--ink-4)}

/* ── ΤΟ ΣΧΟΛΙΟ ΤΟΥ ΜΕΣΑ ΣΤΗΝ ΚΑΡΤΕΛΑ (`R235`) ────────────────────────
   Δικό του χειρόγραφο κείμενο, συχνά με την ισοτιμία. Ξεχωρίζει από
   την περιγραφή με πλάγια και με το χρώμα του μελανιού 3 — είναι
   σημείωση, όχι δεδομένο του συστήματος. Κανένα χρώμα κατάστασης:
   δεν σημαίνει εντάξει ούτε πρόβλημα. */
.scholio{
  margin-top:3px; font-size:var(--fs-sm); color:var(--ink-3);
  font-style:italic; overflow-wrap:break-word;
}

/* ── Η ΑΝΑΖΗΤΗΣΗ ΓΙΑ ΤΑ ΠΑΝΤΑ ────────────────────────────────────────
   *«πολλές φορές δεν θυμάμαι τον αριθμό της παρτίδας»* — και δεν είναι
   μόνο οι παρτίδες. Σήμερα πρέπει να ξέρει σε ποια οθόνη ζει αυτό που
   ψάχνει· δουλειά του προγράμματος, όχι δική του. */

.pantou{
  position:fixed; inset:0; background:rgba(28,25,22,.44); z-index:50;
  display:none; align-items:flex-start; justify-content:center; padding:11vh 20px 20px;
}
.pantou.anoichto{display:flex}
.pantou-kouti{
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--shadow); width:min(640px, 100%); max-height:72vh;
  display:flex; flex-direction:column; overflow:hidden;
}
.pantou-pedio{
  font:inherit; font-size:18px; padding:15px 18px; border:0; border-bottom:1px solid var(--line);
  background:var(--card); color:var(--ink); width:100%;
}
.pantou-pedio:focus{outline:none}
.pantou-apotelesmata{overflow-y:auto; flex:1}
.pantou-apotelesmata .omada-ap{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); padding:11px 18px 5px; background:var(--card-2);
}
.pantou-apotelesmata a{
  display:flex; gap:12px; align-items:baseline; padding:9px 18px;
  text-decoration:none; color:var(--ink); border-bottom:1px solid var(--line-soft);
}
.pantou-apotelesmata a:hover, .pantou-apotelesmata a:focus{background:var(--brand-wash); outline:none}
.pantou-apotelesmata a .kl{font-weight:600; font-family:var(--mono);
  font-variant-numeric:tabular-nums; white-space:nowrap}
.pantou-apotelesmata a .per{color:var(--ink-2); font-size:var(--fs-sm); flex:1;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.pantou-apotelesmata .tipota{padding:18px; color:var(--ink-4); font-size:var(--fs-sm)}
.pantou-ypo{
  padding:9px 18px; border-top:1px solid var(--line); background:var(--card-2);
  font-size:var(--fs-lbl); color:var(--ink-4);
}

/* Το κουμπί της αναζήτησης στη ράγα. */
.psaxe{
  display:flex; align-items:center; gap:8px; width:100%;
  font:inherit; font-size:var(--fs-sm); text-align:left; cursor:pointer;
  background:var(--card-2); border:1px solid var(--line); border-radius:4px;
  padding:7px 10px; color:var(--ink-3); margin-bottom:14px;
}
.psaxe:hover{background:var(--card); color:var(--ink)}
.psaxe kbd{
  /* ⚠️ ΠΟΤΕ ΚΑΤΩ ΑΠΟ 13px — το πιο συχνό του παράπονο σε οθόνη. Το
     έγραψα 11px και το έπιασε το `PaletaTest` την ίδια στιγμή. */
  margin-left:auto; font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:var(--fs-lbl); color:var(--ink-4);
  border:1px solid var(--line); border-radius:3px; padding:1px 6px; background:var(--ground);
}

/* ── Η ΑΛΥΣΙΔΑ ΤΗΣ ΙΧΝΗΛΑΣΙΜΟΤΗΤΑΣ (`R214`) ──────────────────────────
   Κανόνας 5 του έργου: *«η ιχνηλασιμότητα είναι ο λόγος ύπαρξης του
   συστήματος, όχι χαρακτηριστικό»*. Η αλυσίδα υπήρχε — αλλά έπρεπε να
   την περπατήσεις καρτέλα προς καρτέλα. 7.347 γούνες έχουν 5+ κινήσεις. */
/* ⚠️ `nav.alysida`, ΟΧΙ ΣΚΕΤΟ `.alysida` (`R223`).

   Ο Νικόλας, 2026-11-02: *«βλέπω ότι στα στάδια παραγωγής είναι
   χρωματισμένο πολύ πίσω. Αυτό το καφέ. Δεν καταλαβαίνω γιατί — είναι
   κάποιο λάθος;»*

   Ήταν. Η **ίδια κλάση** χρησιμοποιούνταν σε δύο πράγματα: τη λωρίδα
   ιχνηλασιμότητας στην κορυφή (`<nav class="alysida">`), όπου το φόντο
   άμμου είναι σκόπιμο, και το **κελί σταδίου** μέσα στον πίνακα
   κινήσεων (`<td class="sub alysida">`), όπου το κληρονομούσε κατά
   λάθος — φόντο, περίγραμμα, padding και όλα.

   Αποτέλεσμα: κάθε στάδιο στο ιστορικό φορούσε ένα μπεζ κουτί που με
   τον νέο κατάλογο (`R218`) διαβάζεται ως **καφέ = Αγορές**, μέσα στην
   παραγωγή. Χρώμα χωρίς νόημα είναι ακριβώς αυτό που ο κατάλογος
   υπάρχει για να αποτρέπει. */
nav.alysida{
  display:flex; align-items:stretch; gap:0; flex-wrap:wrap;
  margin:0 0 18px; padding:2px; background:var(--card-2);
  border:1px solid var(--line); border-radius:var(--r);
}
.alysida .krikos{
  display:flex; flex-direction:column; gap:1px; padding:7px 11px;
  text-decoration:none; color:var(--ink); border-radius:4px; min-width:0;
}
.alysida a.krikos:hover{background:var(--card)}
.alysida a.krikos:focus-visible{outline:2px solid var(--brand); outline-offset:-2px}
.alysida .krikos .ti{
  font-size:var(--fs-lbl); color:var(--ink-4); text-transform:uppercase;
  letter-spacing:.05em; font-weight:600;
}
.alysida .krikos .poios{
  font-size:var(--fs-sm); font-weight:500; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; max-width:22ch;
}
.alysida a.krikos .poios{color:var(--brand)}
/* Πού βρίσκεσαι τώρα μέσα στην αλυσίδα. */
.alysida .krikos.edo{background:var(--card); box-shadow:inset 0 0 0 1px var(--line)}
.alysida .krikos.edo .poios{color:var(--ink)}
/* ⚠️ Κρίκος που ΔΕΝ ξέρουμε: φαίνεται ότι λείπει, δεν κρύβεται (`R102`). */
.alysida .krikos.agnostos .poios{color:var(--ink-4); font-style:italic}
.alysida .vela{display:flex; align-items:center; color:var(--ink-4); padding:0 1px}

/* ── Η ΦΟΡΜΑ ΔΙΟΡΘΩΣΗΣ ΜΕΣΑ ΣΤΟ ΣΥΡΤΑΡΙ (`R216`) ─────────────────── */
.syrtari .pedio{display:block; margin-bottom:14px}
.syrtari .pedio > span{
  display:block; font-size:var(--fs-sm); color:var(--ink-3); margin-bottom:4px;
}
.syrtari .pedio input, .syrtari .pedio select{
  font:inherit; font-size:var(--fs); width:100%; padding:8px 10px;
  border:1px solid var(--line); border-radius:4px;
  background:var(--card); color:var(--ink);
}
.syrtari .pedio input:focus, .syrtari .pedio select:focus{
  outline:2px solid var(--brand); outline-offset:-1px; border-color:var(--brand);
}
.syrtari .duo{display:grid; grid-template-columns:2fr 1fr; gap:12px}
.syrtari .koumpia{display:flex; gap:9px; margin-top:18px}

/* ══════════════════════════════════════════════════════════════════════
   ΤΟ ΧΡΩΜΑ ΤΗΣ ΠΕΡΙΟΧΗΣ, ΣΕ ΤΡΙΑ ΣΗΜΕΙΑ (`R218`)

   Δικά του λόγια, 2026-11-02: *«θέλω παραπάνω χρώματα, αλλά να υπάρχει
   συνέπεια και συνέχεια … να τον χρησιμοποιούμε με αυστηρότητα σε
   συγκεκριμένες διαδικασίες»*, και *«το μενού … μου έχει ζαλίσει τον
   εγκέφαλο»*.

   Διάλεξε την **επιλογή Γ**: χρώμα στο μενού, ταινία στην κορυφή, **και**
   στις κεφαλίδες των πινάκων.

   ⚠️ ΤΡΙΑ ΣΗΜΕΙΑ, ΟΧΙ ΤΕΣΣΕΡΑ. Το χρώμα δεν μπαίνει ποτέ σε νούμερο, σε
   γραμμή πίνακα, ούτε σε φόντο περιεχομένου: εκεί ζει η ΚΑΤΑΣΤΑΣΗ
   (ok/warn/alarm) και δύο συστήματα χρώματος στο ίδιο σημείο δεν
   διαβάζονται.
   ══════════════════════════════════════════════════════════════════════ */

/* ── 0. ⚠️ Ο ΚΑΤΑΛΟΓΟΣ ΖΕΙ **ΜΟΝΟ ΣΤΟ ΜΕΝΟΥ** (`R245`) ────────────────

   Ο Νικόλας, 2026-11-03, αφού δούλεψε πάνω του:

   > *«Έχω **σοβαρό θέμα** με τα χρώματα και δεν με έχεις βοηθήσει. Δεν
   > υπάρχει συνοχή: **το κουμπί της αναζήτησης έχει διαφορετικό χρώμα σε
   > κάθε πίνακα**, ο σειριακός έχει διαφορετικό χρώμα σε κάθε μενού…
   > **ζαλίστηκα.** Θέλω να τα κάνουμε **ανά λειτουργία**.»*

   Είχε δίκιο, και το λάθος ήταν στην **εμβέλεια**, όχι στον κατάλογο:
   οι κανόνες παρακάτω έπεφταν στο `<body>`, άρα **44 σημεία** —
   κουμπιά, σύνδεσμοι, φίλτρα, σελιδοποίηση, πλαίσια εστίασης —
   ξαναβάφονταν σε κάθε οθόνη. Ίδια λειτουργία, άλλο χρώμα κάθε φορά.

   ⚠️ ΚΑΙ Ο ΚΑΝΟΝΑΣ ΗΤΑΝ ΗΔΗ ΓΡΑΜΜΕΝΟΣ ΣΤΟ ΔΙΚΟ ΤΟΥ CRM, από τη μέρα
      που πήραμε την παλέτα (`D-089`): *«**το μενού που δεν πρέπει να
      αλλάζει χρώμα**»*. Τον παραβίασα, και μάλιστα παντού.

   ── Η ΔΙΟΡΘΩΣΗ ΕΙΝΑΙ ΜΙΑ ΛΕΞΗ ΣΤΟΝ ΕΠΙΛΟΓΕΑ ──────────────────────────

   Οι κανόνες ισχύουν πια **μόνο** για τους συνδέσμους του μενού. Παντού
   αλλού το `--per` μένει στην προεπιλογή της `:root`, που είναι το
   **αιγαίο** — δηλαδή **ακριβώς το `--brand`**. Άρα και τα 44 σημεία
   γίνονται ένα χρώμα **χωρίς να πειραχτεί κανένα από αυτά**.

   Το χρώμα λέει πια **τι κάνει**, όχι **πού είσαι**:

     αιγαίο                  → κουμπιά, σύνδεσμοι, φίλτρα — το ίδιο παντού
     πράσινο/ώχρα/κεραμιδί   → κατάσταση, και μόνο
     τα έξι του καταλόγου    → **μόνο η ράβδος του μενού**

   Καμία οθόνη δεν χάνει πληροφορία: ο τίτλος λέει πού είσαι.

   ── Η ΠΡΟΗΓΟΥΜΕΝΗ ΙΣΤΟΡΙΑ ΑΥΤΟΥ ΤΟΥ BLOCK (`R239`) ──────────────────

   ⚠️ ΑΥΤΟ ΤΟ BLOCK ΕΛΕΙΠΕ ΕΝΤΕΛΩΣ, ΚΑΙ ΗΤΑΝ Ο ΛΟΓΟΣ ΠΟΥ «ΟΛΑ ΗΤΑΝ ΜΠΛΕ».

   Ο Νικόλας, δύο φορές: *«βλέπω μόνο το μπλε»* και, αφού άλλαξαν όλα τα
   χρώματα του καταλόγου, *«**δεν είδα καμία διαφορά** στα χρώματα»*.

   Η δεύτερη παρατήρηση ήταν που έλυσε το μυστήριο. Το `data-per` γραφόταν
   σωστά σε κάθε οθόνη και σε κάθε σύνδεσμο — και **κανένας κανόνας CSS
   δεν διάβαζε την τιμή του**. Η `:root` όριζε `--per: var(--per-aigaio)`
   ως ουδέτερη αφετηρία, και επειδή τίποτα δεν την αντικαθιστούσε, **κάθε**
   στοιχείο της εφαρμογής έπαιρνε αιγαίο.

   Δηλαδή ο κατάλογος των έξι χρωμάτων υπήρχε στα tokens, υπήρχε στο
   `Perioxi`, υπήρχε στο HTML, και **δεν έφτανε ποτέ στην οθόνη**.

   ⚠️ ΤΑ TESTS ΔΕΝ ΤΟ ΕΠΙΑΣΑΝ, ΚΑΙ ΕΙΧΑΝ ΔΙΚΙΟ ΝΑ ΜΗΝ ΤΟ ΠΙΑΣΟΥΝ: ελέγχουν
   ότι το `data-per` γράφεται με τη σωστή τιμή — που γινόταν. Το χάσμα
   ήταν ανάμεσα στο attribute και στο στυλ, δηλαδή ακριβώς εκεί που
   κανένα test HTML δεν κοιτάζει. Γι' αυτό προστέθηκε φρουρός που διαβάζει
   το **CSS** και απαιτεί να υπάρχει μετάφραση για κάθε χρώμα του
   καταλόγου (`PaletaTest`).

   Είναι ο `Κανόνας: Verify against the real thing` σε μικρογραφία — ο
   κώδικας ήταν σωστός σε τέσσερα σημεία και η οθόνη λάθος. */
/* ⚠️ ΟΙ ΕΞΙ ΜΕΤΑΦΡΑΣΕΙΣ ΑΦΑΙΡΕΘΗΚΑΝ — Ο ΚΑΤΑΛΟΓΟΣ ΑΠΟΣΥΡΘΗΚΕ (`R247`).

   Εδώ ζούσαν οι κανόνες που έδιναν στη ράβδο του μενού το χρώμα του
   πράγματος: καφέ στα δέρματα, πετρόλ στα τεμάχια, μωβ στα πρόσωπα.
   Ήταν το **τελευταίο** σημείο του καταλόγου, μετά τον `R245`.

   Ο Νικόλας, με φωτογραφία της οθόνης του, 2026-11-03:

   > *«Στο χρώμα που αλλάζει όταν σύρω τον κέρσορα πάνω από το μενού
   > είναι **διαφορετικό σε κάθε κατηγορία**. Θα ήθελα **ένα χρώμα** να
   > είναι, γιατί αρχίζει και με μπερδεύει αυτό. Όπως και το χρώμα
   > μπροστά από την κατηγορία, **καλύτερα να είναι ένα**.»*

   Χωρίς αυτούς τους κανόνες, το `--per` μένει στην προεπιλογή της
   `:root` — το αιγαίο, δηλαδή το `--brand`. Η ράβδος και το hover
   γίνονται **ένα χρώμα** χωρίς να αλλάξει κανένας άλλος κανόνας.

   ⚠️ ΤΟ `data-per` ΜΕΝΕΙ ΣΤΟ HTML. Δεν βάφει πια, αλλά **δηλώνει τι
      δείχνει η οθόνη** — και αυτό το ελέγχουν tests που κρατούν τη
      συνέπεια μενού ↔ οθόνης. Αν κάποτε θελήσει πάλι χρώμα, η
      πληροφορία είναι εκεί.
/* ── 1. ΤΟ ΜΕΝΟΥ — Η ΡΑΒΔΟΣ ΠΑΕΙ ΣΤΗ ΓΡΑΜΜΗ (`R230`) ──────────────────

   Ο Νικόλας: *«τα χρώματα όσο το δουλεύω με μπερδεύουν, γιατί σε ίδιες
   λειτουργίες έχουμε διαφορετικά χρώματα»*.

   Η ράβδος ήταν στην **ομάδα** (`R229`), αλλά οι ομάδες του είναι
   **δουλειές** ενώ τα χρώματα είναι **πράγματα** — και σε δύο ομάδες δεν
   συνέπιπταν: η «Παραγωγή» ανοίγει τεμάχια ΚΑΙ χαρτιά, οι «Αγορές»
   πρόσωπα ΚΑΙ χαρτιά.

   Διάλεξε την **επιλογή Α**: η ράβδος μπαίνει στη **γραμμή**, στο χρώμα
   της οθόνης που ανοίγει. Έτσι το μενού **δεν μπορεί ποτέ να διαφωνήσει**
   με την οθόνη — πατάς πετρόλ γραμμή, ανοίγει πετρόλ οθόνη — και η δομή
   που διάλεξε μένει άθικτη. */
aside.raga nav .omada{
  font-size:var(--fs-lbl); letter-spacing:.08em; text-transform:uppercase;
  color:var(--ink-4); font-weight:600; padding:14px 12px 5px;
}
aside.raga nav a[data-per]{border-left:3px solid var(--per)}
aside.raga nav a[data-per]:hover{background:var(--per-wash)}
/* ── 2. Η ΤΑΙΝΙΑ ΣΤΗΝ ΚΟΡΥΦΗ ─────────────────────────────────────────── */
body[data-per] main{position:relative}
body[data-per] main::before{
  content:''; position:absolute; top:0; left:0; right:0; height:4px;
  background:var(--per); border-radius:0 0 2px 2px;
}
body[data-per] main > h1:first-of-type{margin-top:22px}

/* ── 3. ΟΙ ΚΕΦΑΛΙΔΕΣ ΤΩΝ ΠΙΝΑΚΩΝ ─────────────────────────────────────── */
body[data-per] thead th{
  color:var(--per); background:var(--per-wash); border-bottom-color:var(--per-line);
  padding:7px 12px 7px 10px;
}
body[data-per] thead th:first-child{border-radius:5px 0 0 0}
body[data-per] thead th:last-child{border-radius:0 5px 0 0}

/* ── Η ΕΤΙΚΕΤΑ ΤΟΥ ΤΥΠΟΥ ΠΑΡΑΣΤΑΤΙΚΟΥ ────────────────────────────────── */
.typos{
  display:inline-block; font-size:var(--fs-sm); font-weight:600;
  padding:2px 9px; border-radius:999px; white-space:nowrap;
  color:var(--per, var(--ink-3)); background:var(--per-wash, var(--card-2));
  border:1px solid var(--per-line, var(--line));
}

/* ══════════════════════════════════════════════════════════════════════
   ΟΙ ΟΘΟΝΕΣ ΝΕΑΣ ΕΓΓΡΑΦΗΣ (`R224`)
   ══════════════════════════════════════════════════════════════════════ */

/* ── Η ΣΕΙΡΑ ΕΙΝΑΙ ΤΟ ΠΡΩΤΟ ΠΟΥ ΔΙΑΛΕΓΕΙ (`R111`, `R222`) ──────────────
   Δύο κάρτες αντί για dropdown: η επιλογή ορίζει και την ετικέτα και τον
   αριθμό, άρα δεν κρύβεται μέσα σε λίστα. */
.epiloges-seiras{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:18px}
.epilogi-seiras{
  display:flex; flex-direction:column; gap:2px; flex:1 1 190px;
  padding:12px 16px; border:1px solid var(--line); border-radius:var(--r);
  background:var(--ground); text-decoration:none; color:var(--ink);
}
.epilogi-seiras:hover{background:var(--card); border-color:var(--per-line, var(--line))}
.epilogi-seiras .t{font-weight:600; font-size:var(--fs-val)}
.epilogi-seiras .y{font-size:var(--fs-sm); color:var(--ink-3)}
.epilogi-seiras.energi{
  background:var(--per-wash); border-color:var(--per);
  box-shadow:inset 3px 0 0 var(--per);
}
.epilogi-seiras.energi .t{color:var(--per)}

/* ── ΤΑ ΠΕΔΙΑ ─────────────────────────────────────────────────────────
   Ο Νικόλας: τίποτα κάτω από 13px, σώμα 16px. Τα πεδία είναι 16px και
   στο κινητό — κάτω από αυτό το Safari κάνει zoom μόνο του. */
form .pedio{display:block; margin-bottom:16px}
form .pedio > span:first-child{
  display:block; font-size:var(--fs-lbl); font-weight:600; color:var(--ink-3);
  letter-spacing:.05em; text-transform:uppercase; margin-bottom:5px;
}
/* ⭐ ΤΑ ΠΕΔΙΑ ΕΙΝΑΙ ΛΕΥΚΑ (`R255`).

   ⚠️ ΑΜΕΝΤΜΕΝΤ 2026-11-03, όχι σιωπηλή επανεγγραφή. Εδώ έγραφε
   `background:var(--ground)` — **ιβουάρ πάνω σε λευκή κάρτα**. Οι δύο
   αποχρώσεις απέχουν **1,07:1**: το πλαίσιο σχεδόν εξαφανίζεται και όλη
   η φόρμα δείχνει ξεπλυμένη.

   Το είδε ο Νικόλας στη δική του οθόνη και το συνέδεσε με τα preview:

     *«Όσον αφορά τα χρώματα που σου είπα — δεν τα θέλω μόνο στα preview,
      ήταν μια ένδειξη ότι θα ήθελα **και η πλατφόρμα μας να μοιάζει όπως
      τα preview**.»*

   Τα preview χτίζονταν πάντα με τα ίδια tokens· η διαφορά ήταν ότι εκεί
   τα πεδία κάθονταν σε **λευκό**. Αλλάζει το επίπεδο, όχι η παλέτα —
   τα τρία επίπεδα (ιβουάρ → άμμος → λευκό) μένουν ακέραια. */
/* ⚠️ ΑΝΕΞΑΡΤΗΤΟ ΤΥΠΟΥ, 2026-11-04 (`R269`). Εδώ απαριθμούνταν οι τύποι:
   `text` και `date`. Η οθόνη εισόδου έφερε `password` — **εκτός λίστας**
   — και τα πεδία βγήκαν γυμνά κουτάκια του browser. Το έπιασε το
   preview πριν χτιστεί η οθόνη, όχι η ανάγνωση του κώδικα.

   Μια λίστα που πρέπει να θυμάται κανείς να επεκτείνει είναι το ίδιο
   λάθος με τα γραμμένα `colspan` (`R263`) και τη χειρόγραφη λίστα
   πινάκων (`R267`). Αντιστρέφεται: **όλα** τα πεδία, εκτός από όσα
   δεν είναι κουτιά κειμένου. */
form .pedio input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
form .pedio select,
form .pedio textarea{
  display:block; width:100%; font:inherit; font-size:16px;
  padding:10px 12px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); color:var(--ink);
}
form .pedio textarea{resize:vertical; line-height:1.5}
form .pedio input.proteinomeno{
  background:var(--per-wash, var(--card-2)); border-color:var(--per-line, var(--line));
  color:var(--per, var(--ink)); font-weight:600; font-variant-numeric:tabular-nums;
}
form .pedio input:focus, form .pedio select:focus, form .pedio textarea:focus{
  outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand));
}
form .pedio .vo{display:block; font-size:var(--fs-sm); color:var(--ink-4); margin-top:4px}
/* ⭐ Ο ΑΡΙΘΜΟΣ ΤΟΥ ΒΗΜΑΤΟΣ (`R255`). Η σειρά «πρώτα πού πάει, μετά τι
   στέλνεις» είναι δική του εντολή και πρέπει να φαίνεται με το μάτι,
   όχι να υπονοείται από τη θέση. */
h2 .vima{
  display:inline-flex; align-items:center; justify-content:center;
  width:23px; height:23px; margin-right:9px; border-radius:50%;
  background:var(--per, var(--brand)); color:#fff;
  font-size:13px; font-weight:600; letter-spacing:0; vertical-align:1px;
}

form .duo{display:grid; grid-template-columns:1fr 1fr; gap:16px}
form .tria{display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px}
@media (max-width:720px){
  form .duo, form .tria{grid-template-columns:1fr}
}

/* ── ΤΑ ΣΠΑΝΙΑ ΠΕΔΙΑ, ΠΤΥΣΣΟΜΕΝΑ ──────────────────────────────────────
   Μετρημένα: μανίκι 31%, γιακάς 18%, τρόπος εργασίας 13%, μανσέτα 1%. */
details.ptyssomeno summary{
  cursor:pointer; font-weight:600; font-size:var(--fs-val); list-style:none;
}
details.ptyssomeno summary::-webkit-details-marker{display:none}
details.ptyssomeno summary::before{content:'+ '; color:var(--ink-4)}
details.ptyssomeno[open] summary::before{content:'– '}
details.ptyssomeno summary .y{font-weight:400; color:var(--ink-4); font-size:var(--fs-sm)}

/* ── ΟΙ ΠΡΟΤΑΣΕΙΣ ΑΝΑΖΗΤΗΣΗΣ (6.386 είδη — λίστα δεν γίνεται) ────────── */
.protaseis{
  margin-top:6px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); overflow:hidden; box-shadow:var(--shadow);
}
.protaseis button{
  display:block; width:100%; text-align:left; font:inherit; font-size:var(--fs);
  padding:9px 12px; background:none; border:0; border-bottom:1px solid var(--line-soft);
  cursor:pointer; color:var(--ink);
}
.protaseis button:last-child{border-bottom:0}
.protaseis button:hover, .protaseis button:focus-visible{background:var(--per-wash, var(--card-2))}
.protaseis button .k{font-size:var(--fs-sm); color:var(--ink-4); margin-left:8px}

/* ⭐ Η ΗΜΕΡΟΜΗΝΙΑ ΤΟΥ ΔΕΛΤΙΟΥ, ΣΤΟ ΣΥΡΤΑΡΙ (`R258`). Δική του εντολή:
   *«στα δελτία στα συρτάρια την ημερομηνία πιο τονισμένη»*. Είναι το
   πρώτο που ψάχνει όταν ανοίγει δελτίο — δεν μπορεί να είναι ίδια με
   την περιγραφή που κάθεται δίπλα της. */
.syrtari header .ti .pote{color:var(--ink); font-weight:600; font-variant-numeric:tabular-nums}

/* ⭐ ΟΙ ΠΡΟΤΑΣΕΙΣ ΠΑΡΤΙΔΩΝ ΜΕΣΑ ΣΤΗ ΓΡΑΜΜΗ (`R261`).
   Κρέμονται από το κελί του κωδικού, πάνω από τα υπόλοιπα — αλλιώς
   θα έσπρωχναν τον πίνακα κάθε φορά που γράφει. */
.protaseis-dermaton{
  position:fixed; z-index:60; margin-top:0; max-width:560px; max-height:46vh;
  overflow-y:auto; box-shadow:0 8px 26px rgba(28,25,22,.18);
}
.protaseis-dermaton button{display:flex; justify-content:space-between; gap:14px; align-items:baseline}
.protaseis-dermaton .y{font-size:var(--fs-sm); color:var(--ink-3); white-space:nowrap;
  font-variant-numeric:tabular-nums}

/* Η ποσότητα δερμάτων, μέσα στη γραμμή. */
table.grammes-parastatikou td .posotita-dermatos{
  width:100%; max-width:100%; box-sizing:border-box; font:inherit; font-size:15px; font-weight:600; text-align:right;
  font-variant-numeric:tabular-nums; padding:6px 9px;
  border:1px solid var(--line); border-radius:6px; background:var(--card); color:var(--ink);
}
table.grammes-parastatikou tr.derma td.kod a{color:var(--per-kafe)}

.grammi-koumpion{margin-top:22px}

/* ══════════════════════════════════════════════════════════════════════
   ΟΙ ΓΡΑΜΜΕΣ ΤΟΥ ΠΑΡΑΣΤΑΤΙΚΟΥ — ΣΑΝ EXCEL (`R246`)

   Δική του εντολή: *«θέλω να φαίνονται **γραμμές σαν πίνακας, σαν
   excel** … **λίγο πιο bold οι κωδικοί**»*.

   ⚠️ ΤΟ ΚΟΚΚΙΝΟ ΜΕΝΕΙ, ΔΕΝ ΦΕΥΓΕΙ. *«Θέλω να μένει κόκκινος και να μου
      βγαίνει μήνυμα»* — και τα δύο, όχι το ένα. Η γραμμή που δεν πέρασε
      μένει ορατή ώστε να δει **τι** πληκτρολόγησε λάθος.
   ══════════════════════════════════════════════════════════════════════ */
/* ⭐ ΑΦΗΝΟΥΜΕ ΤΗ ΓΟΥΝΑ ΝΑ ΑΠΛΩΘΕΙ (`R256`).

   Δική του εντολή, 2026-11-04, κοιτάζοντας την οθόνη: *«**πιεσμένα όλα
   τα γράμματα** … **άσε τη γούνα να απλωθεί**. Γιατί αργότερα την
   περιγραφή της γούνας μπορεί να τη χωρίσουμε σε στήλες: στήλη με το
   χρώμα, στήλη με το μοντέλο της, στήλη με το ύψος, με το size, με την
   τιμή.»*

   Οι γραμμές κληρονομούσαν το `height:44px` του καταλόγου αποθέματος.
   Σε **λίστα** που διαβάζεται κάθετα είναι σωστό· εδώ κάθε γραμμή έχει
   περιγραφή **και** δεύτερη σειρά (μοντέλο ή ο λόγος άρνησης), οπότε δύο
   σειρές κειμένου στριμώχνονταν σε ύψος μίας.

   Το ύψος γίνεται **αυτόματο** και το περιθώριο πραγματικό. */
table.grammes-parastatikou td{
  padding:15px 14px; height:auto; line-height:1.5; white-space:normal;
  border-right:1px solid var(--line-soft);
}
table.grammes-parastatikou td:last-child{border-right:none}

/* ⭐ ΣΤΑΘΕΡΗ ΔΙΑΤΑΞΗ — Ο ΠΙΝΑΚΑΣ ΔΕΝ ΒΓΑΙΝΕΙ ΠΟΤΕ ΑΠΟ ΤΗΝ ΚΑΡΤΑ (`R264`).

   ⚠️ ΑΜΕΝΤΜΕΝΤ, ΚΑΙ ΔΙΟΡΘΩΝΕΙ ΔΙΚΟ ΜΟΥ ΛΑΘΟΣ. Ο Νικόλας το είδε δύο
   φορές: *«οι γραμμές δεν είναι ίσιες του πίνακα»* και *«πάλι το ίδιο,
   όλη η γραμμή είναι σπασμένη με τις στήλες»*.

   Η αιτία μπήκε με τον `R256` («άσε τη γούνα να απλωθεί»):

       td.ti { width:100% }

   Σε πίνακα **αυτόματης** διάταξης αυτό δεν σημαίνει «πάρε ό,τι
   περισσεύει» — σημαίνει «θέλω όλο το πλάτος του πίνακα». Μαζί με τα
   ρητά πλάτη των υπόλοιπων στηλών, ο πίνακας ζητά **περισσότερο από
   όσο υπάρχει**, ξεχειλίζει από το `.scroll`, και η ΤΙΜΗ κόβεται έξω
   από την κάρτα. Αυτό έβλεπε.

   Η σωστή γραφή είναι `table-layout:fixed`: τα πλάτη δηλώνονται **μία**
   φορά στην κεφαλίδα, ο πίνακας δεν ξεπερνά ποτέ το 100% του γονέα, και
   η περιγραφή παίρνει **ό,τι περισσεύει** — τυλίγοντας αν χρειαστεί
   αντί να σπρώχνει.

   Και λύνει και το δεύτερο μισό: με σταθερή διάταξη, οι γραμμές με
   `colspan` **δεν μπορούν** να αλλάξουν τα πλάτη των άλλων γραμμών. */
table.grammes-parastatikou{table-layout:fixed; width:100%}

table.grammes-parastatikou td.nn, table.grammes-parastatikou th.nn{width:40px}
table.grammes-parastatikou td.kod, table.grammes-parastatikou th.kod{width:128px}
table.grammes-parastatikou td.num, table.grammes-parastatikou th.num{width:92px}
table.grammes-parastatikou td.timi, table.grammes-parastatikou th.timi{width:128px}
table.grammes-parastatikou td.sim, table.grammes-parastatikou th.sim{width:46px}
/* Η περιγραφή: ό,τι απομένει, και τυλίγεται. */
/* ⚠️⚠️ Η ΑΛΗΘΙΝΗ ΑΙΤΙΑ ΤΩΝ ΣΤΡΑΒΩΝ ΓΡΑΜΜΩΝ (`R265`).

   Ο Νικόλας το είπε **τρεις** φορές. Το βρήκα μετρώντας τα κελιά στον
   ίδιο τον browser:

     κεφαλίδα «τι είναι»   y 471–506      τα αδέλφια της  y 471–508
     γραμμή   «τι είναι»   y 508–**543**  τα αδέλφια της  y 508–562

   Το κελί ήταν **19px κοντύτερο** από τη γραμμή του. Αιτία: υπάρχει
   **γενικός** κανόνας `.ti{display:block}` (γραμμή 943), φτιαγμένος για
   τον υπότιτλο του συρταριού. Η στήλη «Τι είναι» έχει την ίδια κλάση —
   και το `display:block` **βγάζει το κελί από τον πίνακα**: παύει να
   είναι κελί, άρα παύει να τεντώνεται στο ύψος της γραμμής, και τα
   περιγράμματα σκαλώνουν ακριβώς στο όριό του.

   ⚠️ Δύο διορθώσεις πριν από αυτήν (`R263` τα `colspan`, `R264` η
      σταθερή διάταξη) ήταν **υπαρκτά** λάθη και χρειάζονταν — αλλά καμία
      δεν ήταν αυτό. Το μάθημα: όταν η οθόνη λέει κάτι που ο κώδικας
      διαψεύδει, **μέτρα την οθόνη**. Τρεις εικασίες κόστισαν όσο μία
      μέτρηση. */
table.grammes-parastatikou td.ti, table.grammes-parastatikou th.ti{
  display:table-cell; width:auto; white-space:normal;
}

/* ⚠️ Με σταθερή διάταξη το κείμενο δεν σπρώχνει — αλλά ούτε κρύβεται
   σιωπηλά: οι αριθμοί μένουν σε μία γραμμή, η περιγραφή τυλίγεται. */
table.grammes-parastatikou td.num, table.grammes-parastatikou th.num,
table.grammes-parastatikou td.kod, table.grammes-parastatikou th.kod{white-space:nowrap}

/* ⚠️ ΟΥΤΕ ΜΠΛΕ ΓΡΑΜΜΗ, ΟΥΤΕ ΖΕΒΡΑ — ΕΙΝΑΙ ΦΟΡΜΑ, ΟΧΙ ΛΙΣΤΑ (`R256`).

   *«Όταν πάμε το cursor απάνω από τη γραμμή **γίνεται όλη μπλε**.»*

   Ο πίνακας φοράει και την κλάση `apothema`, άρα κληρονομούσε το
   ζεβρέ φόντο και το γαλάζιο hover του **καταλόγου**. Εκεί βοηθούν:
   παρακολουθείς μια γραμμή ανάμεσα σε εκατό. Εδώ οι γραμμές είναι πέντε
   και **γράφονται** — το χρώμα τις έκανε να μοιάζουν πατήσιμες και
   έπνιγε το κόκκινο της άρνησης, που είναι το μόνο που πρέπει να
   φωνάζει. */
table.grammes-parastatikou tbody tr:nth-child(even) td{background:transparent}
/* ⚠️ ΚΑΙ ΣΤΗ **ΓΡΑΜΜΗ**, ΟΧΙ ΜΟΝΟ ΣΤΑ ΚΕΛΙΑ. Η πρώτη διόρθωση έσβησε το
   γαλάζιο από τα `td` και ο Νικόλας είδε αμέσως μετά **καφέ**: ο γενικός
   `tbody tr:hover` βάφει την **άμμο** στη γραμμή, και τα διάφανα κελιά
   την άφηναν να φαίνεται από πίσω. Μία διόρθωση μισή είναι διόρθωση που
   δεν έγινε. */
table.grammes-parastatikou tbody tr:hover,
table.grammes-parastatikou tbody tr:hover td{background:transparent}
table.grammes-parastatikou tbody tr.kako,
table.grammes-parastatikou tbody tr.kako:hover,
table.grammes-parastatikou tbody tr.kako:hover td{background:var(--alarm-wash)}
table.grammes-parastatikou th.nn,
table.grammes-parastatikou td.nn{
  /* ⚠️ Το πλάτος ΔΕΝ γράφεται εδώ — ορίζεται μία φορά παραπάνω (`R264`).
     Δύο σημεία με άλλο νούμερο για την ίδια στήλη είναι η επόμενη
     στραβή γραμμή. */
  text-align:center; color:var(--ink-4); font-size:var(--fs-sm);
}
/* ⭐ Ο κωδικός πιο έντονος — δική του απαίτηση. */
table.grammes-parastatikou td.kod{
  font-size:17px; font-weight:700; letter-spacing:.01em; padding:8px 10px;
}
table.grammes-parastatikou td.kod a{color:var(--brand); font-weight:700}
table.grammes-parastatikou td.ti{padding:8px 10px; color:var(--ink-2); white-space:normal}
table.grammes-parastatikou td.ti small{
  display:block; margin-top:5px; font-size:var(--fs-sm); color:var(--ink-4);
}
table.grammes-parastatikou td.num{text-align:right; padding:8px 10px}
table.grammes-parastatikou td.timi{padding:5px 8px; text-align:right}
table.grammes-parastatikou td.timi input{
  width:100%; max-width:100%; box-sizing:border-box; font:inherit; font-size:15px; font-weight:600; text-align:right;
  font-variant-numeric:tabular-nums; padding:5px 8px;
  border:1px solid var(--line); border-radius:5px; background:var(--card-2); color:var(--ink);
}
table.grammes-parastatikou th.sim,
table.grammes-parastatikou td.sim{text-align:center; padding:6px 8px}
table.grammes-parastatikou tr.ok td.sim{color:var(--ok); font-weight:700}

/* Η γραμμή που δεν πέρασε: κόκκινη, με τον λόγο από κάτω. */
table.grammes-parastatikou tr.kako{background:var(--alarm-wash)}
table.grammes-parastatikou tr.kako td.kod{color:var(--alarm-deep)}
table.grammes-parastatikou tr.kako td.sim{color:var(--alarm); font-weight:700}
table.grammes-parastatikou .aitia{
  display:block; margin-top:4px; font-size:var(--fs-sm);
  font-weight:600; color:var(--alarm-deep);
}

/* Η κενή γραμμή στο τέλος — εκεί γράφει τον επόμενο. */
/* ⚠️ ΤΑ ΠΕΔΙΑ ΔΕΝ ΒΓΑΙΝΟΥΝ ΠΟΤΕ ΑΠΟ ΤΗ ΣΤΗΛΗ ΤΟΥΣ (`R264`).

   Σε σταθερή διάταξη η στήλη έχει **δοσμένο** πλάτος· ένα πεδίο με
   μεγαλύτερο σταθερό πλάτος ξεχειλίζει και πέφτει **πάνω** στο κείμενο
   της διπλανής στήλης. Αυτό έβλεπε ο Νικόλας ως «σπασμένη γραμμή». */
table.grammes-parastatikou tr.nea td.kod input{
  /* ⚠️ 15px ΚΑΙ ΟΧΙ 17 (`R280`). Δική του εντολή, βλέποντας τη φόρμα στο
     web: *«μίκρυνε το κείμενο μέσα στο μπλε»*. Στα 17px bold το
     «κωδικός ή barcode» δεν χωρούσε και κοβόταν στο «κωδικός ή έ». */
  width:100%; max-width:100%; box-sizing:border-box; font:inherit; font-size:15px; font-weight:600;
  padding:6px 9px; border:1px dashed var(--brand-line); border-radius:5px;
  background:var(--brand-wash); color:var(--brand);
}

.synola-parastatikou{
  display:flex; justify-content:flex-end; gap:28px; flex-wrap:wrap;
  margin-top:12px; padding:11px 14px; background:var(--card-2);
  border-top:2px solid var(--ink); border-radius:0 0 var(--r) var(--r);
}
.synola-parastatikou dt{
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-4);
}
.synola-parastatikou dd{margin:0; font-size:21px; font-weight:700;
  font-variant-numeric:tabular-nums; text-align:right}
/* ── Η ΔΙΑΔΡΟΜΗ ΤΟΥ ΔΕΛΤΙΟΥ, ΨΗΛΑ ΚΑΙ ΕΝΤΟΝΑ (`R252`) ───────────────────
   Δική του εντολή, 2026-11-03: *«ο τόπος που έχει πάει … να είναι πιο πάνω
   στο παραστατικό και λίγο πιο έντονο και να φαίνεται το από πού έφυγε και
   πού πήγε … κάντο λίγο πιο όμορφο»*.

   Το φόντο είναι το `--per-wash` της περιοχής, άρα παίρνει **το χρώμα της
   δουλειάς** όπου κι αν μπει — διακίνηση, παραγωγή, πώληση (`R218`). */
.diadromi{
  display:flex; align-items:center; gap:13px; flex-wrap:wrap;
  padding:12px 14px; border-radius:var(--r);
  background:var(--per-wash, var(--brand-wash));
  border:1px solid var(--per-line, var(--brand-line));
}
.diadromi .akro{min-width:0}
.diadromi .akro .lbl{
  display:block; margin-bottom:1px;
  font-size:var(--fs-lbl); font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-4);
}
/* ⚠️ ΤΟ «ΕΝΤΟΝΟ» ΕΙΝΑΙ ΒΑΡΟΣ ΚΑΙ ΜΕΓΕΘΟΣ, ΟΧΙ ΧΡΩΜΑ. Το όνομα του τόπου
   δεν είναι κατάσταση και δεν δανείζεται χρώμα κατάστασης. */
.diadromi .akro .onoma{
  display:block; font-size:19px; font-weight:700; line-height:1.25;
  letter-spacing:-.2px; color:var(--ink);
}
.diadromi .akro .onoma a{
  color:var(--ink); text-decoration:none;
  border-bottom:1px solid var(--per-line, var(--brand-line));
}
.diadromi .akro .onoma a:hover{border-bottom-color:var(--per, var(--brand))}
.diadromi .velos{
  flex:0 0 auto; color:var(--per, var(--brand)); font-size:23px; line-height:1;
  align-self:flex-end; margin-bottom:3px; padding:0 2px;
}

/* Πόσες γούνες — δίπλα στον τίτλο, όχι σε δική του γραμμή (`R212`). */
.syrtari .soma > h3 .posa{
  display:inline-block; margin-left:5px; padding:1px 7px; border-radius:20px;
  background:var(--card-2); border:1px solid var(--line);
  color:var(--ink-3); font-size:var(--fs-lbl); font-weight:600;
  letter-spacing:0; font-variant-numeric:tabular-nums;
}
.syrtari > header .ti .telitsa{color:var(--ink-4); padding:0 2px}

/* ── Η ΔΙΟΡΘΩΣΗ ΜΕΣΑ ΣΤΟ ΣΥΡΤΑΡΙ (`R253`) ──────────────────────────────
   *«Όταν πατάω το διόρθωση δεν είναι ανάγκη να αλλάζει οθόνη.»* Το περίγραμμα
   σε gold λέει «κάτι είναι ανοιχτό και δεν έχει γραφτεί» — εκκρεμεί, που
   είναι ακριβώς το νόημα του gold στο σύστημα. */
.syrtari.se-diorthosi{box-shadow:0 0 0 2px var(--warn-line), var(--shadow)}
.tainia-diorthosis{
  display:flex; align-items:center; gap:8px; padding:9px 13px;
  background:var(--warn-wash); border:1px solid var(--warn-line);
  border-radius:var(--r); font-size:var(--fs-sm); color:var(--warn-deep);
}
.tainia-diorthosis strong{font-weight:700}

.grammes-diorthosis .pedio-timi{width:124px}
.grammes-diorthosis .stili-energeias{width:42px; text-align:right}
.grammes-diorthosis input[type=text]{
  font:var(--fs-sm)/1.3 var(--sans); color:var(--ink);
  padding:6px 8px; border:1px solid var(--line); border-radius:6px;
  background:var(--card); width:100%; text-align:right;
  font-variant-numeric:tabular-nums;
}
.grammes-diorthosis input[type=text]:focus{
  outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand));
}
.grammes-diorthosis input[type=text]:disabled{background:var(--card-2); color:var(--ink-4)}

.svise{
  width:30px; height:30px; border-radius:7px; cursor:pointer;
  background:var(--card); border:1px solid var(--line); color:var(--ink-4);
  font:400 17px/1 var(--sans);
}
.svise:hover{background:var(--alarm-wash); border-color:var(--alarm-line); color:var(--alarm-deep)}
.svise:focus-visible{outline:2px solid var(--per, var(--brand)); outline-offset:2px}

/* ⚠️ ΤΟ ΣΒΗΣΙΜΟ ΦΑΙΝΕΤΑΙ ΠΡΙΝ ΓΙΝΕΙ. Η γραμμή μαρκάρεται και γυρίζει πίσω
   μέχρι την αποθήκευση — τίποτα δεν χάνεται από λάθος κλικ. */
.grammes-diorthosis tr.fevgei td{
  background:var(--alarm-wash); color:var(--ink-4); text-decoration:line-through;
}
.grammes-diorthosis tr.fevgei td a{color:var(--ink-4)}
.grammes-diorthosis tr.fevgei .svise{color:var(--ok-deep); border-color:var(--ok-line)}
.grammes-diorthosis tr.nea td{background:var(--ok-wash)}

/* Ο κωδικός που δεν περνά: *«θέλω να μένει κόκκινος και να μου βγαίνει
   μήνυμα»* (`R246`). */
.grammes-diorthosis tr.kokkini td{background:var(--alarm-wash)}
.grammes-diorthosis tr.kokkini td.m{
  color:var(--alarm-deep); font-weight:700; font-variant-numeric:tabular-nums;
}
.minima-lathos{
  display:block; font-size:var(--fs-sm); color:var(--alarm-deep); font-weight:500;
}
.lathos-minyma{
  margin:0; padding:9px 13px; border-radius:var(--r);
  background:var(--alarm-wash); border:1px solid var(--alarm-line);
  color:var(--alarm-deep); font-size:var(--fs-sm); font-weight:500;
}

.prosthiki{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.prosthiki input[type=text]{
  font:var(--fs)/1.3 var(--sans); color:var(--ink);
  padding:9px 11px; border:1px solid var(--line); border-radius:6px;
  background:var(--card); flex:1 1 150px; min-width:0;
}
.prosthiki input[data-neo-timi]{flex:0 0 108px; text-align:right; font-variant-numeric:tabular-nums}
.prosthiki input[type=text]:focus{
  outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand));
}
.vohthia{margin:0; font-size:var(--fs-lbl); color:var(--ink-4)}
.vohthia strong{color:var(--alarm-deep); font-weight:600}

/* Μόνο για αναγνώστες οθόνης — κεφαλίδα στήλης χωρίς ορατό κείμενο. */
.sr{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ═══════════════════════════════════════════════════════════════════════
   Η ΕΙΣΟΔΟΣ ΚΑΙ ΟΙ ΧΡΗΣΤΕΣ (`R269`)

   Απόφαση του Νικόλα, 2026-11-04, αφού είδε το preview: *«Β — 2 ρολοι —
   εγω διαχειριστης»* (`D-155`). Η είσοδος γίνεται με σύντομο όνομα
   χρήστη, όχι email: στην παραγωγή μπαίνουν από τάμπλετ.
   ═══════════════════════════════════════════════════════════════════════ */

/* Η μόνη οθόνη χωρίς μενού: δεν υπάρχει ακόμη χρήστης να το δει. Το
   ιβουάρ μένει η σελίδα, η κάρτα λευκή — τα τρία επίπεδα ακέραια. */
.eisodos{display:grid; place-items:center; min-height:100vh; padding:40px 20px}
.eisodos form{
  width:100%; max-width:330px; background:var(--card);
  border:1px solid var(--line); border-radius:12px; padding:26px 24px 24px;
}
.eisodos .sima{display:block; margin:0 auto 18px; height:54px; width:auto}
.eisodos h1{font-size:19px; margin:0 0 3px; text-align:center}
.eisodos .ypo{margin:0 0 20px; text-align:center; font-size:14px; color:var(--ink-3)}
.eisodos .note{margin:0 0 16px}
.eisodos .btn{width:100%; justify-content:center; margin-top:4px}
.eisodos .xasmeno{margin:16px 0 0; text-align:center; font-size:14px; color:var(--ink-3)}
.eisodos .thymisou{
  display:flex; align-items:center; gap:8px;
  margin:0 0 16px; font-size:14px; color:var(--ink-2); cursor:pointer;
}
.eisodos .thymisou input{width:16px; height:16px; margin:0; accent-color:var(--brand)}

/* Ποιος είναι μέσα, κάτω στο μενού. Εδώ έγραφε «Νικόλας» σταθερά. */
aside.raga .katw.me-exodo{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
}
aside.raga .katw.me-exodo strong{color:var(--ink); font-weight:600; font-size:15px}
aside.raga .katw.me-exodo form{margin:0}
aside.raga .katw.me-exodo .exodos{
  font:inherit; font-size:13px; font-weight:600; cursor:pointer;
  background:none; border:1px solid var(--line); border-radius:7px;
  padding:5px 10px; color:var(--ink-2);
}
aside.raga .katw.me-exodo .exodos:hover{background:var(--card); color:var(--ink)}

table.christes td.onoma{font-weight:600}
table.christes .rolos{
  display:inline-block; font-size:13px; font-weight:600; letter-spacing:.03em;
  padding:3px 9px; border-radius:999px;
  background:var(--card-2); border:1px solid var(--line); color:var(--ink-2);
}
table.christes .rolos.admin{
  background:var(--brand-wash); border-color:var(--brand-line); color:var(--brand-3);
}
/* Η αφαίρεση είναι μη αναστρέψιμη αλλά όχι η δουλειά της οθόνης:
   κοκκινίζει μόνο στο πέρασμα, όπως το `.btn-svisimo` (`R172`). */
table.christes .vgale{
  font:inherit; font-size:16px; line-height:1; cursor:pointer; color:var(--ink-3);
  background:none; border:1px solid var(--line); border-radius:7px; padding:6px 10px;
}
table.christes .vgale:hover:not(:disabled){
  color:var(--alarm-deep); border-color:var(--alarm); background:var(--alarm-wash);
}
table.christes .vgale:disabled{opacity:.45; cursor:default}

/* ⚠️ Κενό ≠ μηδέν (`R102`). Το «καμία» δεν είναι αριθμός και δεν πρέπει
   να διαβάζεται σαν αριθμός. */
.empty{color:var(--ink-4); font-style:italic}
.pedio .vo.sfalma{color:var(--alarm-deep); font-weight:600}

/* ═══════════════════════════════════════════════════════════════════════
   Η ΥΠΟΓΡΑΦΗ: ΠΟΙΟΣ ΤΟ ΚΑΤΑΧΩΡΗΣΕ (`R275`)

   Ο Νικόλας είδε δύο θέσεις σε preview και διάλεξε τη **Β**: διακριτική
   γραμμή στο κάτω μέρος, όχι ανάμεσα στα στοιχεία της δουλειάς.
   *«to B και συμφωνω με σενα»* (`D-157`).

   ⚠️ Διακριτική, όχι αόρατη: `--ink-3` δίνει 5,68:1 σε λευκό — πάνω από
   το κατώτατο για κείμενο. Το μουτ `--wr-ink-mute` δεν επιτρέπεται.
   ═══════════════════════════════════════════════════════════════════════ */
.ypografi{
  margin:18px 0 0; padding-top:12px; border-top:1px solid var(--line-soft);
  font-size:14px; color:var(--ink-3);
}
.ypografi strong{color:var(--ink-2); font-weight:600}
.ypografi .pote-poios{color:var(--ink-3); font-variant-numeric:tabular-nums}
/* «Ήρθε από τη μετάπτωση» — γεγονός, όχι έλλειψη (`R102`). Πλάγια, ώστε
   να διαβάζεται ως σχόλιο και όχι ως όνομα ανθρώπου. */
.ypografi .apo-metaptosi{font-style:italic}

/* ═══════════════════════════════════════════════════════════════════════
   Η ΠΕΡΙΓΡΑΦΗ ΣΠΑΣΜΕΝΗ ΣΕ ΣΤΗΛΕΣ — ΜΟΝΟ ΣΤΗΝ ΚΑΡΤΕΛΑ (`R276`)

   Δική του εντολή: *«να σπάσουμε την περιγραφή παντού λέω ως εξής:
   Mink Male | Black | jacket with collar | model»*. Και, αφού είδε
   preview με εννέα στήλες σε συρτάρι 780px: *«κράτα το συρτάρι όπως
   είναι, μου αρέσει σύντομο σαν preview του παραστατικού. Το δελτίο
   που ανοίγει να κάνουμε σε στήλες»*.

   ⚠️ ΠΡΟΘΕΜΑ «g-», ΚΑΙ ΚΟΣΤΙΣΕ ΜΙΑ ΔΟΚΙΜΗ. Οι κλάσεις `.chroma` και
   `.montelo` **υπάρχουν ήδη** παραπάνω, για το μοντέλο στην καρτέλα της
   γούνας. Το πρώτο preview βγήκε με το μοντέλο μέσα σε κουτί, γιατί
   κληρονόμησε το `display:flex` εκείνου.
   ═══════════════════════════════════════════════════════════════════════ */
table.grammes-parastatikou td.g-zoo,     table.grammes-parastatikou th.g-zoo{width:126px}
table.grammes-parastatikou td.g-chroma,  table.grammes-parastatikou th.g-chroma{width:120px}
table.grammes-parastatikou td.g-montelo, table.grammes-parastatikou th.g-montelo{width:104px}
table.grammes-parastatikou td.g-posotita, table.grammes-parastatikou th.g-posotita{
  width:108px; text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums;
}
table.grammes-parastatikou td.g-zoo,
table.grammes-parastatikou td.g-chroma,
table.grammes-parastatikou td.g-montelo{font-size:17px; color:var(--ink)}

/* ⭐ ΑΥΞΟΥΣΑ ΑΡΙΘΜΗΣΗ ΣΕ ΚΑΘΕ ΠΙΝΑΚΑ (`R278`).
   Δική του εντολή: *«θέλω γενικά αριθμημένες σειρές σε αύξουσα σειρά
   και στα δελτία και στα συρτάρια και στις αποθήκες και πίνακες»*.
   Διακριτική: ο αριθμός είναι βοήθημα ανάγνωσης, όχι δεδομένο. */
td.nn, th.nn{
  width:40px; text-align:right; white-space:nowrap;
  color:var(--ink-4); font-variant-numeric:tabular-nums;
}

/* ⭐ Η ΣΤΗΛΗ ΤΟΥ ΚΩΔΙΚΟΥ ΕΙΝΑΙ ΦΑΡΔΥΤΕΡΗ ΣΤΗ ΦΟΡΜΑ (`R280`).

   Ο Νικόλας, στη φωτογραφία του νέου δελτίου: *«το μπλε πεδίο που
   περιμένει δεν φαίνεται ολόκληρο το κείμενο»*. Είχε δίκιο, και η
   αιτία δεν ήταν το πεδίο: η στήλη είναι **128px**, το πεδίο γράφει σε
   **17px bold**, και μένουν ~88px για «κωδικός ή barcode» που θέλει
   ~150. Το κείμενο κοβόταν στο «κωδικός ή έ».

   ⚠️ ΦΑΡΔΑΙΝΕΙ Η ΣΤΗΛΗ, ΟΧΙ ΤΟ ΠΕΔΙΟ. Πεδίο φαρδύτερο από τη στήλη του
   ξεχειλίζει πάνω στη διπλανή — αυτό ακριβώς ήταν το `R264`. Η φόρμα
   έχει χώρο: λιγότερες στήλες από την καρτέλα.

   Και το κείμενο-υπόδειξη ελαφραίνει: είναι οδηγία, όχι τιμή. */
/* ⚠️ Η ΣΤΗΛΗ ΜΕΝΕΙ ΣΤΟ ΚΑΝΟΝΙΚΟ ΤΗΣ ΠΛΑΤΟΣ. Η πρώτη μου διόρθωση ήταν
   να τη φαρδύνω στα 208px· ο Νικόλας έδωσε τη σωστή: *«μίκρυνε το
   κείμενο μέσα στο μπλε»* και *«δεν χρειάζεται όλο, ξέρουμε ότι είναι
   πεδίο εισαγωγής»*. Το κείμενο-υπόδειξη κόπηκε σε «κωδικός» — το
   διπλανό κελί ήδη λέει «πληκτρολόγησε ή σκάναρε». */
table.grammes-parastatikou tr.nea td.kod input::placeholder{
  font-weight:400; font-size:14px; color:var(--ink-4);
}

/* ⭐ Η ΗΜΕΡΟΜΗΝΙΑ ΤΟΥ ΔΕΛΤΙΟΥ, ΔΙΑΒΑΖΟΜΕΝΗ (`R282`).
   Δική του εντολή: *«και την ημερομηνία στη σελίδα δελτίου πιο
   μεγάλη»*. Ήταν 14px μαζί με τον τύπο· γίνεται 19px και έντονη —
   είναι το δεύτερο πράγμα που κοιτάς μετά τον κωδικό. */
.hero-meta .kodikos .imerominia-deltiou{font-size:19px; color:var(--ink); font-weight:600}

/* ⭐ ΟΙ ΣΤΗΛΕΣ ΜΑΖΕΜΕΝΕΣ, ΟΧΙ ΑΠΛΩΜΕΝΕΣ (`R282`).
   Δική του εντολή βλέποντας την καρτέλα: *«μετά έχεις ένα τεράστιο
   κενό … να τα φέρεις πιο κοντά όλα»*. Σε σταθερή διάταξη η μία στήλη
   με `width:auto` ρουφούσε **όλο** το πλάτος που περίσσευε: «Coat with
   Collar» σε στήλη 700px, και το μοντέλο στην άλλη άκρη της οθόνης. */
/* ⚠️ ΔΕΥΤΕΡΗ ΔΙΟΡΘΩΣΗ, ΜΕΤΑ ΑΠΟ ΦΩΤΟΓΡΑΦΙΑ (`R284`). Η πρώτη μορφή
   ήταν `width:auto`: ο πίνακας μάζευε στο ελάχιστο και **άφηνε μισή
   οθόνη κενή**, ενώ το «Beige-Off White» έσπαγε σε δύο γραμμές μέσα σε
   στήλη 116px. Ο Νικόλας: *«έχεις μαζέψει πάλι το χρώμα και σπάει,
   παρόλο που έχεις χώρο να το απλώσεις. Και αφήνεις πολύ κενό χώρο.»*

   Τώρα: `width:100%` με **αυτόματη** διάταξη και **καθόλου σταθερά
   πλάτη** — ο browser δίνει σε κάθε στήλη όσο θέλει το περιεχόμενό της
   και μοιράζει το περίσσευμα. Οι σύντομες στήλες δεν σπάνε ποτέ· μόνο
   η περιγραφή επιτρέπεται να αναδιπλωθεί. */
table.grammes-parastatikou.mazemeni{table-layout:auto; width:100%}
table.grammes-parastatikou.mazemeni td,
table.grammes-parastatikou.mazemeni th{width:auto; white-space:nowrap}
table.grammes-parastatikou.mazemeni td.ti,
table.grammes-parastatikou.mazemeni th.ti{white-space:normal; min-width:160px}

/* ⭐ ΤΟ ΘΡΑΥΣΜΑ ΤΟΥ ΣΥΡΤΑΡΙΟΥ, ΜΕΣΑ ΣΕ ΣΕΛΙΔΑ (`R288`).
   Οι φόρμες διόρθωσης είναι γραμμένες για να ζουν σε `.syrtari` και
   από εκεί παίρνουν τα στυλ τους. Στη σελίδα κρατάμε την κλάση αλλά
   **όχι** τη συμπεριφορά: δεν είναι κολλημένο δεξιά, δεν γλιστράει,
   δεν έχει σκιά. */
.syrtari-se-selida > .syrtari{
  position:static; transform:none; width:auto; inset:auto;
  box-shadow:none; border-left:0; z-index:auto; background:transparent;
  display:block; overflow:visible;
}
.syrtari-se-selida > .syrtari > header{display:none}
.syrtari-se-selida > .syrtari > .soma{padding:0; overflow:visible}
.syrtari-se-selida > .syrtari > footer{padding:16px 0 0; background:transparent; border-top:1px solid var(--line-soft)}

/* ⭐ ΤΟ ΚΕΛΥΦΟΣ ΔΙΟΡΘΩΣΗΣ ΜΕΣΑ ΣΤΗ ΣΕΛΙΔΑ (`R289`).
   Η κάρτα των περιεχομένων παίρνει το σχήμα του συρταριού — `.soma`
   και `footer` — ώστε το **ίδιο** κουμπί `data-diorthosi` να δουλεύει
   εδώ χωρίς νέα λογική. Το πόδι είναι γραμμή κουμπιών, όχι μπάρα
   συρταριού. */
.syrtari-se-selida > .syrtari > footer{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:16px 0 0; margin-top:18px;
  background:transparent; border-top:1px solid var(--line-soft);
}
.syrtari-se-selida > .syrtari > footer .plo{flex:1 1 auto}
.syrtari-se-selida > .syrtari.se-diorthosi{box-shadow:none}
.syrtari-se-selida:has(> .syrtari.se-diorthosi){box-shadow:0 0 0 2px var(--warn-line)}

/* ⭐ ΟΙ ΚΕΦΑΛΙΔΕΣ ΤΟΥ ΠΙΝΑΚΑ ΓΡΑΜΜΩΝ, ΟΛΕΣ ΙΔΙΕΣ (`R290`).

   Ο Νικόλας: *«στο δελτίο τη λέξη είδος την έχεις γράψει με άλλη
   γραμματοσειρά»*. Δεν ήταν άλλη γραμματοσειρά — ήταν άλλο **βάρος**:
   υπάρχει καθολικός κανόνας `.ti{font-weight:400}` (για τη μικρή
   ετικέτα κάτω από τα ονόματα) και χτυπούσε την κεφαλίδα «ΕΙΔΟΣ», που
   έχει την ίδια κλάση. Το ίδιο και η «ΤΙΜΗ».

   ⚠️ Το σύμπτωμα που περιέγραψε ήταν ακριβές· η αιτία ήταν αλλού.
   Μετρήθηκε στον browser: όλες 13px/600, εκτός από εκείνες τις δύο.

   Η κεφαλίδα ορίζεται **μία φορά, για όλες** — όχι ανά στήλη. */
table.grammes-parastatikou thead th{
  font-weight:600; font-size:13px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--brand-3);
}
/* Και η στήλη της αρίθμησης σταματά να ξεχωρίζει: ήταν 14,5px γκρι
   κεντραρισμένη ενώ όλες οι άλλες 13px μπλε. */
table.grammes-parastatikou thead th.nn{text-align:right; color:var(--brand-3); font-size:13px}
table.grammes-parastatikou tbody td.nn{font-size:14px; color:var(--ink-4); text-align:right}

/* ⚠️ Η ΔΙΑΔΡΟΜΗ ΜΙΑ ΦΟΡΑ, ΟΧΙ ΔΥΟ (`R289`).
   Η φόρμα διόρθωσης κουβαλά τη δική της «ΑΠΟ → ΠΟΥ ΠΗΓΕ», γιατί μέσα
   στο συρτάρι είναι το μόνο σημείο που τη δείχνει. Στη σελίδα όμως
   υπάρχει ήδη από πάνω — και εμφανιζόταν δύο φορές, η μία κάτω από
   την άλλη. */
.syrtari-se-selida .se-diorthosi .diadromi{display:none}

/* ══════════════════════════════════════════════════════════════════════
   Η ΓΡΑΜΜΗ ΦΙΛΤΡΩΝ ΤΩΝ ΠΑΡΑΣΤΑΤΙΚΩΝ (`R291`, `D-159`)

   Δική του εντολή, 2026-11-05: *«Τώρα θέλω να βάλουμε δύο φίλτρα στον
   γενικό πίνακα των δελτίων διακίνησης … από πού έφυγε, πού πήγε … και
   ένα δεύτερο φίλτρο που να έχει να κάνει με ημερομηνίες»*, και αμέσως
   μετά: *«για να κάνουμε και ωραίο χώρο, να γίνει **ωραία διευθέτηση**,
   με τα φίλτρα»*.

   Η διευθέτηση είναι τέσσερις σειρές μέσα σε μία κάρτα, με σταθερό κενό:

     αναζήτηση          — πλήρες πλάτος
     από πού → πού πήγε — δύο ίσες στήλες
     λωρίδα χρονιών     — πλήρες πλάτος
     ενεργά φίλτρα      — εμφανίζεται μόνο όταν υπάρχει κάτι να βγει

   ⚠️ ΤΟ ΚΕΝΟ ΜΠΑΙΝΕΙ ΑΠΟ ΤΗ ΔΙΑΤΑΞΗ, ΟΧΙ ΑΠΟ `margin` ΑΝΑ ΣΤΟΙΧΕΙΟ.
      Έτσι δεν αλλάζει τίποτα όταν μια σειρά λείπει — και λείπει συχνά:
      η λωρίδα χρονιών δεν εμφανίζεται σε οθόνη με μία μόνο χρονιά.
   ══════════════════════════════════════════════════════════════════════ */
.filtra-kartela form{display:flex; flex-direction:column; gap:18px}

.filtra-topon{display:grid; gap:16px; grid-template-columns:1fr 1fr}
@media (max-width:720px){.filtra-topon{grid-template-columns:1fr}}

.pedio-filtrou{display:flex; flex-direction:column; gap:5px; min-width:0}
.pedio-filtrou .et{
  font-size:var(--fs-lbl); letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); font-weight:600;
}
/* ⚠️ Το βελάκι του `select` ζωγραφίζεται ΕΔΩ, γιατί το `appearance:none`
      το σβήνει μαζί με το χρώμα του συστήματος. Χωρίς αυτό, ο επιλογέας
      μοιάζει με απλό κουτί κειμένου και δεν φαίνεται ότι ανοίγει. */
.pedio-filtrou select{
  appearance:none; -webkit-appearance:none;
  font:inherit; font-size:16px; color:var(--ink); width:100%;
  padding:11px 38px 11px 13px; border:1px solid var(--line);
  border-radius:var(--r); background:var(--card);
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),
                   linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);
  background-position:calc(100% - 19px) calc(50% + 2px), calc(100% - 14px) calc(50% + 2px);
  background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
  cursor:pointer;
}
.pedio-filtrou select:hover{border-color:var(--brand-line)}
.pedio-filtrou select:focus-visible{outline:2px solid var(--brand); outline-offset:2px}

/* ── Η λωρίδα των χρονιών ─────────────────────────────────────────────
   Μία μπάρα ανά χρονιά, ύψος = πλήθος. Πατάς μία, ή σέρνεις για
   διάστημα. Προτιμήθηκε έναντι «Φέτος / Πέρσι / Παλιότερα» επειδή τα
   2.316 δελτία είναι απλωμένα σε **15 χρονιές** με 64-244 την καθεμία:
   το «Παλιότερα» θα κρατούσε 2.113 από τα 2.316 (`D-159`). */
.chronies{display:flex; align-items:flex-end; gap:4px; user-select:none}
.chr{
  flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center; gap:3px;
  font:inherit; cursor:pointer; background:none; border:0; padding:3px 2px 4px;
  border-radius:7px;
}
/* ⚠️ 26px ΚΑΙ ΟΧΙ 52 — ΔΙΚΗ ΤΟΥ ΕΠΙΛΟΓΗ, ΑΠΟ ΤΡΕΙΣ ΕΚΔΟΧΕΣ (`R295`).
      *«μπορείς να κάνεις λίγο πιο μικρό, πιο κοντό τα φίλτρα με τις
      χρονιές να μην πιάνουν τόσο χώρο;»* — και, αφού είδε τις εκδοχές,
      *«το Γ θέλω»*. Η κάρτα των φίλτρων έπεσε από 372 σε 268 px. */
.chr .mp{display:flex; align-items:flex-end; width:100%; height:26px}
/* ⚠️ ΤΟ `--u` ΟΡΙΖΕΤΑΙ ΕΔΩ ΚΙ ΑΣ ΤΟ ΔΙΝΕΙ Η ΟΘΟΝΗ. Δύο λόγοι: μπάρα
      χωρίς τιμή δεν γίνεται αόρατη με λάθος ύψος, και ο φρουρός
      `PaletaTest` απαιτεί κάθε `var(--…)` να έχει ορισμό. */
.chr{--u:0%}
.chr .mp i{
  display:block; width:100%; height:var(--u); min-height:2px;
  border-radius:3px 3px 0 0; background:var(--line); transition:background .12s;
}
/* ⚠️ 13px — ΤΟ ΚΑΤΩΤΑΤΟ ΤΟΥ ΕΡΓΟΥ. Γράφτηκαν πρώτα 12,5 «για να
      χωρέσουν»· τα έπιασε ο `PaletaTest`. Τα μικρά γράμματα είναι το πιο
      συχνό του παράπονο σε οθόνη.
      ⭐ Η χρονιά γράφεται **ολόκληρη** — «2025», όχι «25» (`R295`). */
.chr .yy{font-variant-numeric:tabular-nums; line-height:1.15; font-size:13px;
  color:var(--ink-3)}
.chr:hover .mp i{background:var(--brand-line)}
.chr.energo .mp i{background:var(--brand)}
.chr.energo .yy{color:var(--brand-3); font-weight:600}
.chr:focus-visible{outline:2px solid var(--brand); outline-offset:1px}
/* Όσο σέρνει, η επιλογή φαίνεται ΠΡΙΝ αφήσει το κουμπί. */
.chronies.syrei .chr{transition:none}

/* ── Τι είναι ενεργό, και πώς βγαίνει ─────────────────────────────────
   ⚠️ ΣΥΝΔΕΣΜΟΙ ΚΑΙ ΟΧΙ ΚΟΥΜΠΙΑ ΕΔΩ, ΕΠΙΤΗΔΕΣ. Το `R221` λέει «κουμπί
      ό,τι κάνει κάτι» — αυτά όμως πάνε σε **άλλη διεύθυνση** της ίδιας
      λίστας, άρα είναι πλοήγηση. Το «Καθάρισε» μένει κουμπί. */
.energa-filtra{
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  padding-top:16px; border-top:1px solid var(--line-soft);
}
.energa-filtra .et{
  font-size:var(--fs-lbl); letter-spacing:.07em; text-transform:uppercase; color:var(--ink-4);
}
.energa-filtra .vgale{
  display:inline-flex; align-items:center; gap:7px;
  font-size:14.5px; font-weight:600; padding:6px 11px 6px 13px;
  border-radius:999px; border:1px solid var(--brand-line);
  background:var(--brand-wash); color:var(--brand-3);
}
.energa-filtra .vgale b{font-weight:400; color:var(--ink-2)}
.energa-filtra .vgale .x{color:var(--ink-3); font-size:13px}
.energa-filtra .vgale:hover{border-color:var(--brand); background:var(--card)}
.energa-filtra .apotelesma{margin-inline-start:auto; font-size:15px; color:var(--ink-2)}
.energa-filtra .apotelesma strong{font-variant-numeric:tabular-nums; color:var(--ink)}
/* Η λωρίδα παίρνει την ίδια ετικέτα με τους επιλογείς, ώστε οι τρεις
   γραμμές να διαβάζονται ως ένα πράγμα. Η υπόδειξη δίπλα, γιατί
   «πατάς ή σέρνεις» δεν φαίνεται από μόνο του. */
.chronies-pedio .et em{
  font-style:normal; font-weight:400; text-transform:none; letter-spacing:0;
  color:var(--ink-4); margin-left:8px; font-size:13px;
}

/* ══════════════════════════════════════════════════════════════════════
   ΤΟ ΗΜΕΡΟΛΟΓΙΟ ΤΟΥ ΕΡΓΟΥ (`R296`)

   Δική του εντολή, 2026-11-05: *«και στο νέο δελτίο διακίνησης την
   ημερομηνία που βγαίνει το calendar, μεγάλωσε λίγο το calendar»* και,
   μετά από πρόταση που μεγάλωνε το πεδίο: *«δεν θέλω μεγαλύτερο πεδίο.
   **Θέλω μεγαλύτερο ημερολόγιο**.»*

   ⚠️ ΤΟ ΗΜΕΡΟΛΟΓΙΟ ΤΟΥ BROWSER ΔΕΝ ΣΤΥΛΙΖΕΤΑΙ ΚΑΙ ΔΕΝ ΜΕΓΑΛΩΝΕΙ. Είναι
      παράθυρο του ίδιου του προγράμματος περιήγησης. Οι μέρες του είναι
      ~24px· εδώ είναι **40px**, με αριθμούς στα 16px.

   ⚠️ ΤΟ ΠΕΔΙΟ ΜΕΝΕΙ ΑΚΡΙΒΩΣ ΟΠΩΣ ΗΤΑΝ — το ζήτησε ρητά. Αλλάζει μόνο
      το εικονίδιο στα δεξιά του, που γίνεται δικό μας για να ανοίγει
      δικό μας πάνελ.
   ══════════════════════════════════════════════════════════════════════ */
.imerologio .plaisio{display:block; position:relative}

/* ⚠️ ΤΟ ΟΡΑΤΟ ΠΕΔΙΟ ΕΙΝΑΙ ΚΕΙΜΕΝΟ, ΟΧΙ ΗΜΕΡΟΜΗΝΙΑ — ΚΑΙ ΕΙΝΑΙ Ο ΛΟΓΟΣ
      ΠΟΥ ΔΕΝ ΥΠΑΡΧΕΙ ΔΕΥΤΕΡΟ ΗΜΕΡΟΛΟΓΙΟ. Η τιμή ζει σε κρυφό πεδίο, σε
      `Y-m-d`, όπως πάντα. Οι δύο γραμμές από κάτω μένουν για παλιά
      `type=date` που τυχόν ξεμείνουν κάπου. */
.imerologio input[type="date"]::-webkit-calendar-picker-indicator{display:none}
.imerologio input[type="date"]::-webkit-inner-spin-button{display:none}
.imerologio .plaisio > input{padding-right:42px; font-variant-numeric:tabular-nums}

/* ⚠️ ΤΟ ΚΟΥΜΠΙ ΞΑΝΑΕΓΙΝΕ ΜΙΚΡΟ — ΚΑΙ ΕΙΝΑΙ ΣΩΣΤΟ ΤΩΡΑ.

      Για λίγο σκέπαζε **ολόκληρο** το πεδίο, ώστε το κλικ να μη φτάνει
      στο `input[type=date]` και να μην ανοίγει το ημερολόγιο του
      Chrome. Αυτό όμως σκότωνε και την πληκτρολόγηση, και ο Νικόλας το
      ζήτησε πίσω: *«θέλω να μπορώ και να γράψω αν θέλω ημερομηνία»*.

      Τώρα το ορατό πεδίο είναι **κείμενο**, όχι ημερομηνία: δεν υπάρχει
      ημερολόγιο του browser να εμφανιστεί, άρα το κουμπί δεν χρειάζεται
      να μπλοκάρει τίποτα. Μένει εκεί που ήταν πάντα το εικονίδιο. */
.imerologio .anoigma{
  position:absolute; top:50%; right:7px; transform:translateY(-50%);
  display:grid; place-items:center; width:30px; height:30px;
  border:0; border-radius:7px; background:none; color:var(--ink-3); cursor:pointer;
}
.imerologio .anoigma:hover{background:var(--card-2); color:var(--brand-3)}
.imerologio .anoigma:focus-visible{outline:2px solid var(--per, var(--brand)); outline-offset:1px}

/* ⭐ ΛΑΘΟΣ ΓΡΑΦΗ: ΦΑΙΝΕΤΑΙ, ΔΕΝ ΔΙΟΡΘΩΝΕΤΑΙ ΣΙΩΠΗΛΑ. Ό,τι έγραψε μένει
   στην οθόνη και ο server λέει τι φταίει. */
.imerologio input.lathos{border-color:var(--warn); background:var(--warn-wash); color:var(--warn-deep)}

/* ── Το πάνελ ────────────────────────────────────────────────────── */
.imerologio-panel{
  position:absolute; z-index:60; top:calc(100% + 8px); left:0; width:330px; max-width:92vw;
  background:var(--card); border:1px solid var(--line); border-radius:14px;
  box-shadow:0 14px 40px rgba(28,25,22,.16); padding:14px; cursor:default;
}
.imerologio-panel[hidden]{display:none}
/* ⚠️ Όταν το πεδίο είναι κοντά στη δεξιά άκρη, το πάνελ ανοίγει αριστερά.
      Το βάζει το JavaScript, αφού μετρήσει — δεν μαντεύεται από το CSS. */
.imerologio-panel.aristera{left:auto; right:0}

.imerologio-panel .kefali{
  display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px;
}
.imerologio-panel .kefali b{font-size:17px; font-weight:600; color:var(--ink)}
.imerologio-panel .kefali button{
  font:inherit; font-size:19px; line-height:1; cursor:pointer;
  width:36px; height:36px; border-radius:9px; border:1px solid var(--line);
  background:var(--card); color:var(--ink-2);
}
.imerologio-panel .kefali button:hover{border-color:var(--brand-line); color:var(--brand-3)}

.imerologio-panel .onomata, .imerologio-panel .meres{
  display:grid; grid-template-columns:repeat(7,1fr); gap:3px;
}
.imerologio-panel .onomata span{
  text-align:center; font-size:13px; color:var(--ink-4); padding:4px 0 6px; font-weight:600;
}
/* ⭐ 40px η μέρα — ο λόγος που γράφτηκε όλο αυτό. */
.imerologio-panel .meres button{
  font:inherit; font-size:16px; font-variant-numeric:tabular-nums; cursor:pointer;
  height:40px; border-radius:9px; border:1px solid transparent;
  background:none; color:var(--ink);
}
.imerologio-panel .meres button:disabled{color:transparent; cursor:default}
.imerologio-panel .meres button:not(:disabled):hover{background:var(--card-2)}
.imerologio-panel .meres button.simera{
  border-color:var(--brand-line); font-weight:600; color:var(--brand-3);
}
.imerologio-panel .meres button.dialegmeni{
  background:var(--per, var(--brand)); border-color:var(--per, var(--brand));
  color:#fff; font-weight:600;
}
.imerologio-panel .podi{
  display:flex; justify-content:space-between; align-items:center; gap:8px;
  margin-top:12px; padding-top:11px; border-top:1px solid var(--line-soft);
}
.imerologio-panel .podi button{
  font:inherit; font-size:15px; cursor:pointer; padding:7px 13px; border-radius:8px;
  border:1px solid var(--line); background:var(--card); color:var(--ink-2);
}
.imerologio-panel .podi button:hover{border-color:var(--brand-line); color:var(--brand-3)}
.imerologio-panel .podi button.kyrio{
  background:var(--per, var(--brand)); border-color:var(--per, var(--brand));
  color:#fff; font-weight:600;
}
/* ⭐ ΜΕΡΑ ΕΚΤΟΣ ΟΡΙΟΥ — ΦΑΙΝΕΤΑΙ, ΔΕΝ ΠΑΤΙΕΤΑΙ (`R297`).
   ⚠️ Ξεχωριστή από το `:disabled` των κενών κελιών της αρχής του μήνα:
      εκείνα είναι **αόρατα**, αυτά πρέπει να **διαβάζονται** ώστε να
      φαίνεται γιατί δεν γίνονται κλικ. */
.imerologio-panel .meres button.ektos{color:var(--ink-4); opacity:.4}
.imerologio-panel .kefali button:disabled{opacity:.3; cursor:default}
.imerologio-panel .podi button:disabled{opacity:.4; cursor:default}
/* Το μήνυμα της λάθος ημερομηνίας (`R298`). Ίδιο μέγεθος με τις
   υπόλοιπες υποδείξεις πεδίου, σε χρώμα προσοχής. */
.imerologio .lathos-minima{color:var(--warn-deep); font-weight:500}

/* ⭐ ΟΙ ΔΥΟ ΣΤΗΛΕΣ ΤΩΝ ΑΝΑΛΩΣΕΩΝ (`R300`). Δύο-τρεις γραμμές η καθεμία:
   χρειάζονται αέρα ανάμεσά τους, αλλιώς διαβάζονται σαν ένα μπλοκ. */
table.apothema td.vg, table.apothema td.an{line-height:1.6}
td.vg .ti, td.an .ti{color:var(--ink-2)}
td.vg .mon{font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:13.5px; color:var(--ink-3)}
td.an b{font-variant-numeric:tabular-nums}

/* ⭐ Η ΔΙΟΡΘΩΣΗ ΤΗΣ ΓΟΥΝΑΣ (`R301`): στοιχεία και δέρματα στην ίδια
   φόρμα, μέσα στο συρτάρι ή μέσα στη σελίδα. */
.diorthosi-goynas .tria,
.diorthosi-goynas .dyo{display:grid; gap:12px; margin-bottom:12px}
.diorthosi-goynas .tria{grid-template-columns:repeat(3,1fr)}
.diorthosi-goynas .dyo{grid-template-columns:1fr 150px}
@media (max-width:640px){
  .diorthosi-goynas .tria, .diorthosi-goynas .dyo{grid-template-columns:1fr}
}
.diorthosi-goynas .pedio .monada{font-style:normal; color:var(--ink-4); font-weight:400}
.diorthosi-goynas h3{margin:20px 0 10px}
.diorthosi-goynas h3:first-of-type{margin-top:0}

/* Τα σπάνια πεδία: κρυμμένα, όχι απόντα. Μανσέτα 0,9%, παραλλαγή
   γιακά 1,1% — τα θέλει όταν τα θέλει, όχι στη μέση της φόρμας. */
.diorthosi-goynas .perissotera{margin:4px 0 14px}
.diorthosi-goynas .perissotera > summary{
  cursor:pointer; font-size:15px; color:var(--per, var(--brand)); padding:6px 0;
}
.diorthosi-goynas .perissotera[open] > summary{margin-bottom:10px}

/* ⚠️ ΤΟ ΣΒΗΣΙΜΟ ΕΙΝΑΙ ΣΗΜΑΔΙ, ΟΧΙ ΑΜΕΣΗ ΕΝΕΡΓΕΙΑ. Σημειώνεις ό,τι
   φεύγει και αποθηκεύεις **μία** φορά — αλλιώς το πρώτο κλικ θα έσβηνε
   και τα υπόλοιπα θα περίμεναν δεύτερη αποθήκευση. */
.svise-grammi{display:inline-flex; align-items:center; cursor:pointer}
.svise-grammi input{position:absolute; opacity:0; width:0; height:0}
.svise-grammi span{
  display:grid; place-items:center; width:28px; height:28px; border-radius:7px;
  border:1px solid var(--line); color:var(--ink-4); font-size:14px; background:var(--card);
}
.svise-grammi:hover span{border-color:var(--warn); color:var(--warn-deep)}
.svise-grammi input:checked + span{
  background:var(--warn-wash); border-color:var(--warn); color:var(--warn-deep); font-weight:600;
}
.svise-grammi input:focus-visible + span{outline:2px solid var(--per, var(--brand)); outline-offset:2px}

/* ══════════════════════════════════════════════════════════════════════
   ΔΙΟΡΘΩΣΗ ΧΩΡΙΣ ΝΑ ΑΛΛΑΖΕΙ Η ΔΙΑΤΑΞΗ (`R301`)

   Δική του εντολή, 2026-11-05, αφού δύο προσπάθειες την άλλαξαν:
   *«όπως κάναμε και τα δελτία διακινήσεων, θέλω πάνω στην υπάρχουσα
   σελίδα **χωρίς να αλλάζει ούτε διάταξη**, και στο συρτάρι να μην
   αλλάζει διάταξη»*.

   Κάθε τιμή κουβαλά και την ανάγνωσή της και το πεδίο της, στο **ίδιο
   κελί**. Η διόρθωση αλλάζει μόνο ποιο από τα δύο φαίνεται — κανένα
   στοιχείο δεν μετακινείται.
   ══════════════════════════════════════════════════════════════════════ */
.grafi{display:none}
.se-grafi .opsi{display:none}
.se-grafi .grafi{
  display:block; font:inherit; font-size:15.5px; width:100%; max-width:260px;
  padding:6px 9px; border:1px solid var(--line); border-radius:7px;
  background:var(--card); color:var(--ink);
}
.se-grafi .grafi:focus{outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand))}
.se-grafi textarea.grafi{max-width:none; resize:vertical}

/* ⚠️ ΟΙ ΚΕΝΕΣ ΓΡΑΜΜΕΣ ΕΜΦΑΝΙΖΟΝΤΑΙ ΜΟΝΟ ΣΕ ΔΙΟΡΘΩΣΗ. Στην ανάγνωση
   κρύβονται, όπως σήμερα· αλλιώς δεν θα μπορούσε να συμπληρώσει κάτι
   που δεν φαίνεται. Είναι η **μόνη** αλλαγή διάταξης, και είναι
   αναπόφευκτη. */
dl .keno-grafis{display:none}
/* ⚠️ ΟΧΙ `display:block` — ΤΟ `display` ΕΙΝΑΙ Η ΙΔΙΑ Η ΔΙΑΤΑΞΗ ΤΗΣ ΓΡΑΜΜΗΣ.

   Η γραμμή της **καρτέλας** είναι `grid` (ετικέτα 150px | τιμή) και του
   **συρταριού** `flex` (ετικέτα 116px, τιμή δίπλα). Με `block` η άδεια
   γραμμή έχανε τη διάταξή της: η ετικέτα πήγαινε **πάνω** από το πεδίο
   και το πεδίο στένευε, ενώ δίπλα της οι γεμάτες γραμμές ήταν σωστές.

   ⚠️ ΕΣΠΑΓΕ ΜΟΝΟ Η ΚΑΡΤΕΛΑ, ΚΑΙ ΕΙΝΑΙ ΑΡΙΘΜΗΤΙΚΟ: `dl.pairs > div`
      έχει βαρύτητα (0,1,2) και έχανε από το (0,2,1) του παλιού κανόνα·
      το `.syrtari dl.zevgi > div` έχει (0,2,2) και κέρδιζε. Το συρτάρι
      γλίτωσε κατά τύχη, όχι επειδή ήταν σωστό.

   Φάνηκε στη γούνα 09186 όταν άνοιξαν γιακάς και τρόπος εργασίας
   (`R305`) — αλλά υπήρχε από την πρώτη μέρα της διόρθωσης (`R301`),
   στην άδεια γραμμή του χρώματος. */
.se-grafi dl.pairs > .keno-grafis{display:grid}
.se-grafi dl.zevgi > .keno-grafis{display:flex}

/* ⭐ Η ΤΙΜΗ: ΠΟΣΟ + ΝΟΜΙΣΜΑ, ΣΤΗ ΘΕΣΗ ΤΟΥ ΜΕΓΑΛΟΥ ΑΡΙΘΜΟΥ (`R311`).

   Δύο πεδία αντί για ένα, γιατί το νόμισμα είναι αληθινή επιλογή: στο
   ιστορικό υπάρχουν 15.624 δολάρια και 9.171 ευρώ. Το `select` κρατιέται
   **στενό** — δύο χαρακτήρες — ώστε να μην κλέβει χώρο από το ποσό. */
.timi-grafi{display:none}
.se-grafi .timi-opsi{display:none}
.se-grafi .timi-grafi{display:flex; gap:8px; align-items:center; margin:0 0 14px}
.se-grafi dd.timi-zevgos .timi-grafi{margin:0}
.timi-grafi input{
  font:inherit; font-size:15.5px; width:100%; max-width:150px;
  padding:6px 9px; border:1px solid var(--line); border-radius:7px;
  background:var(--card); color:var(--ink);
  text-align:right; font-variant-numeric:tabular-nums;
}
.timi-grafi select{
  font:inherit; font-size:15.5px; padding:6px 8px; cursor:pointer;
  border:1px solid var(--line); border-radius:7px;
  background:var(--card); color:var(--ink);
}
.timi-grafi input:focus, .timi-grafi select:focus{
  outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand));
}

/* ⭐ ΟΙ ΠΑΡΑΤΗΡΗΣΕΙΣ ΟΤΑΝ ΛΕΙΠΟΥΝ (`R307`). Ίδια λογική με τις κενές
   γραμμές πιο πάνω: *«οι παρατηρήσεις σχόλια που είναι αν θέλω να
   βάλω;;»* — σε άδεια γούνα δεν φαινόταν τίποτα να συμπληρωθεί. */
p.note.keno-grafis{display:none}
.se-grafi p.note.keno-grafis{display:block}
/* Το σημείωμα κρατά την όψη του· μόνο το πεδίο μέσα του γεμίζει. */
.se-grafi p.note .grafi{width:100%; max-width:none}

/* ⭐ ΤΑ ΚΟΥΜΠΙΑ ΤΗΣ ΔΙΟΡΘΩΣΗΣ, ΑΝΑΜΕΣΑ ΣΤΟΥΣ ΠΙΝΑΚΕΣ ΚΑΙ ΤΙΣ ΚΙΝΗΣΕΙΣ
   (`R308`). Δική του εντολή: *«βάλε το κουμπί κάπου όμορφα στοιχισμένα
   ανάμεσα στους πίνακες και τις κινήσεις … για να είναι κοντά σε ό,τι
   διορθώνεται»*. Δεξιά στοίχιση: είναι η ενέργεια που κλείνει το μπλοκ
   από πάνω, όχι τίτλος αυτού που ακολουθεί. */
.koumpia-grafis{justify-content:flex-end; margin:-4px 0 18px}

/* ⚠️ ΣΕ ΔΙΟΡΘΩΣΗ, Η ΚΑΡΤΑ ΦΕΥΓΕΙ. Είναι **σύνδεσμος που φεύγει από τη
   σελίδα**: πατημένος στη μέση μιας διόρθωσης θα έχανε ό,τι γράφτηκε.
   Οι μόνες ενέργειες εκεί είναι «Αποθήκευση» και «Ακύρωση» (`R317`). */
.se-grafi [data-grafi-kryfto]{display:none}

/* ⭐ ΤΟ ΜΗΝΥΜΑ ΚΟΥΒΑΛΑΕΙ ΤΗΝ ΕΠΟΜΕΝΗ ΚΙΝΗΣΗ (`R317`). Μόλις γεννηθεί η
   γούνα, το επόμενο είναι να τυπωθεί η κάρτα — το κουμπί έρχεται μαζί
   με την επιβεβαίωση και φεύγει μαζί της. */
.minima-me-koumpia{display:flex; align-items:center; gap:14px; flex-wrap:wrap}
.minima-me-koumpia > span:first-child{flex:1 1 auto; min-width:0}
.minima-me-koumpia .koumpia{flex:0 0 auto; margin:0}

/* Η γραμμή της νέας ανάλωσης και το «✕»: μέσα στον ίδιο πίνακα. */
tr.grammi-grafis{display:none}
.se-grafi tr.grammi-grafis{display:table-row}
tr.grammi-grafis input{
  font:inherit; font-size:15px; width:100%; padding:6px 9px;
  border:1px solid var(--line); border-radius:7px; background:var(--card); color:var(--ink);
}
tr.grammi-grafis input[type="number"]{text-align:right; font-variant-numeric:tabular-nums}
button.svise-grammi{
  display:none; font:inherit; font-size:13px; line-height:1; cursor:pointer;
  width:26px; height:26px; margin-left:8px; border-radius:6px;
  border:1px solid var(--line); background:var(--card); color:var(--ink-4);
}
.se-grafi button.svise-grammi{display:inline-grid; place-items:center}
button.svise-grammi:hover{border-color:var(--warn); color:var(--warn-deep)}
/* ⚠️ ΤΟ `hidden` ΧΑΝΕΙ ΑΠΟ ΤΟ `.btn`. Το `[hidden]` του φυλλομετρητή
   είναι `display:none` με **χαμηλή** προτεραιότητα· το `.btn` ορίζει
   `display:inline-flex` και κερδίζει. Αποτέλεσμα: φαινόταν ταυτόχρονα
   «Διόρθωση» ΚΑΙ «Αποθήκευση». */
.btn[hidden], button[hidden]{display:none !important}

/* ⭐ ΤΑ ΒΕΛΑΚΙΑ ΤΩΝ ΑΡΙΘΜΗΤΙΚΩΝ ΠΕΔΙΩΝ ΦΕΥΓΟΥΝ (`R304`).

   Ο Νικόλας, 2026-11-05, με φωτογραφία: *«κουμπί σπασμένο»*. Δεν ήταν
   κουμπί — ήταν τα **βελάκια** που ζωγραφίζει ο φυλλομετρητής μέσα στο
   `input[type=number]`. Στον Safari βγαίνουν δίπλα-δίπλα («‹ ›») και
   τρώνε σχεδόν όλο το πλάτος του μικρού πεδίου «Δέρματα», οπότε
   μοιάζουν με σπασμένο χειριστήριο.

   ⚠️ ΔΕΝ ΕΙΝΑΙ ΚΑΛΛΩΠΙΣΜΟΣ. Κάθε φυλλομετρητής τα ζωγραφίζει αλλιώς —
      ο Chrome κάθετα και μόνο στο hover, ο Safari οριζόντια και πάντα.
      Ό,τι μετρήθηκε στον έναν δεν ισχύει στον άλλον. Φεύγοντας, το
      πεδίο δείχνει το ίδιο παντού.

   ⚠️ Η ΠΛΗΚΤΡΟΛΟΓΗΣΗ ΔΕΝ ΧΑΝΕΤΑΙ: το `type=number` μένει, άρα στο
      κινητό ανοίγει αριθμητικό πληκτρολόγιο και ο έλεγχος τιμών
      δουλεύει. Φεύγουν **μόνο** τα βελάκια, που δεν τα πάτησε ποτέ
      κανείς σε πεδίο δερμάτων. */
input[type="number"]{appearance:textfield; -moz-appearance:textfield}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}

/* ══════════════════════════════════════════════════════════════════════
   Η ΚΑΡΤΑ ΠΑΡΑΓΩΓΗΣ — ΧΑΡΤΙ, ΟΧΙ ΟΘΟΝΗ (`R254`, `R316`)

   Εγκεκριμένη από τον Νικόλα με preview: *«οκ σε όλα, με 2
   παρατηρήσεις»*, και το δείγμα της 2026-11-06.

   ⚠️ ΟΙ ΜΟΝΑΔΕΣ ΕΙΝΑΙ ΧΙΛΙΟΣΤΑ, ΚΑΙ ΕΙΝΑΙ ΣΚΟΠΙΜΟ. Η κάρτα είναι
      **10,5 × 21 εκ** στο χαρτί· με pixel θα έβγαινε άλλο μέγεθος σε
      κάθε εκτυπωτή. Τα `mm` τυπώνονται ακριβώς.

   ⚠️ ΔΥΟ ΚΑΡΤΕΣ ΑΝΑ Α4. 105mm × 2 = 210mm = ακριβώς το πλάτος του Α4.
   ══════════════════════════════════════════════════════════════════════ */
.fylo-karton{display:flex; flex-wrap:wrap; gap:0; max-width:210mm; margin:0 auto}

.karta{
  width:105mm; min-height:210mm; background:var(--karta-charti); color:var(--karta-melani);
  padding:7mm 6mm 5mm; display:flex; flex-direction:column;
  border:1px solid var(--line);
}
.karta *{box-sizing:border-box}

.k-kefalida{display:flex; gap:4mm; align-items:flex-start;
  border-bottom:1.6pt solid var(--karta-melani); padding-bottom:3mm}
.k-tautotita{flex:1; min-width:0}
.k-ser{font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:30pt; font-weight:600; line-height:1; letter-spacing:-.01em}
.k-ti{font-size:9pt; line-height:1.3; margin-top:1.5mm; font-weight:500}
.k-mont{font-size:8pt; color:var(--karta-gri); margin-top:1mm}
.k-mont b{color:var(--karta-melani)}
.k-qr{flex:0 0 auto; text-align:center}
.k-qr svg{display:block; width:17mm; height:17mm}
.k-qr-leg{font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:6pt; color:var(--karta-gri-2); margin-top:.8mm}

/* ⭐ Η ΟΔΗΓΙΑ ΣΕ ΜΑΥΡΟ ΠΛΑΙΣΙΟ — δική του διόρθωση. Είναι ό,τι **χαλάει
   το ρούχο** αν αγνοηθεί· δεν μπορεί να έχει το ίδιο μέγεθος με τα
   υπόλοιπα. Υπάρχει σε 16.326 γούνες. */
.k-odigia{
  margin:3mm 0; padding:2.2mm 3mm; border:1.6pt solid var(--karta-melani); border-radius:1mm;
  font-size:9.5pt; font-weight:700; letter-spacing:.02em; line-height:1.25; text-align:center;
}

.k-prodia{display:grid; grid-template-columns:1fr 1fr; gap:0 4mm; margin:0 0 2.5mm}
.k-prodia > div{display:flex; justify-content:space-between; gap:2mm;
  padding:1.1mm 0; border-bottom:.4pt solid var(--karta-grammi); font-size:8.5pt}
.k-prodia dt{color:var(--karta-gri)}
.k-prodia dd{margin:0; font-weight:600; font-family:var(--mono); font-variant-numeric:tabular-nums}

.k-dermata{font-size:8.5pt; padding:1.8mm 0 2.5mm; border-bottom:1.6pt solid var(--karta-melani)}
.k-dermata .et{font-size:7pt; letter-spacing:.09em; text-transform:uppercase;
  color:var(--karta-gri); margin-right:2mm}

/* ⭐ ΤΑ ΚΟΥΠΟΝΙΑ ΕΙΝΑΙ ΑΝΑΠΟΔΑ, ΚΑΙ ΕΙΝΑΙ ΔΙΚΗ ΤΟΥ ΕΞΗΓΗΣΗ:
   *«για να μπορεί ο κάθε τεχνίτης να κόβει το απόκομμα και να πηγαίνει
   στον επόμενο η κάρτα»*. Κόβεται πάντα το κάτω-κάτω. */
.k-kouponia{flex:1; display:flex; flex-direction:column; margin-top:1.5mm}
.kouponi{
  flex:1; display:grid; grid-template-columns:7mm 1fr auto 20mm; gap:0 2.5mm;
  align-items:center; padding:1.5mm 0; border-bottom:.6pt dashed var(--karta-gri-2);
}
.kouponi:last-child{border-bottom:none}
/* Το CONTROL είναι η πύλη προς τα έτοιμα — ξεχωρίζει χωρίς να φωνάζει. */
.kouponi.teliko{background:var(--karta-skia); margin:0 -6mm; padding-left:6mm; padding-right:6mm}
.kouponi .nn{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:13pt; font-weight:700;
  color:var(--karta-gri-2); text-align:center}
.kouponi .onoma{min-width:0}
.kouponi .onoma b{display:block; font-size:9.5pt; font-weight:700; letter-spacing:.01em; line-height:1.15}
/* ⚠️ Ο ΣΕΙΡΙΑΚΟΣ ΚΑΙ ΣΤΟ ΚΟΥΠΟΝΙ: κόβεται και μένει στον πάγκο. Χωρίς
   αυτόν, ένα πεσμένο κουπόνι δεν λέει τίποτα. */
.kouponi .onoma .ser{font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:6.5pt; color:var(--karta-gri-2)}
.kouponi .qr svg{display:block; width:13mm; height:13mm}
/* Γεμίζουν μόνα τους από τη σάρωση· τυπώνονται κενά για την ώρα που
   κάτι δεν σκανάρει και γράφεται με στυλό. */
.kouponi .ypo{display:flex; flex-direction:column; gap:3.4mm; font-size:6pt; color:var(--karta-gri-2)}
.kouponi .ypo span{border-bottom:.4pt solid var(--karta-gri-2); padding-bottom:.3mm}
.kouponi .egine{font-size:7pt; color:var(--karta-melani); font-weight:600}

/* Η μπάρα πάνω από την κάρτα — μόνο στην οθόνη. */
.karta-mpara{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:0 0 18px}

@media print{
  @page{ size:A4; margin:0 }
  body{background:var(--karta-charti)}
  .raga, .karta-mpara, .syrtari, .skiasi{display:none !important}
  .shell, main{display:block !important; padding:0 !important; margin:0 !important; max-width:none !important}
  .karta{border:none; page-break-inside:avoid}
}
/* ══════════════════════════════════════════════════════════════════════
   Η ΑΠΟΓΡΑΦΗ ΜΕ ΣΑΡΩΣΗ (`R322`)

   ⚠️ ΧΤΙΣΜΕΝΗ ΓΙΑ ΚΙΝΗΤΟ ΠΡΩΤΑ. Ο άνθρωπος στέκεται μπροστά σε ράφι με
      το ένα χέρι πιασμένο. Τα κουμπιά είναι μεγάλα, η απάντηση είναι
      χρώμα **και λέξη** (`R316`), και τίποτα δεν θέλει διάβασμα.
   ══════════════════════════════════════════════════════════════════════ */
.apografi-kefalida{display:flex; gap:18px; align-items:flex-start;
  justify-content:space-between; flex-wrap:wrap; margin:0 0 6px}
.apografi-kefalida h1{margin:0}
.apografi-proodos{text-align:right; flex:0 0 auto}
.apografi-proodos .poso{display:block; font-family:var(--mono);
  font-variant-numeric:tabular-nums; font-size:26px; font-weight:600; line-height:1.1}
.apografi-proodos .poso b{color:var(--brand)}
.apografi-proodos .sub{font-size:var(--fs-sm)}

.apografi-nea{display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap}
.apografi-nea .pedio{flex:1 1 240px; margin:0}

/* ── Η κάμερα ──────────────────────────────────────────────────── */
.sar-plaisio{position:relative; border-radius:var(--r); overflow:hidden;
  background:var(--ink); aspect-ratio:4/3; display:grid; place-items:center}
.sar-plaisio video{width:100%; height:100%; object-fit:cover; display:block}
/* ⚠️ Ο στόχος είναι **οδηγία, όχι διακόσμηση**: χωρίς αυτόν ο άνθρωπος
   δεν ξέρει πού να κρατήσει την ετικέτα και σαρώνει στον αέρα. */
.sar-stochos{position:absolute; width:66%; aspect-ratio:1.6; border-radius:var(--r);
  border:3px solid var(--card); box-shadow:0 0 0 2000px rgba(28,25,22,.45); pointer-events:none}
.sarosi-karta:not(.sar-anoixti) .sar-plaisio{aspect-ratio:16/7}
.sarosi-karta:not(.sar-anoixti) .sar-stochos{display:none}

.sar-katastasi{margin:12px 0; font-size:var(--fs); color:var(--ink-2)}
.sar-katastasi.lathos{color:var(--alarm-deep); font-weight:600}

.sar-cheiro{margin-top:16px; padding-top:14px; border-top:1px solid var(--line-soft)}
.sar-cheiro label{display:block; font-size:var(--fs-lbl); font-weight:600;
  letter-spacing:.08em; text-transform:uppercase; color:var(--ink-4); margin-bottom:5px}
.sar-cheiro-grammi{display:flex; gap:9px}
.sar-cheiro-grammi input{flex:1 1 auto; min-width:0; font:inherit; font-size:var(--fs-val);
  padding:9px 11px; border:1px solid var(--line); border-radius:var(--r);
  background:var(--card); color:var(--ink); font-variant-numeric:tabular-nums}
.sar-cheiro-grammi input:focus{outline:2px solid var(--per, var(--brand)); outline-offset:1px;
  border-color:var(--per, var(--brand))}

/* ── Η απάντηση: χρώμα ΚΑΙ λέξη (`R316`) ───────────────────────── */
.sar-apotelesma{margin-top:14px; padding:13px 15px; border-radius:var(--r);
  background:var(--ok-wash); border:1px solid var(--ok-line)}
.sar-apotelesma .kod{font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:21px; font-weight:600; color:var(--ok-deep)}
.sar-apotelesma .ti{font-size:var(--fs-sm); color:var(--ink-2); margin-top:2px}
.sar-apotelesma .egine{font-size:var(--fs); font-weight:600; color:var(--ok-deep); margin-top:6px}
.sar-apotelesma.prosoxi{background:var(--warn-wash); border-color:var(--warn-line)}
.sar-apotelesma.prosoxi .kod, .sar-apotelesma.prosoxi .egine{color:var(--warn-deep)}
.sar-apotelesma.lathos{background:var(--alarm-wash); border-color:var(--alarm-line)}
.sar-apotelesma.lathos .kod, .sar-apotelesma.lathos .egine{color:var(--alarm-deep)}

.apografi-grammes td.nn{color:var(--ink-4); font-family:var(--mono);
  font-variant-numeric:tabular-nums; width:34px}

/* ── Η σύνοψη των διαφορών ─────────────────────────────────────── */
.apografi-synopsi{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:12px; margin:0 0 18px}
.synopsi-kouti{padding:14px 16px; border-radius:var(--r); border:1px solid var(--line);
  background:var(--card)}
.synopsi-kouti .et{display:block; font-size:var(--fs-lbl); font-weight:600;
  letter-spacing:.08em; text-transform:uppercase}
.synopsi-kouti .poso{display:block; font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-size:30px; font-weight:600; line-height:1.15; margin-top:3px}
.synopsi-kouti.ok{background:var(--ok-wash); border-color:var(--ok-line)}
.synopsi-kouti.ok .et, .synopsi-kouti.ok .poso{color:var(--ok-deep)}
.synopsi-kouti.warn{background:var(--warn-wash); border-color:var(--warn-line)}
.synopsi-kouti.warn .et, .synopsi-kouti.warn .poso{color:var(--warn-deep)}
.synopsi-kouti.alarm{background:var(--alarm-wash); border-color:var(--alarm-line)}
.synopsi-kouti.alarm .et, .synopsi-kouti.alarm .poso{color:var(--alarm-deep)}

.diafora-aitia.leipei{color:var(--alarm-deep)}
.diafora-aitia.perisseve{color:var(--warn-deep)}
tr.ypopto{background:var(--warn-wash)}
