@charset "UTF-8";
/* OPTUM Personal: one shared system for all roles, languages and screen sizes. Colours live only in :root tokens. */
:root{--topic-general-ink:#425469;--topic-general-bg:#edf1f5;--topic-hours-ink:#254d91;--topic-hours-bg:#eaf1ff;--topic-leave-ink:#17614f;--topic-leave-bg:#e8f5ef;--topic-sickness-ink:#71429a;--topic-sickness-bg:#f3eafa;--topic-advance-ink:#765015;--topic-advance-bg:#fff3d9;--topic-deletion-ink:#55505f;--topic-deletion-bg:#efedf2;color-scheme:light;--brand:#cd1719;--brand-hover:#ab1113;--brand-soft:#fff1f1;--brand-line:#f6d9da;--brand-tint:#fffafa;--ink:#25272b;--text:#42464c;--muted:#646b74;--line:#e3e6ea;--canvas:#f4f5f7;--paper:#fff;--success:#216044;--success-bg:#edf7f0;--warning:#79501a;--warning-bg:#fff7e8;--warning-line:#efdeb9;--warning-edge:#ddb97e;--danger:#ae2025;--danger-bg:#fff0f0;--control-border:#7d8590;--control-border-hover:#5d646d;--button-border:#8a929c;--focus:#235da8;--info:#285690;--info-bg:#edf2fc;--neutral:#58616c;--neutral-bg:#eef0f3;--note:#526374;--note-bg:#edf2f7;--surface-subtle:#f7f8fa;--surface-hover:#f2f4f7;--chrome:#edeff2;--chrome-strong:#e0e4e9;--night:#00b0f0;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:22px;--radius:var(--r-lg);--shadow:0 4px 20px #18223505;--shadow-up:0 -4px 20px #17243806;--shadow-float:0 8px 30px #10172525;--shadow-segment:0 1px 3px rgb(24 34 53/.15);font-family:Arial,"Noto Sans",sans-serif;font-size:100%;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--text);line-height:1.5;padding-inline:env(safe-area-inset-left,0px) env(safe-area-inset-right,0px)}
button,input,select,textarea{font:inherit}button,input,select,textarea,a{touch-action:manipulation}button{cursor:pointer;border:0}button:disabled{cursor:wait;opacity:.6}#app[aria-busy=true] button:disabled{opacity:1;cursor:progress}button,a,input,textarea,select,summary{-webkit-tap-highlight-color:transparent}a{color:var(--brand)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
h1,h2,h3,p{margin:0}h1{font-size:clamp(1.6rem,3vw,2.05rem);font-weight:750;letter-spacing:-.035em;line-height:1.2;color:var(--ink);overflow-wrap:break-word}h2{font-size:1.2rem;line-height:1.35;color:var(--ink);letter-spacing:-.02em}h3{font-size:1rem;color:var(--ink)}p+p{margin-top:10px}bdi,.mono{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.small{font-size:.875rem}.muted{color:var(--muted)}.ui-icon{width:21px;height:21px;flex:0 0 21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.eyebrow{font-size:.8125rem;font-weight:700;letter-spacing:.02em}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:absolute;inset-block-start:-100px;inset-inline-start:12px;z-index:100;background:var(--paper);padding:12px}.skip-link:focus{inset-block-start:8px}
/* Navigation and identity */
.demo-bar{min-height:40px;display:flex;flex-wrap:wrap;align-items:center;gap:0 12px;padding:5px 28px;padding-top:max(5px,env(safe-area-inset-top,0px));background:var(--chrome);color:var(--neutral);font-size:.8125rem;border-bottom:1px solid var(--line)}.demo-tag{font-size:.75rem;font-weight:700;background:var(--chrome-strong);border-radius:5px;padding:3px 7px}.demo-bar>.link{margin-inline-start:auto;font-size:.8125rem;color:var(--text)}.link{display:inline-flex;align-items:center;min-height:44px;background:none;color:var(--brand);font-weight:600;text-underline-offset:4px}
.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:calc(100vh - 50px);min-height:calc(100dvh - 50px)}.sidebar{background:var(--paper);border-inline-end:1px solid var(--line);padding:35px 19px 24px;display:flex;flex-direction:column}.brand{padding:0 9px 35px}.brand-logo{display:block;width:100%;height:auto}.brand-sub{display:block;text-align:center;font-size:.75rem;font-weight:700;letter-spacing:.16em;color:var(--muted);margin-top:16px}.nav-caption{font-size:.8125rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--muted);padding:0 15px 12px}.nav{display:flex;flex-direction:column;gap:8px}.nav button{position:relative;display:flex;align-items:center;gap:8px;text-align:start;border-radius:11px;padding-block:14px;padding-inline:10px 8px;min-height:52px;background:transparent;color:var(--muted);font-size:.8125rem;font-weight:600;line-height:1.4;overflow-wrap:break-word;hyphens:auto}.nav button.active{color:var(--brand);background:var(--brand-soft);box-shadow:inset 3px 0 var(--brand);font-weight:800}.nav button.active .ui-icon{stroke-width:2.3}.nav-count{margin-inline-start:auto;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--brand);color:var(--paper);font-size:.75rem;font-weight:700;line-height:1;display:grid;place-items:center;font-variant-numeric:tabular-nums}.sidebar-bottom{margin-top:auto;padding:50px 14px 0}.sidebar-bottom p{font-size:.8125rem;line-height:1.7;color:var(--muted);overflow-wrap:break-word}.content-area{min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:84px;padding:18px 40px;border-bottom:1px solid var(--line);background:var(--paper)}.account-name{display:grid;gap:2px;min-width:0;font-size:.88rem}.account-name strong{overflow-wrap:anywhere}.account-name span{font-size:.8125rem;color:var(--muted)}.language-picker{display:flex;align-items:center;gap:12px;min-width:0;font-size:.8125rem;color:var(--muted)}.language-picker .ui-icon{width:18px;height:18px;flex-basis:18px;color:var(--muted)}.language-picker select{font-size:max(1rem,16px);min-height:46px;max-width:190px;padding-block:10px;padding-inline:12px 32px;border:1px solid var(--control-border);border-radius:10px;color:var(--ink);background:var(--paper)}.mobile-brand{display:none}.page{padding:32px 40px 44px;max-width:1280px;margin-inline:0 auto;padding-bottom:calc(44px + env(safe-area-inset-bottom,0px))}.app-footer{padding:8px 24px 24px;font-size:.8125rem;color:var(--muted);text-align:center}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 24px}
.page-head>div{min-width:0}.page-head p{margin-top:8px;color:var(--muted);font-size:.94rem}#page-title:focus{outline:none}
/* Shared cards, actions and forms */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;min-width:0}.card-inner{padding:26px}.card-footer{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:18px 26px;border-top:1px solid var(--line);flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 18px;min-height:48px;max-width:100%;border:1px solid transparent;border-radius:var(--r-md);line-height:1.4;font-size:.95rem;font-weight:700;white-space:normal;text-align:center;text-decoration:none;transition:background .14s,border-color .14s}.button span{min-width:0;overflow-wrap:anywhere}.button-primary{background:var(--brand);color:var(--paper)}.button-secondary{background:var(--paper);border-color:var(--button-border);color:var(--ink)}.button-full{width:100%}.button-danger{background:var(--paper);border-color:var(--danger);color:var(--danger)}.button-back{padding:0;background:transparent;border:0;min-height:44px;margin-block-end:12px;color:var(--muted);justify-content:flex-start}.confirmed{font-size:.85rem;font-weight:600;color:var(--success)}
.button[data-busy]::before{content:"";flex:0 0 18px;width:18px;height:18px;border:2px solid currentColor;border-inline-end-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}
.field{display:flex;flex-direction:column;gap:8px;min-width:0;font-size:.875rem;font-weight:700;color:var(--ink)}.field input,.field textarea,.field select{display:block;width:100%;min-width:0;min-height:50px;padding:12px 13px;border:1px solid var(--control-border);border-radius:10px;background:var(--paper);color:var(--ink);font-size:max(1rem,16px);font-weight:400}.field textarea{min-height:110px;resize:vertical}.field small{font-size:.8125rem;font-weight:400;line-height:1.6;color:var(--muted)}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-card{max-width:920px}.form-section{padding:26px;border-bottom:1px solid var(--line)}.form-section:last-child{border:0}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding:22px 26px;border-top:1px solid var(--line);background:var(--surface-subtle)}.form-error{padding:16px 18px;margin-bottom:20px;border-inline-start:4px solid var(--danger);border-radius:8px;background:var(--danger-bg);color:var(--danger);overflow-wrap:anywhere}.form-error:focus{outline:3px solid var(--focus);outline-offset:3px}.form-error>.button{display:flex;margin-top:12px}.field-error{margin:6px 0 0;color:var(--danger);font-size:.875rem;font-weight:600}.field [aria-invalid=true]{border:2px solid var(--danger)}.checkbox-label input[aria-invalid=true]{outline:2px solid var(--danger);outline-offset:2px}.checkbox-label{display:flex;align-items:flex-start;gap:12px;min-height:48px;font-size:.95rem;cursor:pointer}.checkbox-label input{flex:0 0 28px;width:28px;height:28px;margin:0;accent-color:var(--brand)}.checkbox-label span{min-width:0;overflow-wrap:anywhere;padding-top:3px}.preview-space{margin-top:20px}.section-actions,.split-actions{display:flex;gap:12px;flex-wrap:wrap}.section-actions{margin-bottom:24px}.split-actions{justify-content:flex-end}.subtle-note{margin-top:18px;font-size:.8125rem;color:var(--muted);line-height:1.65}.empty{padding:35px}.empty p{margin-top:10px;color:var(--muted)}
/* Show/hide password: the toggle sits inside the field edge and is not part of the label. */
.pw-field{position:relative}.pw-field input{padding-inline-end:54px}.pw-toggle{position:absolute;inset-inline-end:2px;inset-block-end:2px;width:48px;height:46px;display:grid;place-items:center;background:transparent;color:var(--muted);border-radius:10px}.pw-toggle .ui-icon{width:22px;height:22px}.pw-rule{display:flex;align-items:flex-start;gap:8px;margin-top:-10px;font-size:.8125rem;color:var(--muted);line-height:1.6}.pw-rule .ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:2px;visibility:hidden}.pw-rule.met{color:var(--success)}.pw-rule.met .ui-icon{visibility:visible}
/* Assignment landing: numbers first, work and break are separate */
.assignment-list{display:grid;gap:24px;max-width:920px}.assignment-name{font-size:1.5rem;margin-top:9px;overflow-wrap:anywhere}.assignment-site{margin-top:5px;color:var(--muted);overflow-wrap:anywhere}.time-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px}.time-metric{display:grid;grid-template-columns:1fr auto;gap:5px 12px;padding:20px;border:1px solid var(--line);border-radius:13px;background:var(--surface-subtle);min-width:0}.time-metric>.ui-icon{grid-column:2;grid-row:1;color:var(--muted)}.time-metric>span{grid-column:1;grid-row:1;font-size:.82rem;font-weight:600;color:var(--muted);overflow-wrap:anywhere}.time-metric>strong{grid-column:1/-1;font-size:2.4rem;line-height:1.25;letter-spacing:-.05em;color:var(--ink);overflow-wrap:anywhere}.time-metric small{font-size:.85rem;font-weight:500;letter-spacing:0;color:var(--muted)}.work-metric{background:var(--brand-soft);border-color:var(--brand-line)}.work-metric>.ui-icon,.work-metric>strong{color:var(--brand)}.week-total-note{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:.85rem;color:var(--muted);flex-wrap:wrap}.week-total-note .ui-icon{width:18px;height:18px;flex-basis:18px}.home-primary{margin-top:24px}.home-primary .button{width:100%;min-height:56px;font-size:1rem}.shift-band{display:flex;gap:24px;flex-wrap:wrap;margin:26px 0 22px;padding:22px 0;border-block:1px solid var(--line)}.shift-band>div:first-child{flex-shrink:0;max-width:100%}.shift-band .label{display:block;font-size:.8125rem;color:var(--muted);margin-top:5px}.shift-time{font-size:1.65rem;font-weight:700;color:var(--ink);white-space:normal}.shift-days{flex:1 1 200px;min-width:0;border-inline-start:1px solid var(--line);padding-inline-start:24px;align-self:center}.shift-days strong{font-size:.9rem;overflow-wrap:anywhere}.details-list{display:grid;gap:18px}.detail strong{display:block;font-size:.8125rem;color:var(--muted)}.detail span{display:block;margin-top:3px;font-size:.94rem;color:var(--ink);overflow-wrap:anywhere}.instructions{margin-top:22px;padding:15px 17px;background:var(--surface-subtle);border-radius:10px;font-size:.88rem;overflow-wrap:anywhere}
/* Employee week and direct day correction */
.employee-report{display:grid;gap:20px;max-width:920px}.report-heading{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin-bottom:20px}.report-heading>span:first-child{font-weight:600;overflow-wrap:anywhere}.report-heading bdi{font-size:.85rem;color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:4px;min-height:28px;max-width:100%;padding:4px 9px;border-radius:var(--r-sm);font-size:.8125rem;font-weight:700;line-height:1.4;white-space:normal}.pill .ui-icon{width:14px;height:14px;flex-basis:14px;stroke-width:2}.pill.neutral{background:var(--neutral-bg);color:var(--neutral)}.pill.success{background:var(--success-bg);color:var(--success)}.pill.info{background:var(--info-bg);color:var(--info)}.pill.warning{background:var(--warning-bg);color:var(--warning)}.pill.danger{background:var(--danger-bg);color:var(--danger)}.pill-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.state-banner{max-width:920px;padding:14px 17px;border-radius:11px;margin-bottom:18px;background:var(--note-bg);color:var(--note);font-size:.85rem;line-height:1.6;overflow-wrap:anywhere}.state-banner.warning{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning-line)}.state-banner .checkbox-label{margin-top:14px}.state-banner p{margin-top:5px}.state-banner>.button{display:flex;margin-top:12px}.choice-intro h2{font-size:1.3rem}.answer-first{margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--line)}.answer-first .field{margin-top:0}.choice-intro>p{margin-top:10px}.choice-intro>.quick-help{font-size:.875rem;color:var(--muted);line-height:1.65;margin-top:12px}.week-plan{margin:0 0 20px}.week-plan>strong{display:block;margin-top:12px;font-size:1rem}.week-plan .time-metrics{margin-top:20px}.choice-actions{display:grid;gap:10px;margin-top:18px}.choice-actions>.button{width:100%;min-height:56px;font-size:1rem}.choice-progress{color:var(--muted);font-size:.8125rem}.save-state{padding:11px 14px;background:var(--success-bg);color:var(--success);border-radius:9px;font-size:.875rem}.save-state[hidden]{display:none}.save-state.unsaved{background:var(--warning-bg);color:var(--warning)}
.week-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:22px}.overview-cell{display:flex;min-width:0}.overview-cell>.overview-day{flex:1 1 auto;width:100%}.overview-day{display:flex;flex-direction:column;gap:9px;min-width:0;text-align:start;min-height:102px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink);line-height:1.45;overflow-wrap:anywhere}.overview-date{display:flex;flex-wrap:wrap;gap:4px 8px;justify-content:space-between;align-items:baseline;font-size:.8125rem}.overview-date bdi{color:var(--muted);font-size:.8125rem}.overview-status{display:flex;gap:5px;align-items:flex-start;font-size:.8125rem;font-weight:600}.overview-status .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}.overview-hours{font-size:.8125rem;font-weight:400;color:var(--muted)}.overview-day.planned,.overview-day.dayOff{background:var(--surface-subtle);color:var(--muted);border-style:dashed}.overview-day.dayRecorded .overview-status{color:var(--success)}.overview-day.dayAdjusted .overview-status{color:var(--info)}.overview-day.needsSelection .overview-status,.overview-day.dayUnsaved .overview-status{color:var(--warning)}.overview-day.dayUnsaved{border-color:var(--warning-edge)}.separate-pause-note{font-size:.8125rem;color:var(--muted);line-height:1.6}
/* Native disclosure with one consistent chevron */
summary{cursor:pointer;font-weight:650;min-height:48px;list-style:none;display:flex;align-items:center;gap:10px;overflow-wrap:anywhere}summary::-webkit-details-marker{display:none}summary::after{content:"";flex:0 0 9px;height:9px;margin-inline-start:auto;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}details[open]>summary::after{transform:rotate(-135deg)}.disclosure>summary:focus-visible{outline-offset:-4px;border-radius:inherit}
.day-cards{padding:18px;display:grid;gap:14px}.day-card{border:1px solid var(--line);border-radius:12px;padding:20px;min-width:0}.day-title,.day-plan{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.day-title>div{display:grid;gap:3px}.day-title small{font-size:.8125rem;color:var(--muted)}.day-state{font-size:.8125rem;color:var(--muted);background:var(--neutral-bg);padding:6px 9px;border-radius:7px;max-width:100%;overflow-wrap:anywhere}.day-state.chosen{color:var(--success);background:var(--success-bg)}.day-plan{margin-top:14px}.day-plan>span{font-size:.83rem;color:var(--muted)}.day-plan .button{font-size:.82rem}.future-day{max-width:250px;font-size:.8125rem}.day-fields .preview-space>.button{width:100%}.optional-note summary{color:var(--muted);font-size:.87rem}.optional-note[open] summary{margin-bottom:10px}.employee-actions{flex-direction:column}.employee-actions .button{width:100%;min-height:52px}.employee-actions>.button-secondary{background:transparent}.disclosure>summary{padding:16px 24px}.disclosure[open]>summary{border-bottom:1px solid var(--line)}.review-days{margin:0;padding:0;list-style:none}.review-days li{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:18px 0;border-bottom:1px solid var(--line)}.review-days li>div{display:grid;gap:3px}.review-days small{font-size:.8125rem;color:var(--muted)}.review-days li>strong{font-size:.98rem;overflow-wrap:anywhere}.review-days p{flex-basis:100%;font-size:.86rem;color:var(--muted);overflow-wrap:anywhere}.review-total{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:20px 0;margin-top:16px}.review-total span{font-size:.9rem;font-weight:600}.review-total strong{font-size:2rem;color:var(--ink)}.break-total{margin-top:0;border-top:1px solid var(--line);padding:14px 0}.break-total strong{font-size:1.4rem}.readonly-note,.review-callout{padding:15px 17px;background:var(--surface-subtle);border-radius:10px;margin-top:16px;overflow-wrap:anywhere;white-space:pre-wrap}.history{padding-inline-start:20px;margin:0;font-size:.8125rem;color:var(--muted);overflow-wrap:anywhere}.history li+li{margin-top:14px}.history strong{color:var(--ink)}
/* Office and lists */
.current-week-actions,.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:20px}.report-grid .card-inner>.button{margin-top:20px;width:100%}.summary-line{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.summary-line h2{font-size:1.15rem;overflow-wrap:anywhere}.inline-summary{display:flex;gap:20px;margin-top:18px}.inline-summary>div{display:grid;gap:5px}.inline-summary span{font-size:.8125rem;color:var(--muted)}.inline-summary strong{font-size:1.7rem;color:var(--ink)}
/* Filters are a segment control: white surface and a red underline for the chosen segment, never a red main button. */
.filter-bar{display:flex;width:fit-content;max-width:100%;flex-wrap:wrap;gap:4px;padding:4px;background:var(--neutral-bg);border-radius:12px;margin-bottom:22px}.filter-bar button{border:0;background:transparent;color:var(--text);min-height:44px;padding:10px 14px;border-radius:9px;font-size:.875rem;font-weight:600}.filter-bar button[aria-pressed=true]{background:var(--paper);color:var(--ink);font-weight:700;box-shadow:var(--shadow-segment),inset 0 -3px var(--brand)}
.office-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:22px}.stack{display:grid;gap:20px;min-width:0;align-content:start}.table-wrap{position:relative;overflow:auto;max-width:100%}.table{border-collapse:collapse;width:100%;font-size:.875rem;text-align:start}.table th,.table td{padding:14px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:start;overflow-wrap:break-word}.table .pill{overflow-wrap:break-word}.table .pill>span{min-width:0}.table .num{text-align:end;font-variant-numeric:tabular-nums}.table th{font-size:.8125rem;color:var(--muted);background:var(--surface-subtle);font-weight:700}.table th:first-child{min-width:105px}.table td:last-child{min-width:115px}.management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.records-list{margin:10px 0 0;padding:0;list-style:none}.records-list li{padding:18px 0;border-bottom:1px solid var(--line);display:grid;gap:5px;overflow-wrap:anywhere}.records-list li:last-child{border:0}.records-list li>span{font-size:.85rem;color:var(--muted)}.days-picker{display:flex;gap:8px;flex-wrap:wrap;border:0;padding:0;margin:24px 0}.days-picker legend{font-size:.85rem;font-weight:700;margin-bottom:10px}.days-picker label{display:flex;align-items:center;gap:8px;min-height:48px;padding:9px 12px;background:var(--neutral-bg);border:1px solid var(--control-border);border-radius:8px;font-size:.83rem}.days-picker input{width:20px;height:20px;accent-color:var(--brand)}
/* Sign-in, feedback and accessibility */
.login-shell{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:35px 16px;border-top:5px solid var(--brand)}.login-card{width:100%;min-width:0;max-width:470px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-xl);padding:36px;box-shadow:var(--shadow)}.login-logo{display:block;width:245px;max-width:100%;height:auto;margin:0 auto 26px}.login-card h1{font-size:1.65rem;margin-top:20px;overflow-wrap:anywhere}.login-card>p{margin-top:12px;font-size:.9rem;color:var(--muted)}.login-card form{display:grid;gap:20px;margin:26px 0}
/* Language comes first on sign-in screens: globe, label, the word "language" in every offered language, then the choice. */
.login-card>.language-picker{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px 8px;margin-bottom:24px;font-size:.875rem;font-weight:700;color:var(--ink)}.login-card .language-picker>:is(select,.language-words){grid-column:1/-1}.login-card .language-picker select{width:100%;max-width:none;font-weight:400}.language-words{font-size:.8125rem;font-weight:400;line-height:1.7;color:var(--muted);overflow-wrap:anywhere}.language-words bdi{white-space:nowrap}
.loading-screen{min-height:100vh;min-height:100dvh;display:grid;place-content:center;gap:30px;text-align:center;padding-inline:16px}.loading-screen img{width:240px;max-width:80vw;margin-inline:auto}.boot-error{display:grid;gap:12px;justify-items:center;max-width:420px}.boot-error[hidden]{display:none}.boot-error p{margin:0;color:var(--ink)}
.notice{position:fixed;inset-block-end:24px;inset-inline-start:50%;transform:translateX(-50%);z-index:60;display:flex;align-items:flex-start;gap:8px;padding:6px 6px 6px 18px;padding-inline:18px 6px;width:max-content;max-width:min(90vw,590px);border-radius:12px;background:var(--ink);color:var(--paper);font-size:.9rem;box-shadow:var(--shadow-float);overflow-wrap:anywhere}.notice>p{margin:0;padding-block:8px;flex:1;min-width:0}.notice-close{flex:0 0 44px;min-height:44px;background:transparent;color:var(--paper);font-size:1.4rem;line-height:1;border-radius:8px}.notice-close:focus-visible{outline-color:var(--paper);outline-offset:-3px}.notice[hidden]{display:none}[dir=rtl] .notice{transform:translateX(50%)}[dir=rtl] .nav button.active{box-shadow:inset -3px 0 var(--brand)}[dir=rtl] .icon-back{transform:scaleX(-1)}
@media(min-width:1400px){.week-overview{grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(max-width:1100px){.shell{grid-template-columns:236px minmax(0,1fr)}.sidebar{padding-inline:14px}.page{padding-inline:26px}.topbar{padding-inline:26px}.week-overview{grid-template-columns:repeat(3,minmax(0,1fr))}.card-inner,.form-section{padding:22px}}
@media(max-width:900px){html{scroll-padding-block-end:var(--nav-reserve,calc(96px + env(safe-area-inset-bottom,0px)))}.shell{display:block}.sidebar{padding:0;border:0;background:transparent}.sidebar>.brand,.sidebar>.nav-caption,.sidebar-bottom{display:none}.nav{position:fixed;inset-inline:0;inset-block-end:0;z-index:40;display:flex;flex-direction:row;gap:8px;padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px));background:var(--paper);border-top:1px solid var(--line);box-shadow:var(--shadow-up)}.nav button{flex:1;min-width:0;flex-direction:column;justify-content:center;gap:4px;min-height:58px;padding:7px 10px;text-align:center;border-radius:10px}.nav button.active,[dir=rtl] .nav button.active{box-shadow:inset 0 3px 0 var(--brand)}.nav .ui-icon{width:24px;height:24px;flex-basis:24px}.nav-count{position:absolute;inset-block-start:4px;inset-inline-start:calc(50% + 6px);margin:0}.mobile-brand{display:block;max-width:155px}.mobile-brand img{display:block;width:100%;height:auto}.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 22px;padding:18px 24px;min-height:0}.topbar>.account-name{grid-row:2;grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:.8125rem;border-top:1px solid var(--line);padding-top:10px}.topbar>.language-picker{grid-row:1;grid-column:2;gap:6px}.topbar>.language-picker>span{display:none}.language-picker select{max-width:180px}.page{padding:26px 24px 24px}.app-footer{padding-bottom:calc(var(--nav-reserve,calc(96px + env(safe-area-inset-bottom,0px))) + 24px)}.demo-bar{padding-inline:20px;min-height:38px}.demo-bar .caption-extra{display:none}.demo-bar>.link{min-height:44px}.week-overview{grid-template-columns:repeat(4,minmax(0,1fr))}.notice{inset-block-end:calc(var(--nav-reserve,calc(96px + env(safe-area-inset-bottom,0px))) + 4px)}}
@media(max-width:600px){.topbar{padding:15px 18px;gap:10px 14px}.mobile-brand{max-width:142px}.employee-shell .topbar{padding-block:10px}.employee-shell .mobile-brand{max-width:118px}.language-picker select{max-width:150px;padding-inline:10px 22px}.page{padding:22px 16px 20px}.page-head{margin-bottom:18px}.page-head p{font-size:.875rem}.page-head h1{font-size:1.6rem}.card{border-radius:15px}.card-inner,.form-section{padding:20px}.card-footer{padding:16px 20px}.time-metric{padding:15px 13px;gap:6px}.time-metric>strong{font-size:2.1rem}.time-metric>span{font-size:.8125rem}.time-metric small{font-size:.8125rem}.time-metric>.ui-icon{width:18px;height:18px}.week-total-note{font-size:.8125rem}.choice-intro h2{font-size:1.22rem}.choice-intro>.quick-help{font-size:.8125rem}.week-overview{grid-template-columns:repeat(auto-fill,minmax(min(100%,7em),1fr))}.time-metrics{grid-template-columns:repeat(auto-fill,minmax(min(100%,7em),1fr))}.overview-day{min-height:92px;padding:12px}.overview-date{font-size:.85rem}.field-grid,.field-grid.three{grid-template-columns:minmax(0,1fr);gap:16px}.shift-band{gap:18px}.shift-days{flex-basis:100%;border:0;padding:0}.assignment-name{font-size:1.35rem}.report-heading{gap:9px;font-size:.85rem}.report-heading bdi{font-size:.8125rem}.report-heading>span:first-child:not(.pill){flex-basis:100%}.state-banner{font-size:.8125rem;padding:12px 14px;margin-bottom:14px}.checkbox-label{font-size:.875rem}.choice-actions>.button,.home-primary .button{font-size:.95rem;min-height:56px}.day-cards{padding:12px}.day-card{padding:16px}.day-plan>.button{min-width:130px}.form-actions{padding:18px 20px}.form-actions>.button{width:100%}.management-grid{grid-template-columns:minmax(0,1fr)}.section-actions>.button{flex:1 1 160px}.table th,.table td{padding:12px 9px}.table{font-size:.8125rem}.review-days li>strong{font-size:.9rem}.review-total strong{font-size:1.7rem}.break-total strong{font-size:1.3rem}.login-card{padding:28px 22px}.demo-bar{padding-inline:14px}.nav{gap:5px;padding-inline:10px}.nav button{padding-inline:7px}.notice{font-size:.875rem;max-width:calc(100vw - 30px)}}
@media(max-width:360px){.page{padding-inline:12px}.topbar{padding-inline:14px;gap:10px}.mobile-brand{max-width:120px}.employee-shell .mobile-brand{max-width:104px}.language-picker select{max-width:132px}.card-inner,.form-section{padding:17px}.time-metrics{gap:8px}.time-metric{padding:13px 11px}.time-metric>strong{font-size:1.85rem}.overview-day{padding:10px}.day-plan>.button{width:100%}.login-card{padding:24px 20px}.nav{gap:3px;padding-inline:6px}.nav button{padding-inline:4px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.button[data-busy]::before{animation:none;border-style:dotted}}
/* Hover only where a pointer can hover, so a tapped state does not stick on touch screens. */
@media(hover:hover){.nav button:hover{background:var(--surface-hover)}.nav button.active:hover{background:var(--brand-soft)}.button-primary:hover{background:var(--brand-hover)}.button-secondary:hover{background:var(--surface-hover);border-color:var(--control-border-hover)}.button-danger:hover{background:var(--danger-bg)}.button-back:hover{color:var(--ink)}.overview-day:is(button):hover{border-color:var(--brand);background:var(--brand-tint)}.field :is(input,textarea,select):hover,.language-picker select:hover{border-color:var(--control-border-hover)}.filter-bar button:hover{color:var(--ink)}}

input,textarea,select,button,summary{scroll-margin-block-start:18px}

.nav button>span{min-width:0;max-width:100%;hyphens:auto}
/* WP1: the nav counter is a pill sized in em, so one digit stays round and "11" or "99+" stay inside it at 200 % text. */
:is(.nav,.office-subnav) .nav-count{flex:0 0 auto;min-width:1.84em;height:1.84em;padding:0 .5em;border-radius:.92em}
/* WP1: on desktop the navigation stays in view on long office pages; if it is taller than the window it scrolls inside (padding keeps focus rings visible) and covers the local note below it. */
@media(min-width:901px) and (min-height:600px){.sidebar .nav{position:sticky;top:16px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;padding:6px;margin:-6px;background:var(--paper);z-index:1}}
/* WP1: data-heavy office views (lists, review, timesheets, payroll matrix) may use more width on large screens. */
.office-shell .page.page-wide{max-width:1680px}

/* Account access: one focused action, no overflowing personal links. */
.login-help{margin-block:1.5rem;font-size:.9rem;color:var(--muted)}
.login-help summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--brand)}
.login-help p{line-height:1.6}
[name="accessLink"]{font-family:monospace;font-size:.875rem;min-width:0;width:100%}

