/* Darbo srities chrome įrankyje: šoninė juosta / stalčius (D4B) ir viršutinė juosta telefone (2026-10-10).
 * Įkelia trys skaičiuoklės ir du sąskaitų puslapiai (sąskaitos, šablonai).
 *
 * ── KAM ─────────────────────────────────────────────────────────────────────
 *
 * Naudotojas, atidaręs skaičiuoklę iš darbo srities, turi matyti, kad tebėra Samatukas
 * darbo srityje — ir turėti kelią atgal. Iki šiol įrankis atsidarydavo kaip visiškai
 * atskira svetainė, ir vienintelis kelias atgal buvo naršyklės „Atgal".
 *
 * ── KODĖL ATSKIRAS FAILAS ───────────────────────────────────────────────────
 *
 * `tools.css` yra bendras įrankių apvalkalas, kurį saugo griežti sargai (jokių elementų
 * selektorių, jokių literalių spalvų, jokio `@media print`). Juosta yra nauja, sąlyginė
 * chrome dalis, todėl jai skiriamas savas failas — bendras apvalkalas lieka nepaliestas.
 *
 * ── KODĖL BE TAPATYBĖS SLUOKSNIO ────────────────────────────────────────────
 *
 * Juosta naudoja TIK bendrus `shared.css` tokenus. `identity.css` (D1 šriftas ir paletė) į
 * `tools/**` neįkeliamas sąmoningai ir tai saugo atskiras sargas: skaičiuoklės lieka su
 * sisteminiu šriftu, o juosta atrodo kaip tos pačios rankos darbas dėl anatomijos —
 * plaukelio linijos, mono didžiųjų raidžių etiketės ir 44px taikinių — o ne dėl šrifto.
 */

/* ── VIENAS GEOMETRIJOS ŠALTINIS (D4C4-N1) ───────────────────────────────────
 *
 * Nuo N1 karkasas rezervuoja darbo srities vietą DAR PRIEŠ sesiją, todėl rezervacija ir
 * tikroji juosta PRIVALO remtis ta pačia reikšme. Du atskiri `15rem` anksčiau ar vėliau
 * išsiskirtų, ir perdavimas (rezervacija → tikra juosta) vėl pastumtų išdėstymą.
 *
 * Mobilaus aukščio tokeno (`--tool-ws-band-h`) nebėra: antros D2 eilutės nebeliko (savininkas 2026-10-10), o
 * viršutinės juostos aukštį lemia jos pačios įtrauka ir 44px valdikliai — žr. „Viršutinė juosta telefone". */
:root {
  --tool-rail-w: 15rem;                       /* 240px — juosta ir jos rezervacija */

  /* ── Darbo srities anatomijos tokenai (D4C4-N2b) ──────────────────────────
     Tie patys du dydžiai kaip `app.css`. Įrankyje organizacijos perjungiklio ir apatinių
     veiksmų NĖRA, todėl abu virsta rezervuota tuščia vieta — be dėžutės, be etiketės, be
     skeleto ir be netikros organizacijos. Reikšmės privalo sutapti su `app.css`: skirtumas
     tyliai nustumtų paskyros grupę į kitą aukštį nei `/app/`. El. pašto eilutės (`--ws-email-lh`) nebėra. */
  /* `/app/` organizacijos bloko aukštis. Nuo 2026-10-04 (savininkas) tai VIENA eilutė: rolės langelis, o kelių
     įmonių naudotojui — šalia jo perjungiklis (`.app-org-select { min-height: var(--control-h) }`). Užrašo
     „Įmonė" ir pavadinimo eilučių nebėra, todėl buvusi formulė (~88,72px) virto vienu lauko aukščiu. */
  --ws-context-h: 44px;
  --ws-actions-h: 44px;
}

/* ── Viršutinė juosta telefone (savininkas 2026-10-10) ───────────────────────
 *
 * Telefone kiekvienas darbo srities puslapis turi VIENĄ viršutinę eilutę: logotipas kairėje, dešinėje — veiklos
 * raidė, tema ir ☰ (`header.tool-header > .ws-bar-actions`). Buvusios antros eilutės („Darbo sritis … ← Objektai
 * Komanda ☰", D2 `#tool-ws-band`) nebėra: jos nuorodos ir adresas jau yra stalčiuje, o ☰ persikėlė į antraštę.
 * Eilutė — antraštės dalis, todėl skardos redaktoriuje ji lieka ir lietimo įrenginyje (savininkas 2026-10-11).
 *
 * Bazė — be režimo: nemokamame įrankyje grupėje matomas vien temos mygtukas (raidė ir ☰ lieka `display: none`),
 * todėl jo antraštė nepasikeičia. Darbo srities geometrija (61px eilutė, fiksuotas 3 × 44px tinklelis) — ketinimo
 * bloke žemiau („Viršutinė juosta telefone: darbo srities geometrija"). */
.ws-bar-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-left: auto;          /* pavadinimui telefone pasislėpus, grupė lieka dešiniajame krašte */
  flex: none;                 /* trumpėja pavadinimas (daugtaškis), o ne mygtukai */
}

/* Stulpelis pagal DOM eilę. Kai tėvas yra tinklelis (darbo sritis), paslėpta raidė ar ☰ palieka TUŠČIĄ stulpelį,
   todėl temos mygtukas nepajuda, kai jie atsiranda. `nth-child`, ne klasė: matoma eilė negali išsiskirti su DOM
   (ir Tab) eile. Lanksčiame (nemokamame) režime stulpeliai nieko nereiškia. */
.ws-bar-actions > :nth-child(1) { grid-column: 1; }
.ws-bar-actions > :nth-child(2) { grid-column: 2; }
.ws-bar-actions > :nth-child(3) { grid-column: 3; }

/* Veiklų skydelio (`.bar-org-menu`, raidė — savininkas 2026-10-12) atramos taškas: jis nusileidžia po antrašte. */
header.tool-header { position: relative; }

/* Veiklos raidė — tos pačios spalvos kaip juostos `.rail-org-initial`, tik 44px pirštų taikinys. 1.2rem pusjuodis
   yra „didelis tekstas" (WCAG ≥ 18,66px), kuriam pakanka 3 : 1 — rašalas ant akcento jį viršija abiejose temose.
   Bazėje paslėpta: ji atidaro stalčių, todėl atsiranda kartu su juo (READY, žemiau) ir tik su įmone (`hidden` valdo
   `workspaceBand.js`) — arba nuo pirmo kadro, kai ją iš galiojančio pristatymo įrašo nupiešė ir užtaisė (J3)
   `theme-init.js` (`data-ws-armed="1"`, žr. „darbo srities geometrija"). Tuščias statinis mygtukas privataus baito neturi. */
.ws-bar-org {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--accent);
  color: var(--s-ink);
  font: inherit;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: opacity 200ms ease-out;
}

/* Ankstyvas paspaudimas (J3): kol stalčiaus dar nėra, užtaisyto ☰ ar raidės paspaudimas tik užrašomas
   (`data-ws-pending="1"`, `aria-busy`). Mygtukas tai parodo — pritemsta (200 ms), kad bakstelėjimas neatrodytų
   prarytas — ir atsistato, vos `appShell.js` jį perima (atidaro stalčių arba pasenusį ketinimą atmeta) arba
   `workspaceBand.js` atšaukia. Tas pats kaip `/app/` (`app.css`). Permatomumo perėjimas — ne judesys, todėl jis
   lieka ir judesio jautriems (kaip `/app/` sumažinto judesio bloke). */
