/* A napi beosztás: fordulók, utassorok, buborékok.
   Betöltés: lib/v2/web/layout.js — a lapok közös fejlécéből. */

.day-actions { margin-left:auto; display:flex; gap:6px; flex-wrap:wrap; }
/* Pontosan KÉT hasáb: egy oszlopban végig kellene görgetni, háromban
   viszont a sorok annyira összenyomódnak, hogy a mezők nem férnek el.
   Szűk képernyőn egy hasáb marad. */
/* A beosztatlanok óránként, órán belül helyszínenként csoportosulnak; a
   sorok a csoporton belül állnak két hasábban. Így egy csoport együtt
   marad, és mégsem kell egyetlen hosszú oszlopot végiggörgetni. */
.pax-pool { display:flex; flex-direction:column; gap:9px; min-height:44px; padding:8px;
  border:2px dashed var(--szin-keret); border-radius:var(--ker-alap); background:var(--szin-hatter-halk); margin-bottom:14px; }
.pool-hour-head { display:flex; align-items:baseline; gap:8px; font-size:var(--betu-urlap);
  font-weight:700; color:var(--szin-szoveg-sotet); padding:2px 0 4px; border-bottom:1px solid var(--szin-keret-halk);
  margin-bottom:5px; }
.pool-place { margin-bottom:5px; }
/* A helyszín a csoporton belüli tájékozódási pont: elég erős legyen ahhoz,
   hogy a sorok fölött kiugorjon, de az óránál halkabb maradjon. */
/* A helyszín neve lehet egy egész postai cím: ott is vágunk. */
.pool-place-head { font-size:var(--betu-kicsi); font-weight:700; text-transform:uppercase;
  letter-spacing:.04em; color:var(--szin-szoveg-kozep); margin:0 0 2px 2px;
  min-width:0; }
/* minmax(0,1fr) és nem 1fr: az 1fr alsó határa a TARTALOM, tehát egyetlen
   hosszú cím kifeszítené a hasábot, és vele az egész lapot. */
.pool-rows { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:2px 10px; }
/* Egy utas = egy sor. A megosztott stíluslap 100%-os input-szélességét
   minden mezőnél felül kell írni, különben minden külön sorba törik. */
.pax { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:2px 5px; min-width:0;
  font-size:var(--betu-alap); background:var(--szin-lap);
  border:1px solid var(--szin-keret-halk); border-radius:var(--ker-kicsi); cursor:grab;
  /* A szerkesztő buborékja ehhez a sorhoz igazodik, ezért kell a viszonyítás. */
  position:relative; }
.pax.dragging { opacity:.4; }
/* Nyitott szerkesztővel a sor nem húzható (lásd public/v2/dnd.js): a
   fogó kéz se ígérje, hogy lehet. */
.pax:has(details[open]) { cursor:default; }
.pax.attn { border-color:var(--szin-veszely); background:var(--szin-veszely-lap); }
.pax-dir { width:16px; text-align:center; font-weight:700; color:var(--szin-szoveg-halk); }
.pax-t { font-weight:700; min-width:42px; }
.pax-n { font-weight:600; min-width:150px; }
.pax-i { color:var(--szin-szoveg-halk); font-size:var(--betu-kicsi); }
/* A BEOSZTATLAN UTAS SORA EGY SOR.
   Balról jobbra: irány, név és cég, forrásidő, útvonal, tervidő, majd a
   vezérlők - a fogaskerék a jobb szélen, mindig utolsóként.
   Ami nem fér ki, az levágódik; a teljes szöveg tooltipben jelenik meg
   (public/v2/dnd.js). Így a sor magassága állandó, és a szem végig tudja
   futni az oszlopokat. */
.pax-wide { flex-wrap:nowrap; }
.pax-wide > * { flex-shrink:0; }
/* A név kapja a maradék hely nagyobbik felét: abból lehet a legtöbbet
   veszíteni, és az azonosít. */
.pax-wide .pax-n { flex:2 1 0; }
.pax-wide .pax-i { flex:1 1 0; }
/* A fogaskerék a sor végén, jobbra tolva - akkor is, ha a sor nem telt meg. */
.pax-wide .pax-edit { margin-left:auto; }

/* A beosztatlan sor vezérlői: a sor maradjon egy soros, ezért mindkettő
   kicsi és vékony betűs. */
