/* ΉΘΟΣ — Aegean Modernism. Light is the working skin (offices, daylight); dark is the harbor-night skin. */

:root{
  /* Το μολύβι της «επεξεργασίας» ζει εδώ ως μάσκα: ένα σχήμα, ένα χρώμα ανά θέση. */
  --pen-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19.5 8.5a2.5 2.5 0 0 0-3.5-3.5L4.5 16.5V20z'/%3E%3Cpath d='M14.5 6.5l3.5 3.5'/%3E%3C/svg%3E");
  --ground:#f2f5f5;
  --panel:#fbfdfd;
  --panel-2:#eef3f4;
  --navy:#00396e;
  --navy-deep:#002a52;
  --navy-tint:#dce9f4;
  --on-navy:#ffffff;
  --on-navy-dim:#a8c6e0;
  --ink:#14232f;
  --muted:#54677a;
  --rule:#cfdadc;
  --rule-soft:#e2e9ea;
  --gold:#f2b705;
  --gold-ink:#7d5f00;
  --gold-soft:#fdeeca;
  --ok:#25634a;
  --ok-soft:#ddeee6;
  --danger:#a33c2f;
  --danger-soft:#f6e3df;
  --focus:#0b63a8;
  --shadow:0 1px 3px rgba(0,42,82,.10);
  --shadow-float:0 14px 40px rgba(0,42,82,.25);
  --font:'Commissioner',system-ui,-apple-system,'Segoe UI',sans-serif;
  --didot:'GFS Didot',Georgia,serif;
}
:root[data-theme="dark"]{
  --ground:#0d1621;
  --panel:#152230;
  --panel-2:#1a2938;
  --navy:#8ec1e8;
  --navy-deep:#002a52;
  --navy-tint:#1d3350;
  --on-navy:#f2f6f9;
  --on-navy-dim:#8fb2cf;
  --ink:#e8eef3;
  --muted:#93a8bb;
  --rule:#2a3b4c;
  --rule-soft:#20303f;
  --gold:#f4c440;
  --gold-ink:#f4c440;
  --gold-soft:#332a12;
  --ok:#7fc9a5;
  --ok-soft:#173328;
  --danger:#e08a7d;
  --danger-soft:#3b201b;
  --focus:#7db8e8;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-float:0 14px 40px rgba(0,0,0,.55);
}

*{box-sizing:border-box}
html{height:100%}
body{
  margin:0;min-height:100%;
  background:var(--ground);color:var(--ink);
  font-family:var(--font);font-size:15.5px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--gold);color:#14232f}
:focus-visible{outline:2.5px solid var(--focus);outline-offset:2px;border-radius:3px}
button, input, select, textarea{font:inherit;color:inherit}
input, select, textarea{caret-color:var(--gold-ink)}
/* Βάση για ΚΑΘΕ πεδίο, ακόμη κι αν δεν έχει τη δική του κλάση. Χωρίς αυτό, ένα
   νέο input ή select πέφτει στα προεπιλεγμένα του browser — λευκό φόντο μέσα σε
   σκούρο θέμα, με ανοιχτό κείμενο από πάνω, δηλαδή αόρατο. Είναι κανόνας
   στοιχείου (specificity 0,0,1), οπότε κάθε υπάρχουσα κλάση εξακολουθεί να νικά. */
input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]):not([type=file]),
select, textarea{
  background:var(--panel);color:var(--ink);
  border:1px solid var(--rule);border-radius:3px;padding:9px 11px;font-size:14px;
}
input::placeholder, textarea::placeholder{color:var(--muted);opacity:1}
* { scrollbar-width: thin; scrollbar-color: var(--rule) transparent; }
/* Το hidden πρέπει να νικά κάθε display: κλάσεις όπως .field{display:flex}
   αλλιώς υπερισχύουν του προεπιλεγμένου κανόνα του browser και το πεδίο μένει ορατό. */
[hidden]{display:none !important}

/* ===== masthead ===== */
.masthead{background:var(--navy-deep);color:var(--on-navy);position:sticky;top:0;z-index:48;box-shadow:var(--shadow)}
.masthead-inner{max-width:1280px;margin:0 auto;padding:0 22px;display:flex;align-items:stretch;gap:22px;min-height:60px}
.wordmark{font-family:var(--didot);font-size:25px;letter-spacing:.02em;color:var(--on-navy);display:flex;align-items:center;text-decoration:none}
.wordmark small{font-family:var(--font);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--on-navy-dim);margin-left:12px;padding-left:12px;border-left:1px solid rgba(255,255,255,.22);align-self:center;padding-top:2px}
.mainnav{display:flex;align-items:stretch;justify-content:center;justify-content:safe center;gap:8px;flex:1;position:relative}
.mainnav a{
  display:flex;align-items:center;padding:0 14px;color:var(--on-navy-dim);
  white-space:nowrap;text-decoration:none;position:relative;cursor:pointer;
}
.mainnav a svg{width:23px;height:23px}
.mainnav a:hover{color:var(--on-navy)}
.mainnav a.on{color:var(--on-navy)}
.mainnav a.on::after{
  content:"";position:absolute;left:12px;right:12px;bottom:0;height:3px;background:var(--gold);
}
/* ετικέτα ονόματος στο πέρασμα του δείκτη (τα link είναι πλέον εικονίδια) */
.mainnav a::before{
  content:attr(data-tip);position:absolute;top:calc(100% + 3px);left:50%;
  transform:translateX(-50%) translateY(-3px);
  background:var(--navy-deep);color:var(--on-navy);border:1px solid rgba(255,255,255,.22);
  font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  padding:4px 9px;border-radius:2px;white-space:nowrap;
  opacity:0;pointer-events:none;box-shadow:var(--shadow);z-index:60;
  transition:opacity .14s ease-out .12s, transform .14s ease-out .12s;
}
.mainnav a:hover::before, .mainnav a:focus-visible::before{opacity:1;transform:translateX(-50%) translateY(0)}
.mast-actions{display:flex;align-items:center;gap:8px}
.iconbtn{
  background:transparent;border:1px solid rgba(255,255,255,.25);color:var(--on-navy);
  width:34px;height:34px;border-radius:3px;display:grid;place-items:center;cursor:pointer;
  transition:background .18s ease-out;
}
.iconbtn:hover{background:rgba(255,255,255,.12)}
.iconbtn svg{width:17px;height:17px}

/* ===== layout ===== */
.page{max-width:1280px;margin:0 auto;padding:26px 22px 90px}
.pagehead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:2px 0 20px}
.pagehead h1{font-size:23px;font-weight:800;letter-spacing:-.015em;margin:0}
.pagehead .sub{color:var(--muted);font-size:13.5px;margin-top:2px}

/* ===== buttons ===== */
.btn{
  display:inline-flex;align-items:center;gap:8px;border:none;border-radius:3px;cursor:pointer;
  padding:9px 16px;font-size:13.5px;font-weight:700;letter-spacing:.02em;
  transition:transform .12s ease-out, filter .18s ease-out;
  text-decoration:none;
}
.btn:active{transform:translateY(1px)}
.btn svg{width:16px;height:16px}
.btn-gold{background:var(--gold);color:#14232f}
.btn-gold:hover{filter:brightness(1.05)}
.btn-navy{background:var(--navy-deep);color:#fff}
:root[data-theme="dark"] .btn-navy{background:var(--navy-tint);color:var(--on-navy)}
.btn-navy:hover{filter:brightness(1.15)}
.btn-quiet{background:transparent;color:var(--navy);border:1px solid var(--rule);font-weight:600}
.btn-quiet:hover{background:var(--panel-2)}
.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--rule);font-weight:600}
.btn-danger:hover{background:var(--danger-soft)}
/* Οπλισμένο: το κουμπί ρωτάει «Σίγουρα;» και περιμένει το δεύτερο κλικ. */
.btn-danger.armed{background:var(--danger);color:#fff;border-color:var(--danger)}
.btn-danger.armed:hover{background:var(--danger);filter:brightness(1.08)}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* ===== stat band (departures board) ===== */
.statband{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));
  background:var(--panel);border:1px solid var(--rule);border-radius:2px;overflow:hidden;box-shadow:var(--shadow);
}
.stat{padding:18px 22px 16px;border-right:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft)}
.stat:last-child{border-right:none}
/* Πλακίδια που είναι σύνδεσμοι: το νούμερο οδηγεί στη λίστα που το παράγει */
a.stat{text-decoration:none;color:inherit;transition:background .12s ease-out}
a.stat:hover{background:var(--panel-2)}
.stat .n.ok{color:var(--ok)}
.label{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.stat .n{font-size:28px;font-weight:800;letter-spacing:-.02em;color:var(--navy);font-variant-numeric:tabular-nums;margin-top:4px}
.stat .n.gold{color:var(--gold-ink)}
.stat .cmp{font-size:13px;color:var(--muted);margin-top:2px}
.stat .cmp b{color:var(--ok);font-weight:700}
.stat .cmp b.down{color:var(--danger)}

/* ===== panels & tables ===== */
.panel{background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow);overflow:hidden}
.panel + .panel{margin-top:18px}
.statband + .panel{margin-top:18px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 20px;border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule)}
:root[data-theme="dark"] .panel-head{border-bottom-color:var(--navy)}
.panel-head h2{font-size:12px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;margin:0;color:var(--ink)}
.panel-body{padding:18px 20px}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px}
th{
  text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);padding:11px 20px 9px;border-bottom:2.5px solid var(--navy);
  box-shadow:inset 0 -5px 0 -4px var(--rule);white-space:nowrap;
}
td{padding:10px 20px;border-bottom:1px solid var(--rule-soft);font-variant-numeric:tabular-nums;vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr{cursor:default;transition:background .15s ease-out}
tbody tr.rowlink{cursor:pointer}
tbody tr.rowlink:hover{background:var(--panel-2)}
/* Ό,τι ανοίγει σε επεξεργασία το λέει: ένα μολύβι στο τέλος της γραμμής,
   σβηστό όσο δεν το κοιτάς, χρυσό όταν το δείχνεις. Ο χώρος κρατιέται και στην
   επικεφαλίδα, ώστε τα ποσά της τελευταίας στήλης να μένουν στοιχισμένα. */
tbody tr.rowedit td:last-child{position:relative;padding-right:32px}
table:has(tbody tr.rowedit) thead th:last-child{padding-right:32px}
tbody tr.rowedit td:last-child::after{
  content:'';position:absolute;right:10px;top:50%;width:14px;height:14px;margin-top:-7px;
  background:var(--muted);opacity:.45;transition:opacity .12s,background .12s;
  -webkit-mask:var(--pen-mask) no-repeat center/contain;mask:var(--pen-mask) no-repeat center/contain;
}
tbody tr.rowedit:hover td:last-child::after,
tbody tr.rowedit:focus-within td:last-child::after{background:var(--gold);opacity:1}
.editmark{display:inline-flex;align-items:center;color:var(--gold);margin-right:8px;vertical-align:-2px}
.editmark svg{width:14px;height:14px}
tr.rowfocus>td{background:var(--gold-soft)}
th.r, td.r{text-align:right}
td .sub{display:block;font-size:12px;color:var(--muted)}
.amount{font-weight:700;color:var(--ink);white-space:nowrap}
td.r{white-space:nowrap}

/* status pills */
.pill{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:3px 9px;border-radius:4px}
.pill.issued{background:var(--ok-soft);color:var(--ok)}
.pill.draft{background:var(--gold-soft);color:var(--gold-ink)}
.pill.cancelled{background:var(--danger-soft);color:var(--danger)}
.pill.due{background:var(--navy-tint);color:var(--navy)}
/* Χαμένο κλειδί: δεν είναι «δεν ρυθμίστηκε», είναι «ήταν και χάθηκε». Η
   διαφορά μετράει, γιατί αλλιώς το ανακαλύπτεις όταν αποτύχει η διαβίβαση.
   Το σήμα το δίνει η απόχρωση του φόντου και η ράγα από πάνω — το ίδιο ιδίωμα
   με τις κεφαλίδες των πινάκων, όχι χρωματιστή μπάρα στο πλάι. */
.keylost{margin:8px 0 0;padding:11px 13px;background:var(--danger-soft);
  border-top:2.5px solid var(--danger);box-shadow:inset 0 5px 0 -4px var(--danger-soft);
  font-size:13px;max-width:62ch}

/* ===== two-col dash ===== */
.dashgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;margin-top:18px}
@media (max-width:900px){ .dashgrid{grid-template-columns:minmax(0,1fr)} }

