/* orgos console - a control-room instrument, not a brochure.
   Committed to one look: dark, machined, dense. Every colour is painted
   explicitly so the panel reads the same on any host. */

:root {
  --ground:   #0A0E0D;
  --panel:    #111716;
  --panel-2:  #172020;
  --panel-3:  #1E2827;
  --line:     #26302E;
  --line-hot: #35433F;
  --text:     #DCE6E3;
  --dim:      #7E8F8B;
  --faint:    #55625F;

  --signal:   #E8A33D;  /* waiting for a human */
  --pass:     #57B583;
  --fail:     #E0604A;
  --run:      #56A6C9;

  --ui: Oxanium, "DejaVu Sans Condensed", sans-serif;
  --data: "Azeret Mono", ui-monospace, "SF Mono", monospace;

  --rail: 27rem;
}

* { box-sizing: border-box; }

html { min-height: 100%; }
body { min-height: 100vh; }

body {
  margin: 0;
  background:
    radial-gradient(120% 80% at 50% -10%, #14201E 0%, transparent 60%),
    var(--ground);
  color: var(--text);
  font-family: var(--data);
  font-size: 13px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

button, input, select, textarea { font: inherit; color: inherit; }

/* ---------- instrument bar ---------- */

.bar {
  display: flex;
  align-items: stretch;
  flex-wrap: wrap;      /* the counters drop to their own row before the page
                           ever scrolls sideways */
  gap: 0;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(#141C1B, #0E1413);
  position: sticky;
  top: 0;
  z-index: 10;
}

.bar-id {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.7rem 1.1rem;
  border-right: 1px solid var(--line);
}

.mark {
  font-family: var(--ui);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text);
}

.tenant {
  font-family: var(--ui);
  font-size: 0.82rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--signal);
  padding: 0.1rem 0.45rem;
  border: 1px solid color-mix(in srgb, var(--signal) 40%, transparent);
}

.lamp {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: var(--pass);
  box-shadow: 0 0 0.5rem var(--pass);
}
.lamp.blocked { background: var(--fail); box-shadow: 0 0 0.5rem var(--fail); }

.counters { display: flex; flex-wrap: wrap; margin-left: auto; }

@media (max-width: 68rem) {
  .counters {
    order: 3;
    width: 100%;
    margin-left: 0;
    border-top: 1px solid var(--line);
  }
  .counter { flex: 1 1 6rem; }
  .bar-tools { margin-left: auto; }
}

.counter {
  padding: 0.55rem 1rem;
  border-left: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 6.2rem;
}
.counter .k {
  font-family: var(--ui);
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--faint);
}
.counter .v {
  font-size: 1.15rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.counter.hot .v { color: var(--signal); }
.counter.hot .k { color: color-mix(in srgb, var(--signal) 70%, var(--faint)); }

.bar-tools { display: flex; align-items: center; gap: 0.6rem; padding: 0 1rem; border-left: 1px solid var(--line); }

.sync {
  font-size: 0.72rem;
  color: var(--faint);
  font-variant-numeric: tabular-nums;
}

/* ---------- banners ---------- */

.banner {
  border-bottom: 1px solid var(--fail);
  background: color-mix(in srgb, var(--fail) 12%, var(--ground));
  padding: 0.6rem 1.1rem;
}
.banner h3 {
  margin: 0 0 0.3rem;
  font-family: var(--ui);
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fail);
}
.banner ul { margin: 0; padding-left: 1.1rem; color: var(--text); }
.banner li { margin: 0.15rem 0; word-break: break-word; }

#toast {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  max-width: 34rem;
  z-index: 40;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.toast {
  border: 1px solid var(--line-hot);
  border-left: 3px solid var(--signal);
  background: var(--panel-2);
  padding: 0.55rem 0.8rem;
  box-shadow: 0 0.6rem 1.4rem rgba(0, 0, 0, 0.5);
}
.toast.bad { border-left-color: var(--fail); }
.toast.good { border-left-color: var(--pass); }

/* ---------- workspace ---------- */

.work {
  display: grid;
  grid-template-columns: var(--rail) minmax(0, 1fr);
  gap: 1px;
  background: var(--line);
  min-height: calc(100vh - 3rem);
}
@media (max-width: 62rem) { .work { grid-template-columns: minmax(0, 1fr); } }

.rail, .stage { background: var(--ground); min-width: 0; }
.rail { border-right: 0; }

section.block { border-bottom: 1px solid var(--line); }

