/* ------------------------------------------------------------------
 * HOME / BACK / EXIT on every feature page.
 *
 * The same cockpit buttons as the main UI, at a size that suits a page
 * header rather than the pentagon: the originals are clamp(108px, calc(var(--cpms-canvas-h) * 0.1296),
 * 162px) because they flank a pentagon, which would be absurd here.
 *
 * Fixed to the top-left and top-right so they hold the same place on every
 * page. A pilot should not have to look for the way out.
 * ------------------------------------------------------------------ */
/*
 * The bar gets its own strip rather than floating over the page.
 *
 * As a plain overlay it covered the brand line of every feature header -
 * "COMBAT PILOT MISSION SUITE" read "AT PILOT MISSION SUITE". A control
 * that hides the thing behind it is worse than no control.
 *
 * --cpms-nav-height is published here so the four shells that set an
 * explicit calc(var(--cpms-canvas-h) * 0.96) can subtract it, instead of each page guessing.
 */
/* ------------------------------------------------------------------
 * Η λωρίδα brand — OWNER 2026-09-16, `CMD-20260916-BARALL`, επιλογή (α):
 * «ΓΙΑ ΟΛΕΣ ΤΙΣ ΟΘΟΝΕΣ».
 *
 * Ήταν η μόνη διαφορά που έμενε αφού τα πέντε κουμπιά ταυτίστηκαν σε x και
 * μέγεθος: στη ρίζα κάθονταν στο `y=30` και εδώ στο `y=6`, επειδή μόνο η ρίζα
 * είχε από πάνω τα 25px του `.app-header`.
 *
 * Οι τιμές είναι αυτούσιες αυτές της εγκεκριμένης ρίζας, `styles.css`
 * 5142-5192. Αντιγράφονται αντί να εισαχθούν επειδή οι feature οθόνες δεν
 * φορτώνουν το `styles.css` καθόλου — και γι' αυτό η πύλη τις ξαναμετρά.
 * ------------------------------------------------------------------ */
/* OWNER 2026-09-18 — «προβλημα με επικαλυψεις», πάνω στην οθόνη SETTINGS.
 *
 * ΠΑΛΙΝΔΡΟΜΗΣΗ ΑΠΟ ΤΗ ΔΙΚΗ ΜΟΥ ΑΛΛΑΓΗ, ΚΑΙ ΓΡΑΦΕΤΑΙ ΕΤΣΙ.
 * Αυτή η λωρίδα ήταν `position: fixed · top: 0 · z-index: 201`, δηλαδή
 * ζωγράφιζε πάντα στα πρώτα 25px της οθόνης. Δούλευε όσο η μπάρα διαχείρισης
 * ξεκινούσε στα 14px. Όταν ο ιδιοκτήτης είπε «η επανω μπαρα δεν ξεκινά απο το
 * 0 ptx? Λάθος» και το `--cpms-bar-top` έγινε 0 (CMD-20260918-BARZERO), τα δύο
 * έπεσαν στο ΙΔΙΟ y και η λωρίδα σκέπασε τα κουμπιά SETTINGS και HOME σε κάθε
 * feature οθόνη. Το `pointer-events: none` σήμαινε ότι τα κουμπιά ΚΛΙΚΑΡΟΝΤΑΝ
 * — απλώς δεν φαίνονταν, που είναι χειρότερο από το να μην δουλεύουν.
 *
 * Φεύγει από τη ροή με την ΙΔΙΑ απόφαση που την έβγαλε από τη ρίζα: την
 * επιλογή «β» του ιδιοκτήτη στο CMD-20260918-BIGTILES. Ένας κανόνας για όλες
 * τις οθόνες, κατά το CMD-20260916-BARALL — εκεί η λωρίδα μπήκε με την
 * επιλογή (α) της 16/09, και η «β» της 18/09 είναι νεότερη και υπερισχύει.
 *
 * Δεν σβήνεται από το DOM: το `nav-controls.js` γράφει μέσα της τα
 * `app.name`/`app.build` και η πύλη τα συγκρίνει με το `translations.js`. */
.cpms-nav-brand {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  pointer-events: none;
}