/* Requests are individual cases, with a readable original and office response. */
.home-support,.request-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.request-choices>.button{min-height:76px;text-align:start;justify-content:flex-start}
.request-detail-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px}
.request-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}
.request-dates{font-size:1.1rem;font-weight:700;margin-block:16px}
.office-response{border-inline-start:3px solid var(--brand);padding-inline-start:18px}
.request-decision{font-weight:700;margin-top:12px}
@media(max-width:900px){.request-detail-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.home-support,.request-choices{grid-template-columns:minmax(0,1fr)}.request-choices>.button{min-height:56px}.office-shell .nav button{font-size:.75rem;padding-inline:4px}}

.attachment-list{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:14px}
.attachment-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px}
.attachment-list li>div{display:grid;gap:5px;min-width:0;flex:1 1 180px}.attachment-list strong{overflow-wrap:anywhere}
.attachment-list a{text-decoration:none;font-size:.875rem}.field input[type=file]{font-size:.82rem;padding:12px 8px}.field input::file-selector-button{padding:8px;border:0;border-radius:5px;margin-inline-end:7px}

/* Native capture needs a conscious tap. Both sources share one reviewed upload. */
.evidence-choices{display:grid;gap:12px}.evidence-choice{position:relative;display:block;min-width:0;cursor:pointer}
.evidence-choice>.button{width:100%;justify-content:flex-start;text-align:start;min-height:56px}
.evidence-input{position:absolute;width:1px;height:1px;opacity:0;inset-inline-start:8px;inset-block-start:8px}
.evidence-input:focus-visible+.button{outline:3px solid var(--focus);outline-offset:3px}
.evidence-preview{padding:18px;background:var(--canvas);border:1px solid var(--line);border-radius:12px;margin-top:20px}
.evidence-photo{display:block;width:100%;max-height:480px;object-fit:contain;background:var(--paper);border:1px solid var(--line);border-radius:8px;margin-top:18px;image-orientation:from-image}
.evidence-filename{font-size:.85rem;overflow-wrap:anywhere;margin-top:14px;color:var(--ink)}
#evidence-title:focus{outline:none}

/* v0.2.0: reminders, office task overview, holidays, hours hint, corrections, MFA, export */
.reminders,.office-overview{max-width:920px;margin-bottom:24px;border-top:4px solid var(--brand)}
.reminder-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:0}
.reminder{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.reminder>div{display:grid;gap:3px;min-width:0;flex:1 1 220px}
.reminder>div>span{font-size:.85rem;color:var(--muted)}
.reminder>.button{flex:0 0 auto}
.overview-block+.overview-block{margin-top:22px}
.overview-block h3{font-size:1rem;color:var(--ink);margin-top:6px}
.office-overview .state-banner{margin:14px 0 0}
.overview-holiday{font-size:.8125rem;font-weight:600;color:var(--warning);line-height:1.35}
.day-holiday{margin:8px 0 0;font-size:.8125rem;font-weight:600;color:var(--warning)}
.review-days small+small{display:block;color:var(--warning)}
.hours-hint{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:8px;font-size:.85rem;color:var(--ink)}
.hours-hint:empty{display:none}
.hours-meant{font-weight:700;color:var(--warning)}
.button-small{min-height:44px;padding:8px 12px;font-size:.85rem}
.attachment-badges{display:flex;flex-wrap:wrap;gap:6px}
.attachment-badges:empty{display:none}
.attachment-actions{display:flex;flex-wrap:wrap;gap:8px}
.attachment-delete{flex-basis:100%;display:grid;gap:12px}
.employment-box{border-top:1px solid var(--line)}
.employment-box h3{font-size:1rem;color:var(--ink)}
.records-list li>.button{justify-self:start;margin-top:6px;min-height:44px;padding:8px 14px}
.recovery-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:18px 0;padding-inline-start:24px;font-size:1rem}
.recovery-codes code,.mfa-secret code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em;overflow-wrap:anywhere}
.mfa-secret{margin:14px 0;padding:12px 14px;background:var(--canvas);border:1px solid var(--line);border-radius:10px;font-size:1rem}
.steps{margin:14px 0;padding-inline-start:22px;display:grid;gap:6px}
#mfa-panel h2:focus{outline:none}
#mfa-panel .card-inner>p,#mfa-panel .card-inner>.field,#mfa-panel .card-inner>.pw-field,#mfa-panel .card-inner>.mfa-secret{margin-top:14px}
#mfa-panel .card-inner>p+p{margin-top:10px}
@media(max-width:600px){.reminder>.button{width:100%}.recovery-codes{grid-template-columns:minmax(0,1fr)}}

/* v0.3.0: fonts per script. System fonts only; no external font requests. */
:root:is(:lang(ar),:lang(fa),:lang(ps)){font-family:"Noto Sans Arabic","Noto Naskh Arabic","Segoe UI",Tahoma,"Geeza Pro",Arial,sans-serif;font-size:106.25%}
:root:is(:lang(ar),:lang(fa),:lang(ps)) body{line-height:1.7}
:root:lang(ur){font-family:"Noto Nastaliq Urdu","Noto Sans Arabic",Tahoma,Arial,sans-serif;font-size:106.25%}
:root:lang(ur) body{line-height:2}:root:lang(ur) .pill{line-height:1.6}
:root:lang(ur) :is(h1,h2,h3,.button,.nav button,.overview-day,.day-state,.time-metric>strong,summary){line-height:1.9}
:root:lang(hi) body{font-family:"Noto Sans Devanagari","Nirmala UI","Kohinoor Devanagari",Mangal,Arial,sans-serif;line-height:1.7}
:root:is(:lang(ar),:lang(fa),:lang(ps),:lang(ur),:lang(hi)) :is(h1,h2,h3,.eyebrow,.nav-caption,.brand-sub,.time-metric>strong){letter-spacing:normal;text-transform:none}

/* Windows high contrast: state must not rely on background colour or shadows. */
@media(forced-colors:active){.nav button.active,.filter-bar button[aria-pressed=true]{outline:3px solid Highlight;outline-offset:-3px}.pill,.state-banner,.day-state,.nav-count,.notice{border:1px solid CanvasText}.button[data-busy]::before{border-color:CanvasText;border-inline-end-color:transparent}.field [aria-invalid=true]{border-color:Mark}}

/* Print: content only. Printing recovery codes prints only the codes panel. */
@media print{
  body{background:var(--paper);color:var(--ink);padding:0}
  .demo-bar,.sidebar,.nav,.topbar,.app-footer,.notice,.skip-link,.form-error,.pw-toggle,button,.button,.language-picker,.login-help{display:none!important}
  .shell,.content-area{display:block}.page{padding:0;max-width:none}.card{box-shadow:none;break-inside:avoid;border-color:var(--control-border)}
  details>summary::after{display:none}details::details-content{content-visibility:visible;display:block}
  body:has(.recovery-codes) :is(.page,.login-card)>*:not(:has(.recovery-codes)):not(.recovery-codes){display:none!important}
  body:has(.recovery-codes) #mfa-panel .state-banner{display:none}
  .login-shell{min-height:0;border:0;padding:0}.login-card{border:0;box-shadow:none;padding:0;max-width:none}
  .recovery-codes{font-size:14pt;gap:10pt 24pt}
}