.pax-plan { padding:1px 6px; font-size:var(--betu-jelolo); font-weight:400; line-height:1.5;
  border-bottom-width:1px; box-shadow:none; }
.pax-assign { width:auto; min-width:78px; max-width:130px; padding:1px 4px;
  font-size:var(--betu-jelolo); font-weight:400; }
/* A lenyílóban látszik, melyik fuvarba VALÓ az utas: van hely, nem várna a
   küszöbnél többet, és nem lenne túl sok megálló. A ✓ a felirat elején
   akkor is ott van, ha a böngésző nem színezi a sorokat (a macOS és az iOS
   nem szokta) - a jelzés így sem vész el. */
.pax-assign .opt-jo { background:var(--szin-rendben-halk); color:var(--szin-kuldetes); }
.pax-assign .opt-eltero { color:var(--szin-szoveg-halk); }
/* A külön forduló nem "rosszabb" választás, csak másféle: ez nem beültetés,
   hanem új kocsi. Ezért elválik a többitől. */
.pax-assign .opt-uj { background:var(--szin-hiany-lap); color:var(--szin-szoveg-sotet); font-weight:600; }
/* A szerkesztő a rács UTOLSÓ, keskeny oszlopában él, ezért kinyitva nem
   fér el ott. Buborékként a sor alá tesszük, teljes szélességben - így a
   mezők egymás alatt is egy vonalban állnak. */
/* A details alapból blokk: a rács cellájában sortörést okozna, és a
   fogaskerék elugrana nyitáskor. Sorban tartjuk, a tartalma pedig kilóg
   a sor alá, tehát a sor magassága sem változik. */
.pax-edit { display:inline-block; line-height:1; }
.pax-edit > summary { cursor:pointer; list-style:none; color:var(--szin-szoveg-halvany); padding:0 4px; }
.pax-edit > summary::-webkit-details-marker { display:none; }
.pax-edit > summary:hover { color:var(--szin-szoveg); }
.pax-edit[open] > summary { color:var(--szin-szoveg); }
.pax-edit-body { position:absolute; left:0; right:0; top:100%; z-index:20;
  display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;
  background:var(--szin-lap); border:1px solid var(--szin-keret); border-radius:var(--ker-kicsi); padding:8px;
  box-shadow:var(--arny-szerkeszto); margin-top:2px; }
.pax-edit-body form { display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; }
/* Az időpont és a napja egy mezőnek látszik: az óra mellett áll, hányadik
   napról van szó (aznap / másnap). Egy éjszakai kör letétele már a
   következő napra esik - ezt az óra magában nem mondja meg. */
.ido-nappal { display:flex; gap:3px; align-items:center; }
.ido-nappal select { font-size:var(--betu-apro); }

.pax-edit-body label { display:flex; flex-direction:column; gap:2px;
  font-size:var(--betu-jelolo); color:var(--szin-szoveg-halk); text-transform:uppercase; letter-spacing:.03em; }
/* A panel két félre oszlik: amit az utas mondott, és amit mi döntöttünk. */
.pax-edit-group { align-self:flex-end; font-size:var(--betu-apro); font-weight:700;
  text-transform:uppercase; letter-spacing:.06em; color:var(--szin-szoveg-halvany);
  border-bottom:1px solid var(--szin-keret-halk); padding-bottom:4px; margin-bottom:2px; }
.pax-edit-body input { width:auto; min-width:104px; padding:4px 6px; font-size:var(--betu-alap); }
.pax-edit-body input[type=time] { min-width:88px; }
/* Ha a sor alatt nem férne el (a lap alján), felfelé nyílik. */
.pax-edit-body.opens-up { top:auto; bottom:100%; margin-top:0; margin-bottom:2px; }
.pax-edit-body button { padding:4px 10px; font-size:var(--betu-alap); }
.pax-x { background:none; border:0; color:var(--szin-szoveg-halvany); cursor:pointer; padding:0 3px;
  font-size:var(--betu-alap); line-height:1; }
.pax-x:hover { color:var(--szin-veszely); }
.drop-target.over { outline:3px solid var(--szin-rendben-elenk); outline-offset:2px; }
/* NINCS overflow:hidden - az levágná a sor alatt kinyíló szerkesztőt az
   utolsó utasnál. A lekerekítést a fejléc maga viszi. */
