@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2) format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-ext-400-normal-CiZNW1ec.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-ext-400-normal-DYBYyMQr.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2) format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-ext-500-normal-h0Fp6aX0.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-ext-500-normal-CK0UkkKf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2) format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-ext-600-normal-BNd8euf0.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-ext-600-normal-BeUwKxhG.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2) format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-ext-700-normal-C8_gqRu2.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-ext-700-normal-4Hjo2OtD.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2) format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--bg: #f3f5fa;--bg-glow-1: rgba(255, 196, 61, .16);--bg-glow-2: rgba(59, 91, 245, .1);--surface: #ffffff;--surface-2: #f7f8fc;--surface-3: #eef1f8;--text: #121a2b;--text-2: #3b465c;--muted: #6b7489;--border: #e3e7f0;--border-strong: #cdd4e2;--primary: #3b5bf5;--primary-2: #6a4bf5;--primary-hover: #2c49dc;--primary-soft: #eaeeff;--on-primary: #ffffff;--accent: #f5a800;--accent-soft: #fff4d6;--ring: rgba(59, 91, 245, .35);--danger: #d92d2d;--danger-soft: #fdecec;--ok: #138a4b;--ok-soft: #e3f6eb;--warn: #9a6200;--warn-soft: #fff5d8;--late: #c2410c;--late-soft: #ffedde;--info: #1d4ed8;--info-soft: #e8efff;--leave: #6d28d9;--leave-soft: #f0eaff;--topbar-1: #0c1c38;--topbar-2: #173566;--topbar-text: #c9d6ea;--radius: 14px;--radius-sm: 9px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06);--shadow-md: 0 6px 16px -4px rgba(16, 24, 40, .1), 0 2px 6px -2px rgba(16, 24, 40, .06);--shadow-lg: 0 24px 48px -12px rgba(16, 24, 40, .25);--ease: cubic-bezier(.22, 1, .36, 1);font-family:Be Vietnam Pro,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0b1120;--bg-glow-1: rgba(245, 168, 0, .08);--bg-glow-2: rgba(106, 75, 245, .12);--surface: #131b2e;--surface-2: #172036;--surface-3: #1d2842;--text: #e6ebf5;--text-2: #c2cbdd;--muted: #8d98b0;--border: #243151;--border-strong: #33436b;--primary: #6c86ff;--primary-2: #9a7bff;--primary-hover: #8198ff;--primary-soft: rgba(108, 134, 255, .16);--accent-soft: rgba(245, 168, 0, .16);--ring: rgba(108, 134, 255, .45);--danger: #ff6b6b;--danger-soft: rgba(255, 107, 107, .14);--ok: #3ddc8a;--ok-soft: rgba(61, 220, 138, .13);--warn: #f5c451;--warn-soft: rgba(245, 196, 81, .14);--late: #ff9c5b;--late-soft: rgba(255, 156, 91, .14);--info: #8fb0ff;--info-soft: rgba(143, 176, 255, .14);--leave: #c4a8ff;--leave-soft: rgba(196, 168, 255, .15);--topbar-1: #0a1428;--topbar-2: #111f3f;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 20px -6px rgba(0, 0, 0, .55);--shadow-lg: 0 24px 48px -12px rgba(0, 0, 0, .7)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0b1120;--bg-glow-1: rgba(245, 168, 0, .08);--bg-glow-2: rgba(106, 75, 245, .12);--surface: #131b2e;--surface-2: #172036;--surface-3: #1d2842;--text: #e6ebf5;--text-2: #c2cbdd;--muted: #8d98b0;--border: #243151;--border-strong: #33436b;--primary: #6c86ff;--primary-2: #9a7bff;--primary-hover: #8198ff;--primary-soft: rgba(108, 134, 255, .16);--accent-soft: rgba(245, 168, 0, .16);--ring: rgba(108, 134, 255, .45);--danger: #ff6b6b;--danger-soft: rgba(255, 107, 107, .14);--ok: #3ddc8a;--ok-soft: rgba(61, 220, 138, .13);--warn: #f5c451;--warn-soft: rgba(245, 196, 81, .14);--late: #ff9c5b;--late-soft: rgba(255, 156, 91, .14);--info: #8fb0ff;--info-soft: rgba(143, 176, 255, .14);--leave: #c4a8ff;--leave-soft: rgba(196, 168, 255, .15);--topbar-1: #0a1428;--topbar-2: #111f3f;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 20px -6px rgba(0, 0, 0, .55);--shadow-lg: 0 24px 48px -12px rgba(0, 0, 0, .7)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;background:radial-gradient(900px 500px at 100% -10%,var(--bg-glow-1),transparent 60%),radial-gradient(800px 500px at -10% 110%,var(--bg-glow-2),transparent 60%),var(--bg);background-attachment:fixed;transition:background-color .3s ease,color .3s ease}main{padding:20px 20px 40px;max-width:1600px;margin:0 auto}h1{font-size:22px;font-weight:700;letter-spacing:-.01em;margin:0}h3{margin:0 0 10px;font-size:16px;font-weight:600;letter-spacing:-.005em}h4{margin:16px 0 8px;font-weight:600}a{color:var(--primary)}::selection{background:var(--primary-soft)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;padding:10px 20px;padding-top:calc(10px + env(safe-area-inset-top,0px));background:linear-gradient(120deg,var(--topbar-1),var(--topbar-2));color:#fff;box-shadow:0 8px 24px -12px #08142d99}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent,#ffc43d,#f59e0b,transparent);opacity:.7}.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-text b{font-size:16px;letter-spacing:.01em}.brand-text small{font-size:11px;color:#ffcf5a;text-transform:uppercase;letter-spacing:.12em}.brand-logo .logo-petals{transform-origin:32px 32px;transition:transform .8s var(--ease)}.brand:hover .brand-logo .logo-petals{transform:rotate(60deg)}.main-nav{display:flex;gap:4px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent)}.main-nav::-webkit-scrollbar{display:none}.main-nav a{position:relative;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;color:var(--topbar-text);text-decoration:none;padding:8px 12px;border-radius:999px;font-weight:500;transition:background .2s ease,color .2s ease,transform .2s var(--ease)}.main-nav a svg{opacity:.85;transition:transform .3s var(--ease)}.main-nav a:hover{background:#ffffff17;color:#fff}.main-nav a:hover svg{transform:translateY(-1px) scale(1.08)}.main-nav a.active{background:#ffffff24;color:#fff;box-shadow:inset 0 0 0 1px #ffffff24}.main-nav a.active svg{color:#ffcf5a;opacity:1}.nav-badge{display:inline-block;min-width:19px;padding:0 6px;border-radius:999px;background:linear-gradient(135deg,#ff5a5a,#e11d48);color:#fff;font-size:11px;font-weight:700;line-height:19px;text-align:center;animation:pulse-ring 2.2s ease-out infinite}.topbar .user{display:flex;gap:8px;align-items:center;flex-shrink:0}.branch-switch{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;border-radius:999px;background:#ffffff1a;border:1px solid rgba(255,255,255,.16);color:#ffcf5a;transition:background .2s ease,border-color .2s ease}.branch-switch:hover{background:#ffffff29;border-color:#ffcf5a80}.branch-switch.single{padding:6px 12px;color:#fff;font-weight:600;font-size:13px}.branch-switch select{background:transparent;border:none;color:#fff;font-weight:600;padding:4px 22px 4px 2px;max-width:200px;cursor:pointer;box-shadow:none}.branch-switch select:focus{box-shadow:none}.branch-switch option{color:#121a2b}.me-link{display:flex;align-items:center;gap:9px;color:#fff;text-decoration:none;padding:4px 10px 4px 4px;border-radius:999px;transition:background .2s ease}.me-link:hover,.me-link.active{background:#ffffff1a}.avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-weight:700;font-size:13px;color:#3b2300;background:linear-gradient(135deg,#ffe07a,#f59e0b);box-shadow:0 0 0 2px #ffffff40}.me-text{display:flex;flex-direction:column;line-height:1.15}.me-text small{font-size:11px;color:var(--topbar-text)}.me-text b{font-size:13px;font-weight:600;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-text .me-role{color:#ffcf5a}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border-radius:50%;border:1px solid transparent;background:transparent;color:inherit;cursor:pointer;transition:background .2s ease,transform .15s ease}.topbar .icon-btn{color:var(--topbar-text)}.topbar .icon-btn:hover{background:#ffffff1f;color:#fff}.icon-btn:active{transform:scale(.92)}.theme-toggle svg{transition:transform .5s var(--ease)}.theme-toggle:hover svg{transform:rotate(40deg)}button{font:inherit;font-weight:500;padding:7px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,transform .12s ease,color .18s ease}button:hover:not(:disabled){border-color:var(--primary);color:var(--primary);box-shadow:var(--shadow-sm)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));border-color:transparent;color:var(--on-primary);box-shadow:0 6px 16px -6px var(--ring)}button.primary:hover:not(:disabled){color:var(--on-primary);filter:brightness(1.07);box-shadow:0 10px 22px -8px var(--ring)}button.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}label.button{display:inline-flex;align-items:center;gap:6px;font-weight:500;padding:7px 14px;cursor:pointer;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);transition:border-color .18s ease,color .18s ease}label.button:hover{border-color:var(--primary);color:var(--primary)}label.button.small{padding:4px 10px;font-size:13px}label.button.disabled{opacity:.5;pointer-events:none}button.link{border:none;background:none;color:var(--primary);padding:2px 6px;box-shadow:none}button.link:hover:not(:disabled){text-decoration:underline;box-shadow:none}button.small,.small{font-size:12px}button.small{padding:3px 9px}input,select,textarea{font:inherit;color:var(--text);padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);max-width:100%;transition:border-color .18s ease,box-shadow .18s ease}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border-strong))}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px var(--ring)}input[type=checkbox],input[type=radio]{accent-color:var(--primary)}textarea{width:100%;resize:vertical}.page{animation:fade-up .45s var(--ease) both}.page>section>*{animation:fade-up .5s var(--ease) both}.page>section>*:nth-child(2){animation-delay:.04s}.page>section>*:nth-child(3){animation-delay:.08s}.page>section>*:nth-child(4){animation-delay:.12s}.page>section>*:nth-child(5){animation-delay:.16s}.page>section>*:nth-child(n+6){animation-delay:.2s}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar h1{margin-right:8px}.toolbar h1:after{content:"";display:block;width:36px;height:3px;margin-top:6px;border-radius:3px;background:linear-gradient(90deg,var(--accent),#ffd84d)}.toolbar h3{margin:0;flex:1}.toolbar>a{color:var(--muted);text-decoration:none;font-weight:500}.toolbar>a:hover{color:var(--primary)}.range{font-weight:600;padding:0 4px}.segmented{display:inline-flex;padding:3px;gap:2px;border-radius:11px;background:var(--surface-3);border:1px solid var(--border)}.segmented button{border:none;border-radius:8px;background:transparent;padding:5px 12px;box-shadow:none}.segmented button:hover:not(:disabled){color:var(--text);background:var(--surface);box-shadow:none}.segmented button.active{background:var(--surface);color:var(--primary);font-weight:600;box-shadow:var(--shadow-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm);transition:box-shadow .25s ease,transform .25s var(--ease),border-color .25s ease}.card:hover{box-shadow:var(--shadow-md)}.day-grid .card:hover,.two-col .card:hover{transform:translateY(-2px)}.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.day-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;box-shadow:var(--shadow-sm)}table{border-collapse:separate;border-spacing:0;width:100%}th,td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{background:var(--surface-2);color:var(--text-2);font-weight:600;font-size:12.5px;white-space:nowrap;position:sticky;top:0;z-index:2}.table-wrap th{letter-spacing:.01em}tbody tr{transition:background .15s ease}tbody tr:hover{background:var(--surface-2)}tbody tr:last-child td{border-bottom:none}.card table th{background:transparent;position:static}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.center{text-align:center}.nowrap{white-space:nowrap}.strong{font-weight:700}tr.clickable{cursor:pointer}tr.clickable:hover,tr.selected{background:var(--primary-soft)}tr.selected td:first-child{box-shadow:inset 3px 0 0 var(--primary)}tr.inactive{opacity:.55}tr.me td{background:color-mix(in srgb,var(--primary-soft) 55%,transparent)}table.grid th,table.grid td{border-right:1px solid var(--border);text-align:center;min-width:52px}table.grid td.sticky,table.grid th.sticky{position:sticky;left:0;background:var(--surface);text-align:left;min-width:170px;z-index:3;box-shadow:1px 0 0 var(--border)}table.grid th.sticky{background:var(--surface-2);z-index:4}table.grid th.today{background:var(--primary-soft);color:var(--primary)}table.grid th.weekend,tr.weekend td:first-child{color:var(--danger)}table.grid tfoot td{background:var(--surface-2);font-size:12px}table.register td{min-width:150px}table.grid td:has(.chip){background-clip:padding-box}table.grid th.today{box-shadow:inset 0 -3px 0 var(--primary)}table.grid tbody td:nth-child(n+2){transition:background .15s ease}table.grid.month th,table.grid.month td{min-width:44px;padding:5px 3px}table.grid.month td.sticky,table.grid.month th.sticky{min-width:150px;padding:6px 10px}table.grid.month .chip{font-size:11px;padding:1px 5px;margin:1px 0;display:block;text-align:center}table.kv td:first-child{color:var(--muted);width:220px}.chip{display:inline-block;padding:2px 8px;margin:1px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid transparent;white-space:nowrap;transition:transform .15s ease,box-shadow .15s ease}.chip:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.chip small{font-weight:500;opacity:.85}.chip-pending{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent);border-style:dashed}.chip-approved,.chip-att-PENDING{background:var(--info-soft);color:var(--info)}.chip-att-OK{background:var(--ok-soft);color:var(--ok)}.chip-att-LATE,.chip-att-EARLY,.chip-att-LATE_EARLY{background:var(--late-soft);color:var(--late)}.chip-att-MISSING_IN,.chip-att-MISSING_OUT,.chip-att-ABSENT{background:var(--danger-soft);color:var(--danger)}.chip-leave{background:var(--leave-soft);color:var(--leave)}.chip-leave-pending{background:transparent;color:var(--leave);border-color:color-mix(in srgb,var(--leave) 45%,transparent);border-style:dashed}.legend{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-3);color:var(--text-2)}.badge-edited{background:#fff4d6;color:#92400e}.edited-note{margin-top:2px;font-weight:400}.att-OK{background:var(--ok-soft);color:var(--ok)}.att-LATE,.att-EARLY,.att-LATE_EARLY{background:var(--late-soft);color:var(--late)}.att-MISSING_IN,.att-MISSING_OUT,.att-ABSENT{background:var(--danger-soft);color:var(--danger)}.att-PENDING{background:var(--info-soft);color:var(--info)}.alert{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:12px;border:1px solid transparent;border-left-width:4px;animation:slide-in .35s var(--ease) both}.alert-error{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent);border-left-color:var(--danger)}.alert-ok{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 30%,transparent);border-left-color:var(--ok)}.alert-warn{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 30%,transparent);border-left-color:var(--warn)}.alert-info{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb,var(--info) 30%,transparent);border-left-color:var(--info)}.alert button.link{color:inherit;font-size:18px;line-height:1}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.form-row input:not([type]){flex:1;min-width:200px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:12px}.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:500;color:var(--text-2)}.form-grid label.check{flex-direction:row;align-items:center}.form-grid.single{grid-template-columns:1fr}.checks{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}label.check{display:inline-flex;gap:6px;align-items:center;cursor:pointer}label.check input{width:18px;height:18px}label.block{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:500;color:var(--text-2)}fieldset.plain-fieldset{border:0;padding:0;margin:0;min-width:0}ul.plain{list-style:none;padding:0;margin:0}ul.plain li{padding:5px 0;border-bottom:1px dashed var(--border)}ul.plain li:last-child{border-bottom:none}ul.punches{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:6px}ul.punches li{background:var(--surface-3);padding:4px 10px;border-radius:999px;font-variant-numeric:tabular-nums}ul.punches li.unscheduled{background:var(--warn-soft);color:var(--warn)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}.tabs button{position:relative;border:none;border-radius:8px 8px 0 0;background:none;padding:9px 16px;color:var(--muted);box-shadow:none}.tabs button:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:linear-gradient(90deg,var(--primary),var(--primary-2));transform:scaleX(0);transition:transform .3s var(--ease)}.tabs button:hover:not(:disabled){color:var(--text);background:var(--surface-2);box-shadow:none}.tabs button.active{color:var(--primary);font-weight:600}.tabs button.active:after{transform:scaleX(1)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px}.stat{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-sm);transition:transform .25s var(--ease),box-shadow .25s ease}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(180deg,var(--accent),var(--primary))}.stat:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.stat-value{font-size:28px;font-weight:700;line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums;background:linear-gradient(135deg,var(--text),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent}.stat-label{color:var(--muted);font-size:13px}.branch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}.branch-card{display:flex;flex-direction:column;gap:8px;margin-bottom:0;position:relative;overflow:hidden}.branch-card:hover{transform:translateY(-3px)}.branch-card.current{border-color:color-mix(in srgb,var(--primary) 55%,var(--border));box-shadow:0 0 0 3px var(--ring)}.branch-card.inactive{opacity:.6}.branch-card .form-row{margin-top:auto;padding-top:6px}.branch-card button svg{vertical-align:-2px}.branch-head{display:flex;align-items:center;gap:10px}.branch-head .badge{margin-left:auto}.branch-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex-shrink:0;background:linear-gradient(135deg,#ffe07a,#f59e0b);color:#5a2e0e}.branch-name{font-weight:700;font-size:15px}.branch-line{display:flex;align-items:center;gap:6px}.branch-error{overflow-wrap:anywhere}.branch-form h4{display:flex;align-items:center;gap:6px}.health{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:13px;padding:4px 10px;border-radius:999px;align-self:flex-start}.health .dot{width:9px;height:9px;border-radius:50%;background:currentColor}.health-ok{background:var(--ok-soft);color:var(--ok)}.health-ok .dot{animation:pulse-dot 2s ease-out infinite}.health-error{background:var(--danger-soft);color:var(--danger)}.health-stale{background:var(--warn-soft);color:var(--warn)}.health-off,.health-none{background:var(--surface-3);color:var(--muted)}.ok-text{color:var(--ok)}.spin{animation:spin .8s linear infinite}@keyframes pulse-dot{0%{box-shadow:0 0 color-mix(in srgb,var(--ok) 60%,transparent)}70%{box-shadow:0 0 0 7px transparent}to{box-shadow:0 0 0 0 transparent}}button svg{vertical-align:-2px}.avatar.has-photo{overflow:hidden;background:var(--surface-3)}.avatar.has-photo img,.avatar.has-photo .img-loading{width:100%;height:100%;object-fit:cover;display:block}.img-loading{display:inline-block;background:var(--surface-3);animation:pulse 1.2s ease-in-out infinite}.img-missing{display:inline-grid;place-items:center;color:var(--muted);background:var(--surface-2)}@keyframes pulse{50%{opacity:.5}}.avatar-editor{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.avatar-editor .form-row{margin-top:0}.thumbs{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.thumb{position:relative;width:56px;height:56px;border-radius:8px;overflow:hidden;flex-shrink:0;border:1px solid var(--border);background:var(--surface-2)}.thumb img,.thumb .img-loading,.thumb .img-missing{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.thumb .thumb-remove{position:absolute;top:2px;right:2px;padding:0 6px;font-size:13px;line-height:18px;background:#0009;color:#fff;border:none;border-radius:999px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#080c16db;display:grid;place-items:center;padding:16px;cursor:zoom-out;animation:fade-in .2s ease both}.lightbox img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:var(--shadow-md)}.branch-tag,.req-status-PENDING{background:var(--info-soft);color:var(--info)}.req-status-APPROVED{background:var(--ok-soft);color:var(--ok)}.req-status-REJECTED{background:var(--danger-soft);color:var(--danger)}.req-status-CANCELLED{background:var(--surface-3);color:var(--muted)}.muted{color:var(--muted)}.warn{color:var(--danger)}.center-box{max-width:480px;margin:80px auto;padding:28px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md)}.fatal{margin:40px auto;max-width:640px;padding:18px;border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent)}.page-loader{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);font-weight:500;animation:fade-in .4s ease both .1s}.spin-slow .logo-petals{transform-origin:32px 32px;animation:spin 3.5s linear infinite}.login-page{position:relative;min-height:100vh;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;background:linear-gradient(145deg,#0b1a36,#142c5a 45%,#2a2466)}.login-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55}.blob.b1{width:460px;height:460px;background:#f5a800;top:-140px;right:-100px;animation:float-a 16s ease-in-out infinite}.blob.b2{width:520px;height:520px;background:#5b5bf5;bottom:-200px;left:-160px;animation:float-b 19s ease-in-out infinite}.blob.b3{width:300px;height:300px;background:#ff7a59;top:40%;left:45%;opacity:.3;animation:float-a 22s ease-in-out infinite reverse}.login-theme{position:absolute;top:16px;right:16px;z-index:2;color:#dbe5f5}.login-theme .icon-btn:hover{background:#ffffff1f}.login-shell{position:relative;z-index:1;width:100%;max-width:960px;display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center}.login-hero{color:#fff;animation:fade-up .8s var(--ease) both}.login-hero h1{font-size:40px;font-weight:700;letter-spacing:-.03em;margin:18px 0 8px}.hero-sub{color:#c9d6ea;font-size:16px;margin:0 0 24px;max-width:420px}.hero-logo{filter:drop-shadow(0 10px 30px rgba(245,168,0,.45))}.hero-logo .logo-petals{transform-origin:32px 32px;animation:spin 40s linear infinite}.hero-points{list-style:none;padding:0;margin:0;display:grid;gap:12px}.hero-points li{display:flex;align-items:center;gap:12px;color:#e3ebf7;animation:fade-up .7s var(--ease) both}.hero-points li:nth-child(1){animation-delay:.15s}.hero-points li:nth-child(2){animation-delay:.25s}.hero-points li:nth-child(3){animation-delay:.35s}.hero-points li:nth-child(4){animation-delay:.45s}.hero-points svg{flex-shrink:0;padding:7px;width:32px;height:32px;border-radius:10px;color:#ffcf5a;background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.login-card{width:100%;max-width:420px;justify-self:center;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border:1px solid color-mix(in srgb,#fff 30%,transparent);border-radius:22px;padding:30px 28px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:16px;animation:pop-in .6s var(--ease) both .1s}.login-brand{display:flex;align-items:center;gap:12px}.login-logo .logo-petals{transform-origin:32px 32px;transition:transform 1s var(--ease)}.login-card:hover .login-logo .logo-petals{transform:rotate(90deg)}.login-hotel{font-size:22px;font-weight:700;letter-spacing:-.02em}.login-app{color:var(--muted);font-size:13px}.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:11px 14px;border:1px solid var(--border-strong);border-radius:12px;color:var(--text);text-decoration:none;font-weight:600;background:var(--surface);transition:transform .15s ease,box-shadow .2s ease,border-color .2s ease}.google-btn:hover{border-color:var(--primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.google-btn:active{transform:scale(.98)}.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--border-strong)}.login-form{display:flex;flex-direction:column;gap:14px}.login-form h3{margin:0;font-size:18px}.login-form label{display:flex;flex-direction:column;gap:6px;font-weight:500;font-size:13px;color:var(--text-2)}.input-icon{position:relative;display:flex;align-items:center}.input-icon>svg{position:absolute;left:12px;color:var(--muted);pointer-events:none;transition:color .2s ease}.input-icon:focus-within>svg{color:var(--primary)}.input-icon input{width:100%;padding:11px 42px 11px 40px;font-size:16px;border-radius:12px}.input-icon .eye{position:absolute;right:4px;width:34px;height:34px;color:var(--muted)}.input-icon .eye:hover{color:var(--primary);background:var(--surface-3)}.login-submit{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px;font-size:15px;font-weight:600;border-radius:12px}.login-hint{color:var(--muted);font-size:12.5px;margin:0}.login-privacy{position:relative;z-index:1;margin-top:24px;color:#9fb0cc;font-size:12px}.login-card .alert{margin:0}.btn-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite}.pw-meter{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);margin-top:-6px}.pw-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;flex:1}.pw-bars i{height:5px;border-radius:3px;background:var(--surface-3);transition:background .3s ease}.pw-meter.lvl-1 .pw-bars i:nth-child(-n+1){background:var(--danger)}.pw-meter.lvl-2 .pw-bars i:nth-child(-n+2){background:var(--late)}.pw-meter.lvl-3 .pw-bars i:nth-child(-n+3){background:var(--accent)}.pw-meter.lvl-4 .pw-bars i:nth-child(-n+4){background:var(--ok)}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-ring{0%{box-shadow:0 0 #ef44448c}70%{box-shadow:0 0 0 7px #ef444400}to{box-shadow:0 0 #ef444400}}@keyframes float-a{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-40px,50px) scale(1.08)}}@keyframes float-b{0%,to{transform:translate(0) scale(1)}50%{transform:translate(60px,-40px) scale(1.12)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media (max-width: 1560px){.topbar.many-nav{flex-wrap:wrap;row-gap:4px;padding-bottom:6px}.topbar.many-nav .user{margin-left:auto}.topbar.many-nav .main-nav{order:3;flex-basis:100%;-webkit-mask-image:none;mask-image:none;margin:0 -6px}}@media (max-width: 1180px){.me-text{display:none}.me-link{padding:2px}}@media (max-width: 860px){.login-shell{grid-template-columns:1fr;gap:24px}.login-hero{text-align:center}.login-hero h1{font-size:28px;margin-top:10px}.hero-sub{margin:0 auto}.hero-points,.hero-logo{display:none}}@media (max-width: 760px){.topbar{flex-wrap:wrap;gap:8px 12px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top,0px))}.brand-text small{display:none}.topbar .user{margin-left:auto}.main-nav{order:3;flex-basis:100%}.main-nav a{padding:7px 11px}}@media (max-width: 640px){main{padding:12px 10px 32px}h1{font-size:19px}.card{padding:14px}table.grid td.sticky,table.grid th.sticky{min-width:120px}.login-card{padding:24px 20px;border-radius:18px}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.nav-group{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}.nav-group input[type=month]{min-width:0}@media (max-width: 640px){.table-wrap td:not(.small),.table-scroll td:not(.small){white-space:nowrap}.form-row>button{flex:1 1 auto}}.login-theme{top:calc(16px + env(safe-area-inset-top,0px))}.login-page{padding-top:calc(32px + env(safe-area-inset-top,0px));padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}main{padding-bottom:calc(40px + env(safe-area-inset-bottom,0px))}@media (display-mode: standalone){body{overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}}