/* v0.3.0 F2 (employee flows). Red is used sparingly: a red top edge only on reminders and open tasks, one filled main action per screen. */
.quick-tiles{grid-template-columns:repeat(auto-fit,minmax(min(100%,max(calc((100% - 16px)/3),5.5em)),1fr));gap:8px;margin:0 0 24px}
/* Three tiles per row at normal text; with large text a tile keeps at least 5.5em, so rows reflow instead of labels spilling (EMP-07). */
.quick-tiles>.button>span,.doc-card h2>span{min-width:0;overflow-wrap:break-word}.doc-card h2>span{hyphens:auto}
.leave-coordination-title{font-size:1rem}
.quick-tiles>.button{flex-direction:column;justify-content:center;min-height:88px;padding:10px 6px;gap:6px;font-size:.875rem;text-align:center;hyphens:auto;overflow-wrap:break-word}
.quick-tiles .ui-icon{width:28px;height:28px;flex-basis:28px}.quick-tiles .icon-sick{color:var(--brand)}
@media(max-width:600px){.home-support.quick-tiles,.request-choices.quick-tiles{grid-template-columns:repeat(auto-fit,minmax(min(100%,max(calc((100% - 16px)/3),5.5em)),1fr))}.request-choices.quick-tiles>.button{min-height:88px}}
.reminder>div>strong{display:flex;gap:6px;align-items:flex-start}
.reminder.warning{border-inline-start:3px solid var(--warning);padding-inline-start:12px}
.reminder.warning>div>strong>.ui-icon{color:var(--warning);width:18px;height:18px;flex-basis:18px;margin-top:2px}
.office-note{display:grid;gap:2px;margin-top:6px}.readonly-note.office-note{margin-top:16px}.office-note>small{font-size:.8125rem;font-weight:700;color:var(--muted)}.office-note>span{color:var(--ink);overflow-wrap:anywhere}
section[id^=assignment-]{scroll-margin-block-start:16px}.assignment-card:focus{outline:none}.assignment-card:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.plan-unread{display:flex;gap:8px;align-items:flex-start}.plan-unread>.ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:2px}
.confirmed{display:inline-flex;align-items:center;gap:6px}.confirmed>.ui-icon{width:18px;height:18px;flex-basis:18px}
.tel-link{min-height:44px;text-decoration:underline}
[hidden]{display:none!important}
/* Week list: one card per running assignment. */
.current-week-actions .button,.report-grid .preview-space>.button{width:100%}
.week-card .muted{margin-top:6px;overflow-wrap:anywhere}.week-line{display:flex;align-items:center;gap:8px;margin-top:10px;font-weight:700;color:var(--ink)}.week-line .ui-icon{color:var(--muted)}
/* Week form: plan line, today marker, chevrons on tappable days, plain day regions, units beside the fields. */
.plan-line{display:flex;align-items:flex-start;gap:8px;margin-top:12px;font-size:.94rem;font-weight:700;color:var(--ink)}.plan-line .ui-icon{color:var(--brand);margin-top:1px}.week-plan{margin:0}
.overview-day{position:relative}.overview-day.today{border:2px solid var(--brand);padding:11px}
.overview-today{font-size:.8125rem;font-weight:700;color:var(--brand)}
.overview-day:is(button){padding-inline-end:28px}
.overview-day:is(button)::after{content:"";position:absolute;inset-block-end:14px;inset-inline-end:12px;width:8px;height:8px;border-inline-end:2px solid currentColor;border-block-end:2px solid currentColor;transform:rotate(-45deg);opacity:.6}
[dir=rtl] .overview-day:is(button)::after{transform:rotate(45deg)}
.overview-day.dayOff{background:transparent;border-style:dotted}
.overview-day.needsSelection{border-color:var(--warning-line);background:var(--warning-bg)}
.overview-day.absenceSick .overview-status,.overview-day.absenceLeave .overview-status{color:var(--note)}
@media(max-width:600px){.overview-day{min-height:76px}.overview-day.today{padding:9px;padding-inline-end:26px}.hours-hint .button{width:100%}}
.day-cards{padding:18px;border-top:1px solid var(--line)}#day-help{margin:0}
.day-choice{display:flex;flex-wrap:wrap;gap:8px}.day-choice>.button{font-size:.82rem;min-height:44px;padding:8px 12px}
.day-fields{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.input-unit{display:flex;align-items:center;gap:10px}.input-unit>input{flex:1;min-width:0}.input-unit>.unit{color:var(--muted);font-weight:600}
.day-state.check{color:var(--warning);background:var(--warning-bg)}
.employee-actions:not(:has(>.button:not([hidden]))){display:none}
@media(max-width:360px){.day-choice>.button{flex:1 1 100%}}
/* Requests: the form is its own page, sending first; upload first on the detail; a success card after sending. */
.list-title{font-size:1.1rem;margin:0 0 12px}
.form-lead{margin-top:0;margin-bottom:18px}
.request-form-actions{flex-direction:column;align-items:stretch;gap:4px}.request-form-actions>.link{align-self:center;justify-content:center}
.static-field .static-value{min-height:50px;display:flex;align-items:center;margin:0;font-size:1rem;font-weight:400;color:var(--ink);overflow-wrap:anywhere}
#leave-summary:empty{display:none}
.success-card{border-top:4px solid var(--success);margin-bottom:20px;max-width:920px}.success-card h2{display:flex;gap:10px;align-items:center;color:var(--success)}.success-card p{margin-top:10px}#success-title:focus{outline:none}#success-title:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
@media(min-width:901px){.request-detail-grid>.request-primary{grid-column:2;grid-row:1}.request-detail-grid>.stack:not(.request-actions){grid-column:1;grid-row:1/span 2}.request-detail-grid>.request-actions{grid-column:2}}
.request-actions:empty{display:none}
.evidence-banner{display:flex;gap:10px;align-items:flex-start}.evidence-banner>.ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:3px}.evidence-banner strong{display:block}
.photo-steps{list-style:none;padding:0;margin:14px 0;display:grid;gap:10px}.photo-steps li{display:flex;gap:12px;align-items:center;font-weight:600;color:var(--ink)}.photo-steps .ui-icon{flex:0 0 36px;width:36px;height:36px;padding:8px;border-radius:50%;background:var(--brand-soft);color:var(--brand)}
.more-info{margin-top:18px;border-top:1px solid var(--line)}.more-info summary{color:var(--muted);font-size:.9rem}.more-info .subtle-note{margin-top:8px}
.upload-status{display:grid;gap:8px;margin-top:12px;font-size:.875rem;font-weight:600;color:var(--ink)}.upload-status progress{width:100%;height:8px;accent-color:var(--brand)}
.attachment-actions [data-action=withdraw-attachment]{margin-block-start:8px}
/* RTL: values are isolated with bdi; a block that still carries dir=ltr keeps the page's alignment. */
html[dir=rtl] :is(p,div,td,strong,.label)[dir=ltr]{text-align:right}
#attachment-form{scroll-margin-block-start:12px}.request-info .card-inner>:first-child{margin-top:0}
#evidence-title{margin-bottom:14px}
/* v0.3.0 F3 (office views): page actions, list table with search and counters, deviations, decision area, review run, assignment cards, check notes, danger actions. */
.page-head-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
/* Stacked on phones: stretch, so the heading block is as wide as the page and a long single word (e.g. "Mitarbeiterzugänge" at 200 % text) wraps instead of widening it. */
@media(max-width:600px){.page-head{flex-direction:column;align-items:stretch}.page-head-actions{width:100%}.page-head-actions>.button{flex:1 1 100%}}
.data-as-of{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;margin:-14px 0 12px}.data-as-of .link{min-height:44px}
.chip-count{margin-inline-start:6px;font-variant-numeric:tabular-nums;color:var(--muted);font-weight:700}.filter-bar button[aria-pressed=true] .chip-count{color:var(--brand)}
.list-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 20px;margin-bottom:18px}.list-tools>.filter-bar{margin-bottom:0}
.list-search{flex:1 1 260px;max-width:440px;min-width:0}.list-search .field{font-size:.8125rem}.list-search .field input{min-height:46px}#search-count{margin-top:4px}#search-count:empty{display:none}
[data-search-text][hidden]{display:none!important}
.report-list{margin-top:4px}.office-shell :is(.form-card,.office-overview,.state-banner){max-width:none}
.list-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.list-table th,.list-table td{padding:11px 12px;vertical-align:middle}.list-table .num{text-align:end;font-variant-numeric:tabular-nums}.list-table .pill-row{margin:0}.list-table .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}.list-table .link{min-height:44px;text-align:start}
.list-table tr[data-last-opened]>*{background:var(--brand-soft)}.card[data-last-opened]{border-color:var(--brand)}
@media(max-width:899px){.list-table,.list-table tbody{display:block}.list-table thead{display:none}.list-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;padding:14px 16px;border-bottom:1px solid var(--line)}.list-table tr:last-child{border-bottom:0}.list-table td{border:0;padding:0;min-width:0}.list-table td:first-child{grid-column:1/-1}.list-table td[data-label]::before{content:attr(data-label);display:block;font-size:.8125rem;font-weight:400;color:var(--muted)}.list-table td:first-child::before{display:none}.list-table .num{text-align:start}.list-table td:last-child{min-width:0}}
.overview-block .pill-row{margin-top:6px}
/* WP4: office task card as a grid of compact groups (max. 3 rows, the rest in "Alle … anzeigen"); header, banners and notes span all columns. */
.office-overview .card-inner{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,400px),1fr));gap:12px 32px;align-items:start}
.office-overview .card-inner>:not(.overview-block){grid-column:1/-1}.office-overview .overview-block+.overview-block{margin-top:0}
.overview-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 16px}.overview-head .link{min-height:44px}
.overview-more{border-top:1px solid var(--line)}.overview-more>summary{color:var(--brand);font-size:.9rem;min-height:44px}.overview-more>.reminder-list{margin-top:0}
#report-list-title{scroll-margin-block-start:16px}#report-list-title:focus{outline:none}#report-list-title:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.list-wrap[hidden]{display:none}
@media(max-width:1100px){.office-overview .card-inner{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}}
/* Review: deviating days in amber with a side line, days off quiet, signed differences; check notes per day. */
.deviation-summary{margin:0 0 14px}
.hours-table tbody th{background:transparent;color:var(--ink);font-size:.875rem;font-weight:600}.hours-table .pill-row{margin-top:6px}
.table tr.row-diff td,.table tr.row-diff th{background:var(--warning-bg)}.table tr.row-diff>:first-child{border-inline-start:3px solid var(--warning)}.table tr.row-off>*{color:var(--muted);padding-block:8px}.table .diff{color:var(--warning);margin-inline-start:6px}.table td:nth-child(n+3){font-variant-numeric:tabular-nums}
.day-hint{display:flex;gap:6px;align-items:flex-start;margin-top:6px;font-size:.8125rem;font-weight:600;color:var(--warning)}.day-hint .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}
/* The last cell holds the deviation pill, the reason and the check notes (the row header stays weekday and date). */
.hours-table td>.reason-text{display:block;margin-top:6px;overflow-wrap:anywhere}.hours-table td>:first-child{margin-top:0}
@media(min-width:75em){.office-layout{grid-template-columns:minmax(0,1fr) 288px;align-items:start}.hours-table td:last-child{min-width:10rem}.decision-area{position:sticky;top:16px;align-self:start;max-height:calc(100vh - 32px);overflow-y:auto;padding:4px;margin:-4px}}@media(min-width:90em){.office-layout{grid-template-columns:minmax(0,1fr) 320px}}
.decision-area .card-inner.stack>.button,.decide-card .stack>.button{width:100%}.decide-card{border-top:4px solid var(--warning)}
.queue-nav{display:flex;align-items:center;gap:12px;margin:-6px 0 18px}.queue-step{display:inline-flex;flex:0 0 44px;width:44px;min-height:44px;padding:0}.queue-position{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
[dir=rtl] :is(.icon-chev-left,.icon-chev-right){transform:scaleX(-1)}
/* Assignment cards: meta grid, several status pills, buttons on one line at the bottom of each card. */
.meta-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:14px 0 0;font-size:.875rem}.meta-grid dt{color:var(--muted)}.meta-grid dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.report-grid>.card>.card-flex{display:flex;flex-direction:column;height:100%}.card-flex>.card-actions{margin-top:auto;padding-top:20px}.card-actions>.button{width:100%}
.warning-line{display:flex;gap:8px;align-items:flex-start;margin-top:12px;font-size:.8125rem;font-weight:600;color:var(--warning)}.warning-line .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}
.hint-box{margin-top:14px;padding:12px 14px;border:1px solid var(--warning-line);border-radius:11px;background:var(--warning-bg);color:var(--warning);font-size:.8125rem;line-height:1.55;overflow-wrap:anywhere}.hint-box>strong{display:block;margin-bottom:6px}.hint-box>.muted{margin-top:8px}
.hint-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.hint-list li{display:flex;gap:8px;align-items:flex-start;min-width:0}.hint-list li>span{min-width:0;overflow-wrap:anywhere}.hint-list .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}
.local-holidays{margin-top:14px}.local-holidays li{flex-wrap:wrap;font-size:.8125rem;color:var(--ink)}.local-holidays li>span{flex:1 1 220px}.local-holidays .button{min-height:44px;padding:8px 12px;font-size:.8125rem}
.aueg-box{margin-top:20px;padding:14px 16px;border:1px solid var(--line);border-radius:11px;background:var(--surface-subtle);font-size:.875rem}.aueg-box h3{font-size:.95rem;margin-bottom:6px}.aueg-box>.muted{margin-top:8px}
.plan-sum{margin:-8px 0 0;font-weight:700;color:var(--ink)}.subtle-note+:is(.field,label){margin-top:18px}
/* Management: export first with quick ranges, collapsed employment box, danger actions keep their distance from safe ones. */
.quick-range{display:flex;flex-wrap:wrap;gap:8px}
.employment-box>summary{padding:16px 26px}.employment-box[open]>summary{border-bottom:1px solid var(--line)}
.attachment-actions .button-danger{margin-block-start:8px}
.plain-list{margin:8px 0 0;padding-inline-start:20px}
.audit-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:16px;align-items:end;margin-top:14px}.audit-table{font-size:.8125rem}
@media(max-width:600px){.employment-box>summary{padding:14px 20px}.quick-range>.button{flex:1 1 140px}.list-search{flex-basis:100%;max-width:none}}
@media(forced-colors:active){.list-table tr[data-last-opened]>:first-child,.table tr.row-diff>:first-child{border-inline-start:3px solid Highlight}.hint-box,.decide-card{border:1px solid CanvasText}}
@media(min-width:900px){.list-table th{white-space:normal;overflow-wrap:normal}.list-table td bdi{white-space:nowrap}}
.office-shell .report-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr))}
#question-form h2+.field,.decide-card h2+.request-text{margin-top:12px}
/* Review table below 600 px: one block per day (the day on top, then labelled values); header words do not break inside. */
.hours-table thead th{overflow-wrap:normal;hyphens:auto}.hours-table tbody th bdi{white-space:nowrap}
@media(max-width:599px){.hours-table,.hours-table tbody{display:block}.hours-table thead{display:none}.hours-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 12px;padding:12px 10px;border-bottom:1px solid var(--line)}.hours-table tr>*{border:0;padding:0;min-width:0}.hours-table tbody th{grid-column:1/-1}.hours-table td:last-child{grid-column:1/-1;min-width:0}.hours-table td[data-label]::before{content:attr(data-label);display:block;font-size:.8125rem;font-weight:400;color:var(--muted);overflow-wrap:break-word;hyphens:auto}.table.hours-table tr.row-diff{background:var(--warning-bg);border-inline-start:3px solid var(--warning)}.table.hours-table tr.row-diff>*{background:transparent;border-inline-start:0}.table.hours-table tr.row-off>*{padding-block:0}.hours-table .num{text-align:start}}
@media(max-width:599px){.hours-table td.is-empty{display:none}}
/* F4: account view (#/account), the name in the header as a link to it, the new-version banner. */
.account-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}
@media(min-width:900px){.account-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
#password-form .pw-rule{margin:8px 0 18px}#password-form>.form-lead{margin-top:10px}
.info-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin:12px 0 14px;padding-inline-start:20px}.info-list li{min-width:0;overflow-wrap:anywhere;hyphens:auto}.data-info .card-inner>p{margin-top:10px;overflow-wrap:anywhere;hyphens:auto}
button.account-name{min-height:44px;padding:0;border-radius:8px;background:transparent;color:inherit;text-align:start}
.account-name .account-link{color:var(--brand);font-weight:700;text-decoration:underline;text-underline-offset:3px}
@media(hover:hover){button.account-name:hover .account-link{color:var(--brand-hover)}}
/* Below 900 px "Konto" is reached through the name link in the header (office and employees); former employees keep it next to "Dokumente". */
@media(max-width:900px){:is(.office-shell,.employee-shell) .nav [data-view=account]{display:none}.employee-shell .nav>[data-view=account]:nth-child(2){display:flex}}
.version-banner{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}.version-banner>p{flex:1 1 220px;margin:0}.login-card .version-banner{margin:16px 0 0}
#language-title+.field{margin-top:12px}
/* Four employee navigation entries (Konto is in the header): single words up to about 82 px (fa-AF, bg, hu) stay whole from 360 px. */
@media(max-width:600px){.employee-shell .nav{gap:2px;padding-inline:4px}.employee-shell .nav button{padding-inline:2px}.employee-shell .nav .nav-count{inset-inline-start:min(calc(50% + 6px),calc(100% - 2.4em))}}
/* Large text: a bottom navigation taller than a quarter of the screen scrolls with the page (set by app.js, --nav-reserve 0px). */
@media(max-width:900px){.nav-static .nav{position:static;box-shadow:none;border-top:0;border-bottom:1px solid var(--line)}}

/* v0.4.0 F5: simplicity, Apple and Google platforms, decisions UI. */
/* Bottom navigation: safe areas in landscape, labels break between words only (no "Mein Ein-satz"), hidden while the on-screen keyboard is open. */
@media(max-width:900px){.nav{padding-inline:max(16px,env(safe-area-inset-left,0px)) max(16px,env(safe-area-inset-right,0px))}.kbd-open .nav{display:none}html.kbd-open{--nav-reserve:0px!important}.kbd-open .request-form-actions{position:static}}
@media(max-width:600px){.nav{padding-inline:max(10px,env(safe-area-inset-left,0px)) max(10px,env(safe-area-inset-right,0px))}.employee-shell .nav{padding-inline:max(4px,env(safe-area-inset-left,0px)) max(4px,env(safe-area-inset-right,0px))}.nav button{flex-direction:column;justify-content:center;gap:2px;text-align:center;padding-inline:4px}}
.nav button,.nav button>span,.quick-tiles>.button,.quick-tiles>.button span{hyphens:manual;overflow-wrap:break-word;word-break:normal}
/* Selects look the same in WebKit (Safari, iPhone) as in Chromium: own arrow from gradients (currentColor, no colour literal), real height. */
.field select,.language-picker select{-webkit-appearance:none;appearance:none;background-color:var(--paper);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:right 18px center,right 12px center;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-inline-end:36px}
[dir=rtl] :is(.field select,.language-picker select){background-position:left 12px center,left 18px center}
.language-picker select{padding-inline-end:36px}
/* Date fields: the value starts at the line start (iOS centres it) and an empty field keeps its height. */
.field input[type=date]::-webkit-date-and-time-value{text-align:start;min-height:1.5em}
@supports(-webkit-touch-callout:none){.field input[type=date],.field input[type=time]{-webkit-appearance:none;appearance:none;display:flex;align-items:center}}
.date-help{margin-top:8px}
/* Safari shows today's date in grey in an empty required date field, so it looks filled (P3-5): the grey value is hidden until the field is used. */
@supports(font:-apple-system-body){.field input[type=date]:invalid:not(:focus)::-webkit-datetime-edit{color:transparent}}
/* Forms: sending stays in reach above the bottom navigation (P1-3). */
@media(max-width:900px){.card.form-card{overflow:clip}.request-form-actions{position:sticky;inset-block-end:var(--nav-reserve,0px);z-index:2;background:var(--surface-subtle);padding-block:10px}html:has(.request-form-actions){scroll-padding-block-end:calc(var(--nav-reserve,96px) + 80px)}}
.request-discard{display:flex;justify-content:center;padding:4px 16px 12px;background:var(--surface-subtle)}.request-discard>.link{justify-content:center}
/* Readability for employees (P3-3): notes and form leads at least 15 px. */
.employee-shell :is(.form-lead,.subtle-note,.state-banner){font-size:.9375rem}
.employee-shell .app-footer:empty{padding-top:0}
/* Sickness in one step: optional photo block inside the form; after sending a check line. */
.photo-block{border-top:1px solid var(--line);padding-top:20px}.photo-title{font-size:1.05rem}.photo-block .evidence-choices{margin-top:14px}.photo-block .evidence-choice>.button{min-height:52px}
.upload-done{display:flex;gap:10px;align-items:flex-start;margin:0 0 14px;padding:12px 14px;border-radius:11px;background:var(--success-bg);color:var(--success);font-weight:700}.upload-done>.ui-icon{width:20px;height:20px;flex-basis:20px;margin-top:2px}
#attachments-title:focus,#evidence-check:focus,#access-title:focus,#report-status:focus{outline:none}#attachments-title:focus-visible,#evidence-check:focus-visible,#access-title:focus-visible,#report-status:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.upload-card .evidence-preview{margin-top:0}
/* Reminders with two actions (confirm the plan, show the plan). */
.reminder-actions{display:flex;flex-wrap:wrap;gap:8px}.reminder-actions>.button{flex:1 1 auto}
@media(max-width:600px){.reminder-actions{width:100%}.reminder-actions>.button{width:100%}}
.week-open{border-inline-start:3px solid var(--warning)}
/* Sign-in: stay signed in; privacy link. */
.remember-box{display:grid;gap:4px}.remember-box .subtle-note{margin-top:0}
.privacy-link{margin-top:12px}.privacy-link .link{min-height:44px}
/* Account: own access, sign-out on other devices, home-screen help. */
.access-meta{margin-top:12px}.account-actions>.button{width:100%}
.install-card h3{margin-top:14px}.install-card .steps{margin-top:8px}
/* Privacy notice: German text, visible placeholders, highlighted objection box, tables as stacked cards on phones. */
.privacy-card{max-width:820px}.privacy-shell{place-items:start center}.privacy-page{max-width:920px}
.privacy-doc{display:grid;gap:18px;overflow-wrap:anywhere}.privacy-doc-title{font-size:1.1rem;font-weight:700;color:var(--ink)}
.privacy-section{display:grid;gap:10px}.privacy-section h2{font-size:1.1rem}.privacy-section>summary{font-size:1.05rem;color:var(--ink)}
.privacy-list{margin:0;padding-inline-start:22px;display:grid;gap:6px}
.privacy-placeholder{background:var(--warning-bg);color:var(--warning);border:1px dashed var(--warning-edge);border-radius:6px;padding:0 4px;font-weight:600}
.privacy-notice{padding:14px 16px;border:2px solid var(--info);border-radius:11px;background:var(--info-bg);color:var(--ink)}.privacy-notice>p{margin-top:6px}
.privacy-draft{display:flex;gap:10px;align-items:flex-start}.privacy-draft>.ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:3px}
.privacy-version{margin-top:24px}
/* The German notice keeps its own left-to-right alignment on right-to-left pages (the RTL safety net would right-align it). */
html[dir=rtl] :is(.privacy-doc,.privacy-draft p)[dir=ltr]{text-align:left}
@media(max-width:599px){.privacy-table,.privacy-table tbody,.privacy-table tr,.privacy-table td{display:block}.privacy-table thead{display:none}.privacy-table tr{padding:10px 0;border-bottom:1px solid var(--line)}.privacy-table td{border:0;padding:4px 0}.privacy-table td[data-label]::before{content:attr(data-label);display:block;font-size:.8125rem;color:var(--muted)}}
/* Office: retention overview (read only), legal hold, audit purpose. */
.retention-table td{vertical-align:top;overflow-wrap:break-word;hyphens:auto}
@media(min-width:900px){.retention-table th:nth-child(1){width:26%}.retention-table th:nth-child(3){width:17%}.retention-table th:nth-child(4){width:18%}}.retention-more{margin-top:6px}.retention-more>summary{min-height:44px;font-size:.8125rem;color:var(--muted)}.retention-more p{margin-top:6px;font-size:.8125rem}
.legal-hold-box>summary{padding:16px 26px}.legal-hold-box[open]>summary{border-bottom:1px solid var(--line)}
@media(max-width:600px){.legal-hold-box>summary{padding:14px 20px}}
.audit-purpose{margin-top:0}.audit-table .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}
.audit-table td:not(:first-child) bdi{white-space:normal;overflow-wrap:anywhere}
.decision-label{margin-bottom:0}
@media print{.privacy-shell{display:block}.privacy-card{max-width:none}}

