:root{color-scheme:light;--color-bg: #f2f4f7;--color-surface: #ffffff;--color-surface-muted: #f7f8fa;--color-border: #d7dce2;--color-border-strong: #b7bfc9;--color-text: #16212e;--color-text-muted: #5b6675;--color-text-faint: #8792a1;--color-brand: #123452;--color-brand-dark: #0a2136;--color-on-brand: #f5f7fa;--color-on-brand-muted: #aebdcd;--color-accent: #2563a8;--color-accent-hover: #1d4f85;--color-accent-bg: #eaf1f8;--color-danger: #b3261e;--color-danger-bg: #fdecea;--color-danger-border: #f3c6c2;--color-success: #1e7a34;--color-success-bg: #e8f5ea;--color-success-border: #bfe2c6;--color-warning: #92600a;--color-warning-bg: #fdf3e0;--color-warning-border: #f0d9a6;--color-focus-ring: #2563a8;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 10px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .08);--shadow-md: 0 8px 24px rgba(15, 23, 42, .16);--shadow-lg: 0 -2px 12px rgba(15, 23, 42, .1);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "SFMono-Regular", ui-monospace, Menlo, Consolas, monospace;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--header-height: 60px;--bottom-nav-height: 60px;--sidebar-width: 252px;--sidebar-width-collapsed: 72px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);font-size:14px;line-height:1.5}h1,h2,h3{font-weight:600;margin:0;color:var(--color-text)}h1{font-size:1.375rem}h2{font-size:1.125rem}p{margin:0 0 var(--space-3)}a{color:var(--color-accent)}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:inherit;font-size:.875rem;font-weight:500;padding:.5rem .875rem;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background-color .12s ease,border-color .12s ease;line-height:1.2;text-decoration:none}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark);border-color:var(--color-brand-dark)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-muted)}.btn-danger{background:var(--color-surface);border-color:var(--color-danger-border);color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-bg)}.btn-ghost{background:transparent;border-color:transparent;color:var(--color-text-muted)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}.field label,.field-label{font-size:.8125rem;font-weight:600;color:var(--color-text-muted)}.input,.select,.textarea{font-family:inherit;font-size:.9375rem;padding:.5rem .625rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);width:100%}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-accent)}.input-with-action{position:relative;display:flex;align-items:center}.input-action{position:absolute;right:4px;background:none;border:none;color:var(--color-text-muted);font-size:.8125rem;font-weight:600;padding:.25rem .5rem;cursor:pointer;border-radius:var(--radius-sm)}.input-action:hover{color:var(--color-accent)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--space-4)}@media (max-width: 640px){.form-grid{grid-template-columns:1fr}}.form-actions{display:flex;gap:var(--space-2);justify-content:flex-end;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.field-inline{display:flex;gap:var(--space-2)}.field-inline .input{min-width:0}.error-text{color:var(--color-danger);font-size:.875rem;margin:0}.alert{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:.875rem;margin-bottom:var(--space-4)}.alert-danger{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger)}.alert-info{background:var(--color-accent-bg);border:1px solid var(--color-border);color:var(--color-accent-hover)}.badge{display:inline-flex;align-items:center;font-size:.75rem;font-weight:600;padding:.125rem .5rem;border-radius:999px;line-height:1.6}.badge-active{background:var(--color-success-bg);color:var(--color-success)}.badge-inactive{background:var(--color-surface-muted);color:var(--color-text-muted)}.badge-soon{background:transparent;color:var(--color-on-brand-muted);border:1px solid rgba(255,255,255,.22);text-transform:uppercase;letter-spacing:.05em;font-size:.625rem;font-weight:var(--font-weight-bold)}.badge-category-absence{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-border)}.badge-category-operational{background:var(--color-accent-bg);color:var(--color-accent-hover);border:1px solid var(--color-accent)}.badge-preference{background:transparent;color:var(--color-text-muted);border:1px dashed var(--color-border);font-weight:500}.preference-hint{display:block;margin-top:.25rem;font-size:.8125rem;color:var(--color-text-muted)}.page{padding:var(--space-5)}.content-narrow{max-width:760px;margin:0}.content-standard{max-width:1200px;margin:0}.content-wide{max-width:1760px;margin:0}.content-operations{max-width:1920px;margin:0}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-header p{color:var(--color-text-muted);margin:var(--space-1) 0 0}@media (min-width: 769px){.is-management .page-header{align-items:flex-end;padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.is-management .page-header h1{position:relative;padding-left:var(--space-3);font-size:1.625rem;font-weight:var(--font-weight-bold);letter-spacing:-.01em}.is-management .page-header h1:before{content:"";position:absolute;left:0;top:.14em;bottom:.14em;width:4px;border-radius:var(--radius-pill);background:var(--color-accent)}.is-management .page-header p{font-size:var(--text-md)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.card+.card{margin-top:var(--space-5)}.section-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.section-header-title{margin:0;font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:var(--color-text)}.section-header-desc{margin:2px 0 0;font-size:var(--text-sm);color:var(--color-text-muted)}@media (max-width: 768px){.section-header{flex-direction:column;align-items:center;text-align:center}.section-header>.btn{max-width:18rem;width:100%}}.section-body{padding:var(--space-4) var(--space-5)}.section-body>.preference-hint{margin-top:0}.request-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-border)}.request-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);flex-wrap:wrap}@media (min-width: 769px){.request-row{display:grid;grid-template-columns:minmax(0,1fr) auto}}.request-row-main{display:flex;flex-direction:column;gap:3px;min-width:0}.request-row-type{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-weight:var(--font-weight-medium)}.request-row-dates{font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap}.request-row-note{font-size:var(--text-sm);color:var(--color-text-muted)}.request-row-end{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.brand{display:flex;align-items:center;gap:var(--space-3);color:inherit;text-decoration:none}.brand-mark{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-sm);background:var(--color-on-brand);color:var(--color-brand);font-weight:700;font-size:.875rem;letter-spacing:.02em;flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-org{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-on-brand-muted)}.brand-org-full{font-size:.6875rem;color:var(--color-on-brand-muted)}.brand-product{font-size:1.0625rem;font-weight:700;color:var(--color-on-brand)}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;display:flex;flex-direction:column;background:var(--color-brand);color:var(--color-on-brand-muted);border-right:1px solid var(--color-brand-dark);z-index:20;transition:width .16s ease}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-4) var(--space-4);border-bottom:1px solid rgba(255,255,255,.1);min-height:var(--header-height)}.sidebar-close-btn{display:none;background:none;border:none;color:var(--color-on-brand);padding:var(--space-1);border-radius:var(--radius-sm);cursor:pointer}.sidebar-close-btn:hover{background:#ffffff1a}.sidebar-scroll{flex:1 1 auto;overflow-y:auto;padding:var(--space-3) var(--space-2)}.sidebar-section+.sidebar-section{margin-top:var(--space-4)}.sidebar-section-label{padding:var(--space-2) var(--space-3) var(--space-1);font-size:var(--text-xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-on-brand-muted);opacity:.6}.sidebar-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:.5rem .75rem;margin:0 var(--space-1);border-radius:var(--radius-sm);color:var(--color-on-brand-muted);text-decoration:none;font-size:var(--text-base);font-weight:var(--font-weight-medium);white-space:nowrap;border-left:3px solid transparent;transition:background-color .12s ease,color .12s ease}.sidebar-link-icon{flex-shrink:0}.sidebar-link-label{overflow:hidden;text-overflow:ellipsis}a.sidebar-link:hover{color:var(--color-on-brand);background:#ffffff14}a.sidebar-link.is-active{color:var(--color-on-brand);background:#ffffff24;border-left-color:var(--color-accent);font-weight:var(--font-weight-semibold)}a.sidebar-link.is-active .sidebar-link-icon{color:#6fa8dc}.sidebar-link.is-disabled{opacity:.45;cursor:default}.sidebar-link-badge{margin-left:auto}.sidebar-footer{border-top:1px solid rgba(255,255,255,.1);padding:var(--space-2)}.sidebar-collapse-btn{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:.5rem .75rem;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-on-brand-muted);font-size:.8125rem;cursor:pointer}.sidebar-collapse-btn:hover{color:var(--color-on-brand);background:#ffffff14}.sidebar-user{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-2) var(--space-3)}.sidebar-user-info{display:flex;flex-direction:column;line-height:1.3;overflow:hidden;flex:1 1 auto}.sidebar-user-email{font-size:.8125rem;color:var(--color-on-brand);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-role{font-size:.6875rem;color:var(--color-on-brand-muted)}.sidebar-logout-btn{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;background:none;border:none;color:var(--color-on-brand-muted);padding:.5rem;border-radius:var(--radius-sm);cursor:pointer}.sidebar-logout-btn:hover{color:var(--color-on-brand);background:#ffffff1a}.sidebar-logout-btn .sidebar-link-label,.sidebar-backdrop{display:none}.app-shell-main{flex:1 1 auto;display:flex;flex-direction:column;min-height:100vh;min-width:0;margin-left:var(--sidebar-width)}@media (min-width: 769px){.app-shell.is-collapsed .sidebar{width:var(--sidebar-width-collapsed)}.app-shell.is-collapsed .sidebar-header .brand-text,.app-shell.is-collapsed .sidebar-section-label,.app-shell.is-collapsed .sidebar-link-label,.app-shell.is-collapsed .sidebar-link-badge{display:none}.app-shell.is-collapsed .sidebar-link,.app-shell.is-collapsed .sidebar-collapse-btn{justify-content:center;padding-left:.625rem;padding-right:.625rem}.app-shell.is-collapsed .sidebar-user-info{display:none}.app-shell.is-collapsed .app-shell-main{margin-left:var(--sidebar-width-collapsed)}}.app-topbar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);min-height:var(--header-height)}.topbar-menu-btn{display:none;background:none;border:1px solid var(--color-border-strong);color:var(--color-text);border-radius:var(--radius-sm);padding:.375rem;cursor:pointer;flex-shrink:0}.topbar-title{font-size:.9375rem;font-weight:600;color:var(--color-text)}.app-main{flex:1 1 auto}@media (max-width: 768px){.sidebar{width:min(86vw,320px);top:0;bottom:0;height:100vh;height:100dvh;max-height:100dvh;transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow-md)}.sidebar.is-mobile-open{transform:translate(0)}.sidebar-header{flex-shrink:0;padding-top:max(var(--space-3),env(safe-area-inset-top));padding-bottom:var(--space-3);padding-left:max(var(--space-4),env(safe-area-inset-left))}.sidebar-close-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;margin-right:calc(-1 * var(--space-2))}.sidebar-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.sidebar-link{min-height:44px;white-space:normal}.sidebar-link .sidebar-link-label{flex:1 1 auto;min-width:0;overflow:visible;text-overflow:clip;overflow-wrap:break-word;line-height:1.25}.sidebar-link-badge{flex-shrink:0}.sidebar-footer{flex-shrink:0;padding-bottom:max(var(--space-3),env(safe-area-inset-bottom));padding-left:max(var(--space-2),env(safe-area-inset-left))}.sidebar-user{margin-top:0;min-height:44px}.sidebar-logout-btn{min-width:44px;min-height:44px;padding:0 var(--space-3);color:var(--color-on-brand)}.sidebar-logout-btn .sidebar-link-label{display:inline}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0a101a80;z-index:19}.app-shell-main{margin-left:0}.topbar-menu-btn{display:inline-flex}.sidebar-collapse-btn{display:none}}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}table.data-table{width:auto;max-width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;color:var(--color-text-muted);background:var(--color-surface-muted);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover,.data-table tbody tr:focus-within{background:var(--color-surface-muted)}.data-table .col-actions{text-align:right;white-space:nowrap}.date-range{white-space:nowrap;font-variant-numeric:tabular-nums}.row-actions{display:inline-flex;align-items:center;gap:var(--space-2)}table.data-table--fixed{table-layout:fixed;width:100%}.data-table--fixed th{white-space:normal;line-height:1.25}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}@media (max-width: 1279px){.col-email{display:none}}@media (max-width: 1279px){.col-road{display:none}}.emp-col-nickname{width:7rem}.emp-col-fullname{width:clamp(13rem,23%,25rem)}@media (max-width: 1279px){.emp-col-fullname{width:9rem}}.emp-col-personnel{width:5.5rem}.emp-col-status,.emp-col-account{width:6rem}.emp-col-actions{width:10rem}.employee-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.employee-toolbar .input{flex:1 1 16rem;width:auto;min-width:0;max-width:28rem}.employee-toolbar .select{flex:0 0 auto;width:auto}.employee-result-count{margin-left:auto;color:var(--color-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}@media (max-width: 768px){.employee-toolbar{padding:var(--space-3);gap:var(--space-2)}.employee-toolbar .input{flex-basis:100%;max-width:none}}.col-group-start{border-left:1px solid var(--color-border)}.avail-col-employee{width:4.5rem}.avail-col-category{width:6rem}.avail-col-type{width:5.5rem}.avail-col-period{width:7.5rem}.avail-col-status,.avail-col-source{width:5.5rem}.avail-col-actions{width:10rem}@media (min-width: 1366px){.avail-col-employee{width:9rem}.avail-col-category{width:11rem}.avail-col-type{width:auto}.avail-col-period{width:12.5rem}.avail-col-status{width:11rem}.avail-col-source{width:9.5rem}}.avail-table tbody td:first-child,.pref-table tbody td:first-child{font-weight:var(--font-weight-semibold);color:var(--color-text)}.pref-col-employee{width:5rem}.pref-col-period{width:10.5rem}.pref-col-status{width:6rem}.pref-col-actions{width:10rem}@media (min-width: 1366px){.pref-col-employee{width:9rem}.pref-col-period{width:auto}}.sub-col-date,.sub-col-position{width:5rem}.sub-col-requestedby,.sub-col-reason{width:5.5rem}.sub-col-replacement{width:6rem}.sub-col-status{width:5rem}.sub-col-actions{width:12rem}@media (min-width: 1366px){.sub-col-position,.sub-col-requestedby,.sub-col-replacement{width:9rem}.sub-col-reason{width:auto}}.loc-col-shift{width:12rem}.loc-col-code{width:4.5rem}.loc-col-personnel{width:8rem}.loc-col-status{width:6rem}.loc-col-actions{width:7rem}.hol-col-date{width:11rem}.hol-col-class{width:10rem}.hol-col-source{width:14rem}.overflow-menu{position:relative;display:inline-flex}.overflow-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.overflow-menu-trigger:hover,.overflow-menu-trigger[aria-expanded=true]{color:var(--color-text);background:var(--color-surface-muted);border-color:var(--color-border-strong)}.overflow-menu-list{position:absolute;top:calc(100% + 4px);right:0;z-index:30;min-width:11rem;margin:0;padding:var(--space-1);list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.overflow-menu-item{display:block;width:100%;padding:.5rem .625rem;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text);font-size:var(--text-sm);font-family:inherit;text-align:left;cursor:pointer}.overflow-menu-item:hover,.overflow-menu-item:focus-visible{background:var(--color-surface-muted)}.overflow-menu-item.is-danger{color:var(--color-danger)}.overflow-menu-item.is-danger:hover{background:var(--color-danger-bg)}.state-panel{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-4);color:var(--color-text-muted);border-radius:var(--radius-md)}.state-panel-icon{flex-shrink:0;margin-top:1px;color:var(--color-text-faint)}.state-panel-title{font-weight:var(--font-weight-semibold);color:var(--color-text)}.state-panel-detail{margin-top:2px;font-size:var(--text-sm);color:var(--color-text-muted)}.state-panel-loading{align-items:center;color:var(--color-text-muted)}.state-panel-empty{border:1px dashed var(--color-border-strong)}.state-panel-error{border-left:3px solid var(--color-danger);background:var(--color-danger-bg)}.state-panel-error .state-panel-icon,.state-panel-error .state-panel-title{color:var(--color-danger)}dialog.modal{border:none;border-radius:var(--radius-md);padding:0;width:min(560px,calc(100vw - 2rem));max-height:calc(100vh - 4rem);box-shadow:var(--shadow-md)}dialog.modal::backdrop{background:#0a101a80}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal-title:focus{outline:none}.modal-close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;margin:calc(-1 * var(--space-2)) calc(-1 * var(--space-2)) calc(-1 * var(--space-2)) var(--space-2);background:none;border:none;border-radius:var(--radius-sm);font-size:1.5rem;line-height:1;cursor:pointer;color:var(--color-text-muted);padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent}.modal-close:hover{color:var(--color-text)}.modal-close:focus:not(:focus-visible){outline:none}.modal-body{padding:var(--space-5);overflow-y:auto}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--color-brand-dark);padding:var(--space-4)}.login-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);text-align:center}.login-brand .brand-mark{width:56px;height:56px;font-size:1.125rem}.login-brand-org{color:var(--color-on-brand-muted);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.login-brand-org-full{color:var(--color-on-brand-muted);font-size:.8125rem;margin-top:2px}.login-brand-product{color:var(--color-on-brand);font-size:1.5rem;font-weight:700;margin-top:var(--space-2)}.login-brand-tagline{color:var(--color-on-brand-muted);font-size:.875rem}.login-card{width:100%;max-width:380px;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-6) var(--space-5)}.login-card h1{font-size:1.125rem;margin-bottom:var(--space-4)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite}.spinner-dark{width:18px;height:18px;border-color:var(--color-border-strong);border-top-color:var(--color-accent)}@keyframes spin{to{transform:rotate(360deg)}}.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.operational-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding-bottom:var(--space-4);margin-bottom:var(--space-4)}.operational-panel>.schedule-toolbar{border:none;border-radius:var(--radius-md) var(--radius-md) 0 0;margin-bottom:0;background:var(--color-surface-muted);border-bottom:1px solid var(--color-border)}.operational-panel>.alert,.operational-panel>.mcard-filter-bar,.operational-panel>.state-panel,.operational-panel>.preference-hint{margin:var(--space-4) var(--space-4) 0}.operational-panel>.table-wrap{border:none;border-radius:0;margin-top:var(--space-4)}.operational-panel>.mobile-cards{margin:var(--space-3) var(--space-4) 0}.week-nav{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.week-nav-range{font-size:.9375rem;font-weight:600;color:var(--color-text);min-width:11rem;text-align:center}@media (max-width: 480px){.week-nav-range{min-width:0;width:100%;text-align:left}}.schedule-status-group{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding-left:var(--space-4);border-left:1px solid var(--color-border)}@media (max-width: 900px){.schedule-status-group{padding-left:0;border-left:none}}.schedule-console{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:var(--space-4)}.schedule-console .schedule-toolbar-desktop{border:none;border-radius:0;border-bottom:1px solid var(--color-border);margin-bottom:0;background:var(--color-surface-muted)}.schedule-console-banner{margin:0;padding:.5rem var(--space-4);background:var(--color-accent-bg);color:var(--color-accent-hover);font-size:var(--text-sm);border-bottom:1px solid var(--color-border);border-radius:0}.schedule-console .matrix-wrap{border:none;border-radius:0}@media (max-width: 768px){.schedule-console{display:none}}.status-badge{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.04em;padding:.3125rem .75rem;border-radius:var(--radius-sm)}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%;flex-shrink:0}.status-badge-draft{background:var(--color-surface-muted);color:var(--color-text-muted);border:1px solid var(--color-border-strong)}.status-badge-draft:before{background:var(--color-text-faint)}.status-badge-published{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success-border)}.status-badge-published:before{background:var(--color-success)}.published-meta{font-size:.75rem;color:var(--color-text-faint)}.matrix-wrap{overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);max-width:100%}table.matrix-table{border-collapse:separate;border-spacing:0;font-size:.875rem;width:100%}.matrix-table th,.matrix-table td{border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);white-space:nowrap}.matrix-table th:last-child,.matrix-table td:last-child{border-right:none}.matrix-table thead th{position:sticky;top:0;z-index:2;background:var(--color-brand);color:var(--color-on-brand-muted);font-size:.75rem;font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.03em;padding:var(--space-3) var(--space-4);text-align:center;border-bottom:none;border-right-color:#ffffff1f}.matrix-table thead th:first-child{z-index:3;background:var(--color-brand);color:var(--color-on-brand-muted);text-align:left;border-right-color:#ffffff1f}.matrix-table th:first-child,.matrix-table td:first-child{position:sticky;left:0;z-index:1;background:var(--color-surface);border-right:1px solid var(--color-border-strong)}.matrix-day-cell{padding:var(--space-3) var(--space-4);min-width:8.5rem}.matrix-day-name{display:block;font-weight:600;color:var(--color-text)}.matrix-day-date{display:block;font-size:.75rem;color:var(--color-text-muted)}.matrix-table tbody tr.is-weekend td:first-child,.matrix-table tbody tr.is-weekend th:first-child{background:var(--color-accent-bg)}.matrix-table tbody tr.is-weekend td{background:#2563a809}.matrix-table tbody tr.is-today td:first-child,.matrix-table tbody tr.is-today th:first-child{box-shadow:inset 3px 0 0 var(--color-accent);background:var(--color-accent-bg)}.matrix-table tbody tr.is-today td{background:#2563a812}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-border)}.holiday-badge{display:inline-flex;align-items:center;margin-left:.375rem;font-size:.625rem;font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.04em;padding:.125rem .375rem;border-radius:var(--radius-sm);background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-border);vertical-align:middle}.matrix-table tbody tr.is-holiday td:first-child,.matrix-table tbody tr.is-holiday th:first-child{background:var(--color-warning-bg);box-shadow:inset 3px 0 0 var(--color-warning)}.matrix-table tbody tr.is-today .matrix-day-name:after{content:"";display:inline-block;width:6px;height:6px;margin-left:.5rem;border-radius:50%;background:var(--color-accent);vertical-align:middle}.matrix-cell{padding:var(--space-1);vertical-align:middle}.matrix-cell-btn{display:flex;align-items:center;justify-content:center;width:100%;min-width:7rem;min-height:2.625rem;padding:.375rem .625rem;border-radius:var(--radius-sm);border:1px dashed var(--color-border-strong);background:transparent;color:var(--color-text-faint);font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;white-space:normal;text-align:center;transition:background-color .1s ease,border-color .1s ease}.matrix-cell-btn:hover{border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-bg)}.matrix-cell-btn:focus-visible{outline-offset:1px}.matrix-cell-btn.is-filled{border-style:solid;border-color:var(--color-border);background:var(--color-surface-muted);color:var(--color-text);font-size:.9375rem;font-weight:var(--font-weight-bold);letter-spacing:-.01em}.matrix-cell-btn.is-filled:hover{border-color:var(--color-accent);background:var(--color-accent-bg)}.matrix-cell-btn.is-selected{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent)}.matrix-cell-btn.is-changed,.position-row-action.is-changed{border-color:var(--color-accent)}.substitution-badge{display:inline-block;margin-left:.375rem;padding:.1rem .35rem;border:1px solid var(--color-accent);border-radius:4px;color:var(--color-accent);font-size:.6875rem;font-weight:var(--font-weight-bold);line-height:1.4;vertical-align:middle}.substitution-context>summary{cursor:pointer;margin-left:0}.substitution-context>summary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.substitution-context-content{display:flex;flex-direction:column;gap:.125rem;padding-top:.25rem;font-size:.8125rem;font-weight:400;color:var(--color-text-muted)}.substitution-effective-row{margin-top:.5rem}.substitution-history-title{margin:1.25rem 0 .5rem;font-size:.9375rem;font-weight:var(--font-weight-bold)}.substitution-history-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.375rem .75rem;cursor:default}.substitution-history-item:hover{background:var(--color-surface)}.substitution-history-reason{flex-basis:100%;font-size:.8125rem;color:var(--color-text-muted)}.schedule-mobile{display:none}.day-tabs{display:flex;gap:var(--space-1);overflow-x:auto;padding-bottom:var(--space-1);margin-bottom:var(--space-4)}.day-tab{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;padding:.5rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:.8125rem;font-weight:600;cursor:pointer}.day-tab .day-tab-date{font-size:.6875rem;font-weight:500;color:var(--color-text-muted)}.day-tab.is-weekend{border-color:var(--color-accent)}.day-tab.is-holiday{border-color:var(--color-warning);box-shadow:inset 0 0 0 1px var(--color-warning)}.day-tab.is-active.is-holiday{background:var(--color-warning);border-color:var(--color-warning);box-shadow:none}.day-tab.is-active{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}.day-tab.is-active .day-tab-date{color:var(--color-on-brand-muted)}.day-tab.is-today:not(.is-active){box-shadow:inset 0 0 0 1px var(--color-accent)}@media (max-width: 480px){.day-tabs{gap:3px;overflow-x:visible}.day-tab{flex:1 1 0;min-width:0;padding:.375rem .125rem;font-size:.75rem}.day-tab .day-tab-date{font-size:.625rem}}.position-rows{display:flex;flex-direction:column;gap:var(--space-2)}.position-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.position-row-label{font-weight:600;color:var(--color-text)}.position-row-action{flex-shrink:0}@media (max-width: 768px){.schedule-desktop{display:none}.schedule-mobile{display:block}}.schedule-modal-subtitle{color:var(--color-text-muted);font-size:.875rem;margin:-.5rem 0 var(--space-4)}.schedule-modal-current{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);margin-bottom:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-muted)}.schedule-modal-current-label{font-size:.75rem;color:var(--color-text-muted)}.schedule-modal-current-name{font-weight:600;flex:1}.employee-picker-list{list-style:none;margin:var(--space-3) 0 0;padding:0;max-height:260px;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.employee-picker-empty{padding:var(--space-4);text-align:center;color:var(--color-text-muted);font-size:.875rem}.employee-picker-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.625rem var(--space-3);border:none;border-bottom:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:.875rem;text-align:left;cursor:pointer}.employee-picker-list li:last-child .employee-picker-item{border-bottom:none}.employee-picker-item:hover:not(:disabled){background:var(--color-accent-bg)}.employee-picker-item.active{background:var(--color-success-bg);font-weight:600}.employee-picker-check{color:var(--color-success);font-weight:700}.field-hint{font-size:.75rem;color:var(--color-text-faint)}.home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.home-card{padding:var(--space-5)}.home-card-wide{grid-column:1 / -1}.home-card-hero{background:var(--color-accent-bg);border-color:var(--color-accent)}.home-shift-hero .home-shift-position{font-size:1.75rem}.home-shift-hero .home-shift-time{font-size:1rem}.home-active-requests-link{font-weight:var(--font-weight-bold);font-size:1.0625rem;color:var(--color-text)}.home-card-empty{text-align:center;color:var(--color-text-muted)}.home-card-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0 0 var(--space-3)}.home-card-empty-text{color:var(--color-text-muted);margin:0}.home-shift{display:flex;flex-direction:column;gap:2px}.home-shift-day{font-size:.8125rem;color:var(--color-text-muted)}.home-shift-position{font-size:1.25rem;font-weight:700;color:var(--color-text)}.home-shift-time{font-size:.9375rem;color:var(--color-text-muted)}.home-week-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.home-week-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-muted);flex-wrap:wrap}.home-week-item.is-today{background:var(--color-accent-bg);box-shadow:inset 3px 0 0 var(--color-accent)}.home-week-day{font-size:.8125rem;color:var(--color-text-muted);min-width:9rem}.home-week-position{font-weight:600;flex:1 1 auto}.home-week-time{font-size:.875rem;color:var(--color-text-muted)}@media (max-width: 640px){.home-grid{grid-template-columns:1fr}.home-card-wide{grid-column:auto}}.my-shifts-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.my-shift-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-wrap:wrap}.my-shift-row.is-weekend{background:var(--color-accent-bg)}.my-shift-row.is-today{box-shadow:inset 3px 0 0 var(--color-accent)}.my-shift-day{display:flex;flex-direction:column;min-width:8rem}.my-shift-row.is-holiday .my-shift-day{box-shadow:inset 3px 0 0 var(--color-warning);background:var(--color-warning-bg);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);margin:calc(var(--space-1) * -1) 0}.my-shift-day-name{font-weight:600;display:inline-flex;align-items:center;gap:var(--space-2)}.my-shift-day-date{font-size:.75rem;color:var(--color-text-muted)}.my-shift-details{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-3);font-weight:600}.my-shift-details.is-empty{color:var(--color-text-faint);font-weight:400}.substitution-changed-note{flex-basis:100%;font-size:.8125rem;font-weight:500;color:var(--color-accent-hover)}.my-shift-action{display:flex}.my-shift-request-btn{flex-basis:100%;align-self:flex-start}.my-shift-time{font-size:.875rem;font-weight:400;color:var(--color-text-muted)}.my-shift-position{color:var(--color-text)}@media (max-width: 768px){.my-shift-row{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-2)}.my-shift-day{min-width:0}.my-shift-details,.my-shift-details.is-empty{flex-direction:column;align-items:flex-start;gap:var(--space-1)}.my-shift-position{display:block;flex-basis:auto;font-size:var(--text-md);font-weight:var(--font-weight-bold)}.my-shift-details .duration-badge{flex-basis:auto;font-weight:var(--font-weight-medium)}.substitution-changed-note{flex-basis:auto}.my-shift-action{width:100%}.my-shift-request-btn{flex-basis:auto;width:100%}}@media (min-width: 769px){.my-shift-row{display:grid;grid-template-columns:8rem minmax(0,1fr) auto;align-items:center;flex-wrap:nowrap}.my-shift-details,.my-shift-details.is-empty{flex-wrap:wrap}.my-shift-request-btn{flex-basis:auto;align-self:center}.my-shift-action{justify-content:flex-end}}.profile-card{padding:var(--space-5);max-width:32rem}.profile-fields{margin:0;display:flex;flex-direction:column;gap:var(--space-4)}.profile-field dt{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);margin-bottom:2px}.profile-field dd{margin:0;font-size:1rem;color:var(--color-text)}.bottom-nav{display:none}@media (max-width: 768px){.app-shell.is-employee-mobile-nav .sidebar,.app-shell.is-employee-mobile-nav .sidebar-backdrop,.app-shell.is-employee-mobile-nav .topbar-menu-btn{display:none}.app-shell.is-employee-mobile-nav .app-shell-main{margin-left:0}.app-shell.is-employee-mobile-nav .app-main{padding-bottom:var(--bottom-nav-height)}.app-shell.is-employee-mobile-nav .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;height:var(--bottom-nav-height);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-lg);z-index:25;padding-bottom:env(safe-area-inset-bottom,0)}}.bottom-nav-list{list-style:none;margin:0;padding:0;display:flex;width:100%}.bottom-nav-list-item{flex:1 1 0;display:flex}.bottom-nav-item{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:var(--bottom-nav-height);color:var(--color-text-faint);text-decoration:none;font-size:.6875rem;font-weight:var(--font-weight-medium);border:none;background:none;cursor:pointer}.bottom-nav-item.is-active{color:var(--color-accent);font-weight:var(--font-weight-semibold)}.bottom-nav-icon{display:flex}.more-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;overflow:hidden}.more-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);color:var(--color-text);text-decoration:none;border-bottom:1px solid var(--color-border);font-size:var(--text-md);font-weight:var(--font-weight-medium);background:none;border-left:none;border-right:none;border-top:none;width:100%;text-align:left;cursor:pointer}.more-list li:last-child .more-item{border-bottom:none}.more-item.is-disabled{color:var(--color-text-faint);cursor:default}.more-item-icon{display:flex;color:var(--color-text-muted);flex-shrink:0}.more-item-badge{margin-left:auto}.more-item-danger,.more-item-danger .more-item-icon{color:var(--color-danger)}.quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.quick-action-btn{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);text-decoration:none;cursor:pointer;text-align:left;font-family:inherit}.quick-action-btn:hover{border-color:var(--color-accent);background:var(--color-accent-bg)}.quick-action-icon{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-sm);background:var(--color-accent-bg);color:var(--color-accent);flex-shrink:0}.quick-action-label{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-text)}.quick-actions-compact{margin-top:var(--space-5)}.quick-actions-compact .quick-action-btn{flex-direction:row;align-items:center;padding:var(--space-3) var(--space-4)}.quick-actions-compact .quick-action-icon{width:1.75rem;height:1.75rem}.quick-actions-compact .quick-action-btn{min-height:44px;min-width:0}.quick-action-btn-wide{grid-column:1 / -1}.home-week-card{margin-top:var(--space-5)}.home-card-empty+.home-grid{margin-top:var(--space-4)}.duration-badge{display:inline-flex;align-items:center;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.schedule-mode-toggle{display:flex;gap:2px;padding:3px;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.schedule-mode-btn{flex:1 1 0;padding:.5rem .75rem;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer}.schedule-mode-btn.is-active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.myrequests-view-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;max-width:16rem;margin:0 auto var(--space-3)}.myrequests-view-toggle .schedule-mode-btn{min-width:0;min-height:44px;padding:0 var(--space-2);white-space:nowrap}.team-day-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.team-day-header-title{font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:var(--color-text)}.team-day-header-sub{font-size:var(--text-sm);color:var(--color-text-muted)}.team-position-list{display:flex;flex-direction:column;gap:1px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-border)}.team-day-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,22rem);gap:var(--space-4);align-items:start}@media (max-width: 1100px){.team-day-grid{grid-template-columns:1fr}}.team-day-summary{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.team-day-summary-title{margin:0;font-size:var(--text-lg);font-weight:var(--font-weight-bold)}.team-day-summary-stat{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border)}.team-day-summary-stat:first-of-type{border-top:none;padding-top:0}.team-day-summary-label{font-size:var(--text-sm);color:var(--color-text-muted)}.team-day-summary-value{font-size:var(--text-md);font-weight:var(--font-weight-semibold);color:var(--color-text);font-variant-numeric:tabular-nums;text-align:right}.team-day-summary-shift-list{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.team-day-summary-shift-list strong{color:var(--color-text)}.team-day-summary-exceptions{padding-top:var(--space-3);border-top:1px solid var(--color-border)}.team-day-summary-exceptions-none{margin:0;font-size:var(--text-sm);color:var(--color-success)}.team-day-summary-exceptions-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted)}.team-day-summary-exceptions-list li.is-warning{color:var(--color-warning)}.team-position-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:.75rem var(--space-4);background:var(--color-surface)}.team-position-row.is-reserve{background:var(--color-surface-muted)}.team-position-label-group{display:flex;flex-direction:column;gap:1px}.team-position-label{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:var(--font-weight-medium)}.team-position-label-group .duration-badge{font-size:var(--text-xs)}.team-position-employee{font-size:var(--text-md);font-weight:var(--font-weight-bold);color:var(--color-text);text-align:right}.team-position-employee.is-empty{font-weight:var(--font-weight-medium);color:var(--color-text-faint)}.mini-matrix-toggle{margin:var(--space-4) 0;text-align:center}.mini-matrix-wrap{margin-top:var(--space-3)}.mini-matrix-wrap .matrix-cell-btn{cursor:default}.mini-matrix-wrap .matrix-cell-btn:hover{border-color:inherit;color:inherit;background:inherit}.mini-matrix-wrap .matrix-cell-btn.is-filled:hover{background:var(--color-surface-muted)}.employee-nickname-link{color:var(--color-text);font-weight:var(--font-weight-semibold);text-decoration:none}.employee-nickname-link:hover{color:var(--color-accent);text-decoration:underline}.employee-detail-back{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none;margin-bottom:var(--space-2)}.employee-detail-back:hover{color:var(--color-accent)}.employee-detail-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);padding-bottom:var(--space-4);margin-bottom:var(--space-5);border-bottom:1px solid var(--color-border)}.employee-detail-header-identity{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-3)}.employee-detail-header h1{font-size:1.625rem;margin:0}.employee-detail-fullname{color:var(--color-text-muted);font-size:var(--text-md)}.employee-detail-header-badges{display:flex;align-items:center;gap:var(--space-2)}.analytics-toolbar{margin-bottom:var(--space-4)}.analytics-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.analytics-kpi-card{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4)}.analytics-kpi-icon{display:flex;align-items:center;justify-content:center;flex:none;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);background:var(--color-accent-bg);color:var(--color-accent)}.analytics-kpi-body{display:flex;flex-direction:column;gap:2px;min-width:0}.analytics-card-label{font-size:.75rem;font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.analytics-card-value{font-size:1.5rem;font-weight:var(--font-weight-bold);color:var(--color-text);font-variant-numeric:tabular-nums}.analytics-card-sub{font-size:var(--text-sm);color:var(--color-text-faint)}.analytics-kpi-card--primary{border-color:var(--color-accent);background:var(--color-accent-bg)}.analytics-kpi-card--primary .analytics-card-value{font-size:2rem;color:var(--color-accent)}.duty-ledger{margin-bottom:var(--space-5);overflow:hidden}.duty-ledger-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5)}.duty-ledger-heading p{color:var(--color-text-muted);font-size:var(--text-sm);margin:var(--space-1) 0 0}.duty-ledger-total{color:var(--color-accent);font-size:var(--text-2xl);font-weight:var(--font-weight-bold);white-space:nowrap}.duty-ledger-table{border:none;border-top:1px solid var(--color-border);border-radius:0}.duty-ledger-table .data-table{width:100%}.data-table .duty-ledger-hours{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.duty-ledger-table tfoot{background:var(--color-accent-bg)}.duty-ledger-tags{display:flex;flex-wrap:wrap;gap:var(--space-1)}.duty-next-day{display:block;color:var(--color-text-muted)}.duty-ledger-muted{color:var(--color-text-muted);font-size:var(--text-sm)}.duty-ledger-calculation{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-sm)}.duty-ledger-calculation strong{color:var(--color-text);overflow-wrap:anywhere}.duty-ledger>.state-panel{margin:0 var(--space-4) var(--space-4)}@media (max-width: 768px){.duty-ledger-heading{padding:var(--space-4);align-items:flex-start;flex-wrap:wrap}.duty-ledger-cards{padding:0 var(--space-3) var(--space-3)}.duty-ledger-cards .duty-ledger-tags{margin-top:var(--space-2)}.duty-ledger-calculation{padding:var(--space-3) var(--space-4)}}.analytics-kpi-progress{display:block;height:4px;margin-top:var(--space-2);border-radius:var(--radius-pill);background:var(--color-border);overflow:hidden}.analytics-kpi-progress-fill{display:block;height:100%;border-radius:var(--radius-pill);background:var(--color-accent)}.analytics-substats{display:flex;flex-wrap:wrap;gap:var(--space-5);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-5);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-muted)}.analytics-substats strong{color:var(--color-text);font-variant-numeric:tabular-nums}.analytics-main-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:var(--space-4)}.analytics-breakdown-panel,.analytics-distribution-panel{padding:var(--space-4) var(--space-5)}.analytics-distribution-panel{display:flex;flex-direction:column}.analytics-panel-title{margin:0 0 var(--space-3);font-size:var(--text-lg);font-weight:var(--font-weight-bold)}.analytics-breakdown-table-wrap{border:none;box-shadow:none;background:transparent}.analytics-breakdown-table-wrap .data-table{width:100%}.analytics-share-cell{display:inline-flex;align-items:center;gap:var(--space-2);min-width:6.5rem}.analytics-share-bar{display:block;flex:1 1 auto;height:6px;border-radius:var(--radius-pill);background:var(--color-border);overflow:hidden}.analytics-share-bar-fill{display:block;height:100%;border-radius:var(--radius-pill);background:var(--color-accent)}.analytics-share-value{flex:none;font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums;min-width:2.25rem;text-align:right}.analytics-breakdown-cards{margin-top:var(--space-3)}.analytics-breakdown-cards .analytics-share-bar{margin-top:var(--space-2)}.analytics-distribution-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-faint);font-size:var(--text-sm);margin:0;text-align:center}.analytics-distribution-bars{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;gap:var(--space-3);min-height:9rem}.analytics-distribution-row{display:grid;grid-template-columns:6.5rem 1fr auto;align-items:center;gap:var(--space-3)}.analytics-distribution-label{font-size:var(--text-sm);color:var(--color-text-muted)}.analytics-distribution-bar{display:block;height:8px;border-radius:var(--radius-pill);background:var(--color-surface-muted);border:1px solid var(--color-border);overflow:hidden}.analytics-distribution-bar-fill{display:block;height:100%;border-radius:var(--radius-pill)}.analytics-distribution-bar-fill.is-total{background:var(--color-accent)}.analytics-distribution-bar-fill.is-weekend{background:var(--color-accent-hover)}.analytics-distribution-bar-fill.is-holiday{background:var(--color-warning)}.analytics-distribution-value{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);font-variant-numeric:tabular-nums;text-align:right}@media (max-width: 1024px){.analytics-main-grid{grid-template-columns:1fr}}@media (max-width: 900px){.analytics-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 480px){.analytics-kpi-grid{grid-template-columns:1fr}.analytics-substats{flex-direction:column;gap:var(--space-2)}.employee-detail-header{align-items:flex-start}.analytics-distribution-row{grid-template-columns:5.5rem 1fr auto}}img{max-width:100%}[hidden]{display:none!important}.mobile-cards{display:none}@media (max-width: 768px){.table-wrap{display:none}.mobile-cards{display:flex;flex-direction:column;gap:var(--space-2)}}.mcard{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.mcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.mcard-title{font-size:var(--text-md);font-weight:var(--font-weight-bold);color:var(--color-text)}a.mcard-title-link{color:var(--color-text);text-decoration:none}.mcard-sub{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:1px}.mcard-meta{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin-top:.5rem;font-size:var(--text-sm);color:var(--color-text-muted)}.mcard-meta strong{color:var(--color-text);font-weight:var(--font-weight-semibold)}.mcard-body{margin-top:.375rem;font-size:var(--text-sm);color:var(--color-text-muted)}.mcard-actions{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap}.mcard-actions .btn{flex:1 1 auto;min-height:2.75rem}.mcard-compact{padding:var(--space-2) var(--space-3)}.mcard-compact .mcard-meta{margin-top:.25rem}.mcard-compact .mcard-actions{margin-top:var(--space-2)}.mcard-meta-full{flex-basis:100%;min-width:0}.mcard-filter-bar{display:none}.mcard-filter-bar--desktop-visible{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}@media (min-width: 769px){.mcard-filter-bar--desktop-visible{max-width:26rem}}@media (max-width: 768px){.mcard-filter-bar{display:flex;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap}}.mcard-filter-bar .input{flex:1 1 160px}.mcard-filter-bar .btn{min-height:2.75rem}.schedule-toolbar-mobile{display:none}@media (max-width: 768px){.schedule-toolbar-desktop{display:none}.schedule-toolbar-mobile{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3)}.schedule-readonly-alert-desktop{display:none}}.schedule-nav-row-mobile{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.schedule-nav-arrow-btn{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:1.125rem;line-height:1;cursor:pointer}.schedule-nav-arrow-btn:hover{background:var(--color-surface-muted);border-color:var(--color-accent);color:var(--color-accent)}.schedule-nav-range-mobile{font-size:var(--text-md);font-weight:var(--font-weight-semibold);color:var(--color-text);text-align:center;flex:1 1 auto}.schedule-status-row-mobile{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.schedule-status-row-mobile .status-badge{flex-shrink:0}.myshifts-week-nav{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:var(--space-2)}.myshifts-week-nav .btn{min-width:0;min-height:44px;padding:var(--space-2);white-space:nowrap}.myrequests-category>.section-header{flex-direction:column;align-items:center;text-align:center;gap:var(--space-4)}.myrequests-category>.section-header>.btn{width:100%;max-width:18rem;min-height:44px}@media (max-width: 768px){.myrequests-page>.page-header{margin-bottom:var(--space-3)}.myrequests-page>.card+.card{margin-top:var(--space-3)}.myrequests-category>.section-header,.myrequests-category>.section-body{padding:var(--space-3)}.myrequests-category .request-row{gap:var(--space-2);padding:var(--space-2) var(--space-3)}.myrequests-category .request-row-end{flex-wrap:wrap;flex-shrink:1;gap:var(--space-2);min-width:0}.myrequests-category .request-row-type,.myrequests-category .badge{overflow-wrap:anywhere;white-space:normal}.myrequests-category .row-actions{flex-wrap:wrap;gap:var(--space-1)}.myrequests-category .row-actions .btn{min-height:44px;padding:var(--space-2)}}.schedule-status-row-actions-mobile{display:flex;align-items:center;gap:var(--space-2)}.schedule-meta-toggle{background:none;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--font-weight-medium);padding:.375rem .75rem;min-height:2.25rem;cursor:pointer}.schedule-meta-toggle:hover,.schedule-meta-toggle[aria-expanded=true]{color:var(--color-text);background:var(--color-surface-muted)}.schedule-meta-panel-mobile{display:none}@media (max-width: 768px){.schedule-meta-panel-mobile.is-open{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);margin-bottom:var(--space-3);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md)}}.schedule-day-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);margin:var(--space-1) 0 var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.schedule-day-heading-title{font-size:var(--text-md);font-weight:var(--font-weight-bold);color:var(--color-text)}.schedule-day-heading-count{font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap}.position-row{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px}.position-row-main{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%}.position-row-action{min-height:2.75rem}.position-row-time{display:block;font-size:var(--text-sm);font-weight:400;color:var(--color-text-muted)}@media (max-width: 480px){.analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.month-label-short{display:none}@media (max-width: 768px){.employee-month-toolbar .week-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:var(--space-1)}.employee-month-toolbar .week-nav .btn{min-width:0;min-height:44px;padding:var(--space-2) var(--space-1);white-space:nowrap}.employee-month-toolbar .month-label-full{display:none}.employee-month-toolbar .month-label-short{display:inline}.employee-month-toolbar .week-nav-range{grid-column:1 / -1;text-align:center;margin:var(--space-1) 0 0}dialog.modal.employee-request-modal[open]{display:flex;flex-direction:column;width:calc(100% - 1.5rem);max-width:30rem;max-height:calc(100dvh - 1.5rem);padding:0;overflow:hidden;overscroll-behavior:contain;scroll-padding-bottom:5rem}.employee-request-modal .modal-header{flex-shrink:0;padding:var(--space-3);gap:var(--space-2)}.employee-request-modal .modal-header h2{font-size:var(--text-lg)}.employee-request-modal .modal-body{min-height:0;overflow-y:auto;padding:0 var(--space-3) var(--space-3)}.employee-request-form .form-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.employee-request-form .field{min-width:0;gap:var(--space-1)}.employee-request-form .input,.employee-request-form .select,.employee-request-form .textarea{min-height:44px;width:100%;min-width:0;box-sizing:border-box;font-size:16px}.employee-request-form .preference-hint{margin:0 0 var(--space-3)}.employee-request-form small{color:var(--color-text-muted)}.employee-request-form .form-actions{position:sticky;bottom:0;display:flex;flex-wrap:nowrap;gap:var(--space-2);background:var(--color-surface);padding:var(--space-3) 0 max(var(--space-2),env(safe-area-inset-bottom));margin-top:var(--space-3)}.employee-request-form .form-actions .btn{flex:1;min-height:44px;min-width:0}}
