:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172033;background:#f4f7fb}*{box-sizing:border-box}body{margin:0;background:#f4f7fb;color:#172033}a{color:inherit;text-decoration:none}button,.button,input,select{font:inherit}.topbar{min-height:64px;background:#0f172a;color:white;display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:20px}.topbar nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.brand{font-weight:800;letter-spacing:-.02em}.container{max-width:1240px;margin:32px auto;padding:0 20px}.container.narrow{max-width:820px}.card{background:white;border:1px solid #e4eaf2;border-radius:16px;padding:24px;box-shadow:0 8px 30px rgba(15,23,42,.05)}.hero-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-bottom:20px}.eyebrow{display:block;text-transform:uppercase;letter-spacing:.12em;font-weight:800;font-size:.72rem;color:#64748b;margin-bottom:7px}.muted{color:#64748b}.small{font-size:.84rem}.right{text-align:right}.badge{display:inline-flex;padding:4px 9px;border-radius:999px;background:#e8eef7;font-size:.78rem;font-weight:800}.status-approved{background:#dcfce7;color:#166534}.status-pending{background:#fef3c7;color:#92400e}.status-blocked,.status-rejected{background:#fee2e2;color:#991b1b}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px}.search{width:min(420px,100%)}input,select{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;background:white}label{display:grid;gap:6px;font-weight:650}.stack{display:grid;gap:16px}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:1fr 1fr}.employee-list{display:grid}.employee-row{display:flex;justify-content:space-between;gap:24px;padding:16px 0;border-top:1px solid #edf1f5}.employee-row:first-child{border-top:0}button,.button{border:1px solid #cbd5e1;background:white;border-radius:10px;padding:9px 13px;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.primary{background:#2563eb;border-color:#2563eb;color:white}.success-btn{background:#ecfdf5;border-color:#a7f3d0;color:#166534}.danger-btn{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.link-button{background:transparent;border:0;color:white;padding:0}.actions{display:flex;justify-content:flex-end;gap:10px}.inline{display:inline}.inline-form{display:flex;gap:8px}.three-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.simple-list{list-style:none;padding:0;margin:18px 0 0}.simple-list li{padding:10px 0;border-top:1px solid #edf1f5}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px;border-bottom:1px solid #edf1f5;vertical-align:middle}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.actions-cell{display:flex;gap:6px}.actions-cell form{margin:0}.alert{padding:10px 12px;border-radius:10px}.alert.error{background:#fff1f2;color:#9f1239}.alert.success{background:#ecfdf5;color:#166534}fieldset{border:1px solid #e2e8f0;border-radius:12px;padding:16px;display:grid;gap:12px}legend{font-weight:800;padding:0 6px}.check{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:8px}.check input{width:auto}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top,#dbeafe 0,#f4f7fb 45%)}.login-card{width:min(420px,100%);background:white;border:1px solid #e4eaf2;border-radius:18px;padding:30px;box-shadow:0 20px 60px rgba(15,23,42,.12)}.brand-mark{width:48px;height:48px;border-radius:14px;background:#0f172a;color:white;display:grid;place-items:center;font-weight:900}code{background:#eef2ff;padding:2px 6px;border-radius:5px}@media(max-width:800px){.hero-grid,.three-columns,.form-grid.two{grid-template-columns:1fr}.section-head,.employee-row{align-items:stretch;flex-direction:column}.right{text-align:left}.topbar{padding:14px 18px;align-items:flex-start;flex-direction:column}.actions-cell{min-width:260px}}

/* Iteracja 2: czas pracy, statusy i grafik */
.top-gap{margin-top:20px}.span-two{grid-column:1/-1}.work-card h1{margin:.2rem 0}.work-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.work-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.work-summary-grid>div{padding:14px;border:1px solid #e6ebf2;border-radius:12px;background:#f8fafc;display:grid;gap:4px}.work-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.work-actions form{margin:0}.big-action{min-height:46px}.empty-state{padding:18px;border:1px dashed #cbd5e1;border-radius:12px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;background:#f8fafc}.presence-pill{display:inline-flex;padding:7px 11px;border-radius:999px;font-size:.82rem;font-weight:800;background:#e2e8f0}.presence-dot{width:11px;height:11px;border-radius:50%;background:#94a3b8;flex:0 0 auto;box-shadow:0 0 0 4px rgba(148,163,184,.12)}.employee-main{display:flex;align-items:center;gap:12px}.presence-online{background:#dcfce7!important;color:#166534}.presence-dot.presence-online{background:#22c55e!important;box-shadow:0 0 0 4px rgba(34,197,94,.13)}.presence-away{background:#dbeafe!important;color:#1d4ed8}.presence-dot.presence-away{background:#3b82f6!important;box-shadow:0 0 0 4px rgba(59,130,246,.13)}.presence-break{background:#fef3c7!important;color:#92400e}.presence-dot.presence-break{background:#f59e0b!important;box-shadow:0 0 0 4px rgba(245,158,11,.13)}.presence-planned{background:#e0e7ff!important;color:#4338ca}.presence-dot.presence-planned{background:#818cf8!important}.presence-off{background:#e2e8f0!important;color:#475569}.presence-dot.presence-off{background:#94a3b8!important}.presence-warning{background:#fee2e2!important;color:#991b1b}.presence-dot.presence-warning{background:#ef4444!important}.presence-details{display:grid;gap:3px}.category-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.schedule-grid{grid-template-columns:1.2fr .8fr}.schedule-mini-list{display:grid;gap:8px}.schedule-mini-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #edf1f5}.schedule-mini-row:first-child{border-top:0}textarea{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;background:white;font:inherit;resize:vertical}button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:800px){.work-card-head{flex-direction:column}.work-summary-grid,.category-options{grid-template-columns:1fr}.schedule-grid{grid-template-columns:1fr}.span-two{grid-column:auto}.presence-details{text-align:left}.schedule-mini-row{grid-template-columns:1fr auto}}

/* Iteracja 3: zmiana komputera, bilanse, historia i timeline */
.side-stack{display:grid;gap:20px}.today-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.today-metrics>div{padding:12px 14px;border-radius:12px;background:#f8fafc;border:1px solid #e6ebf2;display:grid;gap:4px}.today-metrics span{font-size:.78rem;color:#64748b}.balance{font-weight:900}.balance.negative{color:#b91c1c}.balance.positive{color:#15803d}.balance.compact{display:inline-flex;padding:4px 8px;border-radius:999px;background:#f8fafc}.metric-link{display:grid;gap:4px}.metric-big{font-size:1.7rem;letter-spacing:-.03em}.switch-panel{margin:16px 0;padding:16px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:14px;display:flex;justify-content:space-between;gap:20px;align-items:center}.switch-panel.overdue{border-color:#fecaca;background:#fff1f2}.switch-panel h3{margin:.2rem 0}.warning-text{color:#991b1b;font-weight:700}.alert.warning{background:#fff7ed;color:#9a3412}.alert.info{background:#eff6ff;color:#1e40af}.metric-cards{display:grid;gap:20px}.two-metrics{grid-template-columns:repeat(2,1fr)}.four-metrics{grid-template-columns:repeat(4,1fr)}.metric-card{display:grid;gap:5px}.metric-card>strong{font-size:1.7rem}.warning-mark{color:#b45309;font-weight:900}.tiny{font-size:.72rem}.timeline{display:grid}.timeline-row{display:grid;grid-template-columns:90px 1fr;gap:18px;padding:14px 0;border-top:1px solid #edf1f5}.timeline-row:first-child{border-top:0}.timeline-row time{font-variant-numeric:tabular-nums;font-weight:800;color:#475569}.timeline-scale{display:grid;grid-template-columns:repeat(5,1fr);font-size:.75rem;color:#64748b;margin:0 0 8px 210px}.timeline-scale span:nth-child(2),.timeline-scale span:nth-child(3),.timeline-scale span:nth-child(4){text-align:center}.timeline-scale span:last-child{text-align:right}.schedule-timeline{padding:14px 0;border-top:1px solid #edf1f5}.schedule-timeline:first-of-type{border-top:0}.schedule-timeline h3{margin:0 0 10px}.schedule-timeline-row{display:grid;grid-template-columns:190px 1fr;gap:20px;align-items:center;margin:8px 0}.schedule-person{display:flex;flex-direction:column}.schedule-track{height:34px;position:relative;border-radius:9px;background:repeating-linear-gradient(to right,#f8fafc 0,#f8fafc calc(25% - 1px),#e2e8f0 calc(25% - 1px),#e2e8f0 25%);overflow:hidden}.schedule-bar{position:absolute;top:4px;bottom:4px;min-width:24px;border-radius:7px;background:#2563eb;color:white;display:flex;align-items:center;justify-content:center;padding:0 8px;font-size:.72rem;font-weight:800;white-space:nowrap;overflow:hidden}.schedule-bar span{overflow:hidden;text-overflow:ellipsis}.alert+.hero-grid{margin-top:16px}
@media(max-width:800px){.side-stack{grid-template-columns:1fr}.today-metrics,.two-metrics,.four-metrics{grid-template-columns:1fr 1fr}.switch-panel{align-items:flex-start;flex-direction:column}.timeline-scale{margin-left:0}.schedule-timeline-row{grid-template-columns:1fr}.schedule-track{height:32px}.timeline-row{grid-template-columns:72px 1fr}}
@media(max-width:520px){.today-metrics,.two-metrics,.four-metrics{grid-template-columns:1fr}}


/* Iteracja 4: korekty czasu i audit */
.correction-alert{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;margin-bottom:16px}.correction-alert a{font-weight:800;text-decoration:underline}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}.comparison-grid>div{display:grid;gap:5px;padding:16px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}.comparison-grid strong{font-size:1.35rem}.reason-box{padding:16px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;margin:16px 0}.reason-box p{margin:0;white-space:pre-wrap}.decision-actions{display:flex;gap:10px;flex-wrap:wrap}.decision-actions form{margin:0}.audit-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;white-space:nowrap}.correction-card .section-head{align-items:center}.correction-card table{min-width:760px}
@media(max-width:800px){.comparison-grid{grid-template-columns:1fr}.decision-actions{display:grid}.decision-actions form,.decision-actions button{width:100%}}