/* v0.4.0 F6a: customer timesheets for the office ("Nachweise"). Desktop first, usable on tablets; calm surfaces, one red main action per area. */
.button[aria-disabled=true]{opacity:.6;cursor:not-allowed}
.button-primary[aria-disabled=true]{background:var(--neutral-bg);border-color:var(--line);color:var(--neutral);opacity:1}
@media(min-width:601px){.page-head-actions{flex-shrink:0;max-width:65%}}
.ts-step{font-size:.8125rem;font-weight:700;color:var(--muted);margin-bottom:4px}
.ts-section,.ts-upload,.ts-questions,.ts-progress,.ts-failures{margin-bottom:22px}
.ts-section-head,.ts-month-head,.ts-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}
.ts-section-head>h2,.ts-month-head>h2{min-width:0}
.ts-upload-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:22px;margin-top:18px;align-items:start}
.ts-drop{display:grid;justify-items:center;gap:6px;padding:26px 20px;border:2px dashed var(--control-border);border-radius:var(--r-lg);background:var(--surface-subtle);text-align:center;transition:background .14s,border-color .14s}
.ts-drop>.ui-icon{width:34px;height:34px;flex-basis:34px;color:var(--muted)}
.ts-drop.dragging{border-color:var(--focus);background:var(--info-bg)}
.ts-pick{position:relative;margin-top:6px}
.ts-pick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.ts-pick:focus-within{outline:3px solid var(--focus);outline-offset:3px}
.ts-upload-side .field{margin:0}
.ts-upload-side>p{margin-top:8px}
.ts-file-list{list-style:none;margin:18px 0 0;padding:0;border:1px solid var(--line);border-radius:var(--r-md);max-height:340px;overflow:auto}
.ts-file-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:6px 14px;padding:8px 14px;border-bottom:1px solid var(--line);font-size:.875rem}
.ts-file-list li:last-child{border-bottom:0}
.ts-file-list li.problem{background:var(--warning-bg)}
.ts-file-name{min-width:0;overflow-wrap:anywhere;font-weight:600;color:var(--ink)}
.ts-file-size{color:var(--muted);white-space:nowrap}
.ts-file-list .link{min-height:36px}
.ts-upload-sum{margin-top:10px}
.ts-upload-actions{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin-top:18px}
.ts-upload-actions>.ts-why{margin:0}
.ts-actions-start{justify-content:flex-start;margin-top:14px}
.ts-why{display:flex;gap:8px;align-items:flex-start;margin-top:10px;color:var(--muted)}
.ts-why .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}
.ts-why-flash{color:var(--warning);font-weight:700}
.ts-queue{display:flex;gap:8px;align-items:center;margin:-8px 0 18px;color:var(--muted)}
.ts-queue .ui-icon{width:16px;height:16px;flex-basis:16px}
.ts-meta{margin:-14px 0 16px;color:var(--muted);font-size:.9rem;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.ts-table td.num{white-space:nowrap}
@media(min-width:1200px){.ts-table .pill,.ts-table .button{white-space:nowrap}}
@media(min-width:1200px){.ts-page-table td:first-child{min-width:150px}}
.ts-month-switch{display:inline-flex;align-items:center;gap:10px}
.ts-month-switch strong{min-width:9em;text-align:center;color:var(--ink)}
.ts-total{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.ts-total>p{margin-top:6px}
.ts-payroll{display:flex;gap:8px;align-items:center;margin:10px 0 0;color:var(--text)}
.ts-payroll .ui-icon{width:18px;height:18px;flex-basis:18px;color:var(--muted)}
/* Questions about new remarks: prominent (amber line), but only rendered when there are any. */
.ts-questions{border-top:4px solid var(--warning-edge)}
.ts-questions h2{display:flex;gap:10px;align-items:center}
.ts-questions h2 .ui-icon{color:var(--warning)}
.ts-question{margin-top:18px;padding:18px;border:1px solid var(--warning-line);border-radius:var(--r-md);background:var(--warning-bg)}
.ts-question h3{font-size:1.02rem}
.ts-question>p{margin-top:6px}
.ts-question .field-grid{margin-top:14px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
.ts-question .field select,.ts-question .field input{background-color:var(--paper)}
.ts-question.compact{padding:14px}
.ts-examples{display:flex;flex-wrap:wrap;gap:4px 10px}
/* Batch progress */
.ts-bar{display:grid;gap:8px;margin-top:14px}
.ts-bar progress,.ts-resolved progress{width:100%;height:10px;accent-color:var(--focus)}
.ts-resolved{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;max-width:520px;margin:0 0 18px;font-size:.875rem;font-weight:700;color:var(--ink)}
.ts-resolved progress{accent-color:var(--success)}
.ts-files{margin-top:14px;border-top:1px solid var(--line)}
.ts-files>summary{font-size:.9rem}
.ts-file-table td,.ts-file-table th{padding:9px 10px}
.ts-failures{border-inline-start:4px solid var(--danger)}
@media(min-width:1200px){.ts-page-table td:nth-child(3){min-width:210px}}
.ts-proposal{display:block;overflow-wrap:anywhere}
.ts-proposal-actions{display:flex;gap:8px;margin-top:6px}
.button.ts-small{min-height:40px;padding:8px 12px;font-size:.875rem;gap:6px}
.button.ts-small .ui-icon{width:17px;height:17px;flex-basis:17px}
.ts-note{display:flex;gap:6px;align-items:flex-start;margin-top:6px;font-size:.8125rem;color:var(--note)}
.ts-note .ui-icon{width:15px;height:15px;flex-basis:15px;margin-top:2px}
.ts-next-step{margin-top:14px;display:flex;flex-wrap:wrap;gap:4px 18px}
.ts-next-step .ui-icon{width:16px;height:16px;flex-basis:16px}
.ts-inline-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.ts-inline-form .field{min-width:220px}
.ts-inline-form .field select{min-height:44px;padding-block:8px}
.ts-inline-form .button{min-height:44px}
/* Page review: the current decision is outlined; crops are drawn on a canvas (no inline styles). */
.ts-page-pills{margin:0 0 16px}
.ts-section-title{font-size:1.05rem;margin:4px 0 12px}
.ts-decisions{display:grid;gap:16px}
.ts-decision{box-shadow:none}
.ts-decision.current{border:2px solid var(--focus);box-shadow:var(--shadow)}
.ts-decision h3{font-size:1.05rem;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.ts-decision .card-inner>*+*{margin-top:12px}
.ts-decision-actions{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;padding-top:4px}
.ts-reasons{color:var(--warning);font-size:.875rem}
.ts-crop-wrap{max-width:100%;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle)}
.ts-crop{display:block;width:100%;height:auto;image-rendering:auto}
.ts-crop-header{max-width:760px}
.ts-reads{font-size:.8125rem}
.ts-row-fields{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}
.ts-row-fields .field{gap:5px;font-size:.8125rem}
.ts-row-fields .field input,.ts-row-fields .field select{min-height:46px;padding:10px;font-variant-numeric:tabular-nums}
.ts-row-fields .field:nth-child(3){grid-column:span 2}
.ts-field.flagged>span{color:var(--warning)}
.ts-field.flagged input,.ts-field.flagged select{border:2px solid var(--warning-edge);background-color:var(--warning-bg)}
.ts-choices{border:0;padding:0;margin:0;display:grid;gap:4px}
.ts-choices legend{font-size:.875rem;font-weight:700;color:var(--ink);margin-bottom:6px}
.ts-choice{min-height:44px;align-items:center}
.ts-choice input{flex-basis:22px;width:22px;height:22px}
.ts-choice small{font-size:.8125rem}
.ts-other{max-width:420px;margin-inline-start:34px}
.ts-header-fields{grid-template-columns:repeat(4,minmax(0,1fr))}
.ts-done{border-top:4px solid var(--success)}
.ts-done h2{display:flex;gap:10px;align-items:center;color:var(--success)}
.ts-all-rows .table-wrap{padding:0 12px 12px}
.ts-rows-table th,.ts-rows-table td{padding:8px 8px;font-size:.8125rem}
.ts-rows-table tr.row-diff>*{background:var(--warning-bg)}
.ts-full-image{display:block;max-width:100%;height:auto;margin-inline:auto;border:1px solid var(--line)}
.ts-totals-table{max-width:640px}
.ts-totals-table tr.row-diff>*{background:var(--warning-bg)}
/* Month per customer */
.ts-month-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}
@media(min-width:1440px){.ts-month-grid{grid-template-columns:minmax(0,1.5fr) minmax(360px,1fr)}.ts-month-wide{grid-column:1/-1}}
.ts-close{container-type:inline-size}
.ts-stepper{list-style:none;margin:16px 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.ts-stepper li{display:flex;align-items:center;gap:8px;padding:10px;border-radius:10px;background:var(--surface-subtle);color:var(--muted);font-size:.8125rem;font-weight:700;min-width:0}
.ts-stepper li>span:last-child{min-width:0;overflow-wrap:normal;hyphens:auto}
.ts-step-dot{display:grid;place-items:center;flex:0 0 26px;width:26px;height:26px;border-radius:50%;border:2px solid currentColor;font-size:.8125rem}
.ts-step-dot .ui-icon{width:15px;height:15px;flex-basis:15px}
.ts-stepper li.done{color:var(--success);background:var(--success-bg)}
.ts-stepper li.current{color:var(--ink);background:var(--info-bg);box-shadow:inset 0 -3px var(--focus)}
.ts-checklist{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:8px;font-size:.875rem}
.ts-checklist li{display:flex;gap:8px;align-items:flex-start}
.ts-checklist .ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:1px}
.ts-checklist li.ok{color:var(--success)}
.ts-checklist li.open{color:var(--ink)}
.ts-checklist li.open .ui-icon{color:var(--danger)}
.ts-checklist li.warn{color:var(--warning)}
.ts-checklist .link{min-height:32px}
.ts-reopen{margin-top:16px;border-top:1px solid var(--line)}
.ts-counts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
.ts-counts>div{min-width:92px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle)}
.ts-counts dt{font-size:.8125rem;color:var(--muted)}
.ts-counts dd{margin:2px 0 0;font-size:1.3rem;font-weight:750;color:var(--ink)}
.ts-cell-actions{display:flex;flex-wrap:wrap;gap:6px}
.ts-cell-actions .button{min-height:40px;padding:8px 12px;font-size:.875rem}
.ts-reason-row>td{background:var(--surface-subtle)}
.ts-reason-form .field-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ts-compare{border-top:1px solid var(--line)}
.ts-compare:first-of-type{margin-top:12px}
.ts-compare>summary{padding:10px 0;gap:14px}
.ts-compare-name{display:grid;gap:2px;min-width:0;flex:1}
.ts-compare-table th,.ts-compare-table td{padding:9px 8px;font-size:.8125rem}
.ts-compare-table tr.row-diff td,.ts-compare-table tr.row-diff th{background:transparent}
.ts-compare-table .cell-sub,.ts-file-table .cell-sub,.ts-rows-table .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}
.ts-compare-table th{white-space:nowrap}
.ts-compare-links{margin:0 0 6px}
.ts-clarify{display:grid;gap:6px;min-width:190px}
.ts-clarify .field{gap:4px;font-size:.8125rem}
.ts-clarify .field input{min-height:40px;padding:8px 10px}
.ts-all-good{display:flex;gap:8px;align-items:center;margin-top:12px;color:var(--success);font-size:.9rem;font-weight:600}
.ts-export-block{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.ts-export-block>h3{font-size:1rem}
.ts-export-block>p{margin-top:6px}
.ts-workbooks{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}
.ts-workbooks li{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:10px}
.ts-workbooks li[data-last-opened]{border-color:var(--focus);background:var(--info-bg)}
.ts-workbook-main{display:grid;gap:2px;min-width:0}
.ts-workbook-main strong{overflow-wrap:anywhere;font-size:.875rem}
.ts-workbook-side{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.ts-fill{margin-top:14px}
.ts-fill-report{margin-top:12px;display:grid;gap:10px}
.ts-conflicts th,.ts-conflicts td{padding:8px;font-size:.8125rem}
/* Code table */
.ts-codes-table td,.ts-codes-table th{vertical-align:middle}
.ts-code-field input{min-height:44px;max-width:140px;padding:8px 10px}
.ts-remarks{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.ts-remarks>li{padding:12px 0;border-bottom:1px solid var(--line)}
.ts-remark-line{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto auto;gap:8px 16px;align-items:center}
@media(max-width:1100px){.ts-row-fields{grid-template-columns:repeat(4,minmax(0,1fr))}.ts-row-fields .field:nth-child(3){grid-column:span 2}.ts-header-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.ts-upload-grid{grid-template-columns:minmax(0,1fr)}.ts-remark-line{grid-template-columns:minmax(0,1fr)}.ts-month-switch strong{min-width:0}}
@media(max-width:600px){.ts-row-fields,.ts-header-fields,.ts-question .field-grid,.ts-reason-form .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ts-row-fields .field:nth-child(3){grid-column:1/-1}.ts-file-list li{grid-template-columns:minmax(0,1fr) auto}.ts-stepper{grid-template-columns:minmax(0,1fr)}.ts-resolved{grid-template-columns:minmax(0,1fr)}.ts-other{margin-inline-start:0}}
@media(max-width:480px){.ts-header-fields,.ts-question .field-grid,.ts-reason-form .field-grid{grid-template-columns:minmax(0,1fr)}}
@media(hover:hover){.ts-drop:hover{border-color:var(--control-border-hover)}}
@media(forced-colors:active){.ts-decision.current,.ts-field.flagged input{border:2px solid Highlight}.ts-stepper li.current{outline:2px solid Highlight}}
@media print{.ts-upload,.ts-decision-actions,.ts-cell-actions{display:none}}
/* v0.4.0 F6b1: payroll month ("Lohn"), monthly matrix and payroll preparation. Same calm surfaces as "Nachweise"; the matrix scrolls inside
   its own frame with the name column, header and day totals in view; night shifts are blue as in the Excel list (plus a moon symbol). */
.office-subnav{display:none;gap:6px;margin:0 0 18px;padding:4px;background:var(--neutral-bg);border-radius:var(--r-md)}
/* v0.4.0 F6b2: in the "Lohn" area the switch Lohnmonat · Lohnabrechnungen shows on every width; "Kundennachweise" joins it below 900 px. */
.office-subnav.pay-area{display:flex;width:fit-content;max-width:100%}.office-subnav.pay-area [data-view=timesheets]{display:none}
.office-subnav button{flex:0 1 auto;min-width:0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 16px;border-radius:9px;background:transparent;color:var(--text);font-size:.875rem;font-weight:600;overflow-wrap:break-word}.office-subnav button.active{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-segment);font-weight:800}.office-subnav .ui-icon{width:18px;height:18px;flex-basis:18px}.office-subnav button>span{min-width:0;overflow-wrap:anywhere}.office-subnav .nav-count{position:static;margin:0;margin-inline-start:2px;flex:0 0 auto}
@media(hover:hover){.office-subnav button:not(.active):hover{background:var(--surface-hover);color:var(--ink)}}
@media(max-width:900px){.office-shell .nav [data-view=payslips]{display:none}.nav button.active-sub{color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 3px 0 var(--brand);font-weight:800}.office-subnav,.office-subnav.pay-area{display:flex;width:auto}.office-subnav.pay-area [data-view=timesheets]{display:flex}.office-subnav button{flex:1 1 0;padding:6px 8px}}
.pay-frozen{display:flex;gap:10px;align-items:flex-start;max-width:none;background:var(--info-bg);color:var(--info)}
.pay-frozen .ui-icon{width:19px;height:19px;flex-basis:19px;margin-top:1px}
.pay-frozen .link{min-height:28px}
.pay-counts{margin:0 0 20px}
.pay-counts .warn dd{color:var(--warning)}
.pay-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start;margin-bottom:22px}
.pay-side{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}
/* WP6 (O4-22): from 1100 px two even columns (close | release or notes); a last card on its own (Excel) spans the full width. */
@media(min-width:1100px){.pay-side{grid-template-columns:repeat(2,minmax(0,1fr))}.pay-side>:last-child:nth-child(odd){grid-column:1/-1}}
.pay-table td{vertical-align:top}
.pay-customers{display:grid;gap:6px}
.pay-customer{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.pay-customer>bdi{font-weight:600;color:var(--ink)}
.pay-amounts{display:grid;gap:2px;margin:0;min-width:150px}
.pay-amounts>div{display:flex;justify-content:space-between;gap:12px}
.pay-amounts dt{color:var(--muted)}
.pay-amounts dd{margin:0;font-weight:700;color:var(--ink);white-space:nowrap}
.pay-items{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font-size:.8125rem;color:var(--muted)}
.pay-items li{display:flex;gap:6px;align-items:flex-start}
.pay-items .ui-icon{width:15px;height:15px;flex-basis:15px;margin-top:2px}
.pay-items li.blocking{color:var(--warning);font-weight:700}
.pay-has-note{display:flex;gap:6px;align-items:center;margin-top:4px}
.pay-has-note .ui-icon{width:15px;height:15px;flex-basis:15px}
.pay-four-eyes-off{margin-top:14px}
.pay-note-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.pay-note-list li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:.875rem;color:var(--ink)}
.pay-note-list li.important{border-color:var(--danger);background:var(--danger-bg)}
.pay-note-tag{display:inline-flex;gap:4px;align-items:center;font-size:.8125rem;font-weight:800;color:var(--note)}
.pay-note-tag .ui-icon{width:15px;height:15px;flex-basis:15px}
.pay-note-list li.important .pay-note-tag{color:var(--danger)}
.pay-note-text{overflow-wrap:anywhere}
.pay-note-list .ts-cell-actions{grid-column:2;gap:14px}
.pay-note-list .link{min-height:32px;font-size:.8125rem}
.pay-note-form{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.pay-note-form textarea{min-height:84px}
.pay-note-form .checkbox-label{margin-top:0}
.pay-grid .card-inner>h2+p,.pay-grid .ts-section-head+p,.pay-entry-grid .card-inner>h2+*{margin-top:6px}
.pay-export form{margin-top:14px}
.ts-section-head .link,.pay-links .link{gap:6px}
.pay-links{display:grid;gap:2px;justify-items:start}
.pay-links .link{min-height:32px;font-size:.875rem}
.pay-links .ui-icon,.ts-section-head .link .ui-icon{width:17px;height:17px;flex-basis:17px}
.pay-explain{display:flex;gap:8px;align-items:flex-start;color:var(--text)}
.pay-explain .ui-icon{width:17px;height:17px;flex-basis:17px;margin-top:2px;color:var(--info)}
.pay-changes{margin:4px 0 0;padding-inline-start:18px;color:var(--text)}
/* Matrix */
.pay-matrix-choose{margin:0 0 16px}
.pay-matrix-choose .field{min-width:0;flex:1 1 220px;max-width:100%}
.pay-matrix-choose select{width:100%;min-width:0;max-width:100%}
/* WebKit lays out a select's text with white-space:pre, so a long customer or deduction name widens the page at large text sizes. */
.pay-matrix-choose select,.pay-form select,.pay-export select{white-space:normal}
.pay-matrix-card .card-inner{padding:16px}
.pay-matrix-wrap{position:relative;overflow:auto;max-height:min(72vh,780px);border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);overscroll-behavior:contain}
.pay-matrix-wrap:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.pay-matrix{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--text)}
.pay-matrix th,.pay-matrix td{padding:6px 5px;border-bottom:1px solid var(--line);border-inline-end:1px solid var(--line);text-align:center;white-space:nowrap;background-clip:padding-box}
.pay-matrix thead th{position:sticky;top:0;z-index:2;background:var(--surface-subtle);color:var(--ink);font-weight:700;vertical-align:bottom}
.pay-matrix .pm-name{position:sticky;inset-inline-start:0;z-index:1;min-width:180px;max-width:230px;text-align:start;white-space:normal;background:var(--paper)}
.pay-matrix .pm-name .link{min-height:28px;font-weight:700}
.pay-matrix .cell-sub{display:block;font-weight:400;font-size:.8125rem;color:var(--muted);white-space:nowrap}
.pay-matrix .pm-name .cell-sub{white-space:normal}
.pay-matrix .pill{white-space:nowrap}@media(min-width:1200px){.pay-table .pill{white-space:nowrap}}
.pay-matrix thead .pm-name,.pay-matrix tfoot .pm-name{z-index:3;background:var(--surface-subtle)}
.pay-matrix tfoot th,.pay-matrix tfoot td{position:sticky;bottom:0;z-index:2;background:var(--surface-subtle);color:var(--ink);font-weight:700;border-top:1px solid var(--control-border)}
.pm-day{min-width:42px}
.pm-day span{display:block}
.pm-day small{display:block;font-size:.8125rem;font-weight:400;color:var(--muted)}
.pay-matrix .we{background:var(--neutral-bg)}
.pay-matrix .hol{background:var(--chrome-strong)}
.pay-matrix thead th.hol span{text-decoration:underline dotted;text-underline-offset:3px}
.pm-cell.night{background:var(--night);color:var(--ink);font-weight:700}
.pm-v{display:inline-flex;align-items:center;gap:2px}
.pm-v .ui-icon{width:12px;height:12px;flex-basis:12px;stroke-width:2}
.pm-cell.code{font-weight:700}
.pm-cell.code-sick{background:var(--warning-bg);color:var(--warning)}
.pm-cell.code-leave{background:var(--info-bg);color:var(--info)}
.pm-cell.code-hol{background:var(--chrome-strong);color:var(--ink)}
.pm-cell.code-unpaid{background:var(--danger-bg);color:var(--danger)}
.pm-cell.code-other{background:var(--note-bg);color:var(--note)}
.pm-total{font-weight:750;color:var(--ink);min-width:64px}
.pm-total .cell-sub,.pm-num .cell-sub{font-weight:400}
.pm-status{text-align:start}
.pay-matrix-note{margin-top:10px}
.pay-legend{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.8125rem;color:var(--text)}
.pay-legend li{display:flex;gap:6px;align-items:center}
.pay-swatch{display:inline-grid;place-items:center;width:26px;height:20px;border-radius:4px;border:1px solid var(--line)}
.pay-swatch.night{background:var(--night);color:var(--ink)}
.pay-swatch .ui-icon{width:12px;height:12px;flex-basis:12px;stroke-width:2}
.pay-swatch.we{background:var(--neutral-bg)}
.pay-swatch.hol{background:var(--chrome-strong)}
.pay-code{display:inline-grid;place-items:center;min-width:34px;padding:1px 6px;border-radius:4px;background:var(--note-bg);color:var(--ink);font-weight:700}
/* Payroll preparation */
.pay-eyebrow{color:var(--muted);margin-bottom:4px}
.pay-entry-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}
@media(min-width:1200px){.pay-entry-grid{grid-template-columns:minmax(0,1fr) minmax(290px,330px)}}
.pay-form{overflow:visible}
.pay-form,.pay-facts,.pay-open-items,.pay-history,.pay-grid .card,.pay-matrix-card{overflow-wrap:break-word}
.pay-form>.card-inner{padding-top:6px;padding-bottom:10px}
.pay-section{border:0;margin:0;padding:18px 0;min-width:0}
.pay-section+.pay-section{border-top:1px solid var(--line)}
.pay-section>legend{float:inline-start;width:100%;padding:0;margin:0 0 12px;font-size:1.02rem;font-weight:700;color:var(--ink)}
.pay-section>legend+*{clear:both}
.pay-section>*+*:not(legend+*){margin-top:10px}
.pay-section .checkbox-label{margin-top:10px}
.pay-input{display:flex;align-items:center;gap:8px}
.pay-input input{flex:1;min-width:0;text-align:right;font-variant-numeric:tabular-nums}
.pay-unit{flex:0 0 auto;color:var(--muted);font-weight:600}
.pay-section>.pay-money{max-width:280px}
.pay-money small{font-weight:400;color:var(--muted);font-size:.8125rem}
.pay-ded-list{display:grid;gap:12px}
.pay-ded-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,180px) auto;grid-template-areas:"kind amount remove" "reason reason reason";gap:10px 12px;align-items:end;padding-bottom:12px;border-bottom:1px dashed var(--line)}
.pay-ded-row>.field:first-child{grid-area:kind}
.pay-ded-row>.pay-money{grid-area:amount}
.pay-ded-row>.pay-ded-reason{grid-area:reason}
.pay-ded-remove{grid-area:remove;align-self:end;margin-bottom:5px}
.pay-sum{font-weight:700;color:var(--ink)}
.pay-hints{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.pay-hints li{display:flex;gap:8px;align-items:flex-start;color:var(--warning);font-weight:600;font-size:.9rem}
.pay-hints .ui-icon{width:17px;height:17px;flex-basis:17px;margin-top:2px}
.pay-stamp{display:flex;gap:8px;align-items:center;margin:0;color:var(--muted);font-size:.9rem}
.pay-stamp.ok{color:var(--success);font-weight:700}
.pay-stamp .ui-icon{width:18px;height:18px;flex-basis:18px}
.pay-stamp.state-banner{display:block;margin:0;max-width:none}
.pay-blocking{padding:10px 12px;border-radius:10px;background:var(--warning-bg);border:1px solid var(--warning-line)}
.pay-blocking .pay-items{color:var(--warning)}
.pay-review-check{padding:12px 14px;border:1px solid var(--control-border);border-radius:var(--r-md);background:var(--surface-subtle);font-weight:700;color:var(--ink)}
.pay-actions{position:sticky;bottom:0;z-index:5;justify-content:flex-start;border-radius:0 0 var(--radius) var(--radius)}
.pay-keys{margin:0;flex-basis:100%}
.pay-facts .pay-fact-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}
.pay-fact-list li{display:grid;gap:6px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.pay-fact-list .link{min-height:32px;font-size:.8125rem}
.pay-fact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 0}
.pay-fact-grid .wide{grid-column:1/-1}
.pay-fact-grid dt{font-size:.8125rem;color:var(--muted)}
.pay-fact-grid dd{margin:2px 0 0;font-weight:750;color:var(--ink);overflow-wrap:anywhere}
.pay-sub{margin-top:14px;font-size:.95rem}
.pay-regs{margin:6px 0;padding-inline-start:18px;font-size:.875rem}
.pay-open-items .pay-items{font-size:.875rem;color:var(--text)}
/* Comparison: a person without weekly reports in the app is one group */
.ts-group{margin:6px 0 12px;padding:14px;border:1px solid var(--warning-line);border-radius:var(--r-md);background:var(--warning-bg)}
.ts-group.done{border-color:var(--line);background:var(--surface-subtle)}
.ts-group>*+*{margin-top:8px}
.ts-group-title{display:flex;gap:8px;align-items:center;color:var(--ink)}
.ts-group-title .ui-icon{color:var(--warning)}
.ts-group.done .ts-group-title .ui-icon{color:var(--success)}
.ts-group-days>summary{font-size:.875rem}
.ts-group-list{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 16px;font-size:.8125rem}
.ts-group-list li{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}
.ts-group-list .cell-sub{display:inline}
.ts-group-form{max-width:520px}
.ts-group-form .button{justify-self:start}
.ts-group .field input{background:var(--paper)}
@media(max-width:900px){.pay-actions{bottom:var(--nav-reserve,0px);padding-block:12px}.pay-keys{display:none}}
@media(max-width:600px){.pay-matrix .pm-name{min-width:130px;max-width:150px}.pay-ded-row{grid-template-columns:minmax(0,1fr);grid-template-areas:"kind" "amount" "reason" "remove"}.pay-ded-remove{justify-self:start}}
@media(forced-colors:active){.pm-cell.night,.pay-swatch.night{outline:2px solid Highlight;outline-offset:-2px}.pay-note-list li.important{border:2px solid Mark}}
@media print{.pay-actions,.office-subnav,.pay-note-form,.pay-matrix-choose{display:none}.pay-matrix-wrap{max-height:none;overflow:visible}.pay-matrix thead th,.pay-matrix .pm-name,.pay-matrix tfoot th,.pay-matrix tfoot td{position:static}}
.ts-payroll .link{min-height:28px}
/* v0.4.0 F7: payroll people table fits 1280 px (hours and comparison share one column; words break only when they must; 768 px keeps the blocks) */
.pay-hours{display:block;font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.pay-cmp{display:block;margin-top:6px}
.pay-amounts{min-width:0}
.pay-amounts>div{flex-wrap:wrap;column-gap:10px}
@media(min-width:900px){.pay-table td{overflow-wrap:break-word}.pay-table th,.pay-table td bdi{white-space:normal}.pay-table td bdi[dir=ltr]{white-space:nowrap}.pay-table td:last-child .pill{white-space:normal}.pay-table .pay-col-employee{width:23%}.pay-table .pay-col-payCustomersCol{width:27%}.pay-table .pay-col-payHoursCompareCol{width:14%}.pay-table .pay-col-payAmountsCol{width:17%}.pay-table .pay-col-payPrepCol{width:19%}}
/* v0.4.0 F7: customer portal – one calm column, the list of released monthly lists, a clear empty state */
.customer-shell .page{max-width:980px}
.login-context{margin-top:14px;font-size:.8125rem;font-weight:700;color:var(--muted)}
.login-context+h1{margin-top:6px}
.cp-username{margin-top:14px}
.cp-stack{gap:22px}
.cp-list{list-style:none;margin:4px 0 0;padding:0}
.cp-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:18px 0;border-top:1px solid var(--line)}
.cp-item:first-child{border-top:0;padding-top:12px}
.cp-item:last-child{padding-bottom:4px}
.cp-file{display:grid;place-items:center;width:46px;height:46px;border-radius:var(--r-md);background:var(--neutral-bg);color:var(--ink)}
.cp-file .ui-icon{width:22px;height:22px;flex-basis:22px}
.cp-item-main{display:grid;gap:3px;min-width:0}
.cp-item-title{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.cp-item-title h3{font-size:1.06rem;color:var(--ink);overflow-wrap:anywhere}
.cp-item-title .pill{min-height:24px;padding-block:2px}
.cp-item-main p{margin:0}
.cp-item-action{display:grid;gap:6px;justify-items:end;max-width:260px}
.cp-item-action p{text-align:end}
.cp-item[data-last-opened] .cp-file{background:var(--success-bg);color:var(--success)}
.cp-empty .card-inner{display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px;align-items:start;padding-block:30px}
.cp-empty-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--neutral-bg);color:var(--neutral)}
.cp-empty-icon .ui-icon{width:26px;height:26px;flex-basis:26px}
.cp-empty h2{font-size:1.15rem}
.cp-empty p{margin-top:8px;color:var(--text);max-width:60ch;line-height:1.6}
.cp-about .info-list{margin-top:12px}
.customer-shell .account-grid .card{align-self:start}
@media(max-width:600px){.cp-item{grid-template-columns:auto minmax(0,1fr);row-gap:12px}.cp-item-action{grid-column:1/-1;justify-items:stretch;max-width:none}.cp-item-action .button{width:100%}.cp-item-action p{text-align:start}.cp-empty .card-inner{grid-template-columns:minmax(0,1fr);padding-block:24px}.customer-shell .topbar>.account-name{display:flex}}
/* v0.4.0 F7: office "Kundenzugänge" – contact rows with state, second factor and actions; the confirmation opens inside the row */
.records-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.records-actions>.button{min-height:44px;padding:8px 14px}
.ca-intro{display:flex;gap:10px;align-items:flex-start;max-width:none}
.ca-intro>.ui-icon{width:19px;height:19px;flex-basis:19px;margin-top:2px}
.ca-intro p:first-child{margin-top:0}
.ca-new,.ca-link{margin-bottom:22px}
.ca-new .field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.ca-confirm{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 20px;align-items:end;margin-top:18px}
.ca-confirm .checkbox-label{margin-top:0}
.ca-list{list-style:none;margin:6px 0 0;padding:0}
.ca-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(220px,1.3fr) minmax(0,auto);gap:10px 22px;align-items:start;padding:16px 0;border-top:1px solid var(--line)}
.ca-row:first-child{border-top:0}
.ca-who,.ca-state{display:grid;gap:4px;min-width:0}
.ca-who strong{color:var(--ink);overflow-wrap:anywhere}
.ca-state .pill-row{margin-top:0}
.ca-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.ca-row.ca-open{background:var(--surface-subtle);margin-inline:-26px;padding-inline:26px}
.ca-form{grid-column:1/-1;display:grid;gap:14px;max-width:560px;padding:18px 20px;margin-top:4px;background:var(--paper);border:1px solid var(--line);border-inline-start:3px solid var(--focus);border-radius:var(--r-md)}
.ca-form h3{font-size:1rem;color:var(--ink)}
.ca-form .subtle-note,.ca-form .checkbox-label{margin-top:0}
.ca-form .split-actions{justify-content:flex-start;margin-top:4px}
.ts-portal .link{min-height:28px}
.ts-portal-none{display:flex;gap:10px;align-items:flex-start;max-width:none}
.ts-portal-none>.ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:2px}
.ts-portal-none p:first-child{margin-top:0}
.ts-portal-none .button{margin-top:10px}
@media(max-width:1100px){.ca-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ca-actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:900px){.ca-new .field-grid.three,.ca-confirm{grid-template-columns:minmax(0,1fr)}.ca-row.ca-open{margin-inline:-22px;padding-inline:22px}}
@media(max-width:600px){.ca-row{grid-template-columns:minmax(0,1fr)}.ca-row.ca-open{margin-inline:-20px;padding-inline:20px}.ca-actions>.button{flex:1 1 100%}.ca-form{padding:16px}.ca-form .split-actions>.button{flex:1 1 100%}}
.ca-link h2+p{margin-top:8px}
/* Portal overview (office): every customer's access and lists, history of one customer (desktop table, blocks below 900 px) */
.cao-purpose{margin-bottom:22px}
.cao-tools{display:flex;flex-wrap:wrap;gap:0 28px;align-items:flex-end}
.cao-group{display:grid;gap:6px;min-width:0;max-width:100%}
.cao-group .filter-bar{margin-bottom:18px}
.cao-label{font-weight:600}
.cao-card .card-inner>h2{margin-bottom:10px}
.cao-table .pill-row{flex-wrap:wrap}
.cao-table .cao-actions{text-align:end}
.cao-table .cao-actions .ts-cell-actions{justify-content:flex-end}
.cao-contacts{list-style:none;margin:6px 0 0;padding:0}
.cao-contact{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(0,auto) minmax(0,1fr);gap:6px 22px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.cao-contact:first-child{border-top:0}
.cao-contact .pill-row{margin:0}
@media(max-width:899px){.cao-table .cao-actions{grid-column:1/-1;text-align:start}.cao-table .cao-actions .ts-cell-actions{justify-content:flex-start}.cao-contact{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.cao-tools{display:block}.cao-table .cao-actions .button{flex:1 1 100%}}
/* v0.4.0 F6b2: payslips for the office ("Lohnabrechnungen") and "Dokumente" for employees */
.ps-counts>div{min-width:132px}.ps-counts .ps-tile-sub{margin:2px 0 0;font-size:.8125rem;font-weight:400;color:var(--muted)}
.ps-todo,.ps-hints,.ps-section,.ps-files,.ps-withdrawn{margin-bottom:22px}
.ps-todo .reminder-list{margin-top:8px}
.ps-hint-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.ps-hint-list li{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:11px;background:var(--note-bg);color:var(--note);font-size:.9rem;line-height:1.55;min-width:0}
.ps-hint-list li>span{min-width:0;overflow-wrap:anywhere}.ps-hint-list li strong{color:inherit}
.ps-hint-list li.warning{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning-line)}
.ps-hint-list li.info{background:var(--info-bg);color:var(--info)}
.ps-hint-list .ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:2px}
.ps-hint-links{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:6px}.ps-hint-links .link{min-height:32px;gap:4px;font-weight:700}.ps-hint-links .ui-icon{width:16px;height:16px;flex-basis:16px;margin:0}
.ps-list{list-style:none;margin:10px 0 0;padding:0}
.ps-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px 16px;padding:14px 0;border-top:1px solid var(--line)}
.ps-list>.ps-row:first-child{border-top:0}
.ps-row[data-last-opened]{border-inline-start:3px solid var(--focus);padding-inline-start:12px}
.ps-row-main{min-width:0;display:grid;gap:2px}.ps-row-main p{margin:0}
.ps-row-title{font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.ps-row-sub{color:var(--text)}.ps-reason{display:inline-flex;gap:6px;align-items:flex-start;color:var(--warning)}.ps-reason .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:3px}
.ps-row .pill-row{margin:0;justify-content:flex-end}
.ps-release-all{display:grid;justify-items:end;gap:6px;max-width:360px}.ps-release-all .ts-why{margin:0;text-align:end}
.ps-four-eyes{display:flex;gap:6px;align-items:flex-start;margin:8px 0 0}.ps-four-eyes .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:3px}
.ps-no-account{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0}
.ps-item-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}
@media(min-width:1100px){.ps-item-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}.ps-item-grid>.stack:last-child{position:sticky;top:16px}}
.ps-reasons{display:block;max-width:none}.ps-reasons h2{display:flex;gap:8px;align-items:center;font-size:1rem;color:inherit}.ps-reasons h2 .ui-icon{width:18px;height:18px;flex-basis:18px}.ps-reasons ul{margin:8px 0 0;padding-inline-start:22px;display:grid;gap:4px;font-size:.9375rem}
.ps-done{align-items:center;flex-wrap:wrap}.ps-done>span:nth-child(2){flex:1 1 220px;min-width:0}.ps-done-next{flex:0 0 auto}
.ps-assign.current,.ps-dup.current{border:2px solid var(--focus)}
.ps-assign .card-inner>*+*,.ps-dup .card-inner>*+*,.ps-release .card-inner>*+*,.ps-released .card-inner>*+*{margin-top:12px}
.ps-subhead{font-size:.875rem;font-weight:700;color:var(--ink)}
.ps-choices{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.ps-choice{width:100%;justify-content:flex-start;text-align:start;flex-wrap:wrap;gap:2px 12px;min-height:52px;padding:10px 16px}
.ps-choice[aria-pressed=true]{border-color:var(--focus);box-shadow:inset 0 0 0 1px var(--focus);background:var(--info-bg)}
.ps-choice-name{font-weight:700;color:var(--ink)}.ps-choice-fit{font-size:.8125rem;font-weight:600;color:var(--success)}
.ps-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin-top:16px}.ps-search .field{margin:0}
.ps-confirm{padding:18px;border-radius:var(--r-md);background:var(--info-bg);border-inline-start:4px solid var(--focus)}
.ps-confirm>*+*{margin-top:10px}.ps-confirm h3{font-size:1.05rem}
.ps-confirm-person{font-size:1.2rem;font-weight:750;color:var(--ink);overflow-wrap:anywhere}
.ps-confirm .field{margin-top:12px}.ps-confirm .field select{background-color:var(--paper)}
.ps-mismatch{padding:14px 16px;border-radius:11px;background:var(--danger-bg);border:2px solid var(--danger);color:var(--danger)}
.ps-mismatch p{margin:0 0 8px}.ps-mismatch p:first-child{display:flex;gap:8px;align-items:center}.ps-mismatch .ui-icon{width:18px;height:18px;flex-basis:18px}
.ps-mismatch .checkbox-label{color:var(--ink);font-weight:700}.ps-mismatch input[type=checkbox]{accent-color:var(--danger)}
.ps-read-grid{grid-template-columns:minmax(120px,auto) minmax(0,1fr);gap:8px 16px}.ps-read-grid dd{font-weight:600}
.ps-places{list-style:none;margin:4px 0 0;padding:0;font-size:.8125rem;font-weight:400;color:var(--muted)}
.ps-warn-line{display:flex;gap:6px;align-items:flex-start;margin-top:4px;color:var(--warning);font-weight:600;font-size:.8125rem}.ps-warn-line .ui-icon{width:16px;height:16px;flex-basis:16px;margin-top:2px}
.ps-preview-tools{align-items:center}.ps-preview-tools .filter-bar{margin:0}
.ps-preview{margin:14px 0 0;max-height:78vh;overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle);display:grid;place-items:center;min-height:220px}
.ps-preview img{display:block;width:100%;height:auto;background:var(--paper)}
.ps-preview.zoomed{place-items:start;max-height:min(460px,70vh)}.ps-preview.zoomed img{width:170%;max-width:none}
.ps-preview .subtle-note{padding:24px;text-align:center}.ps-preview-wait{display:flex;gap:8px;align-items:center}
.ps-requested{display:flex;gap:8px;align-items:flex-start;max-width:none;margin:0}
.ps-withdraw-open{margin-top:4px}
/* fix lane P: merge of split sheets, discard of a whole batch */
.ps-merge,.ps-discard{margin-bottom:22px}.ps-discard-open{margin-top:22px}
.ps-merge-list{border:0;margin:0 0 14px;padding:0;min-width:0;display:grid;gap:8px}.ps-merge-list legend{padding:0;margin-bottom:8px;font-weight:700}
.ps-merge-list .checkbox-label{overflow-wrap:anywhere}
.ps-discarded{margin-bottom:18px}
.doc-stack{max-width:860px}
.doc-card h2{display:flex;gap:10px;align-items:center}.doc-card h2 .ui-icon{color:var(--muted)}
.doc-item .doc-pdf{min-height:56px;padding-inline:22px;font-size:1rem}
.doc-months{list-style:none;margin:12px 0 0;padding:0}
.doc-months>li{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;padding:14px 0;border-top:1px solid var(--line)}
.doc-months>li:first-child{border-top:0}.doc-months>li>div{min-width:0}.doc-months p{margin:2px 0 0}
.doc-note{display:flex;gap:8px;align-items:flex-start;max-width:none;font-size:.9375rem}.doc-note .ui-icon{width:18px;height:18px;flex-basis:18px;margin-top:3px}
.doc-totals{margin-top:12px}.doc-totals .doc-abs dd{font-size:.9375rem;font-weight:700}
.doc-table-wrap{margin-top:14px;border:1px solid var(--line);border-radius:10px;container-type:inline-size}
.doc-table{table-layout:auto}.doc-table th:first-child,.doc-table td:last-child{min-width:0}.doc-table thead .doc-c-abs{width:100%}.doc-table bdi{white-space:nowrap}
.doc-table th,.doc-table td{padding:9px 5px;font-size:.9375rem;overflow-wrap:normal;word-break:normal;hyphens:manual}.doc-table td.doc-c-abs{overflow-wrap:break-word}
.doc-wd{display:block;font-weight:400;font-size:.8125rem;color:var(--muted)}
.doc-table thead th{font-size:.8125rem;color:var(--muted);background:var(--surface-subtle)}
.doc-table tbody th{font-weight:600;color:var(--ink);text-align:start}
.doc-table .num{text-align:end;font-variant-numeric:tabular-nums}
.doc-table tr.doc-absent td,.doc-table tr.doc-absent th{background:var(--warning-bg)}
.doc-table .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}
/* Narrow card or large text (EMP-05): one block per day instead of five squeezed columns; labels come from data-label, values never split. */
@container (max-width:19.5em){.doc-table,.doc-table tbody,.doc-table tr,.doc-table th,.doc-table td{display:block}.doc-table thead{display:none}.doc-table tbody tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6em 16px;padding:10px 12px;border-top:1px solid var(--line)}.doc-table tbody tr:first-child{border-top:0}.doc-table tbody th,.doc-table tbody td{padding:0;border:0;background:none;flex:0 1 auto;min-width:0;font-size:.9375rem}.doc-table tbody th,.doc-sheet .doc-table tbody th:first-child{flex-basis:100%;padding:0}.doc-table tbody th .doc-wd{display:inline;font-size:.9375rem;margin-inline-end:.35em}.doc-table td[data-label]::before{content:attr(data-label);margin-inline-end:.35em;font-size:.8125rem;color:var(--muted)}.doc-table td.doc-blank,.doc-table td.doc-c-abs:empty{display:none}.doc-table td.num{text-align:start}.doc-table td.doc-c-abs{flex-basis:100%}.doc-table tr.doc-absent{background:var(--warning-bg)}}
.doc-image{margin:14px 0 0;border:1px solid var(--line);border-radius:10px;overflow:auto;max-height:80vh;background:var(--surface-subtle)}.doc-image img{display:block;width:100%;height:auto}
.ts-routed{margin-top:4px}.ts-routed .pill-row{margin:0}.ts-dup-link{display:inline-flex;gap:4px;min-height:32px;font-size:.8125rem}.ts-dup-link .ui-icon{width:14px;height:14px;flex-basis:14px}
.ts-meta .link{min-height:32px;gap:4px}.ts-meta .ui-icon{width:16px;height:16px;flex-basis:16px}
@media(max-width:900px){.ps-row{grid-template-columns:minmax(0,1fr) auto}.ps-row .pill-row{grid-column:1/-1;justify-content:flex-start;order:3}.ps-release-all{justify-items:stretch;max-width:none;width:100%}.ps-release-all .ts-why{text-align:start}}
@media(max-width:600px){.doc-sheet .doc-table-wrap{margin-inline:-20px;max-width:none;border-radius:0;border-inline:0}.doc-sheet .doc-table th:first-child,.doc-sheet .doc-table td:first-child{padding-inline-start:12px}.ps-row{grid-template-columns:minmax(0,1fr)}.ps-row-action .button{width:100%}.ps-search{grid-template-columns:minmax(0,1fr)}.ps-confirm .split-actions>.button{flex:1 1 100%}.doc-item .cp-item-action .button{width:100%}.doc-table th,.doc-table td{padding:8px 6px;font-size:.875rem}.ps-counts>div{min-width:0;flex:1 1 40%}}
@media(forced-colors:active){.ps-assign.current,.ps-dup.current,.ps-mismatch,.ps-confirm{border:2px solid Highlight}.ps-hint-list li{border:1px solid CanvasText}}
@media print{.ps-upload,.ps-preview-tools,.ps-row-action,.ps-release-all,.doc-pdf{display:none}.ps-preview{max-height:none;overflow:visible}}
@media(max-width:360px){.doc-sheet .doc-table-wrap{margin-inline:-17px}}
/* v0.4.0 month export ("Monatsexport", release lane x2): cockpit table, job card; four area tabs on phones as a 2 x 2 grid */
.mx-book{display:block;margin-top:6px}.mx-table td,.mx-table th{vertical-align:top}.mx-table .cell-sub,.mx-total .cell-sub{display:block;margin-top:4px}.mx-row-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.mx-job.running{border-color:var(--brand)}.mx-problems{margin-top:10px}
@media(min-width:900px){.mx-table .pill,.mx-table .link{white-space:nowrap;overflow-wrap:normal}}
@media(max-width:900px){.office-subnav{flex-wrap:wrap}.office-subnav button{flex:1 1 calc(50% - 6px);min-width:min-content}.office-subnav button>span{overflow-wrap:normal}}
/* Richtwert (office only, 25.09.2026): totals, tables per customer and person, rate table with its form */
.pay-estimate h3{margin:18px 0 6px;font-size:1rem}.pay-est-table .cell-sub{display:block;margin-top:2px}.pay-est-state{display:flex;gap:6px;align-items:flex-start}.pay-rate-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}.pay-rate-list .cell-sub{display:block}.pay-rates{margin-top:16px}