.block > header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.9rem;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
}
.block > header h2 {
  margin: 0;
  font-family: var(--ui);
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--dim);
  font-weight: 600;
}
.block > header .n {
  font-size: 0.7rem;
  color: var(--faint);
  font-variant-numeric: tabular-nums;
}
.block > header .spacer { margin-left: auto; }

/* ---------- task rows ---------- */

.rows { display: flex; flex-direction: column; }

.row {
  display: grid;
  grid-template-columns: 2.6rem minmax(0, 1fr) auto;
  gap: 0.6rem;
  align-items: center;
  padding: 0.5rem 0.9rem;
  border-bottom: 1px solid var(--line);
  border-left: 2px solid transparent;
  cursor: pointer;
  background: none;
  text-align: left;
  width: 100%;
}
.row:hover { background: var(--panel); }
.row[aria-current="true"] { background: var(--panel-2); border-left-color: var(--signal); }
.row:focus-visible { outline: 1px solid var(--signal); outline-offset: -1px; }

.row .id { color: var(--faint); font-variant-numeric: tabular-nums; font-size: 0.78rem; }
.row .t { min-width: 0; }
.row .title { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row .meta {
  display: block;
  font-size: 0.72rem;
  color: var(--faint);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.row .right { display: flex; align-items: center; gap: 0.55rem; }

.age { font-size: 0.72rem; color: var(--dim); font-variant-numeric: tabular-nums; }
.age.old { color: var(--signal); }

/* The gate strip: three segments - deterministic, grounding, signature.
   It encodes the contract, so a row shows how far the work actually got. */
.strip { display: flex; gap: 2px; }
.seg {
  width: 0.42rem;
  height: 0.95rem;
  background: var(--panel-3);
  border: 1px solid var(--line-hot);
}
.seg.pass { background: var(--pass); border-color: var(--pass); }
.seg.fail { background: var(--fail); border-color: var(--fail); }
.seg.wait { background: var(--signal); border-color: var(--signal); }
.seg.na { opacity: 0.35; }

.pill {
  font-family: var(--ui);
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.08rem 0.4rem;
  border: 1px solid var(--line-hot);
  color: var(--dim);
  white-space: nowrap;
}
.pill.review  { color: var(--signal); border-color: var(--signal); }
.pill.done    { color: var(--pass); border-color: color-mix(in srgb, var(--pass) 55%, transparent); }
.pill.failed  { color: var(--fail); border-color: color-mix(in srgb, var(--fail) 55%, transparent); }
.pill.running { color: var(--run); border-color: var(--run); animation: pulse 1.8s ease-in-out infinite; }
.pill.queued  { color: var(--run); }
.pill.cancelled { color: var(--faint); text-decoration: line-through; }

@keyframes pulse { 50% { opacity: 0.45; } }

.empty { padding: 0.9rem; color: var(--faint); font-size: 0.8rem; }

/* ---------- forms ---------- */

form.stack { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.8rem 0.9rem; }

label.field { display: flex; flex-direction: column; gap: 0.2rem; }
label.field span {
  font-family: var(--ui);
  font-size: 0.64rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--faint);
}

input, select, textarea {
  background: var(--panel-2);
  border: 1px solid var(--line-hot);
  padding: 0.35rem 0.5rem;
  width: 100%;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--signal);
}
textarea { resize: vertical; min-height: 6rem; }

button.act {
  font-family: var(--ui);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.35rem 0.7rem;
  background: var(--panel-2);
  border: 1px solid var(--line-hot);
  cursor: pointer;
}
button.act:hover { border-color: var(--dim); background: var(--panel-3); }
button.act.primary { border-color: var(--signal); color: var(--signal); }
button.act.primary:hover { background: color-mix(in srgb, var(--signal) 14%, var(--panel-2)); }
button.act.danger { border-color: color-mix(in srgb, var(--fail) 60%, transparent); color: var(--fail); }
button.act[disabled] { opacity: 0.4; cursor: not-allowed; }
button.act:focus-visible { outline: 1px solid var(--signal); outline-offset: 1px; }

.actions { display: flex; flex-wrap: wrap; gap: 0.4rem; padding: 0.7rem 1.1rem; border-bottom: 1px solid var(--line); background: var(--panel); }

/* ---------- stage ---------- */