.run-card { border:1px solid var(--szin-keret); border-radius:var(--ker-alap); margin-bottom:10px; }
.run-card.run-draft { border-style:dashed; }
.run-card.run-confirmed { border-color:var(--szin-rendben); }

.run-head { display:flex; gap:8px; align-items:center; flex-wrap:wrap;
  padding:4px 10px; background:var(--szin-hatter-kiemelt); border-bottom:1px solid var(--szin-keret); font-size:var(--betu-urlap);
  border-radius:7px 7px 0 0; }
.run-head button { padding:2px 7px; font-size:var(--betu-alap); }
.run-tools { margin-left:auto; display:flex; gap:5px; align-items:center; }
.run-head select { width:auto; min-width:170px; padding:2px 5px; font-size:var(--betu-alap); }
.run-head[style] .src, .run-head[style] a.src { color:inherit; opacity:.85; }
/* A ⚙ gomb saját háttéren áll, ezért NEM örökli a fejléc betűszínét:
   sötét kocsiszínnél az fehér lenne a világos gombon, vagyis eltűnne. */
.run-head[style] .run-swap > summary { color:var(--szin-szoveg); }
.run-head[style] .run-swap-body, .run-head[style] .run-swap-body * { color:var(--szin-szoveg); }
.run-head[style] .run-swap-body .rs-title { color:var(--szin-szoveg-kozep); }
.run-head[style] .run-swap-body .rs-note { color:var(--szin-szoveg-halk); }
/* A ⚙ a többi gombbal egy sorban áll, és a panel NEM tolja szét a
   fejlécet: buborékként nyílik alá, ahogy az utasszerkesztő is. */
.run-swap { position:relative; display:inline-block; }
.run-swap > summary { cursor:pointer; list-style:none; display:inline-block;
  padding:2px 7px; font-size:var(--betu-alap); }
.run-swap > summary::-webkit-details-marker { display:none; }
/* 2. sor: két útvonal, közöttük a helyszíni érkezés/indulás. */
.run-route { display:flex; align-items:center; gap:10px; padding:5px 10px;
  background:var(--szin-hatter-halk); border-bottom:1px solid var(--szin-keret-halk); font-size:var(--betu-alap); }
/* Indulási idő balra, útvonal középen, telítettség jobbra. Az azonos
   szélességű szélső oszlopok tartják középen az útvonalat. */
/* Kifelé: idő → útvonal → telítettség. Visszafelé ugyanez tükrözve, hogy
   a középső mezőtől kifelé olvasva mindkét irány egyformán épüljön fel. */
.rr { display:grid; grid-template-columns: 84px minmax(0,1fr) 84px; align-items:baseline;
  gap:8px; flex:1; min-width:0; }
.rr-route { font-weight:600; text-align:center; }
.rr-lead, .rr-tail { color:var(--szin-szoveg-sotet); white-space:nowrap; font-weight:600; }
.rr-lead { text-align:left; }
.rr-tail { text-align:right; }
.rr-seats { color:var(--szin-szoveg); font-weight:400; }
.rr-seats.over { color:var(--szin-veszely); font-weight:700; }
.rr-empty-leg { color:var(--szin-szoveg-halvany); font-style:italic; }
.rr-empty-leg .rr-route { font-weight:400; }
.rr-empty-leg .tv { font-style:normal; }
.rr-mid { display:flex; align-items:center; gap:8px; padding:1px 10px; white-space:nowrap;
  background:var(--szin-keret-halk); border-radius:var(--ker-nagy); font-weight:600; }
.rr-wait { font-weight:400; color:var(--szin-szoveg-halk); font-size:var(--betu-kicsi); }
/* Negatív pihenő: a kocsi előbb indulna vissza, mint ahogy megérkezik. */
.rr-wait-bad { color:var(--szin-veszely); font-weight:700; }

/* Helyben szerkeszthető időpont. Alapállapotban SEMMI nem árulja el, hogy
   mező - csak akkor, ha rámutatnak vagy rákattintanak. */
.tv { font-variant-numeric:tabular-nums; }
.tv-edit { cursor:text; border-radius:var(--ker-apro); padding:0 2px; }
.tv-edit:hover, .tv-edit:focus { background:var(--szin-lap); outline:1px solid var(--szin-keret); }
/* A számított idő csak JAVASLAT, amíg valaki át nem írja: halványabb és
   szaggatottan aláhúzott. A beírt idő teli színnel áll. */
