/* Atrybut hidden ma wygrywac z kazda regula display ponizej. Bez tego
   .auth-step{display:flex} przykrywa [hidden] i element zostaje na ekranie. */
[hidden]{display:none !important}

/* ==========================================================================
   app/css/app.css — Affido bv, aplikacja pracownika (PWA)
   Zmienne i komponenty wywiedzione ze wspólnego systemu projektowego
   ../demo/assets/css/bald.css (kolory, radiusy, typografia, komponent .p-*
   z sekcji "telefon" demo). Kopiowane 1:1 zamiast @import, bo PWA musi
   działać w pełni offline i samodzielnie z katalogu app/ (Service Worker
   cache'uje tylko pliki własnej strefy). Nie przepisujemy identity wizualnej,
   tylko przenosimy ją na realny, pełnoekranowy layout aplikacji.
   Zero frameworków, zero zależności zewnętrznych, zero CDN.
   ========================================================================== */

:root{
  --ink:#0e1013;
  --ink-2:#161a20;
  --ink-3:#1f242c;
  --ink-4:#12151a;
  --line:#2b323c;
  --line-2:#1c2129;
  --bone:#f4f1ea;
  --bone-2:#e2ddd2;
  --mute:#8d95a1;
  --amber:#ffb020;
  --signal:#ff5a1f;
  --ok:#3ecf8e;
  --warn:#ffcc4d;
  --radius:14px;
  --radius-s:8px;
  --font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --display:"Archivo Black","Inter",Impact,-apple-system,sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,monospace;
  --ease:cubic-bezier(.2,.7,.2,1);
  --tabbar-h:64px;
  --topbar-h:56px;
  --sa-top:env(safe-area-inset-top,0px);
  --sa-bottom:env(safe-area-inset-bottom,0px);
  --sa-left:env(safe-area-inset-left,0px);
  --sa-right:env(safe-area-inset-right,0px);
}

*,*::before,*::after{box-sizing:border-box;min-width:0}
html{-webkit-text-size-adjust:100%;height:100%}
html,body{max-width:100%;overflow-x:hidden}
body{
  margin:0;height:100%;min-height:100dvh;background:var(--ink);color:var(--bone);
  font-family:var(--font);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow-wrap:anywhere;
  overscroll-behavior-y:none;
}
img,svg,video,canvas{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;-webkit-tap-highlight-color:transparent}
h1,h2,h3,h4{margin:0;line-height:1.05;letter-spacing:-.02em;font-family:var(--display);text-transform:uppercase}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
input,select,textarea{font:inherit;color:inherit}

:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:4px}
button:focus-visible,a:focus-visible{outline-offset:3px}

/* zawsze min. 44x44 pole dotykowe na elementach interaktywnych */
button,input,select,.tab,.step-btn,a.btn{min-height:44px}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ---------- layout główny ---------- */
#root{min-height:100dvh;display:flex;flex-direction:column}

.offline-banner{
  background:var(--warn);color:#111;font:700 12.5px/1.3 var(--font);letter-spacing:.03em;
  padding:9px calc(14px + var(--sa-right)) 9px calc(14px + var(--sa-left));
  padding-top:calc(9px + var(--sa-top));
  display:flex;align-items:center;gap:8px;text-align:center;justify-content:center;
  position:sticky;top:0;z-index:80;
}
.offline-banner .dot{width:7px;height:7px;border-radius:50%;background:#111;flex:none;animation:pulse 1.6s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ---------- ekran logowania ---------- */
.view-auth{
  flex:1;display:flex;align-items:center;justify-content:center;
  padding:calc(28px + var(--sa-top)) calc(20px + var(--sa-right)) calc(28px + var(--sa-bottom)) calc(20px + var(--sa-left));
  background:
    radial-gradient(circle at 20% 0%,rgba(255,176,32,.14),transparent 55%),
    radial-gradient(circle at 100% 100%,rgba(255,90,31,.12),transparent 50%),
    var(--ink);
}
.auth-card{width:100%;max-width:400px}
.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:30px;justify-content:center}
.auth-brand .mark{
  width:38px;height:38px;border-radius:10px;flex:none;
  background:linear-gradient(135deg,var(--amber),var(--signal));
  display:grid;place-items:center;color:#111;font-size:18px;font-family:var(--display);
  box-shadow:0 0 0 1px rgba(255,255,255,.12) inset;
}
.auth-brand b{font-family:var(--display);font-size:21px;letter-spacing:-.02em;text-transform:uppercase}
.auth-brand .tld{color:var(--amber)}
.auth-step{display:flex;flex-direction:column;gap:16px}
.auth-title{font-size:clamp(21px,6vw,26px);text-align:center;margin-bottom:2px}
.auth-sub{color:var(--mute);font-size:14px;text-align:center;margin:-6px 0 4px;line-height:1.5}