.tool-rail-toggle[data-ws-pending='1'],
.ws-bar-org[data-ws-pending='1'] { opacity: 0.6; }

/* ════════════════════════════════════════════════════════════════════════════
   NUOLATINĖ DARBO SRITIES JUOSTA (D4B)
   ════════════════════════════════════════════════════════════════════════════

   ── KAM ─────────────────────────────────────────────────────────────────────

   D2 juosta pasakė „tu vis dar Samatuke" ir davė kelią atgal. Bet įrankyje nebelikdavo
   pačios NAVIGACIJOS: kad patektum į kitą įrankį, objektus ar paskyrą, reikėdavo grįžti
   į `/app/`. D4B grąžina tą patį navigacijos stuburą į įrankio dokumentą.

   ── KODĖL FAIL-CLOSED, O NE PROGRESYVUS PRAPLĖTIMAS ─────────────────────────

   `/app/` juosta be JS lieka matoma sukrauta virš darbo srities — ten tai teisinga.
   ĮRANKYJE tai būtų DESTRUKTYVU: `body` yra `overflow: hidden`, o `#app` — `100dvh`,
   todėl bet kas, sukrauta virš jo, išstumtų vedlio mygtukų juostą už neslenkančio ekrano.
   Todėl juosta bazėje yra `display: none` ir atsiranda TIK kai abu sluoksniai patvirtino:
   `tool-rail-ready` (tikra sesija) IR `app-shell-ready` (stalčius prijungtas).

   ── LŪŽIO ŠALTINIS ──────────────────────────────────────────────────────────

   `body.tool-rail-bp-60` / `body.tool-rail-bp-75` yra VIENINTELIS lūžio šaltinis: tą pačią
   klasę skaito ir CSS (žemiau), ir `workspaceBand.js` (`matchMedia`). Skardos lankstiniams
   riba aukštesnė, nes ties 60rem CAD drobei liktų per mažai vietos — o jų katalogas D4B
   metu NEKEIČIAMAS nė vienu pikseliu.

   Režimą renka GRYNAS CSS, ne JS: taip išdėstymas niekada nepriklauso nuo modulio įvykdymo
   momento. Kiekvienam slenksčiui yra po du blokus (juosta / stalčius), be persidengimo.

   ── SPALVOS ─────────────────────────────────────────────────────────────────

   Tik `shared.css` tokenai. Perdanga — `var(--text-primary)` su `opacity`, nes literalios
   spalvos (tiek hex, tiek funkcinės formos) šiame faile draudžiamos sargo. Tapatybės
   sluoksnio (D4A) čia NĖRA: D4B nekeičia nė vienos spalvos REIKŠMĖS.
*/

/* ── Bazė: viskas paslėpta, kol apvalkalas nepatvirtintas ──────────────────── */

.tool-rail,
.tool-rail-veil,
.tool-rail-toggle,
.tool-rail-close { display: none; }

/* ── Juostos vidus (nepriklauso nuo režimo) ────────────────────────────────── */

.tool-rail {
  flex-direction: column;
  gap: 0.5rem;
  background: var(--bg-surface);
  border-right: 1px solid var(--border);
  box-sizing: border-box;
  overflow-y: auto;                 /* žemas ekranas: paskyros riba lieka pasiekiama */
  /* Slinkties juosta PASLĖPTA, slinkti galima (ratukas, pirštas, Tab). Klasikinė Windows juosta (~15 px) atsiranda
     išskleidus pogrupį žemame ekrane ir atima plotį — „Sąskaitų generatorius" su ikona tada lūždavo į dvi eilutes,
     ir juosta „šokinėtų" (savininkas 2026-10-04). Tas pats — `/app/` `.app-sidebar`. */
  scrollbar-width: none;
  /* Užvedimo fonas (savininkas 2026-10-04: „turi aiškiau paryškėti"). `--bg-overlay` nuo juostos skyrėsi
     ~1,07:1 — beveik nematomai; 10 % rašalo per bet kurį pagrindą duoda ~1,2–1,3:1 abiejose temose.
     Ta pati reikšmė kaip `/app/` juostoje (`app.css` `.app-sidebar`). */
  --rail-hover: color-mix(in srgb, var(--text-primary) 10%, transparent);
}

/* Safari ir senesni Chromium `scrollbar-width` nemoka. */
.tool-rail::-webkit-scrollbar { display: none; }

/* Ženklas — logotipas (`.brand-logo`, `shared.css`), ta pati anatomija kaip `/app/` `.app-brand`: 44px
   eilutė (pirštų taikinys), logotipas jos viduryje. Eilutės aukštis privalo sutapti abiejose juostose —
   kitaip visa navigacija po ženklu tarp `/app/` ir įrankio pasislinktų (static-security 2al G11). */
.tool-rail-brand {
  flex: none;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  text-decoration: none;
}

/* Grupės antraštė: mikro-etiketė, ta pati gramatika kaip `.app-page .app-nav-group` —
   įskaitant skiriamąją liniją. Be jos įrankio grupės prasidėtų 0,5rem aukščiau nei `/app/`,
   ir visa paskyros grupė nusėstų ne ten. */
.tool-rail-group {
  margin: 0.5rem 0 0.15rem;
  padding: 0.5rem 0.6rem 0;
  border-top: 1px solid var(--border);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  font-variant-numeric: tabular-nums;
  text-transform: uppercase;
  color: var(--text-muted);
}

.tool-rail-nav,
.tool-rail-tools,
.tool-rail-account-nav {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}

/* `.app-nav` naudoja 0.15rem — tas pats ritmas dviem globaliems rodiniams.

   `margin-top` rezervo čia NEBĖRA: iki D4C4 virš navigacijos buvo tuščias tarpas, o dabar ten
   stovi TIKRAS organizacijos blokas (žemiau), užimantis lygiai tą patį aukštį. Vieta be turinio
   buvo teisingas tarpinis žingsnis, bet įrankyje ji reiškė, kad įmonės ir rolės naudotojas
   nemato niekada. */
.tool-rail-nav {
  gap: 0.15rem;
}

/* ── Rolė po ženklu (D4C4; savininkas 2026-10-04) ───────────────────────────────
   Viena 44px eilutė su rolės langeliu — lygiai tokia pati kaip `/app/` `.app-org` (ten kelių įmonių naudotojui
   šalia stovi perjungiklis, todėl aukštis = `.app-org-select { min-height: var(--control-h) }`). Apatinis tarpas
   1rem = `.app-sidebar > .app-org { margin-bottom }`. Mazgas lieka TUŠČIAS, kol nėra patvirtintos sesijos;
   aukštis nuo turinio nepriklauso. */
.tool-rail-org {
  display: flex;
  align-items: center;
  flex: none;
  min-height: 44px;
  margin: 0 0 1rem;
  min-width: 0;
}

/* Rolės langelis (savininkas 2026-10-04): „Savininkas" / „Administratorius" / „Narys" spalvotame langelyje po
   ženklu. Ta pati ženkliuko forma kaip sąskaitų būsenų (`.inv-badge`), akcento atspalvis, tekstas
   `--text-primary` — įskaitomas abiejose temose. Tuščias mazgas (be sesijos) langelio nerodo, o būsenos tekstas
   (`is-status`: `/app/` „Kraunama…", abiejose juostose „Nepavyko įkelti įmonių.") lieka paprastas tekstas. Ta pati taisyklė — ir kitos juostos faile
   (`workspace-band.css` / `app.css`), raidė į raidę. */