.stage-head { padding: 1rem 1.1rem 0.8rem; border-bottom: 1px solid var(--line); }
.stage-head h1 {
  font-family: var(--ui);
  font-size: 1.3rem;
  font-weight: 600;
  margin: 0 0 0.35rem;
  letter-spacing: -0.01em;
}
.stage-head .sub { color: var(--dim); font-size: 0.8rem; display: flex; flex-wrap: wrap; gap: 0.2rem 1rem; }

.tabs { display: flex; border-bottom: 1px solid var(--line); background: var(--panel); }
.tab {
  font-family: var(--ui);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.55rem 1rem;
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--dim);
  cursor: pointer;
}
.tab[aria-selected="true"] { color: var(--text); border-bottom-color: var(--signal); }
.tab:focus-visible { outline: 1px solid var(--signal); outline-offset: -2px; }

.pane { padding: 1rem 1.1rem 2rem; display: flex; flex-direction: column; gap: 1rem; }

table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
th, td { text-align: left; padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--line); vertical-align: top; }
th {
  font-family: var(--ui);
  font-size: 0.62rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--faint);
  background: var(--panel);
  white-space: nowrap;
}
td.ok { color: var(--pass); }
td.no { color: var(--fail); }
.scroll { overflow-x: auto; border: 1px solid var(--line); }

pre {
  margin: 0;
  background: var(--panel-2);
  border: 1px solid var(--line);
  padding: 0.7rem 0.8rem;
  overflow-x: auto;
  font-size: 0.78rem;
  color: var(--text);
}

h3.sec {
  font-family: var(--ui);
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--dim);
  margin: 0;
  padding-bottom: 0.3rem;
  border-bottom: 1px solid var(--line);
}

.kv { display: grid; grid-template-columns: minmax(6rem, auto) minmax(0, 1fr); gap: 0.25rem 0.9rem; }
.kv dt { color: var(--faint); font-family: var(--ui); font-size: 0.66rem; letter-spacing: 0.12em; text-transform: uppercase; }
.kv dd { margin: 0; word-break: break-word; }