/* ---------- pola formularza ---------- */
.field{display:flex;flex-direction:column;gap:7px}
.field label{font:700 12px/1 var(--font);letter-spacing:.07em;text-transform:uppercase;color:var(--mute)}
.field input,.field select,.field textarea{
  background:var(--ink-2);border:1px solid var(--line);border-radius:10px;padding:13px 15px;
  color:var(--bone);font:400 16px/1.4 var(--font);width:100%;transition:border-color .2s;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--amber);outline:none}
.field textarea{min-height:96px;resize:vertical}
.field.has-error input{border-color:var(--signal)}
.field-error{color:var(--signal);font-size:12.5px;font-weight:600;min-height:16px}
.hint{color:var(--mute);font-size:12.5px}

/* segmentowe pole kodu / PIN */
.segbox{display:flex;gap:8px;justify-content:center}
.segbox input{
  width:42px;height:52px;text-align:center;background:var(--ink-2);border:1px solid var(--line);
  border-radius:10px;color:#fff;font:800 21px/1 var(--font);padding:0;
}
.segbox input:focus{border-color:var(--amber);outline:none}

.btn-primary,.btn-ghost{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:14px 18px;border-radius:10px;font-weight:800;font-size:15px;letter-spacing:-.01em;
  transition:transform .15s var(--ease),background .2s,box-shadow .2s,opacity .2s;
}
.btn-primary{background:var(--amber);color:#111;box-shadow:0 8px 22px rgba(255,176,32,.2)}
.btn-primary:hover{background:#ffc247}
.btn-primary:active{transform:translateY(1px) scale(.99)}
.btn-primary:disabled{opacity:.5;box-shadow:none;cursor:not-allowed}
.btn-ghost{border:1px solid var(--line);color:var(--bone);background:transparent}
.btn-ghost:hover{border-color:var(--amber);color:var(--amber)}
.btn-sm{padding:9px 14px;font-size:13px;width:auto;min-height:38px}
.btn-danger{color:var(--signal)}
.btn-danger:hover{border-color:var(--signal)}
.link-btn{color:var(--amber);font-weight:700;font-size:13.5px;text-align:center;padding:8px}
.link-btn:hover{text-decoration:underline}

.biometric-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  padding:14px;border-radius:10px;border:1px solid var(--line);background:var(--ink-2);
  color:var(--bone);font-weight:700;font-size:14.5px;
}
.biometric-btn:hover{border-color:var(--amber)}
.biometric-btn svg{width:20px;height:20px;flex:none}

/* ---------- powłoka aplikacji po zalogowaniu ---------- */
#app-shell{flex:1;display:flex;flex-direction:column;min-height:100dvh}
.topbar{
  position:sticky;top:0;z-index:40;background:rgba(14,16,19,.92);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;
  height:var(--topbar-h);padding:0 calc(16px + var(--sa-right)) 0 calc(16px + var(--sa-left));
  padding-top:var(--sa-top);height:calc(var(--topbar-h) + var(--sa-top));
}
.topbar-mark{
  width:28px;height:28px;border-radius:8px;flex:none;
  background:linear-gradient(135deg,var(--amber),var(--signal));
  display:grid;place-items:center;color:#111;font-size:14px;font-family:var(--display);
}
.topbar-title{font-size:15px;letter-spacing:-.01em;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conn-dot{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:none;transition:background .2s}
.conn-dot.off{background:var(--signal);animation:pulse 1.4s var(--ease) infinite}
.btn-icon{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;flex:none}
.btn-icon:hover{background:var(--ink-3)}
.btn-icon svg{width:19px;height:19px}

.views{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;min-width:0}
.view{padding:16px calc(16px + var(--sa-right)) calc(20px + var(--sa-bottom)) calc(16px + var(--sa-left));min-width:0}
.view[hidden]{display:none}

.tabbar{
  position:sticky;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(7,1fr);
  background:rgba(17,20,25,.96);backdrop-filter:blur(12px);border-top:1px solid var(--line);
  padding-bottom:var(--sa-bottom);padding-left:var(--sa-left);padding-right:var(--sa-right);
}
.tab{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:9px 2px;min-height:56px;color:var(--mute);position:relative;
}
.tab svg{width:21px;height:21px}
.tab span{font-size:10px;font-weight:700;letter-spacing:.02em}
.tab.on{color:var(--amber)}
.tab .badge{
  position:absolute;top:4px;right:calc(50% - 20px);min-width:16px;height:16px;padding:0 4px;
  border-radius:999px;background:var(--signal);color:#fff;font:800 10px/16px var(--font);
  text-align:center;
}
.tab .badge[hidden]{display:none}

/* ---------- eyebrow / naglowki widoku ---------- */
.eyebrow{
  font:700 11px/1 var(--font);letter-spacing:.16em;text-transform:uppercase;color:var(--amber);
  display:flex;align-items:center;gap:8px;margin-bottom:10px;
}
.eyebrow::before{content:"";width:18px;height:2px;background:var(--amber);flex:none}
.view-h1{font-size:clamp(22px,6vw,27px);margin-bottom:16px}

/* ---------- karty w stylu demo (.p-card) ---------- */
.card{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius);padding:15px;margin-bottom:12px}
.card small{color:var(--mute);font-size:11px;text-transform:uppercase;letter-spacing:.08em;display:block}
.card b{font-size:15px;display:block;margin-top:3px}
.row{display:flex;justify-content:space-between;gap:10px;font-size:13.6px;padding:8px 0;border-bottom:1px solid var(--line-2)}
.row:last-child{border:0}
.row span:last-child{color:#fff;font-weight:700}
.row.warn span:last-child{color:var(--warn)}
.row.ok span:last-child{color:var(--ok)}
.row.bad span:last-child{color:var(--signal)}

.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font:800 11px/1 var(--font)}
.pill.ok{background:rgba(62,207,142,.15);color:var(--ok)}
.pill.wait{background:rgba(255,204,77,.15);color:var(--warn)}
.pill.no{background:rgba(255,90,31,.15);color:var(--signal)}
.pill.info{background:rgba(141,149,161,.15);color:var(--mute)}

/* ---------- profil ---------- */
.avatar{
  width:56px;height:56px;border-radius:14px;flex:none;
  background:linear-gradient(135deg,var(--amber),var(--signal));display:grid;place-items:center;
  color:#111;font:800 20px/1 var(--font);
}
.profile-head{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.profile-head h2{font-size:19px;text-transform:none;font-family:var(--font);font-weight:800}
.profile-head p{color:var(--mute);font-size:13px;margin-top:2px}
.cert-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-2)}
.cert-item:last-child{border:0}
.cert-item .name{font-weight:700;font-size:14px}
.cert-item .num{color:var(--mute);font-size:12px;font-family:var(--mono)}
.cert-item.expiring{background:rgba(255,204,77,.06);margin:0 -15px;padding:10px 15px;border-radius:8px}
.cert-item.expiring .name::after{content:"";display:inline-block;flex:none;width:13px;height:13px;background-color:var(--warn);-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20d%3D%22M236.8%2C188.09%2C149.35%2C36.22h0a24.76%2C24.76%2C0%2C0%2C0-42.7%2C0L19.2%2C188.09a23.51%2C23.51%2C0%2C0%2C0%2C0%2C23.72A24.35%2C24.35%2C0%2C0%2C0%2C40.55%2C224h174.9a24.35%2C24.35%2C0%2C0%2C0%2C21.33-12.19A23.51%2C23.51%2C0%2C0%2C0%2C236.8%2C188.09ZM222.93%2C203.8a8.5%2C8.5%2C0%2C0%2C1-7.48%2C4.2H40.55a8.5%2C8.5%2C0%2C0%2C1-7.48-4.2%2C7.59%2C7.59%2C0%2C0%2C1%2C0-7.72L120.52%2C44.21a8.75%2C8.75%2C0%2C0%2C1%2C15%2C0l87.45%2C151.87A7.59%2C7.59%2C0%2C0%2C1%2C222.93%2C203.8ZM120%2C144V104a8%2C8%2C0%2C0%2C1%2C16%2C0v40a8%2C8%2C0%2C0%2C1-16%2C0Zm20%2C36a12%2C12%2C0%2C1%2C1-12-12A12%2C12%2C0%2C0%2C1%2C140%2C180Z%22%2F%3E%3C%2Fsvg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20d%3D%22M236.8%2C188.09%2C149.35%2C36.22h0a24.76%2C24.76%2C0%2C0%2C0-42.7%2C0L19.2%2C188.09a23.51%2C23.51%2C0%2C0%2C0%2C0%2C23.72A24.35%2C24.35%2C0%2C0%2C0%2C40.55%2C224h174.9a24.35%2C24.35%2C0%2C0%2C0%2C21.33-12.19A23.51%2C23.51%2C0%2C0%2C0%2C236.8%2C188.09ZM222.93%2C203.8a8.5%2C8.5%2C0%2C0%2C1-7.48%2C4.2H40.55a8.5%2C8.5%2C0%2C0%2C1-7.48-4.2%2C7.59%2C7.59%2C0%2C0%2C1%2C0-7.72L120.52%2C44.21a8.75%2C8.75%2C0%2C0%2C1%2C15%2C0l87.45%2C151.87A7.59%2C7.59%2C0%2C0%2C1%2C222.93%2C203.8ZM120%2C144V104a8%2C8%2C0%2C0%2C1%2C16%2C0v40a8%2C8%2C0%2C0%2C1-16%2C0Zm20%2C36a12%2C12%2C0%2C1%2C1-12-12A12%2C12%2C0%2C0%2C1%2C140%2C180Z%22%2F%3E%3C%2Fsvg%3E") center/contain no-repeat;margin-left:6px;vertical-align:-2px}
.week-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;min-width:0}
.week-cal .d{
  background:var(--ink-3);border-radius:8px;padding:8px 4px;text-align:center;min-width:0;
}
.week-cal .d small{display:block;color:var(--mute);font-size:9.5px;text-transform:uppercase;letter-spacing:.03em}
.week-cal .d b{display:block;font-size:12px;margin-top:4px;font-family:var(--font);font-weight:800}
.week-cal .d.free{opacity:.45}
.week-cal .d.today{outline:2px solid var(--amber);outline-offset:-2px}

