/*
 * Sdílené rozvržení plánu sálu — JEDEN zdroj pro web (.frida-vst-*) i editor
 * (.plan-*). Do 13. 9. 2026 se tahle pravidla opravovala dvakrát.
 * Jsou tu jen věci, které MUSÍ vypadat stejně; barvy, kurzory a stavy míst
 * si každé prostředí řeší po svém.
 */

/* Prázdné místo v sektoru NESMÍ brát kliky sedadlu pod sebou.

   Sektory se ručně posouvají (`translate`), takže se jejich obdélníky běžně
   překrývají — a obdélník „Boční levé" ležel přes okraj Hlediště. Čtrnáct
   volných sedadel ze 167 ve Studiu Y proto **nešlo koupit ani označit**:
   `elementFromPoint` nad nimi vracel `div.frida-vst-rady` cizího sektoru.
   Vidět to nebylo — sedadlo vypadalo normálně a klik prostě nic neudělal
   (nalezeno 16. 9. 2026 při měření, které hlásil Tom).

   Kliky proto bere jen to, co se opravdu ovládá: sedadlo, číslo řady a název
   sektoru. Všechny obaly — mřížka, buňka, obal sektoru, sektor i řada — jsou
   průchozí. Buňka mřížky zasahovala i přes křížek „zavřít" v rohu vrstvy,
   takže se nedal zavřít myší. */
.frida-vst-mrizka, .frida-vst-bunka, .frida-vst-sektor-obal,
.frida-vst-sektor, .frida-vst-rady, .frida-vst-rada,
.plan-mrizka, .plan-bunka, .plan-sektor-obal,
.plan-sektor, .plan-rady, .plan-rada { pointer-events: none; }
/* Co se ovládá, kliky bere: sedadlo, číslo řady, název sektoru — a v plánovači
   Správy i jeviště s jeho úchyty a úchyty bloků, kterými se táhne. */
.frida-vst-sedadlo, .frida-vst-cislo, .frida-vst-sektor-nazev,
.frida-vst-jeviste, .frida-vst-jeviste-uchyt, .frida-vst-uchyt,
.plan-sedadlo, .plan-cislo, .plan-sektor-nazev,
.plan-jeviste, .plan-jeviste-uchyt, .plan-uchyt { pointer-events: auto; }

/* Popisek sektoru patří nad SEDADLA, ne nad celý blok. U vodorovných sektorů
   je vlevo sloupec s číslem řady, takže se popisek o jeho šířku odsadí. */
.plan-sektor:not([data-otoceni="90"]):not([data-otoceni="-90"]) > .plan-sektor-nazev {
  margin-left: var(--plan-cislo, 46px);
}
/* Bylo 2.2em (tedy podle písma prostředí) → 33 px při sedadle 26 px.
   Všechny délky plánu jsou od 0.78.0 násobkem sedadla, viz `mapa.css`. */
.frida-vst-sektor:not([data-otoceni="90"]):not([data-otoceni="-90"]) > .frida-vst-sektor-nazev {
  margin-left: calc(var(--vst-sedadlo, 26px) * 1.2692);
}

/* U sektorů otočených na bok je `…-rady` ŘADA (row-reverse), ne sloupec —
   vodorovně tam rozhoduje justify-content, ne align-items. */
.plan-sektor[data-otoceni="90"]  > .plan-rady,
.plan-sektor[data-otoceni="-90"] > .plan-rady,
.frida-vst-sektor[data-otoceni="90"]  > .frida-vst-rady,
.frida-vst-sektor[data-otoceni="-90"] > .frida-vst-rady { justify-content: center; }

/* Popisek nakloněného sektoru visí vodorovně nad opsaným obdélníkem a neotáčí
   se s blokem — jinak by se četl našikmo u rohu. */
/* Popisek nakloněného sektoru sází JS (`dorovnejPopisky`) k prvnímu sedadlu —
   nad středem opsaného obdélníku visel u bloku otočeného o 45° v prázdném rohu,
   daleko od sedadel. Tyhle hodnoty jsou jen výchozí, než JS doměří.

   `z-index` je povinný: popisek je v obalu PŘED `.frida-vst-sektor`, takže
   jakmile se přesune dovnitř opsaného obdélníku, překryjí ho sedadla — a byl
   pak neviditelný i s jediným úchytem, za který jde blok chytit.

   A s ním je povinné `pointer-events: none`: popisek teď leží NAD sedadly,
   takže by jim bral kliky — v plánovači by se pod ním nedalo malovat pásmo.
   Klikat se smí jen na úchyt ⠿, ten si je bere zpátky. */