.tv-suggested { color:var(--szin-szoveg-halk); text-decoration:underline dotted var(--szin-keret); }
.tv-input { font:inherit; width:52px; padding:0 2px; border:1px solid var(--szin-hivatkozas);
  border-radius:var(--ker-apro); background:var(--szin-lap); color:var(--szin-szoveg); }

/* A forduló beállításai. SAJÁT háttere és betűszíne van: a fejléc az autó
   színét viseli, és abból örökölve a feliratok beleolvadnának. A panel
   szélessége kötött, hogy a mezők ne terüljenek szét olvashatatlanul. */
.run-swap-body { position:absolute; z-index:30; top:100%; right:0; margin-top:4px;
  width:min(460px, 88vw); display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:10px 16px; padding:10px; text-align:left;
  background:var(--szin-lap); color:var(--szin-szoveg); border:1px solid var(--szin-keret); border-radius:var(--ker-alap);
  box-shadow:var(--arny-lebego); font-style:normal; font-weight:400; }
.run-swap-body.opens-up { top:auto; bottom:100%; margin-top:0; margin-bottom:4px; }
.rs-col { display:flex; flex-direction:column; gap:5px; min-width:0; }
.rs-title { font-size:var(--betu-jelolo); text-transform:uppercase; letter-spacing:.05em;
  color:var(--szin-szoveg-kozep); font-weight:700; }
.rs-row { display:grid; grid-template-columns:74px minmax(0,1fr); gap:6px;
  align-items:center; }
.rs-row label { font-size:var(--betu-jelolo); color:var(--szin-szoveg-sotet); text-transform:uppercase;
  letter-spacing:.03em; }
.rs-row input, .rs-row select { width:100%; min-width:0; max-width:100%;
  padding:3px 6px; font-size:var(--betu-alap); color:var(--szin-szoveg); }
.rs-actions { display:flex; justify-content:flex-end; margin-top:2px; }
.rs-actions button { padding:3px 10px; font-size:var(--betu-alap); }
.rs-note { font-size:var(--betu-jelolo); color:var(--szin-szoveg-halk); line-height:1.35; grid-column:1 / -1; }
/* A két szakasz egymás mellett. A hét oszlop szűk helyre kerül, ezért a
   rugalmas oszlopok minmax(0,...)-val zsugorodnak és pontokkal vágnak. */
.run-body { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:8px; align-items:start; }
/* Üres szakasz felirata. Minden tulajdonságát maga mondja meg: korábban a
   színét és a betűméretét a közös v1 stíluslapból örökölte, és csak a belső
   margóját írta felül - ilyet ne hagyjunk a rendszerben. */
.leg-empty { padding:4px; color:var(--szin-szoveg-halvany);
  font-size:var(--betu-kicsi); font-style:italic; }

.rp { border:1px dashed var(--szin-keret); border-radius:var(--ker-kicsi); padding:5px; min-height:38px;
  display:flex; flex-direction:column; gap:1px; }

/* A TEHERAUTÓ KÉT OSZLOPA.
 *
 * Nem utast visz, hanem terhet: bal oldalon az ÚTVONAL sorszámozott
 * megállói, jobb oldalon a RAKODÓK. Mindkettő ugyanaz a rács - hat oszlop,
 * a fejléc és a sorok azonos szélességekkel -, csak mást tesznek bele.
 *
 * Az űrlap display:contents, hogy a mezői a SOR rácsába kerüljenek: enélkül
 * az űrlap egyetlen cella lenne, és a fejléc alatt semmi nem állna egy
 * vonalban. */
.cg-row { display:grid; align-items:center; gap:4px; font-size:var(--betu-kicsi); }
.rp-stops .cg-row { grid-template-columns: 20px 62px minmax(0,1fr) minmax(0,1.1fr) 22px 58px; }
.rp-loaders .cg-row { grid-template-columns: minmax(0,1fr) 62px 62px 22px 24px; }
.cg-form { display:contents; }
.cg-head { color:var(--szin-szoveg-halvany); font-size:var(--betu-apro);
  text-transform:uppercase; letter-spacing:.04em; }
.rp-cargo { gap:2px; }
.cg-n { color:var(--szin-szoveg-halvany); text-align:right; }
/* Az idő, a teendő és a hely oszlopa: a rács adja a szélességüket, itt csak
   az kell, hogy a szöveges cellák ne lógjanak ki a saját oszlopukból. */
