:root{color-scheme:light;--navy: #1B2A56;--navy-d: #12203F;--red: #D81E34;--red-d: #B0152A;--primary: #1B2A56;--primary-d: #12203F;--primary-ink: #1B2A56;--secondary: #2F4A8C;--accent: #B45309;--sel: #1B2A56;--cta: #C81E33;--cta-d: #A2122A;--accent-red: #E0223A;--bg: #EEF1F8;--surface: #FFFFFF;--surface-2: #F6F8FC;--muted: #E7ECF6;--ink: #1A2336;--ink-2: #5A6B86;--ink-3: #8C9BB4;--warn: #B45309;--border: #E2E7F1;--border-2: #C6D0E2;--r: 12px;--r-sm: 8px;--sh-sm: 0 1px 2px rgba(20,28,60,.06), 0 1px 3px rgba(20,28,60,.09);--sh-md: 0 8px 22px rgba(20,28,60,.13);--ring: 0 0 0 3px rgba(47,74,140,.28);--ring-red: 0 0 0 3px rgba(216,30,52,.26);--brand-grad: linear-gradient(135deg, #1B2A56 0%, #25356A 55%, #B0152A 130%);--sans: "Fira Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "Fira Code", ui-monospace, "Cascadia Code", Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased;overflow-x:clip}button,.btn,.tab,.day-chk,.btn-period,.range-trigger,.cal-nav,.cal-day,.modal-close,.u-act,.clickable,a,label,input,select{touch-action:manipulation}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes barGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes popIn{0%{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}@keyframes brandPan{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes glowPulse{0%,to{box-shadow:0 0 #d81e3400}50%{box-shadow:0 0 0 5px #d81e3424}}@keyframes sheen{0%{transform:translate(-120%)}60%,to{transform:translate(220%)}}.login-bg{margin:0;min-height:100vh;min-height:100dvh;display:grid;place-items:center;background:linear-gradient(125deg,#12203f,#1b2a56 45%,#6e1626);background-size:220% 220%;animation:brandPan 18s ease-in-out infinite;font-family:var(--sans);padding:16px;position:relative;overflow:hidden}.login-bg:before{content:"";position:absolute;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,rgba(216,30,52,.3),transparent 65%);top:-120px;right:-80px;filter:blur(6px);pointer-events:none}.card{position:relative;background:var(--surface);border-radius:18px;box-shadow:0 24px 60px #02081773;width:100%;max-width:392px;padding:32px 30px;border-top:4px solid var(--red);animation:fadeInUp .45s cubic-bezier(.34,1.1,.64,1) both}.card .brand{display:flex;align-items:center;gap:11px;margin-bottom:6px}.card .brand-badge{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:var(--brand-grad);color:#fff;flex:none;box-shadow:var(--sh-sm)}.card .brand-badge svg{width:23px;height:23px;stroke-width:2}.card h1{font-size:1.18rem;margin:0;font-weight:700;color:var(--primary)}.card .sub{font-size:.78rem;color:var(--ink-3);margin:2px 0 22px}.card label{display:block;font-size:.78rem;font-weight:600;color:var(--ink-2);margin:14px 0 5px}.card input{width:100%;border:1px solid var(--border-2);border-radius:8px;padding:10px 12px;font-size:.92rem;font-family:var(--sans);color:var(--ink);background:var(--surface)}.card input:focus-visible{outline:none;box-shadow:var(--ring);border-color:var(--secondary)}.card button[type=submit]{position:relative;overflow:hidden;width:100%;margin-top:22px;border:none;border-radius:9px;padding:12px;font-size:.92rem;font-weight:700;font-family:var(--sans);cursor:pointer;background:var(--cta);color:#fff;letter-spacing:.01em;box-shadow:0 6px 16px #c81e334d;transition:background .15s,transform .1s,box-shadow .15s,opacity .15s;display:flex;align-items:center;justify-content:center;gap:8px}.card button[type=submit]:hover{background:var(--cta-d);box-shadow:0 8px 22px #c81e3366}.card button[type=submit]:focus-visible{outline:none;box-shadow:var(--ring-red),0 6px 16px #c81e334d}.card button[type=submit]:active{transform:scale(.98)}.card button[type=submit]:after{content:"";position:absolute;top:0;left:0;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:translate(-120%);pointer-events:none}.card button[type=submit]:not(:disabled):hover:after{animation:sheen 1.1s ease both}.card button[type=submit]:disabled{opacity:.6;cursor:default}.card .spin-ic{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;display:none}.card button.loading .spin-ic{animation:spin .7s linear infinite;display:inline-block}.card .err{background:#fee2e2;color:#991b1b;border:1px solid #FCA5A5;border-radius:8px;padding:9px 12px;font-size:.82rem;margin-top:16px}.card .note{background:#fef3c7;border:1px solid #FDE68A;border-radius:8px;padding:10px 12px;font-size:.8rem;color:#7a5b14;margin-top:14px;line-height:1.5}.brand-badge svg,.kpi-ic svg,.late-head svg,.modal-head svg,.btn svg{stroke-width:2}svg.ic{width:16px;height:16px;flex:none}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;position:sticky;top:0;z-index:30;animation:slideDown .3s ease backwards;box-shadow:0 1px #141c3c0a}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,var(--navy),var(--red) 55%,transparent)}.topbar .brand{display:flex;align-items:center;gap:11px}.topbar .brand-badge{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--brand-grad);color:#fff;box-shadow:var(--sh-sm);flex:none}.topbar .brand-badge svg{width:21px;height:21px}.topbar h1{font-size:1.12rem;margin:0;font-weight:700;letter-spacing:-.01em;color:var(--primary-ink)}.sub-h{font-size:.71rem;color:var(--ink-2);margin-top:1px;font-weight:500}.brand-badge--logo{background:none!important;box-shadow:none!important;padding:1px;transition:transform .2s ease,filter .2s ease}.brand-badge--logo img{width:100%;height:100%;object-fit:contain;display:block}.brand:hover .brand-badge--logo{transform:scale(1.06);filter:drop-shadow(0 2px 6px rgba(216,30,52,.35))}.card .brand-logo-full{display:block;width:100%;max-width:264px;height:auto;margin:2px auto 20px;animation:popIn .5s cubic-bezier(.34,1.2,.64,1) .08s both}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}.meta{width:100%;font-size:.73rem;color:var(--ink-2);font-family:var(--mono)}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;border-radius:var(--r-sm);padding:8px 14px;font-size:.82rem;font-weight:600;font-family:var(--sans);cursor:pointer;color:var(--ink);background:var(--surface);transition:background .15s,border-color .15s,box-shadow .15s,transform .05s}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn-refresh{background:var(--cta);color:#fff;box-shadow:0 3px 10px #c81e3342}.btn-refresh:hover{background:var(--cta-d);box-shadow:0 5px 14px #c81e3357}.btn-refresh:focus-visible{box-shadow:var(--ring-red)}.btn-refresh.loading svg{animation:spin .7s linear infinite}.btn-settings,.btn-export,.btn-print{background:var(--surface);color:var(--ink);border-color:var(--border-2)}.btn-settings:hover,.btn-export:hover,.btn-print:hover{background:var(--surface-2);border-color:var(--secondary);color:var(--primary)}.btn-primary{background:var(--cta);color:#fff;border-color:var(--cta)}.btn-primary:hover{background:var(--cta-d);border-color:var(--cta-d)}.btn-primary:focus-visible{box-shadow:var(--ring-red)}.btn-ghost{background:var(--surface-2);color:var(--primary);border-color:var(--border-2)}.btn-ghost:hover{background:var(--muted)}.btn-icon{padding:8px;line-height:0}.menu-wrap,.menu-trigger{position:relative}.menu-dot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px var(--surface)}.menu-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-md);padding:6px;min-width:230px;width:max-content;max-width:min(280px,calc(100vw - 24px));animation:slideDown .16s ease both}.menu-scrim{display:none}.menu-group{padding:4px 0}.menu-group+.menu-group{border-top:1px solid var(--border)}.menu-label{font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:6px 10px 4px}.menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:none;color:var(--ink);cursor:pointer;font-family:var(--sans);font-size:.85rem;font-weight:600;padding:9px 10px;border-radius:var(--r-sm);transition:background .14s,color .14s}.menu-item:hover{background:var(--surface-2);color:var(--primary)}.menu-item:focus-visible{outline:none;box-shadow:var(--ring)}.menu-item .ic{color:var(--ink-2)}.menu-item:hover .ic{color:var(--primary)}.menu-item span{flex:1;min-width:0}.menu-badge{flex:none;background:var(--primary);color:#fff;border-radius:999px;padding:1px 8px;font-size:.72rem;font-weight:700;font-family:var(--mono)}.menu-item--danger,.menu-item--danger .ic{color:var(--red-d)}.menu-item--danger:hover{background:#fee2e2;color:var(--red-d)}.menu-item--danger:hover .ic{color:var(--red-d)}[data-theme=dark] .menu-item--danger:hover{background:#7f1d1d55}.period-bar{background:var(--surface);border-bottom:1px solid var(--border);padding:10px 24px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.seg{display:inline-flex;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px}.btn-period{border:none;background:transparent;color:var(--ink-2);font-size:.8rem;font-weight:600;padding:6px 13px;border-radius:999px;cursor:pointer;font-family:var(--sans);transition:background .18s,color .18s,transform .1s}.btn-period:hover{color:var(--primary)}.btn-period.active{background:var(--sel);color:#fff;box-shadow:var(--sh-sm)}.btn-period:active{transform:scale(.95)}.ctrl{display:flex;align-items:center;gap:7px;margin-left:auto;flex-wrap:wrap}.ctrl input{border:1px solid var(--border-2);border-radius:var(--r-sm);padding:6px 10px;font-size:.82rem;font-family:var(--mono);color:var(--ink);background:var(--surface)}.ctrl input:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-color:var(--secondary)}.branch-select{border:1px solid var(--border-2);border-radius:var(--r-sm);padding:6px 28px 6px 10px;font-size:.82rem;font-family:var(--sans);color:var(--ink);background:var(--surface);cursor:pointer;max-width:200px}.branch-select:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-color:var(--secondary)}.ctrl .sep{color:var(--ink-3);font-size:.8rem}.policy-chip{font-size:.72rem;color:var(--accent);background:#fef3c7;border:1px solid #FDE68A;padding:4px 10px;border-radius:999px;font-weight:600}.rangepick{position:relative}.range-trigger{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border-2);background:var(--surface);color:var(--ink);border-radius:var(--r-sm);padding:7px 12px;font-size:.82rem;font-family:var(--sans);cursor:pointer;font-variant-numeric:tabular-nums;transition:border-color .15s}.range-trigger:hover{border-color:var(--secondary)}.range-trigger:focus-visible{outline:2px solid var(--secondary);outline-offset:1px}.range-trigger svg{width:15px;height:15px;flex:none;stroke-width:2;color:var(--ink-2)}.range-trigger .chev{margin-left:2px;width:13px;height:13px}.cal-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-md);padding:12px;width:282px}.cal-pop.hidden{display:none}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.cal-title{font-weight:700;font-size:.86rem;color:var(--primary-ink)}.cal-nav{width:30px;height:30px;border:1px solid var(--border-2);background:var(--surface);border-radius:8px;cursor:pointer;color:var(--ink);font-size:1.05rem;line-height:1;display:grid;place-items:center;transition:background .15s,border-color .15s}.cal-nav:hover{background:var(--surface-2);border-color:var(--secondary)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-dow{font-size:.64rem;color:var(--ink-3);text-align:center;font-weight:700;text-transform:uppercase;padding:4px 0}.cal-day{aspect-ratio:1;display:grid;place-items:center;font-size:.78rem;border-radius:7px;cursor:pointer;color:var(--ink);font-variant-numeric:tabular-nums;border:1px solid transparent;transition:background .12s}.cal-day:hover{background:var(--muted)}.cal-day.out{visibility:hidden;cursor:default}.cal-day.muted{color:var(--ink-3);cursor:default;opacity:.45}.cal-day.muted:hover{background:transparent}.cal-day.today{border-color:var(--secondary)}.cal-day.inrange{background:#e1e6f3;border-radius:0}.cal-day.edge{background:var(--sel);color:#fff;font-weight:700;border-color:var(--sel)}.cal-day.edge.start{border-radius:7px 0 0 7px}.cal-day.edge.end{border-radius:0 7px 7px 0}.cal-day.edge.single{border-radius:7px}.cal-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:8px}.cal-hint{font-size:.72rem;color:var(--ink-2)}.main{padding:20px 24px;max-width:1500px;margin:0 auto}.stat-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 15px;box-shadow:var(--sh-sm);display:flex;align-items:center;gap:12px;transition:box-shadow .18s,transform .18s,border-color .18s;animation:fadeInUp .36s ease both}.stat-box:nth-child(1){animation-delay:.04s}.stat-box:nth-child(2){animation-delay:.09s}.stat-box:nth-child(3){animation-delay:.14s}.stat-box:nth-child(4){animation-delay:.19s}.stat-box:nth-child(5){animation-delay:.24s}.stat-box:nth-child(6){animation-delay:.29s}.stat-box{position:relative;overflow:hidden}.stat-box:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--red);opacity:0;transition:opacity .18s ease}.stat-box:hover{box-shadow:var(--sh-md),0 0 0 1px var(--secondary);transform:translateY(-3px)}.stat-box:hover:before{opacity:1}.kpi-ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex:none}.kpi-ic svg{width:21px;height:21px}.kpi-tx{min-width:0}.stat-box .label{font-size:.68rem;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;font-weight:600;white-space:nowrap}.stat-box .val{font-size:1.7rem;font-weight:700;line-height:1.1;margin-top:1px;font-family:var(--mono);font-variant-numeric:tabular-nums}.s-total .kpi-ic{background:#e1e6f4;color:#1b2a56}.s-total .val{color:#1b2a56}.s-present .kpi-ic{background:#dcfce7;color:#15803d}.s-present .val{color:#15803d}.s-absent .kpi-ic{background:#fee2e2;color:#dc2626}.s-absent .val{color:#dc2626}.s-late .kpi-ic{background:#fef3c7;color:#b45309}.s-late .val{color:#b45309}.s-early .kpi-ic{background:#cffafe;color:#0e7490}.s-early .val{color:#0e7490}.s-pct .kpi-ic{background:#ede9fe;color:#7c3aed}.s-pct .val{color:#7c3aed}.content-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:20px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh-sm)}.chart-panel{flex:1 1 340px;animation:fadeInUp .42s ease both;animation-delay:.15s}.table-panel{flex:2 1 520px;overflow:hidden;animation:fadeInUp .42s ease both;animation-delay:.15s}.panel-title{font-size:.8rem;font-weight:700;color:var(--primary-ink);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;text-transform:uppercase;letter-spacing:.03em}.panel-title .sub{font-size:.74rem;font-weight:500;color:var(--ink-3);text-transform:none;letter-spacing:0}.chart{display:flex;align-items:flex-end;gap:7px;height:236px;padding:10px 4px 0;overflow-x:auto;background:linear-gradient(var(--border) 1px,transparent 1px);background-size:100% 25%;background-position:0 8px}.bar-wrap{flex:1 0 26px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}.bar{width:64%;min-height:3px;border-radius:5px 5px 0 0;transition:filter .15s,transform .15s;cursor:pointer;transform-origin:bottom;animation:barGrow .45s cubic-bezier(.34,1.1,.64,1) both}.bar:hover{filter:brightness(1.12);transform:scaleX(1.08)}.bar-val{font-size:.66rem;color:var(--ink-2);margin-bottom:4px;font-family:var(--mono);font-weight:500}.bar-lbl{font-size:.64rem;color:var(--ink-3);margin-top:6px;white-space:nowrap;transform:rotate(-35deg);height:30px;font-family:var(--mono)}.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--border)}.tab{border:none;background:none;border-bottom:2px solid transparent;padding:8px 14px;font-size:.82rem;font-weight:600;cursor:pointer;color:var(--ink-2);font-family:var(--sans);transition:color .18s,border-color .18s,background .18s;border-radius:6px 6px 0 0}.tab:hover{color:var(--primary);background:var(--surface-2)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.filter-bar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.filter-bar input,.filter-bar select{border:1px solid var(--border-2);border-radius:var(--r-sm);padding:7px 11px;font-size:.82rem;font-family:var(--sans);color:var(--ink);background:var(--surface)}.filter-bar input{flex:1;min-width:120px}.filter-bar input:focus-visible,.filter-bar select:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-color:var(--secondary)}.table-scroll{overflow:auto;-webkit-overflow-scrolling:touch;max-height:448px;border:1px solid var(--border);border-radius:var(--r-sm)}table{width:100%;border-collapse:collapse;font-size:.82rem}th{position:sticky;top:0;background:var(--surface-2);color:var(--ink-2);padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:.71rem;text-transform:uppercase;letter-spacing:.03em;font-weight:700;z-index:1}th:hover{color:var(--primary);background:#eef2f7}td{padding:9px 12px;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-2);transition:background .12s}tbody tr{animation:fadeInUp .25s ease both}.clickable{color:var(--primary);cursor:pointer;font-weight:600}.clickable:hover{text-decoration:underline}.pctbar{display:inline-block;height:7px;border-radius:4px;vertical-align:middle;margin-right:7px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:600}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.b-present{background:#dcfce7;color:#166534}.b-absent{background:#fee2e2;color:#991b1b}.b-late{background:#fef3c7;color:#92400e}.b-early{background:#cffafe;color:#155e75}.empty{color:var(--ink-3);font-size:.88rem;padding:18px;text-align:center}.late-panel{margin-bottom:20px;border-left:4px solid var(--accent);animation:fadeInUp .35s ease both}.late-head{display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:opacity .15s;width:100%;background:none;border:none;padding:0;font:inherit;text-align:left;color:inherit}.late-head:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}.late-head:hover{opacity:.85}.late-head h6{margin:0;color:var(--warn);font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;display:flex;align-items:center;gap:8px}.late-head h6 svg{width:17px;height:17px}.late-icon{transition:transform .2s ease;display:inline-block}.pill{background:#fef3c7;color:#92400e;border-radius:999px;padding:2px 9px;font-size:.74rem;font-weight:700;margin-left:2px;font-family:var(--mono)}.skel{background:linear-gradient(90deg,var(--border) 25%,var(--surface-2) 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;border-radius:4px;display:inline-block;height:.85em;vertical-align:middle}.overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:50;align-items:center;justify-content:center;padding:16px;opacity:0;transition:opacity .2s ease}.overlay.open{opacity:1}.modal{background:var(--surface);border-radius:14px;max-width:580px;width:100%;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 60px #02081773;border-top:3px solid var(--red);transform:scale(.96) translateY(10px);opacity:0;transition:transform .22s cubic-bezier(.34,1.2,.64,1),opacity .18s ease}.overlay.open .modal{transform:none;opacity:1}.modal-head{background:var(--surface);border-bottom:1px solid var(--border);color:var(--primary-ink);padding:16px 20px;display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0;font-size:1.02rem;font-weight:700;display:flex;align-items:center;gap:9px}.modal-head h3 svg{width:19px;height:19px;color:var(--primary)}.modal-body{padding:18px 20px;overflow-y:auto}.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-2)}.modal-close{cursor:pointer;font-size:1.4rem;line-height:1;background:none;border:none;color:var(--ink-3);width:32px;height:32px;border-radius:8px;transition:background .15s,color .15s,transform .1s}.modal-close:hover{background:var(--surface-2);color:var(--ink)}.modal-close:active{transform:scale(.88)}.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px}.set-grid label{display:block;font-size:.76rem;color:var(--ink-2);margin-bottom:5px;font-weight:600}.set-grid input{width:100%;border:1px solid var(--border-2);border-radius:var(--r-sm);padding:8px 11px;font-size:.85rem;font-family:var(--mono);color:var(--ink);background:var(--surface)}.set-grid input:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-color:var(--secondary)}.days{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.day-chk{border:1px solid var(--border-2);border-radius:999px;padding:6px 13px;font-size:.78rem;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface);color:var(--ink-2);font-weight:600;transition:background .15s,color .15s,border-color .15s}.day-chk:hover{border-color:var(--secondary)}.day-chk.on{background:var(--sel);color:#fff;border-color:var(--sel)}.set-note{background:#fef3c7;border:1px solid #FDE68A;border-radius:var(--r-sm);padding:11px 13px;font-size:.78rem;color:#7a5b14;margin-top:16px;line-height:1.55}.chk-row{display:flex;align-items:flex-start;gap:9px;margin-top:14px;font-size:.83rem;color:var(--ink)}.chk-row input{margin-top:2px}.perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin-top:8px}.perm{display:flex;align-items:center;gap:8px;font-size:.83rem;color:var(--ink);cursor:pointer}.perm input{width:16px;height:16px}.err-inline{background:#fee2e2;color:#991b1b;border:1px solid #FCA5A5;border-radius:8px;padding:9px 12px;font-size:.82rem;margin-top:14px}.perm-tag{display:inline-block;background:var(--muted);color:var(--ink-2);border-radius:999px;padding:2px 8px;font-size:.68rem;font-weight:600;margin:1px 3px 1px 0}.u-act{color:var(--primary);cursor:pointer;font-weight:600;margin-right:10px}.u-act:hover{text-decoration:underline}.u-act.del{color:#dc2626}.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.link-btn{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:.82rem;margin-top:10px;padding:4px}.link-btn:hover{color:var(--primary);text-decoration:underline}.toast{position:fixed;bottom:22px;right:22px;background:var(--navy);color:#fff;border-left:3px solid var(--red);padding:11px 18px;border-radius:10px;font-size:.85rem;font-weight:500;opacity:0;transform:translate(calc(100% + 32px));transition:opacity .25s ease,transform .3s cubic-bezier(.34,1.3,.64,1);z-index:60;box-shadow:var(--sh-md)}.toast.show{opacity:.97;transform:translate(0)}@media print{.actions,.period-bar .ctrl,.tabs,.filter-bar,.chart-panel,.late-head>span,.seg{display:none!important}.topbar,.period-bar{position:static}.content-row{display:block}.table-panel{box-shadow:none;border:none}.table-scroll{max-height:none;overflow:visible;border:none}body{background:#fff}.badge,.bar,.stat-box .val,.pctbar,.kpi-ic,.brand-badge{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (max-width: 1100px){.stat-strip{grid-template-columns:repeat(3,1fr)}}@media (max-width: 820px){.chart-panel,.table-panel{flex:1 1 100%}}@media (max-width: 680px){.stat-strip{grid-template-columns:repeat(2,1fr);gap:10px}.main{padding:14px}.topbar{padding:10px 14px;gap:10px}.period-bar{padding:10px 14px}.set-grid,.perm-grid{grid-template-columns:1fr}.actions{margin-left:0;width:100%;justify-content:flex-start}.btn{min-height:44px;padding:9px 14px}.btn-icon{min-width:44px;justify-content:center}.btn-period{min-height:40px;padding:8px 15px}.tab{min-height:44px;display:inline-flex;align-items:center}.day-chk{min-height:40px;display:inline-flex;align-items:center}.range-trigger{min-height:44px}.menu-item{min-height:44px;font-size:.92rem}.menu-pop{position:fixed;top:auto;left:12px;right:12px;bottom:12px;width:auto;max-width:none;max-height:70dvh;overflow-y:auto;z-index:60;padding:8px;border-radius:var(--r);box-shadow:0 -10px 44px #02081766;animation:fadeInUp .18s ease both}.menu-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0f172a80;animation:slideDown .18s ease both}.cal-nav,.modal-close{width:40px;height:40px}.perm{min-height:40px}.perm input{width:20px;height:20px}input,select,textarea,.card input,.ctrl input,.filter-bar input,.filter-bar select,.set-grid input,.range-trigger{font-size:16px}.overlay{padding:10px}.modal{max-height:92dvh;border-radius:14px}.modal-head,.modal-body{padding:14px 16px}.modal-foot{padding:12px 16px}.table-scroll table{min-width:560px}.cal-pop{position:fixed;top:50%;left:50%;right:auto;transform:translate(-50%,-50%);width:min(330px,calc(100vw - 28px));max-height:90dvh;overflow:auto;z-index:60;box-shadow:0 16px 50px #02081766}.cal-day{font-size:.9rem}.cal-foot{flex-wrap:wrap}.toast{left:14px;right:14px;bottom:14px;transform:translateY(calc(100% + 24px));text-align:center}.toast.show{transform:translateY(0)}}@media (max-width: 420px){.stat-strip{grid-template-columns:1fr 1fr}.topbar h1{font-size:1rem}.stat-box .val{font-size:1.45rem}.stat-box{padding:12px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important}}:root[data-theme=dark]{color-scheme:dark;--navy: #2B3D72;--navy-d: #1B2A56;--red: #FF4D63;--red-d: #E03048;--primary: #7E97DC;--primary-d: #6680CC;--primary-ink: #B9C8EE;--secondary: #8AA1DD;--accent: #FBBF24;--cta: #D8324A;--cta-d: #B6253A;--accent-red: #FF5C6E;--sel: #3A4E8F;--bg: #0C1222;--surface: #161E33;--surface-2: #1E2842;--muted: #2A3656;--warn: #FBBF24;--ink: #E7EBF5;--ink-2: #9FACC9;--ink-3: #6E7C9C;--border: #2A3656;--border-2: #3C4D73;--sh-sm: 0 1px 2px rgba(0,0,0,.4);--sh-md: 0 10px 26px rgba(0,0,0,.55);--ring: 0 0 0 3px rgba(138,161,221,.4);--ring-red: 0 0 0 3px rgba(255,92,110,.34);--brand-grad: linear-gradient(135deg, #2B3D72 0%, #3A4E8F 55%, #B0152A 130%)}[data-theme=dark] .topbar .brand-badge{background:var(--brand-grad)}[data-theme=dark] .card .brand-logo-full{background:#fff;border-radius:10px;padding:10px 14px;max-width:282px}[data-theme=dark] .brand-badge--logo{background:#ffffff0f!important;border-radius:9px}[data-theme=dark] th:hover{background:#243152;color:var(--primary-ink)}[data-theme=dark] .toast{background:#1b2540}[data-theme=dark] .cal-day.inrange{background:#2b3d7255}[data-theme=dark] .s-total .kpi-ic{background:#2b3d7255;color:#b9c8ee}[data-theme=dark] .s-total .val{color:#b9c8ee}[data-theme=dark] .s-present .kpi-ic{background:#14532d66;color:#4ade80}[data-theme=dark] .s-present .val{color:#4ade80}[data-theme=dark] .s-absent .kpi-ic{background:#7f1d1d66;color:#f87171}[data-theme=dark] .s-absent .val{color:#f87171}[data-theme=dark] .s-late .kpi-ic{background:#78350f66;color:#fbbf24}[data-theme=dark] .s-late .val{color:#fbbf24}[data-theme=dark] .s-early .kpi-ic{background:#164e6366;color:#22d3ee}[data-theme=dark] .s-early .val{color:#22d3ee}[data-theme=dark] .s-pct .kpi-ic{background:#4c1d9566;color:#c4b5fd}[data-theme=dark] .s-pct .val{color:#c4b5fd}[data-theme=dark] .b-present{background:#14532d;color:#86efac}[data-theme=dark] .b-absent{background:#7f1d1d;color:#fca5a5}[data-theme=dark] .b-late{background:#78350f;color:#fcd34d}[data-theme=dark] .b-early{background:#164e63;color:#67e8f9}[data-theme=dark] .policy-chip{background:#78350f55;border-color:#a16207;color:#fcd34d}[data-theme=dark] .pill{background:#78350f;color:#fcd34d}[data-theme=dark] .set-note{background:#78350f33;border-color:#a16207;color:#fcd34d}[data-theme=dark] .card input{background:var(--surface-2);border-color:var(--border-2);color:var(--ink)}