/* v0.4.0 "Zwei-Faktor einfach": method choice (segment control), list of set-up methods with "Entfernen", QR code of the
   authenticator key as an image from the server (black modules on white with a quiet zone; images keep their colours in
   forced-colors mode), the otpauth link only where it helps (phones and tablets). */
.mfa-choice{margin:18px 0 0}
.mfa-add-form{display:grid;gap:14px;margin-top:16px}
.mfa-add-form>.subtle-note,.mfa-manage>.subtle-note{margin-top:0}
.mfa-add-form>.state-banner{margin:0}
.mfa-list{list-style:none;margin:10px 0 0;padding:0}
.mfa-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:14px 0;border-top:1px solid var(--line)}
.mfa-row:first-child{border-top:0}
.mfa-row-text{display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}
.mfa-row>.button{min-height:44px;padding:8px 14px}
#mfa-panel .card-inner>h3{margin-top:24px}
.mfa-manage{display:grid;gap:14px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.mfa-manage .split-actions{margin-top:0}
.mfa-qr-box{margin-top:16px}
.mfa-qr{display:block;width:min(100%,232px);height:auto;aspect-ratio:1;border:1px solid var(--line);border-radius:8px}
.mfa-key-label{font-size:.875rem;font-weight:700;color:var(--ink)}
@media(pointer:fine){.mfa-open-app{display:none}}
@media(max-width:600px){.mfa-row>.button,.mfa-add-form .button{width:100%}}
/* "Aufbewahrung" (office, client decision of 25.09.2026): due categories, deletion requests, confirmation forms. */
.rt-categories{list-style:none;margin:12px 0 0;padding:0}
.rt-category{padding:14px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.rt-category:first-child{border-top:0}
.rt-category-main{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px}
.rt-category-main>div:first-child{display:grid;gap:3px;min-width:0;flex:1 1 240px}
.rt-category .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}
.rt-category-side{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.rt-category-side .pill-row{margin:0}
.rt-category-side .button{min-height:44px;padding:8px 12px;font-size:.875rem}
.rt-panel{display:grid;gap:12px;margin-top:14px;padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-hover)}
.rt-panel h3{margin:0}
.rt-items{list-style:none;margin:0;padding:0;display:grid;gap:0}
.rt-items>li{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;padding:10px 0;border-top:1px solid var(--line)}
.rt-items>li:first-child{border-top:0}
.rt-check{display:flex;align-items:flex-start;gap:10px;min-height:44px;flex:1 1 260px;min-width:0;cursor:pointer}
.rt-check input{width:22px;height:22px;flex:0 0 22px;margin:2px 0 0}
.rt-age{flex:0 1 auto}
.rt-decisions>li{margin-top:10px}
.rt-decisions .cell-sub{display:block;font-size:.8125rem;color:var(--muted)}
.doc-deletion{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
@media(max-width:600px){.rt-category-side{width:100%}.rt-panel .split-actions .button{width:100%}}
/* WP6: the close stepper stacks in narrow cards (O4-02, container query on .ts-close) */
@container (max-width:460px){.ts-stepper{grid-template-columns:minmax(0,1fr)}}
/* WP6 (O4-05): the sticky save bar of the payroll form is measured (--pay-bar); a focused field scrolls clear of it (plus the phone navigation). */
html:has(.pay-actions){scroll-padding-block-end:calc(var(--pay-bar,140px) + 16px)}
@media(max-width:900px){html:has(.pay-actions){scroll-padding-block-end:calc(var(--nav-reserve,96px) + var(--pay-bar,140px) + 16px)}}
/* WP6 (O4-17): frozen (disabled) fields look read-only; background-color keeps the drawn select arrow. */
.field :is(input,select,textarea):disabled{background-color:var(--surface-subtle);color:var(--text);border-color:var(--line);cursor:not-allowed;opacity:1}
.pay-minijob-grid{align-items:end}
/* WP6 (O4-20): the value fields of a row follow the LTR paper crop, also in RTL; the select arrow stays on the right there. */
.ts-row-fields[dir=ltr] .field select{background-position:right 18px center,right 12px center}
/* WP7 (CP-05, O4-09): a field message inside a grid gets its own full row below the fields; dense flow keeps the fields in their columns. */
.field-grid,.ca-confirm{grid-auto-flow:row dense}
:is(.field-grid,.ca-confirm,.pay-ded-row)>.field-error{grid-column:1/-1;margin-top:-8px}
/* WP7 (OC-16): the access form (Zugänge) spaces its parts evenly. */
.access-form{display:grid;gap:15px}
.access-form>*{margin:0}
/* WP7 (CP-06): from 1100 px every contact row shares the column tracks of the list, so the status column lines up; timestamps stay together. */
@media(min-width:1101px){@supports(grid-template-columns:subgrid){.ca-list{display:grid;grid-template-columns:minmax(170px,1fr) minmax(220px,1.3fr) minmax(0,auto);column-gap:22px}.ca-row{grid-column:1/-1;grid-template-columns:subgrid}}}
.ca-state bdi[dir=ltr]{white-space:nowrap}
/* WP7 (PUB-13): in forced-colors mode the drawn arrow disappears, so selects fall back to the system arrow. */
@media(forced-colors:active){.field select,.language-picker select{-webkit-appearance:auto;appearance:auto;background-image:none;padding-inline-end:12px}}
/* WP8: sign-in, two-factor gate, customer portal, privacy page and print. */
.login-card{overflow-wrap:break-word}.login-card .form-error{margin:0 0 18px}
#remember-help{font-size:.9375rem}
.login-card .cp-username{display:flex;flex-wrap:wrap;gap:2px 12px}.login-card .cp-username>dd{min-width:0;overflow-wrap:anywhere}
@media(max-width:360px){.login-shell{padding-inline:10px}.login-card{padding:22px 14px}}
.mfa-gate-panel{margin-top:18px}.mfa-gate-panel>.filter-bar{margin-bottom:14px}
.login-card #mfa-panel.card{border:0;box-shadow:none;background:transparent;border-radius:0;margin-top:18px}.login-card #mfa-panel.card>.card-inner{padding:0}
.pw-rule.invalid{color:var(--danger);font-weight:700}
.customer-shell .brand-sub{letter-spacing:.02em}.customer-shell .sidebar>.nav-caption{text-transform:none;letter-spacing:normal}
.cp-item[data-downloaded] .cp-file{background:var(--success-bg);color:var(--success)}
.privacy-audience{margin:4px 0 18px}
.privacy-doc :is(p,.privacy-list,.privacy-notice){max-width:75ch}
@media print{
  body:has(.recovery-codes) .account-grid{display:block}
  body:has(.recovery-codes) :is(.account-grid,.account-grid>.stack)>*:not(:has(.recovery-codes)):not(.recovery-codes){display:none!important}
  .decision-area,.card:has(#question-form),.as-of-sep,.privacy-audience{display:none!important}
}
/* Final audit A-B3: pages the classification did not identify, waiting for the office's decision (Nachweise). */
.ts-held{margin-bottom:22px;border-inline-start:4px solid var(--warning-line)}
.ts-held-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:14px}
.ts-held-item{padding:14px 0 0;border-top:1px solid var(--line);min-width:0}.ts-held-item:first-child{padding-top:0;border-top:0}
.ts-held-name{margin:0;overflow-wrap:anywhere}
.ts-held-preview{display:block;width:100%;max-width:640px;max-height:70vh;object-fit:contain;margin-top:12px;background:var(--paper);border:1px solid var(--line);border-radius:8px}
.ts-held-preview:focus{outline:3px solid var(--focus);outline-offset:3px}
@media(max-width:600px){.ts-held .split-actions>.button{flex:1 1 100%}}
@media(forced-colors:active){.ts-held{border-inline-start:4px solid CanvasText}}
/* Final audit A-B2: a PDF certificate is stored only as page images. */
.evidence-pdf-note{margin-top:14px}
/* Client decisions of 26.09.2026: blocking entries of the month checklist name person and day (A-S4); customer portal "Stundennachweise hochladen". */
.ts-check-items{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px;font-size:.8125rem;color:var(--ink)}
.ts-check-items li{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline;overflow-wrap:anywhere}
.cp-upload-list{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:18px}
.cp-upload-item{padding-top:14px;border-top:1px solid var(--line);min-width:0}
.cp-upload-item:first-child{border-top:0;padding-top:0}
.cp-upload-item h3{font-size:1rem;margin:0}
.cp-upload-item.just-sent h3{color:var(--brand)}
.cp-upload-files{max-height:none}
.cp-upload-files li{grid-template-columns:minmax(0,1fr) auto auto}
.cp-upload-files .cp-upload-why{grid-column:1/-1;color:var(--muted)}
@media (max-width:520px){.cp-upload-files li{grid-template-columns:minmax(0,1fr) auto}.ts-check-items li{display:block}}


/* Ticket inbox and conversations: shared theme tokens, logical direction and mobile flow. */
.request-inbox{display:grid;gap:12px}.request-inbox-row .card-inner{padding:22px 24px}.request-inbox-row.has-unread{border-inline-start:4px solid var(--brand)}.request-category{font-size:.8125rem;font-weight:700;color:var(--muted);margin-block-end:5px}.request-inbox-row h2{font-size:1.08rem}.request-snippet{margin-block:12px;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6}.request-latest{font-size:.875rem;background:var(--surface-subtle);padding:10px 12px;border-radius:var(--r-sm)}.request-row-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-block-start:14px}.request-inbox-row .summary-line{align-items:flex-start}.request-inbox-row .pill-row{justify-content:flex-end}.request-conversation{border-color:var(--brand-line)}.chat-thread{list-style:none;padding:0;margin:22px 0;display:flex;flex-direction:column;gap:14px}.chat-bubble{max-width:94%;padding:14px 16px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface-subtle);align-self:flex-start;min-width:0}.chat-mine{align-self:flex-end;background:var(--brand-soft);border-color:var(--brand-line)}.chat-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 18px;font-size:.8125rem;color:var(--muted);margin-block-end:8px}.chat-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.chat-compose-actions{display:flex;justify-content:flex-end;margin-block-start:12px}.chat-alert{margin:12px 24px;padding:16px 20px;background:var(--paper);border:1px solid var(--brand-line);border-radius:var(--r-md);box-shadow:var(--shadow);display:flex;gap:12px;align-items:center;justify-content:space-between}.chat-alert.is-popup{position:fixed;inset-inline-end:20px;inset-block-start:16px;z-index:120;max-width:min(440px,calc(100vw - 32px));margin:0;box-shadow:var(--shadow-float);border-inline-start:4px solid var(--brand)}.chat-alert strong{font-size:.9rem;overflow-wrap:anywhere}.chat-alert .button{font-size:.85rem;min-height:44px;padding:8px 12px}.chat-alert .split-actions{flex-shrink:0}.request-conversation .summary-line{flex-wrap:wrap}.request-conversation .summary-line .link{font-size:.8125rem}@media(max-width:600px){.request-inbox-row .card-inner{padding:18px}.request-inbox-row .summary-line{flex-wrap:wrap;gap:8px}.request-inbox-row .pill-row{justify-content:flex-start}.request-row-footer{flex-wrap:wrap;gap:8px}.chat-bubble{max-width:100%;padding:12px}.chat-alert{flex-wrap:wrap}.chat-alert.is-popup{inset-inline:12px;max-width:none}.chat-compose-actions .button{width:100%}}