/* deadlines list */
.deadline{display:flex;gap:14px;align-items:baseline;padding:11px 20px;border-bottom:1px solid var(--rule-soft)}
.deadline:last-child{border-bottom:none}
.deadline .d{font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:86px}
.deadline .t{font-size:13.5px}
.deadline .t small{display:block;color:var(--muted);font-size:12px}

/* σημείωση: ο προμηθευτής στέλνει ηλεκτρονικά τιμολόγια */
.einnote{margin-bottom:18px;border-left:none}
.einnote .panel-body b{font-size:14px}
.einnote .panel-body p{margin:5px 0 0;color:var(--muted);font-size:13.5px;line-height:1.55;max-width:80ch}

/* πεδία ημερομηνίας σε ρητή σειρά (ΗΗ/ΜΜ ή ΜΜ/ΗΗ) */
.datewrap{display:block;position:relative}
.filters .datewrap,.bulkbar .datewrap,.settleform .datewrap{display:inline-block}
.datewrap .dtxt{font-variant-numeric:tabular-nums;letter-spacing:.02em;width:100%;padding-right:38px}
.filters .datewrap .dtxt,.bulkbar .datewrap .dtxt,.settleform .datewrap .dtxt{width:126px}
.dtxt.bad{border-color:var(--danger)}
/* Εικονίδιο ημερολογίου μέσα στο πεδίο: δείχνει ότι υπάρχει ημερολόγιο και το
   ανοίγει. Το input[type=date] που το ανοίγει μένει εκτός οθόνης, αγκυρωμένο
   κάτω αριστερά ώστε το αναδυόμενο ημερολόγιο να βγαίνει στη σωστή θέση. */
.datewrap .dtcal{
  position:absolute;top:50%;right:1px;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  width:34px;height:calc(100% - 4px);padding:0;
  background:none;border:0;border-radius:0 3px 3px 0;cursor:pointer;color:var(--muted);
}
.datewrap .dtcal svg{width:17px;height:17px}
.datewrap .dtcal:hover{color:var(--navy)}
.datewrap .dpick{
  position:absolute;left:10px;bottom:0;width:1px;height:1px;
  padding:0;margin:0;border:0;opacity:0;pointer-events:none;
}

/* μαζική επιλογή στη λίστα παραστατικών */
.c-pick{width:34px;text-align:center}
.c-pick input{width:16px;height:16px;accent-color:var(--navy);cursor:pointer;vertical-align:middle}
:root[data-theme="dark"] .c-pick input{accent-color:var(--gold)}
.bulkbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:11px 16px;background:var(--panel-2);border-bottom:1px solid var(--rule-soft)}
.bulkbar .n{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;margin-right:auto}
.bulkbar input,.bulkbar select{background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:3px;padding:7px 9px;font-size:13px}
.bulkbar input:focus,.bulkbar select:focus{border-color:var(--focus);outline:none}
.bulkbar .btn{padding:7px 12px;font-size:13px}
@media print{.bulkbar,.c-pick{display:none !important}}

/* εξόφληση παραστατικού */
.settle{margin-top:18px}
.settle .panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.settlesum{display:flex;flex-wrap:wrap;gap:10px 28px;padding-bottom:13px;border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule)}
.settlesum div{display:flex;flex-direction:column;gap:2px}
.settlesum span{font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.settlesum b{font-size:15.5px;font-variant-numeric:tabular-nums}
.settlesum .rest{margin-left:auto;text-align:right}
.settlesum .rest b{font-size:22px}
.settlesum b.due{color:var(--danger)}
.settlelist{margin-top:12px}
.settlerow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule-soft);font-size:13.5px}
.settlerow:last-child{border-bottom:none}
.settlerow .d{font-variant-numeric:tabular-nums;color:var(--muted);min-width:82px}
.settlerow .a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.settlerow b{font-variant-numeric:tabular-nums;color:var(--ok)}
.settleform{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.settleform input,.settleform select{background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:13.5px}
.settleform input:focus,.settleform select:focus{border-color:var(--focus);outline:none}
.settleform #s_amount{width:120px;text-align:right;font-variant-numeric:tabular-nums}
.settleform select{flex:1;min-width:150px}
.settlehint{margin:9px 0 0;font-size:12px;color:var(--muted);line-height:1.45}

/* ταμειακοί λογαριασμοί */
.accstrip{margin-bottom:18px}
.accstrip .panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.accbal{display:flex;flex-wrap:wrap;background:var(--panel)}
.accbalcard{flex:1 1 180px;min-width:0;padding:13px 16px;border-right:1px solid var(--rule-soft);border-top:1px solid var(--rule-soft);margin-top:-1px}
.accbalcard:last-child{border-right:none}
.accbalcard .k{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.accbalcard .n{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:3px}
.accbalcard .n.neg{color:var(--danger)}
.accbalcard .m{font-size:11.5px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}
.accrow{border:1px solid var(--rule-soft);border-radius:2px;padding:10px 12px;margin-bottom:10px}
.accrow.off{opacity:.55}
.accmain{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1.2fr) 110px auto;gap:8px;align-items:center}
.accmain input,.accmain select{background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:7px 9px;font-size:13.5px;min-width:0;width:100%}
.accmain .accopen{text-align:right;font-variant-numeric:tabular-nums}
.accmain2{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;margin-top:8px}
.accmain2 .check{white-space:nowrap;font-size:12.5px;color:var(--ink);display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.accmain2 .check input{width:15px;height:15px;accent-color:var(--navy);cursor:pointer}
:root[data-theme="dark"] .accmain2 .check input{accent-color:var(--gold)}
.accmeta{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:7px;font-size:12px;color:var(--muted)}
.accmeta b{font-variant-numeric:tabular-nums;color:var(--ink)}
.accform{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.accform input,.accform select{background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:13.5px}
.accform input{flex:1;min-width:180px}
.accform input::placeholder{color:var(--muted)}
.accform input:focus,.accform select:focus,.accmain input:focus,.accmain select:focus{border-color:var(--focus);outline:none}
.accmain input,.accmain select{color:var(--ink)}
.accmain input::placeholder{color:var(--muted)}
@media (max-width:640px){
  .accmain{grid-template-columns:minmax(0,1fr) auto;grid-auto-rows:auto}
  .accmain .acciban,.accmain .accopen{grid-column:1 / -1}
}

/* θέση ΦΠΑ τριμήνου */
.vatpos .panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vatpos .panel-head .sub{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.vatrow{display:grid;grid-template-columns:minmax(0,1fr) 64px auto;align-items:center;gap:10px;font-size:13px;margin-bottom:8px}
.vatrow i{height:6px;border-radius:2px;background:var(--rule);transform-origin:left;display:block}
.vatrow i.out{background:var(--navy)}
.vatrow i.in{background:var(--gold)}
.vatrow b{font-variant-numeric:tabular-nums;font-size:13.5px;white-space:nowrap}
.vatsum{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:12px;padding-top:11px;border-top:2.5px solid var(--navy);box-shadow:inset 0 5px 0 -4px var(--rule)}
.vatsum .label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.vatsum .n{font-size:23px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--danger)}
.vatsum.credit .n{color:var(--ok)}
.vatwhen{margin:9px 0 0;font-size:12.5px;color:var(--muted)}
.vatnotes{margin:10px 0 0;padding-left:16px;font-size:12.5px;color:var(--ink);line-height:1.5}
.vatnotes li{margin-bottom:3px}
.vatdisc{margin:12px 0 0;font-size:11.5px;color:var(--muted);line-height:1.45}

/* debtors */
.debtor{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 20px;border-bottom:1px solid var(--rule-soft);font-size:14px}
a.debtor{color:inherit;text-decoration:none;position:relative;padding-right:36px}
a.debtor:hover,a.debtor:focus-visible{background:var(--panel-2)}
a.debtor::after{
  content:'';position:absolute;right:14px;top:50%;width:14px;height:14px;margin-top:-7px;
  background:var(--muted);opacity:.45;transition:opacity .12s,background .12s;
  -webkit-mask:var(--pen-mask) no-repeat center/contain;mask:var(--pen-mask) no-repeat center/contain;
}
a.debtor:hover::after,a.debtor:focus-visible::after{background:var(--gold);opacity:1}
.debtor:last-child{border-bottom:none}
.debtor b{font-variant-numeric:tabular-nums;color:var(--danger)}

/* ===== forms ===== */
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:14px 16px}
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.field input,.field select,.field textarea{
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:9px 11px;font-size:14px;
  transition:border-color .15s ease-out;color:var(--ink);width:100%;
}
.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--muted)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent)}
.field .err{color:var(--danger);font-size:13px}
.field input::placeholder,.field textarea::placeholder{color:var(--muted);opacity:1}
.formfoot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}
.field.wide,.formfoot.wide{grid-column:1/-1}
.field label.check{display:inline-flex;align-items:center;gap:7px;text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:600;color:var(--ink)}
.field label.check input{width:15px;height:15px;accent-color:var(--navy);cursor:pointer}
:root[data-theme="dark"] .field label.check input{accent-color:var(--gold)}

/* doc editor lines */
.lines th{padding-left:12px;padding-right:12px}
.lines td{padding:6px 12px}
.lines input,.lines select{
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:7px 9px;font-size:13.5px;width:100%;
  font-variant-numeric:tabular-nums;
}
.lines input:focus,.lines select:focus{border-color:var(--focus);outline:none}
.lines .num{text-align:right}
.linetotals{display:flex;justify-content:flex-end;gap:34px;padding:14px 20px;border-top:2px solid var(--navy);font-variant-numeric:tabular-nums}
.linetotals div{text-align:right}
.linetotals .label{margin-bottom:2px}
.linetotals .v{font-size:19px;font-weight:800;color:var(--navy)}
.linetotals .v.g{color:var(--gold-ink);font-size:23px}

/* remove-line button */
.xline{background:transparent;border:none;color:var(--muted);cursor:pointer;padding:6px;border-radius:3px;display:grid;place-items:center}
.xline:hover{color:var(--danger);background:var(--danger-soft)}
.xline svg{width:15px;height:15px}