/* ---------- godzinówka ---------- */
.week-switch{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.week-switch b{flex:1;text-align:center;font-size:14.5px}
.day-entry{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius);padding:13px;margin-bottom:10px}
.day-entry-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
.day-entry-top b{font-size:14px}
.day-entry-top span{color:var(--mute);font-size:12px}
.day-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.day-grid .field{gap:4px}
.day-grid .field label{font-size:10.5px}
.day-grid input{padding:9px 10px;font-size:14px;text-align:center}
.day-note{margin-top:8px}
.day-note textarea{min-height:0;height:40px;padding:9px 10px;font-size:13px}

.tscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%}
.tscroll::-webkit-scrollbar{height:6px}
.tscroll::-webkit-scrollbar-thumb{background:#3c4450;border-radius:99px}
table.sum-t{width:100%;border-collapse:collapse;font-size:13px;min-width:420px}
table.sum-t th{text-align:left;padding:8px;color:var(--mute);font:700 10.5px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line)}
table.sum-t td{padding:9px 8px;border-bottom:1px solid var(--line-2)}
.scrollhint{display:none;margin-top:8px;font:600 11px/1 var(--font);color:var(--mute);align-items:center;gap:6px}
.scrollhint svg{color:var(--amber)}
@media(max-width:480px){.scrollhint{display:flex}}