/* Keep unread office notices visible without covering navigation or forms. */
#chat-notification{position:sticky;bottom:0;z-index:80;padding-bottom:env(safe-area-inset-bottom);pointer-events:none}
#chat-notification .chat-alert{pointer-events:auto}
#chat-notification .chat-alert.is-popup{position:relative;inset:auto;margin:12px auto;width:calc(100% - 24px);max-width:680px;box-sizing:border-box;border:2px solid var(--brand)}
.request-conversation textarea{min-height:96px;font-size:1rem}
/* Optional requests follow the employee's daily work, with full-width content. */
.home-support.card{display:block;margin-block-start:24px}
.home-support .quick-tiles{display:grid;margin:16px 0 0}

/* 2026-09-27: calmer surfaces, clear task hierarchy; shared across roles and all languages. */
.home-shortcuts,.office-shortcuts{display:grid;gap:12px;margin-block-end:24px;grid-template-columns:repeat(2,minmax(0,1fr))}
.home-shortcut,.office-shortcut{display:flex;align-items:center;gap:12px;text-align:start;min-height:64px;padding:16px 18px;background:var(--paper);color:var(--ink);border:1px solid var(--control-border);border-radius:var(--r-md);font-weight:700;min-width:0}
.home-shortcut>span,.office-shortcut>span{min-width:0;overflow-wrap:anywhere}
.home-shortcut>.ui-icon:first-child{color:var(--brand)}
.home-shortcut>.ui-icon:last-child{margin-inline-start:auto;width:16px;flex-basis:16px}
[dir=rtl] .home-shortcut>.ui-icon:last-child{transform:rotate(180deg)}
.office-shortcuts{grid-template-columns:repeat(3,minmax(0,1fr))}
.office-shortcut{border-color:var(--control-border);min-height:92px}
.office-shortcut strong{margin-inline-start:auto;font-size:1.8rem;font-variant-numeric:tabular-nums;color:var(--ink)}
.shortcut-icon{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border-radius:var(--r-sm);color:var(--brand);background:var(--brand-soft)}
.employee-more{margin-block-start:12px;border-top:1px solid var(--line)}
.employee-more>summary,.cp-about>summary{cursor:pointer;min-height:48px;padding:14px 0;font-weight:700;color:var(--ink);line-height:1.5}
.employee-more[open]>summary{border-bottom:1px solid var(--line)}
.cp-about>summary{padding:20px 24px}
.cp-about .card-inner{padding-block-start:0}
.page-head{margin-block-end:28px}
.card{box-shadow:none}
.reminders,.office-overview{border-top-width:3px}
.reminders .card-inner,.office-overview .card-inner{padding:24px}
.reminder-list>.reminder:first-child{border-top:0;padding-block-start:8px}
.reminders .reminder{padding-block:18px;gap:12px}
.employee-shell .assignment-list{gap:20px}
.employee-shell .home-support{background:var(--surface-subtle);border-color:var(--line)}
.home-support .quick-tiles>.button{background:var(--paper);min-height:72px}
.office-overview .overview-block+.overview-block{padding-block-start:24px;margin-block-start:20px;border-top:1px solid var(--line)}
.office-overview .overview-block h3{color:var(--ink);font-size:1rem}
.data-as-of{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin-block-end:20px}
.data-as-of .as-of-sep{display:none}
.filter-bar{gap:6px}
.filter-bar button{min-height:44px;border-radius:var(--r-sm)}
.table thead th{background:var(--surface-subtle)}
.table tbody tr:focus-within{background:var(--brand-tint)}
.request-inbox-row .request-row-footer{padding-block-start:14px;border-top:1px solid var(--line)}
.request-inbox-row.has-unread{background:var(--brand-tint)}
.cp-item{padding-block:22px}
.cp-item-action .button{min-height:48px}
@media(hover:hover){.home-shortcut:hover,.office-shortcut:hover{background:var(--brand-tint);border-color:var(--brand)}.cp-item:hover{background:var(--surface-subtle)}}
@media(max-width:600px){.home-shortcuts{gap:8px}.home-shortcut{padding:12px;gap:8px;min-height:64px;font-size:.9375rem}.home-shortcut>.ui-icon:last-child{display:none}.office-shortcuts{grid-template-columns:minmax(0,1fr);gap:8px}.office-shortcut{min-height:64px;padding:12px 16px}.office-shortcut strong{font-size:1.5rem}.reminders .card-inner,.office-overview .card-inner{padding:20px}.cp-about>summary{padding:18px 20px}.page-head{margin-block-end:22px}}
@media(prefers-reduced-motion:reduce){.home-shortcut,.office-shortcut{transition:none}}

