@import url(https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;600&display=swap);*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;background:#f1f3f5;color:#1a1a1a;font-family:Plus Jakarta Sans,system-ui,sans-serif;line-height:1.5;min-height:100vh}a{color:inherit;text-decoration:none}button{background:none;border:none;cursor:pointer}button,input,select,textarea{font-family:inherit}img{display:block;max-width:100%}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track{background:#f0f0f0}::-webkit-scrollbar-thumb{background:#ccc;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#c11}@keyframes slideUp{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}@keyframes slideRight{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.app-shell{background:#f1f3f5;display:flex;flex-direction:column;min-height:100vh}.topbar{background:#fff;border-bottom:1px solid #e5e7eb;border-top:3px solid #c11;box-shadow:0 1px 4px #0000000f;position:sticky;top:0;z-index:300}.topbar-inner{align-items:center;display:flex;gap:.75rem;height:3.25rem;justify-content:space-between;padding:0 1rem}.brand{gap:.625rem}.brand,.brand-icon{align-items:center;display:flex;flex-shrink:0}.brand-icon{background:#c11;border-radius:2px;color:#fff;font-size:.75rem;font-weight:800;height:2rem;justify-content:center;width:2rem}.brand-text{font-size:.9375rem;font-weight:800;letter-spacing:-.01em}.brand-text span{color:#c11}.topbar-user{gap:.75rem}.topbar-user,.user-avatar{align-items:center;display:flex}.user-avatar{background:#1f2937;border-radius:2px;color:#fff;flex-shrink:0;font-size:.75rem;font-weight:700;height:2rem;justify-content:center;width:2rem}.user-info{line-height:1.3}.user-name{color:#111;font-size:.75rem;font-weight:700}.user-meta{align-items:center;display:flex;gap:.375rem;margin-top:.125rem}.user-role-badge{border:1px solid;font-size:.6rem;font-weight:700;letter-spacing:.05em;padding:.125rem .375rem;text-transform:uppercase}.user-role-badge.mech{background:#f0fdf4;border-color:#86efac;color:#16a34a}.user-role-badge.super{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.user-ee{color:#9ca3af;font-family:JetBrains Mono,monospace;font-size:.65rem}.hamburger{background:none;border:none;color:#6b7280;cursor:pointer;display:none;flex-direction:column;gap:5px;padding:.5rem}.hamburger span{background:currentColor;display:block;height:2px;transform-origin:center;transition:transform .2s,opacity .2s;width:1.25rem}.hamburger.open span:first-child{transform:translateY(7px) rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-menu{animation:fadeIn .2s ease;background:#fff;border-top:1px solid #f3f4f6;box-shadow:0 4px 12px #00000014;display:none;padding:.5rem 1rem .75rem}.mobile-menu.open{display:block}.mobile-user-row{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;gap:.625rem;margin-bottom:.375rem;padding:.5rem 0 .75rem}.mobile-menu a,.mobile-menu button.nav-link-btn{background:none;border-bottom:1px solid #f9fafb;color:#4b5563;display:block;font-size:.875rem;font-weight:600;padding:.625rem 0;text-align:left;transition:color .15s;width:100%}.mobile-menu a.active,.mobile-menu a:hover{color:#c11}.mobile-menu .logout-btn{border-bottom:none;border-top:1px solid #f3f4f6;color:#c11;font-weight:700;margin-top:.25rem}.navbar{background:#fff;border-bottom:2px solid #e5e7eb;box-shadow:0 1px 3px #0000000a;display:flex;gap:0;overflow-x:auto;padding:0 1rem;scrollbar-width:none}.navbar::-webkit-scrollbar{display:none}.navbar a{border-bottom:2px solid #0000;color:#6b7280;flex-shrink:0;font-size:.8125rem;font-weight:700;letter-spacing:0;margin-bottom:-2px;padding:.875rem 1rem;text-transform:none;transition:color .15s,border-color .15s;white-space:nowrap}.navbar a:hover{color:#c11}.navbar a.active{border-bottom-color:#c11;color:#c11}.page-content{flex:1 1;margin:0 auto;max-width:1536px;padding:1rem;width:100%}.logout-btn-top{background:#fff;border:1px solid #d1d5db;color:#374151;cursor:pointer;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.375rem .75rem;text-transform:uppercase;transition:border-color .15s,color .15s}.logout-btn-top:hover{border-color:#c11;color:#c11}.page-header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:1.25rem}.page-header-left h1{color:#111;font-size:clamp(1.125rem,3vw,1.5rem);font-weight:800;letter-spacing:-.02em;line-height:1.2}.page-header-left p{color:#9ca3af;font-size:.7rem;margin-top:.125rem}.page-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.card{background:#fff;border:1px solid #e5e7eb;overflow:hidden}.card-header{align-items:center;background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#c11;display:flex;font-size:.75rem;font-weight:700;justify-content:space-between;letter-spacing:.05em;padding:.625rem 1rem;text-transform:uppercase}.card-body{padding:1rem}.stat-grid{grid-gap:.625rem;display:grid;gap:.625rem;grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));margin-bottom:1rem}.stat-card{background:#fff;border:1px solid #e5e7eb;overflow:hidden;padding:.75rem .875rem;position:relative}.stat-card:before{content:"";height:2px;left:0;position:absolute;right:0;top:0}.stat-card.red:before{background:#c11}.stat-card.green:before{background:#16a34a}.stat-card.yellow:before{background:#d97706}.stat-card.gray:before{background:#9ca3af}.stat-card.blue:before{background:#2563eb}.stat-label{color:#9ca3af;font-size:.6rem;font-weight:700;letter-spacing:.07em;margin-bottom:.25rem;text-transform:uppercase}.stat-value{color:#111;font-size:clamp(1.5rem,4vw,2rem);font-weight:800;line-height:1}.stat-sub{color:#9ca3af;font-size:.65rem;margin-top:.25rem}.btn{align-items:center;border:1px solid #0000;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.75rem;font-weight:700;gap:.375rem;justify-content:center;letter-spacing:.05em;padding:.5rem 1rem;text-transform:uppercase;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}.btn:disabled{cursor:not-allowed;opacity:.4}.btn-primary{background:#c11;border-color:#c11;color:#fff}.btn-primary:hover:not(:disabled){background:#a30d0d;border-color:#a30d0d}.btn-secondary{background:#fff;border-color:#d1d5db;color:#374151}.btn-secondary:hover:not(:disabled){background:#f9fafb;border-color:#9ca3af}.btn-success{background:#f0fdf4;border-color:#86efac;color:#15803d}.btn-success:hover:not(:disabled){background:#dcfce7}.btn-danger{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.btn-danger:hover:not(:disabled){background:#fee2e2}.btn-sm{font-size:.65rem;padding:.25rem .625rem}.btn-xs{font-size:.6rem;padding:.1875rem .5rem}.btn-lg{font-size:.875rem;padding:.75rem 1.5rem}.field{display:flex;flex-direction:column;gap:.25rem}.field-label{color:#6b7280;font-size:.65rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.field-label .req{color:#c11;margin-left:.125rem}.inp,.sel,.textarea{background:#f9fafb;border:1px solid #e5e7eb;color:#111;font-family:inherit;font-size:.875rem;outline:none;padding:.5rem .75rem;transition:border-color .15s,background .15s;width:100%}.inp:focus,.sel:focus,.textarea:focus{background:#fff;border-color:#c11}.inp:disabled,.sel:disabled{cursor:not-allowed;opacity:.5}.inp-readonly{background:#f3f4f6;cursor:not-allowed}.textarea{min-height:5rem;resize:vertical}.badge{border:1px solid;display:inline-block;font-size:.6rem;font-weight:700;letter-spacing:.05em;padding:.1875rem .5rem;text-transform:uppercase;white-space:nowrap}.badge-draft{background:#f3f4f6;border-color:#d1d5db;color:#6b7280}.badge-submitted{background:#fffbeb;border-color:#fcd34d;color:#b45309}.badge-approved{background:#f0fdf4;border-color:#86efac;color:#15803d}.badge-rejected{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.badge-active{background:#f0fdf4;border-color:#86efac;color:#15803d}.badge-locked{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.badge-no-account{background:#fff7ed;border-color:#fdba74;color:#c2410c}.badge-not-submitted{background:#f3f4f6;border-color:#e5e7eb;color:#9ca3af}.badge-single{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.badge-subnet{background:#f5f3ff;border-color:#c4b5fd;color:#7c3aed}.badge-range{background:#fff7ed;border-color:#fdba74;color:#c2410c}.badge-login_success{background:#f0fdf4;border-color:#86efac;color:#15803d}.badge-login_failed{background:#fffbeb;border-color:#fcd34d;color:#b45309}.badge-login_denied_ip{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.badge-logout{background:#f3f4f6;border-color:#d1d5db;color:#6b7280}.tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.tbl{border-collapse:collapse;min-width:max-content;width:100%}.tbl th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#9ca3af;font-size:.6rem;font-weight:700;letter-spacing:.08em;text-align:left;text-transform:uppercase}.tbl td,.tbl th{padding:.5rem .875rem;white-space:nowrap}.tbl td{border-bottom:1px solid #f3f4f6;color:#374151;font-size:.8125rem}.tbl tbody tr:hover{background:#fafafa}.tbl tbody tr:last-child td{border-bottom:none}.tbl-empty{color:#9ca3af;font-size:.875rem;padding:2.5rem 1rem;text-align:center}.td-mono{font-family:JetBrains Mono,monospace;font-size:.75rem!important}.td-muted{color:#9ca3af!important}.td-name{color:#111!important;font-weight:600}.td-red{color:#c11!important;font-weight:700}.td-green{color:#15803d!important;font-weight:700}.td-mono.td-red{color:#c11!important}.td-mono.td-green{color:#15803d!important}.td-mono.td-purple{color:#7c3aed!important}.td-trunc{max-width:11rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-backdrop{align-items:flex-end;animation:fadeIn .2s ease;background:#0000008c;display:flex;inset:0;justify-content:center;padding:0;position:fixed;z-index:500}.modal-box{animation:slideUp .25s ease;background:#fff;border:1px solid #e5e7eb;border-top:4px solid #c11;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;max-height:92vh;width:100%}.modal-header{align-items:center;background:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:space-between;padding:.75rem 1.25rem}.modal-title{color:#374151;font-size:.8125rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.modal-close{align-items:center;background:none;border:none;color:#9ca3af;cursor:pointer;display:flex;font-size:1.125rem;height:1.75rem;justify-content:center;line-height:1;transition:color .15s;width:1.75rem}.modal-close:hover{color:#c11}.modal-body{flex:1 1;overflow-y:auto;padding:1.25rem}.modal-footer{align-items:center;background:#f9fafb;border-top:1px solid #e5e7eb;display:flex;flex-shrink:0;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;padding:.75rem 1.25rem}.toast{align-items:flex-start;animation:slideRight .3s ease;border-left:4px solid;bottom:1rem;box-shadow:0 8px 24px #00000026;display:flex;gap:.75rem;max-width:calc(100vw - 2rem);min-width:15rem;padding:.75rem 1rem;position:fixed;right:1rem;width:auto;z-index:9999}.toast.success{background:#f0fdf4;border-color:#16a34a;color:#15803d}.toast.error{background:#fef2f2;border-color:#dc2626;color:#dc2626}.toast.warning{background:#fffbeb;border-color:#d97706;color:#b45309}.toast.info{background:#eff6ff;border-color:#2563eb;color:#1d4ed8}.toast-msg{flex:1 1;font-size:.8125rem;font-weight:600;line-height:1.4}.toast-close{cursor:pointer;flex-shrink:0;font-size:1rem;line-height:1;margin-top:.0625rem;opacity:.5}.toast-close:hover{opacity:1}.spinner-wrap{align-items:center;color:#9ca3af;display:flex;gap:.75rem;justify-content:center;padding:3rem 1rem}.spinner{animation:spin .8s linear infinite;border:2px solid #c11;border-radius:50%;border-top-color:#0000;height:1.25rem;width:1.25rem}.spinner-text{font-size:.875rem}.form-grid{grid-gap:.75rem;display:grid;gap:.75rem}.form-grid-2{grid-template-columns:1fr 1fr}.form-grid-3{grid-template-columns:1fr 1fr 1fr}.form-grid-4{grid-template-columns:repeat(4,1fr)}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.col-span-full{grid-column:1/-1}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.w-full{width:100%}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.text-2xs{font-size:.65rem}.text-muted{color:#9ca3af}.text-red{color:#c11}.text-green{color:#15803d}.font-bold{font-weight:700}.font-mono{font-family:JetBrains Mono,monospace}.italic{font-style:italic}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block{display:block}.login-page{align-items:center;background:repeating-linear-gradient(0deg,#0000,#0000 39px,#cc11110a 0,#cc11110a 40px),repeating-linear-gradient(90deg,#0000,#0000 39px,#cc11110a 0,#cc11110a 40px),linear-gradient(145deg,#f0f0f0,#e8e8e8);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{animation:slideUp .3s ease;background:#fff;border:1px solid #e5e7eb;border-top:4px solid #c11;box-shadow:0 16px 48px #0000001f;max-width:26rem;width:100%}.login-header{align-items:flex-start;border-bottom:1px solid #f3f4f6;display:flex;gap:1rem;padding:1.5rem 2rem 1.25rem}.login-icon{align-items:center;background:#c11;border-radius:2px;color:#fff;display:flex;flex-shrink:0;font-size:1.125rem;font-weight:800;height:3.25rem;justify-content:center;width:3.25rem}.login-header-text .company{color:#9ca3af;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.login-header-text h1{font-size:1.25rem;font-weight:800;letter-spacing:-.02em;line-height:1.25;margin-top:.25rem}.login-header-text h1 span{color:#c11}.login-body{padding:1.5rem 2rem}.login-body .field+.field{margin-top:1rem}.login-alert{align-items:center;background:#fef2f2;border:1px solid #fca5a5;display:flex;gap:.5rem;margin-bottom:1rem;padding:.5rem .75rem}.login-alert-dot{animation:pulse 2s infinite;background:#c11;border-radius:50%;flex-shrink:0;height:.5rem;width:.5rem}.login-alert span{color:#dc2626;font-size:.7rem;font-weight:600}.login-error{background:#fef2f2;border:1px solid #fca5a5;color:#dc2626;font-size:.8125rem;font-weight:500;margin-bottom:.75rem;padding:.625rem .875rem}.login-submit{margin-top:1.25rem}.login-demo{background:#f9fafb;border:1px solid #f3f4f6;color:#9ca3af;font-size:.65rem;margin-top:.875rem;padding:.625rem .875rem}.login-demo strong{color:#6b7280}.week-grid{grid-gap:.375rem;display:grid;gap:.375rem;grid-template-columns:repeat(7,1fr);margin-bottom:1rem}.day-cell{background:#fff;border:1px solid #e5e7eb;padding:.5rem .25rem;position:relative;text-align:center;transition:border-color .15s}.day-cell.today{border-color:#c11;border-width:2px}.day-cell-today-tag{background:#c11;color:#fff;font-size:.45rem;font-weight:700;letter-spacing:.03em;padding:.125rem .25rem;position:absolute;right:-1px;top:-1px}.day-cell-day{color:#9ca3af;font-size:.55rem;font-weight:700;text-transform:uppercase}.day-cell-date{color:#6b7280;font-family:JetBrains Mono,monospace;font-size:.6rem;margin:.125rem 0}.day-cell-hrs{font-size:clamp(1rem,3vw,1.5rem);font-weight:800;line-height:1}.day-cell-hrs.has-hrs{color:#16a34a}.day-cell-hrs.no-hrs{color:#e5e7eb}.day-cell-jobs{color:#9ca3af;font-size:.5rem;margin-top:.125rem}.filter-row{align-items:flex-end;display:flex;flex-wrap:wrap;gap:.625rem;margin-bottom:1rem}.filter-group{display:flex;flex-direction:column;gap:.25rem}.filter-label{color:#6b7280;font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.filter-inp{min-width:8rem;width:auto}.filter-search{width:11rem}.info-block{background:#f9fafb;border:1px solid #e5e7eb;margin-bottom:1rem;padding:.875rem 1rem}.info-row{display:flex;font-size:.8125rem;justify-content:space-between;padding:.3125rem 0}.info-row+.info-row{border-top:1px solid #f3f4f6}.info-row span:first-child{color:#6b7280}.info-row span:last-child{color:#111;font-weight:600}.alert{border:1px solid;font-size:.8125rem;font-weight:500;padding:.625rem .875rem}.alert-warn{background:#fffbeb;border-color:#fcd34d;color:#92400e}.alert-info{background:#eff6ff;border-color:#93c5fd;color:#1e40af}.tbl tfoot td{background:#f9fafb;border-top:2px solid #e5e7eb;color:#111;font-size:.8125rem;font-weight:700}@media (min-width:480px){.topbar-inner{height:3.5rem;padding:0 1.25rem}.page-content{padding:1.25rem}.week-grid{gap:.5rem}.day-cell{padding:.625rem .375rem}.day-cell-day{font-size:.625rem}.day-cell-date{font-size:.6875rem}.day-cell-jobs{font-size:.55rem}.day-cell-today-tag{font-size:.5rem}.stat-grid{gap:.75rem}.modal-box{max-width:95vw}}@media (min-width:640px){.navbar,.topbar-inner{padding:0 1.5rem}.page-content{padding:1.5rem}.topbar-user{display:flex}.hamburger{display:none}.mobile-menu{display:none!important}.modal-backdrop{align-items:center;padding:1rem}.modal-box{border-radius:0;max-width:32rem}.modal-box.wide{max-width:48rem}.week-grid{gap:.625rem}.day-cell{padding:.75rem .5rem}.day-cell-day{font-size:.6875rem}.day-cell-date{font-size:.75rem}.day-cell-jobs{font-size:.6rem}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr))}.login-card{max-width:27rem}}@media (min-width:768px){.topbar-inner{height:3.75rem}.navbar,.topbar-inner{padding:0 2rem}.page-content{padding:1.75rem 2rem}.navbar a{font-size:.875rem;padding:1rem 1.125rem}.brand-text{font-size:1rem}.brand-icon{font-size:.8125rem;height:2.25rem;width:2.25rem}}@media (min-width:1024px){.navbar,.topbar-inner{padding:0 2.5rem}.page-content{max-width:1536px;padding:2rem 2.5rem}}@media (min-width:1280px){.navbar,.topbar-inner{padding:0 3rem}.page-content{padding:2rem 3rem}}@media (max-width:639px){.topbar-user{display:none}.hamburger{display:flex}.form-grid-2,.form-grid-3,.form-grid-4{grid-template-columns:1fr}.col-span-2,.col-span-3{grid-column:span 1}.entry-form-grid{grid-template-columns:1fr 1fr}.page-header{align-items:flex-start;flex-direction:column}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:359px){.week-grid{gap:.1875rem}.day-cell{padding:.375rem .125rem}.day-cell-day{font-size:.5rem}.day-cell-hrs{font-size:.875rem}.stat-value{font-size:1.25rem}}.hrs-val{font-family:JetBrains Mono,monospace;font-size:.9375rem;font-weight:700}.hrs-val.over8{color:#c11}.time-chip{border:1px solid;display:inline-block;font-family:JetBrains Mono,monospace;font-size:.65rem;padding:.125rem .375rem}.time-chip.in{background:#f0fdf4;border-color:#86efac;color:#15803d}.time-chip.out{background:#fef2f2;border-color:#fca5a5;color:#c11}.pulse-dot{animation:pulse 2s infinite;background:#c11;border-radius:50%;flex-shrink:0;height:.5rem;width:.5rem}
/*# sourceMappingURL=main.beb1a804.css.map*/