/* =====================================================================
   worker-shell.css -- Paczka 183
   =====================================================================

   Wyciete BAJT W BAJT z pro-closeout.css -- wspolny arkusz starego chrome'u.

   Portal Workera byl ostatnim miejscem, ktore trzymalo ten wspolny
   arkusz przy zyciu. Zamiast wozic caly plik dla garstki regul, portal
   dostaje wlasna kopie DOKLADNIE tego, czego uzywa -- reszta wspolnego
   arkusza nie dotyczy go w ogole.

   Zakres wyciecia nie jest zgadywany: w przegladarce zmierzone zostalo,
   ktore reguly tego pliku trafiaja w jakikolwiek element portalu
   (23 regul). Przeniesiony zostal NADZBIOR tego pomiaru -- caly
   rodzinny prefiks tych nazw -- zeby zlapac takze stany, ktorych akurat
   nie ma na ekranie (offline, blad, zamkniety panel, inny jezyk).
   Kolejnosc regul i pozycja pliku w <head> sa te same, co poprzednio,
   wiec kaskada nie zmienia sie ani o jeden krok.
   ===================================================================== */

:root{--pro-navy:#0f172a;--pro-navy-2:#1e293b;--pro-blue:#2563eb;--pro-yellow:#facc15;--pro-ink:#142033;--pro-muted:#64748b;--pro-line:#dbe4ef;--pro-canvas:#f2f5f9;--pro-white:#fff;--pro-accent:var(--pro-blue);--pro-accent-soft:#eff6ff;--pro-ring:rgba(37,99,235,.22);--pro-radius:14px;--pro-shadow:0 8px 24px rgba(15,23,42,.07);--pro-shadow-lg:0 22px 60px rgba(15,23,42,.18)}
html{background:var(--pro-canvas)}body{color:var(--pro-ink);background:var(--pro-canvas);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}body.proRole-worker{--pro-accent:#2563eb;--pro-accent-soft:#eff6ff;--pro-ring:rgba(37,99,235,.22)}body.proRole-supervisor{--pro-accent:#d9a900;--pro-accent-soft:#fffbeb;--pro-ring:rgba(250,204,21,.3)}body.proRole-project_manager{--pro-accent:#1d4ed8;--pro-accent-soft:#eff6ff;--pro-ring:rgba(37,99,235,.22)}body.proRole-admin,body.proRole-site_admin{--pro-accent:#1e293b;--pro-accent-soft:#f1f5f9;--pro-ring:rgba(30,41,59,.2)}
.proBrand{display:flex;align-items:center;gap:11px;min-width:0}.proBrand img{width:38px;height:38px;display:block;flex:0 0 auto}.proBrandText{display:grid;gap:1px;line-height:1.05}.proBrandText strong{color:inherit;font-size:16px;letter-spacing:-.02em}.proBrandText small{font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:inherit;opacity:.64;font-weight:800}/* Paczka 249: .access-card wypadlo stad. To jest teraz WSPOLNY ekran logowania (pracownik i kadra), wiec ma wygladac tak samo, jak logowanie na /portal/ i u kadry -- a te trzy reguly z !important narzucaly mu wlasny, inny ksztalt. Styl tej karty mieszka teraz w styles.css. .login (karta kadry) zostaje bez zmian. */
.login{position:relative;overflow:hidden;border:1px solid rgba(203,213,225,.9)!important;border-radius:22px!important;box-shadow:0 28px 75px rgba(15,23,42,.16)!important}/* Paczka 249: pasek gradientu nad karta zostaje tylko u kadry -- wspolny ekran logowania nie ma go na /portal/, wiec nie ma go miec i tutaj. */
.login::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#2563eb,#facc15)}.login .proBrand,.access-card .proBrand{margin-bottom:8px}.login p,.access-card>span{line-height:1.5}.login button,.access-card button{min-height:48px;border-radius:11px;box-shadow:0 9px 20px rgba(15,23,42,.14)}.proPowered{margin-top:7px;color:#8491a4;font-size:10px;font-weight:750;letter-spacing:.06em;text-align:center;text-transform:uppercase}.staffDrawerHead .proBrandText small{color:var(--pro-muted)}.proNavSearch{border-color:var(--pro-line)!important;background:#f8fafc!important}.proNavSearch:focus{border-color:var(--pro-accent)!important;box-shadow:0 0 0 3px var(--pro-ring);outline:0}.proNavGroup summary{color:#64748b!important}.proNavItems>.tab{color:#43516a!important;text-decoration:none}.proNavItems>.tab:hover{background:var(--pro-accent-soft)!important;color:var(--pro-accent)!important}.proNavItems>.tab.active{background:var(--pro-accent-soft)!important;color:var(--pro-accent)!important;box-shadow:inset 3px 0 var(--pro-accent)!important}
.workerAppHeader{background:linear-gradient(115deg,var(--pro-navy),#1e293b)!important;color:#fff!important;border:0!important}.workerAppHeader .appHeaderProject strong,.workerAppHeader .appHeaderProject span{color:#fff!important}.appMenuButton{background:rgba(255,255,255,.1)!important;border-color:rgba(255,255,255,.17)!important}.appDrawer{background:#fff!important;color:var(--pro-ink)!important}.appDrawerHead{background:var(--pro-navy)!important;color:#fff!important}.appDrawerNav button{color:#334155!important}.appDrawerNav button:hover{background:#eff6ff!important;color:#2563eb!important}.appDrawerNav button span{filter:saturate(.82)}.appDrawerLogout{background:#fff7f7!important;color:#b42318!important}.uiOrganizerWorker .toolbar{border-color:var(--pro-line);box-shadow:var(--pro-shadow)}.uiOrganizerWorker #viewport{box-shadow:var(--pro-shadow-lg)}.proModulePage>header>div:first-child>.proBrand{grid-row:1/4}
/* Bug fix (Robert's feedback, round 3, "SiteOS SiteOS" appearing twice
   side by side in the module-page header): assets/siteos-wordmark.png IS
   the word "SiteOS", drawn as a logo -- brand()'s markup (assets/pro-
   closeout.js) always pairs that image with a literal "SiteOS" <strong>
   text label right next to it. That reads fine in tight contexts (the
   drawer head, the login card) where a small role/tagline label sits right
   under it and the whole thing is compact -- but replaceWordmark() (same
   file) also plants this exact lockup at the top of every standalone
   module page's own <header>, right beside that page's own <h1> title,
   where the mobile breakpoint below already hides the small tagline,
   leaving literally nothing but the word "SiteOS" twice in a row. Hiding
   just the redundant text label (image stays, so the brand mark is still
   there) fixes it everywhere this lockup renders in a page header, not
   only on Supervisor's pages -- the underlying markup is identical on
   every portal's standalone module pages, not Supervisor-specific.
   Deliberately a descendant selector (space), not ">" like the rules
   around it: on the ~35 module pages without a .staffAppShell wrapper,
   <header> is a direct child of .proModulePage (body) and ">" would have
   worked, but Supervisor's 3 pilot pages (core/Navigation.php's
   render_supervisor_module_header()) wrap their content in an extra
   <div class="staffAppShell"> -- exactly the pages Robert is testing --
   so <header> sits one level deeper there and ">" would silently fail to
   match on precisely the pages this fix is for. Confirmed by checking the
   live DOM before writing this rule: .proModulePage is only ever on
   <body>, never on an element that is <header>'s direct parent. */
.proModulePage header .proBrandText strong{display:none!important}
/* Faza 2 (Supervisor menu redesign) fix, found by Playwright verification:
   this mobile-width rule used to read `.staffAppShell>header` -- correct
   back when .staffAppShell only ever existed on the Dashboard (where the
   real <header> SHOULD disappear on mobile; the SPA's own view sections
   are what's shown there instead). Supervisor's module pages now get
   .staffAppShell too (core/Navigation.php's render_supervisor_module_
   header()), but their own <header> is real, page-specific content (title,
   Refresh/Print buttons) that must stay -- .proModulePage>header a few
   lines below already has bespoke mobile styling ready for exactly this
   case, but this rule's !important was unconditionally hiding it first
   regardless. #appView is the one id that still means "the actual
   Dashboard SPA container" only -- same-behavior swap for the Dashboard
   (identical element, selected via id instead of class), correctness fix
   for module pages. */
@media(max-width:900px){#appView>header{display:none!important}.proBrandText small{font-size:8px}.login{border-radius:18px!important}}
@media(max-width:620px){.proModulePage>header .proBrandText small{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important}}
@keyframes portalTransitionSpin{to{transform:rotate(360deg)}}