/* ===== issuance (timologio helper) ===== */
.issue-steps{counter-reset:step;display:flex;flex-direction:column}
.istep{display:flex;gap:16px;padding:16px 20px;border-bottom:1px solid var(--rule-soft)}
.istep:last-child{border-bottom:none}
.istep::before{
  counter-increment:step;content:counter(step);
  width:26px;height:26px;border-radius:50%;background:var(--navy-tint);color:var(--navy);
  font-weight:800;font-size:13px;display:grid;place-items:center;flex-shrink:0;margin-top:1px;
}
.istep .body{flex:1;min-width:0}
.istep h3{margin:0 0 3px;font-size:14px;font-weight:700}
.istep p{margin:0;color:var(--muted);font-size:13.5px}
.copyrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px;background:var(--panel-2);border:1px solid var(--rule-soft);border-radius:2px;margin-top:8px;font-size:13.5px}
.copyrow code{font-family:var(--font);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copybtn{background:transparent;border:1px solid var(--rule);border-radius:3px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer;color:var(--navy);flex-shrink:0}
.copybtn:hover{background:var(--navy-tint)}
.copybtn.copied{background:var(--ok-soft);color:var(--ok);border-color:transparent}

/* the seal */
.seal{
  display:inline-block;border:3px solid var(--ok);color:var(--ok);border-radius:3px;
  font-weight:800;font-size:15px;letter-spacing:.14em;text-transform:uppercase;
  padding:7px 18px;transform:rotate(-4deg);
}
@media (prefers-reduced-motion: no-preference){
  .seal.setting{animation:sealset .42s cubic-bezier(.2,1.4,.4,1) both}
  @keyframes sealset{
    0%{opacity:0;transform:rotate(-14deg) scale(2.1)}
    100%{opacity:1;transform:rotate(-4deg) scale(1)}
  }
}

/* ===== document view (print-friendly) ===== */
.docsheet{max-width:820px}
.docsheet .head{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:22px 24px;background:var(--navy-deep)}
.docsheet .head .who .wm{font-family:var(--didot);font-size:22px;color:#ffffff}
.docsheet .head .who p{margin:2px 0 0;font-size:13px;color:var(--on-navy-dim)}
.docsheet .head .what{text-align:right}
.docsheet .head .what .series{font-size:19px;font-weight:800;color:var(--gold)}
.docsheet .head .what p{margin:2px 0 0;font-size:13px;color:var(--on-navy-dim);font-variant-numeric:tabular-nums}

/* ===== empty states ===== */
.empty{padding:44px 24px;text-align:center;color:var(--muted)}
.empty svg{width:42px;height:42px;color:var(--rule);margin-bottom:10px}
.empty p{margin:0 0 4px;font-weight:600;color:var(--ink)}
.empty small{display:block;margin-bottom:14px}

/* ===== setup wizard ===== */
.setup{max-width:660px;margin:40px auto}
.setup .mark{font-family:var(--didot);font-size:44px;color:var(--navy);text-align:center}
.setup .tag{text-align:center;color:var(--muted);font-size:14px;margin:2px 0 26px;font-style:italic}
.modecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:12px;margin-top:6px}
.modecard{
  border:1.5px solid var(--rule);border-radius:2px;padding:14px;cursor:pointer;background:var(--panel);
  transition:border-color .15s ease-out;
}
.modecard:hover{border-color:var(--muted)}
.modecard.on{border-color:var(--gold);background:var(--gold-soft)}
.modecard b{display:block;font-size:14px;margin-bottom:4px}
.modecard span{font-size:13px;color:var(--muted);line-height:1.45;display:block}

/* toast */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  background:var(--navy-deep);color:#fff;padding:11px 20px;border-radius:3px;font-size:14px;font-weight:600;
  box-shadow:var(--shadow);z-index:50;
}
.toast.err{background:var(--danger)}
@media (prefers-reduced-motion: no-preference){
  .toast{animation:toastin .25s ease-out}
  @keyframes toastin{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
}

/* skeleton loading */
.skel{position:relative;overflow:hidden;background:var(--rule-soft);border-radius:2px;min-height:14px}
@media (prefers-reduced-motion: no-preference){
  .skel::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
    background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--panel) 60%,transparent),transparent);
    animation:shimmer 1.2s infinite}
  @keyframes shimmer{100%{transform:translateX(100%)}}
}

/* search input */
.search{position:relative;min-width:220px}
.search input{width:100%;background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:8px 11px 8px 34px;font-size:14px}
.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--muted)}
.search input:focus{border-color:var(--focus);outline:none}

/* responsive masthead */
@media (max-width:1400px){ .wordmark small{display:none} }
@media (max-width:1100px){
  .masthead-inner{flex-wrap:wrap;padding-bottom:0}
  .wordmark{padding:10px 0 6px}
  .wordmark small{display:none}
  .mast-actions{margin-left:auto}
  .mainnav{order:3;flex-basis:100%;overflow-x:auto;scrollbar-width:none}
  .mainnav a{padding:12px 11px;white-space:nowrap}
}
@media (max-width:900px){
  table.t-recent th:nth-child(2), table.t-recent td:nth-child(2){display:none}
  /* δευτερεύουσες στήλες (καθαρή αξία, ΦΠΑ): σημαδεμένες με κλάση, ώστε να μη
     χαλάει η απόκρυψη κάθε φορά που προστίθεται στήλη */
  .t-docs .c-sec{display:none}
}
@media (max-width:640px){
  .page{padding:18px 14px 70px}
  .statband{grid-template-columns:minmax(0,1fr)}
  .stat{border-right:none;border-bottom:1px solid var(--rule-soft)}
  .stat:last-child{border-bottom:none}
  .formfoot{justify-content:stretch}
  .formfoot .btn{flex:1;justify-content:center}
}

@media print{
  .masthead,.pagehead .actions,.btn,.noprint{display:none !important}
  body{background:#fff}
  .panel{box-shadow:none;border-color:var(--rule)}
}

/* ===== news ===== */
.newsitem{display:flex;gap:16px;align-items:baseline;padding:12px 20px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:var(--ink);transition:background .15s ease-out}
.newsitem:last-child{border-bottom:none}
.newsitem:hover{background:var(--panel-2)}
.newsitem .ndate{font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:86px;font-size:13.5px}
.newsitem .nbody{flex:1;min-width:0}
.newsitem .nbody b{font-weight:600;font-size:14px;line-height:1.4}
.newsitem .nbody small{display:block;color:var(--muted);font-size:13px;margin-top:2px;line-height:1.45}
.newsitem .nsrc{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
@media (max-width:640px){ .newsitem .nsrc{display:none} .newsitem .ndate{min-width:auto} }

/* ===== calculator ===== */
#calcpop{
  position:fixed;top:66px;right:18px;z-index:60;width:264px;
  background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);
  padding:12px;
}
.calc-display{
  background:var(--navy-deep);color:#fff;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;
  text-align:right;padding:12px 14px;border-radius:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  margin-bottom:10px;letter-spacing:.01em;
}
.calc-vatrow{display:flex;gap:6px;margin-bottom:10px}
.calc-vatrow select{flex:0 0 58px;border:1px solid var(--rule);border-radius:3px;background:var(--panel);padding:5px;font-size:13px}
.calc-vatrow button{
  flex:1;border:1px solid var(--rule);background:var(--panel-2);border-radius:3px;padding:6px 4px;
  font-size:12px;font-weight:700;cursor:pointer;color:var(--navy);
}
.calc-vatrow button:hover{background:var(--navy-tint)}
.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.calc-grid button{
  border:1px solid var(--rule);background:var(--panel);border-radius:3px;padding:11px 0;
  font-size:16px;font-weight:600;cursor:pointer;font-variant-numeric:tabular-nums;
  transition:background .12s ease-out;
}
.calc-grid button:hover{background:var(--panel-2)}
.calc-grid button:active{transform:translateY(1px)}
.calc-grid .calc-op{background:var(--navy-tint);color:var(--navy);font-weight:800}
.calc-grid .calc-eq{background:var(--gold);color:#14232f;font-weight:800;border-color:transparent}
.calc-grid .calc-eq:hover{filter:brightness(1.05)}
.calc-hint{font-size:10.5px;color:var(--muted);margin-top:9px;text-align:center}
@media (max-width:480px){ #calcpop{right:8px;left:8px;width:auto} }

/* ===== calculator header (draggable) ===== */
.calc-head{
  display:flex;justify-content:space-between;align-items:center;
  margin:-12px -12px 10px;padding:8px 8px 8px 12px;cursor:grab;user-select:none;touch-action:none;
  border-bottom:1px solid var(--rule-soft);
}
.calc-head:active{cursor:grabbing}
.calc-head span{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.calc-x{background:transparent;border:none;color:var(--muted);cursor:pointer;padding:5px;border-radius:3px;display:grid;place-items:center}
.calc-x:hover{color:var(--danger);background:var(--danger-soft)}
.calc-x svg{width:14px;height:14px}

/* ===== side tab + drawer (tasks & notes) ===== */
#sidetab{
  position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:55;
  writing-mode:vertical-rl;background:var(--navy-deep);color:#fff;border:none;cursor:pointer;
  padding:14px 7px;border-radius:3px 0 0 3px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  box-shadow:var(--shadow);transition:transform .15s ease-out;
}
#sidetab:hover{transform:translateY(-50%) translateX(-4px)}
#drawer{
  position:fixed;top:0;right:0;bottom:0;width:330px;max-width:92vw;z-index:56;
  background:var(--panel);border-left:1px solid var(--rule);box-shadow:var(--shadow-float);
  display:flex;flex-direction:column;
}
@media (prefers-reduced-motion: no-preference){
  #drawer{animation:drawerin .22s ease-out}
  @keyframes drawerin{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
}
.drawer-head{
  display:flex;justify-content:space-between;align-items:center;padding:14px 12px 13px 18px;
  border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule);
}
.drawer-head h2{font-size:12px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;margin:0}
.drawer-body{padding:16px 18px;overflow-y:auto;flex:1}
.task-add{display:flex;gap:8px;margin-bottom:10px}
.task-add input{flex:1;background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:14px}
.task-add input:focus{border-color:var(--focus);outline:none}
.task-add .btn{padding:8px 12px}
.task{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--rule-soft);font-size:14px}
.task input[type="checkbox"]{width:16px;height:16px;margin:0;accent-color:var(--navy);cursor:pointer;flex-shrink:0}
:root[data-theme="dark"] .task input[type="checkbox"]{accent-color:var(--gold)}
.task span{flex:1;min-width:0;overflow-wrap:break-word}
.task.done span{text-decoration:line-through;color:var(--muted)}
#quicknotes{
  width:100%;background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:10px 11px;
  font-size:14px;line-height:1.55;resize:vertical;
}
#quicknotes:focus{border-color:var(--focus);outline:none}