.sig-wrap{background:var(--bone);border-radius:10px;overflow:hidden;position:relative}
.sigpad{width:100%;height:150px;display:block;touch-action:none;cursor:crosshair;background:var(--bone)}
.sig-empty-hint{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#9a9284;font-size:13px;pointer-events:none;
}
.sig-actions{display:flex;gap:8px;margin-top:10px}
.sig-actions .btn-ghost{width:auto;flex:none}
.sig-status{font-size:12.5px;min-height:17px;margin-top:9px;font-weight:700}
.sig-status.ok{color:var(--ok)}
.sig-status.err{color:var(--signal)}

.pending-flag{
  display:inline-flex;align-items:center;gap:6px;background:rgba(255,204,77,.12);color:var(--warn);
  font:700 11px/1 var(--font);padding:6px 10px;border-radius:999px;margin-bottom:12px;
}
.pending-flag .dot{width:6px;height:6px;border-radius:50%;background:var(--warn);animation:pulse 1.6s var(--ease) infinite}

/* ---------- czat ---------- */
.room-item{
  display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2);width:100%;text-align:left;
}
.room-item .avatar{width:44px;height:44px;font-size:15px;border-radius:12px}
.room-item .meta{flex:1;min-width:0}
.room-item .meta b{display:block;font-size:14.5px}
.room-item .meta p{color:var(--mute);font-size:12.5px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-item .badge{background:var(--amber);color:#111;font:800 11px/1 var(--font);min-width:20px;height:20px;border-radius:999px;display:grid;place-items:center;padding:0 5px}
.room-item .badge[hidden]{display:none}

.chat-room{display:flex;flex-direction:column;height:calc(100dvh - var(--topbar-h) - var(--sa-top) - var(--tabbar-h) - var(--sa-bottom))}
.chat-back{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.chat-back b{font-size:14.5px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:7px;padding:4px 0}
.chat-b{max-width:82%;padding:10px 13px;border-radius:14px;font-size:13.6px;line-height:1.45;word-break:break-word}
.chat-b.them{background:var(--ink-2);border:1px solid var(--line);border-bottom-left-radius:4px;align-self:flex-start}
.chat-b.me{background:var(--amber);color:#111;font-weight:600;margin-left:auto;border-bottom-right-radius:4px;align-self:flex-end}
.chat-b .file{display:flex;align-items:center;gap:6px;font-size:12px;text-decoration:underline;margin-top:4px}
.chat-b .time{display:block;margin-top:4px;font-size:10.5px;opacity:.65;font-weight:600}
.chat-b .who{display:block;margin-bottom:3px;font-size:11.5px;font-weight:700;color:var(--amber);letter-spacing:.01em}
.chat-typing{color:var(--mute);font-size:12px;padding:4px 0}
.chat-form{display:flex;gap:8px;align-items:flex-end;padding-top:10px;border-top:1px solid var(--line)}
.chat-form textarea{flex:1;min-height:44px;max-height:120px;resize:none;padding:11px 13px}
.chat-form .attach-btn{width:44px;height:44px;border-radius:10px;background:var(--ink-2);border:1px solid var(--line);flex:none}
.chat-form .send-btn{width:44px;height:44px;border-radius:10px;background:var(--amber);color:#111;flex:none}
.chat-attach-preview{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mute);padding:6px 0}
.chat-attach-preview button{color:var(--signal);font-weight:700}

/* ---------- powiadomienia ---------- */
.notif-item{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-2)}
.notif-item .ico{width:36px;height:36px;border-radius:10px;background:var(--ink-3);display:grid;place-items:center;flex:none;font-size:16px}
.notif-item .meta{flex:1;min-width:0}
.notif-item .meta small{color:var(--mute);font-size:11px}
.notif-item .meta b{display:block;font-size:14px;margin-top:2px;font-weight:700}
.notif-item.unread{position:relative}
.notif-item.unread::before{content:"";position:absolute;left:-14px;top:16px;width:7px;height:7px;border-radius:50%;background:var(--amber)}
.notif-empty,.chat-empty,.list-empty{color:var(--mute);text-align:center;padding:40px 12px;font-size:13.5px}

/* ---------- ustawienia ---------- */
.settings-group{margin-bottom:20px}
.settings-group h3{font-size:11px;letter-spacing:.1em;color:var(--mute);text-transform:uppercase;font-family:var(--font);font-weight:800;margin-bottom:10px}
.lang-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.lang-btn{
  padding:12px 8px;border-radius:10px;border:1px solid var(--line);background:var(--ink-2);
  font-weight:700;font-size:13px;text-align:center;
}
.lang-btn.on{border-color:var(--amber);background:rgba(255,176,32,.1);color:var(--amber)}
.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2)}
.toggle-row:last-child{border:0}
.toggle-row .t-label b{display:block;font-size:14px}
.toggle-row .t-label p{color:var(--mute);font-size:12px;margin-top:2px}
.switch{position:relative;width:46px;height:27px;border-radius:999px;background:var(--ink-3);border:1px solid var(--line);flex:none}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:var(--bone);transition:transform .2s var(--ease)}
.switch[aria-checked="true"]{background:var(--amber);border-color:var(--amber)}
.switch[aria-checked="true"]::after{transform:translateX(19px);background:#111}

/* ---------- toasty ---------- */
.toast-region{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + var(--sa-bottom) + 10px);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:100;pointer-events:none;padding:0 16px}
.toast{
  background:var(--ink-3);border:1px solid var(--line);color:var(--bone);padding:11px 16px;border-radius:10px;
  font-size:13px;font-weight:600;box-shadow:0 14px 32px rgba(0,0,0,.4);max-width:340px;text-align:center;
  animation:toastin .25s var(--ease);
}
.toast.ok{border-color:var(--ok);color:var(--ok)}
.toast.err{border-color:var(--signal);color:var(--signal)}
@keyframes toastin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.skeleton{background:linear-gradient(90deg,var(--ink-2) 25%,var(--ink-3) 37%,var(--ink-2) 63%);background-size:400% 100%;border-radius:8px;height:14px;animation:sk 1.4s ease infinite}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* od 480px w górę trochę więcej powietrza (tablety w portrecie itp.) */
@media(min-width:480px){
  .view{padding-left:calc(24px + var(--sa-left));padding-right:calc(24px + var(--sa-right))}
  .day-grid{grid-template-columns:repeat(4,1fr)}
}