.plan-sektor-obal > .plan-sektor-nazev,
.frida-vst-sektor-obal > .frida-vst-sektor-nazev {
  position: absolute; left: 50%; bottom: 100%; z-index: 2;
  transform: translateX(-50%); margin: 0 0 6px; white-space: nowrap;
  pointer-events: none;
}
.frida-vst-sektor-nazev > .frida-vst-uchyt { pointer-events: auto; }

/* Sedadlo: rozměr a tvar. Tady, a ne v `mapa.css` nebo `sprava.css`, ze
   stejného důvodu jako uličky níž — z `--vst-sedadlo` se uličky počítají, takže
   kdyby se rozměr sedadla rozešel mezi webem a administrací, rozešly by se
   i rozestupy a plán by v jednom z nich přestal odpovídat sálu. Barvy si
   každé prostředí řeší samo (`mapa.css` web, `sprava.css` administrace).

   **Třída je zdvojená schválně** a `!important` je povinné u `padding`. Motiv
   webu dělá z každého `button` svoje CTA pravidlem
   `button:not(.menu-toggle, …) { padding: 17px 25px !important; width: fit-content }`
   — a to má specificitu 0‑1‑1, takže jedna třída (0‑1‑0) na něj nestačí ani
   s `!important`. Zdvojením je 0‑2‑0 a vyhraje bez ohledu na pořadí souborů.
   Bez toho se sedadlo nafouklo na velikost svého čísla: řada „16" byla širší
   než řada „1" a přístavek s „P10" ještě širší (pasti §92).

   `letter-spacing` a `text-transform` srovnávají totéž pravidlo motivu:
   prostrkání .08em odsazovalo číslo od středu sedadla doprava. */
.frida-vst-sedadlo.frida-vst-sedadlo {
  width: var(--vst-sedadlo, 26px); height: var(--vst-sedadlo, 26px); flex: none;
  padding: 0 !important;
  font-family: inherit; line-height: 1;
  /* Číslo v sedadle je taky násobek sedadla — v `em` by záviselo na písmu
     prostředí a plán by se rozešel (viz `mapa.css`, „VŠECHNY rozměry"). */
  font-size: calc(var(--vst-sedadlo, 26px) * 0.3577);
  letter-spacing: normal; text-transform: none;
  border: 1px solid rgba(0, 0, 0, .18); border-radius: 4px;
  cursor: pointer;
}

/* Ulička je OKRAJ sedadla, ne prázdný <span> — ten by child style.css webu
   schoval pravidlem `span:empty { display: none }` (pasti §31). S otočením
   sektoru se proto musí přesunout na správnou stranu.
   `--ulicka` = kolik sedadel v řadě chybí (bez uvedení jedno); počítá se
   i s mezerou mezi sedadly, aby plán seděl s reálným rozestupem.

   Pravidla jsou tady, ne v `mapa.css`, protože ulička MUSÍ vypadat stejně
   na webu, v pokladně i v plánovači — a `mapa.css` je scopoval pod třídu
   `.frida-vst`, kterou administrace nemá. Plán v ní pak vycházel natěsno
   a nesouhlasil se starým editorem (pasti §65). */
.frida-vst-sedadlo.je-pred-ulickou {
  margin-right: calc(var(--ulicka, 1) * (var(--vst-sedadlo, 26px) + 3px));
}
.frida-vst-sektor[data-otoceni="90"]  .frida-vst-sedadlo.je-pred-ulickou,
.frida-vst-sektor[data-otoceni="-90"] .frida-vst-sedadlo.je-pred-ulickou {
  margin-right: 0;
  margin-bottom: calc(var(--ulicka, 1) * (var(--vst-sedadlo, 26px) + 3px));
}
.frida-vst-sektor[data-otoceni="180"] .frida-vst-sedadlo.je-pred-ulickou {
  margin-right: 0;
  margin-left: calc(var(--ulicka, 1) * (var(--vst-sedadlo, 26px) + 3px));
}