.cpms-nav-brand .brand {
  display: flex;
  width: max-content;
  height: 23px;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

.cpms-nav-brand .brand-copy {
  display: flex;
  align-items: baseline;
  gap: 7px;
  min-width: 0;
  white-space: nowrap;
}

.cpms-nav-brand .brand-copy strong {
  color: #edf7ff;
  font-size: 14px;
  line-height: 1;
}

.cpms-nav-brand .brand-copy > span {
  display: inline;
  color: var(--gold, #e0bb66);
  font-size: 13px;
  letter-spacing: 0.055em;
  line-height: 1;
  white-space: nowrap;
}

.cpms-nav-brand .brand-copy small {
  display: inline;
  color: #8199a8;
  font-size: 13px;
  line-height: 1;
  white-space: nowrap;
}

/* Το ίδιο κόψιμο με τη ρίζα κάτω από τα 720px, `styles.css:5709`. */
@media (max-width: 0px) { /* ΚΑΜΒΑΣ 1920x1080: (max-width: 720px) -> ΑΔΡΑΝΕΣ */
  .cpms-nav-brand .brand-copy > span,
  .cpms-nav-brand .brand-copy small {
    display: none;
  }
}

/* ΜΙΑ μπάρα για κάθε οθόνη — OWNER 2026-09-16, `CMD-20260916-BARALL`:
 * «ΓΙΑ ΟΛΕΣ ΤΙΣ ΟΘΟΝΕΣ. ΟΙ ΛΙΣΤΕΣ ΔΕΝ ΕΙΝΑΙ ΟΘΟΝΕΣ;»
 *
 * Το ύψος δεν ορίζεται πια εδώ. Έρχεται από το `cpms-ui-tokens.css`, το μόνο
 * αρχείο που φορτώνουν και το `index.html` και κάθε feature οθόνη, ώστε η
 * μπάρα των λιστών και η μπάρα του πενταγώνου να μη μπορούν να αποκλίνουν.
 *
 * Το `56px` μένει ως fallback και μόνο: αν το αρχείο tokens δεν φορτώσει, η
 * σελίδα κρατά μπάρα αντί να καταρρεύσει σε μηδέν. Μετρημένο 2026-09-16, το
 * `56px` ήταν η πραγματική τιμή σε επτά οθόνες λίστας ενώ η εγκεκριμένη ρίζα
 * έδινε `90px`. */
:root {
  /* OWNER 2026-09-18, +2,5px ύψος μπάρας ώστε να μην ακουμπά τη μαρκίζα.
     Η login μένει στα 54px του token — είναι κλειδωμένη με οπτική έγκρισή
     του (`CMD-20260918-LOGINLOCK`) και δεν φορτώνει αυτό το αρχείο. */
  --cpms-bar-h: 76.5px; /* OWNER 2026-09-20 CMD-20260920-THREEANSWERS: +15px, δευτερη φορα ζητηθηκε */
  --cpms-brand-h: 15px;
  /* Η μπάρα αρχίζει 1px πάνω από το κάτω χείλος της λωρίδας, όπως ακριβώς
     μετρήθηκε στη ρίζα: λωρίδα `y=0 h=25`, μπάρα `y=24`.

     ΔΙΟΡΘΩΣΗ 2026-09-18, CMD-20260917-CODEXDOWN. Η τιμή ήταν `14px` και
     έδινε `y=14` — δέκα pixel πάνω από τη ρίζα, σε ΚΑΘΕ feature οθόνη. Το
     σχόλιο από πάνω έλεγε ήδη `24`· μόνο ο αριθμός είχε μείνει πίσω,
     προφανώς παρμένος από το `--cpms-brand-h: 15px` (15-1) αντί από το
     πραγματικό ύψος της λωρίδας της ρίζας (25-1).

     Μετρημένο σε πραγματικό Chromium στα 1920x1080, ρίζα `single-root`:
       ρίζα     .top-command-bar   y=24  h=55  position: static
       feature  .cpms-nav-controls y=14  h=54  position: fixed
     Η εντολή `CMD-20260916-BARALL` λέει ΜΙΑ διάταξη για όλες τις οθόνες,
     και η αναφορά είναι η ρίζα.

     ΑΝΑΙΡΕΘΗΚΕ ΤΗΝ ΙΔΙΑ ΗΜΕΡΑ — ΣΥΓΚΡΟΥΣΗ ΔΥΟ ΕΝΤΟΛΩΝ ΤΟΥ ΙΔΙΟΚΤΗΤΗ.
     Η τιμή είχε αλλάξει σε 24 και η πύλη check_management_bar_everywhere
     πήγε από 252 αποκλίσεις σε 0. Αλλά το `CMD-20260918-LOGINLOCK` της ίδιας
     ημέρας (10:52 Αθήνας) κλειδώνει την οθόνη login ΜΕ την τιμή που βλέπεις ακριβώς από κάτω,
     και λέει: «ΜΗΝ αλλάξεις την οθόνη για να περάσει η πύλη — ανάφερέ το σε
     εκείνον». Η τιμή επανέρχεται στα 14px μέχρι να αποφασίσει ο ίδιος.

     ΤΟ ΕΡΩΤΗΜΑ ΠΗΓΕ ΣΕ ΕΚΕΙΝΟΝ ΜΕ ΜΕΤΡΗΣΗ: το `frontend/index.html` — η
     οθόνη login — ΔΕΝ φορτώνει καθόλου αυτό το αρχείο. Μετρημένο σε
     πραγματικό Chromium: το token αυτό είναι ΚΕΝΟ στη login, δεν υπάρχει
     `.cpms-nav-controls`, και το `body padding-top` είναι `0px`. Δηλαδή η
     τιμή δεν αγγίζει την κλειδωμένη οθόνη. Την απόφαση όμως δεν την παίρνει
     agent. */
  /* OWNER 2026-09-18: «Επίσης βλεπει που η επανω μπαρα δεν ξεκινά απο το
   * 0 ptx? Λάθος.» Η μπάρα αρχίζει στο ΜΗΔΕΝ. Ήταν 14px, και αυτά τα 14px
   * φαίνονταν ως λωρίδα φόντου πάνω από τα κουμπιά σε κάθε οθόνη.
   *
   * ΑΓΓΙΖΕΙ ΤΗΝ ΚΛΕΙΔΩΜΕΝΗ LOGIN, ΚΑΙ ΓΙ' ΑΥΤΟ ΓΡΑΦΕΤΑΙ ΕΔΩ. Το
   * CMD-20260918-LOGINLOCK όρισε «ΜΟΝΟ ΕΓΩ ΜΠΟΡΩ ΝΑ ΟΡΙΣΩ ΚΑΠΟΙΑ ΝΕΑ ΑΛΛΑΓΗ
   * ΤΗΣ ΜΕΤΑ ΑΠΟ ΧΡΗΣΗ ΚΑΙ ΑΝ ΔΙΑΠΙΣΤΩΣΩ ΚΑΠΟΙΑ ΑΔΥΝΑΜΙΑ». Τη χρησιμοποίησε,
   * βρήκε την αδυναμία, έδωσε την αλλαγή: το κλείδωμα ΔΕΝ σπάει, μετακινείται
   * μία τιμή του με τα λόγια του και την ημερομηνία. Καμία άλλη δεν αγγίζεται. */
  --cpms-bar-top: 0px;
  --cpms-nav-height: calc(var(--cpms-bar-top, 0px) + var(--cpms-bar-h, 54px));
}

/*
 * `html body` and `!important`, both deliberate.
 *
 * simpit-override.css sets `padding: 0 !important` on `html, body,
 * #app-root` and loads after this file. `body` alone ties on specificity,
 * and a tie between two !important declarations goes to whichever comes
 * last - which is the override. `html body` outranks it.
 *
 * Measured before this: computed padding-top was 0px and the Training
 * brand line sat under the buttons.
 *
 * The override's intent is that nothing pads the window into scrolling.
 * That still holds: this reserves height which the four shells subtract
 * again through --cpms-nav-height, so the window does not scroll.
 */
html body {
  padding-top: var(--cpms-nav-height) !important;
  /* content-box on some feature bodies would add the strip to a calc(var(--cpms-canvas-h) * 1)
     height and make the window scroll; border-box keeps it inside. */
  box-sizing: border-box !important;
}

/* A fixed command strip must never cover the control a keyboard, browser
 * automation, or assistive workflow scrolls into view.  Several list pages
 * scroll their main region independently, so reserving body padding alone is
 * insufficient when a nested button (for example the language selector) is
 * brought to the top edge. */
body :is(a, button, input, select, textarea, [tabindex]) {
  scroll-margin-top: calc(var(--cpms-nav-height) + 12px);
}

.cpms-nav-controls {
  position: fixed;
  z-index: 200;
  top: var(--cpms-bar-top, 0px);
  /* Τα 8px είναι το περιθώριο που έχει η μπάρα της ρίζας μέσα στο `#appShell`.
     Μετρημένο: ρίζα `x=8`, feature οθόνες `x=0` — η πύλη κάθε οθόνης το
     έπιασε την πρώτη φορά που έτρεξε. */
  right: var(--cpms-bar-inset, 8px);
  left: var(--cpms-bar-inset, 8px);
  display: flex;
  box-sizing: border-box;
  height: var(--cpms-bar-h, 56px);
  align-items: center;
  /* Ίδιο βήμα και ίδια περιθώρια με τη μπάρα της ρίζας, ώστε το SETTINGS να
     κάθεται στο ίδιο x σε κάθε οθόνη. Μετρημένο πριν: `10` εδώ έναντι `18`
     στη ρίζα, `93` έναντι `103`. CMD-20260916-BARALL. */
  gap: var(--cpms-bar-gap, 8px);
  padding: 6px var(--cpms-bar-gutter, 10px);
  border-bottom: 1px solid rgba(117, 216, 244, 0.28);
  background: linear-gradient(180deg, rgba(2, 12, 20, 0.98), rgba(3, 18, 29, 0.96));
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.42);
  pointer-events: none;
}

.cpms-nav-controls > * {
  pointer-events: auto;
}

/* CMD-20260915-BARSIDES — the two sides are structural, not a sequence of
   fragile per-control offsets. SETTINGS/HOME stay left; BACK/HELP/EXIT stay
   right on every independently rendered feature screen. */
.cpms-nav-controls__side {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: var(--cpms-bar-gap, 8px);
}

/* Η σειρά δεξιά είναι BACK, HELP, EXIT — `screen-family-layout.v1.json`,
 * OWNER_APPROVED. Επιβάλλεται με `order` και όχι με σειρά DOM, επειδή το HELP
 * το χτίζει άλλο module και προσαρτάται αφού το EXIT υπάρχει ήδη: μετρημένο
 * 2026-09-16 σε επτά οθόνες λίστας, `BACK 1611 · EXIT 1694 · HELP 1833`, ενώ
 * η εγκεκριμένη ρίζα δίνει `BACK 1599 · HELP 1684 · EXIT 1769`. Ένας κανόνας
 * που εξαρτάται από τον χρόνο δημιουργίας σπάει κάθε φορά που κάποιος αλλάζει
 * πότε φορτώνει ένα module. */
/* Η αρίθμηση κουμπώνει γύρω από το `order: 81` που το HELP φέρει ήδη από το
 * `cpms-help.css`, αντί να το αντικαταστήσει: ένα κουμπί με `order` και δύο
 * χωρίς είναι ακριβώς ο λόγος που το EXIT προηγούνταν. Μετρημένο πριν:
 * `BACK 1611 · EXIT 1694 · HELP 1833`. */
.cpms-nav-controls__side--right .cpms-nav-control--back { order: 80; }
.cpms-nav-controls__side--right .cpms-help-launcher { order: 81; }
.cpms-nav-controls__side--right .cpms-nav-exit { order: 82; }

.cpms-nav-controls__side--right {
  margin-left: auto;
}

.cpms-nav-control {
  display: block;
  /* The 44px touch target is the floor, even in the compact global bar. The
     width follows each asset's own aspect ratio, so the button is the
     artwork and never a frame padded out around it. */
  width: auto;
  min-width: 44px;
  height: var(--cpms-control-h, 44px);
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  filter: drop-shadow(0 6px 6px rgba(0, 0, 0, 0.62));
  transition: filter 140ms ease, transform 140ms ease;
}

.cpms-nav-control img {
  display: block;
  width: auto;
  height: 100%;
  max-width: none;
  object-fit: contain;
  user-select: none;
}

.cpms-nav-control:hover,
.cpms-nav-control:focus-visible {
  filter: drop-shadow(0 6px 6px rgba(0, 0, 0, 0.7))
    drop-shadow(0 0 7px rgba(223, 186, 98, 0.58));
  transform: translateY(-1px);
}

/* Sinks like a real switch, same as the pentagon's controls. */
.cpms-nav-control:active {
  transform: translateY(2px) scale(0.98);
}

/* One disclosure replaces the repeated row of eight equal-weight links.
   The four groups describe work, not implementation folders. */
.cpms-menu-trigger {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  gap: 10px;
  padding: 8px 18px;
  border: 1px solid rgba(117, 216, 244, 0.5);
  color: #edf7ff;
  background: linear-gradient(180deg, rgba(18, 46, 64, 0.96), rgba(4, 18, 29, 0.98));
  font: inherit;
  font-weight: 900;
  letter-spacing: 0.09em;
  cursor: pointer;
}

.cpms-nav-settings {
  display: block;
  width: auto;
  height: var(--cpms-control-h, 44px);
  border: 0;
  padding: 0;
  color: #edf7ff;
  background: transparent;
  font: 900 1.2rem/1 sans-serif;
  cursor: pointer;
}

/* Keep decorative pixels out of hit testing; sizing is shared below. */
.cpms-nav-settings img {
  pointer-events: none;
  user-select: none;
}

.cpms-nav-settings:hover img,
.cpms-nav-settings:focus-visible img {
  filter: brightness(1.24) drop-shadow(0 0 10px rgba(255, 226, 152, 0.55));
}

.cpms-nav-settings:focus-visible {
  outline: 3px solid #ffe298;
  outline-offset: 3px;
}

/* Approved raster artwork must fit the utility strip, never lay out at its
   source resolution (1254px SETTINGS / 520px EXIT), and the button must be
   the artwork rather than a frame around it — owner, 2026-09-10:
   «Τα κουμπια δεν ειναι πινακια. Ειναι link αόρατα-διαφανα στο workart
   κουμπι». Common height, width from each asset's own aspect ratio.
   Position remains the existing shared bar's responsibility. */
.cpms-nav-controls .cpms-nav-control,
.cpms-nav-controls .cpms-nav-settings {
  flex: 0 0 auto;
  min-width: 0;
  min-height: 44px !important;
  width: auto;
  height: var(--cpms-control-h, 44px);
  max-height: var(--cpms-control-h, 44px);
  border: 0;
  padding: 0;
  background: transparent;
  box-shadow: none;
}

.cpms-nav-controls .cpms-nav-settings img,
.cpms-nav-controls .cpms-nav-control img {
  display: block;
  min-width: 0;
  width: auto;
  height: 100%;
  max-width: none;
  max-height: 100%;
  object-fit: contain;
}

/* The artwork IS the utility control, not a small icon inside another plate.
   Keep the existing docking arrangement; family positions are owned by the
   Owner's layout contract. Every picture uses the same physical target. */
.cpms-nav-controls #cpmsDisplayLauncher,
.cpms-nav-controls #cpmsHelpLauncher,
.cpms-nav-controls .cpms-nav-language {
  display: block;
  flex: 0 0 auto;
  width: auto;
  min-width: 44px;
  height: var(--cpms-control-h, 44px);
  min-height: 44px !important;
  max-height: var(--cpms-control-h, 44px);
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.cpms-nav-controls #cpmsDisplayLauncher img,
.cpms-nav-controls #cpmsHelpLauncher img,
.cpms-nav-controls .cpms-nav-language img {
  display: block;
  width: auto;
  height: 100%;
  min-width: 0;
  max-width: none;
  max-height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.cpms-nav-controls #cpmsDisplayLauncher .top-military-control__copy {
  display: none;
}

.cpms-nav-controls .cpms-nav-language { order: 80; }
.cpms-nav-controls .cpms-nav-language:focus-visible {
  outline: 3px solid #9cefff;
  outline-offset: 2px;
}

.cpms-menu-trigger__icon {
  color: #75d8f4;
  font-size: 1.25em;
  line-height: 1;
}

.cpms-menu-trigger:hover,
.cpms-menu-trigger:focus-visible,
.cpms-menu-trigger[aria-expanded="true"] {
  border-color: #ffe298;
  color: #fff9e8;
  background: linear-gradient(180deg, rgba(39, 70, 87, 0.98), rgba(8, 27, 39, 0.98));
}

.cpms-admin-menu {
  min-height: 48px;
  border: 1px solid #e3b95d;
  padding: 8px 16px;
  color: #fff4d2;
  background: linear-gradient(180deg, rgba(74, 55, 18, 0.96), rgba(24, 17, 5, 0.98));
  font: inherit;
  font-weight: 900;
  letter-spacing: 0.08em;
  cursor: pointer;
}

.cpms-admin-menu:hover,
.cpms-admin-menu:focus-visible {
  outline: 3px solid #ffe298;
  outline-offset: 3px;
  color: #07131b;
  background: #ffe298;
}

.cpms-menu-trigger:focus-visible,
.cpms-global-menu :focus-visible {
  outline: 3px solid #ffe298;
  outline-offset: 3px;
}

.cpms-global-menu {
  position: fixed;
  z-index: 199;
  top: var(--cpms-nav-height);
  right: 0;
  left: 0;
  max-height: calc(calc(var(--cpms-canvas-h) * 1) - var(--cpms-nav-height));
  overflow-y: auto;
  padding: 18px clamp(18px, calc(var(--cpms-canvas-w) * 0.03), 56px) 26px;
  border-bottom: 1px solid rgba(117, 216, 244, 0.42);
  color: #edf7ff;
  background:
    linear-gradient(135deg, rgba(5, 22, 34, 0.99), rgba(2, 10, 17, 0.995)),
    #020a11;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.72);
}

.cpms-global-menu[hidden] {
  display: none !important;
}

.cpms-global-menu__heading {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(117, 216, 244, 0.26);
}

.cpms-global-menu__heading strong {
  font-size: clamp(1.1rem, calc(var(--cpms-canvas-w) * 0.015), 1.45rem);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.cpms-global-menu__close {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border: 1px solid rgba(117, 216, 244, 0.45);
  color: #edf7ff;
  background: rgba(5, 22, 34, 0.96);
  font: 800 1.7rem/1 sans-serif;
  cursor: pointer;
}

.cpms-global-menu__groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.cpms-global-menu__group {
  min-width: 0;
  padding: 14px;
  border: 1px solid rgba(113, 139, 157, 0.34);
  background: rgba(6, 25, 38, 0.92);
}

.cpms-global-menu__group h2 {
  margin: 0 0 10px;
  color: #75d8f4;
  font-size: 0.86rem;
  letter-spacing: 0.1em;
}

.cpms-global-menu__group a {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-top: 1px solid rgba(113, 139, 157, 0.24);
  color: #edf7ff;
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.035em;
  text-decoration: none;
}

.cpms-global-menu__group a::after {
  color: #75d8f4;
  content: "›";
  font-size: 1.35em;
}

.cpms-global-menu__group a:hover,
.cpms-global-menu__group a[aria-current="page"] {
  color: #06131f;
  background: #75d8f4;
}

.cpms-global-menu__group a[aria-current="page"]::after {
  color: #06131f;
}

.cpms-global-menu__group a small {
  margin-left: auto;
  font-size: 13px;
  letter-spacing: 0.04em;
}

/* The original links remain valid no-JS fallbacks in the HTML and retain
   their static test contract. Once the shared menu is ready they leave the
   visual and accessibility trees, avoiding two competing global menus. */
html.cpms-navigation-ready .tactical-nav,
html.cpms-navigation-ready .training-nav {
  display: none !important;
}

html.cpms-navigation-ready .cpms-global-link--legacy {
  display: none !important;
}

html.cpms-navigation-ready .cpms-context-navigation {
  /* Builder → Briefing → Debrief is a mission flow, not a second global
     application menu. Keep those three local transitions and their real
     page actions; all other destinations live in the grouped MENU. */
  grid-template-columns: repeat(3, minmax(128px, 1fr)) !important;
}

.cpms-feature-header--compact {
  grid-template-columns: minmax(0, 1fr) !important;
}

/* Display settings belongs to the same utility rail, always at the top. */
.cpms-nav-controls .cpms-display-launcher--docked {
  position: static;
  order: 80;
  z-index: auto;
  margin-left: auto;
}

.cpms-nav-controls .cpms-display-launcher--docked + .cpms-nav-exit {
  margin-left: 0;
}

.cpms-nav-control:focus-visible {
  outline: 3px solid #ffe298;
  outline-offset: 3px;
}

/* EXIT keeps the hazard stripes it has on the main screen - it ends the
   session, and it should not be mistaken for a close button. */
.cpms-nav-exit {
  display: inline-flex;
  min-height: 44px;
  margin-left: 0;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  border: 2px solid #f0c040;
  color: #ffe9a8;
  background:
    repeating-linear-gradient(
      135deg,
      rgba(240, 192, 64, 0.22) 0 10px,
      rgba(8, 8, 8, 0.72) 10px 20px
    ),
    rgba(10, 10, 10, 0.9);
  font: inherit;
  font-weight: 900;
  letter-spacing: 0.09em;
  cursor: pointer;
}

@media (max-width: 0px) { /* ΚΑΜΒΑΣ 1920x1080: (max-width: 1050px) -> ΑΔΡΑΝΕΣ */
  .cpms-global-menu__groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.cpms-nav-exit:hover,
.cpms-nav-exit:focus-visible {
  color: #0b0b0b;
  background: #f0c040;
}

.cpms-nav-exit:focus-visible {
  outline: 3px solid #ffe298;
  outline-offset: 3px;
}

.cpms-nav-exit:active {
  transform: translateY(1px);
}

/* The approved EXIT bitmap already includes its hazard frame and wording.
   Do not enlarge it with its natural canvas or add a second EXIT caption. */
.cpms-nav-controls .cpms-nav-exit {
  flex: 0 0 auto;
  /* OWNER 2026-09-19: «Εχεις ελεγξει όλες τις οθονες σχετικά με την
   * επικάλυψει του ΕΧΙΤ? ειναι η 10η φορα που το ζητώ!!!!!»
   *
   * ΜΕΤΡΗΜΕΝΟ σε pixel (κίτρινες λωρίδες), 1920x1080, ΚΑΘΕ feature οθόνη:
   *   κουμπί .cpms-nav-exit   1777..1902   125 x 51
   *   ζωγραφισμένο EXIT       1777..1883   106 x 51   <-- 18px κενό δεξιά
   *   ρίζα (#logoutBtn)       1777..1901   ΓΕΜΑΤΟ
   * Το <img> είναι 88px πλατύ μέσα σε κουμπί 125px, και ως flex item χωρίς
   * `justify-content` κάθεται ΑΡΙΣΤΕΡΑ. Το scale(1.6667) γίνεται γύρω από
   * το δικό του κέντρο (1821), όχι του κουμπιού (1839), οπότε το σχέδιο
   * απλώνει 1759..1884: το overflow:hidden κόβει τα 18px αριστερά — μαζί
   * με το αριστερό κίτρινο πλαίσιο — και τα 18px δεξιά μένουν άδεια. Η ρίζα
   * δεν το έχει γιατί το #logoutBtn κεντράρει. Ίδιο κέντρο, ίδιο σχέδιο. */
  justify-content: center;
  min-width: 0;
  min-height: 44px !important;
  height: var(--cpms-control-h, 44px);
  max-height: var(--cpms-control-h, 44px);
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.cpms-nav-controls .cpms-nav-exit img {
  display: block;
  width: auto;
  height: 100%;
  max-width: none;
  max-height: 100%;
  object-fit: contain;
}

.cpms-nav-controls .cpms-nav-exit > span {
  display: none;
}

/* The bar sits over the page, so pages with their own top row need the
   room. Every feature shell is calc(var(--cpms-canvas-w) * 0.95) centred, which leaves the corners
   free; this keeps them free on a narrow screen too. */
@media (max-width: 0px) { /* ΚΑΜΒΑΣ 1920x1080: (max-width: 900px) -> ΑΔΡΑΝΕΣ */
  .cpms-nav-control {
    width: auto;
    min-width: 46px;
    height: 46px;
  }

  .cpms-nav-exit {
    padding: 8px 12px;
  }

  .cpms-menu-trigger {
    padding-inline: 12px;
  }

  .cpms-nav-controls .cpms-display-launcher--docked span:last-child {
    display: none;
  }
}

@media (max-width: 0px) { /* ΚΑΜΒΑΣ 1920x1080: (max-width: 680px) -> ΑΔΡΑΝΕΣ */
  .cpms-global-menu__groups {
    grid-template-columns: 1fr;
  }

  .cpms-menu-trigger span:last-child,
  .cpms-nav-exit span:last-child {
    display: none;
  }

  .cpms-menu-trigger,
  /* Κάτω από το υποστηριζόμενο δάπεδο των 1280 CSS px (απόφαση ιδιοκτήτη
     2026-08-31), αλλά περνά από την ίδια μία πηγή ούτως ή άλλως: μια τιμή που
     δεν διαβάζει το token είναι μια τιμή που θα ξεφύγει την επόμενη φορά. */
  .cpms-nav-exit {
    width: var(--cpms-control-w, 46px);
    min-width: 46px;
    justify-content: center;
    padding-inline: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cpms-nav-control {
    transition: none;
  }
}

/* ---------------------------------------------------------------------- *
 * Στόχος αφής 44x44 για τα ΑΥΤΟΝΟΜΑ links πλοήγησης του σώματος.
 *
 * Μετρημένο 2026-09-17 σε πραγματικό chromium στα 1280x720, σε 22 οθόνες:
 * έντεκα χειριστήρια κάτω από το δάπεδο των 44x44 του συμπληρώματος §4,
 * όλα με ύψος 21-30px. Τρία από αυτά - το `HOME` των STANDALONE COMMAND,
 * HEADQUARTERS ORDERS και SMALL OPERATIONS - είναι η ΜΟΝΗ διέξοδος αυτών
 * των οθονών, επειδή είναι ακριβώς οι τρεις που το §3.4.2 μετρά χωρίς
 * μπάρα διαχείρισης καθόλου.
 *
 * ΔΕΝ αγγίζει κανένα κουμπί διαχείρισης της μπάρας - εντολή ιδιοκτήτη
 * 2026-09-16, «ΤΑ ΚΟΥΜΠΙΑ ΕΙΝΑΙ ΟΚ..... ΜΗΝ ΤΑ ΠΕΙΡΑΞΕΙΣ». Αυτά εδώ είναι
 * links κειμένου μέσα στο σώμα της σελίδας, με δικό τους selector.
 *
 * Ένα inline link μέσα σε παράγραφο ΔΕΝ πιάνεται: 44px σε τρέχον κείμενο
 * θα έσπαγε τη ροή της πρότασης. Γι' αυτό ο selector ονομάζει τα πέντε
 * αυτόνομα είδη αντί να πει `a`.
 * ---------------------------------------------------------------------- */
main > a[href="/"],
a#statisticsBack,
a.content-manager-link,
.io-state > a[href],
.campaign-board-header > button {
  display: inline-flex;
  min-height: 44px;
  min-width: 44px;
  align-items: center;
  justify-content: center;
  padding-block: 10px;
  box-sizing: border-box;
}


/* OWNER 2026-09-18: «τα 2 κουμπια πριν το ΕΧΙΤ πρεπει να μετακινηθούν πιο
 * αριστερα» — και ο λόγος ΔΕΝ ήταν η θέση τους.
 *
 * ΜΕΤΡΗΜΕΝΟ σε feature οθόνη (pilot-logbook), 1280x720:
 *   #cpmsHelpLauncher   x 1157..1188   31x31
 *   το artwork του EXIT x 1175..1264   89x51   <-- ΖΩΓΡΑΦΙΖΕΤΑΙ ΕΔΩ
 *   .cpms-nav-exit      x 1193..1268   75x31
 * Το έργο του EXIT ΞΕΚΙΝΑΕΙ στο 1175 ενώ το HELP ΤΕΛΕΙΩΝΕΙ στο 1188:
 * **13px πάνω στο HELP**. Και είναι 51px ψηλό σε μπάρα 38px.
 * Δηλαδή τα δύο κουμπιά δεν ήταν λάθος τοποθετημένα — το EXIT τα έτρωγε.
 *
 * Το ίδιο ελάττωμα διορθώθηκε στη ΡΙΖΑ στο 50cc32a, αλλά ο κανόνας εκεί
 * ζητούσε πρόγονο `#appShell ... .top-command-bar`, που οι feature οθόνες
 * ΔΕΝ έχουν. Εδώ μπαίνει χωρίς πρόγονο.
 *
 * Οι αριθμοί από το ίδιο το έργο: καμβάς 520x300, σχέδιο 440x180 ->
 * κάθετο (1-180/300)/2 = 20%, οριζόντιο (1-440/520)/2 = 7,6923%. */
.cpms-nav-exit img {
  clip-path: inset(20% 7.6923%);
}