/* ===== ΑΦΜ validation + AADE lookup ===== */
.afmrow{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
.afmrow input{flex:1 1 130px;min-width:130px}
.afmrow .btn{flex:1 1 auto;justify-content:center;white-space:nowrap;padding:8px 12px}
.afmstatus{font-size:13px;color:var(--muted);min-height:1.2em}
.afmstatus.ok{color:var(--ok);font-weight:600}
.afmstatus.bad{color:var(--danger);font-weight:600}

/* ===== κλείδωμα αντιγράφων ===== */
/* Η κατάσταση μπαίνει πάνω από τα πεδία: πρώτα «κλειδώνονται ή όχι», μετά το πώς. */
.bklock{margin-top:18px;padding-top:16px;border-top:1px solid var(--rule)}
.bkstate{margin:0 0 10px;font-size:13.5px;font-weight:600;color:var(--muted)}
.bkstate::before{content:'';display:inline-block;width:7px;height:7px;border-radius:4px;background:currentColor;margin-right:8px;vertical-align:middle}
.bkstate.on{color:var(--ok)}
/* Η προειδοποίηση για το χαμένο συνθηματικό δεν είναι υποσημείωση: αν χαθεί,
   δεν υπάρχει δεύτερος δρόμος. Χρυσή ράγα από πάνω, όπως οι κεφαλίδες. */
.bkwarn{margin:10px 0 6px;padding:11px 13px;background:var(--gold-soft);
  border-top:2.5px solid var(--gold);box-shadow:inset 0 5px 0 -4px var(--gold-soft);
  font-size:13px;max-width:62ch}
.afmstatus a{color:var(--navy);font-weight:700}

/* ===== logo + document header/footer ===== */
.logobox{width:220px;height:90px;border:1px dashed var(--rule);border-radius:2px;display:grid;place-items:center;background:var(--panel-2);overflow:hidden}
.logobox img{max-width:200px;max-height:78px;object-fit:contain}
.logobox .wm-fallback{font-family:var(--didot);font-size:25px;color:var(--muted)}
.docsheet .head .who .doclogo{max-height:64px;max-width:240px;object-fit:contain;display:block;margin-bottom:8px;background:#fff;padding:4px 6px;border-radius:2px}
.docsheet .head .who .bizname{font-weight:700;color:#fff;font-size:15px;margin-top:2px}
.paybox{padding:13px 24px 14px;border-top:1px solid var(--rule-soft)}
.paybox .label{font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.paybox p{margin:0 0 3px;font-size:12.5px;line-height:1.55;font-variant-numeric:tabular-nums}
.paybox p:last-child{margin-bottom:0}
.docfoot{padding:14px 24px 16px;border-top:1px solid var(--rule-soft);font-size:12.5px;color:var(--muted);line-height:1.6;white-space:normal}
@media print{ .docfoot{color:var(--ink)} }
.field label.btn{text-transform:none;letter-spacing:.02em;font-size:13.5px;color:var(--navy);display:inline-flex}

/* ===== agenda: task form + rows ===== */
.taskform{display:grid;grid-template-columns:minmax(200px,2.2fr) 150px 108px 130px 130px auto auto;gap:8px;align-items:center}
.taskform:not(.compact){grid-template-columns:minmax(200px,2.2fr) 150px 108px 130px 130px;}
.taskform:not(.compact) .tf-notes{grid-column:1 / span 3}
.taskform:not(.compact) .btn{grid-column:auto}
.taskform input,.taskform select{
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:14px;min-width:0;width:100%;
  transition:border-color .15s ease-out;
}
.taskform input:hover,.taskform select:hover{border-color:var(--muted)}
.taskform input:focus,.taskform select:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent)}
.taskform input::placeholder{color:var(--muted);opacity:1}
.taskform .btn{padding:8px 14px;white-space:nowrap}
.taskform select{appearance:auto}
@media (max-width:980px){
  .taskform, .taskform:not(.compact){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .taskform input[name="text"], .taskform:not(.compact) .tf-notes{grid-column:1 / -1}
}
.task.agenda{align-items:flex-start;padding:9px 2px}
.task.agenda input[type="checkbox"]{margin-top:3px}
.task.agenda span{flex:0 0 auto}
.task.agenda .ttext{flex:1 1 auto;cursor:pointer;line-height:1.4}
.task.agenda .ttext small{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.task.agenda .ttext:hover{color:var(--navy)}
:root[data-theme="dark"] .task.agenda .ttext:hover{color:var(--gold)}
.task.agenda.done span{text-decoration:none}
.task.agenda.done .ttext{text-decoration:line-through;color:var(--muted)}
.task.agenda.done .tmeta,.task.agenda.done .pill{opacity:.55}
.tmeta{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;min-width:0;margin-top:1px}
.tmeta:empty{display:none}
.kindtag{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--navy);border:1px solid var(--navy);padding:1px 6px;border-radius:2px}
:root[data-theme="dark"] .kindtag{color:var(--gold);border-color:var(--gold)}
.tdate{font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
.tdate.late,.task.agenda.late .tdate{color:var(--danger);font-weight:700}
.task.agenda .xline{opacity:0;transition:opacity .15s ease-out}
.task.agenda:hover .xline,.task.agenda:focus-within .xline{opacity:1}
.task-editwrap{padding:10px 0;border-bottom:1px solid var(--rule-soft)}
.pill.urg-low{background:var(--panel-2);color:var(--muted)}
.pill.urg-high{background:var(--gold-soft);color:var(--gold-ink)}
.pill.urg-urgent{background:var(--danger-soft);color:var(--danger)}
.panel-head .count{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);margin-left:8px}

/* job rows in Today / Calendar */
.jobrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit;font-size:14px}
/* Γραμμές που κάθονται ΑΠΕΥΘΕΙΑΣ μέσα σε πάνελ παίρνουν το ίδιο περιθώριο 20px με
   κάθε άλλο περιεχόμενο πάνελ (.panel-body, .deadline, πίνακες). Χωρίς αυτό
   κολλάνε στις άκρες και σπάει η κάθετη γραμμή του πάνελ. */
.panel > .task, .panel > .jobrow, .panel > .task-editwrap,
.rowlist > .task, .rowlist > .jobrow, .rowlist > .deadline{padding-left:20px;padding-right:20px}
.jobrow:hover .jtitle{color:var(--navy)}
:root[data-theme="dark"] .jobrow:hover .jtitle{color:var(--gold)}
.jobrow.stale{background:color-mix(in srgb, var(--danger-soft) 55%, transparent)}
.jtitle{min-width:0;font-weight:600;overflow-wrap:break-word}
.jtitle small{display:block;font-size:12px;font-weight:400;color:var(--muted)}
.jmeta{display:flex;align-items:center;gap:8px;flex-shrink:0}

/* ===== calendar ===== */
.calgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
@media (max-width:980px){ .calgrid{grid-template-columns:minmax(0,1fr)} }
#daypanel .taskform, #daypanel .taskform.compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#daypanel .taskform input[name="text"]{grid-column:1 / -1}
#daypanel .taskform .btn{grid-column:1 / -1;justify-content:center}
.cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule)}
.cal-head span{padding:9px 8px 7px;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.cal-head span:nth-child(n+6){color:var(--navy)}
.cal-body{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid var(--rule-soft)}
.cal-cell{
  min-height:96px;min-width:0;padding:6px 6px 8px;border-right:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);
  display:flex;flex-direction:column;gap:3px;cursor:pointer;position:relative;
  transition:background .15s ease-out;
}
.cal-cell:hover{background:var(--panel-2)}
.cal-cell.pad{cursor:default;background:repeating-linear-gradient(-45deg,transparent 0 6px,var(--rule-soft) 6px 7px)}
.cal-cell.pad:hover{background:repeating-linear-gradient(-45deg,transparent 0 6px,var(--rule-soft) 6px 7px)}
.cal-n{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);line-height:1;margin-bottom:3px;width:24px;height:24px;display:grid;place-items:center;border-radius:50%}
.cal-cell.today .cal-n{background:var(--navy);color:#fff}
:root[data-theme="dark"] .cal-cell.today .cal-n{background:var(--gold);color:#14232f}
.cal-cell.sel{box-shadow:inset 0 0 0 2px var(--gold)}
.cal-cell.sel:not(.today) .cal-n{color:var(--ink)}
.chip{
  display:block;font-size:11px;line-height:1.3;padding:2px 6px;border-radius:2px;
  background:var(--navy-tint);color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.chip.gold{background:var(--gold-soft);color:var(--gold-ink)}
.chip.navy{background:var(--navy);color:#fff}
.chip.red{background:var(--danger-soft);color:var(--danger);font-weight:700}
.chip.u-high{background:var(--gold-soft);color:var(--gold-ink)}
.chip.u-urgent{color:var(--danger);background:var(--danger-soft);font-weight:700}
.chip.u-low{opacity:.75}
.chip.done{text-decoration:line-through;opacity:.5}
.chip.more{background:transparent;color:var(--muted);font-weight:700;padding-left:4px}
@media (max-width:640px){
  .cal-cell{min-height:56px;padding:4px}
  .cal-cell .chip{display:none}
  .cal-cell .chip:first-of-type{display:block;font-size:0;height:5px;width:5px;padding:0;border-radius:50%;background:var(--navy)}
}

/* ===== production board (kanban) ===== */
.board{display:flex;gap:14px;align-items:flex-start;overflow-x:auto;padding:4px 2px 18px;scroll-snap-type:x proximity}
.kcol{
  flex:1 1 200px;min-width:196px;max-width:320px;background:var(--panel-2);border:1px solid var(--rule-soft);border-radius:3px;
  display:flex;flex-direction:column;max-height:calc(100vh - 230px);scroll-snap-align:start;
  transition:background .15s ease-out, border-color .15s ease-out;
}
.kcol.over{background:var(--gold-soft);border-color:var(--gold)}
.kcol-head{
  display:flex;justify-content:space-between;align-items:center;padding:10px 12px 8px;
  font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);
  border-bottom:2px solid var(--navy);
}
:root[data-theme="dark"] .kcol-head{color:var(--on-navy);border-bottom-color:var(--gold)}
.kcol-head .count{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:700;letter-spacing:0}
.kcol:last-child .kcol-head{border-bottom-color:var(--ok);color:var(--ok)}
.kcol-body{padding:10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:60px;flex:1}
.kcard{
  background:var(--panel);border:1px solid var(--rule);border-radius:2px;padding:10px 11px 9px;cursor:grab;
  box-shadow:var(--shadow);transition:transform .12s ease-out, box-shadow .15s ease-out, opacity .15s ease-out;
}
.kcard:hover{transform:translateY(-1px);box-shadow:var(--shadow-float)}
.kcard:active{cursor:grabbing}
.kcard.dragging{opacity:.45;transform:rotate(-1.5deg)}
.kcard.stale{border-color:var(--danger);background:color-mix(in srgb, var(--danger-soft) 45%, var(--panel))}
.ktitle{font-weight:700;font-size:14px;line-height:1.3;overflow-wrap:break-word}
.kcust{font-size:12.5px;color:var(--muted);margin-top:2px}
.kmeta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:8px}
.kmeta:empty{display:none}
.kdays{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}
.iconbtn.on{background:var(--gold);color:#14232f;border-color:var(--gold)}

/* narrow containers: drawer + phones */
#drawer .taskform, #drawer .taskform.compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin-bottom:12px}
#drawer .taskform input[name="text"], #drawer .taskform .btn{grid-column:1 / -1}
#drawer .taskform .btn{justify-content:center}
#drawer .task.agenda{flex-wrap:wrap;row-gap:4px}
#drawer .task.agenda .ttext{flex:1 1 0;min-width:0}
#drawer .task.agenda .tmeta{order:5;flex-basis:100%;padding-left:26px}
#drawer .task.agenda .tmeta:empty{display:none}
#drawer .task.agenda .pill{order:2}
#drawer .task.agenda .xline{order:3;opacity:1}
@media (max-width:640px){
  .task.agenda{flex-wrap:wrap;row-gap:4px}
  .task.agenda .ttext{flex:1 1 0;min-width:0}
  .task.agenda .tmeta{order:5;flex-basis:100%;padding-left:26px}
  .task.agenda .pill{order:2}
  .task.agenda .xline{order:3;opacity:1}
  .jobrow{flex-wrap:wrap}
  .jmeta{width:100%;justify-content:flex-start}
}

/* ===== quick-new menu ===== */
.newmenu{position:relative}
.newmenu .caret{width:13px;height:13px;margin-left:-2px;opacity:.85}
.newmenu .menu{
  position:absolute;right:0;top:calc(100% + 6px);min-width:230px;z-index:30;
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;box-shadow:var(--shadow-float);padding:6px;
}
.newmenu .menu a{
  display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:2px;text-decoration:none;color:var(--ink);font-size:14px;font-weight:600;
}
.newmenu .menu a svg{width:16px;height:16px;color:var(--navy);flex-shrink:0}
:root[data-theme="dark"] .newmenu .menu a svg{color:var(--gold)}
.newmenu .menu a:hover,.newmenu .menu a:focus-visible{background:var(--panel-2);outline:none}
@media (prefers-reduced-motion: no-preference){
  .newmenu .menu{animation:menuin .14s ease-out}
  @keyframes menuin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
}

/* ===== list filters ===== */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--rule-soft)}
.filters .search{flex:1 1 220px}
.filters select{background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:13.5px;max-width:220px}
.filters select:focus{border-color:var(--focus);outline:none}
.filters .check{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink);cursor:pointer;white-space:nowrap}
.filters .check input{width:15px;height:15px;accent-color:var(--navy);cursor:pointer}
:root[data-theme="dark"] .filters .check input{accent-color:var(--gold)}
.filters .fgroup{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.filters .fcount{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}
.filters .fclear{padding:6px 10px;font-size:12.5px}

/* ===== job lines ===== */
.jlines{width:100%}
.jlines th:first-child{width:52%}
.klines{list-style:none;margin:8px 0 0;padding:6px 0 0;border-top:1px solid var(--rule-soft);font-size:12.5px;display:flex;flex-direction:column;gap:3px}
.klines li{display:flex;justify-content:space-between;gap:10px;color:var(--ink)}
.klines li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.klines li b{font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
.klines li.more{color:var(--muted);justify-content:flex-start}

/* ===== segmented (Πελάτες | Προμηθευτές) ===== */
.segmented{display:inline-flex;border:1px solid var(--rule);border-radius:3px;overflow:hidden;background:var(--panel)}
.segmented a{padding:6px 14px;font-size:12.5px;font-weight:700;letter-spacing:.04em;text-decoration:none;color:var(--muted);border-right:1px solid var(--rule)}
.segmented a:last-child{border-right:none}
.segmented a.on{background:var(--navy);color:#fff}
/* Στο σκούρο θέμα το ενεργό tab ΔΕΝ παίρνει χρυσό: ο χρυσός είναι το ένα σήμα
   δράσης της εφαρμογής και δίπλα του κάθεται συνήθως το κύριο κουμπί. Ένα ανοιχτό
   μπλε πλακίδιο λέει «είσαι εδώ» χωρίς να ανταγωνίζεται. */
:root[data-theme="dark"] .segmented a.on{background:var(--navy);color:var(--ground)}

/* ===== inventory ===== */
.invfields{border:1px solid var(--rule-soft);border-radius:3px;padding:12px 14px 4px;background:var(--panel-2)}
.invhead{margin-bottom:10px}
.invhead .check{font-weight:700}
#invgrid{transition:opacity .15s ease-out}
.stocknow{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;padding:9px 0}
.stocknow small{font-weight:400;color:var(--muted);font-size:12.5px}
.stockq{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.stockq small{font-weight:400;color:var(--muted)}
td .pill.stock-low,td .pill.stock-short,td .pill.stock-out{margin-left:8px}
.pill.stock-low{background:var(--gold-soft);color:var(--gold-ink)}
.pill.stock-short,.pill.stock-out{background:var(--danger-soft);color:var(--danger)}
.klines li.short b{color:var(--danger)}
.klines li.short span::after{content:" !";color:var(--danger);font-weight:800}

/* ===== alerts ===== */
.panel.alerts .panel-head h2{color:var(--danger)}
.alert{display:flex;gap:12px;align-items:flex-start;padding:10px 16px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:var(--ink);font-size:14px;line-height:1.4}
.alert:last-child{border-bottom:none}
.alert:hover{background:var(--panel-2)}
.alert .aicon{flex-shrink:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--danger-soft);color:var(--danger);margin-top:1px}
.alert.low .aicon{background:var(--gold-soft);color:var(--gold-ink)}
.alert .aicon svg{width:14px;height:14px}
.alert .atext small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
#kbalerts .panel{margin-bottom:16px}

/* ===== expenses ===== */
.exp-band{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.exp-band .stat.wide2{padding-top:14px}
.catbars{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.catbar{display:grid;grid-template-columns:180px minmax(0,1fr) 90px;align-items:center;gap:10px;font-size:12.5px}
.catbar span{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.catbar i{display:block;height:8px;background:var(--navy);min-width:3px}
:root[data-theme="dark"] .catbar i{background:var(--gold)}
.catbar b{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.filters input[type="month"]{background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:7px 10px;font-size:13.5px}
.filters input[type="month"]:disabled{opacity:.5}
@media (max-width:820px){ .exp-band{grid-template-columns:minmax(0,1fr)} .catbar{grid-template-columns:120px minmax(0,1fr) 80px} }
.rcvrow{flex-wrap:nowrap}
.rcvrow #i_rcv{flex:0 0 150px;min-width:120px}
.rcvrow #i_rcvref{flex:1 1 200px}
@media (max-width:640px){ .rcvrow{flex-wrap:wrap} }
.rcvrow .btn{flex:0 0 auto}

/* subscription renewals */
.chip.subr{background:var(--gold-soft);color:var(--gold-ink);border-left-color:var(--gold)}
.alert.renew .aicon{background:var(--gold-soft);color:var(--gold-ink)}
.deadline.renewrow{text-decoration:none;cursor:pointer}
.deadline.renewrow:hover{background:var(--panel-2)}

/* ===== auth gate (login / create account) ===== */
.gate{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--ground);padding:24px}
.gate-card{
  width:100%;max-width:420px;background:var(--panel);border:1px solid var(--rule);border-radius:2px;
  box-shadow:var(--shadow-float);padding:34px 36px 30px;position:relative;
}
.gate-brand{display:flex;align-items:baseline;gap:12px;margin-bottom:22px;padding-bottom:14px;border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule)}
.gate-wm{font-family:var(--didot);font-size:34px;color:var(--navy);line-height:1}
.gate-tag{font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.gate-card h1{font-size:19px;font-weight:800;letter-spacing:-.01em;margin:0 0 6px}
.gate-sub{font-size:13.5px;color:var(--muted);line-height:1.5;margin:0 0 16px}
.gate-form{display:flex;flex-direction:column;gap:14px;margin-top:14px}
.gate-form .btn.wide{justify-content:center;padding:11px 16px;margin-top:4px}
.gate-form .err{color:var(--danger);font-size:13.5px;font-weight:600}
.gate-foot{font-size:12.5px;color:var(--muted)}
/* Επεξήγηση μέσα στην πύλη: ίδιο μέγεθος με το .gate-sub, αλλά με αέρα γύρω
   της ώστε να μη διαβάζεται σαν συνέχεια του τίτλου. */
.gate-note{font-size:13px;color:var(--muted);line-height:1.5;margin:14px 0}
.gate-card .btn.wide{display:flex;justify-content:center;width:100%;padding:11px 16px}
:root[data-theme="dark"] .gate-wm{color:var(--on-navy)}
@media (prefers-reduced-motion: no-preference){
  .gate-card{animation:gatein .3s ease-out}
  @keyframes gatein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
}

/* 2FA */
.totp-secret{
  font-family:ui-monospace,Consolas,monospace;font-size:17px;letter-spacing:.12em;font-weight:700;
  background:var(--panel-2);border:1px dashed var(--rule);border-radius:2px;padding:12px 14px;
  user-select:all;overflow-wrap:break-word;
}
.totp-input{font-variant-numeric:tabular-nums;letter-spacing:.35em;font-size:19px;text-align:center;max-width:180px}
.gate-form .totp-input{max-width:none}

/* data import */
.impstats{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px}
.impstat{font-size:13px;color:var(--muted)}
.impstat b{font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums;margin-right:4px}
.impdetail{margin-top:8px;font-size:12.5px;color:var(--muted)}

/* ===== reports & charts ===== */
.panel.chart{padding:16px 18px 12px;margin-top:16px}
.chead{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.chead h3{font-size:12px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;margin:0;color:var(--ink)}
.clegend{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.clegend span{display:inline-flex;align-items:center;gap:6px}
.clegend i{width:10px;height:10px;border-radius:2px;display:inline-block}
.panel.chart svg{width:100%;height:auto;display:block}
.cgrid{stroke:var(--rule-soft);stroke-width:1}
.cgrid.base{stroke:var(--rule);stroke-width:1.5}
.ctick{font-size:10.5px;fill:var(--muted);font-variant-numeric:tabular-nums}
.tview{margin-top:8px}
.tview summary{font-size:12px;color:var(--muted);cursor:pointer;padding:4px 0}
.tview table{font-size:12.5px}
.charttip{
  position:fixed;z-index:90;background:var(--navy-deep);color:#fff;border-radius:3px;padding:8px 11px;
  font-size:12.5px;line-height:1.5;pointer-events:none;box-shadow:var(--shadow-float);
}
.charttip b{font-variant-numeric:tabular-nums}
.charttip i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:6px}
.chgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:16px}
.chgrid .panel.chart{margin-top:0}
@media (max-width:980px){ .chgrid{grid-template-columns:minmax(0,1fr)} }
.hbars{display:flex;flex-direction:column;gap:7px}
.hbar{display:grid;grid-template-columns:170px minmax(0,1fr) 80px;align-items:center;gap:10px;font-size:13px}
.hbar .hname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.hbar .htrack{background:var(--panel-2);border-radius:2px;height:14px;overflow:hidden}
.hbar .htrack i{display:block;height:100%;border-radius:0 3px 3px 0;min-width:2px}
.hbar .hval{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.repnote{padding:10px 16px;font-size:13.5px;border-bottom:1px solid var(--rule-soft);color:var(--muted)}
.repnote b{color:var(--ink)}
tr.totrow td{font-weight:800;border-top:2px solid var(--navy)}
@media print{
  .masthead, .filters, .noprint, #sidetab, #drawer, #calcpop, .segmented, .pagehead .btn{display:none !important}
  .page{padding:0;max-width:none}
  .panel{border:none;box-shadow:none}
  body{background:#fff}
}
@media (max-width:640px){ .hbar{grid-template-columns:96px minmax(0,1fr) 70px} }

/* ---- Ρυθμίσεις → Λίστες: chips κατηγοριών & λίστες αναφοράς ---- */
.chiprow{display:flex;flex-wrap:wrap;gap:8px}
.tagchip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px 5px 12px;border:1px solid var(--rule);border-radius:4px;background:var(--panel-2);font-size:13.5px;color:var(--ink)}
.chipx{border:none;background:none;color:var(--muted);font-size:15px;line-height:1;padding:2px 4px;cursor:pointer;border-radius:3px}
.chipx:hover{color:var(--danger);background:var(--danger-soft)}
.reflist{border:1px solid var(--rule-soft);border-radius:2px;margin-bottom:10px;background:var(--panel)}
.reflist summary{padding:10px 14px;cursor:pointer;font-weight:600;font-size:14px;color:var(--ink)}
.reflist summary .sub{font-weight:400;color:var(--muted)}
.reflist[open] summary{border-bottom:1px solid var(--rule-soft)}
.reflist .tablewrap{padding:0 14px 12px}

/* ---- Οδηγός ρύθμισης: μπάρα βημάτων ---- */
.wizsetup{max-width:720px}
.wizbar{display:flex;align-items:center;justify-content:center;margin:0 0 22px}
.wdot{width:28px;height:28px;border-radius:50%;background:var(--panel-2);border:1px solid var(--rule);color:var(--muted);font-weight:800;font-size:13px;display:grid;place-items:center;flex-shrink:0}
.wdot.done{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}
.wdot.now{background:var(--gold);border-color:var(--gold);color:var(--navy-deep)}
.wrule{height:2px;background:var(--rule-soft);flex:1;max-width:64px}
.wrule.done{background:var(--navy)}
.wizfoot{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:18px}
.wizfoot a:first-child,.wizfoot button:first-child{margin-right:auto}

/* ---- combobox (αναζητήσιμη επιλογή, π.χ. πελάτης στην καρτέλα) ---- */
.combofield{position:relative}
.combolist{position:absolute;top:100%;left:0;right:0;z-index:40;margin-top:4px;background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);max-height:320px;overflow-y:auto}
.combolist .opt{padding:8px 12px;font-size:13.5px;cursor:pointer;display:flex;flex-direction:column;gap:1px;border-bottom:1px solid var(--rule-soft)}
.combolist .opt:last-child{border-bottom:none}
.combolist .opt .sub{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.combolist .opt:hover,.combolist .opt.on{background:var(--navy-tint)}

/* ---- ημερολόγιο: προβολή εβδομάδας & ημέρας ---- */
.cal-cell.wk{min-height:220px}

/* ---- ημερολόγιο: χρονοδιάγραμμα ωρών (ημέρα & εβδομάδα) ---- */
.tlwrap{overflow-x:auto}
.timeline{min-width:1180px;--tlcols:92px 190px repeat(15,minmax(56px,1fr))}
.tl-head{display:grid;grid-template-columns:var(--tlcols);border-bottom:2.5px solid var(--navy);box-shadow:inset 0 -5px 0 -4px var(--rule)}
.tl-head span{padding:9px 6px 7px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--rule-soft);white-space:nowrap}
.tl-head span:first-child{border-left:none}
.tl-row{display:grid;grid-template-columns:var(--tlcols);border-bottom:1px solid var(--rule-soft)}
.tl-row:last-child{border-bottom:none}
.tl-day{padding:10px 8px;font-size:12.5px;color:var(--muted);cursor:pointer;display:flex;align-items:flex-start;gap:5px;line-height:1.3}
.tl-day b{color:var(--ink);text-transform:uppercase;font-size:11px;letter-spacing:.08em}
.tl-day.today{background:var(--gold-soft);color:var(--ink)}
.tl-day.sel{background:var(--navy-tint)}
.tl-cell{border-left:1px solid var(--rule-soft);padding:6px;min-height:72px;cursor:pointer;display:flex;flex-direction:column;gap:3px;align-items:flex-start;transition:background .15s ease-out}
.tl-cell:hover{background:var(--panel-2)}
.tl-cell.sel{background:var(--navy-tint)}
.tl-cell.now{background:var(--gold-soft)}
.tl-cell .chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-allday{background:var(--panel-2)}
.tl-allday:hover{background:var(--navy-tint)}
.timeline.one .tl-cell{min-height:190px}

/* ---- αναδυόμενο «Προσθήκη» στα κελιά του ημερολογίου ---- */
.calpop2{position:fixed;z-index:70;background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);min-width:180px;padding:6px}
.calpop2 .cph{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:6px 10px 8px;border-bottom:1px solid var(--rule-soft);margin-bottom:4px;font-variant-numeric:tabular-nums}
.calpop2 button{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;text-align:left;padding:8px 10px;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;border-radius:2px}
.calpop2 button:hover,.calpop2 button:focus-visible{background:var(--navy-tint);color:var(--navy)}
.calpop2 button svg{width:15px;height:15px;color:var(--navy)}

/* ---- κάρτες λειτουργιών «σύντομα» ---- */
/* Η κεφαλίδα της ομάδας «αργότερα» λέει ρητά ότι αυτά είναι εκτός άδειας, ώστε
   κανείς να μη νομίσει ότι του λείπει κάτι από αυτά που πλήρωσε. */
.soonhead{margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--rule-soft)}
.soonhead p{margin:5px 0 0;font-size:12.5px;color:var(--muted);max-width:70ch}
.modecard.soon{opacity:.6;cursor:default}
.modecard.soon:hover{border-color:var(--rule)}
/* Το «.modecard span{display:block}» παραπάνω κάνει και το pill μπλοκ, οπότε
   απλωνόταν σε όλο το πλάτος της κάρτας αντί να κάθεται δίπλα στον τίτλο. */
.modecard.soon .pill{display:inline-block;margin-left:6px;vertical-align:middle}

/* ---- προθεσμία εξόφλησης ---- */
.sub.latecolor{color:var(--danger);font-weight:700}

/* ---- σχόλια δοκιμής (feedback) ---- */
.fbpop{position:fixed;top:70px;right:18px;z-index:65;width:360px;max-width:92vw;background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);padding:12px}
.fbpop .cph{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-bottom:8px;border-bottom:1px solid var(--rule-soft);margin-bottom:10px}
/* πεδία εκτός .field (φόρμα σχολίων, λίστες, λοιπά έσοδα): ίδια εμφάνιση με τα κανονικά,
   ώστε να έχουν σωστό contrast και στο σκούρο θέμα */
.fbpop textarea, #catadd input, #seradd input, #oiform input, #ecatadd input, .esubadd input, .avadd input{
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:9px 11px;font-size:14px;color:var(--ink);
}
.fbpop textarea{width:100%;resize:vertical}
.fbpop textarea:focus, #catadd input:focus, #seradd input:focus, #oiform input:focus, #ecatadd input:focus, .esubadd input:focus, .avadd input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent)}
.fbpop textarea::placeholder, #catadd input::placeholder, #seradd input::placeholder, #oiform input::placeholder, #ecatadd input::placeholder, .esubadd input::placeholder, .avadd input::placeholder{color:var(--muted);opacity:1}

/* ---- avatar & μενού λογαριασμού ---- */
.avatarwrap{position:relative;display:flex;align-items:center}
.avatarbtn{width:34px;height:34px;border-radius:3px;border:1px solid rgba(255,255,255,.35);background:#fff;cursor:pointer;padding:2px;display:grid;place-items:center;overflow:hidden}
.avatarbtn img{max-width:100%;max-height:100%;object-fit:contain}
.avatarbtn span{font-weight:800;font-size:15px;color:var(--navy-deep)}
.usermenu{position:absolute;top:calc(100% + 8px);right:0;z-index:70;min-width:220px;background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);padding:6px;color:var(--ink)}
.um-head{padding:8px 10px 10px;border-bottom:1px solid var(--rule-soft);margin-bottom:6px;display:flex;flex-direction:column}
.um-head b{font-size:13.5px}
.um-head span{font-size:12px;color:var(--muted)}
.um-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:8px 10px 3px}
.um-item{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;text-align:left;padding:7px 10px;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;border-radius:2px;text-decoration:none;box-sizing:border-box}
.um-item:hover{background:var(--navy-tint);color:var(--navy)}
.um-item.on::after{content:"✓";margin-left:auto;color:var(--gold-ink);font-weight:800}
.um-item svg{width:15px;height:15px}
.um-sep{height:1px;background:var(--rule-soft);margin:6px 0}

/* ---- μπαλόνι & πάνελ υποστήριξης (κάτω δεξιά) ---- */
.chatballoon{position:fixed;right:18px;bottom:18px;z-index:58;width:52px;height:52px;border-radius:3px;border:none;background:var(--navy-deep);color:var(--gold);cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow-float)}
.chatballoon svg{width:24px;height:24px}
.chatballoon:hover{filter:brightness(1.2)}
.chatdot{position:absolute;top:-4px;right:-4px;width:14px;height:14px;border-radius:50%;background:var(--gold);border:2px solid var(--ground)}
.chatpanel{position:fixed;right:18px;bottom:82px;z-index:58;width:380px;max-width:94vw;background:var(--panel);border:1px solid var(--rule);border-radius:2px;box-shadow:var(--shadow-float);display:flex;flex-direction:column;max-height:min(560px,72vh)}
.chp-head{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--navy-deep);color:var(--on-navy);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.chp-x{background:none;border:none;color:var(--on-navy);font-size:19px;cursor:pointer;line-height:1;padding:0 2px}
.chp-body{overflow-y:auto;padding:12px 14px;flex:1;display:flex;flex-direction:column;gap:14px}
.chp-thread{display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--rule-soft);padding-bottom:12px}
.chp-thread:last-child{border-bottom:none}
.chp-msg{max-width:88%;padding:8px 11px;border-radius:3px;font-size:13.5px;white-space:pre-wrap;line-height:1.45}
.chp-msg.mine{align-self:flex-end;background:var(--navy-tint);color:var(--ink)}
.chp-msg.theirs{align-self:flex-start;background:var(--panel-2);border:1px solid var(--rule)}
.chp-meta{display:block;font-size:11px;color:var(--muted);margin-top:3px}
.chp-meta .okc{color:var(--ok)}
.chp-replylink{align-self:flex-end;background:none;border:none;color:var(--navy);font-size:12px;font-weight:700;cursor:pointer;padding:2px 0}
.chp-replyform{display:flex;gap:6px;align-items:flex-start}
.chp-replyform textarea{flex:1}
.chp-new{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--rule-soft);align-items:flex-start}
.chp-new textarea{flex:1;resize:none}
.chp-empty{color:var(--muted);font-size:13.5px;margin:auto 0;text-align:center}
.chatpanel textarea, .fbreply textarea{background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:8px 10px;font-size:13.5px;color:var(--ink)}