/* ---------- podpisy elektroniczne (ekran "Podpisy") ---------- */
.sig-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.sig-card-head b{display:block;font-size:15px;line-height:1.25;overflow-wrap:anywhere}
.sig-card-head small{
  display:block;margin-top:3px;color:var(--mute);font-size:11px;
  text-transform:uppercase;letter-spacing:.06em;
}
.sig-card .sig-wrap{margin-top:4px}
.sig-card .sig-actions .btn-ghost,.sig-card .sig-actions .btn-primary{width:auto;flex:1 1 auto}
.sig-reason{margin-top:6px;color:var(--signal);font-size:12.5px;overflow-wrap:anywhere}
.card.empty{text-align:center;padding:26px 15px}
.card.empty .ico{display:flex;justify-content:center;color:var(--ok);margin-bottom:8px}
.card.empty p{color:var(--mute);font-size:13.5px}

/* Siedem zakładek: przy 360 px na etykietę zostaje ~51 px. Grid (repeat(7,1fr))
   dzieli szerokość równo i nigdy nie wychodzi w bok (min-width:0 na wszystkim),
   więc ryzyko jest tylko pionowe — dlatego skracamy odstępy, zmniejszamy podpis
   i pozwalamy dłuższym etykietom uciąć się wielokropkiem zamiast zawinąć. */
