@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,d09GMgABAAAAAAaEABMAAAAADFgAAAYdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJpBmA/U1RBVIE4AFwvbBEICoJ8gkMLFAAwhCoBNgIkAyIEIAWGUAdiDAcbvgpRVHJOI/viwCYyfSFrJjFIG8raYpYj9+IeSF0s6zD+Lk/4OGrZHhHV+wvt2ffuWPwlA51lIICIosSVmyOKEs5Uzlx3NKeXIgn1ssCydUybDV0IHga+SszIyfrQe9bLTFNxjayzgs76hNsDoSYtRe32fiJ4gxBjrP8L+w//zzHjv7Yqyr9o2vOBDXhCo2jMtr4uwAK/gV1U0PxAq/EAD+yW9EoKOL1KLw8rHrFgCSgRTQRzBzpeXVhweEDlyfY8gIoOa2CQJzrTAHIIoitTMVV2dyFwpJ2iAEQTpSkhPitxD3YwuZHEagTcAhyKAcBmUyPdhTovJThOw6HYiaF2M/J7erdi2OUutor6ES6Ac88AvfZvKpb6fJoArohb524042j6Jij36NI7P8Pb7s721naN9gcTtcjXQP4l+8BKEzFVGMxxoHqlq8Ul4LGneFJBDFaOdKpLPcg8P14YSDwIcn75hdlyJLTBlZ4voL6tT46yC/njunXqpJ0/bSvmrH1o3kRlwZ+j0DBogkF3KbDRVBlbOc+fY5HVXwPoT9hfekPnyZMaEmenYLMSg5npqegFOsgXsBv1IoF9aIVfSCNHkk6+gIzILsiYuhWQCfUtZEpbkRntQxBZgw7MwFbMcRvwJrAnBlDqs7isLtL7pO84Xru1i7ah7tckH1Wreqq6K9u0amxU1bcff/s2Y1ni3rh2I8zHzqkm3PGvv3mzC6NDBz/UcOBIg+nm88rxN8MbdtypvHUL5o1c2zG0urYpRmW+VHZdiba6GXN/3v0B3i3nt4RBsbfAu8ftLqRcTIlZ4VYheFTAS5nXLS65VZrbuW3daF2Ze1ChyGXWZN6u9nUuH1LfyTERifZXEpIueMe28vF8FOoTnsONzw+1djo9P71lZGx1vM8mH/BhvSa2HDsRZ1+Ul+RmpnPOIaEuwWnZZdkgQWAAyCDDZ1wk+0sh7wseAAwA6UlHxbftCgYAAwKAgwIAEA7ACfHIRbV7J6dwF/ZzcRRmAjXUYKAGWAlDCCFmKnH+LJEQfHKEmVrfmKwSEab36AcubXQBoDYJV/aRV+funFD8wAXLSLYbwr9+DR+h/qZIKCfeqRG5ghHpdY0zcV2nuz5iJMhAFjaTDwOcoyKGG9JHrCfdp4cC+kCvUrxc7+bliIMiHj95sPIbUeWZEP/HLnN2tlr9EBeRiktHuWvErx98fRz1MuEvHO3FDRgtsSzL/P0hsDLK2n5/uHMOjvTst0HD6t+80ZN798j7j//kjqHxIOZDFPR/FxurFD6/HxGbB799RPHLx5F89MoBOub9jVuOWtmPH3o9H3r26DIuff+LqPLwff/xryDRmiAYmjxiK0GwS9XU+k8QpUrHsCTs4qH89Fv44ubWbQmOE51M7J8Pt8+h+NKt3zZpa2L9zZqcRlyEc4MaNGdfjQCxgIygn78ne4yAzcLWA3zAJ6RRGbijvHr1W+XN8ywrG0EoZSySb0/A9KsllI7Q/Pq8hLu76tfTy5cF4X8bQxTtYp2vr6/+1oI4AhgAlNYFryt62VaX9ktO6VsAeDLeWx6fff4vdV1ts7N6+gw9GCsQnqPB0QUttB9nEc7Aaf4XM0NQ90VJ+HV1rG04znGCmXcpPCA9+nxdMPgPlT7Dz83NMfZuMJaNeRqbc+tjd2QER/b0B44d7nv5Rif7VC8svYkx9SKWwb3YzN2M3cY8jSNLl+PYZqfjxNTxOLXVCmfmduDc0ty1kLbjeiGfIrDFJXWPTTMD5TKupR8cpZgJeXTofId8NoUj6E8XfAc2k4WPdbCberDYAp8Q7L5dUo8wE8cs9QINZYvwXKzvBS4v/n+fQZkGrrFysKEIuFBgjQpxiHH1XA+ZBI+C+oAoxhYKECc42rGOc8L4mYhsiThGfFjOcKmFubPpDgwnY1918Fwo8ouenDJxvGP96HFWJ28hiOy251oKjkcbGz2POMme8CTMThx6wqOPsFtPI6j6HhDyDTxFQYnL88FcXGAGHl3ZuueRbEuxbK6Hc84ZDvRrREtLzyjj8Xkd/uShR1b0sYd8Nh8/c8znxCnadxQcf2nFVWIyw1g+4StXav9j75s+CQAA) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2) format("woff2-variations");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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2) format("woff2-variations");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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2) format("woff2-variations");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{--clr-gold: #AD974F;--clr-primary: #7A6A35;--clr-primary-deep: #5E5229;--clr-primary-soft: #EFE7CE;--clr-accent: #2F8F6B;--clr-accent-soft: #DFF0E8;--clr-bg: #F5F1E8;--clr-surface: #FFFDF8;--clr-sidebar: #EFE8D6;--clr-text: #2A2A2A;--clr-muted: #635E54;--clr-border: #E4DECB;--clr-border-soft: #ECE6D6;--clr-danger: #B42318;--clr-danger-soft: #FBEAE7;--clr-warning: #A87B2E;--clr-warning-soft: #F7EDDA;--clr-tint: #F7F2E3;--radius-btn: 3px;--radius-card: 4px;--radius-input: 3px;--radius-pill: 4px;--radius-chip: 6px;--shadow-card: 0 1px 2px rgba(0, 0, 0, .03), 0 8px 24px rgba(122, 106, 53, .06);--shadow-lift: 0 4px 14px rgba(122, 106, 53, .16);--shadow-overlay: 0 12px 48px rgba(42, 42, 42, .18);--font: "Hanken Grotesk Variable", "Hanken Grotesk", system-ui, sans-serif;--spring: cubic-bezier(.34, 1.56, .64, 1);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-6: 24px;--s-8: 32px;--s-12: 48px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{font-family:var(--font);font-size:16px;line-height:1.55;color:var(--clr-text);background:var(--clr-bg);-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.2;margin:0;font-weight:700}h1{font-size:24px}h2{font-size:18px}h3{font-size:16px}p{margin:0}a{color:var(--clr-primary)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--clr-muted)}.small{font-size:14px}.tiny{font-size:12px}.break{overflow-wrap:anywhere;word-break:break-word}:focus-visible{outline:2px solid var(--clr-primary);outline-offset:2px;border-radius:2px}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.grow{flex:1 1 auto;min-width:0}.g1{gap:var(--s-1)}.g2{gap:var(--s-2)}.g3{gap:var(--s-3)}.g4{gap:var(--s-4)}.g6{gap:var(--s-6)}.g8{gap:var(--s-8)}.wrap{flex-wrap:wrap}.btn{font:inherit;font-weight:600;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:var(--radius-btn);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform .22s var(--spring),box-shadow .2s ease,background .15s ease;touch-action:manipulation}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-primary{background:var(--clr-primary);color:#fffdfa;border-bottom:2px solid var(--clr-primary-deep)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-lift)}.btn-primary:active:not(:disabled){transform:translateY(0);box-shadow:none}.btn-secondary{background:var(--clr-surface);color:var(--clr-text);border:1px solid var(--clr-border)}.btn-secondary:hover:not(:disabled){border-color:var(--clr-primary)}.btn-ghost{background:transparent;color:var(--clr-primary)}.btn-ghost:hover:not(:disabled){background:var(--clr-primary-soft)}.btn-danger{background:var(--clr-danger);color:#fff;border-bottom:2px solid #8E1B12}.btn-danger:hover:not(:disabled){transform:translateY(-1px)}.btn-sm{min-height:36px;padding:6px 12px;font-size:14px;border-radius:var(--radius-btn)}.btn-block{width:100%}@media (pointer: coarse){.btn-sm{min-height:44px;min-width:44px}}.card{background:var(--clr-surface);border:1px solid var(--clr-border-soft);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--s-6)}.card-tint{background:var(--clr-tint)}.card-pad-sm{padding:var(--s-4)}.chip{width:44px;height:44px;flex:0 0 44px;border-radius:var(--radius-chip);background:var(--clr-primary-soft);box-shadow:inset 0 1px #fffc,inset 0 -2px 4px #ad974f38;display:inline-flex;align-items:center;justify-content:center;color:var(--clr-primary)}.chip-green{background:var(--clr-accent-soft);color:var(--clr-accent)}.chip-warn{background:var(--clr-warning-soft);color:var(--clr-warning)}.chip-danger{background:var(--clr-danger-soft);color:var(--clr-danger)}.chip-lg{width:56px;height:56px;flex-basis:56px}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--radius-pill);font-size:13px;font-weight:600;white-space:nowrap}.pill-green{background:var(--clr-accent-soft);color:#1f6b4e}.pill-neutral{background:var(--clr-primary-soft);color:var(--clr-primary-deep)}.pill-warn{background:var(--clr-warning-soft);color:#7a5a20}.pill-danger{background:var(--clr-danger-soft);color:var(--clr-danger)}.pill-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.pill-dot.breathe{animation:breathe 2s ease-in-out infinite}@keyframes breathe{0%,to{opacity:1}50%{opacity:.35}}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field.grow{flex:1 1 140px}.field>label{font-size:14px;font-weight:600}.field>.hint{font-size:12px;color:var(--clr-muted)}.input,select.input,textarea.input{font:inherit;font-size:16px;min-height:44px;padding:10px 14px;border:1px solid var(--clr-border);border-radius:var(--radius-input);background:var(--clr-surface);color:var(--clr-text);width:100%;min-width:0}textarea.input{resize:vertical;min-height:88px}.input:focus{border-color:var(--clr-primary);outline:none;box-shadow:0 0 0 3px #ad974f40}.input[aria-invalid=true]{border-color:var(--clr-danger)}.field-error{font-size:13px;color:var(--clr-danger);font-weight:600}.table-wrap{overflow-x:auto;border:1px solid var(--clr-border-soft);border-radius:var(--radius-card);background:var(--clr-surface);scrollbar-width:thin}table.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--clr-muted);font-weight:700;padding:10px 14px;border-bottom:1px solid var(--clr-border);position:sticky;top:0;background:var(--clr-surface);z-index:1}.tbl td{padding:10px 14px;border-bottom:1px solid var(--clr-border-soft);height:44px;overflow-wrap:anywhere}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover{background:var(--clr-tint)}.tbl .r{text-align:right;font-variant-numeric:tabular-nums}.tbl td code{overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap}.skeleton{background:linear-gradient(90deg,var(--clr-border-soft) 25%,var(--clr-tint) 50%,var(--clr-border-soft) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:3px;color:transparent!important;-webkit-user-select:none;user-select:none}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;padding:var(--s-8) var(--s-4);color:var(--clr-muted);display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.error-box{background:var(--clr-danger-soft);color:var(--clr-danger);border-radius:var(--radius-input);padding:var(--s-3) var(--s-4);font-size:14px;font-weight:600;display:flex;align-items:center;gap:var(--s-3);justify-content:space-between}.toasts{position:fixed;bottom:calc(76px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:90;display:flex;flex-direction:column;gap:8px;width:min(420px,calc(100vw - 32px))}@media (min-width: 900px){.toasts{bottom:24px}}.toast{background:var(--clr-text);color:#fffdfa;border-radius:var(--radius-btn);padding:12px 16px;font-size:14px;font-weight:600;box-shadow:var(--shadow-overlay);display:flex;align-items:center;gap:10px;animation:toast-in .22s var(--spring)}.toast.err{background:var(--clr-danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2e2a2673;z-index:80;display:flex;align-items:flex-end;justify-content:center;padding:0}.sheet{background:var(--clr-surface);width:100%;max-height:88dvh;overflow-y:auto;border-radius:4px 4px 0 0;padding:var(--s-6);padding-bottom:calc(var(--s-6) + env(safe-area-inset-bottom));animation:sheet-in .26s var(--spring)}@media (min-width: 700px){.overlay{align-items:center;padding:var(--s-6)}.sheet{max-width:520px;border-radius:4px;padding-bottom:var(--s-6)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}}.logo-img{display:block;width:auto;max-width:100%;align-self:flex-start;flex:0 0 auto}.logo-login{height:56px;margin:0 auto;align-self:center}.logo-side{height:40px;margin:0 0 4px}.logo-kiosk{height:48px;margin-bottom:8px;align-self:center}.center-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--s-4)}.auth-card{width:min(400px,100%)}.app-shell{max-width:640px;margin:0 auto;padding:var(--s-4) var(--s-4) calc(84px + env(safe-area-inset-bottom))}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--clr-surface);border-top:1px solid var(--clr-border);display:flex;justify-content:space-around;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:64px;min-height:48px;justify-content:center;font-size:11px;font-weight:600;text-decoration:none;color:var(--clr-muted);border-radius:var(--radius-btn)}.bottom-nav a.active{color:var(--clr-primary-deep);background:var(--clr-primary-soft)}@media (min-width: 900px){.employee-wrap{display:flex;flex-direction:column;min-height:100dvh}.app-shell{max-width:720px;padding-bottom:var(--s-8);width:100%}.bottom-nav{order:-1;position:sticky;top:0;bottom:auto;border-top:none;border-bottom:1px solid var(--clr-border);justify-content:center;gap:var(--s-6);margin-bottom:var(--s-4)}}.admin-shell{display:flex;min-height:100dvh}.admin-side{width:240px;flex:0 0 240px;background:var(--clr-sidebar);padding:var(--s-6) var(--s-3);display:flex;flex-direction:column;gap:var(--s-1);position:sticky;top:0;height:100dvh;overflow-y:auto}.admin-side .brand{padding:0 var(--s-3) var(--s-4);display:flex;flex-direction:column;align-items:flex-start;gap:2px}.admin-side a{display:flex;align-items:center;gap:10px;padding:10px 14px;min-height:44px;border-radius:var(--radius-pill);color:var(--clr-text);text-decoration:none;font-weight:600;font-size:14.5px}.admin-side a.active{background:var(--clr-primary);color:#fffdfa}.admin-side a:not(.active):hover{background:#ad974f24}.admin-main{flex:1;min-width:0;padding:var(--s-6);max-width:1160px}.admin-topbar{display:none}@media (max-width: 899px){.admin-shell{flex-direction:column}.admin-side{display:none}.admin-topbar{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);padding-left:max(var(--s-4),env(safe-area-inset-left));padding-right:max(var(--s-4),env(safe-area-inset-right));background:var(--clr-sidebar);position:sticky;top:0;z-index:40}.admin-topbar-links{display:flex;gap:var(--s-2);overflow-x:auto;flex:1;min-width:0;scrollbar-width:none}.admin-topbar-links::-webkit-scrollbar{display:none}.admin-topbar-logout{flex:0 0 auto}.admin-topbar a{white-space:nowrap;gap:6px;padding:8px 14px;min-height:44px;display:inline-flex;align-items:center;border-radius:var(--radius-pill);text-decoration:none;color:var(--clr-text);font-weight:600;font-size:14px}.admin-topbar a.active{background:var(--clr-primary);color:#fffdfa}.admin-main{padding:var(--s-4)}}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--s-4)}.kpi{display:flex;gap:var(--s-4);align-items:center}.kpi .val{font-size:32px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}.kpi .lbl{font-size:13px;color:var(--clr-muted);font-weight:600}.kiosk{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--s-8) var(--s-6);background:radial-gradient(ellipse at 50% -10%,#FBF7EC 0%,var(--clr-bg) 60%);-webkit-user-select:none;user-select:none}.kiosk-clock{font-size:clamp(56px,12vw,96px);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.kiosk-date{font-size:18px;color:var(--clr-muted);font-weight:600}.stamp{width:min(64vw,280px);height:min(64vw,280px);border-radius:16px;border:none;cursor:pointer;font:inherit;background:var(--clr-primary-soft);box-shadow:inset 0 2px #ffffffe6,inset 0 -6px 12px #ad974f42,0 14px 34px #7a6a353d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--clr-primary-deep);transition:transform .22s var(--spring),box-shadow .22s var(--spring),background .3s ease}.stamp:active{transform:scale(.96)}.stamp.pressed{transform:scale(.94);box-shadow:inset 0 4px 14px #7a6a354d,0 4px 10px #7a6a3524}.stamp.result-in{background:var(--clr-accent-soft);color:#1f6b4e}.stamp.result-out{background:var(--clr-primary);color:#fffdfa}.stamp .stamp-title{font-size:26px;font-weight:800}.stamp .stamp-sub{font-size:15px;font-weight:600;max-width:80%;text-align:center}.stamp .stamp-time{font-size:40px;font-weight:800;font-variant-numeric:tabular-nums}.kiosk-footer{display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.kiosk-hint{color:var(--clr-muted);font-size:15px;font-weight:600;text-align:center}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