/* ---- εισαγωγή παραστατικού λήψης (σάρωση/OCR) ---- */
.dropzone{
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:44px 24px;background:var(--panel);border:1px solid var(--rule);border-top:2.5px solid var(--navy);
  border-radius:2px;cursor:pointer;transition:background .18s ease-out,border-color .18s ease-out;
}
.dropzone:hover,.dropzone.over,.dropzone:focus-visible{background:var(--navy-tint);border-top-color:var(--gold)}
.dropzone svg{width:30px;height:30px;color:var(--navy);opacity:.75}
.dropzone b{font-size:15px;color:var(--ink)}
.dropzone span{font-size:13.5px;color:var(--muted)}
.dropzone small{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.progress{height:5px;background:var(--rule-soft);border-radius:2px;overflow:hidden}
.progress i{display:block;height:100%;width:100%;transform:scaleX(.06);transform-origin:left;background:var(--gold);transition:transform .3s ease-out}
.intakegrid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:18px;align-items:start}
.intakeprev{position:sticky;top:78px}
.intakeimg{width:100%;display:block;border:1px solid var(--rule);border-radius:2px;background:#fff}
.ocrtext{margin:8px 0 0;padding:10px 12px;background:var(--navy-tint);border:1px solid var(--rule-soft);border-radius:2px;
  font-family:ui-monospace,Consolas,monospace;font-size:12px;line-height:1.55;color:var(--ink);
  max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.intakewarn{margin:14px 0 4px;padding:9px 12px;background:var(--gold-soft);border:1px solid var(--gold);border-radius:2px;font-size:13px;color:var(--gold-ink)}
.attachbox{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.attachbox .sub{margin:0}
.attmark{display:inline-flex;vertical-align:middle;color:var(--muted);margin-left:4px}
.attmark svg{width:14px;height:14px}
@media (max-width:900px){ .intakegrid{grid-template-columns:minmax(0,1fr)} .intakeprev{position:static} }
.optnote{font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted)}

/* ============================================================
   ΠΡΟΣΑΡΜΟΓΗ ΣΕ ΟΘΟΝΕΣ — τηλέφωνο, tablet, φορητό, γραφείο
   Ο κόσμος μένει ο ίδιος: ιστίο ναυτικού μπλε πάνω από χαραγμένα
   φύλλα. Στο τηλέφωνο το φύλλο δεν στενεύει, γίνεται δελτίο.
   ============================================================ */

/* -- ασφαλείς περιοχές (εγκοπή/δείκτης home σε σύγχρονα κινητά) -- */
.masthead-inner{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}
.page{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}

/* -- μεγαλύτεροι στόχοι όπου το δάχτυλο είναι ο δείκτης -- */
@media (pointer:coarse){
  .iconbtn,.avatarbtn{width:42px;height:42px}
  .iconbtn svg{width:19px;height:19px}
  .segmented a{padding:11px 16px}
  .btn{padding:11px 18px;min-height:42px}
  .btn-quiet{padding:11px 16px}
  .xline{width:38px;height:38px}
  .chipx{padding:8px 10px}
  input[type="checkbox"],.filters .check input,.task input[type="checkbox"]{width:20px;height:20px}
  .field input,.field select,.field textarea,.filters select,.filters input{min-height:42px}
  .lines input,.lines select{min-height:42px}
  .reflist summary,details>summary{padding:14px;min-height:44px;display:flex;align-items:center;gap:6px}
  .um-item{padding:11px 12px}
  .calpop2 button{padding:11px 12px}
  /* ο δείκτης δεν αιωρείται: η ετικέτα του μενού δεν έχει νόημα */
  .mainnav a::before{display:none}
}

/* -- ταινίες καρτελών: κυλούν οριζόντια αντί να σπρώχνουν τη σελίδα -- */
@media (max-width:760px){
  /* η ταινία γίνεται κυλιόμενη ΜΟΝΟ αν οι πρόγονοί της επιτρέπουν συρρίκνωση:
     τα flex items έχουν min-width:auto και κρατούν το πλάτος του περιεχομένου */
  .pagehead>*, .pagehead>div>*{min-width:0;max-width:100%}
  .segmented{display:flex;min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .segmented::-webkit-scrollbar{display:none}
  .segmented a{flex:0 0 auto;white-space:nowrap}
  .wizbar{overflow-x:auto;scrollbar-width:none;justify-content:flex-start}
  .wizbar::-webkit-scrollbar{display:none}
  .wrule{min-width:24px}
  .pagehead{gap:10px}
}

/* -- ΠΙΝΑΚΕΣ ΩΣ ΔΕΛΤΙΑ: κάτω από 640px κάθε εγγραφή γίνεται μπλοκ,
      με την επικεφαλίδα της στήλης ως ετικέτα αριστερά και την τιμή δεξιά.
      Οι ετικέτες μπαίνουν αυτόματα από το thead (labelTableCells). -- */
@media (max-width:640px){
  .page table,
  .page table>tbody,
  .page table>tbody>tr,
  .page table>tbody>tr>td{display:block;width:auto}
  .page table>thead{display:none}
  .page table>tbody>tr{
    padding:12px 16px;border-bottom:1px solid var(--rule);
  }
  .page table>tbody>tr:last-child{border-bottom:none}
  .page table>tbody>tr>td{
    display:grid;grid-template-columns:minmax(84px,40%) minmax(0,1fr);gap:12px;align-items:baseline;
    padding:3px 0;border:none;text-align:right;
  }
  .page table>tbody>tr>td[data-label]::before{
    content:attr(data-label);
    font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
    color:var(--muted);text-align:left;line-height:1.5;
  }
  /* το πρώτο κελί είναι ο τίτλος του δελτίου, όχι ζεύγος ετικέτας/τιμής */
  .page table>tbody>tr>td:first-child{
    display:block;text-align:left;font-weight:700;font-size:15px;padding:0 0 6px;
  }
  .page table>tbody>tr>td:first-child::before{content:none}
  .page table>tbody>tr>td .sub{display:block;text-align:left;font-weight:400}
  .page table>tbody>tr>td:first-child .sub{margin-top:2px}
  .page table>tbody>tr>td:empty{display:none}
  /* οι ενδείξεις κατάστασης κάθονται στη δεξιά στήλη, δεν τεντώνονται */
  .page table>tbody>tr>td>.pill{justify-self:end}
  /* γραμμές συνόλων: κρατούν τη χοντρή γραμμή του καθολικού */
  .page table>tbody>tr.totrow{border-top:2px solid var(--navy)}
  .page table>tbody>tr.totrow td{font-weight:800}
  /* γραμμές παραστατικού υπό έκδοση: ετικέτα πάνω, πεδίο σε όλο το πλάτος */
  .page table.lines>tbody>tr>td{grid-template-columns:minmax(0,1fr);gap:4px;text-align:left;padding:5px 0}
  /* στις γραμμές παραστατικού το πρώτο κελί είναι κι αυτό πεδίο — κρατά ετικέτα */
  .page table.lines>tbody>tr>td:first-child{display:grid;font-weight:400;font-size:inherit;padding-bottom:5px}
  .page table.lines>tbody>tr>td:first-child::before{content:attr(data-label)}
  .page table.lines>tbody>tr>td::before{text-align:left}
  .page table.lines input,.page table.lines select{width:100%}
  .page table.lines>tbody>tr{border-bottom:2px solid var(--rule)}
}

/* -- τα δύο αιωρούμενα στοιχεία δεν πατάνε πάνω στο περιεχόμενο -- */
.chatballoon{right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}
.chatpanel{right:max(18px,env(safe-area-inset-right));bottom:calc(max(18px,env(safe-area-inset-bottom)) + 64px)}
@media (max-width:900px){
  /* η καρτέλα «Σημειώσεις» φεύγει από την πλαϊνή ακμή και γίνεται
     κουμπί κάτω αριστερά — δεν κρύβει πια κείμενο και πίνακες */
  #sidetab{
    top:auto;bottom:max(18px,env(safe-area-inset-bottom));left:max(14px,env(safe-area-inset-left));right:auto;
    transform:none;writing-mode:horizontal-tb;border-radius:3px;padding:13px 16px;
  }
  #sidetab:hover{transform:none}
  .page{padding-bottom:88px}
}
@media (max-width:640px){
  .chatballoon{width:46px;height:46px}
  .chatpanel{left:12px;right:12px;width:auto;max-width:none}
}

/* -- ημερολόγιο σε τηλέφωνο: το χρονοδιάγραμμα κυλά, δεν συνθλίβεται -- */
@media (max-width:640px){
  .timeline{--tlcols:64px 132px repeat(15,minmax(52px,1fr))}
  .cal-head span{padding:8px 3px 6px;font-size:10px;letter-spacing:.04em}
}
.mksuprow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.mksuprow input{flex:1 1 200px;min-width:0;background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:9px 11px;font-size:14px;color:var(--ink)}
.mksuprow input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent)}
.mksuprow input::placeholder{color:var(--muted);opacity:1}