.cg-at, .cg-what, .cg-where { min-width:0; }
.cg-name { font-weight:600; }
.cg-row input, .cg-new select { width:100%; min-width:0; padding:1px 3px;
  font-size:var(--betu-kicsi); }
/* A mentés pipája halk: a sor akkor is menthető, ha nem néz rá az ember. */
.cg-ok { background:none; border:0; padding:0; color:var(--szin-szoveg-halvany);
  cursor:pointer; }
.cg-ok:hover { color:var(--szin-rendben); }
.cg-move { background:none; border:0; padding:0 2px; color:var(--szin-szoveg-halvany);
  cursor:pointer; font-size:var(--betu-alap); }
.cg-move:hover { color:var(--szin-szoveg); }
.cg-act { text-align:right; white-space:nowrap; }
.cg-act form { display:inline; }
/* Új rakodó felvétele: nem tartozik a rácshoz, egy sorban áll a lista alatt. */
.cg-new { display:flex; gap:4px; align-items:center; margin-top:3px; }
/* Az oszlopszélességek a fejlécen és a sorokon azonosak - ettől oszlopos.
   A sorrend és az igazítás a PAX_COLUMNS definícióból jön, cellánként
   kiírva, ezért a fejléc és az adat nem tud elcsúszni egymáshoz képest. */
/* MINDEN oszlop szélessége rögzített vagy arányos - egyetlen "auto" sem
   lehet köztük. Soronként külön rács jön létre, és egy auto oszlop a saját
   tartalmához igazodna: a fejlécben üresen 0, az adatsorban a gombok miatt
   szélesebb. Ez a különbség a rugalmas oszlopokon át az egész sort
   elcsúsztatta a fejléchez képest. */
/* AZ OSZLOPOK SZÉLESSÉGE. A név kapta a legtöbbet, pedig ott a cégnév
   amúgy is tördelhető; a járatszám és a helyszín viszont kifutott a
   sávjából, és beleírt a szomszédjába. A perc és a beérkezés pedig
   összeért: az egyik jobbra, a másik balra igazít, tehát pont egymásnak
   fordultak. Ezért a név szűkült, a járatszám rugalmas lett, a két
   időoszlop pedig szélesebb - és a rács térköze is nagyobb. */
.pax-grid { display:grid; align-items:center; gap:6px; font-size:var(--betu-kicsi);
  grid-template-columns: 42px minmax(0,2fr) 44px minmax(0,0.9fr) minmax(0,1fr) 50px 70px 58px; }
/* Egyetlen cella se írjon a szomszédjába: ami nem fér ki, azt levágjuk.
   Két kivétel: a NÉV (ott a cégnév új sorba mehet, arra van hely) és a
   MŰVELETEK oszlopa - abból nyílik a ⚙ szerkesztő, azt levágná. */
.pax-grid > span:not(.c-act) { min-width:0; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; }
.pax-grid > .c-name { overflow:visible; white-space:normal; }
/* Odaúton a két utolsó adatoszlop helyet cserél - előbb a várakozás, utána a
   helyszínre érkezés (lásd dayView.js oszlopok()). Ugyanaz a nyolc oszlop,
   csak a két szélesség cserél helyet: a sor nem lesz szélesebb. */
.pax-grid.dir-outbound {
  grid-template-columns: 42px minmax(0,2fr) 44px minmax(0,0.9fr) minmax(0,1fr) 70px 50px 58px; }
/* Nem a helyszínről száll be: a kocsinak külön oda kell mennie. A jel
   apró, de piros - a sok szürke cím közül ki kell ugrania. */
.loc-elteres { color:var(--szin-veszely); font-weight:700; margin-right:3px; }
/* Csak a szöveges cellák vágnak: a műveletoszlopból a szerkesztő buboréka
   szándékosan kilóg a sor alá. */
/* A fejléc ugyanazt a keretet és belső margót kapja, csak átlátszóan -
   enélkül 1 képponttal elcsúszik az adatsorok rácsához képest. */
.pax-head { background:none; border:1px solid transparent; font-size:var(--betu-apro); text-transform:uppercase;
  letter-spacing:.05em; color:var(--szin-szoveg-halvany); cursor:default; }
/* TÖMEGES SZERKESZTÉS
 *
 * Egy kattintás kijelöl egy utast; amint van kijelölés a szakaszon, a
 * fejlécben megjelenik a ceruza. Addig nincs ott: egy gomb, ami sosem
 * csinál semmit, csak zavar.
 */