.rail-role {
  display: inline-flex;
  align-items: center;
  flex: none;
  /* Tas pats aukštis ir TUŠČIAM mazgui (pirmas kadras be sesijos): atėjus rolei langelis pasidaro spalvotas
     vietoje, nepašokdamas eilutės viduje (0.78rem × 1.5 eilutė + 0.25rem × 2 paraštės). */
  min-height: calc(0.78rem * 1.5 + 0.5rem);
  padding: 0.25rem 0.7rem;
  border-radius: 999px;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.rail-role:not(:empty):not(.is-status) {
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--text-primary);
  font-weight: 600;
}

/* Įmonės eilutė juostos apačioje (savininkas 2026-10-04, SĄSKAITA etalonas): pirmoji pavadinimo raidė
   spalvotame langelyje ir pavadinimas. Linija VIRŠ eilutės skiria apatinį bloką (vietoje buvusios „Paskyra"
   antraštės linijos) — ji ant pačios eilutės, todėl abiejose juostose stovi toje pačioje vietoje nepriklausomai
   nuo apvalkalų. Turinio aukštis 44px = `/app/` perjungiklio aukštis (`min-height` apima ir paraštę, ir liniją:
   `box-sizing: border-box`). Raidė lygiuojasi su punktų ikonomis (3px žymeklis + 0.6rem). Tuščias raidės
   langelis (be sesijos) nematomas, bet vietą laiko. Ta pati taisyklė — ir kitos juostos faile, raidė į raidę. */
.rail-org {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  min-width: 0;
  min-height: calc(44px + 0.5rem + 1px);
  margin: 0.5rem 0 0;
  padding: 0.5rem 0.6rem 0 calc(0.6rem + 3px);
  border-top: 1px solid var(--border);
  /* Veiklų langelio (KV1) atramos taškas. */
  position: relative;
}
.rail-org-initial {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--accent);
  color: var(--s-ink);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
}
.rail-org-initial:empty { visibility: hidden; }
.rail-org-name {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--text-primary);
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── Veiklų meniu (KV1, savininkas 2026-10-11, foto A2/A3) — IDENTIŠKA `app.css` ──────────────
   Įmonės eilutė — mygtukas su rodykle (44px pirštų taikinys); langelis iššoka VIRŠ eilutės (eilutė — juostos apačioje).
   Atsiradimas ir dingimas — 180 ms (`is-open`); užvedimas — tik pelei. */
.rail-org-btn {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  min-width: 0;
  min-height: 44px;
  margin: 0 -0.4rem;
  padding: 0 0.4rem;
  border: 0;
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--text-primary);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: opacity 200ms ease-out;
}
/* Veiklos dar nėra (įkrova be įrašo, be įmonės): tuščias mygtukas nematomas ir neprieinamas, bet vietą laiko. */
.rail-org-btn:has(.rail-org-name:empty) { visibility: hidden; }
/* F9: kol pakartotinė veiklų užklausa vyksta, „Bandyti dar kartą" pritemsta (200 ms, kaip J3 laukimas) — antras
   paspaudimas užklausos nekartoja (sargas — `app.js` / `workspaceBand.js`). Permatomumas — ne judesys. */
.rail-org-btn[aria-busy='true'] { opacity: 0.6; cursor: progress; }
.rail-org-caret {
  flex: none;
  color: var(--text-primary);
  transition: transform 180ms cubic-bezier(0.215, 0.61, 0.355, 1);
}
.rail-org-btn[aria-expanded="true"] .rail-org-caret { transform: rotate(180deg); }
.rail-org-menu {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% - 0.25rem);
  z-index: 5;
  padding: 0.35rem;
  /* Ryškesnis rėmas vietoje šešėlio: juostos stiliuje literalių spalvų nėra (2aa), o taisyklė abiejose juostose ta pati. */
  border: 1px solid var(--border-mid);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 180ms ease, transform 180ms cubic-bezier(0.215, 0.61, 0.355, 1);
}
.rail-org-menu.is-open { opacity: 1; transform: none; }
/* Tas pats langelis viršutinėje juostoje (telefone atidaro veiklos raidė, savininkas 2026-10-12): nusileidžia PO juosta
   dešinėje, virš turinio (redaktoriaus mygtukų), bet po stalčiumi ir modaliniais langais. */
.bar-org-menu {
  top: calc(100% + 4px);
  bottom: auto;
  left: auto;
  right: 0.9rem;
  z-index: 250;
  width: min(18rem, calc(100vw - 1.8rem));
  transform: translateY(-6px);
}
.rail-org-list {
  margin: 0;
  padding: 0 0 0.35rem;
  list-style: none;
  border-bottom: 1px solid var(--border);
}
/* `.rail-org-menu` priekyje — kad `/app/` `.app-nav-item` (pilka, kitas dydis; klasė stalčiui uždaryti) jų neperrašytų. */
.rail-org-menu .rail-org-item,
.rail-org-menu .rail-org-add {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  min-height: 44px;
  padding: 0 0.6rem;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  overflow-wrap: anywhere;
  cursor: pointer;
}
.rail-org-item[aria-current="true"] { font-weight: 700; }
.rail-org-add { margin-top: 0.35rem; }
.rail-org-add-icon { flex: none; }
@media (hover: hover) and (pointer: fine) {
  .rail-org-btn:hover,
  .rail-org-item:hover,
  .rail-org-add:hover { background: var(--rail-hover); }
}
@media (prefers-reduced-motion: reduce) {
  .rail-org-menu,
  .rail-org-caret { transition: none; }
}

.tool-rail-tools { margin-top: 0.5rem; }

/* Punktas. `border-left` egzistuoja VISOSE būsenose permatomas, todėl pažymėjus punktą
   tekstas nepasislenka nė per pikselį (ta pati priežastis kaip `/app/`). */
.tool-rail-item,
.tool-rail-tool {
  display: flex;
  align-items: center;
  min-height: 44px;
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  text-decoration: none;
}

.tool-rail-item {
  padding: 0.4rem 0.6rem;
  font-size: 0.9rem;
}

/* Antrinė navigacija: tylesnė DYDŽIU ir SVORIU, ne spalva — akcentas lieka rezervuotas
   dabartinei vietai ir fokusui. */
.tool-rail-tool {
  padding: 0.3rem 0.6rem;
  color: var(--text-muted);
  font-size: 0.9rem;                /* = `.app-page .app-tool-link` (--app-fs-body) */
}

/* Dabartinis įrankis: TRYS signalai — paviršius, tekstas, kairysis žymeklis. Fonas
   NEUTRALUS, ne akcento: akcentu pažymima tik 3px kraštinė. */
/* Tas pats „čia esate" ir paskyros punktui „Nustatymai" (šablonų puslapyje, 2026-10-04) — kaip `/app/`. */
.tool-rail-tool[aria-current='page'],
.tool-rail-item[aria-current='page'] {
  background: var(--bg-overlay);
  border-left-color: var(--accent);
  color: var(--text-primary);
  font-weight: 600;
}