@media(max-width:420px){
  .tab{padding:8px 1px}
  .tab span{font-size:9px;letter-spacing:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tab svg{width:19px;height:19px}
  .tab .badge{right:calc(50% - 14px)}
}

/* ---------- ekran "Foto" (zdjęcia z budowy) ---------- */
.foto-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;left:-9999px}
.foto-composer{display:flex;flex-direction:column;gap:12px}
.foto-capture{
  display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  min-height:52px;border-radius:var(--radius);background:var(--amber);color:#111;
  font-weight:800;font-size:15px;box-shadow:0 8px 22px rgba(255,176,32,.2);
}
.foto-capture:active{transform:translateY(1px) scale(.99)}
.foto-capture svg{width:24px;height:24px;flex:none}
.foto-compose{display:flex;flex-direction:column;gap:10px}
.foto-preview-wrap{
  width:100%;border:1px solid var(--line);border-radius:var(--radius-s);overflow:hidden;
  background:var(--ink-4);max-height:52vh;
}
.foto-preview{width:100%;height:auto;max-height:52vh;object-fit:contain;display:block}
.foto-field-label{
  font:700 11px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--mute);
  margin-top:2px;
}
.foto-note,.foto-project{
  width:100%;background:var(--ink-3);border:1px solid var(--line);border-radius:var(--radius-s);
  padding:11px 12px;color:var(--bone);font-size:14px;
}
.foto-note{min-height:60px;resize:vertical}
.foto-note:focus,.foto-project:focus{border-color:var(--amber);outline:none}
.foto-actions{display:flex;gap:10px}
.foto-actions .btn-primary,.foto-actions .btn-ghost{flex:1 1 auto;width:auto}
.foto-status{min-height:18px;font-size:13px;color:var(--mute)}
.foto-status.err{color:var(--signal)}
.foto-list-h{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:16px 0 10px}
.foto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.foto-card{
  margin:0;border:1px solid var(--line);border-radius:var(--radius-s);overflow:hidden;
  background:var(--ink-2);display:flex;flex-direction:column;min-width:0;
}
.foto-thumb{display:block;aspect-ratio:4/3;background:var(--ink-4);overflow:hidden}
.foto-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.foto-card-meta{display:flex;flex-direction:column;gap:2px;padding:8px 10px;min-width:0}
.foto-card-meta b{font-size:13px;overflow-wrap:anywhere}
.foto-card-meta b.muted{color:var(--mute);font-weight:600}
.foto-card-note{
  font-size:12.5px;color:var(--bone-2);overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.foto-card-meta small{color:var(--mute);font-size:11px}

/* ===== 1.7.0: zakladka "Wiecej", szkody, wyplaty, dokumenty ===== */
.more-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.more-tile{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:104px;padding:14px;border:1px solid var(--line-2);border-radius:14px;background:var(--ink-2);color:#fff;text-align:left;cursor:pointer}
.more-tile:active{transform:scale(.98)}
.more-tile-ico{color:var(--amber);display:block}
.more-tile-label{font-weight:800;font-size:14px;line-height:1.2}
.more-tile-badge{font-size:11px;font-weight:700;color:var(--warn)}
@media(min-width:560px){.more-grid{grid-template-columns:repeat(3,1fr)}}

.damage-intro{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.damage-intro-ico{color:var(--warn)}
.damage-form{display:flex;flex-direction:column;gap:6px}
.damage-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}
.damage-thumb{position:relative;width:72px;height:72px;border-radius:10px;overflow:hidden;border:1px solid var(--line-2);background:var(--ink-3);display:block}
.damage-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.damage-thumb-x{position:absolute;top:2px;right:2px;min-height:0;width:24px;height:24px;padding:0;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;border:0;display:grid;place-items:center}
.damage-card{display:flex;flex-direction:column;gap:6px}
.damage-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.damage-card p{margin:0;font-size:13.6px;white-space:pre-wrap}
.damage-answer{margin-top:4px;padding:10px 12px;border-left:3px solid var(--amber);background:var(--ink-3);border-radius:0 10px 10px 0}
.damage-answer small{display:block;color:var(--mute);margin-bottom:4px}
.damage-answer p{margin:0}

.payout-summary{display:flex;flex-direction:column;gap:2px}
.payout-big{display:flex;flex-direction:column;gap:2px;padding-bottom:8px;border-bottom:1px solid var(--line-2);margin-bottom:4px}
.payout-big b{font-size:30px;line-height:1.05;letter-spacing:-.02em;color:#fff}
.payout-card{display:flex;flex-direction:column;gap:6px}
.payout-amount{font-weight:800;color:#fff}
.payout-pdf{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;text-decoration:none}
.doc-row{text-decoration:none;color:inherit;align-items:center}
.doc-row span:first-child{display:inline-flex;align-items:center;gap:6px}
.week-cal .d .week-proj{display:block;font-style:normal;font-size:9px;line-height:1.1;color:var(--mute);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.views{scroll-behavior:auto}

/* ---------- wysylka wlasnych zalacznikow przez pracownika (profil) ---------- */
/* Blok siedzi w karcie dokumentow i certyfikatow. Pola na pelna szerokosc, bo
   uzywa sie go kciukiem na budowie, a nie myszka. */
.upload-blok{display:flex;flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.upload-blok select.foto-note{min-height:44px;resize:none}
.upload-blok input[type="file"]{
  min-height:44px;padding:10px 12px;font-size:13px;color:var(--bone);
  background:var(--ink-2);border:1px solid var(--line);border-radius:10px;
}
.upload-blok input[type="file"]::file-selector-button{
  margin-right:10px;padding:6px 12px;border:0;border-radius:8px;
  background:var(--amber);color:#1a1205;font-weight:700;cursor:pointer;
}
.upload-blok .hint{margin:0}
.upload-blok button{align-self:flex-start;margin-top:4px}
