[class*=" border"],[class*=" border-"],[class^=border-],[class~=border]{border-width:0;border-style:solid;border-color:var(--line)}.visible{visibility:visible}.invisible{visibility:hidden}.\!static{position:static!important}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-\[1\]{z-index:1}.mx-auto{margin-left:auto;margin-right:auto}.mb-8{margin-bottom:2rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.\!min-h-\[42px\]{min-height:42px!important}.\!min-h-\[44px\]{min-height:44px!important}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.bg-\[var\(--sidebar\)\]{background-color:var(--sidebar)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/15{background-color:hsla(0,0%,100%,.15)}.\!p-0{padding:0!important}.p-12{padding:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.\!text-left{text-align:left!important}.text-center{text-align:center}.\!text-\[\.95rem\]{font-size:.95rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/75{color:hsla(0,0%,100%,.75)}.no-underline{text-decoration-line:none}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.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)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--primary:#0b6b57;--accent:#e3a41b;--sidebar:#0c2f2b;--bg:#f3f6f6;--text:#0f1f1c;--card:#fff;--line:#e5ebea;--line2:#cfd9d6;--muted:#64748b;--soft:#f6f8f8;--soft2:color-mix(in srgb,var(--primary) 6%,#fff);--chip:#eef2f1;--ring:color-mix(in srgb,var(--primary) 22%,transparent);--radius:14px;--shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);--shadow-lg:0 12px 32px -12px rgba(16,24,40,.22)}:root[data-theme=dark]{--bg:#0b1514;--text:#e5efed;--card:#121f21;--line:#1f3233;--line2:#2c4646;--muted:#94a9a5;--soft:#162527;--soft2:#1b2f30;--chip:#1d3132;--sidebar:#08100f;--shadow:0 1px 2px rgba(0,0,0,.4);--shadow-lg:0 12px 32px -12px rgba(0,0,0,.6);color-scheme:dark}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font:14.5px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration-thickness:1px;text-underline-offset:2px}h1,h2,h3{margin:0;letter-spacing:-.01em;font-weight:650}h2{font-size:1.05rem;margin-bottom:12px}h3{font-size:.95rem}img{max-width:100%}hr{border:0;border-top:1px solid var(--line);margin:16px 0}.muted{color:var(--muted)}.right{text-align:right}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;word-break:break-all}.ic{width:20px;height:20px;flex:none}.skip{position:absolute;left:-999px;top:0;background:var(--primary);color:#fff;padding:8px 14px;z-index:100;border-radius:0 0 8px 0}.skip:focus{left:0}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--ring);outline-offset:2px}::-moz-selection{background:color-mix(in srgb,var(--primary) 20%,transparent)}::selection{background:color-mix(in srgb,var(--primary) 20%,transparent)}.side{position:fixed;inset:0 auto 0 0;width:264px;background:var(--sidebar);color:#cfe0dc;display:flex;flex-direction:column;z-index:50;overflow-y:auto;transition:width .2s,transform .25s;background-image:linear-gradient(180deg,hsla(0,0%,100%,.03),transparent 40%);scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.15) transparent}.brand{display:flex;gap:12px;align-items:center;padding:18px 18px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.brand .bt{min-width:0}.brand b{color:#fff;line-height:1.25;font-size:.95rem}.brand b,.brand small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand small{color:#8fb3aa;font-size:.74rem}.logo{width:40px;height:40px;border-radius:11px;-o-object-fit:contain;object-fit:contain;background:#fff;flex:none;padding:2px}.mark{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#1b1b1b;font-weight:800;font-size:1.2rem}.side nav{flex:1;padding:6px 10px 14px}.ng{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:#6f958c;padding:16px 12px 6px;font-weight:600}.side nav a{display:flex;gap:11px;align-items:center;padding:8px 12px;border-radius:10px;color:#c6d9d4;text-decoration:none;margin-bottom:1px;position:relative;font-size:.88rem;font-weight:500;transition:background .15s,color .15s}.side nav a .ic{opacity:.7;width:19px;height:19px}.side nav a span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side nav a:hover{background:hsla(0,0%,100%,.06);color:#fff}.side nav a:hover .ic{opacity:1}.side nav a.on{background:color-mix(in srgb,var(--primary) 85%,#fff 0);color:#fff;box-shadow:0 6px 16px -8px color-mix(in srgb,var(--primary) 80%,#000)}.side nav a.on .ic{opacity:1}.side nav a em{font-style:normal;background:#e5484d;color:#fff;border-radius:99px;font-size:.66rem;padding:1px 7px;font-weight:600}.side .me{display:flex;gap:10px;align-items:center;padding:12px 16px;margin:0 10px;border-radius:12px;border-top:0;text-decoration:none;color:#fff;background:hsla(0,0%,100%,.05)}.side .me:hover{background:hsla(0,0%,100%,.09)}.side .me b{display:block;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.side .me small{color:#8fb3aa;display:block;font-size:.72rem}.side .logout{display:flex;gap:10px;align-items:center;padding:10px 26px 16px;color:#f0c56b;text-decoration:none;font-size:.86rem}.side .logout:hover{color:#ffd98a}.main{margin-left:264px;padding:0 28px 28px;min-height:100vh;max-width:100%;overflow-x:hidden;transition:margin .2s}.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 -28px 20px;padding:12px 28px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.top h1{font-size:1.25rem;font-weight:700;flex:1;min-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.02em}.clock{color:var(--muted);font-size:.84rem;font-variant-numeric:tabular-nums;padding:0 6px}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;text-decoration:none;position:relative;padding:0;transition:background .15s,border-color .15s}.iconbtn:hover{background:var(--soft2);border-color:var(--line2)}.bell{position:relative;text-decoration:none}.bell b{position:absolute;top:-5px;right:-5px;background:#e5484d;color:#fff;border-radius:99px;font-size:.64rem;padding:1px 5px;font-weight:700;border:2px solid var(--card)}.userchip{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--text);padding:3px 12px 3px 4px;border:1px solid var(--line);border-radius:99px;background:var(--card);font-weight:500;font-size:.86rem}.userchip:hover{border-color:var(--line2)}.syncchip{font-size:.76rem;font-weight:500;padding:6px 12px;border-radius:99px;text-decoration:none;border:1px solid var(--line);background:var(--card);color:var(--text);white-space:nowrap}.syncchip.ok{border-color:#a7dcc1;color:#17734a;background:#effaf4}.syncchip.wait{border-color:#f2d48c;color:#8a5f00;background:#fff8e6}.syncchip.bad{border-color:#f3b4b0;color:#b42318;background:#fef3f2}.syncchip.off{background:#fff4d6;border-color:#e3a41b;color:#7a5200}.burger,.scrim{display:none}.foot{margin-top:32px;color:var(--muted);font-size:.8rem;text-align:center}.collapsed .side{width:72px}.collapsed .main{margin-left:72px}.collapsed .ng,.collapsed .side .bt,.collapsed .side .logout span,.collapsed .side .me div,.collapsed .side nav a em,.collapsed .side nav a span{display:none}.collapsed .side .logout,.collapsed .side .me,.collapsed .side nav a{justify-content:center}.collapsed .side .me{margin:0 8px;padding:10px 0}.collapsed .collapse .ic{transform:rotate(180deg)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:18px;box-shadow:var(--shadow)}.card>.bar:first-child h2,.card>h2:first-child{font-size:1rem}details.card summary{cursor:pointer;font-weight:600}.grid{gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:18px}.grid,.row2{display:grid}.row2{gap:18px;grid-template-columns:1fr 1fr}.stat{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px 18px;box-shadow:var(--shadow)}.stat:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:0 4px 4px 0;background:var(--primary)}.stat b{display:block;font-size:1.75rem;line-height:1.15;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat span{color:var(--muted);font-size:.8rem;font-weight:500}.stat.a:before{background:var(--accent)}.stat.r:before{background:#e5484d}.stat.g:before{background:#94a3b8}.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:14px}.full{grid-column:1/-1}.inline{display:inline}.empty{text-align:center;color:var(--muted);padding:28px 12px}.infobox{border:1px dashed var(--line2);border-radius:12px;padding:12px 14px;margin-top:10px;background:var(--soft)}.filerow{padding:8px 0;border-bottom:1px solid var(--line)}.dl{display:grid;gap:12px 20px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin:10px 0}.dl>div b{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;margin-bottom:2px}.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:16px;padding:4px;background:var(--chip);border-radius:12px;width:-moz-fit-content;width:fit-content;max-width:100%}.tabs a{padding:7px 14px;border-radius:9px;color:var(--muted);text-decoration:none;font-weight:500;font-size:.86rem}.tabs a.on,.tabs a:hover{color:var(--text)}.tabs a.on{background:var(--card);box-shadow:var(--shadow)}.crumbs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:12px;font-size:.86rem}.crumbs a{text-decoration:none}.crumbs span{color:var(--muted)}.timeline div{padding:8px 0;border-bottom:1px solid var(--line);font-size:.86rem}.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--primary);color:#fff;border:1px solid transparent;border-radius:10px;padding:8px 16px;font:inherit;font-weight:600;font-size:.86rem;cursor:pointer;text-decoration:none;min-height:38px;box-shadow:0 1px 2px rgba(16,24,40,.08);transition:background .15s,filter .15s,transform .05s,box-shadow .15s;white-space:nowrap}.btn:hover{filter:brightness(.93)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:0;box-shadow:0 0 0 4px var(--ring)}.btn.alt{background:var(--accent);color:#1b1b1b}.btn.gray{background:var(--card);color:var(--text);border-color:var(--line2);box-shadow:0 1px 2px rgba(16,24,40,.05)}.btn.gray:hover{background:var(--soft);filter:none}.btn.red{background:#d92d20}.btn.sm{padding:4px 10px;min-height:30px;font-size:.8rem;border-radius:8px}.expo{display:inline-flex;gap:6px;flex-wrap:wrap}.acts{white-space:nowrap}.star{background:none;border:0;cursor:pointer;font-size:1.1rem;padding:0 4px;color:#b8860b;min-height:0}form.f{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px;font-weight:500}input,select,textarea{width:100%;font:inherit;font-size:.9rem;padding:8px 12px;border:1px solid var(--line2);border-radius:10px;background:var(--card);color:inherit;min-height:38px;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px rgba(16,24,40,.04)}input[type=color]{padding:2px;height:40px}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--primary);box-shadow:none}input[type=file]{padding:6px;background:var(--soft)}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 4px var(--ring)}.chk label{display:inline-flex;gap:6px;align-items:center;margin-right:14px;color:inherit;font-weight:400;font-size:.88rem}.err-text{color:#d92d20}.alert{padding:11px 14px;border-radius:12px;margin-bottom:14px;border:1px solid;font-size:.9rem}.alert.ok{background:#ecfdf3;color:#05603a;border-color:#abefc6}.alert.err{background:#fef3f2;color:#912018;border-color:#fecdca}.alert.warn{background:#fffaeb;color:#93370d;border-color:#fedf89}.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px}.card>.tw:last-child{margin-bottom:0}.tbl{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);font-size:.86rem}.tbl th{background:var(--soft);color:var(--muted);text-align:left;white-space:nowrap;position:sticky;top:0;z-index:1;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.tbl td,.tbl th{padding:10px 12px;border-bottom:1px solid var(--line)}.tbl td{vertical-align:top}.tbl tbody tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:var(--soft2)}.sortlink{color:inherit;text-decoration:none}.sortlink:hover{color:var(--text)}tr.archived{opacity:.6}.tbl td .btn.sm{margin:1px 0}.pager{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:14px}.pager .off{pointer-events:none;opacity:.4}.b{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:99px;font-size:.74rem;font-weight:600;white-space:nowrap;background:var(--chip);color:var(--muted);border:1px solid transparent}.b-present,.b-work{background:#ecfdf3;color:#067647;border-color:#abefc6}.b-late{background:#fffaeb;color:#b54708;border-color:#fedf89}.b-absent,.b-unauth{background:#fef3f2;color:#b42318;border-color:#fecdca}.b-early{background:#f4f3ff;color:#5925dc;border-color:#d9d6fe}.b-missing{background:#fff6ed;color:#c4320a;border-color:#fddcab}.b-leave{background:#eff8ff;color:#175cd3;border-color:#b2ddff}.b-assign{background:#f0fdf9;color:#107569;border-color:#99f6e0}.b-notin,.b-out{background:var(--chip);color:var(--muted)}.bars{display:flex;gap:8px;align-items:flex-end;height:150px}.bars div{flex:1;text-align:center;font-size:.72rem;display:flex;flex-direction:column;justify-content:flex-end;height:100%;color:var(--muted)}.bars span{display:block;background:linear-gradient(180deg,var(--primary),color-mix(in srgb,var(--primary) 70%,#fff));border-radius:6px 6px 0 0;min-height:2px}.stack100{display:flex;height:26px;border-radius:8px;overflow:hidden;margin:8px 0}.stack100 i{display:block}.legend span{margin-right:14px;font-size:.82rem}.legend em{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}.meter{height:8px;background:var(--chip);overflow:hidden;min-width:70px}.meter,.meter i{border-radius:99px}.meter i{display:block;height:100%;background:var(--primary)}.meter i.w{background:var(--accent)}.meter i.d{background:#e5484d}.hb{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;gap:10px;align-items:center;padding:5px 0;font-size:.84rem}.hb span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{width:36px;height:36px;border-radius:50%;-o-object-fit:cover;object-fit:cover;flex:none;background:var(--primary);border:2px solid var(--card)}.avatar.sm{width:30px;height:30px}.avatar.lg{width:92px;height:92px}.avatar.ph{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.8em}.avatar.lg.ph{font-size:1.8rem}.welcome{display:flex;gap:18px;align-items:center;flex-wrap:wrap;position:relative;overflow:hidden;color:#fff;border:0;padding:22px 24px;background:radial-gradient(ellipse at top right,hsla(0,0%,100%,.14),transparent 55%),linear-gradient(120deg,color-mix(in srgb,var(--primary) 92%,#fff),color-mix(in srgb,var(--primary) 55%,#000));box-shadow:var(--shadow-lg)}.welcome h2{color:#fff;margin:0;font-size:1.3rem}.welcome .wm{display:flex;gap:6px 16px;flex-wrap:wrap;font-size:.84rem;opacity:.92;margin-top:4px}.welcome .avatar{width:64px;height:64px;border-color:hsla(0,0%,100%,.45)}.welcome .tasks{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.welcome .tasks a{background:hsla(0,0%,100%,.16);color:#fff;text-decoration:none;padding:7px 13px;border-radius:99px;font-size:.8rem;font-weight:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.welcome .tasks a:hover{background:hsla(0,0%,100%,.26)}.wph{display:flex;flex-direction:column;align-items:center;gap:6px}.wphbtn{background:hsla(0,0%,100%,.2);color:#fff;border-radius:99px;padding:3px 10px;font-size:.72rem;white-space:nowrap}.wphbtn:hover{background:hsla(0,0%,100%,.32)}.quick{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));margin-bottom:18px}.quick a{display:flex;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);text-decoration:none;font-size:.86rem;font-weight:500;box-shadow:var(--shadow);transition:border-color .15s,transform .15s}.quick a:hover{border-color:color-mix(in srgb,var(--primary) 45%,#fff);transform:translateY(-1px)}.quick .ic{color:var(--primary)}.facgrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.fac{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:12px;background:var(--card);color:inherit;text-decoration:none}.fac b{font-size:.92rem}.fac small,.fac span{color:var(--muted)}.fac span{font-size:.78rem;margin-top:4px}.fac em{font-style:normal;font-weight:700}.fac em.warn{color:#b97d00}.fac em.bad{color:#d92d20}.fac.dim{border-left-color:var(--line2);background:var(--soft)}.fac.on,a.fac:hover{background:var(--soft2);border-color:var(--primary)}.folders{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin-bottom:14px}.folders a{display:block;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--card);text-decoration:none;color:inherit}.folders a:hover{border-color:var(--primary)}.pm{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;background:var(--card)}.pm.me{background:var(--soft2);border-color:color-mix(in srgb,var(--primary) 25%,#fff)}.pmh{margin-bottom:4px}.pmb{white-space:normal;word-wrap:break-word;line-height:1.55}.pmpick{max-height:230px;overflow:auto;border:1px solid var(--line2);border-radius:10px;padding:6px;margin-top:6px;background:var(--card)}.pmpick label{display:flex;gap:8px;align-items:center;padding:5px 6px;border-radius:6px;margin:0;color:inherit}.pmpick label:hover{background:var(--soft)}.pmpick input{width:auto;margin:0;min-height:0}.pmreply textarea,.preview{width:100%}.preview{height:70vh;border:1px solid var(--line2);border-radius:10px;background:var(--card)}.preview-img{max-width:100%;border-radius:10px}.slidegrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.slidegrid img{width:100%;height:120px;-o-object-fit:cover;object-fit:cover;border-radius:10px}.sw{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.sw button{border:1px solid var(--line2);background:var(--card);border-radius:8px;padding:6px 10px;cursor:pointer}.regtop{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start}.regphoto{text-align:center;max-width:150px}.regphoto input[type=file]{font-size:.75rem}img.thumb{width:44px;height:44px;-o-object-fit:cover;object-fit:cover;border-radius:8px;vertical-align:middle;margin-right:4px}.rte,img.thumb{border:1px solid var(--line2)}.rte{border-radius:10px;background:var(--card);overflow:hidden}.rtb{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border-bottom:1px solid var(--line);background:var(--soft)}.rtb button{border:1px solid var(--line2);background:var(--card);border-radius:6px;padding:4px 9px;cursor:pointer}.rtc{min-height:180px;padding:12px;outline:0}.rtc table{border-collapse:collapse}.rtc td,.rtc th{border:1px solid var(--line2);padding:4px 8px}.badges{display:flex;flex-wrap:wrap;gap:14px}.idc{width:290px;border:2px solid var(--primary);border-radius:16px;padding:14px;text-align:center;background:var(--card);-moz-column-break-inside:avoid;break-inside:avoid}.idc .logo{width:46px;height:46px}.idc h3{margin:6px 0 0}.qr{display:flex;justify-content:center;margin:10px 0}.fpbox .or{display:flex;align-items:center;gap:10px;margin:14px 0 8px;color:var(--muted);font-size:.8rem}.fpbox .or:after,.fpbox .or:before{content:"";height:1px;background:var(--line2);flex:1}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#0f1f1c;color:#fff;padding:12px 18px;border-radius:12px;opacity:0;transition:.3s;z-index:200;max-width:92vw;box-shadow:var(--shadow-lg)}.toast.show{opacity:1;transform:translate(-50%)}.toast.bad{background:#912018}dialog{border:1px solid var(--line);border-radius:16px;padding:22px;max-width:min(640px,94vw);width:100%;background:var(--card);color:var(--text);box-shadow:var(--shadow-lg)}dialog::backdrop{background:rgba(15,23,42,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.public{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;position:relative;background:var(--sidebar)}.bg-shade,.bg-slider{position:fixed;inset:0}.bg-slider .slide{position:absolute;inset:0;background-size:cover;background-position:50%;opacity:0;transition:opacity 1.4s}.bg-slider .slide.on{opacity:1}.bg-shade{background:rgb(0 0 0/var(--shade,.45))}.pcard{position:relative;z-index:2;width:100%;max-width:440px;background:hsla(0,0%,100%,.97);border-radius:20px;padding:28px;box-shadow:0 24px 64px rgba(0,0,0,.35)}.pcard .logo{width:64px;height:64px;margin-bottom:8px}.pcard h1{font-size:1.35rem}.pcard .sub{color:var(--muted);margin-bottom:14px}.bigclock{font-size:2.4rem;font-weight:700;color:var(--primary);line-height:1;font-variant-numeric:tabular-nums}.pcard form>div{margin-bottom:12px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pair .btn{padding:14px;font-size:1.05rem;font-weight:700}.result{border-radius:14px;padding:14px;margin-bottom:14px}.result.ok{background:#ecfdf3;color:#05603a}.result.err{background:#fef3f2;color:#912018}.result h2{margin:0 0 4px}#qrBox{display:none;margin-top:10px}.slidecap{position:fixed;left:0;right:0;bottom:16px;text-align:center;color:#fff;z-index:2;font-size:1.05rem;text-shadow:0 1px 6px rgba(0,0,0,.6);padding:0 16px}.links{display:flex;justify-content:space-between;margin-top:14px;font-size:.9rem}.cam{position:relative;margin-bottom:10px;border-radius:12px;overflow:hidden;background:#0c2f2b;min-height:56px}.cam video{display:none;width:100%;max-height:190px;-o-object-fit:cover;object-fit:cover;transform:scaleX(-1);background:#000}.cam.live video{display:block}.camnote{font-size:.78rem;padding:6px 10px;color:#cfe5df}.cam.live .camnote{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.55);color:#fff}.camnote.bad{color:#ffd9d4}:root[data-theme=dark] .alert.ok,:root[data-theme=dark] .b-present,:root[data-theme=dark] .b-work,:root[data-theme=dark] .result.ok{background:#0c2e20;color:#a6f0c6;border-color:#145c3c}:root[data-theme=dark] .alert.err,:root[data-theme=dark] .b-absent,:root[data-theme=dark] .b-unauth,:root[data-theme=dark] .result.err{background:#3a1513;color:#ffc9c4;border-color:#6e221c}:root[data-theme=dark] .alert.warn,:root[data-theme=dark] .b-late{background:#36290b;color:#fedf89;border-color:#6b4f12}:root[data-theme=dark] .b-leave{background:#102a45;color:#b2ddff;border-color:#1d4b7a}:root[data-theme=dark] .b-assign{background:#0b302c;color:#99f6e0;border-color:#145c54}:root[data-theme=dark] .b-early{background:#23194d;color:#d9d6fe;border-color:#3f2f8a}:root[data-theme=dark] .b-missing{background:#3b220e;color:#fddcab;border-color:#6e3f15}:root[data-theme=dark] .syncchip.ok{background:#0c2e20;color:#7fe0ac;border-color:#145c3c}:root[data-theme=dark] .syncchip.off,:root[data-theme=dark] .syncchip.wait{background:#36290b;color:#fedf89;border-color:#6b4f12}:root[data-theme=dark] .pcard{background:rgba(18,31,33,.97)}:root[data-theme=dark] input,:root[data-theme=dark] select,:root[data-theme=dark] textarea{background:#0e1a1c}:root[data-theme=dark] .btn.gray{color:var(--text)}:root[data-theme=dark] .toast{background:#1d3132}@media (max-width:1100px){.main{padding:0 18px 22px}.top{margin:0 -18px 18px;padding:10px 18px}.clock,.userchip span{display:none}.userchip{padding:3px}}@media (max-width:900px){.side{transform:translateX(-100%);width:284px;box-shadow:0 0 48px rgba(0,0,0,.45)}.side.open{transform:none}.collapsed .main,.main{margin-left:0}.collapsed .side{width:284px}.collapsed .ng,.collapsed .side .bt,.collapsed .side .logout span,.collapsed .side .me div,.collapsed .side nav a span{display:revert}.burger{display:inline-flex}.collapse{display:none!important}.row2{grid-template-columns:1fr}.scrim.show{display:block;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}}@media (max-width:720px){.main{padding:0 12px 18px}.top{margin:0 -12px 14px;padding:10px 12px}.top h1{font-size:1.1rem;order:3;width:100%}.syncchip{margin-left:auto}.grid{grid-template-columns:repeat(2,1fr)}.stat b{font-size:1.35rem}.tabs{width:100%}.tw{border:0;border-radius:0;overflow:visible}.tbl:not(.nostack) thead{display:none}.tbl:not(.nostack),.tbl:not(.nostack) tbody{display:block;background:transparent}.tbl:not(.nostack) tr{display:block;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:var(--card)!important;padding:4px 0;box-shadow:var(--shadow)}.tbl:not(.nostack) td{display:flex;justify-content:space-between;gap:12px;border:0;padding:7px 14px;text-align:right}.tbl:not(.nostack) td:before{content:attr(data-label);color:var(--muted);font-size:.76rem;text-align:left;flex:none;max-width:42%;font-weight:500}.tbl:not(.nostack) td:not([data-label]):before{content:none}.tbl:not(.nostack) td[colspan]{display:block;text-align:center}.acts .btn,.tbl td .btn.sm{margin:2px}.tbl:not(.nostack) td:not([data-label]),.tbl:not(.nostack) td[data-label=""]{flex-wrap:wrap;justify-content:flex-start;white-space:normal}.acts{white-space:normal}.bar{align-items:stretch}.bar>div{flex:1 1 140px}.bar .btn{flex:1 1 auto}form.f{grid-template-columns:1fr}.regtop{flex-direction:column;align-items:center}.regphoto{max-width:none}.expo{width:100%}.expo .btn{flex:1}.card{padding:14px;border-radius:12px}.facgrid,.folders{grid-template-columns:1fr}.pair{grid-template-columns:1fr 1fr}dialog{padding:16px}input,select,textarea{font-size:16px}.welcome .tasks{margin-left:0}}@media (max-width:380px){.grid{grid-template-columns:1fr}.syncchip{font-size:.7rem}}@media (pointer:coarse){.btn.sm{min-height:36px;padding:6px 12px}.side nav a{padding:11px 12px}}@media print{.bar .btn,.foot,.noprint,.pager,.scrim,.side,.toast,.top{display:none!important}.main{margin:0!important;padding:0}body{background:#fff;color:#000}.card,.stat{box-shadow:none;background:#fff;border:1px solid #ccc}.tw{border:0}.tbl,.tbl td{background:#fff!important;color:#000}.tbl th{background:#eee!important;color:#000!important;position:static}.tbl:not(.nostack) thead{display:table-header-group}.tbl:not(.nostack){display:table}.tbl:not(.nostack) tbody{display:table-row-group}.tbl:not(.nostack) tr{display:table-row;border:0;box-shadow:none}.tbl:not(.nostack) td{display:table-cell;text-align:left}.tbl:not(.nostack) td:before{content:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.login-visual .bg-shade,.login-visual .bg-slider{position:absolute}.login-visual .logo{background:#fff}.viz{--series-1:#2a78d6;--series-1-soft:color-mix(in srgb,#2a78d6 14%,transparent);--s-good:#0ca30c;--s-warn:#fab219;--s-crit:#d03b3b;--s-leave:#2a78d6;--s-neutral:#a3b1ae;--grid:#e8eeec;--axis:#6b7a77;--target:#7a8784}:root[data-theme=dark] .viz{--series-1:#3987e5;--series-1-soft:color-mix(in srgb,#3987e5 20%,transparent);--s-leave:#3987e5;--s-neutral:#5d6e6b;--grid:#213335;--axis:#93a7a3;--target:#8fa29e}.dash{display:grid;gap:18px;grid-template-columns:repeat(12,minmax(0,1fr));margin-bottom:18px}.dash>*{grid-column:span 12;margin-bottom:0}@media (min-width:1000px){.dash .s8{grid-column:span 8}.dash .s4{grid-column:span 4}.dash .s6{grid-column:span 6}.dash .s7{grid-column:span 7}.dash .s5{grid-column:span 5}}.viz-card{display:flex;flex-direction:column}.viz-card .vh{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.viz-card .vh h2{margin:0}.viz-card .vh p{margin:2px 0 0;color:var(--muted);font-size:.8rem}.viz-card .vh .btn{flex:none}.viz-svg{width:100%;height:auto;display:block;overflow:visible}.viz-grid{stroke:var(--grid);stroke-width:1}.viz-axis{fill:var(--axis);font-size:11px;font-variant-numeric:tabular-nums}.viz-line{fill:none;stroke:var(--series-1);stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}.viz-area{fill:var(--series-1-soft);stroke:none}.viz-cross-dot,.viz-dot{fill:var(--series-1);stroke:var(--card);stroke-width:2.5}.viz-val{fill:var(--text);font-size:12px;font-weight:600}.viz-cross{stroke:var(--axis);stroke-width:1;stroke-dasharray:3 3}.viz-target{stroke:var(--target);stroke-width:1.25;stroke-dasharray:5 4}.viz-target-l{font-weight:500}.viz-bar{fill:var(--series-1)}.viz-bar-peak{fill:color-mix(in srgb,var(--series-1) 78%,#000)}.viz-hit{fill:transparent;cursor:crosshair;outline:none}.viz-hit:focus-visible{fill:var(--series-1-soft)}.viz-tip{position:fixed;z-index:300;pointer-events:none;background:#0f1f1c;color:#fff;padding:7px 10px;border-radius:8px;font-size:.78rem;line-height:1.45;white-space:pre-line;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:260px}:root[data-theme=dark] .viz-tip{background:#f0f5f4;color:#0f1f1c}.viz-data{margin-top:10px;font-size:.82rem}.viz-data summary{cursor:pointer;color:var(--muted);font-weight:500;width:-moz-fit-content;width:fit-content}.viz-data summary:hover{color:var(--text)}.viz-data .tw{margin-top:8px;max-height:280px;overflow:auto}.kpis{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:18px}.viz-kpi{display:flex;flex-direction:column;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);color:var(--text);text-decoration:none;position:relative;overflow:hidden}a.viz-kpi{transition:transform .15s,border-color .15s}a.viz-kpi:hover{border-color:var(--line2);transform:translateY(-1px)}.viz-kpi-l{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.78rem;font-weight:500}.viz-kpi-l .ic{width:16px;height:16px}.viz-kpi-v{font-size:1.85rem;line-height:1.1;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.viz-kpi-v small{font-size:.55em;color:var(--muted);font-weight:600;margin-left:2px}.viz-kpi-f{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.74rem;min-height:18px}.viz-delta{font-weight:600;padding:1px 7px;border-radius:99px}.viz-delta.good{color:#067647;background:#ecfdf3}.viz-delta.bad{color:#b42318;background:#fef3f2}.viz-delta.flat{color:var(--muted);background:var(--chip)}:root[data-theme=dark] .viz-delta.good{color:#a6f0c6;background:#0c2e20}:root[data-theme=dark] .viz-delta.bad{color:#ffc9c4;background:#3a1513}.viz-cmp{color:var(--muted)}.viz-kpi.crit:after,.viz-kpi.good:after,.viz-kpi.warn:after{content:"";position:absolute;right:0;top:0;bottom:0;width:4px}.viz-kpi.warn:after{background:#fab219}.viz-kpi.crit:after{background:#d03b3b}.viz-kpi.good:after{background:#0ca30c}.viz-stack{display:flex;gap:2px;height:14px;border-radius:99px;overflow:hidden;background:var(--chip);margin:6px 0 14px}.viz-stack i{display:block;min-width:3px;outline:none}.viz-stack i:focus-visible,.viz-stack i:hover{filter:brightness(.9)}.viz-s-good{background:var(--s-good)}.viz-s-warn{background:var(--s-warn)}.viz-s-crit{background:var(--s-crit)}.viz-s-leave{background:var(--s-leave)}.viz-s-neutral{background:var(--s-neutral)}.viz-legend{list-style:none;margin:0;padding:0;display:grid;gap:2px}.viz-legend li{display:grid;grid-template-columns:12px 1fr auto 52px;gap:10px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--line);font-size:.86rem}.viz-legend li:last-child{border-bottom:0}.viz-legend b,.viz-legend small{font-variant-numeric:tabular-nums}.viz-legend small{color:var(--muted);text-align:right}.viz-key{width:12px;height:12px;border-radius:4px}.viz-hbars{display:grid;gap:4px}.viz-hb{display:grid;grid-template-columns:minmax(110px,32%) 1fr 78px;gap:12px;align-items:center;padding:5px 6px;border-radius:8px;font-size:.86rem;outline:none}.viz-hb:focus-visible,.viz-hb:hover{background:var(--soft2)}.viz-hb-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viz-hb-l a{color:var(--text);text-decoration:none}.viz-hb-l a:hover{color:var(--primary);text-decoration:underline}.viz-hb-track{position:relative;height:10px;background:var(--chip);border-radius:99px}.viz-hb-track i{display:block;height:100%;background:var(--series-1);border-radius:99px}.viz-hb-v{text-align:right;font-variant-numeric:tabular-nums}.viz-flag{color:#d03b3b;font-size:.7rem}.viz-hb-target{display:none}.viz-hbars[data-target] .viz-hb-track:after{content:"";position:absolute;top:-3px;bottom:-3px;left:var(--target-at);width:2px;background:var(--target);border-radius:2px}.viz-hb-note{font-size:.74rem;color:var(--muted);margin-top:6px}.insights{list-style:none;margin:0;padding:0;display:grid;gap:12px}.insights li{display:grid;grid-template-columns:30px 1fr;gap:10px;align-items:start;font-size:.86rem;line-height:1.5}.insights .ii{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:.9rem;background:var(--chip)}.insights .ii.good{background:#ecfdf3}.insights .ii.warn{background:#fffaeb}.insights .ii.crit{background:#fef3f2}:root[data-theme=dark] .insights .ii.good{background:#0c2e20}:root[data-theme=dark] .insights .ii.warn{background:#36290b}:root[data-theme=dark] .insights .ii.crit{background:#3a1513}.insights b{font-weight:650}.chips{display:flex;gap:6px;flex-wrap:wrap}.chips button{border:1px solid var(--line2);background:var(--card);color:var(--text);border-radius:99px;padding:5px 12px;font:inherit;font-size:.8rem;font-weight:500;cursor:pointer}.chips button.on{background:var(--text);color:var(--card);border-color:var(--text)}.chips button b{font-variant-numeric:tabular-nums;margin-left:4px;opacity:.75}.dash-hello{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}.dash-hello h2{font-size:1.35rem;margin:0;letter-spacing:-.02em}.dash-hello p{margin:2px 0 0;color:var(--muted);font-size:.86rem}.dash-hello .tasks{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}@media (max-width:720px){.viz-hb{grid-template-columns:minmax(90px,38%) 1fr 64px;gap:8px}.kpis{grid-template-columns:repeat(2,1fr)}.viz-kpi-v{font-size:1.45rem}.dash-hello .tasks{margin-left:0}}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}@media (min-width:640px){.sm\:px-12{padding-left:3rem;padding-right:3rem}}@media (min-width:1024px){.lg\:block{display:block}.lg\:w-\[480px\]{width:480px}.lg\:flex-none{flex:none}}@media (min-width:1280px){.xl\:w-\[540px\]{width:540px}}