/* Conversation entry: one preview, one clear action; case administration stays separate. */
.request-inbox{gap:10px}
.request-inbox-row .card-inner{padding:18px 22px}
.request-inbox-row .request-snippet{-webkit-line-clamp:2;margin-block:10px;font-size:.9375rem}
.request-inbox-row .request-row-footer{margin-block-start:10px;padding-block-start:10px}
.request-inbox-row .request-row-footer .button{min-height:48px;flex-shrink:0}
.request-management>summary{min-height:56px;padding:18px 20px;font-weight:700;color:var(--ink);cursor:pointer}
.request-management>form.card{border:0;border-radius:0;box-shadow:none}
.request-management>.preview-space{padding:0 20px 20px}
.request-management .form-actions{flex-wrap:wrap}
.request-conversation .chat-thread{gap:12px}
.request-conversation .chat-bubble{max-width:88%}
.request-conversation .chat-compose-actions{border-top:1px solid var(--line);padding-block-start:12px}
@media(min-width:1100px){.request-detail-grid{grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr)}}
@media(max-width:600px){.request-inbox-row .card-inner{padding:16px}.request-inbox-row .request-row-footer{align-items:stretch}.request-inbox-row .request-row-footer .button{width:100%}.request-conversation .chat-bubble{max-width:96%}}

/* Hide acknowledged message badges even when pill styles set display. */
[data-chat-count][hidden]{display:none!important}

/* Tasks remain prominent independently of chat read receipts. */
.hours-attention{margin:0 0 24px;padding:24px;border:2px solid var(--warning);border-inline-start-width:8px;border-radius:16px;background:var(--warning-bg);color:var(--ink)}
.hours-attention h2{font-size:1.45rem;line-height:1.35;display:flex;align-items:center;gap:12px;margin:0 0 10px}
.hours-attention h2 svg{width:28px;height:28px;flex-shrink:0}
.hours-attention-list article{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;border-top:1px solid var(--warning-edge);margin-top:16px}
.hours-attention-list strong{font-size:1.1rem}.hours-attention-list blockquote{margin:12px 0 0;padding-inline-start:12px;border-inline-start:3px solid var(--warning);white-space:pre-wrap;overflow-wrap:anywhere}
.hours-attention .button{min-height:52px;flex-shrink:0}.hours-question-open{font-size:1.05rem;border:2px solid var(--warning);padding:24px;max-width:none}.hours-question-open strong{font-size:1.3rem}
.employee-conversations{display:flex;flex-direction:column;gap:14px;max-width:900px}.employee-conversations .card-inner{padding:20px}.employee-conversations .summary-line h2{font-size:1.1rem}.conversation-history{border-top:1px solid var(--line);padding-top:18px}.conversation-history summary{cursor:pointer;font-weight:700;min-height:48px;padding:12px}.conversation-history .card{margin-top:12px}
@media(max-width:600px){.hours-attention{padding:18px 16px}.hours-attention h2{font-size:1.25rem}.hours-attention-list article{align-items:stretch;flex-direction:column;gap:14px}.hours-attention .button{width:100%}}

/* Shared handset/tablet safeguards: keep overflow inside data tables, not the page. */
.page,.main,.stack,.card-inner,.employee-conversations,.hours-attention-list article>div{min-width:0}
.card-inner :is(h2,h3,p,strong,blockquote),.summary-line>*,.split-actions>*,.section-actions>*{overflow-wrap:anywhere;min-width:0}
input,select,textarea{max-width:100%;min-width:0}
.table-wrap{min-width:0;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
.hours-attention h2{flex-wrap:wrap}.hours-attention blockquote{max-width:100%}
@media(max-width:1100px){
 .request-detail-grid,.office-layout,.employee-report{grid-template-columns:minmax(0,1fr)}
 .summary-line,.request-row-footer,.split-actions,.section-actions{flex-wrap:wrap}
 .chat-alert .split-actions{flex-shrink:1;max-width:100%}
 .request-conversation,.employee-conversations{width:100%;max-width:100%}
}
@media(pointer:coarse){
 .button,.link,summary,.filter-bar button,.nav button{min-height:48px}
 input:not([type=checkbox]):not([type=radio]),select{min-height:48px}
 input[type=checkbox],input[type=radio]{min-width:22px;min-height:22px}
}
@media(max-width:600px){
 .field input,.field select,.field textarea,.language-picker select{font-size:1rem}
 .home-shortcuts{grid-template-columns:minmax(0,1fr)}
 .filter-bar{display:flex;flex-wrap:wrap;gap:8px;max-width:100%}
 .filter-bar button{white-space:normal;overflow-wrap:anywhere;min-height:48px}
 .employee-conversations .summary-line{align-items:flex-start;gap:10px}
 .employee-conversations .pill-row{justify-content:flex-start}
 .employee-conversations .preview-space>.button{width:100%;min-height:52px}
 .chat-meta{gap:6px;flex-wrap:wrap}.chat-bubble{overflow-wrap:anywhere}
 .hours-question-open{font-size:1rem;padding:18px}.hours-question-open strong{font-size:1.2rem}
}

/* Office task filters and grouped employee conversations share the narrow-screen layout. */
.office-task-filters{display:flex;flex-wrap:wrap;gap:8px;margin-block:18px 24px}
.office-task-filters button{display:flex;align-items:center;gap:8px;min-height:44px;max-width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font:inherit;font-weight:600;cursor:pointer;overflow-wrap:anywhere}
.office-task-filters button[aria-pressed="true"]{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.office-task-filters button:focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.task-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.employee-inbox-group{display:grid;gap:8px;min-width:0}.employee-inbox-group+.employee-inbox-group{padding-block-start:12px;border-top:1px solid var(--line)}
.employee-inbox-group .conversation-history{margin:0 0 8px}.employee-inbox-group .conversation-history>summary{min-height:44px;padding:12px 16px}
@media(max-width:600px){.office-task-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.office-task-filters button{justify-content:space-between;font-size:.875rem;min-height:48px}}

/* Daily controls stay usable with fingers and large system fonts. */
@media (pointer:coarse){.button,.nav button,.nav a,.split-actions button,button.link{min-height:48px}.field input,.field select{min-height:48px}}
.chat-compose-actions{flex-wrap:wrap;gap:.6rem}.chat-thread{overflow-wrap:anywhere}

/* Secondary workspaces share the responsive card rhythm. */
.customer-person-list {list-style:none;margin:0;padding:0;display:grid;gap:0;}
.customer-person-list li {display:flex;flex-direction:column;gap:.6rem;padding:1.2rem 0;border-bottom:1px solid var(--line);min-width:0;overflow-wrap:anywhere;}
.customer-person-list li:last-child {border-bottom:0;}
.cp-photo-thumb {width:96px;height:112px;object-fit:contain;background:var(--surface-hover);border-radius:8px;flex-shrink:0;}
.toolbar {display:flex;align-items:end;flex-wrap:wrap;gap:1rem;margin-block:1rem;}
.toolbar .field {min-width:0;max-width:100%;}
.voice-panel {margin-block:.75rem;padding:1rem;background:var(--surface-subtle);border-radius:12px;}
.voice-panel textarea {width:100%;min-height:6rem;}
@media(max-width:600px){.toolbar .field{flex:1 1 100%;}.customer-person-list .split-actions{flex-wrap:wrap;}.cp-photo-thumb{width:72px;height:88px;}}

/* Five customer destinations keep full labels, icons and touch targets on phones.
   The existing measured nav reserve also covers wrapping text and tablet rotation. */
@media(max-width:600px){
 .customer-shell .nav{gap:2px;padding-inline:max(4px,env(safe-area-inset-left,0px)) max(4px,env(safe-area-inset-right,0px))}
 .customer-shell .nav button{padding-inline:2px}
}

/* Direct reply stays next to its text field on phone, tablet and desktop. */
.answer-first .subtle-note{margin-top:10px}.answer-first .choice-actions{margin-top:12px}

/* Unified conversations: people first, topics in one workspace, one visible composer. */
.conversation-workspace{border:1px solid var(--line);border-radius:16px;background:var(--paper);overflow:hidden;min-width:0}
.conversation-person{display:flex;align-items:center;gap:14px;padding:18px 24px;border-bottom:1px solid var(--line)}
.conversation-person h1{font-size:1.15rem;margin:0}.conversation-person p{font-size:.8125rem;color:var(--muted);margin:2px 0 0}.conversation-person>.button{margin-inline-start:auto}
.conversation-avatar{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:750}
.conversation-layout{display:grid;grid-template-columns:minmax(190px,240px) minmax(0,1fr)}
.conversation-topic-picker{border-inline-end:1px solid var(--line);padding:12px;background:var(--surface-subtle)}
.conversation-topic-picker>summary{padding:10px;font-weight:650;cursor:pointer;font-size:.85rem}
.conversation-topics{display:grid;gap:3px}.conversation-topic{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;text-align:start;border:0;border-radius:8px;background:transparent;color:var(--ink);min-height:56px;cursor:pointer;width:100%}
.conversation-topic strong,.conversation-topic small{display:block;overflow-wrap:anywhere}.conversation-topic strong{font-size:.85rem}.conversation-topic small{font-size:.8125rem;color:var(--muted);margin-top:4px}.conversation-topic.is-active{background:var(--paper);box-shadow:inset 3px 0 var(--brand)}
.conversation-main{min-width:0}.conversation-context{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;align-items:center}.conversation-context h2{font-size:1rem;margin-bottom:7px}
.conversation-main .request-conversation{border:0;border-radius:0;padding:0 22px}.conversation-main .chat-thread{margin:0;padding:24px 0;min-height:160px;max-height:52vh;overflow-y:auto;overscroll-behavior:contain;gap:10px}
.conversation-main .chat-bubble{border:0;border-radius:12px;max-width:85%;padding:10px 14px;box-shadow:none}.conversation-main .chat-meta{font-size:.8125rem;margin-bottom:4px}.conversation-main .chat-bubble p{font-size:.95rem;line-height:1.5}.chat-empty{color:var(--muted);text-align:center;padding:30px}
.conversation-composer{border-top:1px solid var(--line);padding:14px 0 12px}.conversation-composer .field>span{font-size:.8125rem;color:var(--muted)}.conversation-composer textarea{min-height:70px;resize:vertical}.conversation-main .chat-compose-actions{border:0;margin-top:8px;padding-top:0}
.conversation-read-tools{font-size:.8125rem;color:var(--muted);padding-bottom:12px}.conversation-case-details{border-top:1px solid var(--line)}.conversation-case-details>summary,.report-work-details>summary{padding:16px 22px;font-weight:650;cursor:pointer}.conversation-case-body{padding:0 22px 20px}.conversation-case-body .card{border:0;box-shadow:none;border-radius:0;margin:0}.conversation-case-body .card-inner{padding:14px 0}.conversation-case-body .form-actions{padding-inline:0}
.conversation-contact{border-bottom:1px solid var(--line);background:var(--paper)}.conversation-contact-open{display:flex;align-items:center;gap:14px;width:100%;padding:18px;text-align:start;background:none;border:0;color:var(--ink);cursor:pointer}.conversation-contact-open:hover,.conversation-topic:hover{background:var(--surface-subtle)}.conversation-contact-copy{min-width:0;flex:1}.conversation-contact-copy>span,.conversation-contact-copy>strong{display:block;overflow-wrap:anywhere}.conversation-contact-copy>span{font-size:.8125rem;color:var(--muted);margin-top:4px}.conversation-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-unread{background:var(--brand);color:var(--paper);border-radius:20px;padding:3px 8px;font-size:.8125rem;font-weight:700}.request-inbox:has(.conversation-contact),.employee-conversations:has(.conversation-contact){display:block;border:1px solid var(--line);border-radius:12px;overflow:hidden}.conversation-contact:last-child{border-bottom:0}.conversation-tools{margin-top:20px}.conversation-tools>summary{padding:12px 0;cursor:pointer}.conversation-start{margin:16px 0}
.conversation-main>.button-back,.conversation-main>.page-head{display:none}.conversation-main>.report-heading{padding:18px 22px;margin:0;border-bottom:1px solid var(--line)}.conversation-main>.state-banner{border-radius:0;border-inline:0;margin:0}.conversation-main .employee-report{display:block}.conversation-main #report-form{border:0;border-radius:0}.conversation-main .answer-first{border:0;margin:0;padding:0}.conversation-main #report-history,.conversation-main #correction-box{margin:12px;border:0;box-shadow:none}.conversation-main .office-layout{padding:16px;display:block}.conversation-main .report-work-details{border-top:1px solid var(--line)}
@media(max-width:900px){.conversation-layout{grid-template-columns:minmax(0,1fr)}.conversation-topic-picker{border-inline-end:0;border-bottom:1px solid var(--line);padding:4px 10px}.conversation-topics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));max-height:180px;overflow:auto}.conversation-person{padding:14px 16px}.conversation-context{padding:14px 16px}.conversation-main .request-conversation{padding-inline:16px}.conversation-main .chat-thread{max-height:46vh}.conversation-case-body{padding-inline:16px}}
@media(max-width:600px){.conversation-workspace{border-radius:12px}.conversation-person{gap:10px}.conversation-person h1{font-size:1rem}.conversation-main .chat-bubble{max-width:92%}.conversation-main .chat-compose-actions .button{width:auto;min-width:120px}.conversation-topic{min-height:48px}.conversation-contact-open{padding:14px;gap:10px}}

/* Primary work and advance actions; secondary absence requests stay discoverable. */
.home-advance{grid-column:1/-1;border-color:var(--brand);color:var(--brand)}
.conversation-start{display:flex;flex-wrap:wrap;gap:12px}
.conversation-topic-count{display:block;font-size:.8125rem;color:var(--muted);margin-top:3px}
.conversation-context{flex-wrap:wrap}.conversation-contact-open{font:inherit}.conversation-topic{font-family:inherit}
.conversation-topic.is-active{box-shadow:none;border-inline-start:3px solid var(--brand)}
.digitized-export{padding:16px 0;display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-block-end:1px solid var(--line);margin-block-end:20px}.digitized-export p{flex:1 1 240px;margin:0}
@media(max-width:600px){.conversation-start>.button{flex:1 1 100%}.conversation-context>.button{width:100%}}

/* People and topics stay recognisable independently of status colours. */
.conversation-person-identity{min-width:0;flex:1;overflow-wrap:anywhere}
.conversation-person-label{display:block;font-size:.8125rem;font-weight:600;color:var(--muted);margin-bottom:3px}
.conversation-person .conversation-person-identity h1{font-size:1.25rem;line-height:1.35;overflow-wrap:anywhere}
.conversation-person>.button{flex-shrink:0}
.conversation-category{--category-ink:var(--topic-general-ink);--category-bg:var(--topic-general-bg);display:inline-flex;align-items:baseline;gap:7px;max-width:100%;padding:5px 9px;border-radius:6px;background:var(--category-bg);color:var(--category-ink);font-size:.8125rem;line-height:1.45;font-weight:700;vertical-align:middle;text-align:start}
.conversation-category>span:last-child{min-width:0;overflow-wrap:anywhere}
.category-dot{display:inline-block;flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:currentColor}
.conversation-category[data-category="hours"]{--category-ink:var(--topic-hours-ink);--category-bg:var(--topic-hours-bg)}
.conversation-category[data-category="leave"]{--category-ink:var(--topic-leave-ink);--category-bg:var(--topic-leave-bg)}
.conversation-category[data-category="sickness"]{--category-ink:var(--topic-sickness-ink);--category-bg:var(--topic-sickness-bg)}
.conversation-category[data-category="advance"]{--category-ink:var(--topic-advance-ink);--category-bg:var(--topic-advance-bg)}
.conversation-category[data-category="deletion"]{--category-ink:var(--topic-deletion-ink);--category-bg:var(--topic-deletion-bg)}
.conversation-contact-copy>.conversation-contact-topic{margin-block:6px}
.conversation-topic>span:first-child{min-width:0}
.conversation-topic .conversation-category{font-size:.8125rem}
.conversation-topic.is-active{border-inline-start:3px solid var(--brand);outline:1px solid var(--line);background:var(--paper)}
.conversation-context .conversation-category{font-size:.9375rem}
.conversation-main .chat-meta{display:flex;flex-wrap:wrap;column-gap:12px;row-gap:3px}
.conversation-main .chat-meta strong{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){.conversation-person{flex-wrap:wrap;align-items:flex-start}.conversation-person-identity{flex-basis:calc(100% - 58px)}.conversation-person>.button{margin-inline-start:52px;min-height:44px}.conversation-person .conversation-person-identity h1{font-size:1.125rem}.conversation-category{padding:4px 7px}}
@media(forced-colors:active){.conversation-category{background:Canvas;color:CanvasText;border:1px solid CanvasText}.category-dot{background:CanvasText}.conversation-topic.is-active{border-inline-start-color:Highlight;outline-color:Highlight}}

/* Office work can be finished without a second message or hidden mandatory form. */
.request-workflow,.request-decision-panel{padding:16px 22px;border-bottom:1px solid var(--line)}
.request-workflow>p{margin:0 0 12px;font-size:.875rem;color:var(--text)}
.request-workflow-actions{display:flex;flex-wrap:wrap;gap:10px}.request-workflow-actions:empty{display:none}
.request-decision-panel h2{font-size:1rem}.request-decision-panel .form-actions{padding:12px 0 0;border:0}
.request-workflow .state-banner{color:var(--warning)}
@media(max-width:600px){.request-workflow,.request-decision-panel{padding:14px 16px}.request-workflow-actions>.button{flex:1 1 100%}}

/* Office handling is separate from the message composer; both remain reachable on small screens. */
.request-workflow{background:var(--paper)}
.request-workflow .workflow-help{margin:10px 0 0;color:var(--muted);font-size:.8125rem}
.request-workflow-actions .button{min-height:44px;white-space:normal}
.request-workflow .button:disabled{opacity:.62;cursor:not-allowed}
@media(max-width:600px){.request-workflow-actions>.button{flex:1 1 160px}.request-workflow{padding-block:12px}.request-workflow>p{line-height:1.45}}

.office-worklist,.request-inbox{display:grid;gap:0}.office-case-board{margin-block:14px 24px}.office-case-board>.button{margin-top:14px}.office-case-row{border-bottom:1px solid var(--line);min-width:0}.office-case-open{display:grid;grid-template-columns:minmax(140px,1fr) minmax(160px,1.4fr) minmax(140px,1fr) auto auto;gap:16px;align-items:center;width:100%;min-height:84px;padding:16px;border:0;background:var(--paper);color:var(--text);font:inherit;text-align:start;cursor:pointer}.office-case-open:hover{background:var(--surface-subtle)}.office-case-open:focus-visible{outline:3px solid var(--brand);outline-offset:-3px}.office-case-person,.office-case-subject,.office-case-next{display:grid;gap:5px;min-width:0;overflow-wrap:anywhere}.office-case-person small,.office-case-next small{font-size:.75rem;color:var(--muted)}.office-case-next>strong{font-size:.875rem}.office-case-subject .conversation-category{justify-self:start}.office-case-open .conversation-preview{font-size:.8125rem}.office-waiting{margin-block:18px;border-top:1px solid var(--line);padding-top:12px}.office-waiting>summary{cursor:pointer;font-weight:700;padding:10px 0}.conversation-header-actions{display:flex;gap:8px;flex-wrap:wrap}.employee-request-actions{margin-top:24px}.employee-request-actions h3{font-size:1rem;margin-bottom:12px}.employee-request-actions .button{min-height:48px}.advance-case h2{font-size:1rem}.advance-case>p{margin-top:10px}
@media(max-width:900px){.office-case-open{grid-template-columns:minmax(110px,1fr) minmax(150px,1.3fr) auto;gap:10px}.office-case-next{grid-column:1/3;grid-row:2}.office-case-open>.conversation-unread{grid-column:3;grid-row:1}.office-case-open>.ui-icon{grid-column:3;grid-row:2}}
@media(max-width:600px){.office-case-open{grid-template-columns:minmax(0,1fr) auto;padding:14px 10px}.office-case-person{grid-column:1}.office-case-subject{grid-column:1;grid-row:2}.office-case-next{grid-column:1;grid-row:3}.office-case-open>.conversation-unread{grid-column:2;grid-row:1}.office-case-open>.ui-icon{grid-column:2;grid-row:3}.conversation-header-actions{width:100%}.conversation-header-actions .button{flex:1 1 140px}.employee-request-actions .button{flex:1 1 100%}}