.pax.is-selected { outline:2px solid var(--szin-hivatkozas); outline-offset:-2px; }
.bulk-open { display:none; border:0; background:var(--szin-hivatkozas); color:var(--szin-lap);
  font-size:var(--betu-alap); line-height:1; width:17px; height:17px; border-radius:var(--ker-apro);
  cursor:pointer; padding:0; margin-right:3px; }
.rp.has-selection .bulk-open { display:inline-block; }
.bulk-panel { display:none; padding:8px 6px; margin-bottom:4px;
  border:1px solid var(--szin-hivatkozas); border-radius:var(--ker-alap); background:var(--szin-lap); }
.bulk-panel.is-open { display:block; }
.bulk-panel form { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; }
.bulk-panel label { display:flex; flex-direction:column; gap:2px;
  font-size:var(--betu-jelolo); color:var(--szin-szoveg-kozep); }
.bulk-panel input { width:auto; min-width:104px; padding:4px 6px; font-size:var(--betu-alap); }
.bulk-panel input[type=time], .bulk-panel input[type=date] { min-width:88px; }
.bulk-panel button { padding:4px 10px; font-size:var(--betu-alap); }

.task-add { border:0; background:var(--szin-rendben); color:var(--szin-lap); font-weight:700; font-size:var(--betu-alap);
  line-height:1; width:17px; height:17px; border-radius:var(--ker-apro); cursor:pointer; padding:0; }
.task-add:hover { background:var(--szin-rendben-sotet); }
/* Küldetés: nem utas, de a HÁTTERE pontosan azt mondja, amit az utassoré -
   javaslat, jóváhagyva, nyugtázva. Külön alapszíne nincs: ha lenne, a
   nyugtázás visszavonása után az bukkanna elő a fehér helyett. Hogy nem
   utassor, azt a zöld keret, a célkereszt és a zöld szöveg mondja meg. */
.pax-task .c-name { font-weight:600; color:var(--szin-kuldetes); }
.task-ok { border:1px solid var(--szin-keret); background:var(--szin-lap); color:var(--szin-szoveg-kozep); cursor:pointer;
  font-size:var(--betu-apro); font-weight:700; line-height:1; padding:2px 4px; border-radius:var(--ker-apro); }
.task-ok.is-on { border-color:var(--szin-rendben); color:var(--szin-rendben-sotet); font-size:var(--betu-urlap); padding:1px 4px; }
/* Húzáskor ide kerülne a sor: vonal a két sor közé. */
.pax.drop-before { box-shadow:0 -2px 0 0 var(--szin-rendben); }
.pax.drop-after { box-shadow:0 2px 0 0 var(--szin-rendben); }
/* KÉZZEL FELVETT UTAS: nincs benne a forrástáblázatban. A sárgás alap nem
   díszítés, hanem tennivaló - amíg a forrásba is be nem kerül, látszania
   kell, kiről van szó. Beosztás után is viseli. */
.pax.pax-kezi { background:var(--szin-figyelem-halk); }
.c-time { font-weight:700; }
.c-name { font-weight:600; }
.c-loc { color:var(--szin-szoveg-halk); font-size:var(--betu-kicsi); }
/* A cég a név mellett áll, dőlten és halványan: nem döntési adat, de
   látni kell - az azonos cégtől érkezőket egy autóba érdemes tenni. */
.c-comp { color:var(--szin-szoveg-halvany); font-size:var(--betu-jelolo); font-weight:400; font-style:italic; }
.wish { border:0; background:none; padding:0 0 0 3px; cursor:pointer; line-height:1;
  vertical-align:-1px; }
/* A buborék a lapra kerül, nem a sorba: az utassor levágja a kilógó
   tartalmat, itt viszont a teljes szöveget látni kell. */
.wish-bubble { position:fixed; z-index:60; max-width:320px; white-space:pre-wrap;
  background:var(--szin-kivansag-lap);
  border:1px solid var(--szin-kivansag-keret); border-radius:var(--ker-kicsi); padding:6px 9px; font-size:var(--betu-alap);
  color:var(--szin-szoveg); box-shadow:var(--arny-buborek); }
.wish-bubble b { display:block; font-size:var(--betu-jelolo); text-transform:uppercase;
  letter-spacing:.04em; color:var(--szin-kivansag); margin-bottom:2px; }