.chart { display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.dept { background: var(--panel); padding: 0.8rem 1rem; display: flex; flex-direction: column; gap: 0.45rem; }
.dept h4 { margin: 0; font-family: var(--ui); font-size: 0.95rem; font-weight: 600; }
.dept .facts { display: flex; flex-wrap: wrap; gap: 0.2rem 1.1rem; color: var(--dim); font-size: 0.78rem; }
.dept ul { margin: 0; padding-left: 1rem; }

.trace { display: flex; flex-direction: column; }
.ev {
  display: grid;
  grid-template-columns: 11rem 6rem 9rem minmax(0, 1fr);
  gap: 0.6rem;
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.78rem;
}
@media (max-width: 52rem) { .ev { grid-template-columns: minmax(0, 1fr); gap: 0.1rem; } }
.ev .when { color: var(--faint); }
.ev .who { color: var(--dim); }
.ev .what { font-family: var(--ui); letter-spacing: 0.06em; }
.ev .what.fail { color: var(--fail); }
.ev .what.good { color: var(--pass); }
.ev .load { color: var(--dim); overflow: hidden; text-overflow: ellipsis; }

.reveal { animation: rise 0.35s ease-out both; }
@keyframes rise { from { opacity: 0; transform: translateY(4px); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Nicio derulare laterala a paginii, la nicio latime - dar cu `clip`, nu
   `hidden`, si doar pe body.
   `overflow-x: hidden` face din element un CONTAINER de derulare. Pus pe html si
   body, impreuna cu `height: 100%`, mutase derularea paginii in body: `scrollY`
   rămânea 0, `scrollIntoView` se raporta la alt container, iar pe iOS inertia si
   bara de adresa se purtau ciudat. `clip` taie fara sa creeze container.
   Plasa asta nu e soluția, e ultima linie: conținutul lat isi deruleaza propria
   cutie (vezi `.pane, .diff, .trace, pre, table`), iar coloanele au `min-width: 0`
   ca sa nu impinga grila. O plasa care ascunde o scapare face scaparea greu de
   gasit - de asta nu se pune pe html. */
body { overflow-x: clip; }

/* ---------- view switch ---------- */

.views { display: flex; border: 1px solid var(--line-hot); }
.viewtab {
  font-family: var(--ui);
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.3rem 0.7rem;
  background: none;
  border: 0;
  color: var(--dim);
  cursor: pointer;
}
.viewtab[aria-selected="true"] { background: var(--panel-3); color: var(--signal); }
.viewtab:focus-visible { outline: 1px solid var(--signal); outline-offset: -2px; }

/* ---------- admin ---------- */

.file {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.4rem;
  align-items: baseline;
  width: 100%;
  text-align: left;
  padding: 0.45rem 0.9rem;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-left: 2px solid transparent;
  cursor: pointer;
}
.file:hover { background: var(--panel); }
.file[aria-current="true"] { background: var(--panel-2); border-left-color: var(--signal); }
.file .p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file .v { font-size: 0.7rem; color: var(--faint); }
.file:focus-visible { outline: 1px solid var(--signal); outline-offset: -1px; }

.editor {
  width: 100%;
  min-height: 26rem;
  font-family: var(--data);
  font-size: 0.82rem;
  line-height: 1.55;
  tab-size: 2;
}

.findings { display: flex; flex-direction: column; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.finding { background: var(--panel); padding: 0.45rem 0.7rem; display: grid; grid-template-columns: 4.6rem minmax(0, 1fr); gap: 0.6rem; }
.finding .lvl {
  font-family: var(--ui);
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.finding.error .lvl { color: var(--fail); }
.finding.warning .lvl { color: var(--signal); }
.finding.ok .lvl { color: var(--pass); }

.canary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: 0.6rem; align-items: baseline; padding: 0.4rem 0; border-bottom: 1px solid var(--line); }
.canary .expect { font-family: var(--ui); font-size: 0.62rem; letter-spacing: 0.12em; text-transform: uppercase; }
.canary .expect.pass { color: var(--pass); }
.canary .expect.fail { color: var(--fail); }
.canary code { color: var(--dim); font-size: 0.75rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.vrow { display: grid; grid-template-columns: 11rem 6rem minmax(0, 1fr) auto; gap: 0.6rem; align-items: baseline; padding: 0.4rem 0; border-bottom: 1px solid var(--line); font-size: 0.78rem; }
.vrow .when { color: var(--faint); }
.vrow .who { color: var(--dim); }


/* ---------- banda de monitoare ----------
   Prima linie din pagina. O cadere de productie nu are voie sa fie a treia
   informatie de pe ecran - pe 21 august a fost a nu-știu-câta, si am aflat doar
   pentru ca ma uitam. */
.strip {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  padding: 0.5rem 1rem 0;
}
.mon {
  font-family: var(--data);
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  padding: 0.16rem 0.5rem;
  border: 1px solid var(--line);
  border-radius: 2px;
  background: var(--panel);
  color: var(--dim);
  white-space: nowrap;
}
.mon b { font-weight: 500; }
.mon.good b  { color: var(--pass); }
/* Nesondat nu e verde: verde pentru ceva neverificat minte mai rau decat roșu. */
.mon.unknown b { color: var(--faint); }
.mon.bad {
  border-color: var(--fail);
  background: color-mix(in srgb, var(--fail) 12%, var(--panel));
  color: var(--text);
}
.mon.bad b { color: var(--fail); font-weight: 600; }

/* ---------- inainte de autentificare ---------- */

/* Pagina porneste ASCUNSA si se dezvaluie pe dovada, nu invers.
   Ascunderea dupa raspunsul lui `/me` lasa o fereastra - intre prima pictura si
   raspuns - in care consola e pe ecran, iar fereastra aia nu se poate inchide
   facand `hidden` mai repede. Userul a vazut-o: „1-2 secunde dashboard". */
body.pre-auth .bar-tools,
body.pre-auth .counters,
body.pre-auth .views,
body.pre-auth #monitors,
body.pre-auth #banner,
body.pre-auth .work { display: none !important; }

/* Bara rămâne, dar goala: o pagina de login fara niciun semn arata ca o eroare.
   Numele chiriașului NU rămâne - ala e al instalarii. */
body.pre-auth .lamp,
body.pre-auth .tenant { display: none; }

#gate { display: none; }
body.pre-auth #gate { display: block; }

#gate form {
  max-width: 22rem;
  margin: 5rem auto 0;
  padding: 0 1rem;
}
#gate .sec { margin-bottom: 0.4rem; }

/* ---------- ce s-a intamplat cat am lipsit ---------- */

.digest {
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}
.dg-head {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.6rem 1.1rem;
  border-bottom: 1px solid var(--line);
}
.dg-head h3 {
  margin: 0;
  font-family: var(--ui);
  font-size: 0.86rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text);
}
.pill.hot { color: var(--signal); border-color: var(--signal); }

.dg-group { padding: 0.5rem 1.1rem 0.7rem; }
.dg-group h4 {
  margin: 0 0 0.35rem;
  font-family: var(--ui);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--faint);
}
/* Culoarea marcheaza GRUPUL, nu severitatea fiecarui rând: ce cere semnatura e
   ambru, ce s-a stricat e roșu, ce s-a mișcat singur nu cere nimic si stă stins.
   Trei nuante de urgenta pe acelasi ecran ar face „tot" sa para „nimic". */
.dg-needs-you { border-left: 2px solid var(--signal); }
.dg-broke { border-left: 2px solid var(--fail); }
.dg-moved { border-left: 2px solid var(--line-hot); }

.dg-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.1rem 0.5rem;
  padding: 0.2rem 0;
  font-size: 0.85rem;
}
.dg-what { color: var(--text); }
.dg-what.fail { color: var(--fail); }
.dg-note { color: var(--dim); }
.dg-more { margin: 0; padding: 0 1.1rem 0.7rem; color: var(--faint); font-size: 0.8rem; }

.dg-link {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: var(--run);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}
.dg-link:hover { color: var(--text); }

/* ---------- telefon ---------- */

/* Pana aici, „responsive" insemna ca nu apare bară orizontala. Pe telefon
   asta nu e destul: elementele erau la dimensiunea mouse-ului, iar bara de sus
   se rupea in cinci rânduri care mancau tot ecranul. */
@media (max-width: 46rem) {
  :root { --rail: 100%; }

  /* Bara: identitatea pe primul rând, uneltele pe al doilea, derulabile lateral.
     Ascunse ar fi mai curat si mai inutil - lentila si Refresh sunt exact ce
     cauta cineva de pe telefon. */
  .bar { flex-wrap: wrap; height: auto; padding-bottom: 0; }
  .bar-id { flex: 1 1 auto; border-right: 0; }
  .bar-tools {
    order: 4;
    width: 100%;
    padding: 0.35rem 0.6rem;
    border-left: 0;
    border-top: 1px solid var(--line);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .bar-tools::-webkit-scrollbar { display: none; }
  .bar-tools > * { flex: 0 0 auto; }
  .sync { display: none; }          /* starea sincronizarii o spune deja lampa */

  /* Tinte de atingere: 44px e minimul sub care degetul rateaza. */
  .act, .viewtab, select, .tab { min-height: 2.75rem; }

  /* Contoarele: un rând derulabil, valoarea LANGA eticheta.
     Șase contoare stivuite 3x2 mancau tot primul ecran al telefonului, si
     digestul - motivul pentru care cineva deschide consola de pe drum - ajungea
     sub linia de plutire. Un numar care e mereu 0 nu are dreptul la 40% din
     ecran. */
  .counters {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .counters::-webkit-scrollbar { display: none; }
  .counter {
    flex: 0 0 auto;
    min-width: 0;
    flex-direction: row;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.4rem 0.7rem;
  }
  .counter .k { white-space: nowrap; font-size: 0.58rem; }
  .counter .v { font-size: 0.95rem; }
  .row { padding: 0.75rem 0.9rem; }
  .dg-row { padding: 0.35rem 0; font-size: 0.9rem; }
  .dg-link { min-height: 1.6rem; }

  /* Formularul de task: cu 10 rânduri de textarea, butonul „Create draft"
     ajungea sub marginea de jos si nimeni nu-l gasea. */
  #f-body { min-height: 8rem; }
  .field span { font-size: 0.8rem; }

  /* Filele task-ului: 5 file la 377px pe un ecran de 375 - „trace" era tăiat
     exact atat cat sa nu se vada ca e tăiat. Un rând derulabil, nu o rupere pe
     doua rânduri: rândul al doilea ar arata ca alt grup de butoane. */
  .tabs {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .tabs::-webkit-scrollbar { display: none; }
  .tabs .tab { flex: 0 0 auto; }

  /* Conținut lat: fiecare bucata isi deruleaza propria cutie. Pagina nu se
     mișcă lateral la NICIO latime - o pagina care aluneca sub deget face
     imposibila citirea unui tabel. */
  .pane, .diff, .trace, .sched, pre, table { max-width: 100%; overflow-x: auto; }

  /* Poarta: fara margine de 5rem pe un ecran de 640px inaltime. */
  #gate form { margin-top: 2rem; }
}

/* Ecrane foarte inguste (iPhone SE si mai jos): eticheta „Auto 6s" si numele
   chiriașului nu incap langa restul. */
@media (max-width: 26rem) {
  .tenant { display: none; }
  .mark { font-size: 0.95rem; }
}