/* Punkto ikona (savininkas 2026-10-04, nuotrauka 63). Savininko piešiniai iš `assets/images/*.svg` įterpti INLINE:
   jų `currentColor` ima ikonos spalvą (ji seka temą), o ikona yra pirmame kadre kartu su tekstu — be atskiros
   užklausos, todėl juosta pereinant tarp puslapių nesublyksi.
   Spalva — RYŠKIAUSIA teksto spalva visose būsenose, ne punkto teksto (savininkas 2026-10-04: „labai pilkos"):
   ploni piešinių brūkšniai (0,5–0,7 px) su glotninimu atrodo blankesni už tos pačios spalvos tekstą, o įrankių
   nuorodų tekstas dar ir tylesnis (`--text-muted`). Kopijų tapatumą su failais
   tikrina static-security 2ar. 18 px + 0.5rem, ne 20 px: 240 px juostoje „Sąskaitų generatorius" antraštėje
   tekstui lieka 184,8 px, pats tekstas — 140,5 px; su 20 px ikona jis lūžtų į dvi eilutes.
   Ta pati taisyklė — ir kitos juostos faile (`workspace-band.css` / `app.css`), raidė į raidę. */
.rail-icon {
  flex: none;
  width: 18px;
  height: 18px;
  margin-right: 0.5rem;
  color: var(--text-primary);
}

@media (hover: hover) and (pointer: fine) {
  /* Dabartinis punktas užvedus nesikeičia (kaip `/app/`): jo paviršius — vienas iš trijų „čia esate" signalų,
     o dabartinis įrankis yra `<span>`, ne nuoroda — užvedimo atsakas jį darytų panašų į paspaudžiamą. */
  .tool-rail-item:not([aria-current='page']):hover,
  .tool-rail-tool:not([aria-current='page']):hover {
    background: var(--rail-hover);
    color: var(--text-primary);
  }
}

/* ── Paskyros riba (D4C4-N2b) ───────────────────────────────────────────────
   Riba PERKELTA nuo `.tool-rail-account` prie `.tool-rail-account-nav`, nes `/app/` pusėje
   ją neša `.app-account`, kuris apima IR navigaciją, IR el. paštą, IR veiksmus. Įrankyje
   tas pats vaidmuo tenka navigacijai — todėl `margin-top: auto` gyvena BŪTENT čia, ne prie
   el. pašto apvalkalo. Perkėlus jį žemiau, visa paskyros grupė priliptų prie apačios ir
   `/app/` aukščio nebeatitiktų. */
.tool-rail-account-nav {
  margin-top: auto;
  padding-top: 1rem;
  gap: 0.1rem;
}

/* Viena linija virš apatinio bloko (savininkas 2026-10-04): „Paskyra" antraštės nebėra — liniją neša įmonės
   eilutė (`.rail-org`), abiejose juostose ta pati taisyklė, todėl ir vieta ta pati. */

/* Apatinių veiksmų REZERVAS. Įrankyje nei atsijungimo, nei temos mygtuko nėra,
   bet `/app/` pusėje jie užima vietą — todėl ji rezervuojama tuščia.

   Du tikri spąstai, dėl kurių reikšmės atrodo keistai:
   1. `box-sizing: border-box` (paveldėtas iš `.tool-rail`) reiškia, kad `padding-bottom`
      TELPA į `min-height` — todėl `min-height` privalo apimti ir jį, kitaip rezervas būtų
      per mažas per visą veiksmų aukštį.
   2. `flex: none` yra būtinas: žemame ekrane juosta persipildo, ir be jo flex-shrink
      suspaustų būtent šį bloką — paskyros grupė pajudėtų tik tam tikruose aukščiuose. */
.tool-rail-account {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;                        /* = `.app-account { gap: var(--app-gap-sm) }` */
  /* `padding-bottom` rezervo NEBĖRA: apačioje stovi tikra veiksmų eilutė. El. pašto eilutės virš jos nebėra
     (savininkas 2026-10-11), todėl rezervas — vien veiksmų eilutės aukštis. */
  min-height: var(--ws-actions-h);
}

/* ── Veiksmų eilutė (D4C4) ──────────────────────────────────────────────────
   Ta pati anatomija kaip `.app-account-actions`. Aukštis NEPRIKLAUSO nuo to, ar „Atsijungti"
   jau matomas: temos mygtukas yra 44px = `--ws-actions-h`, todėl eilutė turi galutinį aukštį
   dar prieš READY. Būtent todėl atsiradęs atsijungimo mygtukas nieko nepastumia. */
.tool-rail-actions {
  display: flex;
  align-items: center;
  flex: none;
  gap: 0.5rem;
  min-height: var(--ws-actions-h);
}

/* Temos mygtukas — identiškas `.app-theme-btn`, bet savo klase: `app.css` į įrankius
   neįkeliamas, todėl paveldėti nėra iš ko. */
.tool-rail-theme {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--ws-actions-h);
  height: var(--ws-actions-h);
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}

/* Ikonų perjungimas — ta pati taisyklė kaip `/app/`: šviečia ta, kuri rodo KITĄ būseną. */
.tool-rail-theme .app-theme-icon-moon { display: none; }
body.dark .tool-rail-theme .app-theme-icon-sun { display: none; }
body.dark .tool-rail-theme .app-theme-icon-moon { display: inline; }

.tool-rail-signout {
  flex: 1 1 auto;
  min-height: var(--ws-actions-h);
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.85rem;
  cursor: pointer;
}

.tool-rail-signout[disabled] { cursor: default; opacity: 0.6; }

@media (hover: hover) and (pointer: fine) {
  .tool-rail-theme:hover,
  .tool-rail-signout:hover:not([disabled]) {
    background: var(--bg-overlay);
    color: var(--text-primary);
  }
}

/* Stalčiaus valdikliai. 44x44 pirštų taikinys abiem. */
.tool-rail-toggle,
.tool-rail-close {
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  flex-shrink: 0;
}

/* ☰ — matomas kvadratas viršutinėje juostoje (savininkas 2026-10-10), toks pat kaip temos mygtukas šalia jo
   (`tools.css` `.tool-theme-btn`): rėmelis ir pakeltas fonas. Uždarymo mygtukas stalčiuje lieka be rėmelio —
   jis ne juostos valdiklis. */
.tool-rail-toggle {
  border-color: var(--border);
  background: var(--bg-overlay);
  transition: opacity 200ms ease-out;   /* ankstyvo paspaudimo pritemimas (žr. viršų) — ir judesio jautriems */
}

/* Užvedimas TIK tikram žymekliui: lietimo ekrane jis „prilimptų" po bakstelėjimo. ☰ pagrindas jau pakeltas,
   todėl jo užvedimas — vienu tonu tamsesnis. */
@media (hover: hover) and (pointer: fine) {
  .tool-rail-close:hover {
    background: var(--bg-overlay);
    color: var(--text-primary);
  }
  .tool-rail-toggle:hover {
    background: var(--bg-hover);
    color: var(--text-primary);
  }
}

.tool-rail-brand:focus-visible,
.tool-rail-item:focus-visible,
.tool-rail-tool:focus-visible,
.tool-rail-toggle:focus-visible,
.tool-rail-close:focus-visible,
.tool-rail-theme:focus-visible,
.tool-rail-signout:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: no-preference) {
  .tool-rail-item,
  .tool-rail-tool,
  .tool-rail-sub-item {
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
  }
  .tool-rail-toggle,
  .tool-rail-close {
    transition: background 150ms ease, color 150ms ease, opacity 200ms ease-out;
  }
  .tool-rail { transition: transform 180ms ease-out; }
  .tool-rail-veil { transition: opacity 180ms ease-out; }
}