/* Értesítés a sikeres műveletről. A lap aljához tapad, hogy a munka
   közben ne mozduljon el semmi - a régi felső sáv a tartalmat tolta le,
   és a szem is odarándult. Több üzenet egymásra épül: az új alul jelenik
   meg, a korábbiak feljebb csúsznak. */
.toasts { position:fixed; right:14px; bottom:14px; z-index:80;
  display:flex; flex-direction:column; gap:8px; align-items:flex-end;
  pointer-events:none; }
.toast { background:var(--szin-szoveg); color:var(--szin-hatter-halk); font-size:var(--betu-alap); line-height:1.35;
  padding:8px 12px; border-radius:var(--ker-alap); max-width:320px;
  box-shadow:var(--arny-ertesites); animation:toast-in .18s ease-out; }
.toast.is-error { background:var(--szin-veszely-sotet); }
.toast.is-going { animation:toast-out .18s ease-in forwards; }
@keyframes toast-in  { from { opacity:0; transform:translateY(14px); }
                       to   { opacity:1; transform:none; } }
@keyframes toast-out { from { opacity:1; transform:none; }
                       to   { opacity:0; transform:translateY(8px); } }
/* A járat ideje ugyanolyan fontos időpont, mint a felvétel: kiemelve. */
.c-ft { color:var(--szin-szoveg); white-space:nowrap; font-weight:700; }
.c-fn { color:var(--szin-szoveg-sotet); }
.flight { color:inherit; text-decoration:underline dotted var(--szin-szoveg-halvany); }
.flight:hover { color:var(--szin-hivatkozas); text-decoration:underline; }
.c-gap { font-variant-numeric:tabular-nums; color:var(--szin-szoveg-kozep); }
/* A zárójeles kiérkezési idő adottság, nem a mi döntésünk: halványabb. */
.c-gap .gap-reach { color:var(--szin-szoveg-halvany); }
.c-gap .gap-tight { color:var(--szin-figyelem); font-weight:700; }
.c-gap .gap-bad { color:var(--szin-veszely); font-weight:700; }
.c-act { display:flex; align-items:center; gap:2px; justify-content:flex-end; }
.pax-head .c-ft { font-weight:inherit; color:var(--szin-szoveg-halvany); }

.rp.over-capacity { border-color:var(--szin-veszely); background:var(--szin-veszely-lap); }
/* A zárt állapotot már a háttér mutatja, a keret csak kirajzolja a
   blokk szélét - ezért a háttérrel azonos színű, nem világító zöld. */
.rp-locked { border-style:solid; border-color:var(--szin-jovahagyva); }
.pax-locked { cursor:default; background:var(--szin-lap); }
/* Az értesített utas sora: a jóváhagyott blokk zöldjének világosabb
   árnyalata, hogy a kettő összetartozzon, de elváljon. */
.pax-notified { background:var(--szin-ertesitve); }
.pax-mail { border:0; background:transparent; cursor:pointer; font-size:var(--betu-urlap);
  line-height:1; padding:1px 2px; color:var(--szin-szoveg-kozep); }
.pax-mail.is-on { color:var(--szin-rendben-sotet); font-weight:700; }
.driver-presence-slot { display:inline-flex; min-width:18px; justify-content:center; }
/* Sofőri jelenlét: fixen rajzolt, színhelyes jelzés, nem platformfüggő emoji.
   Zöld pipa = az utas a járműben; piros X = hiányzott. */
.driver-presence { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px;
  border-radius:50%; color:var(--szin-lap); font-family:Arial,sans-serif; font-size:13px; font-weight:800;
  line-height:1; box-shadow:inset 0 0 0 1px rgb(0 0 0 / 12%); }
.driver-presence-boarded { background:var(--szin-rendben-sotet); }
.driver-presence-no_show { background:var(--szin-veszely); font-size:16px; }
/* Piros háromszög az autó nélküli forduló fejlécében. */
.warn-tri { vertical-align:-2px; margin-right:5px; flex:none; }
.guest-photo { cursor: help; }
.guest-photo-popover { position: fixed; z-index: 30; width: 180px; height: 240px; object-fit: cover; border: 3px solid var(--szin-keret); border-radius: var(--ker-alap); background: var(--szin-lap); box-shadow: var(--arny-foto); }