/* Source-only digitization: readable results before optional bookkeeping. */
.digitized-result{margin-block:var(--space-4,16px)}
.digitized-result h3{margin-block-start:24px}.digitized-table{min-width:620px}.digitized-table th,.digitized-table td{vertical-align:top;overflow-wrap:anywhere}.digitized-table .pill{display:table;margin-block-start:8px}.digitized-days{min-width:150px}.digitized-days>div{display:flex;justify-content:space-between;gap:16px;padding-block:4px}.digitized-days dd{margin:0}.digitized-sources{list-style:none;padding:0;margin:0}.digitized-sources>li{display:flex;justify-content:space-between;align-items:center;gap:16px;border-block-start:1px solid var(--line);padding-block:16px}.digitized-sources>li>div{min-width:0;overflow-wrap:anywhere}.digitized-sources .button{min-height:44px}.digitized-notes{margin-block:16px}.digitized-notes li{margin-block:12px;overflow-wrap:anywhere}#digitized-accounting>summary,#digitized-person>summary{padding:20px;cursor:pointer;min-height:48px;font-weight:600}
@media(max-width:700px){.digitized-sources>li{display:block}.digitized-sources .split-actions{margin-block-start:12px;display:flex;flex-wrap:wrap}.digitized-result .split-actions .button{flex:1 1 190px}.digitized-result h2{font-size:1.2rem}}

/* .16: explain cross-month payroll work before the selected month's statistics. */
.pay-work{margin-block:4px 22px;overflow:hidden}
.pay-work-heading{padding:20px 24px 14px;border-block-end:1px solid var(--line)}
.pay-work-heading h2{display:flex;align-items:center;gap:10px;margin:0;font-size:1.125rem}
.pay-work-heading h2 .nav-count{position:static;flex:none;min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}
.pay-work-heading p{margin-block:7px 0}.pay-work-context{color:var(--ink);font-size:.875rem}
.pay-work-list{list-style:none;margin:0;padding:0}
.pay-work-row{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:center;padding:18px 24px}
.pay-work-row+.pay-work-row{border-block-start:1px solid var(--line)}
.pay-work-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--neutral-bg);color:var(--ink)}
.pay-work-failed{color:var(--warning);background:var(--warning-bg)}
.pay-work-copy{min-width:0;overflow-wrap:anywhere}.pay-work-copy h3{font-size:1rem;line-height:1.4;margin:0}
.pay-work-copy p{margin-block:4px 0;font-size:.875rem;line-height:1.5}.pay-work-meta{font-weight:650;color:var(--ink)}
.pay-work-detail{color:var(--muted)}.pay-work-names{display:block;margin-block-start:3px}
.pay-work-row>.button{min-height:44px}.pay-work-more{border-block-start:1px solid var(--line)}
.pay-work-more>summary{min-height:48px;padding:14px 24px;font-weight:650;cursor:pointer}
.pay-work-empty{display:flex;gap:8px;align-items:center;margin-block:0 18px;color:var(--muted);font-size:.875rem}
.pay-work-partial{padding:0 24px 16px}
@media(max-width:600px){.pay-work-heading{padding:16px}.pay-work-row{padding:16px;grid-template-columns:32px minmax(0,1fr);gap:8px 10px}.pay-work-icon{width:32px;height:32px}.pay-work-row>.button{grid-column:2;justify-self:start}.pay-work-more>summary{padding-inline:16px}}
@media print{.pay-work,.pay-work-empty{display:none}}

/* .17: keep upload identity and sibling documents visible while one page is reviewed. */
.ts-upload-context{margin-block:12px 20px}.ts-upload-context .field{margin-block-start:12px}.ts-upload-context select{width:100%;min-width:0;min-height:44px}
.ts-uploaded-files{margin-block:20px}.ts-uploaded-list{list-style:none;margin:16px 0;padding:0}
.ts-uploaded-file{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding-block:16px}
.ts-uploaded-file+.ts-uploaded-file{border-block-start:1px solid var(--line)}
.ts-uploaded-file h3{font-size:1rem;margin:0;overflow-wrap:anywhere}.ts-uploaded-file p{margin-block:5px 0;overflow-wrap:anywhere}
.ts-uploaded-file .split-actions{margin:0}.ts-uploaded-file .button{min-height:44px}.ts-delete-reason{max-width:60ch}
@media(max-width:650px){.ts-uploaded-file{grid-template-columns:minmax(0,1fr);gap:10px}.ts-uploaded-file .split-actions{justify-content:flex-start}.ts-upload-context .ts-section-head{align-items:flex-start;flex-direction:column;gap:12px}}
@media print{.ts-uploaded-files,.ts-upload-context{display:none}}

/* .18: a clear work surface for uploaded timesheets, with secondary administration. */
.ts-work-nav{display:flex;gap:0;border-block:1px solid var(--line);margin:4px 0 22px;padding-block:4px;flex-wrap:wrap}
.ts-work-nav button{flex:1 1 180px;display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 14px;background:transparent;color:var(--ink);text-align:start;font-size:.9rem;font-weight:650;border-radius:var(--r-sm)}
.ts-work-nav button:hover{background:var(--surface-hover)}.ts-work-nav .ui-icon{margin-inline-start:auto;width:16px;height:16px;flex:0 0 16px}
.ts-work-next{display:flex;align-items:center;justify-content:space-between;gap:18px 30px;flex-wrap:wrap;padding:22px 26px;margin-bottom:24px;background:var(--paper);border:1px solid var(--line);border-inline-start:4px solid var(--brand);border-radius:var(--r-md)}
.ts-work-next>div{flex:1 1 280px;min-width:0}.ts-work-next h2{font-size:1.15rem;margin:0 0 5px}.ts-work-next p{margin:0}.ts-work-next .ts-step{margin-bottom:5px}.ts-work-next.attention{border-inline-start-color:var(--warning-edge)}
.ts-work-customer{padding-block:16px;margin-block:14px;border-block:1px solid var(--line)}.ts-work-customer .ts-inline-form{align-items:end;justify-content:flex-start}.ts-work-customer .field{flex:1 1 260px;min-width:0;max-width:520px}.ts-work-customer .state-banner{margin-block:12px 0}
.ts-uploaded-files{margin-block:0 24px}.ts-uploaded-list{margin-block:8px}.ts-uploaded-file{align-items:start;gap:20px;padding-block:20px}.ts-file-main{display:flex;align-items:start;gap:14px;min-width:0}.ts-file-main>div{min-width:0}.ts-file-glyph{display:grid;place-items:center;flex:0 0 38px;height:46px;background:var(--surface-subtle);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--muted)}.ts-file-glyph .ui-icon{width:20px;height:20px}.ts-file-person{font-weight:600;color:var(--ink)}
.ts-file-controls{min-width:185px;max-width:260px;display:grid;gap:8px;justify-items:stretch}.ts-file-manage{font-size:.8125rem}.ts-file-manage>summary{min-height:44px;padding-inline:10px;color:var(--muted);font-weight:500}.ts-file-manage>div{padding:10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-subtle)}.ts-file-manage .button{width:100%;font-size:.875rem}.ts-capture-details{border-block-end:1px solid var(--line);padding-bottom:12px;margin-bottom:16px}.ts-capture-details p{margin-block:8px}.ts-capture-details>summary{font-size:.875rem}
.ts-upload-context{margin-bottom:22px;border-block:1px solid var(--line);padding-block:14px;background:transparent}.ts-context-inner{display:grid;gap:10px}.ts-upload-context h2{font-size:.875rem;font-weight:600;color:var(--muted)}.ts-upload-context .field{max-width:100%}.ts-context-scope{margin:0}.ts-upload-context .field select{min-height:44px;padding-block:8px}
.digitized-source-details{border-block-start:1px solid var(--line);margin-top:20px;padding-top:8px}.digitized-source-details>summary{font-size:.9rem}.digitized-notes{padding:12px 16px;background:var(--warning-bg);border-inline-start:3px solid var(--warning-edge);border-radius:var(--r-sm);color:var(--warning)}
.ts-page-result{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);margin-bottom:20px}.ts-page-result>summary,.ts-months-disclosure>summary{padding:16px 24px}.ts-page-result>.digitized-result{margin:0;border:0;box-shadow:none}.ts-months-disclosure>.card{margin:0;border:0;box-shadow:none}.ts-history-more{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:16px}
.ts-work-next,.ts-uploaded-files,.digitized-result,#digitized-accounting,#ts-batches-title,#ts-months-section{scroll-margin-block-start:24px}
@media(max-width:760px){.ts-work-nav button{flex-basis:100%;padding-inline:10px}.ts-work-next{padding:18px}.ts-work-next>.button{width:100%}.ts-uploaded-file{grid-template-columns:minmax(0,1fr)}.ts-file-controls{max-width:none;width:100%;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.ts-work-customer .ts-inline-form .button{width:100%}.ts-work-customer .field{max-width:none}.ts-upload-context .ts-section-head>.button{width:100%}.ts-file-manage>summary{justify-content:center}.ts-file-manage>div{grid-column:1/-1}}
@media(max-width:700px){.digitized-table{min-width:0;width:100%}.digitized-table thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.digitized-table tbody,.digitized-table tr{display:block}.digitized-table tr{padding:14px 0;border-block-end:1px solid var(--line)}.digitized-table th,.digitized-table td{display:block;text-align:start;padding:6px 0;border:0;white-space:normal}.digitized-table th{font-size:1rem}.digitized-table td[data-label]::before{content:attr(data-label);display:block;font-size:.8125rem;color:var(--muted);font-weight:600;margin-bottom:3px}.digitized-table .pill{display:inline-flex;margin:4px 0}.digitized-days{min-width:0}.digitized-result .table-wrap{overflow:visible}}
@media(max-width:380px){.ts-file-controls{grid-template-columns:minmax(0,1fr)}.ts-file-glyph{display:none}}
@media(forced-colors:active){.ts-work-next,.ts-file-manage>div,.digitized-notes{border:1px solid CanvasText}}
@media print{.ts-work-nav,.ts-work-next,.ts-file-controls{display:none}}

/* .19: keep original identity evidence alongside the editable header. */
.ts-name-identity{border-inline-start:3px solid var(--line);padding:8px 16px;margin-block:16px;background:var(--surface-subtle);overflow-wrap:anywhere}.ts-name-identity p{margin-block:6px 10px}.ts-name-identity .button,.ts-header-edit .button{min-height:44px;white-space:normal}.ts-header-edit{margin-block:12px}.ts-name-identity .ui-icon{vertical-align:middle}.digitized-table .cell-sub{font-size:.75rem;line-height:1.5}
@media(max-width:600px){.ts-header-edit .button,.ts-name-identity .button{width:100%}.ts-name-identity{padding-inline:12px}}

.ts-merge-tools{padding:16px 0 20px;border-block:1px solid var(--line);margin-block:18px}.ts-merge-tools h3{font-size:1rem;margin:0}.ts-merge-tools>.split-actions{align-items:center;margin-block-start:14px}.ts-batch-actions{display:flex;flex-wrap:wrap;gap:8px}.ts-batch-actions .button{white-space:normal;min-height:44px}.ts-batch-actions [aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
@media(max-width:700px){.ts-merge-tools .split-actions{display:grid;grid-template-columns:minmax(0,1fr)}.ts-batch-actions .button{flex:1 1 170px}}

.ts-publication{margin-block:24px;border-inline-start:3px solid var(--brand)}.ts-publication-pages{margin-block:18px;border-block:1px solid var(--line)}.ts-publication-pages>summary{padding-block:14px;min-height:48px;cursor:pointer;font-weight:650}.ts-publication-pages ul{max-height:520px;overflow-y:auto;padding-inline-end:8px}.ts-publication .split-actions{margin-top:16px}.ts-publication .button{min-height:44px}
@media(max-width:650px){.ts-publication .split-actions>.button{flex:1 1 100%}}

/* .20: deletion is available directly beside each upload, including unassigned customers. */
.ts-batch-actions [data-action="ts-delete-batch"]{color:var(--brand);border-color:var(--line)}
.ts-batch-actions [data-action="ts-delete-batch"]:hover{background:var(--brand-soft)}

/* Preserve file-by-file reasons in accessible error notices. */
.form-error{white-space:pre-line}
/* Office work queue: one source per row, logical spacing supports RTL. */
.wd-workspace{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:20px;min-width:0}.wd-tabs{display:flex;gap:8px;flex-wrap:wrap;padding-block-end:16px;border-block-end:1px solid var(--line)}.wd-tabs button{min-height:44px;border:1px solid var(--line);border-radius:12px;background:transparent;padding:10px 14px;font-weight:650;color:inherit;display:flex;align-items:center;gap:10px}.wd-tabs button[aria-pressed=true]{background:var(--brand-soft);color:var(--brand);border-color:var(--brand)}.wd-tabs span{font-variant-numeric:tabular-nums}.wd-filters{padding-block:20px}.wd-search{display:flex;gap:12px;align-items:flex-end}.wd-search .field{flex:1}.wd-filters details{margin-block-start:12px}.wd-filters summary,.wd-context summary{min-height:44px;display:list-item;cursor:pointer;padding-block:12px;font-weight:600}.wd-list{list-style:none;margin:0;padding:0}.wd-row{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(0,1.1fr) auto;gap:16px;align-items:center;padding-block:20px;border-block-start:1px solid var(--line)}.wd-row:first-child{border-block-start:0}.wd-row h2{font-size:1.05rem;margin:8px 0 4px;overflow-wrap:anywhere}.wd-row p{margin:6px 0;overflow-wrap:anywhere}.wd-selection{display:flex;align-items:center;justify-content:center;min-height:44px;cursor:pointer}.wd-selection input{width:22px;height:22px;accent-color:var(--brand)}.wd-category{display:inline-flex;align-items:center;line-height:1.4;border:1px solid transparent;border-radius:8px;padding:4px 8px;font-size:.8125rem;font-weight:650;background:var(--topic-general-bg);color:var(--topic-general-ink)}.wd-sickness{background:var(--topic-sickness-bg);color:var(--topic-sickness-ink)}.wd-leave{background:var(--topic-leave-bg);color:var(--topic-leave-ink)}.wd-advance{background:var(--topic-advance-bg);color:var(--topic-advance-ink)}.wd-hours{background:var(--topic-hours-bg);color:var(--topic-hours-ink)}.wd-documents{background:var(--topic-deletion-bg);color:var(--topic-deletion-ink)}.wd-payroll{background:var(--info-bg);color:var(--info)}.wd-row-action{display:flex;flex-direction:column;gap:10px;align-items:flex-end}.wd-paging{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;border-block-start:1px solid var(--line);padding-block-start:20px}.wd-paging p{margin:0}.wd-empty{padding:30px 10px}.wd-context{border:1px solid var(--line);border-radius:16px;padding:16px 20px;margin-block-end:24px;background:var(--paper)}.wd-context-top{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.wd-context-top>span{margin-inline-start:auto;display:flex;gap:8px;flex-wrap:wrap}.wd-context-title{display:flex;flex-wrap:wrap;gap:8px 20px;margin-block-start:16px;align-items:baseline}.wd-context-title strong{font-size:1.1rem;overflow-wrap:anywhere}.wd-context form{padding-block:12px}.wd-bulk-preview{padding-inline-start:20px}.wd-bulk-preview li{padding-block:8px;overflow-wrap:anywhere}
@media(max-width:1100px){.wd-row{grid-template-columns:44px minmax(0,1fr) auto}.wd-reason{grid-column:2;grid-row:2}.wd-row-action{grid-column:3;grid-row:1/3}.wd-context .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.wd-workspace{padding:12px}.wd-row{grid-template-columns:36px minmax(0,1fr);gap:8px;padding-block:16px}.wd-row-action{grid-column:2;grid-row:3;flex-direction:row;align-items:center;justify-content:space-between}.wd-reason{grid-column:2;grid-row:2}.wd-tabs{gap:6px}.wd-tabs button{flex:1 1 100px}.wd-search{align-items:stretch;flex-direction:column}.wd-context{padding:12px}.wd-context-top>span{margin-inline-start:0;width:100%}.wd-context .field-grid{grid-template-columns:minmax(0,1fr)}.wd-paging .split-actions{width:100%}.wd-paging .button{flex:1;white-space:normal}.wd-row .pill-row{gap:5px}}
@media(forced-colors:active){.wd-category,.wd-tabs button[aria-pressed=true]{border-color:CanvasText}}

/* A reviewed organisational bulk change is immutable until cancelled. */
#wd-bulk-form fieldset { border: 0; padding: 0; margin: 0; min-inline-size: 0; }
#wd-bulk-form fieldset:disabled { opacity: .65; }

/* Keep selection actions beside the list; only the compact action bar sticks. */
.wd-selection-toolbar{position:sticky;inset-block-start:8px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 16px;box-shadow:var(--shadow);margin-block:16px}
.wd-selection-toolbar .split-actions{margin:0}
#wd-bulk-panel{margin-block-end:20px}
.mh-filters{display:grid;grid-template-columns:minmax(160px,2fr) minmax(160px,2fr) repeat(2,minmax(135px,1fr)) auto;gap:12px;align-items:end}
.mh-filters .field{margin:0;min-width:0}.mh-filters input,.mh-filters select{min-width:0;max-width:100%}
.mh-summary{padding-block:18px;border-bottom:1px solid var(--line);font-weight:600}
.mh-list,.mh-weeks{list-style:none;margin:0;padding:0}
.mh-list>li{padding-block:20px;border-bottom:1px solid var(--line)}
.mh-person{display:flex;justify-content:space-between;align-items:start;gap:16px}.mh-person>div{min-width:0}.mh-person h2{font-size:1rem;margin:0 0 6px}.mh-person p{margin:0;overflow-wrap:anywhere}
.mh-counts{display:flex;gap:8px;flex-wrap:wrap;justify-content:end}.mh-list summary{min-height:44px;padding-block:12px;cursor:pointer;font-weight:600}.mh-weeks{padding-inline-start:16px;border-inline-start:3px solid var(--line)}
.mh-weeks>li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:12px;border-top:1px solid var(--line)}.mh-weeks p{margin:4px 0;overflow-wrap:anywhere}.mh-weeks .button{flex-shrink:0}
@media(max-width:1050px){.mh-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.mh-filters>.button{justify-self:start}}
@media(max-width:650px){.wd-selection-toolbar{padding:12px;inset-block-start:4px}.wd-selection-toolbar .split-actions{width:100%;flex-wrap:wrap}.mh-person,.mh-weeks>li{flex-direction:column;align-items:stretch}.mh-counts{justify-content:start}.mh-filters{grid-template-columns:minmax(0,1fr)}.mh-filters>.button{width:100%}}

.ps-read-details{margin-block-start:12px;border-top:1px solid var(--line)}.ps-read-details summary{min-height:44px;padding-block:12px;cursor:pointer;color:var(--muted);font-size:.875rem}.ps-read-details .meta-grid{margin-block-start:8px}
.mh-seen{margin-block-start:12px}.map-link{margin-block-start:12px}.assignment-description{margin-block-start:12px;overflow-wrap:anywhere}.people-picker{display:grid;grid-template-columns:1fr 2fr auto;gap:16px;align-items:end}.people-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.people-items{list-style:none;margin:16px 0 0;padding:0}.people-items li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:16px;border-bottom:1px solid var(--line);flex-wrap:wrap}.people-items li>div{min-width:0}.people-items p{overflow-wrap:anywhere}.ps-directory{display:grid;gap:12px}
@media(max-width:850px){.people-grid,.people-picker{grid-template-columns:minmax(0,1fr)}.people-picker>.button{width:100%}}

/* Employee-owned missing-week task: one persistent, dated action; never a dismissible toast. */
.hours-missing{border:2px solid var(--brand);border-inline-start-width:7px;background:var(--paper);margin-block:0 24px}
.hours-missing .card-inner{padding:22px}.hours-missing h2{display:flex;gap:12px;align-items:center;font-size:1.2rem}
.hours-missing h2 .icon-triangle{color:var(--brand);width:30px;height:30px;flex-basis:30px;stroke-width:2}
.missing-hours-help{margin-block:10px 4px;color:var(--ink)}.hours-missing .reminder{padding-block:18px;gap:18px}
.hours-missing .missing-week-range{font-weight:700;color:var(--ink);margin-block:4px}.hours-missing .button{min-height:52px}
.week-open .icon-triangle{color:var(--brand)}
@media(max-width:600px){.hours-missing .card-inner{padding:18px 16px}.hours-missing .reminder{align-items:stretch;flex-direction:column}.hours-missing .button{width:100%}}
@media(forced-colors:active){.hours-missing{border-color:CanvasText}.hours-missing .icon-triangle{color:CanvasText}}