/* Iteracja 5: raporty i eksporty */
.report-head{align-items:center}.report-export-actions{display:flex;gap:10px;flex-wrap:wrap}.report-filter-card{display:grid;gap:16px}.report-presets{display:flex;gap:8px;flex-wrap:wrap}.report-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:end}.report-check{min-height:42px;align-content:center}.report-metric-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.report-table{min-width:1180px}.report-table.detail{min-width:1300px}.report-problem-row{background:#fffaf0}.report-issue{display:inline-block;max-width:340px;color:#9a3412;font-size:.78rem;font-weight:700}.report-note{margin:14px 0 0}.report-table td{font-variant-numeric:tabular-nums}.report-table tbody tr:hover{background:#f8fafc}.report-problem-row:hover{background:#fff7ed!important}
@media(max-width:1100px){.report-filter-grid{grid-template-columns:repeat(3,1fr)}.report-metric-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.report-head{align-items:stretch}.report-export-actions{display:grid}.report-filter-grid,.report-metric-grid{grid-template-columns:1fr}.report-presets{display:grid;grid-template-columns:repeat(3,1fr)}}

/* Iteracja 6: urlopy, zdarzenia, zastępstwa i powiadomienia */
.absence-metrics{margin-bottom:20px}.weekday-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.notification-list{display:grid}.notification-item{display:flex;justify-content:space-between;gap:18px;padding:18px 0;border-top:1px solid #edf1f5;align-items:flex-start}.notification-item:first-child{border-top:0}.notification-item.unread{background:#eff6ff;margin:0 -14px;padding:18px 14px;border-radius:12px}.notification-item h3{margin:.15rem 0 .35rem}.notification-item p{margin:.2rem 0 .8rem}.absence-status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef2ff;font-size:.78rem;font-weight:800}.decision-actions select{min-width:180px}.table-wrap select{min-width:160px}.table-wrap .inline-form input{min-width:160px}.topbar nav a{white-space:nowrap}
@media(max-width:800px){.weekday-grid{grid-template-columns:1fr 1fr}.notification-item{flex-direction:column}.absence-metrics{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.weekday-grid,.absence-metrics{grid-template-columns:1fr}}
.category-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}@media(max-width:800px){.category-card-grid{grid-template-columns:1fr}}


/* Iteracja 7: kalendarz, panel kierownika i workflow anulowania */
.action-stack{display:grid;gap:8px;min-width:240px}.action-stack form{margin:0}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.calendar-toolbar h1{margin:.2rem 0;text-transform:capitalize}.calendar-actions{display:flex;gap:8px;flex-wrap:wrap}.calendar-filter{display:flex;justify-content:flex-end;margin-bottom:14px}.calendar-filter label{min-width:260px}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-weekdays{margin-bottom:8px;color:#64748b;font-size:.76rem;font-weight:800;text-transform:uppercase;text-align:center}.calendar-day,.calendar-blank{min-height:150px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.calendar-blank{background:#f8fafc;border-style:dashed}.calendar-day{padding:9px}.calendar-day.today{border:2px solid #2563eb;background:#eff6ff}.calendar-day-number{font-weight:900;font-variant-numeric:tabular-nums;margin-bottom:8px}.calendar-items{display:grid;gap:6px}.calendar-item{display:grid;gap:2px;padding:7px;border-radius:9px;background:#f1f5f9;font-size:.74rem;overflow:hidden}.calendar-item.own{background:#dbeafe}.calendar-item strong,.calendar-item span,.calendar-item small{white-space:normal;overflow-wrap:anywhere}.manager-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.manager-hero{display:flex;justify-content:space-between;align-items:center}.manager-list{display:grid}.manager-list-row{display:flex;justify-content:space-between;gap:18px;padding:13px 0;border-top:1px solid #edf1f5}.manager-list-row:first-child{border-top:0}.topbar .brand{display:flex;align-items:center;gap:9px}.topbar .brand-mark{width:32px;height:32px;border-radius:9px;background:white;color:#0f172a;font-size:.75rem}.topbar nav a.active{color:#bfdbfe}.status-withdrawn,.status-cancelled{background:#e2e8f0;color:#475569}
@media(max-width:1100px){.manager-metrics{grid-template-columns:repeat(3,1fr)}.calendar-day,.calendar-blank{min-height:125px}}
@media(max-width:760px){.calendar-toolbar{align-items:stretch;flex-direction:column}.calendar-actions{display:grid;grid-template-columns:1fr 1fr 1fr}.calendar-weekdays{display:none}.calendar-grid{grid-template-columns:1fr}.calendar-blank{display:none}.calendar-day{min-height:auto}.calendar-day:empty{display:none}.manager-metrics{grid-template-columns:1fr 1fr}.manager-list-row{flex-direction:column}.manager-list-row .right{text-align:left}.action-stack{min-width:220px}}
@media(max-width:480px){.manager-metrics,.calendar-actions{grid-template-columns:1fr}}

/* Iteracja 8: diagnostyka, kalendarz pracy i rollout */
.two-col-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.diagnostics-grid{grid-template-columns:repeat(4,1fr);margin-bottom:20px}.ok-text{color:#15803d!important}.bad-text{color:#b91c1c!important}.details{display:grid;grid-template-columns:150px 1fr;gap:10px 16px}.details dt{font-weight:800;color:#64748b}.details dd{margin:0}.status-list{display:grid;gap:8px;margin:14px 0 20px}.status-list>div{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #edf1f5}.section-title-row{display:flex;justify-content:space-between;align-items:center;gap:18px}.section-title-row form{display:flex;gap:8px;align-items:center}.section-title-row input{width:120px}.rename-device{display:flex;gap:7px;margin-bottom:8px}.rename-device input{min-width:180px}.wrap-code{display:block;margin-top:8px;white-space:normal;overflow-wrap:anywhere;max-width:420px}.metric-grid{display:grid;gap:14px}.diagnostics-grid .metric-card{padding:18px;background:white;border:1px solid #e2e8f0;border-radius:14px}.diagnostics-grid .metric-card small{color:#64748b}.diagnostics-grid .metric-card strong{font-size:1.45rem}.container>.card+.card{margin-top:20px}
@media(max-width:1000px){.diagnostics-grid{grid-template-columns:1fr 1fr}.two-col-layout{grid-template-columns:1fr}}
@media(max-width:600px){.diagnostics-grid{grid-template-columns:1fr}.details{grid-template-columns:1fr}.section-title-row{align-items:stretch;flex-direction:column}.section-title-row form{width:100%}.section-title-row input{width:100%}.rename-device{flex-direction:column}}


/* Iteracja 9: pilot UX, dostępność i status live */
.alert.info{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;margin-bottom:16px}
.presence-head{align-items:center}.presence-search-wrap{position:relative;width:min(460px,100%)}.presence-search-wrap .search{width:100%;padding-right:42px}.keyboard-hint{position:absolute;right:10px;top:50%;transform:translateY(-50%);min-width:24px;height:24px;display:grid;place-items:center;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#64748b;font:700 .75rem ui-monospace,monospace}.presence-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:-4px 0 10px}.filter-chips{display:flex;gap:7px;flex-wrap:wrap}.filter-chip{padding:7px 11px;border-radius:999px;font-size:.82rem;color:#475569}.filter-chip.active{background:#0f172a;border-color:#0f172a;color:#fff}.presence-live-meta{display:flex;align-items:center;gap:12px;white-space:nowrap}.live-status{display:inline-flex;align-items:center;gap:6px;color:#15803d;font-size:.78rem;font-weight:800}.live-status:before{content:'';width:7px;height:7px;border-radius:50%;background:#22c55e}.live-status.offline{color:#b91c1c}.live-status.offline:before{background:#ef4444}.employee-row[hidden]{display:none!important}
.presence-work-state{display:inline-flex;margin-top:5px;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:800}.presence-work-state.is-working{background:#dcfce7;color:#166534}.presence-work-state.is-off{background:#e2e8f0;color:#475569}.presence-next{margin-top:3px;color:#1d4ed8;font-size:.84rem;font-weight:700}
.organization-columns{align-items:start}.entity-admin-list{margin-top:20px}.entity-admin-row{display:grid;gap:9px}.entity-admin-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.entity-rename-form input{min-width:0}.entity-rename-form button{white-space:nowrap}
:focus-visible{outline:3px solid rgba(37,99,235,.35);outline-offset:2px}.error-page{min-height:100vh;display:grid;place-items:center;padding:20px}.error-card{max-width:620px;text-align:center}.error-code{font-size:4.5rem;line-height:1;font-weight:900;color:#64748b;margin:0 0 10px}.error-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:20px}
@media(max-width:800px){.presence-toolbar{align-items:stretch;flex-direction:column}.presence-live-meta{justify-content:space-between}.presence-head{align-items:stretch}.keyboard-hint{display:none}}

/* Iteracja 10: release candidate */
.setup-page{min-height:100vh;background:linear-gradient(145deg,#eef4ff,#f8fafc);padding:40px 20px}.setup-shell{max-width:760px;margin:0 auto}.setup-card{padding:34px}.password-card{width:min(500px,100%)}.field-hint{font-size:.78rem;color:#64748b;font-weight:500}.left-actions{justify-content:flex-start}.alert.warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.validation-list{padding-left:20px;color:#991b1b}.validation-list li{margin:7px 0}.credential{font-size:.95rem;user-select:all}.import-summary{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.import-summary>div{padding:16px;border:1px solid #e2e8f0;border-radius:12px;display:grid;gap:5px}.import-summary strong{font-size:1.6rem}.server-offline-banner{position:sticky;top:0;z-index:9999;padding:9px 18px;text-align:center;background:#991b1b;color:#fff;box-shadow:0 3px 12px rgba(0,0,0,.16)}
@media(max-width:600px){.setup-page{padding:18px 10px}.setup-card{padding:22px}.import-summary{grid-template-columns:1fr}}


/* 10.11: stała wspólna nawigacja */
.app-topbar{position:sticky;top:0;z-index:1000;min-height:58px;padding:0 20px;flex-wrap:nowrap}.app-topbar .brand{flex:0 0 auto}.main-nav{display:flex!important;align-items:center;justify-content:flex-end;gap:5px!important;flex-wrap:nowrap!important;min-width:0}.main-nav>a,.nav-dropdown>summary{display:flex;align-items:center;min-height:38px;padding:8px 10px;border-radius:9px;color:#e2e8f0;font-size:.86rem;font-weight:700;cursor:pointer;white-space:nowrap;list-style:none}.nav-dropdown>summary::-webkit-details-marker{display:none}.main-nav>a:hover,.nav-dropdown>summary:hover,.main-nav>a.active,.nav-dropdown.active>summary,.nav-dropdown[open]>summary{background:#1e293b;color:#fff}.main-nav>a.active,.nav-dropdown.active>summary{box-shadow:inset 0 -2px 0 #60a5fa}.nav-dropdown{position:relative;flex:0 0 auto}.nav-dropdown-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:1100;display:grid;min-width:190px;padding:7px;border:1px solid #334155;border-radius:12px;background:#0f172a;box-shadow:0 18px 45px rgba(2,6,23,.35)}.nav-dropdown:not([open]) .nav-dropdown-menu{display:none}.nav-dropdown-menu>a,.nav-dropdown-menu .nav-logout{width:100%;justify-content:flex-start;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:#e2e8f0;text-align:left;font-size:.84rem;font-weight:650;white-space:nowrap}.nav-dropdown-menu>a:hover,.nav-dropdown-menu>a.active,.nav-dropdown-menu .nav-logout:hover{background:#1e293b;color:#fff}.nav-dropdown-menu form{margin:0}.nav-dropdown-menu-wide{min-width:225px}.nav-dropdown-menu-right{left:auto;right:0}.nav-account{margin-left:2px}.topbar .brand-mark{flex:0 0 auto}.topbar nav a.active{color:#fff}
@media(max-width:1200px){.app-topbar{align-items:center;flex-direction:row;padding:8px 12px}.main-nav{overflow-x:auto;overflow-y:visible;justify-content:flex-start;padding:2px 0 5px;scrollbar-width:thin}.app-topbar .brand span:last-child{display:none}.nav-dropdown-menu{position:fixed;top:58px;left:auto;right:12px}.nav-dropdown-menu-right{right:12px}}
@media(max-width:800px){.app-topbar{position:sticky;align-items:center;flex-direction:row;padding:8px 10px;gap:10px}.main-nav{width:100%;flex-direction:row;align-items:center}.main-nav>a,.nav-dropdown>summary{min-height:36px;padding:7px 9px;font-size:.8rem}}

/* 10.12: bezpieczny reset hasła w panelu administratora */
.security-section-head{align-items:center}.security-section-head h2{margin:0 0 6px}.temporary-password-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:14px}.temporary-password-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:800;letter-spacing:.04em;background:#fff}.temporary-password-hint{margin:10px 0 0}.top-gap{margin-top:20px}
@media(max-width:650px){.temporary-password-row{grid-template-columns:1fr}.temporary-password-row .button{width:100%}.security-section-head{align-items:flex-start}}

/* 10.13: neutralny postep realizacji normy zamiast czerwonego ujemnego bilansu */
.progress-metric{gap:10px}
.progress-metric .metric-big{font-size:1.55rem}
.work-progress{width:100%;height:12px;border-radius:999px;background:#e8edf4;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(100,116,139,.08)}
.work-progress-fill{display:block;height:100%;width:0;border-radius:inherit;background:#2563eb;transition:width .25s ease}
.progress-caption{font-size:.82rem;font-weight:700}

/* 10.14: czytelniejszy grafik pracowników */
.schedule-board-card{padding:26px}.schedule-board-head{align-items:center}.schedule-board-description{margin:6px 0 0;max-width:720px}.schedule-range-badge{padding:7px 11px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;font-variant-numeric:tabular-nums}.schedule-board-scroll{overflow-x:auto;padding-bottom:4px}.schedule-board{min-width:900px}.schedule-axis-row,.schedule-row{display:grid;grid-template-columns:250px minmax(620px,1fr);gap:18px}.schedule-axis-row{align-items:end;margin-bottom:10px;position:relative;z-index:1;background:#fff;padding:8px 0 10px;border-bottom:1px solid #e5eaf1}.schedule-axis-person-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#64748b;padding-left:12px}.schedule-axis{height:30px;position:relative;margin:0 2px}.schedule-axis span{position:absolute;bottom:0;transform:translateX(-50%);font-size:.75rem;font-weight:750;color:#64748b;font-variant-numeric:tabular-nums;white-space:nowrap}.schedule-axis span:first-child{transform:none}.schedule-axis span:last-child{transform:translateX(-100%)}.schedule-day{margin-top:16px;border:1px solid #e3e9f1;border-radius:15px;overflow:hidden;background:#fbfcfe}.schedule-day.today{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(59,130,246,.08)}.schedule-day-head{display:flex!important;visibility:visible!important;align-items:center;justify-content:space-between;gap:16px;min-height:58px;padding:14px 16px;background:#f8fafc;border-bottom:1px solid #e3e9f1;position:relative;z-index:2}.schedule-day.today .schedule-day-head{background:#eff6ff}.schedule-day-head h3{margin:0;font-size:1.03rem;text-transform:none}.schedule-day-head .eyebrow{margin-bottom:3px;color:#2563eb}.schedule-row{align-items:stretch;min-height:70px;padding:0 16px;background:#fff;border-top:1px solid #edf1f5}.schedule-day-head+.schedule-row{border-top:0}.schedule-row:hover{background:#f8fbff}.schedule-person{padding:12px 0;display:flex;justify-content:center;flex-direction:column;min-width:0}.schedule-person strong{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-person-meta{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:.78rem;font-weight:750;color:#334155;font-variant-numeric:tabular-nums}.schedule-duration{display:inline-flex;padding:2px 7px;border-radius:999px;background:#eef2f7;color:#475569;font-size:.7rem;font-weight:800}.schedule-track{height:44px;align-self:center;position:relative;border-radius:10px;border:1px solid #dde5ef;background-color:#f8fafc;background-image:linear-gradient(to right,transparent calc(100% - 1px),#dbe3ed calc(100% - 1px));background-size:var(--hour-step) 100%;overflow:hidden}.schedule-track:after{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right,transparent calc(100% - 1px),rgba(100,116,139,.20) calc(100% - 1px));background-size:var(--two-hour-step) 100%}.schedule-bar{position:absolute;z-index:2;top:5px;bottom:5px;min-width:42px;border-radius:8px;background:linear-gradient(90deg,#2563eb,#4f46e5);color:#fff;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 12px;box-shadow:0 4px 10px rgba(37,99,235,.20);font-size:.78rem;font-weight:850;white-space:nowrap;overflow:hidden}.schedule-bar-hours{overflow:hidden;text-overflow:ellipsis}.schedule-bar-duration{padding:2px 6px;border-radius:999px;background:rgba(255,255,255,.18);font-size:.68rem;flex:0 0 auto}.schedule-day .badge{background:#eef2f7;color:#475569}
@media(max-width:900px){.schedule-board-card{padding:18px}.schedule-axis-row,.schedule-row{grid-template-columns:210px minmax(620px,1fr)}.schedule-axis-row{position:static}.schedule-board{min-width:860px}.schedule-person strong{font-size:.9rem}}

/* 10.14: czytelna rejestracja i administracja urządzeń */
.device-self-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.device-self-head h2{margin:.25rem 0 0}.device-registration-form{display:grid;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid #e6ebf2}.device-registration-form label{display:grid;gap:6px;font-weight:800}.device-detection-preview{display:grid;gap:3px;padding:12px 14px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0}.device-self-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.device-self-summary>div{display:grid;gap:3px;padding:11px 12px;border:1px solid #e5eaf1;border-radius:11px;background:#f8fafc}.compact-alert{padding:10px 12px;margin:10px 0 0;font-size:.84rem}.device-admin-list{display:grid;gap:16px}.device-admin-card{padding:20px}.device-admin-card.device-mismatch{border-color:#f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.08),0 12px 30px rgba(15,23,42,.06)}.device-admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #e9edf3;padding-bottom:14px}.device-admin-head h2{margin:.25rem 0 0}.device-admin-grid{display:grid;grid-template-columns:1.05fr 1.1fr 1.35fr;gap:14px;margin-top:14px}.device-user-box,.device-fingerprint-box,.device-tech-box{display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid #e5eaf1;border-radius:12px;background:#f8fafc;min-width:0}.device-user-name{font-size:1.1rem}.device-fingerprint-row{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #e5eaf1;padding-top:8px;margin-top:2px}.device-fingerprint-row strong{text-align:right}.device-tech-box details{margin-top:4px}.device-admin-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid #e9edf3}.device-admin-actions .rename-device{flex:1;max-width:520px}.device-admin-actions .rename-device input{flex:1}.device-action-buttons{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.device-action-buttons form{margin:0}
@media(max-width:1000px){.device-admin-grid{grid-template-columns:1fr 1fr}.device-tech-box{grid-column:1/-1}.device-admin-actions{align-items:stretch;flex-direction:column}.device-admin-actions .rename-device{max-width:none}}
@media(max-width:700px){.device-self-summary,.device-admin-grid{grid-template-columns:1fr}.device-tech-box{grid-column:auto}.device-admin-head{align-items:flex-start}.device-fingerprint-row{flex-direction:column;gap:3px}.device-fingerprint-row strong{text-align:left}.device-action-buttons{display:grid;grid-template-columns:1fr}.device-action-buttons form,.device-action-buttons button{width:100%}}


/* 10.17: nawigacja bez dropdownów - wszystkie sekcje widoczne od razu */
.app-topbar{display:block!important;min-height:0!important;padding:0!important;overflow:visible;background:#0f172a}
.topbar-primary-row{display:flex;align-items:center;gap:18px;min-height:58px;padding:8px 18px}
.topbar-primary-row .brand{display:flex;align-items:center;gap:9px;flex:0 0 auto;color:#fff}
.topbar-primary-row .brand-mark{width:34px;height:34px;border-radius:9px;background:#1e293b}
.main-nav-primary{display:flex!important;align-items:center;gap:4px!important;flex-wrap:nowrap!important;overflow-x:auto;overflow-y:hidden;min-width:0;flex:1;padding:2px 0;scrollbar-width:thin}
.main-nav-primary>a,.topnav-logout{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:7px 10px;border:0;border-radius:8px;background:transparent;color:#dbe4f0;font-size:.82rem;font-weight:750;white-space:nowrap}
.main-nav-primary>a:hover,.main-nav-primary>a.active,.topnav-logout:hover{background:#1e293b;color:#fff}
.main-nav-primary>a.active{box-shadow:inset 0 -2px 0 #60a5fa}
.topnav-logout-form{margin:0;display:inline-flex;flex:0 0 auto}.topnav-logout{cursor:pointer}
.topbar-management-row{border-top:1px solid rgba(148,163,184,.18);background:#111c31;padding:6px 18px}
.management-nav{display:flex!important;align-items:center;gap:4px!important;flex-wrap:nowrap!important;overflow-x:auto;overflow-y:hidden;padding:1px 0;scrollbar-width:thin}
.management-nav>a{display:inline-flex;align-items:center;min-height:32px;padding:6px 9px;border-radius:7px;color:#cbd5e1;font-size:.78rem;font-weight:700;white-space:nowrap}
.management-nav>a:hover,.management-nav>a.active{background:#24324a;color:#fff}
.nav-section-label{display:inline-flex;align-items:center;min-height:28px;margin-right:2px;padding:0 7px;border-radius:7px;background:#263650;color:#93c5fd;font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}
.nav-section-divider{width:1px;height:24px;background:#334155;margin:0 5px;flex:0 0 auto}
@media(max-width:1100px){.topbar-primary-row{gap:10px;padding:7px 10px}.topbar-primary-row .brand span:last-child{display:none}.topbar-management-row{padding:5px 10px}.main-nav-primary>a,.topnav-logout{font-size:.78rem;padding:7px 8px}}
@media(max-width:700px){.topbar-primary-row{align-items:center}.topbar-primary-row .brand-mark{width:32px;height:32px}.main-nav-primary{padding-bottom:4px}.topbar-management-row{padding-bottom:7px}}

/* 10.17: wybór pojedynczego dnia grafiku */
.schedule-calendar-panel{margin:18px 0 22px;padding:16px;border:1px solid #e2e8f0;border-radius:15px;background:#f8fafc}
.schedule-calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.schedule-calendar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.schedule-calendar-actions form{display:flex;gap:8px;align-items:center;margin:0}.schedule-date-input{width:auto;min-width:150px;padding:8px 10px}
.schedule-week-label{font-weight:900;font-size:.95rem;text-align:center;white-space:nowrap}
.schedule-day-cards{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));gap:9px}
.schedule-day-card{display:grid;gap:3px;min-height:92px;padding:11px 10px;border:1px solid #dce4ee;border-radius:13px;background:#fff;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}
.schedule-day-card:hover{transform:translateY(-1px);border-color:#93c5fd;box-shadow:0 7px 18px rgba(15,23,42,.07)}
.schedule-day-card.selected{border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 2px rgba(37,99,235,.10)}
.schedule-day-card.today:not(.selected){border-color:#93c5fd}.schedule-day-card-weekday{text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;font-weight:900;color:#64748b}.schedule-day-card-number{font-size:1.45rem;font-weight:900;line-height:1;color:#172033}.schedule-day-card-month{font-size:.73rem;color:#64748b}.schedule-day-card-count{margin-top:auto;font-size:.7rem;font-weight:800;color:#475569}.schedule-day-card.selected .schedule-day-card-count{color:#1d4ed8}
.schedule-selected-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:3px 0 14px}.schedule-selected-head h3{margin:0;font-size:1.1rem}.schedule-selected-head .badge{white-space:nowrap}
.schedule-empty-day{padding:22px;border:1px dashed #cbd5e1;border-radius:13px;background:#f8fafc;color:#64748b;text-align:center}
@media(max-width:900px){.schedule-calendar-toolbar{align-items:flex-start;flex-direction:column}.schedule-week-label{order:-1}.schedule-day-cards{display:flex;overflow-x:auto;padding-bottom:6px}.schedule-day-card{min-width:104px}.schedule-calendar-actions{width:100%}}
@media(min-width:1101px){.management-nav{flex-wrap:wrap!important;overflow:visible}.topbar-management-row{padding-top:7px;padding-bottom:7px}}

/* 10.18: lewy sidebar aplikacji */
:root{--app-sidebar-width:276px}
.app-navigation-shell{display:contents}
.app-sidebar{position:fixed;inset:0 auto 0 0;z-index:1200;width:var(--app-sidebar-width);display:flex;flex-direction:column;background:#0f172a;color:#e2e8f0;border-right:1px solid rgba(148,163,184,.16);box-shadow:8px 0 30px rgba(15,23,42,.08)}
.sidebar-header{flex:0 0 auto;padding:20px 18px 16px;border-bottom:1px solid rgba(148,163,184,.14)}
.sidebar-brand{display:flex;align-items:center;gap:11px;color:#fff}.sidebar-brand .brand-mark{width:38px;height:38px;border-radius:11px;background:#2563eb;color:#fff;display:grid;place-items:center;font-size:.76rem;box-shadow:0 6px 18px rgba(37,99,235,.28)}
.sidebar-brand>span:last-child{display:grid;gap:1px;min-width:0}.sidebar-brand strong{font-size:.93rem;white-space:nowrap}.sidebar-brand small{color:#94a3b8;font-size:.69rem;font-weight:650}
.sidebar-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px 12px 18px;scrollbar-width:thin;scrollbar-color:#334155 transparent}
.sidebar-nav{display:grid;gap:4px}.sidebar-section-label{margin:8px 10px 5px;color:#cbd5e1;font-size:.64rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.sidebar-link,.sidebar-section>summary,.sidebar-footer-link,.sidebar-logout{width:100%;min-height:42px;display:flex;align-items:center;gap:10px;padding:9px 11px;border:0;border-radius:10px;background:transparent;color:#cbd5e1;font-size:.84rem;font-weight:750;text-align:left;cursor:pointer;transition:background .12s ease,color .12s ease,transform .12s ease}
.sidebar-link:hover,.sidebar-section>summary:hover,.sidebar-footer-link:hover,.sidebar-logout:hover{background:#1e293b;color:#fff}.sidebar-link.active{background:#1d4ed8;color:#fff;box-shadow:0 6px 18px rgba(29,78,216,.20)}
.sidebar-link-icon{width:24px;height:24px;flex:0 0 24px;display:grid;place-items:center;border-radius:7px;background:rgba(148,163,184,.12);font-size:.66rem;font-weight:900;color:#93c5fd}.sidebar-link.active .sidebar-link-icon{background:rgba(255,255,255,.16);color:#fff}
.sidebar-link-between{justify-content:space-between}.sidebar-link-main{display:flex;align-items:center;gap:10px;min-width:0}.sidebar-count{min-width:22px;height:22px;padding:0 6px;border-radius:999px;display:grid;place-items:center;background:#dc2626;color:#fff;font-size:.66rem;font-weight:900}
.sidebar-section{border-radius:10px}.sidebar-section>summary{justify-content:space-between;list-style:none}.sidebar-section>summary::-webkit-details-marker{display:none}.sidebar-section[open]>summary{background:#162238;color:#fff}.sidebar-chevron{font-size:1.25rem;line-height:1;color:#64748b;transition:transform .16s ease}.sidebar-section[open] .sidebar-chevron{transform:rotate(90deg);color:#93c5fd}
.sidebar-subnav{display:grid;gap:2px;margin:3px 0 7px;padding:2px 0 2px 18px;border-left:1px solid #334155}.sidebar-subnav a{display:flex;align-items:center;min-height:36px;padding:7px 11px;border-radius:8px;color:#94a3b8;font-size:.79rem;font-weight:700}.sidebar-subnav a:hover{background:#1e293b;color:#fff}.sidebar-subnav a.active{background:#172554;color:#bfdbfe}
.sidebar-footer{flex:0 0 auto;display:grid;gap:4px;padding:12px;border-top:1px solid rgba(148,163,184,.14);background:#0b1324}.sidebar-logout-form{margin:0}.sidebar-logout{justify-content:flex-start;color:#fca5a5}.sidebar-logout:hover{background:#3f1721;color:#fff}
.sidebar-footer-icon{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:#1e3a5f;color:#bfdbfe;font-size:.7rem;font-weight:900}.account-context{display:grid;gap:3px;margin:14px 0 18px;padding:12px 14px;border:1px solid #dbe5f0;border-radius:12px;background:#f8fafc}.account-context span{font-size:.75rem;color:#64748b}.password-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.forced-password-logout{display:flex;justify-content:center;margin-top:12px;padding-top:12px;border-top:1px solid #edf1f5}.top-gap-small{margin-top:12px}@media(max-width:520px){.password-actions{display:grid}.password-actions .button,.password-actions button,.forced-password-logout button{width:100%}}
.sidebar-mobile-toggle{display:none;position:fixed;top:12px;left:12px;z-index:1250;width:44px;height:44px;padding:10px;border:0;border-radius:11px;background:#0f172a;box-shadow:0 7px 22px rgba(15,23,42,.22)}.sidebar-mobile-toggle span{display:block;height:2px;margin:4px 0;border-radius:2px;background:#fff}.sidebar-backdrop{display:none;position:fixed;inset:0;z-index:1150;border:0;background:rgba(15,23,42,.52);backdrop-filter:blur(2px)}
@media(min-width:901px){body:has(.app-sidebar) .container{width:auto;max-width:1600px;margin:32px 32px 32px calc(var(--app-sidebar-width) + 32px);padding:0}body:has(.app-sidebar) .container.narrow{max-width:920px}body:has(.app-sidebar) .server-offline-banner{margin-left:var(--app-sidebar-width)}}
@media(max-width:900px){.app-sidebar{transform:translateX(-102%);transition:transform .2s ease}.sidebar-mobile-toggle{display:block}.sidebar-backdrop{display:block;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.sidebar-open .app-sidebar{transform:translateX(0)}.sidebar-open .sidebar-backdrop{opacity:1;visibility:visible}.sidebar-open{overflow:hidden}body:has(.app-sidebar) .container{margin-top:72px}.server-offline-banner{padding-left:64px}}
@media(max-width:480px){:root{--app-sidebar-width:min(88vw,310px)}.sidebar-header{padding-top:16px}}

/* Calendar details links */
.calendar-item-link {
  display: flex;
  flex-direction: column;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.calendar-item-link:hover,
.calendar-item-link:focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(15, 23, 42, .12);
  outline: none;
}
.calendar-item-open {
  margin-top: .3rem;
  font-weight: 700;
  color: var(--primary, #4056e8);
}
.absence-detail-card { max-width: 1050px; }
.detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 22px;
}
.detail-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 16px 18px;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  background: #f8fafc;
}
.detail-field > span { color: #64748b; font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.detail-field > small { color: #64748b; }
.detail-section {
  margin-top: 18px;
  padding: 18px;
  border-top: 1px solid #e2e8f0;
}
.detail-section p { margin-bottom: 0; white-space: pre-wrap; }
@media (max-width: 720px) { .detail-grid { grid-template-columns: 1fr; } }


.workflow-actions{display:grid;gap:12px;min-width:420px}
.workflow-actions .action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start}
.workflow-actions .action-row form{margin:0}
.workflow-actions .action-row .inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}
.workflow-actions .action-row .inline-form input,
.workflow-actions .action-row .inline-form select{min-width:180px;flex:1 1 180px}
.workflow-actions .action-row .inline-form button,
.workflow-actions .action-row form>button{flex:0 0 auto}
.workflow-actions .action-row.replacement-row{padding-top:4px;border-top:1px dashed #e2e8f0}
.workflow-actions .action-row.cancel-row{display:grid;gap:10px}
@media(max-width:1000px){.workflow-actions{min-width:340px}}
@media(max-width:800px){.workflow-actions{min-width:unset}.workflow-actions .action-row,.workflow-actions .action-row .inline-form{display:grid}.workflow-actions .action-row .inline-form input,.workflow-actions .action-row .inline-form select,.workflow-actions .action-row .inline-form button,.workflow-actions .action-row form>button{width:100%}}

.approval-import-panel{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:end;margin-top:24px;padding-top:22px;border-top:1px solid #e5e7eb}.approval-import-form{display:flex;gap:10px;align-items:center}.approval-import-form input[type=file]{min-width:280px}.approval-matrix-card{margin-top:20px}.approval-matrix{min-width:1050px}.approval-row-form{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr)) auto;gap:12px;align-items:end}.approval-row-form label{font-weight:700}.approval-row-form small{color:#64748b;font-weight:500;line-height:1.35}.approval-save{display:flex;align-items:end;height:100%}.approval-save button{min-height:42px}@media(max-width:1000px){.approval-import-panel{grid-template-columns:1fr}.approval-import-form{align-items:stretch;flex-direction:column}.approval-row-form{grid-template-columns:1fr 1fr}.approval-save{align-items:end}}@media(max-width:700px){.approval-row-form{grid-template-columns:1fr}.approval-import-form input[type=file]{min-width:0}}
.alert.warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}
.maintenance-page{max-width:1500px}.maintenance-hero .section-head{align-items:center}.maintenance-main-action{padding:13px 18px;font-size:1rem}.maintenance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:22px}.maintenance-metrics>div{border:1px solid #e5eaf2;background:#f8fafc;border-radius:14px;padding:16px;display:grid;gap:6px}.maintenance-metrics span{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-weight:800}.maintenance-metrics strong{font-size:1.1rem}.maintenance-metrics code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.maintenance-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:20px;margin:20px 0}.maintenance-settings-form hr.soft-divider{border:0;border-top:1px solid #e5eaf2;margin:8px 0}.maintenance-check{display:flex!important;grid-template-columns:none!important}.maintenance-form-actions{justify-content:flex-start}.maintenance-secondary-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid #edf1f5}.button.disabled{pointer-events:none;opacity:.45}.maintenance-steps{list-style:none;padding:0;margin:18px 0;display:grid;gap:14px}.maintenance-steps li{display:grid;grid-template-columns:32px 1fr;gap:2px 10px;counter-increment:steps}.maintenance-steps{counter-reset:steps}.maintenance-steps li:before{content:counter(steps);grid-row:1/3;width:28px;height:28px;border-radius:9px;background:#e0e7ff;color:#3730a3;display:grid;place-items:center;font-weight:900}.maintenance-steps li span{color:#64748b;font-size:.9rem}.backup-list{display:grid}.backup-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:16px 0;border-top:1px solid #edf1f5}.backup-row:first-child{border-top:0}.backup-row-main{display:flex;align-items:center;gap:13px;min-width:0}.backup-row-main strong{display:block;overflow:hidden;text-overflow:ellipsis}.backup-icon{width:42px;height:42px;border-radius:12px;background:#e0e7ff;color:#3730a3;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.backup-icon.remote{background:#ecfdf5;color:#166534}.backup-meta{display:flex;gap:9px;flex-wrap:wrap;margin-top:5px;color:#64748b;font-size:.8rem}.backup-meta span:not(:last-child):after{content:' ·';color:#cbd5e1}.backup-ftp-state{font-size:.8rem;font-weight:800;color:#64748b;background:#f1f5f9;padding:6px 9px;border-radius:999px;white-space:nowrap}.backup-ftp-state.ok{color:#166534;background:#dcfce7}.backup-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.backup-actions form{margin:0}.danger-outline{background:white;border-color:#fda4af;color:#9f1239}.restore-complete-card{max-width:540px}.restore-complete-card h1{margin-top:18px}
@media(max-width:1050px){.maintenance-grid{grid-template-columns:1fr}.maintenance-metrics{grid-template-columns:1fr 1fr}.backup-row{grid-template-columns:1fr auto}.backup-actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:700px){.maintenance-metrics{grid-template-columns:1fr}.backup-row{grid-template-columns:1fr}.backup-ftp-state{justify-self:start}.backup-actions{grid-column:auto}.backup-actions>*{flex:1 1 140px}.backup-actions button,.backup-actions .button{width:100%}}

/* Daily leave replacements */
.daily-replacements{display:grid;gap:8px;width:100%;min-width:430px;padding-top:10px;border-top:1px dashed #e2e8f0}
.daily-replacements-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap;margin-bottom:2px}
.daily-replacement-row{display:grid;grid-template-columns:96px minmax(150px,1fr) minmax(260px,1.45fr);gap:10px;align-items:center;padding:9px 10px;border:1px solid #e5eaf2;border-radius:11px;background:#f8fafc}
.daily-replacement-date{white-space:nowrap}.daily-replacement-state{display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-width:0}
.daily-replacement-form{display:flex;gap:8px;align-items:center;margin:0}.daily-replacement-form select{min-width:180px}.daily-replacement-form button{white-space:nowrap}
@media(max-width:1000px){.daily-replacements{min-width:360px}.daily-replacement-row{grid-template-columns:90px 1fr}.daily-replacement-form{grid-column:1/-1}}
@media(max-width:700px){.daily-replacements{min-width:0}.daily-replacement-row{grid-template-columns:1fr}.daily-replacement-form{display:grid;grid-column:auto}.daily-replacement-form select,.daily-replacement-form button{width:100%}}
.calendar-replacement-days{display:grid;gap:8px;margin-top:10px}.calendar-replacement-day{display:grid;grid-template-columns:130px 1fr;gap:12px;align-items:center;padding:10px 12px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc}@media(max-width:600px){.calendar-replacement-day{grid-template-columns:1fr;gap:4px}}

/* Backup import and factory reset */
.maintenance-danger-zone { border: 1px solid #e8b7b7; }
.maintenance-danger-zone details[open] summary { margin-bottom: 20px; }
.maintenance-reset-form, .maintenance-upload-form { max-width: 720px; }
.backup-safety-name { overflow-wrap: anywhere; }
.work-calendar-page{max-width:1400px}.calendar-import-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.calendar-import-form label{min-width:150px}.calendar-create-form{grid-template-columns:minmax(170px,.55fr) minmax(190px,.65fr) minmax(260px,1.5fr) auto;align-items:end}.calendar-create-form .actions{margin:0}.calendar-exceptions-table .badge.success{background:#dcfce7;color:#166534}.calendar-row-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}.calendar-row-actions>form{margin:0}.calendar-row-actions details{position:relative}.calendar-row-actions summary{list-style:none;cursor:pointer}.calendar-row-actions summary::-webkit-details-marker{display:none}.calendar-edit-form{position:absolute;right:0;z-index:8;width:min(330px,80vw);padding:16px;margin-top:8px;background:#fff;border:1px solid #dbe3ef;border-radius:14px;box-shadow:0 18px 45px rgba(15,23,42,.18)}.holiday-attribution{margin-bottom:0}
@media(max-width:900px){.calendar-create-form{grid-template-columns:1fr 1fr}.calendar-create-form label:nth-of-type(3),.calendar-create-form .actions{grid-column:1/-1}.calendar-edit-form{position:fixed;left:5vw;right:5vw;top:12vh;width:90vw;max-height:76vh;overflow:auto}}
.maintenance-progress[hidden] { display: none; }

/* 10.51: terminy i audyt kompletności grafiku */
.schedule-audit-page{max-width:1600px}.schedule-audit-head{align-items:center}.schedule-audit-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.schedule-audit-metrics>div{display:grid;gap:5px;padding:17px 18px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;box-shadow:0 7px 24px rgba(15,23,42,.04)}.schedule-audit-metrics span,.schedule-audit-rules span,.schedule-audit-date>span{font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.schedule-audit-metrics strong{font-size:1.55rem}.schedule-audit-rules{display:grid;grid-template-columns:minmax(180px,.55fr) minmax(180px,.55fr) minmax(340px,1.4fr);gap:20px;align-items:center}.schedule-audit-rules>div{display:grid;gap:5px}.schedule-audit-rules p{margin:0}.schedule-audit-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.schedule-audit-search{display:flex;gap:8px;min-width:min(430px,100%)}.schedule-audit-list{display:grid}.schedule-audit-row{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(300px,1.65fr) minmax(210px,.85fr) minmax(145px,.65fr) minmax(300px,1.35fr);gap:18px;align-items:center;padding:20px 0;border-top:1px solid #e7ecf2}.schedule-audit-row:first-child{border-top:0}.schedule-audit-person,.schedule-audit-date,.schedule-audit-state{display:grid;gap:4px}.schedule-audit-problem{display:grid;gap:5px;padding:11px 13px;border:1px solid #dbe4ef;border-radius:12px;background:#f8fafc}.schedule-audit-problem>span{font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.schedule-audit-problem strong{font-size:1rem}.schedule-audit-problem p{margin:0;color:#334155;line-height:1.4}.schedule-audit-problem small{color:#64748b;line-height:1.4}.schedule-audit-dates{display:grid;grid-template-columns:1fr;gap:12px}.schedule-audit-date strong{font-variant-numeric:tabular-nums}.schedule-audit-state{justify-items:start}.schedule-audit-state small{color:#64748b}.schedule-audit-decision{display:grid;gap:8px;margin:0}.schedule-audit-decision .actions{justify-content:flex-start;flex-wrap:wrap}.schedule-audit-review{display:grid;gap:7px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:11px;background:#f8fafc}.schedule-audit-review p{margin:0;white-space:pre-wrap}.schedule-audit-review form{margin:0}.sidebar-subnav .sidebar-count{margin-left:auto}
@media(max-width:1180px){.schedule-audit-row{grid-template-columns:1fr 1.6fr 1fr}.schedule-audit-state{justify-self:start}.schedule-audit-decision,.schedule-audit-review{grid-column:1/-1}.schedule-audit-rules{grid-template-columns:1fr 1fr}.schedule-audit-rules p{grid-column:1/-1}}
@media(max-width:800px){.schedule-audit-metrics{grid-template-columns:1fr 1fr}.schedule-audit-toolbar{align-items:stretch;flex-direction:column}.schedule-audit-search{min-width:0}.schedule-audit-row{grid-template-columns:1fr 1fr}.schedule-audit-person,.schedule-audit-problem,.schedule-audit-state,.schedule-audit-decision,.schedule-audit-review{grid-column:1/-1}}
@media(max-width:520px){.schedule-audit-metrics,.schedule-audit-rules,.schedule-audit-row{grid-template-columns:1fr}.schedule-audit-rules p,.schedule-audit-person,.schedule-audit-problem,.schedule-audit-state,.schedule-audit-decision,.schedule-audit-review{grid-column:auto}.schedule-audit-search,.schedule-audit-decision .actions{display:grid}.schedule-audit-search button,.schedule-audit-decision button{width:100%}}

.import-guide { margin: 24px 0; }
.import-fields-table { min-width: 960px; width: 100%; }
.import-fields-table td { vertical-align: top; white-space: normal; }
.import-fields-table td:first-child code { overflow-wrap: anywhere; }
.import-field-badge { display: inline-block; padding: 4px 8px; border-radius: 6px; font-size: 12px; font-weight: 700; white-space: nowrap; }
.import-field-badge.required { color: #923333; background: #fce8e8; }
.import-field-badge.optional { color: #315982; background: #edf3fa; }
.import-field-badge.conditional { color: #80560f; background: #fff1d6; }
.import-csv-example { overflow-x: auto; padding: 16px; border: 1px solid #d8e2ef; border-radius: 10px; background: #f5f8fc; font-size: 13px; line-height: 1.8; }
.import-guide-details { margin-top: 20px; }
.import-guide-details > summary, .import-aliases > summary { cursor: pointer; font-weight: 600; }
.import-aliases { margin: 16px 0; }
.admin-absence-notice{display:grid;gap:.35rem;margin:1rem 0 1.25rem;padding:1rem 1.1rem;border:1px solid #c7d7ff;border-radius:14px;background:#edf3ff;color:#173367}
.admin-absence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:start}
.admin-absence-card .section-head{margin-bottom:1rem}.admin-absence-card h2{margin-bottom:.35rem}
.admin-absence-card textarea{resize:vertical;min-height:92px}
.required-mark,.optional-mark{float:right;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.035em}
.required-mark{color:#b42318}.optional-mark{color:#667085}
@media(max-width:900px){.admin-absence-grid{grid-template-columns:1fr}}

/* 10.59: nadgodziny i odbiory */
.overtime-page{max-width:1600px}.overtime-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.overtime-metrics strong{font-size:1.55rem}.overtime-request-form,.overtime-admin-form{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(110px,.4fr) minmax(110px,.4fr) minmax(280px,1.4fr) auto;gap:14px;align-items:end}.overtime-admin-form{grid-template-columns:minmax(240px,1.15fr) minmax(180px,.8fr) minmax(100px,.4fr) minmax(100px,.4fr) minmax(280px,1.35fr) auto}.overtime-reason textarea{resize:vertical;min-height:44px}.overtime-request-form .actions,.overtime-admin-form .actions{margin:0}.overtime-decisions{display:grid;gap:8px;min-width:360px}.overtime-decisions form{display:flex;gap:8px;margin:0}.overtime-decisions input{min-width:190px}.overtime-decisions button{white-space:nowrap}
@media(max-width:1250px){.overtime-request-form,.overtime-admin-form{grid-template-columns:1fr 1fr 1fr}.overtime-reason{grid-column:1/-1}.overtime-request-form .actions,.overtime-admin-form .actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:760px){.overtime-metrics{grid-template-columns:1fr 1fr}.overtime-request-form,.overtime-admin-form{grid-template-columns:1fr 1fr}.overtime-request-form label:first-of-type,.overtime-admin-form label:first-of-type,.overtime-admin-form label:nth-of-type(2),.overtime-reason,.overtime-request-form .actions,.overtime-admin-form .actions{grid-column:1/-1}.overtime-decisions{min-width:280px}.overtime-decisions form{display:grid}}
@media(max-width:480px){.overtime-metrics,.overtime-request-form,.overtime-admin-form{grid-template-columns:1fr}.overtime-request-form label:first-of-type,.overtime-admin-form label:first-of-type,.overtime-admin-form label:nth-of-type(2),.overtime-reason,.overtime-request-form .actions,.overtime-admin-form .actions{grid-column:auto}}
/* 10.61: historyczne urlopy i zaległa pula */
.leave-carryover-card{margin-bottom:20px}.leave-carryover-form{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(180px,.7fr) auto;gap:14px;align-items:end}.leave-balance-table{min-width:900px}.leave-balance-table td:not(:first-child){font-variant-numeric:tabular-nums}.leave-balance-metrics{grid-template-columns:repeat(7,minmax(0,1fr))}
@media(max-width:1100px){.leave-balance-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){.leave-carryover-form{grid-template-columns:1fr 1fr}.leave-carryover-form button{grid-column:1/-1}.leave-balance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.leave-carryover-form,.leave-balance-metrics{grid-template-columns:1fr}.leave-carryover-form button{grid-column:auto}}

/* 10.62: tygodniowy termin kompletności grafiku */
.weekly-schedule-config{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,.8fr);gap:12px;align-items:stretch}.weekly-schedule-check{align-items:flex-start;padding:14px 16px;border:1px solid #bfdbfe;border-radius:12px;background:#f8fbff;margin:0}.weekly-schedule-check input{margin-top:3px}.weekly-schedule-check span{display:grid;gap:4px}.weekly-schedule-check small{color:#64748b;font-weight:500;line-height:1.45}.weekly-schedule-day{padding:14px 16px;border:1px solid #bfdbfe;border-radius:12px;background:#f8fbff;margin:0}.weekly-schedule-day select{margin-top:6px}.schedule-audit-rules{grid-template-columns:repeat(3,minmax(170px,.55fr)) minmax(340px,1.4fr)}
@media(max-width:1180px){.schedule-audit-rules{grid-template-columns:repeat(3,1fr)}.schedule-audit-rules p{grid-column:1/-1}}
@media(max-width:800px){.weekly-schedule-config{grid-template-columns:1fr}.schedule-audit-rules{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.schedule-audit-rules{grid-template-columns:1fr}.schedule-audit-rules p{grid-column:auto}}

/* 10.63: grupy i szybkie logowanie na stanowiskach wspólnych */
.shared-login-card{width:min(760px,100%)}.shared-login-heading h2{margin:.2rem 0}.employee-tile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.employee-login-tile{display:flex;align-items:center;gap:12px;border:1px solid #dbe3ee;border-radius:14px;padding:14px;background:#f8fafc;transition:border-color .15s,box-shadow .15s,transform .15s}.employee-login-tile:hover,.employee-login-tile:focus-visible{border-color:#2563eb;box-shadow:0 8px 22px rgba(37,99,235,.12);transform:translateY(-1px)}.employee-login-tile>span:last-child{display:grid;gap:3px}.employee-login-tile small{color:#64748b}.employee-login-avatar{width:44px;height:44px;flex:0 0 auto;border-radius:13px;background:#dbeafe;color:#1d4ed8;display:grid;place-items:center;font-weight:900;text-transform:uppercase}.employee-login-avatar.large{width:62px;height:62px;border-radius:18px;font-size:1.15rem}.standard-login-details{margin-top:20px;border-top:1px solid #e2e8f0;padding-top:18px}.standard-login-details summary{cursor:pointer;color:#475569;font-weight:700}.employee-password-card{width:min(500px,100%)}.selected-employee{display:flex;align-items:center;gap:16px;padding:18px;margin:18px 0;border:1px solid #dbeafe;border-radius:14px;background:#f8fbff}.selected-employee h1{margin:2px 0;font-size:1.35rem}.shared-login-back{width:100%;margin-top:12px}.login-group-create{margin-bottom:20px}.login-group-create h2{margin-top:0}.login-group-list{display:grid;gap:20px}.login-group-card{display:grid;gap:18px}.login-group-card.archived{background:#f8fafc}.login-group-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.login-group-card-head h2{margin:8px 0 0}.group-member-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.group-member-check{display:flex;grid-template-columns:none;align-items:center;gap:10px;padding:10px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.group-member-check input{width:auto}.group-member-check span{display:grid;gap:2px}.group-member-check small{color:#64748b;font-weight:500}.login-group-danger{border-top:1px solid #edf1f5;padding-top:16px}.member-chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.member-chip{padding:6px 9px;border-radius:999px;background:#e2e8f0;font-size:.82rem}.device-group-form{display:grid;grid-template-columns:minmax(280px,1fr) auto;gap:12px;align-items:end;margin:18px 0;padding:16px;border:1px solid #bfdbfe;border-radius:12px;background:#f8fbff}
@media(max-width:900px){.group-member-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.employee-tile-grid,.group-member-grid{grid-template-columns:1fr}.login-group-card-head{display:grid}.device-group-form{grid-template-columns:1fr}}

/* 10.82 - uproszczony kalendarz pracy */
.calendar-mode-card,.calendar-rules-card,.building-calendars-section,.calendar-exception-tools{margin-bottom:20px}
.calendar-mode-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}
.calendar-mode-check{min-width:0;padding:15px 16px;border:1px solid #dbe3ef;border-radius:14px;background:#f8fafc;margin:0}
.calendar-mode-check span{display:grid;gap:4px}.calendar-mode-check small{color:#64748b;font-weight:500;line-height:1.45}
.calendar-section-head{margin-bottom:16px}.calendar-section-head h2{margin-bottom:6px}.calendar-section-head p{max-width:900px;margin-bottom:0}
.calendar-rules-form{gap:16px}.calendar-day-rule-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start}
.calendar-day-rule{min-width:0;border:1px solid #dbe3ef;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 1px 0 rgba(15,23,42,.02)}
.calendar-day-rule.custom-cycle{border-color:#93c5fd;background:#f8fbff}
.calendar-day-rule-main{display:grid;min-width:0}.calendar-day-toggle{display:flex;align-items:flex-start;gap:10px;padding:14px 14px 12px;margin:0;min-width:0;background:transparent}
.calendar-day-toggle input{margin-top:3px;flex:0 0 auto}.calendar-day-toggle span{display:grid;gap:3px;min-width:0}.calendar-day-toggle strong{font-size:.98rem;color:#172033}.calendar-day-toggle small{color:#64748b;font-weight:600;line-height:1.3}
.calendar-cycle-details{border-top:1px solid #edf1f6;background:#fbfcfe}.calendar-cycle-details>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;cursor:pointer;list-style:none;color:#45617e;font-size:.78rem;font-weight:800;user-select:none}
.calendar-cycle-details>summary::-webkit-details-marker{display:none}.calendar-cycle-details>summary:hover{background:#f3f7fb}.calendar-cycle-summary-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-cycle-plus{position:relative;width:24px;height:24px;flex:0 0 24px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff}
.calendar-cycle-plus::before,.calendar-cycle-plus::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;border-radius:2px;background:#2563eb;transform:translate(-50%,-50%)}
.calendar-cycle-plus::after{transform:translate(-50%,-50%) rotate(90deg);transition:opacity .12s ease}.calendar-cycle-details[open] .calendar-cycle-plus::after{opacity:0}
.calendar-cycle-panel{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:10px;padding:12px;border-top:1px solid #edf1f6;background:#fff}
.calendar-cycle-panel label{margin:0;min-width:0;font-size:.8rem}.calendar-cycle-panel input{margin-top:5px;width:100%;min-width:0}
.calendar-cycle-inline{display:flex;align-items:center;gap:7px;margin-top:5px}.calendar-cycle-inline input{margin:0;min-width:0}.calendar-cycle-inline>span{white-space:nowrap;color:#64748b;font-size:.8rem}
.calendar-cycle-panel p{grid-column:1/-1;margin:0;line-height:1.4}.calendar-rules-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:2px}.calendar-rules-footer p{margin:0}
.building-calendar-list{display:grid;gap:18px}.building-calendar-card{display:grid;gap:16px;padding:18px;border:1px solid #dbe3ef;border-radius:16px;background:#f8fafc;overflow:hidden}
.building-calendar-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.building-calendar-card-head h3{margin:0 0 4px}.building-rule-grid .calendar-day-rule{background:#fff}
.calendar-exception-tools{align-items:start}.calendar-exception-tools .card{margin:0;min-width:0}.calendar-exception-tools .form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:1250px){.calendar-day-rule-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:940px){.calendar-day-rule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-mode-form{grid-template-columns:1fr}.calendar-mode-form>button{justify-self:start}.calendar-rules-footer{align-items:flex-start;flex-direction:column}.calendar-exception-tools{grid-template-columns:1fr}}
@media(max-width:620px){.calendar-day-rule-grid{grid-template-columns:1fr}.building-calendar-card{padding:12px}.calendar-cycle-panel{grid-template-columns:1fr}.calendar-cycle-panel p{grid-column:auto}.calendar-mode-form>button,.calendar-rules-footer button{width:100%}.calendar-exception-tools .form-grid.two{grid-template-columns:1fr}}

/* 10.81: administracyjny kalendarz faktycznego czasu pracy */
.work-time-calendar-container{max-width:1540px}.work-time-month-card{padding-top:20px}.work-time-calendar-day{display:flex;flex-direction:column;gap:7px;min-height:142px;position:relative;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.work-time-calendar-day:hover{transform:translateY(-1px);border-color:#93c5fd;box-shadow:0 8px 18px rgba(15,23,42,.07)}.work-time-calendar-day.selected{border:2px solid #2563eb;background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.08)}.work-time-calendar-day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.work-time-calendar-day-head .calendar-day-number{margin:0}.work-time-calendar-day-flags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.work-time-selected-marker{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:.65rem;font-weight:800;line-height:1.1}.work-time-selected-marker::before{content:"";width:10px;height:10px;border-radius:3px;background:#2563eb;box-shadow:inset 0 0 0 2px rgba(255,255,255,.65)}.work-time-calendar-day-head .badge{font-size:.65rem;padding:3px 7px}.work-time-calendar-day-data{display:grid;gap:3px;font-size:.71rem;color:#475569}.work-time-calendar-day-data>strong{color:#172033;font-size:.76rem}.work-time-calendar-empty{margin-top:auto}.daily-work-detail-card{scroll-margin-top:24px}.daily-work-selected-head{align-items:center}.daily-work-date-label{margin:.2rem 0}.daily-work-date-form{display:flex;align-items:center;gap:8px;margin:0}.daily-work-date-form input{width:auto;min-width:160px}.daily-work-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:18px 0 22px}.daily-work-metrics>div{display:grid;gap:4px;padding:13px 14px;border:1px solid #e3e9f1;border-radius:12px;background:#f8fafc}.daily-work-metrics span,.daily-work-metrics small{font-size:.72rem;color:#64748b}.daily-work-metrics strong{font-size:1.15rem}.daily-work-table{min-width:1280px}.daily-work-table th,.daily-work-table td{vertical-align:top}.daily-work-person-cell{min-width:190px}.daily-work-person-cell>strong,.daily-work-person-cell>span{display:block}.daily-work-stack,.daily-detail-list{display:grid;gap:4px}.daily-work-stack>span{display:grid;gap:1px}.daily-work-stack small,.daily-detail-list small{color:#64748b;font-size:.67rem;text-transform:uppercase;letter-spacing:.04em}.daily-source-label{font-size:.72rem;font-weight:800;color:#475569}.daily-work-main-value{font-size:1rem}.daily-detail-list .tiny{display:block;max-width:260px;color:#475569;line-height:1.35}.overtime-detail-list>span{display:grid;gap:1px}.daily-work-row-empty{opacity:.55}.daily-work-row-empty:hover{opacity:.8}.daily-work-table .positive{color:#15803d}.daily-work-table-wrap{border:1px solid #e8edf4;border-radius:12px}
@media(max-width:1150px){.daily-work-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.daily-work-selected-head,.daily-work-date-form{align-items:stretch;flex-direction:column}.daily-work-date-form input,.daily-work-date-form .button{width:100%}.daily-work-metrics{grid-template-columns:repeat(2,1fr)}.work-time-calendar-day{min-height:auto}.work-time-calendar-day-data{font-size:.78rem}}
@media(max-width:480px){.daily-work-metrics{grid-template-columns:1fr}}

/* 10.85 - historia czasu pracy pojedynczego pracownika */
.employee-time-history-container{max-width:1500px}.employee-history-head{display:grid;gap:18px}.employee-history-title-row{margin-bottom:0;align-items:center}.employee-history-title-row h1{margin:.2rem 0}.employee-history-range-form{display:grid;grid-template-columns:minmax(180px,240px) minmax(180px,240px) auto;gap:12px;align-items:end}.employee-history-range-form .primary{min-height:42px}.employee-history-summary{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin:18px 0}.employee-history-summary>div{display:grid;gap:4px;padding:14px;border:1px solid #e3e9f1;border-radius:12px;background:#fff;box-shadow:0 6px 20px rgba(15,23,42,.035)}.employee-history-summary span{font-size:.72rem;color:#64748b}.employee-history-summary strong{font-size:1.15rem}.employee-history-summary .positive,.employee-history-day .positive,.employee-history-detail .positive{color:#15803d}.employee-history-months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.employee-history-month{min-width:0}.employee-history-month h2{margin:0 0 16px;text-transform:capitalize}.employee-history-calendar-grid{align-items:stretch}.employee-history-day{min-height:124px;display:flex;flex-direction:column;gap:5px;padding:10px;overflow:hidden;transition:border-color .12s ease,background .12s ease,transform .12s ease}.employee-history-day:not(.out-of-range):hover{border-color:#93c5fd;transform:translateY(-1px)}.employee-history-day.selected{border:2px solid #2563eb;background:#eff6ff}.employee-history-day.out-of-range{opacity:.28;background:#f8fafc;cursor:default}.employee-history-day.empty{background:#fbfcfe}.employee-history-day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.employee-history-day-head>strong,.employee-history-day>strong{font-size:.9rem}.employee-history-day-head .badge{font-size:.58rem;padding:2px 5px;max-width:82px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.employee-history-day-data{display:grid;gap:2px;font-size:.68rem;line-height:1.3;color:#475569}.employee-history-day-data>strong{font-size:.75rem;color:#172033}.employee-history-detail{margin-top:18px}.employee-history-detail-head{align-items:center}.employee-history-detail-head h2{margin:.2rem 0;text-transform:capitalize}.employee-history-detail-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}.employee-history-detail-metrics>div{display:grid;gap:3px;padding:13px 14px;border:1px solid #e3e9f1;border-radius:12px;background:#f8fafc}.employee-history-detail-metrics span,.employee-history-detail-metrics small{font-size:.7rem;color:#64748b}.employee-history-detail-metrics strong{font-size:1rem}.employee-history-detail-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.employee-history-detail-box{padding:16px;border:1px solid #e4eaf2;border-radius:12px;background:#fff;min-width:0}.employee-history-detail-box h3{margin:0 0 10px}.employee-history-detail-box .daily-detail-list{gap:7px}.employee-history-detail-box .daily-detail-list>span{line-height:1.4;color:#334155}
@media(max-width:1200px){.employee-history-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.employee-history-months{grid-template-columns:1fr}.employee-history-detail-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.employee-history-range-form{grid-template-columns:1fr 1fr}.employee-history-range-form .primary{grid-column:1/-1}.employee-history-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.employee-history-detail-columns{grid-template-columns:1fr}.employee-history-detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.employee-history-day{min-height:98px}.employee-history-day-data{font-size:.63rem}}
@media(max-width:520px){.employee-history-range-form,.employee-history-summary,.employee-history-detail-metrics{grid-template-columns:1fr}.employee-history-range-form .primary{grid-column:auto}.employee-history-day{padding:7px;min-height:80px}.employee-history-day-data>span:nth-of-type(n+3){display:none}}
.daily-work-employee-link{font-weight:800;color:#1d4ed8}.daily-work-employee-link:hover{text-decoration:underline}

.security-divider { display:flex; align-items:center; gap:.75rem; margin:1rem 0; color:var(--muted, #667085); font-size:.85rem; }
.security-divider::before,.security-divider::after { content:""; height:1px; flex:1; background:#dfe5ef; }
.security-divider span { white-space:nowrap; }


/* Daily work calendar — readable employee detail cards */
.daily-employee-list{display:grid;gap:12px;margin-top:18px}
.daily-employee-card{border:1px solid #e2e8f0;border-radius:14px;background:#fff;overflow:hidden}
.daily-employee-card.has-activity{box-shadow:0 2px 8px rgba(15,23,42,.035)}
.daily-employee-card.no-activity{background:#f8fafc}
.daily-employee-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid #edf2f7}
.daily-employee-card.no-activity .daily-employee-card-head{border-bottom:0;padding-bottom:8px}
.daily-employee-identity{display:grid;gap:3px;min-width:0}
.daily-work-employee-link{font-weight:850;color:#172033;text-decoration:none;font-size:1rem}
.daily-work-employee-link:hover{text-decoration:underline}
.daily-employee-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:#64748b;font-size:.76rem}
.daily-employee-status{flex:0 0 auto}
.daily-empty-summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 16px 13px;color:#64748b;font-size:.82rem}
.daily-empty-summary span+span{padding-left:12px;border-left:1px solid #cbd5e1}
.daily-employee-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr .8fr 1.35fr;gap:10px;padding:12px}
.daily-info-box{display:grid;align-content:start;gap:7px;min-width:0;padding:12px;border:1px solid #e5eaf1;border-radius:12px;background:#f8fafc}
.daily-info-box.daily-info-primary{background:#f7faff;border-color:#d7e5ff}
.daily-info-label{font-size:.68rem;font-weight:900;letter-spacing:.055em;text-transform:uppercase;color:#64748b}
.daily-info-main{font-size:1.08rem;color:#172033;line-height:1.15}
.daily-info-note{font-size:.72rem;color:#64748b}
.daily-info-empty{font-size:.78rem;color:#94a3b8;font-weight:650}
.daily-time-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.daily-time-pair>div{display:grid;gap:2px}
.daily-time-pair small,.daily-overtime-line small{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:#64748b}
.daily-time-pair strong{font-size:.9rem;color:#172033}
.daily-source-pill{justify-self:start;display:inline-flex;padding:3px 7px;border-radius:999px;background:#eef2f7;color:#475569;font-size:.66rem;font-weight:800}
.daily-card-details{display:grid;gap:5px;align-content:start}
.daily-detail-chip{display:block;padding:5px 7px;border-radius:8px;background:#fff;border:1px solid #e5eaf1;color:#475569;font-size:.69rem;line-height:1.35;overflow-wrap:anywhere}
.daily-detail-chip.event{background:#fffaf0;border-color:#f5dfb5}
.daily-overtime-line{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid #e5eaf1}
.daily-overtime-line:last-child{border-bottom:0}
.daily-overtime-line strong{font-size:.9rem}
.daily-events-box{min-width:0}
@media(max-width:1300px){.daily-employee-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-events-box{grid-column:1/-1}}
@media(max-width:760px){.daily-employee-card-head{align-items:flex-start}.daily-employee-grid{grid-template-columns:1fr}.daily-events-box{grid-column:auto}.daily-time-pair{grid-template-columns:1fr 1fr}.daily-empty-summary span+span{padding-left:0;border-left:0}}

/* Per-employee daily settlement: no cross-employee totals in this section. */
.employee-settlement-list{display:grid;gap:18px;margin-top:18px}.employee-settlement-card{border:1px solid #dfe6ef;border-radius:16px;background:#fff;overflow:hidden}.employee-settlement-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;background:#f8fafc;border-bottom:1px solid #e7edf4}.employee-settlement-head h3{margin:3px 0 2px;font-size:1.15rem}.employee-settlement-head p{margin:0}.employee-settlement-table-wrap{border:0;border-radius:0}.employee-settlement-table-wrap table{margin:0}.employee-settlement-table-wrap th:first-child,.employee-settlement-table-wrap td:first-child{padding-left:20px}.employee-settlement-table-wrap th:last-child,.employee-settlement-table-wrap td:last-child{padding-right:20px}@media(max-width:760px){.employee-settlement-head{align-items:stretch;flex-direction:column}.employee-settlement-head .button{width:100%;text-align:center}}

.password-set-form{margin-top:1rem}.password-fields-grid{align-items:start}.password-field-block{display:grid;gap:6px;align-content:start}.password-field-block label{align-content:start}.password-field-block .field-hint{min-height:1.1rem}

.user-work-norm-cell{white-space:nowrap}.user-work-norm-line{display:flex;align-items:baseline;gap:6px}.user-work-norm-line+ .user-work-norm-line{margin-top:2px}.user-work-norm-line strong{font-weight:500}.user-work-norm-line small{font-size:.72rem}
/* 10.104 - sygnalizacja terminów grafiku pracownika */
.schedule-day-card.schedule-overdue{border-color:#ef4444;background:#fff1f2;box-shadow:0 0 0 2px rgba(239,68,68,.08)}
.schedule-day-card.schedule-warning{border-color:#f59e0b;background:#fffbeb;box-shadow:0 0 0 2px rgba(245,158,11,.08)}
.schedule-day-card.schedule-pending{border-color:#60a5fa;background:#eff6ff}
.schedule-day-card.schedule-shared-saturday{border-color:#a5b4fc;background:#f5f3ff}
.schedule-day-card.schedule-required{border-color:#cbd5e1;background:#f8fafc}
.schedule-day-card.selected.schedule-overdue{border-color:#dc2626;box-shadow:0 0 0 3px rgba(220,38,38,.13)}
.schedule-day-card.selected.schedule-warning{border-color:#d97706;box-shadow:0 0 0 3px rgba(217,119,6,.13)}
.schedule-day-card-attention{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 7px;border-radius:999px;font-size:.64rem;font-weight:900;line-height:1.15;background:#e2e8f0;color:#475569;white-space:normal}
.schedule-overdue .schedule-day-card-attention{background:#fee2e2;color:#991b1b}.schedule-warning .schedule-day-card-attention{background:#fef3c7;color:#92400e}.schedule-pending .schedule-day-card-attention{background:#dbeafe;color:#1d4ed8}
.schedule-shared-saturday .schedule-day-card-attention{background:#ede9fe;color:#5b21b6}
.sidebar-schedule-badge{flex:0 0 auto;padding:0;min-width:22px;width:22px;height:22px;border-radius:999px;color:#fff;font-size:.72rem;font-weight:900;line-height:1}
.sidebar-schedule-badge.danger{background:#dc2626}.sidebar-schedule-badge.warning{background:#f59e0b}
.sidebar-link.active .sidebar-schedule-badge{box-shadow:0 0 0 2px rgba(255,255,255,.2)}
.schedule-attention-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.schedule-attention-banner>div{min-width:0}.schedule-attention-banner .button{flex:0 0 auto;background:#fff}
@media(max-width:700px){.schedule-attention-banner{align-items:stretch;flex-direction:column}.schedule-attention-banner .button{width:100%}}

/* 10.105 - wyraźny alert braku grafiku na dzisiaj */
.empty-state.missing-schedule-alert{border:1px solid #fecaca;background:#fff1f2;color:#7f1d1d;box-shadow:0 0 0 1px rgba(220,38,38,.03)}
.empty-state.missing-schedule-alert>strong{color:#991b1b}
.empty-state.missing-schedule-alert .muted{color:#9f1239}
.empty-state.missing-schedule-alert .button{border-color:#fca5a5;background:#fff;color:#991b1b}
.empty-state.missing-schedule-alert .button:hover{background:#fee2e2;border-color:#ef4444}
.empty-state.pending-schedule-alert{border-color:#bfdbfe;background:#eff6ff;color:#1e3a8a}

.schedule-warning-clear-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.schedule-warning-clear-actions>form{padding:16px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}.schedule-warning-clear-actions select{width:100%}@media(max-width:800px){.schedule-warning-clear-actions{grid-template-columns:1fr}}

/* 10.141: wieloosobowe ścieżki akceptacji (OR) */
.approval-multi-select{min-height:132px;padding:6px}.approval-multi-select option{padding:5px 7px}.approval-multi-select optgroup{font-weight:800}.approval-row-form label>span{display:block;margin-bottom:5px}.approval-row-form label>small{display:block;margin-top:6px}

/* 10.148: tygodniowy grafik — uproszczony, nowoczesny edytor */
.schedule-planner-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.65fr);gap:20px;margin-bottom:20px;align-items:start}
.schedule-week-planner-card{min-width:0;padding:28px}
.schedule-planner-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:22px}
.schedule-planner-heading h1{margin:2px 0 7px;font-size:1.72rem;letter-spacing:-.035em}
.schedule-planner-lead{max-width:720px;margin:0;font-size:.91rem;line-height:1.5}
.schedule-week-chip{display:grid;gap:2px;flex:0 0 auto;padding:10px 13px;border:1px solid #dbe4ef;border-radius:12px;background:#f8fafc;text-align:right}
.schedule-week-chip span{font-size:.67rem;text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-weight:850}
.schedule-week-chip strong{font-size:.9rem;white-space:nowrap}
.schedule-week-form{display:grid;gap:0}
.schedule-week-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0 14px;border-top:1px solid #edf1f5}
.schedule-week-toolbar p{margin:0;color:#64748b;font-size:.83rem;line-height:1.45}.schedule-week-toolbar p strong{color:#334155}
.schedule-copy-button{border:0;background:transparent;color:#2563eb;padding:7px 4px;font-size:.81rem;font-weight:800;white-space:nowrap}
.schedule-copy-button:hover{background:#eff6ff;border-radius:8px}.schedule-copy-button span{font-size:1rem;margin-right:3px}
.schedule-week-editor{border:1px solid #e2e8f0;border-radius:16px;overflow:hidden;background:#fff}
.schedule-week-editor-head,.schedule-week-day{display:grid;grid-template-columns:minmax(145px,.9fr) minmax(115px,.64fr) minmax(270px,1.35fr) minmax(150px,.78fr);align-items:center;column-gap:18px}
.schedule-week-editor-head{padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e7edf4;color:#475569;font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.075em}
.schedule-week-day{min-height:64px;padding:9px 16px;border-bottom:1px solid #edf1f5;transition:background .14s ease}
.schedule-week-day:last-child{border-bottom:0}.schedule-week-day:hover{background:#fbfdff}.schedule-week-day.is-selected{background:#f8fbff}
.schedule-week-day.is-locked{background:#fafafa;color:#475569}.schedule-week-day.is-locked .schedule-time-range,.schedule-week-day.is-locked .schedule-work-toggle{opacity:1}
.schedule-day-identity{display:grid;gap:2px;min-width:0}.schedule-day-identity strong{font-size:.93rem;text-transform:capitalize;color:#172033}.schedule-day-identity span{font-size:.72rem;color:#475569;font-variant-numeric:tabular-nums}
.schedule-work-toggle{display:flex!important;align-items:center;gap:9px;margin:0!important;cursor:pointer;width:max-content;font-weight:750}
.schedule-work-toggle input[type=checkbox]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.schedule-work-toggle-track{position:relative;width:38px;height:22px;border-radius:999px;background:#d8e0ea;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06);transition:background .16s ease;flex:0 0 auto}
.schedule-work-toggle-track i{position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(15,23,42,.2);transition:transform .16s ease}
.schedule-work-toggle input[type=checkbox]:checked~.schedule-work-toggle-track{background:#2563eb}.schedule-work-toggle input[type=checkbox]:checked~.schedule-work-toggle-track i{transform:translateX(16px)}
.schedule-work-toggle input[type=checkbox]:focus-visible~.schedule-work-toggle-track{outline:3px solid rgba(37,99,235,.18);outline-offset:2px}.schedule-work-toggle input[type=checkbox]:disabled~.schedule-work-toggle-track{cursor:not-allowed}
.schedule-work-toggle-label{font-size:.82rem;color:#475569}.schedule-week-day.is-selected .schedule-work-toggle-label{color:#1d4ed8}
.schedule-time-range{display:grid;grid-template-columns:minmax(100px,1fr) 14px minmax(100px,1fr);align-items:end;gap:7px;min-width:0;transition:opacity .14s ease}
.schedule-time-range label{display:grid;gap:3px;margin:0;font-weight:650}.schedule-time-range label>span{font-size:.62rem;color:#475569;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.schedule-time-range input[type=time]{min-width:0;height:36px;margin:0;padding:6px 9px;border-radius:9px;border-color:#dce3ec;background:#fff;font-size:.86rem;font-weight:700;font-variant-numeric:tabular-nums}
.schedule-time-range input[type=time]:focus{border-color:#93b4f6;outline:3px solid rgba(37,99,235,.09)}
.schedule-time-separator{align-self:center;margin-top:14px;color:#475569;text-align:center}
.schedule-week-day:not(.is-selected):not(.is-locked) .schedule-time-range{opacity:1;pointer-events:none}
.schedule-day-state{display:flex;align-items:center;gap:7px;min-width:0;color:#64748b;font-size:.75rem;font-weight:750;line-height:1.25;background:transparent!important}
.schedule-day-state-dot{width:7px;height:7px;border-radius:50%;background:#cbd5e1;flex:0 0 auto}.schedule-day-state.status-approved .schedule-day-state-dot{background:#22c55e}.schedule-day-state.status-pending .schedule-day-state-dot{background:#f59e0b}.schedule-day-state.status-rejected .schedule-day-state-dot{background:#ef4444}
.schedule-day-state.status-approved{color:#47705a}.schedule-day-state.status-pending{color:#8a6726}.schedule-day-state.status-rejected{color:#9f4c4c}
.schedule-week-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:18px}
.schedule-week-summary{display:grid;gap:1px}.schedule-week-summary span{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:#475569;font-weight:850}.schedule-week-summary strong{font-size:1rem;color:#334155;font-variant-numeric:tabular-nums}
.schedule-save-week{min-height:44px;padding:10px 20px;border-radius:11px;box-shadow:0 5px 14px rgba(37,99,235,.16)}
.schedule-single-day-details{margin-top:18px;padding-top:15px;border-top:1px solid #edf1f5}.schedule-single-day-details summary{cursor:pointer;color:#64748b;font-size:.82rem;font-weight:750;list-style:none;width:max-content}.schedule-single-day-details summary::-webkit-details-marker{display:none}.schedule-single-day-details summary:after{content:'  →';color:#475569}.schedule-single-day-details[open] summary{margin-bottom:14px;color:#334155}.schedule-single-day-details[open] summary:after{content:'  ↓'}
.schedule-upcoming-card{padding:24px;min-width:0}.schedule-upcoming-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.schedule-upcoming-head h2{margin:2px 0 0;font-size:1.2rem}.schedule-optional-badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eef2f7;color:#64748b;font-size:.66rem;font-weight:800;text-align:right}
.schedule-upcoming-card .schedule-mini-row{grid-template-columns:1fr auto;gap:5px 12px;padding:11px 0}.schedule-upcoming-card .schedule-mini-row .badge{grid-column:1/-1;justify-self:start;font-size:.68rem;padding:3px 7px}.schedule-empty-upcoming{display:grid;gap:4px;padding:16px 0;color:#64748b}.schedule-empty-upcoming strong{color:#334155;font-size:.9rem}.schedule-empty-upcoming span{font-size:.8rem;line-height:1.45}

@media(max-width:1180px){.schedule-planner-layout{grid-template-columns:1fr}.schedule-upcoming-card{display:none}.schedule-week-editor-head,.schedule-week-day{grid-template-columns:minmax(140px,.9fr) minmax(110px,.65fr) minmax(250px,1.35fr) minmax(140px,.8fr)}}
@media(max-width:760px){.schedule-week-planner-card{padding:20px}.schedule-planner-heading{flex-direction:column;gap:12px}.schedule-week-chip{text-align:left}.schedule-week-toolbar{align-items:flex-start;flex-direction:column;gap:6px}.schedule-copy-button{padding-left:0}.schedule-week-editor-head{display:none}.schedule-week-day{grid-template-columns:1fr auto;gap:10px 14px;padding:14px}.schedule-day-identity{grid-column:1}.schedule-work-toggle{grid-column:2;grid-row:1}.schedule-time-range{grid-column:1/-1}.schedule-day-state{grid-column:1/-1}.schedule-week-footer{align-items:stretch;flex-direction:column}.schedule-save-week{width:100%}}
@media(max-width:430px){.schedule-week-planner-card{padding:16px}.schedule-planner-heading h1{font-size:1.45rem}.schedule-week-day{padding:13px 12px}.schedule-time-range{grid-template-columns:1fr 12px 1fr;gap:5px}.schedule-time-range input[type=time]{padding:6px 7px}.schedule-work-toggle-label{display:none}}

/* Global replacement feature toggle */
.replacement-feature-toggle{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;margin:18px 0;border:1px solid #e2e8f0;border-radius:16px;background:var(--surface-soft,#f7f9fc)}
.replacement-feature-toggle p{margin:5px 0 0}.feature-disabled{opacity:.72}.feature-disabled select,.feature-disabled input{filter:saturate(.65)}
@media(max-width:640px){.replacement-feature-toggle{align-items:stretch;flex-direction:column}.replacement-feature-toggle button{width:100%}}

/* 10.164 — per-day work norm editor */
.work-norm-week-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}
.work-norm-week-grid label{display:grid;grid-template-columns:1fr auto;align-items:end;gap:6px 8px;padding:12px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}
.work-norm-week-grid label>span{grid-column:1/-1;font-weight:800;color:#334155}
.work-norm-week-grid input{min-width:0;width:100%}
.work-norm-week-grid small{color:#64748b;padding-bottom:10px}
@media(max-width:760px){.work-norm-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 10.168: keep weekly planner text readable in selected, inactive and locked rows. */
.schedule-week-day .schedule-day-identity span,.schedule-week-day .schedule-time-range label>span{color:#475569!important;opacity:1!important}
.schedule-week-day .schedule-time-range input[type=time]{color:#334155!important;-webkit-text-fill-color:#334155!important;opacity:1!important}
.schedule-week-day .schedule-time-range input[type=time]:disabled{color:#475569!important;-webkit-text-fill-color:#475569!important;opacity:1!important;background:#f8fafc!important}

/* 10.169: remaining WCAG AA contrast fixes in the weekly schedule. */
.sidebar-section-label{color:#94a3b8!important}
.schedule-week-summary>span{color:#334155!important}
.schedule-day-card-weekday,.schedule-day-card-month{color:#475569!important}
.schedule-day-card.schedule-overdue .schedule-day-card-weekday,
.schedule-day-card.schedule-overdue .schedule-day-card-month{color:#475569!important}
.schedule-week-day:not(.is-selected) .schedule-time-range label>span{color:#475569!important}
.schedule-week-day:not(.is-selected) .schedule-time-range input[type=time]:disabled,
.schedule-week-day.is-locked .schedule-time-range input[type=time]:disabled{color:#475569!important;-webkit-text-fill-color:#475569!important;opacity:1!important}

/* 10.170: HTML hidden must win over component display rules in the calendar editor. */
.calendar-custom-cycle[hidden], .calendar-anchor-field[hidden] { display: none !important; }

/* Flexible Saturday staffing */
.schedule-flex-building{min-width:150px;flex:1 1 160px}
.schedule-flex-building select{width:100%}
.schedule-flex-coverage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:14px 0 18px}
.schedule-flex-coverage-card{border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff}
.schedule-flex-coverage-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.schedule-flex-coverage-head>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.schedule-flex-coverage-meta{display:grid;gap:4px;margin-top:10px;font-size:.9rem}
.schedule-flex-coverage-card details{margin-top:10px}
.schedule-flex-coverage-card summary{cursor:pointer;font-weight:700}
.schedule-flex-participants{display:grid;gap:7px;margin-top:8px}
.schedule-flex-participants>div{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:7px 0;border-top:1px solid #e2e8f0}
@media(max-width:700px){.schedule-flex-coverage-grid{grid-template-columns:1fr}.schedule-flex-building{flex-basis:100%}}
.schedule-flex-admin-form{grid-template-columns:1.5fr 1fr .8fr .8fr 1.2fr;align-items:end}
.schedule-flex-admin-form .span-five{grid-column:1/-1}
.top-gap-half{margin-top:8px}
@media(max-width:900px){.schedule-flex-admin-form{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-flex-admin-form .span-five{grid-column:1/-1}}
@media(max-width:620px){.schedule-flex-admin-form{grid-template-columns:1fr}}
.schedule-own-day-card{border:1px solid #e2e8f0;border-radius:12px;padding:14px;margin:14px 0 18px;background:#fff;display:grid;gap:12px}
.schedule-own-day-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.schedule-own-day-main>div{display:grid;gap:3px}
.schedule-own-day-main strong{font-size:1.05rem}


/* 10.200: keep the complete schedule workspace inside narrow mobile viewports. */
@media(max-width:760px){
  .schedule-planner-layout,.schedule-week-planner-card,.schedule-week-form,.schedule-week-editor,
  .schedule-week-day,.schedule-calendar-panel,.schedule-board-card,.schedule-selected-head,
  .schedule-own-day-card,.schedule-attention-banner{min-width:0;max-width:100%}
  .schedule-selected-head{align-items:stretch;flex-direction:column}
  .schedule-selected-head .actions{justify-content:flex-start;flex-wrap:wrap;min-width:0;max-width:100%}
  .schedule-selected-head .badge{max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .schedule-single-day-details summary{width:auto;max-width:100%;overflow-wrap:anywhere}
  .schedule-calendar-actions,.schedule-calendar-actions form{min-width:0;max-width:100%}
  .schedule-calendar-actions form{flex-wrap:wrap}
  .schedule-calendar-actions .schedule-date-input{flex:1 1 150px;min-width:0;max-width:100%}
  .schedule-own-day-card form,.schedule-own-day-card .danger-btn{max-width:100%;min-width:0}
  .schedule-own-day-card .danger-btn{white-space:normal;overflow-wrap:anywhere}
}

/* Shared schedule: privacy-preserving team absence summary. */
.schedule-absence-card{border:1px solid #e2e8f0;border-radius:12px;padding:14px;margin:14px 0 18px;background:#fff;display:grid;gap:12px}
.schedule-absence-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.schedule-absence-head h4{margin:2px 0 4px}
.schedule-absence-list{display:grid;gap:8px}
.schedule-absence-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 12px;border:1px solid #edf2f7;border-radius:10px;background:#f8fafc}
.schedule-absence-person,.schedule-absence-meta{display:flex;align-items:center;gap:8px;min-width:0}
.schedule-absence-person{flex-wrap:wrap}
.schedule-absence-meta{justify-content:flex-end;flex-wrap:wrap;text-align:right}
@media(max-width:700px){
  .schedule-absence-head,.schedule-absence-row{align-items:stretch;flex-direction:column}
  .schedule-absence-meta{justify-content:flex-start;text-align:left}
}

/* Shared restricted dashboard (10.207) */
.kiosk-page { min-height: 100vh; background: var(--bg, #f8fafc); }
.kiosk-header { max-width: 1440px; margin: 0 auto; padding: 24px clamp(16px,3vw,36px); display:flex; align-items:center; justify-content:space-between; gap:20px; }
.kiosk-header h1 { margin:.2rem 0; }
.kiosk-container { display:grid; gap:20px; padding-bottom:48px; }
.kiosk-section-nav { position:sticky; top:8px; z-index:8; display:flex; flex-wrap:wrap; gap:8px; padding:10px; border:1px solid var(--border,#dbe3ec); border-radius:16px; background:rgba(255,255,255,.96); box-shadow:0 8px 24px rgba(15,23,42,.06); }
.kiosk-section-nav a { padding:9px 13px; border-radius:10px; text-decoration:none; font-weight:700; }
.kiosk-member-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:14px; }
.kiosk-member-card { border:1px solid var(--border,#dbe3ec); border-radius:16px; padding:16px; display:grid; gap:14px; min-width:0; background:#fff; }
.kiosk-member-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.kiosk-member-head > div { display:grid; gap:2px; min-width:0; }
.kiosk-member-name { font-size:1.1rem; }
.kiosk-member-meta { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.kiosk-member-meta > div { display:grid; gap:3px; min-width:0; }
.kiosk-member-meta strong { overflow-wrap:anywhere; }
.kiosk-primary-actions form, .kiosk-primary-actions button { width:100%; }
.kiosk-active-actions { display:grid; gap:10px; }
.kiosk-action-details { border-top:1px solid var(--border,#dbe3ec); padding-top:10px; }
.kiosk-action-details summary { cursor:pointer; font-weight:700; }
.kiosk-date-form { display:flex; align-items:end; flex-wrap:wrap; gap:10px; margin:12px 0 18px; }
.kiosk-date-form label { min-width:190px; }
.kiosk-absence-calendar { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:10px; }
.kiosk-absence-day { border:1px solid var(--border,#dbe3ec); border-radius:14px; padding:12px; min-height:100px; display:grid; align-content:start; gap:8px; background:#fff; }
.kiosk-absence-day.has-absence { box-shadow:inset 4px 0 0 #f59e0b; }
.kiosk-absence-day-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.kiosk-absence-person { display:grid; gap:2px; padding:7px 0; border-top:1px solid var(--border,#e5e7eb); }
.kiosk-absence-person strong { font-size:.85rem; }
.empty-state.compact { padding:10px 12px; }
@media (max-width: 720px) {
  .kiosk-header { align-items:flex-start; flex-direction:column; }
  .kiosk-header form, .kiosk-header button { width:100%; }
  .kiosk-member-grid { grid-template-columns:1fr; }
  .kiosk-member-meta { grid-template-columns:1fr; }
  .kiosk-section-nav { position:static; }
}

/* Collapsible leave/events UX (10.215) */
.page-section-details{padding:0;overflow:hidden}
.page-section-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 24px}
.page-section-summary::-webkit-details-marker,.record-action-details summary::-webkit-details-marker,.form-help-details summary::-webkit-details-marker,.leave-balance-summary::-webkit-details-marker{display:none}
.page-section-summary strong{font-size:1.45rem;letter-spacing:-.02em}
.page-section-summary .eyebrow{margin-bottom:5px}
.page-section-summary::after{content:'⌄';font-size:1.25rem;color:#64748b;transition:transform .15s ease}
.page-section-details[open]>.page-section-summary::after{transform:rotate(180deg)}
.page-section-details-body{padding:0 24px 24px;border-top:1px solid #edf1f5}
.details-toggle-label{display:none}
.compact-section-head{margin-top:18px;align-items:center}
.record-primary-actions{display:grid;gap:8px;margin-bottom:8px}
.record-action-details{min-width:210px}
.record-action-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc;font-weight:800;color:#334155;white-space:nowrap}
.record-action-details>summary::after{content:'+';font-size:1.05rem;color:#64748b}
.record-action-details[open]>summary{background:#eef2ff;border-color:#c7d2fe;color:#3730a3;border-radius:10px 10px 0 0}
.record-action-details[open]>summary::after{content:'−'}
.record-action-content{padding:12px;border:1px solid #dbe3ee;border-top:0;border-radius:0 0 12px 12px;background:#fff;min-width:300px}
.record-action-content>form+form,.record-action-content>form+.daily-replacements,.record-action-content>a+form{padding-top:10px;border-top:1px solid #edf1f5}
.compact-action-form{gap:8px}
.history-description{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-width:280px;line-height:1.4}
.form-help-details{border:1px solid #dbe3ee;border-radius:12px;background:#f8fafc;overflow:hidden}
.form-help-details>summary{list-style:none;cursor:pointer;padding:11px 14px;font-weight:800;color:#475569;display:flex;align-items:center;justify-content:space-between;gap:10px}
.form-help-details>summary::after{content:'+';color:#64748b}
.form-help-details[open]>summary::after{content:'−'}
.form-help-details>.alert,.form-help-details>p{margin:0;border:0;border-top:1px solid #dbe3ee;border-radius:0;padding:13px 14px}
.muted-help{margin-top:14px}
.leave-balance-panel{padding:0;overflow:hidden;margin-bottom:20px}
.leave-balance-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px}
.leave-balance-summary>span:first-child>strong{font-size:1.18rem}
.leave-balance-summary-values{display:flex;gap:24px;align-items:center}
.leave-balance-summary-values>span{display:grid;gap:2px;text-align:right}
.leave-balance-summary-values small{color:#64748b;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800}
.leave-balance-summary-values strong{font-size:1.15rem}
.leave-balance-summary::after{content:'Rozwiń +';font-size:.8rem;font-weight:800;color:#475569}
.leave-balance-panel[open]>.leave-balance-summary{border-bottom:1px solid #edf1f5}
.leave-balance-panel[open]>.leave-balance-summary::after{content:'Zwiń −'}
.collapsible-metrics{padding:20px 24px;margin:0}
.collapsible-metrics .metric-card{box-shadow:none}
@media(max-width:800px){
  .page-section-summary,.leave-balance-summary{padding:18px}
  .page-section-details-body{padding:0 18px 18px}
  .record-action-details{min-width:0;width:100%}
  .record-action-details>summary{white-space:normal;width:100%}
  .record-action-content{min-width:0;width:100%}
  .record-primary-actions,.record-primary-actions form,.record-primary-actions button{width:100%}
  .actions-cell{min-width:240px;display:grid;gap:8px}
  .history-description{max-width:220px}
  .leave-balance-summary{align-items:flex-start;flex-wrap:wrap}
  .leave-balance-summary-values{order:3;width:100%;justify-content:flex-start;gap:28px}
  .leave-balance-summary-values>span{text-align:left}
  .collapsible-metrics{padding:16px 18px}
}
@media(max-width:520px){
  .page-section-summary strong{font-size:1.2rem}
  .history-description{max-width:180px}
  .leave-balance-summary::after{content:'+'}
  .leave-balance-panel[open]>.leave-balance-summary::after{content:'−'}
}
.history-card{padding:0;overflow:hidden}
.history-section-details{display:block}
.history-section-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:#fff}
.history-section-summary::-webkit-details-marker{display:none}
.history-section-summary>span:first-child{display:grid;gap:1px}
.history-section-summary strong{font-size:1.28rem}
.history-section-summary::after{content:'⌄';font-size:1.2rem;color:#64748b;transition:transform .15s ease}
.history-section-details[open]>.history-section-summary{border-bottom:1px solid #edf1f5}
.history-section-details[open]>.history-section-summary::after{transform:rotate(180deg)}
.history-count{margin-left:auto;padding:4px 9px;border-radius:999px;background:#eef2ff;color:#4338ca;font-size:.76rem;font-weight:800;white-space:nowrap}
.history-section-content{padding:18px 24px 24px}
.history-section-hint{margin:0 0 12px}
@media(max-width:800px){.history-section-summary{padding:17px 18px}.history-section-content{padding:14px 18px 18px}.history-section-summary strong{font-size:1.12rem}}

/* Shared dashboard live presence sync (10.217) */
.kiosk-member-presence{display:flex;align-items:center;gap:8px;min-height:24px}
#kioskPresenceLiveStatus.kiosk-presence-stale{color:#b45309;font-weight:700}

/* 10.217 - rzeczywiste rozpoczęcie/zakończenie zdarzeń */
.event-runtime-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--border,#d9dee8);border-radius:14px;background:var(--surface-soft,#f8fafc)}
.event-runtime-card.compact{padding:10px 12px;margin-top:8px;flex-wrap:wrap}
.event-runtime-card .actions{margin-left:auto}
.kiosk-event-runtime{margin-top:14px;padding-top:12px;border-top:1px solid var(--border,#d9dee8)}
@media (max-width:720px){.event-runtime-card{align-items:stretch;flex-direction:column}.event-runtime-card .actions{margin-left:0}.event-runtime-card .actions form,.event-runtime-card .actions button{width:100%}}

/* 10.218 - filtrowanie list urlopów i nieobecności pracowników */
.absence-filter-card{margin:1rem 0 1.25rem}
.absence-filter-card .compact-section-head{margin-top:0;margin-bottom:14px}
.absence-filter-grid{display:grid;grid-template-columns:minmax(240px,2fr) repeat(2,minmax(170px,1fr));gap:12px;align-items:end}
.absence-filter-grid label{display:grid;gap:6px;font-weight:700}
.absence-filter-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:12px;min-height:20px}
.absence-filter-card input[aria-invalid="true"]{border-color:#dc2626;box-shadow:0 0 0 2px rgba(220,38,38,.08)}
@media(max-width:800px){.absence-filter-grid{grid-template-columns:1fr}.absence-filter-card .section-head{align-items:stretch}.absence-filter-card #absenceFilterReset{width:100%}}

/* 10.222: pending schedule changes remain editable/withdrawable instead of hard-locking the day. */
.schedule-day-state{flex-wrap:wrap}.schedule-day-state small{flex-basis:100%;padding-left:14px;color:#64748b;font-weight:600}.schedule-inline-withdraw{border:0;background:transparent;color:#b45309;padding:0;font:inherit;font-weight:800;text-decoration:underline;cursor:pointer}.schedule-inline-withdraw:hover{color:#92400e}.schedule-pending-request-row>div{display:grid;gap:2px}.schedule-pending-request-row form{margin:0}

/* 10.242: compact long absence/event lists in the admin panel. */
.absence-list-toggle-row{display:flex;justify-content:center;padding:14px 0 2px}.absence-list-toggle-row[hidden]{display:none!important}.absence-list-toggle-row .button{min-width:190px;justify-content:center}
