@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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) 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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-Bnh6xcKr.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-Ch-K9LVU.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-BD2oGHtS.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{--font: "Plus Jakarta Sans Variable", "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--ink: #0d1424;--ink-2: #283246;--muted: #5b6577;--faint: #8a93a3;--line: #e4e8ef;--line-2: #eef1f5;--bg: #f3f5f9;--surface: #ffffff;--surface-2: #f8f9fb;--brand: #1d4ed8;--brand-ink: #ffffff;--brand-soft: color-mix(in srgb, var(--brand) 10%, #ffffff);--brand-line: color-mix(in srgb, var(--brand) 26%, #ffffff);--brand-deep: color-mix(in srgb, var(--brand) 82%, #000000);--ok: #0f8a5f;--ok-soft: #e3f5ed;--warn: #b45309;--warn-soft: #fdf1df;--bad: #c62828;--bad-soft: #fde8e8;--info: #1f6feb;--info-soft: #e5efff;--violet: #6d3fd1;--violet-soft: #efe8fd;--nav: #0d1424;--nav-2: #161f33;--nav-text: #b9c2d3;--r-sm: 8px;--r: 12px;--r-lg: 16px;--r-xl: 22px;--shadow-1: 0 1px 2px rgba(13, 20, 36, .05);--shadow-2: 0 1px 2px rgba(13, 20, 36, .04), 0 6px 18px -6px rgba(13, 20, 36, .12);--shadow-3: 0 18px 50px -12px rgba(13, 20, 36, .35);--sidebar-w: 260px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:15px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.015em}p{margin:0}.num,.tabular{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}.xsmall{font-size:12px}.strong{font-weight:650}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}.stack{display:flex;flex-direction:column;gap:16px}.stack-sm{display:flex;flex-direction:column;gap:8px}.stack-lg{display:flex;flex-direction:column;gap:24px}.row{display:flex;align-items:center;gap:12px}.row-sm{display:flex;align-items:center;gap:6px}.row-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1 1 auto;min-width:0}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}@media (max-width: 1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 860px){.grid-3{grid-template-columns:1fr}}@media (max-width: 720px){.grid-2{grid-template-columns:1fr}}@media (max-width: 520px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}.btn{--h: 40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h);padding:0 16px;border-radius:10px;border:1px solid transparent;font-weight:600;font-size:14px;letter-spacing:-.005em;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .05s}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:17px;height:17px;flex:none}.btn-primary{background:var(--brand);color:var(--brand-ink);box-shadow:0 1px 2px #0d14241f,inset 0 1px #ffffff1f}.btn-primary:hover:not(:disabled){background:var(--brand-deep)}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover:not(:disabled){background:#1e2840}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow-1)}.btn-secondary:hover:not(:disabled){border-color:#cfd6e1;background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--line-2)}.btn-danger{background:var(--bad);color:#fff}.btn-danger:hover:not(:disabled){background:#a51f1f}.btn-soft-danger{background:var(--bad-soft);color:var(--bad)}.btn-soft-danger:hover:not(:disabled){background:#fbd5d5}.btn-soft-ok{background:var(--ok-soft);color:var(--ok)}.btn-soft-ok:hover:not(:disabled){background:#cdeedf}.btn-sm{--h: 32px;padding:0 11px;font-size:13px;border-radius:8px}.btn-sm svg{width:15px;height:15px}.btn-lg{--h: 52px;padding:0 22px;font-size:16px;border-radius:14px}.btn-lg svg{width:20px;height:20px}.btn-block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--ink-2);cursor:pointer;position:relative}.icon-btn:hover{background:var(--line-2)}.icon-btn svg{width:19px;height:19px}.icon-btn .dot{position:absolute;top:5px;right:5px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;border:2px solid var(--surface)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.card-pad{padding:20px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-2)}.card-head h2,.card-head h3{font-size:15px;font-weight:700}.card-body{padding:20px}.card-foot{padding:14px 20px;border-top:1px solid var(--line-2);background:var(--surface-2);border-radius:0 0 var(--r-lg) var(--r-lg)}@media (max-width: 520px){.card-pad,.card-body{padding:16px}.card-head{padding:14px 16px}}.stat{padding:18px 18px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.stat-label{font-size:13px;color:var(--muted);font-weight:550}.stat-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}.stat-icon svg{width:18px;height:18px}.stat-value{font-size:30px;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}.stat-sub{font-size:12.5px;color:var(--muted)}.tone-brand{background:var(--brand-soft);color:var(--brand)}.tone-ok{background:var(--ok-soft);color:var(--ok)}.tone-warn{background:var(--warn-soft);color:var(--warn)}.tone-bad{background:var(--bad-soft);color:var(--bad)}.tone-info{background:var(--info-soft);color:var(--info)}.tone-violet{background:var(--violet-soft);color:var(--violet)}.tone-neutral{background:var(--line-2);color:var(--ink-2)}@media (max-width: 520px){.stat{padding:14px}.stat-value{font-size:24px}}.badge{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:99px;font-size:12px;font-weight:650;white-space:nowrap}.badge svg{width:13px;height:13px}.badge-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.label{font-size:13px;font-weight:600;color:var(--ink-2)}.field .hint{font-size:12px;color:var(--muted)}.field .error{font-size:12.5px;color:var(--bad)}.input,.select,.textarea{width:100%;height:42px;padding:0 12px;border:1px solid #d6dce6;border-radius:10px;background:var(--surface);transition:border-color .15s,box-shadow .15s;font-size:14.5px}.textarea{height:auto;min-height:96px;padding:10px 12px;resize:vertical;line-height:1.5}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%235b6577' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.input:hover,.select:hover,.textarea:hover{border-color:#c3cbd8}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input::placeholder,.textarea::placeholder{color:#9aa3b2}.input-icon{position:relative}.input-icon>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--faint);pointer-events:none}.input-icon>.input{padding-left:38px}.input-icon>.input-action{position:absolute;right:4px;top:50%;transform:translateY(-50%)}.check{display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-size:14px}.check input{width:18px;height:18px;accent-color:var(--brand)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.form-grid .full{grid-column:1 / -1}@media (max-width: 600px){.form-grid{grid-template-columns:1fr}}.input[type=time],.input[type=date],.input[type=month]{font-variant-numeric:tabular-nums}.color-input{width:42px;height:42px;padding:3px;border:1px solid #d6dce6;border-radius:10px;background:var(--surface);cursor:pointer}.days{display:flex;gap:6px;flex-wrap:wrap}.day-chip{width:44px;height:38px;border-radius:10px;border:1px solid #d6dce6;background:var(--surface);font-weight:650;font-size:13px;cursor:pointer;color:var(--muted)}.day-chip[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.segmented{display:inline-flex;padding:3px;background:var(--line-2);border-radius:11px;gap:2px;flex-wrap:wrap}.segmented button{height:32px;padding:0 13px;border:0;background:transparent;border-radius:8px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.segmented .count{font-size:11px;background:var(--line);border-radius:99px;padding:1px 6px}.segmented button[aria-pressed=true] .count{background:var(--brand-soft);color:var(--brand)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.table th{text-align:left;font-size:12px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:10px 16px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:12px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:#fafbfd}.table .actions{text-align:right;white-space:nowrap}.table td.num,.table th.num{text-align:right}.cell-person{display:flex;align-items:center;gap:10px;min-width:0}.cell-person .who{min-width:0}.cell-person .name{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell-person .sub{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line-2)}.list-item:last-child{border-bottom:0}@media (max-width: 520px){.list-item{padding:12px 16px}}.show-mobile{display:none!important}@media (max-width: 760px){.hide-mobile{display:none!important}.show-mobile{display:initial!important}}.avatar{--s: 36px;width:var(--s);height:var(--s);border-radius:50%;flex:none;display:grid;place-items:center;font-weight:700;font-size:calc(var(--s) * .36);background:var(--brand-soft);color:var(--brand);overflow:hidden;letter-spacing:0}.avatar img{width:100%;height:100%;object-fit:cover}.logo{--s: 40px;width:var(--s);height:var(--s);border-radius:calc(var(--s) * .26);flex:none;display:grid;place-items:center;overflow:hidden;background:var(--c, var(--brand));color:#fff;font-weight:800;font-size:calc(var(--s) * .36);letter-spacing:-.02em;box-shadow:inset 0 0 0 1px #0d142414}.logo img{width:100%;height:100%;object-fit:cover}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:48px 24px;color:var(--muted)}.empty-icon{width:52px;height:52px;border-radius:16px;background:var(--line-2);color:var(--faint);display:grid;place-items:center}.empty-icon svg{width:24px;height:24px}.empty h3{font-size:15px;color:var(--ink)}.spinner{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--brand);animation:spin .7s linear infinite}.spinner-sm{width:16px;height:16px;border-width:2px}.btn .spinner{border-color:#ffffff59;border-top-color:currentColor;width:16px;height:16px;border-width:2px}.btn-secondary .spinner,.btn-ghost .spinner{border-color:var(--line);border-top-color:var(--ink)}.loading-block{display:grid;place-items:center;padding:56px 0}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--line-2),#f7f8fa,var(--line-2));background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px}@keyframes shimmer{to{background-position:-200% 0}}.notice{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:12px;font-size:14px;border:1px solid transparent}.notice svg{width:18px;height:18px;flex:none;margin-top:1px}.notice-info{background:var(--info-soft);color:#174ea6}.notice-warn{background:var(--warn-soft);color:#8a4207}.notice-bad{background:var(--bad-soft);color:#9b1c1c}.notice-ok{background:var(--ok-soft);color:#0b6b4a}.notice-neutral{background:var(--surface-2);border-color:var(--line);color:var(--ink-2)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0d142480;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .15s ease-out;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:100%;max-width:520px;max-height:calc(100dvh - 40px);overflow:auto;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-3);animation:pop .18s ease-out;display:flex;flex-direction:column}.modal-lg{max-width:760px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 6px}.modal-head h2{font-size:18px;font-weight:750}.modal-head p{color:var(--muted);font-size:14px;margin-top:4px}.modal-body{padding:14px 22px 6px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px 20px;flex-wrap:wrap}@media (max-width: 560px){.overlay{align-items:flex-end;padding:0}.modal{max-width:none;border-radius:22px 22px 0 0;max-height:92dvh;animation:sheet .22s ease-out}.modal-foot .btn{flex:1 1 auto}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}@keyframes sheet{0%{transform:translateY(40px);opacity:.4}}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0d142459;animation:fade .15s}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);z-index:56;background:var(--surface);box-shadow:var(--shadow-3);display:flex;flex-direction:column;animation:slide .2s ease-out}@keyframes slide{0%{transform:translate(30px);opacity:.5}}.toasts{position:fixed;z-index:80;left:50%;transform:translate(-50%);bottom:22px;display:flex;flex-direction:column;gap:8px;width:min(440px,calc(100vw - 24px));pointer-events:none}.toast{pointer-events:auto;display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:var(--ink);color:#fff;box-shadow:var(--shadow-3);font-size:14px;animation:pop .2s ease-out}.toast svg{width:18px;height:18px;flex:none;margin-top:1px}.toast.ok svg{color:#5ee0a8}.toast.bad svg{color:#ff8a8a}.toast.warn svg{color:#ffc46b}@media (max-width: 760px){.toasts{bottom:86px}}.auth{min-height:100%;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);background:var(--surface)}.auth-side{position:relative;overflow:hidden;color:#fff;padding:44px 52px;background:radial-gradient(1200px 600px at -10% -10%,#24345c 0%,transparent 60%),radial-gradient(800px 500px at 110% 110%,#1b2d55 0%,transparent 55%),var(--nav);display:flex;flex-direction:column;justify-content:space-between;gap:40px}.auth-side:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 30% 40%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 30% 40%,#000 20%,transparent 75%)}.auth-brand{display:flex;align-items:center;gap:12px;font-weight:750;font-size:17px;position:relative;z-index:1}.auth-mark{width:40px;height:40px;border-radius:12px;background:#fff;color:var(--nav);display:grid;place-items:center}.auth-mark svg{width:22px;height:22px}.auth-hero{position:relative;z-index:1;max-width:460px}.auth-hero h1{font-size:40px;font-weight:780;letter-spacing:-.035em;line-height:1.08}.auth-hero p{color:#b9c2d3;font-size:16px;margin-top:16px;max-width:400px}.auth-points{position:relative;z-index:1;display:grid;gap:14px;max-width:420px}.auth-point{display:flex;gap:12px;align-items:flex-start;color:#d5dbe6;font-size:14px}.auth-point svg{width:18px;height:18px;color:#8fb0ff;flex:none;margin-top:2px}.auth-companies{position:relative;z-index:1;display:flex;align-items:center;gap:10px;color:#8d97aa;font-size:13px}.auth-companies .logos{display:flex}.auth-companies .logo{--s: 30px;border:2px solid var(--nav);margin-left:-8px}.auth-companies .logo:first-child{margin-left:0}.auth-main{display:flex;align-items:center;justify-content:center;padding:40px 24px}.auth-form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:22px}.auth-form h2{font-size:26px;font-weight:760;letter-spacing:-.03em}.auth-form .lead{color:var(--muted);margin-top:6px}.auth-mobile-brand{display:none}@media (max-width: 920px){.auth{grid-template-columns:1fr}.auth-side{display:none}.auth-mobile-brand{display:flex;align-items:center;gap:10px;font-weight:750}.auth-mobile-brand .auth-mark{background:var(--nav);color:#fff;width:36px;height:36px}}.admin{min-height:100%;display:flex;flex-direction:column}.tabsbar{position:sticky;top:0;z-index:30;background:var(--nav);color:var(--nav-text);display:flex;align-items:stretch;gap:6px;padding:8px 10px 0;min-height:52px}.tabsbar-brand{display:flex;align-items:center;gap:10px;padding:0 12px 8px 6px;color:#fff;font-weight:750;font-size:14px;flex:none}.tabsbar-brand .auth-mark{width:30px;height:30px;border-radius:9px}.tabsbar-brand .auth-mark svg{width:17px;height:17px}.tabs-scroll{display:flex;align-items:flex-end;gap:4px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto;min-width:0}.tabs-scroll::-webkit-scrollbar{display:none}.ctab{display:flex;align-items:center;gap:9px;height:44px;padding:0 14px 0 9px;flex:none;border-radius:12px 12px 0 0;color:var(--nav-text);font-weight:600;font-size:13.5px;text-decoration:none!important;position:relative;max-width:240px;border:1px solid transparent;border-bottom:0}.ctab:hover{background:var(--nav-2);color:#fff}.ctab .logo{--s: 26px;border-radius:7px}.ctab .ctab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctab .ctab-badge{font-size:11px;font-weight:700;padding:1px 6px;border-radius:99px;background:#e5484d;color:#fff}.ctab.overview .ctab-ic{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;background:#ffffff14}.ctab.overview svg{width:15px;height:15px}.ctab[aria-current=page]{background:var(--bg);color:var(--ink)}.ctab[aria-current=page]:before{content:"";position:absolute;left:10px;right:10px;top:0;height:3px;border-radius:0 0 3px 3px;background:var(--c, var(--brand))}.ctab.inactive .ctab-name{text-decoration:line-through;opacity:.7}.ctab-add{flex:none;align-self:center;margin-bottom:8px;color:var(--nav-text);border-color:transparent}.ctab-add:hover{background:var(--nav-2);color:#fff}.tabsbar-user{display:flex;align-items:center;gap:8px;padding-bottom:8px;flex:none}.tabsbar-user .icon-btn{color:var(--nav-text)}.tabsbar-user .icon-btn:hover{background:var(--nav-2);color:#fff}.workspace{flex:1 1 auto;display:flex;min-height:0}.sidebar{width:var(--sidebar-w);flex:none;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:52px;height:calc(100dvh - 52px)}.sidebar.solo{top:0;height:100dvh}.side-company{padding:18px 16px 14px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line-2)}.side-company .logo{--s: 44px}.side-company .name{font-weight:750;font-size:15px;line-height:1.25}.side-company .code{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.04em}.side-nav{flex:1 1 auto;overflow-y:auto;padding:12px 10px;display:flex;flex-direction:column;gap:2px}.side-section{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.08em;padding:14px 10px 6px}.side-link{display:flex;align-items:center;gap:11px;height:40px;padding:0 10px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:14px;text-decoration:none!important}.side-link svg{width:18px;height:18px;color:var(--faint);flex:none}.side-link:hover{background:var(--line-2)}.side-link.active{background:var(--brand-soft);color:var(--brand-deep)}.side-link.active svg{color:var(--brand)}.side-link .count{margin-left:auto;font-size:11.5px;font-weight:700;min-width:22px;height:20px;padding:0 6px;border-radius:99px;background:var(--warn-soft);color:var(--warn);display:grid;place-items:center}.side-foot{border-top:1px solid var(--line-2);padding:12px;display:flex;align-items:center;gap:10px}.side-foot .who{min-width:0;flex:1}.side-foot .who .n{font-weight:650;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-foot .who .r{font-size:12px;color:var(--muted)}.main{flex:1 1 auto;min-width:0;padding:28px 32px 56px}.main-inner{max-width:1240px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:26px;font-weight:760;letter-spacing:-.03em}.page-head .sub{color:var(--muted);margin-top:5px;font-size:14.5px}.eyebrow{font-size:12px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.mobile-top{display:none}@media (max-width: 1000px){.sidebar{position:fixed;left:0;top:0;height:100dvh;z-index:50;transform:translate(-100%);transition:transform .2s;box-shadow:var(--shadow-3)}.sidebar.open{transform:none}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#0d142466}.main{padding:18px 16px 48px}.mobile-top{display:flex;align-items:center;gap:10px;margin-bottom:16px}.mobile-top .logo{--s: 32px}.tabsbar-brand span{display:none}}.companies{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.company-card{position:relative;display:flex;flex-direction:column;gap:18px;padding:20px;color:var(--ink);text-decoration:none!important;transition:border-color .15s,box-shadow .15s,transform .15s;overflow:hidden}.company-card:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--c)}.company-card:hover{border-color:color-mix(in srgb,var(--c) 40%,var(--line));box-shadow:var(--shadow-2);transform:translateY(-1px)}.company-card .head{display:flex;align-items:center;gap:14px}.company-card .logo{--s: 52px}.company-card h3{font-size:17px;font-weight:750}.company-card .meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.company-card .meta div{background:var(--surface-2);border:1px solid var(--line-2);border-radius:12px;padding:10px 12px}.company-card .meta b{display:block;font-size:20px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.company-card .meta span{font-size:12px;color:var(--muted)}.company-card .foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted)}.company-card.inactive{opacity:.7}.progress{height:6px;border-radius:99px;background:var(--line-2);overflow:hidden}.progress>span{display:block;height:100%;border-radius:inherit;background:var(--c, var(--brand))}.add-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:220px;border:1.5px dashed #c9d1dd;border-radius:var(--r-lg);background:transparent;color:var(--muted);cursor:pointer;font-weight:650}.add-card:hover{border-color:var(--ink-2);color:var(--ink);background:var(--surface)}.add-card .plus{width:48px;height:48px;border-radius:14px;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center}.split{display:flex;height:10px;border-radius:99px;overflow:hidden;background:var(--line-2)}.split span{display:block;height:100%}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;vertical-align:middle}.bars{display:flex;align-items:flex-end;gap:6px;height:140px;padding-top:8px}.bars .bar{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end;min-width:0}.bars .bar .col{width:100%;max-width:30px;border-radius:6px 6px 3px 3px;background:var(--brand);min-height:3px;position:relative}.bars .bar .col.late{background:var(--warn)}.bars .bar .lbl{font-size:11px;color:var(--faint);font-weight:600}.bars .bar.today .lbl{color:var(--ink)}.qr-stage{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px}@media (max-width: 980px){.qr-stage{grid-template-columns:1fr}}.qr-box{display:flex;flex-direction:column;align-items:center;gap:16px;padding:28px;text-align:center}.qr-frame{padding:18px;background:#fff;border-radius:22px;border:1px solid var(--line);box-shadow:var(--shadow-2)}.qr-frame canvas,.qr-frame img{width:min(340px,70vw);height:auto;display:block}.kiosk{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,2.4vh,26px);padding:24px;background:radial-gradient(900px 500px at 50% -10%,color-mix(in srgb,var(--brand) 30%,var(--nav)) 0%,var(--nav) 65%);color:#fff;text-align:center}.kiosk .logo{--s: clamp(56px, 9vh, 88px);border-radius:22px}.kiosk h1{font-size:clamp(26px,4vw,44px);font-weight:780;letter-spacing:-.03em}.kiosk .clock{font-size:clamp(40px,min(9vw,9vh),96px);font-weight:760;letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1}.kiosk .qr-frame{border:0;padding:22px;border-radius:28px}.kiosk .qr-frame canvas{width:min(440px,80vw,50dvh)}.kiosk .hint{color:#b9c2d3;font-size:16px}.emp{min-height:100%;display:flex;flex-direction:column}.emp-top{position:sticky;top:0;z-index:30;background:#ffffffe6;-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.emp-top-inner{max-width:1080px;margin:0 auto;height:62px;padding:0 16px;display:flex;align-items:center;gap:12px}.emp-company{display:flex;align-items:center;gap:10px;min-width:0}.emp-company .logo{--s: 36px}.emp-company .n{font-weight:750;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emp-company .s{font-size:12px;color:var(--muted)}.emp-nav{display:flex;gap:4px;margin-left:18px}.emp-nav a{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 12px;border-radius:10px;color:var(--muted);font-weight:600;font-size:14px;text-decoration:none!important}.emp-nav a:hover{background:var(--line-2);color:var(--ink)}.emp-nav a.active{background:var(--brand-soft);color:var(--brand-deep)}.emp-nav svg{width:17px;height:17px}.emp-main{flex:1 1 auto;width:100%;max-width:1080px;margin:0 auto;padding:22px 16px 40px}.emp-bottom{display:none}@media (max-width: 760px){.emp-nav{display:none}.emp-main{padding:16px 14px 100px}.emp-bottom{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fffffff5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}.emp-bottom a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;border-radius:12px;color:var(--faint);font-size:11px;font-weight:650;text-decoration:none!important}.emp-bottom a svg{width:22px;height:22px}.emp-bottom a.active{color:var(--brand)}}.punch{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px;align-items:start}@media (max-width: 900px){.punch{grid-template-columns:minmax(0,1fr)}}.hero-clock{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:24px;color:#fff;background:radial-gradient(600px 300px at 100% 0%,color-mix(in srgb,var(--brand) 55%,transparent) 0%,transparent 70%),linear-gradient(160deg,var(--nav) 0%,#18233b 100%);box-shadow:var(--shadow-2)}.hero-clock .greet{font-size:15px;color:#c9d1de}.hero-clock .date{font-size:14px;color:#8d97aa;margin-top:2px;text-transform:capitalize}.hero-clock .time{font-size:clamp(46px,11vw,68px);font-weight:760;letter-spacing:-.045em;line-height:1;margin:18px 0 16px;font-variant-numeric:tabular-nums}.hero-clock .time small{font-size:.42em;color:#8d97aa;font-weight:650;letter-spacing:-.02em;margin-left:4px}.hero-status{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:99px;background:#ffffff1a;font-size:13.5px;font-weight:650}.hero-status i{width:8px;height:8px;border-radius:50%;background:var(--faint)}.hero-status.on i{background:#34d399;box-shadow:0 0 0 4px #34d39933}.hero-status.late i{background:#fbbf24;box-shadow:0 0 0 4px #fbbf2433}.hero-status.mission i{background:#60a5fa;box-shadow:0 0 0 4px #60a5fa33}.hero-status.done i{background:#c9d1de}.hero-actions{display:grid;gap:10px;margin-top:22px}.hero-actions .btn-lg{height:56px}.hero-actions .btn-primary{background:#fff;color:var(--nav);box-shadow:0 8px 24px -8px #0006}.hero-actions .btn-primary:hover:not(:disabled){background:#eef1f6}.hero-actions .sec{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.hero-actions .sec .btn{white-space:normal;line-height:1.15;padding:0 10px}.hero-actions .btn-glass{background:#ffffff14;color:#fff;border-color:#ffffff24}.hero-actions .btn-glass:hover:not(:disabled){background:#ffffff24}.day-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.day-cell{background:var(--surface-2);border:1px solid var(--line-2);border-radius:14px;padding:12px}.day-cell .k{font-size:12px;color:var(--muted);font-weight:600}.day-cell .v{font-size:20px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px}.timeline{display:flex;flex-direction:column}.tl-item{display:grid;grid-template-columns:54px 22px 1fr;gap:6px;align-items:start;min-height:46px}.tl-time{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;padding-top:1px;text-align:right}.tl-rail{position:relative;display:flex;justify-content:center;height:100%}.tl-rail:after{content:"";position:absolute;top:18px;bottom:-4px;width:2px;background:var(--line)}.tl-item:last-child .tl-rail:after{display:none}.tl-dot{width:12px;height:12px;border-radius:50%;margin-top:5px;background:var(--c, var(--brand));box-shadow:0 0 0 4px color-mix(in srgb,var(--c, var(--brand)) 16%,transparent);position:relative;z-index:1}.tl-dot.pending{background:var(--surface);border:2px dashed #c3cbd8;box-shadow:none}.tl-label{font-size:14px;font-weight:600;padding-bottom:14px}.tl-label .muted{font-weight:500;font-size:13px}.day-row{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line-2)}.day-row:last-child{border-bottom:0}.day-date{text-align:center;border-radius:12px;background:var(--surface-2);border:1px solid var(--line-2);padding:6px 0}.day-date b{display:block;font-size:19px;font-weight:750;line-height:1.1;font-variant-numeric:tabular-nums}.day-date span{font-size:11px;color:var(--muted);font-weight:650;text-transform:uppercase}.day-times{font-weight:650;font-variant-numeric:tabular-nums}@media (max-width: 520px){.day-row{grid-template-columns:50px minmax(0,1fr) auto;gap:10px;padding:12px 14px}.day-act .lbl{display:none}.day-act .btn{padding:0 9px}}.scanner{position:relative;aspect-ratio:1;width:100%;max-width:380px;margin:0 auto;border-radius:22px;overflow:hidden;background:#0b1020}.scanner video{width:100%;height:100%;object-fit:cover}.scanner .frame{position:absolute;top:16%;right:16%;bottom:16%;left:16%;border-radius:22px;pointer-events:none;box-shadow:0 0 0 999px #0b102073}.scanner .frame:before,.scanner .frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;border:3px solid #fff;mask:linear-gradient(#000 0 0) top left/34% 34% no-repeat,linear-gradient(#000 0 0) top right/34% 34% no-repeat,linear-gradient(#000 0 0) bottom left/34% 34% no-repeat,linear-gradient(#000 0 0) bottom right/34% 34% no-repeat}.scanner .laser{position:absolute;left:18%;right:18%;height:2px;top:20%;background:linear-gradient(90deg,transparent,#7dd3fc,transparent);animation:laser 2s ease-in-out infinite}@keyframes laser{50%{top:78%}}.scanner .msg{position:absolute;left:0;right:0;bottom:14px;text-align:center;color:#fff;font-size:13px;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.6)}.scan-result{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:10px 0 6px}.scan-result .big-icon{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;animation:pop .3s ease-out}.scan-result .big-icon svg{width:36px;height:36px}.scan-result .t{font-size:34px;font-weight:760;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.drop{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px dashed #c9d1dd;border-radius:12px;background:var(--surface-2);cursor:pointer;color:var(--muted);font-size:14px}.drop:hover{border-color:var(--brand);color:var(--ink)}.drop svg{width:20px;height:20px}.file-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 6px 0 10px;border-radius:8px;background:var(--line-2);font-size:13px;max-width:100%}.file-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-chip button{border:0;background:transparent;cursor:pointer;color:var(--muted);display:grid;place-items:center;padding:2px;border-radius:6px}.file-chip button:hover{background:var(--line)}.logo-up{display:flex;align-items:center;gap:16px}.logo-up .logo{--s: 76px;border-radius:20px}.print-only{display:none}@media print{@page{size:A4 landscape;margin:12mm}body{background:#fff;font-size:11px}.tabsbar,.sidebar,.no-print,.toasts,.mobile-top,.emp-top,.emp-bottom{display:none!important}.main{padding:0}.card{box-shadow:none;border-color:#ccc}.print-only{display:block}.table th,.table td{padding:5px 7px}.table-wrap{overflow:visible}}.signatures{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:28px}.signatures div{border-top:1px solid #999;padding-top:6px;font-size:12px;color:#444;min-height:70px}