/* ---- πρότυπο ανάγνωσης: ορισμός περιοχών πάνω στο παραστατικό ----
   Κάθε πεδίο έχει το δικό του χρώμα και βάφει την περιοχή του· τα χρώματα εδώ
   είναι ΚΩΔΙΚΟΠΟΙΗΣΗ ΔΕΔΟΜΕΝΩΝ, όχι διακόσμηση — γι' αυτό βγαίνουν έξω από τη
   δυάδα ναυτικό/χρυσό, κρατώντας όμως θεσμικούς, σβησμένους τόνους. */
.tplstage{
  position:relative;overflow:hidden;background:var(--panel-2);
  border:1px solid var(--rule);border-radius:2px;
  touch-action:none;user-select:none;cursor:grab;
}
.tplstage.zoomed{cursor:grab}
.tplstage.panning{cursor:grabbing}
.tplstage.marking{cursor:crosshair}
.tplcanvas{position:absolute;top:0;left:0;width:100%;transform-origin:0 0;line-height:0;--iz:1}
.tplimg{display:block;width:100%;height:auto;background:#fff}
.tplrects{position:absolute;inset:0;pointer-events:none}
/* Το 60% μπαίνει στο ΧΡΩΜΑ, όχι στο opacity του στοιχείου: αλλιώς ξεθωριάζει
   μαζί και η ετικέτα του πεδίου, που πρέπει να μένει ευανάγνωστη. */
.tplrect{position:absolute;display:block;background:color-mix(in srgb, var(--fld) 60%, transparent);border-radius:2px}
.tplrect.active{background:color-mix(in srgb, var(--fld) 75%, transparent);outline:2px solid var(--fld)}
.tplrect b{
  position:absolute;top:0;left:0;background:var(--fld);color:#fff;
  font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  padding:2px 5px;line-height:1.4;white-space:nowrap;
  transform:scale(var(--iz));transform-origin:0 0;
}
.tplswatch{display:inline-block;width:11px;height:11px;border-radius:2px;background:var(--fld);margin-right:8px;vertical-align:-1px}
/* Η σελίδα του παραστατικού είναι όλη η δουλειά· ο κατάλογος πεδίων είναι
   συνοδευτικός. Τρία τέταρτα στην εικόνα, ένα στα πεδία. */
.tplgrid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,1fr);gap:18px;align-items:start}
.tplside{position:sticky;top:78px}
.tplside .panel-head{flex-wrap:wrap;row-gap:6px}
.tplside .panel-head .pill{white-space:normal;text-align:left;line-height:1.35}
.tplfields{list-style:none;margin:0;padding:0}
.tplfield{
  display:grid;grid-template-columns:11px minmax(0,1fr) auto;
  align-items:center;column-gap:8px;row-gap:3px;
  padding:9px 16px;border-top:1px solid var(--rule-soft);
}
.tplfield:first-child{border-top:0}
.tplfield .tplswatch{margin:0}
.tplname{font-size:13.5px;color:var(--ink);min-width:0;overflow-wrap:anywhere}
.tplfield .btn{padding:4px 10px;font-size:12px}
.tplfield .tplfound{grid-column:2 / 4;font-size:12px;color:var(--ink);line-height:1.4}
.tplfoot{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
@media (max-width:1100px){
  .tplgrid{grid-template-columns:minmax(0,1fr)}
  .tplside{position:static}
}
.f-date{--fld:#00396e}
.f-docRef{--fld:#8a6a00}
.f-afm{--fld:#0f6b74}
.f-net{--fld:#1f6b52}
.f-vat{--fld:#8c3a76}
.f-gross{--fld:#a33c2f}
.f-mark{--fld:#4a4f8c}
.tplbar{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.tplbar .btn{padding:7px 12px}
.tplzval{font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--muted);min-width:46px;text-align:center}
.tplfound{font-variant-numeric:tabular-nums;word-break:break-word}
.tplacts{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end}

/* Παραστατικά από την ΑΑΔΕ: πίνακας επιλογής υπάρχοντος εξόδου κάτω από τη γραμμή */
tr.ibpickrow>td{background:var(--panel-2);padding:12px 16px}
.ibpick{display:flex;flex-direction:column;gap:10px}
.ibpick .search{max-width:420px}
.ibopts{display:flex;flex-wrap:wrap;gap:6px}
.ibopts .btn{font-size:12.5px;padding:6px 10px;font-variant-numeric:tabular-nums;text-align:left}
.ibopts .sub{font-size:13px}
/* Ο εκδότης δεν επιτρέπεται να σπρώξει έξω τα κουμπιά ενεργειών· αν ο χώρος
   τελειώσει, τα κουμπιά τυλίγονται αντί να βγαίνουν έξω από τον πίνακα. */
.ibtbl td:nth-child(2){max-width:230px}
.ibtbl td:nth-child(5){max-width:230px}
.ibtbl td:last-child{white-space:normal}
.ibtbl .tplacts{flex-wrap:wrap}
.ibtbl .tplacts .btn{padding:6px 11px;font-size:12.5px}

/* Ιδιότητες: οι τιμές κάθε ομάδας ως ετικέτες, με τον κωδικό μπροστά */
.attrvals{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.attrval{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 6px 5px 10px;border:1px solid var(--rule);border-radius:3px;
  background:var(--panel-2);font-size:13px;
}
.attrval b{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--muted)}
.attrval .avname{cursor:pointer}
.attrval .avname:hover{text-decoration:underline}
.attrval .avx{
  border:0;background:none;color:var(--muted);cursor:pointer;
  font-size:15px;line-height:1;padding:0 3px;
}
.attrval .avx:hover{color:var(--danger)}
.avadd{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:6px}
.avadd .avv{width:230px}
.avadd .avc{width:92px;text-transform:uppercase}
.avadd .btn{padding:7px 10px}
.avadd .btn svg{width:15px;height:15px}

/* Συνδυασμοί μέσα στην καρτέλα είδους */
.combobox{border-top:1px solid var(--rule-soft)}
.combobox h2{margin:0;font-size:15.5px}
.cbgroups{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.cbgroup .label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.attrval.pick{cursor:pointer;user-select:none;padding-left:8px}
.attrval.pick input{margin:0}
.attrval.pick:has(input:checked){border-color:var(--navy);background:var(--navy-tint)}
.cbtbl input{
  padding:5px 7px;font-size:13px;width:100%;min-width:70px;
  background:var(--panel);border:1px solid var(--rule);border-radius:3px;color:var(--ink);
}
.cbtbl input::placeholder{color:var(--muted);opacity:1}
.cbtbl input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent)}
.cbtbl input.num{text-align:right;font-variant-numeric:tabular-nums;min-width:62px}
.cbtbl .cbstock{font-weight:700}
.cbtbl .cbstock.low{border-color:var(--danger);color:var(--danger)}
.cbtbl .cbdel{padding:4px 9px;font-size:15px;line-height:1}
.vtag{
  display:inline-block;margin-right:5px;padding:2px 7px;border-radius:3px;
  background:var(--panel-2);border:1px solid var(--rule-soft);font-size:12px;white-space:nowrap;
}

/* Ομάδα τύπου «χρώμα»: η απόχρωση επιλέγεται πάνω στην ίδια την ετικέτα */
.agkind{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap}
.agkind input{margin:0}
.attrval input.avhex,.avadd input.avnewhex{
  -webkit-appearance:none;appearance:none;
  width:22px;height:22px;min-width:22px;padding:0;border:1px solid var(--rule);border-radius:50%;
  background:none;cursor:pointer;flex:0 0 auto;box-shadow:none;
}
.avhex::-webkit-color-swatch-wrapper,.avnewhex::-webkit-color-swatch-wrapper{padding:0}
.avhex::-webkit-color-swatch,.avnewhex::-webkit-color-swatch{border:none;border-radius:50%}
.avhex::-moz-color-swatch,.avnewhex::-moz-color-swatch{border:none;border-radius:50%}
.avadd input.avnewhex{width:30px;height:30px;min-width:30px}
.vtag .dot,.attrval .dot{
  display:inline-block;width:11px;height:11px;border-radius:50%;
  border:1px solid var(--rule);margin-right:5px;vertical-align:-1px;flex:0 0 auto;
}

/* Μάρκα δίπλα στο όνομα του είδους: διακριτική ταυτότητα, όχι δεύτερος τίτλος */
.brandtag{
  display:inline-block;margin-left:6px;padding:1px 7px;border-radius:3px;
  background:var(--panel-2);border:1px solid var(--rule-soft);
  font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);
  vertical-align:1px;white-space:nowrap;
}

/* Η γραμμή που μόλις αποθηκεύτηκε: σύντομο σημάδι για να τη βρει το μάτι */
tbody tr.justsaved > td{
  background:var(--gold-soft);
  animation:justsaved 1.4s ease-out forwards;
}
@keyframes justsaved{ from{background:var(--gold-soft)} to{background:transparent} }
@media (prefers-reduced-motion:reduce){
  tbody tr.justsaved > td{animation:none}
}

/* ===== Γραφήματα Γραφείου ===== */
.dashcharts{
  display:grid;gap:18px;margin-top:18px;
  grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);
}
@media (max-width:1000px){ .dashcharts{grid-template-columns:minmax(0,1fr)} }
.chempty{color:var(--muted);font-size:13.5px;padding:26px 0;text-align:center}

/* Δακτύλιος: το γράφημα δείχνει τη σχέση, το υπόμνημα δίνει τα νούμερα —
   ποτέ ταυτότητα μόνο από χρώμα. */
.donutwrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.donut{width:170px;height:170px;flex:0 0 auto}
.donut .dseg{cursor:pointer;transition:opacity .12s ease-out}
.donutwrap:hover .dseg{opacity:.55}
.donutwrap .dseg:hover{opacity:1}
.donut .dtot{text-anchor:middle;font-size:15.5px;font-weight:800;fill:var(--ink);font-variant-numeric:tabular-nums}
.donut .dsub{text-anchor:middle;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;fill:var(--muted)}
.lgds{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:7px}
/* Το υπόμνημα ζει στη στενή στήλη του Γραφείου και τα ονόματα ομάδων είναι
   μεγάλα («Κόστη Αγορών & Προμηθειών»). Δύο σειρές ανά κατηγορία, όνομα πάνω
   και ποσό από κάτω: χωράει ολόκληρο, χωρίς αποσιωπητικά και χωρίς στρίμωγμα. */
.lgd{display:grid;grid-template-columns:11px minmax(0,1fr);align-items:start;column-gap:9px;row-gap:1px;font-size:13px}
.lgd i{width:11px;height:11px;border-radius:2px;margin-top:3px}
.lgd .nm{color:var(--ink);line-height:1.3}
.lgd .fig{grid-column:2;display:flex;gap:8px;align-items:baseline;font-variant-numeric:tabular-nums}
.lgd b{color:var(--ink)}
.lgd .pc{color:var(--muted);font-size:12px}

/* Το Γραφείο δείχνει έξι νούμερα: σε πλάτος μία σειρά, μετά τρία-τρία, μετά δύο. */
.dashband{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (max-width:1280px){ .dashband{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:720px){ .dashband{grid-template-columns:repeat(2,minmax(0,1fr))} }
.dashband .stat .n{font-size:23px}
.dashband .stat{padding:15px 16px 13px}

/* ===== Εναλλασσόμενο πάνελ Γραφείου ===== */
.deckctl{display:inline-flex;align-items:center;gap:8px}
.deckarrow{
  width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--rule);border-radius:3px;
  color:var(--muted);cursor:pointer;transition:background .15s ease-out,color .15s ease-out;
}
.deckarrow:hover{background:var(--panel-2);color:var(--navy);border-color:var(--muted)}
.deckarrow svg{width:15px;height:15px}
.deckdots{display:inline-flex;gap:5px;align-items:center}
.deckdots i{width:6px;height:6px;border-radius:50%;background:var(--rule);display:block}
.deckdots i.on{background:var(--navy)}
.deckempty{text-align:center;color:var(--muted);font-size:14px;padding:30px 20px}
.deckempty svg{width:26px;height:26px;opacity:.5;margin-bottom:8px}
.deckempty p{margin:0 0 12px}
.deckfoot{padding-top:12px;padding-bottom:14px}
/* Παραγωγή ανά στάδιο: το μήκος δείχνει τη σχέση, ο αριθμός δίνει την ακρίβεια */
.stagelist{display:flex;flex-direction:column;gap:9px}
.stagerow{
  display:grid;grid-template-columns:minmax(72px,26%) minmax(0,1fr) 28px;
  align-items:center;gap:12px;text-decoration:none;color:inherit;
}
.stagerow .snm{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stagerow .sbar{height:8px;border-radius:2px;background:var(--panel-2);overflow:hidden}
.stagerow .sbar i{display:block;height:100%;background:var(--navy);border-radius:2px}
.stagerow b{font-variant-numeric:tabular-nums;text-align:right;font-size:13.5px}
.stagerow:hover .snm{text-decoration:underline}
/* Οι εργασίες που ζητούν προσοχή χωρίζονται από τα στάδια με μια γραμμή, όχι με κενό */
.attnlist{border-top:1px solid var(--rule-soft);margin-top:14px}
.attnlist > .jobrow:last-child{border-bottom:none}

/* Λωρίδα ημέρας μέσα στο πάνελ: χωρίς στήλη ημέρας, πιο χαμηλή, κυλάει οριζόντια
   και ανοίγει στην τρέχουσα ώρα. */
.timeline.deckone{min-width:1390px;--tlcols:150px repeat(15,minmax(82px,1fr))}
.timeline.deckone .tl-cell{min-height:118px}
.timeline.deckone .tl-head span{padding:8px 6px 6px}
.deckday{border-bottom:1px solid var(--rule-soft)}
/* Το «Όλη μέρα» μένει καρφωμένο αριστερά όσο κυλάνε οι ώρες: είναι το μόνο
   κελί που πρέπει να φαίνεται πάντα, γιατί εκεί κάθονται οι προθεσμίες. */
.timeline.deckone .tl-head span:first-child,
.timeline.deckone .tl-row > .tl-cell:first-child{
  position:sticky;left:0;z-index:2;
  box-shadow:1px 0 0 var(--rule);
}
.timeline.deckone .tl-head span:first-child{background:var(--panel)}
.timeline.deckone .tl-row > .tl-allday{background:var(--panel-2)}
