.login-container{background:linear-gradient(135deg,#3fa8f4 0%,#39b44a 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:#fff;border-radius:16px;width:100%;max-width:400px;padding:40px 30px;animation:.5s ease-in-out fadeIn;box-shadow:0 20px 60px #0000004d}.login-header{text-align:center;margin-bottom:30px}.logo{font-size:48px;font-family:var(--font-heading);margin-bottom:15px}.login-header h1{color:#111827;font-size:28px;font-family:var(--font-heading);margin-bottom:8px}.login-header p{color:#6b7280;font-size:14px}.login-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;display:flex}.form-group label{color:#374151;margin-bottom:8px;font-size:14px;font-weight:600}.form-group input{border:2px solid #e5e7eb;border-radius:8px;padding:12px 15px;font-family:inherit;font-size:16px;transition:all .3s}.form-group input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #3fa8f426}.form-group input:disabled{cursor:not-allowed;background-color:#f3f4f6}.error-message{color:#991b1b;background-color:#fee2e2;border-left:4px solid #dc2626;border-radius:8px;padding:12px 15px;font-size:14px}.login-button{color:#fff;cursor:pointer;font-size:16px;font-weight:600;font-family:var(--font-primary);background:linear-gradient(90deg,#3fa8f4,#39b44a);border:none;border-radius:8px;margin-top:10px;padding:12px 20px;transition:all .3s}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 20px #39b44a4d}.login-button:disabled{opacity:.6;cursor:not-allowed}.register-link-container{text-align:center;margin-top:20px}.register-link-container p{color:#4b5563;font-size:14px}.register-redirect{color:var(--primary-color);font-weight:600;text-decoration:none;transition:color .2s}.register-redirect:hover{color:var(--primary-dark);text-decoration:underline}.login-footer{text-align:center;border-top:1px solid #e5e7eb;margin-top:30px;padding-top:20px}.login-footer p{color:#6b7280;margin-bottom:10px;font-size:12px;font-weight:600}.credentials-list{flex-direction:column;gap:6px;display:flex}.credentials-list small{color:#4b5563;font-family:Courier New,monospace;font-size:12px}@media (max-width:480px){.login-card{padding:30px 20px}.login-header h1{font-size:24px}.logo{font-size:40px}}
.dashboard-container{background:linear-gradient(135deg,#f0f9ff 0%,#e6f9ed 100%);flex-direction:column;width:100%;min-height:100vh;display:flex}.dashboard-header{background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:20px;display:flex;box-shadow:0 1px 3px #0000001a}.header-content h1{color:#111827;font-size:24px;font-family:var(--font-heading);margin-bottom:4px}.header-content p{color:#6b7280;font-size:14px}.logout-button{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:600;transition:all .3s}.logout-button:hover{background:#dc2626;transform:translateY(-1px)}.dashboard-nav{-webkit-overflow-scrolling:touch;background:#fff;border-bottom:1px solid #e5e7eb;gap:0;padding:0;display:flex;overflow-x:auto}.nav-button{color:#6b7280;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;flex:1;min-width:100px;padding:16px 20px;font-size:14px;font-weight:600;transition:all .3s}.nav-button:hover{color:var(--primary-color);background:#f9fafb}.nav-button.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.dashboard-content{flex:1;padding:20px;overflow-y:auto}.menu-container{display:inline-block;position:relative}.hamburger-button{cursor:pointer;z-index:101;background:0 0;border:none;flex-direction:column;justify-content:space-between;width:24px;height:18px;padding:0;display:none}.hamburger-button.show-desktop{display:flex}.hamburger-button .bar{background-color:#374151;border-radius:2px;width:24px;height:3px;transition:all .3s}.hamburger-button.open .bar:first-child{transform:translateY(7.5px)rotate(45deg)}.hamburger-button.open .bar:nth-child(2){opacity:0}.hamburger-button.open .bar:nth-child(3){transform:translateY(-7.5px)rotate(-45deg)}.menu-backdrop{z-index:99;background:0 0;width:100vw;height:100vh;position:fixed;top:0;left:0}.dropdown-menu{z-index:100;background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;min-width:200px;padding:12px;animation:.15s ease-in-out fadeIn;display:flex;position:absolute;top:calc(100% + 12px);right:0;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.dropdown-user-info{flex-direction:column;padding:4px 8px 8px;display:flex}.dropdown-user-info strong{color:#111827;font-size:14px}.dropdown-user-info span{color:#6b7280;margin-top:2px;font-size:12px}.dropdown-link{color:#374151;border-radius:6px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;font-weight:600;text-decoration:none;transition:all .2s;display:flex}.dropdown-link:hover{color:var(--primary-color);background-color:#f3f4f6}.dropdown-divider{border:0;border-top:1px solid #e5e7eb;margin:8px 0}.dropdown-logout-button{color:#fff;cursor:pointer;text-align:center;background:#ef4444;border:none;border-radius:6px;width:100%;padding:8px 12px;font-size:14px;font-weight:600;transition:all .2s}.dropdown-logout-button:hover{background:#dc2626}@media (max-width:768px){.dashboard-header{padding:15px}.header-content h1{font-size:20px}.dashboard-nav{overflow-x:scroll}.nav-button{padding:12px 15px;font-size:13px}.dashboard-content{padding:15px}}@media (max-width:480px){.dashboard-header{flex-direction:row;justify-content:space-between;align-items:center;gap:0;padding:10px 15px}.logout-button{display:none}.hamburger-button{display:flex}.header-content h1{margin-bottom:2px;font-size:16px}.header-content p{font-size:11px}.dashboard-nav{border-bottom:1px solid #e5e7eb}.nav-button{min-width:70px;padding:12px 10px;font-size:12px}.dashboard-content{padding:10px}}
.mark-attendance-container{justify-content:center;padding:20px 0;display:flex}.mark-card{background:#fff;border-radius:12px;width:100%;max-width:500px;padding:25px;animation:.3s ease-in-out fadeIn;box-shadow:0 4px 6px #0000001a}.mark-card h2{color:#111827;text-align:center;font-size:22px;font-family:var(--font-heading);margin-bottom:20px}.info-box{background:#f0f9ff;border:2px solid #bae6fd;border-radius:8px;margin-bottom:15px;padding:15px}.info-box h3{color:var(--primary-dark);margin-bottom:8px;font-size:14px;font-weight:600}.info-box p{color:#111827;word-break:break-all;margin-bottom:4px;font-size:16px}.info-box small{color:#075985;font-size:12px;display:block}.location-box{background:#fbfbfb;border-color:#6d6d6d}.location-box h3,.location-box small{color:#166534}.error-box{color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-left:4px solid #dc2626;border-radius:8px;margin-bottom:15px;padding:12px 15px;font-size:14px}.success-box{background:#f0fdf4;border:1px solid #86efac;border-left:4px solid #10b981;border-radius:8px;margin-bottom:15px;padding:15px}.success-box h4{color:#166534;margin-bottom:8px;font-size:14px}.success-box p{color:#15803d;margin-bottom:4px;font-size:13px}.success-box small{color:#0c4a6e;word-break:break-all;display:block}.success-box.absent{background:#fee2e2;border-color:#fecaca #fecaca #fecaca #dc2626}.success-box.absent h4{color:#991b1b}.success-box.absent p{color:#7f1d1d}.button-group{gap:10px;margin:20px 0;display:flex}.button-group button{cursor:pointer;border:none;border-radius:8px;flex:1;padding:14px 20px;font-size:14px;font-weight:600;transition:all .3s}.primary-button{background:var(--primary-color);color:#fff;font-family:var(--font-primary)}.primary-button:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 4px 12px #3fa8f44d}.primary-button:disabled{cursor:not-allowed;background:#d1d5db}.capture-button{color:#fff;cursor:pointer;letter-spacing:.5px;text-transform:uppercase;width:85%;max-width:320px;font-size:16px;font-weight:700;font-family:var(--font-primary);background:linear-gradient(90deg,#3fa8f4,#39b44a);border:none;border-radius:50px;outline:none;padding:16px 28px;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-block;box-shadow:0 4px 14px #3fa8f44d}.capture-button:hover:not(:disabled){background:linear-gradient(90deg,#298dcf,#2e963c);transform:scale(1.04)translateY(-1px);box-shadow:0 6px 20px #39b44a66}.capture-button:active:not(:disabled){transform:scale(.97)}.capture-button:disabled{box-shadow:none;color:#9ca3af;cursor:not-allowed;background:#e5e7eb;border:1px solid #d1d5db}.success-button{background:var(--success-color);color:#fff;font-family:var(--font-primary)}.success-button:hover:not(:disabled){background:#2e963c;transform:translateY(-2px);box-shadow:0 4px 12px #39b44a4d}.success-button:disabled{cursor:not-allowed;background:#d1d5db}.camera-container{background:#000;border-radius:16px;width:100%;margin-bottom:15px;position:relative;overflow:hidden}.camera-video{object-fit:cover;border-radius:16px;width:100%;height:320px;display:block}.portal-overlay{pointer-events:none;border:3px solid #10b981f2;border-radius:50%;width:220px;height:220px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 9999px #00000059}.camera-instructions{text-align:center;color:#0f766e;margin:10px 0 15px;font-size:13px}.info-text{color:#92400e;text-align:center;background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;padding:12px 15px;font-size:12px;line-height:1.5}.camera-location-status{text-align:center;color:#4b5563;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:20px;width:fit-content;margin:0 auto 15px;padding:6px 14px;font-size:13px;font-weight:500}.camera-frozen{filter:brightness(.9)}@media (max-width:480px){.mark-attendance-container{padding:10px 0}.mark-card{max-width:100%;padding:15px;box-shadow:0 2px 4px #0000000d}.mark-card h2{margin-bottom:12px;font-size:18px}.button-group{flex-direction:column;gap:8px;margin:12px 0}.button-group button{padding:12px 15px;font-size:13px}.info-box{margin-bottom:8px;padding:10px}.info-box h3{margin-bottom:4px;font-size:12px}.info-box p{font-size:13px;line-height:1.4}.info-box small{font-size:11px}.success-box{margin-bottom:10px;padding:12px}.success-box h4{margin-bottom:4px;font-size:13px}.success-box p{margin-bottom:2px;font-size:12px}.success-box small{font-size:11px}.camera-video{border-radius:12px;height:240px}.portal-overlay{width:160px;height:160px}.camera-instructions{margin:8px 0 12px;font-size:12px}.camera-location-status{margin-bottom:10px;padding:4px 10px;font-size:12px}.info-text{padding:10px;font-size:11px}.capture-button{width:90%;padding:12px 24px;font-size:14px}}.work-location-select-container{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.work-location-select-container label{color:#374151;text-align:left;font-size:14px;font-weight:600}.work-location-dropdown{color:#1f2937;cursor:pointer;background-color:#fff;border:1px solid #d1d5db;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}.work-location-dropdown:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #3fa8f426}.work-location-dropdown:disabled{color:#9ca3af;cursor:not-allowed;background-color:#f3f4f6}.action-type-container{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.action-type-container label{color:#374151;text-align:left;font-size:14px;font-weight:600}.segmented-control{background-color:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px;padding:4px;display:flex}.control-btn{color:#4b5563;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s;display:flex}.control-btn:hover:not(.active){color:#1f2937;background-color:#0000000d}.control-btn.active.check-in{background-color:var(--primary-color);color:#fff;box-shadow:0 2px 4px #3fa8f433}.control-btn.active.check-out{color:#fff;background-color:#ef4444;box-shadow:0 2px 4px #ef444433}.sign-off-btn{background-color:#ef4444!important}.sign-off-btn:hover:not(:disabled){background-color:#dc2626!important;box-shadow:0 4px 12px #ef44444d!important}
.attendance-history-container{justify-content:center;padding:20px 0;display:flex}.history-card{background:#fff;border-radius:12px;width:100%;max-width:600px;padding:25px;animation:.3s ease-in-out fadeIn;box-shadow:0 4px 6px #0000001a}.history-card h2{color:#111827;text-align:center;font-size:22px;font-family:var(--font-heading);margin-bottom:20px}.error-box{color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-left:4px solid #dc2626;border-radius:8px;margin-bottom:15px;padding:12px 15px;font-size:14px}.loading{text-align:center;color:#6b7280;padding:40px 20px;font-size:16px}.empty-state{text-align:center;color:#6b7280;padding:60px 20px}.empty-state p{font-size:16px}.records-list{flex-direction:column;gap:20px;display:flex}.date-group{flex-direction:column;gap:10px;display:flex}.date-header{color:#374151;border-bottom:2px solid #e5e7eb;margin-bottom:10px;padding:10px 0;font-size:14px;font-weight:600}.records{flex-direction:column;gap:10px;display:flex}.record-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:15px;transition:all .3s}.record-item:hover{background:#fff;box-shadow:0 4px 6px #0000001a}.record-item.present{border-left:4px solid var(--success-color)}.record-item.absent{border-left:4px solid #ef4444}.record-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.time{color:#111827;font-size:16px;font-weight:600}.status{border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600}.status.present{color:#065f46;background:#d1fae5}.status.absent{color:#991b1b;background:#fee2e2}.record-details{flex-direction:column;gap:8px;font-size:13px;display:flex}.detail{justify-content:space-between;align-items:center;display:flex}.detail .label{color:#6b7280;font-weight:500}.detail .value{color:#111827;word-break:break-word;text-align:right;max-width:60%;font-weight:600}.pagination{border-top:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:10px;margin-top:25px;padding-top:20px;display:flex}.page-info{color:#6b7280;text-align:center;flex:1;font-size:13px}.pagination-button{background:var(--primary-color);color:#fff;cursor:pointer;font-size:13px;font-weight:600;font-family:var(--font-primary);border:none;border-radius:6px;padding:8px 12px;transition:all .3s}.pagination-button:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 6px #3fa8f433}.pagination-button:disabled{cursor:not-allowed;background:#d1d5db}@media (max-width:480px){.history-card{max-width:100%;padding:15px}.history-card h2{margin-bottom:15px;font-size:18px}.record-item{padding:12px}.record-header{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:10px}.status{padding:3px 10px;font-size:11px}.time{font-size:14px}.record-details{gap:6px;font-size:12px}.detail{flex-direction:column;align-items:flex-start;gap:2px}.detail .label{font-size:11px}.detail .value{text-align:left;max-width:100%;font-size:12px}.pagination{flex-direction:column;gap:8px;margin-top:15px;padding-top:15px}.page-info{font-size:12px}.pagination-button{width:100%;padding:10px 8px}}
.profile-container{justify-content:center;padding:20px 0;display:flex}.profile-card{background:#fff;border-radius:12px;width:100%;max-width:600px;padding:25px;animation:.3s ease-in-out fadeIn;box-shadow:0 4px 6px #0000001a}.profile-header{text-align:center;border-bottom:2px solid #e5e7eb;margin-bottom:30px;padding-bottom:20px}.avatar{color:#fff;width:80px;height:80px;font-size:32px;font-weight:700;font-family:var(--font-heading);background:linear-gradient(135deg,#3fa8f4 0%,#39b44a 100%);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 15px;display:flex}.profile-header h2{color:#111827;font-size:24px;font-family:var(--font-heading);margin-bottom:5px}.department{color:#6b7280;font-size:14px}.profile-details{flex-direction:column;gap:20px;display:flex}.detail-section{flex-direction:column;gap:10px;display:flex}.detail-section h3{color:#374151;border-bottom:1px solid #e5e7eb;padding-bottom:8px;font-size:14px;font-weight:600}.detail-item{border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;padding:8px 0;display:flex}.detail-item:last-child{border-bottom:none}.detail-item .label{color:#6b7280;font-size:13px;font-weight:500}.detail-item .value{color:#111827;word-break:break-word;text-align:right;max-width:60%;font-size:13px;font-weight:600}.location-display{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:15px}.address{color:var(--primary-dark);margin-bottom:12px;font-size:16px;font-weight:600}.coordinates{flex-direction:column;gap:8px;display:flex}.coord{justify-content:space-between;align-items:center;font-size:13px;display:flex}.coord .label{color:#075985;font-weight:500}.coord .value{color:#075985;font-family:Courier New,monospace}.setting-item{background:#f9fafb;border-radius:6px;justify-content:space-between;align-items:center;padding:10px;display:flex}.setting-item .label{color:#374151;font-size:13px;font-weight:500}.setting-item .value{color:#10b981;font-size:13px;font-weight:600}.tips-section{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;padding:15px}.tips-section h3{color:#92400e;border:none;margin-bottom:10px;padding:0;font-size:14px;font-weight:600}.tips-section ul{flex-direction:column;gap:8px;list-style:none;display:flex}.tips-section li{color:#78350f;padding-left:20px;font-size:13px;position:relative}.tips-section li:before{content:"✓";color:#d97706;font-weight:700;position:absolute;left:0}@media (max-width:480px){.profile-card{max-width:100%;padding:15px}.profile-header{margin-bottom:20px;padding-bottom:15px}.avatar{width:60px;height:60px;margin-bottom:10px;font-size:28px}.profile-header h2{margin-bottom:3px;font-size:20px}.department{font-size:13px}.detail-section{gap:8px}.detail-section h3{padding-bottom:6px;font-size:13px}.detail-item{flex-direction:column;align-items:flex-start;gap:4px;padding:6px 0}.detail-item .label{font-size:12px}.detail-item .value{text-align:left;max-width:100%;font-size:12px}.location-display{padding:12px}.address{margin-bottom:10px;font-size:14px}.coord{flex-direction:column;align-items:flex-start;gap:2px;font-size:12px}.tips-section{padding:12px}.tips-section h3{margin-bottom:8px;font-size:13px}.tips-section li{padding-left:18px;font-size:12px}}
