@font-face{font-family:HKP;src:local("Avenir Next"),local("Segoe UI"),local("Helvetica Neue");font-display:swap}
:root{--paper:#fff;--surface:#fff;--surface-strong:#fff;--ink:#292724;--muted:#706b63;--faint:#9a9288;--line:#e5e1dc;--line-soft:#efedea;--accent:#f2542d;--accent-dark:#c93d1d;--accent-soft:#ffeadf;--reference-header:#0046ad;--reference-sidebar:#0046ad;--reference-sidebar-line:#4d82c7;--reference-sidebar-active:#f1f7fb;--reference-sidebar-active-ink:#003a8e;--green:#2f7842;--green-soft:#e9f2e8;--amber:#8b5b18;--amber-soft:#fff0d5;--red:#ae3d30;--red-soft:#fbe8e2;--radius:14px;--shadow:0 16px 38px rgba(58,46,38,.1);--sidebar:232px;--app-header:64px;--bottom-nav:70px;--system-safe-area-bottom:env(safe-area-inset-bottom);--safe-area-bottom:var(--system-safe-area-bottom)}
*{box-sizing:border-box}
html{font-family:HKP,"Avenir Next","Segoe UI",sans-serif;color:var(--ink);background:var(--paper);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}
body{margin:0;min-width:320px;min-height:100dvh;background:var(--paper)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.52}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(242,84,45,.28);outline-offset:2px}
a{color:inherit}
[hidden]{display:none!important}
.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.brand,.boot-brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none}.brand-lockup{display:grid;line-height:1}.ipecom-wordmark{display:block;margin-right:-.015em;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:20px;font-weight:850;letter-spacing:.015em;line-height:.95;text-transform:uppercase}.ipecom-ipe,.ipecom-com{color:#0f172a}.brand-lockup small{margin-top:4px;color:var(--muted);font-size:9px;font-weight:650;letter-spacing:.035em;line-height:1.05;white-space:nowrap}
.brand-mark{position:relative;display:grid;grid-template-columns:repeat(2,9px);grid-template-rows:repeat(2,9px);gap:3px;width:32px;height:32px;padding:4px;border-radius:10px;background:var(--accent)}.brand-mark i{display:block;border:2px solid #fff;border-radius:5px}.brand-mark.large{grid-template-columns:repeat(2,13px);grid-template-rows:repeat(2,13px);gap:4px;width:46px;height:46px;padding:6px;border-radius:14px}.brand-mark.small{grid-template-columns:repeat(2,7px);grid-template-rows:repeat(2,7px);gap:2px;width:25px;height:25px;padding:4px;border-radius:8px}
.eyebrow{margin:0 0 7px;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid var(--line);border-radius:8px;background:var(--surface-strong);font-weight:750;line-height:1.2;transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s,border-color .18s,color .18s}.button>svg{flex:0 0 auto;width:18px;height:18px}.button:hover{border-color:#cdbdad}.button:active{transform:scale(.98)}.button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.button.primary:hover{border-color:var(--accent-dark);background:var(--accent-dark)}.button.secondary{border-color:#efb39f;background:var(--surface-strong);color:var(--accent-dark)}.button.secondary:hover{border-color:var(--accent);background:#fff7f1}.button.ghost{border-color:transparent;background:transparent;color:var(--accent-dark)}.button.wide{width:100%}.button.small{min-height:36px;padding:0 13px;border-radius:7px;font-size:13px}
.icon-button{display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:9px;background:var(--surface-strong);transition:transform .18s,border-color .18s,color .18s}.icon-button:hover{border-color:#efb39f;color:var(--accent-dark)}.icon-button:active{transform:scale(.96)}
.icon-button.previous svg{transform:rotate(180deg)}
.text-action,.back-link{padding:8px;border:0;background:transparent;color:var(--accent-dark);font-size:14px;font-weight:750}.back-link{padding-left:0;text-align:left}
.field{display:grid;min-width:0;gap:7px;color:var(--ink);font-size:13px;font-weight:750}.field input,.field select,.field textarea{width:100%;min-width:0;min-height:48px;padding:11px 13px;border:1px solid var(--line);border-radius:8px;outline:0;background:var(--surface-strong);font-size:16px;font-weight:500;transition:border-color .18s,box-shadow .18s}.field input[type="date"]{display:block;inline-size:100%;min-inline-size:0;max-inline-size:100%;-webkit-appearance:none;appearance:none}.field textarea{min-height:100px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(242,84,45,.14)}.field small{color:var(--muted);font-weight:500;line-height:1.4}.entity-picker{position:relative;display:block;min-width:0}.entity-suggestions{position:absolute;z-index:45;top:calc(100% + 6px);right:0;left:0;display:grid;max-height:224px;overflow-y:auto;border:1px solid #efb39f;border-radius:9px;background:#fff;box-shadow:0 12px 26px rgba(58,46,38,.18)}.entity-suggestion{display:grid;gap:2px;width:100%;padding:12px 13px;border:0;border-bottom:1px solid var(--line-soft);background:#fff;color:var(--ink);font:inherit;text-align:left}.entity-suggestion:last-child{border-bottom:0}.entity-suggestion:active,.entity-suggestion:hover{background:#fff7f1}.entity-suggestion strong{font-size:14px}.entity-suggestion small{font-size:12px}.entity-suggestion-empty{padding:13px;color:var(--muted);font-size:13px;font-weight:500}
.form-stack{display:grid;min-width:0;max-width:100%;gap:17px}.form-grid{display:grid;min-width:0;max-width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-grid>.field{min-width:0;max-width:100%;align-self:start;align-content:start}.form-section{display:grid;gap:15px;padding-top:19px;border-top:1px solid var(--line-soft)}.form-section h3{margin:0;font-size:16px}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:4px}.checkbox-row,.time-status-choice{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.4}.checkbox-row input,.time-status-choice input{width:18px;height:18px;margin:1px 0;accent-color:var(--accent)}.time-status-choice{padding:13px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft)}.time-status-choice span{display:grid;gap:3px}.time-status-choice small{color:var(--muted);font-size:11px}.auth-remember span{display:grid;gap:2px}.auth-remember strong{font-weight:600}.auth-remember small{color:var(--muted);font-size:12px}
.dialog:has(#shiftEditor){width:min(920px,calc(100% - 30px))}.dialog-surface:has(#shiftEditor){padding:23px 26px}.dialog-surface:has(#shiftEditor) .dialog-head{margin-bottom:18px;padding-bottom:15px}.dialog-surface:has(#shiftEditor) .dialog-head h2{font-size:22px}.shift-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.88fr);gap:24px;align-items:start}.shift-editor-basics,.shift-editor-schedule{display:grid;gap:15px;min-width:0}.shift-editor-schedule{padding-left:24px;border-left:1px solid var(--line)}.shift-editor-time{gap:12px;padding-top:0;border-top:0}.shift-editor-time h3{font-size:15px}.shift-editor-time .time-status-choice{padding:11px 12px}.shift-editor-time #fixedTimeFields{display:grid;gap:9px}.shift-editor-time #segmentList{display:grid;gap:9px}.shift-editor-time #addSegment{justify-self:start}.shift-editor-schedule>.form-grid{gap:11px}.shift-editor-schedule .field{gap:5px}.shift-editor-schedule .field input,.shift-editor-schedule .field select{min-height:44px;padding:9px 11px;font-size:14px}.shift-editor-schedule .field small{font-size:10px}.shift-editor-schedule .recurrence-summary{padding:10px 12px;font-size:12px}.shift-editor-basics textarea{min-height:82px}
@media (max-width:860px){.dialog:has(#shiftEditor){width:min(680px,calc(100% - 30px))}.shift-editor-layout{grid-template-columns:1fr;gap:18px}.shift-editor-schedule{padding-top:18px;padding-left:0;border-top:1px solid var(--line);border-left:0}}
.client-worker-selector{gap:13px}.client-worker-selector-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.client-worker-selector-head>div{min-width:0}.client-worker-selector-head p{max-width:56ch;margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.client-worker-clear{flex:0 0 auto;margin:-7px -8px 0 0;font-size:12px}.client-worker-search{gap:6px}.client-worker-search input{min-height:44px}.client-worker-selector-meta{color:var(--accent-dark);font-size:12px;font-weight:750}.client-worker-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:280px;padding:1px 6px 1px 1px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.client-worker-option{display:flex;align-items:center;gap:10px;min-width:0;min-height:44px;padding:9px 11px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:13px;line-height:1.3;cursor:pointer;transition:border-color .16s,background .16s}.client-worker-option:hover{border-color:#cbc8df;background:#fafafe}.client-worker-option:has(input:checked){border-color:var(--accent);background:rgba(0,70,173,.08);color:var(--accent-dark)}.client-worker-option input{flex:0 0 auto;width:18px;height:18px;margin:0;accent-color:var(--accent)}.client-worker-option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.client-worker-empty{margin:0;padding:13px;border:1px dashed var(--line);border-radius:7px;color:var(--muted);font-size:13px;text-align:center}
.dialog:has(#clientEditor){width:min(1040px,calc(100% - 30px))}.dialog-surface:has(#clientEditor){padding:23px 26px 0}.dialog-surface:has(#clientEditor) .dialog-head{margin-bottom:18px;padding-bottom:15px}.dialog-surface:has(#clientEditor) .dialog-head h2{font-size:22px}.client-editor-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(390px,.95fr);gap:28px;align-items:start}.client-editor-main,.client-editor-side{display:grid;gap:16px;min-width:0}.client-editor-side{padding-left:28px;border-left:1px solid var(--line)}.client-editor-layout .form-section{gap:12px;padding-top:15px}.client-editor-main>.form-section:first-child,.client-editor-side>.form-section:first-child{padding-top:0;border-top:0}.client-editor-layout .form-grid{gap:11px 12px}.client-editor-layout .field{gap:5px}.client-editor-layout .field input,.client-editor-layout .field select{min-height:44px;padding:9px 11px;font-size:14px}.client-editor-layout .field small{font-size:10px;line-height:1.35}.client-editor-validity .client-validity-status{grid-column:1/-1}.client-data-boundary{padding:9px 0 9px 12px;border-left:3px solid #d8a748;color:var(--muted);font-size:11px;line-height:1.45}.client-worker-instructions textarea{min-height:72px;padding:10px 11px;font-size:14px}.client-editor-side .client-worker-selector{gap:9px;padding-top:14px}.client-editor-side .client-worker-selector-head p{margin-top:4px;font-size:10px}.client-editor-side .client-worker-search input{min-height:40px}.client-editor-side .client-worker-selector-meta{font-size:11px}.client-editor-side .client-worker-options{gap:5px;max-height:184px}.client-editor-side .client-worker-option{min-height:38px;padding:7px 9px;font-size:12px}.client-editor-side .client-worker-option input{width:16px;height:16px}.client-editor-actions{position:sticky;bottom:0;z-index:2;align-items:center;margin-right:-26px;margin-left:-26px;padding:12px 26px 14px;border-top:1px solid var(--line);background:var(--surface-strong);box-shadow:0 -8px 18px rgba(17,45,91,.08)}
@media (max-width:900px){.dialog:has(#clientEditor){width:min(680px,calc(100% - 30px))}.client-editor-layout{grid-template-columns:1fr;gap:18px}.client-editor-side{padding-left:0;border-left:0}.client-editor-side>.form-section:first-child{padding-top:18px;border-top:1px solid var(--line)}.client-editor-side .client-worker-options{max-height:252px}}
.manager-access-card{display:grid;gap:14px;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.manager-access-toggle span{display:grid;gap:3px}.manager-access-toggle strong{font-size:14px}.manager-access-toggle small{color:var(--muted);font-size:12px}.manager-access-warning{display:grid;gap:8px;padding-top:14px;border-top:1px solid var(--line)}.manager-access-warning>strong{color:var(--red);font-size:14px}.manager-access-warning>p{margin:0;color:var(--ink);font-size:13px;line-height:1.5}.manager-access-warning .field{margin-top:3px}
.inline-message{padding:12px 14px;border-radius:11px;background:var(--green-soft);color:var(--green);font-size:13px;line-height:1.4}.inline-message.error{background:var(--red-soft);color:var(--red)}
.shift-conflict-preview{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;padding:12px 13px;border:1px solid #e5c28c;border-left:4px solid var(--amber);border-radius:8px;background:var(--amber-soft);color:var(--ink)}.shift-conflict-preview>svg{width:18px;height:18px;margin-top:1px;color:var(--amber)}.shift-conflict-preview>span{display:grid;gap:5px}.shift-conflict-preview strong{color:var(--amber);font-size:13px}.shift-conflict-preview ul{display:grid;gap:5px;margin:0;padding:0;list-style:none;font-size:12px;line-height:1.4}.shift-conflict-preview li{display:flex;align-items:center;justify-content:space-between;gap:10px}.shift-conflict-preview li>span{min-width:0}.shift-conflict-preview li .button{flex:0 0 auto;min-height:30px;padding:0 10px;background:#fff;font-size:11px}.shift-conflict-preview small{color:var(--muted);font-size:11px;line-height:1.45}
.password-field{position:relative}.password-field input{padding-right:70px}.password-field button{position:absolute;right:7px;top:7px;height:34px;padding:0 9px;border:0;background:transparent;color:var(--accent-dark);font-size:12px;font-weight:800}
.powered-by{margin:0;color:var(--faint);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}

/* Required Apple installation gate */
.pwa-install-gate{min-height:100dvh;background:var(--reference-sidebar);color:#fff}.pwa-install-gate-shell{display:grid;align-content:start;width:min(100%,380px);min-height:100dvh;margin:0 auto;padding:calc(48px + env(safe-area-inset-top)) 24px calc(30px + env(safe-area-inset-bottom));animation:auth-enter .38s cubic-bezier(.16,1,.3,1) both}.pwa-install-brand{display:grid;justify-items:center}.pwa-install-brand>img{display:block;width:min(176px,52vw);height:auto}.pwa-install-brand>span{margin-top:9px;font-size:17px;line-height:1.2}.pwa-install-intro{margin-top:clamp(48px,8vh,72px)}.pwa-install-intro .eyebrow,.pwa-install-dialog-copy .eyebrow{margin-bottom:9px;color:rgba(255,255,255,.72);font-size:10px;letter-spacing:.09em}.pwa-install-intro h1{max-width:13ch;margin:0;color:#fff;font-size:29px;font-weight:600;letter-spacing:-.035em;line-height:1.05}.pwa-install-intro>p:last-child{margin:13px 0 0;color:rgba(255,255,255,.78);font-size:13px;line-height:1.5}.pwa-install-steps{display:grid;margin:24px 0 0;padding:0;border-top:1px solid rgba(255,255,255,.24);list-style:none}.pwa-install-steps li{display:grid;grid-template-columns:31px minmax(0,1fr);align-items:start;gap:12px;padding:15px 0;border-bottom:1px solid rgba(255,255,255,.18)}.pwa-install-steps li.has-share-icon{grid-template-columns:31px minmax(0,1fr) 30px}.pwa-install-steps b{display:grid;place-items:center;width:29px;height:29px;border:1px solid rgba(255,255,255,.64);border-radius:50%;font-size:12px}.pwa-install-steps span{display:grid;gap:3px;padding-top:1px}.pwa-install-steps strong{font-size:14px;line-height:1.35}.pwa-install-steps small{color:rgba(255,255,255,.7);font-size:11px;line-height:1.45}.pwa-share-glyph{align-self:center;width:28px;height:28px;color:#fff;stroke-width:1.8}.pwa-install-finish{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:13px;margin-top:18px;padding:13px 14px;border:1px solid rgba(255,255,255,.28);border-radius:13px;background:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.pwa-install-finish img{display:block;width:48px;height:48px;border-radius:12px}.pwa-install-finish span{display:grid;gap:3px}.pwa-install-finish strong{font-size:13px}.pwa-install-finish small{color:rgba(255,255,255,.72);font-size:10px;line-height:1.4}.pwa-install-visual-help{margin-top:15px;border-bottom:1px solid rgba(255,255,255,.2)}.pwa-install-visual-help summary{min-height:44px;padding:12px 1px;color:#fff;font-size:12px;font-weight:600;cursor:pointer}.pwa-install-visual-help>img{display:block;width:100%;height:auto;margin:4px 0 18px;border-radius:12px;background:#fff}.pwa-install-gate-foot{display:grid;justify-items:center;gap:18px;padding-top:13px}.pwa-install-gate-foot .text-action{min-height:44px;color:#fff}.pwa-install-gate-foot>img{display:block;width:min(92px,28vw);height:auto;opacity:.92}

/* Login */
.auth-page{background:#f7f5f2}.auth-layout{display:grid;place-items:center;min-height:100dvh;padding:clamp(24px,5vw,56px) 20px}.auth-shell{display:grid;justify-items:center;gap:24px;width:min(100%,460px)}.auth-logo{align-items:center}.auth-logo .ipecom-wordmark{font-size:24px}.auth-logo .brand-lockup small{font-size:10px}.auth-card{width:100%;padding:36px;border:1px solid #e8e3dd;border-radius:14px;background:var(--surface);box-shadow:0 18px 48px rgba(58,46,38,.09)}.auth-form-wrap{width:100%}.auth-heading{margin-bottom:30px}.auth-heading h1{margin:0;font-size:30px;letter-spacing:-.045em}.auth-heading>p:last-child{margin:10px 0 0;color:var(--muted);line-height:1.5}.auth-skeleton{display:grid;gap:18px}.auth-skeleton span{height:49px;border-radius:8px;background:linear-gradient(90deg,#f1eeea 20%,#fff 45%,#f1eeea 70%);background-size:220% 100%;animation:shimmer 1.35s infinite}.auth-skeleton span:last-child{margin-top:6px;background:linear-gradient(90deg,#ffd4c4 20%,#ffe9df 45%,#ffd4c4 70%);background-size:220% 100%}
@keyframes shimmer{to{background-position:-220% 0}}

/* Shell */
.boot-screen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;align-content:center;gap:24px;min-height:100dvh;padding:calc(32px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom));background:var(--reference-sidebar);color:#fff;text-align:center}.boot-logo{display:block;width:clamp(168px,28vw,224px);height:auto;max-height:42px;object-fit:contain}.boot-screen p{margin:0;color:rgba(255,255,255,.86);font-size:13px;font-weight:500;letter-spacing:.015em}.boot-screen[aria-busy="false"] .opening-spinner{display:none}
.app-shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);grid-template-rows:var(--app-header) minmax(0,1fr);grid-template-areas:"header header" "sidebar main";min-height:100dvh}.worker-header-backdrop{display:none}.sidebar{grid-area:sidebar;position:sticky;top:var(--app-header);display:flex;flex-direction:column;height:calc(100dvh - var(--app-header));padding:14px 10px 18px;border-right:1px solid #003581;background:var(--reference-sidebar);color:#fff;box-shadow:4px 0 18px rgba(0,58,142,.1)}.desktop-nav{display:grid;gap:3px}.nav-button{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 13px;border:0;border-radius:3px;background:transparent;color:rgba(255,255,255,.82);font-size:14px;font-weight:720;text-align:left;transition:background .18s,color .18s,transform .18s}.nav-button:hover{background:rgba(255,255,255,.08);color:#fff}.nav-button:active{transform:scale(.985)}.nav-button.is-active{background:var(--reference-sidebar-active);color:var(--reference-sidebar-active-ink);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}.nav-button svg{width:19px;height:19px;stroke-width:1.7}.nav-badge{margin-left:auto;display:grid;place-items:center;min-width:21px;height:21px;padding:0 6px;border-radius:20px;background:#fff;color:var(--reference-sidebar-active-ink);font-size:11px}.nav-button.is-active .nav-badge{background:var(--reference-sidebar-active-ink);color:#fff}.sidebar>.powered-by{margin-top:auto;padding:16px 10px 0;border-top:1px solid var(--reference-sidebar-line);color:rgba(255,255,255,.55);font-size:10px;letter-spacing:.09em;text-transform:uppercase}
.avatar{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:#f4d4c5;color:#7d351f;font-size:12px;font-weight:850;letter-spacing:.03em;overflow:hidden}.avatar img,.header-avatar img,.employee-profile-avatar img,.worker-profile-avatar img{display:block;width:100%;height:100%;object-fit:cover}.header-avatar{width:39px;height:39px;background:#fff;color:var(--accent-dark);box-shadow:0 1px 4px rgba(115,42,18,.16);overflow:hidden}
.main-shell{grid-area:main;min-width:0}.app-header{grid-area:header;position:sticky;top:0;z-index:20;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr) auto;align-items:center;height:var(--app-header);min-height:var(--app-header);padding:0;border-bottom:1px solid #003a8e;background:var(--reference-header);color:#fff;box-shadow:0 2px 7px rgba(0,58,142,.22)}.header-brand{align-self:stretch;padding:0 20px;border-right:1px solid rgba(255,255,255,.13)}.header-logo-image{display:block;width:128px;height:auto;max-height:28px;object-fit:contain}.header-context{min-width:0;padding:0 38px}.app-header .eyebrow{display:none}.app-header h1{margin:0;color:#fff;font-size:16px;font-weight:800;letter-spacing:-.02em}.header-account{align-self:stretch;display:flex;align-items:stretch}.profile-trigger{display:grid;grid-template-columns:36px minmax(90px,auto) 14px;align-items:center;gap:9px;min-width:178px;padding:0 15px;border:0;background:transparent;color:#fff;text-align:left;transition:background .18s}.profile-trigger:hover,.profile-trigger[aria-expanded="true"]{background:rgba(255,255,255,.08)}.profile-trigger:active{transform:none}.profile-trigger-copy{display:grid;min-width:0}.profile-trigger-copy strong,.profile-trigger-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-trigger-copy strong{font-size:12px}.profile-trigger-copy small{margin-top:2px;color:#fff;font-size:11px;font-weight:700}.profile-chevron{width:14px;height:14px;transform:rotate(90deg);transition:transform .18s}.profile-trigger[aria-expanded="true"] .profile-chevron{transform:rotate(-90deg)}.header-avatar{width:36px;height:36px;background:#fff;color:var(--reference-header);box-shadow:0 0 0 2px rgba(255,255,255,.2)}.header-logout{display:grid;place-items:center;width:58px;padding:0;border:0;border-left:1px solid rgba(255,255,255,.13);background:transparent;color:#fff;transition:background .18s}.header-logout:hover{background:rgba(255,255,255,.08)}.header-logout:active{transform:none}.header-logout svg{width:23px;height:23px}.profile-menu{position:absolute;top:calc(100% - 3px);right:61px;z-index:30;display:grid;width:236px;padding:15px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);box-shadow:0 16px 34px rgba(33,35,34,.18)}.profile-menu strong{font-size:14px}.profile-menu span{margin-top:4px;color:var(--muted);font-size:12px;overflow-wrap:anywhere}.connection-banner{margin:16px clamp(18px,4vw,54px) 0;padding:11px 14px;border-radius:8px;background:var(--amber-soft);color:var(--amber);font-size:13px}.view-root{width:min(100%,1440px);margin:0 auto;padding:clamp(22px,4vw,54px);padding-bottom:70px}.mobile-nav{display:none}
.worker-notifications-header-button{display:none}
.profile-menu-guide,.profile-menu-logout{align-items:center;gap:9px;width:100%;min-height:44px;margin-top:13px;padding:10px 0 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--accent-dark);font-size:12px;font-weight:800;text-align:left}.profile-menu-guide{display:flex}.profile-menu-guide[hidden]{display:none}.profile-menu-guide svg,.profile-menu-logout svg{width:18px;height:18px}.profile-menu-guide span,.profile-menu-logout span{margin:0;color:inherit;font-size:inherit}.profile-menu-logout{display:none}
.profile-menu-identity{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:11px}.profile-menu-identity-copy{display:grid;min-width:0}.profile-menu-avatar{width:40px;height:40px;background:var(--accent-soft);color:var(--accent-dark)}
.page-lead{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:28px}.page-lead h2{margin:0;font-size:clamp(24px,3vw,36px);letter-spacing:-.05em}.page-lead p{max-width:620px;margin:8px 0 0;color:var(--muted);line-height:1.5}.lead-actions{display:flex;gap:9px;flex-shrink:0}
.view-root>section,.view-root>div{animation:view-enter .28s cubic-bezier(.16,1,.3,1) both}@keyframes view-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.status-pill{display:inline-flex;align-items:center;min-height:auto;padding:0;background:transparent;color:var(--muted);font-size:10px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.status-pill.published{background:transparent;color:var(--green)}.status-pill.draft{background:transparent;color:var(--amber)}.status-pill.warning{background:transparent;color:var(--red)}
.empty-state{display:grid;justify-items:start;gap:7px;padding:38px 0;border-top:1px solid var(--ink)}.empty-state .empty-icon{display:grid;place-items:center;width:28px;height:28px;color:var(--muted)}.empty-state h3{margin:8px 0 0;font-size:19px}.empty-state p{max-width:44ch;margin:0;color:var(--muted);line-height:1.5}.loading-list{display:grid;gap:1px;background:var(--line-soft)}.loading-row{height:76px;background:linear-gradient(90deg,var(--surface) 20%,#faf7f2 45%,var(--surface) 70%);background-size:220% 100%;animation:shimmer 1.35s infinite}

/* Manager home */
.home-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;padding-bottom:27px;border-bottom:1px solid var(--line)}.home-intro h2{margin:0;font-size:clamp(31px,4vw,44px);letter-spacing:-.055em}.home-intro p:last-child{margin:8px 0 0;color:var(--muted)}.home-actions{display:flex;gap:9px;flex:0 0 auto}.home-actions .button{display:flex;align-items:center;justify-content:center;gap:8px}.home-actions svg{width:18px;height:18px}.attention-section.has-issues{margin-top:34px}.home-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.attention-section .home-section-head{align-items:flex-end;margin-bottom:13px}.home-section-head h2{margin:0;font-size:24px;letter-spacing:-.035em}.home-section-head p:last-child{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.attention-total{flex:0 0 auto;padding-bottom:2px;color:var(--muted);font-size:12px;font-weight:750}.attention-list{border-top:1px solid var(--ink)}.attention-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:14px;width:100%;padding:15px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .18s,transform .18s}.attention-row:hover{background:#faf9f7}.attention-row:active{transform:scale(.995)}.issue-type{align-self:start;padding-top:2px;color:var(--accent-dark);font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.attention-row>svg{width:18px;height:18px;color:var(--faint)}.home-clear-status{display:flex;align-items:center;gap:11px;margin-top:34px;padding:16px 2px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.clear-mark{display:grid;place-items:center;width:15px;height:15px}.clear-mark i{width:7px;height:7px;border-radius:50%;background:var(--green)}.home-clear-status>span:last-child{display:grid;gap:3px}.home-clear-status strong{font-size:14px}.home-clear-status small{color:var(--muted);font-size:12px}.today-section{margin-top:38px}.today-section>.home-section-head{align-items:flex-end;margin-bottom:13px}.section-action,.list-action{display:flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;color:var(--accent-dark);font-size:13px;font-weight:800}.section-action{padding:8px 0}.section-action svg,.list-action svg{width:16px;height:16px}.today-list{border-top:1px solid var(--ink)}.today-row{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:15px;width:100%;padding:17px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .18s,transform .18s}.today-row:hover{background:#faf9f7}.today-row:active{transform:scale(.997)}.today-row time{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}.list-action{width:100%;min-height:49px;border-bottom:1px solid var(--line)}.list-action:hover,.section-action:hover{color:var(--accent)}.calm-empty{display:flex;align-items:center;gap:12px;min-height:86px;padding:16px 2px;border-top:1px solid var(--line)}.calm-empty-icon{display:grid;place-items:center;width:28px;height:28px;color:var(--muted)}.calm-empty>span:last-child{display:grid;gap:4px}.calm-empty strong{font-size:14px}.calm-empty small{color:var(--muted);font-size:12px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:4px 0 13px}.section-heading h2,.section-heading h3{margin:0;font-size:20px;letter-spacing:-.035em}.section-heading button{border:0;background:transparent;color:var(--accent-dark);font-size:13px;font-weight:800}.row-main{min-width:0}.row-main strong{display:block;overflow:hidden;text-overflow:ellipsis;font-size:15px;white-space:nowrap}.row-main span{display:block;margin-top:5px;color:var(--muted);font-size:13px}.row-chevron{display:grid;place-items:center;color:var(--faint)}.row-chevron svg{width:18px;height:18px}.all-clear{display:flex;align-items:flex-start;gap:9px;margin:0;color:var(--muted);font-size:13px;line-height:1.5}.all-clear i{flex:0 0 auto;width:8px;height:8px;margin-top:5px;border-radius:50%;background:var(--green)}
.manager-home-surface{padding:28px 32px 34px;border:1px solid var(--line);border-radius:10px;background:#fff}

.employee-hero + .upcoming-section{margin-top:34px}

/* Calendar */
.calendar-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px}.segmented{display:flex;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--surface-strong);overflow:hidden}.segmented button{position:relative;min-height:39px;padding:0 15px;border:0;border-right:1px solid var(--line-soft);border-radius:0;background:transparent;color:var(--muted);font-size:13px;font-weight:750;transition:background .18s,color .18s,transform .18s}.segmented button:last-child{border-right:0}.segmented button:active{transform:scale(.98)}.segmented button.is-active{background:transparent;color:var(--accent-dark);box-shadow:inset 0 -3px 0 var(--accent)}.period-area{display:flex;align-items:center;gap:10px;margin-left:auto}.calendar-today{min-height:38px;padding:0 11px;border:1px solid #efb39f;border-radius:7px;background:var(--surface-strong);color:var(--accent-dark);font-size:13px;font-weight:800}.period-control{display:flex;align-items:center;gap:8px}.period-control strong{min-width:170px;text-align:center;font-size:14px}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);overflow:hidden;background:var(--surface-strong)}.day-chip{display:grid;justify-items:center;gap:2px;min-height:76px;padding:9px 4px;border:0;border-right:1px solid var(--line-soft);background:transparent;transition:background .18s,transform .18s}.day-chip:last-child{border-right:0}.day-chip:active{transform:scale(.97)}.day-chip span{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase}.day-chip strong{font-size:18px}.day-chip small{min-width:18px;color:var(--faint);font-size:10px;font-weight:800}.day-chip.has-shifts small{color:var(--accent-dark)}.day-chip.is-today strong{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}.day-chip.is-active{background:var(--accent);color:#fff}.day-chip.is-active span,.day-chip.is-active small{color:#fff}
.schedule-surface{border:1px solid var(--line);border-top:0;background:var(--surface-strong)}.selected-day-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 24px;border-bottom:1px solid var(--line-soft)}.selected-day-head>span{display:grid;gap:5px}.selected-day-head strong{font-size:15px;text-transform:capitalize}.selected-day-head small{color:var(--muted);font-size:12px}.selected-day-head .icon-button{width:38px;height:38px;border:0;background:var(--accent);color:#fff}.day-schedule{padding:0 24px}.warning-strip{display:flex;align-items:flex-start;gap:9px;margin:0 0 16px;padding:12px 1px;border-top:1px solid #e2c89f;border-bottom:1px solid #e2c89f;color:var(--amber);font-size:13px;line-height:1.4}.warning-strip svg{flex:0 0 auto;width:18px;height:18px}.calendar-warning{margin:16px 0 0}.calendar-warning>span{display:grid;gap:3px}.calendar-warning strong{font-size:13px}.calendar-warning small{color:inherit;font-size:12px}.schedule-person{display:grid;grid-template-columns:minmax(150px,.25fr) minmax(0,1fr);gap:22px;padding:20px 0;border-bottom:1px solid var(--line-soft)}.schedule-person:last-child{border-bottom:0}.person-label{display:flex;align-items:center;gap:10px}.person-label>span:last-child{display:grid}.person-label strong{font-size:14px}.person-label small{margin-top:3px;color:var(--muted);font-size:11px}.person-shifts{display:grid;gap:0;border-top:1px solid var(--line)}.shift-bar{display:grid;grid-template-columns:112px minmax(0,1fr) auto;align-items:center;gap:13px;width:100%;min-height:61px;padding:11px 2px;border:0;border-bottom:1px solid var(--line);background:var(--surface-strong);text-align:left;transition:background .18s,transform .18s}.shift-bar:hover{background:#faf9f7}.shift-bar:active{transform:scale(.996)}.shift-bar time{font-variant-numeric:tabular-nums;font-size:13px;font-weight:800}.shift-bar strong{display:block;overflow:hidden;text-overflow:ellipsis;font-size:14px;white-space:nowrap}.shift-bar small{display:block;margin-top:4px;color:var(--muted)}.shift-bar .row-chevron{width:28px}.mobile-day-list{display:none}.mobile-schedule-group{border-bottom:1px solid var(--line)}.mobile-group-head{display:flex;align-items:flex-start;gap:10px;padding:15px 0 12px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line);background:#faf9f7}.mobile-group-head .avatar{width:34px;height:34px;background:transparent;color:var(--accent-dark)}.mobile-group-head>span:last-child{display:grid;gap:2px}.mobile-group-head strong{font-size:15px}.mobile-group-head .mobile-group-kind{color:var(--accent-dark);font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.mobile-group-head .mobile-group-summary{margin-top:2px;color:var(--muted);font-size:11px}.mobile-shift{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:start;gap:11px;width:100%;padding:14px 1px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left;transition:background .18s,transform .18s}.mobile-shift:last-child{border-bottom:0}.mobile-shift:active{transform:scale(.995)}.mobile-shift time{padding-top:14px;font-size:13px;font-weight:850;font-variant-numeric:tabular-nums}.mobile-shift-main{display:grid;min-width:0;gap:3px}.mobile-shift-main .mobile-row-kind{margin:0;color:var(--faint);font-size:9px;font-weight:800;letter-spacing:.07em;line-height:1.2;text-transform:uppercase}.mobile-shift-main strong{overflow:hidden;text-overflow:ellipsis;font-size:14px;white-space:nowrap}.mobile-shift-main .mobile-shift-detail{margin:1px 0 0;color:var(--muted);font-size:11px;line-height:1.35}.mobile-shift .status-pill{align-self:start;margin-top:12px}
.week-planner-desktop{max-height:calc(100dvh - 268px);overflow:auto;border:1px solid var(--line);background:var(--surface-strong);overscroll-behavior:contain}.week-planner-grid{display:grid;grid-template-columns:220px repeat(7,minmax(154px,1fr));min-width:1298px}.week-planner-head{position:sticky;top:0;z-index:4;min-height:46px;border-right:1px solid #d8dee8;border-bottom:2px solid #8895a8;background:#eef2f7}.week-planner-corner{left:0;z-index:6;display:grid;align-content:center;gap:2px;padding:7px 13px}.week-planner-head>strong{font-size:12px;text-transform:capitalize}.week-planner-head>small{color:var(--muted);font-size:10px;line-height:1.2}.week-planner-day{display:grid;align-content:center;padding:7px 10px}.week-planner-day.is-today{background:#d9e9ff;color:#0049ad;box-shadow:inset 0 3px 0 #0055c8}.week-planner-person{position:sticky;left:0;z-index:2;display:grid;grid-template-columns:34px minmax(0,1fr);align-content:start;align-items:center;gap:9px;min-height:104px;padding:11px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.week-planner-person .avatar{width:34px;height:34px}.week-planner-person>span:last-child{display:grid;min-width:0;gap:4px}.week-planner-person strong{overflow:hidden;text-overflow:ellipsis;font-size:12px;white-space:nowrap}.week-planner-person small{color:var(--muted);font-size:10px;line-height:1.25}.week-planner-person.is-over small{color:var(--red);font-weight:750}.week-planner-person.is-unassigned{background:var(--red-soft);color:var(--red)}.week-planner-person.is-unassigned .avatar{background:#fff;color:var(--red)}.week-planner-cell{position:relative;display:grid;align-content:start;gap:5px;min-height:104px;padding:7px 7px 29px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line);background:#fff}.week-planner-cell.is-today{background:#f3f8ff}.week-planner-cell:nth-child(8n){border-right:0}.week-planner-cell.is-unassigned{background:#fff9f8}.week-planner-shift{position:relative;z-index:1;display:grid;gap:3px;width:100%;min-width:0;padding:6px 7px;border:1px solid var(--line);border-left:4px solid var(--faint);border-radius:5px;background:#fff;text-align:left;transition:background .16s,transform .16s}.week-planner-shift:hover{background:#f7f7fa}.week-planner-shift:active{transform:scale(.985)}.week-planner-shift.is-published{border-left-color:var(--green)}.week-planner-shift.is-draft{border-left-color:var(--amber)}.week-planner-shift.is-warning{border-left-color:var(--red);background:#fff9f8}.week-planner-shift>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px;align-items:baseline}.week-planner-shift time{font-size:10px;font-weight:850;font-variant-numeric:tabular-nums}.week-planner-shift strong{overflow:hidden;text-overflow:ellipsis;font-size:10px;white-space:nowrap}.week-planner-shift small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.week-planner-shift.is-warning small{color:var(--red)}.week-planner-add{position:absolute;z-index:0;inset:0;display:block;width:100%;height:100%;padding:0;border:0;border-radius:0;background:transparent;color:var(--faint);cursor:pointer;transition:background .16s}.week-planner-add:hover{background:#fafafd}.week-planner-add:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.week-planner-add:active{background:var(--accent-soft)}.week-planner-add svg{position:absolute;right:7px;bottom:5px;width:14px;height:14px;padding:4px;border-radius:4px;box-sizing:content-box;opacity:.35;transition:background .16s,color .16s,opacity .16s,transform .16s}.week-planner-cell:hover .week-planner-add svg,.week-planner-add:focus-visible svg{background:var(--accent-soft);color:var(--accent-dark);opacity:1}.week-planner-add:active svg{transform:scale(.92)}.week-planner-mobile{display:none}
.shift-time-suggestion-note{display:block;margin:5px 0 8px;color:var(--accent-dark);font-size:10px;font-weight:700;line-height:1.35}
.mobile-schedule-group.is-employee .mobile-group-head,.mobile-schedule-group.is-client .mobile-group-head{border-color:var(--accent-dark);background:var(--accent);color:#fff}.mobile-schedule-group.is-employee .mobile-group-head .avatar,.mobile-schedule-group.is-client .mobile-group-head .avatar{color:#fff}.mobile-schedule-group.is-employee .mobile-group-kind,.mobile-schedule-group.is-client .mobile-group-kind{color:#fff}.mobile-schedule-group.is-employee .mobile-group-summary,.mobile-schedule-group.is-client .mobile-group-summary{color:rgba(255,255,255,.84)}

/* Lists and admin */
.admin-layout{display:grid;grid-template-columns:minmax(240px,.35fr) minmax(0,.65fr);gap:32px}.admin-list{border-top:1px solid var(--ink)}.admin-list-button{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:14px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.admin-list-button:hover{background:#faf9f7}.admin-list-button.is-active{color:var(--accent-dark)}.admin-list-button .avatar{justify-content:start;width:32px;height:auto;border-radius:0;background:transparent;color:var(--faint)}.admin-list-button>span:nth-child(2){display:grid;min-width:0}.admin-list-button strong{overflow:hidden;text-overflow:ellipsis;font-size:14px;white-space:nowrap}.admin-list-button small{margin-top:4px;color:var(--muted)}.selection-empty{align-self:start;padding:21px 2px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.selection-empty h2{margin:0;font-size:21px;letter-spacing:-.025em}.selection-empty p{margin:7px 0;color:var(--muted);font-size:13px}.detail-panel{align-self:start;padding:21px 2px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.detail-panel h2{margin:0;font-size:25px;letter-spacing:-.035em}.detail-panel>p{margin:8px 0 22px;color:var(--muted)}.detail-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-top:23px;border-top:1px solid var(--line)}.detail-meta div{display:grid;gap:4px;min-height:82px;padding:15px 12px 15px 0;border-bottom:1px solid var(--line)}.detail-meta div:nth-child(odd){border-right:1px solid var(--line)}.detail-meta div:nth-child(even){padding-left:16px}.detail-meta small{color:var(--muted)}.detail-meta strong{font-size:14px}.quota-progress{width:100%;height:5px;margin-top:9px;border:0;background:#ece9e4;overflow:hidden;appearance:none}.quota-progress::-webkit-progress-bar{background:#ece9e4}.quota-progress::-webkit-progress-value{background:var(--accent)}.quota-progress.over::-webkit-progress-value{background:var(--amber)}.quota-progress::-moz-progress-bar{background:var(--accent)}.quota-progress.over::-moz-progress-bar{background:var(--amber)}.search-field{position:relative;margin-bottom:13px}.search-field input{width:100%;height:45px;padding:0 13px;border:1px solid var(--line);border-radius:7px;background:var(--surface)}
.employee-back{display:none}.employee-detail{min-width:0}.employee-detail-head{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:start;gap:15px}.employee-profile-avatar{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#f3eee9;color:var(--accent-dark);font-size:16px;font-weight:850;overflow:hidden}.employee-detail-head .eyebrow{margin:1px 0 5px}.employee-detail-head h2{font-size:28px}.employee-detail-head p:last-child{margin:6px 0 0;color:var(--muted);font-size:13px;overflow-wrap:anywhere}.employee-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:19px}.employee-hours-warning{margin-top:20px;padding:12px 1px;border-top:1px solid #d9b274;border-bottom:1px solid #d9b274;color:var(--amber);font-size:13px;line-height:1.45}.employee-summary{margin-top:20px}.employee-detail-section{margin-top:31px}.employee-section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;padding-bottom:12px;border-bottom:1px solid var(--ink)}.employee-section-head .eyebrow{margin:0 0 5px}.employee-section-head h3{margin:0;font-size:18px;letter-spacing:-.025em}.employee-week-controls{display:flex;align-items:center;gap:7px}.employee-week-controls .icon-button{width:36px;height:36px}.employee-admin-shifts{border-bottom:1px solid var(--line)}.employee-admin-shift{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:13px 1px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left;transition:background .18s,transform .18s}.employee-admin-shift:last-child{border-bottom:0}.employee-admin-shift:hover{background:#faf9f7}.employee-admin-shift:active{transform:scale(.995)}.employee-admin-shift>span:nth-child(2){display:grid;min-width:0;gap:4px}.employee-admin-shift>span:nth-child(2)>strong{overflow:hidden;text-overflow:ellipsis;font-size:13px;white-space:nowrap}.employee-admin-shift small{color:var(--muted);font-size:11px}.employee-shift-date{display:grid;gap:3px}.employee-shift-date strong{color:var(--accent-dark);font-size:11px;text-transform:uppercase}.employee-shift-date small{font-variant-numeric:tabular-nums}.employee-week-total{display:flex;justify-content:space-between;gap:15px;padding:13px 1px;border-bottom:1px solid var(--ink);font-size:13px}.employee-week-total span{color:var(--muted)}.employee-section-empty{padding:17px 1px;color:var(--muted);font-size:13px}.employee-contact-list{margin:0}.employee-contact-list>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:15px;padding:13px 1px;border-bottom:1px solid var(--line)}.employee-contact-list dt{color:var(--muted);font-size:12px}.employee-contact-list dd{margin:0;font-size:13px;font-weight:750;overflow-wrap:anywhere}.employee-absence-list>div{padding:13px 1px;border-bottom:1px solid var(--line)}.employee-absence-list span{display:grid;gap:4px}.employee-absence-list strong{font-size:13px}.employee-absence-list small{color:var(--muted);font-size:12px}.employee-enabled-check{padding-top:4px;border-top:1px solid var(--line)}
.employee-directory .admin-list-button .avatar{place-content:center;width:32px;height:32px;border-radius:50%;background:#f1f7fb;color:#003a8e}
.employee-list-name{display:flex;align-items:center;gap:6px;min-width:0}.employee-list-name strong{min-width:0}.employee-list-account-status{display:block;margin-top:4px;font-size:11px;line-height:1.25}.employee-list-account-status.warning{color:var(--amber)}.employee-list-account-status.published{color:var(--green)}
.employee-app-badge{display:inline-flex;align-items:center;gap:5px;width:max-content;max-width:100%;min-height:19px;margin-top:5px;padding:4px 6px;border-radius:4px;background:var(--reference-header);color:#fff;font-size:9px;font-weight:800;letter-spacing:.015em;line-height:1;white-space:nowrap}.employee-app-badge img{display:block;width:39px;height:auto}.employee-app-badge>span{overflow:hidden;text-overflow:ellipsis}.employee-app-badge.is-compact{flex:none;min-height:16px;margin-top:0;padding:3px 5px;border-radius:3px}.employee-app-badge.is-compact img{width:35px}.employee-detail-head>.employee-app-badge{align-self:start;margin-top:2px}
.bulk-week-section{display:grid;gap:14px;padding-top:3px}.bulk-week-section+.bulk-week-section{padding-top:24px;border-top:1px solid var(--line)}.bulk-section-head{display:flex;align-items:end;justify-content:space-between;gap:18px}.bulk-section-head h3{margin:0;font-size:18px}.bulk-section-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.bulk-section-head>span{color:var(--muted);font-size:12px;font-weight:750}.bulk-existing-list{border-top:1px solid var(--ink)}.bulk-existing-row{display:grid;grid-template-columns:20px 48px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 2px;border-bottom:1px solid var(--line);cursor:pointer}.bulk-existing-row:hover{background:#f7f7fa}.bulk-existing-row.is-unassign{background:#f6f4ec}.bulk-existing-row.is-cancel{background:#fff3f2}.bulk-existing-row input{width:17px;height:17px}.bulk-existing-main{display:grid;gap:3px;min-width:0}.bulk-existing-main strong{overflow:hidden;text-overflow:ellipsis;font-size:13px;white-space:nowrap}.bulk-existing-main small{color:var(--muted);font-size:11px}.bulk-action-label{color:var(--muted);font-size:11px;font-weight:800}.bulk-existing-row.is-unassign .bulk-action-label{color:var(--amber)}.bulk-existing-row.is-cancel .bulk-action-label{color:var(--danger)}.bulk-selection-actions{display:flex;flex-wrap:wrap;gap:8px}.bulk-addition-list{display:grid;gap:10px}.bulk-addition-row{display:grid;grid-template-columns:145px minmax(190px,1fr) 112px 112px 40px;align-items:end;gap:9px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fafafd}.bulk-addition-row .field{gap:5px}.bulk-addition-row .field>span{font-size:10px}.bulk-addition-row input,.bulk-addition-row select{min-height:40px;padding:0 10px}.bulk-remove-row{width:40px;height:40px}.bulk-review{display:grid;gap:4px;padding:13px 15px;border-left:3px solid var(--accent);background:#f3f2fb}.bulk-review strong{font-size:13px}.bulk-review span{color:var(--muted);font-size:12px}
.client-back{display:none}.client-detail{min-width:0}.client-detail-head{display:grid;grid-template-columns:54px minmax(0,1fr);align-items:start;gap:15px}.client-profile-avatar{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#f3eee9;color:var(--accent-dark);font-size:16px;font-weight:850}.client-detail-head .eyebrow{margin:1px 0 5px}.client-detail-head h2{font-size:28px}.client-detail-head p:last-child{margin:6px 0 0;color:var(--muted);font-size:13px}.client-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:19px}.client-actions .button svg{width:16px;height:16px}.client-summary{margin-top:20px}.client-summary div>small+progress{margin-top:8px}.client-visit-list{border-bottom:1px solid var(--line)}.client-visit-row{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:13px 1px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left;transition:background .18s,transform .18s}.client-visit-row:last-child{border-bottom:0}.client-visit-row:hover{background:#faf9f7}.client-visit-row:active{transform:scale(.995)}.client-visit-row>span:nth-child(2){display:grid;min-width:0;gap:4px}.client-visit-row>span:nth-child(2)>strong{font-size:13px;font-variant-numeric:tabular-nums}.client-visit-row small{color:var(--muted);font-size:11px}.client-visit-date{display:grid;gap:3px}.client-visit-date strong{color:var(--accent-dark);font-size:11px;text-transform:uppercase}.client-visit-date small{font-variant-numeric:tabular-nums}.client-instructions{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}.client-instructions>div{min-height:115px;padding:15px 16px 16px 0;border-right:1px solid var(--line)}.client-instructions>div+div{padding-right:0;padding-left:16px;border-right:0}.client-instructions small{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.client-instructions p{margin:8px 0 0;font-size:13px;line-height:1.55;white-space:pre-line}.client-worker-list>div{display:flex;align-items:center;gap:10px;padding:11px 1px;border-bottom:1px solid var(--line)}.client-worker-list .avatar{width:30px;height:30px;background:#f3eee9;color:var(--accent-dark);font-size:10px}.client-worker-list strong{font-size:13px}
.request-list,.notification-list{border-top:1px solid var(--line)}.request-row,.notification-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;width:100%;padding:18px 3px;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;text-align:left}.notification-row:is(button):hover{background:var(--surface)}.notification-row.is-unread{position:relative;padding-left:17px;background:linear-gradient(90deg,var(--accent-soft),transparent 58%)}.notification-row.is-unread::before{position:absolute;top:24px;left:3px;width:7px;height:7px;border-radius:50%;background:var(--accent);content:""}.request-row strong,.notification-row strong{display:block;font-size:14px}.request-row p,.notification-row p{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.request-row time,.notification-row time{color:var(--faint);font-size:11px}

/* Reports */
.reports-lead{margin-bottom:20px}.report-period{display:flex;align-items:center;gap:10px;padding:15px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.report-period>label{display:grid;min-width:190px;text-align:center}.report-period small{color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.report-period input{min-height:30px;padding:0;border:0;background:transparent;font-size:17px;font-weight:800;text-align:center}.report-period .button{margin-left:auto}.report-metrics{display:grid;grid-template-columns:repeat(4,1fr);margin-top:24px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.report-metrics>div{display:grid;gap:6px;padding:17px 18px 17px 0;border-right:1px solid var(--line)}.report-metrics>div+div{padding-left:18px}.report-metrics>div:last-child{border-right:0}.report-metrics small{color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.report-metrics strong{font-size:24px}.report-metrics .has-issues strong{color:var(--amber)}.report-ready,.report-review-warning{display:flex;align-items:flex-start;gap:12px;margin-top:21px;padding:14px 1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.report-ready i{flex:0 0 auto;width:9px;height:9px;margin-top:5px;border-radius:50%;background:var(--green)}.report-review-warning{color:var(--amber)}.report-review-warning svg{flex:0 0 auto;width:21px;height:21px}.report-ready span,.report-review-warning span{display:grid;gap:4px}.report-ready strong,.report-review-warning strong{font-size:13px}.report-ready small,.report-review-warning small{color:var(--muted);font-size:12px;line-height:1.45}.report-issues,.report-employees,.report-output{margin-top:38px}.report-section-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:12px}.report-section-head h3{margin:0;font-size:23px;letter-spacing:-.035em}.report-section-head p:last-child{margin:7px 0 0;color:var(--muted);font-size:13px}.report-section-head>span{color:var(--amber);font-size:13px;font-weight:800}.report-issues>div:nth-child(2),.report-employee-list{border-top:1px solid var(--ink)}.report-issue-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.55fr) 22px;align-items:center;gap:16px;width:100%;padding:15px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.report-issue-row>span:first-child{display:grid;gap:4px}.report-issue-row strong{font-size:13px}.report-issue-row small,.report-issue-row>span:nth-child(2){color:var(--muted);font-size:12px}.report-issue-row>svg{width:18px;height:18px}.report-more{margin:10px 0 0;color:var(--muted);font-size:12px}.report-employee-head,.report-employee-row{display:grid;grid-template-columns:minmax(180px,1fr) 100px 120px 135px 20px;align-items:center;gap:15px}.report-employee-head{padding:0 2px 9px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.report-employee-row{width:100%;padding:15px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.report-employee-row:hover,.report-issue-row:hover{background:#faf9f7}.report-employee-row>span:not(.status-pill){display:grid;gap:4px}.report-employee-row strong{font-size:13px}.report-employee-row small{color:var(--muted);font-size:11px}.report-employee-row>svg{width:18px;height:18px}.report-output-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.report-output-grid article{display:grid;align-content:start;gap:13px;padding:22px 24px 24px 0}.report-output-grid article+article{padding-right:0;padding-left:24px;border-left:1px solid var(--line)}.report-output-grid h4{margin:0;font-size:17px}.report-output-grid p{min-height:42px;margin:0;color:var(--muted);font-size:13px;line-height:1.5}.report-confirm{min-height:57px;padding:9px 0}.report-confirm span{display:grid;gap:3px}.report-confirm strong{font-size:12px}.report-confirm small{color:var(--muted);font-size:11px}.report-security-note{margin:13px 0 0;color:var(--muted);font-size:11px}.report-review-dialog{display:grid;gap:18px}.report-dialog-summary{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.report-dialog-summary span{display:grid;gap:5px;padding:13px 12px 13px 0}.report-dialog-summary span+span{padding-left:12px;border-left:1px solid var(--line)}.report-dialog-summary small{color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase}.report-dialog-summary strong{font-size:16px}

/* Employee */
.worker-greeting{margin-bottom:30px}.employee-hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:34px}.worker-empty{padding:24px 1px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.worker-empty h2{margin:0;font-size:28px;letter-spacing:-.035em}.worker-empty>p:last-child{margin:8px 0 0;color:var(--muted)}.next-shift{padding:23px 2px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line);background:var(--surface-strong);color:var(--ink)}.next-shift .eyebrow{color:var(--accent-dark)}.next-shift h2{margin:0;font-size:32px;letter-spacing:-.04em}.next-shift .time-range{display:block;margin:15px 0 5px;font-size:22px;font-weight:800}.next-shift p{margin:5px 0;color:var(--muted)}.next-shift .button{margin-top:23px;border-color:var(--accent);background:var(--accent);color:#fff}.employee-today{padding:0}.employee-today h2{margin:0;font-size:24px}.employee-today>p{margin:7px 0 18px;color:var(--muted)}.employee-shift-list{border-top:1px solid var(--ink)}.employee-shift-row{display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:15px;width:100%;padding:18px 3px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.employee-shift-row:hover{background:#faf9f7}.employee-shift-row time{font-size:14px;font-weight:850}.employee-shift-row strong{display:block;font-size:15px}.employee-shift-row span{display:block;margin-top:5px;color:var(--muted);font-size:12px}.seen-dot{width:7px;height:7px;margin-top:5px;border-radius:50%;background:var(--accent)}.seen-dot.is-seen{background:var(--line)}.worker-day-group{margin-top:24px}.worker-day-group h3{margin:0 0 9px;color:var(--muted);font-size:12px;font-weight:750;letter-spacing:.07em;text-transform:uppercase}.worker-upcoming-toggle{display:block;margin:22px auto 0}.worker-map-link{justify-self:start}.worker-request-status{display:grid;gap:4px;padding:14px 16px;border-left:3px solid var(--accent);background:var(--accent-soft);font-size:13px}.worker-request-status span{color:var(--muted);line-height:1.45}.worker-request-status.is-resolved{border-color:var(--green);background:#edf7f2}.profile-details{display:grid;gap:0;border-top:1px solid var(--ink)}.profile-detail{display:grid;grid-template-columns:140px 1fr;gap:20px;padding:16px 3px;border-bottom:1px solid var(--line);font-size:14px}.profile-detail span{color:var(--muted)}.worker-profile-actions{display:grid;gap:9px;max-width:460px;padding:24px 0 20px}.worker-profile-actions .button{min-height:52px}.worker-profile-actions p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.worker-profile-session{display:flex;justify-content:flex-end;padding-top:16px;border-top:1px solid var(--line)}

/* Dialog */
.dialog{width:min(680px,calc(100% - 30px));max-height:calc(100dvh - 30px);padding:0;border:0;border-radius:12px;background:transparent;box-shadow:var(--shadow)}.dialog::backdrop{background:rgba(37,36,33,.45);backdrop-filter:blur(3px)}.dialog-surface{padding:25px;background:var(--surface-strong)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--ink)}.dialog-head h2{margin:0;font-size:24px;letter-spacing:-.035em}.dialog-head p{margin:7px 0 0;color:var(--muted);font-size:13px}.segment-row{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}.remove-segment{margin-bottom:3px}.dialog-detail{display:grid;gap:22px}.detail-time{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:800}.detail-address{display:flex;align-items:flex-start;gap:10px;color:var(--muted);line-height:1.5}.instruction-box{padding:15px 1px;border-top:1px solid var(--accent);border-bottom:1px solid var(--line);font-size:14px;line-height:1.55}.dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:9px;padding-top:5px}.toast-region{position:fixed;right:22px;bottom:22px;z-index:60;display:grid;gap:9px}.toast{max-width:350px;padding:13px 15px;border:1px solid var(--line);border-radius:8px;background:var(--surface-strong);box-shadow:var(--shadow);font-size:13px;animation:toast-in .25s cubic-bezier(.16,1,.3,1)}.toast.error{border-color:#e5b6ae;color:var(--red)}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.dialog:has(#managerOnboarding){width:min(820px,calc(100% - 30px))}.dialog-surface:has(#managerOnboarding){padding:0;overflow:hidden}.manager-onboarding{background:#fff}.onboarding-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 26px 15px}.onboarding-top>div{display:flex;align-items:center;gap:10px}.onboarding-top span{color:var(--muted);font-size:12px}.onboarding-top strong{font-size:12px}.onboarding-progress{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;padding:0 26px}.onboarding-progress span{height:3px;background:var(--line);transition:background .25s cubic-bezier(.16,1,.3,1)}.onboarding-progress span.is-active{background:var(--accent)}.onboarding-layout{display:grid;grid-template-columns:190px minmax(0,1fr);min-height:365px;padding:26px}.onboarding-visual{position:relative;display:grid;place-items:center;align-content:center;gap:35px;overflow:hidden;background:var(--accent);color:#fff}.onboarding-visual::after{content:"";position:absolute;right:-55px;bottom:-55px;width:145px;height:145px;border:1px solid rgba(255,255,255,.2);border-radius:50%}.onboarding-visual svg{width:52px;height:52px;stroke-width:1.5}.onboarding-visual span{font-size:48px;font-weight:600;letter-spacing:-.06em;opacity:.35}.onboarding-copy{align-self:center;padding:12px 18px 12px 40px;animation:onboarding-in .28s cubic-bezier(.16,1,.3,1)}.onboarding-copy>p:first-child{margin:0 0 9px;color:var(--accent-dark);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.onboarding-copy h2{max-width:18ch;margin:0;font-size:31px;line-height:1.08;letter-spacing:-.035em}.onboarding-copy h2+p{max-width:55ch;margin:17px 0 0;color:var(--muted);font-size:14px;line-height:1.6}.onboarding-copy ul{display:grid;gap:10px;margin:22px 0 0;padding:18px 0 0;border-top:1px solid var(--line);list-style:none}.onboarding-copy li{position:relative;padding-left:20px;font-size:13px;line-height:1.5}.onboarding-copy li::before{content:"";position:absolute;top:.55em;left:1px;width:7px;height:7px;border:2px solid var(--accent);border-radius:50%}.onboarding-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 26px 22px;border-top:1px solid var(--line)}.onboarding-actions>div{display:flex;gap:9px}.onboarding-actions .button{min-width:112px}.onboarding-actions .text-action{padding-left:0}@keyframes onboarding-in{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.onboarding-copy{animation:none}.onboarding-progress span{transition:none}}
.button.danger{border-color:var(--red);background:var(--red);color:#fff}.button.danger:hover{background:#a92c1d}.button.danger-secondary{border-color:#e3a49b;background:transparent;color:var(--red)}.button.danger-secondary:hover{background:var(--red-soft)}.dialog-actions .push-left{margin-right:auto}.removal-summary{padding:16px;border:1px solid #e3a49b;border-radius:8px;background:var(--red-soft);color:var(--red)}.removal-summary>strong{font-size:15px}.removal-summary ul{margin:10px 0 0;padding-left:20px;color:var(--ink);font-size:13px;line-height:1.55}
.choice-fieldset{display:grid;gap:8px;margin:0;padding:0;border:0}.choice-fieldset legend{margin-bottom:8px;font-size:13px;font-weight:800}.choice-row{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft);cursor:pointer}.choice-row:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.choice-row input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--accent)}.choice-row span{display:grid;gap:3px}.choice-row strong{font-size:13px}.choice-row small{color:var(--muted);font-size:11px;line-height:1.45}
.pwa-install-dialog{display:grid;justify-items:stretch;text-align:left}.pwa-install-dialog-brand{display:grid;justify-items:center}.pwa-install-dialog-brand img{display:block;width:156px;height:auto}.pwa-install-dialog-brand span{margin-top:8px;color:#fff;font-size:16px}.pwa-install-dialog-copy{margin-top:48px}.pwa-install-dialog-copy h2{max-width:12ch;margin:0;color:#fff;font-size:28px;letter-spacing:-.035em;line-height:1.06}.pwa-install-dialog-copy>p:last-child{margin:12px 0 0;color:rgba(255,255,255,.76);font-size:13px;line-height:1.5}.pwa-install-dialog-app{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:13px;margin:24px 0;padding:14px;border:1px solid rgba(255,255,255,.28);border-radius:13px;background:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.pwa-install-dialog-app img{width:52px;height:52px;border-radius:13px}.pwa-install-dialog-app span{display:grid;gap:3px}.pwa-install-dialog-app strong{color:#fff;font-size:14px}.pwa-install-dialog-app small{color:rgba(255,255,255,.7);font-size:11px}.pwa-install-actions{display:grid;gap:7px;width:100%}.pwa-install-actions .button.primary{min-height:52px;border-color:#fff;border-radius:999px;background:#fff;color:var(--reference-sidebar)}.pwa-install-actions .text-action{justify-self:center;min-height:44px;color:#fff}
.edit-scope-note{display:flex;align-items:flex-start;gap:11px;margin:-5px 0 20px;padding:13px 1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted)}.edit-scope-note svg{flex:0 0 auto;width:19px;height:19px}.edit-scope-note>span{display:grid;gap:4px}.edit-scope-note strong{color:var(--ink);font-size:13px}.edit-scope-note small{font-size:12px;line-height:1.45}.detail-badges{display:flex;flex-wrap:wrap;gap:12px}.shift-detail-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.detail-line,.detail-stat{display:flex;align-items:flex-start;gap:11px;min-height:86px;padding:15px 10px 15px 0;border-bottom:1px solid var(--line);background:var(--surface)}.detail-line svg{flex:0 0 auto;width:20px;height:20px;color:var(--muted)}.detail-line>span,.detail-stat{display:grid;align-content:start;gap:5px}.detail-line small,.detail-stat small,.manager-note>small{color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.08em}.detail-line strong,.detail-stat strong{font-size:14px;line-height:1.45}.series-summary{display:flex;align-items:flex-start;gap:11px;padding:14px 1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.series-summary svg{flex:0 0 auto;width:19px;height:19px;color:var(--muted)}.series-summary>span{display:grid;gap:4px}.series-summary strong{font-size:13px}.series-summary small{color:var(--muted);font-size:12px;line-height:1.45}.manager-note{padding-top:16px;border-top:1px solid var(--line-soft)}.manager-note p{margin:7px 0 0;font-size:14px;line-height:1.5}.projection-note{margin:0;padding:11px 1px;border-top:1px solid #e7b7ad;border-bottom:1px solid #e7b7ad;color:var(--red);font-size:12px;line-height:1.45}.shift-actions{padding-top:4px;border-top:1px solid var(--line-soft)}.publish-review{display:grid;gap:20px}.publish-count{display:flex;align-items:baseline;gap:11px}.publish-count strong{font-size:40px;letter-spacing:-.04em}.publish-count span{color:var(--muted);font-size:15px}.review-list{display:grid;border-top:1px solid var(--ink)}.review-list span{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 2px;border-bottom:1px solid var(--line);color:var(--muted);font-size:13px}.review-list strong{color:var(--ink);font-size:15px}.review-list .review-warning,.review-list .review-warning strong{color:var(--amber)}
.detail-edit-row{width:100%;border-right:0;border-left:0;border-radius:0;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .16s,border-color .16s}.detail-edit-row:hover{background:#faf9f7}.detail-edit-row:focus-visible{position:relative;z-index:1;outline:2px solid var(--accent);outline-offset:-2px}.detail-edit-indicator{display:grid;flex:0 0 auto;place-items:center;width:28px;height:28px;margin:auto 0 auto auto;color:var(--faint)}.detail-edit-indicator svg{width:16px;height:16px}.detail-stat.detail-edit-row{grid-template-columns:minmax(0,1fr) 28px;align-items:start}.detail-stat.detail-edit-row>span:first-child{display:grid;gap:5px}.detail-edit-wide{display:flex;align-items:flex-start;gap:11px;min-height:48px}.detail-edit-wide>span:not(.detail-edit-indicator){min-width:0}.detail-edit-copy{display:grid;gap:6px}.detail-edit-copy>span{font-size:14px;line-height:1.55}.instruction-box.detail-edit-row{padding-right:1px;padding-left:1px;background:#fff}.detail-address.detail-edit-row{padding:12px 1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.series-summary.detail-edit-row{background:#fff}
.shift-detail-grid .detail-edit-row{border-top:0}.detail-edit-row>span:not(.detail-edit-indicator){min-width:0;overflow-wrap:anywhere}

/* Johdon opastus seuraa oikeaa työskentelypolkua näkymä kerrallaan. */
.dialog:has(.manager-onboarding-welcome){width:min(760px,calc(100% - 30px))}.dialog-surface:has(.manager-onboarding-welcome){padding:0;overflow:hidden}.manager-onboarding-welcome{position:relative;padding:38px 40px 34px;background:#fff}.onboarding-welcome-close{position:absolute;top:19px;right:19px}.manager-onboarding-welcome>.eyebrow{margin:0 0 10px;color:var(--accent-dark)}.manager-onboarding-welcome h2{max-width:19ch;margin:0;font-size:34px;line-height:1.08}.manager-onboarding-welcome>p:not(.eyebrow){max-width:60ch;margin:16px 0 27px;color:var(--muted);font-size:15px;line-height:1.6}.onboarding-welcome-flow{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr auto 1fr auto;align-items:center;gap:10px;padding:20px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.onboarding-welcome-flow span{display:grid;justify-items:center;gap:7px;color:var(--ink);font-size:11px;font-weight:800}.onboarding-welcome-flow b{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--accent);border-radius:50%;color:var(--accent-dark);font-size:12px}.onboarding-welcome-flow i{height:1px;background:var(--line)}.manager-onboarding-welcome>aside{display:flex;align-items:flex-start;gap:10px;margin:20px 0 0;padding:13px 14px;background:var(--accent-soft);color:var(--accent-dark);font-size:12px;line-height:1.5}.manager-onboarding-welcome>aside svg{flex:0 0 auto;width:18px;height:18px}.onboarding-welcome-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px}.manager-workflow-tour{position:fixed;right:24px;bottom:24px;z-index:70;width:min(390px,calc(100vw - 48px));padding:0;border:1px solid #b6c9e9;background:#fff;box-shadow:0 18px 48px rgba(17,45,91,.22);animation:manager-tour-in .24s cubic-bezier(.16,1,.3,1)}.manager-workflow-tour[hidden]{display:none}.manager-tour-progress{height:4px;background:#e5ebf5}.manager-tour-progress span{display:block;width:var(--tour-progress);height:100%;background:var(--accent);transition:width .25s cubic-bezier(.16,1,.3,1)}.manager-workflow-tour>header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0}.manager-workflow-tour>header>div{display:flex;align-items:center;gap:9px}.manager-workflow-tour>header p,.manager-workflow-tour>header strong{margin:0;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.manager-workflow-tour>header p{color:var(--accent-dark)}.manager-workflow-tour>header strong{color:var(--muted)}.manager-tour-copy{padding:16px 18px 18px}.manager-tour-copy h2{margin:0;font-size:23px;line-height:1.12}.manager-tour-copy>p{margin:11px 0 15px;color:var(--muted);font-size:13px;line-height:1.55}.manager-tour-copy aside{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;border-left:3px solid var(--accent);background:#f4f7fc;color:var(--ink);font-size:11px;line-height:1.5}.manager-tour-copy aside svg{flex:0 0 auto;width:17px;height:17px;color:var(--accent-dark)}.manager-workflow-tour>footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 18px 17px;border-top:1px solid var(--line)}.manager-workflow-tour>footer>div{display:flex;gap:7px}.manager-workflow-tour .button{min-height:39px;padding:0 14px;font-size:12px}.manager-workflow-tour .text-action{font-size:11px}.manager-tour-target{z-index:31;outline:3px solid var(--accent)!important;outline-offset:6px;box-shadow:0 0 0 7px rgba(0,70,173,.12)!important;animation:manager-target-in .35s cubic-bezier(.16,1,.3,1)}@keyframes manager-tour-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes manager-target-in{from{outline-offset:13px}to{outline-offset:6px}}
.dialog:has(#workerMobileGuide){width:min(1040px,calc(100% - 30px))}.dialog-surface:has(#workerMobileGuide){padding:0;overflow:hidden}.worker-mobile-guide{background:#fff}.worker-guide-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:27px 30px 24px;border-bottom:1px solid var(--line)}.worker-guide-head .eyebrow,.worker-activation-flow .eyebrow,.worker-guide-layout aside>.eyebrow{margin:0 0 7px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.worker-guide-head h2{margin:0;font-size:29px;line-height:1.08;letter-spacing:-.035em}.worker-guide-head>div>p:last-child{max-width:62ch;margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.worker-activation-flow{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;padding:20px 30px;border-bottom:1px solid var(--line);background:#f6f8fb}.worker-activation-flow h3{margin:0;font-size:17px;line-height:1.25}.worker-activation-flow ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:0;padding:0;list-style:none}.worker-activation-flow li{display:grid;grid-template-columns:26px minmax(0,1fr);gap:8px;padding:0 12px;border-left:1px solid #d9e3f3}.worker-activation-flow li:first-child{padding-left:0;border-left:0}.worker-activation-flow li>b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--reference-header);color:#fff;font-size:10px}.worker-activation-flow li>span{display:grid;gap:3px}.worker-activation-flow li strong{font-size:11px;line-height:1.3}.worker-activation-flow li small{color:var(--muted);font-size:9px;line-height:1.4}.worker-guide-layout{display:grid;grid-template-columns:minmax(270px,1fr) 335px;gap:34px;padding:25px 30px 28px}.worker-guide-layout>aside{align-self:start}.worker-guide-tabs{display:grid;grid-template-columns:1fr 1fr;gap:7px}.worker-guide-tabs button{display:flex;align-items:center;gap:9px;min-height:48px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);text-align:left}.worker-guide-tabs button:active{transform:scale(.98)}.worker-guide-tabs button.is-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark)}.worker-guide-tabs button>span{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:#f1f5fa}.worker-guide-tabs svg{width:16px;height:16px}.worker-guide-tabs strong{font-size:11px}.worker-guide-copy{margin-top:19px;padding-top:17px;border-top:1px solid var(--ink)}.worker-guide-copy h3{margin:0;font-size:20px;line-height:1.2}.worker-guide-copy p{margin:9px 0 0;color:var(--muted);font-size:12px;line-height:1.55}.worker-permission-note{margin-top:18px;padding:13px 14px;border-left:4px solid var(--accent);background:#f1f7fb}.worker-permission-note strong{font-size:12px}.worker-permission-note p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.5}.worker-guide-phone-wrap{display:grid;place-items:center;min-height:520px;padding:12px;border-radius:18px;background:#eef3f8}.worker-preview-phone{position:relative;display:grid;grid-template-rows:48px minmax(0,1fr) 57px;width:286px;height:515px;border:7px solid #26272c;border-radius:36px;background:#f7f8fb;box-shadow:0 18px 38px rgba(18,43,80,.18);overflow:hidden}.worker-preview-speaker{position:absolute;top:8px;left:50%;z-index:2;width:72px;height:18px;border-radius:999px;background:#26272c;transform:translateX(-50%)}.worker-preview-phone>header{display:flex;align-items:center;justify-content:space-between;padding:15px 13px 6px;background:var(--reference-header);color:#fff}.worker-preview-phone>header strong{font-size:17px;letter-spacing:-.04em}.worker-preview-phone>header span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#fff;color:var(--reference-header);font-size:8px;font-weight:800}.worker-preview-phone>main{padding:16px 13px 13px;overflow:hidden}.worker-preview-greeting small{color:var(--accent-dark);font-size:7px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.worker-preview-greeting h3{margin:3px 0 0;color:var(--reference-header);font-size:22px;letter-spacing:-.045em}.worker-preview-greeting p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.4}.worker-preview-next{display:grid;gap:4px;margin-top:14px;padding:14px;border-radius:12px;background:#fff;box-shadow:0 8px 20px rgba(0,70,173,.08)}.worker-preview-next>small{color:var(--accent-dark);font-size:7px;font-weight:800;letter-spacing:.06em}.worker-preview-next>strong{font-size:17px}.worker-preview-next>b{font-size:14px}.worker-preview-next>span{color:var(--muted);font-size:9px}.worker-preview-next button,.worker-preview-confirm button{min-height:29px;margin-top:5px;border:0;border-radius:7px;background:var(--reference-header);color:#fff;font-size:8px;font-weight:750}.worker-preview-confirm{display:grid;gap:3px;margin-top:11px;padding:11px;border-left:4px solid var(--accent);background:#fff}.worker-preview-confirm>strong{font-size:10px}.worker-preview-confirm>span{color:var(--muted);font-size:8px}.worker-preview-confirm>div{display:grid;grid-template-columns:1fr 1fr;gap:5px}.worker-preview-confirm button:last-child{border:1px solid #a9c7e6;background:#fff;color:var(--accent-dark)}.worker-preview-obstacle{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:12px;padding:8px;border:1px solid #a9c7e6;border-radius:999px;color:var(--accent-dark);font-size:8px;font-weight:750}.worker-preview-obstacle svg{width:12px;height:12px}.worker-preview-bottom{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #d9e3f3;background:#fff}.worker-preview-bottom span{display:grid;place-items:center;align-content:center;gap:2px;color:#777682}.worker-preview-bottom span.is-active{color:var(--reference-header)}.worker-preview-bottom svg{width:17px;height:17px}.worker-preview-bottom small{font-size:7px}.worker-preview-calendar{margin-top:14px;padding:11px;border:1px solid #d9e3f3;border-radius:13px;background:#fff}.worker-preview-calendar header,.worker-preview-calendar>div{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.worker-preview-calendar header span{padding-bottom:5px;color:var(--muted);font-size:7px;text-align:center}.worker-preview-calendar>div>span{display:grid;place-items:center;align-content:center;min-height:37px;border:1px solid #e2e9f2;border-radius:6px}.worker-preview-calendar>div>span.has-value{border-color:#a9c7e6;background:#f1f7fb}.worker-preview-calendar b{font-size:8px}.worker-preview-calendar small{margin-top:2px;color:var(--accent-dark);font-size:6px;font-weight:800}.worker-preview-calendar p{margin:10px 0 6px;font-size:8px;font-weight:700}.worker-preview-calendar footer{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.worker-preview-calendar footer span{padding:7px 2px;border:1px solid #a9c7e6;border-radius:6px;color:var(--accent-dark);font-size:7px;font-weight:800;text-align:center}.worker-preview-notifications{display:grid;gap:9px;margin-top:15px}.worker-preview-notifications article{position:relative;display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;border:1px solid #d9e3f3;border-radius:10px;background:#fff}.worker-preview-notifications article.is-unread{border-color:#a9c7e6}.worker-preview-notifications article.is-unread::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--accent)}.worker-preview-notifications strong{font-size:10px}.worker-preview-notifications p{margin:5px 0 0;color:var(--muted);font-size:8px;line-height:1.4}.worker-preview-notifications time{color:var(--accent-dark);font-size:7px}.worker-preview-profile{display:grid;margin-top:16px;border:1px solid #d9e3f3;border-radius:12px;background:#fff;overflow:hidden}.worker-preview-profile>span{display:grid;gap:4px;padding:12px;border-bottom:1px solid #e9eef5}.worker-preview-profile>span:last-child{border-bottom:0}.worker-preview-profile small{color:var(--muted);font-size:7px;font-weight:800;letter-spacing:.06em}.worker-preview-profile strong{font-size:10px}.worker-preview-report{margin-top:12px;padding:13px;border-left:4px solid var(--accent);border-radius:9px;background:#f1f7fb}.worker-preview-report strong{font-size:10px}.worker-preview-report p{margin:5px 0 0;color:var(--muted);font-size:8px;line-height:1.45}.worker-preview-logout{width:100%;min-height:34px;margin-top:14px;border:1px solid #a9c7e6;border-radius:8px;background:#fff;color:var(--accent-dark);font-size:9px;font-weight:750}.worker-guide-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 30px 21px;border-top:1px solid var(--line)}
@media (min-width:768px) and (max-width:900px){.manager-workflow-tour{right:18px;bottom:18px;width:340px}.manager-tour-copy h2{font-size:20px}.manager-onboarding-welcome{padding:34px 30px 30px}.manager-onboarding-welcome h2{font-size:30px}.worker-activation-flow{grid-template-columns:1fr}.worker-guide-layout{grid-template-columns:minmax(250px,1fr) 300px;gap:22px}.worker-guide-phone-wrap{min-height:500px;padding:8px}.worker-preview-phone{width:270px;height:490px}.worker-guide-head,.worker-activation-flow,.worker-guide-layout,.worker-guide-actions{padding-right:24px;padding-left:24px}}

.detail-line{grid-column:1/-1}

@media (max-width:900px){
  :root{--sidebar:218px}.view-root{padding-left:26px;padding-right:26px}.home-intro,.calendar-lead{align-items:stretch;flex-direction:column;gap:19px}.home-actions,.calendar-lead .lead-actions{align-self:start}.employee-hero{grid-template-columns:1fr}.admin-layout{grid-template-columns:1fr}.detail-panel{order:-1}.employee-list-lead.detail-open,.client-list-lead.detail-open{display:none}.employee-admin-layout.has-selection .employee-directory,.client-admin-layout.has-selection .client-directory{display:none}.employee-admin-layout.has-selection,.client-admin-layout.has-selection{display:block}.employee-back,.client-back{display:flex;align-items:center;gap:4px;margin:0 0 20px;padding:0;border:0;background:transparent;color:var(--accent-dark);font-size:13px;font-weight:800}.employee-back svg,.client-back svg{width:17px;height:17px;transform:rotate(180deg)}.schedule-person{grid-template-columns:1fr}.person-label{padding-top:3px}.shift-bar{grid-template-columns:90px minmax(0,1fr) auto}
  .report-metrics{grid-template-columns:1fr 1fr}.report-metrics>div:nth-child(2){border-right:0}.report-metrics>div:nth-child(n+3){border-top:1px solid var(--line)}.report-employee-head,.report-employee-row{grid-template-columns:minmax(120px,1fr) 68px 78px 100px 18px;gap:8px}.report-output-grid{grid-template-columns:1fr}.report-output-grid article{padding:19px 0}.report-output-grid article+article{padding-left:0;border-top:1px solid var(--line);border-left:0}.report-output-grid p{min-height:0}
}

/* Dialogin alkufokus on sisällössä, ei otsikon sulkupainikkeessa. */
.dialog-surface:focus{outline:0}

/* Figma Profile2 (8:140): tarkka mobiilipinnan rakenne ja mitoitus. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view){padding:0 0 calc(28px + env(safe-area-inset-bottom));background:#faf9f6}
  .app-shell.is-employee .worker-profile-view{max-width:none;margin:0;background:#faf9f6;color:#000;font-family:"DM Sans",HKP,"Avenir Next","Segoe UI",sans-serif}
  .app-shell.is-employee .worker-profile-page-head{display:flex;align-items:flex-end;justify-content:space-between;box-sizing:border-box;height:89px;min-height:89px;padding:0 22px;background:#fff}
  .app-shell.is-employee .worker-profile-page-head h2{margin:0;color:#000;font-size:18px;font-weight:500;letter-spacing:0;line-height:23px}
  .app-shell.is-employee .worker-profile-page-head button{display:grid;place-items:center;width:40px;height:40px;margin:0 -10px -8.5px 0;padding:0;border:0;background:transparent;color:#000}
  .app-shell.is-employee .worker-profile-page-head button svg{width:20px;height:20px;stroke-width:2.2}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:68px minmax(0,1fr) 104px;align-items:center;box-sizing:border-box;gap:13px;height:126px;margin:0;padding:26px 22px 32px;border:0;background:#fff;text-align:left}
  .app-shell.is-employee .worker-profile-photo{position:relative;display:block;width:68px;height:68px}
  .app-shell.is-employee .worker-profile-avatar{width:68px;height:68px;border:2px solid #355e3b;background:#edf4fc;color:#0046ad;font-size:17px}
  .app-shell.is-employee .worker-profile-camera{position:absolute;right:0;bottom:0;display:grid;place-items:center;width:17px;height:17px;border:1px solid #fff;border-radius:50%;background:#355e3b;color:#fff}
  .app-shell.is-employee .worker-profile-camera svg{width:10px;height:10px;stroke-width:2.4}
  .app-shell.is-employee .worker-profile-identity-copy{display:grid;justify-items:start;gap:0;min-width:0}
  .app-shell.is-employee .worker-profile-identity-copy h3{overflow:hidden;max-width:100%;margin:0;color:#000;font-size:21px;font-weight:400;letter-spacing:0;line-height:27px;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-email{overflow:hidden;max-width:100%;margin:0;color:#000;font-size:11px;line-height:14px;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-edit{box-sizing:border-box;width:104px;min-height:32px;padding:8px 12px;border:0;border-radius:35px;background:#e9e9e9;color:#000;font-size:12px;font-weight:400;line-height:16px;white-space:nowrap;box-shadow:0 1px 2px rgba(12,12,13,.1),0 1px 2px rgba(12,12,13,.05)}
  .app-shell.is-employee .worker-profile-settings{display:grid;gap:26px;padding:25px 12.5px 0;background:#faf9f6}
  .app-shell.is-employee .worker-profile-menu-card,.app-shell.is-employee .worker-profile-logout-card{overflow:hidden;border:0;border-radius:12px;background:#fff;box-shadow:0 15px 16px -1px rgba(12,12,13,.1),0 3px 4px -1px rgba(12,12,13,.05)}
  .app-shell.is-employee .worker-profile-menu-details{display:block;margin:0}
  .app-shell.is-employee .worker-profile-menu-details>summary{list-style:none}
  .app-shell.is-employee .worker-profile-menu-details>summary::-webkit-details-marker{display:none}
  .app-shell.is-employee .worker-profile-menu-row,.app-shell.is-employee .worker-profile-menu-card>.worker-settings-row,.app-shell.is-employee .worker-profile-logout-card>button{display:grid;grid-template-columns:40px minmax(0,1fr) 7px;align-items:center;box-sizing:border-box;gap:15px;width:calc(100% - 42px);min-height:82px;margin:0 21px;padding:21px 0;border:0;border-bottom:1px solid #ededed;background:transparent;color:#000;text-align:left;cursor:pointer}
  .app-shell.is-employee .worker-profile-menu-card>:last-child>.worker-profile-menu-row,.app-shell.is-employee .worker-profile-menu-card>.worker-settings-row:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-menu-row>span:nth-child(2),.app-shell.is-employee .worker-profile-menu-card>.worker-settings-row .worker-settings-copy strong,.app-shell.is-employee .worker-profile-logout-card>button>span:nth-child(2){overflow:hidden;color:#000;font-size:18px;font-weight:400;letter-spacing:0;line-height:23px;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-menu-row>svg,.app-shell.is-employee .worker-profile-menu-card>.worker-settings-row>svg,.app-shell.is-employee .worker-profile-logout-card>button>svg{width:7px;height:14px;color:#000;stroke-width:1.8;transition:transform .16s ease}
  .app-shell.is-employee .worker-profile-menu-details[open]>.worker-profile-menu-row>svg{transform:rotate(90deg)}
  .app-shell.is-employee .worker-settings-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#ededed;color:#000}
  .app-shell.is-employee .worker-settings-icon svg{width:18px;height:18px;stroke-width:2.2}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row{grid-template-columns:40px minmax(0,1fr) 7px;border-radius:0}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row .worker-settings-copy small{display:none}
  .app-shell.is-employee .worker-profile-menu-panel{padding:0 21px 21px;border-bottom:1px solid #ededed;background:#fff}
  .app-shell.is-employee .worker-profile-menu-details:last-child>.worker-profile-menu-panel{border-bottom:0}
  .app-shell.is-employee .worker-profile-menu-panel .profile-details{overflow:hidden;border:1px solid #ededed;border-radius:10px;background:#fafafa;box-shadow:none}
  .app-shell.is-employee .worker-profile-menu-panel .profile-detail{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:11px;min-height:58px;margin:0 13px;padding:8px 0;border-bottom:1px solid #ededed}
  .app-shell.is-employee .worker-profile-menu-panel .profile-detail:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-menu-panel .profile-detail .worker-settings-icon{width:34px;height:34px}
  .app-shell.is-employee .worker-profile-menu-panel .profile-detail strong{color:#000;font-size:13px;font-weight:500}
  .app-shell.is-employee .worker-profile-menu-panel .profile-detail small{color:#777;font-size:9px}
  .app-shell.is-employee .worker-profile-help{margin:9px 2px 0;color:#777;font-size:9px}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-section{display:grid;gap:0;margin:0;padding:0;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-heading{display:none}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-intro{margin:0 0 12px;color:#666;font-size:10px;line-height:1.45}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-options{overflow:hidden;margin:0;border:1px solid #ededed;border-radius:10px;background:#fafafa;box-shadow:none}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-toggle{grid-template-columns:34px minmax(0,1fr) 40px;gap:11px;min-height:64px;margin:0 13px;padding:9px 0;border-color:#ededed}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-toggle .worker-settings-icon{width:34px;height:34px}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-toggle strong{font-size:13px;font-weight:500}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-toggle small{font-size:9px}
  .app-shell.is-employee .worker-profile-menu-panel .worker-push-enable{width:100%;min-height:44px;margin:0;border-radius:22px}
  .app-shell.is-employee .worker-profile-settings-stack{display:grid;gap:16px}
  .app-shell.is-employee .worker-profile-menu-panel .worker-account-actions{display:grid;gap:0;overflow:hidden;margin:0;border:1px solid #ededed;border-radius:10px;background:#fafafa}
  .app-shell.is-employee .worker-legal-menu{display:grid;gap:0;overflow:hidden;border:1px solid #ededed;border-radius:10px;background:#fafafa}
  .app-shell.is-employee .worker-profile-menu-panel .worker-account-actions .worker-settings-row,.app-shell.is-employee .worker-legal-menu .worker-settings-row{grid-template-columns:34px minmax(0,1fr) 7px;gap:11px;width:calc(100% - 26px);min-height:58px;margin:0 13px;padding:8px 0;border-bottom:1px solid #ededed;border-radius:0}
  .app-shell.is-employee .worker-profile-menu-panel .worker-account-actions .worker-settings-row:last-child,.app-shell.is-employee .worker-legal-menu .worker-settings-row:last-of-type{border-bottom:0}
  .app-shell.is-employee .worker-profile-menu-panel .worker-account-actions .worker-settings-icon,.app-shell.is-employee .worker-legal-menu .worker-settings-icon{width:34px;height:34px}
  .app-shell.is-employee .worker-profile-menu-panel .worker-account-actions strong,.app-shell.is-employee .worker-legal-menu strong{font-size:13px;font-weight:500}
  .app-shell.is-employee .worker-legal-menu .worker-privacy-contact{margin:0!important;padding:11px 10px;border-top:1px solid #ededed;color:#777;font-size:9px;text-align:center}
  .app-shell.is-employee .worker-legal-menu .worker-privacy-contact a{color:#555}
  .app-shell.is-employee .worker-profile-logout-card{margin:0}
  .app-shell.is-employee .worker-profile-logout-card>button{border-bottom:0}
  .app-shell.is-employee .worker-privacy-section{display:grid;gap:7px;margin:22px 13px 0;padding:0 0 calc(5px + env(safe-area-inset-bottom));border:0;background:#faf9f6;color:#333;text-align:center}
  .app-shell.is-employee .worker-privacy-section>p:first-child{display:none}
  .app-shell.is-employee .worker-privacy-section nav{display:flex;flex-wrap:wrap;justify-content:center;gap:0 14px}
  .app-shell.is-employee .worker-privacy-section nav>button{width:auto;min-height:30px;margin:0;padding:3px 0;border:0;background:transparent;color:#555;font-size:9px;font-weight:500;text-decoration:underline;text-underline-offset:2px}
  .app-shell.is-employee .worker-privacy-contact{margin:0!important;color:#777;font-size:9px;text-align:center}
  .app-shell.is-employee .worker-privacy-contact a{color:#777}
}

/* Week planning workspace and ranked employee suggestions */
.week-planning-workspace{display:grid;grid-template-columns:250px minmax(0,1fr);gap:12px;min-width:0}.week-work-queue{display:grid;grid-template-rows:auto minmax(0,1fr);max-height:calc(100dvh - 268px);overflow:hidden;border:1px solid var(--line);background:var(--surface-strong)}.week-work-queue-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:62px;padding:10px 12px;border-bottom:1px solid var(--ink);background:#f7f7fa}.week-work-queue-head>span{display:grid;gap:3px}.week-work-queue-head strong{font-size:12px}.week-work-queue-head small{color:var(--muted);font-size:10px}.week-work-queue-head>b{display:grid;place-items:center;min-width:26px;height:26px;border-radius:50%;background:var(--red-soft);color:var(--red);font-size:11px}.week-work-queue-list{overflow:auto;overscroll-behavior:contain}.week-work-queue-item{display:grid;grid-template-columns:minmax(0,1fr) 16px;align-items:center;gap:8px;width:100%;padding:10px 11px;border:0;border-bottom:1px solid var(--line-soft);background:#fff;text-align:left}.week-work-queue-item:hover{background:#fff9f8}.week-work-queue-item>span{display:grid;min-width:0;gap:3px}.week-work-queue-item time{color:var(--muted);font-size:9px;font-weight:750}.week-work-queue-item strong{overflow:hidden;text-overflow:ellipsis;font-size:11px;white-space:nowrap}.week-work-queue-item small{color:var(--red);font-size:9px;line-height:1.3}.week-work-queue-item svg{width:14px;height:14px;color:var(--faint)}.week-work-queue-clear{display:flex;align-items:flex-start;gap:9px;padding:14px 12px}.week-work-queue-clear>i{width:7px;height:7px;margin-top:4px;border-radius:50%;background:var(--green)}.week-work-queue-clear>span{display:grid;gap:3px}.week-work-queue-clear strong{font-size:11px}.week-work-queue-clear small{color:var(--muted);font-size:10px}
.week-planner-shift{position:relative}.week-planner-shift.is-selected,.client-week-shift.is-selected,.week-work-queue-item.is-selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.week-planner-check{position:absolute;top:5px;right:5px;display:grid;place-items:center;width:15px;height:15px;border:1px solid var(--accent);border-radius:50%;background:#fff;color:var(--accent-dark);font-size:10px;font-style:normal;font-weight:900}.week-planner-shift.is-selected .week-planner-check,.client-week-shift.is-selected .week-planner-check,.week-work-queue-item.is-selected .week-planner-check{background:var(--accent);color:#fff}.week-planner-shift.is-selected>span,.client-week-shift.is-selected>span{padding-right:16px}.week-planner-shift.is-selected .shift-edit-hint,.client-week-shift.is-selected .shift-edit-hint{display:none}.week-planner-desktop.is-range-selecting,.client-week-planner-desktop.is-range-selecting{cursor:crosshair;user-select:none}.week-planner-cell.is-range-selected,.client-week-cell.is-range-selected{z-index:1;background:#eaf2ff;box-shadow:inset 0 2px 0 var(--accent),inset 0 -2px 0 var(--accent)}.week-planner-cell.is-range-start,.client-week-cell.is-range-start{box-shadow:inset 2px 0 0 var(--accent),inset 0 2px 0 var(--accent),inset 0 -2px 0 var(--accent)}.week-planner-cell.is-range-end,.client-week-cell.is-range-end{box-shadow:inset -2px 0 0 var(--accent),inset 0 2px 0 var(--accent),inset 0 -2px 0 var(--accent)}.week-planner-cell.is-range-start.is-range-end,.client-week-cell.is-range-start.is-range-end{box-shadow:inset 0 0 0 2px var(--accent)}.week-work-queue-item{position:relative}.week-work-queue-item .week-planner-check{position:static}.bulk-calendar-summary{display:grid;gap:5px;margin:0;padding:14px 1px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.bulk-calendar-summary strong{font-size:14px}.bulk-calendar-summary span{color:var(--muted);font-size:12px;line-height:1.5}
.calendar-bulk-toggle.is-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark)}.calendar-bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:-2px 0 12px;padding:10px 12px;border:1px solid #bfd2ef;border-radius:11px;background:#f5f9ff}.calendar-bulk-toolbar>div:first-child{display:grid;min-width:150px;gap:2px}.calendar-bulk-toolbar strong{color:var(--accent-dark);font-size:12px}.calendar-bulk-toolbar small{color:var(--muted);font-size:10px;line-height:1.35}.calendar-bulk-toolbar>div:last-child{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.calendar-bulk-toolbar .button{min-height:32px;padding:5px 10px}.calendar-bulk-toolbar .danger-text:not(:disabled){border-color:#e7b8bc;color:var(--red)}.is-bulk-selecting .week-planner-shift,.is-bulk-selecting .client-week-shift{cursor:copy}.is-bulk-selecting .week-planner-shift .shift-edit-hint,.is-bulk-selecting .client-week-shift .shift-edit-hint{display:none}.series-delete-guidance{display:grid;gap:4px;padding:12px 14px;border:1px solid #bfd2ef;border-radius:9px;background:#f5f9ff}.series-delete-guidance strong{color:var(--accent-dark);font-size:13px}.series-delete-guidance p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.entity-suggestion{gap:4px;padding:11px 13px}.entity-suggestion:active,.entity-suggestion:hover{background:var(--accent-soft)}.entity-suggestion>span{display:flex;align-items:center;justify-content:space-between;gap:10px}.entity-suggestion b{padding:3px 6px;border-radius:999px;background:#e8f5ee;color:var(--green);font-size:9px;letter-spacing:.04em;text-transform:uppercase}.entity-suggestion small{color:var(--muted);font-size:11px}.entity-suggestion.is-warning b{background:var(--red-soft);color:var(--red)}.entity-suggestion.is-warning small{color:var(--red)}
@media (min-width:768px) and (max-width:1100px){.week-planning-workspace{grid-template-columns:1fr}.week-work-queue{max-height:220px}.week-planner-desktop{max-height:calc(100dvh - 430px)}}
@media (max-width:767px){.week-planning-workspace{display:none}.week-planner-desktop{display:none}.week-planner-mobile{display:block}.calendar-bulk-toolbar{display:none}}
@media (max-width:767px){
  .auth-layout{padding:24px 16px}.auth-shell{gap:20px}.auth-card{padding:27px 22px;border-radius:12px}.auth-heading{margin-bottom:25px}.auth-heading h1{font-size:26px}.pwa-install-icons{grid-template-columns:repeat(5,48px);gap:9px}.pwa-install-icons span,.pwa-install-icons img{width:48px;height:48px;border-radius:15px}.pwa-install-dialog h2{font-size:25px}
  .app-shell{display:block}.sidebar{display:none}.main-shell{padding-bottom:calc(var(--bottom-nav) + var(--safe-area-bottom))}.app-header{display:grid;grid-template-columns:1fr auto;height:64px;min-height:64px;padding:0 8px 0 16px;background:var(--reference-header)}.header-brand{align-self:stretch;padding:0;border-right:0}.header-logo-image{width:116px;max-height:25px}.header-context{display:none}.header-account{align-self:stretch}.profile-trigger{grid-template-columns:36px;min-width:52px;padding:0 8px}.profile-trigger-copy,.profile-chevron{display:none}.header-avatar{border:0;background:#fff;color:var(--reference-header)}.profile-menu{top:58px;right:58px}.view-root{padding:20px 18px 38px}.mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:25;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:calc(var(--bottom-nav) + var(--safe-area-bottom));padding:4px 8px var(--safe-area-bottom);border-top:1px solid var(--line);background:rgba(255,255,255,.97);box-shadow:0 -4px 15px rgba(92,59,31,.07)}.mobile-nav .nav-button{position:relative;display:grid;justify-items:center;align-content:center;gap:3px;min-height:58px;padding:0 2px;border-radius:0;background:transparent;color:var(--muted);box-shadow:none;font-size:10px}.mobile-nav .nav-button.is-active{background:transparent;color:var(--accent-dark);box-shadow:inset 0 3px 0 var(--accent)}.mobile-nav .nav-button svg{width:21px;height:21px}.mobile-nav .nav-badge{position:absolute;top:3px;right:auto;margin:0 0 0 24px;border:0}.connection-banner{margin:10px 18px 0}.page-lead{flex-direction:column;align-items:stretch;margin-bottom:20px}.page-lead h2{font-size:26px}.page-lead p{font-size:14px}.lead-actions{width:100%}.lead-actions .button{flex:1;min-width:0;padding-right:12px;padding-left:12px;font-size:13px}.manager-home-surface{padding:20px 16px 26px}.home-intro{align-items:stretch;flex-direction:column;gap:18px;padding-bottom:23px}.home-intro h2{font-size:33px}.home-intro p:last-child{font-size:14px;line-height:1.45}.home-actions{display:grid;grid-template-columns:1fr 1fr}.home-actions .button{min-height:48px;padding:0 10px;font-size:13px}.attention-section.has-issues{margin-top:27px}.attention-section .home-section-head{align-items:flex-end;margin-bottom:11px}.home-section-head{gap:12px}.home-section-head h2{font-size:22px}.home-section-head p:last-child{font-size:12px}.attention-total{font-size:11px}.attention-row{grid-template-columns:58px minmax(0,1fr) auto;gap:10px;padding:14px 1px}.issue-type{font-size:9px}.today-section{margin-top:32px}.today-section>.home-section-head{align-items:flex-end}.section-action{padding-top:4px;font-size:12px}.today-row{grid-template-columns:74px minmax(0,1fr);gap:10px;padding:15px 3px}.today-row>.status-pill{grid-column:2;justify-self:start}.today-row time{font-size:12px}.row-main strong{font-size:14px}.row-main span{font-size:12px}.row-chevron{display:none}.list-action{font-size:12px}.calendar-toolbar{align-items:stretch}.period-area{order:1;width:100%;margin-left:0}.calendar-today{padding:0 8px}.period-control{flex:1;justify-content:space-between}.period-control strong{min-width:0}.calendar-toolbar .segmented{order:2;width:100%}.calendar-toolbar .segmented button{flex:1}.week-strip{grid-template-columns:repeat(7,minmax(0,1fr))}.day-chip{min-height:65px;padding:7px 1px}.day-chip strong{font-size:16px}.day-chip span{font-size:9px}.day-chip small{font-size:9px}.schedule-surface{padding:0 16px}.selected-day-head{margin:0 -16px;padding:14px 16px 12px}.day-schedule{display:none}.mobile-day-list{display:block}.calendar-warning{margin:14px 0 2px}.mobile-schedule-group{margin:18px 0 0}.mobile-group-head{margin:0 -16px;padding:14px 16px 12px}.mobile-shift{grid-template-columns:50px minmax(0,1fr);gap:10px}.mobile-shift>.status-pill{grid-column:2;justify-self:start}.mobile-shift-main strong{font-size:14px}.mobile-shift .row-chevron{display:none}.admin-layout{gap:20px}.detail-panel{padding:19px}.detail-meta{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.employee-hero{gap:24px}.next-shift{padding:23px}.next-shift h2{font-size:27px}.employee-shift-row{grid-template-columns:61px minmax(0,1fr) auto;gap:10px}.profile-detail{grid-template-columns:1fr;gap:5px}.dialog{width:100%;max-height:calc(100dvh - 12px);margin:6px auto auto;border-radius:14px 14px 0 0}.dialog-surface{padding:21px 18px calc(25px + env(safe-area-inset-bottom))}.segment-row{grid-template-columns:1fr 1fr auto}.toast-region{right:14px;bottom:calc(var(--bottom-nav) + 14px);left:14px}.toast{max-width:none}.powered-by{text-align:left}
  .week-planner-desktop{display:none}.week-planner-mobile{display:block}
}
@media (max-width:767px){.selection-empty{display:none}.detail-panel{padding:18px 1px}.detail-meta div:nth-child(odd){border-right:0}.detail-meta div:nth-child(even){padding-left:0}.next-shift{padding:21px 1px}.shift-detail-grid{grid-template-columns:1fr}.detail-line,.detail-stat{padding-right:0}.dialog-head{padding-bottom:16px}}
@media (max-width:767px){.detail-edit-row{min-height:52px}.detail-line.detail-edit-row,.detail-stat.detail-edit-row{padding:14px 1px}.detail-edit-indicator{width:32px;height:32px}.detail-edit-wide{padding-top:14px;padding-bottom:14px}}
@media (max-width:767px){.profile-menu-guide{display:none}.week-planning-switch{margin-right:-18px;margin-left:-18px;border-right:0;border-left:0;border-radius:0}.week-planning-switch>button{min-height:68px;padding:9px 12px}.week-planning-switch b{width:25px;height:25px}.client-week-planner-desktop{display:none}.client-week-planner-mobile{display:block}.client-week-planner-mobile .week-strip{margin:0 -18px}.client-week-planner-mobile .selected-day-head{margin:0 -18px;padding:14px 18px 12px}.client-week-planner-mobile>.calm-empty{padding-right:1px;padding-left:1px}.calendar-toolbar.is-week{margin-right:-18px;margin-left:-18px;padding-right:18px;padding-left:18px;border-right:0;border-left:0;border-radius:0}.period-label{min-width:0;flex:1}.period-label strong{min-width:0}}
@media (max-width:767px){.profile-menu-guide[data-app-lock-now]{display:flex}}
@media (max-width:767px){.report-period{display:grid;grid-template-columns:42px minmax(0,1fr) 42px}.report-period>label{min-width:0}.report-period .button{grid-column:1/-1;width:100%;margin-left:0}.report-metrics{grid-template-columns:1fr 1fr}.report-metrics>div:nth-child(2){border-right:0}.report-metrics>div:nth-child(n+3){border-top:1px solid var(--line)}.report-employee-head{display:none}.report-employee-row{grid-template-columns:minmax(0,1fr) auto 18px;gap:9px}.report-employee-row>span:nth-child(2){display:none}.report-employee-row>span:nth-child(3){text-align:right}.report-employee-row>.status-pill{grid-column:1/-2;justify-self:start}.report-employee-row>svg{grid-column:3;grid-row:1}.report-issue-row{grid-template-columns:minmax(0,1fr) 18px;gap:9px}.report-issue-row>span:nth-child(2){grid-column:1}.report-issue-row>svg{grid-column:2;grid-row:1}.report-output-grid{grid-template-columns:1fr}.report-output-grid article{padding:19px 0}.report-output-grid article+article{padding-left:0;border-top:1px solid var(--line);border-left:0}.report-output-grid p{min-height:0}.report-dialog-summary{grid-template-columns:1fr 1fr}.report-dialog-summary span:nth-child(3){grid-column:1/-1;border-top:1px solid var(--line);border-left:0}.mobile-nav .nav-button{font-size:9px}.mobile-nav .nav-button svg{width:19px;height:19px}}
@media (max-width:767px){.employee-detail{padding-top:0;border-top:0}.employee-detail-head{grid-template-columns:46px minmax(0,1fr);gap:12px;padding-bottom:17px;border-bottom:1px solid var(--ink)}.employee-profile-avatar{width:46px;height:46px;font-size:14px}.employee-detail-head h2{font-size:25px}.employee-detail-head>.status-pill,.employee-detail-head>.employee-app-badge{grid-column:2;justify-self:start}.employee-actions{display:grid;grid-template-columns:1fr 1fr;margin-top:14px}.employee-actions .button{min-width:0;padding-right:9px;padding-left:9px;font-size:12px}.employee-summary{grid-template-columns:1fr 1fr}.employee-summary div:nth-child(odd){padding-right:12px;border-right:1px solid var(--line)}.employee-summary div:nth-child(even){padding-left:12px}.employee-detail-section{margin-top:28px}.employee-section-head{align-items:flex-start;flex-direction:column}.employee-week-controls{width:100%;justify-content:space-between}.employee-week-controls .button{flex:1;padding-right:8px;padding-left:8px;font-size:11px}.employee-admin-shift{grid-template-columns:45px minmax(0,1fr);gap:9px;padding:14px 1px}.employee-admin-shift>.status-pill{grid-column:2;justify-self:start}.employee-contact-list>div{grid-template-columns:100px minmax(0,1fr)}}
@media (max-width:767px){.header-logout,.worker-profile-session{display:none}.profile-menu{right:8px;padding-bottom:8px}.profile-menu-logout{display:flex;align-items:center;gap:10px;width:calc(100% + 30px);min-height:48px;margin:13px -15px 0;padding:10px 15px 3px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);font-size:14px;font-weight:750;text-align:left}.profile-menu-logout svg{width:19px;height:19px}.profile-menu-logout span{margin:0;color:inherit;font-size:inherit}}
@media (max-width:767px){.bulk-section-head{align-items:stretch;flex-direction:column;gap:10px}.bulk-section-head .button{width:100%}.bulk-existing-row{grid-template-columns:20px 42px minmax(0,1fr)}.bulk-action-label{grid-column:3}.bulk-selection-actions{display:grid;grid-template-columns:1fr 1fr}.bulk-selection-actions .button:last-child{grid-column:1/-1}.bulk-addition-row{grid-template-columns:1fr 1fr;padding:11px}.bulk-client-field{grid-column:1/-1}.bulk-remove-row{grid-column:2;justify-self:end}.bulk-review{padding:12px}}
@media (max-width:767px){.client-detail{padding-top:0;border-top:0}.client-detail-head{grid-template-columns:46px minmax(0,1fr);gap:12px;padding-bottom:17px;border-bottom:1px solid var(--ink)}.client-profile-avatar{width:46px;height:46px;font-size:14px}.client-detail-head h2{font-size:25px}.client-actions{display:grid;grid-template-columns:1fr 1fr;margin-top:14px}.client-actions .button{min-width:0;padding-right:9px;padding-left:9px;font-size:12px}.client-summary{grid-template-columns:1fr 1fr}.client-summary div:nth-child(odd){padding-right:12px;border-right:1px solid var(--line)}.client-summary div:nth-child(even){padding-left:12px}.client-visit-row{grid-template-columns:45px minmax(0,1fr);gap:9px;padding:14px 1px}.client-visit-row>.status-pill{grid-column:2;justify-self:start}.client-instructions{grid-template-columns:1fr}.client-instructions>div{min-height:0;padding:15px 1px;border-right:0}.client-instructions>div+div{padding:15px 1px}.client-worker-list .employee-section-empty{padding-left:1px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.dialog:has(#managerOnboarding.manager-onboarding-welcome){width:min(760px,calc(100% - 30px))}

/* Avoimet asiat erotellaan korjattaviin ja rauhallisiin seurattaviin. */
.attention-row{grid-template-columns:72px minmax(0,1fr) auto 18px}
.attention-action{color:var(--accent-dark);font-size:11px;font-weight:800;white-space:nowrap}
.advisory-head{margin-top:34px}
.attention-list.is-advisory{border-top-color:var(--line)}
.attention-row.is-advisory .issue-type,.attention-row.is-advisory .attention-action{color:var(--muted)}
.home-clear-inline{display:flex;align-items:center;gap:9px;min-height:48px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}
.home-clear-inline i{width:7px;height:7px;border-radius:50%;background:var(--green)}
.week-flow-copy .week-flow-review-summary{margin:5px 0 0;color:var(--accent-dark);font-size:12px;font-weight:800}
.review-shift-group-list{border-top:1px solid var(--ink)}
.review-shift-group-row{display:grid;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:12px;width:100%;padding:13px 1px;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left}
.review-shift-group-row:hover{background:#f7f7fa}
.review-shift-group-row>span{display:grid;gap:3px;min-width:0}
.review-shift-group-row small{color:var(--muted);font-size:10px}
.review-shift-group-row strong{overflow:hidden;text-overflow:ellipsis;font-size:13px;white-space:nowrap}
.review-shift-group-row b{color:var(--accent-dark);font-size:11px;white-space:nowrap}
.review-shift-group-row svg{width:16px;height:16px;color:var(--faint)}

/* Hallittu versionvaihto: käyttäjä päättää milloin avoin näkymä ladataan uudelleen. */
.app-update-notice{position:fixed;right:22px;bottom:22px;z-index:80;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;width:min(430px,calc(100% - 44px));padding:14px 15px 14px 17px;border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--surface-strong);box-shadow:0 12px 26px rgba(58,46,38,.14)}
.app-update-notice>div:first-child{display:grid;min-width:0;gap:3px}.app-update-notice strong{font-size:14px}.app-update-notice p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}.app-update-actions{display:flex;align-items:center;gap:4px}.app-update-actions .button{white-space:nowrap}
body:has(#appUpdateNotice:not([hidden])) .toast-region{bottom:132px}
@media(max-width:767px){
  .toast-region{top:auto;right:14px;bottom:calc(var(--bottom-nav) + var(--safe-area-bottom) + 14px);left:14px;justify-items:center;pointer-events:none}
  .toast{box-sizing:border-box;width:fit-content;max-width:min(320px,100%);padding:9px 12px;border-radius:7px;box-shadow:none;font-size:12px;line-height:1.35;pointer-events:auto}
}

@media(max-width:767px){.attention-row{grid-template-columns:58px minmax(0,1fr) 18px}.attention-action{grid-column:2;justify-self:start}.review-shift-group-row{grid-template-columns:minmax(0,1fr) 18px}.review-shift-group-row b{grid-column:1;justify-self:start}}
/* Työntekijän kevyt toteumavahvistus */
.worker-next-column{min-width:0}.worker-actuals{margin:14px 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.worker-actuals-trigger{display:grid;grid-template-columns:minmax(0,1fr) auto 20px;align-items:center;gap:12px;width:100%;min-height:66px;padding:12px 2px;border:0;background:transparent;text-align:left;cursor:pointer}.worker-actuals-trigger>span:first-child{display:grid;gap:3px}.worker-actuals-trigger strong{font-size:15px}.worker-actuals-trigger small{color:var(--muted);font-size:11px}.worker-actuals-trigger>svg{width:18px;height:18px;color:var(--faint)}
.worker-actuals>summary{display:grid;grid-template-columns:minmax(0,1fr) auto 20px;align-items:center;gap:12px;min-height:66px;padding:12px 2px;list-style:none;cursor:pointer}.worker-actuals>summary::-webkit-details-marker{display:none}.worker-actuals>summary>span:first-child{display:grid;gap:3px}.worker-actuals>summary strong{font-size:15px}.worker-actuals>summary small{color:var(--muted);font-size:11px}.worker-actuals>summary>svg{width:18px;height:18px;color:var(--faint);transition:transform .18s}.worker-actuals[open]>summary>svg{transform:rotate(90deg)}
.worker-actual-count{display:grid;place-items:center;min-width:25px;height:25px;padding:0 2px;color:var(--accent-dark);font-size:13px;font-weight:800}.worker-actuals-panel{padding-bottom:2px;border-top:1px solid var(--line)}.worker-actuals-panel.is-animating{overflow:hidden}
.worker-actuals[data-target-open="true"] .worker-actuals-content{animation:worker-actuals-reveal .22s cubic-bezier(.22,1,.36,1) both}
@keyframes worker-actuals-reveal{from{opacity:.55;transform:translate3d(0,-7px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media(prefers-reduced-motion:reduce){.worker-actuals[data-target-open="true"] .worker-actuals-content{animation:none}}
.worker-actuals.is-closing>summary>svg{transform:rotate(0deg)}
.worker-actuals-head{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:14px;padding:12px 2px}
.worker-actuals-divider{display:flex;align-items:center;gap:10px;min-width:0;color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.worker-actuals-divider::after{content:"";flex:1;min-width:24px;height:1px;background:var(--line)}
.worker-actual-scroll-hint{display:none;margin:0;color:var(--muted);font-size:10px;line-height:1.4}
.worker-actual-list{border-top:1px solid var(--line)}
.worker-actual-row{display:block;padding:4px 0;border-bottom:1px solid var(--line)}
.worker-actual-summary{display:grid;grid-template-columns:128px minmax(0,1fr) 30px;align-items:center;gap:14px;width:100%;min-width:0;min-height:68px;padding:9px 8px;border:0;border-radius:10px;background:transparent;text-align:left;cursor:pointer;transition:background-color .16s ease,transform .14s ease}
.worker-actual-summary:hover{background:#f5f8fc}.worker-actual-summary:active{background:var(--accent-soft);transform:scale(.992)}.worker-actual-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.worker-actual-summary time,.worker-actual-summary>span{display:grid;gap:4px;min-width:0}
.worker-actual-summary time{color:var(--muted);font-size:11px;text-transform:capitalize}
.worker-actual-summary time strong,.worker-actual-summary>span>strong{color:var(--ink);font-size:14px}
.worker-actual-summary small{color:var(--amber);font-size:11px;line-height:1.35}
.worker-actual-open-cue{display:grid;place-items:center;width:30px;height:30px;border-radius:999px;background:var(--accent-soft);color:var(--accent-dark)}
.worker-actual-open-cue svg{width:16px;height:16px}
.worker-actual-status{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-left:3px solid var(--green);background:var(--green-soft)}
.worker-actual-status span{font-size:12px;font-weight:700}.worker-actual-status strong{font-size:14px;font-variant-numeric:tabular-nums}
.planned-actual-reference{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.planned-actual-reference span{color:var(--muted);font-size:12px}.planned-actual-reference strong{font-size:16px;font-variant-numeric:tabular-nums}
.dialog:has(#workerActualForm){width:min(560px,calc(100% - 30px))}
#workerActualForm{gap:14px}
.worker-actual-time-section{display:grid;gap:8px}.worker-actual-time-section h3{margin:0;font-size:13px}.worker-actual-time-section h3 small{margin-left:4px;color:var(--muted);font-size:10px;font-weight:600}
.worker-actual-time-section.is-optional{padding-top:13px;border-top:1px solid var(--line-soft)}
.worker-actual-mode{display:grid;gap:8px;margin:0;padding:0;border:0}.worker-actual-mode legend{padding:0;font-size:13px;font-weight:750}.worker-actual-mode-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.worker-actual-mode-option{display:flex;align-items:flex-start;gap:9px;min-height:64px;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer}.worker-actual-mode-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.worker-actual-mode-option input{flex:0 0 auto;width:17px;height:17px;margin:1px 0 0;accent-color:var(--accent)}.worker-actual-mode-option span{display:grid;gap:2px;min-width:0}.worker-actual-mode-option strong{font-size:12px}.worker-actual-mode-option small{color:var(--muted);font-size:10px;line-height:1.35}.worker-actual-segments,.worker-actual-segment{display:grid;gap:8px}.worker-actual-segment+.worker-actual-segment{padding-top:10px;border-top:1px solid var(--line-soft)}.worker-actual-segment>[data-remove-worker-actual-segment]{justify-self:start}.worker-actual-add-segment{justify-self:start}.worker-actual-reason[hidden]{display:none}
.worker-actual-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}.worker-actual-time-grid .field{min-width:0;max-width:100%;gap:5px}.worker-actual-time-grid .field>span{font-size:11px}.worker-actual-time-grid input[type="time"]{display:block;inline-size:100%;min-inline-size:0;max-inline-size:100%;min-height:45px;padding:7px 9px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums}
@supports (-webkit-touch-callout:none){.worker-actual-time-grid input[type="time"]{-webkit-appearance:none;appearance:none}}
#workerActualForm .actual-not-occurred{align-items:flex-start;margin:2px 0 0;padding:12px 0;border-top:1px solid var(--line);gap:9px;font-size:inherit}
#workerActualForm .actual-not-occurred input{flex:0 0 auto;width:18px;height:18px;margin:1px 0 0;accent-color:var(--accent)}
#workerActualForm .actual-not-occurred>span{display:grid;min-width:0;gap:2px}#workerActualForm .actual-not-occurred strong{font-size:13px;line-height:1.35}#workerActualForm .actual-not-occurred small{color:var(--muted);font-size:11px;font-weight:500;line-height:1.4}
.dialog-surface:has(.worker-mass-review){display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;max-height:calc(100dvh - 30px);overflow:hidden}
.worker-mass-review{display:grid;min-height:0;max-height:min(58dvh,560px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;border-top:1px solid var(--ink);scrollbar-width:thin;scrollbar-color:#b8c5d6 transparent;-webkit-overflow-scrolling:touch}
.worker-mass-review>div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;padding:13px 2px;border-bottom:1px solid var(--line)}
.worker-mass-review time{display:grid;gap:3px;color:var(--muted);font-size:11px}.worker-mass-review time strong{color:var(--ink);font-size:13px}.worker-mass-review>div>span{align-self:center;font-weight:650}
.worker-mass-review>.worker-actual-row{margin:0 15px;padding:4px 0;border-bottom:1px solid var(--line-soft)}
.worker-mass-review>.worker-actual-row:last-child{border-bottom:0}
.worker-actual-back{justify-self:start;min-height:44px;margin:-8px 0 0;padding:0;border:0;background:transparent;color:var(--accent-dark);box-shadow:none}
.dialog-surface:has(.worker-mass-review)>#workerActualFeedback:not([hidden]){margin:10px 0 0}
.dialog-surface:has(.worker-mass-review)>.dialog-actions{padding-top:14px;border-top:1px solid var(--line);background:var(--surface-strong)}
.payroll-status-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}

@media (max-width:767px){
  .dialog:has(#workerActualForm){width:calc(100% - 16px);max-height:calc(100dvh - 16px);margin:8px auto;border-radius:14px}
  .dialog-surface:has(#workerActualForm){padding:18px 16px calc(20px + env(safe-area-inset-bottom))}
  .dialog-surface:has(#workerActualForm) .dialog-head{margin-bottom:16px;padding-bottom:14px}.dialog-surface:has(#workerActualForm) .dialog-head h2{font-size:21px}.dialog-surface:has(#workerActualForm) .dialog-head p{font-size:11px;line-height:1.4}
  #workerActualForm .planned-actual-reference{padding:11px 0}#workerActualForm .planned-actual-reference strong{font-size:14px}
  #workerActualForm .dialog-actions{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center}#workerActualForm .dialog-actions .button{min-width:0;padding-right:12px;padding-left:12px}
  .worker-actuals>summary{min-height:64px;padding-right:1px;padding-left:1px}
  .worker-actuals-head{display:grid}.worker-actuals-head .button{width:100%}
  .worker-actual-row{padding:4px 0}
  .worker-actual-summary{grid-template-columns:91px minmax(0,1fr) 30px;gap:9px}
  .worker-mass-review>div{grid-template-columns:105px minmax(0,1fr);gap:10px}
  .payroll-status-actions{display:grid;width:100%}.payroll-status-actions .button{width:100%}
}

/* Johdon yhtenäinen viikkotyönkulku */
.week-flow-status{display:grid;grid-template-columns:minmax(260px,1.25fr) minmax(360px,1fr) auto;align-items:center;gap:24px;margin:28px 0 34px;padding:20px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.week-flow-status.is-compact{margin:0 0 14px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:#fafafd}
.week-flow-copy{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;min-width:0}
.week-flow-copy>.status-pill{margin-top:2px;white-space:nowrap}
.week-flow-copy .eyebrow{margin:0 0 4px;font-size:10px}
.week-flow-copy h2{margin:0;font-size:19px;letter-spacing:-.02em}
.week-flow-copy p:last-child{max-width:58ch;margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}
.week-flow-metrics{display:grid;grid-template-columns:repeat(4,minmax(70px,1fr));margin:0}
.week-flow-metrics>div{display:grid;gap:3px;padding:1px 12px;border-left:1px solid var(--line)}
.week-flow-metrics dt{color:var(--muted);font-size:10px;line-height:1.25}
.week-flow-metrics dd{margin:0;font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}
.week-flow-metrics .has-warning dd{color:var(--red)}
.week-flow-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.status-pill.ready{background:var(--green-soft);color:var(--green)}
.status-pill.neutral{background:#efeff5;color:var(--muted)}
.copy-week-flow{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;gap:10px;padding:14px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.copy-week-flow>div{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px}
.copy-week-flow>div>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);font-size:12px;font-weight:700}
.copy-week-flow p{display:grid;gap:2px;margin:0}
.copy-week-flow small{color:var(--muted);font-size:10px}
.copy-week-flow strong{font-size:12px}
.copy-week-flow>i{display:grid;place-items:center;color:var(--faint)}
.copy-week-flow>i svg{width:16px;height:16px}
.copy-week-checks{display:grid;gap:7px;margin:0;padding:0 0 0 19px;color:var(--muted);font-size:12px;line-height:1.45}
.warning-resolution{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}
.warning-resolution>span{display:grid;gap:3px}
.warning-resolution strong{font-size:12px}
.warning-resolution small{color:var(--muted);font-size:11px}
.warning-resolution>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.shift-edit-hint{position:absolute;top:4px;right:5px;color:var(--muted);font-size:8px;font-style:normal;font-weight:800;letter-spacing:.02em;opacity:0;transition:opacity .15s}.week-planner-shift:not(.is-selected)>span,.client-week-shift>span{padding-right:30px}.week-planner-shift:hover .shift-edit-hint,.week-planner-shift:focus-visible .shift-edit-hint,.client-week-shift:hover .shift-edit-hint,.client-week-shift:focus-visible .shift-edit-hint{opacity:1}.overlap-shift-list{display:grid;border-top:1px solid var(--ink)}.overlap-shift-row{display:grid;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:12px;width:100%;min-height:64px;padding:11px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .16s,transform .16s}.overlap-shift-row:hover{background:#f7f9fc}.overlap-shift-row:active{transform:scale(.99)}.overlap-shift-row>span:first-child{display:grid;min-width:0;gap:4px}.overlap-shift-row strong{font-size:13px;font-variant-numeric:tabular-nums}.overlap-shift-row small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.overlap-shift-row>span:nth-child(2){color:var(--accent-dark);font-size:11px;font-weight:800;white-space:nowrap}.overlap-shift-row>svg{width:16px;height:16px;color:var(--faint)}.button.danger{border-color:var(--red);background:#fff;color:var(--red)}.button.danger:hover{background:var(--red-soft)}
.approval-pair{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.approval-pair>.avatar{width:42px;height:42px}
.approval-pair>span:last-child{display:grid;gap:2px}
.approval-pair small{color:var(--muted);font-size:11px}
.approval-pair strong{font-size:15px}
.availability-conflict-summary{display:flex;align-items:flex-start;gap:12px;padding:15px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.availability-conflict-summary>svg{flex:0 0 auto;width:20px;height:20px;color:var(--red)}
.availability-conflict-summary>span{display:grid;gap:5px}
.availability-conflict-summary strong{font-size:15px;line-height:1.4}
.availability-conflict-summary p,.availability-conflict-help{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.availability-conflict-list{display:grid;border-top:1px solid var(--line)}
.availability-conflict-row{display:grid;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:12px;width:100%;min-height:72px;padding:12px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .16s,transform .16s}
.availability-conflict-row:hover{background:#f7f9fc}.availability-conflict-row:active{transform:scale(.99)}
.availability-conflict-row>span:first-child{display:grid;min-width:0;gap:3px}.availability-conflict-row strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.availability-conflict-row small{color:var(--muted);font-size:11px}.availability-conflict-row>span:nth-child(2){color:var(--accent-dark);font-size:11px;font-weight:800;white-space:nowrap}.availability-conflict-row>svg{width:16px;height:16px;color:var(--faint)}

@media (max-width:1100px){.week-flow-status{grid-template-columns:1fr auto}.week-flow-metrics{grid-column:1/-1;grid-row:2}.week-flow-actions{grid-column:2;grid-row:1}.week-flow-metrics>div:first-child{border-left:0;padding-left:0}}
@media (max-width:767px){.week-flow-status,.week-flow-status.is-compact{grid-template-columns:1fr;gap:16px;margin:22px 0 28px;padding:17px 0;border-right:0;border-left:0;border-radius:0;background:#fff}.week-flow-copy{grid-template-columns:1fr;gap:8px}.week-flow-copy>.status-pill{justify-self:start}.week-flow-copy h2{font-size:18px}.week-flow-metrics{grid-column:1;grid-row:auto;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.week-flow-metrics>div{padding:11px 10px;border-left:0}.week-flow-metrics>div:nth-child(even){border-left:1px solid var(--line)}.week-flow-metrics>div:nth-child(n+3){border-top:1px solid var(--line)}.week-flow-metrics>div:first-child{padding-left:10px}.week-flow-actions{grid-column:1;grid-row:auto;display:grid;grid-template-columns:1fr;justify-content:stretch}.week-flow-actions .button{width:100%}.copy-week-flow{grid-template-columns:1fr;gap:9px}.copy-week-flow>i{transform:rotate(90deg)}.warning-resolution{align-items:stretch;flex-direction:column}.warning-resolution .button{width:100%}}

/* Työntekijän työvuorolistan mobiiliystävällinen esikatselu */
.dialog:has(.employee-schedule-preview){width:min(760px,calc(100% - 30px));border-radius:18px}
.dialog-surface:has(.employee-schedule-preview){padding:0;border-radius:inherit;overflow:hidden}
.employee-schedule-preview{display:flex;max-height:calc(100dvh - 30px);flex-direction:column;background:#fff}
.schedule-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:25px 27px 18px}
.schedule-preview-head p{margin:0 0 5px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.12em}
.schedule-preview-head h2{margin:0;color:var(--accent-dark);font-size:27px;letter-spacing:-.03em}
.schedule-preview-head span{display:block;margin-top:6px;color:var(--muted);font-size:13px}
.schedule-preview-head .icon-button{flex:0 0 auto;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
.schedule-preview-summary{display:grid;grid-template-columns:1fr 1fr;margin:0;padding:0 27px;background:var(--accent-soft)}
.schedule-preview-summary>div{display:grid;gap:4px;padding:15px 0}
.schedule-preview-summary>div+div{padding-left:22px;border-left:1px solid rgba(0,70,173,.16)}
.schedule-preview-summary dt{color:var(--muted);font-size:10px;font-weight:750;text-transform:uppercase}
.schedule-preview-summary dd{margin:0;color:var(--accent-dark);font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}
.schedule-preview-list{flex:1;min-height:0;margin:0 27px;padding:3px 16px 12px;border-radius:16px;background:#fff;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.schedule-preview-list h3{margin:16px 0 0;padding:7px 0;color:var(--accent-dark);font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.schedule-preview-row{display:grid;grid-template-columns:120px minmax(0,1fr) 84px;align-items:center;gap:16px;min-height:60px;padding:11px 0;border-bottom:1px solid #e5e7ea}
.schedule-preview-row:last-child{border-bottom:0}
.schedule-preview-row time,.schedule-preview-row>div{display:grid;min-width:0;gap:3px}
.schedule-preview-row strong{font-size:12px}
.schedule-preview-row span{color:var(--muted);font-size:11px}
.schedule-preview-row>b{justify-self:end;font-size:12px;font-variant-numeric:tabular-nums}
.schedule-preview-privacy{margin:0;padding:12px 27px 9px;color:var(--muted);font-size:10px;line-height:1.4}
.employee-schedule-preview>#schedulePdfFeedback{margin:0 27px 10px}
.schedule-preview-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 27px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #e5e7ea;background:#fff;box-shadow:none}
.schedule-preview-actions>span{color:var(--muted);font-size:11px}
.schedule-preview-actions>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:280px}

@media (max-width:767px){
  .dialog:has(.employee-schedule-preview){width:100%;max-width:none;height:auto;max-height:calc(100dvh - 76px);margin:auto 0 0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(.employee-schedule-preview)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(.employee-schedule-preview){border-radius:24px 24px 0 0}
  .employee-schedule-preview{height:min(768px,calc(100dvh - 76px));max-height:calc(100dvh - 76px);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .schedule-preview-head{padding:22px 20px 17px}
  .schedule-preview-head h2{font-size:24px;font-weight:750;line-height:1.15}
  .schedule-preview-summary{padding:0 18px}
  .schedule-preview-summary>div{padding:13px 0}
  .schedule-preview-summary>div+div{padding-left:16px}
  .schedule-preview-summary dd{font-size:19px}
  .schedule-preview-list{margin:0 20px;padding:3px 14px 10px;border-radius:14px}
  .schedule-preview-list h3{margin-top:12px}
  .schedule-preview-row{grid-template-columns:86px minmax(0,1fr) auto;gap:9px;min-height:57px;padding:10px 0}
  .schedule-preview-row time strong{font-size:11px}
  .schedule-preview-row>b{font-size:11px}
  .schedule-preview-privacy{padding:10px 20px 8px}
  .employee-schedule-preview>#schedulePdfFeedback{margin:0 18px 8px}
  .schedule-preview-actions{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;justify-content:stretch;gap:8px;width:100%;padding:10px 20px calc(12px + env(safe-area-inset-bottom))}
  .schedule-preview-actions>span{text-align:center}
  .schedule-preview-actions>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%}
  .schedule-preview-actions .button{min-width:0;min-height:50px;padding:0 12px;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  .schedule-preview-actions .button:active{transform:scale(.985)}
}

@media (max-width:420px){
  .schedule-preview-head{padding:17px 16px 14px}
  .schedule-preview-head h2{font-size:22px}
  .schedule-preview-head .icon-button{width:40px;height:40px}
  .schedule-preview-summary{padding:0 16px}
  .schedule-preview-list{margin:0 16px;padding:3px 13px 8px}
  .schedule-preview-row{grid-template-columns:78px minmax(0,1fr) auto;gap:8px;padding:10px 0}
  .schedule-preview-row time span{line-height:1.35}
  .schedule-preview-row>div strong{overflow-wrap:anywhere;line-height:1.3}
  .schedule-preview-privacy{padding:8px 16px}
  .schedule-preview-actions{padding:9px 16px calc(9px + env(safe-area-inset-bottom))}
}

/* Finago-inspired visual system */
:root{
  --paper:#f6f6f6;
  --surface:#fff;
  --surface-strong:#fff;
  --ink:#212322;
  --muted:#6e7787;
  --faint:#9ca3af;
  --line:#d9e3f3;
  --line-soft:#eff5fb;
  --accent:#0046ad;
  --accent-dark:#003a8e;
  --accent-soft:#f1f7fb;
  --reference-header:#0046ad;
  --reference-sidebar:#0046ad;
  --reference-sidebar-line:#4d82c7;
  --reference-sidebar-active:#f1f7fb;
  --reference-sidebar-active-ink:#003a8e;
  --green:#2e7957;
  --green-soft:#e6f3ec;
  --amber:#925b18;
  --amber-soft:#fff0dc;
  --red:#ad3e4a;
  --red-soft:#f9e9ec;
  --radius:12px;
  --shadow:0 16px 38px rgba(0,70,173,.12)
}
html{font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif;background:var(--paper)}
body{background:var(--paper);font-size:14px}
h1,h2,h3,h4,.home-intro h2,.page-lead h2,.dialog-head h2{font-family:inherit;font-weight:700;letter-spacing:-.025em}
strong{font-weight:700}
.eyebrow{color:var(--muted);font-weight:700;letter-spacing:.1em}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:rgba(0,70,173,.3)}
.brand-mark{background:var(--accent)}
.button{border-color:var(--line);border-radius:9px;font-weight:650}
.button:hover{border-color:#7aa5d7}
.button.primary{border-color:var(--accent);background:var(--accent)}
.button.primary:hover{border-color:var(--accent-dark);background:var(--accent-dark)}
.button.secondary{border-color:#a9c7e6;background:#fff;color:var(--accent-dark)}
.button.secondary:hover{border-color:var(--accent);background:#f1f7fb}
.button.ghost,.text-action,.back-link{color:var(--accent-dark)}
.icon-button{border-color:var(--line);border-radius:9px;background:#fff}
.icon-button:hover{border-color:#a9c7e6;color:var(--accent-dark)}
.field{font-weight:650}
.field input,.field select,.field textarea,.search-field input{border-color:var(--line);border-radius:9px;background:#fbfbfd;font-weight:450}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,70,173,.14)}
.entity-suggestions{border-color:#a9c7e6;box-shadow:0 14px 30px rgba(0,70,173,.16)}
.entity-suggestion:active,.entity-suggestion:hover{background:#f1f7fb}
.auth-page{background:#f4f4f8}
.auth-card{border-color:#e3e3ea;border-radius:18px;box-shadow:0 20px 52px rgba(0,70,173,.11)}
.auth-heading h1{font-size:29px;letter-spacing:-.03em}
.auth-skeleton span,.boot-lines span{background:linear-gradient(90deg,#e7e7ee 20%,#f8f8fa 45%,#e7e7ee 70%);background-size:220% 100%}
.auth-skeleton span:last-child{background:linear-gradient(90deg,#d9e3f3 20%,#eff5fb 45%,#d9e3f3 70%);background-size:220% 100%}
.sidebar{border-right-color:#003581;background:var(--reference-sidebar);box-shadow:4px 0 18px rgba(0,70,173,.12)}
.nav-button{font-weight:650}
.nav-button.is-active{background:var(--reference-sidebar-active);color:var(--reference-sidebar-active-ink)}
.app-header{border-bottom-color:#003a8e;background:var(--reference-header);box-shadow:0 2px 8px rgba(0,70,173,.22)}
.avatar,.client-profile-avatar,.employee-profile-avatar{background:#f1f7fb;color:#003a8e}
.header-avatar{background:#fff;color:var(--reference-header);box-shadow:0 0 0 2px rgba(255,255,255,.2)}
.main-shell{background:var(--paper)}
.profile-menu{border-color:var(--line);box-shadow:0 16px 34px rgba(33,35,34,.18)}
.home-intro h2{font-size:clamp(29px,3.5vw,38px);letter-spacing:-.035em}
.page-lead h2{letter-spacing:-.03em}
.attention-row:hover,.today-row:hover,.shift-bar:hover,.admin-list-button:hover,.report-employee-row:hover,.report-issue-row:hover,.employee-admin-shift:hover,.client-visit-row:hover,.employee-shift-row:hover{background:#f7f7fa}
.issue-type,.section-action,.list-action,.admin-list-button.is-active,.client-visit-date strong{color:var(--accent-dark)}
.status-pill{padding:4px 7px;border-radius:4px;background:#efeff5;color:var(--muted);font-weight:700;letter-spacing:.035em}
.status-pill.published{background:var(--green-soft);color:var(--green)}
.status-pill.draft{background:var(--amber-soft);color:var(--amber)}
.status-pill.warning{background:var(--red-soft);color:var(--red)}
.client-detail-head{grid-template-columns:54px minmax(0,1fr) auto}.client-detail-head>.status-pill{align-self:start;margin-top:2px;white-space:nowrap}.client-lifecycle-label{display:block;width:max-content;max-width:100%;margin-top:5px;color:var(--muted);font-size:9px;font-style:normal;font-weight:800;letter-spacing:.035em}.client-lifecycle-label.warning{color:var(--amber)}.client-service-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:17px;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.client-service-notice>span{display:grid;gap:4px}.client-service-notice strong{font-size:13px}.client-service-notice small{color:var(--muted);font-size:11px}.client-service-notice.warning strong{color:var(--amber)}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.client-directory-summary{display:grid;gap:3px;margin:0 0 10px;padding:10px 11px;border-left:3px solid #a9c7e6;background:#f5f8fc}.client-directory-summary strong{font-size:11px}.client-directory-summary small{color:var(--muted);font-size:9px;line-height:1.4}.client-profile-notice{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:16px;padding:12px 0;border-top:1px solid #cad9e9;border-bottom:1px solid #cad9e9}.client-profile-notice>span{display:grid;gap:4px}.client-profile-notice strong{color:var(--accent-dark);font-size:13px}.client-profile-notice small{color:var(--muted);font-size:11px}.client-next-visit{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;margin-top:22px;padding:17px 16px;border:1px solid #c8d9ec;border-radius:9px;background:#f5f8fc;color:var(--ink);text-align:left;transition:border-color .18s,background .18s,transform .18s}.client-next-visit:hover{border-color:#8fb5dc;background:#eef5fc}.client-next-visit:active{transform:scale(.995)}.client-next-visit>span{display:grid;gap:4px}.client-next-visit small{color:var(--accent-dark);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.client-next-visit strong{font-size:15px;text-transform:capitalize}.client-next-visit em{color:var(--muted);font-size:11px;font-style:normal}.client-next-visit b{display:flex;align-items:center;gap:7px;color:var(--accent-dark);font-size:11px;white-space:nowrap}.client-next-visit b svg{width:15px;height:15px}.client-next-visit.is-empty{background:#fafafd}.client-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}.client-metrics>div{display:grid;align-content:start;gap:5px;min-height:91px;padding:16px;border-right:1px solid var(--line)}.client-metrics>div:first-child{padding-left:1px}.client-metrics>div:last-child{padding-right:1px;border-right:0}.client-metrics small{color:var(--muted);font-size:10px}.client-metrics strong{font-size:15px}.client-metrics .text-action{justify-self:start;margin-top:2px;padding:0;font-size:10px}.client-month-controls{display:flex;align-items:center;gap:7px}.client-month-controls .icon-button{width:36px;height:36px}.client-month-picker{display:block}.client-month-picker input{width:142px;height:36px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-size:11px;font-weight:700}.client-month-picker input:focus{border-color:var(--accent);outline:2px solid rgba(0,70,173,.14);outline-offset:1px}
.segmented{padding:3px;border:0;border-radius:10px;background:#f1f1f6}
.segmented button{min-height:35px;border:0;border-radius:7px;font-weight:650}
.segmented button.is-active{background:#fff;color:var(--accent-dark);box-shadow:0 1px 4px rgba(0,70,173,.13)}
.calendar-today{border-color:#a9c7e6;background:#fff;color:var(--accent-dark)}
.week-strip{gap:4px;padding:4px;border-color:var(--line);border-radius:10px;background:#f3f3f7}
.day-chip{min-height:68px;border:1px solid transparent;border-radius:7px;background:#fff}
.day-chip:last-child{border-right:1px solid transparent}
.day-chip.is-active{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:0 4px 10px rgba(0,70,173,.22)}
.schedule-surface{margin-top:8px;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.selected-day-head .icon-button{background:var(--accent)}
.mobile-group-head{background:#f7f7fa}
.mobile-schedule-group.is-employee .mobile-group-head,.mobile-schedule-group.is-client .mobile-group-head{border-color:#d9e3f3;background:#f1f7fb;color:var(--ink)}
.mobile-schedule-group.is-employee .mobile-group-head .avatar,.mobile-schedule-group.is-client .mobile-group-head .avatar{color:var(--accent-dark)}
.mobile-schedule-group.is-employee .mobile-group-kind,.mobile-schedule-group.is-client .mobile-group-kind{color:var(--accent-dark)}
.mobile-schedule-group.is-employee .mobile-group-summary,.mobile-schedule-group.is-client .mobile-group-summary{color:var(--muted)}
.quota-progress,.quota-progress::-webkit-progress-bar{background:#e8e8ef}
.dialog{border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 22px 54px rgba(0,58,142,.22)}
.dialog::backdrop{background:rgba(31,30,45,.48)}
.dialog-surface{max-height:inherit;overflow-y:auto;overscroll-behavior:contain;background:#fff;-webkit-overflow-scrolling:touch}
.dialog-head{border-bottom-color:var(--line)}
.weekly-print-options{display:grid;gap:8px;margin:0;padding:0;border:0}.weekly-print-options legend{margin-bottom:8px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.weekly-print-options label{display:flex;align-items:flex-start;gap:12px;padding:15px 16px;border:1px solid var(--line);border-radius:9px;background:var(--surface);cursor:pointer;transition:border-color .16s ease,background .16s ease}.weekly-print-options label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.weekly-print-options input{flex:0 0 auto;width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent)}.weekly-print-options span{display:grid;gap:3px}.weekly-print-options strong{font-size:14px}.weekly-print-options small{color:var(--muted);font-size:12px;line-height:1.4}.weekly-print-client[hidden],.weekly-print-employee[hidden]{display:none}
.dialog:has(#centralPrintForm){width:min(920px,calc(100% - 30px))}.dialog-surface:has(#centralPrintForm){padding:23px 26px}.dialog-surface:has(#centralPrintForm) .dialog-head{margin-bottom:18px;padding-bottom:15px}.dialog-surface:has(#centralPrintForm) .dialog-head h2{font-size:22px}.central-print-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.88fr);gap:24px;align-items:start}.central-print-primary,.central-print-secondary{display:grid;min-width:0;gap:15px}.central-print-secondary{padding-left:24px;border-left:1px solid var(--line)}.central-print-form>.dialog-actions{margin-top:1px}.central-print-primary>.field,.central-print-secondary>.field{gap:5px}.central-print-primary .field input,.central-print-primary .field select,.central-print-secondary .field select{min-height:44px;padding:9px 11px;font-size:14px}.print-custom-range{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.print-person-picker{display:grid;gap:9px;padding-top:13px;border-top:1px solid var(--line)}.print-picker-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:14px}.print-picker-head strong{padding-bottom:10px;color:var(--accent-dark);font-size:12px}.print-person-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:150px;overflow:auto;padding:2px}.print-person-choices label{display:flex;align-items:center;gap:8px;min-height:34px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font-size:12px;font-weight:650}.print-person-choices input{accent-color:var(--accent)}.print-content-options{padding-top:14px;border-top:1px solid var(--line)}.print-content-options summary{cursor:pointer;color:var(--accent-dark);font-size:13px;font-weight:700}.print-option-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;padding:13px 1px 2px}.print-option-list .checkbox-row{font-size:12px}.print-option-list .checkbox-row input{width:16px;height:16px}.print-live-summary{display:grid;gap:4px;padding:13px 0 0;border-top:1px solid var(--line);background:transparent}.print-live-summary strong{font-size:13px}.print-live-summary small{color:var(--muted);font-size:11px;line-height:1.45}
.mobile-nav{border-top-color:var(--line);background:rgba(255,255,255,.98);box-shadow:0 -4px 16px rgba(0,70,173,.08)}
.mobile-nav .nav-button{color:#656572}
.mobile-nav .nav-button.is-active{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}
@media (max-width:767px){
  .auth-card{border-radius:16px}
  .view-root{background:#fff}
  .home-intro h2{font-size:30px}
  .week-strip{gap:3px;padding:3px}
  .day-chip{min-height:61px}
  .mobile-shift{padding:14px 10px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:9px;background:#fff}
  .mobile-shift+.mobile-shift{margin-top:8px}
  .central-print-layout{grid-template-columns:1fr;gap:18px}.central-print-secondary{padding-top:18px;padding-left:0;border-top:1px solid var(--line);border-left:0}.print-person-choices{grid-template-columns:1fr;max-height:132px}.print-option-list{grid-template-columns:1fr}.print-custom-range{grid-template-columns:1fr}
}

/* Finago-inspired type hierarchy: calm body text, restrained emphasis. */
html,body{font-weight:400;line-height:1.45}
h1,h2,h3,h4,.home-intro h2,.page-lead h2,.dialog-head h2{font-weight:600;letter-spacing:-.015em}
strong{font-weight:600}
.ipecom-wordmark{font-weight:700}
.eyebrow,
.button,
.text-action,
.back-link,
.field,
.password-field button,
.powered-by,
.nav-button,
.app-header h1,
.status-pill,
.issue-type,
.section-action,
.list-action,
.section-heading button,
.segmented button,
.calendar-today,
.day-chip span,
.shift-bar time,
.mobile-group-head .mobile-group-kind,
.mobile-shift time,
.mobile-shift-main .mobile-row-kind,
.client-instructions small,
.report-period small,
.report-period input,
.report-metrics small,
.report-section-head>span,
.report-employee-head,
.report-dialog-summary small,
.employee-shift-row time,
.detail-time,
.pwa-share-icon,
.detail-line small,
.detail-stat small,
.manager-note>small,
.employee-back,
.client-back{font-weight:600}
.profile-trigger-copy small,
.day-chip small,
.employee-contact-list dd{font-weight:500}
.avatar,
.employee-profile-avatar,
.client-profile-avatar{font-weight:600}
.attention-total,
.next-shift .time-range{font-weight:700}

/* Focused sign-in screen inspired by the supplied mobile reference. */
.auth-page{min-height:100dvh;background:var(--reference-sidebar);color:#fff}
.auth-layout{display:grid;place-items:start center;min-height:100dvh;padding:clamp(54px,11vh,104px) 20px calc(38px + env(safe-area-inset-bottom))}
.auth-shell{display:grid;justify-items:center;gap:0;width:min(100%,380px)}
.auth-logo{display:block;width:min(176px,52vw);color:#fff;text-decoration:none}
.auth-logo img{display:block;width:100%;height:auto}
.auth-footer-logo{display:block;width:min(112px,34vw);margin-top:24px;opacity:.94}.auth-footer-logo img{display:block;width:100%;height:auto}
.auth-card{width:100%;padding:clamp(69px,12vh,126px) 0 0;border:0;border-radius:0;background:transparent;box-shadow:none}
.auth-heading{display:grid;justify-items:center;margin:0 0 30px;text-align:center}
.auth-heading-logo{width:min(176px,52vw)}
.auth-login-title{margin:9px 0 0;color:#fff;font-size:17px;font-weight:400;letter-spacing:-.01em;line-height:1.2}
.auth-form-wrap{width:100%}
.auth-page .form-stack{gap:16px}
.auth-page .field{gap:7px;color:#fff;font-weight:500}
.auth-page .field input{min-height:52px;border-color:rgba(255,255,255,.72);border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 1px 0 rgba(255,255,255,.18);font-weight:400}
.auth-page .field input:focus{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.2)}
.auth-page .password-field button{color:var(--reference-sidebar);font-weight:600}
.auth-page .auth-remember{color:#fff}
.auth-page .auth-remember input{accent-color:#fff}
.auth-page .auth-remember small{color:rgba(255,255,255,.72)}
.auth-page .button.primary{min-height:52px;border-color:#fff;border-radius:999px;background:#fff;color:var(--reference-sidebar);box-shadow:0 4px 12px rgba(0,58,142,.18)}
.auth-page .button.primary:hover{border-color:#eff5fb;background:#eff5fb;color:var(--reference-sidebar)}
.auth-page .text-action,.auth-page .back-link{color:#fff}
.auth-page #mfaSendSms{color:#fff}
.auth-page .inline-message{border-color:rgba(255,255,255,.55);background:rgba(255,255,255,.1);color:#fff}
.auth-page .inline-message.error{border-color:#ffc9d0;background:rgba(80,17,30,.25);color:#fff}
.auth-step-copy{display:grid;gap:6px;color:#fff;text-align:center}.auth-step-copy strong{font-size:20px}.auth-step-copy span{color:rgba(255,255,255,.78);font-size:13px;line-height:1.45}.auth-page select{min-height:52px;border:1px solid rgba(255,255,255,.72);border-radius:12px;background:#fff;color:var(--ink)}
.mfa-step{display:flex;align-items:center;gap:12px}.mfa-step>b{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark)}.mfa-step>span{display:grid;gap:3px}.mfa-step small,.mfa-status-card small{color:var(--muted);line-height:1.45}.mfa-qr{display:grid;place-items:center}.mfa-qr img{max-width:min(240px,100%);height:auto;border:10px solid #fff}.mfa-secret,.mfa-status-card{display:grid;gap:6px;padding:14px;border:1px solid var(--line);background:var(--surface-soft)}.mfa-secret span{color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase}.mfa-secret code{overflow-wrap:anywhere;font-size:13px;letter-spacing:.05em;user-select:all}.mfa-status-card>strong{color:var(--success);font-size:18px}
.auth-page .auth-skeleton{width:100%;gap:16px}
.auth-page .auth-skeleton span{height:52px;border-radius:12px;background:linear-gradient(90deg,rgba(255,255,255,.72) 20%,#fff 45%,rgba(255,255,255,.72) 70%);background-size:220% 100%}
.auth-page .auth-skeleton span:last-child{border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.72) 20%,#fff 45%,rgba(255,255,255,.72) 70%);background-size:220% 100%}
.dialog:has(.pwa-install-dialog){width:min(420px,calc(100% - 28px));max-height:calc(100dvh - 28px);border-color:#003581;background:var(--reference-sidebar);box-shadow:0 24px 60px rgba(0,35,88,.34)}
.dialog-surface:has(.pwa-install-dialog){padding:42px 28px 28px;background:var(--reference-sidebar)}
@media (max-width:767px){
  .auth-layout{padding:calc(48px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom))}
  .auth-shell{gap:0;width:min(100%,350px)}
  .auth-card{padding:75px 0 0;border-radius:0}
  .auth-heading{margin-bottom:27px}
  .auth-footer-logo{width:min(104px,34vw);margin-top:22px}
  .dialog-surface:has(.pwa-install-dialog){padding:38px 24px 24px}
}

/* Controlled depth for the application frame. */
.app-header{box-shadow:0 4px 16px rgba(0,58,142,.2),0 1px 0 rgba(255,255,255,.06)}
.header-brand{box-shadow:1px 0 0 rgba(0,58,142,.16)}
.profile-trigger:hover,.profile-trigger[aria-expanded="true"],.header-logout:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
@media (min-width:768px){
  .sidebar{z-index:10;border-right-color:rgba(0,58,142,.68);box-shadow:8px 0 24px rgba(0,58,142,.2),inset -1px 0 rgba(255,255,255,.07)}
  .nav-button.is-active{box-shadow:0 5px 14px rgba(0,58,142,.18),inset 0 0 0 1px rgba(255,255,255,.28)}
}

/* Mobile calendar follows the desktop list language instead of stacked cards. */
@media (max-width:767px){
  .mobile-schedule-group{margin:0 -16px;border-bottom:0}
  .mobile-schedule-group:first-child{margin-top:0}
  .mobile-schedule-group.is-week .mobile-group-head,
  .mobile-schedule-group.is-employee .mobile-group-head,
  .mobile-schedule-group.is-client .mobile-group-head{margin:0;padding:15px 16px 14px;border-top:1px solid #003a8e;border-bottom:1px solid #003a8e;background:var(--reference-header);color:#fff}
  .mobile-schedule-group.is-week .mobile-group-head .avatar,
  .mobile-schedule-group.is-employee .mobile-group-head .avatar,
  .mobile-schedule-group.is-client .mobile-group-head .avatar{width:34px;height:34px;background:transparent;color:rgba(255,255,255,.78);font-size:10px}
  .mobile-schedule-group.is-week .mobile-group-kind,
  .mobile-schedule-group.is-employee .mobile-group-kind,
  .mobile-schedule-group.is-client .mobile-group-kind{color:rgba(255,255,255,.78)}
  .mobile-schedule-group.is-week .mobile-group-summary,
  .mobile-schedule-group.is-employee .mobile-group-summary,
  .mobile-schedule-group.is-client .mobile-group-summary{color:rgba(255,255,255,.74)}
  .mobile-schedule-group>div:last-child{padding:0 16px;background:#fff}
  .mobile-shift{grid-template-columns:58px minmax(0,1fr);gap:12px;margin:0;padding:15px 1px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none}
  .mobile-shift+.mobile-shift{margin-top:0}
  .mobile-shift:last-child{border-bottom:0}
  .mobile-shift:hover,.mobile-shift:active{background:#f7f7fa}
  .mobile-shift time{padding-top:1px;font-size:12px}
  .mobile-shift-main{gap:4px}
  .mobile-shift-main .mobile-row-kind{display:none}
  .mobile-shift-main strong{font-size:14px}
  .mobile-shift-main .mobile-shift-detail{margin:0;font-size:11px}
}

/* Keep the application chrome fixed while only the content viewport scrolls. */
.app-shell{
  position:fixed;
  inset:0;
  width:100%;
  height:100dvh;
  min-height:0;
  overflow:hidden;
  overscroll-behavior:none;
}
.app-header{
  position:relative;
  top:auto;
}
.sidebar{
  position:relative;
  top:auto;
  min-height:0;
  height:auto;
  overflow:hidden;
}
.main-shell{
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
}
@media (max-width:767px){
  .app-shell{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:var(--app-header) minmax(0,1fr);
    grid-template-areas:"header" "main";
  }
  .app-header{grid-area:header}
  .main-shell{grid-area:main;height:auto}
  .mobile-nav{overscroll-behavior:none}
}

/* Separate the selectable directory from the open management workspace. */
@media (min-width:901px){
  .admin-layout{
    grid-template-columns:minmax(290px,350px) minmax(0,1fr);
    align-items:start;
    gap:clamp(32px,3.25vw,48px);
  }
  .employee-directory,
  .client-directory{
    display:grid;
    grid-template-rows:auto minmax(0,1fr);
    min-height:360px;
    max-height:calc(100dvh - var(--app-header) - 190px);
    padding:12px 10px 10px;
    border:1px solid #dedef0;
    border-radius:10px;
    background:#fff;
    box-shadow:0 14px 34px rgba(0,70,173,.08);
    overflow:hidden;
  }
  .employee-directory .search-field,
  .client-directory .search-field{margin-bottom:10px}
  .employee-directory .search-field input,
  .client-directory .search-field input{background:#f7f7fa}
  .employee-directory .admin-list,
  .client-directory .admin-list{
    min-height:0;
    padding-right:2px;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
  }
  .employee-directory .admin-list-button,
  .client-directory .admin-list-button{
    padding-right:10px;
    padding-left:10px;
    transition:background .18s cubic-bezier(.16,1,.3,1),transform .18s cubic-bezier(.16,1,.3,1);
  }
  .employee-directory .admin-list-button.is-active,
  .client-directory .admin-list-button.is-active{
    background:#f1f7fb;
    color:var(--ink);
  }
  .employee-directory .admin-list-button.is-active .avatar,
  .client-directory .admin-list-button.is-active .avatar,
  .employee-directory .admin-list-button.is-active>svg,
  .client-directory .admin-list-button.is-active>svg{color:var(--accent-dark)}
  .employee-directory .admin-list-button:active,
  .client-directory .admin-list-button:active{transform:scale(.995)}
}

/* In open shift issues, emphasize the actual problem instead of repeating its category. */
.attention-row.is-shift-issue{grid-template-columns:minmax(0,1fr) auto}
.attention-meta{display:flex!important;flex-wrap:wrap;gap:0}
.attention-meta>span{display:inline!important}
.attention-meta>span+span::before{color:var(--muted);font-weight:400;content:" · "}
.attention-problem{color:var(--red)!important;font-weight:650}
.attention-warning{color:var(--muted)!important}

.mobile-refresh-button{display:none}
.mobile-refresh-button[hidden]{display:none!important}

/* A manager can also work normal shifts. Keep their next published visits visible without adding navigation. */
.manager-own-section{margin-top:34px}
.manager-own-section>.home-section-head{align-items:flex-end;margin-bottom:13px}
.manager-own-list{border-top:1px solid var(--ink)}
.manager-own-row{display:grid;grid-template-columns:150px minmax(0,1fr) auto;align-items:center;gap:15px;width:100%;padding:16px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .18s,transform .18s}
.manager-own-row:hover{background:#faf9f7}
.manager-own-row:active{transform:scale(.997)}
.manager-own-date{display:grid;gap:5px}
.manager-own-date strong{font-size:13px;text-transform:capitalize}
.manager-own-date time{color:var(--muted);font-size:12px;font-weight:750;font-variant-numeric:tabular-nums}

/* Keep compact mobile report metrics and remove the desktop brand divider. */
@media (max-width:767px){
  .header-brand{box-shadow:none}
  /* Touch browsers can keep :hover active after a tap. Keep the mobile
     profile trigger visually transparent in every pointer state; the avatar
     still carries the keyboard focus ring below. */
  .app-shell .profile-trigger:hover,
  .app-shell .profile-trigger:active,
  .app-shell .profile-trigger[aria-expanded="true"]{background:transparent;box-shadow:none}
  .profile-trigger:focus-visible{outline:0}
  .profile-trigger:focus-visible .header-avatar{box-shadow:0 0 0 3px rgba(255,255,255,.58)}
  .report-metrics>div{min-width:0;padding:14px 12px 14px 0}
  .report-metrics>div+div{padding-left:12px}
  .report-metrics small{font-size:9px;line-height:1.35;letter-spacing:.06em}
  .report-metrics strong{font-size:20px;line-height:1.2;letter-spacing:-.02em}
  .manager-own-section{margin-top:27px}
  .manager-own-row{grid-template-columns:105px minmax(0,1fr);gap:10px;padding:14px 1px}
  .mobile-refresh-button{position:fixed;right:16px;bottom:calc(var(--bottom-nav) + env(safe-area-inset-bottom) + 14px);z-index:24;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid rgba(0,70,173,.2);border-radius:50%;background:#fff;color:var(--reference-header);box-shadow:none;transition:opacity .18s,transform .18s,background .18s}
  .mobile-refresh-button:active{transform:scale(.97)}
  .mobile-refresh-button:disabled{opacity:.7}
  .mobile-refresh-button svg{width:17px;height:17px}
  .mobile-refresh-button[aria-busy="true"] svg{animation:mobile-refresh-spin .8s linear infinite}
  .client-worker-selector-head{display:grid;gap:7px}
  .client-worker-clear{justify-self:start;margin:0 0 0 -8px}
  .client-worker-options{grid-template-columns:1fr;max-height:252px;padding-right:3px;scrollbar-gutter:auto}
}

@keyframes mobile-refresh-spin{to{transform:rotate(360deg)}}

/* Actual-hours entry and manager audit log */
.reports-lead .report-section-tabs{flex:0 0 auto}.report-section-tabs button{white-space:nowrap}.report-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}
.payroll-period-copy{display:grid;width:260px;max-width:100%;min-width:0;text-align:center}.payroll-period-copy strong{font-size:clamp(14px,2.8vw,16px)}.payroll-period-copy span{margin-top:2px;color:var(--muted);font-size:11px}
.schedule-report-status,.payroll-status,.payroll-output{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-top:24px;padding:22px 2px;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.schedule-report-status>span,.payroll-status>div,.payroll-output>span{display:grid;gap:5px;min-width:0}.schedule-report-status small,.payroll-output small{color:var(--muted);font-size:12px;line-height:1.45}.schedule-report-status>span>small{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.schedule-report-status strong,.payroll-output strong{font-size:18px}.schedule-report-status p,.payroll-status p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.payroll-status h3{margin:0;font-size:29px;letter-spacing:-.04em}.payroll-progress{width:min(520px,100%);height:6px;margin-top:8px;overflow:hidden;border:0;border-radius:999px;background:var(--line-soft);appearance:none}.payroll-progress::-webkit-progress-bar{border-radius:999px;background:var(--line-soft)}.payroll-progress::-webkit-progress-value{border-radius:999px;background:var(--accent)}.payroll-progress::-moz-progress-bar{border-radius:999px;background:var(--accent)}.payroll-status.is-ready .payroll-progress::-webkit-progress-value{background:var(--green)}.payroll-status.is-ready .payroll-progress::-moz-progress-bar{background:var(--green)}.payroll-status>div>small{color:var(--muted);font-size:11px}.payroll-queue{margin-top:38px}.payroll-queue-head{align-items:flex-end}.payroll-queue-tabs button{white-space:nowrap}.payroll-employee-head,.payroll-employee-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(150px,.45fr) 130px;align-items:center;gap:18px}.payroll-employee-head{padding:0 2px 9px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.payroll-employee-list{border-top:1px solid var(--ink)}.payroll-employee-row{width:100%;padding:15px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.payroll-employee-row:hover{background:#f7f7fa}.payroll-employee-row>span{display:grid;gap:4px}.payroll-employee-row strong{font-size:13px}.payroll-employee-row small{color:var(--muted);font-size:11px}.payroll-row-action{display:flex!important;grid-auto-flow:column;align-items:center;justify-content:end;color:var(--accent-dark);font-size:12px;font-weight:800}.payroll-row-action svg{width:17px;height:17px}.payroll-employee-row.is-ready .payroll-row-action{color:var(--green)}.payroll-output{margin-top:34px}.payroll-output.is-ready{border-top-color:var(--green)}.actual-confirmed-shifts{border-top:1px solid var(--line)}.actual-confirmed-shifts summary{padding:14px 1px;color:var(--accent-dark);font-size:12px;font-weight:800;cursor:pointer}.actual-confirmed-shifts .actual-hours-list{border-top-color:var(--line)}
.schedule-report-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}
@media (max-width:900px){.schedule-report-actions{justify-content:flex-start}}
@media (max-width:767px){.schedule-report-actions,.schedule-report-actions>.button{width:100%}}
.schedule-employees{margin-top:38px}.schedule-employee-head,.schedule-employee-row{display:grid;grid-template-columns:minmax(220px,1fr) 130px;align-items:center;gap:18px}.schedule-employee-head{padding:0 2px 9px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.schedule-employee-list{border-top:1px solid var(--ink)}.schedule-employee-row{width:100%;padding:15px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.schedule-employee-row:hover:not(:disabled){background:#f7f7fa}.schedule-employee-row:disabled{cursor:not-allowed;opacity:.62}.schedule-employee-row>span{display:grid;gap:4px}.schedule-employee-row strong{font-size:13px}.schedule-employee-row small{color:var(--muted);font-size:11px}.schedule-row-action{display:flex!important;grid-auto-flow:column;align-items:center;justify-content:end;color:var(--accent-dark);font-size:12px;font-weight:800}.schedule-row-action svg{width:17px;height:17px}.schedule-employee-row.has-issues .schedule-row-action{color:var(--amber)}
.dialog:has(#actualHoursForm){width:min(980px,calc(100% - 30px))}.actual-add-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 15px;border:1px solid #d9d7f4;background:#f8f7ff}.actual-add-toolbar>span{display:grid;gap:3px}.actual-add-toolbar strong{font-size:13px}.actual-add-toolbar small{color:var(--muted);font-size:11px}.retroactive-actual-note{display:grid;gap:4px}.retroactive-time-section{gap:12px}.retroactive-time-row{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:12px}.retroactive-second-toggle{justify-self:start}.actual-hours-list{border-top:1px solid var(--ink)}.actual-hours-table-head,.actual-hours-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(135px,.72fr) minmax(215px,1fr) minmax(190px,.95fr);align-items:center;gap:14px}.actual-hours-table-head{padding:8px 5px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.actual-hours-row{min-height:62px;padding:9px 5px;border-top:1px solid var(--line)}.actual-hours-row:hover{background:#faf9f7}.actual-hours-row.requires-review{box-shadow:inset 3px 0 #b56b1d;background:#fffaf3}.actual-shift-cell,.actual-planned-cell,.actual-state-copy{display:grid;min-width:0;gap:3px}.actual-hours-row strong{font-size:12px}.actual-hours-row small{color:var(--muted);font-size:10px;line-height:1.35}.actual-approval-select{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--accent-dark);font-size:10px;font-weight:800;cursor:pointer}.actual-approval-select input,.actual-not-occurred input{width:16px;height:16px;accent-color:var(--accent)}.actual-row-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 10px}.actual-mode-state{color:var(--accent-dark);font-size:10px;font-weight:800}.actual-segment-list{display:grid;gap:5px}.actual-segment-row{display:flex;align-items:center;gap:5px}.actual-segment-row input[type="time"]{width:94px;min-height:34px;padding:5px 7px;font-size:12px;font-variant-numeric:tabular-nums}.actual-segment-row>span{color:var(--muted)}.actual-not-occurred{display:flex;align-items:center;flex:0 0 auto;gap:6px;font-size:10px;font-weight:750;cursor:pointer}.actual-reason-field{display:grid;flex:1 0 100%;gap:4px}.actual-reason-field>span{color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase}.actual-reason-field select{width:100%;min-height:34px;padding:5px 7px;font-size:11px}.report-dialog-summary{grid-template-columns:repeat(3,1fr)}
.actual-blocking-issues{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--line)}.actual-blocking-issues>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.actual-blocking-issues>div:first-child small{color:#8a4b12;font-size:9px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.actual-blocking-issues h3{margin:0;font-size:13px}.actual-blocking-issues .report-issue-row{min-height:48px}
.netvisor-branded-action{display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:44px;padding:0;border:0;border-radius:9px;background:transparent;cursor:pointer;transition:filter .16s ease,transform .16s ease}.netvisor-branded-action img{display:block;width:auto;height:44px}.netvisor-branded-action:not(:disabled):hover{filter:brightness(1.06)}.netvisor-branded-action:not(:disabled):active{transform:translateY(1px)}.netvisor-branded-action:focus-visible{outline:3px solid rgba(0,85,200,.28);outline-offset:2px}
.payroll-leave-days{border-top:1px solid var(--ink)}.payroll-leave-head{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:14px 2px 10px}.payroll-leave-head>span{display:grid;gap:4px}.payroll-leave-head small{color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.payroll-leave-head h3{margin:0;font-size:16px}.payroll-leave-head>strong{font-size:12px}.payroll-leave-list{border-top:1px solid var(--line)}.payroll-leave-row{display:grid;grid-template-columns:minmax(140px,.55fr) minmax(180px,1fr);align-items:center;gap:18px;padding:10px 2px;border-bottom:1px solid var(--line)}.payroll-leave-row time{font-size:12px;font-weight:600}.payroll-leave-row>span{display:grid;gap:2px}.payroll-leave-row strong{color:var(--accent-dark);font-size:11px}.payroll-leave-row small,.payroll-leave-days>p{color:var(--muted);font-size:10px}.payroll-leave-days>p{margin:10px 2px 0;line-height:1.45}
.actual-early-approvals{margin:16px 0;padding:16px;border:1px solid #d9d7f4;background:#f8f7ff}.actual-early-approvals>div:first-child small{color:var(--primary);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.actual-early-approvals h3{margin:4px 0 10px;font-size:16px}.actual-early-approvals>p{margin:10px 0 0;color:var(--muted);font-size:10px}.actual-early-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.actual-early-row>span{display:grid;gap:3px}.actual-early-row small{color:var(--muted);font-size:10px}.actual-early-row label{display:flex;align-items:center;gap:8px;max-width:270px;font-size:11px;font-weight:750;line-height:1.35}.actual-early-row input{width:18px;height:18px;flex:0 0 auto;accent-color:var(--primary)}
.audit-filters{display:grid;grid-template-columns:minmax(160px,1.25fr) minmax(180px,1.5fr) minmax(135px,.8fr) minmax(135px,.8fr);gap:12px;padding:17px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.audit-filter-actions{display:flex;flex-wrap:wrap;grid-column:1/-1;gap:8px}.audit-summary{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:20px 1px 10px}.audit-summary strong{font-size:14px}.audit-summary span{color:var(--muted);font-size:11px}.audit-list{border-top:1px solid var(--ink)}.audit-list-head,.audit-row{display:grid;grid-template-columns:125px minmax(220px,1fr) minmax(160px,.55fr);align-items:center;gap:18px}.audit-list-head{padding:9px 2px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.audit-row{padding:14px 2px;border-top:1px solid var(--line)}.audit-row>time,.audit-row>span{display:grid;min-width:0;gap:4px}.audit-row strong{overflow-wrap:anywhere;font-size:12px}.audit-row small{overflow-wrap:anywhere;color:var(--muted);font-size:11px;line-height:1.4}
.audit-more{display:flex;justify-content:center;padding:20px 0 28px}
@media (max-width:900px){.report-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.report-metrics>div:nth-child(2n){border-right:0}.report-metrics>div:nth-child(n+3){border-top:1px solid var(--line)}.report-metrics>div:last-child{grid-column:1/-1}.audit-filters{grid-template-columns:1fr 1fr}.audit-list-head,.audit-row{grid-template-columns:105px minmax(0,1fr)}.audit-list-head>span:last-child{display:none}.audit-row>span:last-child{grid-column:2}}
@media (max-width:767px){.reports-lead .report-section-tabs{width:100%}.report-section-tabs button{flex:1}.dialog:has(#actualHoursForm){width:100%}.actual-add-toolbar{align-items:stretch;flex-direction:column}.actual-add-toolbar .button{width:100%}.retroactive-time-row{grid-template-columns:1fr 1fr}.retroactive-time-row .icon-button{grid-column:2;justify-self:end}.actual-hours-table-head{display:none}.actual-hours-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;min-height:0;padding:12px 1px}.actual-planned-cell{text-align:right}.actual-segment-list{grid-column:1/-1}.actual-row-controls{grid-column:1/-1;justify-content:flex-start}.actual-state-copy{display:flex;align-items:center;gap:6px}.actual-not-occurred{margin-left:auto}.actual-segment-row input[type="time"]{flex:1;width:auto}.report-dialog-summary{grid-template-columns:1fr 1fr}.report-dialog-summary span:nth-child(3){grid-column:auto;border-top:1px solid var(--line);border-right:1px solid var(--line)}.report-dialog-summary span:nth-child(4){border-top:1px solid var(--line)}.payroll-leave-row{grid-template-columns:110px minmax(0,1fr);gap:12px}.audit-filters{grid-template-columns:1fr}.audit-filter-actions{display:grid;grid-template-columns:1fr 1fr}.audit-filter-actions .button:first-child{grid-column:1/-1}.audit-summary{align-items:flex-start;flex-direction:column;gap:4px}.audit-list-head{display:none}.audit-row{grid-template-columns:86px minmax(0,1fr);gap:12px}.audit-row>span:last-child{grid-column:2}}
@media (max-width:900px){.schedule-report-status,.payroll-status,.payroll-output{align-items:stretch;flex-direction:column;gap:17px}.schedule-report-status>.button,.payroll-status>.button,.payroll-output>.button{align-self:flex-start}.payroll-queue-head{align-items:stretch;flex-direction:column}.payroll-queue-tabs{align-self:flex-start}.payroll-employee-head,.payroll-employee-row{grid-template-columns:minmax(180px,1fr) minmax(130px,.55fr) 105px}.schedule-employee-head,.schedule-employee-row{grid-template-columns:minmax(180px,1fr) 105px}}
@media (max-width:767px){.report-section-tabs button{padding:0 8px;font-size:11px}.payroll-status h3{font-size:24px}.schedule-report-status>.button,.payroll-status>.button,.payroll-output>.button{width:100%}.payroll-queue-tabs{width:100%}.payroll-queue-tabs button{flex:1;min-width:0;padding:0 5px;font-size:10px}.payroll-employee-head,.schedule-employee-head{display:none}.payroll-employee-row,.schedule-employee-row{grid-template-columns:minmax(0,1fr) auto;gap:9px 14px}.payroll-employee-row>span:nth-child(2){grid-column:1}.payroll-row-action{grid-column:2;grid-row:1/3;align-self:center}.schedule-row-action{grid-column:2;grid-row:1;align-self:center}.report-dialog-summary{grid-template-columns:repeat(3,1fr)}.report-dialog-summary span:nth-child(3){border-top:0;border-right:0}.report-dialog-summary span:nth-child(4){border-top:0}.report-dialog-summary small{font-size:8px}.report-dialog-summary strong{font-size:14px}}

.payroll-output-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}
@media(max-width:767px){.payroll-output-actions{display:grid;width:100%}.payroll-output-actions>.button{width:100%}}

.payroll-mapping-list{display:grid;gap:9px;max-height:min(58vh,620px);overflow:auto;padding-right:4px}
.payroll-mapping-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(190px,.72fr) minmax(180px,.65fr);align-items:start;gap:14px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--surface,#fff)}
.payroll-mapping-row>span{display:grid;gap:4px;padding-top:9px}.payroll-mapping-row>span small{color:var(--muted);font-size:11px}.payroll-mapping-row .field{margin:0}
@media(max-width:767px){.payroll-mapping-list{max-height:none;overflow:visible;padding-right:0}.payroll-mapping-row{grid-template-columns:1fr;gap:10px;padding:13px}.payroll-mapping-row>span{padding-top:0}}

.payroll-onboarding-card{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 22px;border:1px solid #cfe0f4;border-radius:14px;background:#f1f6fc}.payroll-onboarding-card>span{display:grid;gap:4px}.payroll-onboarding-card small{color:var(--accent-dark);font-size:10px;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.payroll-onboarding-card strong{font-size:16px}.payroll-onboarding-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.payroll-onboarding-card.is-complete{border-color:#cfe5d8;background:#f3faf6}.payroll-onboarding-card .button{flex:0 0 auto}
.dialog:has(#payrollMappingForm){width:min(900px,calc(100% - 30px))}.payroll-onboarding{min-width:0}.payroll-onboarding-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0;padding:0;list-style:none}.payroll-onboarding-steps li{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:9px;background:#f4f6f8;color:var(--muted);font-size:12px;font-weight:700}.payroll-onboarding-steps li.is-active{background:var(--accent-soft);color:var(--accent-dark)}.payroll-source-list,.payroll-number-list{display:grid;max-height:min(44vh,480px);overflow:auto;border-top:1px solid var(--line)}.payroll-source-row,.payroll-number-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,.8fr);align-items:center;gap:18px;padding:12px 2px;border-bottom:1px solid var(--line);cursor:default}.payroll-source-row>span,.payroll-number-row>span:first-child,.payroll-number-field{display:grid;gap:3px}.payroll-source-row small,.payroll-number-row small,.payroll-number-toolbar small,.payroll-source-toolbar small{color:var(--muted);font-size:11px;line-height:1.4}.payroll-source-row select,.payroll-number-row input{min-height:42px}.payroll-number-row input[readonly]{background:#f4f6f8;color:var(--muted)}.payroll-number-toolbar,.payroll-source-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 14px;border-radius:10px;background:#f5f8fc}.payroll-number-toolbar>span,.payroll-source-toolbar>span{display:grid;gap:4px}.payroll-onboarding-review{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.payroll-onboarding-review>div{display:grid;align-content:start;gap:5px;padding:14px}.payroll-onboarding-review>div+div{border-left:1px solid var(--line)}.payroll-onboarding-review small{color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.payroll-onboarding-review strong{font-size:24px}.payroll-onboarding-review p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.payroll-record-types-step{display:grid;gap:12px}.payroll-record-types-intro{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(0,1.5fr);align-items:baseline;gap:20px;padding:11px 12px;border-left:3px solid var(--green);background:#f5faf7}.payroll-record-types-intro strong{font-size:12px}.payroll-record-types-intro span{color:var(--muted);font-size:11px;line-height:1.45}.payroll-record-types{border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.payroll-record-types-head,.payroll-record-type-row{display:grid;grid-template-columns:minmax(260px,1fr) 170px 130px;align-items:center;gap:18px}.payroll-record-types-head{padding:7px 8px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.payroll-record-type-row{min-height:53px;padding:7px 8px;border-top:1px solid var(--line);cursor:default}.payroll-record-type-row:hover{background:#fafbfd}.payroll-record-type-name{display:grid;min-width:0;gap:2px}.payroll-record-type-name strong{font-size:12px}.payroll-record-type-name small{color:var(--muted);font-size:10px}.payroll-record-type-number input{width:100%;min-height:34px;padding:6px 9px;border-radius:4px;font-variant-numeric:tabular-nums}.payroll-record-type-status{justify-self:start;padding:4px 7px;border:1px solid var(--line);border-radius:999px;background:#f7f8fa;color:var(--muted);font-size:9px;font-weight:750}.payroll-record-type-status.is-active{border-color:#a9c7e6;background:#eef5fc;color:var(--accent-dark)}.payroll-record-type-confirm{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid #bfd2e7;border-radius:4px;background:#f7faff;cursor:pointer}.payroll-record-type-confirm input{width:18px;height:18px;flex:0 0 auto;margin:1px 0;accent-color:var(--accent)}.payroll-record-type-confirm span{display:grid;gap:2px}.payroll-record-type-confirm strong{font-size:12px}.payroll-record-type-confirm small{color:var(--muted);font-size:10px;line-height:1.4}
.dialog:has(#netvisorExcelForm){width:min(760px,calc(100% - 30px))}.netvisor-excel-form{gap:15px}.netvisor-export-scope{margin:-3px 0 0;padding-bottom:11px;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px}.netvisor-export-scope strong{color:var(--ink)}.netvisor-export-primary{display:grid;gap:9px}.netvisor-template-field{gap:7px}.netvisor-template-field input[type=file]{padding:9px;border-radius:4px;background:#fff}.netvisor-template-help{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.netvisor-template-field small{font-size:10px;line-height:1.45}.netvisor-template-help a{flex:0 0 auto;color:var(--accent-dark);font-size:10px;font-weight:750}.netvisor-export-primary>p,.netvisor-login-note{margin:0;color:var(--muted);font-size:10px;line-height:1.45}.netvisor-login-note{margin-top:-8px}.netvisor-export-send{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:13px 14px;border:1px solid #bfd2e7;border-radius:4px;background:#f7faff}.netvisor-export-send>span{display:grid;gap:3px}.netvisor-export-send strong{font-size:12px}.netvisor-export-send small{max-width:470px;color:var(--muted);font-size:10px;line-height:1.45}.netvisor-export-send .button{min-height:34px;border-radius:4px;white-space:nowrap}.netvisor-export-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.netvisor-export-details summary{padding:11px 2px;color:var(--accent-dark);font-size:11px;font-weight:750;cursor:pointer}.netvisor-export-details ul{display:grid;gap:7px;margin:0;padding:0 12px 13px 21px;color:var(--muted);font-size:10px;line-height:1.5}.netvisor-excel-checklist{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.netvisor-excel-checklist span{display:grid;align-content:start;gap:3px;padding:10px 12px}.netvisor-excel-checklist span+span{border-left:1px solid var(--line)}.netvisor-excel-checklist strong{font-size:18px}.netvisor-excel-checklist small{color:var(--muted);font-size:10px;line-height:1.4}.inline-message.warning{background:var(--amber-soft);color:var(--amber)}
.netvisor-template-saved{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.netvisor-template-saved>span{display:grid;gap:3px}.netvisor-template-saved strong{font-size:12px}.netvisor-template-saved small{color:var(--muted);font-size:10px}.netvisor-preflight{margin:0;padding:12px 14px;border-radius:4px}.netvisor-preflight ul{margin:7px 0 10px;padding-left:18px;font-size:11px;line-height:1.45}.netvisor-preflight .checkbox-row{align-items:center;font-size:11px}.netvisor-preflight-ok{margin:0;padding:10px 0;border-top:1px solid #a9d2bc;border-bottom:1px solid var(--line);color:#276746;font-size:11px;font-weight:700}.netvisor-export-history{display:grid;border-top:1px solid var(--ink)}.netvisor-export-history h3{margin:0;padding:10px 0 7px;font-size:12px}.netvisor-export-history>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--line)}.netvisor-export-history>div>span:first-child{display:grid;gap:2px;min-width:0}.netvisor-export-history strong{font-size:11px}.netvisor-export-history small{overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.netvisor-export-complete{display:grid;gap:10px}.netvisor-export-complete h3{margin:0;font-size:20px}.netvisor-export-complete ol{display:grid;gap:8px;margin:2px 0;padding-left:22px;font-size:12px;line-height:1.45}.netvisor-export-complete>p:last-child{margin:0;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.netvisor-person-picker{display:grid;border-top:1px solid var(--ink)}.netvisor-picker-actions{display:flex;justify-content:flex-end;gap:7px;padding:8px 0;border-bottom:1px solid var(--line)}.netvisor-person-picker>label{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--line);cursor:pointer}.netvisor-person-picker>label>span{display:grid;gap:2px}.netvisor-person-picker>label strong{font-size:12px}.netvisor-person-picker>label small{color:var(--muted);font-size:10px}
@media(max-width:767px){.payroll-onboarding-card{align-items:stretch;flex-direction:column;gap:14px;padding:16px}.payroll-onboarding-card .button{width:100%}.dialog:has(#payrollMappingForm){width:100%}.payroll-onboarding-steps li{justify-content:center}.payroll-onboarding-steps li span{display:none}.payroll-source-list,.payroll-number-list{max-height:none;overflow:visible}.payroll-source-row,.payroll-number-row{grid-template-columns:1fr;gap:8px}.payroll-number-toolbar,.payroll-source-toolbar{align-items:stretch;flex-direction:column}.payroll-onboarding-review{grid-template-columns:repeat(2,minmax(0,1fr))}.payroll-onboarding-review>div+div{border-top:1px solid var(--line);border-left:0}.payroll-onboarding-review>div:nth-child(even){border-left:1px solid var(--line)}.payroll-onboarding-review>div:nth-child(-n+2){border-top:0}.payroll-record-types-intro{grid-template-columns:1fr;gap:4px}.payroll-record-types-head{display:none}.payroll-record-type-row{grid-template-columns:minmax(0,1fr) 94px;gap:8px 12px;padding:10px 2px}.payroll-record-type-status{grid-column:1;grid-row:2}.payroll-record-type-number{grid-column:2;grid-row:1/3}.payroll-record-type-number input{min-height:40px}.payroll-record-type-name small{font-size:9px}}
@media(min-width:768px){
  .dialog:has(#payrollMappingForm){border-radius:6px}
  .dialog-surface:has(#payrollMappingForm){padding:18px 20px 16px}
  .payroll-onboarding{gap:13px}
  .payroll-onboarding-steps{grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:4px;overflow:hidden}
  .payroll-onboarding-steps li{min-height:34px;padding:7px 10px;border-radius:0;background:#f7f8fa;font-size:11px}
  .payroll-onboarding-steps li+li{border-left:1px solid var(--line)}
  .payroll-onboarding-steps li.is-active{background:#eaf2fc;color:var(--accent-dark)}
  .payroll-source-toolbar,.payroll-number-toolbar{padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:#f7f9fb}
  .payroll-source-row,.payroll-number-row{padding:8px 4px}
  .payroll-source-row select,.payroll-number-row input{min-height:34px;border-radius:4px}
  .payroll-onboarding-review>div{padding:10px 12px}.payroll-onboarding-review strong{font-size:19px}
  #payrollMappingForm>.dialog-actions{padding-top:10px;border-top:1px solid var(--line)}
  #payrollMappingForm>.dialog-actions .button{min-height:34px;border-radius:4px}
}
@media(max-width:767px){.dialog:has(#netvisorExcelForm){width:100%}.netvisor-template-help{align-items:flex-start;flex-direction:column;gap:5px}.netvisor-export-send{grid-template-columns:1fr;gap:11px}.netvisor-export-send .button{width:100%}.netvisor-excel-checklist{grid-template-columns:1fr}.netvisor-excel-checklist span+span{border-top:1px solid var(--line);border-left:0}}

/* Employee availability collection and absence flow */
.attention-accordion{border-bottom:1px solid var(--line)}.attention-accordion .attention-row{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:start;gap:4px 10px;border-bottom:0}.attention-accordion .issue-type{grid-column:1;grid-row:1}.attention-accordion .row-main{grid-column:1;grid-row:2}.attention-accordion .attention-disclosure{grid-column:2;grid-row:1/3;align-self:center}.attention-disclosure{display:grid;place-items:center;color:var(--faint);transition:transform .18s}.attention-disclosure svg{width:18px;height:18px}.attention-accordion.is-open .attention-disclosure{transform:rotate(90deg)}.attention-accordion-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:2px 2px 15px}.attention-accordion-panel p{max-width:620px;margin:0;color:var(--muted);font-size:12px;line-height:1.45}.attention-accordion-panel>div{display:flex;flex:0 0 auto;gap:7px}.worker-task-card{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0 0 18px;padding:16px 18px;border:1px solid #a9c7e6;border-radius:10px;background:#f6f9fc;color:var(--ink);text-align:left}.worker-task-card>span{display:grid;gap:4px}.worker-task-card small{color:var(--accent-dark);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.worker-task-card strong{font-size:16px}.worker-task-card span span{color:var(--muted);font-size:11px}.worker-task-card svg{width:18px;height:18px;color:var(--accent-dark)}.worker-primary-actions{display:flex;justify-content:flex-end;margin:-2px 0 20px}.worker-obstacle-action{min-height:40px;padding:0 2px;border:0;background:transparent;color:var(--accent-dark);font-size:12px;font-weight:800}.worker-obstacle-action svg{width:16px;height:16px;margin-right:6px;vertical-align:-3px}.availability-lead{align-items:flex-start}.availability-workspace{max-width:720px;margin:0 auto}.availability-deadline{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;padding:13px 15px;border:1px solid var(--line);border-radius:8px;background:#fafafa}.availability-deadline span{color:var(--muted);font-size:11px}.availability-deadline strong{font-size:12px;text-transform:capitalize}.availability-weekdays,.availability-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.availability-weekdays{margin-bottom:6px}.availability-weekdays span{text-align:center;color:var(--muted);font-size:9px;font-weight:800}.availability-day{display:grid;place-items:center;align-content:center;gap:4px;min-height:68px;padding:5px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.availability-day.is-empty{border-color:transparent;background:transparent}.availability-day.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.availability-day.has-value:not(.is-selected){border-color:#a9c7e6;background:#f6f9fc}.availability-day.is-locked{cursor:default}.availability-day.has-shift{border-color:#c9ced8;background:#e9ebef;color:#5f6570;opacity:1}.availability-day.has-shift strong{color:#555c68}.availability-day>span{font-size:11px}.availability-day strong{color:var(--accent-dark);font-size:9px}.availability-day small{color:var(--faint)}.availability-values{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:17px 0 16px}.availability-values button{min-height:43px;padding:7px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font-size:11px;font-weight:800}.availability-values button:hover{border-color:var(--accent);color:var(--accent-dark)}.worker-availability-values{grid-template-columns:repeat(2,1fr)}.worker-availability-values button:nth-child(n+3){grid-column:1/-1}.availability-help{margin:10px 0 0;color:var(--muted);font-size:10px;text-align:center}.availability-response-list{border-top:1px solid var(--ink)}.availability-response-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 2px;border-bottom:1px solid var(--line)}.availability-response-row>span:first-child{display:grid;gap:3px}.availability-response-row strong{font-size:12px}.availability-response-row small{color:var(--muted);font-size:10px}
@media(max-width:767px){.attention-accordion-panel{align-items:stretch;flex-direction:column;padding:0 1px 14px}.attention-accordion-panel>div{display:grid;grid-template-columns:1fr}.attention-accordion-panel .button{width:100%}.worker-primary-actions{justify-content:flex-start}.availability-workspace{max-width:none}.availability-day{min-height:54px;border-radius:7px}.availability-day>span{font-size:10px}.availability-day strong{font-size:8px}.availability-values{grid-template-columns:repeat(2,1fr)}.worker-availability-values button:nth-child(n+3){grid-column:1/-1}.mobile-nav .nav-button{font-size:8px}.mobile-nav .nav-button svg{width:18px;height:18px}}

/* Weekly planning flow */
.calendar-lead .button.has-attention{border-color:#d9a2a8;color:var(--red)}
@media(max-width:767px){.calendar-lead .lead-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-self:stretch}.calendar-lead .lead-actions [data-calendar-stage="review"],.calendar-lead .lead-actions [data-publish-week]{grid-column:1/-1}.calendar-lead .lead-actions .button{width:100%}}
.calendar-workflow{margin-bottom:16px;border:1px solid var(--line);border-radius:10px;background:#fff}.calendar-toolbar.is-week{margin-bottom:0;padding:8px 10px;border:1px solid var(--line);border-bottom-color:var(--line-soft);border-radius:10px 10px 0 0;background:#fff}.calendar-toolbar.is-week+.calendar-workflow{border-top:0;border-radius:0 0 10px 10px}.period-label{display:grid;min-width:170px;justify-items:center;gap:2px;text-align:center}.period-label strong{font-size:14px;line-height:1.2}.period-label small{color:var(--muted);font-size:10px;font-weight:650}.planning-steps{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}.planning-steps>button{display:flex;align-items:center;gap:10px;min-height:64px;padding:10px 16px;border:0;border-right:1px solid var(--line);background:transparent;text-align:left}.planning-steps>button:last-child{border-right:0}.planning-steps>button:hover:not(:disabled){background:#f8f8fb}.planning-steps>button.is-active{box-shadow:inset 0 -3px 0 var(--accent)}.planning-steps>button.is-disabled{color:var(--muted)}.planning-steps>button.is-ready{background:var(--green);color:#fff}.planning-steps>button.is-ready:hover{background:#266739}.planning-steps>button>b{display:grid;place-items:center;flex:0 0 auto;width:27px;height:27px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);font-size:11px}.planning-steps>button.is-active>b{border-color:var(--accent);background:var(--accent);color:#fff}.planning-steps>button.has-warning>b{border-color:#d9a2a8;background:var(--red-soft);color:var(--red)}.planning-steps>button.is-ready>b{border-color:#fff;background:#fff;color:var(--green)}.planning-steps>button>span{display:grid;gap:3px}.planning-steps strong{font-size:12px}.planning-steps small{color:var(--muted);font-size:10px}.planning-steps>button.is-ready small{color:rgba(255,255,255,.82)}.calendar-draft-note{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-soft);background:#fafafd}.calendar-draft-note>span{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:var(--accent-soft);color:var(--accent-dark)}.calendar-draft-note svg{width:16px;height:16px}.calendar-draft-note p{display:grid;gap:2px;margin:0}.calendar-draft-note strong{font-size:11px}.calendar-draft-note small{color:var(--muted);font-size:10px}.calendar-week-metrics{display:grid;grid-template-columns:repeat(4,1fr);margin:0}.calendar-week-metrics>div{display:grid;gap:3px;padding:11px 16px;border-right:1px solid var(--line-soft)}.calendar-week-metrics>div:last-child{border-right:0}.calendar-week-metrics dt{color:var(--muted);font-size:9px}.calendar-week-metrics dd{margin:0;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.calendar-week-metrics .has-warning dd{color:var(--red)}
.calendar-review-panel{margin:0 0 16px;padding:18px 20px;border:1px solid #e3b7ba;border-radius:10px;background:#fffafa;scroll-margin-top:90px}.calendar-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:14px}.calendar-review-head h3{margin:8px 0 4px;font-size:19px}.calendar-review-head p{margin:0;color:var(--muted);font-size:12px}.calendar-review-list{border-top:1px solid var(--ink)}.calendar-review-advisory{margin-top:16px}.calendar-review-advisory h4{margin:0 0 8px;color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.calendar-review-advisory .review-row-icon{background:var(--accent-soft);color:var(--accent)}.calendar-review-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 18px;align-items:center;gap:12px;width:100%;min-height:66px;padding:10px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.calendar-review-row:hover{background:#fff}.calendar-review-row>span:nth-child(2){display:grid;gap:4px}.calendar-review-row strong{font-size:12px}.calendar-review-row small{color:var(--muted);font-size:10px;line-height:1.35}.calendar-review-row>svg{width:16px;height:16px;color:var(--faint)}.review-row-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--red-soft);color:var(--red);font-size:11px;font-weight:850}.review-row-count{color:var(--muted);font-size:10px;font-weight:750}.calendar-review-panel.is-clear{position:relative;display:flex;align-items:center;justify-content:space-between;gap:20px;padding-right:62px;border-color:#abd8c4;background:#f8fcfa}.calendar-review-panel.is-clear>div{display:flex;align-items:center;gap:12px}.calendar-review-panel.is-clear span:last-child{display:grid;gap:3px}.calendar-review-panel.is-clear h3,.calendar-review-panel.is-clear p{margin:0}.calendar-review-panel.is-clear h3{font-size:16px}.calendar-review-panel.is-clear p{color:var(--muted);font-size:11px}.calendar-review-close{position:absolute;top:10px;right:10px;width:34px;height:34px}.calendar-review-close svg{width:16px;height:16px}.review-clear-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--green);color:#fff;font-weight:850}
.week-planning-switch{display:grid;grid-template-columns:1fr 1fr;margin:0 0 14px;border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px;background:#fff;overflow:hidden}.calendar-workflow:has(+.week-planning-switch){margin-bottom:0;border-radius:0}.week-planning-switch>button{display:flex;align-items:center;gap:11px;min-height:64px;padding:10px 18px;border:0;border-right:1px solid var(--line);background:#fafafd;text-align:left}.week-planning-switch>button:last-child{border-right:0}.week-planning-switch>button:hover{background:#f5f7fb}.week-planning-switch>button.is-active{background:#fff;box-shadow:inset 0 -3px 0 var(--accent)}.week-planning-switch b{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);font-size:11px}.week-planning-switch .is-active b{border-color:var(--accent);background:var(--accent);color:#fff}.week-planning-switch .has-work:not(.is-active) b{border-color:#d8a1a8;background:var(--red-soft);color:var(--red)}.week-planning-switch span{display:grid;gap:3px}.week-planning-switch strong{font-size:12px}.week-planning-switch small{color:var(--muted);font-size:10px}.client-week-planner-desktop{max-height:calc(100dvh - 314px);overflow:auto;border:1px solid var(--line);background:#fff;overscroll-behavior:contain}.client-week-grid{display:grid;grid-template-columns:220px repeat(7,minmax(154px,1fr));min-width:1298px}.client-week-head{position:sticky;top:0;z-index:30;display:grid;align-content:center;min-height:46px;padding:7px 10px;border-right:1px solid #d8dee8;border-bottom:2px solid #8895a8;background:#eef2f7}.client-week-corner{left:0;z-index:32;gap:2px;padding:7px 13px}.client-week-head>strong{font-size:12px;text-transform:capitalize}.client-week-head>small{color:var(--muted);font-size:10px;line-height:1.2}.client-week-day.is-today{background:#d9e9ff;color:#0049ad;box-shadow:inset 0 3px 0 #0055c8}.client-week-person{position:sticky;left:0;z-index:25;min-height:104px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.client-week-person>button{display:grid;grid-template-columns:34px minmax(0,1fr) 15px;align-items:center;gap:9px;width:100%;min-height:104px;padding:11px 12px;border:0;background:transparent;text-align:left}.client-week-person>button:hover{background:#f8f9fc}.client-week-person .avatar{width:34px;height:34px}.client-week-person>button>span:nth-child(2){display:grid;min-width:0;gap:4px}.client-week-person strong{overflow:hidden;text-overflow:ellipsis;font-size:12px;white-space:nowrap}.client-week-person small{color:var(--muted);font-size:9px;line-height:1.35}.client-week-person svg{width:14px;height:14px;color:var(--faint)}.client-week-cell{position:relative;display:grid;align-content:start;gap:5px;min-height:104px;padding:7px 7px 29px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line);background:#fff}.client-week-cell.is-today{background:#f3f8ff}.client-week-cell:nth-child(8n){border-right:0}.client-week-shift{position:relative;z-index:1;display:grid;gap:4px;width:100%;min-width:0;padding:7px;border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:5px;background:#fff;text-align:left}.client-week-shift:hover{background:#f7f7fa}.client-week-shift.is-unassigned{border-left-color:var(--red);background:#fff9f8}.client-week-shift.is-published{border-left-color:var(--green)}.client-week-shift>span{display:flex;align-items:center;justify-content:space-between;gap:6px}.client-week-shift time,.client-week-shift strong{font-size:10px;font-weight:850}.client-week-shift small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.client-week-shift.is-unassigned small{color:var(--red)}.client-week-add{position:absolute;z-index:0;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;color:var(--faint)}.client-week-add:hover{background:#fafafd}.client-week-add:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.client-week-add svg{position:absolute;right:7px;bottom:5px;width:14px;height:14px;padding:4px;border-radius:4px;box-sizing:content-box;opacity:.3}.client-week-cell:hover .client-week-add svg,.client-week-add:focus-visible svg{background:var(--accent-soft);color:var(--accent-dark);opacity:1}.client-week-planner-mobile{display:none}.client-week-mobile-row{border-bottom:1px solid var(--line)}.client-week-mobile-row>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 1px}.client-week-mobile-row>header>button:first-child{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;min-width:0;padding:0;border:0;background:transparent;text-align:left}.client-week-mobile-row>header>button:first-child>span:last-child{display:grid;gap:3px}.client-week-mobile-row strong{font-size:13px}.client-week-mobile-row small{color:var(--muted);font-size:10px}.client-week-mobile-row>div{display:grid;gap:6px;padding:0 0 12px 43px}
.client-week-add{cursor:pointer}
.empty-week-start{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 14px;padding:16px 18px;border:1px solid var(--accent-soft);border-radius:9px;background:#fafaff}.empty-week-start>div:first-child{display:grid;gap:5px;max-width:720px}.empty-week-start .status-pill{justify-self:start}.empty-week-start h3,.empty-week-start p{margin:0}.empty-week-start h3{font-size:16px}.empty-week-start p{color:var(--muted);font-size:11px;line-height:1.5}.empty-week-start>div:last-child{display:flex;flex:0 0 auto;gap:8px}.planner-filterbar{display:flex;align-items:center;gap:9px;margin-bottom:9px}.planner-filterbar>span{margin-right:auto;color:var(--muted);font-size:10px}.planner-search input{width:190px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:11px}.week-planning-workspace{display:block;min-width:0}.week-planner-desktop{max-height:calc(100dvh - 314px)}.week-planner-cell.has-unavailable{background:#fffafa}.planner-availability{position:relative;z-index:2;justify-self:start;max-width:100%;padding:3px 6px;border:1px solid transparent;border-radius:4px;font-size:8px;font-weight:850;letter-spacing:.04em;white-space:nowrap}.planner-availability.is-available{border-color:#aad5c0;background:#eef9f3;color:#207a54}.planner-availability.is-unavailable{border-color:#e7b8bc;background:var(--red-soft);color:var(--red)}.planner-availability.is-limited{border-color:#dcc89c;background:#fff9e9;color:#85651c}.planner-no-results{grid-column:1/-1;padding:28px;color:var(--muted);font-size:12px;text-align:center}.week-planner-add{inset:0;width:100%;height:100%;border-radius:0;opacity:1}.week-planner-add svg{position:absolute;right:7px;bottom:5px;width:14px;height:14px;padding:4px;opacity:.25}.week-planner-cell:hover .week-planner-add svg,.week-planner-add:focus-visible svg{opacity:1}.client-resolution-option{display:grid;gap:11px;padding:2px 0}.client-resolution-option h3{margin:0;font-size:14px}.client-resolution-option .button{justify-self:start}.form-separator{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:10px;text-transform:uppercase}.form-separator::before,.form-separator::after{content:"";flex:1;height:1px;background:var(--line)}
.client-resolution-context{display:grid;gap:9px;padding:13px 15px;border:1px solid var(--line);border-radius:9px;background:#fafafd}.client-resolution-context h3,.client-resolution-context p{margin:0}.client-resolution-context h3{font-size:13px}.client-resolution-context p{color:var(--muted);font-size:12px}.client-resolution-visit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;padding-top:9px;border-top:1px solid var(--line)}.client-resolution-visit>span{display:grid;gap:2px}.client-resolution-visit strong{font-size:12px}.client-resolution-visit small{color:var(--muted);font-size:10px}
.planner-availability-select{position:relative;z-index:2;justify-self:start;width:auto;max-width:92px;min-height:22px;padding:2px 20px 2px 6px;border:1px solid var(--line-soft);border-radius:4px;background-color:#fafafd;color:var(--faint);font-size:8px;font-weight:850;letter-spacing:.04em;line-height:1;cursor:pointer}.planner-availability-select:hover,.planner-availability-select:focus{border-color:var(--accent);color:var(--accent-dark)}.planner-availability-select.is-available{border-color:#aad5c0;background-color:#eef9f3;color:#207a54}.planner-availability-select.is-unavailable{border-color:#e7b8bc;background-color:var(--red-soft);color:var(--red)}.planner-availability-select.is-limited{border-color:#dcc89c;background-color:#fff9e9;color:#85651c}
.week-planner-grid{isolation:isolate}.week-planner-day{z-index:25}.week-planner-corner{z-index:40}.week-planner-person{z-index:30;box-shadow:1px 0 0 var(--line)}.week-planner-cell{z-index:0}.week-planner-cell.has-open-menu{z-index:20}.planner-availability-control{position:relative;z-index:3;justify-self:stretch;max-width:132px}.planner-availability-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;min-height:24px;padding:3px 6px 3px 8px;border:1px solid var(--line-soft);border-radius:5px;background:#fafafd;color:var(--faint);font-size:8px;font-weight:850;letter-spacing:.035em;text-align:left}.planner-availability-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-availability-trigger:hover,.planner-availability-trigger:focus-visible{border-color:var(--accent);color:var(--accent-dark);outline:0}.planner-availability-trigger svg{flex:0 0 auto;width:11px;height:11px;transform:rotate(90deg)}.planner-availability-trigger.is-available{border-color:#aad5c0;background:#eef9f3;color:#207a54}.planner-availability-trigger.is-unavailable{border-color:#e7b8bc;background:var(--red-soft);color:var(--red)}.planner-availability-trigger.is-limited{border-color:#dcc89c;background:#fff9e9;color:#85651c}.planner-availability-menu{position:absolute;top:28px;left:0;z-index:50;width:148px;padding:4px;border:1px solid var(--line);border-radius:7px;background:#fff;box-shadow:0 8px 22px rgba(32,32,45,.16)}.planner-availability-menu>button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:31px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:var(--ink);font-size:10px;font-weight:700;text-align:left}.planner-availability-menu>button:hover,.planner-availability-menu>button:focus-visible{background:var(--accent-soft);color:var(--accent-dark);outline:0}.planner-availability-menu>button.is-selected{color:var(--accent-dark)}.planner-availability-menu b{font-size:10px}
.week-planner-person.is-clickable{display:block}.planner-person-link{display:grid;grid-template-columns:34px minmax(0,1fr) 16px;align-items:center;gap:9px;width:calc(100% + 12px);min-height:58px;margin:-5px -6px;padding:5px 6px;border:0;border-radius:7px;background:transparent;color:inherit;text-align:left}.planner-person-link>span:nth-child(2){display:grid;min-width:0;gap:4px}.planner-person-link:hover,.planner-person-link:focus-visible{background:var(--accent-soft);color:var(--accent-dark);outline:0}.planner-person-chevron{display:grid;place-items:center;color:var(--faint)}.planner-person-chevron svg{width:14px;height:14px}.planner-person-link:hover .planner-person-chevron{color:var(--accent-dark)}
@media (max-width:1100px){.week-planner-desktop{max-height:calc(100dvh - 350px)}}
@media (max-width:767px){.calendar-workflow{border-right:0;border-left:0;border-radius:0}.planning-steps>button{display:grid;justify-items:center;gap:6px;min-height:72px;padding:8px 4px;text-align:center}.planning-steps>button>span{gap:2px}.planning-steps small{font-size:8px}.calendar-draft-note{align-items:flex-start;padding:12px 1px;background:#fff}.calendar-week-metrics>div{padding:10px 8px}.calendar-week-metrics dt{font-size:8px}.calendar-week-metrics dd{font-size:16px}.calendar-review-panel{margin:0 0 18px;padding:16px 1px;border-right:0;border-left:0;border-radius:0}.calendar-review-head{align-items:stretch;flex-direction:column}.calendar-review-row{grid-template-columns:26px minmax(0,1fr) 16px}.review-row-count{display:none}.calendar-review-panel.is-clear{align-items:stretch;flex-direction:column;padding-right:48px}.calendar-review-panel.is-clear>[data-calendar-stage="publish"]{width:100%}.empty-week-start{align-items:stretch;flex-direction:column;margin:0 0 18px;padding:16px}.empty-week-start>div:last-child{display:grid}.empty-week-start .button{width:100%}.planner-filterbar{display:none}.week-planning-workspace{display:none}.week-planner-mobile{display:block}}
@media (max-width:767px){.actual-early-row{grid-template-columns:1fr;gap:9px}.actual-early-row label{max-width:none}.actual-early-approvals{padding:14px}}

/* Shared Vuorot identity and lightweight opening transitions. */
.auth-page.is-checking .auth-layout{display:flex;flex-direction:column;align-items:center;padding:max(34px,env(safe-area-inset-top)) 28px max(18px,env(safe-area-inset-bottom))}
.auth-page.is-checking .auth-shell{display:flex;flex:1;flex-direction:column;justify-content:center;width:min(100%,430px)}
.auth-page.is-checking .auth-card,.auth-page.is-checking .auth-form-wrap{display:flex;flex-direction:column;padding:0}
.auth-page.is-checking .auth-heading{place-content:center;min-height:0;margin:0;padding:0}
.auth-page.is-checking .auth-heading-logo{width:min(160px,43vw)}
.auth-page.is-checking .auth-login-title{margin-top:8px;font-size:15px;font-weight:560;letter-spacing:.01em}
.auth-page.is-checking .auth-footer-logo{display:none}
.auth-page .auth-opening-state{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-top:38px}
.opening-spinner{position:relative;flex:0 0 auto;width:36px;height:36px}
.opening-spinner span{position:absolute;top:50%;left:50%;width:4px;height:11px;margin:-5.5px 0 0 -2px;border-radius:999px;background:#fff;transform:rotate(calc(var(--spoke) * 45deg)) translateY(-13px);animation:opening-spoke .8s linear infinite;animation-delay:calc(var(--spoke) * -.1s)}
.opening-spinner span:nth-child(1){--spoke:0}.opening-spinner span:nth-child(2){--spoke:1}.opening-spinner span:nth-child(3){--spoke:2}.opening-spinner span:nth-child(4){--spoke:3}.opening-spinner span:nth-child(5){--spoke:4}.opening-spinner span:nth-child(6){--spoke:5}.opening-spinner span:nth-child(7){--spoke:6}.opening-spinner span:nth-child(8){--spoke:7}
@keyframes opening-spoke{0%{opacity:1}100%{opacity:.16}}
.boot-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:38px;padding:max(34px,env(safe-area-inset-top)) 28px max(18px,env(safe-area-inset-bottom))}
.boot-brand{display:grid;place-items:center;width:100%}
.boot-brand .boot-logo{width:min(160px,43vw);max-height:none}
.boot-brand .app-lock-brand-lockup>span{margin-top:8px;font-size:15px;font-weight:560}
.boot-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;width:100%}
.boot-screen .boot-content p{margin:0;font-size:12px;line-height:1.4}
.auth-shell{animation:auth-enter .38s cubic-bezier(.16,1,.3,1) both}
.auth-page.is-checking .auth-shell,.auth-page.is-authenticating .auth-heading,.auth-page.is-authenticating .auth-opening-state{animation:none}
.boot-screen{opacity:1;transition:opacity .26s cubic-bezier(.4,0,.2,1)}
.boot-screen.is-leaving{opacity:0;pointer-events:none}
.app-shell.is-entering{animation:app-opening .32s cubic-bezier(.16,1,.3,1) both}
@keyframes auth-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes app-opening{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.auth-shell,.auth-page.is-authenticating .auth-heading,.auth-page.is-authenticating .auth-opening-state,.app-shell.is-entering{animation:none}.opening-spinner span{animation:none;opacity:.72}.boot-screen{transition:none}}

/* Employee absence notice: calm hierarchy, explicit urgent-call guidance. */
.dialog:has(#absenceNoticeForm){width:min(600px,calc(100% - 30px))}
.dialog-surface:has(#absenceNoticeForm){padding:28px}
.dialog-surface:has(#absenceNoticeForm) .dialog-head{margin-bottom:22px;padding-bottom:20px}
.dialog-surface:has(#absenceNoticeForm) .dialog-head h2{max-width:16ch;font-size:28px;line-height:1.08}
.dialog-surface:has(#absenceNoticeForm) .dialog-head p{max-width:44ch;font-size:13px;line-height:1.5}
#absenceNoticeForm{gap:20px}
.absence-date-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.absence-date-grid .field{min-width:0}
.absence-date-grid input{font-variant-numeric:tabular-nums}
.absence-privacy-note{display:grid;gap:4px;padding:14px 16px;border-left:4px solid var(--accent);border-radius:9px;background:var(--accent-soft);color:var(--ink)}
.absence-privacy-note strong{font-size:13px;line-height:1.35}
.absence-privacy-note p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.absence-message-field textarea{min-height:112px;line-height:1.5;resize:vertical}
.absence-urgent-note{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:start;gap:11px;padding:14px 15px;border:1px solid #d9e3f3;border-radius:10px;background:#f6f9fc}
.absence-urgent-note>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#fff;color:var(--accent-dark)}
.absence-urgent-note svg{width:18px;height:18px}
.absence-urgent-note div{display:grid;gap:4px}
.absence-urgent-note strong{font-size:13px;line-height:1.35}
.absence-urgent-note p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
#absenceNoticeForm .dialog-actions{align-items:center;padding-top:2px}
#absenceNoticeForm .dialog-actions .button{min-height:48px}
@media (max-width:767px){
  .dialog:has(#absenceNoticeForm){width:calc(100% - 16px);max-height:calc(100dvh - 16px);margin:8px auto;border-radius:18px}
  .dialog-surface:has(#absenceNoticeForm){padding:21px 18px calc(20px + env(safe-area-inset-bottom))}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head{margin-bottom:18px;padding-bottom:17px}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head h2{font-size:25px;line-height:1.1}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head p{font-size:12px}
  #absenceNoticeForm{gap:17px}
  .absence-date-grid{grid-template-columns:1fr;gap:14px}
  .absence-date-grid .field{gap:7px}
  .absence-privacy-note,.absence-urgent-note{padding:13px 14px}
  .absence-message-field textarea{min-height:106px;resize:none}
  #absenceNoticeForm .dialog-actions{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:8px}
  #absenceNoticeForm .dialog-actions .button{width:100%;min-width:0;padding-right:10px;padding-left:10px}
}

/* Employee mobile: spacious, card-led visual language adapted from the supplied reference. */
@media (max-width:767px){
  .app-shell.is-employee{--bottom-nav:80px;--safe-area-bottom:var(--system-safe-area-bottom);--paper:#f6f6f6;--surface:#fff;--surface-strong:#fff;--ink:#212322;--muted:#6e7787;--faint:#9ca3af;--line:#d9e3f3;--line-soft:#eff5fb;--accent:#0046ad;--accent-dark:#003a8e;--accent-soft:#f1f7fb;--reference-header:#0046ad;--reference-sidebar-active:#f1f7fb;--reference-sidebar-active-ink:#003a8e;--red:#ce0f69;--red-soft:#fdefef;background:#f6f6f6;font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .app-shell.is-employee h1,.app-shell.is-employee h2,.app-shell.is-employee h3,.app-shell.is-employee h4,.app-shell.is-employee button,.app-shell.is-employee input,.app-shell.is-employee select,.app-shell.is-employee textarea{font-family:inherit}
  .app-shell.is-employee .app-header{grid-template-columns:minmax(0,1fr) 48px auto;height:68px;min-height:68px;padding:0 10px 0 18px;background:var(--reference-header);box-shadow:0 3px 14px rgba(0,70,173,.18)}
  .app-shell.is-employee .header-brand{grid-column:1;grid-row:1;align-self:stretch;display:flex;align-items:center}
  .app-shell.is-employee .header-logo-image{width:120px;max-height:26px}
  .app-shell.is-employee .worker-notifications-header-button{grid-column:2;grid-row:1;align-self:stretch;display:grid;place-items:center;width:48px;padding:0;border:0;background:transparent;color:#fff}
  .app-shell.is-employee .worker-notifications-header-button svg{width:23px;height:23px;stroke-width:1.9}
  .app-shell.is-employee .worker-notifications-header-button:active{background:rgba(0,35,96,.22);transform:none}
  .app-shell.is-employee .worker-notifications-header-button:focus-visible{outline:2px solid #fff;outline-offset:-4px}
  .app-shell.is-employee .header-account{grid-column:3;grid-row:1;align-self:stretch}
  .app-shell.is-employee .header-avatar{width:40px;height:40px;font-size:12px}
  .app-shell.is-employee .main-shell{background:#f6f6f6}
  .app-shell.is-employee .view-root{padding:27px 16px 36px;background:#f6f6f6}
  .app-shell.is-employee .worker-mobile-home{display:grid;gap:0}
  .app-shell.is-employee .worker-greeting{margin:0 0 25px;padding:0 54px 0 0;border:0}
  .app-shell.is-employee .worker-greeting .eyebrow{order:2;margin:9px 0 0;color:var(--muted);font-size:11px;letter-spacing:.04em;text-transform:capitalize}
  .app-shell.is-employee .worker-greeting h2{color:var(--reference-header);font-size:36px;font-weight:750;letter-spacing:-.045em;line-height:1.02}
  .app-shell.is-employee .worker-greeting p:last-child{margin-top:9px;color:var(--muted);font-size:14px}
  .app-shell.is-employee .mobile-refresh-button{position:absolute;top:82px;right:16px;bottom:auto;width:44px;height:44px;border:1px solid rgba(0,70,173,.18);background:#fff;color:var(--reference-header);box-shadow:none}
  .app-shell.is-employee .worker-task-card{margin:0 0 14px;border:0;border-left:5px solid var(--accent);border-radius:11px;background:#f1f7fb;box-shadow:0 7px 18px rgba(0,70,173,.07)}
  .app-shell.is-employee .worker-actuals{margin:14px 0 20px;border:1px solid #d9e3f3;border-radius:16px;background:#fff;box-shadow:0 12px 28px rgba(0,70,173,.07);overflow:hidden;transition:border-color .25s cubic-bezier(.16,1,.3,1),box-shadow .25s cubic-bezier(.16,1,.3,1)}
  .app-shell.is-employee .worker-actuals[open]{border-color:#a9c7e6;box-shadow:0 16px 34px rgba(0,70,173,.09)}
  .app-shell.is-employee .worker-actuals>summary{position:relative;min-height:84px;padding:17px 18px 17px 21px;border:0;background:#fff;transition:background-color .25s cubic-bezier(.16,1,.3,1)}
  .app-shell.is-employee .worker-actuals>summary::before{content:"";position:absolute;top:21px;bottom:21px;left:0;width:4px;border-radius:0 4px 4px 0;background:var(--accent)}
  .app-shell.is-employee .worker-actuals>summary:active{background:#f1f7fb}
  .app-shell.is-employee .worker-actuals>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
  .app-shell.is-employee .worker-actuals>summary strong{color:var(--reference-header);font-size:16px;letter-spacing:-.015em}
  .app-shell.is-employee .worker-actuals>summary small{font-size:11px;line-height:1.45}
  .app-shell.is-employee .worker-actuals>summary>svg{width:19px;height:19px;color:var(--accent-dark);transition:transform .25s cubic-bezier(.16,1,.3,1)}
  .app-shell.is-employee .worker-actual-count{min-width:32px;height:32px;color:var(--reference-header);font-size:16px}
  .app-shell.is-employee .worker-actuals-panel{padding:14px 16px 17px;border:0;background:#fff}
  .app-shell.is-employee .worker-actuals-head{display:grid;gap:15px;padding:0 0 14px}
  .app-shell.is-employee .worker-actuals-head .button{width:100%;min-height:48px;border-radius:11px;box-shadow:none;font-size:13px}
  .app-shell.is-employee .worker-actuals-head .button:active{transform:scale(.985)}
  .app-shell.is-employee .worker-actuals-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
  .app-shell.is-employee .worker-actuals-divider::before,.app-shell.is-employee .worker-actuals-divider::after{content:"";flex:1;height:1px;background:#d9e3f3}
  .app-shell.is-employee .worker-actual-list{display:grid;gap:10px;border:0}
  .app-shell.is-employee .worker-actual-row{gap:13px;padding:14px 13px 13px;border:1px solid #d9e3f3;border-radius:12px;background:#fafafb}
  .app-shell.is-employee .worker-actual-summary{grid-template-columns:88px minmax(0,1fr) 18px;gap:10px;width:100%}
  .app-shell.is-employee .worker-actual-summary:active{transform:scale(.985)}
  .app-shell.is-employee .worker-actual-summary time{gap:3px;font-size:10px;font-weight:700}
  .app-shell.is-employee .worker-actual-summary time strong{font-size:13px;font-variant-numeric:tabular-nums}
  .app-shell.is-employee .worker-actual-summary>span>strong{font-size:13px;line-height:1.35}
  .app-shell.is-employee .worker-actual-summary svg{color:var(--accent-dark)}
  .app-shell.is-employee .next-shift{position:relative;margin:0;padding:19px 18px 18px 22px;border:0;border-radius:11px;background:#fff;box-shadow:0 8px 22px rgba(0,70,173,.085);overflow:hidden}
  .app-shell.is-employee .next-shift::before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:var(--accent)}
  .app-shell.is-employee .next-shift .eyebrow{margin:0 0 10px;color:var(--muted);font-size:11px;letter-spacing:.045em}
  .app-shell.is-employee .next-shift-date{display:flex;align-items:center;gap:8px;color:var(--accent-dark);font-size:14px;font-weight:700;text-transform:capitalize}
  .app-shell.is-employee .next-shift-date svg{width:19px;height:19px}
  .app-shell.is-employee .next-shift h2{margin-top:15px;color:var(--ink);font-size:21px;font-weight:700;letter-spacing:-.025em;line-height:1.15}
  .app-shell.is-employee .next-shift .time-range{margin:7px 0 0;color:var(--reference-header);font-size:18px;font-weight:700}
  .app-shell.is-employee .next-shift p{margin:4px 0 0;font-size:13px}
  .app-shell.is-employee .next-shift .button{justify-content:space-between;width:100%;min-height:46px;margin-top:17px;padding:0;border:0;border-top:1px solid var(--line-soft);border-radius:0;background:transparent;color:var(--accent-dark);font-size:13px}
  .app-shell.is-employee .next-shift .button:hover{background:transparent;color:var(--reference-header)}
  .app-shell.is-employee .worker-primary-actions{justify-content:stretch;margin:16px 0 30px}
  .app-shell.is-employee .worker-obstacle-action{width:100%;min-height:48px;border:1px solid #a9c7e6;border-radius:999px;background:#fff;color:var(--accent-dark)}
  .app-shell.is-employee .employee-today{margin:0 0 30px}
  .app-shell.is-employee .section-heading{align-items:end;margin:0 0 12px}
  .app-shell.is-employee .section-heading h2{color:var(--reference-header);font-size:22px;font-weight:700;letter-spacing:-.03em}
  .app-shell.is-employee .section-heading>span{color:var(--muted);font-size:11px}
  .app-shell.is-employee .employee-shift-list{display:grid;gap:11px;border:0}
  .app-shell.is-employee .employee-shift-row{position:relative;grid-template-columns:74px minmax(0,1fr) 18px;align-items:center;gap:11px;min-height:94px;padding:15px 13px 15px 18px;border:0;border-radius:10px;background:#fff;box-shadow:0 7px 19px rgba(0,70,173,.075);overflow:hidden}
  .app-shell.is-employee .employee-shift-row::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--accent)}
  .app-shell.is-employee .employee-shift-row:active{transform:scale(.985)}
  .app-shell.is-employee .employee-shift-row time{display:flex;align-items:center;gap:6px;color:var(--accent-dark);font-size:13px}
  .app-shell.is-employee .employee-shift-row time svg{width:18px;height:18px}
  .app-shell.is-employee .employee-shift-row time strong{font-size:13px;font-variant-numeric:tabular-nums}
  .app-shell.is-employee .employee-shift-row>span>strong{color:var(--ink);font-size:14px;line-height:1.25}
  .app-shell.is-employee .employee-shift-row>span>span{margin-top:5px;color:var(--muted);font-size:11px;line-height:1.35}
  .app-shell.is-employee .employee-shift-row>svg{width:18px;height:18px;color:var(--accent-dark)}
  .app-shell.is-employee .seen-dot{display:none}
  .app-shell.is-employee .worker-day-group{margin-top:13px}
  .app-shell.is-employee .worker-day-group+ .worker-day-group{margin-top:24px}
  .app-shell.is-employee .worker-day-group h3{margin:0 0 10px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.025em;text-transform:capitalize}
  .app-shell.is-employee .upcoming-section{margin-top:0}
  .app-shell.is-employee .upcoming-section>.empty-state{padding:28px 16px;border:0;border-radius:10px;background:#fff}
  .app-shell.is-employee .worker-empty{margin:0 0 16px;padding:28px 22px;border:0;border-radius:11px;background:#fff;box-shadow:0 7px 18px rgba(0,70,173,.065)}
  .app-shell.is-employee .worker-calendar-view>.page-lead,.app-shell.is-employee .worker-notifications-view>.page-lead,.app-shell.is-employee .worker-profile-view>.page-lead{position:relative;margin:0 0 22px;padding-right:52px}
  .app-shell.is-employee .worker-calendar-view>.page-lead h2,.app-shell.is-employee .worker-notifications-view>.page-lead h2,.app-shell.is-employee .worker-profile-view>.page-lead h2{color:var(--reference-header);font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
  .app-shell.is-employee .worker-calendar-view>.page-lead p:not(.eyebrow),.app-shell.is-employee .worker-notifications-view>.page-lead p,.app-shell.is-employee .worker-profile-view>.page-lead p{margin-top:10px;color:var(--muted);font-size:13px;line-height:1.5}
  .app-shell.is-employee .worker-calendar-view>.page-lead .eyebrow{margin:0 0 7px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.08em}
  .app-shell.is-employee .worker-calendar-workspace{padding:16px;border:1px solid #d9e3f3;border-radius:12px;background:#fff}
  .app-shell.is-employee .worker-calendar-window{display:grid;gap:7px;margin:0 0 17px;padding:13px 14px;border-left:3px solid var(--accent);background:#f1f7fb}
  .app-shell.is-employee .worker-calendar-window>span:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .app-shell.is-employee .worker-calendar-window small{color:var(--accent-dark);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-window strong{color:var(--ink);font-size:12px}
  .app-shell.is-employee .worker-calendar-window>span:last-child{color:var(--muted);font-size:10px;line-height:1.35}
  .app-shell.is-employee .worker-calendar-weekdays,.app-shell.is-employee .worker-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
  .app-shell.is-employee .worker-calendar-weekdays{margin-bottom:7px;padding:0 2px}
  .app-shell.is-employee .worker-calendar-weekdays span{color:var(--muted);font-size:9px;font-weight:700;text-align:center}
  .app-shell.is-employee .worker-calendar-day{display:grid;grid-template-rows:auto auto minmax(10px,auto);align-content:start;gap:2px;min-height:62px;padding:6px 3px;border:1px solid #d9e3f3;border-radius:8px;background:#fff;color:var(--ink);text-align:center}
  .app-shell.is-employee .worker-calendar-day.is-empty{border:0;background:transparent}
  .app-shell.is-employee .worker-calendar-day>span{font-size:13px;font-weight:700;line-height:1}
  .app-shell.is-employee .worker-calendar-day small{color:var(--faint);font-size:7px;font-weight:700;line-height:1;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-day i{align-self:center;color:var(--faint);font-size:10px;font-style:normal}
  .app-shell.is-employee .worker-calendar-day.has-shifts{border-color:#a9c7e6;background:#f1f7fb;cursor:pointer}
  .app-shell.is-employee .worker-calendar-day.has-shifts:active{background:#e4f0fb;transform:scale(.98)}
  .app-shell.is-employee .worker-calendar-day strong{overflow:hidden;color:var(--accent-dark);font-size:8px;font-variant-numeric:tabular-nums;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-calendar-day b{color:var(--muted);font-size:7px;line-height:1}
  .app-shell.is-employee .worker-calendar-help{margin:13px 3px 1px;color:var(--muted);font-size:10px;line-height:1.45}
  .worker-calendar-day-list{display:grid;gap:0;overflow:hidden;border-radius:14px;background:var(--paper)}
  .worker-calendar-day-row{display:grid;grid-template-columns:92px minmax(0,1fr) 18px;align-items:center;gap:12px;width:auto;min-height:72px;margin:0 16px;padding:13px 0;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--ink);text-align:left;transition:background .16s ease,transform .16s cubic-bezier(.22,1,.36,1)}
  .worker-calendar-day-row:last-child{border-bottom:0}
  .worker-calendar-day-row:active{background:var(--accent-soft);transform:scale(.985)}
  .worker-calendar-day-time{color:var(--accent-dark);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.35}
  .worker-calendar-day-copy{display:grid;min-width:0;gap:4px}
  .worker-calendar-day-copy strong{overflow:hidden;font-size:13px;font-weight:700;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
  .worker-calendar-day-copy small{color:var(--muted);font-size:10px;line-height:1.35}
  .worker-calendar-day-row>svg{width:17px;height:17px;color:var(--faint)}
  .app-shell.is-employee .worker-notifications-view .notification-list{display:grid;gap:10px;border:0}
  .app-shell.is-employee .worker-notifications-view .notification-row{position:relative;grid-template-columns:minmax(0,1fr) auto;gap:12px;min-height:91px;padding:16px 14px 15px 18px;border:1px solid #d9e3f3;border-radius:12px;background:#fff;box-shadow:0 7px 19px rgba(0,70,173,.06);overflow:hidden;transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s}
  .app-shell.is-employee .worker-notifications-view .notification-row:is(button):active{transform:scale(.985)}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread{padding-left:18px;border-color:#a9c7e6;background:#fff}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread::before{top:0;bottom:0;left:0;width:5px;height:auto;border-radius:0;background:var(--accent)}
  .app-shell.is-employee .worker-notifications-view .notification-row strong{color:var(--ink);font-size:14px;line-height:1.35}
  .app-shell.is-employee .worker-notifications-view .notification-row p{margin-top:6px;font-size:12px;line-height:1.45}
  .app-shell.is-employee .worker-notifications-view .notification-row time{align-self:start;padding:4px 7px;border-radius:999px;background:#f1f7fb;color:var(--accent-dark);font-size:9px;font-weight:700;white-space:nowrap}
  .app-shell.is-employee .worker-notifications-view .empty-state{padding:32px 22px;border:1px solid #d9e3f3;border-radius:16px;background:#fff;box-shadow:0 12px 28px rgba(0,70,173,.06)}
  .app-shell.is-employee .worker-profile-view .profile-details{border:1px solid #d9e3f3;border-radius:16px;background:#fff;box-shadow:0 12px 28px rgba(0,70,173,.07);overflow:hidden}
  .app-shell.is-employee .worker-profile-view .profile-detail{grid-template-columns:1fr;gap:5px;padding:17px 18px;border-color:#eff5fb}
  .app-shell.is-employee .worker-profile-view .profile-detail:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-view .profile-detail span{color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}
  .app-shell.is-employee .worker-profile-view .profile-detail strong{color:var(--ink);font-size:14px}
  .app-shell.is-employee .worker-profile-actions{gap:11px;max-width:none;margin-top:14px;padding:17px;border:1px solid #d9e3f3;border-left:5px solid var(--accent);border-radius:12px;background:#f1f7fb;box-shadow:0 7px 19px rgba(0,70,173,.055)}
  .app-shell.is-employee .worker-profile-actions .button{min-height:49px;border-radius:10px;font-size:13px}
  .app-shell.is-employee .worker-profile-actions p{color:var(--muted);font-size:11px;line-height:1.5}
  .app-shell.is-employee .mobile-nav{right:16px;bottom:calc(var(--safe-area-bottom) + 8px);left:16px;height:64px;padding:5px;border:1px solid #e3e6ea;border-radius:32px;background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
  .app-shell.is-employee .mobile-nav .nav-button{gap:3px;min-height:52px;border-radius:27px;color:#505866;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:11px;font-weight:500;box-shadow:none}
  .app-shell.is-employee .mobile-nav .nav-button svg{width:26px;height:26px}
  .app-shell.is-employee .mobile-nav .nav-button.is-active{background:#eaf1fb;color:var(--reference-header);font-weight:700;box-shadow:none}
  .app-shell.is-employee .mobile-nav .nav-button.is-active svg{stroke-width:2.35}
}

/* The employee calendar is primarily mobile, but it must remain readable when opened on a computer. */
@media (min-width:768px){
  .app-shell.is-employee .worker-calendar-view{max-width:1120px}
  .app-shell.is-employee .worker-calendar-view>.page-lead{margin:0 0 24px}
  .app-shell.is-employee .worker-calendar-view>.page-lead h2{margin:0;color:var(--ink);font-size:30px;letter-spacing:-.035em}
  .app-shell.is-employee .worker-calendar-view>.page-lead p:not(.eyebrow){max-width:62ch;margin:9px 0 0;color:var(--muted);font-size:14px;line-height:1.5}
  .app-shell.is-employee .worker-calendar-view>.page-lead .eyebrow{margin:0 0 7px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-workspace{padding:20px;border:1px solid var(--line);background:var(--surface-strong)}
  .app-shell.is-employee .worker-calendar-window{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin:0 0 18px;padding:0 0 14px;border-bottom:1px solid var(--line)}
  .app-shell.is-employee .worker-calendar-window>span:first-child{display:grid;gap:4px}
  .app-shell.is-employee .worker-calendar-window small{color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-window strong{font-size:15px;font-variant-numeric:tabular-nums}
  .app-shell.is-employee .worker-calendar-window>span:last-child{color:var(--muted);font-size:12px}
  .app-shell.is-employee .worker-calendar-weekdays,.app-shell.is-employee .worker-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
  .app-shell.is-employee .worker-calendar-weekdays{margin:0 0 7px;padding:0 2px}
  .app-shell.is-employee .worker-calendar-weekdays span{color:var(--muted);font-size:11px;font-weight:750;text-align:center}
  .app-shell.is-employee .worker-calendar-day{display:grid;grid-template-rows:auto auto minmax(16px,auto);align-content:start;gap:4px;min-height:88px;padding:10px 8px;border:1px solid var(--line);background:#fff;color:var(--ink);text-align:left}
  .app-shell.is-employee .worker-calendar-day.is-empty{border-color:transparent;background:transparent}
  .app-shell.is-employee .worker-calendar-day>span{font-size:16px;font-weight:750;line-height:1}
  .app-shell.is-employee .worker-calendar-day small{color:var(--faint);font-size:9px;font-weight:750;line-height:1;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-day i{align-self:center;color:var(--faint);font-size:12px;font-style:normal}
  .app-shell.is-employee .worker-calendar-day.has-shifts{border-left:3px solid var(--accent);background:#f7faff;cursor:pointer}
  .app-shell.is-employee .worker-calendar-day.has-shifts:hover{border-color:var(--accent);background:#f1f7fb}
  .app-shell.is-employee .worker-calendar-day.has-shifts:active{transform:translateY(1px)}
  .app-shell.is-employee .worker-calendar-day strong{overflow:hidden;color:var(--accent-dark);font-size:12px;font-variant-numeric:tabular-nums;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-calendar-day b{color:var(--muted);font-size:10px;line-height:1.2}
  .app-shell.is-employee .worker-calendar-help{margin:17px 0 0;color:var(--muted);font-size:12px;line-height:1.45}
}

.payroll-leave-row{grid-template-columns:minmax(120px,.45fr) minmax(170px,.8fr) minmax(210px,1fr)}
.payroll-leave-row select{width:100%;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:0 10px;font:inherit}
.payroll-leave-row select:focus{border-color:var(--accent);outline:2px solid color-mix(in srgb,var(--accent) 20%,transparent);outline-offset:1px}
.payroll-leave-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 2px 2px}
.payroll-leave-actions p{max-width:620px;margin:0;color:var(--muted);font-size:10px;line-height:1.5}
.payroll-leave-actions .button{flex:0 0 auto}
@media (max-width:767px){.payroll-leave-row{grid-template-columns:96px minmax(0,1fr)}.payroll-leave-row select{grid-column:1/-1}.payroll-leave-actions{align-items:stretch;flex-direction:column}.payroll-leave-actions .button{width:100%}}
@media (max-width:767px){.client-week-planner-desktop{display:none}.client-week-planner-mobile{display:block}.week-planning-switch{margin-right:-18px;margin-left:-18px;border-right:0;border-left:0;border-radius:0}.week-planning-switch>button{min-height:68px;padding:9px 12px}.week-planning-switch b{width:25px;height:25px}.client-week-planner-mobile .week-strip{margin:0 -18px}.client-week-planner-mobile .selected-day-head{margin:0 -18px;padding:14px 18px 12px}.client-week-planner-mobile>.calm-empty{padding-right:1px;padding-left:1px}.calendar-toolbar.is-week{margin-right:-18px;margin-left:-18px;padding-right:18px;padding-left:18px;border-right:0;border-left:0;border-radius:0}.period-label{min-width:0;flex:1}.period-label strong{min-width:0}}
.client-week-planner-desktop,.week-planner-desktop{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#8397b5 #edf2f8}
.client-week-planner-desktop::-webkit-scrollbar,.week-planner-desktop::-webkit-scrollbar{width:10px;height:10px}
.client-week-planner-desktop::-webkit-scrollbar-track,.week-planner-desktop::-webkit-scrollbar-track{background:#edf2f8}
.client-week-planner-desktop::-webkit-scrollbar-thumb,.week-planner-desktop::-webkit-scrollbar-thumb{border:2px solid #edf2f8;border-radius:10px;background:#8397b5}
.client-week-planner-desktop::-webkit-scrollbar-thumb:hover,.week-planner-desktop::-webkit-scrollbar-thumb:hover{background:#617a9e}
.manager-tour-progress span{width:0}.manager-tour-progress .is-step-1{width:8.333%}.manager-tour-progress .is-step-2{width:16.667%}.manager-tour-progress .is-step-3{width:25%}.manager-tour-progress .is-step-4{width:33.333%}.manager-tour-progress .is-step-5{width:41.667%}.manager-tour-progress .is-step-6{width:50%}.manager-tour-progress .is-step-7{width:58.333%}.manager-tour-progress .is-step-8{width:66.667%}.manager-tour-progress .is-step-9{width:75%}.manager-tour-progress .is-step-10{width:83.333%}.manager-tour-progress .is-step-11{width:91.667%}.manager-tour-progress .is-step-12{width:100%}
@media (min-width:768px){.view-root:has(.calendar-lead){padding-top:16px;padding-bottom:24px}.calendar-lead{align-items:center;flex-direction:row;min-height:42px;margin-bottom:8px}.calendar-lead>div:first-child{display:none}.calendar-lead .lead-actions{align-self:auto;width:100%;justify-content:flex-end}.calendar-lead .button{min-height:40px}.calendar-toolbar.is-week{min-height:50px;padding-top:5px;padding-bottom:5px}.calendar-workflow{margin-bottom:0}.calendar-workflow .calendar-draft-note{display:none}.planning-steps>button{min-height:52px;padding:7px 13px}.calendar-week-metrics>div{align-content:center;min-height:52px;padding:7px 12px}.calendar-week-metrics dd{font-size:16px}.week-planning-switch{margin-bottom:8px}.week-planning-switch>button{min-height:48px;padding:7px 15px}.planner-filterbar{min-height:36px;margin-bottom:6px}.client-week-planner-desktop,.week-planner-desktop{max-height:calc(100dvh - 270px)}}
@media (min-width:1101px){.calendar-workflow{display:grid;grid-template-columns:minmax(470px,1.25fr) minmax(300px,.75fr)}.calendar-workflow .planning-steps{border-right:1px solid var(--line);border-bottom:0}.calendar-workflow .calendar-week-metrics{grid-column:2;grid-row:1}.calendar-workflow+.week-planning-switch{border-top:0}.planning-steps>button>span{gap:1px}}
@media (min-width:768px) and (max-width:1100px){.calendar-workflow .planning-steps>button{min-height:48px}.calendar-week-metrics>div{min-height:42px}.week-planning-switch>button{min-height:46px}.client-week-planner-desktop,.week-planner-desktop{max-height:calc(100dvh - 320px)}}

/* The client/employee choice belongs to the table tools, not the week status flow. */
.planner-filterbar .week-planning-switch{display:inline-grid;grid-template-columns:max-content max-content;flex:0 0 auto;margin:0;border:1px solid var(--line);border-radius:999px;background:#f2f4f8;overflow:hidden}
.planner-filterbar .week-planning-switch>button{display:flex;align-items:center;min-height:36px;padding:5px 13px;border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);text-align:left}
.planner-filterbar .week-planning-switch>button:last-child{border-right:0}
.planner-filterbar .week-planning-switch>button:hover{background:#e9edf4;color:var(--ink)}
.planner-filterbar .week-planning-switch>button.is-active{background:var(--accent);color:#fff;box-shadow:none}
.planner-filterbar .week-planning-switch>button>span{display:flex;align-items:baseline;gap:6px}
.planner-filterbar .week-planning-switch strong{font-size:10px;white-space:nowrap}
.planner-filterbar .week-planning-switch small{color:inherit;font-size:9px;opacity:.78;white-space:nowrap}
.planner-filterbar .week-planning-switch .has-work:not(.is-active) small{color:var(--red);font-weight:800;opacity:1}

@media (max-width:767px){.planner-filterbar{display:block;min-height:0;margin:0 0 10px}.planner-filterbar>label,.planner-filterbar>span,.planner-filterbar>.button{display:none}.planner-filterbar .week-planning-switch{display:grid;grid-template-columns:1fr 1fr;width:100%;margin:0;border-radius:999px}.planner-filterbar .week-planning-switch>button{justify-content:center;min-height:44px;padding:6px 10px}.planner-filterbar .week-planning-switch>button>span{display:grid;justify-items:center;gap:1px}.planner-filterbar .week-planning-switch strong{font-size:11px}.planner-filterbar .week-planning-switch small{font-size:8px}}

.calendar-toolbar:has(.calendar-view-menu){position:relative;z-index:9}
.calendar-view-menu{position:relative;z-index:10}
.calendar-view-menu summary{display:flex;align-items:center;gap:7px;min-height:36px;padding:0 11px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--muted);font-size:10px;cursor:pointer;list-style:none}
.calendar-view-menu summary::-webkit-details-marker{display:none}
.calendar-view-menu summary strong{color:var(--ink);font-size:11px}
.calendar-view-menu summary svg{width:13px;height:13px;margin-left:2px;transform:rotate(90deg);transition:transform .18s ease}
.calendar-view-menu[open] summary{border-color:#a9c4ec}
.calendar-view-menu[open] summary svg{transform:rotate(-90deg)}
.calendar-view-menu>div{position:absolute;top:calc(100% + 5px);left:0;display:grid;width:180px;padding:5px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 10px 26px rgba(25,45,74,.14)}
.calendar-view-menu>div>button{min-height:34px;padding:0 10px;border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:11px;font-weight:700;text-align:left}
.calendar-view-menu>div>button:hover{background:#f3f6fa;color:var(--ink)}
.calendar-view-menu>div>button.is-active{background:var(--accent-soft);color:var(--accent-dark)}
@media (max-width:767px){.calendar-view-menu{order:2;width:100%}.calendar-view-menu summary{justify-content:center;width:100%}.calendar-view-menu>div{right:0;width:auto}}

/* Calendar-first planning workspace: controls stay compact and review opens over the grid. */
.calendar-planning-stage{position:relative;display:flex;min-width:0;flex-direction:column}.calendar-planning-main{order:0;min-width:0}.calendar-planning-stage>.calendar-review-panel{order:-1}.calendar-desktop-actions{display:none}
@media (min-width:768px){
  .view-root:has(.calendar-toolbar.is-week){width:100%;max-width:none;padding-right:clamp(16px,2vw,28px);padding-left:clamp(16px,2vw,28px)}
  .calendar-lead.is-week-mobile-only{display:none}
  .calendar-toolbar.is-week{align-items:center;gap:10px}
  .calendar-toolbar.is-week .period-area{margin-left:0}
  .calendar-desktop-actions{display:flex;align-items:center;gap:7px;margin-left:auto}
  .calendar-desktop-actions .button{min-height:36px;padding:0 13px;font-size:12px;white-space:nowrap}
  .calendar-workflow{border-top:0;border-radius:0}
  .calendar-workflow+.calendar-planning-stage{margin-top:0}
  .planner-filterbar{padding-top:6px}
  .week-planner-grid,.client-week-grid{grid-template-columns:190px repeat(7,minmax(136px,1fr));min-width:1142px}
  .week-planner-head,.client-week-head{min-height:46px;padding-top:7px;padding-bottom:7px}
  .client-week-planner-desktop,.week-planner-desktop{max-height:calc(100dvh - 220px)}
  .calendar-planning-stage>.calendar-review-panel{position:absolute;top:48px;right:0;z-index:45;width:min(360px,calc(100% - 24px));max-height:calc(100dvh - 228px);margin:0;padding:14px 16px;overflow:auto;border-color:#d9a2a8;border-radius:10px;background:#fff;box-shadow:0 18px 42px rgba(21,43,78,.18);overscroll-behavior:contain}
  .calendar-review-head{gap:12px;padding-bottom:11px}
  .calendar-review-head h3{margin:5px 0 3px;font-size:17px}
  .calendar-review-head p{font-size:11px;line-height:1.4}
  .calendar-review-head>.button{flex:0 0 auto;min-height:32px;padding:0 9px;font-size:11px}
  .calendar-review-advisory{margin-top:12px}
  .calendar-review-row{grid-template-columns:24px minmax(0,1fr) auto 14px;gap:9px;min-height:55px;padding:8px 1px}
  .calendar-review-row strong{font-size:11px;line-height:1.3}
  .calendar-review-row small{font-size:9px}
  .review-row-icon{width:21px;height:21px;font-size:9px}
  .calendar-review-row>svg{width:14px;height:14px}
  .calendar-planning-stage>.calendar-review-panel.is-clear{align-items:flex-start;flex-direction:column;width:min(330px,calc(100% - 24px));padding-right:54px}
}
@media (min-width:768px) and (max-width:1100px){
  .calendar-desktop-actions{width:100%;justify-content:flex-end;margin-left:0}
  .calendar-planning-stage>.calendar-review-panel{top:48px}
  .client-week-planner-desktop,.week-planner-desktop{max-height:calc(100dvh - 266px)}
}

/* Käyntidetalji: työkalumainen desktop-asettelu, mobiilissa rauhallinen yksi sarake. */
@media (min-width:768px){
  .dialog:has(.manager-shift-detail){width:min(920px,calc(100% - 30px))}
  .dialog-surface:has(.manager-shift-detail){padding:23px 26px}
  .dialog-surface:has(.manager-shift-detail) .dialog-head{margin-bottom:16px;padding-bottom:15px}
  .dialog-surface:has(.manager-shift-detail) .dialog-head h2{font-size:22px}
  .manager-shift-detail{gap:16px}
  .manager-shift-detail .detail-badges{gap:8px}
  .shift-detail-layout{
    display:grid;
    grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
    align-items:start;
    gap:28px;
  }
  .shift-detail-layout.is-single{grid-template-columns:1fr}
  .shift-detail-primary,.shift-detail-context{display:grid;min-width:0;align-content:start}
  .shift-detail-context{padding-left:28px;border-left:1px solid var(--line)}
  .manager-shift-detail .detail-line,
  .manager-shift-detail .detail-stat{min-height:74px;padding-top:12px;padding-bottom:12px}
  .manager-shift-detail .detail-address.detail-edit-row{min-height:44px;padding:10px 1px}
  .manager-shift-detail .instruction-box.detail-edit-row,
  .manager-shift-detail .series-summary.detail-edit-row{padding-top:11px;padding-bottom:11px}
  .manager-shift-detail .warning-strip{margin:0;padding:11px 1px}
  .manager-shift-detail .shift-actions{gap:7px;padding-top:14px}
  .manager-shift-detail .shift-actions .button{min-height:38px;padding:8px 11px;font-size:11px}
}

@media (max-width:767px){
  .shift-detail-layout{display:grid;grid-template-columns:1fr;gap:16px}
  .shift-detail-primary,.shift-detail-context{display:grid;min-width:0}
  .manager-shift-detail{gap:17px}
  .manager-shift-detail .shift-actions{padding-top:10px}
}

/* Pohjat ja asiakirjat */
.documents-view{max-width:1120px;margin:0 auto}.documents-lead{margin-bottom:18px}.documents-lead .eyebrow{margin:0 0 7px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.document-boundary{display:flex;align-items:flex-start;gap:12px;margin:0 0 22px;padding:14px 16px;border-left:4px solid var(--accent);background:#f3f7fc;color:var(--ink)}.document-boundary>svg{flex:0 0 auto;width:19px;height:19px;margin-top:1px;color:var(--accent)}.document-boundary>span{display:grid;gap:4px}.document-boundary strong{font-size:13px}.document-boundary small{color:var(--muted);font-size:11px;line-height:1.45}.document-tabs{width:max-content;max-width:100%;margin-bottom:20px}.document-tabs button{white-space:nowrap}.document-week-control{display:flex;align-items:center;gap:12px;margin-bottom:22px;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}.document-week-control>span{display:grid;min-width:155px}.document-week-control small{color:var(--muted);font-size:9px;font-weight:700;text-transform:uppercase}.document-week-control strong{margin-top:2px;color:var(--accent-dark);font-size:15px}.document-week-control b{margin-top:1px;color:var(--muted);font-size:10px;font-weight:600}.document-week-control .button{margin-left:auto}.document-template-section{border-top:1px solid var(--ink)}.document-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:19px 0 14px}.document-section-head h2{margin:0;font-size:21px}.document-section-head p{max-width:640px;margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.document-section-head>span{color:var(--muted);font-size:11px;font-weight:700}.document-template-list{border-bottom:1px solid var(--line)}.document-template-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:15px;min-height:91px;padding:14px 2px;border-top:1px solid var(--line)}.document-template-row:first-child{border-top:0}.document-template-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:9px;background:#eef4fb;color:var(--accent-dark)}.document-template-icon svg{width:19px;height:19px}.document-template-copy{min-width:0}.document-template-copy h3{margin:0;font-size:14px}.document-template-copy p{max-width:690px;margin:4px 0;color:var(--muted);font-size:12px;line-height:1.4}.document-template-copy small{color:var(--accent-dark);font-size:9px;font-weight:700}.document-process{display:grid;grid-template-columns:repeat(3,1fr);margin:0 0 22px;border:1px solid var(--line);background:#fff}.document-process>div{display:grid;grid-template-columns:28px 1fr;gap:10px;min-height:92px;padding:16px;border-right:1px solid var(--line)}.document-process>div:last-child{border-right:0}.document-process>div>span{display:grid;place-items:center;align-self:start;width:28px;height:28px;border-radius:50%;background:var(--accent);color:#fff;font-size:11px;font-weight:800}.document-process p{display:grid;gap:4px;margin:0}.document-process strong{font-size:12px}.document-process small{color:var(--muted);font-size:10px;line-height:1.4}.official-document-section{margin-top:38px;border-top:1px solid var(--ink)}.official-document-list{border-bottom:1px solid var(--line)}.official-document-list>a{display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:center;gap:14px;min-height:72px;padding:12px 2px;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.official-document-list>a:first-child{border-top:0}.official-document-list>a:hover strong{color:var(--accent-dark)}.official-document-list>a>span{display:grid;gap:4px}.official-document-list strong{font-size:13px}.official-document-list small{color:var(--muted);font-size:11px;line-height:1.4}.official-document-list svg{width:17px;height:17px;color:var(--accent)}

@media (max-width:767px){.app-shell:not(.is-employee) .mobile-nav .nav-button{font-size:7px}.app-shell:not(.is-employee) .mobile-nav .nav-button svg{width:17px;height:17px}.documents-view{max-width:none}.document-tabs{display:grid;grid-template-columns:1fr;width:100%}.document-tabs button{justify-content:flex-start;text-align:left}.document-week-control{display:grid;grid-template-columns:38px minmax(0,1fr) 38px;gap:8px}.document-week-control>span{text-align:center}.document-week-control .button{grid-column:1/-1;width:100%;margin-left:0}.document-template-row{grid-template-columns:34px minmax(0,1fr);align-items:start;gap:11px;padding:15px 1px}.document-template-icon{width:34px;height:34px}.document-template-row>.button{grid-column:2;width:100%;margin-top:5px}.document-section-head{align-items:flex-start}.document-process{grid-template-columns:1fr}.document-process>div{min-height:0;border-right:0;border-bottom:1px solid var(--line)}.document-process>div:last-child{border-bottom:0}.official-document-list>a{padding:14px 1px}}

/* Planning context and visit-level worker information */
.planning-month-control{position:relative;display:flex;align-items:center;gap:8px;min-height:38px;padding:0 9px;border:1px solid var(--line);border-radius:7px;background:#fff;cursor:pointer;user-select:none}.planning-month-control span{color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.planning-month-control>strong{min-width:94px;color:var(--ink);font-size:12px;text-transform:capitalize}.planning-month-control>svg{width:16px;height:16px;color:var(--accent-dark)}.planning-month-control input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;cursor:pointer}.planning-month-control:focus-within{outline:2px solid var(--accent);outline-offset:2px}.worker-contact-actions{display:flex;flex-wrap:wrap;gap:8px}.worker-contact-actions .button{margin:0}.instruction-box strong{display:block;margin-bottom:5px;font-size:12px}.instruction-box p{margin:0;white-space:pre-wrap}.visit-instruction{border-left:3px solid var(--accent);background:#f4f8ff}.employee-recommendation-note{display:grid;grid-template-columns:minmax(0,1fr);gap:3px;margin-top:-4px;border-left:3px solid var(--green);background:#f1f8f4}.employee-recommendation-note strong{font-size:12px}.employee-recommendation-note span{color:var(--muted);font-size:11px}.recurrence-summary{margin-top:-4px}
.week-planner-person,.week-planner-cell{min-height:106px}
@media(max-width:767px){.planning-month-control{order:0;flex:1 1 100%;justify-content:flex-start}.planning-month-control>svg{margin-left:auto}.period-area{order:1}.calendar-toolbar .calendar-view-menu{order:2}}
@media(max-width:767px){.client-detail-head{grid-template-columns:46px minmax(0,1fr)}.client-detail-head>.status-pill{grid-column:2;justify-self:start}.client-service-notice{align-items:flex-start;flex-direction:column}.client-service-notice .button{width:100%}}
@media(max-width:767px){.client-directory-summary{margin-bottom:12px}.client-actions{grid-template-columns:1fr}.client-profile-notice{align-items:flex-start;flex-direction:column}.client-profile-notice .button{width:100%}.client-next-visit{align-items:flex-start;padding:15px 13px}.client-next-visit b{font-size:0}.client-next-visit b svg{width:18px;height:18px}.client-metrics{grid-template-columns:1fr 1fr}.client-metrics>div{padding:14px 12px}.client-metrics>div:first-child{padding-left:1px}.client-metrics>div:nth-child(2){padding-right:1px;border-right:0}.client-metrics>div:last-child{grid-column:1/-1;padding-left:1px;border-top:1px solid var(--line)}.client-visits-head{align-items:flex-start}.client-month-controls{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;width:100%}.client-month-picker input{width:100%}.client-month-controls>.button{grid-column:1/-1;width:100%}.client-instructions{grid-template-columns:1fr}.client-instructions>div{min-height:0;padding:15px 1px;border-right:0}.client-instructions>div+div{padding:15px 1px;border-top:1px solid var(--line)}}
@media(min-width:768px){.client-directory{grid-template-rows:auto auto minmax(0,1fr)}}
@media(max-width:767px){.client-editor-actions{margin-right:-18px;margin-left:-18px;padding-right:18px;padding-bottom:max(15px,env(safe-area-inset-bottom));padding-left:18px}}

/* Työntekijän vuorohistoria ja viimeistelty profiili */
.worker-history{margin-top:30px}.worker-history .section-heading{align-items:flex-end}.worker-history .section-heading>div{display:grid;gap:3px}.worker-history .section-heading .eyebrow{margin:0;color:var(--accent-dark);font-size:9px;letter-spacing:.07em}.worker-history .section-heading h2{margin:0;font-size:22px}.worker-history-list{border-top:1px solid var(--ink)}.worker-history-row{display:grid;grid-template-columns:82px minmax(0,1fr) 18px;align-items:center;gap:13px;width:100%;min-height:76px;padding:12px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left}.worker-history-row:active{transform:scale(.985)}.worker-history-row time,.worker-history-row>span{display:grid;gap:4px;min-width:0}.worker-history-row time strong{font-size:13px}.worker-history-row time small,.worker-history-row>span>small{color:var(--muted);font-size:10px}.worker-history-row>span>strong{overflow:hidden;text-overflow:ellipsis;font-size:13px;white-space:nowrap}.worker-history-row>svg{width:16px;height:16px;color:var(--faint)}.worker-history-status{justify-self:start;padding:3px 7px;border-radius:999px;background:#edf1f5;color:#5e6672!important;font-weight:750}.worker-history-status.is-needs-action{background:#fff1df;color:#945b11!important}.worker-history-status.is-pending{background:#edf4fc;color:var(--accent-dark)!important}.worker-history-status.is-approved{background:#edf7f2;color:#237454!important}.worker-primary-actions.is-secondary{margin-top:28px}.worker-profile-identity{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:22px;margin-bottom:28px;padding-bottom:26px;border-bottom:1px solid var(--ink)}.worker-profile-identity h2{margin:3px 0 0;color:var(--reference-header);font-size:34px;letter-spacing:-.045em}.worker-profile-identity p:last-child{margin:7px 0 0;color:var(--muted)}.worker-profile-photo{display:grid;justify-items:center;gap:8px}.worker-profile-avatar{display:grid;place-items:center;width:96px;height:96px;border:3px solid #fff;border-radius:50%;background:#e9f1fa;color:var(--reference-header);box-shadow:0 8px 20px rgba(0,70,173,.14);font-size:24px;font-weight:850;overflow:hidden}.worker-profile-photo>button{min-height:30px;padding:2px 9px;border:0;background:transparent;color:var(--accent-dark);font-size:11px;font-weight:800}.worker-profile-section,.worker-account-section{margin-top:16px;padding:20px;border:1px solid #d9e3f3;border-radius:14px;background:#fff}.worker-profile-section-head,.worker-profile-actions>div,.worker-account-section>div:first-child{display:grid;gap:4px;margin-bottom:14px}.worker-profile-section h3,.worker-profile-actions h3,.worker-account-section h3{margin:0;font-size:18px}.worker-profile-help{margin:12px 0 0;color:var(--muted);font-size:11px}.worker-account-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.65fr);gap:24px;align-items:start}.worker-account-section p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.worker-account-actions{display:grid;gap:8px}.profile-photo-preview{display:grid;justify-items:center;gap:13px;padding:10px 0 18px}.profile-photo-preview img{width:160px;height:160px;border-radius:50%;object-fit:cover;box-shadow:0 10px 28px rgba(0,70,173,.16)}.profile-photo-preview p{margin:0;color:var(--muted);font-size:12px;text-align:center}
@media(max-width:767px){.app-shell.is-employee .worker-history{margin-top:25px;padding:18px 17px;border:1px solid #d9e3f3;border-radius:13px;background:#fff}.app-shell.is-employee .worker-history-row{grid-template-columns:72px minmax(0,1fr) 16px;min-height:70px}.app-shell.is-employee .worker-profile-identity{grid-template-columns:94px minmax(0,1fr);gap:17px;margin-bottom:20px;padding:4px 1px 22px}.app-shell.is-employee .worker-profile-avatar{width:84px;height:84px;font-size:21px}.app-shell.is-employee .worker-profile-identity h2{font-size:29px}.app-shell.is-employee .worker-profile-section{margin-top:0;padding:17px}.app-shell.is-employee .worker-profile-actions{margin-top:14px}.app-shell.is-employee .worker-account-section{grid-template-columns:1fr;gap:5px;padding:17px}.app-shell.is-employee .worker-account-actions{margin-top:8px}.app-shell.is-employee .worker-account-actions .button{width:100%;min-height:46px}.app-shell.is-employee .worker-profile-view .profile-detail{padding-right:0;padding-left:0}.app-shell.is-employee .worker-primary-actions.is-secondary{margin-top:20px}}

/* Työntekijän profiili: tiedot luetaan yhtenä rauhallisena riviryhmänä, ei korttina kortin sisällä. */
.worker-profile-avatar,.profile-photo-preview img{box-shadow:none}
.app-shell.is-employee .worker-profile-avatar-empty{position:relative;display:block;overflow:visible;box-sizing:border-box;border-radius:50%;background:#eef1f4;color:#8f969e}
.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-person{position:absolute;inset:0;display:grid;place-items:center;border-radius:50%}
.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-person svg{width:40px;height:40px;stroke-width:1.7}
.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-add{position:absolute;right:-1px;bottom:-1px;display:grid;place-items:center;box-sizing:border-box;width:27px;height:27px;border:3px solid var(--paper);border-radius:50%;background:#9299a1;color:#fff}
.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-add svg{width:14px;height:14px;stroke-width:2.4}
@media(min-width:768px){.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-person svg{width:44px;height:44px}.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-add{width:30px;height:30px}.app-shell.is-employee .worker-profile-avatar-empty .worker-profile-placeholder-add svg{width:16px;height:16px}}
.worker-profile-section{margin-top:0;padding:0;border:0;border-radius:0;background:transparent}
.worker-profile-section-head{margin-bottom:12px}
.worker-profile-view .profile-details{border:0;border-top:1px solid #dfe2e6;border-bottom:1px solid #dfe2e6;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
.worker-profile-view .profile-detail{padding:16px 0;border-color:#e7e9ec}
.worker-profile-view .profile-detail:last-child{border-bottom:0}
.worker-profile-actions{max-width:none;margin-top:24px;padding:20px 0;border:0;border-top:1px solid #dfe2e6;border-bottom:1px solid #dfe2e6;border-radius:0;background:transparent;box-shadow:none}
.worker-account-section{border-color:#dfe2e6;box-shadow:none}
@media(max-width:767px){.app-shell.is-employee .worker-profile-section{margin-top:0;padding:0}.app-shell.is-employee .worker-profile-actions{margin-top:24px;padding:20px 0}.app-shell.is-employee .worker-account-section{padding:17px;border-color:#dfe2e6}.app-shell.is-employee .worker-profile-view .profile-detail{padding:16px 0}}
.worker-push-section{display:grid;margin-top:24px;padding:20px 0;border-top:1px solid #dfe2e6;border-bottom:1px solid #dfe2e6;background:transparent}.worker-push-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.worker-push-heading h3{margin:3px 0 0;font-size:18px}.worker-push-state{flex:0 0 auto;margin:0;color:var(--muted);font-size:11px;font-weight:650}.worker-push-intro{max-width:620px;margin:13px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.worker-push-options{display:grid;margin-top:14px;border-top:1px solid #e1e4e8}.worker-push-toggle{display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:center;gap:16px;min-height:62px;padding:10px 1px;border-bottom:1px solid #e7e9ec;cursor:pointer}.worker-push-toggle span{display:grid;gap:3px}.worker-push-toggle strong{font-size:13px}.worker-push-toggle small{color:var(--muted);font-size:11px;line-height:1.4}.worker-push-toggle input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.worker-push-help,.worker-push-local-note,.worker-push-warning{margin:10px 0 0;color:var(--muted);font-size:10px;line-height:1.45}.worker-push-local-note{margin-top:7px}.worker-push-warning{color:var(--red)}.worker-push-enable{justify-self:start;min-height:42px;margin-top:15px}.worker-push-disable{justify-self:start;margin-top:13px;padding:0;border:0;background:transparent;color:var(--muted);font-size:11px;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.worker-push-disable:hover{color:var(--ink)}.worker-push-disable:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
@media(max-width:767px){.worker-push-section{padding:20px 0}.worker-push-heading{align-items:flex-start}.worker-push-state{padding-top:3px}.worker-push-enable{width:100%;min-height:46px}.worker-push-toggle{min-height:66px}}

/* VAIHE 3: kalenteri alkaa suoraan työpinnasta; viikon ohjaus kuuluu desktopilla siniseen sovelluspalkkiin. */
.calendar-header-controls[hidden]{display:none}
.calendar-command-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;margin:0 0 10px;border:1px solid #dfe2e1;border-radius:8px;background:#fff;box-shadow:0 4px 8px rgba(33,35,34,.05)}
.calendar-stage-controls{display:flex;align-self:stretch;min-width:0}.calendar-stage-controls>button{display:grid;align-content:center;gap:2px;min-width:122px;padding:8px 14px;border:0;border-right:1px solid #dfe2e1;background:#fff;color:#636968;text-align:left}.calendar-stage-controls>button:first-child{border-radius:8px 0 0 8px}.calendar-stage-controls>button:last-child{border-right:0}.calendar-stage-controls>button:hover:not(:disabled){background:#f6f6f6;color:#212322}.calendar-stage-controls>button:focus-visible{position:relative;z-index:1;outline:2px solid #0046ad;outline-offset:-2px}.calendar-stage-controls>button.is-active{background:#edf4ff;color:#0046ad;box-shadow:inset 0 -3px 0 #0046ad}.calendar-stage-controls>button.has-attention strong{color:#a23d31}.calendar-stage-controls>button.is-blocked strong{color:#a23d31}.calendar-stage-controls strong{font-size:12px;line-height:1.25}.calendar-stage-controls small{color:inherit;font-size:9px;font-weight:650;line-height:1.25}.calendar-command-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px;padding:8px}.calendar-command-actions .button{min-height:36px;padding:0 12px;font-size:12px}.calendar-command-actions .button.primary{border-color:#0046ad;background:#0046ad}.calendar-command-actions .button.primary:hover{border-color:#003d97;background:#003d97}.calendar-command-actions .button.secondary{border-color:#bfd1ed;color:#0046ad}.calendar-command-actions .button.ghost{color:#0046ad}.calendar-mobile-controls{display:none}

@media (min-width:768px){
  .app-shell.is-calendar-manager{--app-header:60px}
  .app-shell.is-calendar-manager .header-context{display:flex;align-items:center;gap:16px;padding:0 18px}
  .app-shell.is-calendar-manager .header-context>#pageTitle,.app-shell.is-calendar-manager .header-context>#pageEyebrow{display:none}
  .calendar-header-controls{display:grid;grid-template-columns:340px auto minmax(0,1fr);align-items:center;gap:12px;min-width:0;width:100%}
  .calendar-header-period{display:flex;align-items:center;gap:7px;min-width:0}
  .calendar-header-period .icon-button{flex:0 0 34px;width:34px;height:34px;border-color:rgba(255,255,255,.35);background:transparent;color:#fff}.calendar-header-period .icon-button:hover{background:rgba(255,255,255,.12)}
  .calendar-header-week{display:grid;grid-template-columns:auto minmax(0,1fr);flex:0 0 164px;min-width:164px;gap:0 7px;color:#fff;line-height:1.15}.calendar-header-week small{grid-column:1;grid-row:1;color:rgba(255,255,255,.7);font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.calendar-header-week strong{grid-column:1/-1;grid-row:2;font-size:17px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}.calendar-header-week b{grid-column:2;grid-row:1;align-self:end;color:rgba(255,255,255,.78);font-size:9px;font-weight:650;letter-spacing:0;white-space:nowrap}
  .calendar-header-period.is-month .calendar-header-week{flex-basis:164px;min-width:164px}
  .calendar-header-month-picker{position:relative;cursor:pointer}.calendar-header-month-picker strong{text-transform:capitalize;white-space:nowrap}.calendar-header-month-picker input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.calendar-header-month-picker:focus-within{outline:2px solid #fff;outline-offset:3px}
  .calendar-header-today{flex:0 0 auto;min-height:34px;padding:0 10px;border:1px solid rgba(255,255,255,.42);border-radius:6px;background:#fff;color:#0046ad;font-size:11px;font-weight:800}.calendar-header-today:hover{background:#edf4ff}.calendar-header-today:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .calendar-scope-switch{display:grid;grid-template-columns:1fr 1fr;flex:0 0 auto;padding:3px;border:1px solid rgba(255,255,255,.34);border-radius:7px;background:rgba(0,35,96,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.calendar-scope-switch button{min-height:30px;padding:0 11px;border:0;border-radius:4px;background:transparent;color:rgba(255,255,255,.8);font-size:11px;font-weight:650;white-space:nowrap;transition:background .16s ease,color .16s ease,transform .16s ease}.calendar-scope-switch button:hover{color:#fff;background:rgba(255,255,255,.08)}.calendar-scope-switch button:active{transform:translateY(1px)}.calendar-scope-switch button:focus-visible{outline:2px solid #fff;outline-offset:2px}.calendar-scope-switch button.is-active{background:#fff;color:#0046ad;box-shadow:0 1px 2px rgba(0,32,84,.18)}
  .calendar-header-view-actions{display:flex;align-items:center;justify-self:end;gap:8px;min-width:0}.calendar-header-current,.calendar-header-print,.calendar-header-exit{display:inline-flex;align-items:center;justify-content:center;min-height:36px;border:1px solid rgba(255,255,255,.42);border-radius:6px;background:transparent;color:#fff}.calendar-header-current{width:36px;padding:0}.calendar-header-current svg{width:15px;height:15px}.calendar-header-print,.calendar-header-exit{gap:6px;padding:0 10px;font-size:10px;font-weight:750;white-space:nowrap}.calendar-header-print svg,.calendar-header-exit svg{width:14px;height:14px}.calendar-header-current:hover,.calendar-header-print:hover,.calendar-header-exit:hover{background:rgba(255,255,255,.12)}.calendar-header-current:active,.calendar-header-print:active,.calendar-header-exit:active{transform:translateY(1px)}.calendar-header-current:focus-visible,.calendar-header-print:focus-visible,.calendar-header-exit:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .calendar-header-month{position:relative;display:flex;align-items:center;gap:6px;min-height:34px;margin-left:auto;padding:0 8px;border:1px solid rgba(255,255,255,.35);border-radius:6px;color:#fff;cursor:pointer}.calendar-header-month span{color:rgba(255,255,255,.72);font-size:9px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.calendar-header-month strong{font-size:11px;font-weight:700;text-transform:capitalize;white-space:nowrap}.calendar-header-month svg{width:14px;height:14px}.calendar-header-month input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.calendar-header-month:focus-within{outline:2px solid #fff;outline-offset:2px}
  .calendar-mobile-controls{display:none}.view-root:has(.calendar-command-bar){padding-top:16px;padding-bottom:24px}.calendar-planning-stage>.calendar-review-panel{top:56px}
  .planner-filterbar .week-planning-switch>button.is-active{background:#0046ad}.planner-filterbar .week-planning-switch .has-work:not(.is-active) small{color:#a23d31}
}

@media (min-width:1101px) and (max-width:1400px){
  .calendar-scope-switch{grid-template-columns:auto auto}.calendar-scope-switch button{padding-right:2px;padding-left:2px;font-size:10px}
  .calendar-header-month span{display:none}
  .calendar-header-print,.calendar-header-exit{padding-right:8px;padding-left:8px}
}

@media (min-width:768px) and (max-width:1100px){
  .app-shell.is-calendar-manager{--app-header:108px}
  .app-shell.is-calendar-manager .header-context{align-self:stretch;padding:8px 10px}
  .calendar-header-controls{grid-template-columns:auto minmax(220px,1fr);align-content:center;gap:5px 10px}
  .calendar-header-period{gap:6px}.calendar-header-week,.calendar-header-period.is-month .calendar-header-week{flex-basis:118px;min-width:118px}.calendar-header-week small,.calendar-header-week b{display:none}.calendar-header-week strong{font-size:15px}.calendar-header-month{grid-column:1/-1;justify-self:end;margin-left:0}.calendar-header-month span{display:none}.calendar-header-month strong{font-size:10px}
  .calendar-scope-switch{grid-template-columns:auto auto;justify-self:end}.calendar-scope-switch button{padding:0 4px;font-size:10px}.calendar-header-view-actions{grid-column:2;justify-self:end}.calendar-header-print span,.calendar-header-exit span{display:none}.calendar-header-print,.calendar-header-exit{width:36px;padding:0}
  .calendar-command-bar{align-items:stretch;flex-direction:column;gap:0}.calendar-stage-controls>button{flex:1;min-width:0}.calendar-command-actions{justify-content:flex-start;border-top:1px solid #dfe2e1}
}

@media (min-width:768px) and (max-width:850px){
  .app-shell.is-calendar-manager{--app-header:128px}
  .calendar-header-controls{grid-template-columns:minmax(0,1fr);gap:4px}
  .calendar-header-period,.calendar-scope-switch{grid-column:1}
  .calendar-scope-switch{justify-self:start}
  .calendar-header-view-actions{grid-column:1;grid-row:2;justify-self:end}
  .calendar-header-month{grid-column:1;justify-self:end}
}

@media (max-width:767px){
  .calendar-mobile-controls{position:relative;z-index:20;display:block}.calendar-command-bar{align-items:stretch;flex-direction:column;gap:0;margin:0 0 14px;border-right:0;border-left:0;border-radius:0;box-shadow:none}.calendar-stage-controls>button{min-width:0;flex:1;padding:9px 7px;text-align:center}.calendar-stage-controls>button:first-child{border-radius:0}.calendar-stage-controls strong{font-size:10px}.calendar-stage-controls small{font-size:8px}.calendar-command-actions{display:grid;grid-template-columns:1fr 1fr;padding:9px 0}.calendar-command-actions .button{width:100%;min-width:0;padding:0 8px}.calendar-command-actions .button.ghost{grid-column:1/-1}
}

/* Viikkokalenterin desktop-rakenne ja 1024px:n rauhallinen suodatusrakenne. */
@media (min-width:768px){
  .calendar-header-week strong{font-size:21px;font-weight:700;letter-spacing:0;line-height:1.18;opacity:1;transform:none}
  .calendar-header-week b{color:#fff;font-size:9px;line-height:1.15;opacity:.82}
  .calendar-stage-controls>button:disabled{opacity:1;background:#f6f6f6;color:#66706e;cursor:not-allowed}
  .calendar-stage-controls>button:disabled strong{color:#4d5755}
  .calendar-stage-controls>button:disabled small{color:#66706e}
}
@media (min-width:768px) and (max-width:1100px){
  .calendar-header-week strong{font-size:18px}
  .calendar-header-week b{font-size:9px}
  .planner-filterbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding-top:8px}
  .planner-filterbar .week-planning-switch{grid-column:1;grid-row:1;min-width:0}
  .planner-filterbar>.planner-search{grid-column:1/-1;grid-row:2;width:100%}
  .planner-filterbar>.planner-search input{width:100%}
  .planner-filterbar>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .planner-filterbar>[data-toggle-planner-employees],.planner-filterbar>[data-toggle-planner-clients]{grid-column:2;grid-row:1;min-height:36px;margin:0;white-space:nowrap}
}
.app-shell.is-employee .worker-profile-avatar,.app-shell.is-employee .profile-photo-preview img{box-shadow:none}
.app-shell.is-employee .worker-profile-view .profile-details{border:0;border-top:1px solid #dfe2e6;border-bottom:1px solid #dfe2e6;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
.app-shell.is-employee .worker-profile-actions{max-width:none;margin-top:24px;padding:20px 0;border:0;border-top:1px solid #dfe2e6;border-bottom:1px solid #dfe2e6;border-radius:0;background:transparent;box-shadow:none}
@media(max-width:767px){.app-shell.is-employee .mobile-nav{background:#fff;box-shadow:0 -4px 14px rgba(33,35,34,.08)}}

/* Kuukausi on kalenterin koko leveä työtila. Sovelluspalkki säilyy, mutta sivupalkin tila annetaan matriisille. */
body.calendar-month-review-open{--calendar-month-header-height:60px;overflow:hidden}
.calendar-month-review{position:fixed;z-index:19;top:var(--calendar-month-header-height);right:0;bottom:0;left:0;display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;background:#fff;color:#212322}
.calendar-month-review[hidden]{display:none}
.month-review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:46px;padding:6px 16px;border-bottom:1px solid #dfe2e1;background:#fff}
.month-review-scope-switch{display:grid;grid-template-columns:1fr 1fr;flex:0 0 auto;padding:3px;border:1px solid #cdd5d4;border-radius:7px;background:#f6f8f8}.month-review-scope-switch button{min-height:28px;padding:0 13px;border:0;border-radius:4px;background:transparent;color:#4f5957;font-size:10px;font-weight:650;white-space:nowrap;transition:background .14s ease,color .14s ease,transform .14s ease}.month-review-scope-switch button:hover{background:#e9efee;color:#212322}.month-review-scope-switch button:active{transform:translateY(1px)}.month-review-scope-switch button:focus-visible{position:relative;z-index:1;outline:2px solid #0046ad;outline-offset:2px}.month-review-scope-switch button.is-active{background:#fff;color:#0046ad;box-shadow:0 1px 2px rgba(33,35,34,.12)}
.month-review-main{display:grid;min-height:0;background:#f6f6f6}.month-review-summary{margin:0;color:#636968;font-size:10px;font-weight:700;text-align:right}.month-review-summary.is-empty{color:#636968}
.month-review-matrix{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-color:#8397b5 #edf2f8;outline:0}.month-review-matrix:focus-visible{outline:2px solid #0046ad;outline-offset:-2px}.month-review-matrix::-webkit-scrollbar{width:10px;height:10px}.month-review-matrix::-webkit-scrollbar-track{background:#edf2f8}.month-review-matrix::-webkit-scrollbar-thumb{border:2px solid #edf2f8;border-radius:10px;background:#8397b5}
.month-review-grid{display:grid;background:#fff}.month-review-grid.days-28{grid-template-columns:216px repeat(28,minmax(38px,1fr));min-width:1280px}.month-review-grid.days-29{grid-template-columns:216px repeat(29,minmax(38px,1fr));min-width:1318px}.month-review-grid.days-30{grid-template-columns:216px repeat(30,minmax(38px,1fr));min-width:1356px}.month-review-grid.days-31{grid-template-columns:216px repeat(31,minmax(38px,1fr));min-width:1394px}.month-review-corner{position:sticky;top:0;left:0;z-index:4;display:grid;align-content:center;gap:2px;grid-row:1 / span 2;min-height:51px;padding:6px 12px;border-right:1px solid #dfe2e1;border-bottom:1px solid #212322;background:#fff}.month-review-corner strong{font-size:11px}.month-review-corner small{color:#636968;font-size:9px}
.month-review-week{position:sticky;top:0;z-index:3;display:grid;align-content:center;min-height:25px;padding:0 7px;border-right:1px solid #dfe2e1;border-bottom:1px solid #dfe2e1;background:#f6f6f6;color:#0046ad}.month-review-week.span-1{grid-column:span 1}.month-review-week.span-2{grid-column:span 2}.month-review-week.span-3{grid-column:span 3}.month-review-week.span-4{grid-column:span 4}.month-review-week.span-5{grid-column:span 5}.month-review-week.span-6{grid-column:span 6}.month-review-week.span-7{grid-column:span 7}.month-review-week span{font-size:9px;font-weight:700;letter-spacing:.035em;white-space:nowrap}.month-review-day{position:sticky;top:25px;z-index:3;display:grid;align-content:center;justify-items:center;min-height:26px;padding:2px 0;border-right:1px solid #dfe2e1;border-bottom:1px solid #212322;background:#fff;color:#636968}.month-review-day span{font-size:8px;font-weight:650;text-transform:uppercase}.month-review-day strong{font-size:11px;font-weight:700;line-height:1}.month-review-day.is-weekend,.month-review-cell.is-weekend{background:#fafafa}.month-review-day.is-today,.month-review-cell.is-today{background:#edf4ff}.month-review-day.is-today strong{color:#0046ad}
.month-review-person{position:sticky;left:0;z-index:2;display:grid;align-content:center;min-height:48px;padding:7px 12px;border-right:1px solid #dfe2e1;border-bottom:1px solid #dfe2e1;background:#fff}.month-review-person>span{display:grid;gap:2px;min-width:0}.month-review-person strong{overflow:hidden;font-size:11px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.month-review-person small{color:#636968;font-size:9px;font-weight:500;font-variant-numeric:tabular-nums}.month-review-person.is-unassigned{border-left:3px solid #a23d31;background:#fffafa}.month-review-person.is-unassigned strong,.month-review-person.is-unassigned small{color:#8b3027}
.month-review-person.is-inactive{background:#fafafa}.month-review-person.is-inactive strong{color:#636968}
.month-review-person.is-missing{border-left:3px solid #a23d31;background:#fffafa}.month-review-person.is-missing strong,.month-review-person.is-missing small{color:#8b3027}
.month-review-cell{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:3px;min-height:48px;padding:4px 3px;border-right:1px solid #eceeec;border-bottom:1px solid #dfe2e1}.month-review-add{position:absolute;z-index:0;inset:0;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#0046ad;cursor:copy}.month-review-add>span{display:grid;place-items:center;width:24px;height:24px;border:1px solid #b8c9e2;border-radius:50%;background:#fff;opacity:0;transform:scale(.9);transition:opacity .16s ease,transform .16s ease}.month-review-add svg{width:13px;height:13px;stroke-width:2}.month-review-cell:hover>.month-review-add>span,.month-review-add:focus-visible>span{opacity:1;transform:scale(1)}.month-review-add:focus-visible{outline:2px solid #0046ad;outline-offset:-3px}.month-review-add.is-hotspot{position:relative;inset:auto;z-index:1;flex:0 0 14px;min-width:0;min-height:14px;margin-top:auto;border-radius:2px;cursor:copy}.month-review-add.is-hotspot>span{width:12px;height:12px;border:0;background:transparent;transform:none}.month-review-add.is-hotspot svg{width:10px;height:10px;stroke-width:2}.month-review-cell:hover>.month-review-add.is-hotspot>span,.month-review-add.is-hotspot:focus-visible>span{opacity:.72;transform:none}.month-review-add.is-hotspot:hover,.month-review-add.is-hotspot:focus-visible{background:rgba(0,70,173,.06)}.month-review-add.is-hotspot:focus-visible{outline-offset:0}.month-review-shift{position:relative;z-index:1;display:grid;gap:1px;min-width:0;padding:2px 1px 2px 4px;border:0;border-left:4px solid #8397b5;background:transparent;color:#212322;text-align:left}.month-review-shift:hover{background:#f1f4f8}.month-review-shift:focus-visible{z-index:2;outline:2px solid #0046ad;outline-offset:1px}.month-review-shift:active{transform:translateY(1px)}.month-review-shift time{overflow:visible;font-size:9px;font-weight:700;letter-spacing:0;line-height:1.1;text-overflow:clip;white-space:nowrap}.month-review-shift span{display:none;overflow:hidden;color:#636968;font-size:8px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.month-review-shift.is-draft{border-left-color:#9f7217}.month-review-shift.is-published{border-left-color:#237454}.month-review-shift.is-warning{border-left-color:#a23d31;color:#8b3027}
.month-review-cell.has-unavailable{background:#fff4f3}.month-review-cell.has-availability-conflict{box-shadow:inset 0 0 0 1px #a23d31}.month-review-availability{position:relative;z-index:1;align-self:flex-start;max-width:100%;min-height:14px;padding:1px 2px;border:0;border-radius:2px;background:transparent;overflow:hidden;color:#8b3027;font:inherit;font-size:8px;font-weight:750;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.month-review-availability:hover{background:#f4dedd}.month-review-availability:focus-visible{outline:2px solid #0046ad;outline-offset:1px}.month-review-cell.has-availability-conflict>.month-review-availability{background:#a23d31;color:#fff}.month-review-cell.has-availability-conflict>.month-review-availability:hover{background:#872f26}
.month-review-matrix.is-range-selecting{cursor:crosshair;user-select:none}.month-review-cell.is-range-selected{z-index:2;background:#dceaff;box-shadow:inset 0 2px #1464d2,inset 0 -2px #1464d2}.month-review-cell.is-range-selected.is-range-start{box-shadow:inset 2px 0 #1464d2,inset 0 2px #1464d2,inset 0 -2px #1464d2}.month-review-cell.is-range-selected.is-range-end{box-shadow:inset -2px 0 #1464d2,inset 0 2px #1464d2,inset 0 -2px #1464d2}.month-review-cell.is-range-selected.is-range-start.is-range-end{box-shadow:inset 0 0 0 2px #1464d2}.month-review-range-popover .month-review-cell-popover-head small{text-transform:none}
.month-review-shift-popover,.month-review-cell-popover{position:fixed;z-index:74;top:0;left:0;display:grid;width:min(286px,calc(100vw - 16px));border:1px solid #cfd7e1;border-radius:9px;background:#fff;box-shadow:0 14px 34px rgba(17,45,91,.16);will-change:transform}.month-review-shift-popover{gap:12px;padding:14px}.month-review-popover-copy{display:grid;gap:3px}.month-review-popover-copy>.status-pill{justify-self:start;margin-bottom:3px;font-size:8px;font-weight:650}.month-review-popover-copy>strong{overflow:hidden;color:#212322;font-size:13px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.month-review-popover-copy>small{color:#636968;font-size:10px;font-weight:500;line-height:1.35}.month-review-popover-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.month-review-popover-actions .button{min-width:0;padding:0 8px;font-weight:650}.month-review-popover-actions .danger,.month-review-popover-actions .danger-secondary,.month-review-popover-actions [data-month-publish-shift]{grid-column:1/-1}
.month-review-cell-popover{overflow:hidden}.month-review-cell-popover-head{display:grid;gap:2px;padding:12px 13px 10px;border-bottom:1px solid #e3e7ec;background:#f8f9fb}.month-review-cell-popover-head strong{overflow:hidden;color:#212322;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.month-review-cell-popover-head small{color:#636968;font-size:10px;text-transform:capitalize}.month-review-popover-note{margin:0;padding:8px 13px;border-bottom:1px solid #ecd4d1;background:#fff7f6;color:#8b3027;font-size:9px;line-height:1.4}.month-review-cell-popover-menu{display:grid;padding:4px}.month-review-cell-popover-menu>button{display:flex;align-items:center;justify-content:space-between;gap:9px;width:100%;min-height:32px;padding:6px 9px;border:0;border-radius:5px;background:transparent;color:#212322;font-size:10px;font-weight:650;text-align:left}.month-review-cell-popover-menu>button:hover,.month-review-cell-popover-menu>button:focus-visible{background:#edf4ff;color:#0046ad;outline:0}.month-review-cell-popover-menu>button.is-primary{justify-content:flex-start;color:#0046ad}.month-review-cell-popover-menu>button.is-primary svg{width:14px;height:14px}.month-review-cell-popover-menu>button.is-selected{color:#0046ad}.month-review-cell-popover-menu>button.is-remove{color:#8b3027}.month-review-menu-separator{height:1px;margin:4px 7px;background:#e3e7ec}
.month-review-loading{display:grid;grid-template-columns:216px repeat(8,minmax(70px,1fr));align-content:start;gap:1px;min-width:800px;background:#dfe2e1}.month-review-loading span{display:block;min-height:76px;background:#fff}.month-review-loading span:nth-child(even){background:#f6f6f6}.month-review-loading span:first-child{grid-row:span 5;background:#f6f6f6}.month-review-message{align-self:start;max-width:520px;margin:44px 18px;padding:18px;border:1px solid #dfe2e1;background:#fff}.month-review-message h3,.month-review-message p{margin:0}.month-review-message h3{font-size:16px}.month-review-message p{margin:7px 0 15px;color:#636968;font-size:12px;line-height:1.5}.month-review-no-employees{grid-column:1/-1;padding:32px;color:#636968;font-size:12px;text-align:center}
@media (min-width:1280px){.month-review-shift span{display:block}}
@media (min-width:768px) and (max-width:1100px){body.calendar-month-review-open{--calendar-month-header-height:108px}.month-review-toolbar{gap:10px;padding:6px 12px}.month-review-scope-switch button{padding:0 9px;font-size:9px}}
@media (min-width:768px) and (max-width:850px){body.calendar-month-review-open{--calendar-month-header-height:128px}}
@media (max-width:767px){.calendar-month-review{display:none}}

/* Management-only planning placement */
.planning-placement-check{padding:13px;border:1px solid #c8d7eb;border-radius:9px;background:#f7faff}.planning-placement-check>span{display:grid;gap:3px}.planning-placement-check strong{font-size:13px}.planning-placement-check small{color:var(--muted);font-size:11px;line-height:1.4}
.week-planner-group-divider,.client-week-group-divider{position:sticky;top:46px;left:0;z-index:29;grid-column:1/-1;min-height:34px;padding:9px 13px;border-bottom:1px solid #c8d7eb;background:#edf4ff;color:var(--accent-dark);box-shadow:0 2px 5px rgba(17,45,91,.08)}.week-planner-group-divider strong,.client-week-group-divider strong{font-size:10px;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
.month-review-group-divider{position:sticky;left:0;z-index:2;grid-column:1/-1;min-height:30px;padding:8px 12px;border-bottom:1px solid #c8d7eb;background:#edf4ff;color:#0046ad}.month-review-group-divider strong{font-size:9px;font-weight:750;letter-spacing:.045em;text-transform:uppercase}
.detail-meta>.employee-summary-cell{display:grid;gap:4px;min-height:82px;padding:15px 12px 15px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.detail-meta>.employee-summary-cell:nth-child(odd){border-right:1px solid var(--line)}
.detail-meta>.employee-summary-cell:nth-child(even){padding-left:16px}
.detail-meta>.employee-summary-cell:hover{background:#faf9f7}
.employee-summary-verified{display:flex;align-items:center;gap:6px;color:var(--accent-dark)}
.employee-summary-verified svg{width:17px;height:17px;stroke-width:2.2}
@media(max-width:767px){.employee-summary>.employee-summary-cell{padding-right:12px;padding-left:12px}}
@media(min-width:768px){.employee-detail,.client-detail{padding:24px;border:1px solid var(--line);border-radius:10px;background:#fff}}

/* INTRA */
.app-header{grid-template-columns:var(--sidebar) minmax(0,1fr) 58px auto}
.app-shell.is-employee .app-header{grid-template-columns:var(--sidebar) minmax(0,1fr) auto}
.header-chat-button{position:relative;align-self:stretch;display:grid;place-items:center;width:58px;padding:0;border:0;border-right:1px solid rgba(255,255,255,.13);border-left:1px solid rgba(255,255,255,.13);background:transparent;color:#fff;transition:background .18s}.header-chat-button:hover,.header-chat-button[aria-expanded="true"]{background:rgba(255,255,255,.1)}.header-chat-button:active{transform:scale(.97)}.header-chat-button svg{width:22px;height:22px}.chat-unread-badge{position:absolute;top:9px;right:7px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border:2px solid var(--reference-header);border-radius:999px;background:#c43d38;color:#fff;font-size:9px;font-weight:800;line-height:1}
.manager-chat-overlay{position:fixed;z-index:28;top:var(--app-header);right:0;bottom:0;width:410px;border-left:1px solid #d6dce5;background:#fff;box-shadow:-16px 0 36px rgba(17,45,91,.14)}
.manager-chat-surface{position:relative;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%;min-height:0;background:#fff;color:var(--ink)}
.manager-chat-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid var(--line)}.manager-chat-head p{margin:0 0 3px;color:var(--reference-header);font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.manager-chat-head h2{margin:0;font-size:20px;letter-spacing:-.025em}.manager-chat-head .icon-button{width:38px;height:38px}
.chat-member-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 20px;border-bottom:1px solid var(--line-soft);color:var(--muted);font-size:11px}.chat-member-summary span{font-weight:750}.chat-member-summary small{font-size:10px}
.chat-message-list{min-height:0;padding:14px 18px 22px;overflow-y:auto;overscroll-behavior:contain;background:#f7f8fa;scrollbar-gutter:stable}.chat-date-divider,.chat-unread-divider{display:flex;align-items:center;gap:10px;margin:14px 0}.chat-date-divider::before,.chat-date-divider::after,.chat-unread-divider::before,.chat-unread-divider::after{content:"";height:1px;flex:1;background:#dfe3e8}.chat-date-divider span{color:var(--muted);font-size:10px;font-weight:750}.chat-unread-divider::before,.chat-unread-divider::after{background:#8aa9d2}.chat-unread-divider span{color:var(--reference-header);font-size:10px;font-weight:800;white-space:nowrap}
.chat-message{display:grid;max-width:86%;margin:9px 0}.chat-message.is-own{justify-self:end;justify-items:end}.chat-message.is-other{justify-self:start}.chat-message-meta{display:flex;align-items:center;gap:7px;margin:0 5px 4px;color:var(--muted);font-size:10px}.chat-message-meta strong{color:#454a51;font-size:11px}.chat-message-meta span{font-style:italic}.chat-bubble{min-width:110px;padding:10px 12px;border:1px solid #dfe2e7;border-radius:13px 13px 13px 4px;background:#fff;box-shadow:0 2px 7px rgba(17,45,91,.035)}.chat-message.is-own .chat-bubble{border-color:#bdd0e8;border-radius:13px 13px 4px 13px;background:#e8f0fa}.chat-message-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.48}.chat-deleted{margin:0;color:var(--muted);font-size:12px;font-style:italic}.chat-reply-preview{margin:-2px 0 8px;padding:7px 8px;border-left:3px solid #7d9bc2;border-radius:4px;background:rgba(255,255,255,.58);color:#59626d;font-size:10px;line-height:1.35}.chat-message-actions{display:flex;gap:2px;margin-top:3px}.chat-message-actions button{display:grid;place-items:center;min-width:30px;height:28px;padding:0 7px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:10px;font-weight:700}.chat-message-actions button:hover{background:#e9ebef;color:var(--reference-header)}.chat-message-actions svg{width:15px;height:15px}
.chat-context-card{display:grid;grid-template-columns:26px minmax(0,1fr) 16px;align-items:center;gap:8px;width:100%;margin-top:9px;padding:9px 0 0;border:0;border-top:1px solid rgba(74,103,142,.2);background:transparent;text-align:left}.chat-context-card>span:first-child{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:#fff;color:var(--reference-header)}.chat-context-card>span>svg{width:15px;height:15px}.chat-context-card>span:nth-child(2){display:grid;min-width:0;gap:2px}.chat-context-card small{color:var(--muted);font-size:9px}.chat-context-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.chat-context-card em{color:var(--red);font-size:9px;font-style:normal}.chat-context-card>svg{width:15px;height:15px;color:var(--reference-header)}
.chat-load-older{display:block;margin:0 auto 12px;padding:8px 12px;border:0;background:transparent;color:var(--reference-header);font-size:11px;font-weight:750}.chat-empty,.chat-error{display:grid;justify-items:center;align-content:center;min-height:250px;padding:32px;text-align:center}.chat-empty>span{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#e8f0fa;color:var(--reference-header)}.chat-empty strong,.chat-error strong{margin-top:12px;font-size:14px}.chat-empty p,.chat-error span{max-width:32ch;margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.chat-error .button{margin-top:14px}.chat-new-messages{position:absolute;right:18px;bottom:178px;z-index:2;padding:8px 12px;border:1px solid #b8cbe3;border-radius:999px;background:#fff;color:var(--reference-header);box-shadow:0 5px 15px rgba(17,45,91,.13);font-size:10px;font-weight:800}
.chat-composer{position:relative;display:grid;gap:8px;padding:10px 14px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff}.chat-composer form{display:grid;gap:7px}.chat-composer textarea,.chat-edit-form textarea{width:100%;min-height:62px;max-height:150px;padding:10px 11px;border:1px solid #ccd2da;border-radius:9px;background:#fff;font-size:13px;line-height:1.4;resize:vertical}.chat-composer textarea:focus,.chat-edit-form textarea:focus{border-color:#789bc7;outline:3px solid rgba(0,70,173,.12)}.chat-composer-actions{display:flex;align-items:center;gap:7px}.chat-composer-actions>div{position:relative}.chat-mention-button{min-height:34px;padding:0 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--reference-header);font-size:10px;font-weight:750}.chat-character-count{margin-left:auto;color:var(--muted);font-size:9px}.chat-mention-menu{position:absolute;z-index:3;bottom:calc(100% + 6px);left:0;display:grid;width:220px;max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 12px 28px rgba(17,45,91,.16)}.chat-mention-menu button{min-height:38px;padding:7px 10px;border:0;border-bottom:1px solid var(--line-soft);background:#fff;text-align:left;font-size:11px}.chat-mention-menu button:hover{background:#f1f5fa}.chat-mention-menu span{padding:10px;color:var(--muted);font-size:11px}
.chat-composer-preview{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:8px 9px;border:1px solid #d8e0ea;border-radius:8px;background:#f6f8fb}.chat-composer-preview>span{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:1px 7px;min-width:0}.chat-composer-preview svg{grid-row:1/3;width:16px;height:16px;color:var(--reference-header)}.chat-composer-preview b,.chat-composer-preview small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-composer-preview b{font-size:10px}.chat-composer-preview small{color:var(--muted);font-size:9px}.chat-composer-preview>button{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;background:transparent}.chat-composer-preview>button svg{width:14px;height:14px}.chat-edit-form{display:grid;gap:7px}.chat-edit-form textarea{min-width:250px;min-height:78px}.chat-edit-form>div{display:flex;justify-content:flex-end;gap:5px}
.chat-image-picker{display:flex;align-items:center;gap:5px;min-height:34px;padding:0 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--reference-header);font-size:10px;font-weight:750;cursor:pointer}.chat-image-picker:hover{background:#f1f5fa}.chat-image-picker:focus-within{outline:2px solid rgba(0,70,173,.22);outline-offset:1px}.chat-image-picker.is-disabled{cursor:default;opacity:.55}.chat-image-picker svg{width:15px;height:15px}.chat-image-picker input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%)}
.chat-image-preview{display:grid;grid-template-columns:54px minmax(0,1fr) 30px;align-items:center;gap:9px;padding:7px;border:1px solid #d8e0ea;border-radius:9px;background:#f6f8fb}.chat-image-preview img{width:54px;height:46px;border-radius:6px;object-fit:cover;background:#e7ebf0}.chat-image-preview span{display:grid;gap:2px;min-width:0}.chat-image-preview b{font-size:10px}.chat-image-preview small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.chat-image-preview button{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted)}.chat-image-preview button:hover{background:#e5eaf1;color:var(--reference-header)}.chat-image-preview svg{width:14px;height:14px}
.chat-send-status,.chat-send-error{margin:0;font-size:10px;line-height:1.35}.chat-send-status{color:var(--reference-header)}.chat-send-error{color:var(--red)}
.chat-message-image{position:relative;display:grid;place-items:center;width:min(248px,100%);min-height:96px;margin:-4px -6px 8px;padding:0;overflow:hidden;border:0;border-radius:9px;background:#dde5ef;color:var(--muted);cursor:zoom-in}.chat-message-image img{display:block;width:100%;max-height:280px;object-fit:cover}.chat-message-image span{padding:16px;font-size:10px}.chat-message-image span.is-error{color:var(--red)}.chat-message-image:focus-visible{outline:3px solid rgba(0,70,173,.28);outline-offset:2px}
.chat-image-viewer{position:absolute;z-index:8;inset:0;display:grid;place-items:center;padding:64px 18px 24px;background:rgba(10,20,34,.92)}.chat-image-viewer>button{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(0,0,0,.28);color:#fff}.chat-image-viewer>button svg{width:20px;height:20px}.chat-image-viewer img{max-width:100%;max-height:100%;border-radius:8px;object-fit:contain;box-shadow:0 18px 50px rgba(0,0,0,.35)}
@media(max-width:767px){.app-header{grid-template-columns:1fr 52px auto}.app-shell.is-employee .app-header{grid-template-columns:1fr auto}.header-chat-button{width:52px;border-left:0}.chat-unread-badge{top:8px;right:5px}.manager-chat-overlay{z-index:60;top:0;left:0;width:auto;border:0;box-shadow:none}.manager-chat-surface.is-overlay{min-height:100dvh}.manager-chat-head{padding-top:calc(12px + env(safe-area-inset-top));background:var(--reference-header);color:#fff}.manager-chat-head p{color:rgba(255,255,255,.72)}.manager-chat-head h2{color:#fff}.manager-chat-head .icon-button{border-color:rgba(255,255,255,.28);background:transparent;color:#fff}.chat-message-list{padding-right:14px;padding-left:14px}.chat-message{max-width:91%}.chat-composer{padding-bottom:calc(10px + env(safe-area-inset-bottom))}.employee-actions [data-share-chat-employee],.client-actions [data-share-chat-client]{grid-column:1/-1}.chat-edit-form textarea{min-width:210px}}

/* Home overview: actionable work first, daily schedules together. */
.manager-home-surface .home-intro{border-bottom:0}
.home-daily-grid>section{min-width:0}
.app-shell .manager-home-surface .home-clear-status{margin:16px 0 0;padding:8px 0;border:0}
@media(min-width:1100px){
  .manager-home-surface .home-daily-grid.has-own-shifts{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:36px;align-items:start}
  .manager-home-surface .home-daily-grid.has-own-shifts .home-section-head{min-height:58px;align-items:flex-start}
  .manager-home-surface .home-daily-grid .manager-own-row{grid-template-columns:94px minmax(0,1fr) 16px;gap:14px}
  .manager-home-surface .week-flow-status.is-empty{grid-template-columns:minmax(0,1fr) auto}
}
/* VAIHE 1: rauhallinen desktop-sovelluskehys. */
.header-company{display:none}
@media(min-width:768px){
  .app-header .profile-menu{right:16px;top:calc(100% + 8px)}
  .app-header .profile-menu-logout{display:flex;color:var(--ink)}
}
:root{
  --sidebar:224px;
  --app-header:60px;
  --shell-blue:#0046ad;
  --shell-blue-deep:#003d97;
  --shell-line:rgba(255,255,255,.16);
  --shell-nav-height:42px;
  --shell-control-height:60px;
}

@media (min-width:768px){
  .app-header{
    grid-template-columns:var(--sidebar) minmax(0,1fr) auto auto;
    height:var(--app-header);
    min-height:var(--app-header);
    border-bottom:1px solid rgba(0,40,112,.38);
    background:var(--shell-blue);
    box-shadow:none;
  }
  .header-brand{
    display:flex;
    align-items:center;
    padding:0 18px;
    border-right:1px solid var(--shell-line);
    box-shadow:none;
  }
  .header-logo-image{width:120px;max-height:25px}
  .header-context{padding:0 clamp(22px,4vw,54px)}
  .app-header h1{font-size:19px;font-weight:650;letter-spacing:-.02em;line-height:1.25}
  .app-shell:not(.is-employee):not(.is-calendar-manager) .header-company{display:block;margin-top:3px;color:rgba(255,255,255,.74);font-size:11px;line-height:1.3}
  .sidebar{
    padding:16px 12px 15px;
    border-right:1px solid rgba(0,40,112,.38);
    background:var(--shell-blue-deep);
    box-shadow:none;
  }
  .desktop-nav{gap:4px}
  .sidebar .desktop-nav .nav-button{
    position:relative;
    gap:12px;
    min-height:46px;
    padding:0 14px;
    border-radius:5px;
    font-size:14px;
    font-weight:550;
    color:rgba(255,255,255,.86);
  }
  .sidebar .desktop-nav .nav-button svg{flex:none;width:20px;height:20px;stroke-width:1.7}
  .sidebar .desktop-nav .nav-button:hover{color:#fff}
  .sidebar .desktop-nav .nav-button.is-active{background:#fff;color:var(--reference-sidebar-active-ink);font-weight:700}
  .sidebar .desktop-nav .nav-button[data-view="reports"]{margin-top:24px}
  .sidebar .desktop-nav .nav-button[data-view="reports"]::before{
    content:"";
    position:absolute;
    top:-14px;
    left:14px;
    right:14px;
    height:1px;
    background:var(--shell-line);
    pointer-events:none;
  }
  .app-shell:not(.is-employee) .sidebar>.powered-by{display:none}
  .nav-button{
    min-height:var(--shell-nav-height);
    padding:0 11px;
    border-radius:6px;
    color:rgba(255,255,255,.78);
    font-size:13px;
    font-weight:650;
    line-height:1.25;
    transition:background .14s ease,color .14s ease;
  }
  .nav-button svg{width:18px;height:18px;stroke-width:1.75}
  .nav-button:hover{background:rgba(255,255,255,.09);color:#fff}
  .nav-button:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .nav-button:active{transform:none;background:rgba(255,255,255,.14)}
  .nav-button.is-active{
    background:#fff;
    color:var(--reference-sidebar-active-ink);
    box-shadow:inset 3px 0 0 var(--accent);
  }
  .nav-button.is-active:hover{background:#fff;color:var(--reference-sidebar-active-ink)}
  .nav-badge{
    min-width:19px;
    height:19px;
    padding:0 5px;
    border-radius:5px;
    background:rgba(255,255,255,.18);
    color:#fff;
    font-size:10px;
    font-weight:750;
  }
  .nav-button.is-active .nav-badge{background:var(--accent);color:#fff}
  .sidebar>.powered-by{
    margin:0;
    padding:14px 7px 0;
    border-top:1px solid var(--shell-line);
    color:rgba(255,255,255,.58);
    font-size:9px;
    font-weight:650;
    letter-spacing:.075em;
  }
  .header-chat-button{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    width:auto;
    min-width:84px;
    padding:0 15px;
    border-right:0;
    border-left:0;
    align-self:center;
    height:40px;
    border-radius:6px;
    font-size:13px;
    font-weight:600;
    letter-spacing:0;
    transition:background .14s ease;
  }
  .header-chat-button svg{width:18px;height:18px;stroke-width:1.8}
  .header-chat-button:hover,.header-chat-button[aria-expanded="true"]{background:rgba(0,35,96,.18)}
  .header-chat-button:focus-visible,.profile-trigger:focus-visible,.header-logout:focus-visible{position:relative;z-index:1;outline:2px solid #fff;outline-offset:-3px}
  .header-chat-button:active{transform:none;background:rgba(0,35,96,.3)}
  .chat-unread-badge{
    top:-2px;
    right:2px;
    min-width:17px;
    height:17px;
    padding:0 4px;
    border:1px solid var(--shell-blue);
    border-radius:999px;
    background:#c43d38;
    color:#fff;
    font-size:9px;
    font-weight:800;
  }
  .header-account{align-self:center;height:44px;margin:0 16px 0 8px;border-left:0}
  .profile-trigger{
    grid-template-columns:34px minmax(82px,auto) 12px;
    gap:8px;
    min-width:170px;
    padding:0 14px;
    transition:background .14s ease;
    border-radius:6px;
  }
  .profile-trigger:hover,.profile-trigger[aria-expanded="true"]{background:rgba(0,35,96,.18);box-shadow:none}
  .profile-trigger-copy strong{font-size:13px;font-weight:650;line-height:1.2}
  .profile-trigger-copy small{margin-top:1px;color:rgba(255,255,255,.72);font-size:10px;font-weight:650;line-height:1.2}
  .profile-chevron{width:12px;height:12px}
  .header-avatar{width:34px;height:34px;box-shadow:0 0 0 1px rgba(255,255,255,.35)}
  .header-logout{
    width:52px;
    border-left:1px solid var(--shell-line);
    transition:background .14s ease;
  }
  .header-logout:hover{background:rgba(0,35,96,.18);box-shadow:none}
  .header-logout:active{background:rgba(0,35,96,.3)}
  .header-logout svg{width:20px;height:20px;stroke-width:1.8}
  .profile-menu{
    top:calc(100% + 6px);
    right:8px;
    width:248px;
    padding:14px;
    border:1px solid #cfd9e8;
    border-radius:8px;
    box-shadow:0 10px 24px rgba(12,45,97,.14);
  }
  .profile-menu strong{font-size:13px;line-height:1.3}
  .profile-menu span{font-size:11px;line-height:1.4}
  .profile-menu-guide{min-height:42px;margin-top:12px;padding-top:10px;font-size:11px}
  .main-shell{background:#f7f8fa}
}

@media (min-width:768px) and (max-width:1080px){
  .header-context{padding:0 20px}
  .profile-trigger{min-width:154px;padding-right:12px;padding-left:12px}
  .header-chat-button{min-width:74px;padding-right:12px;padding-left:12px}
}

@media (max-width:767px){
  .header-chat-label{display:none}
}

/* VAIHE 2: johdon etusivun rauhallinen operatiivinen työpinta. */
@media (min-width:768px){
  .manager-home-surface{
    --home-ink:#212322;
    --home-muted:#636968;
    --home-line:#dfe2e1;
    width:100%;
    padding:30px 32px 36px;
    border-color:#dde0df;
    border-radius:8px;
    background:#fff;
    box-shadow:0 4px 8px rgba(33,35,34,.05);
    color:var(--home-ink);
    font-size:16px;
    line-height:1.5;
  }
  .manager-home-surface .eyebrow{
    color:var(--home-muted);
    font-size:10px;
    font-weight:700;
    letter-spacing:.09em;
    line-height:1.4;
  }
  .manager-home-surface .home-intro{
    align-items:flex-end;
    gap:32px;
    padding-bottom:20px;
    border-color:var(--home-line);
  }
  .manager-home-surface .home-intro h2{
    margin-top:8px;
    color:var(--home-ink);
    font-size:30px;
    font-weight:600;
    letter-spacing:-.025em;
    line-height:1.18;
  }
  .manager-home-surface .home-intro p:last-child{
    margin-top:10px;
    color:var(--home-muted);
    font-size:16px;
    font-weight:400;
    line-height:24px;
  }
  .manager-home-surface .home-actions{gap:10px}
  .manager-home-surface .home-actions .button,
  .manager-home-surface .week-flow-actions .button{
    min-height:44px;
    border-radius:7px;
    font-size:14px;
    font-weight:700;
  }
  .manager-home-surface .button.primary{background:#0046ad}
  .manager-home-surface .button.primary:hover{background:#003d97}
  .manager-home-surface .button.secondary{border-color:#9eafc4;background:#fff;color:#003f9c}
  .manager-home-surface .button.secondary:hover{border-color:#0046ad;background:#f6f8fb}
  .manager-home-surface .button:focus-visible,
  .manager-home-surface .attention-row:focus-visible,
  .manager-home-surface .manager-own-row:focus-visible,
  .manager-home-surface .today-row:focus-visible,
  .manager-home-surface .section-action:focus-visible,
  .manager-home-surface .list-action:focus-visible{
    position:relative;
    z-index:1;
    outline:2px solid #0046ad;
    outline-offset:2px;
  }
  .manager-home-surface .week-flow-status{
    grid-template-columns:minmax(300px,1.15fr) minmax(310px,.9fr) auto;
    gap:26px;
    margin:0 0 28px;
    padding:22px 0;
    border-top-color:var(--home-line);
    border-bottom-color:var(--home-line);
  }
  .manager-home-surface .week-flow-copy{gap:14px}
  .manager-home-surface .week-flow-copy>.status-pill{
    margin-top:1px;
    border-radius:5px;
    font-size:9px;
    font-weight:700;
    letter-spacing:.055em;
  }
  .manager-home-surface .week-flow-copy .eyebrow{margin-bottom:5px}
  .manager-home-surface .week-flow-copy h2{
    color:var(--home-ink);
    font-size:20px;
    font-weight:700;
    letter-spacing:-.018em;
    line-height:1.3;
  }
  .manager-home-surface .week-flow-copy p:last-child{
    margin-top:6px;
    color:var(--home-muted);
    font-size:13px;
    line-height:20px;
  }
  .manager-home-surface .week-flow-metrics{grid-template-columns:repeat(4,minmax(62px,1fr))}
  .manager-home-surface .week-flow-metrics>div{gap:4px;padding:1px 11px;border-color:var(--home-line)}
  .manager-home-surface .week-flow-metrics dt{
    color:var(--home-muted);
    font-size:10px;
    font-weight:400;
    line-height:1.35;
  }
  .manager-home-surface .week-flow-metrics dd{
    color:var(--home-ink);
    font-size:17px;
    font-weight:700;
    line-height:1.35;
  }
  .manager-home-surface .week-flow-metrics .has-warning dd{color:var(--red)}
  .manager-home-surface .manager-own-section,
  .manager-home-surface .attention-section.has-issues,
  .manager-home-surface .today-section{margin-top:36px}
  .manager-home-surface .home-section-head{align-items:flex-end;gap:24px;margin-bottom:13px}
  .manager-home-surface .home-section-head h2{
    color:var(--home-ink);
    font-size:22px;
    font-weight:700;
    letter-spacing:-.02em;
    line-height:1.42;
  }
  .manager-home-surface .home-section-head p:last-child{
    margin-top:4px;
    color:var(--home-muted);
    font-size:13px;
    line-height:20px;
  }
  .manager-home-surface .attention-total{
    padding-bottom:3px;
    color:var(--home-muted);
    font-size:12px;
    font-weight:700;
  }
  .manager-home-surface .manager-own-list,
  .manager-home-surface .attention-list,
  .manager-home-surface .today-list{border-top-color:#b9bdbc}
  .manager-home-surface .manager-own-row,
  .manager-home-surface .attention-row,
  .manager-home-surface .today-row{
    min-height:68px;
    padding:13px 10px;
    border-bottom-color:var(--home-line);
    border-radius:0;
    background:#fff;
    transition:background .14s ease,color .14s ease;
  }
  .manager-home-surface .manager-own-row:hover,
  .manager-home-surface .attention-row:hover,
  .manager-home-surface .today-row:hover{background:#f6f6f6}
  .manager-home-surface .manager-own-row:active,
  .manager-home-surface .attention-row:active,
  .manager-home-surface .today-row:active{transform:none;background:#eeeeee}
  .manager-home-surface .manager-own-row{grid-template-columns:150px minmax(0,1fr) 18px}
  .manager-home-surface .attention-row{grid-template-columns:76px minmax(0,1fr) auto 18px}
  .manager-home-surface .today-row{grid-template-columns:124px minmax(0,1fr) auto}
  .manager-home-surface .manager-own-date{gap:3px}
  .manager-home-surface .manager-own-date strong,
  .manager-home-surface .today-row time{color:var(--home-ink);font-size:13px;font-weight:700;line-height:20px}
  .manager-home-surface .manager-own-date time{color:var(--home-muted);font-size:12px;font-weight:600;line-height:18px}
  .manager-home-surface .issue-type{
    padding-top:1px;
    font-size:9px;
    font-weight:700;
    letter-spacing:.08em;
    line-height:18px;
  }
  .manager-home-surface .row-main strong{
    color:var(--home-ink);
    font-size:15px;
    font-weight:700;
    line-height:22px;
  }
  .manager-home-surface .row-main span{
    margin-top:2px;
    color:var(--home-muted);
    font-size:13px;
    line-height:20px;
  }
  .manager-home-surface .attention-action,
  .manager-home-surface .section-action,
  .manager-home-surface .list-action{color:#0046ad;font-weight:700}
  .manager-home-surface .row-chevron{color:#747a79}
  .manager-home-surface .row-chevron svg{width:17px;height:17px;stroke-width:1.8}
  .manager-home-surface .home-clear-inline,
  .manager-home-surface .calm-empty{
    min-height:58px;
    padding:12px 10px;
    border-color:var(--home-line);
    background:#fff;
  }
  .manager-home-surface .home-clear-inline{color:var(--home-muted);font-size:13px;line-height:20px}
  .manager-home-surface .calm-empty strong{font-size:14px;font-weight:700;line-height:22px}
  .manager-home-surface .calm-empty small{color:var(--home-muted);font-size:13px;line-height:20px}
  .manager-home-surface .home-clear-status{
    margin-top:36px;
    padding:14px 10px;
    border-top-color:#b9bdbc;
    border-bottom-color:var(--home-line);
  }
  .manager-home-surface .home-clear-status strong{font-size:14px;font-weight:700;line-height:22px}
  .manager-home-surface .home-clear-status small{color:var(--home-muted);font-size:13px;line-height:20px}
}

@media (min-width:768px) and (max-width:1100px){
  .manager-home-surface{padding:28px 32px 34px}
  .manager-home-surface .week-flow-status{grid-template-columns:minmax(0,1fr) auto;gap:20px}
  .manager-home-surface .week-flow-metrics{
    grid-column:1/-1;
    grid-row:2;
    padding-top:16px;
    border-top:1px solid var(--home-line);
  }
  .manager-home-surface .week-flow-actions{grid-column:2;grid-row:1}
  .manager-home-surface .week-flow-metrics>div:first-child{padding-left:0;border-left:0}
}

/* Product-wide no-glow policy.
   Structural surfaces use borders; floating layers use only short neutral elevation. */
:root{--shadow:0 4px 12px rgba(33,35,34,.12)}

.sidebar,
.app-header,
.header-brand,
.header-avatar,
.client-editor-actions,
.schedule-preview-actions,
.auth-card,
.segmented button.is-active,
.day-chip.is-active,
.mobile-nav,
.auth-page .button.primary,
.nav-button.is-active,
.employee-directory,
.client-directory,
.worker-preview-phone,
.worker-preview-next,
.app-shell.is-employee .app-header,
.app-shell.is-employee .worker-task-card,
.app-shell.is-employee .worker-actuals,
.app-shell.is-employee .worker-actuals[open],
.app-shell.is-employee .next-shift,
.app-shell.is-employee .employee-shift-row,
.app-shell.is-employee .worker-empty,
.app-shell.is-employee .availability-workspace,
.app-shell.is-employee .worker-notifications-view .notification-row,
.app-shell.is-employee .worker-notifications-view .empty-state,
.app-shell.is-employee .worker-profile-view .profile-details,
.app-shell.is-employee .worker-profile-actions,
.app-shell.is-employee .mobile-nav,
.worker-profile-avatar,
.profile-photo-preview img,
.calendar-scope-switch button.is-active,
.manager-chat-overlay,
.chat-bubble,
.chat-new-messages{
  box-shadow:none;
}

@media(max-width:767px){.app-shell.is-employee .mobile-nav{box-shadow:0 5px 14px rgba(33,35,34,.16)}}

.dialog,
.dialog:has(.pwa-install-dialog),
.profile-menu,
.entity-suggestions,
.manager-workflow-tour,
.planner-availability-menu,
.calendar-view-menu>div,
.calendar-planning-stage>.calendar-review-panel,
.month-review-shift-popover,
.chat-mention-menu{
  box-shadow:0 5px 14px rgba(33,35,34,.16);
}

/* Työntekijän tietosuoja: profiilin lopussa oleva hillitty alatunniste. */
.worker-privacy-section{display:grid;gap:5px;margin-top:30px;padding:18px 1px calc(10px + env(safe-area-inset-bottom));border-top:1px solid #dfe2e6;color:var(--muted);font-size:10px}.worker-privacy-section>p{margin:0}.worker-privacy-section>p:first-child{font-weight:800;letter-spacing:.06em;text-transform:uppercase}.worker-privacy-section nav{display:flex;flex-wrap:wrap;gap:0 18px}.worker-privacy-section nav>button{min-height:36px;padding:4px 0;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:700;text-align:left;text-decoration:underline;text-decoration-color:#b8bec6;text-underline-offset:3px}.worker-privacy-section a{color:var(--muted);text-underline-offset:3px}.worker-privacy-section nav>button:hover,.worker-privacy-section nav>button:focus-visible,.worker-privacy-section a:hover,.worker-privacy-section a:focus-visible{color:var(--accent-dark);outline:0}.worker-privacy-section nav>button:active{transform:translateY(1px)}
.dialog:has(.worker-legal-dialog){width:min(680px,calc(100% - 28px))}.worker-legal-dialog{display:grid;gap:0}.worker-legal-dialog>p{margin:0 0 18px;color:var(--muted);line-height:1.55}.worker-legal-dialog>section{padding:20px 0;border-top:1px solid var(--line)}.worker-legal-dialog h3{margin:0 0 10px;font-size:16px}.worker-legal-dialog p,.worker-legal-dialog li{font-size:12px;line-height:1.6}.worker-legal-dialog p{margin:8px 0}.worker-legal-dialog ul{display:grid;gap:6px;margin:10px 0;padding-left:20px}.worker-legal-dialog a{color:var(--accent-dark);text-underline-offset:3px}.worker-legal-dialog>.dialog-actions{padding-top:18px;border-top:1px solid var(--line)}
.legal-page{min-height:100dvh;margin:0;background:#f6f6f6;color:#212322;font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}.legal-header{min-height:66px;background:#0046ad}.legal-header>a{display:flex;align-items:center;gap:12px;width:min(calc(100% - 32px),860px);min-height:66px;margin:0 auto;color:#fff;text-decoration:none}.legal-header img{display:block;width:118px;height:auto}.legal-header span{padding-left:12px;border-left:1px solid rgba(255,255,255,.36);font-size:13px;font-weight:700}.legal-main{width:min(calc(100% - 32px),860px);margin:0 auto;padding:27px 0 calc(44px + env(safe-area-inset-bottom))}.legal-main-compact{max-width:720px}.legal-back{margin-bottom:21px}.legal-back a{color:#0046ad;font-size:12px;font-weight:700;text-underline-offset:3px}.legal-document{background:#fff;border:1px solid #d9e3f3;border-radius:14px;overflow:hidden}.legal-title{padding:32px 34px 28px;border-bottom:1px solid #d9e3f3}.legal-title .eyebrow{margin:0 0 9px;color:#0046ad;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.legal-title h1{max-width:19ch;margin:0;color:#003a8e;font-size:34px;letter-spacing:-.04em;line-height:1.08}.legal-title>p:not(.eyebrow){max-width:62ch;margin:14px 0 0;color:#636968;font-size:14px;line-height:1.55}.legal-title small{display:block;margin-top:15px;color:#7b8381;font-size:10px}.legal-document>section{padding:25px 34px;border-bottom:1px solid #e7e9ec}.legal-document>section:last-child{border-bottom:0}.legal-document h2{margin:0 0 12px;color:#212322;font-size:18px;letter-spacing:-.015em}.legal-document p,.legal-document li{font-size:13px;line-height:1.65}.legal-document p{margin:10px 0}.legal-document ul{display:grid;gap:7px;margin:11px 0;padding-left:20px}.legal-document a{color:#0046ad;text-underline-offset:3px}.legal-note{display:grid;gap:4px;margin-top:16px;padding:14px 16px;border-left:4px solid #0046ad;background:#f1f7fb}.legal-note strong{font-size:13px}.legal-note span{color:#59625f;font-size:12px;line-height:1.5}.legal-checklist{display:grid;gap:0}.legal-checklist>div{display:grid;grid-template-columns:34px minmax(0,1fr);gap:13px;padding:15px 0;border-bottom:1px solid #e7e9ec}.legal-checklist>div:first-child{padding-top:0}.legal-checklist>div:last-child{padding-bottom:0;border-bottom:0}.legal-checklist b{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#edf4ff;color:#0046ad;font-size:12px}.legal-checklist span{display:grid;gap:4px}.legal-checklist strong{font-size:13px;line-height:1.4}.legal-checklist small{color:#636968;font-size:12px;line-height:1.5}.legal-contact{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:16px;padding:14px 16px;border:1px solid #d9e3f3;background:#f6f8fb}.legal-contact span{flex:1 0 100%;color:#636968;font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}.legal-contact a{font-size:13px;font-weight:700}.legal-footer{padding:20px 0 0;color:#7b8381;font-size:10px;text-align:center}
@media(max-width:767px){.worker-privacy-section{margin-top:24px;padding-right:0;padding-left:0}.worker-privacy-section nav{display:grid;justify-items:start}.worker-privacy-section nav>button{min-height:38px}.legal-main{width:min(calc(100% - 20px),860px);padding-top:15px}.legal-back{margin-bottom:14px;padding-left:4px}.legal-document{border-radius:12px}.legal-title{padding:25px 20px 22px}.legal-title h1{font-size:28px}.legal-title>p:not(.eyebrow){font-size:13px}.legal-document>section{padding:22px 20px}.legal-document p,.legal-document li{font-size:12px}.legal-header>a{width:calc(100% - 32px)}.legal-checklist>div{grid-template-columns:32px minmax(0,1fr);gap:11px}}

.manager-tour-target{box-shadow:none!important}

@media (max-width:767px){
  .app-shell.is-employee .next-shift,
  .app-shell.is-employee .worker-actuals,
  .app-shell.is-employee .employee-shift-row,
  .app-shell.is-employee .worker-history,
  .app-shell.is-employee .worker-calendar-workspace,
  .app-shell.is-employee .worker-notifications-view .notification-row,
  .app-shell.is-employee .worker-notifications-view .empty-state{
    border:0;
    box-shadow:0 7px 16px rgba(33,35,34,.075),0 2px 4px rgba(33,35,34,.035);
  }

  .app-shell.is-employee .worker-actuals[open],
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread{
    border-color:transparent;
  }

  .app-shell.is-employee .next-shift .button,
  .app-shell.is-employee .worker-history-row{
    border-top:0;
    border-bottom:0;
  }

  .app-shell.is-employee .worker-actual-row{
    border:0;
  }

  .app-shell.is-employee .worker-actuals-divider::before,
  .app-shell.is-employee .worker-actuals-divider::after{
    display:none;
  }
}

.field input:focus,
.field select:focus,
.field textarea:focus,
.chat-composer textarea:focus,
.chat-edit-form textarea:focus,
.client-month-picker input:focus{
  box-shadow:none;
  outline:2px solid var(--accent);
  outline-offset:1px;
}

.auth-page .field input:focus{
  box-shadow:none;
  outline:2px solid #fff;
  outline-offset:2px;
}

.profile-trigger:focus-visible .header-avatar{
  box-shadow:none;
  outline:2px solid rgba(255,255,255,.9);
  outline-offset:2px;
}

/* Figma-viitteeseen perustuva työntekijän profiili ja asetukset. */
.worker-settings-card{overflow:hidden;border:1px solid #e3e6ea;border-radius:14px;background:#fff}.worker-settings-icon{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border-radius:50%;background:#edf0f3;color:#212322}.worker-settings-icon svg{width:18px;height:18px;stroke-width:2}.worker-settings-row{display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 14px;border:0;border-bottom:1px solid #eceef1;background:transparent;color:#212322;text-align:left}.worker-settings-row:last-child{border-bottom:0}.worker-settings-row>svg{width:18px;height:18px;color:#59616d}.worker-settings-copy,.profile-detail-copy{display:grid;min-width:0;gap:3px}.worker-settings-copy strong{font-size:13px;line-height:1.3}.worker-settings-copy small,.profile-detail-copy small{color:#747c87;font-size:10px;line-height:1.35}.worker-settings-row:active{transform:scale(.985)}.worker-settings-row.is-subtle-danger .worker-settings-icon{background:#f7eceb;color:#9e4039}.worker-settings-logout{display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:12px;width:100%;min-height:60px;margin-top:14px;padding:10px 14px;border:0;border-radius:14px;background:#0046ad;color:#fff;text-align:left}.worker-settings-logout>span:nth-child(2){font-size:13px;font-weight:750}.worker-settings-logout>svg{width:18px;height:18px}.worker-settings-logout .worker-settings-icon{background:rgba(255,255,255,.15);color:#fff}.worker-settings-logout:active{transform:scale(.985)}

@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view){padding:18px 12px 38px}
  .app-shell.is-employee .worker-profile-view{max-width:460px;margin:0 auto}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:1fr;justify-items:center;gap:12px;margin:0;padding:7px 12px 27px;border:0;text-align:center}
  .app-shell.is-employee .worker-profile-photo{position:relative;gap:10px}
  .app-shell.is-employee .worker-profile-avatar{width:104px;height:104px;border:4px solid #dce8f7;background:#edf4fc;font-size:25px}
  .app-shell.is-employee .worker-profile-photo>button{display:flex;align-items:center;gap:6px;min-height:36px;padding:0 13px;border:0;border-radius:18px;background:#e9ebee;color:#212322;font-size:10px;font-weight:700}
  .app-shell.is-employee .worker-profile-photo>button svg{width:15px;height:15px}
  .app-shell.is-employee .worker-profile-photo>button:active{transform:scale(.97)}
  .app-shell.is-employee .worker-profile-identity-copy{display:grid;justify-items:center;gap:3px}
  .app-shell.is-employee .worker-profile-identity-copy .eyebrow{display:none}
  .app-shell.is-employee .worker-profile-identity h2{margin:0;color:#212322;font-size:23px;font-weight:650;letter-spacing:-.025em}
  .app-shell.is-employee .worker-profile-email{max-width:100%;margin:0;color:#4f5865;font-size:11px;overflow-wrap:anywhere}
  .app-shell.is-employee .worker-profile-company{margin:2px 0 0;color:#7a828d;font-size:10px}
  .app-shell.is-employee .worker-profile-section,.app-shell.is-employee .worker-profile-actions,.app-shell.is-employee .worker-push-section,.app-shell.is-employee .worker-account-section{display:grid;grid-template-columns:1fr;gap:0;max-width:none;margin:24px 0 0;padding:0;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-section-head,.app-shell.is-employee .worker-profile-actions>div,.app-shell.is-employee .worker-account-section>div:first-child{display:grid;gap:3px;margin:0 0 9px;padding:0 1px}
  .app-shell.is-employee .worker-profile-section-head .eyebrow,.app-shell.is-employee .worker-profile-actions .eyebrow,.app-shell.is-employee .worker-account-section .eyebrow{display:none}
  .app-shell.is-employee .worker-profile-section h3,.app-shell.is-employee .worker-profile-actions h3,.app-shell.is-employee .worker-account-section h3,.app-shell.is-employee .worker-push-heading h3{margin:0;color:#69717c;font-size:10px;font-weight:800;letter-spacing:.055em;text-transform:uppercase}
  .app-shell.is-employee .worker-profile-view .profile-details{overflow:hidden;border:1px solid #e3e6ea;border-radius:16px;background:#fff}
  .app-shell.is-employee .worker-profile-view .profile-detail{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:12px;min-height:67px;padding:10px 14px;border-bottom:1px solid #eceef1}
  .app-shell.is-employee .worker-profile-view .profile-detail:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-view .profile-detail>.worker-settings-icon{display:grid}
  .app-shell.is-employee .worker-profile-view .profile-detail strong{overflow:hidden;color:#212322;font-size:13px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-help{margin:9px 3px 0;color:#737b86;font-size:10px}
  .app-shell.is-employee .worker-settings-card,.app-shell.is-employee .worker-profile-view .profile-details{box-shadow:0 7px 16px rgba(33,35,34,.075),0 2px 4px rgba(33,35,34,.035)}
  .app-shell.is-employee .worker-settings-row{min-height:68px;padding:10px 14px}
  .app-shell.is-employee .worker-settings-copy strong{font-size:13px;font-weight:650}
  .app-shell.is-employee .worker-push-heading{align-items:end;margin:0 1px 9px}
  .app-shell.is-employee .worker-push-heading>div .eyebrow{display:none}
  .app-shell.is-employee .worker-push-state{padding:0;color:#707985;font-size:9px}
  .app-shell.is-employee .worker-push-intro{margin:0 1px 11px;font-size:11px}
  .app-shell.is-employee .worker-push-options{overflow:hidden;margin:0;border:1px solid #e3e6ea;border-radius:16px;background:#fff;box-shadow:0 7px 16px rgba(33,35,34,.075),0 2px 4px rgba(33,35,34,.035)}
  .app-shell.is-employee .worker-push-toggle{grid-template-columns:38px minmax(0,1fr) 42px;gap:12px;min-height:76px;padding:10px 14px;border-color:#eceef1}
  .app-shell.is-employee .worker-push-toggle strong{font-size:13px;font-weight:650}
  .app-shell.is-employee .worker-push-toggle small{font-size:10px}
  .app-shell.is-employee .worker-push-toggle input{-webkit-appearance:none;appearance:none;position:relative;width:40px;height:24px;border:0;border-radius:12px;background:#cbd1d8;cursor:pointer;transition:background .16s ease}
  .app-shell.is-employee .worker-push-toggle input::before{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(33,35,34,.2);transition:transform .16s ease}
  .app-shell.is-employee .worker-push-toggle input:checked{background:#0046ad}
  .app-shell.is-employee .worker-push-toggle input:checked::before{transform:translateX(16px)}
  .app-shell.is-employee .worker-push-toggle input:focus-visible{outline:2px solid #0046ad;outline-offset:3px}
  .app-shell.is-employee .worker-push-help,.app-shell.is-employee .worker-push-local-note,.app-shell.is-employee .worker-push-warning{margin-right:3px;margin-left:3px}
  .app-shell.is-employee .worker-push-enable{width:100%;min-height:50px;margin-top:0;border-radius:12px}
  .app-shell.is-employee .worker-push-disable{justify-self:start;margin-left:3px}
  .app-shell.is-employee .worker-account-section>div:first-child>p:last-child{margin:0;color:#737b86;font-size:10px}
  .app-shell.is-employee .worker-account-actions{margin:0}
  .app-shell.is-employee .worker-account-actions .worker-settings-row{width:100%;min-height:68px;border-radius:0}
  .app-shell.is-employee .worker-settings-logout{box-shadow:0 7px 16px rgba(0,70,173,.16)}
  .app-shell.is-employee .worker-privacy-section{gap:9px;margin-top:28px;padding:0 0 calc(6px + env(safe-area-inset-bottom));border:0}
  .app-shell.is-employee .worker-privacy-section>p:first-child{margin:0 1px;color:#69717c;font-size:10px}
  .app-shell.is-employee .worker-privacy-section nav{display:grid;justify-items:stretch;gap:0}
  .app-shell.is-employee .worker-privacy-section nav>button{min-height:62px;padding:10px 14px;color:#212322;font-size:inherit;font-weight:400;text-decoration:none}
  .app-shell.is-employee .worker-privacy-section nav>button:hover,.app-shell.is-employee .worker-privacy-section nav>button:focus-visible{color:#212322}
  .app-shell.is-employee .worker-privacy-contact{margin:0 3px!important;color:#727a85;font-size:9px;text-align:center}
  .app-shell.is-employee .worker-privacy-contact a{color:#727a85}
}

/* Profiili: Profile2-referenssin kompakti mobiilirakenne. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view){padding:0 0 calc(28px + env(safe-area-inset-bottom));background:#f7f6f3}
  .app-shell.is-employee .worker-profile-view{max-width:none;margin:0;background:#f7f6f3}
  .app-shell.is-employee .worker-profile-page-head{display:flex;align-items:center;justify-content:space-between;min-height:63px;padding:0 21px;background:#fff}
  .app-shell.is-employee .worker-profile-page-head h2{margin:0;color:#111;font-size:18px;font-weight:650;letter-spacing:-.01em}
  .app-shell.is-employee .worker-profile-page-head button{display:grid;place-items:center;width:44px;height:44px;margin-right:-12px;border:0;background:transparent;color:#111}
  .app-shell.is-employee .worker-profile-page-head button svg{width:18px;height:18px;stroke-width:2.2}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:64px minmax(0,1fr) 106px;align-items:center;gap:12px;margin:0;padding:14px 21px 27px;border:0;background:#fff;text-align:left}
  .app-shell.is-employee .worker-profile-photo{display:block}
  .app-shell.is-employee .worker-profile-avatar{width:64px;height:64px;border:2px solid #0046ad;background:#edf4fc;color:#0046ad;font-size:17px}
  .app-shell.is-employee .worker-profile-identity-copy{display:grid;justify-items:start;gap:3px;min-width:0}
  .app-shell.is-employee .worker-profile-identity-copy h3{overflow:hidden;max-width:100%;margin:0;color:#111;font-size:18px;font-weight:600;letter-spacing:-.015em;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-email{overflow:hidden;max-width:100%;margin:0;color:#333;font-size:10px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-edit{min-height:40px;padding:0 13px;border:0;border-radius:20px;background:#ededed;color:#202020;font-size:10px;font-weight:500;box-shadow:0 5px 12px rgba(33,35,34,.08)}
  .app-shell.is-employee .worker-profile-edit:active{transform:scale(.97)}
  .app-shell.is-employee .worker-profile-settings{display:grid;gap:26px;padding:25px 12px 3px;background:#f7f6f3}
  .app-shell.is-employee .worker-profile-section,.app-shell.is-employee .worker-profile-actions,.app-shell.is-employee .worker-push-section,.app-shell.is-employee .worker-account-section{display:grid;grid-template-columns:1fr;gap:0;max-width:none;margin:0;padding:0;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-section-head,.app-shell.is-employee .worker-profile-actions>div,.app-shell.is-employee .worker-account-section>div:first-child{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .app-shell.is-employee .worker-settings-card,.app-shell.is-employee .worker-profile-view .profile-details,.app-shell.is-employee .worker-profile-logout-card{overflow:hidden;border:0;border-radius:12px;background:#fff;box-shadow:0 8px 17px rgba(33,35,34,.11),0 1px 2px rgba(33,35,34,.035)}
  .app-shell.is-employee .worker-profile-view .profile-detail{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:14px;min-height:76px;margin:0 20px;padding:10px 0;border-bottom:1px solid #ececec}
  .app-shell.is-employee .worker-profile-view .profile-detail:last-child{border-bottom:0}
  .app-shell.is-employee .worker-settings-icon{width:40px;height:40px;background:#ededed;color:#111}
  .app-shell.is-employee .worker-settings-icon svg{width:18px;height:18px;stroke-width:2}
  .app-shell.is-employee .profile-detail-copy{gap:2px}
  .app-shell.is-employee .profile-detail-copy small{color:#777;font-size:9px;line-height:1.2}
  .app-shell.is-employee .worker-profile-view .profile-detail strong{overflow:hidden;color:#111;font-size:15px;font-weight:500;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-help{margin:10px 7px 0;color:#777;font-size:9px;line-height:1.45}
  .app-shell.is-employee .worker-settings-row{grid-template-columns:40px minmax(0,1fr) 18px;gap:14px;min-height:81px;margin:0 20px;padding:10px 0;border-bottom:1px solid #ececec}
  .app-shell.is-employee .worker-settings-row:last-child{border-bottom:0}
  .app-shell.is-employee .worker-settings-copy{gap:3px}
  .app-shell.is-employee .worker-settings-copy strong{color:#111;font-size:15px;font-weight:500;line-height:1.25}
  .app-shell.is-employee .worker-settings-copy small{color:#777;font-size:9px;line-height:1.35}
  .app-shell.is-employee .worker-settings-row>svg{width:17px;height:17px;color:#111;stroke-width:1.8}
  .app-shell.is-employee .worker-push-heading{align-items:center;margin:0 7px 11px}
  .app-shell.is-employee .worker-push-heading>div .eyebrow{display:none}
  .app-shell.is-employee .worker-push-heading h3{color:#707070;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
  .app-shell.is-employee .worker-push-state{padding:0;color:#777;font-size:9px}
  .app-shell.is-employee .worker-push-intro{margin:0 7px 12px;color:#666;font-size:10px;line-height:1.45}
  .app-shell.is-employee .worker-push-options{overflow:hidden;margin:0;border:0;border-radius:12px;background:#fff;box-shadow:0 8px 17px rgba(33,35,34,.11),0 1px 2px rgba(33,35,34,.035)}
  .app-shell.is-employee .worker-push-toggle{grid-template-columns:40px minmax(0,1fr) 40px;gap:14px;min-height:81px;margin:0 20px;padding:10px 0;border-color:#ececec}
  .app-shell.is-employee .worker-push-toggle strong{color:#111;font-size:15px;font-weight:500}
  .app-shell.is-employee .worker-push-toggle small{color:#777;font-size:9px;line-height:1.35}
  .app-shell.is-employee .worker-push-toggle input{width:40px;height:24px;border-radius:12px}
  .app-shell.is-employee .worker-push-help,.app-shell.is-employee .worker-push-local-note,.app-shell.is-employee .worker-push-warning{margin-right:7px;margin-left:7px}
  .app-shell.is-employee .worker-push-enable{width:100%;min-height:50px;margin:0;border:0;border-radius:12px;background:#0046ad;color:#fff}
  .app-shell.is-employee .worker-push-disable{justify-self:start;margin-left:7px}
  .app-shell.is-employee .worker-account-actions{margin:0}
  .app-shell.is-employee .worker-account-actions .worker-settings-row{width:auto;min-height:81px;border-radius:0}
  .app-shell.is-employee .worker-profile-logout-card{margin:0}
  .app-shell.is-employee .worker-profile-logout-card>button{display:grid;grid-template-columns:40px minmax(0,1fr) 18px;align-items:center;gap:14px;width:calc(100% - 40px);min-height:81px;margin:0 20px;padding:10px 0;border:0;background:transparent;color:#111;text-align:left}
  .app-shell.is-employee .worker-profile-logout-card>button>span:nth-child(2){font-size:15px;font-weight:500}
  .app-shell.is-employee .worker-profile-logout-card>button>svg{width:17px;height:17px;stroke-width:1.8}
  .app-shell.is-employee .worker-privacy-section{gap:9px;margin:25px 12px 0;padding:0 0 calc(6px + env(safe-area-inset-bottom));border:0;background:#f7f6f3}
  .app-shell.is-employee .worker-privacy-section>p:first-child{margin:0 7px;color:#707070;font-size:10px}
  .app-shell.is-employee .worker-privacy-section nav{display:grid;justify-items:stretch;gap:0}
  .app-shell.is-employee .worker-privacy-section nav>button{min-height:70px;margin:0 20px;padding:10px 0;color:#111;font-size:inherit;font-weight:400;text-decoration:none}
  .app-shell.is-employee .worker-privacy-contact{margin:3px 7px 0!important;color:#777;font-size:9px;text-align:center}
  .app-shell.is-employee .worker-privacy-contact a{color:#777}
}

/* Figma Profile1 (1:3): keskitetty profiilihero ennen valikkokortteja. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view){padding:0 0 calc(28px + env(safe-area-inset-bottom));background:#faf9f6}
  .app-shell.is-employee .worker-profile-view{max-width:none;margin:0;background:#faf9f6}
  .app-shell.is-employee .worker-profile-page-head{display:grid;grid-template-columns:20px minmax(0,1fr) 20px;align-items:end;box-sizing:border-box;height:calc(56px + env(safe-area-inset-top));min-height:calc(56px + env(safe-area-inset-top));padding:0 25px 17px;background:#faf9f6}
  .app-shell.is-employee .worker-profile-page-head h2{justify-self:center;margin:0;color:#000;font-size:18px;font-weight:400;line-height:23px}
  .app-shell.is-employee .worker-profile-page-head button{display:grid;place-items:center;width:20px;height:20px;margin:0;padding:0;border:0;background:transparent;color:#000}
  .app-shell.is-employee .worker-profile-page-head button svg{width:20px;height:20px;stroke-width:2}
  .app-shell.is-employee .worker-profile-page-head .worker-profile-back svg{transform:rotate(180deg)}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:1fr;justify-items:center;align-content:start;box-sizing:border-box;gap:0;height:330px;margin:0;padding:29px 18px 25px;border:0;background:#faf9f6;text-align:center}
  .app-shell.is-employee .worker-profile-photo{position:relative;display:block;width:152px;height:152px}
  .app-shell.is-employee .worker-profile-avatar{width:152px;height:152px;border:6px solid #355e3b;background:#edf4fc;color:#0046ad;font-size:32px}
  .app-shell.is-employee .worker-profile-camera{right:4px;bottom:4px;width:34px;height:34px;border:2px solid #fff;background:#355e3b}
  .app-shell.is-employee .worker-profile-camera svg{width:19px;height:19px;stroke-width:2.2}
  .app-shell.is-employee .worker-profile-identity-copy{display:grid;justify-items:center;gap:0;min-width:0;margin-top:17px}
  .app-shell.is-employee .worker-profile-identity-copy h3{max-width:100%;margin:0;color:#000;font-size:23px;font-weight:400;line-height:30px;text-align:center}
  .app-shell.is-employee .worker-profile-email{max-width:100%;margin:0;color:#000;font-size:13px;line-height:17px;text-align:center}
  .app-shell.is-employee .worker-profile-edit{width:auto;min-width:104px;min-height:36px;margin-top:24px;padding:10px 22px;border-radius:35px;background:#e9e9e9;color:#000;font-size:12px;font-weight:400;line-height:16px;box-shadow:0 1px 2px rgba(12,12,13,.1),0 1px 2px rgba(12,12,13,.05)}
  .app-shell.is-employee .worker-profile-settings{gap:26px;padding:0 12.5px;background:#faf9f6}
}

/* Figma Settings (8:336): profiilivalintojen koko näytön alanäkymät. */
.worker-profile-subview{min-height:100%;background:#faf9f6}
.worker-profile-subhead{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;align-items:center;background:#fff}
.worker-profile-subhead h2{justify-self:center;margin:0;color:#000;font-weight:400}
.worker-profile-subhead button{display:grid;place-items:center;border:0;background:transparent;color:#000}
.worker-profile-subhead .worker-profile-subback svg{transform:rotate(180deg)}
.worker-profile-subcontent{display:grid}
.worker-profile-settings-group{display:grid}
.worker-profile-settings-group>h3{margin:0;color:#111;font-weight:500}
.worker-profile-settings-card{overflow:hidden;background:#fff}
.worker-profile-empty-copy{margin:0;padding:21px;color:#6f6f6f}
.worker-profile-version{margin:4px 0 0;color:var(--muted);font-size:11px;font-weight:400;line-height:1.4;text-align:center}

@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-subview){padding:0 0 calc(28px + env(safe-area-inset-bottom));background:#faf9f6}
  .app-shell.is-employee .worker-profile-subhead{box-sizing:border-box;height:calc(74px + env(safe-area-inset-top));padding:0 22px 32px}
  .app-shell.is-employee .worker-profile-subhead h2{font-size:18px;line-height:23px}
  .app-shell.is-employee .worker-profile-subhead button{width:28px;height:28px;padding:0}
  .app-shell.is-employee .worker-profile-subhead button:last-child{justify-self:end}
  .app-shell.is-employee .worker-profile-subhead button svg{width:20px;height:20px;stroke-width:2}
  .app-shell.is-employee .worker-profile-subcontent{gap:26px;padding:24px 12.5px 4px}
  .app-shell.is-employee .worker-profile-settings-group{gap:18px}
  .app-shell.is-employee .worker-profile-settings-group>h3{padding:0 8.5px;font-size:18px;line-height:23px}
  .app-shell.is-employee .worker-profile-settings-card,
  .app-shell.is-employee .worker-profile-push-group .worker-push-options{border:0;border-radius:12px;background:#fff;box-shadow:0 8px 17px rgba(33,35,34,.11),0 1px 2px rgba(33,35,34,.035)}
  .app-shell.is-employee .worker-profile-subview .profile-detail{grid-template-columns:40px minmax(0,1fr);gap:15px;min-height:76px;margin:0 21px;padding:10px 0;border-bottom:1px solid #ececec}
  .app-shell.is-employee .worker-profile-subview .profile-detail:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-subview .worker-settings-row{grid-template-columns:40px minmax(0,1fr) 18px;gap:15px;width:auto;min-height:76px;margin:0 21px;padding:10px 0;border-bottom:1px solid #ececec}
  .app-shell.is-employee .worker-profile-subview .worker-settings-row:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-subview .worker-settings-copy strong,
  .app-shell.is-employee .worker-profile-subview .profile-detail-copy strong{color:#111;font-size:15px;font-weight:500;line-height:1.3}
  .app-shell.is-employee .worker-profile-subview .worker-settings-copy small,
  .app-shell.is-employee .worker-profile-subview .profile-detail-copy small{color:#777;font-size:9px;line-height:1.35}
  .app-shell.is-employee .worker-profile-subview .worker-profile-help{margin:-10px 8.5px 0;color:#777;font-size:10px;line-height:1.45}
  .app-shell.is-employee .worker-profile-push-group{gap:18px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-section{display:grid;gap:0;margin:0;padding:0;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading{margin:0 8.5px 18px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading>div .eyebrow{display:block;margin:0;color:#6b6b6b;font-size:17px;font-weight:700;letter-spacing:0;line-height:22px;text-transform:uppercase}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading h3{display:none}
  .app-shell.is-employee .worker-profile-push-group .worker-push-options{margin:0}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle{margin:0 21px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-intro{margin:0 8.5px 14px;font-size:11px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-help,
  .app-shell.is-employee .worker-profile-push-group .worker-push-local-note,
  .app-shell.is-employee .worker-profile-push-group .worker-push-warning{margin-right:8.5px;margin-left:8.5px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-enable{box-sizing:border-box;width:calc(100% - 17px);margin:0 8.5px}
  .app-shell.is-employee .worker-profile-subview .worker-account-actions{margin:0}
  .app-shell.is-employee .worker-profile-subview .worker-legal-menu{display:grid}
  .app-shell.is-employee .worker-profile-subview .worker-privacy-contact{margin:0;padding:17px 21px;color:#777;font-size:10px;text-align:left}
}

/* Profiilin sovellusilme: sama sinivalkoinen väripaletti ja Avenir-typografia kuin muualla työntekijänäkymässä. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view),
  .app-shell.is-employee .worker-profile-view,
  .app-shell.is-employee .worker-profile-identity,
  .app-shell.is-employee .worker-profile-settings,
  .app-shell.is-employee .worker-profile-subview,
  .app-shell.is-employee #viewRoot:has(>.worker-profile-subview){background:var(--paper);color:var(--ink);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .app-shell.is-employee .worker-profile-page-head{background:var(--paper)}
  .app-shell.is-employee .worker-profile-page-head h2,
  .app-shell.is-employee .worker-profile-subhead h2{color:var(--ink);font-weight:700;letter-spacing:-.025em}
  .app-shell.is-employee .worker-profile-page-head button,
  .app-shell.is-employee .worker-profile-subhead button{color:var(--accent-dark)}
  .app-shell.is-employee .worker-profile-subhead{border-bottom:1px solid var(--line-soft);background:var(--surface)}
  .app-shell.is-employee .worker-profile-avatar{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark);box-shadow:0 10px 26px rgba(0,70,173,.13)}
  .app-shell.is-employee .worker-profile-camera{border-color:var(--surface);background:var(--accent);box-shadow:0 3px 8px rgba(0,70,173,.2)}
  .app-shell.is-employee .worker-profile-identity-copy h3{color:var(--accent-dark);font-weight:700;letter-spacing:-.035em}
  .app-shell.is-employee .worker-profile-email{margin-top:2px;color:var(--muted);font-weight:500}
  .app-shell.is-employee .worker-profile-edit{border:1px solid #a9c7e6;background:var(--surface);color:var(--accent-dark);font-weight:650;box-shadow:0 5px 13px rgba(0,70,173,.08);transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s,background .18s}
  .app-shell.is-employee .worker-profile-edit:active{border-color:var(--accent);background:var(--accent-soft);transform:scale(.97)}
  .app-shell.is-employee .worker-profile-menu-card,
  .app-shell.is-employee .worker-profile-logout-card,
  .app-shell.is-employee .worker-profile-settings-card,
  .app-shell.is-employee .worker-profile-push-group .worker-push-options{border:0;background:var(--surface);box-shadow:0 10px 24px rgba(0,70,173,.075),0 2px 5px rgba(0,58,142,.035)}
  .app-shell.is-employee .worker-profile-menu-row,
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row,
  .app-shell.is-employee .worker-profile-logout-card>button,
  .app-shell.is-employee .worker-profile-subview .worker-settings-row,
  .app-shell.is-employee .worker-profile-subview .profile-detail{border-color:var(--line-soft);color:var(--ink)}
  .app-shell.is-employee .worker-settings-icon{background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row .worker-settings-copy strong,
  .app-shell.is-employee .worker-profile-logout-card>button>span:nth-child(2),
  .app-shell.is-employee .worker-profile-subview .worker-settings-copy strong,
  .app-shell.is-employee .worker-profile-subview .profile-detail-copy strong{color:var(--ink);font-weight:700;letter-spacing:-.012em}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row>svg,
  .app-shell.is-employee .worker-profile-logout-card>button>svg,
  .app-shell.is-employee .worker-profile-subview .worker-settings-row>svg{color:var(--faint)}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row,
  .app-shell.is-employee .worker-profile-logout-card>button,
  .app-shell.is-employee .worker-profile-subview .worker-settings-row{transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s,color .18s}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row:active,
  .app-shell.is-employee .worker-profile-logout-card>button:active,
  .app-shell.is-employee .worker-profile-subview .worker-settings-row:active{background:var(--accent-soft);transform:scale(.985)}
  .app-shell.is-employee .worker-profile-settings-group>h3,
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading>div .eyebrow{padding:0 8.5px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;line-height:16px;text-transform:uppercase}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading{margin-right:0;margin-left:0}
  .app-shell.is-employee .worker-profile-subview .worker-settings-copy small,
  .app-shell.is-employee .worker-profile-subview .profile-detail-copy small,
  .app-shell.is-employee .worker-profile-help,
  .app-shell.is-employee .worker-push-intro,
  .app-shell.is-employee .worker-push-help,
  .app-shell.is-employee .worker-push-state,
  .app-shell.is-employee .worker-profile-subview .worker-privacy-contact{color:var(--muted)}
  .app-shell.is-employee .worker-push-toggle{border-color:var(--line-soft)}
  .app-shell.is-employee .worker-push-toggle input{background:#c8d2df}
  .app-shell.is-employee .worker-push-toggle input:checked{background:var(--accent)}
  .app-shell.is-employee .worker-push-toggle input:focus-visible{outline-color:var(--accent)}
  .app-shell.is-employee .worker-push-disable{color:var(--accent-dark);font-weight:650}
  .app-shell.is-employee .worker-settings-row.is-subtle-danger .worker-settings-icon{background:var(--red-soft);color:var(--red)}
  .app-shell.is-employee .worker-settings-row.is-subtle-danger .worker-settings-copy strong{color:var(--red)}
  .app-shell.is-employee .worker-profile-subview .worker-privacy-contact a{color:var(--accent-dark);font-weight:650}
  .app-shell.is-employee .worker-profile-avatar,
  .app-shell.is-employee .worker-profile-camera,
  .app-shell.is-employee .worker-profile-edit,
  .app-shell.is-employee .worker-profile-menu-card,
  .app-shell.is-employee .worker-profile-logout-card,
  .app-shell.is-employee .worker-profile-settings-card,
  .app-shell.is-employee .worker-profile-push-group .worker-push-options,
  .app-shell.is-employee .worker-push-toggle input::before{box-shadow:none}
}

/* Profiilin kompakti intro: kuva ja henkilötiedot yhtenä toiminnallisena kokonaisuutena. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view),
  .app-shell.is-employee #viewRoot:has(>.worker-profile-subview){padding-bottom:calc(var(--bottom-nav) + var(--safe-area-bottom) + 28px)}
  .app-shell.is-employee .worker-profile-title{padding:24px 20px 13px;background:var(--paper)}
  .app-shell.is-employee .worker-profile-title h2{margin:0;color:var(--reference-header);font-family:inherit;font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
  .app-shell.is-employee .worker-profile-page-head{grid-template-columns:32px minmax(0,1fr) 32px;align-items:center;height:56px;min-height:56px;padding:0 18px;border-bottom:1px solid var(--line-soft);background:var(--surface)}
  .app-shell.is-employee .worker-profile-page-head button{width:32px;height:32px}
  .app-shell.is-employee .worker-profile-page-head h2{font-size:18px;line-height:23px}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:88px minmax(0,1fr);justify-items:stretch;align-items:center;column-gap:17px;height:auto;min-height:120px;padding:15px 20px 17px;border-bottom:1px solid var(--line-soft);background:var(--paper);text-align:left}
  .app-shell.is-employee .worker-profile-photo{display:block;width:88px;height:88px}
  .app-shell.is-employee .worker-profile-photo>button{position:relative;display:block;width:88px;height:88px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none}
  .app-shell.is-employee .worker-profile-photo>button:active{transform:scale(.97)}
  .app-shell.is-employee .worker-profile-photo>button:focus-visible{outline:3px solid rgba(0,70,173,.3);outline-offset:3px}
  .app-shell.is-employee .worker-profile-avatar{width:88px;height:88px;border:0;font-size:23px}
  .app-shell.is-employee .worker-profile-camera{right:0;bottom:0;width:27px;height:27px}
  .app-shell.is-employee .worker-profile-camera svg{width:15px;height:15px}
  .app-shell.is-employee .worker-profile-identity-copy{align-self:center;justify-items:start;margin:0}
  .app-shell.is-employee .worker-profile-identity-copy h3{overflow:hidden;max-width:100%;font-size:22px;line-height:27px;text-align:left;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-company{overflow:hidden;max-width:100%;margin:1px 0 0;color:var(--ink);font-size:12px;font-weight:650;line-height:16px;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-email{overflow:hidden;max-width:100%;margin-top:0;font-size:11px;line-height:16px;text-align:left;text-overflow:ellipsis;white-space:nowrap}
  .app-shell.is-employee .worker-profile-edit{align-self:start;justify-self:start;min-width:0;min-height:34px;margin:0;padding:7px 15px;border-radius:17px;font-size:11px;line-height:16px}
  .app-shell.is-employee .worker-profile-settings{padding-top:20px}
}

/* Profiilin alanäkymät: normaali sivuotsikko ilman erillistä navigaatiopalkkia. */
@media(max-width:767px){
  .app-shell.is-employee .worker-profile-subhead{display:grid;grid-template-columns:1fr;justify-items:start;box-sizing:border-box;height:auto;min-height:0;padding:16px 76px 4px 20px;border:0;background:var(--paper)}
  .app-shell.is-employee .worker-profile-subhead .worker-profile-subback{display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;width:auto;height:44px;margin:-6px 0 0 -8px;padding:0 8px;border:0;background:transparent;color:var(--accent-dark);font-size:14px;font-weight:700}
  .app-shell.is-employee .worker-profile-subhead .worker-profile-subback svg{width:18px;height:18px;transform:rotate(180deg)}
  .app-shell.is-employee .worker-profile-subhead h2{justify-self:start;margin:7px 0 0;color:var(--reference-header);font-family:inherit;font-size:24px;font-weight:700;letter-spacing:-.03em;line-height:1.15}
  .app-shell.is-employee .worker-profile-subcontent{padding-top:20px}
  .app-shell.is-employee .mobile-refresh-button{position:fixed;top:auto;right:16px;bottom:calc(var(--bottom-nav) + var(--safe-area-bottom) + 14px);width:50px;height:50px;border:0;background:var(--surface);color:var(--reference-header);box-shadow:0 3px 7px -3px rgba(20,32,48,.3),0 1px 2px rgba(20,32,48,.1)}
  .app-shell.is-employee .mobile-refresh-button svg{width:22px;height:22px}
}

/* Ilmoitukset: sama reunaton, ryhmitelty mobiili-ilme kuin profiilissa. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-notifications-view){padding:0 0 calc(30px + var(--safe-area-bottom));background:var(--paper)}
  .app-shell.is-employee .worker-notifications-view{min-height:100%;background:var(--paper)}
  .app-shell.is-employee .worker-notifications-view>.page-lead{margin:0;padding:24px 72px 13px 20px}
  .app-shell.is-employee .worker-notifications-view>.page-lead h2{font-family:inherit;font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
  .app-shell.is-employee .worker-notifications-view>.page-lead p{margin-top:8px;font-size:12px;line-height:1.45}
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view) .mobile-refresh-button{position:absolute;top:82px;right:16px;bottom:auto}
  .app-shell.is-employee .worker-notifications-view .notification-list{display:grid;gap:0;margin:15px 12.5px 0;overflow:hidden;border:0;border-radius:12px;background:var(--surface);box-shadow:none}
  .app-shell.is-employee .worker-notifications-view .notification-row{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:15px;width:auto;min-height:88px;margin:0 21px;padding:14px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;box-shadow:none;overflow:visible;text-align:left}
  .app-shell.is-employee .worker-notifications-view .notification-row:last-child{border-bottom:0}
  .app-shell.is-employee .worker-notifications-view .notification-row:is(button):hover{background:transparent}
  .app-shell.is-employee .worker-notifications-view .notification-row:is(button):active{transform:scale(.985)}
  .app-shell.is-employee .worker-notifications-view .notification-icon{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-notifications-view .notification-icon svg{width:18px;height:18px;stroke-width:2}
  .app-shell.is-employee .worker-notifications-view .notification-copy{display:grid;min-width:0;gap:4px}
  .app-shell.is-employee .worker-notifications-view .notification-row strong{color:var(--ink);font-size:14px;font-weight:700;letter-spacing:-.012em;line-height:1.3}
  .app-shell.is-employee .worker-notifications-view .notification-row p{margin:0;color:var(--muted);font-size:11px;line-height:1.4}
  .app-shell.is-employee .worker-notifications-view .notification-row time{align-self:start;margin-top:4px;padding:0;background:transparent;color:var(--muted);font-size:9px;font-weight:650;white-space:nowrap}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread{padding-left:0;border-color:var(--line-soft);background:transparent}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread::before{top:17px;right:auto;bottom:auto;left:30px;z-index:1;width:8px;height:8px;border:2px solid var(--surface);border-radius:50%;background:var(--accent)}
  .app-shell.is-employee .worker-notifications-view .empty-state{margin:0;border:0;border-radius:12px;background:var(--surface);box-shadow:none}
}

/* Työntekijän työvuoropaneeli: sovelluksen muun mobiili-ilmeen mukainen pohjapaneeli. */
@media(max-width:767px){
  .dialog{border:0}
  .dialog:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  #editorDialog.dialog:has(.worker-mass-review){max-height:min(90dvh,calc(100dvh - max(48px,env(safe-area-inset-top))))}
  .dialog:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet))::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)){box-sizing:border-box;max-height:calc(100dvh - 18px);overflow:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)) .dialog-head{position:sticky;top:0;z-index:2;align-items:center;margin:0 -20px 0;padding:22px 20px 16px;border:0;background:var(--surface)}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)) .dialog-head h2{max-width:calc(100vw - 100px);margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.15}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)) .dialog-head p{margin-top:4px;color:var(--muted);font-size:11px;font-weight:650}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .dialog-surface:is(:has(.worker-shift-detail),:has(#workerActualForm),:has(.worker-mass-review),:has(.worker-calendar-day-sheet)) .dialog-head .icon-button svg{width:19px;height:19px;stroke-width:2}
  .worker-calendar-day-sheet{display:grid;gap:0}
  .worker-calendar-day-sheet .worker-calendar-day-list{margin-bottom:2px}
  .worker-shift-detail{display:grid;gap:14px}
  .worker-shift-detail>.inline-message{display:grid;gap:3px;margin:0;padding:13px 15px;border:0;border-radius:12px;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;line-height:1.45}
  .worker-shift-detail>.inline-message strong{font-size:12px;font-weight:750}
  .worker-shift-summary{display:grid;gap:15px;padding:17px 16px;border:0;border-radius:14px;background:var(--paper)}
  .worker-shift-detail .detail-time,.worker-shift-detail .detail-address{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:11px;margin:0}
  .worker-shift-detail .detail-time{color:var(--ink);font-size:16px;font-weight:750;line-height:1.4}
  .worker-shift-detail .detail-address{color:var(--muted);font-size:12px;line-height:1.5}
  .worker-shift-detail .detail-time svg,.worker-shift-detail .detail-address svg{width:20px;height:20px;margin-top:1px;color:var(--accent-dark);stroke-width:1.9}
  .worker-shift-detail .worker-contact-actions{gap:7px;margin-top:1px;padding-left:33px}
  .worker-shift-detail .worker-contact-actions .button{min-height:38px;padding:8px 0;border:0;background:transparent;color:var(--accent-dark);font-size:11px;font-weight:750;box-shadow:none}
  .worker-shift-detail .worker-contact-actions .button svg{width:16px;height:16px}
  .worker-shift-detail .instruction-box{margin:0;padding:15px 16px;border:0;border-radius:14px;background:var(--paper);color:var(--ink);font-size:12px;line-height:1.5}
  .worker-shift-detail .instruction-box strong{margin-bottom:5px;color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.07em;text-transform:uppercase}
  .worker-shift-detail .visit-instruction{border:0;background:var(--accent-soft)}
  .worker-shift-detail .worker-request-status,.worker-shift-detail .worker-actual-status{border:0;border-radius:14px;box-shadow:none}
  .worker-shift-detail>.dialog-actions{display:grid;grid-template-columns:1fr;gap:9px;margin-top:2px;padding:4px 0 0}
  .worker-shift-detail>.dialog-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  .worker-shift-detail>.dialog-actions .button.primary{border-color:var(--accent);background:var(--accent);color:#fff}
  .worker-shift-detail>.dialog-actions .button.secondary{border-color:#a9c7e6;background:var(--surface);color:var(--accent-dark)}
  #editorDialog .dialog-surface:has(.worker-mass-review){max-height:min(90dvh,calc(100dvh - max(48px,env(safe-area-inset-top))));overflow:hidden;padding-bottom:0}
  .dialog-surface:has(.worker-mass-review) .worker-mass-review{min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;border:0;border-radius:14px;background:var(--paper)}
  .dialog-surface:has(.worker-mass-review) .worker-mass-review>div{grid-template-columns:92px minmax(0,1fr);gap:12px;margin:0 15px;padding:13px 0;border-bottom:1px solid var(--line-soft)}
  .dialog-surface:has(.worker-mass-review) .worker-mass-review>div:last-child{border-bottom:0}
  .dialog-surface:has(.worker-mass-review) .worker-actual-summary{grid-template-columns:84px minmax(0,1fr) 30px;gap:10px;min-height:72px;padding:10px 6px}
  .dialog-surface:has(.worker-mass-review) .worker-actual-summary time{font-size:10px;font-weight:500}
  .dialog-surface:has(.worker-mass-review) .worker-actual-summary time strong{white-space:nowrap}
  .dialog-surface:has(.worker-mass-review) .worker-actual-summary time strong,.dialog-surface:has(.worker-mass-review) .worker-actual-summary>span>strong{font-size:12px;font-weight:600}
  .dialog-surface:has(.worker-mass-review) .worker-actual-summary small{color:#8a6a3d;font-weight:400}
  .dialog-surface:has(.worker-mass-review) .worker-actual-time.is-split{display:grid;gap:1px;line-height:1.25;white-space:normal}
  .dialog-surface:has(.worker-mass-review) .worker-actual-time.is-split>span{white-space:nowrap}
  .dialog-surface:has(.worker-mass-review)>.dialog-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:0 -20px;padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface)}
  .dialog-surface:has(.worker-mass-review)>.dialog-actions .button{min-width:0;min-height:50px;border-radius:12px;box-shadow:none}
}

/* Mobiilin alapaneelit liikkuvat henkilökortin tapaan kumpaankin suuntaan. */
@media(max-width:767px){
  .dialog[open][data-bottom-sheet="true"]{
    animation:hkp-bottom-sheet-in 280ms cubic-bezier(.22,1,.36,1) both;
  }
  .dialog[open][data-bottom-sheet="true"]::backdrop{
    animation:hkp-bottom-sheet-backdrop-in 280ms ease-out both;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  .dialog[open][data-bottom-sheet="true"][data-closing="true"]{
    animation:hkp-bottom-sheet-out 280ms cubic-bezier(.55,0,.78,0) both;
  }
  .dialog[open][data-bottom-sheet="true"][data-closing="true"]::backdrop{
    animation:hkp-bottom-sheet-backdrop-out 280ms ease-in both;
  }
  @keyframes hkp-bottom-sheet-in{
    from{transform:translateY(100%)}
    to{transform:translateY(0)}
  }
  @keyframes hkp-bottom-sheet-out{from{transform:translateY(0)}to{transform:translateY(100%)}}
  @keyframes hkp-bottom-sheet-backdrop-in{
    from{opacity:0}
    to{opacity:1}
  }
  @keyframes hkp-bottom-sheet-backdrop-out{from{opacity:1}to{opacity:0}}
}

@media(max-width:767px) and (prefers-reduced-motion:reduce){
  .dialog[open][data-bottom-sheet="true"],
  .dialog[open][data-bottom-sheet="true"]::backdrop{
    animation:none;
  }
}

.android-pwa-use-shell{align-content:start}

/* Työntekijän omien asiakkaiden julkaistut kuukausikäynnit. */
.worker-client-lists{width:min(100%,760px);box-sizing:border-box;margin:0 auto}
.worker-client-list-intro,.worker-client-list-detail>p{margin:0;color:var(--muted);font-size:14px;line-height:1.5}
.worker-client-list-intro{padding:0 8px}
.app-shell.is-employee .worker-client-list-sources .worker-profile-settings-card>.worker-settings-row{box-sizing:border-box;width:100%;margin:0;padding-right:21px;padding-left:21px}
.worker-client-list-return{display:inline-flex;align-items:center;gap:7px;justify-self:start;min-height:44px;padding:0 8px;border:0;background:transparent;color:var(--accent-dark);font:inherit;font-size:14px;font-weight:700}
.worker-client-list-return svg{width:18px;height:18px;transform:rotate(180deg)}
.worker-client-list-detail{gap:14px;padding:0 8px}
.worker-client-list-detail>h3{padding:0!important;color:var(--reference-header)!important;font-size:24px!important;font-weight:700!important;letter-spacing:-.03em!important;line-height:1.2!important;text-transform:none!important}
.worker-client-list-month{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:700}
.worker-client-list-month select{width:100%;min-height:48px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);font:inherit;font-size:15px}
.worker-client-visits{overflow:hidden;border-radius:14px;background:var(--surface)}
.worker-client-visit{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(0,1fr);gap:12px;align-items:center;min-height:70px;margin:0 16px;padding:12px 0;border-bottom:1px solid var(--line-soft);color:var(--ink);font-size:14px}
.worker-client-visit:last-child{border-bottom:0}
.worker-client-visit time{display:grid;gap:4px}.worker-client-visit time strong{font-size:14px}.worker-client-visit time span{color:var(--muted);font-size:13px}
.worker-client-visit time .worker-client-visit-duration{color:var(--accent-dark);font-weight:650}
.worker-client-visit-person{display:flex;align-items:center;gap:9px;min-width:0;font-weight:650}
.worker-client-visit-avatar{display:grid;flex:none;place-items:center;width:34px;height:34px;overflow:hidden;border-radius:50%;background:#edf4fb;color:var(--accent-dark);font-size:11px;font-weight:800;line-height:1}
.worker-client-visit-avatar img{display:block;width:100%;height:100%;object-fit:cover}
.worker-client-visit-name{min-width:0;overflow-wrap:anywhere}
.worker-client-list-empty,.worker-client-list-error{margin:0;padding:20px;color:var(--muted);font-size:14px;line-height:1.5}
.worker-client-list-error{color:var(--red)}.worker-client-list-error button{min-height:44px;padding:0 6px;border:0;background:transparent;color:var(--accent-dark);font:inherit;font-weight:700}
.worker-client-list-count{margin:0;color:var(--muted);font-size:13px}
@media(max-width:380px){.worker-client-visit{grid-template-columns:minmax(108px,.8fr) minmax(0,1fr);gap:8px}.worker-client-visit-avatar{width:30px;height:30px}.worker-client-visit-person{gap:7px}}
.android-pwa-install-card{margin-top:25px}
#pwaInstallGate .android-pwa-install-button{min-height:54px;margin-top:14px;border:1px solid #fff;border-radius:999px;background:#fff;color:var(--reference-sidebar);font-weight:750;box-shadow:0 5px 14px rgba(0,38,96,.24)}
#pwaInstallGate .android-pwa-install-button:hover{border-color:#fff;background:#f4f8ff;color:var(--reference-sidebar)}
#pwaInstallGate .android-pwa-install-button:focus-visible{outline:3px solid rgba(255,255,255,.5);outline-offset:3px}
.android-pwa-open-steps{margin-top:28px}
.android-pwa-gate-foot{gap:13px}
.android-pwa-gate-foot>details{width:100%;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(255,255,255,.2);text-align:left}
.android-pwa-gate-foot>details summary{min-height:44px;padding:13px 1px;color:rgba(255,255,255,.78);font-size:12px;font-weight:600;cursor:pointer}
.android-pwa-gate-foot>details p{margin:0 1px 5px;color:rgba(255,255,255,.68);font-size:11px;line-height:1.5}
.android-pwa-gate-foot>details .text-action{width:100%;margin-bottom:7px;color:#fff;text-align:left}

/* Johdon oma profiili: sama kieli kuin muussa hallintanäkymässä, ei venytettyä mobiililistaa. */
.app-shell:not(.is-employee) #viewRoot:has(>.manager-own-profile){padding:44px 42px 64px;background:var(--paper)}
.app-shell:not(.is-employee) .manager-own-profile{box-sizing:border-box;width:min(100%,900px);margin:0 auto;color:var(--ink)}
.app-shell:not(.is-employee) .manager-profile-head{display:flex;align-items:end;justify-content:space-between;margin:0 0 20px}
.app-shell:not(.is-employee) .manager-profile-head .eyebrow{margin:0 0 5px;color:var(--accent-dark);font-size:10px;font-weight:800;letter-spacing:.09em}
.app-shell:not(.is-employee) .manager-profile-head h2{margin:0;color:var(--ink);font-size:30px;font-weight:750;letter-spacing:-.04em;line-height:1.1}
.app-shell:not(.is-employee) .manager-profile-head p:last-child{max-width:56ch;margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.app-shell:not(.is-employee) .manager-profile-surface{overflow:hidden;border:1px solid #e3e8ef;border-radius:18px;background:var(--surface);box-shadow:0 14px 34px rgba(23,54,96,.07)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-identity{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:24px;margin:0;padding:28px 30px;border:0;border-bottom:1px solid var(--line-soft);background:#fbfdff}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo{display:block;width:104px;height:104px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo>button{display:block;width:104px;height:104px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none;cursor:pointer;transition:transform .18s ease}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo>button:hover{transform:translateY(-2px)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo>button:active{transform:scale(.98)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo>button:focus-visible{outline:3px solid rgba(0,70,173,.25);outline-offset:3px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-avatar{position:relative;display:grid;place-items:center;width:104px;height:104px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:inset 0 0 0 1px rgba(0,70,173,.08);overflow:visible}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-avatar:has(img){overflow:hidden}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-avatar img{width:100%;height:100%;object-fit:cover}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-placeholder-person svg{width:28px;height:28px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-placeholder-add{position:absolute;right:3px;bottom:3px;display:grid;place-items:center;width:30px;height:30px;border:3px solid #fff;border-radius:50%;background:var(--accent);color:#fff}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-placeholder-add svg{width:14px;height:14px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-identity-copy{display:grid;justify-items:start;gap:3px;min-width:0}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-identity-copy h3{margin:0;color:var(--accent-dark);font-size:25px;font-weight:750;letter-spacing:-.035em;line-height:1.2}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-company{margin:2px 0 0;color:var(--ink);font-size:13px;font-weight:650}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-email{margin:0;color:var(--muted);font-size:12px}
.app-shell:not(.is-employee) .manager-profile-photo-hint{margin-top:9px;color:var(--accent-dark);font-size:11px;font-weight:700}
.app-shell:not(.is-employee) .manager-profile-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:26px 30px 28px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-settings-group{align-content:start;gap:10px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-settings-group>h3{margin:0;color:var(--ink);font-size:14px;font-weight:750}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-settings-card{overflow:hidden;border:1px solid #e5e9ef;border-radius:13px;background:#fff}
.app-shell:not(.is-employee) .manager-own-profile .profile-detail{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:12px;min-height:66px;margin:0 16px;padding:8px 0;border:0;border-bottom:1px solid var(--line-soft)}
.app-shell:not(.is-employee) .manager-own-profile .profile-detail:last-child{border-bottom:0}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark)}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-icon svg{width:18px;height:18px}
.app-shell:not(.is-employee) .manager-own-profile .profile-detail-copy{display:grid;gap:2px;min-width:0}
.app-shell:not(.is-employee) .manager-own-profile .profile-detail-copy small{color:var(--muted);font-size:10px}
.app-shell:not(.is-employee) .manager-own-profile .profile-detail-copy strong{overflow:hidden;color:var(--ink);font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.app-shell:not(.is-employee) .manager-own-profile .worker-account-actions{display:grid;gap:0}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-row{grid-template-columns:40px minmax(0,1fr) 18px;gap:12px;min-height:66px;margin:0 16px;padding:8px 0;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--ink)}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-row:last-child{border-bottom:0}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-row:hover{background:#f8fafc}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-row:active{transform:scale(.99)}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-copy strong{font-size:13px;font-weight:700}
.app-shell:not(.is-employee) .manager-own-profile .worker-settings-row>svg{width:17px;height:17px;color:var(--faint)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card{display:flex;justify-content:flex-end;margin:0;padding:0 30px 28px}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card>button{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;border:1px solid #d9dee6;border-radius:10px;background:#fff;color:var(--ink);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card>button:hover{border-color:#c8d1dc;background:#f8fafc}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card>button:active{transform:scale(.98)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card .worker-settings-icon{width:28px;height:28px;background:transparent;color:var(--ink)}
.app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card .worker-settings-icon svg{width:16px;height:16px}

@media(max-width:767px){
  .app-shell:not(.is-employee) #viewRoot:has(>.manager-own-profile){padding:22px 14px calc(var(--bottom-nav) + 28px);background:var(--paper)}
  .app-shell:not(.is-employee) .manager-profile-head{margin:0 4px 17px}
  .app-shell:not(.is-employee) .manager-profile-head h2{font-size:28px}
  .app-shell:not(.is-employee) .manager-profile-head p:last-child{font-size:12px}
  .app-shell:not(.is-employee) .manager-profile-surface{border:0;border-radius:16px;box-shadow:0 9px 24px rgba(23,54,96,.08)}
  .app-shell:not(.is-employee) .manager-own-profile .worker-profile-identity{grid-template-columns:82px minmax(0,1fr);gap:17px;padding:23px 20px}
  .app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo,.app-shell:not(.is-employee) .manager-own-profile .worker-profile-photo>button,.app-shell:not(.is-employee) .manager-own-profile .worker-profile-avatar{width:82px;height:82px}
  .app-shell:not(.is-employee) .manager-own-profile .worker-profile-identity-copy h3{font-size:21px}
  .app-shell:not(.is-employee) .manager-profile-photo-hint{font-size:10px;line-height:1.35}
  .app-shell:not(.is-employee) .manager-profile-grid{grid-template-columns:1fr;gap:21px;padding:22px 18px 24px}
  .app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card{justify-content:stretch;padding:0 18px 22px}
  .app-shell:not(.is-employee) .manager-own-profile .worker-profile-logout-card>button{justify-content:center;width:100%}
}

/* Manager desktop shell: mobile-blue header and a light navigation rail. */
@media(min-width:768px){
  .app-shell:not(.is-employee) .app-header{background:var(--reference-header);border-bottom:0;box-shadow:0 2px 8px rgba(33,35,34,.08)}
  .app-shell:not(.is-employee) .header-brand{padding:0 24px;border-right:1px solid rgba(255,255,255,.12)}
  .app-shell:not(.is-employee) .header-context{padding-right:24px;padding-left:38px}
  .app-shell:not(.is-employee) .app-header h1{font-size:18px;font-weight:600;letter-spacing:-.025em}
  .app-shell:not(.is-employee) .header-company{font-size:10px;font-weight:400;color:rgba(255,255,255,.72)}
  .app-shell:not(.is-employee) .sidebar{padding:20px 12px;border-right:1px solid rgba(0,40,112,.38);background:var(--shell-blue-deep);box-shadow:4px 0 14px rgba(33,35,34,.06)}
  .app-shell:not(.is-employee) .desktop-nav{gap:6px}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button{gap:12px;min-height:46px;padding:0 14px;border-radius:10px;background:transparent;color:rgba(255,255,255,.86);font-size:13px;font-weight:500;box-shadow:none}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button svg{width:20px;height:20px;stroke-width:1.75}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button:hover{background:rgba(255,255,255,.1);color:#fff}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button.is-active{border-left:3px solid var(--reference-header);background:#fff;color:var(--reference-header);font-weight:600;box-shadow:0 2px 6px rgba(33,35,34,.08)}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button.is-active svg{stroke-width:2}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button[data-view="reports"]{margin-top:20px}
  .app-shell:not(.is-employee) .sidebar .desktop-nav .nav-button[data-view="reports"]::before{top:-13px;left:14px;right:14px;background:var(--shell-line)}
  .app-shell:not(.is-employee) .sidebar .nav-badge{border:0;border-radius:20px;background:#eaf0f8;color:var(--accent-dark);font-weight:600}
  .app-shell:not(.is-employee) .sidebar .nav-button.is-active .nav-badge{background:#fff;color:var(--reference-header)}
  .app-shell:not(.is-employee) .header-chat-button{align-self:center;display:flex;align-items:center;justify-content:center;gap:7px;width:auto;min-width:76px;height:38px;margin:0 2px;padding:0 12px;border:0;border-radius:10px;background:rgba(255,255,255,.09);color:#fff}
  .app-shell:not(.is-employee) .header-chat-button:hover,.app-shell:not(.is-employee) .header-chat-button[aria-expanded="true"]{background:rgba(255,255,255,.17)}
  .app-shell:not(.is-employee) .header-chat-button svg{width:18px;height:18px;stroke-width:1.75}
  .app-shell:not(.is-employee) .header-chat-label{font-size:12px;font-weight:500}
  .app-shell:not(.is-employee) .chat-unread-badge{top:-4px;right:-3px;min-width:18px;height:18px;border:2px solid var(--reference-header);font-size:9px;font-weight:600}
  .app-shell:not(.is-employee) .header-account{height:42px;margin:0 16px 0 10px}
  .app-shell:not(.is-employee) .profile-trigger{height:42px;min-width:150px;grid-template-columns:32px minmax(0,1fr) 12px;gap:9px;padding:4px 10px;border-radius:10px}
  .app-shell:not(.is-employee) .profile-trigger:hover,.app-shell:not(.is-employee) .profile-trigger[aria-expanded="true"]{background:rgba(255,255,255,.12)}
  .app-shell:not(.is-employee) .header-avatar{display:grid;place-content:center;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:#fff;color:var(--reference-header);box-shadow:none;font-size:11px;font-weight:600;line-height:1;text-align:center}
  .app-shell:not(.is-employee) .profile-trigger-copy strong{font-size:12px;font-weight:600}
  .app-shell:not(.is-employee) .profile-trigger-copy small{font-size:10px;font-weight:400;color:rgba(255,255,255,.74)}
  .app-shell:not(.is-employee) .profile-chevron{opacity:.75}
  .app-shell:not(.is-employee) .profile-menu{padding:16px;border-color:var(--line-soft);border-radius:14px;background:#fff;box-shadow:0 10px 28px rgba(33,35,34,.14)}
  .app-shell:not(.is-employee) .profile-menu strong{color:var(--reference-header);font-weight:600}
  .app-shell:not(.is-employee) .header-chat-button:focus-visible,.app-shell:not(.is-employee) .profile-trigger:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .app-shell.is-calendar-manager .header-context{padding-right:16px;padding-left:18px}
  .app-shell.is-calendar-manager .calendar-header-today{font-weight:600;border-radius:9px}
  .app-shell.is-calendar-manager .calendar-header-current,.app-shell.is-calendar-manager .calendar-header-print,.app-shell.is-calendar-manager .calendar-header-exit{border-radius:9px;font-weight:500}
}
@media(min-width:768px) and (max-width:1100px){
  .app-shell:not(.is-employee) .header-context{padding-right:16px;padding-left:24px}
  .app-shell:not(.is-employee) .header-account{margin-right:10px;margin-left:6px}
  .app-shell:not(.is-employee) .profile-trigger{min-width:132px;padding-right:7px;padding-left:7px}
  .app-shell:not(.is-employee) .header-chat-button{min-width:64px;padding:0 9px}
  .app-shell.is-calendar-manager .header-context{padding:8px 10px}
}

/* Month overview: the same calendar surfaces without sacrificing the month-wide grid. */
@media(min-width:768px){
  .calendar-month-review{gap:12px;padding:12px;background:var(--surface-strong);color:var(--ink)}
  .calendar-month-review .month-review-toolbar{min-height:48px;padding:6px 12px;border:0;border-radius:12px;background:#fff;box-shadow:0 4px 12px rgba(33,35,34,.06)}
  .calendar-month-review .month-review-scope-switch{gap:3px;padding:3px;border:0;border-radius:10px;background:#eaf0f7}
  .calendar-month-review .month-review-scope-switch button{min-height:32px;padding:0 14px;border-radius:7px;font-size:11px;font-weight:500}
  .calendar-month-review .month-review-scope-switch button.is-active{color:var(--reference-header);box-shadow:0 2px 5px rgba(33,35,34,.07)}
  .calendar-month-review .month-review-summary{color:var(--muted);font-size:11px;font-weight:400;line-height:1.4}
  .calendar-month-review .month-review-main{min-width:0;border:1px solid var(--line-soft);border-radius:12px;background:#fff;box-shadow:0 6px 18px rgba(33,35,34,.07)}
  .calendar-month-review .month-review-main.is-compact{align-self:start}
  .calendar-month-review .month-review-matrix{border-radius:11px;scrollbar-color:#9caec4 #f3f6fa}
  .calendar-month-review .month-review-corner{min-height:60px;border-color:#d5dfeb;border-right-color:#8795a8;background:#f5f8fc;color:var(--reference-header)}
  .calendar-month-review .month-review-corner strong{font-size:12px;font-weight:600}
  .calendar-month-review .month-review-corner small{color:var(--muted);font-size:10px;font-weight:400}
  .calendar-month-review .month-review-week{position:sticky;top:0;height:28px;min-height:28px;border-color:#e2e7ed;background:#f0f5fb;color:var(--reference-header)}
  .calendar-month-review .month-review-week+.month-review-week{border-left:1px solid #8795a8}
  .calendar-month-review .month-review-week span{font-size:10px;font-weight:600;letter-spacing:0}
  .calendar-month-review .month-review-week.is-compact{padding-right:3px;padding-left:3px}
  .calendar-month-review .month-review-week.is-compact span{font-size:9px}
  .calendar-month-review .month-review-week.is-compact>.month-review-publication-check{top:2px;right:2px;font-size:7px}
  .calendar-month-review .month-review-week.is-published{background:#eef7f2;color:#24683a}
  .calendar-month-review .month-review-week small{margin-left:5px;color:#24683a;font-size:9px;font-weight:600}
  .calendar-month-review .month-review-day{position:sticky;top:28px;min-height:32px;gap:3px;border-right-color:#e2e7ed;border-bottom-color:#212322;background:#f8fafc;color:var(--muted)}
  .calendar-month-review .month-review-day span{font-size:8px;font-weight:500;line-height:1}
  .calendar-month-review .month-review-day strong{color:var(--ink);font-size:11px;font-weight:600}
  .calendar-month-review .month-review-day.is-weekend{background:#eff2f6}
  .calendar-month-review .month-review-day.is-published{background:#fff;color:#24683a}
  .calendar-month-review .month-review-day.is-week-start,.calendar-month-review .month-review-cell.is-week-start{border-left:1px solid #8795a8}
  .calendar-month-review .month-review-publication-check{position:absolute;top:4px;right:5px;color:#2d7a47;font-size:9px;font-style:normal;font-weight:700;line-height:1}
  .calendar-month-review .month-review-publication-dot{position:absolute;top:5px;right:5px;width:4px;height:4px;border-radius:50%;background:#d4a44d}
  .calendar-month-review .month-review-week>.month-review-publication-dot{top:12px;right:7px}
  .calendar-month-review .month-review-publication-dot.is-blocked{background:#c96258}
  .calendar-month-review .month-review-cell.is-weekend{background:#f8f9fb}
  .calendar-month-review .month-review-day.is-today{background:#e8f1ff;box-shadow:inset 0 2px 0 var(--reference-header)}
  .calendar-month-review .month-review-day.is-today strong{color:var(--reference-header)}
  .calendar-month-review .month-review-cell.is-today{background:#f1f6ff}
  .calendar-month-review .month-review-person{border-color:#e2e7ed;border-right-color:#8795a8}
  .calendar-month-review .month-review-person strong{font-size:11px;font-weight:600;white-space:normal;overflow-wrap:anywhere;line-height:1.35}
  .calendar-month-review .month-review-person small{color:var(--muted);font-size:10px;font-weight:400;line-height:1.35}
  .calendar-month-review .month-review-person-trigger{padding-top:8px;padding-bottom:8px}
  .calendar-month-review .month-review-person-trigger>svg{opacity:.6}
  .calendar-month-review .month-review-cell{border-color:#e2e7ed}
  .calendar-month-review .month-review-cell.has-unavailable{background:#fff}
  .calendar-month-review .month-review-cell.has-unavailable.is-weekend{background:#f8f9fb}
  .calendar-month-review .month-review-cell.has-availability-conflict{box-shadow:none}
  .calendar-month-review .month-review-cell.has-availability-conflict>.month-review-shift{border-left-color:#a23d31;background:#fff0ed;color:#8b3027}
  .calendar-month-review .month-review-cell.is-range-selected{background:#dceaff}
  .calendar-month-review .month-review-shift{padding:3px 1px 3px 3px;border-left-width:3px;border-radius:3px;background:#f1f5fa}
  .calendar-month-review .month-review-shift.is-published{background:#eef7f2}
  .calendar-month-review .month-review-shift.is-draft{background:#fff7e8}
  .calendar-month-review .month-review-shift.is-warning{background:#fff0ed}
  .calendar-month-review .month-review-shift:hover{background:#e3ecf8}
  .calendar-month-review .month-review-shift time{font-weight:600;line-height:1.25}
  .calendar-month-review .month-review-shift span{font-weight:400;line-height:1.3}
  .calendar-month-review .month-review-availability{font-weight:600;line-height:1.3;border-radius:3px}
  .calendar-month-review .month-review-availability.is-available{padding:2px 4px;background:#e3f3e9;color:#24683a}
  .calendar-month-review .month-review-availability.is-available:hover{background:#d4ebdc}
  .calendar-month-review .month-review-availability.is-unavailable{padding:2px 4px;background:#f8e4e1;color:#8b3027}
  .calendar-month-review .month-review-availability.is-unavailable:hover{background:#f1d3cf}
  .calendar-month-review .month-review-availability.is-limited{padding:2px 4px;background:#fff1d8;color:#815716}
  .calendar-month-review .month-review-availability.is-limited:hover{background:#f8e5c2}
  .calendar-month-review .month-review-group-divider{border-color:var(--line-soft);background:#edf4fc}
  .calendar-month-review .month-review-group-divider strong{font-weight:600;letter-spacing:.025em}
  .month-review-shift-popover,.month-review-cell-popover{border-color:var(--line-soft);border-radius:12px;box-shadow:0 10px 28px rgba(33,35,34,.14)}
  .month-review-popover-copy>strong,.month-review-cell-popover-head strong{color:var(--reference-header);font-weight:600;white-space:normal;overflow-wrap:anywhere}
  .month-review-cell-popover-head{background:#f5f8fc}
  .month-review-cell-popover-menu>button{min-height:36px;border-radius:7px;font-size:11px;font-weight:500}
  .month-review-popover-actions .button{border-radius:8px;font-weight:500}
}

/* Desktop calendar: quiet shared surfaces around a dense, readable planning grid. */
@media(min-width:768px){
  .app-shell.is-calendar-manager .view-root{padding:18px 24px 28px}
  .is-calendar-manager .calendar-command-bar{gap:12px;margin-bottom:16px;padding:6px;border:0;border-radius:14px;background:#fff;box-shadow:0 6px 16px rgba(33,35,34,.08),0 1px 3px rgba(33,35,34,.04)}
  .is-calendar-manager .calendar-stage-controls{gap:4px}
  .is-calendar-manager .calendar-stage-controls>button{min-width:116px;min-height:48px;padding:8px 14px;border:0;border-radius:9px;background:transparent}
  .is-calendar-manager .calendar-stage-controls>button.is-active{background:var(--accent-soft);color:var(--reference-header);box-shadow:none}
  .is-calendar-manager .calendar-stage-controls>button:hover:not(:disabled){background:#f2f6fb}
  .is-calendar-manager .calendar-stage-controls strong{font-size:12px;font-weight:600}
  .is-calendar-manager .calendar-stage-controls small{font-size:10px;font-weight:400;line-height:1.4}
  .is-calendar-manager .calendar-command-actions{gap:8px;padding:4px}
  .is-calendar-manager .calendar-command-actions .button{min-height:38px;border-radius:9px;font-size:12px;font-weight:600}
  .is-calendar-manager .calendar-command-actions .button.secondary{border-color:var(--line-soft);background:#f7f9fc}
  .is-calendar-manager .planner-filterbar{flex-wrap:wrap;gap:10px;min-height:40px;margin-bottom:12px}
  .is-calendar-manager .planner-filterbar .week-planning-switch{gap:3px;padding:3px;border:0;border-radius:11px;background:#eaf0f7}
  .is-calendar-manager .planner-filterbar .week-planning-switch>button{min-height:34px;padding:5px 11px;border:0;border-radius:8px;background:transparent}
  .is-calendar-manager .planner-filterbar .week-planning-switch>button.is-active{background:#fff;color:var(--reference-header);box-shadow:0 2px 5px rgba(33,35,34,.07)}
  .is-calendar-manager .planner-filterbar .week-planning-switch strong{font-size:11px;font-weight:600}
  .is-calendar-manager .planner-filterbar .week-planning-switch small{font-weight:400}
  .is-calendar-manager .planner-search input{width:200px;min-height:40px;padding:9px 12px;border-color:var(--line-soft);border-radius:10px;background:#fff;font-size:12px}
  .is-calendar-manager .planner-filterbar>span{font-size:11px;line-height:1.4}
  .is-calendar-manager .planner-filterbar>.button{font-size:11px;font-weight:500}
  .is-calendar-manager .week-planner-desktop,.is-calendar-manager .client-week-planner-desktop{border:1px solid var(--line-soft);border-radius:14px;background:#fff;box-shadow:0 6px 18px rgba(33,35,34,.07)}
  .is-calendar-manager .week-planner-head,.is-calendar-manager .client-week-head{min-height:48px;border-right-color:var(--line-soft);border-bottom:1px solid #ccd8e7;background:#f5f8fc;color:var(--ink)}
  .is-calendar-manager .week-planner-head>strong,.is-calendar-manager .client-week-head>strong{font-size:12px;font-weight:600}
  .is-calendar-manager .week-planner-day,.is-calendar-manager .client-week-day{color:var(--ink)}
  .is-calendar-manager .week-planner-day.is-today,.is-calendar-manager .client-week-day.is-today{background:#e8f1ff;color:var(--ink);box-shadow:inset 0 3px 0 var(--reference-header)}
  .is-calendar-manager .week-planner-person,.is-calendar-manager .client-week-person{border-color:var(--line-soft)}
  .is-calendar-manager .planner-person-link{gap:10px;border-radius:9px}
  .is-calendar-manager .planner-person-link .avatar{display:grid;place-content:center;place-items:center;flex-shrink:0;width:34px;height:34px;padding:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;font-weight:600;line-height:1;text-align:center}
  .is-calendar-manager .week-planner-person strong,.is-calendar-manager .client-week-person strong{font-size:12px;font-weight:600;white-space:normal;overflow-wrap:anywhere;line-height:1.35}
  .is-calendar-manager .week-planner-person small,.is-calendar-manager .client-week-person small{font-size:10px;font-weight:400;line-height:1.4}
  .is-calendar-manager .week-planner-cell,.is-calendar-manager .client-week-cell{border-color:var(--line-soft)}
  .is-calendar-manager .week-planner-cell.is-today,.is-calendar-manager .client-week-cell.is-today{background:#f6f9ff}
  .is-calendar-manager .week-planner-cell.has-unavailable,.is-calendar-manager .client-week-cell.has-client-unavailable{background:#fff8f7}
  .is-calendar-manager .planner-availability-trigger,.is-calendar-manager .client-availability-trigger{min-height:25px;border-radius:6px;font-size:9px;font-weight:500;letter-spacing:0}
  .is-calendar-manager .planner-availability-trigger:not(.is-available):not(.is-unavailable):not(.is-limited),.is-calendar-manager .client-availability-trigger:not(.is-unavailable):not(.is-exception){border-color:#edf0f5;background:#fafbfd;color:#7a8798}
  .is-calendar-manager .week-planner-shift,.is-calendar-manager .client-week-shift{padding:8px;border-radius:8px;border-top-color:var(--line-soft);border-right-color:var(--line-soft);border-bottom-color:var(--line-soft);box-shadow:0 2px 4px rgba(33,35,34,.04)}
  .is-calendar-manager .week-planner-shift time,.is-calendar-manager .client-week-shift time{color:var(--ink);font-size:11px;font-weight:600}
  .is-calendar-manager .week-planner-shift strong,.is-calendar-manager .client-week-shift strong{font-size:11px;font-weight:600;line-height:1.35}
  .is-calendar-manager .week-planner-shift small,.is-calendar-manager .client-week-shift small{font-size:10px;font-weight:400;line-height:1.4}
  .is-calendar-manager .week-planner-add svg,.is-calendar-manager .client-week-add svg{border-radius:50%;color:var(--accent-dark);opacity:.5}
  .is-calendar-manager .week-planner-group-divider,.is-calendar-manager .client-week-group-divider{position:relative;top:auto;left:auto;z-index:1;border-color:var(--line-soft);background:#edf4fc;box-shadow:none}
  .is-calendar-manager .week-planner-group-divider strong,.is-calendar-manager .client-week-group-divider strong{font-weight:600;letter-spacing:.025em}
  .is-calendar-manager .calendar-review-panel{border-color:var(--line-soft);border-radius:14px;background:#fff;box-shadow:0 6px 16px rgba(33,35,34,.08)}
  .is-calendar-manager .calendar-header-period .icon-button{border-radius:50%}
  .is-calendar-manager .calendar-header-week strong{font-weight:650}
  .is-calendar-manager .calendar-header-today,.is-calendar-manager .calendar-header-month{border-radius:9px;font-weight:600}
  .is-calendar-manager .calendar-scope-switch{border-radius:10px;box-shadow:none}
  .is-calendar-manager .calendar-scope-switch button{border-radius:7px;font-weight:500}
}

/* Manager home: shared mobile surfaces, with daily work alongside the review queue. */
.view-root:has(>.manager-home-surface){--home-surface-shadow:0 8px 18px rgba(33,35,34,.10),0 2px 5px rgba(33,35,34,.04)}
.view-root>.manager-home-surface{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.manager-home-surface .home-intro{align-items:center;gap:20px;padding:0;border:0}
.manager-home-surface .home-intro h2{margin:5px 0 0;color:var(--reference-header);font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.1}
.manager-home-surface .eyebrow{color:var(--muted);font-size:10px;font-weight:500;letter-spacing:.035em}
.manager-home-surface .home-intro p:last-child{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.5}
.manager-home-surface .home-actions .button,.manager-home-surface .week-flow-actions .button{min-height:42px;border-radius:10px;font-size:12px;font-weight:600}
.manager-home-surface .button.secondary{border-color:var(--line);color:var(--accent-dark)}
.manager-home-surface .week-flow-status,.manager-home-surface .attention-section.has-issues,.manager-home-surface .today-section,.manager-home-surface .manager-own-section{min-width:0;margin:0;padding:24px;border:0;border-radius:16px;background:#fff;box-shadow:var(--home-surface-shadow)}
.manager-home-surface .week-flow-status,.manager-home-surface .week-flow-status.is-empty{grid-template-columns:minmax(0,1fr) auto;gap:20px 24px}
.manager-home-surface .week-flow-copy{grid-template-columns:minmax(0,1fr);gap:10px}
.manager-home-surface .week-flow-copy>.status-pill{justify-self:start;margin:0;padding:4px 8px;border-radius:6px;font-size:10px;font-weight:600;letter-spacing:0}
.manager-home-surface .week-flow-copy h2{color:var(--reference-header);font-size:23px;font-weight:650;letter-spacing:-.03em;line-height:1.25}
.manager-home-surface .week-flow-copy p:last-child{max-width:70ch;color:var(--muted);font-size:13px;line-height:1.5}
.manager-home-surface .week-flow-copy .week-flow-review-summary{font-weight:500}
.manager-home-surface .week-flow-actions{grid-column:2;grid-row:1;align-self:center;max-width:260px}
.manager-home-surface .week-flow-metrics{grid-column:1/-1;grid-row:2;grid-template-columns:repeat(4,minmax(0,1fr));padding:18px 0 0;border-top:1px solid var(--line-soft)}
.manager-home-surface .week-flow-metrics>div{gap:5px;padding:0 20px;border-color:var(--line-soft)}
.manager-home-surface .week-flow-metrics>div:first-child{padding-left:0;border:0}
.manager-home-surface .week-flow-metrics dt{color:var(--muted);font-size:12px}
.manager-home-surface .week-flow-metrics dd{color:var(--reference-header);font-size:22px;font-weight:600}
.manager-home-surface .week-flow-metrics .has-warning dd{color:var(--red)}
.manager-home-surface .home-section-head{align-items:center;gap:14px;margin-bottom:16px}
.manager-home-surface .home-section-head h2{color:var(--reference-header);font-size:21px;font-weight:650;letter-spacing:-.03em;line-height:1.25}
.manager-home-surface .home-section-head p:last-child{color:var(--muted);font-size:12px;line-height:1.45}
.manager-home-surface .attention-total{padding:5px 9px;border-radius:20px;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;font-weight:500;white-space:nowrap}
.manager-home-surface .attention-list,.manager-home-surface .today-list,.manager-home-surface .manager-own-list{border:0}
.manager-home-surface .attention-row,.manager-home-surface .today-row,.manager-home-surface .manager-own-row{padding:15px 0;border-color:var(--line-soft)}
.manager-home-surface .attention-row:last-child,.manager-home-surface .today-row:last-child,.manager-home-surface .manager-own-row:last-child{border-bottom:0}
.manager-home-surface .attention-row:hover,.manager-home-surface .today-row:hover,.manager-home-surface .manager-own-row:hover{border-radius:8px;background:#f5f8fc}
.manager-home-surface .row-main strong{color:var(--ink);font-size:13px;font-weight:600;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.manager-home-surface .row-main span{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}
.manager-home-surface .issue-type{font-size:9px;font-weight:500;letter-spacing:.025em}
.manager-home-surface .attention-action,.manager-home-surface .section-action,.manager-home-surface .list-action{color:var(--accent-dark);font-size:11px;font-weight:600}
.manager-home-surface .attention-row{grid-template-columns:68px minmax(0,1fr) 18px;gap:4px 12px}
.manager-home-surface .attention-row .issue-type{grid-column:1;grid-row:1}
.manager-home-surface .attention-row .row-main{grid-column:2;grid-row:1}
.manager-home-surface .attention-row .attention-action{grid-column:2;grid-row:2;justify-self:start;white-space:normal}
.manager-home-surface .attention-row>.row-chevron,.manager-home-surface .attention-row>svg{grid-column:3;grid-row:1/3;align-self:center}
.manager-home-surface .home-clear-inline{min-height:0;padding:0 0 16px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--muted);font-size:12px}
.manager-home-surface .advisory-head{margin-top:24px}
.manager-home-surface .home-daily-grid,.manager-home-surface .home-daily-grid.has-own-shifts{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:24px}
.manager-home-surface .home-daily-grid.has-own-shifts .home-section-head{min-height:0;align-items:center}
.manager-home-surface .today-row{grid-template-columns:100px minmax(0,1fr) auto;gap:12px}
.manager-home-surface .today-row time,.manager-home-surface .manager-own-date strong{color:var(--reference-header);font-size:12px;font-weight:600}
.manager-home-surface .manager-own-date time{color:var(--muted);font-size:11px;font-weight:500}
.manager-home-surface .home-daily-grid .manager-own-row{grid-template-columns:90px minmax(0,1fr) 16px;gap:12px}
.manager-home-surface .list-action{min-height:40px;margin-top:8px;border:0;border-radius:9px;background:var(--accent-soft)}
.manager-home-surface .calm-empty{padding:12px 0;border:0;background:transparent}
.manager-home-surface .calm-empty-icon{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark)}
.manager-home-surface .calm-empty strong{font-size:13px;font-weight:600}
.manager-home-surface .calm-empty small{font-size:12px}
.app-shell .manager-home-surface .home-clear-status{align-self:start;margin:0;padding:22px 24px;border:0;border-radius:16px;background:#fff;box-shadow:var(--home-surface-shadow)}
.manager-home-surface .home-clear-status strong{color:var(--reference-header);font-weight:600}
@media(min-width:1051px){
  .view-root:has(>.manager-home-surface){padding:30px 38px 48px}
}
@media(min-width:1200px){
  .view-root>.manager-home-surface{grid-template-columns:minmax(0,1.35fr) minmax(340px,1fr);align-items:start}
  .manager-home-surface>.home-intro,.manager-home-surface>.week-flow-status{grid-column:1/-1}
}
@media(max-width:767px){
  .view-root>.manager-home-surface{gap:18px}
  .manager-home-surface .home-intro{align-items:stretch}
  .manager-home-surface .home-actions{align-self:stretch;gap:8px}
  .manager-home-surface .week-flow-status,.manager-home-surface .attention-section.has-issues,.manager-home-surface .today-section,.manager-home-surface .manager-own-section{padding:18px}
  .manager-home-surface .week-flow-status,.manager-home-surface .week-flow-status.is-empty{grid-template-columns:minmax(0,1fr)}
  .manager-home-surface .week-flow-actions{grid-column:1;grid-row:auto;justify-content:stretch;max-width:none}
  .manager-home-surface .week-flow-actions .button{flex:1}
  .manager-home-surface .week-flow-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 0}
  .manager-home-surface .week-flow-metrics>div:nth-child(3){padding-left:0;border-left:0}
  .manager-home-surface .attention-row{grid-template-columns:58px minmax(0,1fr) 14px;column-gap:8px}
  .manager-home-surface .today-row{grid-template-columns:82px minmax(0,1fr)}
  .manager-home-surface .home-daily-grid{gap:18px}
}

/* Client directory: employee-style surfaces with a desktop master/detail layout. */
.view-root:has(>.client-list-lead){--client-surface-shadow:0 8px 18px rgba(33,35,34,.10),0 2px 5px rgba(33,35,34,.04)}
.client-list-lead h2{color:var(--reference-header);font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
.client-list-lead p{font-size:13px;line-height:1.45}
.client-admin-layout .client-directory{border:0;border-radius:16px;background:#fff;box-shadow:var(--client-surface-shadow);padding:14px}
.client-directory .search-field input{height:44px;border:1px solid var(--line-soft);border-radius:10px;background:#f7f8fa;font-size:13px}
.client-directory-summary{gap:4px;padding:10px 12px;border:0;border-radius:10px;background:var(--accent-soft)}
.client-directory-summary strong{color:var(--accent-dark);font-size:12px;font-weight:600}
.client-directory-summary small{font-size:11px;line-height:1.4}
.client-directory .admin-list{border:0}
.client-directory .admin-list-button{min-height:58px;padding:10px 8px;border-bottom:1px solid var(--line-soft);gap:12px}
.client-directory .admin-list-button:last-child{border-bottom:0}
.client-directory .admin-list-button .avatar{display:grid;place-content:center;place-items:center;width:34px;height:34px;padding:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;font-weight:600;line-height:1;text-align:center}
.client-directory .admin-list-button strong{font-size:13px;font-weight:600}
.client-directory .admin-list-button small{font-size:12px}
.client-directory .admin-list-button>svg{width:16px;height:16px;color:var(--muted)}
.client-directory .admin-list-button.is-active{border-radius:10px;background:var(--accent-soft)}
.client-admin-layout .selection-empty{display:grid;align-content:center;justify-items:center;min-height:260px;padding:32px;border:0;border-radius:16px;background:#fff;box-shadow:var(--client-surface-shadow);text-align:center}
.client-admin-layout .selection-empty h2{color:var(--reference-header);font-size:23px;font-weight:650;letter-spacing:-.03em}
.client-admin-layout .selection-empty p{font-size:13px;color:var(--muted)}
.client-admin-layout .client-detail{padding:24px;border:0;border-radius:16px;background:#fff;box-shadow:var(--client-surface-shadow)}
.client-detail .client-detail-head{padding-bottom:0;border:0}
.client-detail-head h2{color:var(--reference-header);font-size:28px;font-weight:650;letter-spacing:-.035em}
.client-detail .client-profile-avatar,.client-detail .client-worker-list .avatar{background:var(--accent-soft);color:var(--accent-dark);font-weight:600}
.client-detail .client-profile-avatar{place-content:center;place-items:center;padding:0;line-height:1;text-align:center}
.client-detail .eyebrow{color:var(--muted);font-weight:500;letter-spacing:.035em}
.client-detail .employee-section-head h3{color:var(--reference-header);font-size:20px;font-weight:650;letter-spacing:-.025em}
.client-detail .client-actions .button{min-height:40px;border-radius:10px;font-size:12px;font-weight:600}
.client-detail .client-actions .primary{border:0;background:var(--accent-soft);color:var(--accent-dark)}
.client-detail .client-profile-notice,.client-detail .client-service-notice{padding:12px 14px;border:0;border-radius:10px;background:#f5f8fc}
.client-detail .client-profile-notice strong,.client-detail .client-service-notice strong{font-weight:600}
.client-detail .client-metrics{margin-top:18px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.client-detail .client-metrics>div{min-height:86px;border-color:var(--line-soft)}
.client-detail .client-metrics strong{color:var(--reference-header);font-size:18px;font-weight:600}
.client-detail .client-metrics small{font-size:12px}
.client-detail .client-visit-list,.client-detail .client-instructions,.client-detail .client-instructions>div,.client-detail .client-worker-list>div{border-color:var(--line-soft)}
.client-detail .client-visit-row strong,.client-detail .client-worker-list strong{font-weight:600}
.client-detail .client-instructions small{font-weight:600;letter-spacing:.03em}
.client-detail .client-month-controls .icon-button{border:0;border-radius:50%;background:var(--accent-soft)}
@media(min-width:1051px){
  .view-root:has(>.client-list-lead){padding:30px 38px 48px}
  .client-admin-layout{grid-template-columns:minmax(280px,320px) minmax(0,1fr);gap:24px;align-items:start}
  .client-admin-layout .client-directory{position:sticky;top:calc(var(--app-header) + 20px);max-height:calc(100dvh - var(--app-header) - 154px);grid-template-rows:auto auto minmax(0,1fr)}
  .client-directory:not(:has(.client-directory-summary)){grid-template-rows:auto minmax(0,1fr)}
}
@media(max-width:767px){
  .client-admin-layout .client-detail{padding:18px}
  .client-admin-layout .selection-empty{display:none}
  .client-detail-head h2{font-size:25px}
}

/* Personnel directory follows the same employee-mobile language as clients. */
.view-root:has(>.employee-list-lead){--employee-surface-shadow:0 8px 18px rgba(33,35,34,.10),0 2px 5px rgba(33,35,34,.04)}
.employee-list-lead h2{color:var(--reference-header);font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
.employee-list-lead p{font-size:13px;line-height:1.45}
.employee-admin-layout .employee-directory{border:0;border-radius:16px;background:#fff;box-shadow:var(--employee-surface-shadow);padding:14px}
.employee-directory .search-field input{height:44px;border:1px solid var(--line-soft);border-radius:10px;background:#f7f8fa;font-size:13px}
.employee-directory .admin-list{border:0}
.employee-directory .admin-list-button{min-height:58px;padding:10px 8px;border-bottom:1px solid var(--line-soft);gap:12px}
.employee-directory .admin-list-button:last-child{border-bottom:0}
.employee-directory .admin-list-button .avatar{display:grid;place-content:center;place-items:center;width:34px;height:34px;padding:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;font-weight:600;line-height:1;text-align:center}
.employee-directory .admin-list-button strong{font-size:13px;font-weight:600}
.employee-directory .admin-list-button small{font-size:11px}
.employee-directory .admin-list-button>svg{width:16px;height:16px;color:var(--muted)}
.employee-directory .admin-list-button.is-active{border-radius:10px;background:var(--accent-soft)}
.employee-directory .employee-list-account-status{font-weight:500}
.employee-directory .employee-app-badge.is-compact{border-radius:5px}
.employee-admin-layout .selection-empty{display:grid;align-content:center;justify-items:center;min-height:260px;padding:32px;border:0;border-radius:16px;background:#fff;box-shadow:var(--employee-surface-shadow);text-align:center}
.employee-admin-layout .selection-empty h2{color:var(--reference-header);font-size:23px;font-weight:650;letter-spacing:-.03em}
.employee-admin-layout .selection-empty p{font-size:13px;color:var(--muted)}
.employee-admin-layout .employee-detail{padding:24px;border:0;border-radius:16px;background:#fff;box-shadow:var(--employee-surface-shadow)}
.employee-detail .employee-detail-head{padding-bottom:0;border:0}
.employee-detail-head h2{color:var(--reference-header);font-size:28px;font-weight:650;letter-spacing:-.035em}
.employee-detail .employee-profile-avatar{place-content:center;place-items:center;padding:0;background:var(--accent-soft);color:var(--accent-dark);font-weight:600;line-height:1;text-align:center}
.employee-detail .eyebrow{color:var(--muted);font-weight:500;letter-spacing:.035em}
.employee-detail .employee-section-head h3{color:var(--reference-header);font-size:20px;font-weight:650;letter-spacing:-.025em}
.employee-detail .employee-actions .button{min-height:40px;border-radius:10px;font-size:12px;font-weight:600}
.employee-detail .employee-actions .primary{border:0;background:var(--accent-soft);color:var(--accent-dark)}
.employee-detail .employee-hours-warning{padding:12px 14px;border:0;border-radius:10px;background:#fff6e8}
.employee-detail .employee-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.employee-detail .employee-summary>.employee-summary-cell{min-height:84px;padding:14px 16px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.employee-detail .employee-summary>.employee-summary-cell:nth-child(odd),.employee-detail .employee-summary>.employee-summary-cell:nth-child(even){padding-right:16px;padding-left:16px}
.employee-detail .employee-summary>.employee-summary-cell:nth-child(3n){border-right:0}
.employee-detail .employee-summary>.employee-summary-cell:nth-last-child(-n+3){border-bottom:0}
.employee-detail .employee-summary>.employee-summary-cell small{font-size:12px}
.employee-detail .employee-summary>.employee-summary-cell strong{color:var(--reference-header);font-size:15px;font-weight:600}
.employee-detail .employee-summary>.employee-summary-cell:hover{background:#f7f9fc}
.employee-detail .employee-admin-shifts,.employee-detail .employee-admin-shift,.employee-detail .employee-contact-list>div,.employee-detail .employee-absence-list>div{border-color:var(--line-soft)}
.employee-detail .employee-admin-shift strong,.employee-detail .employee-contact-list dd,.employee-detail .employee-absence-list strong{font-weight:600}
.employee-detail .employee-week-controls .icon-button{border:0;border-radius:50%;background:var(--accent-soft)}
@media(min-width:1051px){
  .view-root:has(>.employee-list-lead){padding:30px 38px 48px}
  .employee-admin-layout{grid-template-columns:minmax(280px,320px) minmax(0,1fr);gap:24px;align-items:start}
  .employee-admin-layout .employee-directory{position:sticky;top:calc(var(--app-header) + 20px);max-height:calc(100dvh - var(--app-header) - 154px);grid-template-rows:auto minmax(0,1fr)}
}
@media(max-width:900px){
  .employee-detail .employee-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .employee-detail .employee-summary>.employee-summary-cell:nth-child(3n){border-right:1px solid var(--line-soft)}
  .employee-detail .employee-summary>.employee-summary-cell:nth-child(2n){border-right:0}
  .employee-detail .employee-summary>.employee-summary-cell:nth-last-child(-n+3){border-bottom:1px solid var(--line-soft)}
  .employee-detail .employee-summary>.employee-summary-cell:nth-last-child(-n+2){border-bottom:0}
}
@media(max-width:767px){
  .employee-admin-layout .employee-detail{padding:18px}
  .employee-admin-layout .selection-empty{display:none}
  .employee-detail-head h2{font-size:25px}
}

/* Payroll is a dense administrative workspace on desktop. */
.view-root:has(>.payroll-page){width:100%;padding:22px 28px 42px}
.payroll-page{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;width:100%;margin:0 auto}
.payroll-page .reports-lead{align-items:end;margin:0;gap:24px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.payroll-page .reports-lead h2{color:var(--reference-header);font-size:26px;font-weight:750;letter-spacing:-.03em;line-height:1.1}
.payroll-page .reports-lead p{margin:5px 0 0;font-size:12px;line-height:1.4}
.payroll-page .report-section-tabs{align-self:end;padding:0;border:0;border-radius:0;background:transparent}
.payroll-page .report-section-tabs button{min-height:34px;padding:0 13px;border-bottom:3px solid transparent;border-radius:0;background:transparent;font-size:12px}
.payroll-page .report-section-tabs button.is-active{border-bottom-color:var(--accent);border-radius:0;background:transparent;color:var(--reference-header);box-shadow:none}
.payroll-page .report-period{display:grid;grid-template-columns:34px auto 34px 1fr;align-items:center;gap:8px;margin:0;padding:9px 12px;border:1px solid var(--line);border-radius:5px;background:#fff}
.payroll-page .report-period .icon-button{width:32px;height:32px;border:1px solid var(--line);border-radius:4px;background:#fff;box-shadow:none}
.payroll-page .payroll-period-copy{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:10px;width:auto;min-width:260px;text-align:left}
.payroll-page .payroll-period-copy small{grid-column:1/-1;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.payroll-page .payroll-period-copy strong{font-size:15px;font-weight:700}
.payroll-page .payroll-period-copy span{font-size:11px}
.payroll-page .report-period .button{justify-self:start;margin:0;min-height:32px;padding:0 10px;border:1px solid var(--line);border-radius:4px;font-size:11px}
.netvisor-rollout-notice{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid #d9e1ea;border-radius:5px;background:#f7f9fc;color:var(--reference-header)}
.netvisor-rollout-notice>span{display:flex;flex:0 0 auto;padding-top:1px}.netvisor-rollout-notice svg{width:16px;height:16px}
.netvisor-rollout-notice strong{display:block;font-size:12px;font-weight:700}.netvisor-rollout-notice p{margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.45}
.is-rollout-locked:disabled{opacity:.72}.payroll-output-actions .is-rollout-locked{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.payroll-output-actions .is-rollout-locked svg{width:14px;height:14px;flex:0 0 auto}
.netvisor-branded-action.is-rollout-locked{position:relative}.netvisor-branded-action.is-rollout-locked svg{position:absolute;right:8px;width:16px;height:16px;color:#153f77}
.payroll-onboarding-card{gap:18px;padding:10px 12px;border:1px solid #bfd2e7;border-radius:5px;background:#f4f8fc}
.payroll-onboarding-card>span{grid-template-columns:auto minmax(0,1fr);align-items:baseline;column-gap:12px;row-gap:2px}
.payroll-onboarding-card small{font-size:9px}.payroll-onboarding-card strong{font-size:13px}.payroll-onboarding-card p{grid-column:2;margin:0;font-size:11px}
.payroll-onboarding-card.is-complete{border-color:#cad9cf;background:#f7faf8}
.payroll-setup{display:flex;flex-direction:column;gap:16px;min-height:0;max-height:calc(90dvh - 120px)}
.payroll-setup-steps{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:0;margin:0;gap:8px}
.payroll-setup-steps li{display:flex;align-items:center;gap:8px;border-bottom:2px solid var(--line,#e5ebf2);padding:8px 0;color:var(--muted,#727e90);font-size:12px}
.payroll-setup-steps li span{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;border-radius:50%;background:#eef3f8}
.payroll-setup-steps li.is-active{color:var(--blue,#0648a8);font-weight:700;border-color:currentColor}
.payroll-setup-scroll{overflow:auto;min-height:0;overscroll-behavior:contain;padding-right:8px}
.payroll-setup-scroll section{display:grid;gap:16px}
.payroll-setup [hidden]{display:none!important}
.payroll-setup-scroll h3,.payroll-setup-scroll h4,.payroll-setup-scroll p{margin:0}
.payroll-setup-scroll h3{font-size:22px;line-height:1.25}
.payroll-setup-scroll p{color:var(--muted,#727e90);line-height:1.55}
.payroll-setup-person{display:grid;grid-template-columns:minmax(120px,1fr) minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line,#e5ebf2)}
.payroll-setup-person .field{min-width:0}
.payroll-setup-guidance{margin:0;display:grid;gap:8px}
.payroll-setup-guidance dt{font-weight:700;margin-top:8px}
.payroll-setup-guidance dd{margin:0;color:var(--muted,#727e90);line-height:1.55}
.payroll-setup-actions{flex-shrink:0;margin-top:0;border-top:1px solid var(--line,#e5ebf2);padding-top:12px}
@media(max-width:767px){
  .payroll-setup{max-height:calc(90dvh - 140px);gap:12px}
  .payroll-setup-steps{gap:4px}
  .payroll-setup-steps li{flex-direction:column;align-items:flex-start;gap:4px;font-size:10px;line-height:1.3}
  .payroll-setup-person{grid-template-columns:1fr 1fr;gap:10px}
  .payroll-setup-person>strong{grid-column:1/-1}
  .payroll-setup-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .payroll-setup-actions [data-setup-later]{grid-column:1/-1;grid-row:2}
  .payroll-setup-actions [data-setup-next]{grid-column:2}
  .payroll-setup-actions .button{white-space:normal;line-height:1.3;min-height:44px;padding:8px}
}
.payroll-onboarding-card .button{min-height:32px;padding:0 11px;border-radius:4px;font-size:11px}
.payroll-page .payroll-status{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;margin:0;padding:14px 16px;border:1px solid var(--line);border-radius:5px;background:#fff;box-shadow:none}
.payroll-page .payroll-status.has-work{border-left:4px solid #b56b1d}.payroll-page .payroll-status.is-ready{border-left:4px solid var(--green)}
.payroll-page .payroll-status .eyebrow{margin:0 0 4px;color:var(--muted);font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.payroll-page .payroll-status h3{font-size:18px;font-weight:700;line-height:1.25;letter-spacing:-.015em}
.payroll-page .payroll-status p:not(.eyebrow){margin-top:4px;font-size:12px;line-height:1.4}
.payroll-page .payroll-progress{width:min(680px,100%);height:5px;margin-top:9px}
.payroll-page .payroll-status>div>small{font-size:11px;line-height:1.45}
.payroll-page .payroll-status-actions{align-self:center}
.payroll-page .payroll-status-actions .button{min-height:34px;padding:0 13px;border:1px solid #b9cee6;border-radius:4px;background:#eef4fb;color:var(--accent-dark);font-size:11px}
.payroll-page .payroll-status-actions .button:hover{background:#e4eef9}
.payroll-page .payroll-blockers{margin:0;padding:0;border:1px solid #e2cdb2;border-radius:5px;background:#fff}
.payroll-page .payroll-blockers .report-section-head{align-items:center;margin:0;padding:10px 12px;border-bottom:1px solid #e2cdb2;background:#fffaf2}
.payroll-page .payroll-blockers .eyebrow{display:none}
.payroll-page .report-section-head h3{color:var(--reference-header);font-size:15px;font-weight:700;letter-spacing:-.01em}
.payroll-page .payroll-blockers .report-section-head>span{display:grid;place-items:center;min-width:24px;height:24px;border-radius:4px;background:#f7e7d2;color:#89531a;font-size:11px;font-weight:700}
.payroll-page .payroll-blockers>div:nth-child(2){padding:0 12px;border:0;border-radius:0;background:#fff;box-shadow:none}
.payroll-page .report-issue-row{grid-template-columns:minmax(0,1fr) auto 16px;min-height:52px;padding:8px 0;border-color:var(--line-soft)}
.payroll-page .report-issue-row:last-child{border-bottom:0}
.payroll-page .report-issue-row strong{font-size:12px;font-weight:650}.payroll-page .report-issue-row small{font-size:11px}
.payroll-page .report-issue-row>span:nth-child(2){color:var(--accent-dark);font-size:11px}
.payroll-page .payroll-queue{margin:0;padding:0;border:1px solid var(--line);border-radius:5px;background:#fff;overflow:hidden}
.payroll-page .payroll-queue-head{align-items:end;margin:0;padding:11px 12px;border-bottom:1px solid var(--line);background:#f7f9fb}
.payroll-page .payroll-queue-head .eyebrow{margin:0 0 3px;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.payroll-page .payroll-queue-head p:last-child{margin:3px 0 0;font-size:11px}
.payroll-page .payroll-queue-tabs{gap:0;padding:0;border:1px solid var(--line);border-radius:4px;background:#fff;overflow:hidden}
.payroll-page .payroll-queue-tabs button{min-height:30px;padding:0 10px;border-radius:0;font-size:10px}
.payroll-page .payroll-queue-tabs button+button{border-left:1px solid var(--line)}
.payroll-page .payroll-queue-tabs button.is-active{background:#eaf2fc;color:var(--reference-header);box-shadow:none}
.payroll-page .payroll-employee-head{padding:7px 12px;border-bottom:1px solid var(--line);background:#fbfcfd;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.payroll-page .payroll-employee-list{padding:0;border:0;border-radius:0;background:#fff;box-shadow:none}
.payroll-page .payroll-employee-head,.payroll-page .payroll-employee-row{grid-template-columns:minmax(0,1fr) 190px 90px;gap:14px}
.payroll-page .payroll-employee-row{min-height:52px;padding:7px 12px;border-bottom:1px solid var(--line-soft)}
.payroll-page .payroll-employee-row:last-child{border-bottom:0}
.payroll-page .payroll-employee-row:hover,.payroll-page .report-issue-row:hover{background:#f5f8fc}
.payroll-page .payroll-employee-row strong{font-size:12px;font-weight:650}.payroll-page .payroll-employee-row small{font-size:10px;line-height:1.35}
.payroll-page .payroll-employee-row>span:nth-child(2)>strong{color:var(--reference-header);font-variant-numeric:tabular-nums}
.payroll-page .payroll-row-action{font-size:11px;font-weight:650}
.payroll-page .payroll-output{margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:5px;background:#fff;box-shadow:none;gap:18px}
.payroll-page .payroll-output>span{display:grid;gap:3px}.payroll-page .payroll-output strong{font-size:14px;font-weight:700}.payroll-page .payroll-output small{font-size:11px}
.payroll-page .payroll-output-actions{display:flex;gap:7px;flex-shrink:0}.payroll-page .payroll-output-actions .button{min-height:34px;border-radius:4px;font-size:11px}
.payroll-page>.report-security-note{margin:-3px 2px 0;font-size:10px;line-height:1.45}
@media(max-width:1100px){.payroll-page .reports-lead{align-items:flex-start;flex-direction:column;gap:8px}.payroll-page .payroll-output{align-items:stretch;flex-direction:column}.payroll-page .payroll-status{grid-template-columns:1fr}.payroll-page .payroll-status-actions{justify-self:start}.payroll-page .payroll-queue-head{align-items:flex-start;flex-direction:column;gap:9px}}
@media(max-width:767px){.view-root:has(>.payroll-page){padding:24px 16px 38px}.payroll-page{gap:20px}.payroll-page .reports-lead h2{font-size:30px}.payroll-page .report-section-tabs{width:100%}.payroll-page .segmented button{flex:1;padding:0 10px;font-size:11px}.payroll-page .report-period{grid-template-columns:40px minmax(0,1fr) 40px}.payroll-page .payroll-period-copy{width:auto}.payroll-page .payroll-period-copy strong{font-size:15px}.payroll-page .report-period [data-current-payroll-period],.payroll-page .report-period [data-payroll-mapping]{grid-column:1/-1;justify-self:stretch;width:100%}.payroll-page .payroll-status{padding:18px}.payroll-page .payroll-status h3{font-size:21px}.payroll-page .payroll-status-actions{width:100%}.payroll-page .payroll-status-actions .button{width:100%}.payroll-page .report-issue-row{grid-template-columns:minmax(0,1fr) 18px}.payroll-page .report-issue-row>span:nth-child(2){grid-column:1}.payroll-page .payroll-queue-head{align-items:stretch;flex-direction:column;gap:12px}.payroll-page .payroll-employee-head{display:none}.payroll-page .payroll-employee-row{grid-template-columns:minmax(0,1fr) auto;gap:6px}.payroll-page .payroll-employee-row>span:nth-child(2){grid-column:1}.payroll-page .payroll-row-action{grid-column:2;grid-row:1/3}.payroll-page .payroll-output-actions{display:grid;grid-template-columns:1fr}}

/* Palkkajakson tarkistus: työntekijän mobiilinäkymän selkeys desktop-työtilaan. */
.actual-cell-label{display:none}
.actual-hours-scroll{display:flex;flex-direction:column;gap:18px}
.actual-hours-scroll>*{flex:0 0 auto}

@media(min-width:768px){
  .dialog:has(#actualHoursForm){
    width:min(1160px,calc(100% - 32px));
    max-height:calc(100dvh - 32px);
    overflow:hidden;
    border-radius:6px;
    box-shadow:0 18px 46px rgba(17,45,91,.18);
  }
  .dialog-surface:has(#actualHoursForm){
    display:grid;
    grid-template-rows:auto minmax(0,1fr);
    max-height:calc(100dvh - 32px);
    overflow:hidden;
    padding:0;
    background:#f5f7fa;
  }
  .dialog-surface:has(#actualHoursForm)>.dialog-head{
    position:relative;
    z-index:2;
    align-items:center;
    margin:0;
    padding:15px 20px 13px;
    border-bottom:1px solid #dfe5ed;
    background:#fff;
  }
  .dialog-surface:has(#actualHoursForm)>.dialog-head h2{
    color:var(--reference-header);
    font-size:20px;
    font-weight:700;
    letter-spacing:-.03em;
  }
  .dialog-surface:has(#actualHoursForm)>.dialog-head p{
    margin-top:5px;
    font-size:12px;
  }
  .dialog-surface:has(#actualHoursForm)>.dialog-head .icon-button{
    flex:0 0 auto;
    width:34px;
    height:34px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    color:var(--accent-dark);
    box-shadow:none;
  }
  #actualHoursForm{
    display:grid;
    grid-template-rows:minmax(0,1fr) auto;
    gap:0;
    min-height:0;
    overflow:hidden;
    padding:0;
  }
  #actualHoursForm .actual-hours-scroll{
    min-height:0;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    padding:14px 20px 10px;
  }
  #actualHoursForm .report-dialog-summary{
    overflow:hidden;
    border:1px solid #dfe5ed;
    border-radius:4px;
    background:#fff;
  }
  #actualHoursForm .report-dialog-summary span{padding:10px 12px}
  #actualHoursForm .actual-hours-scroll>.inline-message{
    margin:0;
    padding:10px 12px;
    border:0;
    border-left:4px solid #77a991;
    border-radius:4px;
    background:#e9f4ee;
    line-height:1.5;
  }
  #actualHoursForm .actual-add-toolbar{
    padding:10px 12px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
  }
  #actualHoursForm .actual-add-toolbar .button{min-height:34px;border-radius:4px}
  #actualHoursForm .actual-hours-list{
    display:grid;
    gap:0;
    overflow:hidden;
    border:1px solid #d7dee8;
    border-radius:4px;
    background:#fff;
  }
  #actualHoursForm .actual-hours-table-head{
    display:grid;
    grid-template-columns:minmax(260px,1.05fr) minmax(145px,.58fr) minmax(245px,1fr) minmax(180px,.72fr);
    gap:0;
    padding:7px 10px 6px;
    border-bottom:1px solid #cfd7e2;
    background:#f7f9fc;
  }
  #actualHoursForm .actual-hours-row{
    grid-template-columns:minmax(260px,1.05fr) minmax(145px,.58fr) minmax(245px,1fr) minmax(180px,.72fr);
    align-items:stretch;
    gap:0;
    min-height:56px;
    overflow:hidden;
    padding:0;
    border:0;
    border-bottom:1px solid #e4e9ef;
    border-radius:0;
    background:#fff;
    box-shadow:none;
    transition:background-color .15s ease;
  }
  #actualHoursForm .actual-hours-row:last-child{border-bottom:0}
  #actualHoursForm .actual-hours-row:hover{
    background:#f7faff;
    box-shadow:none;
  }
  #actualHoursForm .actual-hours-row:has(.actual-approval-select input:checked){background:#fbfdff}
  #actualHoursForm .actual-hours-row.requires-review{
    background:#fffaf2;
    box-shadow:inset 3px 0 #b56b1d;
  }
  #actualHoursForm .actual-hours-row>div{
    align-content:start;
    padding:7px 10px;
  }
  #actualHoursForm .actual-hours-row>div+div{border-left:1px solid #edf0f4}
  #actualHoursForm .actual-cell-label{
    display:none;
  }
  #actualHoursForm .actual-shift-cell,
  #actualHoursForm .actual-planned-cell,
  #actualHoursForm .actual-segment-list,
  #actualHoursForm .actual-row-controls{display:grid;gap:3px}
  #actualHoursForm .actual-shift-cell{grid-template-columns:minmax(0,1fr) auto}
  #actualHoursForm .actual-shift-cell>.actual-cell-label{grid-column:1}
  #actualHoursForm .actual-shift-cell>strong{grid-column:1;grid-row:1;align-self:center}
  #actualHoursForm .actual-shift-cell>small{grid-column:1;grid-row:2}
  #actualHoursForm .actual-row-choices{display:flex;grid-column:2;grid-row:1/3;align-items:center;align-self:center;gap:12px;white-space:nowrap}
  #actualHoursForm .actual-hours-row strong{font-size:12px;line-height:1.25}
  #actualHoursForm .actual-hours-row small{font-size:10px;line-height:1.25}
  #actualHoursForm .actual-approval-select{
    display:inline-flex;
    align-items:center;
    justify-self:start;
    gap:7px;
    min-height:24px;
    margin:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    color:var(--accent-dark);
    font-size:10px;
  }
  #actualHoursForm .actual-approval-select input,
  #actualHoursForm .actual-not-occurred input{width:17px;height:17px}
  #actualHoursForm .actual-segment-list{align-content:start}
  #actualHoursForm .actual-segment-row{display:grid;grid-template-columns:minmax(96px,1fr) auto minmax(96px,1fr);gap:6px}
  #actualHoursForm .actual-segment-row input[type="time"]{
    width:100%;
    min-height:34px;
    padding:5px 7px;
    border-color:#c9d2de;
    border-radius:4px;
    background:#fff;
    font-size:13px;
  }
  #actualHoursForm .actual-row-controls{grid-template-columns:1fr;align-content:start;align-items:start}
  #actualHoursForm .actual-row-controls>.actual-cell-label{grid-column:1/-1}
  #actualHoursForm .actual-state-copy{gap:5px}
  #actualHoursForm .actual-mode-state{
    justify-self:start;
    padding:3px 6px;
    border-radius:3px;
    background:#edf4fc;
    color:var(--accent-dark);
    font-size:10px;
  }
  #actualHoursForm .actual-mode-state.is-employee-confirmed{background:#e2f3e8;color:#24683a}
  #actualHoursForm .requires-review .actual-mode-state{background:#f7ead6;color:#8a5117}
  #actualHoursForm .actual-not-occurred{
    min-height:25px;
    padding:2px 0;
    font-size:11px;
    font-weight:550;
  }
  #actualHoursForm .actual-hours-row>.actual-reason-field{
    display:grid;
    grid-column:1/-1;
    grid-template-columns:minmax(170px,.82fr) minmax(260px,1fr);
    align-items:center;
    gap:12px;
    padding:8px 10px;
    border-top:1px solid #ead8ba;
    background:#fffaf2;
  }
  #actualHoursForm .actual-hours-row>.actual-reason-field[hidden]{display:none}
  #actualHoursForm .actual-reason-field>span{color:#7b501e;font-size:10px;font-weight:800}
  #actualHoursForm .actual-reason-field select{min-height:34px;border-radius:4px;background:#fff}
  #actualHoursForm>.dialog-actions{
    z-index:2;
    align-items:center;
    margin:0;
    padding:10px 20px 12px;
    border-top:1px solid #dfe5ed;
    background:#fff;
    box-shadow:none;
  }
  #actualHoursForm>.dialog-actions .button{min-height:36px;border-radius:4px}
}

@media(min-width:768px) and (max-width:980px){
  #actualHoursForm .actual-hours-row{grid-template-columns:minmax(260px,1fr) minmax(145px,.62fr) minmax(220px,.9fr)}
  #actualHoursForm .actual-hours-table-head{display:none}
  #actualHoursForm .actual-cell-label{display:block;margin-bottom:3px;color:#727d8c;font-size:8px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  #actualHoursForm .actual-shift-cell>.actual-cell-label{grid-column:1/-1;grid-row:1}
  #actualHoursForm .actual-shift-cell>strong{grid-column:1;grid-row:2}
  #actualHoursForm .actual-shift-cell>small{grid-column:1;grid-row:3}
  #actualHoursForm .actual-row-choices{grid-column:2;grid-row:2/4}
  #actualHoursForm .actual-row-controls{grid-column:1/-1;border-top:1px solid #e7ebf0;border-left:0!important}
}

@media(max-width:767px){
  #actualHoursForm .actual-shift-cell{grid-template-columns:1fr}
  #actualHoursForm .actual-row-choices{display:flex;grid-column:1/-1;align-items:center;gap:12px;white-space:nowrap}
  #actualHoursForm .actual-hours-row>.actual-reason-field{grid-column:1/-1}
}

/* In-context calendar person details */
.calendar-inspector-backdrop{position:fixed;z-index:75;inset:var(--app-header) 0 0;background:rgba(17,45,91,.08)}
.calendar-inspector{position:fixed;z-index:76;top:var(--app-header);right:0;bottom:0;display:flex;flex-direction:column;width:min(430px,calc(100vw - 32px));overflow-y:auto;overscroll-behavior:contain;border-left:1px solid #d6dce5;background:#fff;color:var(--ink);box-shadow:-18px 0 42px rgba(17,45,91,.18);animation:calendar-inspector-enter .2s cubic-bezier(.16,1,.3,1) both}
@keyframes calendar-inspector-enter{from{opacity:.65;transform:translate3d(24px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.calendar-inspector-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:24px 22px 20px;border-bottom:1px solid var(--line)}
.calendar-inspector-head>div{min-width:0}.calendar-inspector-head .eyebrow{margin-bottom:6px;color:var(--reference-header);font-size:9px;letter-spacing:.08em}.calendar-inspector-head h2{margin:0;overflow:hidden;color:#212322;font-size:25px;font-weight:700;letter-spacing:-.035em;line-height:1.15;text-overflow:ellipsis}.calendar-inspector-head p:last-child{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.4}.calendar-inspector-head .icon-button{flex:0 0 auto;width:38px;height:38px}.calendar-inspector-head .icon-button svg{width:17px;height:17px}
.calendar-inspector-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}.calendar-inspector-metrics>div{display:grid;align-content:start;gap:5px;min-width:0;padding:15px 14px;border-right:1px solid var(--line)}.calendar-inspector-metrics>div:last-child{border-right:0}.calendar-inspector-metrics small{color:var(--muted);font-size:9px;font-weight:750;text-transform:uppercase}.calendar-inspector-metrics strong{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.calendar-inspector-metrics .is-warning strong{color:var(--red)}
.calendar-inspector-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:16px 22px}.calendar-inspector-actions:has(>button:only-child){grid-template-columns:1fr}.calendar-inspector-actions .button{min-width:0;min-height:40px;padding:0 11px;font-size:12px}.calendar-inspector-actions .button.primary{border-color:var(--reference-header);background:var(--reference-header)}
.calendar-inspector-section{padding:8px 22px 0}.calendar-inspector-section+.calendar-inspector-section{margin-top:17px}.calendar-inspector-section-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 0 9px;border-bottom:1px solid #212322}.calendar-inspector-section-head h3{margin:0;font-size:15px}.calendar-inspector-section-head>span{color:var(--muted);font-size:11px;font-weight:750}
.calendar-inspector-section-action{padding:4px 0;border:0;background:transparent;color:var(--reference-header);font-size:10px;font-weight:750}.calendar-inspector-section-action:hover{text-decoration:underline}.calendar-inspector-section-action:active{transform:translateY(1px)}
.calendar-inspector-shifts{border-bottom:1px solid var(--line)}.calendar-inspector-shift{display:grid;grid-template-columns:72px minmax(0,1fr) auto 16px;align-items:center;gap:9px;width:100%;min-height:58px;padding:10px 0;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left}.calendar-inspector-shift:last-child{border-bottom:0}.calendar-inspector-shift:hover{background:#f6f9fd}.calendar-inspector-shift>span:nth-child(2),.calendar-inspector-shift-date{display:grid;min-width:0;gap:3px}.calendar-inspector-shift strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.calendar-inspector-shift small{color:var(--muted);font-size:10px}.calendar-inspector-shift-date strong{color:var(--reference-header);text-transform:capitalize}.calendar-inspector-shift>svg{width:14px;height:14px;color:#8b96a5}.calendar-inspector-shift .status-pill{font-size:8px}
.calendar-inspector-availability>button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:52px;padding:10px 0;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.calendar-inspector-availability>button:hover{background:#f6f9fd}.calendar-inspector-availability>button span{display:grid;gap:3px}.calendar-inspector-availability>button strong{font-size:12px}.calendar-inspector-availability>button small{color:var(--muted);font-size:10px}.calendar-inspector-availability>button svg{width:15px;height:15px;color:#8b96a5}.calendar-inspector-more{display:block;padding:9px 0;color:var(--muted);font-size:10px}.calendar-inspector-empty{margin:0;padding:16px 0;color:var(--muted);font-size:12px;line-height:1.45}
.calendar-inspector-absence{display:flex;align-items:center;min-height:52px;padding:10px 0;border-bottom:1px solid var(--line)}.calendar-inspector-absence>span{display:grid;gap:3px}.calendar-inspector-absence strong{font-size:12px}.calendar-inspector-absence small{color:var(--muted);font-size:10px}.calendar-inspector-section-note{margin:0;padding:10px 0 2px;color:var(--muted);font-size:10px;line-height:1.45}
.calendar-inspector-contact{margin:0}.calendar-inspector-contact>div{display:grid;grid-template-columns:82px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.calendar-inspector-contact dt{color:var(--muted);font-size:10px}.calendar-inspector-contact dd{margin:0;font-size:12px;font-weight:650;overflow-wrap:anywhere}.calendar-inspector-footer{margin-top:auto;padding:22px}.calendar-inspector-footer .button{width:100%;color:var(--reference-header);font-size:12px}.calendar-inspector-footer svg{width:15px;height:15px}
.calendar-inspector-instructions{margin:0;padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:12px;line-height:1.55;white-space:pre-wrap}
.month-review-person.is-clickable{padding:0}.month-review-person-trigger{display:grid;grid-template-columns:minmax(0,1fr) 15px;align-items:center;gap:7px;width:100%;height:100%;min-height:47px;padding:7px 10px 7px 12px;border:0;background:transparent;text-align:left}.month-review-person-trigger>span{display:grid;gap:2px;min-width:0}.month-review-person-trigger>svg{width:13px;height:13px;color:#8b96a5;opacity:0;transition:opacity .15s,transform .15s}.month-review-person-trigger:hover{background:#f1f6fc}.month-review-person-trigger:hover>svg,.month-review-person-trigger:focus-visible>svg{opacity:1;transform:translateX(1px)}.month-review-person-trigger:focus-visible{outline:2px solid #0046ad;outline-offset:-2px}
@media(max-width:767px){.calendar-inspector-backdrop{z-index:79;inset:0;background:rgba(17,31,52,.24)}.calendar-inspector{z-index:80;top:auto;left:0;width:100%;max-height:88dvh;border-top:1px solid #d6dce5;border-left:0;border-radius:18px 18px 0 0;box-shadow:0 -18px 42px rgba(17,45,91,.2);animation-name:calendar-inspector-enter-mobile}.calendar-inspector-head{padding:20px 18px 17px}.calendar-inspector-head h2{font-size:22px}.calendar-inspector-actions{padding:14px 18px}.calendar-inspector-section{padding-right:18px;padding-left:18px}.calendar-inspector-footer{padding:20px 18px calc(20px + env(safe-area-inset-bottom))}}@keyframes calendar-inspector-enter-mobile{from{opacity:.7;transform:translate3d(0,28px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media(prefers-reduced-motion:reduce){.calendar-inspector{animation:none}}


/* Profiilikuvan tarkistus: sama selkeä alapaneeli kuin muissa työntekijän toiminnoissa. */
.profile-photo-dialog{display:grid;gap:18px}
.profile-photo-dialog .profile-photo-preview{padding:8px 0 14px}
.profile-photo-dialog .profile-photo-preview img{width:180px;height:180px;box-shadow:none}
@media(max-width:767px){
  .dialog:has(#profilePhotoPreview){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border:0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(#profilePhotoPreview)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(#profilePhotoPreview){box-sizing:border-box;max-height:calc(100dvh - 18px);overflow:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:has(#profilePhotoPreview) .dialog-head{align-items:center;margin:0 -20px;padding:22px 20px 16px;border:0;background:var(--surface)}
  .dialog-surface:has(#profilePhotoPreview) .dialog-head h2{max-width:calc(100vw - 100px);margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.15}
  .dialog-surface:has(#profilePhotoPreview) .dialog-head p{margin-top:5px;color:var(--muted);font-size:11px;line-height:1.45}
  .dialog-surface:has(#profilePhotoPreview) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .dialog-surface:has(#profilePhotoPreview) .dialog-head .icon-button svg{width:19px;height:19px;stroke-width:2}
  #profilePhotoPreview{gap:14px}
  #profilePhotoPreview .profile-photo-preview{padding:6px 0 12px}
  #profilePhotoPreview .profile-photo-preview img{width:196px;height:196px}
  #profilePhotoPreview>.dialog-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:3px 0 0}
  #profilePhotoPreview>.dialog-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  #profilePhotoPreview>.dialog-actions .button.primary{order:-1;border-color:var(--accent);background:var(--accent);color:#fff}
  #profilePhotoPreview>.dialog-actions .button.ghost{min-height:44px;border:0;background:transparent;color:var(--accent-dark)}
}

/* Profiilikuvan valinnat käyttävät mobiilissa samaa alapaneelia kuin muut työntekijän toiminnot. */
@media(max-width:767px){
  .dialog:has(.profile-photo-actions){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border:0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(.profile-photo-actions)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(.profile-photo-actions){box-sizing:border-box;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:has(.profile-photo-actions) .dialog-head{align-items:center;margin:0 -20px;padding:22px 20px 16px;border:0;background:var(--surface)}
  .dialog-surface:has(.profile-photo-actions) .dialog-head h2{margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.15}
  .dialog-surface:has(.profile-photo-actions) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .profile-photo-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:2px 0 0}
  .profile-photo-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  .profile-photo-actions .button.primary{order:-2;border-color:var(--accent);background:var(--accent);color:#fff}
  .profile-photo-actions .button.danger-secondary{order:-1;background:transparent}
  .profile-photo-actions .button.ghost{min-height:44px;border:0;background:transparent;color:var(--accent-dark)}
}

/* Työntekijän kalenteri: profiilin ja ilmoitusten kanssa yhtenäinen clean mobiilinäkymä. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-calendar-view){padding:0 0 calc(30px + var(--safe-area-bottom));background:var(--paper)}
  .app-shell.is-employee .worker-calendar-view{min-height:100%;background:var(--paper)}
  .app-shell.is-employee .worker-calendar-view>.page-lead{margin:0;padding:24px 72px 13px 20px}
  .app-shell.is-employee .worker-calendar-view>.page-lead .eyebrow{margin:0 0 7px;color:var(--accent-dark);font-size:10px;font-weight:750;letter-spacing:.08em}
  .app-shell.is-employee .worker-calendar-view>.page-lead h2{font-family:inherit;font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
  .app-shell.is-employee .worker-calendar-view>.page-lead p:not(.eyebrow){margin-top:8px;font-size:12px;line-height:1.45}
  .app-shell.is-employee .worker-calendar-workspace{margin:15px 12.5px 0;padding:14px;border:0;border-radius:12px;background:var(--surface);box-shadow:none}
  .app-shell.is-employee .worker-calendar-window{display:grid;gap:7px;margin:0 0 15px;padding:13px 14px;border:0;border-radius:12px;background:var(--accent-soft)}
  .app-shell.is-employee .worker-calendar-window>span:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .app-shell.is-employee .worker-calendar-window small{color:var(--accent-dark);font-size:9px;font-weight:750;letter-spacing:.07em;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-window strong{color:var(--ink);font-size:12px;font-weight:750;font-variant-numeric:tabular-nums}
  .app-shell.is-employee .worker-calendar-window>span:last-child{color:var(--muted);font-size:10px;line-height:1.35}
  .app-shell.is-employee .worker-calendar-weekdays,.app-shell.is-employee .worker-calendar-grid{gap:5px}
  .app-shell.is-employee .worker-calendar-weekdays{margin:0 0 7px;padding:0 2px}
  .app-shell.is-employee .worker-calendar-weekdays span{color:#667282;font-size:9px;font-weight:650}
  .app-shell.is-employee .worker-calendar-day{display:grid;grid-template-rows:14px 7px 11px 8px;align-content:start;gap:2px;height:62px;min-height:62px;padding:7px 2px 5px;border:1px solid #eef1f4;border-radius:11px;background:#f3f5f7;color:var(--ink);text-align:center;box-shadow:none}
  .app-shell.is-employee .worker-calendar-day.is-empty{border:0;background:transparent}
  .app-shell.is-employee .worker-calendar-day>span{font-size:14px;font-weight:650;line-height:1}
  .app-shell.is-employee .worker-calendar-day small{color:var(--faint);font-size:7px;font-weight:600;line-height:1;text-transform:uppercase}
  .app-shell.is-employee .worker-calendar-day small:empty{visibility:hidden}
  .app-shell.is-employee .worker-calendar-day.has-shifts{border-color:#e3e8ee;background:#fff;box-shadow:0 2px 6px rgba(24,48,78,.075),0 1px 2px rgba(24,48,78,.035);transform:translateY(-1px);cursor:pointer}
  .app-shell.is-employee .worker-calendar-day.has-shifts:active{background:#f8f9fb;box-shadow:0 1px 3px rgba(24,48,78,.06);transform:translateY(0) scale(.98)}
  .app-shell.is-employee .worker-calendar-day strong{align-self:center;overflow:visible;color:var(--accent-dark);font-size:9px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap}
  .app-shell.is-employee .worker-calendar-day b{align-self:end;color:var(--muted);font-size:7px;font-weight:750;line-height:1}
  .app-shell.is-employee .worker-calendar-help{margin:14px 3px 1px;color:var(--muted);font-size:10px;line-height:1.45}
}

/* Työvuorolistan kuukausivalinta: sama mobiilipohjapaneeli kuin työvuoron tiedoissa. */
@media(max-width:767px){
  .dialog:has(#employeePrintForm){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border:0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(#employeePrintForm)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(#employeePrintForm){box-sizing:border-box;max-height:calc(100dvh - 18px);overflow:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:has(#employeePrintForm) .dialog-head{align-items:center;margin:0 -20px;padding:22px 20px 18px;border:0;background:var(--surface)}
  .dialog-surface:has(#employeePrintForm) .dialog-head h2{max-width:calc(100vw - 100px);margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.15}
  .dialog-surface:has(#employeePrintForm) .dialog-head p{margin-top:4px;color:var(--muted);font-size:11px;font-weight:650}
  .dialog-surface:has(#employeePrintForm) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .dialog-surface:has(#employeePrintForm) .dialog-head .icon-button svg{width:19px;height:19px;stroke-width:2}
  #employeePrintForm{display:grid;gap:14px}
  #employeePrintForm .field{display:grid;gap:8px;padding:16px;border:0;border-radius:14px;background:var(--paper)}
  #employeePrintForm .field>span{color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.07em;text-transform:uppercase}
  #employeePrintForm .field select,#employeePrintForm .field input{width:100%;min-height:50px;padding:0 14px;border:0;border-radius:11px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px;font-weight:650;box-shadow:none}
  #employeePrintForm .field select:focus,#employeePrintForm .field input:focus{outline:2px solid rgba(0,70,173,.28);outline-offset:1px}
  #employeePrintForm>.inline-message:not(.error){margin:0;padding:14px 16px;border:0;border-radius:14px;background:var(--accent-soft);color:var(--accent-dark);font-size:11px;line-height:1.5}
  #employeePrintForm>.dialog-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:3px 0 0}
  #employeePrintForm>.dialog-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  #employeePrintForm>.dialog-actions .button.primary{order:-1;border-color:var(--accent);background:var(--accent);color:#fff}
  #employeePrintForm>.dialog-actions .button.ghost{min-height:44px;border:0;background:transparent;color:var(--accent-dark)}
}

/* Yläpalkin profiilivalikko: sama reunaton ja ryhmitelty mobiili-ilme. */
@media(max-width:767px){
  .profile-menu{top:calc(100% + 8px);right:10px;box-sizing:border-box;width:min(310px,calc(100vw - 20px));padding:0;overflow:hidden;border:0;border-radius:18px;background:var(--surface);box-shadow:0 14px 34px rgba(33,35,34,.16);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .profile-menu-identity{grid-template-columns:52px minmax(0,1fr);gap:13px;padding:16px 18px}
  .profile-menu-avatar{width:52px;height:52px;border:2px solid var(--accent);background:var(--accent-soft);color:var(--accent-dark);font-size:14px;box-shadow:none}
  .profile-menu-identity-copy>#profileName{display:block;color:var(--ink);font-size:17px;font-weight:700;letter-spacing:-.025em;line-height:1.25}
  .profile-menu-identity-copy>#profileRole,.profile-menu-identity-copy>#profileEmail{display:block;margin:0;color:var(--muted);font-size:11px;line-height:1.4}
  .profile-menu-identity-copy>#profileRole{padding-top:2px}
  .profile-menu-identity-copy>#profileEmail{padding-top:2px;overflow-wrap:anywhere}
  .profile-menu-guide[data-open-own-profile],.profile-menu-guide[data-app-lock-now],.profile-menu-logout{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:12px;box-sizing:border-box;width:100%;min-height:66px;margin:0;padding:10px 18px;border:0;border-top:1px solid var(--line-soft);background:transparent;color:var(--ink);text-align:left;box-shadow:none}
  .profile-menu-guide[data-open-own-profile][hidden]{display:none}
  .profile-menu-guide[data-open-own-profile] svg,.profile-menu-guide[data-app-lock-now] svg,.profile-menu-logout svg{box-sizing:content-box;width:18px;height:18px;padding:10px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);stroke-width:1.9}
  .profile-menu-guide[data-open-own-profile] span,.profile-menu-guide[data-app-lock-now] span,.profile-menu-logout span{margin:0;color:inherit;font-size:12px;font-weight:700;line-height:1.35}
  .profile-menu-guide[data-open-own-profile]:active,.profile-menu-guide[data-app-lock-now]:active,.profile-menu-logout:active{background:var(--paper);transform:none}
  .profile-menu-logout svg{background:#f1f3f5;color:var(--ink)}
}

/* Työntekijän etusivu: kevyt hierarkia ja muiden uudistettujen näkymien listapinnat. */
@media(max-width:767px){
  .app-shell.is-employee #viewRoot:has(>.worker-mobile-home){padding:0 0 calc(34px + var(--safe-area-bottom));background:var(--paper)}
  .app-shell.is-employee .worker-mobile-home{min-height:100%;background:var(--paper)}
  .app-shell.is-employee .worker-greeting{margin:0;padding:24px 72px 18px 20px}
  .app-shell.is-employee .worker-greeting .eyebrow{margin:0 0 6px;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.02em;text-transform:capitalize}
  .app-shell.is-employee .worker-greeting h2{color:var(--reference-header);font-size:32px;font-weight:750;letter-spacing:-.045em;line-height:1.05}
  .app-shell.is-employee .worker-greeting p:last-child{margin-top:8px;color:var(--muted);font-size:12px;line-height:1.45}
  .app-shell.is-employee .next-shift{margin:7px 12.5px 0;padding:18px;border:0;border-radius:14px;background:var(--surface);box-shadow:none;overflow:hidden}
  .app-shell.is-employee .next-shift::before{display:none}
  .app-shell.is-employee .next-shift .eyebrow{margin:0 0 11px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.08em}
  .app-shell.is-employee .next-shift-date{gap:8px;color:var(--accent-dark);font-size:12px;font-weight:650}
  .app-shell.is-employee .next-shift-date svg{width:18px;height:18px;stroke-width:1.9}
  .app-shell.is-employee .next-shift h2{margin-top:14px;color:var(--ink);font-size:20px;font-weight:700;letter-spacing:-.025em;line-height:1.2}
  .app-shell.is-employee .next-shift .time-range{margin-top:6px;color:var(--reference-header);font-size:17px;font-weight:650}
  .app-shell.is-employee .next-shift p{margin-top:3px;font-size:12px}
  .app-shell.is-employee .next-shift .button{justify-content:space-between;box-sizing:border-box;width:100%;min-height:46px;margin-top:16px;padding:0 13px;border:0;border-radius:10px;background:var(--accent-soft);color:var(--accent-dark);font-size:12px;font-weight:700}
  .app-shell.is-employee .next-shift .button:active{background:#e6f0fa;transform:scale(.985)}
  .app-shell.is-employee .worker-actuals{margin:14px 12.5px 0;border:0;border-radius:12px;background:var(--surface)}
  .app-shell.is-employee .worker-actuals-trigger{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 32px;align-items:center;gap:12px;width:100%;min-height:78px;padding:14px 15px 14px 20px;border:0;border-radius:12px;background:transparent;text-align:left;cursor:pointer;transition:background-color .18s ease,transform .18s ease;-webkit-tap-highlight-color:transparent}
  .app-shell.is-employee .worker-actuals-trigger:active{background:var(--accent-soft);transform:scale(.985)}
  .app-shell.is-employee .worker-actuals-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .app-shell.is-employee .worker-actuals-trigger::before{display:block;content:"";position:absolute;top:18px;bottom:18px;left:0;width:4px;border-radius:0 4px 4px 0;background:var(--accent)}
  .app-shell.is-employee .worker-actuals-trigger>span:first-child{display:grid;gap:3px}
  .app-shell.is-employee .worker-actuals-trigger strong{color:var(--accent-dark);font-size:15px;font-weight:700}
  .app-shell.is-employee .worker-actuals-trigger small{color:var(--muted);font-size:10px}
  .app-shell.is-employee .worker-actuals-trigger>svg{box-sizing:border-box;width:32px;height:32px;padding:7px;border-radius:999px;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-actuals[open]{border:0}
  .app-shell.is-employee .worker-actuals>summary{position:relative;grid-template-columns:minmax(0,1fr) auto 32px;min-height:78px;padding:14px 15px 14px 20px;border-radius:12px;background:transparent;transition:background-color .18s ease,transform .18s ease;-webkit-tap-highlight-color:transparent}
  .app-shell.is-employee .worker-actuals>summary:active{background:var(--accent-soft);transform:scale(.99)}
  .app-shell.is-employee .worker-actuals[open]>summary{background:#f6f9fd}
  .app-shell.is-employee .worker-actuals>summary::before{display:block;content:"";position:absolute;top:18px;bottom:18px;left:0;width:4px;border-radius:0 4px 4px 0;background:var(--accent)}
  .app-shell.is-employee .worker-actuals>summary strong{color:var(--accent-dark);font-size:15px;font-weight:700}
  .app-shell.is-employee .worker-actuals>summary small{margin-top:3px;color:var(--muted);font-size:10px}
  .app-shell.is-employee .worker-actuals>summary>svg{box-sizing:border-box;width:32px;height:32px;padding:7px;border-radius:999px;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-actual-count{min-width:32px;height:32px;color:var(--accent-dark);font-size:15px;font-weight:700}
  .app-shell.is-employee .worker-actuals-panel{padding:14px 17px 17px;border-top:1px solid var(--line-soft);background:var(--surface)}
  .app-shell.is-employee .worker-actuals-head{grid-template-columns:minmax(0,1fr);gap:0;padding:0 0 12px}
  .app-shell.is-employee .worker-actuals-review{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:58px;padding:10px 12px;border:1px solid #d9e6f5;border-radius:10px;background:#f7faff;color:var(--accent-dark);text-align:left;cursor:pointer;transition:background-color .16s ease,transform .16s ease;-webkit-tap-highlight-color:transparent}
  .app-shell.is-employee .worker-actuals-review:active{background:#e8f1fc;transform:scale(.985)}
  .app-shell.is-employee .worker-actuals-review:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .app-shell.is-employee .worker-actuals-review>span{display:grid;gap:3px;min-width:0}
  .app-shell.is-employee .worker-actuals-review strong{font-size:12px;font-weight:700;line-height:1.25}
  .app-shell.is-employee .worker-actuals-review small{color:#5f7389;font-size:10px;line-height:1.3}
  .app-shell.is-employee .worker-actuals-review>svg{flex:0 0 auto;width:17px;height:17px}
  .app-shell.is-employee .worker-actuals-divider{display:block;margin:13px 2px 0;color:var(--muted);font-size:9px;font-weight:650;letter-spacing:.07em;text-transform:uppercase}
  .app-shell.is-employee .worker-actuals-divider::before,.app-shell.is-employee .worker-actuals-divider::after{display:none}
  .app-shell.is-employee .worker-actual-scroll-hint{display:block;margin:0 2px 9px;color:var(--muted);font-size:10px;line-height:1.4}
  .app-shell.is-employee .worker-actual-list{display:block;border-top:1px solid var(--line-soft)}
  .app-shell.is-employee .worker-actual-list.is-scrollable{max-height:min(43dvh,390px);overflow-x:hidden;overflow-y:auto;padding-right:4px;scrollbar-width:thin;scrollbar-color:#b8c5d6 transparent;-webkit-overflow-scrolling:touch}
  .app-shell.is-employee .worker-actual-row{padding:4px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent}
  .app-shell.is-employee .worker-actual-row.is-confirming{transition:height .26s cubic-bezier(.22,1,.36,1),padding .26s cubic-bezier(.22,1,.36,1),opacity .16s ease-out,transform .22s cubic-bezier(.22,1,.36,1),border-color .18s ease-out}
  .app-shell.is-employee .worker-actual-row.is-removing{height:0!important;padding-top:0;padding-bottom:0;border-bottom-color:transparent;opacity:0;transform:translate3d(0,-6px,0);pointer-events:none}
  .app-shell.is-employee .worker-actual-row:last-child{padding-bottom:0;border-bottom:0}
  .app-shell.is-employee .worker-actual-summary{grid-template-columns:84px minmax(0,1fr) 30px;gap:10px;width:100%;min-height:72px;padding:10px 6px;border-radius:10px}
  .app-shell.is-employee .worker-actual-summary time{font-size:10px;font-weight:500}
  .app-shell.is-employee .worker-actual-summary time strong{white-space:nowrap}
  .app-shell.is-employee .worker-actual-time.is-split{display:grid;gap:1px;line-height:1.25;white-space:normal}
  .app-shell.is-employee .worker-actual-time.is-split>span{white-space:nowrap}
  .app-shell.is-employee .worker-actual-summary time strong,.app-shell.is-employee .worker-actual-summary>span>strong{font-size:12px;font-weight:600}
  .app-shell.is-employee .worker-actual-summary small{color:#8a6a3d;font-weight:400}
  .app-shell.is-employee .worker-actual-open-cue{background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-primary-actions{margin:10px 12.5px 28px}
  .app-shell.is-employee .worker-obstacle-action{min-height:48px;border:0;border-radius:10px;background:rgba(255,255,255,.46);color:#596879;font-size:11px;font-weight:600;box-shadow:none}
  .app-shell.is-employee .worker-obstacle-action svg{width:15px;height:15px;opacity:.72}
  .app-shell.is-employee .worker-obstacle-action:active{background:rgba(241,247,251,.8);color:var(--accent-dark);transform:scale(.99)}
  .app-shell.is-employee .employee-today,.app-shell.is-employee .upcoming-section{margin:0 12.5px 30px}
  .app-shell.is-employee .section-heading{align-items:end;margin:0 7.5px 11px}
  .app-shell.is-employee .section-heading h2{color:var(--reference-header);font-size:22px;font-weight:700;letter-spacing:-.035em}
  .app-shell.is-employee .section-heading>span{color:var(--muted);font-size:10px}
  .app-shell.is-employee .worker-day-group{margin-top:15px}
  .app-shell.is-employee .worker-day-group+.worker-day-group{margin-top:21px}
  .app-shell.is-employee .worker-day-group h3{margin:0 7.5px 9px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.015em;text-transform:capitalize}
  .app-shell.is-employee .employee-shift-list{display:grid;gap:0;overflow:hidden;border:0;border-radius:12px;background:var(--surface);box-shadow:none}
  .app-shell.is-employee .employee-shift-row{position:relative;grid-template-columns:68px minmax(0,1fr) 16px;gap:11px;box-sizing:border-box;width:auto;min-height:78px;margin:0 17px;padding:13px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;box-shadow:none;overflow:visible}
  .app-shell.is-employee .employee-shift-row:last-child{border-bottom:0}
  .app-shell.is-employee .employee-shift-row::before{display:none}
  .app-shell.is-employee .employee-shift-row time{gap:5px;font-size:12px;font-weight:650}
  .app-shell.is-employee .employee-shift-row time svg{width:17px;height:17px;stroke-width:1.9}
  .app-shell.is-employee .employee-shift-row time strong{font-size:12px;font-weight:700}
  .app-shell.is-employee .employee-shift-row>span>strong{font-size:13px;font-weight:700;line-height:1.3}
  .app-shell.is-employee .employee-shift-row>span>span{margin-top:4px;font-size:10px;line-height:1.35}
  .app-shell.is-employee .employee-shift-row>svg{width:16px;height:16px;color:var(--faint)}
  .app-shell.is-employee .worker-history{margin:0 12.5px 30px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
  .app-shell.is-employee .worker-actuals + .worker-history{margin-top:30px}
  .app-shell.is-employee .worker-history .section-heading{margin-right:7.5px;margin-left:7.5px}
  .app-shell.is-employee .worker-history-list{display:grid;overflow:hidden;border:0;border-radius:12px;background:var(--surface)}
  .app-shell.is-employee .worker-history-row{position:relative;grid-template-columns:72px minmax(0,1fr) 16px;box-sizing:border-box;width:100%;height:80px;margin:0;padding:10px 17px;border:0;background:transparent}
  .app-shell.is-employee .worker-history-row::after{position:absolute;right:17px;bottom:0;left:17px;height:1px;background:var(--line-soft);content:""}
  .app-shell.is-employee .worker-history-row:last-child::after{display:none}
  .app-shell.is-employee .worker-history-row>svg{justify-self:end}
  .app-shell.is-employee .worker-history-time.is-split{display:grid;gap:0;line-height:1.15}
  .app-shell.is-employee .worker-history-time.is-split>span{white-space:nowrap}
  .app-shell.is-employee .worker-history-row time strong{font-weight:600}
  .app-shell.is-employee .worker-history-row>span>strong{font-size:12px;font-weight:600}
  .app-shell.is-employee .worker-history-status{padding:2px 6px;font-size:9px;font-weight:560}
}

/* Este- ja poissaoloilmoitus: muiden työntekijätoimintojen mukainen mobiilipohjapaneeli. */
@media(max-width:767px){
  .dialog:has(#absenceNoticeForm){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border:0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(#absenceNoticeForm)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(#absenceNoticeForm){box-sizing:border-box;max-height:calc(100dvh - 18px);overflow:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head{position:sticky;top:0;z-index:2;align-items:center;margin:0 -20px;padding:22px 20px 18px;border:0;background:var(--surface)}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head h2{max-width:calc(100vw - 100px);margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.12}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head p{max-width:38ch;margin-top:5px;color:var(--muted);font-size:10px;line-height:1.45}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .dialog-surface:has(#absenceNoticeForm) .dialog-head .icon-button svg{width:19px;height:19px;stroke-width:2}
  #absenceNoticeForm{display:grid;gap:13px}
  #absenceNoticeForm .absence-date-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  #absenceNoticeForm .absence-date-grid .field,#absenceNoticeForm .absence-message-field{display:grid;gap:8px;padding:14px;border:0;border-radius:14px;background:var(--paper)}
  #absenceNoticeForm .field>span{color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}
  #absenceNoticeForm .field input,#absenceNoticeForm .field textarea{box-sizing:border-box;width:100%;border:0;border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;box-shadow:none}
  #absenceNoticeForm .field input{min-height:48px;padding:0 10px;font-variant-numeric:tabular-nums}
  #absenceNoticeForm .field textarea{min-height:104px;padding:12px 13px;line-height:1.5;resize:none}
  #absenceNoticeForm .field input:focus,#absenceNoticeForm .field textarea:focus{outline:2px solid rgba(0,70,173,.28);outline-offset:1px}
  #absenceNoticeForm .absence-privacy-note{gap:3px;padding:13px 15px;border:0;border-radius:13px;background:var(--accent-soft);color:var(--accent-dark)}
  #absenceNoticeForm .absence-privacy-note strong{font-size:11px;font-weight:750}
  #absenceNoticeForm .absence-privacy-note p{color:var(--muted);font-size:10px;line-height:1.45}
  #absenceNoticeForm .absence-urgent-note{grid-template-columns:36px minmax(0,1fr);gap:11px;padding:13px 14px;border:0;border-radius:13px;background:var(--paper)}
  #absenceNoticeForm .absence-urgent-note>span{width:36px;height:36px;background:var(--surface);color:var(--accent-dark)}
  #absenceNoticeForm .absence-urgent-note strong{font-size:11px;font-weight:750}
  #absenceNoticeForm .absence-urgent-note p{font-size:10px;line-height:1.45}
  #absenceNoticeForm>.dialog-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:3px 0 0}
  #absenceNoticeForm>.dialog-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  #absenceNoticeForm>.dialog-actions .button.primary{order:-1;border-color:var(--accent);background:var(--accent);color:#fff}
  #absenceNoticeForm>.dialog-actions .button.ghost{min-height:44px;border:0;background:transparent;color:var(--accent-dark)}
}

/* Ilmoitusasetukset: profiilin muiden alanäkymien mukainen kevyt asetuskortti. */
@media(max-width:767px){
  .app-shell.is-employee .worker-profile-push-group{gap:0}
  .app-shell.is-employee .worker-profile-push-group .worker-push-section{display:grid;gap:0;margin:0;padding:0;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading{align-items:center;margin:0 8px 11px}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading>div .eyebrow{display:block;margin:0;padding:0;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.09em;line-height:15px;text-transform:uppercase}
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading h3{display:none}
  .app-shell.is-employee .worker-profile-push-group .worker-push-state{padding:5px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-dark);font-size:9px;font-weight:700}
  .app-shell.is-employee .worker-profile-push-group .worker-push-local-note,.app-shell.is-employee .worker-profile-push-group .worker-push-warning{margin:0 0 12px;padding:11px 13px;border:0;border-radius:12px;background:var(--surface);color:var(--muted);font-size:10px;line-height:1.45}
  .app-shell.is-employee .worker-profile-push-group .worker-push-warning{background:var(--red-soft);color:var(--red)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-intro{margin:0 8px 13px;color:var(--muted);font-size:11px;line-height:1.5}
  .app-shell.is-employee .worker-profile-push-group .worker-push-options{overflow:hidden;margin:0;border:0;border-radius:12px;background:var(--surface);box-shadow:none}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle{grid-template-columns:38px minmax(0,1fr) 38px;gap:13px;min-height:76px;margin:0 18px;padding:10px 0;border:0;border-bottom:1px solid var(--line-soft)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle:last-child{border-bottom:0}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle .worker-settings-icon{width:38px;height:38px;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle strong{color:var(--ink);font-size:13px;font-weight:700;line-height:1.3}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle small{color:var(--muted);font-size:9px;line-height:1.4}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle input{width:38px;height:22px;border-radius:11px;background:#c8d2df}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle input::before{top:3px;left:3px;width:16px;height:16px;box-shadow:none}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle input:checked{background:var(--accent)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle input:checked::before{transform:translateX(16px)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-help{margin:10px 8px 0;color:var(--muted);font-size:9px;line-height:1.45}
  .app-shell.is-employee .worker-profile-push-group .worker-push-disable{justify-self:stretch;min-height:48px;margin:15px 0 0;padding:0 14px;border:0;border-radius:12px;background:var(--surface);color:var(--red);font-size:11px;font-weight:700;text-align:center;text-decoration:none}
  .app-shell.is-employee .worker-profile-push-group .worker-push-disable:active{background:var(--red-soft);transform:scale(.985)}
  .app-shell.is-employee .worker-profile-push-group .worker-push-enable{box-sizing:border-box;width:100%;min-height:50px;margin:0;border:0;border-radius:12px;background:var(--accent);color:#fff;font-size:12px;font-weight:750;box-shadow:none}
}

/* Yksittäisen työvuoron muutospyyntö: yhtenäinen mobiilipohjapaneeli. */
@media(max-width:767px){
  .dialog:has(#requestEditor){width:100%;max-width:none;max-height:calc(100dvh - 18px);margin:auto 0 0;border:0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(0,38,92,.16)}
  .dialog:has(#requestEditor)::backdrop{background:rgba(12,30,54,.42);backdrop-filter:blur(2px)}
  .dialog-surface:has(#requestEditor){box-sizing:border-box;max-height:calc(100dvh - 18px);overflow:auto;padding:0 20px calc(22px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--surface);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .dialog-surface:has(#requestEditor) .dialog-head{align-items:center;margin:0 -20px;padding:22px 20px 18px;border:0;background:var(--surface)}
  .dialog-surface:has(#requestEditor) .dialog-head h2{max-width:calc(100vw - 100px);margin:0;color:var(--reference-header);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.12}
  .dialog-surface:has(#requestEditor) .dialog-head p{margin-top:5px;color:var(--muted);font-size:10px;font-weight:650;line-height:1.45}
  .dialog-surface:has(#requestEditor) .dialog-head .icon-button{display:grid;flex:0 0 auto;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);box-shadow:none}
  .dialog-surface:has(#requestEditor) .dialog-head .icon-button svg{width:19px;height:19px;stroke-width:2}
  #requestEditor{display:grid;gap:13px}
  #requestEditor>.inline-message.error{margin:0;padding:13px 15px;border:0;border-radius:13px;background:var(--red-soft);color:var(--red);font-size:10px;line-height:1.5}
  #requestEditor>.field{display:grid;gap:8px;padding:14px;border:0;border-radius:14px;background:var(--paper)}
  #requestEditor>.field>span{color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}
  #requestEditor>.field textarea{box-sizing:border-box;width:100%;min-height:112px;padding:12px 13px;border:0;border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;line-height:1.5;resize:none;box-shadow:none}
  #requestEditor>.field textarea:focus{outline:2px solid rgba(0,70,173,.28);outline-offset:1px}
  #requestEditor>.dialog-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:3px 0 0}
  #requestEditor>.dialog-actions .button{width:100%;min-height:50px;margin:0;border-radius:12px;font-size:12px;font-weight:750;box-shadow:none}
  #requestEditor>.dialog-actions .button.primary{order:-1;border-color:var(--accent);background:var(--accent);color:#fff}
  #requestEditor>.dialog-actions .button.ghost{min-height:44px;border:0;background:transparent;color:var(--accent-dark)}
}

/* Työntekijän desktop: mobiilisisältö säilyy hallittuna myös suurella näytöllä. */
@media(min-width:768px){
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view),
  .app-shell.is-employee #viewRoot:has(>.worker-notifications-view){padding-top:42px;padding-bottom:64px;background:var(--paper)}

  .app-shell.is-employee .worker-profile-view{box-sizing:border-box;width:min(100%,960px);margin:0 auto;color:var(--ink);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .app-shell.is-employee .worker-profile-title{margin-bottom:20px}
  .app-shell.is-employee .worker-profile-title h2{margin:0;color:var(--reference-header);font-size:30px;font-weight:750;letter-spacing:-.04em;line-height:1.1}
  .app-shell.is-employee .worker-profile-identity{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:22px;margin:0 0 22px;padding:24px 26px;border:0;border-radius:16px;background:var(--surface)}
  .app-shell.is-employee .worker-profile-photo{display:block;width:104px;height:104px}
  .app-shell.is-employee .worker-profile-photo>button{position:relative;display:block;width:104px;height:104px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none}
  .app-shell.is-employee .worker-profile-photo>button:hover{transform:translateY(-1px)}
  .app-shell.is-employee .worker-profile-photo>button:active{transform:scale(.98)}
  .app-shell.is-employee .worker-profile-photo>button:focus-visible{outline:3px solid rgba(0,70,173,.28);outline-offset:3px}
  .app-shell.is-employee .worker-profile-avatar{width:104px;height:104px;border:0;background:var(--accent-soft);color:var(--accent-dark);font-size:23px;box-shadow:none}
  .app-shell.is-employee .worker-profile-camera{right:1px;bottom:1px;width:29px;height:29px;border:3px solid var(--surface);background:var(--accent);color:#fff;box-shadow:none}
  .app-shell.is-employee .worker-profile-camera svg{width:15px;height:15px}
  .app-shell.is-employee .worker-profile-identity-copy{display:grid;justify-items:start;gap:3px;min-width:0}
  .app-shell.is-employee .worker-profile-identity-copy h3{margin:0;color:var(--accent-dark);font-size:24px;font-weight:750;letter-spacing:-.035em;line-height:1.2}
  .app-shell.is-employee .worker-profile-company{margin:2px 0 0;color:var(--ink);font-size:13px;font-weight:650}
  .app-shell.is-employee .worker-profile-email{margin:0;color:var(--muted);font-size:12px}
  .app-shell.is-employee .worker-profile-settings{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;padding:0;background:transparent}
  .app-shell.is-employee .worker-profile-menu-card,
  .app-shell.is-employee .worker-profile-logout-card{overflow:hidden;border:0;border-radius:16px;background:var(--surface);box-shadow:none}
  .app-shell.is-employee .worker-profile-menu-card:first-child{grid-row:span 2}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row,
  .app-shell.is-employee .worker-profile-logout-card>button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:14px;box-sizing:border-box;width:calc(100% - 40px);min-height:72px;margin:0 20px;padding:12px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;color:var(--ink);text-align:left;box-shadow:none}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row:last-child,
  .app-shell.is-employee .worker-profile-logout-card>button{border-bottom:0}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row:hover,
  .app-shell.is-employee .worker-profile-logout-card>button:hover{background:var(--paper)}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row:active,
  .app-shell.is-employee .worker-profile-logout-card>button:active{transform:scale(.99)}
  .app-shell.is-employee .worker-profile-menu-card .worker-settings-icon,
  .app-shell.is-employee .worker-profile-logout-card .worker-settings-icon{width:42px;height:42px;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-profile-menu-card .worker-settings-icon svg,
  .app-shell.is-employee .worker-profile-logout-card .worker-settings-icon svg{width:18px;height:18px}
  .app-shell.is-employee .worker-profile-menu-card .worker-settings-copy strong,
  .app-shell.is-employee .worker-profile-logout-card>button>span:nth-child(2){color:var(--ink);font-size:14px;font-weight:700;line-height:1.35}
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row>svg,
  .app-shell.is-employee .worker-profile-logout-card>button>svg{width:17px;height:17px;color:var(--faint)}

  .app-shell.is-employee .worker-notifications-view{box-sizing:border-box;width:min(100%,900px);margin:0 auto;color:var(--ink);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
  .app-shell.is-employee .worker-notifications-view>.page-lead{margin:0 0 24px}
  .app-shell.is-employee .worker-notifications-view>.page-lead h2{margin:0;color:var(--reference-header);font-size:34px;font-weight:750;letter-spacing:-.045em;line-height:1.08}
  .app-shell.is-employee .worker-notifications-view>.page-lead p{margin:9px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
  .app-shell.is-employee .worker-notifications-view .notification-list{display:grid;overflow:hidden;border:0;border-radius:16px;background:var(--surface)}
  .app-shell.is-employee .worker-notifications-view .notification-row{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:16px;box-sizing:border-box;width:calc(100% - 44px);min-height:88px;margin:0 22px;padding:16px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;color:var(--ink);text-align:left;box-shadow:none}
  .app-shell.is-employee .worker-notifications-view .notification-row:last-child{border-bottom:0}
  .app-shell.is-employee .worker-notifications-view .notification-row:is(button):hover{background:var(--paper)}
  .app-shell.is-employee .worker-notifications-view .notification-row:is(button):active{transform:scale(.995)}
  .app-shell.is-employee .worker-notifications-view .notification-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark)}
  .app-shell.is-employee .worker-notifications-view .notification-icon svg{width:19px;height:19px;stroke-width:2}
  .app-shell.is-employee .worker-notifications-view .notification-copy{display:grid;min-width:0;gap:5px}
  .app-shell.is-employee .worker-notifications-view .notification-row strong{color:var(--ink);font-size:14px;font-weight:700;line-height:1.35}
  .app-shell.is-employee .worker-notifications-view .notification-row p{max-width:62ch;margin:0;color:var(--muted);font-size:12px;line-height:1.5}
  .app-shell.is-employee .worker-notifications-view .notification-row time{align-self:start;margin-top:3px;color:var(--muted);font-size:10px;font-weight:650;white-space:nowrap}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread{padding-left:0;background:transparent}
  .app-shell.is-employee .worker-notifications-view .notification-row.is-unread::before{top:15px;left:31px;width:8px;height:8px;border:2px solid var(--surface);border-radius:50%;background:var(--accent)}
}
@media(min-width:768px) and (max-width:1023px){
  .app-shell.is-employee .worker-profile-settings{grid-template-columns:1fr}
  .app-shell.is-employee .worker-profile-menu-card:first-child{grid-row:auto}
}

/* Asiakkaan päivän sopivuus kuuluu samaan viikkoruudukkoon kuin käynnit. */
.client-week-cell.has-open-menu{z-index:20}.client-week-cell.has-client-unavailable{background:#fff8f7}.client-week-cell.has-client-exception{background:#f7fbf8}.client-availability-control{position:relative;z-index:4;justify-self:stretch}.client-availability-trigger{display:flex;align-items:center;justify-content:space-between;gap:5px;width:100%;min-height:24px;padding:3px 6px 3px 8px;border:1px solid var(--line-soft);border-radius:5px;background:#fafafd;color:var(--faint);font-size:8px;font-weight:850;letter-spacing:.025em;text-align:left}.client-availability-trigger:hover,.client-availability-trigger:focus-visible{border-color:#b86a72;color:#8f303b;outline:0}.client-availability-trigger svg{flex:0 0 auto;width:11px;height:11px;transform:rotate(90deg)}.client-availability-trigger.is-unavailable{border-color:#e7b8bc;background:var(--red-soft);color:var(--red)}.client-availability-trigger.is-exception{border-color:#b8d9c8;background:#f0f8f4;color:#24714f}.client-availability-menu{position:absolute;top:28px;left:0;z-index:50;width:190px;padding:4px;border:1px solid var(--line);border-radius:7px;background:#fff;box-shadow:0 8px 22px rgba(32,32,45,.16)}.client-availability-menu>button{display:block;width:100%;min-height:34px;padding:7px 8px;border:0;border-radius:4px;background:transparent;color:var(--ink);font-size:10px;font-weight:700;text-align:left}.client-availability-menu>button:hover,.client-availability-menu>button:focus-visible{background:var(--red-soft);color:var(--red);outline:0}.client-week-mobile-actions{display:flex;align-items:center;gap:7px}.client-week-mobile-actions .client-availability-control{width:104px}.client-week-mobile-row.has-client-unavailable{background:#fffafa}
.schedule-preview-week-total{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;margin:0 12px 10px;border-radius:12px;background:#f3f6fa;color:#113d78;font-size:12px}.schedule-preview-row.is-day-off{background:#f7f8fa;color:#596579}@media(max-width:767px){.client-week-mobile-actions .client-availability-menu{right:0;left:auto}}

/* Työntekijän kirjautumisen jälkeinen ilmoitusvalinta. */
.worker-push-opt-in{position:fixed;right:24px;bottom:24px;z-index:85;display:grid;grid-template-columns:48px minmax(0,1fr);gap:0 16px;box-sizing:border-box;width:min(440px,calc(100vw - 48px));padding:22px;border:1px solid var(--line);border-radius:20px;background:var(--surface-strong);color:var(--ink);box-shadow:0 18px 44px rgba(17,34,58,.18);font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif;opacity:0;transform:translate3d(0,28px,0);animation:worker-push-opt-in .35s cubic-bezier(.22,1,.36,1) forwards}.worker-push-opt-in.is-leaving{animation:worker-push-opt-out .2s ease-in forwards}.worker-push-opt-in-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--accent-soft);color:var(--accent-dark)}.worker-push-opt-in-icon svg{width:22px;height:22px;stroke-width:1.9}.worker-push-opt-in-copy{min-width:0}.worker-push-opt-in-copy .eyebrow{margin:1px 0 5px;color:var(--accent-dark);font-size:9px;font-weight:800;letter-spacing:.09em}.worker-push-opt-in-copy h2{margin:0;color:var(--reference-header);font-size:22px;font-weight:750;letter-spacing:-.035em;line-height:1.15}.worker-push-opt-in-copy>p:not(.eyebrow){margin:10px 0 0;color:var(--ink);font-size:13px;line-height:1.5}.worker-push-opt-in-copy small{display:block;margin-top:8px;color:var(--muted);font-size:10px;line-height:1.45}.worker-push-opt-in-feedback{grid-column:1/-1;margin:15px 0 0;padding:10px 12px;border-radius:10px;background:var(--red-soft);color:var(--red);font-size:11px;line-height:1.45}.worker-push-opt-in-actions{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;margin-top:18px}.worker-push-opt-in-actions .button{min-height:48px;border-radius:12px;box-shadow:none}.worker-push-opt-in-actions .button.ghost{min-width:105px;border:0;background:transparent;color:var(--accent-dark)}.worker-push-opt-in-actions .button:focus-visible{outline:3px solid rgba(0,70,173,.25);outline-offset:2px}@keyframes worker-push-opt-in{to{opacity:1;transform:translate3d(0,0,0)}}@keyframes worker-push-opt-out{to{opacity:0;transform:translate3d(0,18px,0)}}
@media(max-width:767px){.worker-push-opt-in{right:0;bottom:0;width:100%;padding:22px 20px calc(18px + env(safe-area-inset-bottom));border-width:1px 0 0;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(17,34,58,.16)}.worker-push-opt-in-copy h2{font-size:23px}.worker-push-opt-in-actions{grid-template-columns:1fr}.worker-push-opt-in-actions .button.primary{order:-1}.worker-push-opt-in-actions .button.ghost{min-height:44px}}
@media(prefers-reduced-motion:reduce){.worker-push-opt-in,.worker-push-opt-in.is-leaving{animation-duration:.01ms}}

/* Johdon hakemistoissa sivummalle siirretyt pysyvät löydettävissä ilman nimikikkoja. */
.admin-list-group-heading{position:sticky;top:0;z-index:2;padding:9px 10px 8px;border-top:1px solid #c8d9ec;border-bottom:1px solid #c8d9ec;background:#eef5fc;color:var(--accent-dark);font-size:9px;font-weight:850;letter-spacing:.075em;text-transform:uppercase}.admin-list-group-heading.is-inactive{border-color:var(--line);background:#f5f5f7;color:var(--muted)}

/* Tapahtumalokin viisi rajausta pysyvät samassa lukujärjestyksessä leveällä näytöllä. */
@media(min-width:901px){.audit-filters{grid-template-columns:minmax(135px,.8fr) minmax(170px,1.15fr) minmax(180px,1.3fr) minmax(130px,.75fr) minmax(130px,.75fr)}}

/* Työntekijän mobiilin valkoiset pinnat: hillitty ja rajattu syvyys. */
@media(max-width:767px){
  .app-shell.is-employee{
    --worker-surface-shadow:0 3px 7px -2px rgba(33,35,34,.11),0 1px 2px rgba(33,35,34,.04);
    --worker-floating-shadow:0 4px 9px -3px rgba(33,35,34,.15),0 1px 3px rgba(33,35,34,.045);
    --worker-profile-shadow:0 2px 6px -2px rgba(33,35,34,.09),0 1px 2px rgba(33,35,34,.03);
  }
  .app-shell.is-employee .worker-profile-subhead .worker-profile-subback{
    font-weight:600;
  }
  .app-shell.is-employee .worker-profile-subhead h2{
    font-weight:600;
    letter-spacing:-.025em;
  }
  .app-shell.is-employee .worker-profile-settings-group>h3,
  .app-shell.is-employee .worker-profile-push-group .worker-push-heading>div .eyebrow{
    font-weight:600;
  }
  .app-shell.is-employee .worker-profile-subview .worker-settings-copy strong,
  .app-shell.is-employee .worker-profile-subview .profile-detail-copy strong,
  .app-shell.is-employee .worker-profile-push-group .worker-push-toggle strong{
    font-weight:500;
    letter-spacing:-.006em;
  }
  .app-shell.is-employee .worker-profile-push-group .worker-push-state,
  .app-shell.is-employee .worker-profile-push-group .worker-push-disable{
    font-weight:600;
  }
  .app-shell.is-employee .worker-profile-identity-copy h3{
    font-weight:600;
    letter-spacing:-.025em;
  }
  .app-shell.is-employee .worker-profile-company{
    font-weight:500;
  }
  .app-shell.is-employee .worker-profile-menu-card>.worker-settings-row .worker-settings-copy strong{
    font-weight:500;
    letter-spacing:-.006em;
  }
  .app-shell.is-employee .worker-calendar-day.has-shifts{
    box-shadow:var(--worker-profile-shadow);
  }
  .app-shell.is-employee .worker-calendar-day.has-shifts:active{
    box-shadow:0 1px 2px rgba(33,35,34,.045);
  }
  .app-shell.is-employee .next-shift .eyebrow,
  .app-shell.is-employee .next-shift-date,
  .app-shell.is-employee .next-shift h2,
  .app-shell.is-employee .next-shift .time-range,
  .app-shell.is-employee .next-shift .button,
  .app-shell.is-employee .worker-actuals>summary strong,
  .app-shell.is-employee .worker-actual-count,
  .app-shell.is-employee .worker-actuals-head .button,
  .app-shell.is-employee .worker-obstacle-action,
  .app-shell.is-employee .section-heading h2,
  .app-shell.is-employee .employee-shift-row time,
  .app-shell.is-employee .employee-shift-row time strong,
  .app-shell.is-employee .employee-shift-row>span>strong{
    font-weight:600;
  }
  .app-shell.is-employee .next-shift h2{
    font-weight:650;
  }
  .app-shell.is-employee .worker-calendar-view>.page-lead .eyebrow,
  .app-shell.is-employee .worker-calendar-window small,
  .app-shell.is-employee .worker-calendar-window strong,
  .app-shell.is-employee .worker-calendar-weekdays span,
  .app-shell.is-employee .worker-calendar-day>span,
  .app-shell.is-employee .worker-calendar-day strong,
  .app-shell.is-employee .worker-calendar-day b{
    font-weight:600;
  }
  .app-shell.is-employee .worker-calendar-day small{
    font-weight:500;
  }
  .app-shell.is-employee .worker-notifications-view .notification-row strong,
  .app-shell.is-employee .worker-notifications-view .notification-row time{
    font-weight:500;
    letter-spacing:-.006em;
  }
  .app-shell.is-employee .next-shift,
  .app-shell.is-employee .worker-actuals,
  .app-shell.is-employee .worker-actuals[open],
  .app-shell.is-employee .worker-history-list,
  .app-shell.is-employee .worker-calendar-workspace,
  .app-shell.is-employee .worker-notifications-view .notification-list,
  .app-shell.is-employee .worker-notifications-view .empty-state{
    box-shadow:var(--worker-surface-shadow);
  }
  .app-shell.is-employee .worker-settings-card,
  .app-shell.is-employee .worker-profile-settings-card,
  .app-shell.is-employee .worker-profile-menu-card,
  .app-shell.is-employee .worker-profile-view .profile-details,
  .app-shell.is-employee .worker-profile-push-group .worker-push-options{
    box-shadow:var(--worker-profile-shadow);
  }
  .app-shell.is-employee .mobile-nav{
    box-shadow:var(--worker-floating-shadow);
  }
  .app-shell.is-employee:has(#viewRoot>.worker-profile-view) .mobile-refresh-button{
    display:none;
  }
  .app-shell.is-employee .worker-profile-photo{
    width:88px;
    height:auto;
  }
  .app-shell.is-employee .worker-profile-photo>button{
    display:grid;
    justify-items:center;
    width:88px;
    height:auto;
    overflow:visible;
  }
  .app-shell.is-employee .worker-profile-avatar{
    box-shadow:0 2px 5px -2px rgba(33,35,34,.12),0 1px 2px rgba(33,35,34,.035);
  }
  .app-shell.is-employee .worker-profile-settings{
    gap:18px;
  }
  .app-shell.is-employee .worker-profile-logout-card{
    margin:0 8px;
    border-top:1px solid var(--line-soft);
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
  .app-shell.is-employee .worker-profile-logout-card>button{
    width:100%;
    min-height:64px;
    margin:0;
    padding:10px 12px;
    color:var(--muted);
  }
  .app-shell.is-employee .worker-profile-logout-card .worker-settings-icon{
    background:transparent;
    color:var(--muted);
  }
}

/* Johdon mobiilityotila kayttaa samaa rauhallista pintakielta kuin tyontekijan sovellus.
   Kaikki saannot on rajattu mobiilibreakpointiin, jotta desktop pysyy muuttumattomana. */
@media(max-width:767px){
  .app-shell:not(.is-employee){
    --app-header:68px;
    --manager-mobile-surface-shadow:0 8px 18px rgba(33,35,34,.10),0 2px 5px rgba(33,35,34,.04);
    --manager-mobile-floating-shadow:0 8px 24px rgba(33,35,34,.16),0 2px 7px rgba(33,35,34,.06);
    --manager-mobile-radius:16px;
    background:#f5f6f7;
  }
  .app-shell:not(.is-employee) .main-shell{
    padding-bottom:calc(82px + var(--safe-area-bottom));
    background:#f5f6f7;
  }
  .app-shell:not(.is-employee) .view-root{
    padding:18px 12px 42px;
  }
  .app-shell:not(.is-employee) .app-header{
    height:68px;
    min-height:68px;
    padding-right:10px;
    padding-left:18px;
  }

  .app-shell:not(.is-employee) .mobile-nav{
    right:16px;
    bottom:calc(var(--safe-area-bottom) + 8px);
    left:16px;
    grid-auto-columns:1fr;
    height:64px;
    padding:5px;
    border:1px solid #e3e6ea;
    border-radius:32px;
    background:#fff;
    box-shadow:var(--manager-mobile-floating-shadow);
  }
  .app-shell:not(.is-employee) .mobile-nav .nav-button{
    gap:3px;
    min-width:0;
    min-height:52px;
    padding:0 3px;
    border-radius:27px;
    color:#6e7787;
    font-size:10px;
    font-weight:550;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .mobile-nav .nav-button svg{
    width:25px;
    height:25px;
  }
  .app-shell:not(.is-employee) .mobile-nav .nav-button.is-active{
    background:#eaf1fb;
    color:var(--reference-header);
    font-weight:700;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .mobile-nav .nav-button.is-active svg{stroke-width:2.35}
  .app-shell:not(.is-employee) .mobile-nav .nav-badge{top:1px;margin-left:27px}

  .app-shell:not(.is-employee) .manager-home-surface{
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
  }
  .app-shell:not(.is-employee) .home-intro{
    gap:18px;
    padding:4px 4px 22px;
    border:0;
  }
  .app-shell:not(.is-employee) .home-intro .eyebrow{
    color:#747c87;
    font-size:10px;
    font-weight:750;
    letter-spacing:.075em;
  }
  .app-shell:not(.is-employee) .home-intro h2{
    margin-top:6px;
    color:#212322;
    font-size:29px;
    font-weight:650;
    letter-spacing:-.035em;
    line-height:1.12;
  }
  .app-shell:not(.is-employee) .home-intro p:last-child{
    margin-top:7px;
    color:#66707d;
    font-size:13px;
  }
  .app-shell:not(.is-employee) .home-actions{gap:8px}
  .app-shell:not(.is-employee) .home-actions .button{
    min-height:48px;
    border-radius:12px;
    font-size:12px;
    font-weight:700;
  }
  .app-shell:not(.is-employee) .home-actions .button.secondary{
    border-color:#d7dee7;
    background:#fff;
  }

  .app-shell:not(.is-employee) .week-flow-status,
  .app-shell:not(.is-employee) .week-flow-status.is-compact{
    gap:17px;
    margin:0 0 28px;
    padding:18px;
    border:0;
    border-radius:var(--manager-mobile-radius);
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }
  .app-shell:not(.is-employee) .week-flow-copy{gap:10px}
  .app-shell:not(.is-employee) .week-flow-copy h2{font-size:18px;line-height:1.25}
  .app-shell:not(.is-employee) .week-flow-copy p:last-child{font-size:12px;line-height:1.45}
  .app-shell:not(.is-employee) .week-flow-metrics{
    overflow:hidden;
    border:1px solid #eceef1;
    border-radius:12px;
    background:#fafbfc;
  }
  .app-shell:not(.is-employee) .week-flow-metrics>div{min-height:58px;padding:10px 12px}
  .app-shell:not(.is-employee) .week-flow-metrics dt{font-size:10px}
  .app-shell:not(.is-employee) .week-flow-metrics dd{font-size:17px}
  .app-shell:not(.is-employee) .week-flow-actions{gap:8px}
  .app-shell:not(.is-employee) .week-flow-actions .button{min-height:46px;border-radius:11px;font-size:12px}

  .app-shell:not(.is-employee) .manager-own-section,
  .app-shell:not(.is-employee) .attention-section.has-issues,
  .app-shell:not(.is-employee) .today-section{margin-top:28px}
  .app-shell:not(.is-employee) .attention-section.has-issues{
    padding:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .home-section-head{margin:0 5px 10px}
  .app-shell:not(.is-employee) .home-section-head.advisory-head{margin:24px 5px 10px}
  .app-shell:not(.is-employee) .home-section-head h2{color:#212322;font-size:20px;font-weight:650}
  .app-shell:not(.is-employee) .home-section-head p:last-child{margin-top:4px;color:#737b86;font-size:11px}
  .app-shell:not(.is-employee) .attention-total{font-size:10px}
  .app-shell:not(.is-employee) .manager-own-list,
  .app-shell:not(.is-employee) .attention-list,
  .app-shell:not(.is-employee) .today-list{
    overflow:hidden;
    border:0;
    border-radius:var(--manager-mobile-radius);
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }
  .app-shell:not(.is-employee) .manager-own-row,
  .app-shell:not(.is-employee) .attention-row,
  .app-shell:not(.is-employee) .today-row{
    min-height:66px;
    margin:0 15px;
    padding:13px 0;
    border-bottom-color:#eceef1;
  }
  .app-shell:not(.is-employee) .manager-own-row:last-child,
  .app-shell:not(.is-employee) .attention-row:last-child,
  .app-shell:not(.is-employee) .today-row:last-child{border-bottom:0}
  .app-shell:not(.is-employee) .manager-own-row:active,
  .app-shell:not(.is-employee) .attention-row:active,
  .app-shell:not(.is-employee) .today-row:active{transform:scale(.985);background:transparent}
  .app-shell:not(.is-employee) .manager-own-row{grid-template-columns:68px minmax(0,1fr) 16px;gap:10px}
  .app-shell:not(.is-employee) .attention-row{grid-template-columns:52px minmax(0,1fr) auto;gap:9px}
  .app-shell:not(.is-employee) .today-row{grid-template-columns:70px minmax(0,1fr);gap:10px}
  .app-shell:not(.is-employee) .row-main strong{font-size:13px;font-weight:650}
  .app-shell:not(.is-employee) .row-main span{margin-top:3px;font-size:10px;line-height:1.4}
  .app-shell:not(.is-employee) .manager-own-date strong,
  .app-shell:not(.is-employee) .today-row time{font-size:11px}
  .app-shell:not(.is-employee) .manager-own-date time{font-size:10px}
  .app-shell:not(.is-employee) .home-clear-status{
    margin-top:26px;
    padding:16px;
    border:0;
    border-radius:var(--manager-mobile-radius);
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }
  .app-shell:not(.is-employee) .list-action{min-height:48px;border:0;font-size:11px}

  .app-shell:not(.is-employee) .page-lead{
    gap:15px;
    margin:2px 4px 18px;
  }
  .app-shell:not(.is-employee) .page-lead h2{font-size:27px;font-weight:650;letter-spacing:-.035em}
  .app-shell:not(.is-employee) .page-lead p{margin-top:6px;color:#6f7884;font-size:12px;line-height:1.45}
  .app-shell:not(.is-employee) .lead-actions{gap:8px}
  .app-shell:not(.is-employee) .lead-actions .button{min-height:46px;border-radius:11px;font-size:12px}
  .app-shell:not(.is-employee) .employee-directory,
  .app-shell:not(.is-employee) .client-directory,
  .app-shell:not(.is-employee) .detail-panel{
    border:0;
    border-radius:var(--manager-mobile-radius);
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }
  .app-shell:not(.is-employee) .employee-directory,
  .app-shell:not(.is-employee) .client-directory{padding:8px}
  .app-shell:not(.is-employee) .search-field{padding:0 0 8px}
  .app-shell:not(.is-employee) .search-field input{min-height:46px;border-color:#e3e6ea;border-radius:11px;background:#f7f8fa}
  .app-shell:not(.is-employee) .admin-list-button{min-height:64px;border-bottom-color:#eceef1}
  .app-shell:not(.is-employee) .admin-list{border-top-color:#dfe3e8}
  .app-shell:not(.is-employee) .admin-list-group-heading{top:-8px;border-color:#dbe5f1;border-radius:8px;background:#eef4fb}
  .app-shell:not(.is-employee) .detail-panel{padding:18px}

  /* Kalenteri sovittaa desktopin saman jarjestyksen mobiiliin: ajanjakso,
     viikon eteneminen ja tyokalut, nakymavalinta, paivat ja valitun paivan sisalto. */
  .app-shell:not(.is-employee) .view-root:has(.calendar-command-bar){
    padding:12px 12px 38px;
  }
  .app-shell:not(.is-employee) .calendar-mobile-controls{
    margin:0 0 10px;
    padding:0 0 10px;
    border:0;
    border-bottom:1px solid #dfe3e8;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .calendar-toolbar,
  .app-shell:not(.is-employee) .calendar-toolbar.is-week{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(112px,.58fr);
    gap:8px;
    margin:0;
    padding:0;
  }
  .app-shell:not(.is-employee) .calendar-toolbar .planning-month-control{
    grid-column:1;
    grid-row:1;
    order:initial;
    min-width:0;
    min-height:44px;
    border-color:#d8dee7;
    border-radius:8px;
  }
  .app-shell:not(.is-employee) .calendar-toolbar .planning-month-control>strong{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .app-shell:not(.is-employee) .calendar-toolbar .calendar-view-menu{
    grid-column:2;
    grid-row:1;
    order:initial;
    width:auto;
  }
  .app-shell:not(.is-employee) .calendar-view-menu summary{
    justify-content:space-between;
    min-height:44px;
    border-color:#d8dee7;
    border-radius:8px;
  }
  .app-shell:not(.is-employee) .calendar-toolbar .period-area{
    display:grid;
    grid-template-columns:minmax(0,1fr) 74px;
    grid-column:1/-1;
    grid-row:2;
    order:initial;
    gap:8px;
    width:100%;
    margin:0;
  }
  .app-shell:not(.is-employee) .calendar-today{
    grid-column:2;
    grid-row:1;
    min-height:44px;
    padding:0 8px;
    border-color:#bfd1ed;
    border-radius:8px;
    background:#fff;
  }
  .app-shell:not(.is-employee) .period-control{
    display:grid;
    grid-template-columns:44px minmax(0,1fr) 44px;
    grid-column:1;
    grid-row:1;
    gap:4px;
    min-width:0;
  }
  .app-shell:not(.is-employee) .period-control .icon-button{
    width:44px;
    height:44px;
    border-color:#d8dee7;
    border-radius:8px;
  }
  .app-shell:not(.is-employee) .period-label{
    align-self:center;
    min-width:0;
  }
  .app-shell:not(.is-employee) .period-label strong{
    display:block;
    min-width:0;
    font-size:15px;
    line-height:1.1;
  }
  .app-shell:not(.is-employee) .period-label small{
    display:block;
    margin-top:3px;
    color:#747c87;
    font-size:9px;
    text-align:center;
  }
  .app-shell:not(.is-employee) .calendar-command-bar{
    gap:0;
    margin:0 0 10px;
    padding:0;
    overflow:hidden;
    border:1px solid #dfe3e8;
    border-radius:10px;
    background:#fff;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .calendar-stage-controls{
    border-bottom:1px solid #dfe3e8;
  }
  .app-shell:not(.is-employee) .calendar-stage-controls>button{
    min-height:50px;
    padding:7px 5px;
  }
  .app-shell:not(.is-employee) .calendar-stage-controls strong{font-size:10px}
  .app-shell:not(.is-employee) .calendar-stage-controls small{
    overflow:hidden;
    font-size:8px;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .app-shell:not(.is-employee) .calendar-command-actions{
    display:grid;
    grid-template-columns:1.15fr .9fr .78fr auto;
    gap:5px;
    padding:7px;
    border-top:0;
  }
  .app-shell:not(.is-employee) .calendar-command-actions .button,
  .app-shell:not(.is-employee) .calendar-command-actions .button.ghost{
    grid-column:auto;
    min-height:44px;
    padding:0 7px;
    border-radius:7px;
    font-size:10px;
    white-space:nowrap;
  }
  .app-shell:not(.is-employee) .calendar-command-actions .button svg{
    width:15px;
    height:15px;
  }
  .app-shell:not(.is-employee) .planner-filterbar{
    margin-bottom:8px;
  }
  .app-shell:not(.is-employee) .planner-filterbar .week-planning-switch{
    border-color:#d8dee7;
    border-radius:9px;
    background:#f3f5f8;
  }
  .app-shell:not(.is-employee) .planner-filterbar .week-planning-switch>button{
    min-height:44px;
  }
  .app-shell:not(.is-employee) .week-strip{
    border-color:#dfe3e8;
    border-radius:10px;
    background:#f3f5f8;
  }
  .app-shell:not(.is-employee) .day-chip{
    min-height:62px;
  }
  .app-shell:not(.is-employee) .schedule-surface{
    margin-top:8px;
    padding:0 12px;
    border:1px solid #dfe3e8;
    border-radius:10px;
    background:#fff;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .schedule-surface .selected-day-head{
    margin:0 -12px;
    padding:13px 12px;
  }
  .app-shell:not(.is-employee) .calendar-review-panel{
    margin-bottom:10px;
    padding:15px 12px;
    border:1px solid #e3c5c1;
    border-radius:10px;
    background:#fff;
    box-shadow:none;
  }
  .app-shell:not(.is-employee) .client-week-planner-mobile{
    border:1px solid #dfe3e8;
    border-radius:10px;
    background:#fff;
  }
  .app-shell:not(.is-employee) .client-week-planner-mobile .week-strip{
    margin:0;
    border:0;
    border-bottom:1px solid #dfe3e8;
    border-radius:9px 9px 0 0;
  }
  .app-shell:not(.is-employee) .client-week-planner-mobile .selected-day-head{
    margin:0;
    padding:13px 12px;
  }
  .app-shell:not(.is-employee) .client-week-mobile-row{
    margin:0;
    padding:0 12px;
    border:0;
    border-top:1px solid #eceef1;
    border-radius:0;
    background:#fff;
    box-shadow:none;
  }

  @media(max-width:430px){
    .app-shell:not(.is-employee) .calendar-toolbar .planning-month-control>span{display:none}
  }

  @media(max-width:360px){
    .app-shell:not(.is-employee) .calendar-command-actions{grid-template-columns:1fr 1fr}
    .app-shell:not(.is-employee) .calendar-command-actions .button,
    .app-shell:not(.is-employee) .calendar-command-actions .button.ghost{grid-column:auto}
  }

  .app-shell:not(.is-employee) .payroll-status,
  .app-shell:not(.is-employee) .payroll-queue,
  .app-shell:not(.is-employee) .payroll-output,
  .app-shell:not(.is-employee) .report-issues,
  .app-shell:not(.is-employee) .schedule-report-status,
  .app-shell:not(.is-employee) .schedule-employees,
  .app-shell:not(.is-employee) .audit-list,
  .app-shell:not(.is-employee) .document-process,
  .app-shell:not(.is-employee) .official-document-list{
    border-color:transparent;
    border-radius:var(--manager-mobile-radius);
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }
  .app-shell:not(.is-employee) .report-period,
  .app-shell:not(.is-employee) .audit-filters,
  .app-shell:not(.is-employee) .document-tabs{border-radius:12px}

  .manager-more-view{display:grid;gap:17px}
  .manager-more-head{margin:2px 4px 0}
  .manager-more-head .eyebrow{margin:0 0 5px;color:#717985;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .manager-more-head h2{margin:0;color:#212322;font-size:29px;font-weight:650;letter-spacing:-.035em;line-height:1.12}
  .manager-more-head p:last-child{margin:7px 0 0;color:#69727f;font-size:13px;line-height:1.45}
  .manager-more-list{display:grid;overflow:hidden;border:0;border-radius:var(--manager-mobile-radius);background:#fff;box-shadow:var(--manager-mobile-surface-shadow)}
  .manager-more-list button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:12px;min-height:78px;margin:0 15px;padding:12px 0;border:0;border-bottom:1px solid #eceef1;background:transparent;color:#212322;text-align:left}
  .manager-more-list button:last-child{border-bottom:0}
  .manager-more-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#edf3fa;color:var(--reference-header)}
  .manager-more-icon svg{width:21px;height:21px}
  .manager-more-copy{display:grid;gap:3px;min-width:0}
  .manager-more-copy strong{font-size:14px;font-weight:650}
  .manager-more-copy small{color:#717985;font-size:11px;line-height:1.35}
  .manager-more-list button>svg{width:18px;height:18px;color:#8a929d}
  .manager-more-list button:active{transform:scale(.985)}
}

@media(max-width:767px) and (prefers-reduced-motion:reduce){
  .app-shell:not(.is-employee) .mobile-nav .nav-button,
  .app-shell:not(.is-employee) .manager-own-row,
  .app-shell:not(.is-employee) .attention-row,
  .app-shell:not(.is-employee) .today-row,
  .manager-more-list button{transition:none}
}
/* A fully opaque, top-layer lock: client information never flashes underneath. */
html.app-is-locked { overflow: hidden; }
html.app-privacy-covered { overflow: hidden; }
.app-privacy-cover { position: fixed; inset: 0; z-index: 2147483646; display: grid; place-items: center; background: #0046ad; color: #fff; }
.app-privacy-cover[hidden] { display: none; }
.app-privacy-cover .app-lock-brand-lockup { transform: translateY(-4vh); }
.app-privacy-cover img { display: block; width: min(160px,43vw); height: auto; object-fit: contain; }
.app-privacy-cover .app-lock-brand-lockup > span { margin-top: 8px; color: #fff; font-size: 15px; font-weight: 560; line-height: 1.15; letter-spacing: .01em; }
html.app-privacy-covered dialog.app-lock > * { visibility: hidden; }
dialog.app-lock {
  position: fixed; inset: 0; width: 100%; height: 100%; height: 100dvh;
  max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  border-radius: 0; background: #0046ad; color: #fff;
  font-family: "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
  overscroll-behavior: contain;
}
dialog.app-lock::backdrop { background: #0046ad; backdrop-filter: none; }
dialog.app-lock:focus { outline: none; }
.app-lock *, .app-lock *::before, .app-lock *::after { box-sizing: border-box; }
.app-lock [hidden] { display: none !important; }
.app-lock-layout {
  width: min(100%, 430px); min-height: 100%; margin: auto;
  display: flex; flex-direction: column;
  padding: max(34px, env(safe-area-inset-top)) 28px max(18px, env(safe-area-inset-bottom));
}
.app-lock-brand { display: grid; place-items: center; min-height: clamp(116px, 20dvh, 176px); padding-top: clamp(10px, 4dvh, 38px); }
.app-lock-brand-lockup { display: grid; justify-items: center; }
.app-lock-brand img { display: block; width: min(160px, 43vw); height: auto; object-fit: contain; }
.app-lock-brand-lockup > span { margin-top: 8px; color: #fff; font-size: 15px; font-weight: 560; line-height: 1.15; letter-spacing: .01em; }
.app-lock-content { flex: 1; display: flex; flex-direction: column; justify-content: center; padding-top: clamp(10px, 3dvh, 26px); animation: lock-content-in 240ms cubic-bezier(.16,1,.3,1) both; }
.app-lock-heading { text-align: center; animation: lock-arrive 180ms ease-out both; }
.app-lock h1 { color: #fff; font-size: clamp(21px, 5.8vw, 24px); line-height: 1.24; letter-spacing: -.35px; font-weight: 690; margin: 0 auto 12px; max-width: 290px; text-wrap: balance; }
.app-lock[data-stage="unlock"] h1 { font-weight: 560; }
.app-lock-heading p { color: rgba(255,255,255,.78); font-size: 14px; line-height: 1.55; margin: 0 auto; max-width: 310px; }
.app-lock-dots { display: flex; align-items: center; justify-content: center; gap: 18px; min-height: 62px; margin-top: 17px; }
.app-lock-dots span { width: 27px; height: 27px; border: 2px solid rgba(255,255,255,.94); border-radius: 50%; background: transparent; transition: background 140ms cubic-bezier(.2,.8,.2,1), transform 140ms cubic-bezier(.2,.8,.2,1); }
.app-lock-dots span.is-filled { background: #fff; transform: scale(.82); }
.app-lock-pin-help { align-self: center; min-height: 44px; margin: -1px 0 4px; padding: 10px 8px; border: 0; background: transparent; color: #fff; font-size: 14px; font-weight: 650; text-decoration: underline; text-underline-offset: 3px; }
.app-lock-message { color: #ffe0dd; font-size: 13px; line-height: 1.45; min-height: 34px; margin: 0; text-align: center; }
.app-lock-progress { font-size: 12px; color: rgba(255,255,255,.76); text-align: center; height: 0; transform: translateY(-20px); }
.app-lock-keypad { --app-lock-key-size: clamp(64px,18vw,74px); display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 24px; width: 100%; max-width: 340px; margin: 2px auto 10px; }
.app-lock button { font-family: inherit; -webkit-tap-highlight-color: transparent; cursor: pointer; touch-action: manipulation; }
.app-lock-keypad button { display: grid; place-items: center; justify-self: center; width: var(--app-lock-key-size); height: var(--app-lock-key-size); min-height: var(--app-lock-key-size); padding: 0; border: 1px solid rgba(255,255,255,.15); border-radius: 999px; background: rgba(255,255,255,.065); color: #fff; font-size: clamp(35px,9.5vw,40px); font-weight: 400; transition: transform 90ms cubic-bezier(.2,.8,.2,1),background-color 90ms ease-out; }
.app-lock-keypad [data-erase] { border: 0; background: transparent; color: #fff; }
.app-lock-keypad svg { width: 27px; height: 27px; }
.app-lock button:active:not(:disabled) { transform: scale(.95); background-color: rgba(255,255,255,.16); }
.app-lock-keypad button:active:not(:disabled) { transform: scale(.9); background-color: rgba(255,255,255,.2); }
.app-lock button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.app-lock button:disabled { cursor: wait; opacity: .5; }
.app-lock-footer { display: flex; justify-content: center; min-height: 44px; align-items: center; margin-top: 4px; }
.app-lock[data-stage="loading"] .app-lock-layout { justify-content: center; }
.app-lock[data-stage="loading"] .app-lock-brand { min-height: 0; padding: 0; }
.app-lock[data-stage="loading"] .app-lock-content { flex: 0 0 auto; align-items: center; padding: 0; margin-top: 38px; animation: none; }
.app-lock[data-stage="loading"] .app-lock-heading { animation: none; }
.app-lock[data-stage="loading"] .app-lock-message,.app-lock[data-stage="loading"] .app-lock-footer { display: none; }
.app-lock-footer button { border: 0; background: transparent; color: rgba(255,255,255,.88); font-size: 13px; font-weight: 600; padding: 14px 12px; min-height: 44px; text-decoration: underline; text-underline-offset: 3px; }
.app-lock-primary { border: 1px solid rgba(255,255,255,.8); border-radius: 16px; background: #fff; color: #0046ad; padding: 18px 12px; font-size: 14px; font-weight: 700; min-height: 54px; }
.app-lock .app-lock-primary:active:not(:disabled) { background: #e8f0fc; }
.app-lock-settings { margin: 12px 0 28px; }
.app-lock-settings button { width: 100%; text-align: left; padding: 20px 0; border: 0; border-bottom: 1px solid rgba(255,255,255,.22); background: transparent; color: #fff; font-size: 15px; font-weight: 600; }
.app-lock-settings small { display: block; font-size: 12px; color: rgba(255,255,255,.72); font-weight: 400; margin-top: 5px; }
.app-lock-confirm { position: fixed; inset: 0; z-index: 2; display: grid; align-items: end; justify-items: center; background: rgba(0,27,78,.52); }
.app-lock-confirm-card { width: min(100%,430px); padding: 26px 22px max(24px,env(safe-area-inset-bottom)); border-radius: 24px 24px 0 0; background: #fff; color: #10233f; box-shadow: 0 -16px 42px rgba(0,26,72,.2); animation: lock-sheet-in 220ms cubic-bezier(.16,1,.3,1) both; }
.app-lock-confirm-card h2 { margin: 0 0 10px; color: #063f98; font-size: 22px; line-height: 1.25; letter-spacing: -.25px; font-weight: 680; }
.app-lock-confirm-card p { margin: 0; color: #52627a; font-size: 14px; line-height: 1.55; }
.app-lock-confirm-actions { display: grid; grid-template-columns: .85fr 1.25fr; gap: 10px; margin-top: 24px; }
.app-lock-confirm-actions button { min-height: 52px; padding: 12px 14px; border: 1px solid #b8cee9; border-radius: 14px; background: #f3f7fc; color: #084a9f; font-size: 14px; font-weight: 680; }
.app-lock-confirm-actions [data-reset] { border-color: #0046ad; background: #0046ad; color: #fff; }
.app-lock-confirm-actions button:active:not(:disabled) { transform: scale(.98); }
.app-lock-confirm-actions button:focus-visible { outline-color: #0046ad; outline-offset: 2px; }
@keyframes lock-arrive { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@keyframes lock-content-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes lock-sheet-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@media (min-width: 600px) { .app-lock-confirm { align-items: center; padding: 20px; } .app-lock-confirm-card { width: min(390px,100%); border-radius: 24px; padding-bottom: 26px; } }
@media (max-height: 650px) { .app-lock-layout { padding-top: max(14px,env(safe-area-inset-top)); padding-bottom: max(10px,env(safe-area-inset-bottom)); } .app-lock-brand { min-height: 84px; padding-top: 0; } .app-lock-brand img { width: 132px; } .app-lock-brand-lockup > span { margin-top: 6px; font-size: 12px; } .app-lock-content { padding-top: 4px; } .app-lock h1 { font-size: 21px; margin-bottom: 5px; } .app-lock-dots { min-height: 44px; margin-top: 5px; } .app-lock-dots span { width: 22px; height: 22px; } .app-lock-pin-help { min-height: 38px; padding: 7px; } .app-lock-message { min-height: 24px; } .app-lock-keypad { gap: 2px 16px; margin-bottom: 0; } .app-lock-keypad button { width: 52px; height: 52px; min-height: 52px; font-size: 30px; } .app-lock-heading p { font-size: 13px; } }
@media (prefers-reduced-motion: reduce) { .app-lock *, .app-lock *::before, .app-lock *::after { animation: none !important; transition: none !important; } }

/* iOS enlarges the viewport when a focused form control renders below 16px. */
@media (max-width: 767px), (any-pointer: coarse) {
  input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
  select,
  textarea {
    font-size: 16px !important;
  }
}

/* Työntekijän päänäkymien yhteinen kuvallinen yläosa. */
@media(max-width:767px){
  /* iOS:n standalone-PWA muodostaa yläreunan turva-alueen dokumentin
     taustasta. Sovelluksen sisältöpinta peittää tämän värin muualla. */
  html:has(body.app-page),
  body.app-page{background:var(--reference-header)}
  /* Pidä iOS:n dokumenttikerros paikallaan: lyhyissä näkymissä sen
     reunapomppu paljastaa sinisen taustan headerin yläpuolelta. */
  html:has(body.app-page .app-shell.is-employee),
  body.app-page:has(.app-shell.is-employee){height:100%;overflow:hidden;overscroll-behavior-y:none}
  /* Header ja sisältö kuuluvat samaan vieritysalueeseen. Muuten main-shell
     vierii yksin ja staattinen header sekä app-shellin taustakuva jäävät
     näkyviin sisällön päälle. */
  .app-shell.is-employee{
    position:fixed;
    display:block;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior-y:none;
    -webkit-overflow-scrolling:touch;
    background:var(--paper);
  }
  .app-shell.is-employee>.app-header{position:relative}
  /* Profiilivalikko kuuluu headerin pinoamiskontekstiin. Nosta koko header
     kelluvan päivityspainikkeen ja alapalkin yläpuolelle vain valikon ollessa
     auki; muuten peruskerros 20 säilyy ennallaan. */
  .app-shell.is-employee>.app-header:has(.profile-trigger[aria-expanded="true"]){z-index:30}
  .app-shell.is-employee>.main-shell{position:relative;z-index:1}
  /* Työntekijän päänäkymät piirretään heti täysin peittävinä. Yleinen
     view-enter-fade kuullattaa kuvataustan valkoisten pintojen läpi ja näkyy
     iOS-PWA:ssa välähdyksenä jokaisella välilehden vaihdolla. */
  .app-shell.is-employee #viewRoot>.worker-mobile-home,
  .app-shell.is-employee #viewRoot>.worker-calendar-view,
  .app-shell.is-employee #viewRoot>.worker-notifications-view,
  .app-shell.is-employee #viewRoot>.worker-profile-view:not(.worker-profile-subview){animation:none}
  .app-shell.is-employee .main-shell{
    min-height:calc(100dvh - 68px);
    height:auto;
    overflow:visible;
  }
  .app-shell.is-employee:has(#viewRoot>.worker-mobile-home),
  .app-shell.is-employee:has(#viewRoot>.worker-calendar-view),
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view),
  .app-shell.is-employee:has(#viewRoot>.worker-profile-view:not(.worker-profile-subview)){
    background-color:var(--paper);
  }
  .app-shell.is-employee:has(#viewRoot>.worker-mobile-home)>.worker-header-backdrop,
  .app-shell.is-employee:has(#viewRoot>.worker-calendar-view)>.worker-header-backdrop,
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view)>.worker-header-backdrop,
  .app-shell.is-employee:has(#viewRoot>.worker-profile-view:not(.worker-profile-subview))>.worker-header-backdrop{
    position:absolute;
    inset:0 0 auto;
    z-index:0;
    display:block;
    width:100%;
    height:300px;
    object-fit:fill;
    pointer-events:none;
    user-select:none;
  }
  .app-shell.is-employee:has(#viewRoot>.worker-mobile-home) .app-header,
  .app-shell.is-employee:has(#viewRoot>.worker-calendar-view) .app-header,
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view) .app-header,
  .app-shell.is-employee:has(#viewRoot>.worker-profile-view:not(.worker-profile-subview)) .app-header{position:relative;top:auto;background:transparent;border-bottom:0;box-shadow:none}
  .app-shell.is-employee:has(#viewRoot>.worker-mobile-home) .main-shell,
  .app-shell.is-employee:has(#viewRoot>.worker-calendar-view) .main-shell,
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view) .main-shell,
  .app-shell.is-employee:has(#viewRoot>.worker-profile-view:not(.worker-profile-subview)) .main-shell{background:transparent}
  .app-shell.is-employee #viewRoot:has(>.worker-mobile-home),
  .app-shell.is-employee #viewRoot:has(>.worker-calendar-view),
  .app-shell.is-employee #viewRoot:has(>.worker-notifications-view),
  .app-shell.is-employee #viewRoot:has(>.worker-profile-view:not(.worker-profile-subview)){background:transparent}
  .app-shell.is-employee .worker-mobile-home{background:transparent}
  .app-shell.is-employee .worker-greeting{min-height:132px;padding:22px 20px 24px}
  .app-shell.is-employee .worker-greeting .eyebrow{color:rgba(255,255,255,.76)}
  .app-shell.is-employee .worker-greeting h2{color:#fff;text-shadow:0 1px 10px rgba(0,42,112,.16)}
  .app-shell.is-employee .worker-greeting p:last-child{color:rgba(255,255,255,.82)}
  .app-shell.is-employee:has(#viewRoot>.worker-mobile-home) .mobile-refresh-button{border-color:rgba(255,255,255,.38);background:rgba(255,255,255,.9);box-shadow:0 3px 7px -3px rgba(20,32,48,.3),0 1px 2px rgba(20,32,48,.1)}
  .app-shell.is-employee .next-shift{box-shadow:0 8px 20px rgba(33,35,34,.085),0 2px 5px rgba(33,35,34,.035)}
  /* Kalenterin otsikko jatkaa samaa kuvaa ja vierii pois kuten etusivun tervehdys. */
  .app-shell.is-employee .worker-calendar-view{background:transparent}
  .app-shell.is-employee .worker-calendar-view>.page-lead{min-height:132px;padding:22px 20px 24px}
  .app-shell.is-employee .worker-calendar-view>.page-lead .eyebrow{color:rgba(255,255,255,.76)}
  .app-shell.is-employee .worker-calendar-view>.page-lead h2{color:#fff;text-shadow:0 1px 10px rgba(0,42,112,.16)}
  .app-shell.is-employee .worker-calendar-view>.page-lead p:not(.eyebrow){color:rgba(255,255,255,.82)}
  .app-shell.is-employee .worker-calendar-workspace{box-shadow:0 14px 34px rgba(0,42,112,.12)}
  /* Ilmoitusten otsikko käyttää samaa yhtenäistä kuvallista yläosaa. */
  .app-shell.is-employee .worker-notifications-view{background:transparent}
  .app-shell.is-employee .worker-notifications-view>.page-lead{min-height:132px;padding:22px 72px 24px 20px}
  .app-shell.is-employee .worker-notifications-view>.page-lead h2{color:#fff;text-shadow:0 1px 10px rgba(0,42,112,.16)}
  .app-shell.is-employee .worker-notifications-view>.page-lead p{color:rgba(255,255,255,.82)}
  .app-shell.is-employee:has(#viewRoot>.worker-notifications-view) .mobile-refresh-button{border-color:rgba(255,255,255,.38);background:rgba(255,255,255,.9);box-shadow:0 3px 7px -3px rgba(20,32,48,.3),0 1px 2px rgba(20,32,48,.1)}
  /* Profiilin pääsivu pitää identiteetin luettavana suoraan saman kuvataustan päällä. */
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview){background:transparent}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-title{padding:22px 20px 8px;background:transparent}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-title h2{color:#fff;text-shadow:0 1px 10px rgba(0,42,112,.16)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-identity{min-height:120px;padding:10px 20px 20px;border:0;background:transparent}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-avatar{background:rgba(255,255,255,.94);color:var(--accent-dark);box-shadow:0 8px 22px rgba(33,35,34,.14)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-photo>button:focus-visible{outline-color:rgba(255,255,255,.88)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-identity-copy h3{color:#fff;text-shadow:0 1px 8px rgba(0,42,112,.14)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-company{color:rgba(255,255,255,.94)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-email{color:rgba(255,255,255,.76)}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-settings{background:transparent}
}

/* Johdon päänäkymien mobiilikehys seuraa työntekijäsovelluksen vakaata rakennetta.
   Desktop ja työntekijän näkymät jäävät tämän rajauksen ulkopuolelle. */
.manager-calendar-lead{display:none}
.month-review-mobile-heading,.month-review-orientation-hint{display:none}
@media(max-width:767px){
  .app-shell:not(.is-employee){
    position:relative;
    display:block;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
    background:var(--paper);
  }
  .app-shell:not(.is-employee)>.app-header{position:relative;z-index:20}
  .app-shell:not(.is-employee)>.app-header:has(.profile-trigger[aria-expanded="true"]){z-index:30}
  .app-shell:not(.is-employee)>.main-shell{position:relative;z-index:1}
  .app-shell:not(.is-employee) .main-shell{
    min-height:calc(100dvh - 68px);
    height:auto;
    overflow:visible;
    background:transparent;
  }
  .app-shell:not(.is-employee) #viewRoot[data-manager-view]{background:transparent}
  .app-shell:not(.is-employee) #viewRoot[data-manager-view]>*{animation:none}
  .app-shell:not(.is-employee)>.worker-header-backdrop{
    position:absolute;
    inset:0 0 auto;
    z-index:0;
    display:block;
    width:100%;
    height:300px;
    object-fit:fill;
    pointer-events:none;
    user-select:none;
  }
  .app-shell:not(.is-employee) .app-header{
    top:auto;
    border-bottom:0;
    background:transparent;
    box-shadow:none;
  }

  /* Henkilö- ja asiakaskortin sisäsivu alkaa suoraan sisältöpinnalta. */
  .app-shell:not(.is-employee):has(#viewRoot .page-lead.detail-open)>.worker-header-backdrop{display:none}
  .app-shell:not(.is-employee):has(#viewRoot .page-lead.detail-open) .app-header{background:var(--reference-header)}
  .app-shell:not(.is-employee):has(#viewRoot .page-lead.detail-open) .main-shell{background:#f5f6f7}

  /* Etusivu: tervehdys ja tärkeimmät toiminnot ovat yksi selkeä heroalue. */
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="home"]{padding-top:0}
  .app-shell:not(.is-employee) .home-intro{
    align-content:start;
    min-height:218px;
    padding:20px 4px 24px;
  }
  .app-shell:not(.is-employee) .home-intro .eyebrow{color:rgba(255,255,255,.76)}
  .app-shell:not(.is-employee) .home-intro h2{
    color:#fff;
    text-shadow:0 1px 10px rgba(0,42,112,.16);
  }
  .app-shell:not(.is-employee) .home-intro p:last-child{color:rgba(255,255,255,.82)}
  .app-shell:not(.is-employee) .home-actions .button.primary{
    border-color:#fff;
    background:#fff;
    color:var(--reference-header);
  }
  .app-shell:not(.is-employee) .home-actions .button.secondary{
    border-color:rgba(255,255,255,.5);
    background:rgba(255,255,255,.12);
    color:#fff;
  }

  /* Henkilöstö, asiakkaat, raportit ja asiakirjat käyttävät samaa otsikkohierarkiaa. */
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="employees"]>.page-lead:not(.detail-open),
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="clients"]>.page-lead:not(.detail-open),
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="reports"] .page-lead,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="documents"] .documents-view>.page-lead{
    align-content:start;
    min-height:158px;
    margin:0 4px 18px;
    padding:17px 0 20px;
  }
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="employees"]>.page-lead:not(.detail-open) h2,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="clients"]>.page-lead:not(.detail-open) h2,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="reports"] .page-lead h2,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="documents"] .documents-view>.page-lead h2{
    color:#fff;
    text-shadow:0 1px 10px rgba(0,42,112,.16);
  }
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="employees"]>.page-lead:not(.detail-open) p,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="clients"]>.page-lead:not(.detail-open) p,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="reports"] .page-lead p,
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="documents"] .documents-view>.page-lead p{
    color:rgba(255,255,255,.82);
  }
  .app-shell:not(.is-employee) .page-lead:not(.detail-open) .lead-actions .button{
    border-color:rgba(255,255,255,.5);
    background:#fff;
    color:var(--reference-header);
  }

  /* Kalenterissa otsikko on mobiilissa näkyvä, mutta desktopin työkalupalkki ei muutu. */
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="calendar"]{padding-top:0}
  .app-shell:not(.is-employee) .manager-calendar-lead{
    display:block;
    min-height:158px;
    padding:17px 4px 20px;
  }
  .app-shell:not(.is-employee) .manager-calendar-lead .eyebrow{
    margin:0 0 6px;
    color:rgba(255,255,255,.76);
    font-size:10px;
    font-weight:750;
    letter-spacing:.075em;
  }
  .app-shell:not(.is-employee) .manager-calendar-lead h2{
    margin:0;
    color:#fff;
    font-size:29px;
    font-weight:650;
    letter-spacing:-.035em;
    line-height:1.12;
    text-shadow:0 1px 10px rgba(0,42,112,.16);
  }
  .app-shell:not(.is-employee) .manager-calendar-lead p:last-child{
    margin:7px 0 0;
    color:rgba(255,255,255,.82);
    font-size:12px;
    line-height:1.45;
  }
  .app-shell:not(.is-employee) .calendar-mobile-controls{
    padding:10px;
    border:0;
    border-radius:14px;
    background:#fff;
    box-shadow:var(--manager-mobile-surface-shadow);
  }

  /* Lisää- ja profiilinäkymä jatkavat samaa kuvallista yläosaa. */
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="more"],
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="profile"]{padding-top:0}
  .app-shell:not(.is-employee) .manager-more-head,
  .app-shell:not(.is-employee) .manager-profile-head{
    align-content:start;
    min-height:158px;
    margin:0 4px 18px;
    padding:17px 0 20px;
  }
  .app-shell:not(.is-employee) .manager-more-head .eyebrow,
  .app-shell:not(.is-employee) .manager-profile-head .eyebrow{color:rgba(255,255,255,.76)}
  .app-shell:not(.is-employee) .manager-more-head h2,
  .app-shell:not(.is-employee) .manager-profile-head h2{
    color:#fff;
    text-shadow:0 1px 10px rgba(0,42,112,.16);
  }
  .app-shell:not(.is-employee) .manager-more-head p:last-child,
  .app-shell:not(.is-employee) .manager-profile-head p:last-child{color:rgba(255,255,255,.82)}
  .app-shell:not(.is-employee) #viewRoot[data-manager-view="profile"]:has(>.manager-own-profile){
    padding:0 14px calc(var(--bottom-nav) + 28px);
    background:transparent;
  }
}

/* Johdon mobiilikalenteri käyttää samaa kuukausimatriisia kuin desktop.
   Rajaus perustuu renderöinnissä tunnistettuun mobiililaitteeseen, jotta
   vaakatilan leveys ei vahingossa vaihda näkymää desktop-versioksi. */
.calendar-month-review.is-mobile-layout{
  z-index:24;
  top:64px;
  bottom:calc(var(--bottom-nav) + env(safe-area-inset-bottom));
  grid-template-rows:auto minmax(0,1fr);
  padding:0;
  background:#f4f6f9;
}
.calendar-month-review.is-mobile-layout .month-review-toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px 10px;
  min-height:0;
  padding:10px 12px;
  border:0;
  border-bottom:1px solid #dbe3ed;
  background:#fff;
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading{
  display:grid;
  grid-template-columns:40px minmax(0,1fr) 40px auto 40px;
  grid-column:1/-1;
  align-items:center;
  gap:5px;
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading .icon-button{
  width:40px;
  height:40px;
  border-color:#d7e0eb;
  border-radius:9px;
  background:#fff;
  color:var(--reference-header);
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading .previous svg{transform:rotate(180deg)}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading label{
  position:relative;
  display:grid;
  align-content:center;
  min-width:0;
  min-height:40px;
  padding:4px 9px;
  border:1px solid #d7e0eb;
  border-radius:9px;
  background:#f8fafc;
  color:var(--reference-header);
  text-align:center;
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading label span{
  color:#758194;
  font-size:8px;
  font-weight:650;
  letter-spacing:.045em;
  line-height:1.1;
  text-transform:uppercase;
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading label strong{
  overflow:hidden;
  font-size:13px;
  font-weight:650;
  line-height:1.25;
  text-overflow:ellipsis;
  text-transform:capitalize;
  white-space:nowrap;
}
.calendar-month-review.is-mobile-layout .month-review-mobile-heading label input{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  opacity:0;
}
.calendar-month-review.is-mobile-layout .month-review-current{
  min-height:40px;
  padding:0 10px;
  border:1px solid #bcd0eb;
  border-radius:9px;
  background:#fff;
  color:var(--reference-header);
  font-size:10px;
  font-weight:650;
}
.calendar-month-review.is-mobile-layout .month-review-scope-switch{
  grid-column:1;
  justify-self:start;
  border:0;
  border-radius:9px;
  background:#eaf0f7;
}
.calendar-month-review.is-mobile-layout .month-review-scope-switch button{
  min-height:32px;
  padding:0 12px;
  border-radius:7px;
  font-size:10px;
  font-weight:600;
}
.calendar-month-review.is-mobile-layout .month-review-summary{
  display:none;
}
.calendar-month-review.is-mobile-layout .month-review-orientation-hint{
  display:block;
  grid-column:1/-1;
  margin:0;
  color:#758194;
  font-size:9px;
  line-height:1.35;
}
.calendar-month-review.is-mobile-layout .month-review-main{
  min-width:0;
  min-height:0;
  background:#f4f6f9;
}
.calendar-month-review.is-mobile-layout .month-review-matrix{
  border-radius:0;
  background:#fff;
  overscroll-behavior:none;
  scrollbar-gutter:auto;
  -webkit-overflow-scrolling:touch;
}
.calendar-month-review.is-mobile-layout .month-review-grid.days-28{grid-template-columns:132px repeat(28,42px);min-width:1308px}
.calendar-month-review.is-mobile-layout .month-review-grid.days-29{grid-template-columns:132px repeat(29,42px);min-width:1350px}
.calendar-month-review.is-mobile-layout .month-review-grid.days-30{grid-template-columns:132px repeat(30,42px);min-width:1392px}
.calendar-month-review.is-mobile-layout .month-review-grid.days-31{grid-template-columns:132px repeat(31,42px);min-width:1434px}
.calendar-month-review.is-mobile-layout .month-review-corner,
.calendar-month-review.is-mobile-layout .month-review-person{padding-right:10px;padding-left:10px}
.calendar-month-review.is-mobile-layout .month-review-person-trigger{min-height:48px}
.calendar-month-review.is-mobile-layout .month-review-group-divider{
  position:relative;
  left:auto;
  padding:0;
}
.calendar-month-review.is-mobile-layout .month-review-group-divider strong{
  position:sticky;
  left:0;
  z-index:1;
  display:flex;
  align-items:center;
  width:100vw;
  min-height:30px;
  padding:8px 10px;
  background:inherit;
}
.calendar-month-review.is-mobile-layout .month-review-add>span{opacity:.6;transform:none}
.calendar-month-review.is-mobile-layout .month-review-add.is-hotspot>span{opacity:.45}
.calendar-month-review.is-mobile-layout .month-review-shift time{font-size:9px}

@media(max-width:767px){
  .calendar-month-review.is-mobile-layout{display:grid}
}

@media(max-height:500px) and (orientation:landscape){
  .calendar-month-review.is-mobile-layout{
    top:0;
    bottom:0;
  }
  .calendar-month-review.is-mobile-layout .month-review-toolbar{
    grid-template-columns:minmax(370px,1fr) auto auto;
    align-items:center;
    padding:6px max(10px,env(safe-area-inset-right)) 6px max(10px,env(safe-area-inset-left));
  }
  .calendar-month-review.is-mobile-layout .month-review-mobile-heading{
    grid-column:1;
    grid-template-columns:34px minmax(150px,1fr) 34px auto 34px;
  }
  .calendar-month-review.is-mobile-layout .month-review-mobile-heading .icon-button{
    width:34px;
    height:34px;
  }
  .calendar-month-review.is-mobile-layout .month-review-mobile-heading label,
  .calendar-month-review.is-mobile-layout .month-review-current{min-height:34px}
  .calendar-month-review.is-mobile-layout .month-review-scope-switch{grid-column:2}
  .calendar-month-review.is-mobile-layout .month-review-summary{
    display:block;
    grid-column:3;
    max-width:28vw;
    overflow:hidden;
    color:#6e7887;
    font-size:9px;
    font-weight:500;
    line-height:1.3;
    text-align:right;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .calendar-month-review.is-mobile-layout .month-review-orientation-hint{display:none}
  .calendar-month-review.is-mobile-layout .month-review-grid.days-28{grid-template-columns:148px repeat(28,minmax(44px,1fr));min-width:1380px}
  .calendar-month-review.is-mobile-layout .month-review-grid.days-29{grid-template-columns:148px repeat(29,minmax(44px,1fr));min-width:1424px}
  .calendar-month-review.is-mobile-layout .month-review-grid.days-30{grid-template-columns:148px repeat(30,minmax(44px,1fr));min-width:1468px}
  .calendar-month-review.is-mobile-layout .month-review-grid.days-31{grid-template-columns:148px repeat(31,minmax(44px,1fr));min-width:1512px}
}

.netvisor-excel-credentials{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 14px;border:1px solid var(--line);border-radius:6px;background:#f7f9fb}
.netvisor-excel-credentials>span{display:grid;gap:4px}
.netvisor-excel-credentials strong{font-size:12px}
.netvisor-excel-credentials small{max-width:60ch;color:var(--muted);font-size:11px;line-height:1.45}
.netvisor-excel-credentials .button{flex:0 0 auto}
@media(max-width:767px){.netvisor-excel-credentials{align-items:stretch;flex-direction:column}.netvisor-excel-credentials .button{width:100%}}

.client-month-controls{flex-wrap:wrap;justify-content:flex-end}

.employee-card-open{overflow:hidden}
.app-shell.is-employee:has(#viewRoot>.employee-id-screen)>.main-shell{z-index:40}
.app-shell.is-employee #viewRoot>.employee-id-screen{animation:none}
.employee-id-screen{position:fixed;inset:0;z-index:40;isolation:isolate}
.employee-id-backdrop{position:absolute;inset:0;background:rgba(8,25,48,.48);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.employee-id-sheet{position:absolute;inset:0;box-sizing:border-box;min-height:100dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.employee-id-screen[data-phase="opening"] .employee-id-backdrop{animation:employee-id-dim-in 280ms ease-out both}
.employee-id-screen[data-phase="opening"] .employee-id-sheet{animation:employee-id-sheet-in 280ms cubic-bezier(.22,1,.36,1) both}
.employee-id-screen[data-phase="closing"] .employee-id-backdrop{animation:employee-id-dim-out 280ms ease-in both}
.employee-id-screen[data-phase="closing"] .employee-id-sheet{animation:employee-id-sheet-out 280ms cubic-bezier(.55,0,.78,0) both}
@keyframes employee-id-dim-in{from{opacity:0}to{opacity:1}}
@keyframes employee-id-dim-out{from{opacity:1}to{opacity:0}}
@keyframes employee-id-sheet-in{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes employee-id-sheet-out{from{transform:translateY(0)}to{transform:translateY(100%)}}
.employee-id-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;box-sizing:border-box;width:100%;min-height:100dvh;margin:0;padding:calc(20px + env(safe-area-inset-top)) 16px calc(20px + env(safe-area-inset-bottom))}
.employee-id-card{display:flex;flex-direction:column;box-sizing:border-box;width:100%;max-width:390px;min-height:0;overflow:hidden;border:1px solid #edf0f3;border-radius:26px;background:#fff;box-shadow:0 6px 24px rgba(21,43,66,.12);color:#0b2944;font-family:"Avenir Next",Avenir,"Segoe UI",Helvetica,Arial,sans-serif}
.dialog:has(#managerEmployeeCard){width:min(460px,calc(100% - 24px));overflow-y:auto}
.dialog-surface:has(#managerEmployeeCard){padding:16px}
.dialog-surface:has(#managerEmployeeCard) .dialog-head{margin-bottom:14px}
#managerEmployeeCard{display:grid;justify-items:center}
.manager-employee-card-status{width:100%;padding:26px 16px;text-align:center;color:var(--ink)}
.manager-employee-card-status p{margin:10px auto 0;max-width:34ch;color:var(--muted);font-size:13px;line-height:1.5}
.employee-id-banner{display:flex;flex-direction:column;align-items:center;box-sizing:border-box;padding:24px 22px 20px;background:#fff;color:#242b30}
.employee-id-back{display:grid;flex:none;place-items:center;width:48px;height:48px;padding:0;border:1px solid rgba(255,255,255,.7);border-radius:50%;background:transparent;color:#fff;font:inherit;font-size:30px;font-weight:400;line-height:1;cursor:pointer}
.employee-id-back:focus-visible{outline:2px solid #fff;outline-offset:3px}
.employee-id-back:active{transform:scale(.98)}
@media(prefers-reduced-motion:reduce){.employee-id-screen[data-phase="opening"] .employee-id-backdrop,.employee-id-screen[data-phase="closing"] .employee-id-backdrop{animation-duration:1ms}.employee-id-screen[data-phase="opening"] .employee-id-sheet,.employee-id-screen[data-phase="closing"] .employee-id-sheet{animation:none}}
.employee-id-logo{display:block;width:84%;height:auto;object-fit:contain}
.employee-id-body{display:flex;flex-direction:column;align-items:center;box-sizing:border-box;width:100%;min-height:0;padding:0 24px;text-align:center}
.employee-id-photo{display:block;flex:none;box-sizing:border-box;width:150px;height:170px;object-fit:cover;border:1px solid #dfe4e5;border-radius:8px;background:#f0f2f2}
.employee-id-photo-note{display:grid;justify-items:center;gap:8px;max-width:280px;margin:14px auto 0;text-align:center;color:#485762;font-size:13px;line-height:1.45}
.employee-id-body h2{max-width:100%;margin:16px 0 4px;color:#252e33;font-size:32px;font-weight:700;line-height:1.12;overflow-wrap:anywhere}
.employee-id-role{margin:0;color:#48565d;font-size:clamp(16px,2.5dvh,20px);line-height:1.3}
.employee-id-code{display:flex;flex-direction:column;align-items:center;width:min(100%,270px);margin-top:24px;color:#242b30}
.employee-id-code svg{display:block;width:100%;height:40px;fill:currentColor;stroke:none}
.employee-id-code span{margin-top:4px;font-size:14px;font-weight:700;letter-spacing:3px;font-variant-numeric:tabular-nums}
.employee-id-code-pending{min-height:66px;justify-content:center}
.employee-id-code-pending span{font-size:12px;letter-spacing:0;line-height:1.35}
.employee-id-code small{margin-top:5px;color:#68747a;font-size:9px;font-weight:750;letter-spacing:1.6px}
.employee-id-footer{position:relative;box-sizing:border-box;width:100%;height:94px;margin-top:22px;isolation:isolate}
.employee-id-waves{position:absolute;inset:0;width:100%;height:100%;z-index:0;stroke:none}
.employee-id-waves path:first-child{fill:#bde9eb}
.employee-id-waves path:last-child{fill:#982068}
@font-face{font-family:"Helmi Dancing Script";src:url("/assets/dancing-script-600.ttf") format("truetype");font-style:normal;font-weight:600;font-display:swap}
.employee-id-slogan{position:absolute;bottom:15px;left:22px;z-index:1;color:#fff;font-family:"Helmi Dancing Script",cursive;font-size:22px;font-weight:600;font-style:normal;line-height:1.05;text-align:left}
.employee-id-heart{display:inline-block;font-family:"Snell Roundhand","Brush Script MT","Segoe Script",cursive;font-size:20px;font-style:italic;font-weight:400;transform:rotate(-5deg)}
.employee-id-empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}
.employee-id-empty>span>svg{width:56px;height:56px;color:#6a7781}
.employee-id-empty h2{font-size:22px;line-height:1.3}
.employee-id-empty p{max-width:28ch;margin:12px 0 24px;line-height:1.6;color:#485762}
.employee-id-photo-placeholder{display:grid;place-items:center;border-style:dashed;background:#f6fafb;color:#5b6972;font-size:13px;font-weight:700}
.employee-id-photo-instructions{display:grid;justify-items:center;width:100%;max-width:280px;margin-top:20px}
.employee-id-photo-instructions h3{margin:0 0 12px;color:#0b2944;font-size:17px;line-height:1.3}
.employee-id-photo-instructions .profile-photo-guidance{width:100%;box-sizing:border-box;margin-bottom:18px;text-align:left}
.employee-id-photo-instructions .button{min-height:44px}
/* Tiivistä vain matalia puhelimia; suuri kortti säilyy ennallaan muualla. */
@media(max-width:380px) and (max-height:800px){
  .employee-id-wrap{gap:10px;padding:12px 12px calc(12px + env(safe-area-inset-bottom))}
  .employee-id-banner{padding:16px 18px 12px}
  .employee-id-photo{width:132px;height:150px}
  .employee-id-body h2{margin-top:12px;font-size:28px}
  .employee-id-photo-instructions{margin-top:12px}
  .employee-id-photo-instructions h3{margin-bottom:8px}
  .employee-id-photo-instructions .profile-photo-guidance{margin-bottom:12px}
  .employee-id-code{margin-top:16px}
  .employee-id-footer{height:78px;margin-top:14px}
  .employee-id-slogan{bottom:10px}
  .employee-id-back{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom));z-index:2}
}
@media(max-width:380px) and (max-height:640px){
  .employee-id-wrap{padding-bottom:76px}
  .employee-id-back{position:fixed;right:12px;background:rgba(8,25,48,.62)}
}

/* Korttilinkki käyttää kuvan ja valikon väliä kasvattamatta profiilin sinistä yläosaa. */
.app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-photo,.app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-identity-copy{grid-row:1}
.app-shell.is-employee .worker-profile-card-link{grid-column:2;grid-row:2;display:inline-flex;justify-self:start;align-items:center;gap:6px;min-height:44px;margin:-8px 0 0;padding:0;border:0;background:transparent;color:var(--accent-dark);font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}
.app-shell.is-employee .worker-profile-card-link span{text-decoration:underline;text-underline-offset:3px}
.app-shell.is-employee .worker-profile-card-link svg{width:13px;height:13px}
.app-shell.is-employee .worker-profile-card-link:active{transform:scale(.98)}
.app-shell.is-employee .worker-profile-card-link:focus-visible{outline:2px solid currentColor;outline-offset:2px}
@media(max-width:767px){
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-identity{position:relative;grid-template-rows:88px;align-content:start;min-height:120px;padding-bottom:20px}
  .app-shell.is-employee .worker-profile-view:not(.worker-profile-subview) .worker-profile-card-link{position:absolute;right:auto;bottom:-10px;left:125px;z-index:1;grid-column:auto;grid-row:auto;margin:0;color:#fff}
}

/* WebKit samples the computed background of a fixed edge taller than 10px
   for its status-bar color extension. Clipping to text on this empty element
   supplies that color without painting over content or adding layout space.
   Keep the default Apple status-bar style: no safe-area padding is needed here. */
.pwa-ios-top-guard{display:none}
@media(max-width:767px) and (display-mode:standalone){
  @supports(-webkit-touch-callout:none){
    .app-shell>.pwa-ios-top-guard{position:fixed;top:0;right:0;left:0;z-index:26;display:block;height:11px;background-color:#0046ad;-webkit-background-clip:text;background-clip:text;pointer-events:none}
  }
}

.profile-photo-card-preview{display:grid;justify-items:center;gap:8px;margin:0 auto 16px;color:var(--muted);font-size:12px;font-weight:700}
.profile-photo-card-preview img{width:120px;height:136px;border:1px solid #dfe4e5;border-radius:7px;object-fit:cover}
.profile-photo-guidance{margin:0 0 16px;padding-left:22px;color:#485762;font-size:13px;line-height:1.5}
.profile-photo-confirm{display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;font-size:13px;font-weight:650;line-height:1.4}
.profile-photo-confirm input{flex:none;width:18px;height:18px;margin:0;accent-color:var(--accent)}
:root .audit-visibility-option{display:flex;align-items:center;gap:10px;grid-column:1/-1;min-height:44px;cursor:pointer}
:root .audit-visibility-option input{width:18px;height:18px;accent-color:var(--accent)}
.payroll-confirmations{padding:20px;border-bottom:1px solid var(--line);background:var(--surface-strong)}
.payroll-confirmations-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.payroll-confirmations-heading h3{margin:0;font-size:18px;color:var(--accent-dark)}
.payroll-confirmations-heading p,.payroll-confirmation-note{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.5}
.payroll-confirmation-filters{display:flex;flex-wrap:wrap;width:fit-content;max-width:100%;margin:16px 0;gap:3px}
.payroll-confirmation-filters button{min-height:40px;white-space:normal;text-align:left}
.payroll-confirmation-filters span{margin-left:5px;font-variant-numeric:tabular-nums}
.payroll-confirmation-table{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:8px;scrollbar-gutter:stable}
.payroll-confirmation-table table{width:100%;min-width:850px;border-collapse:collapse;text-align:left;font-size:12px}
.payroll-confirmation-table thead{position:sticky;top:0;background:var(--surface-strong);z-index:1}
.payroll-confirmation-table th,.payroll-confirmation-table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.payroll-confirmation-table thead th{font-family:inherit;font-size:12px;color:var(--ink);font-weight:600}
.payroll-confirmation-table tbody th{max-width:200px;font-weight:700}
.payroll-confirmation-table td strong{font-weight:400;font-variant-numeric:tabular-nums}
.payroll-confirmation-table td small{display:block;margin-top:4px;color:var(--muted);font-size:11px}
.payroll-confirmation-table td:last-child{width:90px}
.payroll-page .payroll-inputs{padding:20px}
.payroll-input-heading h3{margin:0 0 6px}
.payroll-input-heading p,.payroll-input-note{color:var(--muted);font-size:12px;line-height:1.6}
.payroll-input-tabs{display:flex;flex-wrap:wrap;margin:18px 0;gap:4px}
.payroll-input-tabs button{min-height:44px;white-space:normal}
.payroll-input-tabs span{margin-left:6px;font-variant-numeric:tabular-nums}
.payroll-input-review-tabs{display:flex;width:fit-content;margin:0 0 16px}
.payroll-input-review-tabs button{min-height:44px}
.payroll-input-review-tabs span{margin-left:6px;font-variant-numeric:tabular-nums}
.payroll-input-neutral-heading th{color:var(--muted);font-size:12px;padding-top:24px!important}
.payroll-input-table table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}
.payroll-input-table th,.payroll-input-table td{padding:16px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.payroll-input-table th:first-child{padding-left:0}
.payroll-input-table tbody th{font-weight:600;width:22%}
.payroll-input-table thead th{font-weight:600;font-size:12px;color:var(--muted)}
.payroll-input-table small{display:block;color:var(--muted);line-height:1.6;margin-top:5px}
.payroll-input-actions{width:25%}
.payroll-input-actions .button{margin:0 4px 6px 0;min-height:40px;white-space:normal}
@media(max-width:767px){.payroll-inputs{padding:16px}.payroll-input-table table,.payroll-input-table tbody,.payroll-input-table tr,.payroll-input-table th,.payroll-input-table td{display:block;width:100%}.payroll-input-table thead{display:none}.payroll-input-table tr{padding:12px 0;border-bottom:1px solid var(--line)}.payroll-input-table th,.payroll-input-table td{padding:6px 0;border:0}.payroll-input-table td[data-label]:before{content:attr(data-label);display:block;font-size:11px;color:var(--muted);margin-bottom:4px}.payroll-input-tabs{display:grid;grid-template-columns:1fr}.payroll-input-actions{display:flex!important;flex-wrap:wrap;gap:6px}.payroll-input-actions .button{margin:0}}
.payroll-confirmation-empty{height:72px;color:var(--muted);text-align:center}
.payroll-usage-error{padding:10px 0;color:var(--amber);font-size:12px}
@media(min-width:768px){
  .payroll-setup-person>strong,.payroll-setup-person .field>span{font-weight:400}
  .payroll-setup-suggestion{grid-column:2/-1;font-size:12px;font-weight:400;line-height:1.5;color:var(--muted)}
  .payroll-desktop-compact .payroll-period{display:flex;flex-wrap:wrap}
  .payroll-desktop-compact .payroll-period .button{margin-left:0}
  .payroll-desktop-compact .payroll-period [data-payroll-mapping]{font-weight:400}
  .payroll-desktop-compact .payroll-queue-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px}
  .payroll-desktop-compact .payroll-queue-tools>.button{font-weight:400}
  .payroll-desktop-compact .payroll-output{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 18px}
  .payroll-desktop-compact .payroll-output-actions{flex-wrap:wrap;flex-shrink:1}
  .payroll-desktop-compact .payroll-output-actions [data-payroll-period-status]{font-weight:400}
  .payroll-desktop-compact .payroll-closed-note{color:var(--ink);font-weight:400}
  .payroll-desktop-compact .payroll-export-note{grid-column:1/-1;margin:0;color:var(--muted);font-size:11px;line-height:1.5;font-weight:400}
}
@media(min-width:768px) and (max-width:1100px){
  .payroll-desktop-compact .payroll-output{grid-template-columns:minmax(0,1fr)}
}