/* ════════════════════════════════════════════════════════════════════════════
   REŽIMAI. Po du blokus kiekvienam slenksčiui; jie niekada nepersidengia:
   bp-60 juosta nuo 60rem / stalčius iki 60rem; bp-75 juosta nuo 75rem / stalčius iki 75rem.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── bp-60: NUOLATINĖ JUOSTA ───────────────────────────────────────────────── */
@media (min-width: 60rem) {
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready { display: flex; flex-direction: row; }

  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > .tool-rail {
    display: flex;
    width: var(--tool-rail-w);
    flex: 0 0 var(--tool-rail-w);
    height: 100dvh;
    padding: 1.5rem 1rem;
    view-transition-name: workspace-rail;
  }

  /* `min-width: 0` neleidžia ilgam turiniui išplėsti karkaso. */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > #app { flex: 1 1 auto; min-width: 0; }

  /* Vienas ženklas ekrane: juostai esant, antraštės ženklas, skirtukas ir viršutinės juostos veiksmai dingsta
     (tema ir navigacija — juostoje). */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-brand,
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-header-sep,
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .ws-bar-actions { display: none; }

  /* Spausdinimo sritis NEGALI tapti flex elementu: `doShare()` (html2pdf) ją parodo EKRANO
     medijoje, todėl ji atsidurtų šalia juostos ir susitrauktų. Galioja tik su juosta. */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

/* ── bp-60: STALČIUS ───────────────────────────────────────────────────────── */
@media (max-width: 59.999rem) {
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > .tool-rail {
    display: flex;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 951;                    /* virš įrankių perdangų, po `#preview-overlay` (1000) */
    width: min(17.5rem, calc(100vw - 3rem));
    height: 100dvh;
    padding: 1rem;
    transform: translateX(-100%);
  }
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready.app-drawer-open > .tool-rail {
    transform: translateX(0);
  }
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-rail-toggle,
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-rail-close { display: inline-flex; }
  /* Veiklos raidė — kartu su stalčiumi, kurį ji atidaro, ir tik su įmone (`hidden` nuimtas). */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .ws-bar-org:not([hidden]) { display: inline-flex; }

  /* Stalčiaus režime matomas lieka ANTRAŠTĖS temos mygtukas, todėl juostos kopija
     paslepiama — kitaip stalčių atidarius fokusuojami būtų du tos pačios temos valdikliai. */
  body.tool-rail-bp-60 .tool-rail-theme { display: none; }
  /* `top` = stalčiaus įtrauka (1rem): mygtukas stovi toje pačioje 44px eilutėje kaip ženklas. */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-rail-close {
    position: absolute;
    top: 1rem;
    right: 0.5rem;
  }
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready .tool-rail-brand { padding-right: 44px; }
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > .tool-rail-veil {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 950;
    background: var(--text-primary);
    opacity: 0;
  }
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready.app-drawer-open > .tool-rail-veil {
    opacity: 0.45;
  }
  /* `hidden` yra vienintelis perdangos matomumo jungiklis — jį valdo `appShell.js`. */
  body.tool-rail-bp-60.tool-rail-ready.app-shell-ready > .tool-rail-veil[hidden] {
    display: none;
  }
}

/* ── bp-75: NUOLATINĖ JUOSTA ───────────────────────────────────────────────── */
@media (min-width: 75rem) {
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready { display: flex; flex-direction: row; }

  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > .tool-rail {
    display: flex;
    width: var(--tool-rail-w);
    flex: 0 0 var(--tool-rail-w);
    height: 100dvh;
    padding: 1.5rem 1rem;
    view-transition-name: workspace-rail;
  }

  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > #app { flex: 1 1 auto; min-width: 0; }

  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-brand,
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-header-sep,
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .ws-bar-actions { display: none; }

  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

/* ── bp-75: STALČIUS ───────────────────────────────────────────────────────── */
@media (max-width: 74.999rem) {
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > .tool-rail {
    display: flex;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 951;
    width: min(17.5rem, calc(100vw - 3rem));
    height: 100dvh;
    padding: 1rem;
    transform: translateX(-100%);
  }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready.app-drawer-open > .tool-rail {
    transform: translateX(0);
  }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-rail-toggle,
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-rail-close { display: inline-flex; }
  /* Veiklos raidė — kartu su stalčiumi, kurį ji atidaro, ir tik su įmone (`hidden` nuimtas). */
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .ws-bar-org:not([hidden]) { display: inline-flex; }

  /* Stalčiaus režime matomas lieka ANTRAŠTĖS temos mygtukas, todėl juostos kopija
     paslepiama — kitaip stalčių atidarius fokusuojami būtų du tos pačios temos valdikliai. */
  body.tool-rail-bp-75 .tool-rail-theme { display: none; }
  /* `top` = stalčiaus įtrauka (1rem): mygtukas stovi toje pačioje 44px eilutėje kaip ženklas. */
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-rail-close {
    position: absolute;
    top: 1rem;
    right: 0.5rem;
  }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready .tool-rail-brand { padding-right: 44px; }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > .tool-rail-veil {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 950;
    background: var(--text-primary);
    opacity: 0;
  }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready.app-drawer-open > .tool-rail-veil {
    opacity: 0.45;
  }
  body.tool-rail-bp-75.tool-rail-ready.app-shell-ready > .tool-rail-veil[hidden] {
    display: none;
  }
}


/* ════════════════════════════════════════════════════════════════════════════
   PIRMO KADRO DARBO SRITIES GEOMETRIJA (D4C4-N1)
   ════════════════════════════════════════════════════════════════════════════

   ── PROBLEMA (išmatuota N0) ─────────────────────────────────────────────────

   Tikra juosta gali įeiti į išdėstymą tik pasibaigus keturių nuoseklių modulių grandinei
   (workspaceBand → supabaseClient → supabase.js → 4 moduliai) ir patvirtinus sesiją. Tai
   įvyksta ≥445 ms po FCP, t. y. kai naudotojas įrankį JAU MATO. Tada `#app` pašoka
   0 → 240px, o karkaso CLS siekia 0.19–0.22.

   ── SPRENDIMAS ──────────────────────────────────────────────────────────────

   `?workspace=1` yra KETINIMAS, todėl `theme-init.js` dar prieš pirmą atvaizdavimą uždeda
   `html.tool-ws-intent`, o čia rezervuojama TIK GEOMETRIJA: staliniame — 240px kolona (N2b: ją
   užima pati statinė juosta), mobiliame — viršutinės juostos eilutė (2026-10-10; antros eilutės
   aukščio rezervacijos nebėra). Jokių duomenų ir jokio privataus mazgo.

   GEOMETRIJA GALI ŽINOTI KETINIMĄ. DUOMENYS PRIVALO ŽINOTI ĮGALIOJIMĄ.

   ── PERDAVIMAS ──────────────────────────────────────────────────────────────

   Kai sesija patvirtinama, `workspaceBand.js` (NEKEISTAS) uždeda abi READY klases. Tos
   pačios stiliaus perskaičiavimo metu rezervacija dingsta, o tikra juosta užima LYGIAI tą
   patį plotį iš to paties tokeno — todėl `#app.x` ir `#app.width` nepasikeičia.

   ── KAI SESIJOS NĖRA ────────────────────────────────────────────────────────

   Rezervacija LIEKA. Sutraukus ją atsirastų tas pats postūmis, tik priešinga kryptimi.
   Tikra juosta lieka paslėpta, privataus turinio neatsiranda. */

/* ── Stalinis: 60rem įrankiai (sutartys, stogas) ───────────────────────────── */
@media (min-width: 60rem) {
  html.tool-ws-intent body.tool-rail-bp-60 { display: flex; flex-direction: row; }

  /* N2b: koloną nuo PIRMO kadro užima TIKRA juosta, o ne pseudoelementas. N1 rezervacija
     čia buvo teisingas tarpinis žingsnis, bet ji galėjo turėti tik geometriją — todėl
     juosta pirmame kadre atrodė tuščia. Dabar rodomas STATINIS, visiems vienodas turinys:
     ženklas, rodiniai, trys įrankiai, paskyros nuorodos. Privatūs mazgai lieka `hidden`
     ir laukia TIKROS sesijos — juos ir toliau atrakina tik `workspaceBand.js`. */
  /* `view-transition-name`: juosta pereinant tarp dokumentų yra ATSKIRA grupė (žr. N2 bloką failo gale) —
     vardas tik NUOLATINEI juostai (čia ir READY taisyklėse), stalčiui jo nėra. */
  html.tool-ws-intent body.tool-rail-bp-60 > .tool-rail {
    display: flex;
    width: var(--tool-rail-w);
    flex: 0 0 var(--tool-rail-w);
    height: 100dvh;
    padding: 1.5rem 1rem;
    view-transition-name: workspace-rail;
  }

  html.tool-ws-intent body.tool-rail-bp-60 > #app { flex: 1 1 auto; min-width: 0; }

  /* Vienas ženklas ekrane — nuo pirmo kadro, o ne nuo READY. Juostos ženklas jau yra,
     todėl antraštės kopija būtų antras tas pats žodis, kuris dingtų tik po hidratacijos.
     Viršutinės juostos veiksmai (raidė, tema, ☰) — telefono valdikliai; čia jų vietą užima juosta. */
  html.tool-ws-intent body.tool-rail-bp-60 .tool-brand,
  html.tool-ws-intent body.tool-rail-bp-60 .tool-header-sep,
  html.tool-ws-intent body.tool-rail-bp-60 .ws-bar-actions { display: none; }

  /* Šablonų puslapio viršutinė juosta turi TIK ženklą ir veiksmus — plačiame ekrane abu stovi juostoje, todėl
     visa eilutė dingsta (kitaip liktų tuščia 48px juosta virš nustatymų antraštės). */
  html.tool-ws-intent body.tool-rail-bp-60 .tool-header--bar { display: none; }

  /* TEMOS PARITETAS (D4C4): nuolatinėje juostoje temos mygtukas priklauso apačiai — ten,
     kur jis yra `/app/`. Antraštės kopija slepiama, kad liktų LYGIAI VIENAS matomas ir
     fokusuojamas valdiklis. Abu vis tiek valdo tą pačią būseną per `theme-toggle.js`. */
  html.tool-ws-intent body.tool-rail-bp-60 .tool-theme-btn { display: none; }

  /* Ta pati priežastis kaip READY taisyklėje: `doShare()` (html2pdf) rodo `#print-area`
     EKRANO medijoje, todėl flex kontekste jis taptų susitraukusiu elementu šalia
     rezervacijos. Be šios eilutės N1 sugadintų stogo PDF eksportą. */
  html.tool-ws-intent body.tool-rail-bp-60 > #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }

  /* PERDAVIMO taisyklės nebėra ir nebereikia: rezervacijos pseudoelemento šiame lūžyje
     nebeliko visai, todėl nėra kam dingti atėjus READY. Vietoje perdavimo yra TĘSTINUMAS —
     ta pati juosta stovi ir prieš, ir po jo. */
}

/* ── Stalinis: 75rem įrankis (skardos lankstiniai) ─────────────────────────── */
@media (min-width: 75rem) {
  html.tool-ws-intent body.tool-rail-bp-75 { display: flex; flex-direction: row; }

  /* Ta pati N2b logika kaip bp-60; skiriasi TIK slenkstis. */
  html.tool-ws-intent body.tool-rail-bp-75 > .tool-rail {
    display: flex;
    width: var(--tool-rail-w);
    flex: 0 0 var(--tool-rail-w);
    height: 100dvh;
    padding: 1.5rem 1rem;
    view-transition-name: workspace-rail;
  }

  html.tool-ws-intent body.tool-rail-bp-75 > #app { flex: 1 1 auto; min-width: 0; }

  html.tool-ws-intent body.tool-rail-bp-75 .tool-brand,
  html.tool-ws-intent body.tool-rail-bp-75 .tool-header-sep,
  html.tool-ws-intent body.tool-rail-bp-75 .ws-bar-actions { display: none; }

  /* TEMOS PARITETAS (D4C4): nuolatinėje juostoje temos mygtukas priklauso apačiai — ten,
     kur jis yra `/app/`. Antraštės kopija slepiama, kad liktų LYGIAI VIENAS matomas ir
     fokusuojamas valdiklis. Abu vis tiek valdo tą pačią būseną per `theme-toggle.js`. */
  html.tool-ws-intent body.tool-rail-bp-75 .tool-theme-btn { display: none; }

  html.tool-ws-intent body.tool-rail-bp-75 > #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

/* ── Viršutinė juosta telefone: darbo srities geometrija (savininkas 2026-10-10) ──────────
 *
 * Ta pati eilutė kaip `/app/` viršuje (`app.css` `.app-shell-ready .app-topbar`): 0.5rem + 44px valdikliai +
 * 0.5rem + 1px linija = 61px, įtrauka 0.9rem, logotipas tame pačiame taške (ženklo įtrauka nunulinta), todėl
 * pereinant tarp `/app/` ir įrankio niekas nepašoka. Paritetą su `/app/` tikrina static-security `2aj` G10.
 *
 * Taisyklės remiasi KETINIMU, todėl eilutė galutinė nuo PIRMO kadro: patvirtinus sesiją atsiranda tik raidė ir ☰,
 * o jų stulpeliai fiksuotame 3 × 44px tinklelyje jau rezervuoti — tema ir logotipas nepajuda nė per pikselį.
 * Antros eilutės ir jos aukščio rezervacijos (iki 2026-10-10 — `#wizard-progress-bar` paraštė) nebėra.
 *
 * RAIDĖ IR ☰ NUO PIRMO KADRO (savininkas 2026-10-10: juosta pereinant tarp puslapių nesikeičia). Ketinimas vienas jų
 * neatidengia — be sesijos stalčiaus nebūtų (static-security 2aj G1). Atidengia tik ketinimas KARTU su
 * `data-ws-armed="1"`: šį ženklą uždeda vien `theme-init.js` ir tik radęs GALIOJANTĮ pristatymo įrašą (tame skirtuke
 * neseniai patvirtinta sesija), o ankstyvas paspaudimas tik užrašomas, kol stalčių perims `appShell.js` (J3). Paaiškėjus,
 * kad sesijos nėra, `workspaceBand.js` ženklą atšaukia (`0`), ir abu vėl paslepiami. Be įrašo — kaip iki šiol: jie
 * išnyra po READY (animacija žemiau).
 *
 * Ribos — kiekvieno įrankio stalčiaus slenkstis: skardos lankstiniams 75rem, todėl jų juosta ta pati ir
 * 60–75rem pločiuose. `overflow: hidden` antraštėje NIEKADA — jis nukirptų ☰ fokuso žiedą. */
@media (max-width: 59.999rem) {
  html.tool-ws-intent body.tool-rail-bp-60 .tool-header { padding: 0.5rem 0.9rem; gap: 0.5rem; }
  html.tool-ws-intent body.tool-rail-bp-60 .tool-brand { padding: 0; }
  html.tool-ws-intent body.tool-rail-bp-60 .ws-bar-actions { display: grid; grid-template-columns: repeat(3, 44px); }
  html.tool-ws-intent body.tool-rail-bp-60 .tool-rail-toggle[data-ws-armed='1'],
  html.tool-ws-intent body.tool-rail-bp-60 .ws-bar-org[data-ws-armed='1']:not([hidden]) { display: inline-flex; }
}

@media (max-width: 74.999rem) {
  html.tool-ws-intent body.tool-rail-bp-75 .tool-header { padding: 0.5rem 0.9rem; gap: 0.5rem; }
  html.tool-ws-intent body.tool-rail-bp-75 .tool-brand { padding: 0; }
  html.tool-ws-intent body.tool-rail-bp-75 .ws-bar-actions { display: grid; grid-template-columns: repeat(3, 44px); }
  html.tool-ws-intent body.tool-rail-bp-75 .tool-rail-toggle[data-ws-armed='1'],
  html.tool-ws-intent body.tool-rail-bp-75 .ws-bar-org[data-ws-armed='1']:not([hidden]) { display: inline-flex; }
}

/* Įrankio pavadinimas telefone — tik ekrano skaitytuvui (savininkas 2026-10-10: juosta visur vienoda), bet jis
   lieka puslapio vieninteliu H1. Planšetėje ir siaurame kompiuterio lange (> 40rem) jis matomas, kaip iki šiol. */
@media (max-width: 40rem) {
  html.tool-ws-intent .tool-header-sep { display: none; }
  html.tool-ws-intent .tool-header-title {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
  }
}

/* ── Popierius ─────────────────────────────────────────────────────────────────
   Darbo srities chrome NIEKADA nepatenka ant popieriaus. `body` grąžinamas į `block`,
   kad `#print-area` atgautų normalų srautą (puslapiavimas), o `position` — į `static`
   dėl tos pačios priežasties. Viršutinės juostos veiksmai (raidė, tema, ☰) — ekrano mygtukai:
   popieriuje jų nėra nė viename režime. */
@media print {
  .tool-rail,
  .tool-rail-veil,
  .tool-rail-toggle,
  .tool-rail-close,
  .ws-bar-actions { display: none !important; }

  /* `!important` čia BŪTINAS, ir tai išmatuota, o ne atsargumas: nuolatinės juostos
     taisyklė yra `body.tool-rail-bp-60.tool-rail-ready.app-shell-ready` (0,4,1), o šios
     bendresnės (0,3,1) jos nenugalėtų — spaudinyje karkasas liktų `flex`, o `#print-area`
     taptų susitraukusiu flex elementu šalia (paslėptos) juostos. */
  body.tool-rail-ready.app-shell-ready { display: block !important; }
  body.tool-rail-ready.app-shell-ready > #print-area { position: static !important; }
}

/* ── Popierius: ketinimo geometrija (D4C4-N1) ──────────────────────────────────
   Rezervacija yra tik ekrano karkasas. Spaudinyje jos negali likti NEI kaip kolonos, NEI
   kaip tarpo — kitaip pirmas lapas prasidėtų 240px per toli arba su tuščia juosta viršuje.
   `!important` dėl tos pačios priežasties kaip gretimame bloke: ketinimo taisyklės yra
   media-lygio ir be jo nenugalėtų. Esami spausdinimo keliai nekeičiami. */
@media print {
  html.tool-ws-intent body::before { content: none !important; }
  html.tool-ws-intent body { display: block !important; }
  html.tool-ws-intent body > #print-area { position: static !important; }
}

/* ── Viršutinės juostos atsiradimas (savininkas 2026-10-10) ─────────────────────
   Be pristatymo įrašo raidė ir ☰ atsiranda tik patvirtinus sesiją — be jos stalčiaus, kurį jie atidaro, nėra. Kad tai
   nebūtų kietas šuolis, jie išnyra per 200 ms (easeOutCubic: greitai pajuda, švelniai sustoja); jų stulpeliai jau
   rezervuoti, todėl kiti valdikliai nejuda. Judesio jautriems — be animacijos.
   Užtaisyti (`data-ws-armed="1"`) stovi nuo pirmo kadro, todėl READY jų NEanimuoja: animacija, prasidėjusi jau matomam
   mygtukui, jį akimirkai užgesintų — būtent tas mirktelėjimas, kurio nebeturi būti. */
@keyframes ws-bar-in {
  from { opacity: 0; transform: scale(0.92); }
}

@media (prefers-reduced-motion: no-preference) {
  body.tool-rail-ready.app-shell-ready .tool-rail-toggle:not([data-ws-armed='1']),
  body.tool-rail-ready.app-shell-ready .ws-bar-org:not([data-ws-armed='1']) {
    animation: ws-bar-in 200ms cubic-bezier(0.215, 0.61, 0.355, 1);
  }
}

/* ── Rodinio pogrupis (INV): „Sąskaitų generatorius" → Apžvalga / Sąskaitos / … ───────────
   Visose juostose vienodai (savininko sprendimas 2026-10-03): antraštė yra MYGTUKAS, kuris pogrupį
   išskleidžia / sutraukia — ne nuoroda, paspaudus niekas neperkraunama. Sąskaitų puslapyje pogrupis
   statiškai atvertas ir dabartinį rodinį žymi `aria-current`, kurį app.js perkelia be perkrovimo;
   įrankiuose — sutrauktas, kol naudotojas jo nepaprašo. Būsena gyvena vien `aria-expanded`, o
   apvalkalas animuojamas `grid-template-rows` 0fr → 1fr (sulankstomų skilčių šablonas), 300 ms.
   Nuo 2026-10-24 (savininkas) pogrupis stovi „Įrankiuose" po „Skardos lankstiniai", o „Klientai" — pagrindinėje
   navigacijoje. */
.tool-rail-group-wrap {
  display: flex;
  flex-direction: column;
}

/* Mygtukas paveldi `.tool-rail-item` geometriją (44px, kairysis žymeklis); naršyklės mygtuko
   rėmelis nuimamas, kairioji permatoma kraštinė lieka, kad tekstas lygiuotųsi su kitais punktais. */
.tool-rail-item--group {
  width: 100%;
  border-top: 0;
  border-right: 0;
  border-bottom: 0;
  background: transparent;
  /* Kaip „Objektai" ir „Komanda": nepasirinktas pogrupis neišsiskiria nei spalva, nei svoriu (savininkas 2026-10-03). */
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.9rem;
  text-align: left;
  cursor: pointer;
}

/* Pogrupyje yra dabartinis rodinys (sąskaitų puslapis) — antraštė tamsesnė; žymeklį turi pats punktas.
   TIK spalva, ne storis (savininkas 2026-10-04): pusjuodis „Sąskaitų generatorius" netelpa į vieną eilutę,
   antraštė tapdavo 56 px vietoj 44, ir pereinant iš `/app/` į sąskaitas viskas žemiau nušokdavo 12 px. */
.tool-rail-group-wrap:has(.tool-rail-sub-item[aria-current='page']) > .tool-rail-item--group {
  color: var(--text-primary);
}

.tool-rail-caret {
  flex: 0 0 auto;
  /* Prispausta prie dešinio krašto; −0.4rem — permatomas rodyklės laukelis (5,4 px) užeina ant punkto paraštės,
     kad pavadinimas su ikona tilptų vienoje eilutėje (atsarga 6,7 px). */
  margin: 0 -0.4rem 0 auto;
  color: var(--text-muted);
  transition: transform 0.3s var(--ease-out-strong, ease-out);
}

.tool-rail-item--group[aria-expanded='true'] .tool-rail-caret { transform: rotate(180deg); }

.tool-rail-sub-wrap {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s var(--ease-out-strong, ease-out);
}

.tool-rail-item--group[aria-expanded='true'] + .tool-rail-sub-wrap { grid-template-rows: 1fr; }

/* Sutrauktas pogrupis nepasiekiamas nei Tab, nei skaitytuvui — `visibility` keičiasi PO animacijos. */
.tool-rail-sub {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-height: 0;
  overflow: hidden;
  margin: 0;
  padding: 0 0 0 0.85rem;
  list-style: none;
  visibility: hidden;
  transition: visibility 0s linear 0.3s;
}

/* Apatinis tarpas — ant paskutinio punkto, ne ant sąrašo: `padding` nesusitraukia, todėl ant `<ul>`
   jis paliktų 4px sutrauktam apvalkalui. */
.tool-rail-sub > li:last-child { padding-bottom: 0.25rem; }

.tool-rail-item--group[aria-expanded='true'] + .tool-rail-sub-wrap > .tool-rail-sub {
  visibility: visible;
  transition-delay: 0s;
}

.tool-rail-sub-item {
  display: flex;
  align-items: center;
  min-height: 44px;
  /* = `/app/` `.app-nav-item`: dviejų eilučių punktas („Pasikartojančios sąskaitos") kitaip būtų 1,6 px
     žemesnis, ir pereinant tarp puslapių punktai žemiau jo pasislinktų. */
  padding: 0.4rem 0.6rem;
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 0.88rem;
  text-decoration: none;
}

.tool-rail-sub-item[aria-current='page'] {
  background: var(--bg-overlay);
  border-left-color: var(--accent);
  color: var(--text-primary);
  font-weight: 600;
}

/* Pogrupiai „Įrankiuose" — „Skardos lankstiniai" (savininkas 2026-10-18) ir „Sąskaitų generatorius" (2026-10-24): antraštė
   atrodo kaip kaimyniniai įrankiai (`.tool-rail-tool`) — tylesnė, ta pati įtrauka. Dabartinis punktas viduje ją paryškina
   taisykle aukščiau. */
.tool-rail-tools .tool-rail-item--group {
  padding: 0.3rem 0.6rem;
  color: var(--text-muted);
}

@media (hover: hover) and (pointer: fine) {
  .tool-rail-item--group:hover,
  .tool-rail-sub-item:not([aria-current='page']):hover {
    background: var(--rail-hover);
    color: var(--text-primary);
  }
}

@media (prefers-reduced-motion: reduce) {
  .tool-rail-caret,
  .tool-rail-sub-wrap,
  .tool-rail-sub { transition: none; }
}

/* Vienas grupių pataisymas be animacijos (`railGroups.js` `syncRailGroups(…, { instant: true })`): krovimo metu statinis
   HTML dabartinio rodinio nežino (sąskaitų „Klientai"), o susitraukiantis pogrupis atrodytų kaip netyčinis judesys. */
.tool-rail.rail-instant .tool-rail-caret,
.tool-rail.rail-instant .tool-rail-sub-wrap,
.tool-rail.rail-instant .tool-rail-sub { transition: none; }

/* ── Perėjimas tarp dokumentų (D4C4-N2) ────────────────────────────────────────
   Darbo sritis yra kelių ATSKIRŲ dokumentų rinkinys: `/app/**` ir trys įrankiai. Perėjimas
   tarp jų iki šiol buvo kietas kirtis — naršyklė nubraukdavo seną kadrą ir piešdavo naują.
   Geometriją N1 jau padarė vienodą pirmame kadre, todėl liko tik pats perjungimas.

   `@view-transition` veikia BE JOKIO JavaScript: naršyklė pati padaro seno ir naujo
   dokumento nuotraukas ir jas sukryžmina. Todėl čia nėra nė vienos JS eilutės — o jei
   naršyklė šito nemoka, tiesiog nieko neįvyksta ir lieka tas pats kietas kirtis.

   Ribos `@media` viduje yra sąmoningos ir patikrintos tikra naršykle (Edge 152):
   - `min-width: 60rem` — siaurame ekrane įrankis atveriamas per meniu, kur perėjimas
     dengtų patį veiksmą; be to siauras kelias yra jautriausias našumui.
   - `prefers-reduced-motion: no-preference` — judesio jautrumas gerbiamas be išimčių.
   Už abiejų ribų perėjimas NEĮVYKSTA — tai išmatuota, ne numanoma.

   Blokas privalo būti VIENODAS `app.css` ir `workspace-band.css`. Perėjimas tarp dokumentų
   įvyksta tik tada, kai jį deklaruoja ABU dokumentai; `/app/**` krauna `app.css`, įrankiai
   — `workspace-band.css`. Bet koks skirtumas tarp jų tyliai išjungtų pusę perėjimų.

   Trukmė prisegama tyčia: UA numatytoji `root` trukmė yra 250 ms (išmatuota, ne spėta).
   Mastelio, postūmio ar suliejimo taisyklių neįvedama. UA `root` grupei visada sukuria
   `transform`/`width`/`backdrop-filter` kadrus, bet lango dydis nesikeičia, todėl tie kadrai
   yra tapatybiniai — geometrija nejuda, o būtent tai ir yra N1 rezultatas, kurio negalima prarasti.

   JUOSTA — ATSKIRA GRUPĖ (savininkas 2026-10-04). Kryžminant visą dokumentą juosta liejosi kartu
   su turiniu, todėl kiekvienas jos skirtumas (kitas dabartinis punktas, pogrupis) matėsi kaip
   krustelėjimas. Vardą `workspace-rail` juostai duoda NE šis blokas, o nuolatinės juostos taisyklė
   (`/app/` — `.app-sidebar` nuo 60rem; įrankiuose — `.tool-rail` nuo savo lūžio): vienoda juosta
   abiejuose dokumentuose yra dvi vienodos nuotraukos, todėl ji stovi, o liejasi tik turinys.
   Stalčius vardo negauna — kitaip perėjimas pieštų juostą, „išvažiuojančią" už ekrano. */
@media (min-width: 60rem) and (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }

  ::view-transition-group(root),
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: 200ms;
    animation-timing-function: ease;
  }

  /* Juostos grupė — ta pati trukmė kaip `root`, kad dabartinio punkto žymeklis persikeltų kartu su turiniu. */
  ::view-transition-group(workspace-rail),
  ::view-transition-old(workspace-rail),
  ::view-transition-new(workspace-rail) {
    animation-duration: 200ms;
    animation-timing-function: ease;
  }
}
