@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.block{display:block}.inline{display:inline}.table{display:table}.hidden{display:none}.lowercase{text-transform:lowercase}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--color-bg: #f2f1ec;--color-sidebar-bg: #f2f1ec;--color-ink: #16171b;--color-ink-soft: #4a4b52;--color-text-muted: #8b8d98;--color-text-faint: #b4b6bf;--color-border: #e7e6e1;--color-border-strong: #d8d7d1;--color-accent: #fcb043;--color-accent-soft: #fdedd3;--color-accent-ink: #7a4a0c;--color-success: #1e8e5a;--color-success-bg: #dff3e6;--color-danger: #c0392b;--color-danger-bg: #fbe2de;--color-warning: #a9720a;--color-warning-bg: #fcefd0;--color-text: var(--color-ink);--color-heading: var(--color-ink);--color-muted: var(--color-text-muted);--color-soft: var(--color-ink-soft);--color-border-soft: var(--color-border);--color-surface: #ffffff;--color-page: var(--color-bg);--color-brand: var(--color-accent);--color-brand-soft: var(--color-accent-soft);--control-height: 44px;--radius: 10px;--radius-card: 16px;--shadow-card: 0 1px 2px rgb(20 21 26 / 4%), 0 4px 16px rgb(20 21 26 / 4%);--shadow-panel: var(--shadow-card);--motion-smooth: cubic-bezier(.16, 1, .3, 1);--motion-quick: .18s ease;--motion-medium: .28s var(--motion-smooth);accent-color:var(--color-brand);color:var(--color-text);background:var(--color-page);color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}html{scrollbar-gutter:stable;scroll-behavior:smooth}body{min-width:320px;overflow-x:hidden;background:var(--color-bg)}body.dialog-scroll-lock{position:fixed;left:0;right:0;width:100%;overflow:hidden}.launcher-shell{min-height:100vh;background:radial-gradient(circle at 85% 5%,rgb(252 176 67 / 20%),transparent 28%),var(--color-bg)}.launcher-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px clamp(24px,5vw,72px);border-bottom:1px solid var(--color-border);background:#ffffffc7;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.launcher-header>div:last-child,.production-actions,.production-row-actions{display:flex;align-items:center;gap:12px}.launcher-header>div:last-child>span{color:var(--color-ink-soft);font-size:.88rem}.launcher-content{width:min(1120px,calc(100% - 40px));margin:0 auto;padding:clamp(64px,10vw,120px) 0}.launcher-admin-content{width:min(1320px,calc(100% - 40px));margin:0 auto;padding:48px 0 80px}.launcher-admin-intro{margin-bottom:28px}.launcher-admin-intro h1{margin:8px 0 10px;font-size:clamp(2rem,4vw,3.4rem);letter-spacing:-.045em}.launcher-admin-intro p{margin:0;color:var(--color-ink-soft)}.launcher-admin-content .screen-stack>.screen-header{display:none}.launcher-content h1{margin:8px 0 10px;font-size:clamp(2.2rem,5vw,4.3rem);letter-spacing:-.055em}.launcher-content>p{margin:0;color:var(--color-ink-soft)}.launcher-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:48px}.launcher-card{display:grid;justify-items:start;min-height:300px;padding:30px;border:1px solid var(--color-border);border-radius:22px;background:#fff;color:var(--color-ink);text-align:left;box-shadow:var(--shadow-card)}.launcher-card:hover{border-color:var(--color-accent);box-shadow:0 18px 46px #14151a1a;transform:translateY(-4px)}.launcher-card>span{display:grid;width:54px;height:54px;place-items:center;border-radius:15px;background:var(--color-accent-soft);color:var(--color-accent-ink)}.launcher-card strong{align-self:end;font-size:1.45rem}.launcher-card small{min-height:48px;color:var(--color-ink-soft);font-size:.92rem;line-height:1.55}.launcher-card b{color:var(--color-accent-ink);font-size:.9rem}.app-switcher-button{display:flex;align-items:center;gap:10px;width:100%;margin:8px 0 16px;padding:10px 12px;border:1px solid var(--color-border-strong);border-radius:var(--radius);background:#fff;color:var(--color-ink);font-weight:700}.app-access-fieldset{display:flex;gap:16px;min-width:0;margin:0;padding:8px 12px;border:1px solid var(--color-border-strong);border-radius:var(--radius)}.app-access-fieldset legend{color:var(--color-ink-soft);font-size:.82rem}.checkbox-label{display:flex;align-items:center;gap:7px;white-space:nowrap}.checkbox-label input{width:17px;min-height:17px}.user-app-access{display:grid;gap:8px}.production-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh;background:#f3f6fa}.production-sidebar{display:flex;position:sticky;top:0;flex-direction:column;height:100vh;padding:22px 16px;background:#102b4c;color:#fff}.production-back,.production-logout,.production-sidebar nav button{display:flex;align-items:center;gap:10px;width:100%;padding:11px 13px;border:0;border-radius:9px;background:transparent;color:#d7e3f4;text-align:left;font-weight:700}.production-back{margin-bottom:18px;background:#ffffff14}.production-sidebar nav button:hover,.production-sidebar nav button.active,.production-back:hover,.production-logout:hover{background:#1c4677;color:#fff}.production-brand{display:flex;align-items:center;gap:12px;margin:4px 10px 28px}.production-brand div{display:grid;gap:2px}.production-brand small{color:#9fb4cf}.production-sidebar nav{display:grid;gap:5px}.production-logout{margin-top:auto}.production-main{width:auto;min-width:0;max-width:1720px;padding:26px clamp(16px,3vw,40px) 60px;overflow:hidden}.production-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.production-header span,.production-panel-heading span,.production-kpis span{color:#657089;font-size:.76rem;font-weight:700}.production-header h1{margin:4px 0 0;font-size:clamp(1.7rem,3vw,2.4rem)}.production-user{padding:9px 13px;border-radius:999px;background:#e7f1fb;color:#174f84;font-size:.8rem;font-weight:700}.production-stack{display:grid;min-width:0;gap:16px}.production-panel{min-width:0;padding:18px;border:1px solid #dfe5ee;border-radius:15px;background:#fff;box-shadow:0 8px 24px #1720330f}.production-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.production-panel h2{margin:0;font-size:1.05rem}.production-form-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:13px}.production-form-grid.two-column{grid-template-columns:repeat(2,minmax(0,1fr))}.production-wide{grid-column:span 3}.production-table{min-width:940px}.production-table input{min-width:88px}.production-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.production-kpis>div{display:grid;gap:7px;padding:16px;border:1px solid #dfe5ee;border-radius:13px;background:#fff}.production-kpis strong{font-size:1.25rem}.production-export{align-self:end}.production-backup{display:grid;justify-items:start;max-width:680px;gap:14px;padding:30px}.production-backup p{margin:0;color:var(--color-ink-soft);line-height:1.6}.production-file-button{display:inline-flex;align-items:center;cursor:pointer}.production-row-actions .ghost-button,.production-row-actions .danger-ghost-button{min-height:34px;padding:6px 9px}@media(max-width:920px){.production-shell{grid-template-columns:1fr}.production-sidebar{position:static;height:auto}.production-sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr))}.production-logout{margin-top:16px}.production-form-grid,.production-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.production-wide{grid-column:span 2}}@media(max-width:640px){.launcher-header,.launcher-header>div:last-child,.production-header{align-items:flex-start;flex-direction:column}.launcher-header>div:last-child>span{display:none}.launcher-grid,.production-form-grid,.production-form-grid.two-column,.production-kpis{grid-template-columns:1fr}.production-sidebar nav{display:flex;overflow-x:auto}.production-sidebar nav button{min-width:-moz-max-content;min-width:max-content}.production-wide{grid-column:auto}}body,input,select,textarea,button{font-variant-numeric:tabular-nums}::-moz-selection{background:var(--color-brand);color:var(--color-heading)}::selection{background:var(--color-brand);color:var(--color-heading)}button,input,select,textarea{min-height:var(--control-height);font:inherit;font-size:16px}select,option{background-color:var(--color-surface);color:var(--color-ink)}button{cursor:pointer;transition:background-color var(--motion-quick),border-color var(--motion-quick),box-shadow var(--motion-quick),color var(--motion-quick),opacity var(--motion-quick),transform var(--motion-medium)}button,input,select,textarea,summary,a{-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.5}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}input,select,textarea{width:100%;border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);caret-color:var(--color-brand);line-height:1.35;padding:10px 12px;transition:background-color var(--motion-quick),border-color var(--motion-quick),box-shadow var(--motion-quick),color var(--motion-quick),transform var(--motion-quick)}textarea{min-height:104px;resize:vertical}@supports (field-sizing: content){textarea{field-sizing:content}}input:focus,select:focus,textarea:focus{border-color:var(--color-ink);box-shadow:0 0 0 3px #16171b1a;outline:none}button:focus-visible,a:focus-visible,summary:focus-visible,.icon-button:focus-visible,.primary-button:focus-visible,.ghost-button:focus-visible,.danger-button:focus-visible,.danger-ghost-button:focus-visible{outline:3px solid rgb(252 176 67 / 45%);outline-offset:2px}input:user-invalid,select:user-invalid,textarea:user-invalid{border-color:var(--color-danger);box-shadow:0 0 0 3px #c0392b1f}input:user-valid,select:user-valid,textarea:user-valid{border-color:var(--color-success)}label{display:grid;gap:7px;min-width:0;color:var(--color-ink-soft);font-size:.88rem;font-weight:500}table{width:100%;border-collapse:collapse;min-width:860px;background:var(--color-surface);font-size:.88rem}th,td{border-bottom:1px solid var(--color-border);padding:12px 14px;text-align:left;vertical-align:middle;color:var(--color-ink-soft);font-weight:400}th{position:sticky;top:0;z-index:1;background:var(--color-surface);color:var(--color-muted);font-size:.8rem;font-weight:500;text-transform:none}td strong,td .employee-name-with-tag{color:var(--color-ink)}tbody tr:hover{background:var(--color-bg)}tbody tr{transition:background-color var(--motion-quick),box-shadow var(--motion-quick)}.clickable-table-row{cursor:pointer}.table-row-action{display:inline-flex;min-height:0;max-width:100%;border:0;background:transparent;color:var(--color-ink);font:inherit;font-weight:600;padding:0;text-align:left;white-space:normal}.table-row-action:hover,.table-row-action:focus-visible{color:var(--color-accent-ink);outline:none;text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:2px;text-underline-offset:3px}.clickable-table-row:focus-visible{background:var(--color-bg);box-shadow:inset 0 0 0 2px var(--color-accent);outline:none}a{color:var(--color-ink);font-weight:600;text-decoration-color:var(--color-accent);text-decoration-thickness:2px;text-underline-offset:3px}.login-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:var(--color-bg)}.login-card{display:grid;width:min(100%,420px);gap:18px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card);padding:32px}.login-card h1,.screen-header h1{margin:0;color:var(--color-heading);font-size:clamp(1.75rem,3vw,2rem);font-weight:600;letter-spacing:0;line-height:1.02;text-wrap:balance}.login-card p{margin:0;color:var(--color-ink-soft);line-height:1.55}.skeleton-card{min-height:360px}.brand-mark{width:48px;height:48px;-o-object-fit:contain;object-fit:contain}.app-shell{display:grid;min-height:100vh;grid-template-columns:264px minmax(0,1fr);background:var(--color-page)}.sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;gap:22px;border-right:0;background:var(--color-sidebar-bg);padding:24px 20px}.sidebar-brand{display:flex;align-items:center;gap:12px}.sidebar-brand div{display:grid}.sidebar-brand small,.topbar-menu-panel .logout-button{color:var(--color-text-muted)}.sidebar nav{display:grid;gap:8px;margin-top:12px}.sidebar nav button,.bottom-nav button,.topbar-menu-panel .logout-button{display:flex;align-items:center;gap:10px;border:0;border-radius:var(--radius);background:transparent;color:var(--color-ink-soft);font-weight:500;padding:11px 13px;text-align:left}.sidebar nav button:hover,.bottom-nav button:hover,.topbar-menu-panel .logout-button:hover{background:#ffffff9e;color:var(--color-ink);transform:translate(2px)}.sidebar nav button.active,.bottom-nav button.active{background:var(--color-accent);color:var(--color-ink)}.sidebar-context{display:grid;gap:10px;margin-top:auto}.sidebar-context label{gap:6px;color:var(--color-text-muted);font-size:.72rem;font-weight:600}.sidebar-context select{min-height:38px;border-color:var(--color-border);background:var(--color-surface);font-size:.84rem;padding:8px 10px}.content-area{min-width:0;padding:36px}.app-topbar{display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-bottom:28px}.topbar-actions{display:flex;align-items:center;gap:10px}.topbar-icon-button,.topbar-user-button{position:relative;display:inline-flex;min-height:var(--control-height);align-items:center;justify-content:center;gap:10px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-ink);padding:8px 12px;box-shadow:var(--shadow-card)}.topbar-user-menu{position:relative}.topbar-user-button{cursor:pointer;list-style:none}.topbar-user-button::-webkit-details-marker{display:none}.topbar-user-menu[open] .topbar-user-button svg{transform:rotate(180deg)}.topbar-menu-panel{position:absolute;top:calc(100% + 10px);right:0;z-index:25;display:grid;width:min(280px,calc(100vw - 32px));gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:0 18px 42px #14151a1f;padding:10px;animation:popover-in .18s var(--motion-smooth)}.topbar-menu-panel>span{color:var(--color-text-muted);font-size:.82rem;overflow-wrap:anywhere;padding:6px 8px}.topbar-menu-panel .logout-button{width:100%}.topbar-icon-button{width:var(--control-height);padding:0}.topbar-icon-button span{position:absolute;top:9px;right:10px;width:8px;height:8px;border:2px solid var(--color-surface);border-radius:999px;background:var(--color-accent)}.topbar-user-button>span{display:inline-grid;width:28px;height:28px;place-items:center;border-radius:999px;background:var(--color-accent);color:var(--color-ink);font-size:.78rem;font-weight:700}.screen-stack{display:grid;gap:18px;min-width:0}.screen-header{display:flex;align-items:end;justify-content:space-between;gap:16px;min-width:0;border-bottom:1px solid var(--color-border);padding-bottom:20px}.screen-header>div:first-child{min-width:0}.screen-actions{display:flex;align-items:end;justify-content:flex-end;gap:12px;min-width:min(100%,220px)}.attendance-header-actions{display:flex;align-items:end;justify-content:flex-end;gap:10px;min-width:0}.screen-header h2,.panel h2,.panel-heading h2{margin:0;color:var(--color-heading);font-size:1.05rem;font-weight:600}.eyebrow{display:inline-block;margin-bottom:8px;color:var(--color-text-muted);font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.panel{position:relative;min-width:0;border:1px solid var(--color-border-soft);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-panel);padding:22px;transition:border-color .18s ease,box-shadow .22s ease,transform .22s ease,background-color .18s ease}.panel-heading{display:grid;gap:4px;min-width:0}.panel-heading p{margin:0}.collapsible-panel{display:grid;gap:0;overflow:hidden}.collapsible-summary{display:flex;width:100%;min-height:56px;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;list-style:none;border:0;background:var(--color-surface);color:var(--color-heading);font-weight:600;padding:0;text-align:left;transition:color .18s ease,background-color .18s ease}.collapsible-summary>span{display:grid;gap:3px;min-width:0}.collapsible-summary small{color:var(--color-text-muted);font-size:.7rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-summary svg{transition:transform .28s cubic-bezier(.16,1,.3,1)}.collapsible-panel.is-open>.collapsible-summary{border-bottom:1px solid var(--color-border);padding-bottom:14px}.collapsible-panel.is-open{overflow:visible}.collapsible-panel.is-open>.collapsible-summary svg{transform:rotate(180deg)}.collapsible-content{display:grid;grid-template-rows:0fr;opacity:0;transform:translateY(-6px);transition:grid-template-rows .34s cubic-bezier(.16,1,.3,1),opacity .22s ease,transform .34s cubic-bezier(.16,1,.3,1)}.collapsible-panel.is-open>.collapsible-content{grid-template-rows:1fr;opacity:1;transform:translateY(0)}.collapsible-content-inner{display:grid;min-height:0;gap:16px;overflow:hidden;padding-top:0;transition:padding-top .26s ease}.collapsible-panel.is-open .collapsible-content-inner{overflow:visible;padding-top:16px}.collapsible-body{display:grid;gap:16px;min-width:0}.collapsible-anchor{min-width:0}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:16px}.metric-panel{min-width:0;padding:22px 24px}.metric-panel:hover{transform:translateY(-2px);box-shadow:0 16px 34px #12192617}.metric-panel strong{display:block;color:var(--color-ink);font-variant-numeric:tabular-nums;overflow-wrap:normal;font-size:clamp(2rem,3.2vw,2.9rem);font-weight:700;letter-spacing:0;line-height:1}.metric-panel small{color:var(--color-text-muted)}.metric-panel meter,.metric-panel progress{width:100%;height:10px}.metric-panel meter::-webkit-meter-bar,.metric-panel progress::-webkit-progress-bar{border:0;border-radius:999px;background:var(--color-border)}.metric-panel meter::-webkit-meter-optimum-value,.metric-panel progress::-webkit-progress-value{border-radius:999px;background:var(--color-ink)}.metric-panel progress::-moz-progress-bar{border-radius:999px;background:var(--color-ink)}.chart-panel{display:grid;gap:20px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));align-items:start;gap:16px 18px}.form-grid>button,.form-grid>.button-row{align-self:end}.form-grid>h2,.form-grid>.form-heading,.form-grid>.panel-heading{grid-column:1 / -1}.form-grid>.notice-box,.form-grid>.error-box,.form-grid>.warning-box{grid-column:1 / -1}.wide-field{grid-column:1 / -1}.import-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,340px) max-content;align-items:end;gap:16px}.import-panel>button{align-self:end}.import-panel>.notice-box,.import-panel>.error-box,.import-panel>.warning-box{grid-column:1 / -1}.muted-copy{margin:6px 0 0;color:var(--color-text-muted);line-height:1.5}.two-column{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:16px}.attendance-controls-row{position:relative;z-index:20}.desktop-table-wrap{max-width:100%;overflow-x:auto;scroll-behavior:smooth;scrollbar-gutter:stable}.table-browser,.attendance-browser,.table-surface,.mobile-card-list{container-type:inline-size}.attendance-browser,.table-browser{display:grid;gap:16px;content-visibility:auto;contain-intrinsic-size:auto 620px;position:relative;z-index:1}.attendance-browser table{min-width:620px}.table-surface{display:grid;gap:12px}.table-toolbar{display:grid;grid-template-columns:1fr;align-items:start;gap:16px}.table-toolbar>:only-child{grid-column:1 / -1}.panel.screen-stack{align-content:start}.table-toolbar h2{margin:0}.attendance-record-heading{gap:6px}.attendance-heading-date{display:flex;min-width:0;align-items:center;flex-wrap:wrap;gap:10px}.attendance-heading-date h2{margin:0}.attendance-date-cell{display:inline-flex;min-width:0;align-items:center;flex-wrap:wrap;gap:7px}.attendance-date-cell>strong{color:var(--color-ink);font-weight:600}.attendance-date-meta{display:inline-flex;min-width:0;align-items:center;flex-wrap:wrap;gap:6px}.date-meta-chip{display:inline-flex;min-height:26px;max-width:100%;align-items:center;border:1px solid transparent;border-radius:999px;background:#f4f4f1;color:var(--color-ink-soft);font-size:.74rem;font-weight:700;line-height:1.2;padding:4px 9px}.attendance-date-meta.compact .date-meta-chip{min-height:23px;font-size:.68rem;padding:3px 7px}.date-meta-chip.weekend{border-color:#d7dce2;background:#eef1f4;color:#47515d}.date-meta-chip.holiday{border-color:#f7d18d;background:#fff3dc;color:#855410}.date-meta-chip.poya{border-color:#d8c8f5;background:#f1eafa;color:#65439a}tbody tr.attendance-row.weekend{background:#fbfbf8}tbody tr.attendance-row.holiday{background:#fffaf0}tbody tr.attendance-row.poya{background:#fcf9ff}tbody tr.attendance-row:hover{background:var(--color-bg)}.filter-grid{display:grid;width:100%;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px}.filter-grid label{align-self:end}.date-filter-field{align-self:end;min-width:0}.employee-filter-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}.payroll-filter-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}.adjustment-panel{display:grid;gap:16px}.adjustment-toolbar{display:flex;justify-content:flex-start}.adjustment-toolbar>.employee-search-picker{width:min(100%,420px)}.adjustment-panel>.table-toolbar{grid-template-columns:1fr;align-items:start}.employee-search-picker{display:grid;width:100%;min-width:0;gap:7px}.table-toolbar>.employee-search-picker{justify-self:start;width:min(100%,420px)}.employee-search-picker small{color:var(--color-text-muted);font-weight:500}.adjustment-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.adjustment-group{display:grid;align-content:start;min-width:0;gap:6px;border:1px solid var(--color-border);border-radius:var(--radius);margin:0;padding:10px}.adjustment-group legend{color:var(--color-ink);font-weight:600;padding:0 6px}.adjustment-grid{display:grid;align-content:start;grid-template-columns:1fr;gap:6px}.adjustment-grid label{align-content:start;gap:3px;min-width:0}.adjustment-grid input,.adjustment-grid select{box-sizing:border-box;height:36px;min-height:36px;padding:6px 10px}.pagination-row{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--color-soft);font-size:.88rem}.empty-state{display:grid;min-height:96px;place-items:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-card);color:var(--color-text-muted);padding:18px;text-align:center}.empty-state strong{color:var(--color-ink);font-size:1rem}.empty-state span{max-width:560px;line-height:1.5}.audit-action-badge{display:inline-flex;width:-moz-fit-content;width:fit-content;align-items:center;border-radius:999px;font-size:.76rem;font-weight:600;padding:5px 10px;text-transform:capitalize}.audit-action-badge.create{background:var(--color-success-bg);color:var(--color-success)}.audit-action-badge.update,.audit-action-badge.import{background:var(--color-accent-soft);color:var(--color-accent-ink)}.audit-action-badge.finalize{background:var(--color-warning-bg);color:var(--color-warning)}.audit-action-badge.delete{background:var(--color-danger-bg);color:var(--color-danger)}.audit-action-badge.danger{background:var(--color-border);color:var(--color-ink-soft)}.numeric{text-align:right;font-variant-numeric:tabular-nums}.primary-button,.ghost-button,.danger-button,.danger-ghost-button{display:inline-flex;min-height:var(--control-height);align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius);font-weight:600;line-height:1.2;padding:10px 16px;white-space:nowrap}.loading-spinner-wrap{display:inline-flex;align-items:center;justify-content:center}.loading-spinner{width:1em;height:1em;flex:0 0 auto;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:loading-spin .75s linear infinite}.button-loading-content{display:inline-grid;place-items:center}.button-loading-placeholder,.button-loading-spinner{grid-area:1 / 1}.button-loading-placeholder{visibility:hidden}.inline-loading-state{grid-column:1 / -1;display:grid;place-items:center;min-height:40px;color:var(--color-ink-soft);font-size:.92rem}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;display:grid;place-items:center;border-radius:inherit;background:#ffffffa3;color:var(--color-ink);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.loading-overlay .loading-spinner{width:28px;height:28px;border-width:3px}@keyframes loading-spin{to{transform:rotate(360deg)}}.primary-button{background:var(--color-accent);color:var(--color-ink)}.primary-button:hover,.ghost-button:hover,.danger-button:hover,.danger-ghost-button:hover{transform:translateY(-1px);box-shadow:0 8px 20px #14151a14}.ghost-button{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text)}.ghost-button:hover{border-color:var(--color-ink)}.danger-button{background:var(--color-danger);color:#fff}.danger-ghost-button{border:1px solid var(--color-danger-bg);background:#fff;color:var(--color-danger)}.ghost-button:disabled{cursor:not-allowed;opacity:.45;transform:none}.button-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.icon-text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}.icon-button{width:var(--control-height);min-width:var(--control-height);min-height:var(--control-height);display:inline-grid;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);padding:0}.date-picker-label{display:grid;gap:7px;min-width:0;color:var(--color-ink-soft);font-size:.88rem;font-weight:500;position:relative}.date-picker-label.is-calendar-open{z-index:1000}.date-picker-control{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px}.calendar-popover{position:absolute;top:calc(100% + 8px);left:0;z-index:1001;width:min(100vw - 40px,320px);border:1px solid var(--color-border-strong);border-radius:var(--radius-card);background:#fff;box-shadow:0 18px 42px #12192629;padding:12px;animation:popover-in .18s var(--motion-smooth);transform-origin:top left}.calendar-header{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;margin-bottom:10px}.calendar-header strong{color:var(--color-ink);text-align:center}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendar-weekday{color:var(--color-text-muted);font-size:.74rem;font-weight:850;text-align:center}.calendar-day{min-width:0;min-height:38px;border:1px solid transparent;border-radius:8px;background:#fff;color:var(--color-ink);padding:0;transition:background-color var(--motion-quick),border-color var(--motion-quick),color var(--motion-quick),transform var(--motion-quick)}.calendar-day:hover{background:var(--color-bg);transform:translateY(-1px)}.calendar-day.muted{color:var(--color-text-faint)}.calendar-day.selected{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent-ink);font-weight:600}.period-select{width:auto;min-width:170px}.period-control{display:grid;gap:6px;justify-items:end}.period-control small{color:var(--color-text-muted);text-align:right}.form-heading{display:grid;align-self:center;gap:2px}.form-heading h2{margin:0}.table-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}dialog::backdrop{background:#11182773;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}dialog[open]{animation:dialog-in .22s var(--motion-smooth)}dialog[open]::backdrop{animation:backdrop-in .22s ease}.confirm-dialog{display:grid;width:min(100%,420px);gap:14px;border:0;border-radius:var(--radius-card);background:#fff;box-shadow:0 26px 80px #1118273d;color:var(--color-text);margin:auto;padding:22px}.confirm-dialog h2,.confirm-dialog p{margin:0}.confirm-dialog p{color:var(--color-ink-soft);line-height:1.55}.detail-dialog{display:grid;width:min(100%,980px);max-height:min(86vh,900px);gap:18px;border:0;overflow:auto;overscroll-behavior:contain;border-radius:var(--radius-card);background:#fff;box-shadow:0 26px 80px #1118273d;color:var(--color-text);margin:auto;padding:22px}.dialog-close-button{position:absolute;top:14px;right:14px}.confirm-dialog,.detail-dialog{position:relative}.confirm-dialog>h2,.detail-dialog>.detail-header{padding-right:48px}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.detail-header h2,.detail-section h3{margin:0}.detail-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px}.payroll-summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.payroll-summary-strip div{display:grid;gap:6px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);padding:14px}.payroll-summary-strip span{color:var(--color-text-muted);font-size:.8rem;font-weight:800;text-transform:uppercase}.payroll-summary-strip strong{color:var(--color-ink);font-variant-numeric:tabular-nums;font-size:1.25rem}.detail-section{display:grid;align-content:start;grid-template-rows:auto auto;gap:12px;border:1px solid var(--color-border);border-radius:var(--radius);padding:14px}.detail-section dl{display:grid;gap:10px;margin:0}.detail-section dl div{display:flex;align-items:baseline;justify-content:space-between;gap:14px;border-bottom:1px solid var(--color-border);padding-bottom:8px}.detail-section dl div:last-child{border-bottom:0;padding-bottom:0}.detail-section dt{color:var(--color-text-muted);font-size:.82rem;font-weight:750}.detail-section dd{margin:0;color:var(--color-ink);font-weight:600;font-variant-numeric:tabular-nums;text-align:right}.detail-section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.wide-detail-section{grid-column:1 / -1}.mini-table-wrap{max-height:320px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-card)}.mini-table-wrap table{margin:0}.attendance-detail-date{display:grid;gap:4px}.calculated-attendance-time{color:var(--color-ink);font-weight:700;font-variant-numeric:tabular-nums}.mini-time-input{width:116px;min-height:38px;padding:7px 9px}.mini-number-input{width:84px;min-height:38px;padding:7px 9px}.mini-row-actions{display:flex;align-items:center;gap:8px}.loan-guidance{display:grid;gap:14px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-bg);padding:14px}.loan-guidance h3{margin:0}.loan-guidance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.table-input{min-width:110px;text-align:right}.status-pill{display:inline-flex;min-height:30px;align-items:center;border-radius:999px;background:var(--color-accent-soft);color:var(--color-accent-ink);font-size:.78rem;font-weight:600;padding:4px 10px;text-transform:capitalize}.employee-name-with-tag{display:inline-flex;min-width:0;align-items:center;flex-wrap:wrap;gap:8px}.employee-type-tag{display:inline-flex;min-height:24px;align-items:center;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:0;padding:3px 8px}.employee-type-tag.daily{background:var(--color-accent-soft);color:var(--color-accent-ink)}.employee-type-tag.staff{background:var(--color-success-bg);color:var(--color-success)}.error-box,.notice-box,.warning-box{display:grid;gap:8px;border-radius:8px;padding:12px 14px;line-height:1.45}.error-box{border:1px solid var(--color-danger-bg);background:var(--color-danger-bg);color:var(--color-danger)}.notice-box{border:1px solid var(--color-accent-soft);background:var(--color-accent-soft);color:var(--color-accent-ink)}.warning-box{border:1px solid var(--color-warning-bg);background:var(--color-warning-bg);color:var(--color-warning)}.danger-zone{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;border-color:var(--color-danger-bg);background:#fff}.mobile-card-list{display:none;gap:12px}.mobile-card-list.always-visible{display:grid}.mobile-row-card{display:grid;gap:9px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:14px;transition:background-color var(--motion-quick),border-color var(--motion-quick),box-shadow var(--motion-medium),transform var(--motion-medium)}.mobile-row-card:hover{border-color:var(--color-border-strong);background:var(--color-bg);transform:translateY(-2px)}.mobile-row-card.attendance-row.weekend{background:#fbfbf8}.mobile-row-card.attendance-row.holiday{border-color:#f7d18d;background:#fffaf0}.mobile-row-card.attendance-row.poya{border-color:#d8c8f5;background:#fcf9ff}@container (min-width: 520px){.mobile-row-card{grid-template-columns:minmax(0,1fr) auto;align-items:center}.mobile-row-card .button-row,.mobile-row-card>button{justify-self:end}}.mobile-row-card span{color:var(--color-text-muted)}.mobile-card-actions{display:flex;justify-content:flex-start}.selected-run-card{border-color:var(--color-accent);background:var(--color-accent-soft);box-shadow:0 0 0 3px #fcb04329}.interactive-card{width:100%;color:inherit;text-align:left}.interactive-card:hover,.interactive-card:focus-visible{border-color:var(--color-border-strong);background:var(--color-bg);outline:none}.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.report-card{display:grid;gap:10px;border:1px solid var(--color-border);border-radius:var(--radius-card);padding:16px}.report-card button,.report-link-list button{display:inline-flex;min-height:var(--control-height);align-items:center;justify-content:center;border:0;border-radius:var(--radius);background:var(--color-accent);color:var(--color-ink);font-weight:600;padding:10px 14px}.report-download-details summary{cursor:pointer;color:var(--color-ink);font-weight:600}.report-link-list{display:grid;max-height:220px;gap:8px;overflow:auto;padding-top:10px;scroll-behavior:smooth}.report-link-list input{min-height:40px}.report-link-list a{display:flex;min-height:42px;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--color-border);border-radius:var(--radius);padding:8px 10px;text-decoration:none}.report-link-list a:hover,.report-link-list a:focus-visible{border-color:var(--color-border-strong);background:var(--color-bg);outline:none}.report-link-list small{color:var(--color-text-muted);font-weight:600}.issue-list{display:grid;gap:10px;margin-top:14px}.issue-row{display:flex;min-height:44px;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--color-warning-bg);border-radius:var(--radius);background:var(--color-warning-bg);padding:10px 12px}.issue-row span{color:var(--color-warning)}.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.checkbox-label{display:flex;min-height:44px;align-items:center;gap:10px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);padding:10px 12px}.checkbox-label input{width:18px;min-height:18px;flex:0 0 auto}.bottom-nav{display:none}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes popover-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.content-area{padding:20px 16px 92px}.app-topbar{margin-bottom:20px}.metric-grid,.form-grid,.filter-grid,.adjustment-groups,.import-panel,.danger-zone,.two-column,.report-grid,.detail-section-grid,.loan-guidance-grid,.check-grid{grid-template-columns:1fr 1fr}.table-toolbar,.adjustment-panel>.table-toolbar{grid-template-columns:1fr}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:10;display:flex;gap:6px;overflow-x:auto;border-top:1px solid var(--color-border);background:#fffffff5;padding:8px;scrollbar-width:none}.bottom-nav button{flex:0 0 82px;justify-content:center;gap:4px;padding:8px 4px}.bottom-nav::-webkit-scrollbar{display:none}.bottom-nav span{font-size:.7rem}}@media(max-width:640px){.login-shell{align-items:stretch;padding:14px}.login-card{align-self:center;padding:22px}.screen-header,.app-topbar{align-items:stretch;flex-direction:column}.topbar-actions{justify-content:space-between}.topbar-user-menu{flex:1}.topbar-user-button{flex:1;width:100%}select,option{background-color:var(--color-surface);color:var(--color-ink)}select:focus{border-color:var(--color-border-strong);box-shadow:0 0 0 3px #14151a14}.screen-actions{justify-content:stretch;min-width:0}.screen-actions>*,.screen-actions button,.screen-actions select{width:100%}.screen-header h1,.login-card h1{font-size:2rem}.metric-grid,.form-grid,.filter-grid,.adjustment-grid,.import-panel,.danger-zone,.two-column,.report-grid,.detail-section-grid,.loan-guidance-grid,.check-grid{grid-template-columns:1fr}.issue-row,.detail-header,.detail-section dl div{align-items:flex-start;flex-direction:column}.detail-section dd{text-align:left}.panel{padding:16px}.primary-button,.ghost-button,.danger-button,.danger-ghost-button,.button-row>button,.form-grid>button,.import-panel>button{width:100%}.desktop-table-wrap{display:none}.mobile-card-list{display:grid}.period-select{width:100%}.period-control{justify-items:stretch}.employee-search-picker{justify-self:stretch}.period-control small{text-align:left}.pagination-row{align-items:stretch;flex-direction:column}.bottom-nav span{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
